UNPKG

ngx-nic-parser

Version:

A calculator of Date of birth and gender using NIC in SriLanka using Angular

269 lines (255 loc) 15 kB
(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