ngx-nic-parser
Version:
A calculator of Date of birth and gender using NIC in SriLanka using Angular
269 lines (255 loc) • 15 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/forms'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define('ngx-nic-parser', ['exports', '@angular/core', '@angular/forms', '@angular/common'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["ngx-nic-parser"] = {}, global.ng.core, global.ng.forms, global.ng.common));
})(this, (function (exports, i0, i1, i2) { 'use strict';
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
var NgxNicParserService = /** @class */ (function () {
function NgxNicParserService() {
}
return NgxNicParserService;
}());
NgxNicParserService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: NgxNicParserService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
NgxNicParserService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: NgxNicParserService, providedIn: 'root' });
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: NgxNicParserService, decorators: [{
type: i0.Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return []; } });
var Month;
(function (Month) {
Month[Month["JANUARY"] = 1] = "JANUARY";
Month[Month["FEBRUARY"] = 2] = "FEBRUARY";
Month[Month["MARCH"] = 3] = "MARCH";
Month[Month["APRIL"] = 4] = "APRIL";
Month[Month["MAY"] = 5] = "MAY";
Month[Month["JUNE"] = 6] = "JUNE";
Month[Month["JULY"] = 7] = "JULY";
Month[Month["AUGUST"] = 8] = "AUGUST";
Month[Month["SEPTEMBER"] = 9] = "SEPTEMBER";
Month[Month["OCTOBER"] = 10] = "OCTOBER";
Month[Month["NOVEMBER"] = 11] = "NOVEMBER";
Month[Month["DECEMBER"] = 12] = "DECEMBER";
})(Month || (Month = {}));
var BirthMonthAndDate = /** @class */ (function () {
function BirthMonthAndDate(day, monthName, month, year, gender, weekDay) {
this.day = day;
this.monthName = monthName;
this.month = month;
this.year = year;
this.gender = gender;
this.weekDay = weekDay;
}
return BirthMonthAndDate;
}());
var Response = /** @class */ (function () {
function Response(status, response) {
this.status = status;
this.response = response;
}
return Response;
}());
var NgxNicParserComponent = /** @class */ (function () {
function NgxNicParserComponent() {
this.id = '';
this.title = '';
this.requiredMessage = '';
this.patternErrorMessage = '';
this.placeholder = '';
this.clearNICNumber = '';
this.checkDob = new i0.EventEmitter();
this.nicForm = new i1.FormGroup({
nic: new i1.FormControl('', [i1.Validators.required, i1.Validators.pattern("^([0-9]{9}[x|X|v|V]|[0-9]{12})")])
});
}
Object.defineProperty(NgxNicParserComponent.prototype, "nicNumber", {
get: function () {
return this.nicForm.get('nic');
},
enumerable: false,
configurable: true
});
NgxNicParserComponent.prototype.ngOnInit = function () {
};
NgxNicParserComponent.prototype.nicParser = function () {
if (this.nicForm.valid) {
var $nicNumber = this.nicForm.value.nic;
if ($nicNumber.length != 10 && $nicNumber.length != 12) {
this.checkDob.emit(new Response({ code: 404, message: 'Invalid Nic Number' }));
}
else if ($nicNumber.length == 10 && !($nicNumber.substr(0, 9))) {
this.checkDob.emit(new Response({ code: 404, message: 'Invalid Nic Number' }));
}
else {
var $year = this.getBirthYear($nicNumber);
var $dayText = this.getNumberOfDatesToDob($nicNumber);
var $gender = this.getGender($dayText);
$dayText = $dayText > 500 ? $dayText - 500 : $dayText;
var $obj = this.getBirthMonthAndDate($dayText);
var $dayName = this.getWeekDay($year, $obj.month, $obj.day);
var $res = Object.assign(Object.assign({}, $obj), { year: $year, gender: $gender, weekDay: $dayName });
this.checkDob.emit(new Response({ code: 200, message: '' }, $res));
}
}
};
NgxNicParserComponent.prototype.getBirthYear = function ($nicNumber) {
if ($nicNumber.length == 10) {
return Number("19" + $nicNumber.substr(0, 2));
}
else {
return Number($nicNumber.substr(0, 4));
}
};
NgxNicParserComponent.prototype.getBirthMonthAndDate = function ($dayText) {
if ($dayText < 1 && $dayText > 366) {
this.checkDob.emit(new Response({ code: 404, message: 'Invalid Nic Number' }));
}
else {
var b = this.isLeapYear();
if ($dayText > b[10]) {
return this.setBirthMonthAndDate(($dayText - b[10]), Month[Month.DECEMBER], Month.DECEMBER);
}
else if ($dayText > b[9]) {
return this.setBirthMonthAndDate(($dayText - b[9]), Month[Month.NOVEMBER], Month.NOVEMBER);
}
else if ($dayText > b[8]) {
return this.setBirthMonthAndDate(($dayText - b[8]), Month[Month.OCTOBER], Month.OCTOBER);
}
else if ($dayText > b[7]) {
return this.setBirthMonthAndDate(($dayText - b[7]), Month[Month.SEPTEMBER], Month.SEPTEMBER);
}
else if ($dayText > b[6]) {
return this.setBirthMonthAndDate(($dayText - b[6]), Month[Month.AUGUST], Month.AUGUST);
}
else if ($dayText > b[5]) {
return this.setBirthMonthAndDate(($dayText - b[5]), Month[Month.JULY], Month.JULY);
}
else if ($dayText > b[4]) {
return this.setBirthMonthAndDate(($dayText - b[4]), Month[Month.JUNE], Month.JUNE);
}
else if ($dayText > b[3]) {
return this.setBirthMonthAndDate(($dayText - b[3]), Month[Month.MAY], Month.MAY);
}
else if ($dayText > b[2]) {
return this.setBirthMonthAndDate(($dayText - b[2]), Month[Month.APRIL], Month.APRIL);
}
else if ($dayText > b[1]) {
return this.setBirthMonthAndDate(($dayText - b[1]), Month[Month.MARCH], Month.MARCH);
}
else if ($dayText < 32) {
return this.setBirthMonthAndDate(($dayText), Month[Month.JANUARY], Month.JANUARY);
}
else if ($dayText > 31) {
return this.setBirthMonthAndDate(($dayText - 31), Month[Month.FEBRUARY], Month.FEBRUARY);
}
}
};
NgxNicParserComponent.prototype.setBirthMonthAndDate = function (day, monthName, monthNumber) {
return new BirthMonthAndDate(day, monthName, monthNumber);
};
NgxNicParserComponent.prototype.getNumberOfDatesToDob = function ($nicNumber) {
if ($nicNumber.length == 10) {
return parseInt($nicNumber.substr(2, 3));
}
else {
return parseInt($nicNumber.substr(4, 3));
}
};
NgxNicParserComponent.prototype.getGender = function ($numberOfDays) {
if ($numberOfDays > 500) {
return "Female";
}
else {
return "Male";
}
};
NgxNicParserComponent.prototype.isLeapYear = function () {
return [31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];
};
NgxNicParserComponent.prototype.getWeekDay = function ($year, $month, $day) {
return new Date($year, $month, $day).toLocaleString('en-us', { weekday: 'long' });
};
return NgxNicParserComponent;
}());
NgxNicParserComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: NgxNicParserComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
NgxNicParserComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: NgxNicParserComponent, selector: "ngx-nic-parser", inputs: { id: "id", title: "title", requiredMessage: "requiredMessage", patternErrorMessage: "patternErrorMessage", placeholder: "placeholder", clearNICNumber: "clearNICNumber" }, outputs: { checkDob: "checkDob" }, ngImport: i0__namespace, template: "<form [formGroup]=\"nicForm\">\r\n <div class=\"form-group\">\r\n <label for=\"{{id}}\">{{title}}</label>\r\n <input placeholder=\"{{placeholder}}\"\r\n type=\"text\" id=\"{{id}}\" name=\"{{id}}\"\r\n class=\"form-control\" [formControl]=\"nicNumber\"\r\n (keydown.enter)=\"nicParser()\">\r\n <div *ngIf=\"nicNumber?.touched && nicNumber?.invalid\" class=\"error-message\">\r\n <div *ngIf=\"nicNumber?.errors?.required\">{{requiredMessage}}</div>\r\n <div *ngIf=\"nicNumber?.errors?.pattern\">{{patternErrorMessage}}</div>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".error-message{color:red;font-size:12px}\n"], directives: [{ type: i1__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1__namespace.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1__namespace.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: NgxNicParserComponent, decorators: [{
type: i0.Component,
args: [{
selector: 'ngx-nic-parser',
templateUrl: './ngx-nic-parser.component.html',
styleUrls: ['./ngx-nic-parser.component.css'],
}]
}], propDecorators: { id: [{
type: i0.Input
}], title: [{
type: i0.Input
}], requiredMessage: [{
type: i0.Input
}], patternErrorMessage: [{
type: i0.Input
}], placeholder: [{
type: i0.Input
}], clearNICNumber: [{
type: i0.Input
}], checkDob: [{
type: i0.Output
}] } });
var NgxNicParserModule = /** @class */ (function () {
function NgxNicParserModule() {
}
return NgxNicParserModule;
}());
NgxNicParserModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: NgxNicParserModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
NgxNicParserModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: NgxNicParserModule, declarations: [NgxNicParserComponent], imports: [i2.CommonModule,
i1.ReactiveFormsModule, i1.FormsModule], exports: [NgxNicParserComponent] });
NgxNicParserModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: NgxNicParserModule, imports: [[
i2.CommonModule,
i1.ReactiveFormsModule, i1.FormsModule
]] });
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: NgxNicParserModule, decorators: [{
type: i0.NgModule,
args: [{
declarations: [
NgxNicParserComponent
],
imports: [
i2.CommonModule,
i1.ReactiveFormsModule, i1.FormsModule
],
exports: [NgxNicParserComponent]
// schemas: [CUSTOM_ELEMENTS_SCHEMA],
}]
}] });
/*
* Public API Surface of ngx-nic-parser
*/
/**
* Generated bundle index. Do not edit.
*/
exports.NgxNicParserComponent = NgxNicParserComponent;
exports.NgxNicParserModule = NgxNicParserModule;
exports.NgxNicParserService = NgxNicParserService;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=ngx-nic-parser.umd.js.map