!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@abp/ng.core"),require("@angular/core"),require("@abp/ng.theme.shared"),require("@abp/ng.theme.shared/extensions"),require("@ngxs/store"),require("rxjs/operators"),require("@volo/abp.ng.saas"),require("@angular/forms"),require("@volo/abp.commercial.ng.ui"),require("@ng-bootstrap/ng-bootstrap"),require("@angular/router"),require("@ngx-validate/core"),require("ngx-pipes"),require("@angular/common/http"),require("rxjs"),require("angular-oauth2-oidc")):"function"==typeof define&&define.amd?define("@hedou/abp.ng.terminal-management",["exports","@abp/ng.core","@angular/core","@abp/ng.theme.shared","@abp/ng.theme.shared/extensions","@ngxs/store","rxjs/operators","@volo/abp.ng.saas","@angular/forms","@volo/abp.commercial.ng.ui","@ng-bootstrap/ng-bootstrap","@angular/router","@ngx-validate/core","ngx-pipes","@angular/common/http","rxjs","angular-oauth2-oidc"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).hedou=e.hedou||{},e.hedou.abp=e.hedou.abp||{},e.hedou.abp.ng=e.hedou.abp.ng||{},e.hedou.abp.ng["terminal-management"]={}),e.i1,e.ng.core,e.ng_theme_shared,e.extensions,e.store,e.rxjs.operators,e.abp_ng_saas,e.ng.forms,e.abp_commercial_ng_ui,e.ngBootstrap,e.ng.router,e.core,e.ngxPipes,e.ng.common.http,e.rxjs,e.i1$1)}(this,(function(e,t,n,a,r,o,i,l,s,p,c,d,m,u,g,b,h){"use strict";
/*! *****************************************************************************
    Copyright (c) Microsoft Corporation.

    Permission to use, copy, modify, and/or distribute this software for any
    purpose with or without fee is hereby granted.

    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    PERFORMANCE OF THIS SOFTWARE.
    ***************************************************************************** */function f(e,t,n,a){var r,o=arguments.length,i=o<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,a);else for(var l=e.length-1;l>=0;l--)(r=e[l])&&(i=(o<3?r(i):o>3?r(t,n,i):r(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}Object.create;Object.create;var v=function(e){this.payload=e};v.type="[TerminalManagement] register";var y=function(e){this.payload=e};y.type="[TerminalManagement] update terminal";var M=function(e,t){this.machineCode=e,this.tenantId=t};M.type="[TerminalManagement] enable terminal";var T=function(e,t){this.machineCode=e,this.tenantId=t};T.type="[TerminalManagement] disable terminal";var S=function(e){this.id=e};S.type="[TerminalManagement] delete terminal";var w=function(e){this.id=e};w.type="[TerminalManagement] get terminal";var A=function(e){this.payload=e};A.type="[TerminalManagement] getlist terminal";var L=function(e){this.payload=e};L.type="[TerminalManagement] bind app-modules";var I=function(e){this.payload=e};I.type="[TerminalManagement] unbind app-modules";var x=function(e){this.payload=e};x.type="[TerminalManagement] bind users";var k=function(e){this.payload=e};k.type="[TerminalManagement] unbind users";var C=function(e){this.terminalId=e};C.type="[TerminalManagement] get app-terminal-settings";var N=function(){function e(e){this.restService=e,this.apiName="TerminalManagement"}return e.prototype.register=function(e){var t={method:"post",url:"/api/TerminalManagement/Terminals/register",body:e};return this.restService.request(t,{apiName:this.apiName})},e.prototype.deleteTerminal=function(e){var t={method:"DELETE",url:"/api/TerminalManagement/Terminals/"+e};return this.restService.request(t,{apiName:this.apiName})},e.prototype.getTerminal=function(e){var t={method:"GET",url:"/api/TerminalManagement/Terminals/"+e};return this.restService.request(t,{apiName:this.apiName})},e.prototype.getList=function(e){void 0===e&&(e={});var t={method:"GET",url:"/api/TerminalManagement/Terminals/list",params:e};return this.restService.request(t,{apiName:this.apiName})},e.prototype.enable=function(e,t){var n={method:"PUT",url:"/api/TerminalManagement/Terminals/enable/"+e+"/"+t};return this.restService.request(n,{apiName:this.apiName})},e.prototype.disable=function(e,t){var n={method:"PUT",url:"/api/TerminalManagement/Terminals/disable/"+e+"/"+t};return this.restService.request(n,{apiName:this.apiName})},e.prototype.update=function(e){var t="/api/TerminalManagement/Terminals/"+e.id;delete e.id;var n={method:"PUT",url:t,body:e};return this.restService.request(n,{apiName:this.apiName})},e}();N.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new N(n.ɵɵinject(t.RestService))},token:N,providedIn:"root"}),N.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],N.ctorParameters=function(){return[{type:t.RestService}]};var z=function(){function e(e){this.rest=e,this.apiName="TerminalManagement"}return e.prototype.bindModules=function(e){var t={method:"PUT",url:"/api/TerminalManagement/AppTerminalSettings/bind-modules",body:e};return this.rest.request(t,{apiName:this.apiName})},e.prototype.unBindModules=function(e){var t={method:"PUT",url:"/api/TerminalManagement/AppTerminalSettings/unbind-modules",body:e};return this.rest.request(t,{apiName:this.apiName})},e.prototype.bindUsers=function(e){var t={method:"PUT",url:"/api/TerminalManagement/AppTerminalSettings/bind-users",body:e};return this.rest.request(t,{apiName:this.apiName})},e.prototype.unBindUsers=function(e){var t={method:"PUT",url:"/api/TerminalManagement/AppTerminalSettings/unbind-users",body:e};return this.rest.request(t,{apiName:this.apiName})},e.prototype.getTerminalSetting=function(e){var t={method:"GET",url:"/api/TerminalManagement/AppTerminalSettings/"+e};return this.rest.request(t,{apiName:this.apiName})},e}();z.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new z(n.ɵɵinject(t.RestService))},token:z,providedIn:"root"}),z.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],z.ctorParameters=function(){return[{type:t.RestService}]},e.TerminalManagementState=function(){function e(e,t){this.terminalManagemantService=e,this.appTerminalSettingService=t}return e.terminals=function(e){return e.terminals.items},e.terminalTotalCount=function(e){return e.terminals.totalCount},e.appTerminalSettings=function(e){return e.currentTerminalSettings},e.prototype.getList=function(e,t){var n=e.patchState,a=t.payload;return this.terminalManagemantService.getList(a).pipe(i.tap((function(e){return n({terminals:e})})))},e.prototype.select=function(e,t){var n=e.patchState,a=t.id;return this.terminalManagemantService.getTerminal(a).pipe(i.tap((function(e){return n({selectedTerminal:e})})))},e.prototype.enable=function(e,t){var n=t.machineCode,a=t.tenantId;return this.terminalManagemantService.enable(n,a)},e.prototype.disable=function(e,t){var n=t.machineCode,a=t.tenantId;return this.terminalManagemantService.disable(n,a)},e.prototype.deleteTerminal=function(e,t){var n=t.id;return this.terminalManagemantService.deleteTerminal(n)},e.prototype.update=function(e,t){var n=t.payload;return this.terminalManagemantService.update(n)},e.prototype.bindAppModules=function(e,t){var n=t.payload;return this.appTerminalSettingService.bindModules(n)},e.prototype.bindUsers=function(e,t){var n=t.payload;return this.appTerminalSettingService.bindUsers(n)},e.prototype.unbindAppModules=function(e,t){var n=t.payload;return this.appTerminalSettingService.unBindModules(n)},e.prototype.unBindUsers=function(e,t){var n=t.payload;return this.appTerminalSettingService.unBindUsers(n)},e.prototype.getAppTerminalSettings=function(e,t){var n=e.patchState,a=t.terminalId;return this.appTerminalSettingService.getTerminalSetting(a).pipe(i.tap((function(e){return n({currentTerminalSettings:e})})))},e}(),e.TerminalManagementState.decorators=[{type:n.Injectable}],e.TerminalManagementState.ctorParameters=function(){return[{type:N},{type:z}]},f([o.Action(A)],e.TerminalManagementState.prototype,"getList",null),f([o.Action(w)],e.TerminalManagementState.prototype,"select",null),f([o.Action(M)],e.TerminalManagementState.prototype,"enable",null),f([o.Action(T)],e.TerminalManagementState.prototype,"disable",null),f([o.Action(S)],e.TerminalManagementState.prototype,"deleteTerminal",null),f([o.Action(y)],e.TerminalManagementState.prototype,"update",null),f([o.Action(L)],e.TerminalManagementState.prototype,"bindAppModules",null),f([o.Action(x)],e.TerminalManagementState.prototype,"bindUsers",null),f([o.Action(I)],e.TerminalManagementState.prototype,"unbindAppModules",null),f([o.Action(k)],e.TerminalManagementState.prototype,"unBindUsers",null),f([o.Action(C)],e.TerminalManagementState.prototype,"getAppTerminalSettings",null),f([o.Selector()],e.TerminalManagementState,"terminals",null),f([o.Selector()],e.TerminalManagementState,"terminalTotalCount",null),f([o.Selector()],e.TerminalManagementState,"appTerminalSettings",null),e.TerminalManagementState=f([o.State({name:"TerminalManagement",defaults:{}})],e.TerminalManagementState);var P="TerminalManagement.Terminals",E=function(){function e(e,t,n,a,r,o,i){this.list=e,this.toasterService=t,this.saasService=n,this.store=a,this.fb=r,this.confirmationService=o,this.subscription=i,this.pagedRequest={skipCount:0,maxResultCount:25},this.isModalVisible=!1,this.modalBusy=!1,this.selected={}}return e.prototype.ngOnInit=function(){var e=this;this.saasService.getList({filter:"",getEditionNames:!0,skipCount:0,maxResultCount:999}).subscribe((function(t){e.tenants=t.items,e.selectedTenantId=e.tenants[0].id,e.selectedTenant=e.tenants[0],e.hookToQuery()}))},e.prototype.tenantChanged=function(){var e=this;setTimeout((function(){e.list.get(),e.selectedTenant=e.tenants.find((function(t){return t.id==e.selectedTenantId}))}),0)},e.prototype.buildForm=function(){this.form=this.fb.group({id:[this.selected.id],display:[this.selected.display,[s.Validators.required]],description:[this.selected.description,[]]})},e.prototype.delete=function(e){var t=this;this.confirmationService.warn("TerminalManagement::TerminalDeletionConfirmationMessage","AbpIdentity::AreYouSure").subscribe((function(n){n===a.Confirmation.Status.confirm&&t.store.dispatch(new S(e)).subscribe((function(){t.list.get()}))}))},e.prototype.hookToQuery=function(){var e=this;this.list.hookToQuery((function(t){var n=Object.assign({tenantId:e.selectedTenantId},t);return e.store.dispatch(new A(n))})).subscribe((function(){}))},e.prototype.setEnabled=function(e,t,n){var a=this;this.store.dispatch(n?new M(e,t):new T(e,t)).subscribe((function(){a.list.get()}))},e.prototype.edit=function(e){this.selected=e,this.buildForm(),this.isModalVisible=!0},e.prototype.save=function(){var e=this,t=this.form.value;this.modalBusy=!0,this.store.dispatch(new y(t)).pipe(i.finalize((function(){e.modalBusy=!1,e.isModalVisible=!1}))).subscribe((function(){e.toasterService.success("修改成功！"),e.list.get()}))},e}();E.decorators=[{type:n.Component,args:[{selector:"lib-terminal-management",template:'<ng-container>\r\n    <div class="row entry-row">\r\n        <div class="col-auto">\r\n            <h1 class="content-header-title">{{ \'TerminalManagement::TerminalManagement\' | abpLocalization }}</h1>\r\n        </div>\r\n        <div class="col-lg-auto pl-lg-0">\r\n            <abp-breadcrumb></abp-breadcrumb>\r\n        </div>\r\n        <div class="col">\r\n\r\n        </div>\r\n    </div>\r\n\r\n    <div id="terminal-management">\r\n        <div class="card">\r\n            <div class="card-body">\r\n                <div class="data-tables-filter">\r\n                    <div class="input-group">\r\n                        <select class="form-control" (change)="tenantChanged()" [(ngModel)]="selectedTenantId">\r\n                            <option *ngFor="let tenant of tenants" [value]="tenant.id">\r\n                                {{tenant.name}}\r\n                            </option>\r\n                        </select>\r\n                        <div class="input-group-append">\r\n                            <button class="btn btn-sm btn-primary" (click)="list.get()">\r\n                                <i class="fas fa-search"></i>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <ngx-datatable [rows]="(terminals$ | async)" [count]="(terminalTotalCount$ | async)" [list]="list"\r\n                    default>\r\n                    <ngx-datatable-column [name]="\'AbpIdentity::Actions\' | abpLocalization" [maxWidth]="120"\r\n                        [sortable]="false">\r\n                        <ng-template let-row="row" ngx-datatable-cell-template>\r\n                            <div ngbDropdown container="body" class="d-inline-block">\r\n                                <button class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown"\r\n                                    aria-haspopup="true" ngbDropdownToggle>\r\n                                    <i class="fa fa-cog mr-1"></i>{{ \'AbpIdentity::Actions\' | abpLocalization }}\r\n                                </button>\r\n                                <div ngbDropdownMenu>\r\n                                    <button *abpPermission="\'TerminalManagement.UpdateTerminal\'" ngbDropdownItem\r\n                                        (click)="edit(row)">\r\n                                        {{ \'AbpIdentity::Edit\' | abpLocalization }}\r\n                                    </button>\r\n                                    <button *abpPermission="\'TerminalManagement.LoginUserManagement\'" ngbDropdownItem\r\n                                        (click)="userModal.show(row.id)">\r\n                                        {{ \'TerminalManagement::LoginUserManagement\' | abpLocalization }}\r\n                                    </button>\r\n                                    <button *abpPermission="\'TerminalManagement.AppModulePermissionManagement\'"\r\n                                        ngbDropdownItem (click)="appModuleModal.show(row.id)">\r\n                                        {{ \'TerminalManagement::AppModulePermissionManagement\' | abpLocalization }}\r\n                                    </button>\r\n                                    <button *abpPermission="\'TerminalManagement.DeleteTerminal\'" ngbDropdownItem\r\n                                        (click)="delete(row.id)">\r\n                                        {{ \'AbpIdentity::Delete\' | abpLocalization }}\r\n                                    </button>\r\n                                    <ng-container *ngIf="!row.enabled">\r\n                                        <button *abpPermission="\'TerminalManagement.UpdateTerminal\'" ngbDropdownItem\r\n                                            (click)="setEnabled(row.machineCode,row.tenantId,true)">\r\n                                            {{ \'TerminalManagement::Enable\' | abpLocalization }}\r\n                                        </button>\r\n                                    </ng-container>\r\n                                    <ng-container *ngIf="row.enabled">\r\n                                        <button *abpPermission="\'TerminalManagement.UpdateTerminal\'" ngbDropdownItem\r\n                                            (click)="setEnabled(row.machineCode,row.tenantId,false)">\r\n                                            {{ \'TerminalManagement::Disable\' | abpLocalization }}\r\n                                        </button>\r\n                                    </ng-container>\r\n\r\n                                </div>\r\n                            </div>\r\n                        </ng-template>\r\n                    </ngx-datatable-column>\r\n                    <ngx-datatable-column [width]="100"\r\n                        [name]="\'TerminalManagement::Terminal:Display\' | abpLocalization" prop="display"\r\n                        [sortable]="true">\r\n                    </ngx-datatable-column>\r\n                    <ngx-datatable-column [width]="100"\r\n                        [name]="\'TerminalManagement::Terminal:Description\' | abpLocalization" prop="description"\r\n                        [sortable]="false">\r\n                    </ngx-datatable-column>\r\n                    <ngx-datatable-column [width]="100"\r\n                        [name]="\'TerminalManagement::Terminal:MachineCode\' | abpLocalization" prop="machineCode"\r\n                        [sortable]="true">\r\n                        <ng-template let-row="row" ngx-datatable-cell-template>\r\n                            <span [title]="row.machineCode">{{row.machineCode  | shorten: 10: \'...\'}}</span>\r\n                        </ng-template>\r\n                    </ngx-datatable-column>\r\n                    <ngx-datatable-column [width]="80" [name]="\'TerminalManagement::Terminal:Enabled\' | abpLocalization"\r\n                        prop="enabled" [sortable]="true">\r\n                        <ng-template let-row="row" ngx-datatable-cell-template>\r\n                            <span *ngIf="row.enabled" class="badge badge-success">是</span>\r\n                            <span *ngIf="!row.enabled" class="badge badge-danger">否</span>\r\n                        </ng-template>\r\n                    </ngx-datatable-column>\r\n                    <ngx-datatable-column [width]="100"\r\n                        [name]="\'TerminalManagement::Terminal:TerminalType\' | abpLocalization" prop="terminalType"\r\n                        [sortable]="true">\r\n                        <ng-template let-row="row" ngx-datatable-cell-template>\r\n                            <span *ngIf="row.terminalType===0">手机APP</span>\r\n                            <span *ngIf="row.terminalType===1">服务/客户端</span>\r\n                        </ng-template>\r\n                    </ngx-datatable-column>\r\n\r\n                </ngx-datatable>\r\n\r\n            </div>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n\r\n<abp-modal [(visible)]="isModalVisible" [busy]="modalBusy" (disappear)="form = null">\r\n    <ng-template #abpHeader>\r\n        <h3>{{ \'AbpIdentity::Edit\' | abpLocalization }}</h3>\r\n    </ng-template>\r\n    <ng-template #abpBody>\r\n        <ng-template #loaderRef>\r\n            <div class="text-center"><i class="fa fa-pulse fa-spinner"></i></div>\r\n        </ng-template>\r\n        <form *ngIf="form; else loaderRef" [formGroup]="form" (ngSubmit)="save()">\r\n            <div class="form-group">\r\n                <label for="display">{{ \'TerminalManagement::Terminal:Display\' | abpLocalization }}</label>\r\n                <input type="text" id="display" class="form-control" formControlName="display" />\r\n            </div>\r\n            <div class="form-group">\r\n                <label for="description">{{ \'TerminalManagement::Terminal:Description\' | abpLocalization }}</label>\r\n                <input type="text" id="description" class="form-control" formControlName="description" />\r\n            </div>\r\n        </form>\r\n    </ng-template>\r\n    <ng-template #abpFooter>\r\n        <button type="button" class="btn btn-secondary" #abpClose>\r\n            {{ \'AbpIdentity::Cancel\' | abpLocalization }}\r\n        </button>\r\n        <abp-button iconClass="fa fa-check" (click)="save()" [disabled]="form?.invalid">{{\r\n          \'AbpIdentity::Save\' | abpLocalization\r\n        }}</abp-button>\r\n    </ng-template>\r\n</abp-modal>\r\n<terminal-users-modal #userModal [tenant]="selectedTenant"></terminal-users-modal>\r\n<terminal-app-modules-modal #appModuleModal [tenant]="selectedTenant"></terminal-app-modules-modal>',providers:[t.ListService,{provide:r.EXTENSIONS_IDENTIFIER,useValue:P}],styles:[""]}]}],E.ctorParameters=function(){return[{type:t.ListService},{type:a.ToasterService},{type:l.TenantService},{type:o.Store},{type:s.FormBuilder},{type:a.ConfirmationService},{type:t.SubscriptionService}]},f([o.Select(e.TerminalManagementState.terminals)],E.prototype,"terminals$",void 0),f([o.Select(e.TerminalManagementState.terminalTotalCount)],E.prototype,"terminalTotalCount$",void 0);var D=function(){function e(e){this.rest=e,this.apiName="TerminalManagement"}return e.prototype.usersByTenant=function(e){var t={method:"GET",url:"/api/TerminalManagement/IdentityUser/Extensions/users-by-tenant",params:e};return this.rest.request(t,{apiName:this.apiName})},e}();D.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new D(n.ɵɵinject(t.RestService))},token:D,providedIn:"root"}),D.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],D.ctorParameters=function(){return[{type:t.RestService}]};var U=function(){function e(e,t,n){this.list=e,this.store=t,this.identityService=n,this.checkUsers={},this.isModalVisible=!1,this.isModalBusy=!1,this.allUsers={items:[],totalCount:0}}return e.prototype.ngOnChanges=function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=e[t];"tenant"===t&&n&&this.hookToQuery()}},e.prototype.ngOnInit=function(){var e=this;this.appTerminalSettings$.subscribe((function(t){t&&(e.checkUsers={},t.allowUsers.map((function(e){return e.id})).forEach((function(t){e.checkUsers[t]=!0})))}))},e.prototype.addUsers=function(){var e=this;this.isModalBusy=!0;var t=[];for(var n in this.checkUsers)Object.prototype.hasOwnProperty.call(this.checkUsers,n)&&t.push(n);this.store.dispatch(new x({terminalId:this.terminalId,users:t})).pipe(i.finalize((function(){e.isModalBusy=!1,e.isModalVisible=!1}))).subscribe()},e.prototype.hookToQuery=function(){var e=this;this.list.hookToQuery((function(t){var n=Object.assign({},t);return n.tenantId=e.tenant.id,e.identityService.usersByTenant(n)})).subscribe((function(t){e.allUsers=t}))},e.prototype.show=function(e){this.isModalVisible=!0,this.terminalId=e,this.getTerminallSetting()},e.prototype.getTerminallSetting=function(){this.store.dispatch(new C(this.terminalId)).subscribe()},e}();U.decorators=[{type:n.Component,args:[{selector:"terminal-users-modal",template:'\n    <abp-modal [(visible)]="isModalVisible" [busy]="isModalBusy">\n    <ng-template #abpHeader>\n        <h3>{{ \'TerminalManagement::LoginUserManagement\' | abpLocalization }}</h3>\n    </ng-template>\n\n    <ng-template #abpBody>\n\t\t<div id="data-tables-table-filter" class="data-tables-filter">\n\t\t\t<div class="input-group">\n\t\t\t\t<input\n\t\t\t\ttype="search"\n\t\t\t\tclass="form-control"\n\t\t\t\t[placeholder]="\'AbpUi::PagerSearch\' | abpLocalization"\n\t\t\t\t[(ngModel)]="list.filter"\n\t\t\t\t/>\n\t\t\t\t<div class="input-group-append">\n\t\t\t\t\t<button class="btn btn-sm btn-primary" (click)="list.get()">\n\t\t\t\t\t\t<i class="fas fa-search"></i>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t \n\t\t \n\n\t\t<ngx-datatable [rows]="allUsers.items" [count]="allUsers.totalCount" [list]="list" default>\n\t\t\t\n\t\t<ngx-datatable-column [name]="\'AbpIdentity::Actions\' | abpLocalization" [maxWidth]="120"\n\t\t\t\t\t\t[sortable]="false">\n\t\t\t<ng-template let-row="row" ngx-datatable-cell-template>\n\t\t\t\t<input\n\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t[(ngModel)]="checkUsers[row.id]"\n\t\t\t\t/>\n\t\t\t</ng-template>\n\t\t</ngx-datatable-column>\n\t\t<ngx-datatable-column [width]="100" [name]="\'AbpIdentity::UserName\' | abpLocalization" prop="userName" [sortable]="false">\n\t\t</ngx-datatable-column>\n\t\t<ngx-datatable-column [width]="100" [name]="\'AbpIdentity::EmailAddress\' | abpLocalization" prop="email" [sortable]="false">\n\t\t</ngx-datatable-column>\n\t\t<ngx-datatable-column [width]="100" [name]="\'AbpIdentity::PhoneNumber\' | abpLocalization" prop="phoneNumber" [sortable]="false">\n\t\t</ngx-datatable-column>\n\t\t</ngx-datatable>\n\n    </ng-template>\n\n    <ng-template #abpFooter>\n        <button type="button" class="btn btn-secondary" #abpClose>\n        {{ \'AbpIdentity::Cancel\' | abpLocalization }}\n        </button>\n        <abp-button iconClass="fa fa-check" (click)="addUsers()">{{\n        \'AbpIdentity::Save\' | abpLocalization\n        }}</abp-button>\n    </ng-template>\n</abp-modal>\n\t',providers:[t.ListService,{provide:r.EXTENSIONS_IDENTIFIER,useValue:"TerminalManagement.TerminalUsers"}]}]}],U.ctorParameters=function(){return[{type:t.ListService},{type:o.Store},{type:D}]},U.propDecorators={checkUsers:[{type:n.Input}],tenant:[{type:n.Input}]},f([o.Select(e.TerminalManagementState.appTerminalSettings)],U.prototype,"appTerminalSettings$",void 0);var O=function(e){this.payload=e};O.type="[AppModuleManagement] create app-module";var j=function(e){this.payload=e};j.type="[AppModuleManagement] update app-module";var q=function(e){this.id=e};q.type="[AppModuleManagement] delete app-module";var B=function(e){this.id=e};B.type="[AppModuleManagement] get app-module";var R=function(e){this.payload=e};R.type="[AppModuleManagement] getlist app-module";var V=function(){function e(e){this.rest=e,this.apiName="TerminalManagement"}return e.prototype.create=function(e){var t={method:"POST",url:"/api/TerminalManagement/AppModules",body:e};return this.rest.request(t,{apiName:this.apiName})},e.prototype.update=function(e){var t="/api/TerminalManagement/AppModules/"+e.id;delete e.id;var n={method:"PUT",url:t,body:e};return this.rest.request(n,{apiName:this.apiName})},e.prototype.delete=function(e){var t={method:"DELETE",url:"/api/TerminalManagement/AppModules/"+e};return this.rest.request(t,{apiName:this.apiName})},e.prototype.get=function(e){var t={method:"GET",url:"/api/TerminalManagement/AppModules/"+e};return this.rest.request(t,{apiName:this.apiName})},e.prototype.list=function(e){var t={method:"GET",url:"/api/TerminalManagement/AppModules/list",params:e};return this.rest.request(t,{apiName:this.apiName})},e}();V.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new V(n.ɵɵinject(t.RestService))},token:V,providedIn:"root"}),V.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],V.ctorParameters=function(){return[{type:t.RestService}]},e.AppModuleManagementState=function(){function e(e){this.appModuleManagementService=e}return e.appModules=function(e){return e.modules.items},e.appModuleTotalcount=function(e){return e.modules.totalCount},e.prototype.createAppModule=function(e,t){var n=e.patchState,a=e.getState,r=t.payload,o=a();return this.appModuleManagementService.create(r).pipe(i.tap((function(e){o.modules.items.push(e),o.modules.totalCount++,n({modules:Object.assign({},o.modules)})})))},e.prototype.updateAppModule=function(e,t){var n=e.patchState,a=e.getState,r=t.payload,o=a();return this.appModuleManagementService.update(r).pipe(i.tap((function(e){o.modules.items.find((function(t){return t.id==e.id}));n({modules:Object.assign({},o.modules)})})))},e.prototype.deleteAppModule=function(e,t){var n=t.id;return this.appModuleManagementService.delete(n)},e.prototype.select=function(e,t){var n=e.patchState,a=t.id;return this.appModuleManagementService.get(a).pipe(i.tap((function(e){return n({selected:e})})))},e.prototype.getList=function(e,t){var n=e.patchState,a=t.payload;return this.appModuleManagementService.list(a).pipe(i.tap((function(e){return n({modules:e})})))},e}(),e.AppModuleManagementState.decorators=[{type:n.Injectable}],e.AppModuleManagementState.ctorParameters=function(){return[{type:V}]},f([o.Action(O)],e.AppModuleManagementState.prototype,"createAppModule",null),f([o.Action(j)],e.AppModuleManagementState.prototype,"updateAppModule",null),f([o.Action(q)],e.AppModuleManagementState.prototype,"deleteAppModule",null),f([o.Action(B)],e.AppModuleManagementState.prototype,"select",null),f([o.Action(R)],e.AppModuleManagementState.prototype,"getList",null),f([o.Selector()],e.AppModuleManagementState,"appModules",null),f([o.Selector()],e.AppModuleManagementState,"appModuleTotalcount",null),e.AppModuleManagementState=f([o.State({name:"AppModuleManagement",defaults:{modules:{items:[],totalCount:0}}})],e.AppModuleManagementState);var _=function(){function e(e,t){this.list=e,this.store=t,this.checkModules={},this.isModalVisible=!1,this.isModalBusy=!1}return e.prototype.ngOnInit=function(){var e=this;this.appTerminalSettings$.subscribe((function(t){t&&(e.checkModules={},t.allowModules.filter((function(e){return!!e})).map((function(e){return e.id})).forEach((function(t){e.checkModules[t]=!0})))}))},e.prototype.ngOnChanges=function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=e[t];"tenant"===t&&n&&this.hookToQuery()}},e.prototype.addModules=function(){var e=this,t=[];for(var n in this.checkModules)Object.prototype.hasOwnProperty.call(this.checkModules,n)&&t.push(n);this.store.dispatch(new L({terminalId:this.terminalId,modules:t})).pipe(i.finalize((function(){e.isModalBusy=!1,e.isModalVisible=!1}))).subscribe()},e.prototype.hookToQuery=function(){var e=this;this.list.hookToQuery((function(t){return e.store.dispatch(new R(t))})).subscribe((function(){}))},e.prototype.show=function(e){this.isModalVisible=!0,this.terminalId=e,this.getTerminallSetting()},e.prototype.getTerminallSetting=function(){this.store.dispatch(new C(this.terminalId)).subscribe()},e}();_.decorators=[{type:n.Component,args:[{selector:"terminal-app-modules-modal",template:'\n    <abp-modal [(visible)]="isModalVisible" [busy]="isModalBusy">\n        <ng-template #abpHeader>\n            <h3>{{ \'TerminalManagement::AppModuleManagement\' | abpLocalization }}</h3>\n        </ng-template>\n        <ng-template #abpBody>\n            <div id="data-tables-table-filter" class="data-tables-filter">\n                <div class="input-group">\n                    <input\n                    type="search"\n                    class="form-control"\n                    [placeholder]="\'AbpUi::PagerSearch\' | abpLocalization"\n                    [(ngModel)]="list.filter"\n                    />\n                    <div class="input-group-append">\n                        <button class="btn btn-sm btn-primary" (click)="list.get()">\n                            <i class="fas fa-search"></i>\n                        </button>\n                    </div>\n                </div>\n            </div>\n                       \n            <ngx-datatable [rows]="appModules$ | async" [count]="appModuleTotalCount$ | async" [list]="list" default>\n                    \n                <ngx-datatable-column [name]="\'AbpIdentity::Actions\' | abpLocalization" [maxWidth]="120"\n                            [sortable]="false">\n                    <ng-template let-row="row" ngx-datatable-cell-template>\n                        <input\n                            type="checkbox"\n                            [(ngModel)]="checkModules[row.id]"\n                        />\n                    </ng-template>\n                </ngx-datatable-column>\n                <ngx-datatable-column [width]="100" [name]="\'TerminalManagement::AppModule:Name\' | abpLocalization"\n                    prop="name" [sortable]="true">\n                </ngx-datatable-column>\n                <ngx-datatable-column [width]="100" [name]="\'TerminalManagement::AppModule:Code\' | abpLocalization"\n                    prop="code" [sortable]="true">\n                </ngx-datatable-column>\n                <ngx-datatable-column [width]="50" [name]="\'TerminalManagement::AppModule:Ico\' | abpLocalization"\n                    prop="ico" [sortable]="true">\n                </ngx-datatable-column>\n                <ngx-datatable-column [width]="80" [name]="\'TerminalManagement::AppModule:Enabled\' | abpLocalization"\n                    prop="enabled" [sortable]="true">\n                    <ng-template let-row="row" ngx-datatable-cell-template>\n                        <span *ngIf="row.enabled" class="badge badge-success">是</span>\n                        <span *ngIf="!row.enabled" class="badge badge-danger">否</span>\n                    </ng-template>\n                </ngx-datatable-column>\n                <ngx-datatable-column [width]="80" [name]="\'TerminalManagement::AppModule:Visible\' | abpLocalization"\n                    prop="visible" [sortable]="true">\n                    <ng-template let-row="row" ngx-datatable-cell-template>\n                        <span *ngIf="row.visible" class="badge badge-success">是</span>\n                        <span *ngIf="!row.visible" class="badge badge-danger">否</span>\n                    </ng-template>\n                </ngx-datatable-column>\n            </ngx-datatable>\n        </ng-template>\n\n        <ng-template #abpFooter>\n            <button type="button" class="btn btn-secondary" #abpClose>\n            {{ \'AbpIdentity::Cancel\' | abpLocalization }}\n            </button>\n            <abp-button iconClass="fa fa-check" (click)="addModules()">{{\n            \'AbpIdentity::Save\' | abpLocalization\n            }}</abp-button>\n        </ng-template>\n    </abp-modal>\n    ',providers:[t.ListService,{provide:r.EXTENSIONS_IDENTIFIER,useValue:"TerminalManagement.TerminalAppModules"}]}]}],_.ctorParameters=function(){return[{type:t.ListService},{type:o.Store}]},_.propDecorators={checkModules:[{type:n.Input}],tenant:[{type:n.Input}]},f([o.Select(e.AppModuleManagementState.appModules)],_.prototype,"appModules$",void 0),f([o.Select(e.AppModuleManagementState.appModuleTotalcount)],_.prototype,"appModuleTotalCount$",void 0),f([o.Select(e.TerminalManagementState.appTerminalSettings)],_.prototype,"appTerminalSettings$",void 0);var Q=function(){function e(e,t,n,a,r){this.list=e,this.subscription=t,this.fb=n,this.store=a,this.confirmationService=r,this.isModalVisible=!1,this.modalBusy=!1}return e.prototype.ngOnInit=function(){this.hookToQuery()},e.prototype.hookToQuery=function(){var e=this;this.list.hookToQuery((function(t){return e.store.dispatch(new R(t))})).subscribe((function(){}))},e.prototype.buildForm=function(){this.form=this.fb.group({id:[this.selected.id],name:[this.selected.name,[s.Validators.required]],code:[this.selected.code,[s.Validators.required]],ico:[this.selected.ico],enabled:[this.selected.enabled||!0],visible:[this.selected.visible||!0]})},e.prototype.add=function(){this.selected={},this.showModal()},e.prototype.showModal=function(){this.buildForm(),this.isModalVisible=!0},e.prototype.edit=function(e){this.selected=e,this.showModal()},e.prototype.delete=function(e){var t=this;this.confirmationService.warn("TerminalManagement::AppModuleDeletionConfirmationMessage","AbpIdentity::AreYouSure").subscribe((function(n){n===a.Confirmation.Status.confirm&&t.store.dispatch(new q(e)).subscribe((function(){t.list.get()}))}))},e.prototype.save=function(){var e,t,n=this,a=Object.assign({},this.form.value);(null===(e=this.selected)||void 0===e?void 0:e.id)||delete a.id,console.log(a),this.modalBusy=!0,this.store.dispatch((null===(t=this.selected)||void 0===t?void 0:t.id)?new j(a):new O(a)).pipe(i.finalize((function(){n.modalBusy=!1,n.isModalVisible=!1}))).subscribe((function(){n.list.get()}))},e.prototype.setEnabled=function(e,t){var n=this;void 0===t&&(t=!0);var a=Object.assign({},e);a.enabled=t,this.store.dispatch(new j(a)).subscribe((function(){return n.list.get()}))},e.prototype.setVisible=function(e,t){var n=this;void 0===t&&(t=!0);var a=Object.assign({},e);a.visible=t,this.store.dispatch(new j(a)).subscribe((function(){return n.list.get()}))},e}();Q.decorators=[{type:n.Component,args:[{selector:"lib-app-module-management",template:'<ng-container>\r\n    <div class="row entry-row">\r\n        <div class="col-auto">\r\n            <h1 class="content-header-title">{{ \'TerminalManagement::AppModules\' | abpLocalization }}</h1>\r\n        </div>\r\n        <div class="col-lg-auto pl-lg-0">\r\n            <abp-breadcrumb></abp-breadcrumb>\r\n        </div>\r\n        <div class="col">\r\n            <div class="row justify-content-end mx-n1" id="AbpContentToolbar">\r\n                <div class="col-auto px-1 pt-2">\r\n                    <button *abpPermission="\'TerminalManagement.AppModuleManagement\'" id="create-app-module"\r\n                        class="btn btn-primary" type="button" (click)="add()">\r\n                        <i class="fa fa-plus mr-1"></i>\r\n                        <span>{{ \'TerminalManagement::NewAppModule\' | abpLocalization }}</span>\r\n                    </button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class="card" id="app-modules-wrapper">\r\n        <div class="card-body">\r\n            <div class="data-tables-filter">\r\n                <div class="input-group">\r\n                    <input type="search" class="form-control" [placeholder]="\'AbpUi::PagerSearch\' | abpLocalization"\r\n                        [(ngModel)]="list.filter" />\r\n                    <div class="input-group-append">\r\n                        <button class="btn btn-sm btn-primary" (click)="list.get()">\r\n                            <i class="fas fa-search"></i>\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <ngx-datatable [rows]="(appModules$ | async)" [count]="(appModuleTotalCount$ | async)" [list]="list"\r\n                default>\r\n                <ngx-datatable-column [name]="\'AbpIdentity::Actions\' | abpLocalization" [maxWidth]="120"\r\n                    [sortable]="false">\r\n                    <ng-template let-row="row" ngx-datatable-cell-template>\r\n                        <div ngbDropdown container="body" class="d-inline-block">\r\n                            <button class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown"\r\n                                aria-haspopup="true" ngbDropdownToggle>\r\n                                <i class="fa fa-cog mr-1"></i>{{ \'AbpIdentity::Actions\' | abpLocalization }}\r\n                            </button>\r\n                            <div ngbDropdownMenu>\r\n                                <button *abpPermission="\'TerminalManagement.AppModuleManagement\'" ngbDropdownItem\r\n                                    (click)="edit(row)">\r\n                                    {{ \'AbpIdentity::Edit\' | abpLocalization }}\r\n                                </button>\r\n                                <button *abpPermission="\'TerminalManagement.AppModuleManagement\'" ngbDropdownItem\r\n                                    (click)="delete(row.id)">\r\n                                    {{ \'AbpIdentity::Delete\' | abpLocalization }}\r\n                                </button>\r\n                                <ng-container *ngIf="!row.enabled">\r\n                                    <button *abpPermission="\'TerminalManagement.AppModuleManagement\'" ngbDropdownItem\r\n                                        (click)="setEnabled(row,true)">\r\n                                        {{ \'TerminalManagement::Enable\' | abpLocalization }}\r\n                                    </button>\r\n                                </ng-container>\r\n                                <ng-container *ngIf="row.enabled">\r\n                                    <button *abpPermission="\'TerminalManagement.AppModuleManagement\'" ngbDropdownItem\r\n                                        (click)="setEnabled(row,false)">\r\n                                        {{ \'TerminalManagement::Disable\' | abpLocalization }}\r\n                                    </button>\r\n                                </ng-container>\r\n\r\n                                <ng-container *ngIf="!row.visible">\r\n                                    <button *abpPermission="\'TerminalManagement.AppModuleManagement\'" ngbDropdownItem\r\n                                        (click)="setVisible(row,true)">\r\n                                        {{ \'TerminalManagement::Visible\' | abpLocalization }}\r\n                                    </button>\r\n                                </ng-container>\r\n                                <ng-container *ngIf="row.visible">\r\n                                    <button *abpPermission="\'TerminalManagement.AppModuleManagement\'" ngbDropdownItem\r\n                                        (click)="setVisible(row,false)">\r\n                                        {{ \'TerminalManagement::Hidden\' | abpLocalization }}\r\n                                    </button>\r\n                                </ng-container>\r\n\r\n                            </div>\r\n                        </div>\r\n                    </ng-template>\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="100" [name]="\'TerminalManagement::AppModule:Name\' | abpLocalization"\r\n                    prop="name" [sortable]="true">\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="100" [name]="\'TerminalManagement::AppModule:Code\' | abpLocalization"\r\n                    prop="code" [sortable]="true">\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="50" [name]="\'TerminalManagement::AppModule:Ico\' | abpLocalization"\r\n                    prop="ico" [sortable]="true">\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="80" [name]="\'TerminalManagement::AppModule:Enabled\' | abpLocalization"\r\n                    prop="enabled" [sortable]="true">\r\n                    <ng-template let-row="row" ngx-datatable-cell-template>\r\n                        <span *ngIf="row.enabled" class="badge badge-success">是</span>\r\n                        <span *ngIf="!row.enabled" class="badge badge-danger">否</span>\r\n                    </ng-template>\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="80" [name]="\'TerminalManagement::AppModule:Visible\' | abpLocalization"\r\n                    prop="visible" [sortable]="true">\r\n                    <ng-template let-row="row" ngx-datatable-cell-template>\r\n                        <span *ngIf="row.visible" class="badge badge-success">是</span>\r\n                        <span *ngIf="!row.visible" class="badge badge-danger">否</span>\r\n                    </ng-template>\r\n                </ngx-datatable-column>\r\n            </ngx-datatable>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n\r\n<abp-modal [(visible)]="isModalVisible" [busy]="modalBusy" (disappear)="form = null">\r\n    <ng-template #abpHeader>\r\n        <h3>{{ (!selected?.id ? \'TerminalManagement::NewAppModule\': \'AbpIdentity::Edit\') | abpLocalization }}</h3>\r\n    </ng-template>\r\n    <ng-template #abpBody>\r\n        <ng-template #loaderRef>\r\n            <div class="text-center"><i class="fa fa-pulse fa-spinner"></i></div>\r\n        </ng-template>\r\n        <form *ngIf="form; else loaderRef" [formGroup]="form" (ngSubmit)="save()">\r\n            <div class="form-group">\r\n                <label for="name">{{ \'TerminalManagement::AppModule:Name\' | abpLocalization }}</label>\r\n                <input type="text" id="name" class="form-control" formControlName="name" />\r\n            </div>\r\n            <div class="form-group">\r\n                <label for="code">{{ \'TerminalManagement::AppModule:Code\' | abpLocalization }}</label>\r\n                <input type="text" id="code" class="form-control" formControlName="code" />\r\n            </div>\r\n            <div class="form-group">\r\n                <label for="ico">{{ \'TerminalManagement::AppModule:Ico\' | abpLocalization }}</label>\r\n                <input type="text" id="ico" class="form-control" formControlName="ico" />\r\n            </div>\r\n            <div class="form-group">\r\n                <div class="custom-checkbox custom-control mb-2">\r\n                    <input type="checkbox" id="AppModuleEnabled" name="enabled" class="custom-control-input "\r\n                        formControlName="enabled" />\r\n                    <label class="custom-control-label" for="AppModuleEnabled">{{\r\n                      \'TerminalManagement::AppModule:Enabled\' | abpLocalization\r\n                    }}</label>\r\n                </div>\r\n            </div>\r\n            <div class="form-group">\r\n                <div class="custom-checkbox custom-control mb-2">\r\n                    <input type="checkbox" id="AppModuleVisible" name="visible" class="custom-control-input "\r\n                        formControlName="visible" />\r\n                    <label class="custom-control-label" for="AppModuleVisible">{{\r\n                      \'TerminalManagement::AppModule:Visible\' | abpLocalization\r\n                    }}</label>\r\n                </div>\r\n            </div>\r\n        </form>\r\n    </ng-template>\r\n    <ng-template #abpFooter>\r\n        <button type="button" class="btn btn-secondary" #abpClose>\r\n            {{ \'AbpIdentity::Cancel\' | abpLocalization }}\r\n        </button>\r\n        <abp-button iconClass="fa fa-check" (click)="save()" [disabled]="form?.invalid">{{\r\n          \'AbpIdentity::Save\' | abpLocalization\r\n        }}</abp-button>\r\n    </ng-template>\r\n</abp-modal>',providers:[t.ListService],styles:[""]}]}],Q.ctorParameters=function(){return[{type:t.ListService},{type:t.SubscriptionService},{type:s.FormBuilder},{type:o.Store},{type:a.ConfirmationService}]},f([o.Select(e.AppModuleManagementState.appModules)],Q.prototype,"appModules$",void 0),f([o.Select(e.AppModuleManagementState.appModuleTotalcount)],Q.prototype,"appModuleTotalCount$",void 0);var $=function(){function e(e){this.restService=e,this.apiName="TerminalManagement"}return e.prototype.getTerminalLogs=function(e){var t={method:"POST",url:"/api/TerminalManagement/TerminalLog/list",body:e};return this.restService.request(t,{apiName:this.apiName})},e.prototype.delete=function(e){var t={method:"DELETE",url:"/api/TerminalManagement/TerminalLog/"+e};return this.restService.request(t,{apiName:this.apiName})},e}();$.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new $(n.ɵɵinject(t.RestService))},token:$,providedIn:"root"}),$.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],$.ctorParameters=function(){return[{type:t.RestService}]};var F=function(e){this.payload=e};F.type="[TerminalLog] get terminal logs";var G=function(e){this.id=e};G.type="[TerminalLog] delete terminal log",e.TerminalLogState=function(){function e(e){this.service=e}return e.logs=function(e){return e.logs.items},e.logTotalcount=function(e){return e.logs.totalCount},e.prototype.getTerminalLogs=function(e,t){var n=e.patchState,a=t.payload;return this.service.getTerminalLogs(a).pipe(i.tap((function(e){return n({logs:e})})))},e.prototype.deleteTerminalLog=function(e,t){var n=t.id;return this.service.delete(n)},e}(),e.TerminalLogState.decorators=[{type:n.Injectable}],e.TerminalLogState.ctorParameters=function(){return[{type:$}]},f([o.Action(F)],e.TerminalLogState.prototype,"getTerminalLogs",null),f([o.Action(G)],e.TerminalLogState.prototype,"deleteTerminalLog",null),f([o.Selector()],e.TerminalLogState,"logs",null),f([o.Selector()],e.TerminalLogState,"logTotalcount",null),e.TerminalLogState=f([o.State({name:"TerminalLog",defaults:{logs:{}}})],e.TerminalLogState);var W=function(){function e(e,t,n,a){this.list=e,this.toasterService=t,this.confirmationService=n,this.store=a,this.isModalVisible=!1,this.pageQuery={skipCount:0,maxResultCount:10}}return e.prototype.ngOnInit=function(){this.hookToQuery()},e.prototype.hookToQuery=function(){var e=this;this.list.hookToQuery((function(t){var n=Object.assign(Object.assign({},e.pageQuery),t);return e.store.dispatch(new F(n))})).subscribe()},e.prototype.delete=function(e){var t=this;this.confirmationService.warn("TerminalManagement::TerminalLogDeletionConfirmationMessage","AbpIdentity::AreYouSure").subscribe((function(n){n===a.Confirmation.Status.confirm&&t.store.dispatch(new G(e)).subscribe((function(){t.list.get()}))}))},e.prototype.lookup=function(e){this.selected=Object.assign({},e),this.isModalVisible=!0},e}();W.decorators=[{type:n.Component,args:[{selector:"lib-terminal-log",template:'<div class="row entry-row">\r\n    <div class="col-auto">\r\n        <h1 class="content-header-title">{{ \'TerminalManagement::TerminalLog\' | abpLocalization }}</h1>\r\n    </div>\r\n    <div class="col-lg-auto pl-lg-0">\r\n        <abp-breadcrumb></abp-breadcrumb>\r\n    </div>\r\n    <div class="col">\r\n\r\n    </div>\r\n</div>\r\n\r\n<div id="terminal-log">\r\n    <div class="card">\r\n        <div class="card-body pb-lg-3">\r\n            <form (keyup.enter)="list.get()" (submit)="list.get()">\r\n                <div class="row">\r\n                    <div class="col-md-12">\r\n                        <div class="form-group">\r\n                            <input id="filter" [placeholder]="\'AbpUi::PagerSearch\' | abpLocalization" type="text"\r\n                                class="form-control" [(ngModel)]="list.filter"\r\n                                [ngModelOptions]="{ standalone: true }" />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class="row">\r\n                    <div class="col-md-6 col-lg-2">\r\n                        <div class="form-group">\r\n                            <label for="userName">{{ \'TerminalManagement::UserName\' | abpLocalization }}</label>\r\n                            <input id="userName" type="text" class="form-control" [(ngModel)]="pageQuery.userName"\r\n                                [ngModelOptions]="{ standalone: true }" />\r\n                        </div>\r\n                    </div>\r\n                    <div class="col-md-6 col-lg-2">\r\n                        <div class="form-group">\r\n                            <label\r\n                                for="machineCode">{{ \'TerminalManagement::Terminal:MachineCode\' | abpLocalization }}</label>\r\n                            <input id="machineCode" type="text" class="form-control" [(ngModel)]="pageQuery.machineCode"\r\n                                [ngModelOptions]="{ standalone: true }" />\r\n                        </div>\r\n                    </div>\r\n                    <div class="col-md-6 col-lg-2">\r\n                        <div class="form-group">\r\n                            <label\r\n                                for="terminalLogType">{{ \'TerminalManagement::TerminalLogType\' | abpLocalization }}</label>\r\n                            <select id="terminalLogType" [ngModelOptions]="{ standalone: true }"\r\n                                [(ngModel)]="pageQuery.terminalLogType" class="form-control">\r\n                                <option [value]="undefined">--选择日志类型--</option>\r\n                                <option [value]="0">日常操作</option>\r\n                                <option [value]="1">异常记录</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n                    <div class="col-md-6 col-lg-2">\r\n                        <div class="form-group">\r\n                            <label for="begin-time">{{ \'TerminalManagement::BeginTime\' | abpLocalization }}</label>\r\n                            <input ngbDatepicker #pickerBegin="ngbDatepicker" id="begin-time" class="form-control"\r\n                                [ngModelOptions]="{ standalone: true }" [(ngModel)]="pageQuery.writeTimeBegin" readonly\r\n                                (click)="pickerBegin.toggle()" (keyup.space)="pickerBegin.open()" />\r\n                        </div>\r\n                    </div>\r\n                    <div class="col-md-6 col-lg-2">\r\n                        <div class="form-group">\r\n                            <label for="end-time">{{ \'TerminalManagement::EndTime\' | abpLocalization }}</label>\r\n                            <input ngbDatepicker #pickerEnd="ngbDatepicker" id="end-time" class="form-control"\r\n                                [ngModelOptions]="{ standalone: true }" [(ngModel)]="pageQuery.writeTimeBegin" readonly\r\n                                (click)="pickerEnd.toggle()" (keyup.space)="pickerEnd.open()" />\r\n                        </div>\r\n                    </div>\r\n\r\n                </div>\r\n                <div class="row">\r\n                    <div class="col-12">\r\n                        <button type="submit" class="btn btn-primary btn-block mt-0 mt-md-4">\r\n                            <span>\r\n                                {{ \'TerminalManagement::Refresh\' | abpLocalization }}\r\n                            </span>\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </form>\r\n            <ngx-datatable [rows]="(logs$ | async)" [count]="(logsTotalcount$ | async)" [list]="list" default>\r\n                <ngx-datatable-column [name]="\'AbpIdentity::Actions\' | abpLocalization" [maxWidth]="120"\r\n                    [sortable]="false">\r\n                    <ng-template let-row="row" ngx-datatable-cell-template>\r\n                        <div ngbDropdown container="body" class="d-inline-block">\r\n                            <button class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown"\r\n                                aria-haspopup="true" ngbDropdownToggle>\r\n                                <i class="fa fa-cog mr-1"></i>{{ \'AbpIdentity::Actions\' | abpLocalization }}\r\n                            </button>\r\n                            <div ngbDropdownMenu>\r\n                                <button *abpPermission="\'TerminalManagement.TerminalLog.Delete\'" ngbDropdownItem\r\n                                    (click)="delete(row.id)">\r\n                                    {{ \'AbpIdentity::Delete\' | abpLocalization }}\r\n                                </button>\r\n                                <button *abpPermission="\'TerminalManagement.TerminalLog.LookUp\'" ngbDropdownItem\r\n                                    (click)="lookup(row)">\r\n                                    {{ \'TerminalManagement::LookUp\' | abpLocalization }}\r\n                                </button>\r\n                            </div>\r\n                        </div>\r\n                    </ng-template>\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="200"\r\n                    [name]="\'TerminalManagement::Terminal:MachineCode\' | abpLocalization" prop="machineCode"\r\n                    [sortable]="true">\r\n                    <ng-template let-row="row" ngx-datatable-cell-template>\r\n                        <p [title]="row.machineCode">{{row.machineCode }}</p>\r\n                    </ng-template>\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="60" [name]="\'TerminalManagement::TerminalLog:UserName\' | abpLocalization"\r\n                    prop="userName" [sortable]="true">\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="80"\r\n                    [name]="\'TerminalManagement::TerminalLog:WriteTime\' | abpLocalization" prop="writeTime"\r\n                    [sortable]="true">\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="50"\r\n                    [name]="\'TerminalManagement::TerminalLog:TerminalLogType\' | abpLocalization" prop="terminalLogType"\r\n                    [sortable]="true">\r\n                    <ng-template let-row="row" ngx-datatable-cell-template>\r\n                        <span *ngIf="row.terminalLogType===0">日常操作</span>\r\n                        <span *ngIf="row.terminalLogType===1">异常记录</span>\r\n                    </ng-template>\r\n                </ngx-datatable-column>\r\n                <ngx-datatable-column [width]="100"\r\n                    [name]="\'TerminalManagement::TerminalLog:Information\' | abpLocalization" prop="information"\r\n                    [sortable]="false">\r\n                    <ng-template let-row="row" ngx-datatable-cell-template>\r\n                        <p [title]="row.information">{{row.information  | shorten: 12: \'...\'}}</p>\r\n                    </ng-template>\r\n                </ngx-datatable-column>\r\n            </ngx-datatable>\r\n\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]="isModalVisible" (disappear)="selected = null">\r\n    <ng-template #abpBody>\r\n        <p>{{selected.information}}</p>\r\n    </ng-template>\r\n</abp-modal>',providers:[t.ListService,{provide:r.EXTENSIONS_IDENTIFIER,useValue:"TerminalManagement.TerminalLog"}],styles:[""]}]}],W.ctorParameters=function(){return[{type:t.ListService},{type:a.ToasterService},{type:a.ConfirmationService},{type:o.Store}]},f([o.Select(e.TerminalLogState.logs)],W.prototype,"logs$",void 0),f([o.Select(e.TerminalLogState.logTotalcount)],W.prototype,"logsTotalcount$",void 0);var H={requiredPolicy:"TerminalManagement.Management",replaceableComponent:{key:"TerminalManagement.Terminals",defaultComponent:E}},X={requiredPolicy:"TerminalManagement.AppModuleManagement",replaceableComponent:{key:"TerminalManagement.AppModules",defaultComponent:Q}},Y={requiredPolicy:"TerminalManagement.TerminalLog",replaceableComponent:{key:"TerminalManagement.TerminalLog",defaultComponent:W}},J=[{path:"",redirectTo:"terminals",pathMatch:"full"},{path:"",component:t.DynamicLayoutComponent,canActivate:[t.AuthGuard,t.PermissionGuard],children:[{path:"terminals",component:E,data:H},{path:"app-modules",component:Q,data:X},{path:"logs",component:W,data:Y}]}],K=function(){};K.decorators=[{type:n.NgModule,args:[{imports:[d.RouterModule.forChild(J)],exports:[d.RouterModule]}]}];var Z,ee,te,ne,ae=function(){function e(){}return e.forChild=function(){return{ngModule:e,providers:[]}},e.forLazy=function(){return new t.LazyModuleFactory(e.forChild())},e}();ae.decorators=[{type:n.NgModule,args:[{declarations:[E,Q,U,_,W],imports:[o.NgxsModule.forFeature([e.TerminalManagementState,e.AppModuleManagementState,e.TerminalLogState]),t.CoreModule,p.CommercialUiModule,a.ThemeSharedModule,K,c.NgbNavModule,c.NgbDropdownModule,m.NgxValidateCoreModule,u.NgPipesModule,c.NgbDatepickerModule],exports:[E,Q,U,_,W]}]}],ee=e.ɵb||(e.ɵb={}),(Z=ee.TerminalType||(ee.TerminalType={}))[Z.App=0]="App",Z[Z.Service=1]="Service",ne=e.ɵe||(e.ɵe={}),(te=ne.TerminalLogTypes||(ne.TerminalLogTypes={}))[te.Operate=0]="Operate",te[te.Exception=1]="Exception";var re=function(){function e(e,t,n){this._storage=e,this._authService=t,this.restService=n,this.apiName="TerminalManagement"}return e.prototype.refreshToken=function(e,t){var n={method:"POST",url:"/api/TerminalManagement/TokenAuth/refresh",body:{userToken:e,refreshToken:t}};return this.restService.request(n,{apiName:this.apiName})},e.prototype.refreshInterval=function(e,t){var n=this;this.refreshSubscription&&this.refreshSubscription.unsubscribe(),this.refreshSubscription=b.timer(59e3,59e4).subscribe((function(){n.refreshToken(e,t).subscribe((function(t){t&&(n.storeAccessTokenResponse(t.accessToken,t.refreshToken,t.expiresIn,t.grantedScopes,null),n.refreshSubscription.unsubscribe(),n.refreshSubscription=void 0,t.refreshToken&&n.refreshInterval(e,t.refreshToken))}))}))},e.prototype.loginWithUserToken=function(e,t){var n=this;return new Promise((function(a,r){n.getLoginResultWithUserToken(e,t).subscribe((function(t){t?(n.storeAccessTokenResponse(t.accessToken,t.refreshToken,t.expiresIn,t.grantedScopes,null),t.refreshToken&&n.refreshInterval(e,t.refreshToken),a(!0)):a(!1)}),(function(){return a(!1)}))}))},e.prototype.getLoginResultWithUserToken=function(e,t){var n={method:"POST",url:"/api/TerminalManagement/TokenAuth/login/"+e,headers:new g.HttpHeaders({__tenant:t})};return this.restService.request(n,{apiName:this.apiName})},e.prototype.storeAccessTokenResponse=function(e,t,n,a,r){var o=this;if(this._storage.setItem("access_token",e),a&&!Array.isArray(a)?this._storage.setItem("granted_scopes",JSON.stringify(a.split("+"))):a&&Array.isArray(a)&&this._storage.setItem("granted_scopes",JSON.stringify(a)),this._storage.setItem("access_token_stored_at",""+Date.now()),n){var i=1e3*n,l=(new Date).getTime()+i;this._storage.setItem("expires_at",""+l)}t&&this._storage.setItem("refresh_token",t),r&&r.forEach((function(e,t){o._storage.setItem(t,e)}))},e}();re.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new re(n.ɵɵinject(h.OAuthStorage),n.ɵɵinject(h.OAuthService),n.ɵɵinject(t.RestService))},token:re,providedIn:"root"}),re.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],re.ctorParameters=function(){return[{type:h.OAuthStorage},{type:h.OAuthService},{type:t.RestService}]},e.AppModuleManagementComponent=Q,e.AppModuleManagementService=V,e.AppTerminalSettingService=z,e.BindAppModules=L,e.BindUsers=x,e.CreateAppModule=O,e.DeleteAppModule=q,e.DeleteTerminal=S,e.DeleteTerminalLog=G,e.DisableTerminal=T,e.EnableTerminal=M,e.GetAppModule=B,e.GetAppTerminalSettings=C,e.GetList=R,e.GetListTerminal=A,e.GetTerminal=w,e.GetTerminalLogs=F,e.Register=v,e.TerminalAppModulesModalComponent=_,e.TerminalAuthService=re,e.TerminalLog=e.ɵe,e.TerminalLogComponent=W,e.TerminalLogService=$,e.TerminalManagement=e.ɵb,e.TerminalManagementComponent=E,e.TerminalManagementModule=ae,e.TerminalManagementService=N,e.TerminalUsersModalComponent=U,e.UnBindAppModules=I,e.UnBindUsers=k,e.UpdateAppModule=j,e.UpdateTerminal=y,e.ɵ0=P,e.ɵd=D,e.ɵf=K,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=hedou-abp.ng.terminal-management.umd.min.js.map