@adins/ucsearch 2.2.9 → 2.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common/http"),require("@angular/platform-browser"),require("file-saver"),require("xlsx"),require("@angular/animations"),require("ngx-toastr"),require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("ngx-currency"),require("@ngx-translate/core")):"function"==typeof define&&define.amd?define("@adins/ucsearch",["exports","@angular/common/http","@angular/platform-browser","file-saver","xlsx","@angular/animations","ngx-toastr","@angular/core","@angular/common","@angular/forms","ngx-currency","@ngx-translate/core"],t):t((e.adins=e.adins||{},e.adins.ucsearch={}),e.ng.common.http,e.ng.platformBrowser,e.FileSaver,e.XLSX,e.ng.animations,e.ngxToastr,e.ng.core,e.ng.common,e.ng.forms,e.ngxCurrency,e.core)}(this,function(e,t,n,r,o,i,a,s,m,l,u,c){"use strict";var p=(d.decorators=[{type:s.Injectable,args:[{providedIn:"root"}]}],d.ctorParameters=function(){return[]},d.ngInjectableDef=s.defineInjectable({factory:function(){return new d},token:d,providedIn:"root"}),d);function d(){}var q=(h.RestrictionBetween="Between",h.RestrictionLike="Like",h.RestrictionEq="Eq",h.RestrictionNeq="NEQ",h.RestrictionGt="GT",h.RestrictionGte="GTE",h.RestrictionLt="LT",h.RestrictionLte="LTE",h.RestrictionIn="IN",h.RestrictionNotIn="NotIn",h.RestrictionOr="Or",h.RestrictionOrNeq="OrNeq",h.RestrictionIsNull="isnull",h.RestrictionIsNotNull="isnotnull",h.RestrictionGTE="GTE",h.RestrictionLTE="LTE",h.showData="10,50,100",h.JoinTypeInner="INNER",h.JoinTypeLeft="LEFT",h);function h(){}var f=function R(){this.baseUrl="",this.apiPath="",this.requestObj=new Object,this.leftColumnToJoin="",this.rightColumnToJoin="",this.joinType=q.JoinTypeInner},g=function N(){this._url="",this.enviromentUrl="",this.title="",this.apiQryPaging="",this.arrCritObj=null,this.addCritInput=new Array,this.ddlEnvironments=new Array,this.whereValue=new Array,this.switchValue=new Array,this.integrationObj=new f,this.isJoinExAPI=!1},I=function P(){this.low=0,this.high=0,this.DataType="Text"},b=function U(){this.includeCount=!0,this.includeData=!0,this.isLoading=!0,this.queryString="",this.rowVersion="",this.integrationObj=new f,this.joinType=q.JoinTypeInner},v=(y.prototype.exportAsExcelFile=function(e,t){var n=o.utils.json_to_sheet(e);console.log("worksheet",n);var r={Sheets:{data:n},SheetNames:["data"]},i=o.write(r,{bookType:"xlsx",type:"array"});this.saveAsExcelFile(i,t)},y.prototype.saveAsExcelFile=function(e,t){var n=new Blob([e],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"});r.saveAs(n,t+"_export_"+(new Date).getTime()+".xlsx")},y.decorators=[{type:s.Injectable}],y.ctorParameters=function(){return[]},y);function y(){}var x=(w.EXP_TYPE_PDF=0,w.EXP_TYPE_XLS=1,w.EXP_TYPE_XLSX=2,w.EXP_TYPE_DOC=3,w.EXP_TYPE_DOCX=4,w);function w(){}var E=(T.prototype.changeState=function(){this.currentState="initial"===this.currentState?"final":"initial",this.isHidden=!1===this.isHidden},T.prototype.ngOnInit=function(){console.log("ucsearch"),this.apiUrl=this.searchInput.enviromentUrl+this.searchInput.apiQryPaging,this.arrCrit=this.searchInput.arrCritObj;var e=this._renderer2.createElement("script");e.text='\n $(document).ready(function(){\n $("#flip").click(function(){\n $("#panel").slideToggle("slow");\n });\n });\n ',this._renderer2.appendChild(this._document.body,e),this.initiateForm()},T.prototype.initiateForm=function(){var h=this;this.getJSON(this.searchInput._url).subscribe(function(e){h.configuration=e,h.exportData=e.exportExcel,e.exportTypeList!=undefined&&0!=e.exportTypeList.length&&(h.ExportTypeList=e.exportTypeList,h.ExportType=h.ExportTypeList[0].key),h.countForm=e.component.length,h.isDataLoaded=!0,h.searchInput.title!=undefined&&""!=h.searchInput.title&&(h.configuration.title=h.searchInput.title);for(var t=0;t<h.countForm;t++){if(1==e.component[t].isFromURL){var n=new b,r=new Array,i=new I;if(i.DataType="text",i.propName=e.component[t].criteriaPropName,i.value=e.component[t].criteriaPropValue,i.restriction="eq",r.push(i),n.criteria=r,n[e.component[t].criteriaPropName]=e.component[t].criteriaPropValue,e.component[t].path!=undefined&&""!=e.component[t].path)if(h.searchInput.ddlEnvironments!=undefined&&0!=h.searchInput.ddlEnvironments.length){for(var o=0;o<h.searchInput.ddlEnvironments.length;o++)if(e.component[t].name==h.searchInput.ddlEnvironments[o].name){e.component[t].fullpath=h.searchInput.ddlEnvironments[o].environment+e.component[t].path;break}}else e.component[t].fullpath=e.component[t].url;else e.component[t].fullpath=e.component[t].url;h.resolveObject(e.component[t],e.component[t].fullpath,n)}if("numeric"==e.component[t].type&&(e.component[t].value=parseFloat(e.component[t].value).toLocaleString("en")),"datepicker"==e.component[t].type&&e.component[t].value.includes("BD")){var a=localStorage.getItem("BusinessDateRaw"),s=new Date;null!=a&&(s=new Date(a));var l=e.component[t].value.charAt(2),u=new Date;if("-"==l){var c=e.component[t].value.split("-",2),p=parseInt(c[1]);u.setDate(s.getDate()-p)}else"+"==l?(c=e.component[t].value.split("+",2),p=parseInt(c[1]),u.setDate(s.getDate()+p)):u=s;var d=m.formatDate(u,"yyyy-MM-dd","en-US");e.component[t].value=d}}})},T.prototype.getJSON=function(e){return this.http.get(e)},T.prototype.postJSON=function(e,t){return void 0===t&&(t=null),this.http.post(e,t)},T.prototype.searchClick=function(){var e=null;null!=this.configuration.orderby&&(e={key:this.configuration.orderby.key,value:this.configuration.orderby.value}),this.pageNow=1,this.search(this.apiUrl,this.pageNow,this.pageSize,e,this.arrCrit)},T.prototype.reset=function(){this.ExportType=this.ExportTypeList[0].key,this.initiateForm()},T.prototype.search=function(e,n,t,r,i){var o=this;void 0===i&&(i=new Array);var a=new b,s=new Array,l=!1,u=!1;if(this.searchInput.whereValue!=undefined&&0!=this.searchInput.whereValue.length){this.configuration.querystring.whereQuery=new Array;for(var c=0;c<this.searchInput.whereValue.length;c++)this.configuration.querystring.whereQuery.push(this.searchInput.whereValue[c].value)}a.pageNo=n,a.rowPerPage=t,a.orderBy=r,a.queryString=this.configuration.querystring;for(var p=0;p<this.countForm;p++){var d=new I,h=this.myForm.nativeElement[p];if(d.DataType=h.getAttribute("data-type"),l=null!=h.getAttribute("query-in")&&"true"==h.getAttribute("query-in"),""!=h.value)if("SELECT"==h.nodeName){var m=h.options,f=m[m.selectedIndex].value.trim();if("one"==f){u=!0;var g=h.getAttribute("label");this.toastr.warning("Please select "+g);break}if("all"!=f&&"one"!=f)d.restriction=q.RestrictionEq,d.propName=h.name,d.value=f,s.push(d);else if("all"==f&&1==l&&0!=h.options.length){var v=new Array;for(c=0;c<h.options.length;c++)0!=c&&v.push(h.options[c].value);0!=v.length&&(d.restriction=q.RestrictionIn,d.propName=h.name,d.listValue=v,s.push(d))}}else""!=h.name?d.propName=h.name:d.propName=h.getAttribute("data-name"),d.value=h.value.trim(),h.value.includes("%")?d.restriction=q.RestrictionLike:""!=h.getAttribute("data-restriction")&&null!=h.getAttribute("data-restriction")?(d.restriction=h.getAttribute("data-restriction"),"numeric"==h.getAttribute("data-type")&&(d.value=parseFloat(h.value.replace(/,/g,"")).toString()),"LIKE"==d.restriction.toUpperCase()&&(d.value="%"+h.value.trim()+"%",d.restriction=q.RestrictionLike)):d.restriction=q.RestrictionEq,s.push(d)}if(!u){if(null!=i&&i!=undefined){if(0!=i.length)for(var y=0;y<i.length;y++)s.push(i[y]);else if(null!=this.searchInput.addCritInput||this.searchInput.addCritInput!=undefined)for(y=0;y<this.searchInput.addCritInput.length;y++)s.push(this.searchInput.addCritInput[y])}else if(null!=this.searchInput.addCritInput||this.searchInput.addCritInput!=undefined)for(y=0;y<this.searchInput.addCritInput.length;y++)s.push(this.searchInput.addCritInput[y]);a.criteria=s,this.searchInput.isJoinExAPI?a.integrationObj=this.searchInput.integrationObj:a.integrationObj=null,this.http.post(e,a).subscribe(function(e){var t={response:e,pageNow:n};return console.log(t),o.result.emit(t),e})}},T.prototype.GenerateReport=function(){this.genRpt.emit({ExportType:this.ExportType,ElRef:this.myForm})},T.prototype.lessThanFour=function(){return!(3<this.countForm)},T.prototype.resolveObject=function(t,e,n){void 0===n&&(n=null),this.postJSON(e,n).subscribe(function(e){t.itemsUrl=new Array,t.itemsUrl=e.ReturnObject})},T.prototype.transformAmount=function(e){this.formattedAmount=parseFloat(e.target.value).toLocaleString("en"),e.target.value=this.formattedAmount},T.prototype.transformToDecimal=function(e){e.target.value=parseFloat(e.target.value.toString().replace(/,/g,""))},T.prototype.exportAsXLSX=function(){var t=this,e=new b;e.pageNo=1,e.rowPerPage=9999,e.orderBy=null,e.criteria=[],e.queryString=this.configuration.querystring,this.http.post(this.apiUrl,e).subscribe(function(e){t.ExcelData=e.Data,t.excelService.exportAsExcelFile(t.ExcelData,"sample")},function(e){console.log(e)})},T.prototype.onChangeEvent=function(e,t){for(var n=this.configuration.component,r=0;r<t.affectedFilter.length;r++)for(var i=0;i<n.length;i++)if(n[i].name==t.affectedFilter[r]){var o=new b,a=new Array;if("all"!=e&&"one"!=e){var s=new I;s.DataType=t.datatype,t.filterPropName!=undefined||""!=t.filterPropName?(o[t.filterPropName]=e,s.propName=t.filterPropName):(s.propName=t.name,o[t.name]=e),s.value=e,s.restriction=q.RestrictionEq,a.push(s)}if(o.criteria=a,n[i].path!=undefined&&""!=n[i].path)if(this.searchInput.ddlEnvironments!=undefined&&0!=this.searchInput.ddlEnvironments.length){for(var l=0;l<this.searchInput.ddlEnvironments.length;l++)if(n[i].name==this.searchInput.ddlEnvironments[l].name){n[i].fullpath=this.searchInput.ddlEnvironments[l].environment+n[i].path;break}}else n[i].fullpath=n[i].url;else n[i].fullpath=n[i].url;this.resolveObject(n[i],n[i].fullpath,o)}},T.prototype.switchCase=function(t){for(var e=!1,n=0;n<t.conditions.length;n++){var r=this.searchInput.switchValue.findIndex(function(e){return e.property==t.conditions[n].property});if("EQ"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(this.searchInput.switchValue[r].value!=t.conditions[n].value){e=!1;break}e=!0}else{var i=localStorage.getItem("Username");if(this.searchInput.switchValue[r].value!=i){e=!1;break}e=!0}else if("NEQ"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(this.searchInput.switchValue[r].value==t.conditions[n].value){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),this.searchInput.switchValue[r].value==i){e=!1;break}e=!0}else if("GT"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(!(this.searchInput.switchValue[r].value>t.conditions[n].value)){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),!(this.searchInput.switchValue[r].value>i)){e=!1;break}e=!0}else if("GTE"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(!(this.searchInput.switchValue[r].value>=t.conditions[n].value)){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),!(this.searchInput.switchValue[r].value>=i)){e=!1;break}e=!0}else if("LT"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(!(this.searchInput.switchValue[r].value<t.conditions[n].value)){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),!(this.searchInput.switchValue[r].value<i)){e=!1;break}e=!0}else if("LTE"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(!(this.searchInput.switchValue[r].value<=t.conditions[n].value)){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),!(this.searchInput.switchValue[r].value<=i)){e=!1;break}e=!0}}return e},T.decorators=[{type:s.Component,args:[{selector:"lib-UCSearch",template:'\x3c!-- Basic form layout section start --\x3e\r\n<section id="horizontal-form-layouts">\r\n <div class="row text-left">\r\n <div class="col-md-12">\r\n <div class="card">\r\n <div class="pl-3 mb-2 mt-2" *ngIf="configuration?.title != undefined && configuration?.title != \'\'">\r\n <h4 class="card-title ucSearch-title" translate>{{configuration.title}}</h4>\r\n </div>\r\n <div class="card-body">\r\n <div class="px-3">\r\n <form class="form form-horizontal" id="formSearch" #formIdSearch #enjiForm="ngForm" (ngSubmit)="false">\r\n <div class="form-body">\r\n <h4 class="form-section font-weight-bold">\r\n <div (click)="changeState()" class="btn no-padding cursor-pointer flip">\r\n <i class="fa" style="font-size: 15px; margin: 0px 0px 5px -15px;"\r\n [ngClass]="isHidden ? \'fa-chevron-right\' : \'fa-chevron-down\'"></i>\r\n </div>\r\n <span\r\n *ngIf="configuration?.sectionTitle != undefined && configuration?.sectionTitle != \'\'; then inputSectionTitle else defaultSectionTitle"></span>\r\n <ng-template #inputSectionTitle>\r\n {{configuration?.sectionTitle}}\r\n </ng-template>\r\n <ng-template #defaultSectionTitle>\r\n Paging\r\n </ng-template>\r\n </h4>\r\n \x3c!-- Ini Digunakan untuk Generate Dynamic Component --\x3e\r\n \x3c!-- [hidden]="isHidden" --\x3e\r\n <div class="panel-active" [@changeDivSize]=currentState>\r\n <div class="row">\r\n <div class="col-md-6 form-group" *ngFor="let question of configuration?.component">\r\n <div class="col-md-12">\r\n <div class="row">\r\n <label class="col-md-5 no-padding" for="{{question.id}}" translate>{{question.label}}</label>\r\n <div class="col-md-7 no-padding">\r\n <div *ngIf="question.type==\'textbox\'">\r\n <input type="text" id="{{question.id}}" class="form-control search-form-control"\r\n name="{{question.name}}" value="{{question.value}}" (keyup.enter)="searchClick()"\r\n attr.data-type="{{question.datatype}}" attr.data-restriction="{{question.restriction}}">\r\n </div>\r\n <div *ngIf="question.type==\'textarea\'">\r\n <textarea type="text" id="{{question.id}}" class="form-control search-form-control"\r\n name="{{question.name}}" attr.data-type="{{question.datatype}}"\r\n value="{{question.value}}"></textarea>\r\n </div>\r\n <div *ngIf="question.type==\'numeric\'">\r\n <input type="text" id="{{question.id}}" (focus)="transformToDecimal($event)"\r\n (blur)="transformAmount($event)" class="form-control search-form-control"\r\n name="{{question.name}}" value="{{question.value}}" (keyup.enter)="searchClick()"\r\n attr.data-restriction="{{question.restriction}}" attr.data-type="{{question.datatype}}">\r\n </div>\r\n <div *ngIf="question.type==\'currency\'">\r\n <div *ngIf="question?.isCustom != undefined && question?.isCustom">\r\n <input type="text" id="{{question.id}}" class="form-control search-form-control"\r\n [name]="question.name" (keyup.enter)="searchClick()"\r\n attr.data-restriction="{{question.restriction}}"\r\n attr.data-type="{{question.datatype}}" attr.data-name="{{question.name}}" currencyMask\r\n ngModel [(ngModel)]="question.value" [ngModelOptions]="{standalone: true}"\r\n [options]="{ thousands: question.thousands, decimal: question.decimal, align: question.align, allowNegative: question.allowNegative, allowZero: question.allowZero, precision: question.precision, nullable: question.nullable }">\r\n </div>\r\n <div *ngIf="question?.isCustom == undefined || !question?.isCustom">\r\n <input type="text" id="{{question.id}}" class="form-control search-form-control"\r\n [name]="question.name" (keyup.enter)="searchClick()"\r\n attr.data-restriction="{{question.restriction}}"\r\n attr.data-type="{{question.datatype}}" attr.data-name="{{question.name}}" currencyMask\r\n ngModel [(ngModel)]="question.value" [ngModelOptions]="{standalone: true}"\r\n [options]="{ thousands: \',\', decimal: \'.\', align: \'right\', allowNegative: false, allowZero:true, precision: 2, nullable: false }">\r\n </div>\r\n </div>\r\n\r\n \x3c!-- End Hardcode Lookup didalem--\x3e\r\n <div *ngIf="question.type==\'datepicker\'">\r\n <input type="date" id="{{question.id}}"\r\n class="form-control search-form-control btn-lookup" name="{{question.name}}"\r\n value="{{question.value}}" attr.data-type="{{question.datatype}}"\r\n (keyup.enter)="searchClick()" attr.data-restriction="{{question.restriction}}">\r\n </div>\r\n <div *ngIf="question.type==\'dropdown\'">\r\n \x3c!-- Ini kalau datanya tidak di load dari URL --\x3e\r\n <div *ngIf="!question.isFromURL">\r\n <select name="{{question.name}}" class="form-control search-form-control"\r\n attr.query-in="{{question.isQueryIn}}" attr.data-type="{{question.datatype}}"\r\n attr.label="{{question.label}}" [hidden]="question?.items.length == 1">\r\n <option *ngIf="question.ddlType == \'one\' && question?.items.length != 1" value="one">\r\n Select One</option>\r\n <option\r\n *ngIf="(question?.ddlType == undefined || question.ddlType == \'all\') && question?.items.length != 1"\r\n value="all">All</option>\r\n <option *ngFor="let item of question?.items" value="{{item.key}}">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <label *ngIf="question?.items.length == 1">{{question.items[0].value}}</label>\r\n </div>\r\n \x3c!-- Ini kalau datanya di load dari URL --\x3e\r\n <div *ngIf="question.isFromURL">\r\n <div *ngIf="question.isEvent">\r\n <select name="{{question.name}}" class="form-control search-form-control"\r\n attr.query-in="{{question.isQueryIn}}" attr.data-type="{{question.datatype}}"\r\n attr.label="{{question.label}}"\r\n (change)="onChangeEvent($event.target.value, question)"\r\n [hidden]="question?.items.length == 1">\r\n <option *ngIf="question.ddlType == \'one\' && question?.itemsUrl.length != 1"\r\n value="one">Select One</option>\r\n <option\r\n *ngIf="(question?.ddlType == undefined || question.ddlType == \'all\') && question?.itemsUrl.length != 1"\r\n value="all">All</option>\r\n <option *ngFor="let item of question?.itemsUrl" value="{{item.Key}}">\r\n {{item.Value}}\r\n </option>\r\n </select>\r\n <label *ngIf="question?.itemsUrl.length == 1">{{question.itemsUrl[0].Value}}</label>\r\n </div>\r\n <div *ngIf="!question.isEvent">\r\n <select name="{{question.name}}" class="form-control search-form-control"\r\n attr.query-in="{{question.isQueryIn}}" attr.data-type="{{question.datatype}}"\r\n attr.label="{{question.label}}" [hidden]="question?.itemsUrl.length == 1">\r\n <option *ngIf="question.ddlType == \'one\' && question?.itemsUrl.length != 1"\r\n value="one">Select One</option>\r\n <option\r\n *ngIf="(question?.ddlType == undefined || question.ddlType == \'all\') && question?.itemsUrl.length != 1"\r\n value="all">All</option>\r\n <option *ngFor="let item of question?.itemsUrl" value="{{item.Key}}">\r\n {{item.Value}}\r\n </option>\r\n </select>\r\n <label *ngIf="question?.itemsUrl.length == 1">{{question.itemsUrl[0].Value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="col-md-6 form-group" *ngIf="(isReport != undefined && isReport)">\r\n <div class="col-md-12">\r\n <div class="row">\r\n <label class="col-md-5 no-padding" translate>Report Type</label>\r\n <div class="col-md-7 no-padding">\r\n <select name="ExportType" [(ngModel)]="ExportType" class="form-control search-form-control"\r\n attr.data-type="text">\r\n <option *ngFor="let item of ExportTypeList" [value]="item.key">{{item.value}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="col-md-12 no-padding">\r\n <form>\r\n <div class="form-actions right">\r\n <button *ngIf="exportData == true" type="button" (click)="exportAsXLSX()"\r\n class="btn btn-raised btn-success mr-1" translate>\r\n <i class="fa ft-download"></i> Export Excel\r\n </button>\r\n <button type="button" (click)="reset()" class="btn btn-raised btn-warning mr-1" translate>\r\n <i class="fa fa-times"></i> Reset\r\n </button>\r\n <button *ngIf="(isReport == undefined || !isReport)" type="button" (click)="searchClick()"\r\n class="btn btn-raised btn-primary" #UCSearchClick translate>\r\n <i class="fa fa-search"></i> Search\r\n </button>\r\n <button *ngIf="(isReport != undefined && isReport)" type="button" (click)="GenerateReport()"\r\n class="btn btn-raised btn-primary" translate>\r\n <i class="fa ft-download"></i> Generate Report\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n<br>\r\n\x3c!-- // Basic form layout section end --\x3e',providers:[v],animations:[i.trigger("changeDivSize",[i.state("initial",i.style({height:"*",opacity:"1"})),i.state("final",i.style({height:"0px",opacity:"0",overflow:"hidden"})),i.transition("initial=>final",i.animate("300ms")),i.transition("final=>initial",i.animate("300ms"))])],styles:[".ucSearch-title{margin:3px}"]}]}],T.ctorParameters=function(){return[{type:t.HttpClient},{type:v},{type:s.Renderer2},{type:undefined,decorators:[{type:s.Inject,args:[n.DOCUMENT]}]},{type:a.ToastrService}]},T.propDecorators={myForm:[{type:s.ViewChild,args:["formIdSearch"]}],searchInput:[{type:s.Input}],pageSize:[{type:s.Input}],isReport:[{type:s.Input}],result:[{type:s.Output}],genRpt:[{type:s.Output}]},T);function T(e,t,n,r,i){this.http=e,this.excelService=t,this._renderer2=n,this._document=r,this.toastr=i,this.searchInput=new g,this.pageSize=10,this.isReport=!1,this.result=new s.EventEmitter,this.genRpt=new s.EventEmitter,this.ExportTypeList=[{key:x.EXP_TYPE_PDF,value:"PDF"},{key:x.EXP_TYPE_XLS,value:"Excel 2003"},{key:x.EXP_TYPE_XLSX,value:"Excel 2007"},{key:x.EXP_TYPE_DOC,value:"Document"},{key:x.EXP_TYPE_DOCX,value:"Document XML"}],this.ExportType=0,this.pageNow=1,this.isDataLoaded=!1,this.isHidden=!1,this.currentState="initial",this.countForm=0,this.formattedAmount="",this.amount=0}var k={align:"right",allowNegative:!1,allowZero:!0,decimal:".",precision:2,prefix:"",suffix:"",thousands:",",nullable:!1,inputMode:u.CurrencyMaskInputMode.NATURAL},S=(C.decorators=[{type:s.NgModule,args:[{declarations:[E],imports:[m.CommonModule,l.FormsModule,u.NgxCurrencyModule.forRoot(k),c.TranslateModule.forChild()],exports:[E]}]}],C);function C(){}e.UCSearchService=p,e.UCSearchComponent=E,e.customCurrencyMaskConfig=k,e.UCSearchModule=S,e.ɵa=v,Object.defineProperty(e,"__esModule",{value:!0})});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common/http"),require("@angular/platform-browser"),require("file-saver"),require("xlsx"),require("@angular/animations"),require("ngx-toastr"),require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("ngx-currency"),require("@ngx-translate/core"),require("@adins/uc-show-errors")):"function"==typeof define&&define.amd?define("@adins/ucsearch",["exports","@angular/common/http","@angular/platform-browser","file-saver","xlsx","@angular/animations","ngx-toastr","@angular/core","@angular/common","@angular/forms","ngx-currency","@ngx-translate/core","@adins/uc-show-errors"],t):t((e.adins=e.adins||{},e.adins.ucsearch={}),e.ng.common.http,e.ng.platformBrowser,e.FileSaver,e.XLSX,e.ng.animations,e.ngxToastr,e.ng.core,e.ng.common,e.ng.forms,e.ngxCurrency,e.core,e.ucShowErrors)}(this,function(e,t,n,r,o,i,a,s,h,l,u,c,d){"use strict";var p=(m.decorators=[{type:s.Injectable,args:[{providedIn:"root"}]}],m.ctorParameters=function(){return[]},m.ngInjectableDef=s.defineInjectable({factory:function(){return new m},token:m,providedIn:"root"}),m);function m(){}var q=(f.RestrictionBetween="Between",f.RestrictionLike="Like",f.RestrictionEq="Eq",f.RestrictionNeq="NEQ",f.RestrictionGt="GT",f.RestrictionGte="GTE",f.RestrictionLt="LT",f.RestrictionLte="LTE",f.RestrictionIn="IN",f.RestrictionNotIn="NotIn",f.RestrictionOr="Or",f.RestrictionOrNeq="OrNeq",f.RestrictionIsNull="isnull",f.RestrictionIsNotNull="isnotnull",f.RestrictionGTE="GTE",f.RestrictionLTE="LTE",f.showData="10,50,100",f.JoinTypeInner="INNER",f.JoinTypeLeft="LEFT",f);function f(){}var g=function j(){this.baseUrl="",this.apiPath="",this.requestObj=new Object,this.leftColumnToJoin="",this.rightColumnToJoin="",this.joinType=q.JoinTypeInner},v=function R(){this._url="",this.enviromentUrl="",this.title="",this.apiQryPaging="",this.arrCritObj=null,this.addCritInput=new Array,this.ddlEnvironments=new Array,this.whereValue=new Array,this.switchValue=new Array,this.integrationObj=new g,this.isJoinExAPI=!1},b=function P(){this.low=0,this.high=0,this.DataType="Text"},I=function U(){this.includeCount=!0,this.includeData=!0,this.isLoading=!0,this.queryString="",this.rowVersion="",this.integrationObj=new g,this.joinType=q.JoinTypeInner},y=(x.prototype.exportAsExcelFile=function(e,t){var n=o.utils.json_to_sheet(e);console.log("worksheet",n);var r={Sheets:{data:n},SheetNames:["data"]},i=o.write(r,{bookType:"xlsx",type:"array"});this.saveAsExcelFile(i,t)},x.prototype.saveAsExcelFile=function(e,t){var n=new Blob([e],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"});r.saveAs(n,t+"_export_"+(new Date).getTime()+".xlsx")},x.decorators=[{type:s.Injectable}],x.ctorParameters=function(){return[]},x);function x(){}var w=(E.EXP_TYPE_PDF=0,E.EXP_TYPE_XLS=1,E.EXP_TYPE_XLSX=2,E.EXP_TYPE_DOC=3,E.EXP_TYPE_DOCX=4,E);function E(){}var T=(F.prototype.changeState=function(){this.currentState="initial"===this.currentState?"final":"initial",this.isHidden=!1===this.isHidden},F.prototype.ngOnInit=function(){console.log("ucsearch"),this.apiUrl=this.searchInput.enviromentUrl+this.searchInput.apiQryPaging,this.arrCrit=this.searchInput.arrCritObj;var e=this._renderer2.createElement("script");e.text='\n $(document).ready(function(){\n $("#flip").click(function(){\n $("#panel").slideToggle("slow");\n });\n });\n ',this._renderer2.appendChild(this._document.body,e),this.initiateForm()},F.prototype.initiateForm=function(){var m=this;this.getJSON(this.searchInput._url).subscribe(function(e){m.configuration=e,m.exportData=e.exportExcel,e.exportTypeList!=undefined&&0!=e.exportTypeList.length&&(m.ExportTypeList=e.exportTypeList,m.ExportType=m.ExportTypeList[0].key),m.countForm=e.component.length,m.isDataLoaded=!0,m.searchInput.title!=undefined&&""!=m.searchInput.title&&(m.configuration.title=m.searchInput.title);for(var t=0;t<m.countForm;t++){if(1==e.component[t].isFromURL){var n=new I,r=new Array,i=new b;if(i.DataType="text",i.propName=e.component[t].criteriaPropName,i.value=e.component[t].criteriaPropValue,i.restriction="eq",r.push(i),n.criteria=r,n[e.component[t].criteriaPropName]=e.component[t].criteriaPropValue,e.component[t].path!=undefined&&""!=e.component[t].path)if(m.searchInput.ddlEnvironments!=undefined&&0!=m.searchInput.ddlEnvironments.length){for(var o=0;o<m.searchInput.ddlEnvironments.length;o++)if(e.component[t].name==m.searchInput.ddlEnvironments[o].name){e.component[t].fullpath=m.searchInput.ddlEnvironments[o].environment+e.component[t].path;break}}else e.component[t].fullpath=e.component[t].url;else e.component[t].fullpath=e.component[t].url;m.resolveObject(e.component[t],e.component[t].fullpath,n)}if("numeric"==e.component[t].type&&(e.component[t].value=parseFloat(e.component[t].value).toLocaleString("en")),"datepicker"==e.component[t].type&&e.component[t].value.includes("BD")){var a=localStorage.getItem("BusinessDateRaw"),s=new Date;null!=a&&(s=new Date(a));var l=e.component[t].value.charAt(2),u=new Date;if("-"==l){var c=e.component[t].value.split("-",2),d=parseInt(c[1]);u.setDate(s.getDate()-d)}else"+"==l?(c=e.component[t].value.split("+",2),d=parseInt(c[1]),u.setDate(s.getDate()+d)):u=s;var p=h.formatDate(u,"yyyy-MM-dd","en-US");e.component[t].value=p}}})},F.prototype.getJSON=function(e){return this.http.get(e)},F.prototype.postJSON=function(e,t){return void 0===t&&(t=null),this.http.post(e,t)},F.prototype.searchClick=function(){var e=null;null!=this.configuration.orderby&&(e={key:this.configuration.orderby.key,value:this.configuration.orderby.value}),this.pageNow=1,this.search(this.apiUrl,this.pageNow,this.pageSize,e,this.arrCrit)},F.prototype.reset=function(e){e.resetForm(),this.ExportType=this.ExportTypeList[0].key,this.initiateForm()},F.prototype.search=function(e,n,t,r,i){var o=this;void 0===i&&(i=new Array);var a=new I,s=new Array,l=!1,u=!1;if(this.searchInput.whereValue!=undefined&&0!=this.searchInput.whereValue.length){this.configuration.querystring.whereQuery=new Array;for(var c=0;c<this.searchInput.whereValue.length;c++)this.configuration.querystring.whereQuery.push(this.searchInput.whereValue[c].value)}a.pageNo=n,a.rowPerPage=t,a.orderBy=r,a.queryString=this.configuration.querystring;for(var d=0;d<this.countForm;d++){var p=new b,m=this.myForm.nativeElement[d];if(null!=m.getAttribute("data-required")&&"true"==m.getAttribute("data-required")&&""==m.value.trim()){u=!0;var h=m.getAttribute("label");this.toastr.warning("Please input "+h);break}if(p.DataType=m.getAttribute("data-type"),l=null!=m.getAttribute("query-in")&&"true"==m.getAttribute("query-in"),""!=m.value)if("SELECT"==m.nodeName){var f=m.options,g=f[f.selectedIndex].value.trim();if("one"==g){u=!0,h=m.getAttribute("label"),this.toastr.warning("Please select "+h);break}if("all"!=g&&"one"!=g)p.restriction=q.RestrictionEq,p.propName=m.name,p.value=g,s.push(p);else if("all"==g&&1==l&&0!=m.options.length){var v=new Array;for(c=0;c<m.options.length;c++)0!=c&&v.push(m.options[c].value);0!=v.length&&(p.restriction=q.RestrictionIn,p.propName=m.name,p.listValue=v,s.push(p))}}else""!=m.name?p.propName=m.name:p.propName=m.getAttribute("data-name"),p.value=m.value.trim(),m.value.includes("%")?p.restriction=q.RestrictionLike:""!=m.getAttribute("data-restriction")&&null!=m.getAttribute("data-restriction")?(p.restriction=m.getAttribute("data-restriction"),"numeric"==m.getAttribute("data-type")&&(p.value=parseFloat(m.value.replace(/,/g,"")).toString()),"LIKE"==p.restriction.toUpperCase()&&(p.value="%"+m.value.trim()+"%",p.restriction=q.RestrictionLike)):p.restriction=q.RestrictionEq,s.push(p)}if(!u){if(null!=i&&i!=undefined){if(0!=i.length)for(var y=0;y<i.length;y++)s.push(i[y]);else if(null!=this.searchInput.addCritInput||this.searchInput.addCritInput!=undefined)for(y=0;y<this.searchInput.addCritInput.length;y++)s.push(this.searchInput.addCritInput[y])}else if(null!=this.searchInput.addCritInput||this.searchInput.addCritInput!=undefined)for(y=0;y<this.searchInput.addCritInput.length;y++)s.push(this.searchInput.addCritInput[y]);a.criteria=s,this.searchInput.isJoinExAPI?a.integrationObj=this.searchInput.integrationObj:a.integrationObj=null,this.http.post(e,a).subscribe(function(e){var t={response:e,pageNow:n};return console.log(t),o.result.emit(t),e})}},F.prototype.GenerateReport=function(){this.genRpt.emit({ExportType:this.ExportType,ElRef:this.myForm})},F.prototype.lessThanFour=function(){return!(3<this.countForm)},F.prototype.resolveObject=function(t,e,n){void 0===n&&(n=null),this.postJSON(e,n).subscribe(function(e){t.itemsUrl=new Array,t.itemsUrl=e.ReturnObject})},F.prototype.transformAmount=function(e){this.formattedAmount=parseFloat(e.target.value).toLocaleString("en"),e.target.value=this.formattedAmount},F.prototype.transformToDecimal=function(e){e.target.value=parseFloat(e.target.value.toString().replace(/,/g,""))},F.prototype.exportAsXLSX=function(){var t=this,e=new I;e.pageNo=1,e.rowPerPage=9999,e.orderBy=null,e.criteria=[],e.queryString=this.configuration.querystring,this.http.post(this.apiUrl,e).subscribe(function(e){t.ExcelData=e.Data,t.excelService.exportAsExcelFile(t.ExcelData,"sample")},function(e){console.log(e)})},F.prototype.onChangeEvent=function(e,t){for(var n=this.configuration.component,r=0;r<t.affectedFilter.length;r++)for(var i=0;i<n.length;i++)if(n[i].name==t.affectedFilter[r]){var o=new I,a=new Array;if("all"!=e&&"one"!=e){var s=new b;s.DataType=t.datatype,t.filterPropName!=undefined||""!=t.filterPropName?(o[t.filterPropName]=e,s.propName=t.filterPropName):(s.propName=t.name,o[t.name]=e),s.value=e,s.restriction=q.RestrictionEq,a.push(s)}if(o.criteria=a,n[i].path!=undefined&&""!=n[i].path)if(this.searchInput.ddlEnvironments!=undefined&&0!=this.searchInput.ddlEnvironments.length){for(var l=0;l<this.searchInput.ddlEnvironments.length;l++)if(n[i].name==this.searchInput.ddlEnvironments[l].name){n[i].fullpath=this.searchInput.ddlEnvironments[l].environment+n[i].path;break}}else n[i].fullpath=n[i].url;else n[i].fullpath=n[i].url;this.resolveObject(n[i],n[i].fullpath,o)}},F.prototype.switchCase=function(t){for(var e=!1,n=0;n<t.conditions.length;n++){var r=this.searchInput.switchValue.findIndex(function(e){return e.property==t.conditions[n].property});if("EQ"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(this.searchInput.switchValue[r].value!=t.conditions[n].value){e=!1;break}e=!0}else{var i=localStorage.getItem("Username");if(this.searchInput.switchValue[r].value!=i){e=!1;break}e=!0}else if("NEQ"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(this.searchInput.switchValue[r].value==t.conditions[n].value){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),this.searchInput.switchValue[r].value==i){e=!1;break}e=!0}else if("GT"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(!(this.searchInput.switchValue[r].value>t.conditions[n].value)){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),!(this.searchInput.switchValue[r].value>i)){e=!1;break}e=!0}else if("GTE"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(!(this.searchInput.switchValue[r].value>=t.conditions[n].value)){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),!(this.searchInput.switchValue[r].value>=i)){e=!1;break}e=!0}else if("LT"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(!(this.searchInput.switchValue[r].value<t.conditions[n].value)){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),!(this.searchInput.switchValue[r].value<i)){e=!1;break}e=!0}else if("LTE"==t.conditions[n].restriction)if(1!=t.conditions[n].isUser){if(!(this.searchInput.switchValue[r].value<=t.conditions[n].value)){e=!1;break}e=!0}else{if(i=localStorage.getItem("Username"),!(this.searchInput.switchValue[r].value<=i)){e=!1;break}e=!0}}return e},F.decorators=[{type:s.Component,args:[{selector:"lib-UCSearch",template:'\x3c!-- Basic form layout section start --\x3e\r\n<section id="horizontal-form-layouts">\r\n <div class="row text-left">\r\n <div class="col-md-12">\r\n <div class="card">\r\n <div class="pl-3 mb-2 mt-2" *ngIf="configuration?.title != undefined && configuration?.title != \'\'">\r\n <h4 class="card-title ucSearch-title" translate>{{configuration.title}}</h4>\r\n </div>\r\n <div class="card-body">\r\n <div class="px-3">\r\n <form class="form form-horizontal" id="formSearch" #formIdSearch #enjiForm="ngForm"\r\n (ngSubmit)="enjiForm.valid && searchClick()">\r\n <div class="form-body">\r\n <h4 class="form-section font-weight-bold">\r\n <div (click)="changeState()" class="btn no-padding cursor-pointer flip">\r\n <i class="fa" style="font-size: 15px; margin: 0px 0px 5px -15px;"\r\n [ngClass]="isHidden ? \'fa-chevron-right\' : \'fa-chevron-down\'"></i>\r\n </div>\r\n <span\r\n *ngIf="configuration?.sectionTitle != undefined && configuration?.sectionTitle != \'\'; then inputSectionTitle else defaultSectionTitle"></span>\r\n <ng-template #inputSectionTitle>\r\n {{configuration?.sectionTitle}}\r\n </ng-template>\r\n <ng-template #defaultSectionTitle>\r\n Paging\r\n </ng-template>\r\n </h4>\r\n \x3c!-- Ini Digunakan untuk Generate Dynamic Component --\x3e\r\n \x3c!-- [hidden]="isHidden" --\x3e\r\n <div class="panel-active" [@changeDivSize]=currentState>\r\n <div class="row">\r\n <div class="col-md-6 form-group" *ngFor="let question of configuration?.component">\r\n <div class="col-md-12">\r\n <div class="row">\r\n <label class="col-md-5 no-padding" for="{{question.id}}"\r\n [ngClass]="{\'adins-required-label\': (question.isRequired || (question?.ddlType != undefined && question.ddlType == \'one\'))}"\r\n translate>{{question.label}}</label>\r\n <div class="col-md-7 no-padding">\r\n <div *ngIf="question.type==\'textbox\'">\r\n <input type="text" id="{{question.id}}" class="form-control search-form-control" ngModel\r\n [required]="question.isRequired" name="{{question.name}}"\r\n attr.data-required="{{question.isRequired}}" value="{{question.value}}"\r\n (keyup.enter)="searchClick()" attr.data-type="{{question.datatype}}"\r\n attr.data-name="{{question.name}}" attr.data-restriction="{{question.restriction}}"\r\n [ngClass]="{ \'is-invalid\':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }">\r\n </div>\r\n <div *ngIf="question.type==\'textarea\'">\r\n <textarea type="text" id="{{question.id}}" class="form-control search-form-control"\r\n ngModel name="{{question.name}}" attr.data-required="{{question.isRequired}}"\r\n attr.data-type="{{question.datatype}}" attr.data-name="{{question.name}}"\r\n value="{{question.value}}"\r\n [ngClass]="{ \'is-invalid\':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }"></textarea>\r\n </div>\r\n <div *ngIf="question.type==\'numeric\'">\r\n <input type="text" id="{{question.id}}" (focus)="transformToDecimal($event)"\r\n (blur)="transformAmount($event)" class="form-control search-form-control" ngModel\r\n name="{{question.name}}" attr.data-required="{{question.isRequired}}"\r\n value="{{question.value}}" (keyup.enter)="searchClick()"\r\n attr.data-restriction="{{question.restriction}}" attr.data-type="{{question.datatype}}"\r\n attr.data-name="{{question.name}}"\r\n [ngClass]="{ \'is-invalid\':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }">\r\n </div>\r\n <div *ngIf="question.type==\'currency\'">\r\n <div *ngIf="question?.isCustom != undefined && question?.isCustom">\r\n <input type="text" id="{{question.id}}" class="form-control search-form-control"\r\n [name]="question.name" (keyup.enter)="searchClick()"\r\n attr.data-restriction="{{question.restriction}}"\r\n attr.data-type="{{question.datatype}}" attr.data-name="{{question.name}}"\r\n attr.data-required="{{question.isRequired}}" currencyMask ngModel\r\n [(ngModel)]="question.value" [ngModelOptions]="{standalone: true}"\r\n [options]="{ thousands: question.thousands, decimal: question.decimal, align: question.align, allowNegative: question.allowNegative, allowZero: question.allowZero, precision: question.precision, nullable: question.nullable }"\r\n [ngClass]="{ \'is-invalid\':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }">\r\n </div>\r\n <div *ngIf="question?.isCustom == undefined || !question?.isCustom">\r\n <input type="text" id="{{question.id}}" class="form-control search-form-control"\r\n [name]="question.name" (keyup.enter)="searchClick()"\r\n attr.data-restriction="{{question.restriction}}"\r\n attr.data-type="{{question.datatype}}" attr.data-name="{{question.name}}"\r\n attr.data-required="{{question.isRequired}}" currencyMask ngModel\r\n [(ngModel)]="question.value" [ngModelOptions]="{standalone: true}"\r\n [options]="{ thousands: \',\', decimal: \'.\', align: \'right\', allowNegative: false, allowZero:true, precision: 2, nullable: false }"\r\n [ngClass]="{ \'is-invalid\':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }">\r\n </div>\r\n </div>\r\n\r\n \x3c!-- End Hardcode Lookup didalem--\x3e\r\n <div *ngIf="question.type==\'datepicker\'">\r\n <input type="date" id="{{question.id}}"\r\n class="form-control search-form-control btn-lookup" name="{{question.name}}" ngModel\r\n attr.data-required="{{question.isRequired}}" value="{{question.value}}"\r\n attr.data-type="{{question.datatype}}" attr.data-name="{{question.name}}"\r\n (keyup.enter)="searchClick()" attr.data-restriction="{{question.restriction}}"\r\n [ngClass]="{ \'is-invalid\':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }">\r\n </div>\r\n <div *ngIf="question.type==\'dropdown\'">\r\n \x3c!-- Ini kalau datanya tidak di load dari URL --\x3e\r\n <div *ngIf="!question.isFromURL">\r\n <select name="{{question.name}}" attr.data-required="{{question.isRequired}}" ngModel\r\n class="form-control search-form-control" attr.query-in="{{question.isQueryIn}}"\r\n attr.data-type="{{question.datatype}}" attr.data-name="{{question.name}}"\r\n [hidden]="question?.items.length == 1"\r\n [ngClass]="{ \'is-invalid\':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }">\r\n <option *ngIf="question.ddlType == \'one\' && question?.items.length != 1" value="one">\r\n Select One</option>\r\n <option\r\n *ngIf="(question?.ddlType == undefined || question.ddlType == \'all\') && question?.items.length != 1"\r\n value="all">All</option>\r\n <option *ngFor="let item of question?.items" value="{{item.key}}">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <label *ngIf="question?.items.length == 1">{{question.items[0].value}}</label>\r\n </div>\r\n \x3c!-- Ini kalau datanya di load dari URL --\x3e\r\n <div *ngIf="question.isFromURL">\r\n <div *ngIf="question.isEvent">\r\n <select name="{{question.name}}" attr.data-required="{{question.isRequired}}"\r\n class="form-control search-form-control" attr.query-in="{{question.isQueryIn}}"\r\n attr.data-type="{{question.datatype}}" attr.data-name="{{question.name}}"\r\n (change)="onChangeEvent($event.target.value, question)"\r\n [hidden]="question?.items.length == 1"\r\n [ngClass]="{ \'is-invalid\':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }">\r\n <option *ngIf="question.ddlType == \'one\' && question?.itemsUrl.length != 1"\r\n value="one">Select One</option>\r\n <option\r\n *ngIf="(question?.ddlType == undefined || question.ddlType == \'all\') && question?.itemsUrl.length != 1"\r\n value="all">All</option>\r\n <option *ngFor="let item of question?.itemsUrl" value="{{item.Key}}">\r\n {{item.Value}}\r\n </option>\r\n </select>\r\n <label *ngIf="question?.itemsUrl.length == 1">{{question.itemsUrl[0].Value}}</label>\r\n </div>\r\n <div *ngIf="!question.isEvent">\r\n <select name="{{question.name}}" attr.data-required="{{question.isRequired}}"\r\n class="form-control search-form-control" attr.query-in="{{question.isQueryIn}}"\r\n attr.data-type="{{question.datatype}}" attr.label="{{question.label}}"\r\n [hidden]="question?.itemsUrl.length == 1"\r\n [ngClass]="{ \'is-invalid\':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }">\r\n <option *ngIf="question.ddlType == \'one\' && question?.itemsUrl.length != 1"\r\n value="one">Select One</option>\r\n <option\r\n *ngIf="(question?.ddlType == undefined || question.ddlType == \'all\') && question?.itemsUrl.length != 1"\r\n value="all">All</option>\r\n <option *ngFor="let item of question?.itemsUrl" value="{{item.Key}}">\r\n {{item.Value}}\r\n </option>\r\n </select>\r\n <label *ngIf="question?.itemsUrl.length == 1">{{question.itemsUrl[0].Value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-uc-show-errors [control]="enjiForm.form.controls[question.name]"\r\n [submit]="enjiForm.submitted">\r\n </lib-uc-show-errors>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="col-md-6 form-group" *ngIf="(isReport != undefined && isReport)">\r\n <div class="col-md-12">\r\n <div class="row">\r\n <label class="col-md-5 no-padding" translate>Report Type</label>\r\n <div class="col-md-7 no-padding">\r\n <select name="ExportType" [(ngModel)]="ExportType" class="form-control search-form-control"\r\n attr.data-type="text">\r\n <option *ngFor="let item of ExportTypeList" [value]="item.key">{{item.value}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="col-md-12 no-padding">\r\n <div class="form-actions right">\r\n <button *ngIf="exportData == true" type="button" (click)="exportAsXLSX()"\r\n class="btn btn-raised btn-success mr-1" translate>\r\n <i class="fa ft-download"></i> Export Excel\r\n </button>\r\n <button type="button" (click)="reset(enjiForm)" class="btn btn-raised btn-warning mr-1" translate>\r\n <i class="fa fa-times"></i> Reset\r\n </button>\r\n <button *ngIf="(isReport == undefined || !isReport)" type="submit"\r\n class="btn btn-raised btn-primary" #UCSearchClick translate>\r\n <i class="fa fa-search"></i> Search\r\n </button>\r\n <button *ngIf="(isReport != undefined && isReport)" type="button" (click)="GenerateReport()"\r\n class="btn btn-raised btn-primary" translate>\r\n <i class="fa ft-download"></i> Generate Report\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n<br>\r\n\x3c!-- // Basic form layout section end --\x3e',providers:[y],animations:[i.trigger("changeDivSize",[i.state("initial",i.style({height:"*",opacity:"1"})),i.state("final",i.style({height:"0px",opacity:"0",overflow:"hidden"})),i.transition("initial=>final",i.animate("300ms")),i.transition("final=>initial",i.animate("300ms"))])],styles:[".ucSearch-title{margin:3px}"]}]}],F.ctorParameters=function(){return[{type:t.HttpClient},{type:y},{type:s.Renderer2},{type:undefined,decorators:[{type:s.Inject,args:[n.DOCUMENT]}]},{type:a.ToastrService}]},F.propDecorators={myForm:[{type:s.ViewChild,args:["formIdSearch"]}],searchInput:[{type:s.Input}],pageSize:[{type:s.Input}],isReport:[{type:s.Input}],result:[{type:s.Output}],genRpt:[{type:s.Output}]},F);function F(e,t,n,r,i){this.http=e,this.excelService=t,this._renderer2=n,this._document=r,this.toastr=i,this.searchInput=new v,this.pageSize=10,this.isReport=!1,this.result=new s.EventEmitter,this.genRpt=new s.EventEmitter,this.ExportTypeList=[{key:w.EXP_TYPE_PDF,value:"PDF"},{key:w.EXP_TYPE_XLS,value:"Excel 2003"},{key:w.EXP_TYPE_XLSX,value:"Excel 2007"},{key:w.EXP_TYPE_DOC,value:"Document"},{key:w.EXP_TYPE_DOCX,value:"Document XML"}],this.ExportType=0,this.pageNow=1,this.isDataLoaded=!1,this.isHidden=!1,this.currentState="initial",this.countForm=0,this.formattedAmount="",this.amount=0}var C={align:"right",allowNegative:!1,allowZero:!0,decimal:".",precision:2,prefix:"",suffix:"",thousands:",",nullable:!1,inputMode:u.CurrencyMaskInputMode.NATURAL},S=(k.decorators=[{type:s.NgModule,args:[{declarations:[T],imports:[h.CommonModule,l.FormsModule,d.UcShowErrorsModule,u.NgxCurrencyModule.forRoot(C),c.TranslateModule.forChild()],exports:[T]}]}],k);function k(){}e.UCSearchService=p,e.UCSearchComponent=T,e.customCurrencyMaskConfig=C,e.UCSearchModule=S,e.ɵa=y,Object.defineProperty(e,"__esModule",{value:!0})});
2
2
  //# sourceMappingURL=adins-ucsearch.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["ng://@adins/ucsearch/lib/ucsearch.service.ts","ng://@adins/ucsearch/lib/model/AdInstConstant.ts","ng://@adins/ucsearch/lib/model/IntegrationObj.model.ts","ng://@adins/ucsearch/lib/model/InputSearchObj.Model.ts","ng://@adins/ucsearch/lib/model/CriteriaObj.model.ts","ng://@adins/ucsearch/lib/model/RequestCriteriaObj.model.ts","ng://@adins/ucsearch/lib/services/excel-service/excel-service.ts","ng://@adins/ucsearch/lib/model/KeyValueReport.model.ts","ng://@adins/ucsearch/lib/ucsearch.component.ts","ng://@adins/ucsearch/lib/ucsearch.module.ts"],"names":["UCSearchService","Injectable","args","providedIn","AdInsConstant","RestrictionBetween","RestrictionLike","RestrictionEq","RestrictionNeq","RestrictionGt","RestrictionGte","RestrictionLt","RestrictionLte","RestrictionIn","RestrictionNotIn","RestrictionOr","RestrictionOrNeq","RestrictionIsNull","RestrictionIsNotNull","RestrictionGTE","RestrictionLTE","showData","JoinTypeInner","JoinTypeLeft","IntegrationObj","this","baseUrl","apiPath","requestObj","Object","leftColumnToJoin","rightColumnToJoin","joinType","InputSearchObj","_url","enviromentUrl","title","apiQryPaging","arrCritObj","addCritInput","Array","ddlEnvironments","whereValue","switchValue","integrationObj","isJoinExAPI","CriteriaObj","low","high","DataType","RequestCriteriaObj","includeCount","includeData","isLoading","queryString","rowVersion","ExcelService","prototype","exportAsExcelFile","json","excelFileName","worksheet","XLSX.utils","json_to_sheet","console","log","workbook","Sheets","data","SheetNames","excelBuffer","XLSX.write","bookType","type","saveAsExcelFile","buffer","fileName","Blob","FileSaver.saveAs","Date","getTime","ExportTypeConstant","EXP_TYPE_PDF","EXP_TYPE_XLS","EXP_TYPE_XLSX","EXP_TYPE_DOC","EXP_TYPE_DOCX","UCSearchComponent","changeState","currentState","isHidden","ngOnInit","apiUrl","searchInput","arrCrit","js","_renderer2","createElement","text","appendChild","_document","body","initiateForm","_this","getJSON","subscribe","configuration","exportData","exportExcel","exportTypeList","undefined","length","ExportTypeList","ExportType","key","countForm","component","isDataLoaded","i","isFromURL","request","arrayCrit","criteriaObject","propName","criteriaPropName","value","criteriaPropValue","restriction","push","criteria","path","y","name","fullpath","environment","url","resolveObject","parseFloat","toLocaleString","includes","llsBD","localStorage","getItem","businessDate","operator","charAt","dateShow","tempMinus","split","numDay","parseInt","setDate","getDate","dateText","formatDate","http","get","postJSON","post","searchClick","order","orderby","pageNow","search","pageSize","reset","pageNo","rowPerPage","orderBy","addCrit","IsQueryIn","IsBreak","querystring","whereQuery","x","i_1","critObj","myForm","nativeElement","getAttribute","nodeName","ddl","options","selectedIndex","trim","label","toastr","warning","ddlList","listValue","replace","toString","toUpperCase","response","qryPaging","result","emit","GenerateReport","genRpt","ElRef","lessThanFour","obj","crit","tempData","itemsUrl","ReturnObject","transformAmount","element","formattedAmount","target","transformToDecimal","exportAsXLSX","ExcelData","excelService","error","onChangeEvent","optValue","afFilter","jsonComp","affectedFilter","j","datatype","filterPropName","switchCase","condList","condition","conditions","idx","findIndex","property","isUser","username","Component","selector","template","providers","animations","trigger","state","style","height","opacity","overflow","transition","animate","HttpClient","Renderer2","Inject","DOCUMENT","ToastrService","ViewChild","Input","Output","isReport","EventEmitter","amount","customCurrencyMaskConfig","align","allowNegative","allowZero","decimal","precision","prefix","suffix","thousands","nullable","inputMode","CurrencyMaskInputMode","NATURAL","UCSearchModule","NgModule","declarations","imports","CommonModule","FormsModule","NgxCurrencyModule","forRoot","TranslateModule","forChild","exports"],"mappings":"i3BAAA,IAAAA,uBAECC,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,uJAIZ,SAAAH,KCLF,IAAAI,GACkBA,EAAAC,mBAAqB,UACrBD,EAAAE,gBAAkB,OAClBF,EAAAG,cAAgB,KAChBH,EAAAI,eAAiB,MACjBJ,EAAAK,cAAgB,KAChBL,EAAAM,eAAiB,MACjBN,EAAAO,cAAgB,KAChBP,EAAAQ,eAAiB,MACjBR,EAAAS,cAAgB,KAChBT,EAAAU,iBAAmB,QACnBV,EAAAW,cAAgB,KAChBX,EAAAY,iBAAmB,QACnBZ,EAAAa,kBAAoB,SACpBb,EAAAc,qBAAuB,YACvBd,EAAAe,eAAiB,MACjBf,EAAAgB,eAAiB,MACjBhB,EAAAiB,SAAW,YACXjB,EAAAkB,cAAgB,QAChBlB,EAAAmB,aAAe,OACjCnB,GApBA,SAAAA,KCDA,IAAAoB,EAQI,SAAAA,IACIC,KAAKC,QAAU,GACfD,KAAKE,QAAU,GACfF,KAAKG,WAAa,IAAIC,OACtBJ,KAAKK,iBAAmB,GACxBL,KAAKM,kBAAoB,GACzBN,KAAKO,SAAW5B,EAAckB,eCZtCW,EAaI,SAAAA,IACIR,KAAKS,KAAO,GACZT,KAAKU,cAAgB,GACrBV,KAAKW,MAAQ,GACbX,KAAKY,aAAe,GACpBZ,KAAKa,WAAa,KAClBb,KAAKc,aAAe,IAAIC,MACxBf,KAAKgB,gBAAkB,IAAID,MAC3Bf,KAAKiB,WAAa,IAAIF,MACtBf,KAAKkB,YAAc,IAAIH,MACvBf,KAAKmB,eAAiB,IAAIpB,EAC1BC,KAAKoB,aAAc,GC3B3BC,EASI,SAAAA,IACIrB,KAAKsB,IAAM,EACXtB,KAAKuB,KAAO,EACZvB,KAAKwB,SAAW,QCRxBC,EAaI,SAAAA,IAEIzB,KAAK0B,cAAa,EAClB1B,KAAK2B,aAAY,EACjB3B,KAAK4B,WAAY,EACjB5B,KAAK6B,YAAc,GACnB7B,KAAK8B,WAAa,GAClB9B,KAAKmB,eAAiB,IAAIpB,EAC1BC,KAAKO,SAAW5B,EAAckB,eClBtCkC,GAKSA,EAAAC,UAAAC,kBAAP,SAAyBC,EAAaC,OAE9BC,EAA4BC,EAAAA,MAAWC,cAAcJ,GAC3DK,QAAQC,IAAI,YAAYJ,OAClBK,EAA0B,CAAEC,OAAQ,CAAEC,KAAQP,GAAaQ,WAAY,CAAC,SACxEC,EAAmBC,EAAAA,MAAWL,EAAU,CAAEM,SAAU,OAAQC,KAAM,UAExEhD,KAAKiD,gBAAgBJ,EAAaV,IAG5BJ,EAAAC,UAAAiB,gBAAR,SAAwBC,EAAaC,OAC7BR,EAAa,IAAIS,KAAK,CAACF,GAAS,CACpCF,KApBa,oFAsBfK,EAAAA,OAAiBV,EAAMQ,EAAW,YAAa,IAAIG,MAAOC,UArBtC,8BAEvB/E,EAAAA,mDAsBDuD,GAnBE,SAAAA,KCAF,IAAAyB,GACkBA,EAAAC,aAAe,EACfD,EAAAE,aAAe,EACfF,EAAAG,cAAgB,EAChBH,EAAAI,aAAe,EACfJ,EAAAK,cAAgB,EAClCL,GANA,SAAAA,KCVA,IAAAM,GA2FEA,EAAA9B,UAAA+B,YAAA,WACE/D,KAAKgE,aAAqC,YAAtBhE,KAAKgE,aAA6B,QAAU,UAChEhE,KAAKiE,UAA6B,IAAlBjE,KAAKiE,UAGvBH,EAAA9B,UAAAkC,SAAA,WACE3B,QAAQC,IAAI,YACZxC,KAAKmE,OAASnE,KAAKoE,YAAY1D,cAAgBV,KAAKoE,YAAYxD,aAChEZ,KAAKqE,QAAUrE,KAAKoE,YAAYvD,eAC5ByD,EAAKtE,KAAKuE,WAAWC,cAAc,UACvCF,EAAGG,KAAO,gLAOVzE,KAAKuE,WAAWG,YAAY1E,KAAK2E,UAAUC,KAAMN,GAEjDtE,KAAK6E,gBAGPf,EAAA9B,UAAA6C,aAAA,WAAA,IAAAC,EAAA9E,KACEA,KAAK+E,QAAQ/E,KAAKoE,YAAY3D,MAAMuE,UAAS,SAACrC,GAC5CmC,EAAKG,cAAgBtC,EACrBmC,EAAKI,WAAavC,EAAKwC,YACnBxC,EAAKyC,gBAAkBC,WAA2C,GAA9B1C,EAAKyC,eAAeE,SAC1DR,EAAKS,eAAiB5C,EAAKyC,eAC3BN,EAAKU,WAAaV,EAAKS,eAAe,GAAGE,KAG3CX,EAAKY,UAAY/C,EAAKgD,UAAUL,OAChCR,EAAKc,cAAe,EAEhBd,EAAKV,YAAYzD,OAAS0E,WAAuC,IAA1BP,EAAKV,YAAYzD,QAC1DmE,EAAKG,cAActE,MAAQmE,EAAKV,YAAYzD,OAG9C,IAAK,IAAIkF,EAAI,EAAGA,EAAIf,EAAKY,UAAWG,IAAK,CAEvC,GAAmC,GAA/BlD,EAAKgD,UAAUE,GAAGC,UAAmB,KACnCC,EAAU,IAAItE,EACduE,EAAY,IAAIjF,MAChBkF,EAAiB,IAAI5E,EAUzB,GATA4E,EAAezE,SAAW,OAC1ByE,EAAeC,SAAWvD,EAAKgD,UAAUE,GAAGM,iBAC5CF,EAAeG,MAAQzD,EAAKgD,UAAUE,GAAGQ,kBACzCJ,EAAeK,YAAc,KAC7BN,EAAUO,KAAKN,GACfF,EAAQS,SAAWR,EACnBD,EAAQpD,EAAKgD,UAAUE,GAAGM,kBAAoBxD,EAAKgD,UAAUE,GAAGQ,kBAG5D1D,EAAKgD,UAAUE,GAAGY,MAAQpB,WAAuC,IAA1B1C,EAAKgD,UAAUE,GAAGY,KAC3D,GAAI3B,EAAKV,YAAYpD,iBAAmBqE,WAAwD,GAA3CP,EAAKV,YAAYpD,gBAAgBsE,QACpF,IAAK,IAAIoB,EAAI,EAAGA,EAAI5B,EAAKV,YAAYpD,gBAAgBsE,OAAQoB,IAC3D,GAAI/D,EAAKgD,UAAUE,GAAGc,MAAQ7B,EAAKV,YAAYpD,gBAAgB0F,GAAGC,KAAM,CACtEhE,EAAKgD,UAAUE,GAAGe,SAAW9B,EAAKV,YAAYpD,gBAAgB0F,GAAGG,YAAclE,EAAKgD,UAAUE,GAAGY,KACjG,YAIJ9D,EAAKgD,UAAUE,GAAGe,SAAWjE,EAAKgD,UAAUE,GAAGiB,SAIjDnE,EAAKgD,UAAUE,GAAGe,SAAWjE,EAAKgD,UAAUE,GAAGiB,IAIjDhC,EAAKiC,cAAcpE,EAAKgD,UAAUE,GAAIlD,EAAKgD,UAAUE,GAAGe,SAAUb,GAQpE,GAL8B,WAA1BpD,EAAKgD,UAAUE,GAAG7C,OACpBL,EAAKgD,UAAUE,GAAGO,MAAQY,WAAWrE,EAAKgD,UAAUE,GAAGO,OAAOa,eAAe,OAIjD,cAA1BtE,EAAKgD,UAAUE,GAAG7C,MAChBL,EAAKgD,UAAUE,GAAGO,MAAMc,SAAS,MAAO,KACtCC,EAAQC,aAAaC,QAAQ,mBAC7BC,EAAe,IAAIhE,KACV,MAAT6D,IACFG,EAAe,IAAIhE,KAAK6D,QAEtBI,EAAW5E,EAAKgD,UAAUE,GAAGO,MAAMoB,OAAO,GAC1CC,EAAW,IAAInE,KACnB,GAAgB,KAAZiE,EAAiB,KACfG,EAAY/E,EAAKgD,UAAUE,GAAGO,MAAMuB,MAAM,IAAK,GAC/CC,EAASC,SAASH,EAAU,IAChCD,EAASK,QAAQR,EAAaS,UAAYH,OAEvB,KAAZL,GACHG,EAAY/E,EAAKgD,UAAUE,GAAGO,MAAMuB,MAAM,IAAK,GAC/CC,EAASC,SAASH,EAAU,IAChCD,EAASK,QAAQR,EAAaS,UAAYH,IAE1CH,EAAWH,MAETU,EAAWC,EAAAA,WAAWR,EAAU,aAAc,SAClD9E,EAAKgD,UAAUE,GAAGO,MAAQ4B,OAO7BlE,EAAA9B,UAAA+C,QAAP,SAAe+B,GACb,OAAO9G,KAAKkI,KAAKC,IAAIrB,IAGhBhD,EAAA9B,UAAAoG,SAAP,SAAgBtB,EAAaN,GAC3B,YAD2B,IAAAA,IAAAA,EAAA,MACpBxG,KAAKkI,KAAKG,KAAKvB,EAAKN,IAG7B1C,EAAA9B,UAAAsG,YAAA,eACMC,EAAQ,KACsB,MAA9BvI,KAAKiF,cAAcuD,UACrBD,EAAQ,CACN9C,IAAKzF,KAAKiF,cAAcuD,QAAQ/C,IAChCW,MAAOpG,KAAKiF,cAAcuD,QAAQpC,QAGtCpG,KAAKyI,QAAU,EACfzI,KAAK0I,OAAO1I,KAAKmE,OAAQnE,KAAKyI,QAASzI,KAAK2I,SAAUJ,EAAOvI,KAAKqE,UAGpEP,EAAA9B,UAAA4G,MAAA,WACE5I,KAAKwF,WAAaxF,KAAKuF,eAAe,GAAGE,IACzCzF,KAAK6E,gBAGPf,EAAA9B,UAAA0G,OAAA,SAAOvE,EAAgB0E,EAAgBC,EAAoBC,EAAcC,GAAzE,IAAAlE,EAAA9E,UAAyE,IAAAgJ,IAAAA,EAAA,IAA6BjI,WAChGgF,EAAU,IAAItE,EACd4C,EAAU,IAAItD,MACdkI,GAAY,EACZC,GAAU,EAGd,GAAIlJ,KAAKoE,YAAYnD,YAAcoE,WAAmD,GAAtCrF,KAAKoE,YAAYnD,WAAWqE,OAAa,CACvFtF,KAAKiF,cAAckE,YAAYC,WAAa,IAAIrI,MAChD,IAAK,IAAIsI,EAAI,EAAGA,EAAIrJ,KAAKoE,YAAYnD,WAAWqE,OAAQ+D,IACtDrJ,KAAKiF,cAAckE,YAAYC,WAAW7C,KAAKvG,KAAKoE,YAAYnD,WAAWoI,GAAGjD,OAGlFL,EAAQ8C,OAASA,EACjB9C,EAAQ+C,WAAaA,EACrB/C,EAAQgD,QAAUA,EAClBhD,EAAQlE,YAAc7B,KAAKiF,cAAckE,YAEzC,IAAK,IAAIG,EAAI,EAAGA,EAAItJ,KAAK0F,UAAW4D,IAAK,KACnCC,EAAU,IAAIlI,EACdsE,EAAY3F,KAAKwJ,OAAOC,cAAcH,GAS1C,GARAC,EAAQ/H,SAAWmE,EAAU+D,aAAa,aAGxCT,EADwC,MAAtCtD,EAAU+D,aAAa,aAA6D,QAAtC/D,EAAU+D,aAAa,YAMlD,IAAnB/D,EAAUS,MACZ,GAA0B,UAAtBT,EAAUgE,SAAsB,KAC9BC,EAAMjE,EAAUkE,QAChBpF,EAAOmF,EAAIA,EAAIE,eAAe1D,MAAM2D,OACxC,GAAY,OAARtF,EAAe,CACjByE,GAAU,MACNc,EAAQrE,EAAU+D,aAAa,SACnC1J,KAAKiK,OAAOC,QAAQ,iBAAmBF,GACvC,MAEF,GAAY,OAARvF,GAAyB,OAARA,EAEnB8E,EAAQjD,YAAc3H,EAAcG,cACpCyK,EAAQrD,SAAWP,EAAUgB,KAC7B4C,EAAQnD,MAAQ3B,EAChBJ,EAAQkC,KAAKgD,QACR,GAAY,OAAR9E,GAA8B,GAAbwE,GAAiD,GAA5BtD,EAAUkE,QAAQvE,OAAa,KAC1E6E,EAAU,IAAIpJ,MAClB,IAASsI,EAAI,EAAGA,EAAI1D,EAAUkE,QAAQvE,OAAQ+D,IACnC,GAALA,GACFc,EAAQ5D,KAAKZ,EAAUkE,QAAQR,GAAGjD,OAGhB,GAAlB+D,EAAQ7E,SACViE,EAAQjD,YAAc3H,EAAcS,cACpCmK,EAAQrD,SAAWP,EAAUgB,KAC7B4C,EAAQa,UAAYD,EACpB9F,EAAQkC,KAAKgD,SAMK,IAAlB5D,EAAUgB,KACZ4C,EAAQrD,SAAWP,EAAUgB,KAE7B4C,EAAQrD,SAAWP,EAAU+D,aAAa,aAE5CH,EAAQnD,MAAQT,EAAUS,MAAM2D,OAC5BpE,EAAUS,MAAMc,SAAS,KAC3BqC,EAAQjD,YAAc3H,EAAcE,gBAGiB,IAA9C8G,EAAU+D,aAAa,qBAA2E,MAA9C/D,EAAU+D,aAAa,qBAClFH,EAAQjD,YAAcX,EAAU+D,aAAa,oBACF,WAAvC/D,EAAU+D,aAAa,eACzBH,EAAQnD,MAAQY,WAAWrB,EAAUS,MAAMiE,QAAQ,KAAM,KAAKC,YAEvB,QAArCf,EAAQjD,YAAYiE,gBACtBhB,EAAQnD,MAAQ,IAAMT,EAAUS,MAAM2D,OAAS,IAC/CR,EAAQjD,YAAc3H,EAAcE,kBAItC0K,EAAQjD,YAAc3H,EAAcG,cAEtCuF,EAAQkC,KAAKgD,GAKnB,IAAIL,EAAJ,CAIA,GAAe,MAAXF,GAAmBA,GAAW3D,WAChC,GAAsB,GAAlB2D,EAAQ1D,OACV,IAAK,IAAIO,EAAI,EAAGA,EAAImD,EAAQ1D,OAAQO,IAClCxB,EAAQkC,KAAKyC,EAAQnD,SAElB,GAAqC,MAAjC7F,KAAKoE,YAAYtD,cAAwBd,KAAKoE,YAAYtD,cAAgBuE,UACnF,IAASQ,EAAI,EAAGA,EAAI7F,KAAKoE,YAAYtD,aAAawE,OAAQO,IACxDxB,EAAQkC,KAAKvG,KAAKoE,YAAYtD,aAAa+E,SAI5C,GAAqC,MAAjC7F,KAAKoE,YAAYtD,cAAwBd,KAAKoE,YAAYtD,cAAgBuE,UACjF,IAASQ,EAAI,EAAGA,EAAI7F,KAAKoE,YAAYtD,aAAawE,OAAQO,IACxDxB,EAAQkC,KAAKvG,KAAKoE,YAAYtD,aAAa+E,IAI/CE,EAAQS,SAAWnC,EAEfrE,KAAKoE,YAAYhD,YAGnB2E,EAAQ5E,eAAiBnB,KAAKoE,YAAYjD,eAF1C4E,EAAQ5E,eAAiB,KAK3BnB,KAAKkI,KAAKG,KAAKlE,EAAQ4B,GAASf,UAAS,SAAEwF,OACrCC,EAAY,CACdD,SAAUA,EACV/B,QAASI,GAIX,OAFAtG,QAAQC,IAAIiI,GACZ3F,EAAK4F,OAAOC,KAAKF,GACVD,MAIX1G,EAAA9B,UAAA4I,eAAA,WACE5K,KAAK6K,OAAOF,KAAK,CAAEnF,WAAYxF,KAAKwF,WAAYsF,MAAO9K,KAAKwJ,UAG9D1F,EAAA9B,UAAA+I,aAAA,WACE,QAAqB,EAAjB/K,KAAK0F,YAQX5B,EAAA9B,UAAA+E,cAAA,SAAciE,EAAUlE,EAAamE,QAAA,IAAAA,IAAAA,EAAA,MACvBjL,KAAKoI,SAAStB,EAAKmE,GAC3BjG,UAAS,SAACkG,GACZF,EAAIG,SAAW,IAAIpK,MACnBiK,EAAIG,SAAWD,EAASE,gBAI5BtH,EAAA9B,UAAAqJ,gBAAA,SAAgBC,GACdtL,KAAKuL,gBAAkBvE,WAAWsE,EAAQE,OAAOpF,OAAOa,eAAe,MAEvEqE,EAAQE,OAAOpF,MAAQpG,KAAKuL,iBAG9BzH,EAAA9B,UAAAyJ,mBAAA,SAAmBH,GACjBA,EAAQE,OAAOpF,MAAQY,WAAWsE,EAAQE,OAAOpF,MAAMkE,WAAWD,QAAQ,KAAM,MAGlFvG,EAAA9B,UAAA0J,aAAA,WAAA,IAAA5G,EAAA9E,KACM+F,EAAU,IAAItE,EAClBsE,EAAQ8C,OAAS,EACjB9C,EAAQ+C,WAAa,KACrB/C,EAAQgD,QAAU,KAClBhD,EAAQS,SAAW,GACnBT,EAAQlE,YAAc7B,KAAKiF,cAAckE,YAEzCnJ,KAAKkI,KAAKG,KAAKrI,KAAKmE,OAAQ4B,GAASf,UAAS,SAC5CwF,GACE1F,EAAK6G,UAAYnB,EAAe,KAChC1F,EAAK8G,aAAa3J,kBAAkB6C,EAAK6G,UAAW,WACrD,SACAE,GACCtJ,QAAQC,IAAIqJ,MAIlB/H,EAAA9B,UAAA8J,cAAA,SAAcC,EAAUC,GAGtB,QAFIC,EAAWjM,KAAKiF,cAAcU,UAEzBE,EAAI,EAAGA,EAAImG,EAASE,eAAe5G,OAAQO,IAClD,IAAK,IAAIsG,EAAI,EAAGA,EAAIF,EAAS3G,OAAQ6G,IACnC,GAAIF,EAASE,GAAGxF,MAAQqF,EAASE,eAAerG,GAAI,KAC9CE,EAAU,IAAItE,EACduE,EAAY,IAAIjF,MAEpB,GAAgB,OAAZgL,GAAiC,OAAZA,EAAmB,KACtCxC,EAAU,IAAIlI,EAClBkI,EAAQ/H,SAAWwK,EAASI,SACxBJ,EAASK,gBAAkBhH,WAAwC,IAA3B2G,EAASK,gBACnDtG,EAAQiG,EAASK,gBAAkBN,EACnCxC,EAAQrD,SAAW8F,EAASK,iBAE5B9C,EAAQrD,SAAW8F,EAASrF,KAC5BZ,EAAQiG,EAASrF,MAAQoF,GAE3BxC,EAAQnD,MAAQ2F,EAChBxC,EAAQjD,YAAc3H,EAAcG,cACpCkH,EAAUO,KAAKgD,GAGjB,GADAxD,EAAQS,SAAWR,EACfiG,EAASE,GAAG1F,MAAQpB,WAAiC,IAApB4G,EAASE,GAAG1F,KAC/C,GAAIzG,KAAKoE,YAAYpD,iBAAmBqE,WAAwD,GAA3CrF,KAAKoE,YAAYpD,gBAAgBsE,QACpF,IAAK,IAAIoB,EAAI,EAAGA,EAAI1G,KAAKoE,YAAYpD,gBAAgBsE,OAAQoB,IAC3D,GAAIuF,EAASE,GAAGxF,MAAQ3G,KAAKoE,YAAYpD,gBAAgB0F,GAAGC,KAAM,CAChEsF,EAASE,GAAGvF,SAAW5G,KAAKoE,YAAYpD,gBAAgB0F,GAAGG,YAAcoF,EAASE,GAAG1F,KACrF,YAIJwF,EAASE,GAAGvF,SAAWqF,EAASE,GAAGrF,SAIrCmF,EAASE,GAAGvF,SAAWqF,EAASE,GAAGrF,IAErC9G,KAAK+G,cAAckF,EAASE,GAAIF,EAASE,GAAGvF,SAAUb,KAM9DjC,EAAA9B,UAAAsK,WAAA,SAAWC,GAGT,QAFIC,GAAY,EAEP3G,EAAI,EAAGA,EAAI0G,EAASE,WAAWnH,OAAQO,IAAK,KAC/C6G,EAAM1M,KAAKoE,YAAYlD,YAAYyL,UAAS,SAACtD,GAAK,OAAAA,EAAEuD,UAAYL,EAASE,WAAW5G,GAAG+G,WAC3F,GAA0C,MAAtCL,EAASE,WAAW5G,GAAGS,YACzB,GAAqC,GAAjCiG,EAASE,WAAW5G,GAAGgH,OAAgB,CACzC,GAAI7M,KAAKoE,YAAYlD,YAAYwL,GAAKtG,OAASmG,EAASE,WAAW5G,GAAGO,MAE/D,CACLoG,GAAY,EACZ,MAHAA,GAAY,MAKT,KACDM,EAAW1F,aAAaC,QAAQ,YACpC,GAAIrH,KAAKoE,YAAYlD,YAAYwL,GAAKtG,OAAS0G,EAExC,CACLN,GAAY,EACZ,MAHAA,GAAY,OAMX,GAA0C,OAAtCD,EAASE,WAAW5G,GAAGS,YAChC,GAAqC,GAAjCiG,EAASE,WAAW5G,GAAGgH,OAAgB,CACzC,GAAI7M,KAAKoE,YAAYlD,YAAYwL,GAAKtG,OAASmG,EAASE,WAAW5G,GAAGO,MAE/D,CACLoG,GAAY,EACZ,MAHAA,GAAY,MAKT,CAEL,GADIM,EAAW1F,aAAaC,QAAQ,YAChCrH,KAAKoE,YAAYlD,YAAYwL,GAAKtG,OAAS0G,EAExC,CACLN,GAAY,EACZ,MAHAA,GAAY,OAMX,GAA0C,MAAtCD,EAASE,WAAW5G,GAAGS,YAChC,GAAqC,GAAjCiG,EAASE,WAAW5G,GAAGgH,OAAgB,CACzC,KAAI7M,KAAKoE,YAAYlD,YAAYwL,GAAKtG,MAAQmG,EAASE,WAAW5G,GAAGO,OAE9D,CACLoG,GAAY,EACZ,MAHAA,GAAY,MAKT,CAEL,GADIM,EAAW1F,aAAaC,QAAQ,cAChCrH,KAAKoE,YAAYlD,YAAYwL,GAAKtG,MAAQ0G,GAEvC,CACLN,GAAY,EACZ,MAHAA,GAAY,OAMX,GAA0C,OAAtCD,EAASE,WAAW5G,GAAGS,YAChC,GAAqC,GAAjCiG,EAASE,WAAW5G,GAAGgH,OAAgB,CACzC,KAAI7M,KAAKoE,YAAYlD,YAAYwL,GAAKtG,OAASmG,EAASE,WAAW5G,GAAGO,OAE/D,CACLoG,GAAY,EACZ,MAHAA,GAAY,MAKT,CAEL,GADIM,EAAW1F,aAAaC,QAAQ,cAChCrH,KAAKoE,YAAYlD,YAAYwL,GAAKtG,OAAS0G,GAExC,CACLN,GAAY,EACZ,MAHAA,GAAY,OAMX,GAA0C,MAAtCD,EAASE,WAAW5G,GAAGS,YAChC,GAAqC,GAAjCiG,EAASE,WAAW5G,GAAGgH,OAAgB,CACzC,KAAI7M,KAAKoE,YAAYlD,YAAYwL,GAAKtG,MAAQmG,EAASE,WAAW5G,GAAGO,OAE9D,CACLoG,GAAY,EACZ,MAHAA,GAAY,MAKT,CAEL,GADIM,EAAW1F,aAAaC,QAAQ,cAChCrH,KAAKoE,YAAYlD,YAAYwL,GAAKtG,MAAQ0G,GAEvC,CACLN,GAAY,EACZ,MAHAA,GAAY,OAMX,GAA0C,OAAtCD,EAASE,WAAW5G,GAAGS,YAChC,GAAqC,GAAjCiG,EAASE,WAAW5G,GAAGgH,OAAgB,CACzC,KAAI7M,KAAKoE,YAAYlD,YAAYwL,GAAKtG,OAASmG,EAASE,WAAW5G,GAAGO,OAE/D,CACLoG,GAAY,EACZ,MAHAA,GAAY,MAKT,CAEL,GADIM,EAAW1F,aAAaC,QAAQ,cAChCrH,KAAKoE,YAAYlD,YAAYwL,GAAKtG,OAAS0G,GAExC,CACLN,GAAY,EACZ,MAHAA,GAAY,GAQpB,OAAOA,uBA7hBVO,EAAAA,UAAStO,KAAA,CAAC,CACTuO,SAAU,eACVC,SAAA,0oZAEAC,UAAW,CAACnL,GACZoL,WAAY,CACVC,EAAAA,QAAQ,gBAAiB,CACvBC,EAAAA,MAAM,UAAWC,EAAAA,MAAM,CACrBC,OAAQ,IACRC,QAAS,OAEXH,EAAAA,MAAM,QAASC,EAAAA,MAAM,CACnBC,OAAQ,MACRC,QAAS,IACTC,SAAU,YAEZC,EAAAA,WAAW,iBAAkBC,EAAAA,QAAQ,UACrCD,EAAAA,WAAW,iBAAkBC,EAAAA,QAAQ,iGA9BlCC,EAAAA,kBAQA7L,SAVyD8L,EAAAA,6CAwF7DC,EAAAA,OAAMrP,KAAA,CAACsP,EAAAA,mBA5EHC,EAAAA,iDA6BNC,EAAAA,UAASxP,KAAA,CAAC,qCACVyP,EAAAA,wBACAA,EAAAA,wBACAA,EAAAA,sBACAC,EAAAA,uBACAA,EAAAA,UAigBHrK,GAxdE,SAAAA,EAAoBoE,EAA0B0D,EAAoCrH,EACtDI,EAAkBsF,GAD1BjK,KAAAkI,KAAAA,EAA0BlI,KAAA4L,aAAAA,EAAoC5L,KAAAuE,WAAAA,EACtDvE,KAAA2E,UAAAA,EAAkB3E,KAAAiK,OAAAA,EA9CrCjK,KAAAoE,YAA8B,IAAI5D,EAClCR,KAAA2I,SAAmB,GACnB3I,KAAAoO,UAAoB,EACnBpO,KAAA0K,OAA4B,IAAI2D,EAAAA,aAChCrO,KAAA6K,OAAkE,IAAIwD,EAAAA,aAChFrO,KAAAuF,eAA2C,CACzC,CACEE,IAAKjC,EAAmBC,aACxB2C,MAAO,OAET,CACEX,IAAKjC,EAAmBE,aACxB0C,MAAO,cAET,CACEX,IAAKjC,EAAmBG,cACxByC,MAAO,cAET,CACEX,IAAKjC,EAAmBI,aACxBwC,MAAO,YAET,CACEX,IAAKjC,EAAmBK,cACxBuC,MAAO,iBAIXpG,KAAAwF,WAAqB,EAErBxF,KAAAyI,QAAe,EAIfzI,KAAA4F,cAAwB,EACxB5F,KAAAiE,UAAoB,EAEpBjE,KAAAgE,aAAe,UAGfhE,KAAA0F,UAAY,EACZ1F,KAAAuL,gBAAkB,GAClBvL,KAAAsO,OAAS,EC7EX,IAAaC,EAA2B,CACtCC,MAAO,QACPC,eAAe,EACfC,WAAW,EACXC,QAAS,IACTC,UAAW,EACXC,OAAQ,GACRC,OAAQ,GACRC,UAAW,IACXC,UAAU,EACVC,UAAWC,EAAAA,sBAAsBC,SAEnCC,uBAACC,EAAAA,SAAQ5Q,KAAA,CAAC,CACR6Q,aAAc,CAACxL,GACfyL,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,kBAAkBC,QAAQpB,GAC1BqB,EAAAA,gBAAgBC,YAElBC,QAAS,CAAChM,OAEkBsL,GAV9B,SAAAA","sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UCSearchService {\r\n\r\n constructor() { }\r\n}\r\n","import { formatDate } from \"@angular/common\";\r\n\r\nexport class AdInsConstant {\r\n public static RestrictionBetween = \"Between\"\r\n public static RestrictionLike = \"Like\";\r\n public static RestrictionEq = \"Eq\";\r\n public static RestrictionNeq = \"NEQ\";\r\n public static RestrictionGt = \"GT\";\r\n public static RestrictionGte = \"GTE\";\r\n public static RestrictionLt = \"LT\";\r\n public static RestrictionLte = \"LTE\";\r\n public static RestrictionIn = \"IN\";\r\n public static RestrictionNotIn = \"NotIn\";\r\n public static RestrictionOr = \"Or\"; //pastikan ada 1 criteria sebelumnya\r\n public static RestrictionOrNeq = \"OrNeq\"; //pastikan ada 1 criteria sebelumnya\r\n public static RestrictionIsNull = \"isnull\";\r\n public static RestrictionIsNotNull = \"isnotnull\";\r\n public static RestrictionGTE = \"GTE\";\r\n public static RestrictionLTE = \"LTE\";\r\n public static showData = \"10,50,100\";\r\n public static JoinTypeInner = \"INNER\";\r\n public static JoinTypeLeft = \"LEFT\";\r\n}\r\n","import { AdInsConstant } from \"./AdInstConstant\";\r\nexport class IntegrationObj {\r\n baseUrl: string;\r\n apiPath: string;\r\n requestObj: Object;\r\n leftColumnToJoin: string;\r\n rightColumnToJoin: string;\r\n joinType: string;\r\n \r\n constructor() {\r\n this.baseUrl = \"\";\r\n this.apiPath = \"\";\r\n this.requestObj = new Object();\r\n this.leftColumnToJoin = \"\";\r\n this.rightColumnToJoin = \"\";\r\n this.joinType = AdInsConstant.JoinTypeInner;\r\n }\r\n}","import { CriteriaObj } from \"./CriteriaObj.model\";\r\nimport { IntegrationObj } from \"./IntegrationObj.model\";\r\n \r\nexport class InputSearchObj {\r\n _url: string;\r\n enviromentUrl: string;\r\n title: string;\r\n apiQryPaging: string;\r\n arrCritObj: any;\r\n addCritInput: Array<CriteriaObj>;\r\n ddlEnvironments: Array<EnviObj>;\r\n whereValue: Array<WhereValueObj>;\r\n switchValue: Array<SwitchValueObj>;\r\n integrationObj: IntegrationObj;\r\n isJoinExAPI: boolean;\r\n \r\n constructor() {\r\n this._url = \"\";\r\n this.enviromentUrl = \"\";\r\n this.title = \"\";\r\n this.apiQryPaging = \"\";\r\n this.arrCritObj = null;\r\n this.addCritInput = new Array<CriteriaObj>();\r\n this.ddlEnvironments = new Array<EnviObj>();\r\n this.whereValue = new Array<WhereValueObj>();\r\n this.switchValue = new Array<SwitchValueObj>();\r\n this.integrationObj = new IntegrationObj();\r\n this.isJoinExAPI = false;\r\n }\r\n}\r\n\r\nexport class EnviObj {\r\n name: string;\r\n environment: string;\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.environment = \"\";\r\n }\r\n}\r\n\r\nexport class WhereValueObj {\r\n property: string;\r\n value: any;\r\n\r\n constructor() {\r\n this.property = \"\";\r\n }\r\n}\r\n\r\nexport class SwitchValueObj {\r\n property: string;\r\n value: any;\r\n\r\n constructor() {\r\n this.property = \"\";\r\n }\r\n}","export class CriteriaObj { \r\n propName: string;\r\n restriction: string;\r\n value: string;\r\n low: number;\r\n high: number;\r\n DataType: string;\r\n listValue: Array<any>;\r\n\r\n constructor() {\r\n this.low = 0;\r\n this.high = 0;\r\n this.DataType = 'Text';\r\n }\r\n\r\n}","import { AdInsConstant } from \"./AdInstConstant\";\r\nimport { CriteriaObj } from \"./CriteriaObj.model\";\r\nimport { IntegrationObj } from \"./IntegrationObj.model\";\r\n \r\nexport class RequestCriteriaObj{\r\n includeCount:boolean;\r\n includeData:boolean;\r\n pageNo:number;\r\n rowPerPage:number;\r\n orderBy:any;\r\n criteria:CriteriaObj[];\r\n isLoading : boolean;\r\n queryString: any;\r\n rowVersion: any;\r\n integrationObj: IntegrationObj;\r\n joinType: string;\r\n\r\n constructor()\r\n {\r\n this.includeCount=true;\r\n this.includeData=true;\r\n this.isLoading = true;\r\n this.queryString = '';\r\n this.rowVersion = '';\r\n this.integrationObj = new IntegrationObj();\r\n this.joinType = AdInsConstant.JoinTypeInner;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n\r\n@Injectable()\r\nexport class ExcelService {\r\n\r\n constructor() { }\r\n\r\n public exportAsExcelFile(json: any[], excelFileName: string): void {\r\n \r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n console.log('worksheet',worksheet);\r\n const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n //const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n\r\n private saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION);\r\n }\r\n\r\n}","export class KeyValueReportObj {\r\n key: number;\r\n value: string;\r\n\r\n constructor() {\r\n this.key = 0;\r\n this.value = \"\";\r\n }\r\n}\r\n\r\nexport class ExportTypeConstant {\r\n public static EXP_TYPE_PDF = 0;\r\n public static EXP_TYPE_XLS = 1;\r\n public static EXP_TYPE_XLSX = 2;\r\n public static EXP_TYPE_DOC = 3;\r\n public static EXP_TYPE_DOCX = 4;\r\n}","import { Component, OnInit, Input, ViewChild, ElementRef, Inject, Renderer2, EventEmitter, Output } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { formatDate } from '@angular/common';\r\nimport { InputSearchObj } from './model/InputSearchObj.Model';\r\nimport { CriteriaObj } from './model/CriteriaObj.model';\r\nimport { RequestCriteriaObj } from './model/RequestCriteriaObj.model';\r\nimport { AdInsConstant } from './model/AdInstConstant';\r\nimport { DOCUMENT } from '@angular/platform-browser';\r\nimport { ExcelService } from './services/excel-service/excel-service';\r\nimport { trigger, transition, style, animate, state } from '@angular/animations';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ExportTypeConstant, KeyValueReportObj } from './model/KeyValueReport.model';\r\n\r\n@Component({\r\n selector: 'lib-UCSearch',\r\n templateUrl: './ucsearch.component.html',\r\n styleUrls: ['./ucsearch.component.css'],\r\n providers: [ExcelService],\r\n animations: [\r\n trigger('changeDivSize', [\r\n state('initial', style({\r\n height: '*',\r\n opacity: '1',\r\n })),\r\n state('final', style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })),\r\n transition('initial=>final', animate('300ms')),\r\n transition('final=>initial', animate('300ms'))\r\n ]),\r\n ]\r\n})\r\nexport class UCSearchComponent implements OnInit {\r\n // trus nad, bisa ga kalo misalkan gw mau bikin\r\n // kalo login di cabang IsSelectOne: true\r\n // kalo login di HO, IsSelectOne: false\r\n\r\n @ViewChild('formIdSearch') myForm: ElementRef;\r\n @Input() searchInput: InputSearchObj = new InputSearchObj();\r\n @Input() pageSize: number = 10;\r\n @Input() isReport: boolean = false;\r\n @Output() result: EventEmitter<any> = new EventEmitter();\r\n @Output() genRpt: EventEmitter<{ ExportType: number, ElRef: ElementRef }> = new EventEmitter<{ ExportType: number, ElRef: ElementRef }>();\r\n ExportTypeList: Array<KeyValueReportObj> = [\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_PDF,\r\n value: \"PDF\"\r\n },\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_XLS,\r\n value: \"Excel 2003\"\r\n },\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_XLSX,\r\n value: \"Excel 2007\"\r\n },\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_DOC,\r\n value: \"Document\"\r\n },\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_DOCX,\r\n value: \"Document XML\"\r\n },\r\n ];\r\n\r\n ExportType: number = 0;\r\n\r\n pageNow: any = 1;\r\n configuration: any;\r\n exportData: any;\r\n ExcelData: any;\r\n isDataLoaded: boolean = false;\r\n isHidden: boolean = false;\r\n\r\n currentState = 'initial';\r\n\r\n form: FormGroup;\r\n countForm = 0;\r\n formattedAmount = '';\r\n amount = 0;\r\n apiUrl: string;\r\n arrCrit: any;\r\n constructor(private http: HttpClient, private excelService: ExcelService, private _renderer2: Renderer2,\r\n @Inject(DOCUMENT) private _document, public toastr: ToastrService) {\r\n }\r\n\r\n changeState() {\r\n this.currentState = this.currentState === 'initial' ? 'final' : 'initial';\r\n this.isHidden = this.isHidden === false ? true : false;\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"ucsearch\");\r\n this.apiUrl = this.searchInput.enviromentUrl + this.searchInput.apiQryPaging;\r\n this.arrCrit = this.searchInput.arrCritObj;\r\n let js = this._renderer2.createElement('script');\r\n js.text = `\r\n $(document).ready(function(){\r\n $(\"#flip\").click(function(){\r\n $(\"#panel\").slideToggle(\"slow\");\r\n });\r\n });\r\n `;\r\n this._renderer2.appendChild(this._document.body, js);\r\n\r\n this.initiateForm();\r\n }\r\n\r\n initiateForm() {\r\n this.getJSON(this.searchInput._url).subscribe(data => {\r\n this.configuration = data;\r\n this.exportData = data.exportExcel;\r\n if (data.exportTypeList != undefined && data.exportTypeList.length != 0) {\r\n this.ExportTypeList = data.exportTypeList;\r\n this.ExportType = this.ExportTypeList[0].key;\r\n }\r\n\r\n this.countForm = data.component.length;\r\n this.isDataLoaded = true;\r\n\r\n if (this.searchInput.title != undefined && this.searchInput.title != \"\") {\r\n this.configuration.title = this.searchInput.title;\r\n }\r\n\r\n for (var i = 0; i < this.countForm; i++) {\r\n //ini kalau datanya di load dari URL\r\n if (data.component[i].isFromURL == true) {\r\n var request = new RequestCriteriaObj();\r\n var arrayCrit = new Array();\r\n var criteriaObject = new CriteriaObj();\r\n criteriaObject.DataType = \"text\";\r\n criteriaObject.propName = data.component[i].criteriaPropName;\r\n criteriaObject.value = data.component[i].criteriaPropValue;\r\n criteriaObject.restriction = \"eq\";\r\n arrayCrit.push(criteriaObject);\r\n request.criteria = arrayCrit;\r\n request[data.component[i].criteriaPropName] = data.component[i].criteriaPropValue;\r\n\r\n // Pengecekan penggunaan url atau path\r\n if (data.component[i].path != undefined && data.component[i].path != \"\") {\r\n if (this.searchInput.ddlEnvironments != undefined && this.searchInput.ddlEnvironments.length != 0) {\r\n for (let y = 0; y < this.searchInput.ddlEnvironments.length; y++) {\r\n if (data.component[i].name == this.searchInput.ddlEnvironments[y].name) {\r\n data.component[i].fullpath = this.searchInput.ddlEnvironments[y].environment + data.component[i].path;\r\n break;\r\n }\r\n }\r\n } else {\r\n data.component[i].fullpath = data.component[i].url;\r\n }\r\n\r\n } else {\r\n data.component[i].fullpath = data.component[i].url;\r\n }\r\n //lempar objectnya sekalian sama urlnya, nnti di bind di dalem karena masalah di asyncnya\r\n //biar tiap function ada state2nya sendiri\r\n this.resolveObject(data.component[i], data.component[i].fullpath, request);\r\n }\r\n\r\n if (data.component[i].type == \"numeric\") {\r\n data.component[i].value = parseFloat(data.component[i].value).toLocaleString('en');\r\n }\r\n\r\n //pengecekan tanggal\r\n if (data.component[i].type == \"datepicker\") {\r\n if (data.component[i].value.includes(\"BD\")) {\r\n let llsBD = localStorage.getItem(\"BusinessDateRaw\");\r\n let businessDate = new Date();\r\n if (llsBD != null) {\r\n businessDate = new Date(llsBD);\r\n }\r\n var operator = data.component[i].value.charAt(2);\r\n var dateShow = new Date();\r\n if (operator == \"-\") {\r\n var tempMinus = data.component[i].value.split(\"-\", 2);\r\n var numDay = parseInt(tempMinus[1]);\r\n dateShow.setDate(businessDate.getDate() - numDay);\r\n }\r\n else if (operator == \"+\") {\r\n var tempMinus = data.component[i].value.split(\"+\", 2);\r\n var numDay = parseInt(tempMinus[1]);\r\n dateShow.setDate(businessDate.getDate() + numDay);\r\n } else {\r\n dateShow = businessDate;\r\n }\r\n var dateText = formatDate(dateShow, 'yyyy-MM-dd', 'en-US')\r\n data.component[i].value = dateText;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n public getJSON(url: string): Observable<any> {\r\n return this.http.get(url);\r\n }\r\n\r\n public postJSON(url: string, criteria: any = null): Observable<any> {\r\n return this.http.post(url, criteria);\r\n }\r\n\r\n searchClick() {\r\n let order = null;\r\n if (this.configuration.orderby != null) {\r\n order = {\r\n key: this.configuration.orderby.key,\r\n value: this.configuration.orderby.value\r\n }\r\n }\r\n this.pageNow = 1;\r\n this.search(this.apiUrl, this.pageNow, this.pageSize, order, this.arrCrit);\r\n }\r\n\r\n reset() {\r\n this.ExportType = this.ExportTypeList[0].key;\r\n this.initiateForm();\r\n }\r\n\r\n search(apiUrl: string, pageNo: number, rowPerPage: number, orderBy: any, addCrit: CriteriaObj[] = new Array()) {\r\n let request = new RequestCriteriaObj();\r\n let arrCrit = new Array();\r\n let IsQueryIn = false;\r\n let IsBreak = false;\r\n\r\n // Inject whereQuery for where criteria\r\n if (this.searchInput.whereValue != undefined && this.searchInput.whereValue.length != 0) {\r\n this.configuration.querystring.whereQuery = new Array<any>();\r\n for (let x = 0; x < this.searchInput.whereValue.length; x++) {\r\n this.configuration.querystring.whereQuery.push(this.searchInput.whereValue[x].value);\r\n }\r\n }\r\n request.pageNo = pageNo;\r\n request.rowPerPage = rowPerPage;\r\n request.orderBy = orderBy;\r\n request.queryString = this.configuration.querystring;\r\n\r\n for (let i = 0; i < this.countForm; i++) {\r\n let critObj = new CriteriaObj();\r\n let component = this.myForm.nativeElement[i];\r\n critObj.DataType = component.getAttribute('data-type');\r\n //Ini khusus kalau dari Drop Down\r\n if (component.getAttribute('query-in') != null && component.getAttribute('query-in') == \"true\") {\r\n IsQueryIn = true;\r\n }\r\n else {\r\n IsQueryIn = false;\r\n }\r\n if (component.value != \"\") {\r\n if (component.nodeName == 'SELECT') {\r\n let ddl = component.options;\r\n let text = ddl[ddl.selectedIndex].value.trim();\r\n if (text == \"one\") {\r\n IsBreak = true;\r\n let label = component.getAttribute('label');\r\n this.toastr.warning(\"Please select \" + label);\r\n break;\r\n }\r\n if (text != \"all\" && text != \"one\") {\r\n //Kalau Dari Dropdown udah pasti pake Eq\r\n critObj.restriction = AdInsConstant.RestrictionEq;\r\n critObj.propName = component.name;\r\n critObj.value = text;\r\n arrCrit.push(critObj);\r\n } else if (text == \"all\" && IsQueryIn == true && component.options.length != 0) {\r\n let ddlList = new Array();\r\n for (let x = 0; x < component.options.length; x++) {\r\n if (x != 0) {\r\n ddlList.push(component.options[x].value);\r\n }\r\n }\r\n if (ddlList.length != 0) {\r\n critObj.restriction = AdInsConstant.RestrictionIn;\r\n critObj.propName = component.name;\r\n critObj.listValue = ddlList;\r\n arrCrit.push(critObj);\r\n }\r\n }\r\n }\r\n else {\r\n //Kalau ada Percent maka yang dipake nnti adalah Restrictions Like\r\n if (component.name != \"\") {\r\n critObj.propName = component.name;\r\n } else {\r\n critObj.propName = component.getAttribute('data-name');\r\n }\r\n critObj.value = component.value.trim();\r\n if (component.value.includes(\"%\")) {\r\n critObj.restriction = AdInsConstant.RestrictionLike;\r\n }\r\n //kalau componentnya Date, restrictionsnya lgsg ambil dari property JSONnya\r\n else if (component.getAttribute('data-restriction') != \"\" && component.getAttribute('data-restriction') != null) {\r\n critObj.restriction = component.getAttribute('data-restriction');\r\n if (component.getAttribute('data-type') == 'numeric') {\r\n critObj.value = parseFloat(component.value.replace(/,/g, '')).toString();\r\n }\r\n if (critObj.restriction.toUpperCase() == \"LIKE\") {\r\n critObj.value = \"%\" + component.value.trim() + \"%\";\r\n critObj.restriction = AdInsConstant.RestrictionLike\r\n }\r\n }\r\n else {\r\n critObj.restriction = AdInsConstant.RestrictionEq\r\n }\r\n arrCrit.push(critObj);\r\n }\r\n }\r\n }\r\n\r\n if (IsBreak) {\r\n return;\r\n }\r\n\r\n if (addCrit != null && addCrit != undefined) {\r\n if (addCrit.length != 0) {\r\n for (var i = 0; i < addCrit.length; i++) {\r\n arrCrit.push(addCrit[i]);\r\n }\r\n } else if (this.searchInput.addCritInput != null || this.searchInput.addCritInput != undefined) {\r\n for (var i = 0; i < this.searchInput.addCritInput.length; i++) {\r\n arrCrit.push(this.searchInput.addCritInput[i]);\r\n }\r\n }\r\n }\r\n else if (this.searchInput.addCritInput != null || this.searchInput.addCritInput != undefined) {\r\n for (var i = 0; i < this.searchInput.addCritInput.length; i++) {\r\n arrCrit.push(this.searchInput.addCritInput[i]);\r\n }\r\n }\r\n\r\n request.criteria = arrCrit;\r\n \r\n if(!this.searchInput.isJoinExAPI){\r\n request.integrationObj = null;\r\n }else{\r\n request.integrationObj = this.searchInput.integrationObj;\r\n }\r\n\r\n this.http.post(apiUrl, request).subscribe((response) => {\r\n let qryPaging = {\r\n response: response,\r\n pageNow: pageNo\r\n }\r\n console.log(qryPaging);\r\n this.result.emit(qryPaging);\r\n return response;\r\n });\r\n }\r\n\r\n GenerateReport() {\r\n this.genRpt.emit({ ExportType: this.ExportType, ElRef: this.myForm });\r\n }\r\n\r\n lessThanFour(): boolean {\r\n if (this.countForm > 3) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n resolveObject(obj: any, url: string, crit: RequestCriteriaObj = null) {\r\n const val = this.postJSON(url, crit);\r\n val.subscribe(tempData => {\r\n obj.itemsUrl = new Array();\r\n obj.itemsUrl = tempData.ReturnObject;\r\n });\r\n }\r\n\r\n transformAmount(element: any) {\r\n this.formattedAmount = parseFloat(element.target.value).toLocaleString('en');\r\n // to show the formatted amount in the textbox.\r\n element.target.value = this.formattedAmount;\r\n }\r\n\r\n transformToDecimal(element: any) {\r\n element.target.value = parseFloat(element.target.value.toString().replace(/,/g, ''));\r\n }\r\n\r\n exportAsXLSX(): void {\r\n var request = new RequestCriteriaObj();\r\n request.pageNo = 1;\r\n request.rowPerPage = 9999;\r\n request.orderBy = null;\r\n request.criteria = [];\r\n request.queryString = this.configuration.querystring;\r\n\r\n this.http.post(this.apiUrl, request).subscribe(\r\n response => {\r\n this.ExcelData = response[\"Data\"];\r\n this.excelService.exportAsExcelFile(this.ExcelData, 'sample');\r\n },\r\n (error) => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n onChangeEvent(optValue, afFilter) {\r\n var jsonComp = this.configuration.component;\r\n\r\n for (var i = 0; i < afFilter.affectedFilter.length; i++) {\r\n for (var j = 0; j < jsonComp.length; j++) {\r\n if (jsonComp[j].name == afFilter.affectedFilter[i]) {\r\n var request = new RequestCriteriaObj();\r\n var arrayCrit = new Array();\r\n\r\n if (optValue != \"all\" && optValue != \"one\") {\r\n var critObj = new CriteriaObj();\r\n critObj.DataType = afFilter.datatype;\r\n if (afFilter.filterPropName != undefined || afFilter.filterPropName != \"\") {\r\n request[afFilter.filterPropName] = optValue;\r\n critObj.propName = afFilter.filterPropName;\r\n } else {\r\n critObj.propName = afFilter.name;\r\n request[afFilter.name] = optValue;\r\n }\r\n critObj.value = optValue;\r\n critObj.restriction = AdInsConstant.RestrictionEq;\r\n arrayCrit.push(critObj);\r\n }\r\n request.criteria = arrayCrit;\r\n if (jsonComp[j].path != undefined && jsonComp[j].path != \"\") {\r\n if (this.searchInput.ddlEnvironments != undefined && this.searchInput.ddlEnvironments.length != 0) {\r\n for (let y = 0; y < this.searchInput.ddlEnvironments.length; y++) {\r\n if (jsonComp[j].name == this.searchInput.ddlEnvironments[y].name) {\r\n jsonComp[j].fullpath = this.searchInput.ddlEnvironments[y].environment + jsonComp[j].path;\r\n break;\r\n }\r\n }\r\n } else {\r\n jsonComp[j].fullpath = jsonComp[j].url;\r\n }\r\n\r\n } else {\r\n jsonComp[j].fullpath = jsonComp[j].url;\r\n }\r\n this.resolveObject(jsonComp[j], jsonComp[j].fullpath, request);\r\n }\r\n }\r\n }\r\n }\r\n\r\n switchCase(condList) {\r\n var condition = false;\r\n\r\n for (var i = 0; i < condList.conditions.length; i++) {\r\n var idx = this.searchInput.switchValue.findIndex(x => x.property == condList.conditions[i].property);\r\n if (condList.conditions[i].restriction == \"EQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value == condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value == username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NEQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value != condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value != username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value > condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value > username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value >= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value >= username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value < condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value < username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value <= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value <= username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return condition;\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UCSearchComponent } from './ucsearch.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CurrencyMaskInputMode, NgxCurrencyModule } from 'ngx-currency';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nexport const customCurrencyMaskConfig = { \r\n align: \"right\",\r\n allowNegative: false,\r\n allowZero: true,\r\n decimal: \".\",\r\n precision: 2,\r\n prefix: \"\",\r\n suffix: \"\",\r\n thousands: \",\",\r\n nullable: false,\r\n inputMode: CurrencyMaskInputMode.NATURAL };\r\n\r\n@NgModule({\r\n declarations: [UCSearchComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxCurrencyModule.forRoot(customCurrencyMaskConfig),\r\n TranslateModule.forChild()\r\n ],\r\n exports: [UCSearchComponent]\r\n})\r\nexport class UCSearchModule { }\r\n"]}
1
+ {"version":3,"sources":["ng://@adins/ucsearch/lib/ucsearch.service.ts","ng://@adins/ucsearch/lib/model/AdInstConstant.ts","ng://@adins/ucsearch/lib/model/IntegrationObj.model.ts","ng://@adins/ucsearch/lib/model/InputSearchObj.Model.ts","ng://@adins/ucsearch/lib/model/CriteriaObj.model.ts","ng://@adins/ucsearch/lib/model/RequestCriteriaObj.model.ts","ng://@adins/ucsearch/lib/services/excel-service/excel-service.ts","ng://@adins/ucsearch/lib/model/KeyValueReport.model.ts","ng://@adins/ucsearch/lib/ucsearch.component.ts","ng://@adins/ucsearch/lib/ucsearch.module.ts"],"names":["UCSearchService","Injectable","args","providedIn","AdInsConstant","RestrictionBetween","RestrictionLike","RestrictionEq","RestrictionNeq","RestrictionGt","RestrictionGte","RestrictionLt","RestrictionLte","RestrictionIn","RestrictionNotIn","RestrictionOr","RestrictionOrNeq","RestrictionIsNull","RestrictionIsNotNull","RestrictionGTE","RestrictionLTE","showData","JoinTypeInner","JoinTypeLeft","IntegrationObj","this","baseUrl","apiPath","requestObj","Object","leftColumnToJoin","rightColumnToJoin","joinType","InputSearchObj","_url","enviromentUrl","title","apiQryPaging","arrCritObj","addCritInput","Array","ddlEnvironments","whereValue","switchValue","integrationObj","isJoinExAPI","CriteriaObj","low","high","DataType","RequestCriteriaObj","includeCount","includeData","isLoading","queryString","rowVersion","ExcelService","prototype","exportAsExcelFile","json","excelFileName","worksheet","XLSX.utils","json_to_sheet","console","log","workbook","Sheets","data","SheetNames","excelBuffer","XLSX.write","bookType","type","saveAsExcelFile","buffer","fileName","Blob","FileSaver.saveAs","Date","getTime","ExportTypeConstant","EXP_TYPE_PDF","EXP_TYPE_XLS","EXP_TYPE_XLSX","EXP_TYPE_DOC","EXP_TYPE_DOCX","UCSearchComponent","changeState","currentState","isHidden","ngOnInit","apiUrl","searchInput","arrCrit","js","_renderer2","createElement","text","appendChild","_document","body","initiateForm","_this","getJSON","subscribe","configuration","exportData","exportExcel","exportTypeList","undefined","length","ExportTypeList","ExportType","key","countForm","component","isDataLoaded","i","isFromURL","request","arrayCrit","criteriaObject","propName","criteriaPropName","value","criteriaPropValue","restriction","push","criteria","path","y","name","fullpath","environment","url","resolveObject","parseFloat","toLocaleString","includes","llsBD","localStorage","getItem","businessDate","operator","charAt","dateShow","tempMinus","split","numDay","parseInt","setDate","getDate","dateText","formatDate","http","get","postJSON","post","searchClick","order","orderby","pageNow","search","pageSize","reset","ev","resetForm","pageNo","rowPerPage","orderBy","addCrit","IsQueryIn","IsBreak","querystring","whereQuery","x","i_1","critObj","myForm","nativeElement","getAttribute","trim","label","toastr","warning","nodeName","ddl","options","selectedIndex","ddlList","listValue","replace","toString","toUpperCase","response","qryPaging","result","emit","GenerateReport","genRpt","ElRef","lessThanFour","obj","crit","tempData","itemsUrl","ReturnObject","transformAmount","element","formattedAmount","target","transformToDecimal","exportAsXLSX","ExcelData","excelService","error","onChangeEvent","optValue","afFilter","jsonComp","affectedFilter","j","datatype","filterPropName","switchCase","condList","condition","conditions","idx","findIndex","property","isUser","username","Component","selector","template","providers","animations","trigger","state","style","height","opacity","overflow","transition","animate","HttpClient","Renderer2","Inject","DOCUMENT","ToastrService","ViewChild","Input","Output","isReport","EventEmitter","amount","customCurrencyMaskConfig","align","allowNegative","allowZero","decimal","precision","prefix","suffix","thousands","nullable","inputMode","CurrencyMaskInputMode","NATURAL","UCSearchModule","NgModule","declarations","imports","CommonModule","FormsModule","UcShowErrorsModule","NgxCurrencyModule","forRoot","TranslateModule","forChild","exports"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UCSearchService {\r\n\r\n constructor() { }\r\n}\r\n","import { formatDate } from \"@angular/common\";\r\n\r\nexport class AdInsConstant {\r\n public static RestrictionBetween = \"Between\"\r\n public static RestrictionLike = \"Like\";\r\n public static RestrictionEq = \"Eq\";\r\n public static RestrictionNeq = \"NEQ\";\r\n public static RestrictionGt = \"GT\";\r\n public static RestrictionGte = \"GTE\";\r\n public static RestrictionLt = \"LT\";\r\n public static RestrictionLte = \"LTE\";\r\n public static RestrictionIn = \"IN\";\r\n public static RestrictionNotIn = \"NotIn\";\r\n public static RestrictionOr = \"Or\"; //pastikan ada 1 criteria sebelumnya\r\n public static RestrictionOrNeq = \"OrNeq\"; //pastikan ada 1 criteria sebelumnya\r\n public static RestrictionIsNull = \"isnull\";\r\n public static RestrictionIsNotNull = \"isnotnull\";\r\n public static RestrictionGTE = \"GTE\";\r\n public static RestrictionLTE = \"LTE\";\r\n public static showData = \"10,50,100\";\r\n public static JoinTypeInner = \"INNER\";\r\n public static JoinTypeLeft = \"LEFT\";\r\n}\r\n","import { AdInsConstant } from \"./AdInstConstant\";\r\nexport class IntegrationObj {\r\n baseUrl: string;\r\n apiPath: string;\r\n requestObj: Object;\r\n leftColumnToJoin: string;\r\n rightColumnToJoin: string;\r\n joinType: string;\r\n \r\n constructor() {\r\n this.baseUrl = \"\";\r\n this.apiPath = \"\";\r\n this.requestObj = new Object();\r\n this.leftColumnToJoin = \"\";\r\n this.rightColumnToJoin = \"\";\r\n this.joinType = AdInsConstant.JoinTypeInner;\r\n }\r\n}","import { CriteriaObj } from \"./CriteriaObj.model\";\r\nimport { IntegrationObj } from \"./IntegrationObj.model\";\r\n \r\nexport class InputSearchObj {\r\n _url: string;\r\n enviromentUrl: string;\r\n title: string;\r\n apiQryPaging: string;\r\n arrCritObj: any;\r\n addCritInput: Array<CriteriaObj>;\r\n ddlEnvironments: Array<EnviObj>;\r\n whereValue: Array<WhereValueObj>;\r\n switchValue: Array<SwitchValueObj>;\r\n integrationObj: IntegrationObj;\r\n isJoinExAPI: boolean;\r\n \r\n constructor() {\r\n this._url = \"\";\r\n this.enviromentUrl = \"\";\r\n this.title = \"\";\r\n this.apiQryPaging = \"\";\r\n this.arrCritObj = null;\r\n this.addCritInput = new Array<CriteriaObj>();\r\n this.ddlEnvironments = new Array<EnviObj>();\r\n this.whereValue = new Array<WhereValueObj>();\r\n this.switchValue = new Array<SwitchValueObj>();\r\n this.integrationObj = new IntegrationObj();\r\n this.isJoinExAPI = false;\r\n }\r\n}\r\n\r\nexport class EnviObj {\r\n name: string;\r\n environment: string;\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.environment = \"\";\r\n }\r\n}\r\n\r\nexport class WhereValueObj {\r\n property: string;\r\n value: any;\r\n\r\n constructor() {\r\n this.property = \"\";\r\n }\r\n}\r\n\r\nexport class SwitchValueObj {\r\n property: string;\r\n value: any;\r\n\r\n constructor() {\r\n this.property = \"\";\r\n }\r\n}","export class CriteriaObj { \r\n propName: string;\r\n restriction: string;\r\n value: string;\r\n low: number;\r\n high: number;\r\n DataType: string;\r\n listValue: Array<any>;\r\n\r\n constructor() {\r\n this.low = 0;\r\n this.high = 0;\r\n this.DataType = 'Text';\r\n }\r\n\r\n}","import { AdInsConstant } from \"./AdInstConstant\";\r\nimport { CriteriaObj } from \"./CriteriaObj.model\";\r\nimport { IntegrationObj } from \"./IntegrationObj.model\";\r\n \r\nexport class RequestCriteriaObj{\r\n includeCount:boolean;\r\n includeData:boolean;\r\n pageNo:number;\r\n rowPerPage:number;\r\n orderBy:any;\r\n criteria:CriteriaObj[];\r\n isLoading : boolean;\r\n queryString: any;\r\n rowVersion: any;\r\n integrationObj: IntegrationObj;\r\n joinType: string;\r\n\r\n constructor()\r\n {\r\n this.includeCount=true;\r\n this.includeData=true;\r\n this.isLoading = true;\r\n this.queryString = '';\r\n this.rowVersion = '';\r\n this.integrationObj = new IntegrationObj();\r\n this.joinType = AdInsConstant.JoinTypeInner;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n\r\n@Injectable()\r\nexport class ExcelService {\r\n\r\n constructor() { }\r\n\r\n public exportAsExcelFile(json: any[], excelFileName: string): void {\r\n \r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n console.log('worksheet',worksheet);\r\n const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n //const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n\r\n private saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION);\r\n }\r\n\r\n}","export class KeyValueReportObj {\r\n key: number;\r\n value: string;\r\n\r\n constructor() {\r\n this.key = 0;\r\n this.value = \"\";\r\n }\r\n}\r\n\r\nexport class ExportTypeConstant {\r\n public static EXP_TYPE_PDF = 0;\r\n public static EXP_TYPE_XLS = 1;\r\n public static EXP_TYPE_XLSX = 2;\r\n public static EXP_TYPE_DOC = 3;\r\n public static EXP_TYPE_DOCX = 4;\r\n}","import { Component, OnInit, Input, ViewChild, ElementRef, Inject, Renderer2, EventEmitter, Output } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { FormGroup, NgForm } from '@angular/forms';\r\nimport { formatDate } from '@angular/common';\r\nimport { InputSearchObj } from './model/InputSearchObj.Model';\r\nimport { CriteriaObj } from './model/CriteriaObj.model';\r\nimport { RequestCriteriaObj } from './model/RequestCriteriaObj.model';\r\nimport { AdInsConstant } from './model/AdInstConstant';\r\nimport { DOCUMENT } from '@angular/platform-browser';\r\nimport { ExcelService } from './services/excel-service/excel-service';\r\nimport { trigger, transition, style, animate, state } from '@angular/animations';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ExportTypeConstant, KeyValueReportObj } from './model/KeyValueReport.model';\r\n\r\n@Component({\r\n selector: 'lib-UCSearch',\r\n templateUrl: './ucsearch.component.html',\r\n styleUrls: ['./ucsearch.component.css'],\r\n providers: [ExcelService],\r\n animations: [\r\n trigger('changeDivSize', [\r\n state('initial', style({\r\n height: '*',\r\n opacity: '1',\r\n })),\r\n state('final', style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })),\r\n transition('initial=>final', animate('300ms')),\r\n transition('final=>initial', animate('300ms'))\r\n ]),\r\n ]\r\n})\r\nexport class UCSearchComponent implements OnInit {\r\n // trus nad, bisa ga kalo misalkan gw mau bikin\r\n // kalo login di cabang IsSelectOne: true\r\n // kalo login di HO, IsSelectOne: false\r\n\r\n @ViewChild('formIdSearch') myForm: ElementRef;\r\n @Input() searchInput: InputSearchObj = new InputSearchObj();\r\n @Input() pageSize: number = 10;\r\n @Input() isReport: boolean = false;\r\n @Output() result: EventEmitter<any> = new EventEmitter();\r\n @Output() genRpt: EventEmitter<{ ExportType: number, ElRef: ElementRef }> = new EventEmitter<{ ExportType: number, ElRef: ElementRef }>();\r\n ExportTypeList: Array<KeyValueReportObj> = [\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_PDF,\r\n value: \"PDF\"\r\n },\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_XLS,\r\n value: \"Excel 2003\"\r\n },\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_XLSX,\r\n value: \"Excel 2007\"\r\n },\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_DOC,\r\n value: \"Document\"\r\n },\r\n {\r\n key: ExportTypeConstant.EXP_TYPE_DOCX,\r\n value: \"Document XML\"\r\n },\r\n ];\r\n\r\n ExportType: number = 0;\r\n\r\n pageNow: any = 1;\r\n configuration: any;\r\n exportData: any;\r\n ExcelData: any;\r\n isDataLoaded: boolean = false;\r\n isHidden: boolean = false;\r\n\r\n currentState = 'initial';\r\n\r\n form: FormGroup;\r\n countForm = 0;\r\n formattedAmount = '';\r\n amount = 0;\r\n apiUrl: string;\r\n arrCrit: any;\r\n constructor(private http: HttpClient, private excelService: ExcelService, private _renderer2: Renderer2,\r\n @Inject(DOCUMENT) private _document, public toastr: ToastrService) {\r\n }\r\n\r\n changeState() {\r\n this.currentState = this.currentState === 'initial' ? 'final' : 'initial';\r\n this.isHidden = this.isHidden === false ? true : false;\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"ucsearch\");\r\n this.apiUrl = this.searchInput.enviromentUrl + this.searchInput.apiQryPaging;\r\n this.arrCrit = this.searchInput.arrCritObj;\r\n let js = this._renderer2.createElement('script');\r\n js.text = `\r\n $(document).ready(function(){\r\n $(\"#flip\").click(function(){\r\n $(\"#panel\").slideToggle(\"slow\");\r\n });\r\n });\r\n `;\r\n this._renderer2.appendChild(this._document.body, js);\r\n\r\n this.initiateForm();\r\n }\r\n\r\n initiateForm() {\r\n this.getJSON(this.searchInput._url).subscribe(data => {\r\n this.configuration = data;\r\n this.exportData = data.exportExcel;\r\n if (data.exportTypeList != undefined && data.exportTypeList.length != 0) {\r\n this.ExportTypeList = data.exportTypeList;\r\n this.ExportType = this.ExportTypeList[0].key;\r\n }\r\n\r\n this.countForm = data.component.length;\r\n this.isDataLoaded = true;\r\n\r\n if (this.searchInput.title != undefined && this.searchInput.title != \"\") {\r\n this.configuration.title = this.searchInput.title;\r\n }\r\n\r\n for (var i = 0; i < this.countForm; i++) {\r\n //ini kalau datanya di load dari URL\r\n if (data.component[i].isFromURL == true) {\r\n var request = new RequestCriteriaObj();\r\n var arrayCrit = new Array();\r\n var criteriaObject = new CriteriaObj();\r\n criteriaObject.DataType = \"text\";\r\n criteriaObject.propName = data.component[i].criteriaPropName;\r\n criteriaObject.value = data.component[i].criteriaPropValue;\r\n criteriaObject.restriction = \"eq\";\r\n arrayCrit.push(criteriaObject);\r\n request.criteria = arrayCrit;\r\n request[data.component[i].criteriaPropName] = data.component[i].criteriaPropValue;\r\n\r\n // Pengecekan penggunaan url atau path\r\n if (data.component[i].path != undefined && data.component[i].path != \"\") {\r\n if (this.searchInput.ddlEnvironments != undefined && this.searchInput.ddlEnvironments.length != 0) {\r\n for (let y = 0; y < this.searchInput.ddlEnvironments.length; y++) {\r\n if (data.component[i].name == this.searchInput.ddlEnvironments[y].name) {\r\n data.component[i].fullpath = this.searchInput.ddlEnvironments[y].environment + data.component[i].path;\r\n break;\r\n }\r\n }\r\n } else {\r\n data.component[i].fullpath = data.component[i].url;\r\n }\r\n\r\n } else {\r\n data.component[i].fullpath = data.component[i].url;\r\n }\r\n //lempar objectnya sekalian sama urlnya, nnti di bind di dalem karena masalah di asyncnya\r\n //biar tiap function ada state2nya sendiri\r\n this.resolveObject(data.component[i], data.component[i].fullpath, request);\r\n }\r\n\r\n if (data.component[i].type == \"numeric\") {\r\n data.component[i].value = parseFloat(data.component[i].value).toLocaleString('en');\r\n }\r\n\r\n //pengecekan tanggal\r\n if (data.component[i].type == \"datepicker\") {\r\n if (data.component[i].value.includes(\"BD\")) {\r\n let llsBD = localStorage.getItem(\"BusinessDateRaw\");\r\n let businessDate = new Date();\r\n if (llsBD != null) {\r\n businessDate = new Date(llsBD);\r\n }\r\n var operator = data.component[i].value.charAt(2);\r\n var dateShow = new Date();\r\n if (operator == \"-\") {\r\n var tempMinus = data.component[i].value.split(\"-\", 2);\r\n var numDay = parseInt(tempMinus[1]);\r\n dateShow.setDate(businessDate.getDate() - numDay);\r\n }\r\n else if (operator == \"+\") {\r\n var tempMinus = data.component[i].value.split(\"+\", 2);\r\n var numDay = parseInt(tempMinus[1]);\r\n dateShow.setDate(businessDate.getDate() + numDay);\r\n } else {\r\n dateShow = businessDate;\r\n }\r\n var dateText = formatDate(dateShow, 'yyyy-MM-dd', 'en-US')\r\n data.component[i].value = dateText;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n public getJSON(url: string): Observable<any> {\r\n return this.http.get(url);\r\n }\r\n\r\n public postJSON(url: string, criteria: any = null): Observable<any> {\r\n return this.http.post(url, criteria);\r\n }\r\n\r\n searchClick() {\r\n let order = null;\r\n if (this.configuration.orderby != null) {\r\n order = {\r\n key: this.configuration.orderby.key,\r\n value: this.configuration.orderby.value\r\n }\r\n }\r\n this.pageNow = 1;\r\n this.search(this.apiUrl, this.pageNow, this.pageSize, order, this.arrCrit);\r\n }\r\n\r\n reset(ev: NgForm) {\r\n ev.resetForm();\r\n this.ExportType = this.ExportTypeList[0].key;\r\n this.initiateForm();\r\n }\r\n\r\n search(apiUrl: string, pageNo: number, rowPerPage: number, orderBy: any, addCrit: CriteriaObj[] = new Array()) {\r\n let request = new RequestCriteriaObj();\r\n let arrCrit = new Array();\r\n let IsQueryIn = false;\r\n let IsBreak = false;\r\n\r\n // Inject whereQuery for where criteria\r\n if (this.searchInput.whereValue != undefined && this.searchInput.whereValue.length != 0) {\r\n this.configuration.querystring.whereQuery = new Array<any>();\r\n for (let x = 0; x < this.searchInput.whereValue.length; x++) {\r\n this.configuration.querystring.whereQuery.push(this.searchInput.whereValue[x].value);\r\n }\r\n }\r\n request.pageNo = pageNo;\r\n request.rowPerPage = rowPerPage;\r\n request.orderBy = orderBy;\r\n request.queryString = this.configuration.querystring;\r\n\r\n for (let i = 0; i < this.countForm; i++) {\r\n let critObj = new CriteriaObj();\r\n let component = this.myForm.nativeElement[i];\r\n\r\n if (component.getAttribute('data-required') != null && component.getAttribute('data-required') == \"true\") {\r\n let val = component.value.trim();\r\n if (val == \"\") {\r\n IsBreak = true;\r\n let label = component.getAttribute('label');\r\n this.toastr.warning(\"Please input \" + label);\r\n break;\r\n }\r\n }\r\n\r\n critObj.DataType = component.getAttribute('data-type');\r\n //Ini khusus kalau dari Drop Down\r\n if (component.getAttribute('query-in') != null && component.getAttribute('query-in') == \"true\") {\r\n IsQueryIn = true;\r\n }\r\n else {\r\n IsQueryIn = false;\r\n }\r\n if (component.value != \"\") {\r\n if (component.nodeName == 'SELECT') {\r\n let ddl = component.options;\r\n let text = ddl[ddl.selectedIndex].value.trim();\r\n if (text == \"one\") {\r\n IsBreak = true;\r\n let label = component.getAttribute('label');\r\n this.toastr.warning(\"Please select \" + label);\r\n break;\r\n }\r\n if (text != \"all\" && text != \"one\") {\r\n //Kalau Dari Dropdown udah pasti pake Eq\r\n critObj.restriction = AdInsConstant.RestrictionEq;\r\n critObj.propName = component.name;\r\n critObj.value = text;\r\n arrCrit.push(critObj);\r\n } else if (text == \"all\" && IsQueryIn == true && component.options.length != 0) {\r\n let ddlList = new Array();\r\n for (let x = 0; x < component.options.length; x++) {\r\n if (x != 0) {\r\n ddlList.push(component.options[x].value);\r\n }\r\n }\r\n if (ddlList.length != 0) {\r\n critObj.restriction = AdInsConstant.RestrictionIn;\r\n critObj.propName = component.name;\r\n critObj.listValue = ddlList;\r\n arrCrit.push(critObj);\r\n }\r\n }\r\n }\r\n else {\r\n //Kalau ada Percent maka yang dipake nnti adalah Restrictions Like\r\n if (component.name != \"\") {\r\n critObj.propName = component.name;\r\n } else {\r\n critObj.propName = component.getAttribute('data-name');\r\n }\r\n critObj.value = component.value.trim();\r\n if (component.value.includes(\"%\")) {\r\n critObj.restriction = AdInsConstant.RestrictionLike;\r\n }\r\n //kalau componentnya Date, restrictionsnya lgsg ambil dari property JSONnya\r\n else if (component.getAttribute('data-restriction') != \"\" && component.getAttribute('data-restriction') != null) {\r\n critObj.restriction = component.getAttribute('data-restriction');\r\n if (component.getAttribute('data-type') == 'numeric') {\r\n critObj.value = parseFloat(component.value.replace(/,/g, '')).toString();\r\n }\r\n if (critObj.restriction.toUpperCase() == \"LIKE\") {\r\n critObj.value = \"%\" + component.value.trim() + \"%\";\r\n critObj.restriction = AdInsConstant.RestrictionLike\r\n }\r\n }\r\n else {\r\n critObj.restriction = AdInsConstant.RestrictionEq\r\n }\r\n arrCrit.push(critObj);\r\n }\r\n }\r\n }\r\n\r\n if (IsBreak) {\r\n return;\r\n }\r\n\r\n if (addCrit != null && addCrit != undefined) {\r\n if (addCrit.length != 0) {\r\n for (var i = 0; i < addCrit.length; i++) {\r\n arrCrit.push(addCrit[i]);\r\n }\r\n } else if (this.searchInput.addCritInput != null || this.searchInput.addCritInput != undefined) {\r\n for (var i = 0; i < this.searchInput.addCritInput.length; i++) {\r\n arrCrit.push(this.searchInput.addCritInput[i]);\r\n }\r\n }\r\n }\r\n else if (this.searchInput.addCritInput != null || this.searchInput.addCritInput != undefined) {\r\n for (var i = 0; i < this.searchInput.addCritInput.length; i++) {\r\n arrCrit.push(this.searchInput.addCritInput[i]);\r\n }\r\n }\r\n\r\n request.criteria = arrCrit;\r\n\r\n if (!this.searchInput.isJoinExAPI) {\r\n request.integrationObj = null;\r\n } else {\r\n request.integrationObj = this.searchInput.integrationObj;\r\n }\r\n\r\n this.http.post(apiUrl, request).subscribe((response) => {\r\n let qryPaging = {\r\n response: response,\r\n pageNow: pageNo\r\n }\r\n console.log(qryPaging);\r\n this.result.emit(qryPaging);\r\n return response;\r\n });\r\n }\r\n\r\n GenerateReport() {\r\n this.genRpt.emit({ ExportType: this.ExportType, ElRef: this.myForm });\r\n }\r\n\r\n lessThanFour(): boolean {\r\n if (this.countForm > 3) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n resolveObject(obj: any, url: string, crit: RequestCriteriaObj = null) {\r\n const val = this.postJSON(url, crit);\r\n val.subscribe(tempData => {\r\n obj.itemsUrl = new Array();\r\n obj.itemsUrl = tempData.ReturnObject;\r\n });\r\n }\r\n\r\n transformAmount(element: any) {\r\n this.formattedAmount = parseFloat(element.target.value).toLocaleString('en');\r\n // to show the formatted amount in the textbox.\r\n element.target.value = this.formattedAmount;\r\n }\r\n\r\n transformToDecimal(element: any) {\r\n element.target.value = parseFloat(element.target.value.toString().replace(/,/g, ''));\r\n }\r\n\r\n exportAsXLSX(): void {\r\n var request = new RequestCriteriaObj();\r\n request.pageNo = 1;\r\n request.rowPerPage = 9999;\r\n request.orderBy = null;\r\n request.criteria = [];\r\n request.queryString = this.configuration.querystring;\r\n\r\n this.http.post(this.apiUrl, request).subscribe(\r\n response => {\r\n this.ExcelData = response[\"Data\"];\r\n this.excelService.exportAsExcelFile(this.ExcelData, 'sample');\r\n },\r\n (error) => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n onChangeEvent(optValue, afFilter) {\r\n var jsonComp = this.configuration.component;\r\n\r\n for (var i = 0; i < afFilter.affectedFilter.length; i++) {\r\n for (var j = 0; j < jsonComp.length; j++) {\r\n if (jsonComp[j].name == afFilter.affectedFilter[i]) {\r\n var request = new RequestCriteriaObj();\r\n var arrayCrit = new Array();\r\n\r\n if (optValue != \"all\" && optValue != \"one\") {\r\n var critObj = new CriteriaObj();\r\n critObj.DataType = afFilter.datatype;\r\n if (afFilter.filterPropName != undefined || afFilter.filterPropName != \"\") {\r\n request[afFilter.filterPropName] = optValue;\r\n critObj.propName = afFilter.filterPropName;\r\n } else {\r\n critObj.propName = afFilter.name;\r\n request[afFilter.name] = optValue;\r\n }\r\n critObj.value = optValue;\r\n critObj.restriction = AdInsConstant.RestrictionEq;\r\n arrayCrit.push(critObj);\r\n }\r\n request.criteria = arrayCrit;\r\n if (jsonComp[j].path != undefined && jsonComp[j].path != \"\") {\r\n if (this.searchInput.ddlEnvironments != undefined && this.searchInput.ddlEnvironments.length != 0) {\r\n for (let y = 0; y < this.searchInput.ddlEnvironments.length; y++) {\r\n if (jsonComp[j].name == this.searchInput.ddlEnvironments[y].name) {\r\n jsonComp[j].fullpath = this.searchInput.ddlEnvironments[y].environment + jsonComp[j].path;\r\n break;\r\n }\r\n }\r\n } else {\r\n jsonComp[j].fullpath = jsonComp[j].url;\r\n }\r\n\r\n } else {\r\n jsonComp[j].fullpath = jsonComp[j].url;\r\n }\r\n this.resolveObject(jsonComp[j], jsonComp[j].fullpath, request);\r\n }\r\n }\r\n }\r\n }\r\n\r\n switchCase(condList) {\r\n var condition = false;\r\n\r\n for (var i = 0; i < condList.conditions.length; i++) {\r\n var idx = this.searchInput.switchValue.findIndex(x => x.property == condList.conditions[i].property);\r\n if (condList.conditions[i].restriction == \"EQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value == condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value == username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NEQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value != condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value != username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value > condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value > username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value >= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value >= username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value < condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value < username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (this.searchInput.switchValue[idx].value <= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n var username = localStorage.getItem(\"Username\");\r\n if (this.searchInput.switchValue[idx].value <= username) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return condition;\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UCSearchComponent } from './ucsearch.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CurrencyMaskInputMode, NgxCurrencyModule } from 'ngx-currency';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { UcShowErrorsModule } from '@adins/uc-show-errors';\r\n\r\nexport const customCurrencyMaskConfig = { \r\n align: \"right\",\r\n allowNegative: false,\r\n allowZero: true,\r\n decimal: \".\",\r\n precision: 2,\r\n prefix: \"\",\r\n suffix: \"\",\r\n thousands: \",\",\r\n nullable: false,\r\n inputMode: CurrencyMaskInputMode.NATURAL };\r\n\r\n@NgModule({\r\n declarations: [UCSearchComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n UcShowErrorsModule,\r\n NgxCurrencyModule.forRoot(customCurrencyMaskConfig),\r\n TranslateModule.forChild()\r\n ],\r\n exports: [UCSearchComponent]\r\n})\r\nexport class UCSearchModule { }\r\n"]}