@syncfusion/ej2-barcode-generator
Version:
Barcode generator component is a pure JavaScript library which will convert a string to Barcode and show it to the user. This supports major 1D and 2D barcodes including coda bar, code 128, QR Code.
142 lines (141 loc) • 5.27 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
import { OneDimension } from '../one-dimension';
/**
* EAN13 class is used to calculate the barcode of type EAN13 barcode
*/
var Ean13 = /** @class */ (function (_super) {
__extends(Ean13, _super);
function Ean13() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Validate the given input.
*
* @returns {string} Validate the given input.
* @param {string} value - provide the input values .
* @private
*/
Ean13.prototype.validateInput = function (value) {
var checkSumValue = this.checksumValue(value);
if (value.search(/^[0-9]{13}$/) !== -1 && (Number(value[12]) === this.checkSumData(value) || Number(value[12]) === checkSumValue)) {
return undefined;
}
else if (value.search(/^[0-9]{12}$/) !== -1) {
value += this.checkSumData(value);
this.value = value;
return undefined;
}
else {
return 'Accepts 12 numeric characters.';
}
};
Ean13.prototype.checksumValue = function (number) {
var res = number
.substr(0, 12)
.split('')
.map(function (n) { return +n; })
.reduce(function (sum, a, idx) { return (idx % 2 ? sum + a * 3 : sum + a); }, 0);
return (10 - (res % 10)) % 10;
};
Ean13.prototype.checkSumData = function (value) {
var sum1 = 3 * (Number(value[11]) + Number(value[9]) + Number(value[7])
+ Number(value[5]) + Number(value[3]) + Number(value[1]));
var sum2 = (Number(value[10]) + Number(value[8]) + Number(value[6])
+ Number(value[4])) + Number(value[2]) + Number(value[0]);
var checkSumValue = (sum1 + sum2);
var roundOffValue = Math.round(checkSumValue / 10) * 10;
return roundOffValue - checkSumValue;
};
// eslint-disable-next-line
Ean13.prototype.getStructure = function () {
return {
'0': 'LLLLLL',
'1': 'LLGLGG',
'2': 'LLGGLG',
'3': 'LLGGGL',
'4': 'LGLLGG',
'5': 'LGGLLG',
'6': 'LGGGLL',
'7': 'LGLGLG',
'8': 'LGLGGL',
'9': 'LGGLGL'
};
};
// eslint-disable-next-line
Ean13.prototype.getBinaries = function () {
return {
'L': [
'0001101', '0011001', '0010011', '0111101', '0100011',
'0110001', '0101111', '0111011', '0110111', '0001011'
], 'G': [
'0100111', '0110011', '0011011', '0100001', '0011101',
'0111001', '0000101', '0010001', '0001001', '0010111'
],
'R': [
'1110010', '1100110', '1101100', '1000010', '1011100',
'1001110', '1010000', '1000100', '1001000', '1110100'
],
'O': [
'0001101', '0011001', '0010011', '0111101', '0100011',
'0110001', '0101111', '0111011', '0110111', '0001011'
],
'E': [
'0100111', '0110011', '0011011', '0100001', '0011101',
'0111001', '0000101', '0010001', '0001001', '0010111'
]
};
};
/**
* Draw the barcode SVG.\
*
* @returns {void} Draw the barcode SVG .
* @param {HTMLElement} canvas - Provide the canvas element .
* @private
*/
Ean13.prototype.draw = function (canvas) {
var endBars = '101';
var middleBar = '01010';
var code = [];
// eslint-disable-next-line
var structureValue = this.getStructure();
var structure = structureValue[this.value[0]];
code.push(endBars);
var leftString = this.value.substr(1, 6);
code.push(this.leftValue(true, structure, leftString));
code.push(middleBar);
leftString = this.value.substr(7, 6);
code.push(this.leftValue(false, 'RRRRRR', leftString));
code.push(endBars);
this.calculateBarCodeAttributes(code, canvas);
};
Ean13.prototype.leftValue = function (isLeft, structure, leftString) {
var code;
var tempCodes;
// eslint-disable-next-line
var codes = this.getBinaries();
for (var i = 0; i < leftString.length; i++) {
tempCodes = codes[structure[parseInt(i.toString(), 10)]];
if (i === 0) {
code = tempCodes[leftString[parseInt(i.toString(), 10)]];
}
else {
code += tempCodes[leftString[parseInt(i.toString(), 10)]];
}
}
return code;
};
return Ean13;
}(OneDimension));
export { Ean13 };