import { Component, OnInit, AfterViewInit, Input, Output, EventEmitter, Pipe, PipeTransform, TemplateRef } from '@angular/core'; import { LicenseService } from './license.service'; import { GlobalService } from '../../shared/global'; import { Router, ActivatedRoute } from '@angular/router'; import { FormControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; import { License } from '../userentity/datamodel'; import { BsDatepickerModule } from 'ngx-bootstrap'; import { Http, Response } from '@angular/http'; import { DatePipe } from '@angular/common'; import { BsModalService } from 'ngx-bootstrap/modal'; import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service'; import { ContenteditableModelDirective } from '../../shared/contenteditabledirective' import { ConfirmService } from '../../shared/confirm/confirm.service'; @Component({ templateUrl: './licensemodulesettings.component.html' }) export class LicenseModuleSettings implements OnInit { lstAccountNumbers: any; tempLstAccountNumbers: any; lstModuleStatus: any; license: License; updateModuleSettingsFrm: FormGroup; error: any; alerts: string; modalAlerts: string; modalRef: BsModalRef; accountDropDownText: string; loopIdx1: number; loopIdx2: number; lastScrollPos: number; constructor(private licenseService: LicenseService, public globalService: GlobalService, private router: Router, private activeRoute: ActivatedRoute, private fb: FormBuilder, private modalService: BsModalService, private _confirmService: ConfirmService) { } ngOnInit(): void { this.license = new License(); this.license.LicenseId = 0; this.alerts = ''; this.accountDropDownText = 'Select'; this.loopIdx1 = 0; this.loopIdx2 = 0; this.lastScrollPos = 0; this.updateModuleSettingsFrm = this.fb.group({ licenseId: [0], accountNumber: [''], lstModuleStatus: [this.fb.array([])], }); this.GetLicenseAccounts(); } openModal(template: TemplateRef) { this.modalRef = this.modalService.show(template); } GetLicenseAccounts() { this.licenseService.GetLicenseAccounts(0) .subscribe(st => { this.lstAccountNumbers = st; this.tempLstAccountNumbers = []; this.loopIdx1 = 0; this.loopIdx2 = 0; this.lastScrollPos = 0; this.tempLstAccountNumbers = []; if (this.globalService.UserType > 2) { this.accountDropDownText = this.globalService.AccountNumber; this.tempLstAccountNumbers.push(this.accountDropDownText); this.AccountNumberChanged(this.globalService.AccLicId, this.accountDropDownText); } else { for (var i = 0; i < 50; i++) { this.tempLstAccountNumbers.push(this.lstAccountNumbers[this.loopIdx2++]); } } }, error => this.error = error); } GetLicenseModulesStatus() { this.licenseService.GetLicenseModulesStatus(this.license.LicenseId) .subscribe(st => { this.lstModuleStatus = st; this.updateModuleSettingsFrm.setControl('lstModuleStatus', this.fb.array(this.lstModuleStatus)); }, error => this.error = error); } GetLicenseById() { if (this.license.LicenseId != 0) { this.licenseService.GetLicenseById(this.license.LicenseId) .subscribe(st => { this.license = st; this.updateModuleSettingsFrm.controls['licenseId'].setValue(this.license.LicenseId); this.updateModuleSettingsFrm.controls['accountNumber'].setValue(this.license.AccountNumber); this.GetLicenseModulesStatus(); }, error => this.error = error); } } AccountNumberChanged(LicenseId: number, SelectText: string) { this.accountDropDownText = SelectText; this.license.LicenseId = LicenseId; this.lstModuleStatus = null; this.GetLicenseById(); return false; } onScroll($event) { if (this.lastScrollPos > $event.target.scrollTop) { for (var i = 0; i < 1000; i++) { if (this.loopIdx1 > 0) this.tempLstAccountNumbers.unshift(this.lstAccountNumbers[this.loopIdx1--]); } } else { for (var i = 0; i < 1000; i++) { if (this.loopIdx2 < this.lstAccountNumbers.length) this.tempLstAccountNumbers.push(this.lstAccountNumbers[this.loopIdx2++]); } } this.lastScrollPos = $event.target.scrollTop; } onOpenChange(data: boolean): void { if (!data) { this.loopIdx1 = 0; this.loopIdx2 = 0; this.tempLstAccountNumbers = []; for (var i = 0; i < 50; i++) { this.tempLstAccountNumbers.push(this.lstAccountNumbers[this.loopIdx2++]); } } } onKeyPress($event) { let FindItem = this.lstAccountNumbers.find(C => (C.m_Item2.toLowerCase().indexOf($event.key) == 0)); let prevIdx = 0; if (FindItem != null) { for (var i = 0; i < this.lstAccountNumbers.length; i++) { if (FindItem.m_Item1 == this.lstAccountNumbers[i].m_Item1) { prevIdx = i; break; } } this.tempLstAccountNumbers = []; this.loopIdx1 = prevIdx; this.loopIdx2 = prevIdx; for (var i = 0; i < 50; i++) { if (this.loopIdx2 < this.lstAccountNumbers.length) this.tempLstAccountNumbers.push(this.lstAccountNumbers[this.loopIdx2++]); } this.lastScrollPos = 0; $event.target.nextElementSibling.scrollTop = 0; } } AfterUpdateData(data, template) { if (data.Status == "false") { this.alerts = "License module status update unsuccessfull"; } else { // this.modalAlerts = "

License module status updated successfully

"; this._confirmService.activate("License module status updated successfully.", "alertMsg"); //this.modalRef = this.modalService.show(template); } } UpdateLicenseModulesStatus(template: TemplateRef) { this.alerts = ''; if (this.alerts == '') { var obj = this.updateModuleSettingsFrm.value; return this.licenseService.UpdateLicenseModulesStatus(obj) .subscribe( n => (this.AfterUpdateData(n, template)), error => this.error = error); } } }