@firestitch/system 9.2.2 → 12.1.1
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.
- package/app/components/api-log/api-log.component.d.ts +3 -0
- package/app/components/api-log/index.d.ts +1 -0
- package/app/components/api-logs/api-logs.component.d.ts +3 -0
- package/app/components/api-logs/index.d.ts +1 -0
- package/app/components/cron/cron.component.d.ts +3 -0
- package/app/components/cron-log/cron-log.component.d.ts +3 -0
- package/app/components/crons/crons.component.d.ts +3 -0
- package/app/components/crons/index.d.ts +1 -0
- package/app/components/dashboard/dashboard.component.d.ts +3 -0
- package/app/components/dashboard/index.d.ts +1 -0
- package/app/components/file-manager/file-manager.component.d.ts +3 -0
- package/app/components/file-manager/index.d.ts +1 -0
- package/app/components/info/index.d.ts +1 -0
- package/app/components/info/info.component.d.ts +3 -0
- package/app/components/process/index.d.ts +1 -0
- package/app/components/process/process.component.d.ts +3 -0
- package/app/components/processes/index.d.ts +1 -0
- package/app/components/processes/processes.component.d.ts +3 -0
- package/app/components/server-log/index.d.ts +1 -0
- package/app/components/server-log/server-log.component.d.ts +3 -0
- package/app/components/server-logs/index.d.ts +1 -0
- package/app/components/server-logs/server-logs.component.d.ts +3 -0
- package/app/components/settings/index.d.ts +1 -0
- package/app/components/settings/settings.component.d.ts +3 -0
- package/app/components/upgrade-logs/index.d.ts +1 -0
- package/app/components/upgrade-logs/upgrade-logs.component.d.ts +3 -0
- package/app/fs-system.module.d.ts +41 -0
- package/app/pipes/key-name-value.pipe.d.ts +4 -0
- package/bundles/firestitch-system.umd.js +759 -612
- package/bundles/firestitch-system.umd.js.map +1 -1
- package/esm2015/app/components/api-log/api-log.component.js +24 -17
- package/esm2015/app/components/api-log/index.js +2 -0
- package/esm2015/app/components/api-logs/api-logs.component.js +23 -24
- package/esm2015/app/components/api-logs/index.js +2 -0
- package/esm2015/app/components/cron/cron.component.js +28 -21
- package/esm2015/app/components/cron/index.js +1 -1
- package/esm2015/app/components/cron-log/cron-log.component.js +24 -16
- package/esm2015/app/components/cron-log/index.js +1 -1
- package/esm2015/app/components/crons/crons.component.js +40 -58
- package/esm2015/app/components/crons/index.js +2 -0
- package/esm2015/app/components/dashboard/dashboard.component.js +37 -39
- package/esm2015/app/components/dashboard/index.js +2 -0
- package/esm2015/app/components/file-manager/file-manager.component.js +27 -37
- package/esm2015/app/components/file-manager/index.js +2 -0
- package/esm2015/app/components/info/index.js +2 -0
- package/esm2015/app/components/info/info.component.js +20 -21
- package/esm2015/app/components/process/index.js +2 -0
- package/esm2015/app/components/process/process.component.js +24 -17
- package/esm2015/app/components/processes/index.js +2 -0
- package/esm2015/app/components/processes/processes.component.js +36 -50
- package/esm2015/app/components/server-log/index.js +2 -0
- package/esm2015/app/components/server-log/server-log.component.js +24 -16
- package/esm2015/app/components/server-logs/index.js +2 -0
- package/esm2015/app/components/server-logs/server-logs.component.js +22 -24
- package/esm2015/app/components/settings/index.js +2 -0
- package/esm2015/app/components/settings/settings.component.js +40 -40
- package/esm2015/app/components/upgrade-logs/index.js +2 -0
- package/esm2015/app/components/upgrade-logs/upgrade-logs.component.js +21 -20
- package/esm2015/app/consts/api-log-states.const.js +1 -1
- package/esm2015/app/consts/cron-log-states.const.js +1 -1
- package/esm2015/app/consts/cron-states.const.js +1 -1
- package/esm2015/app/consts/index.js +1 -1
- package/esm2015/app/consts/process-states.const.js +1 -1
- package/esm2015/app/enums/api-log-state.enum.js +1 -1
- package/esm2015/app/enums/cron-log-state.enum.js +1 -1
- package/esm2015/app/enums/cron-state.enum.js +1 -1
- package/esm2015/app/enums/index.js +1 -1
- package/esm2015/app/enums/process-state.enum.js +1 -1
- package/esm2015/app/enums/setting-interface-type.enum.js +1 -1
- package/esm2015/app/fs-system.module.js +109 -41
- package/esm2015/app/helpers/index-name-value.js +1 -1
- package/esm2015/app/injectors/system-config.injector.js +1 -1
- package/esm2015/app/interfaces/dashboard-action.js +2 -1
- package/esm2015/app/interfaces/index.js +4 -1
- package/esm2015/app/interfaces/process-action.js +2 -1
- package/esm2015/app/interfaces/system-config.js +2 -1
- package/esm2015/app/pipes/key-name-value.pipe.js +15 -11
- package/esm2015/firestitch-system.js +1 -16
- package/esm2015/public_api.js +16 -1
- package/fesm2015/firestitch-system.js +427 -415
- package/fesm2015/firestitch-system.js.map +1 -1
- package/firestitch-system.d.ts +1 -15
- package/package.json +5 -9
- package/public_api.d.ts +15 -0
- package/bundles/firestitch-system.umd.min.js +0 -16
- package/bundles/firestitch-system.umd.min.js.map +0 -1
- package/esm5/app/components/api-log/api-log.component.js +0 -32
- package/esm5/app/components/api-logs/api-logs.component.js +0 -75
- package/esm5/app/components/cron/cron.component.js +0 -98
- package/esm5/app/components/cron/index.js +0 -2
- package/esm5/app/components/cron-log/cron-log.component.js +0 -34
- package/esm5/app/components/cron-log/index.js +0 -2
- package/esm5/app/components/crons/crons.component.js +0 -209
- package/esm5/app/components/dashboard/dashboard.component.js +0 -98
- package/esm5/app/components/file-manager/file-manager.component.js +0 -67
- package/esm5/app/components/info/info.component.js +0 -41
- package/esm5/app/components/process/process.component.js +0 -44
- package/esm5/app/components/processes/processes.component.js +0 -180
- package/esm5/app/components/server-log/server-log.component.js +0 -35
- package/esm5/app/components/server-logs/server-logs.component.js +0 -61
- package/esm5/app/components/settings/settings.component.js +0 -136
- package/esm5/app/components/upgrade-logs/upgrade-logs.component.js +0 -49
- package/esm5/app/consts/api-log-states.const.js +0 -7
- package/esm5/app/consts/cron-log-states.const.js +0 -15
- package/esm5/app/consts/cron-states.const.js +0 -9
- package/esm5/app/consts/index.js +0 -4
- package/esm5/app/consts/process-states.const.js +0 -10
- package/esm5/app/enums/api-log-state.enum.js +0 -7
- package/esm5/app/enums/cron-log-state.enum.js +0 -15
- package/esm5/app/enums/cron-state.enum.js +0 -9
- package/esm5/app/enums/index.js +0 -6
- package/esm5/app/enums/process-state.enum.js +0 -10
- package/esm5/app/enums/setting-interface-type.enum.js +0 -15
- package/esm5/app/fs-system.module.js +0 -113
- package/esm5/app/helpers/index-name-value.js +0 -8
- package/esm5/app/injectors/system-config.injector.js +0 -3
- package/esm5/app/interfaces/dashboard-action.js +0 -1
- package/esm5/app/interfaces/index.js +0 -1
- package/esm5/app/interfaces/process-action.js +0 -1
- package/esm5/app/interfaces/system-config.js +0 -1
- package/esm5/app/pipes/key-name-value.pipe.js +0 -20
- package/esm5/firestitch-system.js +0 -20
- package/esm5/public_api.js +0 -5
- package/fesm5/firestitch-system.js +0 -1286
- package/fesm5/firestitch-system.js.map +0 -1
- package/firestitch-system.metadata.json +0 -1
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("@angular/material/form-field"),require("@angular/material/expansion"),require("@angular/material/input"),require("@angular/material/select"),require("@angular/material/dialog"),require("@angular/material/tooltip"),require("@angular/material/icon"),require("@angular/flex-layout"),require("@angular/material/button"),require("@firestitch/date"),require("@firestitch/datepicker"),require("@firestitch/skeleton"),require("@firestitch/list"),require("@firestitch/file-manager"),require("@firestitch/dialog"),require("@firestitch/label"),require("@firestitch/file"),require("@firestitch/menu"),require("@firestitch/message"),require("@firestitch/build"),require("rxjs/operators"),require("rxjs"),require("date-fns"),require("@firestitch/filter"),require("@firestitch/selection"),require("@firestitch/prompt"),require("lodash-es"),require("ngx-clipboard"),require("@angular/material/tabs")):"function"==typeof define&&define.amd?define("@firestitch/system",["exports","@angular/core","@angular/common","@angular/forms","@angular/material/form-field","@angular/material/expansion","@angular/material/input","@angular/material/select","@angular/material/dialog","@angular/material/tooltip","@angular/material/icon","@angular/flex-layout","@angular/material/button","@firestitch/date","@firestitch/datepicker","@firestitch/skeleton","@firestitch/list","@firestitch/file-manager","@firestitch/dialog","@firestitch/label","@firestitch/file","@firestitch/menu","@firestitch/message","@firestitch/build","rxjs/operators","rxjs","date-fns","@firestitch/filter","@firestitch/selection","@firestitch/prompt","lodash-es","ngx-clipboard","@angular/material/tabs"],t):t(((e=e||self).firestitch=e.firestitch||{},e.firestitch.system={}),e.ng.core,e.ng.common,e.ng.forms,e.ng.material.formField,e.ng.material.expansion,e.ng.material.input,e.ng.material.select,e.ng.material.dialog,e.ng.material.tooltip,e.ng.material.icon,e.ng.flexLayout,e.ng.material.button,e.date,e.datepicker,e.skeleton,e.list,e.fileManager,e.dialog$1,e.label,e.file,e.menu,e.message,e.build,e.rxjs.operators,e.rxjs,e.dateFns,e.filter,e.selection,e.prompt,e.lodashEs,e.ngxClipboard,e.ng.material.tabs)}(this,(function(e,t,n,r,a,o,i,l,s,c,f,d,p,u,g,m,b,h,y,v,w,S,D,I,C,F,L,_,x,M,k,A,T){"use strict";
|
|
2
|
-
/*! *****************************************************************************
|
|
3
|
-
Copyright (c) Microsoft Corporation.
|
|
4
|
-
|
|
5
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
-
purpose with or without fee is hereby granted.
|
|
7
|
-
|
|
8
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
9
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
10
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
11
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
12
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */var R=function(){return(R=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)};function P(e,t,n,r){var a,o=arguments.length,i=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function O(e,t){return function(n,r){t(n,r,e)}}function j(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function q(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function N(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(q(arguments[t]));return e}var E,G,B,K,$,Q=new t.InjectionToken("fs-system-config"),V=function(){function e(e,t,n){this._message=e,this._cdRef=t,this._buildService=n,this.buttonActions=[],this.menuActions=[],this._destroy$=new F.Subject,this.actions=[]}return e.prototype.ngOnInit=function(){var e=this;this._load(),this.buttonActions=this.actions.filter((function(e){return!e.menu})),this.menuActions=this.actions.filter((function(e){return e.menu})),this.build=this._buildService.build,this._buildService.buildChange$.pipe(C.takeUntil(this._destroy$)).subscribe((function(t){e.build=t,e._cdRef.markForCheck()}))},e.prototype._load=function(){var e=this;this.load().subscribe((function(t){e.dashboard=t,e.dashboard.cronRanAttention=!t.cronRan||L.differenceInMinutes(new Date,new Date(t.cronRan))>15,e._cdRef.markForCheck()}))},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.prototype.actionClick=function(e){e.click()},e.prototype.initClick=function(){var e=this;this.init().subscribe((function(){e._message.success("Successfully initialized the system")}))},e.prototype.upgradeClick=function(){var e=this;this.upgrade().subscribe((function(){e._load(),e._message.success("Successfully upgraded the system")}))},e.ctorParameters=function(){return[{type:D.FsMessage},{type:t.ChangeDetectorRef},{type:I.FsBuildService}]},P([t.Input(),j("design:type",Function)],e.prototype,"init",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"upgrade",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"load",void 0),P([t.Input(),j("design:type",Array)],e.prototype,"actions",void 0),e=P([t.Component({selector:"fs-system-dashboard",template:'<div *fsSkeleton="dashboard">\r\n\r\n <div class="h2-container">\r\n\r\n <div class="actions">\r\n <h2>Actions</h2>\r\n <div fxLayout="row" fxLayoutGap="5px" fxLayout.xs="column">\r\n <button mat-raised-button (click)="upgradeClick()">Run Upgrades</button>\r\n <button mat-raised-button (click)="initClick()">Init System</button>\r\n\r\n <button\r\n *ngFor="let action of buttonActions"\r\n mat-raised-button\r\n (click)="actionClick(action)">\r\n {{action.label}}\r\n </button>\r\n\r\n <ng-container *ngIf="menuActions.length">\r\n\r\n <fs-menu buttonClass="mat-raised-button menu-button">\r\n <ng-template\r\n *ngFor="let action of menuActions"\r\n fs-menu-item\r\n (click)="actionClick(action)">\r\n {{action.label}}\r\n </ng-template>\r\n </fs-menu>\r\n\r\n\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n fxLayout="row wrap"\r\n fxLayout.xs="column"\r\n fxLayoutGap.xs="0px"\r\n fxLayoutAlign="start start"\r\n fxLayoutGap="50px">\r\n\r\n <div>\r\n <h2>Server</h2>\r\n\r\n <fs-label-field>\r\n <fs-label>Date/Time</fs-label>\r\n {{dashboard.serverTime | fsDateFormat: \'date-time\'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Timezone</fs-label>\r\n {{dashboard.serverTimezone}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Hostname</fs-label>\r\n {{dashboard.serverHostname}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Directory</fs-label>\r\n {{dashboard.appDirectory}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div>\r\n <h2>System</h2>\r\n <fs-label-field>\r\n <fs-label>Mode</fs-label>\r\n {{dashboard.appMode}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Notification Recipients</fs-label>\r\n {{dashboard.notifyRecipients.join(\', \')}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div>\r\n <h2>Database</h2>\r\n\r\n <fs-label-field>\r\n <fs-label>Name</fs-label>\r\n {{dashboard.databaseName}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Date/Time</fs-label>\r\n {{dashboard.databaseTime | fsDateFormat: \'date-time\'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Timezone</fs-label>\r\n {{dashboard.databaseTimezone}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div *ngIf="build || dashboard.upgrades.length">\r\n <h2>Build</h2>\r\n\r\n <ng-container *ngIf="build">\r\n <fs-label-field>\r\n <fs-label>Version</fs-label>\r\n {{build.version}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>Date</fs-label>\r\n {{ build.date | fsDateFormat: \'date-time\' }}\r\n </fs-label-field>\r\n </ng-container>\r\n\r\n <fs-label-field *ngIf="dashboard.upgrades.length">\r\n <fs-label>Pending Upgrades</fs-label>\r\n <span class="attention" [ngClass]="{ \'needs-attention\': !!dashboard.upgrades.length }">\r\n {{dashboard.upgrades.length}}\r\n <mat-icon\r\n [matTooltip]="dashboard.upgrades.join(\'\\n\')"\r\n matTooltipClass="tooltip-pending-upgrades"\r\n >\r\n warning\r\n </mat-icon>\r\n </span>\r\n </fs-label-field>\r\n </div>\r\n\r\n <div>\r\n <h2>Cron</h2>\r\n\r\n <fs-label-field>\r\n <fs-label>Last Ran</fs-label>\r\n <span class="attention" [ngClass]="{ \'needs-attention\': dashboard.cronRanAttention }">\r\n <span *ngIf="!dashboard.cronRan">Never</span>\r\n <span *ngIf="dashboard.cronRan">{{dashboard.cronRan | fsDateFormat: \'date-time\'}}</span>\r\n <mat-icon>warning</mat-icon>\r\n </span>\r\n </fs-label-field>\r\n </div>\r\n </div>\r\n</div>\r\n',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:[".actions{margin-bottom:1.25em}table td{padding:3px}.attention{display:flex;align-items:center}.attention mat-icon{display:none;margin-left:2px}.attention.needs-attention{color:#c00}.attention.needs-attention mat-icon{display:inline}::ng-deep .tooltip-pending-upgrades{white-space:pre-line}@media (max-width:600px){:host ::ng-deep .menu-button{width:100%;border-radius:4px}}@media (min-width:600px){:host ::ng-deep .menu-button{box-shadow:none}}"]}),j("design:paramtypes",[D.FsMessage,t.ChangeDetectorRef,I.FsBuildService])],e)}();function z(e){var t={};return e.forEach((function(e){t[e.value]=e.name})),t}(E=e.CronState||(e.CronState={})).Running="running",E.Idle="idle",E.Failed="failed",E.Queued="queued",E.Disabled="disabled",function(e){e.RadioButton="R",e.InputBox="I",e.Textarea="T",e.Select="D",e.SelectMultiple="W",e.Date="A",e.File="F",e.Static="S",e.Password="P",e.Time="M",e.None="N"}(G||(G={})),(B=e.ApiLogState||(e.ApiLogState={})).Success="success",B.Failed="failed",B.Deleted="deleted",(K=e.ProcessState||(e.ProcessState={})).Queued="Q",K.Running="R",K.Completed="C",K.Killed="K",K.Deleted="D",K.Failed="F",function(e){e.Message="message",e.Disabled="disabled",e.Started="started",e.Running="running",e.Completed="completed",e.Failed="failed",e.Killed="killed",e.Queued="queued",e.Reset="reset",e.Stagnant="stagnant",e.LongRunning="long_running"}($||($={}));var U=[{name:"Message",value:$.Message,color:"#29B7FF"},{name:"Disabled",value:$.Disabled,color:"#29B7FF"},{name:"Started",value:$.Started,color:"#34BD43"},{name:"Running",value:$.Running,color:"#34BD43"},{name:"Completed",value:$.Completed,color:"#34BD43"},{name:"Failed",value:$.Failed,color:"#FA7567"},{name:"Killed",value:$.Killed,color:"#29B7FF"},{name:"Queued",value:$.Queued,color:"#29B7FF"},{name:"Reset",value:$.Reset,color:"#29B7FF"},{name:"Stagnant",value:$.Stagnant,color:"#FA7567"},{name:"Long Running",value:$.LongRunning,color:"#FA7567"}],J=[{name:"Running",value:e.CronState.Running},{name:"Idle",value:e.CronState.Idle},{name:"Failed",value:e.CronState.Failed},{name:"Queued",value:e.CronState.Queued},{name:"Disabled",value:e.CronState.Disabled}],H=[{name:"Success",value:e.ApiLogState.Success},{name:"Failed",value:e.ApiLogState.Failed},{name:"Deleted",value:e.ApiLogState.Deleted}],W=[{name:"Queued",value:e.ProcessState.Queued},{name:"Running",value:e.ProcessState.Running},{name:"Completed",value:e.ProcessState.Completed},{name:"Killed",value:e.ProcessState.Killed},{name:"Failed",value:e.ProcessState.Failed},{name:"Deleted",value:e.ProcessState.Deleted}],Y=function(){function e(e){this._data=e,this.CronLogStates=z(U),this.CronLogStateColors={}}return e.prototype.ngOnInit=function(){this.cronLog=this._data.cronLog,this.CronLogStateColors=U.reduce((function(e,t){return e[t.value]=t.color,e}),{})},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[s.MAT_DIALOG_DATA]}]}]},e=P([t.Component({template:'<fs-dialog *fsSkeleton="cronLog">\r\n <div mat-dialog-title>Cron Log</div>\r\n <mat-dialog-content>\r\n <div class="row">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n <div [ngStyle]="{ color: CronLogStateColors[cronLog.state]}">\r\n {{CronLogStates[cronLog.state] || cronLog.state}}\r\n </div>\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Date\r\n </fs-label>\r\n <fs-date-ago [date]="cronLog.createDate"></fs-date-ago>\r\n </fs-label-field>\r\n </div>\r\n \r\n <fs-label-field *ngIf="cronLog.message">\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n <div class="message">\r\n {{cronLog.message}}\r\n </div>\r\n </fs-label-field>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]="true" color="primary">Done</button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n',styles:[".message{white-space:pre-line}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}"]}),O(0,t.Inject(s.MAT_DIALOG_DATA)),j("design:paramtypes",[Object])],e)}(),Z=function(){function e(e,t,n){this._data=e,this._dialog=t,this._cdRef=n,this.tabIndex=0,this.CronStates=z(J),this.CronLogStates=z(U),this.CronLogStateColors={}}return e.prototype.ngOnInit=function(){this.load(),this.CronLogStateColors=U.reduce((function(e,t){return e[t.value]=t.color,e}),{})},e.prototype.cronLogOpen=function(e){this._dialog.open(Y,{data:{cronLog:e},width:"85%"})},e.prototype.cronActionClick=function(e){var t=this;e.action(this.cron).subscribe((function(){t.load()}))},e.prototype.selectedIndexChange=function(e){this.tabIndex=e},e.prototype.load=function(){var e=this;this._data.loadCron(this._data.cron).subscribe((function(t){e.cron=R(R({},e._data.cron),t),e._data.loadCronLogs&&(e.config={filters:[{type:_.ItemType.Select,name:"state",label:"Status",values:N([{name:"All",value:null}],U)},{type:_.ItemType.DateRange,name:"date",label:["From Date","To Date"]}],fetch:function(t){return t=R(R({},t),{cronId:e.cron.id}),e._data.loadCronLogs(t)}}),e.cronActions=e._data.cronActions.filter((function(t){return t.show(e.cron)})),e._cdRef.markForCheck()}))},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[s.MAT_DIALOG_DATA]}]},{type:s.MatDialog},{type:t.ChangeDetectorRef}]},e=P([t.Component({template:'<fs-dialog *fsSkeleton="cron">\r\n <h1 mat-dialog-title>\r\n Cron\r\n <div class="small">{{cron.name}}</div>\r\n </h1>\r\n <mat-dialog-content>\r\n <mat-tab-group (selectedIndexChange)="selectedIndexChange($event)">\r\n <mat-tab label="Overview">\r\n <div class="row">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{CronStates[cron.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="cron.cronSetting">\r\n <fs-label>\r\n Run Frequency\r\n </fs-label>\r\n {{cron.cronSetting.summary}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Last Ran\r\n </fs-label>\r\n <ng-container *ngIf="cron.duration===null; else lastRan">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]="cron.createDate"></fs-date-ago>\r\n <div><small *ngIf="cron.duration">Duration: {{ cron.duration | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </fs-label-field>\r\n </div>\r\n\r\n <fs-label-field *ngIf="cron.message">\r\n <fs-label>\r\n Last Message\r\n </fs-label>\r\n <div class="message">{{cron.message}}</div>\r\n </fs-label-field>\r\n </mat-tab>\r\n <mat-tab label="Logs" *ngIf="config">\r\n <ng-template matTabContent>\r\n <fs-list [config]="config">\r\n <fs-list-column name="state" title="Status">\r\n <ng-template fs-list-cell let-row="row">\r\n <a \r\n (click)="cronLogOpen(row)"\r\n [ngStyle]="{ color: CronLogStateColors[row.state] }">\r\n {{CronLogStates[row.state] || row.state}}\r\n </a>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title="Message" class="col-message">\r\n <ng-template fs-list-cell let-row="row">\r\n <div class="message">{{row.message}}</div>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column name="create_date" title="Date" class="col-date">\r\n <ng-template fs-list-cell let-row="row">\r\n <fs-date-ago [date]="row.createDate"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list> \r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n </mat-dialog-content>\r\n <mat-dialog-actions> \r\n <button \r\n mat-button \r\n [mat-dialog-close]="true" \r\n color="primary">\r\n Done\r\n </button>\r\n <ng-container *ngIf="tabIndex === 0">\r\n <button \r\n *ngFor="let cronAction of cronActions"\r\n mat-button \r\n (click)="cronActionClick(cronAction)">\r\n {{cronAction.label}}\r\n </button> \r\n </ng-container>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:[":host ::ng-deep .col-message .message{white-space:break-spaces;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}:host ::ng-deep .col-date{white-space:nowrap}h1 .small{line-height:normal}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}.message{white-space:pre-line}"]}),O(0,t.Inject(s.MAT_DIALOG_DATA)),j("design:paramtypes",[Object,s.MatDialog,t.ChangeDetectorRef])],e)}(),X=function(){function n(e,t){this._message=e,this._dialog=t,this.config=null,this.cronStates=z(J)}return n.prototype.ngOnInit=function(){this._configList()},n.prototype._configList=function(){var e=this;this.config={paging:!1,filters:[{type:_.ItemType.Keyword,name:"keyword",label:"Search"}],rowActions:this.getCronActions().map((function(e){return R(R({},e),{click:function(t){e.action(t).subscribe()}})})),fetch:function(t){return t.timezone=Intl.DateTimeFormat().resolvedOptions().timeZone,e.loadCrons(t).pipe(C.map((function(e){return{data:e}})))}},this.bulk&&(this.config.selection={selectAll:!1,actions:[{type:x.SelectionActionType.Action,name:"disable",label:"Disable"},{type:x.SelectionActionType.Action,name:"enable",label:"Enable"}],actionSelected:function(t){return e.bulk(t.action.name,t.selected).pipe(C.tap((function(){e.list.reload(),e._message.success("Applied Changes")})))}})},n.prototype.open=function(e){this._dialog.open(Z,{data:{cron:e,loadCronLogs:this.loadCronLogs,loadCron:this.loadCron,cronActions:this.getCronActions()},width:"85%"})},n.prototype.getCronActions=function(){var t=this;return[{action:function(e){return t.queue(e).pipe(C.tap((function(){t._message.success("Queued cron"),t.list.reload()})))},label:"Queue",show:function(t){return t.state===e.CronState.Idle||t.state===e.CronState.Failed}},{action:function(e){return t.run(e).pipe(C.tap((function(){t._message.success("Cron ran"),t.list.reload()})))},label:"Run",show:function(t){return t.state===e.CronState.Idle||t.state===e.CronState.Failed}},{action:function(e){return t.enable(e).pipe(C.tap((function(){t._message.success("Enabled cron"),t.list.reload()})))},label:"Enable",show:function(t){return t.state===e.CronState.Disabled}},{action:function(e){return t.disable(e).pipe(C.tap((function(){t._message.success("Disabled cron"),t.list.reload()})))},label:"Disable",show:function(t){return t.state===e.CronState.Idle||t.state===e.CronState.Failed}},{action:function(e){return t.kill(e).pipe(C.tap((function(){t._message.success("Killed cron"),t.list.reload()})))},label:"Kill",show:function(t){return t.state===e.CronState.Running}}]},n.ctorParameters=function(){return[{type:D.FsMessage},{type:s.MatDialog}]},P([t.ViewChild(b.FsListComponent,{static:!0}),j("design:type",b.FsListComponent)],n.prototype,"list",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"enable",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"disable",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"kill",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"queue",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"run",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"loadCrons",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"loadCron",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"loadCronLogs",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"bulk",void 0),n=P([t.Component({selector:"fs-system-crons",template:'<fs-list [config]="config">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n <a (click)="open(row)">{{row.name}}</a>\r\n <div *ngIf="row.cronSetting">\r\n <small>{{row.cronSetting.summary}}</small>\r\n </div>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n {{cronStates[row.state]}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Last Ran</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n <ng-container *ngIf="row.duration===null; else lastRan">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]="row.createDate"></fs-date-ago>\r\n <div><small *ngIf="row.duration">Duration: {{ row.duration | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>\r\n',styles:[""]}),j("design:paramtypes",[D.FsMessage,s.MatDialog])],n)}(),ee=function(){function e(e,n,r,a){this._message=e,this._clipboardService=n,this._prompt=r,this._cdRef=a,this.fileRemove=new t.EventEmitter,this.fileSelect=new t.EventEmitter,this.groupedSettings=[],this.groups=[],this.SettingInterfaceType=G}return e.prototype.ngOnInit=function(){var e=this;this.loadSettings().subscribe((function(t){t=t.filter((function(e){return e.interfaceType!==G.None})).map((function(e){switch(e.interfaceType){case G.Date:case G.Time:e.value=u.parse(e.value);case G.SelectMultiple:e.value=Array.isArray(e.value)?e.value:[]}return e})),e.groupedSettings=k.groupBy(t,(function(e){return e.group})),e.groups=Object.keys(e.groupedSettings),e._cdRef.markForCheck()}))},e.prototype.export=function(e,t){e.stopPropagation();var n=t.map((function(e){return{name:e.name,value:e.value,group:e.group}}));this._clipboardService.copy(JSON.stringify(n)),this._message.success("Copied to clipboard")},e.prototype.import=function(e,t){var n=this;e.stopPropagation(),this._prompt.input({label:"JSON Import",title:"Import Settings",commitLabel:"Import",required:!0}).subscribe((function(e){if(e)try{var r=n.groupedSettings[t];JSON.parse(e).forEach((function(e){var t=r.find((function(t){return e.name===t.name}));t&&Object.assign(t,e)})),n._cdRef.markForCheck()}catch(e){n._message.error(e)}}))},e.prototype.saveGroup=function(e){var t=this,n=this.groupedSettings[e],r=k.reduce(n,(function(e,t,n){return e[t.name]=t.value,e}),{});this.save(e,r).subscribe((function(){t._message.success("Changes Saved")}))},e.ctorParameters=function(){return[{type:D.FsMessage},{type:A.ClipboardService},{type:M.FsPrompt},{type:t.ChangeDetectorRef}]},P([t.Input(),j("design:type",Function)],e.prototype,"loadSettings",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"save",void 0),P([t.Output(),j("design:type",Object)],e.prototype,"fileRemove",void 0),P([t.Output(),j("design:type",Object)],e.prototype,"fileSelect",void 0),e=P([t.Component({selector:"fs-system-settings",template:'\r\n<mat-accordion>\r\n <mat-expansion-panel hideToggle *ngFor="let group of groups">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <div class="title-row">\r\n <div class="title">{{group || \'General\'}}</div>\r\n <div class="actions">\r\n <button\r\n type="button"\r\n [matTooltip]="\'Export \' + (group || \'General\') + \' Settings\'"\r\n mat-icon-button\r\n (click)="export($event, groupedSettings[group])">\r\n <mat-icon>cloud_download</mat-icon>\r\n </button>\r\n <button\r\n type="button"\r\n [matTooltip]="\'Import \' + (group || \'General\') + \' Settings\'"\r\n mat-icon-button\r\n (click)="import($event, group)">\r\n <mat-icon>cloud_upload</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div hideToggle *ngFor="let setting of groupedSettings[group]">\r\n <mat-form-field \r\n class="full-width form-field-multiline-subscript"\r\n *ngIf="setting.interfaceType===SettingInterfaceType.InputBox">\r\n <input\r\n matInput\r\n [placeholder]="setting.label"\r\n [(ngModel)]="setting.value"\r\n [name]="\'setting\' + setting.id">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class="full-width form-field-multiline-subscript" \r\n *ngIf="setting.interfaceType===SettingInterfaceType.Textarea">\r\n <textarea\r\n matInput\r\n [placeholder]="setting.label"\r\n [(ngModel)]="setting.value"\r\n [name]="\'setting\' + setting.id">\r\n </textarea>\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class="full-width form-field-multiline-subscript" \r\n *ngIf="setting.interfaceType===SettingInterfaceType.Select || setting.interfaceType===SettingInterfaceType.SelectMultiple">\r\n <mat-select\r\n [placeholder]="setting.label"\r\n [(ngModel)]="setting.value"\r\n [multiple]="setting.interfaceType===SettingInterfaceType.SelectMultiple"\r\n [name]="\'setting\' + setting.id">\r\n <mat-option *ngFor="let item of setting.values | keyNameValue" [value]="item.value">\r\n {{item.name}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class="full-width form-field-multiline-subscript" \r\n *ngIf="setting.interfaceType===SettingInterfaceType.Date">\r\n <input\r\n matInput\r\n fsDatePicker\r\n [placeholder]="setting.label"\r\n [(ngModel)]="setting.value"\r\n [name]="\'setting\' + setting.id">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <mat-form-field \r\n class="full-width form-field-multiline-subscript" \r\n *ngIf="setting.interfaceType===SettingInterfaceType.Time">\r\n <input\r\n matInput\r\n fsTimePicker\r\n [placeholder]="setting.label"\r\n [(ngModel)]="setting.value"\r\n [name]="\'setting\' + setting.id">\r\n <mat-hint>{{setting.instruction}}</mat-hint>\r\n </mat-form-field>\r\n\r\n <fs-file-picker\r\n *ngIf="setting.interfaceType===SettingInterfaceType.File"\r\n [allowRemove]="true"\r\n [allowDownload]="true"\r\n (select)="fileSelect.emit({ setting: setting, file: $event.file })"\r\n (remove)="fileRemove.emit(setting)"\r\n [url]="setting.value">\r\n <div fsFileLabel>{{setting.label}}</div>\r\n </fs-file-picker>\r\n </div>\r\n\r\n <button mat-raised-button color="primary" type="button" (click)="saveGroup(group)">Save</button>\r\n\r\n </mat-expansion-panel>\r\n\r\n</mat-accordion>\r\n',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:[".mat-expansion-panel-header{font-size:19px}.full-width{width:100%}.title-row{flex-direction:row;box-sizing:border-box;display:flex;place-content:center flex-start;align-items:center;width:100%}.title-row .title{display:flex;flex:1}:host ::ng-deep .mat-expansion-panel-header-title{margin:0}:host ::ng-deep .mat-expansion-panel .actions{display:none}:host ::ng-deep .mat-expansion-panel.mat-expanded .actions{display:block}"]}),j("design:paramtypes",[D.FsMessage,A.ClipboardService,M.FsPrompt,t.ChangeDetectorRef])],e)}(),te=function(){function e(){}return e.prototype.ngOnInit=function(){this._configFileManager()},e.prototype._configFileManager=function(){var e=this;this.config={fetch:function(t){return e.fetch(t)},deleteFile:function(t){return e.deleteFile(t)},deleteDirectory:function(t){return e.deleteDirectory(t)},createDirectory:function(t){return e.createDirectory(t)},download:function(t){return e.download(t)},upload:function(t,n){return e.upload(t,n)}}},P([t.Input(),j("design:type",Function)],e.prototype,"fetch",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"deleteFile",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"deleteDirectory",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"createDirectory",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"download",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"upload",void 0),e=P([t.Component({selector:"fs-system-file-manager",template:'<fs-file-manager [config]="config"></fs-file-manager>',styles:[""]}),j("design:paramtypes",[])],e)}(),ne=function(){function e(){}return e.prototype.transform=function(e){return Object.keys(e).map((function(t){return{value:t,name:e[t]}}))},e=P([t.Pipe({name:"keyNameValue"}),t.Injectable()],e)}(),re=function(){function n(t,n){this._dialogRef=t,this.data=n,this.ProcessState=e.ProcessState}return n.prototype.ngOnInit=function(){this.ProcessStates=z(W),this.data.loadProcess?this.load():this.process=this.data.process},n.prototype.load=function(){var e=this;this.data.loadProcess(this.data.process).subscribe((function(t){e.process=t}))},n.ctorParameters=function(){return[{type:s.MatDialogRef},{type:void 0,decorators:[{type:t.Inject,args:[s.MAT_DIALOG_DATA]}]}]},n=P([t.Component({template:'<fs-dialog *fsSkeleton="process">\r\n <div mat-dialog-title>Process</div>\r\n <mat-dialog-content>\r\n <div fxLayout="column">\r\n <fs-label-field>\r\n <fs-label>\r\n Name\r\n </fs-label>\r\n {{process.prettyName}}\r\n </fs-label-field>\r\n\r\n <div fxLayout="row" fxLayoutGap="20px">\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{ProcessStates[process.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="process.notify">\r\n <fs-label>\r\n Notification Email\r\n </fs-label>\r\n {{process.notify}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="process.pid">\r\n <fs-label>\r\n PID\r\n </fs-label>\r\n {{process.pid}}\r\n </fs-label-field>\r\n </div>\r\n\r\n <div fxLayout="row" fxLayoutGap="20px">\r\n <fs-label-field>\r\n <fs-label>\r\n Create Date\r\n </fs-label>\r\n {{ process.createDate | fsDateFormat: \'date-time\' }}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="process.startDate">\r\n <fs-label>\r\n Start Date\r\n </fs-label>\r\n {{ process.startDate | fsDateFormat: \'date-time\' }}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="process.endDate">\r\n <fs-label>\r\n Complete Date\r\n </fs-label>\r\n {{ process.endDate | fsDateFormat: \'date-time\' }}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="process.duration">\r\n <fs-label>\r\n Duration\r\n </fs-label>\r\n {{ process.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\r\n </fs-label-field>\r\n </div>\r\n\r\n <fs-label-field *ngIf="process.message">\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n {{process.message}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="process.log" class="log">\r\n <fs-label>\r\n Log\r\n </fs-label>{{process.log}}\r\n </fs-label-field>\r\n\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]="true" color="primary">Done</button>\r\n <button\r\n *ngIf="process.state===ProcessState.Running && data.loadProcess"\r\n mat-button\r\n (click)="load()">\r\n Reload\r\n </button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n',styles:[":host ::ng-deep .log .field-content{white-space:pre-wrap;font-family:monospace;font-size:14px}"]}),O(1,t.Inject(s.MAT_DIALOG_DATA)),j("design:paramtypes",[s.MatDialogRef,Object])],n)}(),ae=function(){function n(t,n){this._dialog=t,this._message=n,this.actions=[],this.config=null,this.ProcessStates=z(W),this.ProcessState=e.ProcessState,this._destroy$=new F.Subject}return n.prototype.ngOnInit=function(){this._configList()},n.prototype._configList=function(){var e=this;this.config={actions:[],rowActions:[],filters:[{type:_.ItemType.Keyword,name:"keyword",label:"Search"},{type:_.ItemType.Select,name:"state",label:"Status",values:W}],fetch:function(t){return e.loadProcesses(t).pipe(C.map((function(e){return{data:e.data,paging:e.paging}})))}},this.run&&this.config.rowActions.push({label:"Run",click:function(t){e._message.info("Running process..."),e.run(t).subscribe((function(){e.list.reload(),e._message.success("Succesfully ran process")})),setTimeout((function(){e.list.reload()}),500)}}),this.kill&&this.config.rowActions.push({label:"Kill",show:function(e){return!!e.pid},click:function(t){e._message.info("Killing process..."),e.kill(t).subscribe((function(){e.list.reload(),e._message.success("Succesfully killed process")})),setTimeout((function(){e.list.reload()}),500)}}),this.delete&&this.config.rowActions.push({label:"Delete",click:function(t){e.delete(t).subscribe((function(){e.list.reload(),e._message.success("Deleted process")}))}}),this.actions.forEach((function(t){e.config.actions.push({primary:!1,label:t.label,menu:t.menu,click:function(){(t.click&&t.click(),t.component)&&e._dialog.open(t.component,{width:"800px"}).afterClosed().pipe(C.takeUntil(e._destroy$)).subscribe((function(t){e.list.reload()}))}})}))},n.prototype.open=function(e){this._dialog.open(re,{data:{process:e,loadProcess:this.loadProcess},width:"85%"})},n.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},n.ctorParameters=function(){return[{type:s.MatDialog},{type:D.FsMessage}]},P([t.ViewChild(b.FsListComponent),j("design:type",b.FsListComponent)],n.prototype,"list",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"loadProcesses",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"loadProcess",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"run",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"kill",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"delete",void 0),P([t.Input(),j("design:type",Function)],n.prototype,"download",void 0),P([t.Input(),j("design:type",Array)],n.prototype,"actions",void 0),n=P([t.Component({selector:"fs-system-processes",template:'<fs-list [config]="config">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n <a (click)="open(row)">{{row.prettyName}}</a>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n {{ProcessStates[row.state]}}\r\n <small>\r\n <div *ngIf="row.state===ProcessState.Running && row.percent">Complete: {{ row.percent }}%</div>\r\n <div *ngIf="row.state===ProcessState.Completed && row.filename">Download: <a href="javascript:;" (click)="download(row)">{{ row.filename }}</a></div>\r\n <div *ngIf="row.pid">PID: {{ row.pid }}</div>\r\n <div *ngIf="row.state===ProcessState.Running && row.notify">Notify: {{ row.notify }}</div>\r\n </small>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Duration</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n {{ row.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Message</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n {{row.message}}\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Completed</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n <fs-date-ago [date]="row.endDate"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>\r\n',styles:[""]}),j("design:paramtypes",[s.MatDialog,D.FsMessage])],n)}(),oe=function(){function e(e){this.data=e}return e.prototype.ngOnInit=function(){if(this.data.log){this.log=this.data.log;try{this.log.backtrace=JSON.parse(this.log.backtrace)}catch(e){}try{this.log.server=JSON.parse(this.log.server)}catch(e){}}},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[s.MAT_DIALOG_DATA]}]}]},e=P([t.Component({template:'<fs-dialog *fsSkeleton="log">\r\n <div mat-dialog-title>Log</div>\r\n <mat-dialog-content>\r\n <div fxLayout="column">\r\n <fs-label-field>\r\n <fs-label>\r\n Error Type\r\n </fs-label>\r\n {{log.type}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n {{log.message}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n URL\r\n </fs-label>\r\n {{log.url}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Date\r\n </fs-label>\r\n {{log.createDate|fsDateFormat: \'full-date-time\'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n File\r\n </fs-label>\r\n {{log.file}} @ {{log.line}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Backtrace\r\n </fs-label>\r\n <pre>{{log.backtrace|json}}</pre>\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n $_SERVER\r\n </fs-label>\r\n <pre>{{log.server|json}}</pre>\r\n </fs-label-field>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]="true" color="primary">Done</button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n',styles:[""]}),O(0,t.Inject(s.MAT_DIALOG_DATA)),j("design:paramtypes",[Object])],e)}(),ie=function(){function e(e){this._dialog=e,this.config=null,this.logTypes=[]}return e.prototype.ngOnInit=function(){this._configList()},e.prototype._configList=function(){var e=this;this.config={filters:[{type:_.ItemType.Keyword,name:"keyword",label:"Search"}],fetch:function(t){return e.loadLogs(t).pipe(C.map((function(e){return{data:e.data,paging:e.paging}})))}}},e.prototype.open=function(e){this._dialog.open(oe,{data:{log:e},width:"85%"})},e.ctorParameters=function(){return[{type:s.MatDialog}]},P([t.ViewChild("list",{static:!0}),j("design:type",b.FsListComponent)],e.prototype,"list",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"loadLogs",void 0),e=P([t.Component({selector:"fs-system-server-logs",template:'<fs-list [config]="config">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Message</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n <a href="javascript:;" (click)="open(row)">{{row.message}}</a>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Type</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n {{row.type}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n <fs-date-ago [date]="row.createDate"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n',styles:[""]}),j("design:paramtypes",[s.MatDialog])],e)}(),le=function(){function e(){this.config=null,this.logTypes=[]}return e.prototype.ngOnInit=function(){this._configList()},e.prototype._configList=function(){var e=this;this.config={paging:!1,filters:[{type:_.ItemType.Keyword,name:"keyword",label:"Search"}],fetch:function(t){return e.loadUpgradeLogs(t).pipe(C.map((function(e){return{data:e.data,paging:e.paging}})))}}},P([t.ViewChild(b.FsListComponent,{static:!0}),j("design:type",b.FsListComponent)],e.prototype,"list",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"loadUpgradeLogs",void 0),e=P([t.Component({selector:"fs-system-upgrade-logs",template:'<fs-list [config]="config">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n {{row.name}}\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Function</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n {{row.function}}()\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n <fs-date-ago [date]="row.createDate"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>\r\n',styles:[""]})],e)}(),se=function(){function e(e,t){this._dialogRef=e,this.data=t}return e.prototype.ngOnInit=function(){this.apiLogStates=z(H),this.data.apiLog&&(this.apiLog=this.data.apiLog)},e.ctorParameters=function(){return[{type:s.MatDialogRef},{type:void 0,decorators:[{type:t.Inject,args:[s.MAT_DIALOG_DATA]}]}]},e=P([t.Component({template:'<fs-dialog *fsSkeleton="apiLog">\r\n <div mat-dialog-title>API Log</div>\r\n <mat-dialog-content>\r\n <div fxLayout="column">\r\n <fs-label-field>\r\n <fs-label>\r\n Type\r\n </fs-label>\r\n {{apiLog.type}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{apiLogStates[apiLog.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Date\r\n </fs-label>\r\n {{apiLog.createDate|fsDateFormat: \'full-date-time\'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="apiLog.length">\r\n <fs-label>\r\n Duration\r\n </fs-label>\r\n {{ apiLog.length | fsDateDuration }}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="apiLog.code">\r\n <fs-label>\r\n Code\r\n </fs-label>\r\n {{apiLog.code}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="apiLog.message">\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n {{apiLog.message}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="apiLog.url">\r\n <fs-label>\r\n URL\r\n </fs-label>\r\n {{apiLog.url}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="apiLog.request">\r\n <fs-label>\r\n Request\r\n </fs-label>\r\n <pre>{{apiLog.request|json}}</pre>\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf="apiLog.response">\r\n <fs-label>\r\n Response\r\n </fs-label>\r\n <pre>{{apiLog.response|json}}</pre>\r\n </fs-label-field>\r\n\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]="true" color="primary">Done</button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n',styles:[""]}),O(1,t.Inject(s.MAT_DIALOG_DATA)),j("design:paramtypes",[s.MatDialogRef,Object])],e)}(),ce=function(){function e(e){this._dialog=e,this.config=null,this.apiLogStates=z(H)}return e.prototype.ngOnInit=function(){this._configList()},e.prototype._configList=function(){var e=this;this.config={filters:[{type:_.ItemType.Keyword,name:"keyword",label:"Search"},{type:_.ItemType.Select,name:"state",label:"Status",values:H},{name:"createDate",type:_.ItemType.DateRange,label:["From Date","To Date"]}],fetch:function(t){return Object.assign(t,{}),e.loadApiLogs(t).pipe(C.map((function(e){return{data:e.data,paging:e.paging}})))}}},e.prototype.open=function(e){this._dialog.open(se,{data:{apiLog:e},width:"85%"})},e.ctorParameters=function(){return[{type:s.MatDialog}]},P([t.ViewChild(b.FsListComponent,{static:!0}),j("design:type",b.FsListComponent)],e.prototype,"list",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"loadApiLogs",void 0),e=P([t.Component({selector:"fs-system-api-logs",template:'<fs-list [config]="config">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n <a href="javascript:;" (click)="open(row)">{{row.type || \'Unknown\'}}</a>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Message</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n {{row.message}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n {{apiLogStates[row.state]}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\r\n <ng-template fs-list-cell let-row="row">\r\n <fs-date-ago [date]="row.createDate"></fs-date-ago>\r\n <div><small *ngIf="row.length">Duration: {{ row.length | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n',styles:[""]}),j("design:paramtypes",[s.MatDialog])],e)}(),fe=function(){function e(){}return e.prototype.ngAfterViewInit=function(){this._load()},e.prototype._load=function(){var e=this;this.load().subscribe((function(t){t+="<style>body { background: transparent; }</style>";var n=e.iframe.nativeElement.contentDocument||e.iframe.nativeElement.contentWindow;n.open(),n.write(t),n.close();var r=e.iframe.nativeElement.contentWindow.document.documentElement.scrollHeight+100;e.iframe.nativeElement.style.height=r+"px"}))},P([t.ViewChild("iframe"),j("design:type",t.ElementRef)],e.prototype,"iframe",void 0),P([t.Input(),j("design:type",Function)],e.prototype,"load",void 0),e=P([t.Component({selector:"fs-system-info",template:"<iframe #iframe></iframe>\r\n",changeDetection:t.ChangeDetectionStrategy.OnPush,styles:["iframe{width:100%;border:0}"]})],e)}(),de=function(){function e(){}var D;return D=e,e.forRoot=function(e){return{ngModule:D,providers:[{provide:Q,useValue:e||{}}]}},e=D=P([t.NgModule({imports:[n.CommonModule,d.FlexLayoutModule,r.FormsModule,p.MatButtonModule,o.MatExpansionModule,c.MatTooltipModule,f.MatIconModule,a.MatFormFieldModule,i.MatInputModule,l.MatSelectModule,s.MatDialogModule,T.MatTabsModule,u.FsDateModule,m.FsSkeletonModule,b.FsListModule,w.FsFileModule,h.FsFileManagerModule,v.FsLabelModule,y.FsDialogModule,g.FsDatePickerModule,S.FsMenuModule,A.ClipboardModule],exports:[V,X,ee,te,ae,ie,le,ce,fe],declarations:[V,X,ee,ne,te,ae,oe,ie,le,ce,se,fe,re,Z,Y]})],e)}();e.ApiLogStates=H,e.CronStates=J,e.FS_SYSTEM_CONFIG=Q,e.FsSystemModule=de,e.ProcessStates=W,e.ɵa=V,e.ɵb=X,e.ɵc=ee,e.ɵd=te,e.ɵe=ae,e.ɵf=ie,e.ɵg=le,e.ɵh=ce,e.ɵi=fe,e.ɵj=ne,e.ɵk=oe,e.ɵl=se,e.ɵm=re,e.ɵn=Z,e.ɵo=Y,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
16
|
-
//# sourceMappingURL=firestitch-system.umd.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@firestitch/system/app/enums/cron-state.enum.ts","ng://@firestitch/system/app/enums/setting-interface-type.enum.ts","ng://@firestitch/system/app/enums/api-log-state.enum.ts","ng://@firestitch/system/app/enums/process-state.enum.ts","ng://@firestitch/system/app/enums/cron-log-state.enum.ts","ng://@firestitch/system/app/injectors/system-config.injector.ts","ng://@firestitch/system/app/components/dashboard/dashboard.component.ts","ng://@firestitch/system/app/helpers/index-name-value.ts","ng://@firestitch/system/app/consts/cron-log-states.const.ts","ng://@firestitch/system/app/consts/cron-states.const.ts","ng://@firestitch/system/app/consts/api-log-states.const.ts","ng://@firestitch/system/app/consts/process-states.const.ts","ng://@firestitch/system/app/components/cron-log/cron-log.component.ts","ng://@firestitch/system/app/components/cron/cron.component.ts","ng://@firestitch/system/app/components/crons/crons.component.ts","ng://@firestitch/system/app/components/settings/settings.component.ts","ng://@firestitch/system/app/components/file-manager/file-manager.component.ts","ng://@firestitch/system/app/pipes/key-name-value.pipe.ts","ng://@firestitch/system/app/components/process/process.component.ts","ng://@firestitch/system/app/components/processes/processes.component.ts","ng://@firestitch/system/app/components/server-log/server-log.component.ts","ng://@firestitch/system/app/components/server-logs/server-logs.component.ts","ng://@firestitch/system/app/components/upgrade-logs/upgrade-logs.component.ts","ng://@firestitch/system/app/components/api-log/api-log.component.ts","ng://@firestitch/system/app/components/api-logs/api-logs.component.ts","ng://@firestitch/system/app/components/info/info.component.ts","ng://@firestitch/system/app/fs-system.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","__spread","concat","CronState","SettingInterfaceType","ApiLogState","ProcessState","CronLogState","FS_SYSTEM_CONFIG","InjectionToken","DashboardComponent","_message","_cdRef","_buildService","buttonActions","menuActions","_destroy$","Subject","actions","ngOnInit","_this","_load","filter","item","menu","build","buildChange$","pipe","takeUntil","subscribe","markForCheck","load","dashboard","cronRanAttention","cronRan","differenceInMinutes","Date","ngOnDestroy","complete","actionClick","action","click","initClick","init","success","upgradeClick","upgrade","FsMessage","ChangeDetectorRef","FsBuildService","Input","Function","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","indexNameValue","arry","obj","forEach","name","CronLogStates","Message","color","Disabled","Started","Running","Completed","Failed","Killed","Queued","Reset","Stagnant","LongRunning","CronStates","Idle","ApiLogStates","Success","Deleted","ProcessStates","CronLogComponent","_data","CronLogStateColors","cronLog","reduce","accum","cronLogState","Inject","args","MAT_DIALOG_DATA","CronComponent","_dialog","tabIndex","cronLogOpen","open","data","width","cronActionClick","cronAction","cron","selectedIndexChange","index","loadCron","loadCronLogs","config","filters","type","ItemType","Select","label","values","DateRange","fetch","query","cronId","id","cronActions","cronLogAction","show","MatDialog","CronsComponent","cronStates","_configList","paging","Keyword","rowActions","getCronActions","map","rowAction","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","loadCrons","response","bulk","selection","selectAll","SelectionActionType","Action","actionSelected","selected","tap","list","reload","queue","state","run","enable","disable","kill","ViewChild","FsListComponent","static","SettingsComponent","_clipboardService","_prompt","fileRemove","EventEmitter","fileSelect","groupedSettings","groups","loadSettings","settings","setting","interfaceType","None","Time","parse","SelectMultiple","Array","isArray","groupBy","group","keys","export","event","stopPropagation","copy","JSON","stringify","import","input","title","commitLabel","required","settings_1","find","saveGroup","result","save","ClipboardService","FsPrompt","Output","FileManagerComponent","_configFileManager","path","deleteFile","deleteDirectory","createDirectory","download","upload","file","KeyNameValuePipe","transform","Pipe","Injectable","ProcessComponent","_dialogRef","loadProcess","process","MatDialogRef","ProcessesComponent","loadProcesses","info","setTimeout","pid","delete","primary","component","afterClosed","ServerLogComponent","log","backtrace","server","ServerLogsComponent","logTypes","loadLogs","UpgradeLogsComponent","loadUpgradeLogs","ApiLogComponent","apiLogStates","apiLog","ApiLogsComponent","loadApiLogs","InfoComponent","ngAfterViewInit","doc","iframe","nativeElement","contentDocument","contentWindow","write","close","scrollHeight","document","documentElement","style","height","ElementRef","FsSystemModule","forRoot","ngModule","FsSystemModule_1","providers","provide","useValue","NgModule","imports","CommonModule","FlexLayoutModule","FormsModule","MatButtonModule","MatExpansionModule","MatTooltipModule","MatIconModule","MatFormFieldModule","MatInputModule","MatSelectModule","MatDialogModule","MatTabsModule","FsDateModule","FsSkeletonModule","FsListModule","FsFileModule","FsFileManagerModule","FsLabelModule","FsDialogModule","FsDatePickerModule","FsMenuModule","ClipboardModule","exports","declarations"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export enum CronState {\r\n Running = 'running',\r\n Idle = 'idle',\r\n Failed = 'failed',\r\n Queued = 'queued',\r\n Disabled = 'disabled'\r\n}\r\n","export enum SettingInterfaceType {\r\n RadioButton = 'R',\r\n InputBox = 'I',\r\n Textarea = 'T',\r\n Select = 'D',\r\n SelectMultiple = 'W',\r\n Date = 'A',\r\n File = 'F',\r\n Static = 'S',\r\n Password = 'P',\r\n Time = 'M',\r\n None = 'N',\r\n}\r\n","export enum ApiLogState {\r\n Success = 'success',\r\n Failed = 'failed',\r\n Deleted = 'deleted'\r\n}","export enum ProcessState {\r\n Queued = 'Q',\r\n Running = 'R',\r\n Completed = 'C',\r\n Killed = 'K',\r\n Deleted = 'D',\r\n Failed = 'F'\r\n}\r\n","export enum CronLogState {\n Message = 'message',\n Disabled = 'disabled',\n Started = 'started',\n Running = 'running',\n Completed = 'completed',\n Failed = 'failed',\n Killed = 'killed',\n Queued = 'queued',\n Reset = 'reset',\n Stagnant = 'stagnant',\n LongRunning = 'long_running',\n}\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const FS_SYSTEM_CONFIG = new InjectionToken<any[]>('fs-system-config');\r\n","import { Component, OnInit, ChangeDetectionStrategy, Input, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { FsMessage } from '@firestitch/message';\r\nimport { BuildData, FsBuildService } from '@firestitch/build';\r\n\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { differenceInMinutes } from 'date-fns';\r\n\r\nimport { DashboardAction } from './../../interfaces/dashboard-action';\r\n\r\n\r\n@Component({\r\n selector: 'fs-system-dashboard',\r\n templateUrl: 'dashboard.component.html',\r\n styleUrls: [ 'dashboard.component.scss' ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n\r\n public dashboard;\r\n public buttonActions: DashboardAction[] = [];\r\n public build: BuildData;\r\n public menuActions: DashboardAction[] = [];\r\n\r\n private _destroy$ = new Subject();\r\n\r\n @Input() init: Function;\r\n @Input() upgrade: Function;\r\n @Input() load: Function;\r\n\r\n @Input() actions: DashboardAction[] = [];\r\n\r\n constructor(\r\n private _message: FsMessage,\r\n private _cdRef: ChangeDetectorRef,\r\n private _buildService: FsBuildService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this._load();\r\n this.buttonActions = this.actions.filter(item => { return !item.menu; });\r\n this.menuActions = this.actions.filter(item => { return item.menu; });\r\n\r\n this.build = this._buildService.build;\r\n this._buildService.buildChange$\r\n .pipe(\r\n takeUntil(this._destroy$)\r\n )\r\n .subscribe((build: BuildData) => {\r\n this.build = build;\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n\r\n private _load() {\r\n this.load()\r\n .subscribe((dashboard) => {\r\n this.dashboard = dashboard;\r\n this.dashboard.cronRanAttention = !dashboard.cronRan ||\r\n differenceInMinutes(new Date(), new Date(dashboard.cronRan)) > 15;\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n\r\n public ngOnDestroy() {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public actionClick(action) {\r\n action.click();\r\n }\r\n\r\n public initClick() {\r\n this.init()\r\n .subscribe(() => {\r\n this._message.success('Successfully initialized the system');\r\n });\r\n }\r\n\r\n public upgradeClick() {\r\n this.upgrade()\r\n .subscribe(() => {\r\n this._load();\r\n this._message.success('Successfully upgraded the system');\r\n });\r\n }\r\n}\r\n","\r\nexport function indexNameValue(arry) {\r\n const obj = {};\r\n arry.forEach(item => {\r\n obj[item.value] = item.name;\r\n });\r\n\r\n return obj;\r\n}\r\n","import { CronLogState } from '../enums';\n\nexport const CronLogStates = [\n { name: 'Message', value: CronLogState.Message, color: '#29B7FF' },\n { name: 'Disabled', value: CronLogState.Disabled, color: '#29B7FF' },\n { name: 'Started', value: CronLogState.Started, color: '#34BD43' },\n { name: 'Running', value: CronLogState.Running, color: '#34BD43' },\n { name: 'Completed', value: CronLogState.Completed, color: '#34BD43' },\n { name: 'Failed', value: CronLogState.Failed, color: '#FA7567' },\n { name: 'Killed', value: CronLogState.Killed, color: '#29B7FF' },\n { name: 'Queued', value: CronLogState.Queued, color: '#29B7FF' },\n { name: 'Reset', value: CronLogState.Reset, color: '#29B7FF' },\n { name: 'Stagnant', value: CronLogState.Stagnant, color: '#FA7567' },\n { name: 'Long Running', value: CronLogState.LongRunning, color: '#FA7567' },\n];\n","import { CronState } from '../enums';\r\n\r\nexport const CronStates = [\r\n { name: 'Running', value: CronState.Running },\r\n { name: 'Idle', value: CronState.Idle },\r\n { name: 'Failed', value: CronState.Failed },\r\n { name: 'Queued', value: CronState.Queued },\r\n { name: 'Disabled', value: CronState.Disabled }\r\n];\r\n","import { ApiLogState } from '../enums';\r\n\r\nexport const ApiLogStates = [\r\n { name: 'Success', value: ApiLogState.Success },\r\n { name: 'Failed', value: ApiLogState.Failed },\r\n { name: 'Deleted', value: ApiLogState.Deleted }\r\n];\r\n","import { ProcessState } from '../enums';\r\n\r\nexport const ProcessStates = [\r\n { name: 'Queued', value: ProcessState.Queued },\r\n { name: 'Running', value: ProcessState.Running },\r\n { name: 'Completed', value: ProcessState.Completed },\r\n { name: 'Killed', value: ProcessState.Killed },\r\n { name: 'Failed', value: ProcessState.Failed },\r\n { name: 'Deleted', value: ProcessState.Deleted }\r\n];\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CronLogStates } from '../../consts/cron-log-states.const';\r\nimport { indexNameValue } from '../../helpers/index-name-value';\r\n\r\n\r\n@Component({\r\n templateUrl: './cron-log.component.html',\r\n styleUrls: ['./cron-log.component.scss']\r\n})\r\nexport class CronLogComponent implements OnInit {\r\n\r\n public cronLog;\r\n public CronLogStates = indexNameValue(CronLogStates);\r\n public CronLogStateColors = {};\r\n \r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private _data,\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.cronLog = this._data.cronLog;\r\n this.CronLogStateColors = CronLogStates\r\n .reduce((accum, cronLogState) => {\r\n accum[cronLogState.value] = cronLogState.color;\r\n return accum;\r\n }, {});\r\n }\r\n}\r\n","import { Component, OnInit, Inject, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nimport { FsListConfig } from '@firestitch/list';\r\n\r\nimport { CronLogStates } from '../../consts/cron-log-states.const';\r\nimport { CronStates } from '../../consts';\r\nimport { indexNameValue } from '../../helpers/index-name-value';\r\nimport { CronLogComponent } from '../cron-log';\r\nimport { ItemType } from '@firestitch/filter';\r\n\r\n\r\n@Component({\r\n templateUrl: './cron.component.html',\r\n styleUrls: ['./cron.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CronComponent implements OnInit {\r\n\r\n public cron;\r\n public tabIndex = 0;\r\n public CronStates = indexNameValue(CronStates);\r\n public CronLogStates = indexNameValue(CronLogStates);\r\n public CronLogStateColors = {};\r\n\r\n public config: FsListConfig;\r\n public cronActions;\r\n \r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private _data,\r\n private _dialog: MatDialog,\r\n private _cdRef: ChangeDetectorRef,\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.load();\r\n this.CronLogStateColors = CronLogStates\r\n .reduce((accum, cronLogState) => {\r\n accum[cronLogState.value] = cronLogState.color;\r\n return accum;\r\n }, {});\r\n }\r\n\r\n public cronLogOpen(cronLog): void {\r\n this._dialog.open(CronLogComponent, {\r\n data: { \r\n cronLog,\r\n },\r\n width: '85%'\r\n }); \r\n }\r\n\r\n public cronActionClick(cronAction) {\r\n cronAction.action(this.cron)\r\n .subscribe(() => {\r\n this.load();\r\n });\r\n }\r\n\r\n public selectedIndexChange(index) {\r\n this.tabIndex = index;\r\n }\r\n \r\n public load(): void {\r\n this._data.loadCron(this._data.cron)\r\n .subscribe((cron) => {\r\n this.cron = {\r\n ...this._data.cron,\r\n ...cron,\r\n };\r\n\r\n if(this._data.loadCronLogs) {\r\n this.config = {\r\n filters: [\r\n {\r\n type: ItemType.Select,\r\n name: 'state',\r\n label: 'Status',\r\n values: [\r\n { name: 'All', value: null },\r\n ...CronLogStates,\r\n ],\r\n },\r\n {\r\n type: ItemType.DateRange,\r\n name: 'date',\r\n label: ['From Date', 'To Date'],\r\n },\r\n ], \r\n fetch: (query) => {\r\n query = {\r\n ...query,\r\n cronId: this.cron.id,\r\n };\r\n\r\n return this._data.loadCronLogs(query);\r\n },\r\n };\r\n }\r\n\r\n this.cronActions = this._data.cronActions\r\n .filter((cronLogAction) => {\r\n return cronLogAction.show(this.cron);\r\n });\r\n\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\nimport { FsMessage } from '@firestitch/message';\r\nimport { ItemType } from '@firestitch/filter';\r\nimport { FsListConfig, FsListComponent, FsListActionSelected } from '@firestitch/list';\r\n\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { indexNameValue } from '../../helpers/index-name-value';\r\nimport { CronComponent } from '../cron/cron.component';\r\nimport { CronStates } from '../../consts';\r\nimport { CronState } from '../../enums';\r\nimport { SelectionActionType } from '@firestitch/selection';\r\n\r\n\r\n@Component({\r\n selector: 'fs-system-crons',\r\n templateUrl: './crons.component.html',\r\n styleUrls: ['./crons.component.scss'],\r\n})\r\nexport class CronsComponent implements OnInit {\r\n\r\n @ViewChild(FsListComponent, { static: true }) list: FsListComponent;\r\n\r\n @Input() public enable: (data: any) => Observable<any>;\r\n @Input() public disable: (data: any) => Observable<any>;\r\n @Input() public kill: (data: any) => Observable<any>;\r\n @Input() public queue: (data: any) => Observable<any>;\r\n @Input() public run: (data: any) => Observable<any>;\r\n @Input() public loadCrons: (data: any) => Observable<any[]>;\r\n @Input() public loadCron: (data: any) => Observable<any>;\r\n @Input() public loadCronLogs: (data: any) => Observable<{ data: any[], paging: any }>;\r\n @Input() public bulk: (actionName: string, data: any[]) => Observable<any>;\r\n\r\n public config: FsListConfig = null;\r\n public cronStates = indexNameValue(CronStates);\r\n\r\n constructor(\r\n private _message: FsMessage,\r\n private _dialog: MatDialog,\r\n ) { }\r\n\r\n public ngOnInit(): void {\r\n this._configList();\r\n }\r\n\r\n private _configList(): void {\r\n this.config = {\r\n paging: false,\r\n filters: [\r\n {\r\n type: ItemType.Keyword,\r\n name: 'keyword',\r\n label: 'Search'\r\n }\r\n ],\r\n rowActions: this.getCronActions()\r\n .map((rowAction) => {\r\n return {\r\n ...rowAction,\r\n click: (cron) => {\r\n rowAction.action(cron)\r\n .subscribe();\r\n },\r\n }\r\n }),\r\n fetch: query => {\r\n query.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n return this.loadCrons(query)\r\n .pipe(\r\n map((response) => ({ data: response }))\r\n );\r\n }, \r\n };\r\n\r\n if(this.bulk) {\r\n this.config.selection = {\r\n selectAll: false,\r\n actions: [\r\n {\r\n type: SelectionActionType.Action,\r\n name: 'disable',\r\n label: 'Disable'\r\n },\r\n {\r\n type: SelectionActionType.Action,\r\n name: 'enable',\r\n label: 'Enable'\r\n },\r\n ],\r\n actionSelected: (action: FsListActionSelected) => {\r\n return this.bulk(action.action.name, action.selected)\r\n .pipe(\r\n tap(() => {\r\n this.list.reload();\r\n this._message.success('Applied Changes');\r\n }),\r\n );\r\n },\r\n };\r\n }\r\n }\r\n\r\n public open(cron) {\r\n this._dialog.open(CronComponent, {\r\n data: { \r\n cron,\r\n loadCronLogs: this.loadCronLogs,\r\n loadCron: this.loadCron,\r\n cronActions: this.getCronActions(),\r\n },\r\n width: '85%'\r\n });\r\n } \r\n\r\n public getCronActions() {\r\n return [\r\n {\r\n action: (data) => {\r\n return this.queue(data)\r\n .pipe(\r\n tap(() => {\r\n this._message.success('Queued cron');\r\n this.list.reload();\r\n }),\r\n );\r\n },\r\n label: 'Queue',\r\n show: (cron) => {\r\n return cron.state === CronState.Idle || cron.state === CronState.Failed;\r\n },\r\n },\r\n {\r\n action: (data) => {\r\n return this.run(data)\r\n .pipe(\r\n tap(() => {\r\n this._message.success('Cron ran');\r\n this.list.reload();\r\n })\r\n );\r\n },\r\n label: 'Run',\r\n show: (cron) => {\r\n return cron.state === CronState.Idle || cron.state === CronState.Failed;\r\n },\r\n },\r\n {\r\n action: (data) => {\r\n return this.enable(data)\r\n .pipe(\r\n tap(() => {\r\n this._message.success('Enabled cron');\r\n this.list.reload();\r\n }),\r\n );\r\n },\r\n label: 'Enable',\r\n show: (cron) => {\r\n return cron.state === CronState.Disabled;\r\n },\r\n },\r\n {\r\n action: (data) => {\r\n return this.disable(data)\r\n .pipe(\r\n tap(() => {\r\n this._message.success('Disabled cron');\r\n this.list.reload();\r\n }),\r\n );\r\n },\r\n label: 'Disable',\r\n show: (cron) => {\r\n return cron.state === CronState.Idle || cron.state === CronState.Failed;\r\n },\r\n },\r\n {\r\n action: (data) => {\r\n return this.kill(data)\r\n .pipe(\r\n tap(() => {\r\n this._message.success('Killed cron');\r\n this.list.reload();\r\n }),\r\n );\r\n },\r\n label: 'Kill',\r\n show: (cron) => {\r\n return cron.state === CronState.Running;\r\n },\r\n },\r\n ]; \r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { FsPrompt } from '@firestitch/prompt';\r\nimport { parse } from '@firestitch/date';\r\nimport { FsMessage } from '@firestitch/message';\r\n\r\nimport { groupBy, reduce } from 'lodash-es';\r\nimport { ClipboardService } from 'ngx-clipboard';\r\n\r\nimport { SettingInterfaceType } from '../../enums';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'fs-system-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n\r\n @Input() public loadSettings: () => Observable<any[]>;\r\n @Input() public save: (data: any, group: string) => Observable<any>;\r\n\r\n @Output() public fileRemove = new EventEmitter();\r\n @Output() public fileSelect = new EventEmitter<{ setting: any, file: Blob }>();\r\n\r\n public groupedSettings = [];\r\n public groups = [];\r\n public SettingInterfaceType = SettingInterfaceType;\r\n\r\n constructor(\r\n private _message: FsMessage,\r\n private _clipboardService: ClipboardService,\r\n private _prompt: FsPrompt,\r\n private _cdRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n public ngOnInit(): void {\r\n this.loadSettings()\r\n .subscribe((settings) => {\r\n settings = settings\r\n .filter((setting) => {\r\n return setting.interfaceType !== SettingInterfaceType.None;\r\n })\r\n .map((setting) => {\r\n switch (setting.interfaceType) {\r\n case SettingInterfaceType.Date:\r\n case SettingInterfaceType.Time:\r\n setting.value = parse(setting.value);\r\n\r\n case SettingInterfaceType.SelectMultiple:\r\n setting.value = Array.isArray(setting.value) ? setting.value : [];\r\n break;\r\n }\r\n return setting;\r\n });\r\n\r\n this.groupedSettings = groupBy(settings, (item) => {\r\n return item.group;\r\n });\r\n \r\n this.groups = Object.keys(this.groupedSettings);\r\n this._cdRef.markForCheck();\r\n });\r\n }\r\n\r\n public export(event: UIEvent, settings): void {\r\n event.stopPropagation();\r\n const data = settings.map((setting) => {\r\n return {\r\n name: setting.name,\r\n value: setting.value,\r\n group: setting.group,\r\n }\r\n });\r\n\r\n this._clipboardService.copy(JSON.stringify(data));\r\n this._message.success('Copied to clipboard');\r\n }\r\n\r\n public import(event: UIEvent, group): void {\r\n event.stopPropagation();\r\n this._prompt.input({\r\n label: 'JSON Import',\r\n title: 'Import Settings',\r\n commitLabel: 'Import',\r\n required: true,\r\n }).subscribe((value: string) => {\r\n if (value) {\r\n try {\r\n const settings = this.groupedSettings[group];\r\n const data = JSON.parse(value);\r\n\r\n data.forEach((item) => {\r\n const setting = settings.find((s) => {\r\n return item.name === s.name;\r\n });\r\n\r\n if (setting) {\r\n Object.assign(setting, item);\r\n }\r\n });\r\n\r\n this._cdRef.markForCheck();\r\n } catch (e) {\r\n this._message.error(e);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public saveGroup(group): void {\r\n const settings = this.groupedSettings[group];\r\n const values = reduce(settings, (result, value, key) => {\r\n return (result[value.name] = value.value, result);\r\n }, {});\r\n\r\n this.save(group, values)\r\n .subscribe(() => {\r\n this._message.success('Changes Saved');\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\nimport { FsFileManagerConfig } from '@firestitch/file-manager';\r\n\r\n\r\n@Component({\r\n selector: 'fs-system-file-manager',\r\n templateUrl: './file-manager.component.html',\r\n styleUrls: ['./file-manager.component.scss']\r\n})\r\nexport class FileManagerComponent implements OnInit {\r\n\r\n @Input() fetch: Function;\r\n @Input() deleteFile: Function;\r\n @Input() deleteDirectory: Function;\r\n @Input() createDirectory: Function;\r\n @Input() download: Function;\r\n @Input() upload: Function;\r\n\r\n public config: FsFileManagerConfig;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this._configFileManager();\r\n }\r\n\r\n private _configFileManager() {\r\n this.config = {\r\n fetch: (path) => {\r\n return this.fetch(path);\r\n },\r\n deleteFile: (path) => {\r\n return this.deleteFile(path)\r\n },\r\n deleteDirectory: (path) => {\r\n return this.deleteDirectory(path)\r\n },\r\n createDirectory: (path) => {\r\n return this.createDirectory(path)\r\n },\r\n download: (path) => {\r\n return this.download(path);\r\n },\r\n upload: (path, file) => {\r\n return this.upload(path, file);\r\n }\r\n };\r\n }\r\n\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\n\r\n\r\n@Pipe({\r\n name: 'keyNameValue'\r\n})\r\n@Injectable()\r\nexport class KeyNameValuePipe implements PipeTransform {\r\n\r\n transform(values): any {\r\n return Object.keys(values).map((key) => {\r\n return { value: key, name: values[key] }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport { ProcessStates } from './../../consts/process-states.const';\r\nimport { indexNameValue } from '../../helpers/index-name-value';\r\nimport { ProcessState } from './../../enums/process-state.enum';\r\n\r\n@Component({\r\n templateUrl: './process.component.html',\r\n styleUrls: ['./process.component.scss']\r\n})\r\nexport class ProcessComponent implements OnInit {\r\n\r\n public process;\r\n public ProcessStates;\r\n public ProcessState = ProcessState;\r\n\r\n constructor(private _dialogRef: MatDialogRef<ProcessComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data) {}\r\n\r\n public ngOnInit() {\r\n\r\n this.ProcessStates = indexNameValue(ProcessStates);\r\n\r\n if (this.data.loadProcess) {\r\n this.load();\r\n } else {\r\n this.process = this.data.process;\r\n }\r\n }\r\n\r\n public load() {\r\n this.data.loadProcess(this.data.process)\r\n .subscribe((process) => {\r\n this.process = process;\r\n });\r\n }\r\n}\r\n","import { ProcessComponent } from './../process/process.component';\r\nimport { ProcessState } from '../../enums';\r\nimport { FsMessage } from '@firestitch/message';\r\nimport { ProcessAction } from './../../interfaces/process-action';\r\nimport { Component, OnInit, Input, ViewChild, OnDestroy } from '@angular/core';\r\n\r\nimport { ItemType } from '@firestitch/filter';\r\nimport { ProcessStates } from '../../consts';\r\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { indexNameValue } from '../../helpers/index-name-value';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'fs-system-processes',\r\n templateUrl: './processes.component.html',\r\n styleUrls: ['./processes.component.scss']\r\n})\r\nexport class ProcessesComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(FsListComponent) list: FsListComponent;\r\n\r\n @Input() public loadProcesses: (data: any) => Observable<{ data: any[], paging: any }>;\r\n @Input() public loadProcess: (data: any) => Observable<any>;\r\n @Input() public run: (data: any) => Observable<any>;\r\n @Input() public kill: (data: any) => Observable<any>;\r\n @Input() public delete: (data: any) => Observable<any>;\r\n @Input() public download: (data: any) => any;\r\n @Input() public actions: ProcessAction[] = [];\r\n\r\n public config: FsListConfig = null;\r\n public ProcessStates = indexNameValue(ProcessStates);\r\n public ProcessState = ProcessState;\r\n\r\n private _destroy$ = new Subject();\r\n\r\n constructor(\r\n private _dialog: MatDialog,\r\n private _message: FsMessage\r\n ) { }\r\n\r\n public ngOnInit() {\r\n this._configList();\r\n }\r\n\r\n private _configList() {\r\n\r\n this.config = {\r\n actions: [],\r\n rowActions: [],\r\n filters: [\r\n {\r\n type: ItemType.Keyword,\r\n name: 'keyword',\r\n label: 'Search'\r\n },\r\n {\r\n type: ItemType.Select,\r\n name: 'state',\r\n label: 'Status',\r\n values: ProcessStates\r\n },\r\n ],\r\n fetch: query => {\r\n return this.loadProcesses(query)\r\n .pipe(\r\n map((response: any) => ({ data: response.data, paging: response.paging }))\r\n );\r\n }\r\n };\r\n\r\n if (this.run) {\r\n this.config.rowActions.push({\r\n label: 'Run',\r\n click: (data) => {\r\n this._message.info('Running process...');\r\n this.run(data)\r\n .subscribe(() => {\r\n this.list.reload();\r\n this._message.success('Succesfully ran process');\r\n });\r\n\r\n setTimeout(() => {\r\n this.list.reload();\r\n }, 500);\r\n }\r\n });\r\n }\r\n\r\n if (this.kill) {\r\n this.config.rowActions.push({\r\n label: 'Kill',\r\n show: (data) => {\r\n return !!data.pid;\r\n },\r\n click: (data) => {\r\n this._message.info('Killing process...');\r\n this.kill(data)\r\n .subscribe(() => {\r\n this.list.reload();\r\n this._message.success('Succesfully killed process');\r\n });\r\n\r\n setTimeout(() => {\r\n this.list.reload();\r\n }, 500);\r\n }\r\n });\r\n }\r\n\r\n if (this.delete) {\r\n this.config.rowActions.push({\r\n label: 'Delete',\r\n click: (data) => {\r\n this.delete(data)\r\n .subscribe(() => {\r\n this.list.reload();\r\n this._message.success('Deleted process');\r\n });\r\n }\r\n });\r\n }\r\n\r\n this.actions.forEach(action => {\r\n this.config.actions.push({\r\n primary: false,\r\n label: action.label,\r\n menu: action.menu,\r\n click: () => {\r\n if (action.click) {\r\n action.click();\r\n }\r\n\r\n if (action.component) {\r\n const dialogRef = this._dialog.open(action.component, {\r\n width: '800px'\r\n });\r\n\r\n dialogRef.afterClosed()\r\n .pipe(\r\n takeUntil(this._destroy$)\r\n )\r\n .subscribe(result => {\r\n this.list.reload();\r\n });\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n public open(process) {\r\n this._dialog.open(ProcessComponent, {\r\n data: {\r\n process,\r\n loadProcess: this.loadProcess,\r\n },\r\n width: '85%'\r\n });\r\n }\r\n\r\n public ngOnDestroy() {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n\r\n@Component({\r\n templateUrl: './server-log.component.html',\r\n styleUrls: ['./server-log.component.scss']\r\n})\r\nexport class ServerLogComponent implements OnInit {\r\n\r\n public log;\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) public data) {}\r\n\r\n public ngOnInit() {\r\n\r\n if (this.data.log) {\r\n this.log = this.data.log;\r\n\r\n try {\r\n this.log.backtrace = JSON.parse(this.log.backtrace);\r\n } catch (e) {}\r\n\r\n try {\r\n this.log.server = JSON.parse(this.log.server);\r\n } catch (e) {}\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\r\n\r\nimport { FsListConfig, FsListComponent } from '@firestitch/list';\r\nimport { map } from 'rxjs/operators';\r\nimport { ItemType } from '@firestitch/filter';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ServerLogComponent } from '../server-log/server-log.component';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'fs-system-server-logs',\r\n templateUrl: './server-logs.component.html',\r\n styleUrls: ['./server-logs.component.scss']\r\n})\r\nexport class ServerLogsComponent implements OnInit {\r\n\r\n @ViewChild('list', { static: true }) public list: FsListComponent;\r\n\r\n @Input() public loadLogs: (data: any) => Observable<{ data: any[], paging: any }>;\r\n\r\n public config: FsListConfig = null;\r\n public logTypes = [];\r\n\r\n constructor(\r\n private _dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this._configList();\r\n }\r\n\r\n private _configList() {\r\n\r\n this.config = {\r\n filters: [\r\n {\r\n type: ItemType.Keyword,\r\n name: 'keyword',\r\n label: 'Search'\r\n }\r\n ],\r\n fetch: query => {\r\n return this.loadLogs(query)\r\n .pipe(\r\n map((response: any) => ({ data: response.data, paging: response.paging }))\r\n );\r\n }\r\n };\r\n }\r\n\r\n public open(log) {\r\n this._dialog.open(ServerLogComponent, {\r\n data: { log: log },\r\n width: '85%'\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\r\nimport { ItemType } from '@firestitch/filter';\r\nimport { FsListConfig, FsListComponent } from '@firestitch/list';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'fs-system-upgrade-logs',\r\n templateUrl: './upgrade-logs.component.html',\r\n styleUrls: ['./upgrade-logs.component.scss']\r\n})\r\nexport class UpgradeLogsComponent implements OnInit {\r\n\r\n @ViewChild(FsListComponent, { static: true }) list: FsListComponent;\r\n\r\n @Input() loadUpgradeLogs: (data: any) => Observable<{ data: any[], paging: any }>;\r\n\r\n public config: FsListConfig = null;\r\n public logTypes = [];\r\n\r\n ngOnInit() {\r\n this._configList();\r\n }\r\n private _configList() {\r\n\r\n this.config = {\r\n paging: false,\r\n filters: [\r\n {\r\n type: ItemType.Keyword,\r\n name: 'keyword',\r\n label: 'Search'\r\n }\r\n ],\r\n fetch: query => {\r\n return this.loadUpgradeLogs(query)\r\n .pipe(\r\n map((response: any) => ({ data: response.data, paging: response.paging }))\r\n );\r\n }\r\n };\r\n }\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { ApiLogStates } from '../../consts';\r\nimport { indexNameValue } from '../../helpers/index-name-value';\r\n\r\n\r\n@Component({\r\n templateUrl: './api-log.component.html',\r\n styleUrls: ['./api-log.component.scss']\r\n})\r\nexport class ApiLogComponent implements OnInit {\r\n\r\n public apiLog;\r\n public apiLogStates;\r\n\r\n constructor(private _dialogRef: MatDialogRef<ApiLogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data) {}\r\n\r\n public ngOnInit() {\r\n\r\n this.apiLogStates = indexNameValue(ApiLogStates);\r\n\r\n if (this.data.apiLog) {\r\n this.apiLog = this.data.apiLog;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\r\nimport { ItemType } from '@firestitch/filter';\r\nimport { FsListConfig, FsListComponent } from '@firestitch/list';\r\nimport { map } from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ApiLogStates } from '../../consts';\r\nimport { ApiLogComponent } from '../api-log/api-log.component';\r\nimport { indexNameValue } from '../../helpers/index-name-value';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'fs-system-api-logs',\r\n templateUrl: './api-logs.component.html',\r\n styleUrls: ['./api-logs.component.scss']\r\n})\r\nexport class ApiLogsComponent implements OnInit {\r\n\r\n @ViewChild(FsListComponent, { static: true }) \r\n public list: FsListComponent;\r\n\r\n @Input() loadApiLogs: (data: any) => Observable<{ data: any[], paging: any }>;\r\n\r\n public config: FsListConfig = null;\r\n public apiLogStates = indexNameValue(ApiLogStates);\r\n\r\n constructor(\r\n private _dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this._configList();\r\n }\r\n\r\n private _configList() {\r\n\r\n this.config = {\r\n filters: [\r\n {\r\n type: ItemType.Keyword,\r\n name: 'keyword',\r\n label: 'Search'\r\n },\r\n {\r\n type: ItemType.Select,\r\n name: 'state',\r\n label: 'Status',\r\n values: ApiLogStates\r\n },\r\n {\r\n name: 'createDate',\r\n type: ItemType.DateRange,\r\n label: ['From Date', 'To Date'],\r\n }\r\n ],\r\n fetch: query => {\r\n Object.assign(query, { });\r\n return this.loadApiLogs(query)\r\n .pipe(\r\n map((response: any) => ({ data: response.data, paging: response.paging }))\r\n );\r\n }\r\n };\r\n }\r\n\r\n public open(apiLog) {\r\n this._dialog.open(ApiLogComponent, {\r\n data: { apiLog: apiLog },\r\n width: '85%'\r\n });\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'fs-system-info',\r\n templateUrl: 'info.component.html',\r\n styleUrls: [ 'info.component.scss' ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class InfoComponent implements AfterViewInit {\r\n\r\n @ViewChild('iframe') \r\n public iframe: ElementRef;\r\n\r\n @Input() public load: () => Observable<any>;\r\n\r\n ngAfterViewInit() {\r\n this._load();\r\n }\r\n\r\n private _load() {\r\n this.load()\r\n .subscribe((info) => {\r\n\r\n info += '<style>body { background: transparent; }</style>';\r\n\r\n const doc = this.iframe.nativeElement.contentDocument || this.iframe.nativeElement.contentWindow;\r\n doc.open();\r\n doc.write(info);\r\n doc.close();\r\n const scrollHeight = (this.iframe.nativeElement.contentWindow.document.documentElement.scrollHeight + 100);\r\n this.iframe.nativeElement.style.height = `${scrollHeight}px`;\r\n });\r\n }\r\n}\r\n","import { FsSystemConfig } from './interfaces/system-config';\r\nimport { FS_SYSTEM_CONFIG } from './injectors/system-config.injector';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nimport { FsDateModule } from '@firestitch/date';\r\nimport { FsDatePickerModule } from '@firestitch/datepicker';\r\nimport { FsSkeletonModule } from '@firestitch/skeleton';\r\nimport { FsListModule } from '@firestitch/list';\r\nimport { FsFileManagerModule } from '@firestitch/file-manager';\r\nimport { FsDialogModule } from '@firestitch/dialog';\r\nimport { FsLabelModule } from '@firestitch/label';\r\nimport { FsFileModule } from '@firestitch/file';\r\nimport { FsMenuModule } from '@firestitch/menu';\r\n\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { CronsComponent } from './components/crons/crons.component';\r\nimport { SettingsComponent } from './components/settings/settings.component';\r\nimport { FileManagerComponent } from './components/file-manager/file-manager.component';\r\nimport { KeyNameValuePipe } from './pipes/key-name-value.pipe';\r\nimport { ProcessesComponent } from './components/processes/processes.component';\r\nimport { ServerLogsComponent } from './components/server-logs/server-logs.component';\r\nimport { ServerLogComponent } from './components/server-log/server-log.component';\r\nimport { UpgradeLogsComponent } from './components/upgrade-logs/upgrade-logs.component';\r\nimport { ApiLogsComponent } from './components/api-logs/api-logs.component';\r\nimport { ApiLogComponent } from './components/api-log/api-log.component';\r\nimport { InfoComponent } from './components/info/info.component';\r\nimport { ProcessComponent } from './components/process/process.component';\r\nimport { ClipboardModule } from 'ngx-clipboard';\r\nimport { CronComponent } from './components/cron';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { CronLogComponent } from './components/cron-log';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n FormsModule,\r\n\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatDialogModule,\r\n MatTabsModule,\r\n\r\n FsDateModule,\r\n FsSkeletonModule,\r\n FsListModule,\r\n FsFileModule,\r\n FsFileManagerModule,\r\n FsLabelModule,\r\n FsDialogModule,\r\n FsDatePickerModule,\r\n FsMenuModule,\r\n\r\n ClipboardModule,\r\n ],\r\n exports: [\r\n DashboardComponent,\r\n CronsComponent,\r\n SettingsComponent,\r\n FileManagerComponent,\r\n ProcessesComponent,\r\n ServerLogsComponent,\r\n UpgradeLogsComponent,\r\n ApiLogsComponent,\r\n InfoComponent,\r\n ],\r\n declarations: [\r\n DashboardComponent,\r\n CronsComponent,\r\n SettingsComponent,\r\n KeyNameValuePipe,\r\n FileManagerComponent,\r\n ProcessesComponent,\r\n ServerLogComponent,\r\n ServerLogsComponent,\r\n UpgradeLogsComponent,\r\n ApiLogsComponent,\r\n ApiLogComponent,\r\n InfoComponent,\r\n ProcessComponent,\r\n CronComponent,\r\n CronLogComponent,\r\n ],\r\n})\r\nexport class FsSystemModule {\r\n static forRoot(config: FsSystemConfig): ModuleWithProviders<FsSystemModule> {\r\n return {\r\n ngModule: FsSystemModule,\r\n providers: [\r\n { provide: FS_SYSTEM_CONFIG, useValue: config || {} },\r\n ]\r\n };\r\n }\r\n}\r\n\r\n\r\n\r\n"]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
-
import { Component, Inject } from '@angular/core';
|
|
3
|
-
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
4
|
-
import { ApiLogStates } from '../../consts';
|
|
5
|
-
import { indexNameValue } from '../../helpers/index-name-value';
|
|
6
|
-
var ApiLogComponent = /** @class */ (function () {
|
|
7
|
-
function ApiLogComponent(_dialogRef, data) {
|
|
8
|
-
this._dialogRef = _dialogRef;
|
|
9
|
-
this.data = data;
|
|
10
|
-
}
|
|
11
|
-
ApiLogComponent.prototype.ngOnInit = function () {
|
|
12
|
-
this.apiLogStates = indexNameValue(ApiLogStates);
|
|
13
|
-
if (this.data.apiLog) {
|
|
14
|
-
this.apiLog = this.data.apiLog;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
ApiLogComponent.ctorParameters = function () { return [
|
|
18
|
-
{ type: MatDialogRef },
|
|
19
|
-
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
|
20
|
-
]; };
|
|
21
|
-
ApiLogComponent = __decorate([
|
|
22
|
-
Component({
|
|
23
|
-
template: "<fs-dialog *fsSkeleton=\"apiLog\">\r\n <div mat-dialog-title>API Log</div>\r\n <mat-dialog-content>\r\n <div fxLayout=\"column\">\r\n <fs-label-field>\r\n <fs-label>\r\n Type\r\n </fs-label>\r\n {{apiLog.type}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{apiLogStates[apiLog.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Date\r\n </fs-label>\r\n {{apiLog.createDate|fsDateFormat: 'full-date-time'}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"apiLog.length\">\r\n <fs-label>\r\n Duration\r\n </fs-label>\r\n {{ apiLog.length | fsDateDuration }}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"apiLog.code\">\r\n <fs-label>\r\n Code\r\n </fs-label>\r\n {{apiLog.code}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"apiLog.message\">\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n {{apiLog.message}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"apiLog.url\">\r\n <fs-label>\r\n URL\r\n </fs-label>\r\n {{apiLog.url}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"apiLog.request\">\r\n <fs-label>\r\n Request\r\n </fs-label>\r\n <pre>{{apiLog.request|json}}</pre>\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"apiLog.response\">\r\n <fs-label>\r\n Response\r\n </fs-label>\r\n <pre>{{apiLog.response|json}}</pre>\r\n </fs-label-field>\r\n\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Done</button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n",
|
|
24
|
-
styles: [""]
|
|
25
|
-
}),
|
|
26
|
-
__param(1, Inject(MAT_DIALOG_DATA)),
|
|
27
|
-
__metadata("design:paramtypes", [MatDialogRef, Object])
|
|
28
|
-
], ApiLogComponent);
|
|
29
|
-
return ApiLogComponent;
|
|
30
|
-
}());
|
|
31
|
-
export { ApiLogComponent };
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9zeXN0ZW0vIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50cy9hcGktbG9nL2FwaS1sb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBT2hFO0lBS0UseUJBQW9CLFVBQXlDLEVBQ2pCLElBQUk7UUFENUIsZUFBVSxHQUFWLFVBQVUsQ0FBK0I7UUFDakIsU0FBSSxHQUFKLElBQUksQ0FBQTtJQUFHLENBQUM7SUFFN0Msa0NBQVEsR0FBZjtRQUVFLElBQUksQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWpELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNoQztJQUNILENBQUM7O2dCQVYrQixZQUFZO2dEQUMvQixNQUFNLFNBQUMsZUFBZTs7SUFOeEIsZUFBZTtRQUozQixTQUFTLENBQUM7WUFDVCxxNURBQXVDOztTQUV4QyxDQUFDO1FBT2EsV0FBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7eUNBREosWUFBWTtPQUxqQyxlQUFlLENBZ0IzQjtJQUFELHNCQUFDO0NBQUEsQUFoQkQsSUFnQkM7U0FoQlksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBcGlMb2dTdGF0ZXMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xyXG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FwaS1sb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FwaS1sb2cuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBpTG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIGFwaUxvZztcclxuICBwdWJsaWMgYXBpTG9nU3RhdGVzO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBcGlMb2dDb21wb25lbnQ+LFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSkge31cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuYXBpTG9nU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoQXBpTG9nU3RhdGVzKTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLmFwaUxvZykge1xyXG4gICAgICB0aGlzLmFwaUxvZyA9IHRoaXMuZGF0YS5hcGlMb2c7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Component, ViewChild, Input } from '@angular/core';
|
|
3
|
-
import { ItemType } from '@firestitch/filter';
|
|
4
|
-
import { FsListComponent } from '@firestitch/list';
|
|
5
|
-
import { map } from 'rxjs/operators';
|
|
6
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
7
|
-
import { ApiLogStates } from '../../consts';
|
|
8
|
-
import { ApiLogComponent } from '../api-log/api-log.component';
|
|
9
|
-
import { indexNameValue } from '../../helpers/index-name-value';
|
|
10
|
-
var ApiLogsComponent = /** @class */ (function () {
|
|
11
|
-
function ApiLogsComponent(_dialog) {
|
|
12
|
-
this._dialog = _dialog;
|
|
13
|
-
this.config = null;
|
|
14
|
-
this.apiLogStates = indexNameValue(ApiLogStates);
|
|
15
|
-
}
|
|
16
|
-
ApiLogsComponent.prototype.ngOnInit = function () {
|
|
17
|
-
this._configList();
|
|
18
|
-
};
|
|
19
|
-
ApiLogsComponent.prototype._configList = function () {
|
|
20
|
-
var _this = this;
|
|
21
|
-
this.config = {
|
|
22
|
-
filters: [
|
|
23
|
-
{
|
|
24
|
-
type: ItemType.Keyword,
|
|
25
|
-
name: 'keyword',
|
|
26
|
-
label: 'Search'
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
type: ItemType.Select,
|
|
30
|
-
name: 'state',
|
|
31
|
-
label: 'Status',
|
|
32
|
-
values: ApiLogStates
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
name: 'createDate',
|
|
36
|
-
type: ItemType.DateRange,
|
|
37
|
-
label: ['From Date', 'To Date'],
|
|
38
|
-
}
|
|
39
|
-
],
|
|
40
|
-
fetch: function (query) {
|
|
41
|
-
Object.assign(query, {});
|
|
42
|
-
return _this.loadApiLogs(query)
|
|
43
|
-
.pipe(map(function (response) { return ({ data: response.data, paging: response.paging }); }));
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
ApiLogsComponent.prototype.open = function (apiLog) {
|
|
48
|
-
this._dialog.open(ApiLogComponent, {
|
|
49
|
-
data: { apiLog: apiLog },
|
|
50
|
-
width: '85%'
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
ApiLogsComponent.ctorParameters = function () { return [
|
|
54
|
-
{ type: MatDialog }
|
|
55
|
-
]; };
|
|
56
|
-
__decorate([
|
|
57
|
-
ViewChild(FsListComponent, { static: true }),
|
|
58
|
-
__metadata("design:type", FsListComponent)
|
|
59
|
-
], ApiLogsComponent.prototype, "list", void 0);
|
|
60
|
-
__decorate([
|
|
61
|
-
Input(),
|
|
62
|
-
__metadata("design:type", Function)
|
|
63
|
-
], ApiLogsComponent.prototype, "loadApiLogs", void 0);
|
|
64
|
-
ApiLogsComponent = __decorate([
|
|
65
|
-
Component({
|
|
66
|
-
selector: 'fs-system-api-logs',
|
|
67
|
-
template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a href=\"javascript:;\" (click)=\"open(row)\">{{row.type || 'Unknown'}}</a>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Message</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.message}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{apiLogStates[row.state]}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n <div><small *ngIf=\"row.length\">Duration: {{ row.length | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n",
|
|
68
|
-
styles: [""]
|
|
69
|
-
}),
|
|
70
|
-
__metadata("design:paramtypes", [MatDialog])
|
|
71
|
-
], ApiLogsComponent);
|
|
72
|
-
return ApiLogsComponent;
|
|
73
|
-
}());
|
|
74
|
-
export { ApiLogsComponent };
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWxvZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvc3lzdGVtLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBvbmVudHMvYXBpLWxvZ3MvYXBpLWxvZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFTaEU7SUFVRSwwQkFDVSxPQUFrQjtRQUFsQixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBSnJCLFdBQU0sR0FBaUIsSUFBSSxDQUFDO1FBQzVCLGlCQUFZLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBSS9DLENBQUM7SUFFTCxtQ0FBUSxHQUFSO1FBQ0UsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxzQ0FBVyxHQUFuQjtRQUFBLGlCQTZCQztRQTNCQyxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTztvQkFDdEIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsS0FBSyxFQUFFLFFBQVE7aUJBQ2hCO2dCQUNEO29CQUNFLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTTtvQkFDckIsSUFBSSxFQUFFLE9BQU87b0JBQ2IsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsTUFBTSxFQUFFLFlBQVk7aUJBQ3JCO2dCQUNEO29CQUNFLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsUUFBUSxDQUFDLFNBQVM7b0JBQ3hCLEtBQUssRUFBRSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUM7aUJBQ2hDO2FBQ0Y7WUFDRCxLQUFLLEVBQUUsVUFBQSxLQUFLO2dCQUNWLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUcsQ0FBQyxDQUFDO2dCQUMxQixPQUFPLEtBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO3FCQUMzQixJQUFJLENBQ0gsR0FBRyxDQUFDLFVBQUMsUUFBYSxJQUFLLE9BQUEsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBbEQsQ0FBa0QsQ0FBQyxDQUMzRSxDQUFDO1lBQ04sQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sK0JBQUksR0FBWCxVQUFZLE1BQU07UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ2pDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7WUFDeEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDOztnQkEzQ2tCLFNBQVM7O0lBUjVCO1FBREMsU0FBUyxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztrQ0FDaEMsZUFBZTtrREFBQztJQUVwQjtRQUFSLEtBQUssRUFBRTs7eURBQXNFO0lBTG5FLGdCQUFnQjtRQUw1QixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLGltQ0FBd0M7O1NBRXpDLENBQUM7eUNBWW1CLFNBQVM7T0FYakIsZ0JBQWdCLENBdUQ1QjtJQUFELHVCQUFDO0NBQUEsQUF2REQsSUF1REM7U0F2RFksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xyXG5pbXBvcnQgeyBGc0xpc3RDb25maWcsIEZzTGlzdENvbXBvbmVudCB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFwaUxvZ1N0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XHJcbmltcG9ydCB7IEFwaUxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FwaS1sb2cvYXBpLWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZzLXN5c3RlbS1hcGktbG9ncycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FwaS1sb2dzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcGktbG9ncy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlMb2dzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQFZpZXdDaGlsZChGc0xpc3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIFxyXG4gIHB1YmxpYyBsaXN0OiBGc0xpc3RDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpIGxvYWRBcGlMb2dzOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPHsgZGF0YTogYW55W10sIHBhZ2luZzogYW55IH0+O1xyXG5cclxuICBwdWJsaWMgY29uZmlnOiBGc0xpc3RDb25maWcgPSBudWxsO1xyXG4gIHB1YmxpYyBhcGlMb2dTdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShBcGlMb2dTdGF0ZXMpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fY29uZmlnTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29uZmlnTGlzdCgpIHtcclxuXHJcbiAgICB0aGlzLmNvbmZpZyA9IHtcclxuICAgICAgZmlsdGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLktleXdvcmQsXHJcbiAgICAgICAgICBuYW1lOiAna2V5d29yZCcsXHJcbiAgICAgICAgICBsYWJlbDogJ1NlYXJjaCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLlNlbGVjdCxcclxuICAgICAgICAgIG5hbWU6ICdzdGF0ZScsXHJcbiAgICAgICAgICBsYWJlbDogJ1N0YXR1cycsXHJcbiAgICAgICAgICB2YWx1ZXM6IEFwaUxvZ1N0YXRlc1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ2NyZWF0ZURhdGUnLFxyXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuRGF0ZVJhbmdlLFxyXG4gICAgICAgICAgbGFiZWw6IFsnRnJvbSBEYXRlJywgJ1RvIERhdGUnXSxcclxuICAgICAgICB9XHJcbiAgICAgIF0sXHJcbiAgICAgIGZldGNoOiBxdWVyeSA9PiB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihxdWVyeSwgeyB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQXBpTG9ncyhxdWVyeSlcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+ICh7IGRhdGE6IHJlc3BvbnNlLmRhdGEsIHBhZ2luZzogcmVzcG9uc2UucGFnaW5nIH0pKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuKGFwaUxvZykge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oQXBpTG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHsgYXBpTG9nOiBhcGlMb2cgfSxcclxuICAgICAgd2lkdGg6ICc4NSUnXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { __assign, __decorate, __metadata, __param, __read, __spread } from "tslib";
|
|
2
|
-
import { Component, OnInit, Inject, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
|
|
3
|
-
import { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
4
|
-
import { CronLogStates } from '../../consts/cron-log-states.const';
|
|
5
|
-
import { CronStates } from '../../consts';
|
|
6
|
-
import { indexNameValue } from '../../helpers/index-name-value';
|
|
7
|
-
import { CronLogComponent } from '../cron-log';
|
|
8
|
-
import { ItemType } from '@firestitch/filter';
|
|
9
|
-
var CronComponent = /** @class */ (function () {
|
|
10
|
-
function CronComponent(_data, _dialog, _cdRef) {
|
|
11
|
-
this._data = _data;
|
|
12
|
-
this._dialog = _dialog;
|
|
13
|
-
this._cdRef = _cdRef;
|
|
14
|
-
this.tabIndex = 0;
|
|
15
|
-
this.CronStates = indexNameValue(CronStates);
|
|
16
|
-
this.CronLogStates = indexNameValue(CronLogStates);
|
|
17
|
-
this.CronLogStateColors = {};
|
|
18
|
-
}
|
|
19
|
-
CronComponent.prototype.ngOnInit = function () {
|
|
20
|
-
this.load();
|
|
21
|
-
this.CronLogStateColors = CronLogStates
|
|
22
|
-
.reduce(function (accum, cronLogState) {
|
|
23
|
-
accum[cronLogState.value] = cronLogState.color;
|
|
24
|
-
return accum;
|
|
25
|
-
}, {});
|
|
26
|
-
};
|
|
27
|
-
CronComponent.prototype.cronLogOpen = function (cronLog) {
|
|
28
|
-
this._dialog.open(CronLogComponent, {
|
|
29
|
-
data: {
|
|
30
|
-
cronLog: cronLog,
|
|
31
|
-
},
|
|
32
|
-
width: '85%'
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
CronComponent.prototype.cronActionClick = function (cronAction) {
|
|
36
|
-
var _this = this;
|
|
37
|
-
cronAction.action(this.cron)
|
|
38
|
-
.subscribe(function () {
|
|
39
|
-
_this.load();
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
CronComponent.prototype.selectedIndexChange = function (index) {
|
|
43
|
-
this.tabIndex = index;
|
|
44
|
-
};
|
|
45
|
-
CronComponent.prototype.load = function () {
|
|
46
|
-
var _this = this;
|
|
47
|
-
this._data.loadCron(this._data.cron)
|
|
48
|
-
.subscribe(function (cron) {
|
|
49
|
-
_this.cron = __assign(__assign({}, _this._data.cron), cron);
|
|
50
|
-
if (_this._data.loadCronLogs) {
|
|
51
|
-
_this.config = {
|
|
52
|
-
filters: [
|
|
53
|
-
{
|
|
54
|
-
type: ItemType.Select,
|
|
55
|
-
name: 'state',
|
|
56
|
-
label: 'Status',
|
|
57
|
-
values: __spread([
|
|
58
|
-
{ name: 'All', value: null }
|
|
59
|
-
], CronLogStates),
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
type: ItemType.DateRange,
|
|
63
|
-
name: 'date',
|
|
64
|
-
label: ['From Date', 'To Date'],
|
|
65
|
-
},
|
|
66
|
-
],
|
|
67
|
-
fetch: function (query) {
|
|
68
|
-
query = __assign(__assign({}, query), { cronId: _this.cron.id });
|
|
69
|
-
return _this._data.loadCronLogs(query);
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
_this.cronActions = _this._data.cronActions
|
|
74
|
-
.filter(function (cronLogAction) {
|
|
75
|
-
return cronLogAction.show(_this.cron);
|
|
76
|
-
});
|
|
77
|
-
_this._cdRef.markForCheck();
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
CronComponent.ctorParameters = function () { return [
|
|
81
|
-
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
|
|
82
|
-
{ type: MatDialog },
|
|
83
|
-
{ type: ChangeDetectorRef }
|
|
84
|
-
]; };
|
|
85
|
-
CronComponent = __decorate([
|
|
86
|
-
Component({
|
|
87
|
-
template: "<fs-dialog *fsSkeleton=\"cron\">\r\n <h1 mat-dialog-title>\r\n Cron\r\n <div class=\"small\">{{cron.name}}</div>\r\n </h1>\r\n <mat-dialog-content>\r\n <mat-tab-group (selectedIndexChange)=\"selectedIndexChange($event)\">\r\n <mat-tab label=\"Overview\">\r\n <div class=\"row\">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n {{CronStates[cron.state]}}\r\n </fs-label-field>\r\n\r\n <fs-label-field *ngIf=\"cron.cronSetting\">\r\n <fs-label>\r\n Run Frequency\r\n </fs-label>\r\n {{cron.cronSetting.summary}}\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Last Ran\r\n </fs-label>\r\n <ng-container *ngIf=\"cron.duration===null; else lastRan\">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]=\"cron.createDate\"></fs-date-ago>\r\n <div><small *ngIf=\"cron.duration\">Duration: {{ cron.duration | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </fs-label-field>\r\n </div>\r\n\r\n <fs-label-field *ngIf=\"cron.message\">\r\n <fs-label>\r\n Last Message\r\n </fs-label>\r\n <div class=\"message\">{{cron.message}}</div>\r\n </fs-label-field>\r\n </mat-tab>\r\n <mat-tab label=\"Logs\" *ngIf=\"config\">\r\n <ng-template matTabContent>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"state\" title=\"Status\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a \r\n (click)=\"cronLogOpen(row)\"\r\n [ngStyle]=\"{ color: CronLogStateColors[row.state] }\">\r\n {{CronLogStates[row.state] || row.state}}\r\n </a>\r\n </ng-template>\r\n </fs-list-column>\r\n \r\n <fs-list-column title=\"Message\" class=\"col-message\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <div class=\"message\">{{row.message}}</div>\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column name=\"create_date\" title=\"Date\" class=\"col-date\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list> \r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n </mat-dialog-content>\r\n <mat-dialog-actions> \r\n <button \r\n mat-button \r\n [mat-dialog-close]=\"true\" \r\n color=\"primary\">\r\n Done\r\n </button>\r\n <ng-container *ngIf=\"tabIndex === 0\">\r\n <button \r\n *ngFor=\"let cronAction of cronActions\"\r\n mat-button \r\n (click)=\"cronActionClick(cronAction)\">\r\n {{cronAction.label}}\r\n </button> \r\n </ng-container>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n",
|
|
88
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
89
|
-
styles: [":host ::ng-deep .col-message .message{white-space:break-spaces;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}:host ::ng-deep .col-date{white-space:nowrap}h1 .small{line-height:normal}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}.message{white-space:pre-line}"]
|
|
90
|
-
}),
|
|
91
|
-
__param(0, Inject(MAT_DIALOG_DATA)),
|
|
92
|
-
__metadata("design:paramtypes", [Object, MatDialog,
|
|
93
|
-
ChangeDetectorRef])
|
|
94
|
-
], CronComponent);
|
|
95
|
-
return CronComponent;
|
|
96
|
-
}());
|
|
97
|
-
export { CronComponent };
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9zeXN0ZW0vIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50cy9jcm9uL2Nyb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVE5QztJQVdFLHVCQUNtQyxLQUFLLEVBQzlCLE9BQWtCLEVBQ2xCLE1BQXlCO1FBRkEsVUFBSyxHQUFMLEtBQUssQ0FBQTtRQUM5QixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBWDVCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixlQUFVLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztJQVM1QixDQUFDO0lBRUcsZ0NBQVEsR0FBZjtRQUNFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxhQUFhO2FBQ3RDLE1BQU0sQ0FBQyxVQUFDLEtBQUssRUFBRSxZQUFZO1lBQzFCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMvQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTSxtQ0FBVyxHQUFsQixVQUFtQixPQUFPO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ2xDLElBQUksRUFBRTtnQkFDSixPQUFPLFNBQUE7YUFDUjtZQUNELEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHVDQUFlLEdBQXRCLFVBQXVCLFVBQVU7UUFBakMsaUJBS0M7UUFKQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDM0IsU0FBUyxDQUFDO1lBQ1QsS0FBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sMkNBQW1CLEdBQTFCLFVBQTJCLEtBQUs7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLDRCQUFJLEdBQVg7UUFBQSxpQkE0Q0M7UUEzQ0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDbkMsU0FBUyxDQUFDLFVBQUMsSUFBSTtZQUNkLEtBQUksQ0FBQyxJQUFJLHlCQUNKLEtBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUNmLElBQUksQ0FDUixDQUFDO1lBRUYsSUFBRyxLQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtnQkFDMUIsS0FBSSxDQUFDLE1BQU0sR0FBRztvQkFDWixPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNOzRCQUNyQixJQUFJLEVBQUUsT0FBTzs0QkFDYixLQUFLLEVBQUUsUUFBUTs0QkFDZixNQUFNO2dDQUNKLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFOytCQUN6QixhQUFhLENBQ2pCO3lCQUNGO3dCQUNEOzRCQUNFLElBQUksRUFBRSxRQUFRLENBQUMsU0FBUzs0QkFDeEIsSUFBSSxFQUFFLE1BQU07NEJBQ1osS0FBSyxFQUFFLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQzt5QkFDaEM7cUJBQ0Y7b0JBQ0QsS0FBSyxFQUFFLFVBQUMsS0FBSzt3QkFDWCxLQUFLLHlCQUNBLEtBQUssS0FDUixNQUFNLEVBQUUsS0FBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQ3JCLENBQUM7d0JBRUYsT0FBTyxLQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDeEMsQ0FBQztpQkFDRixDQUFDO2FBQ0g7WUFFRCxLQUFJLENBQUMsV0FBVyxHQUFHLEtBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztpQkFDeEMsTUFBTSxDQUFDLFVBQUMsYUFBYTtnQkFDcEIsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnREE5RUUsTUFBTSxTQUFDLGVBQWU7Z0JBQ04sU0FBUztnQkFDVixpQkFBaUI7O0lBZHhCLGFBQWE7UUFMekIsU0FBUyxDQUFDO1lBQ1QsOHFHQUFvQztZQUVwQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDaEQsQ0FBQztRQWFHLFdBQUEsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO2lEQUNQLFNBQVM7WUFDVixpQkFBaUI7T0FkeEIsYUFBYSxDQTJGekI7SUFBRCxvQkFBQztDQUFBLEFBM0ZELElBMkZDO1NBM0ZZLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuaW1wb3J0IHsgRnNMaXN0Q29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGlzdCc7XHJcblxyXG5pbXBvcnQgeyBDcm9uTG9nU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2Nyb24tbG9nLXN0YXRlcy5jb25zdCc7XHJcbmltcG9ydCB7IENyb25TdGF0ZXMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xyXG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZSc7XHJcbmltcG9ydCB7IENyb25Mb2dDb21wb25lbnQgfSBmcm9tICcuLi9jcm9uLWxvZyc7XHJcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vY3Jvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3Jvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBjcm9uO1xyXG4gIHB1YmxpYyB0YWJJbmRleCA9IDA7XHJcbiAgcHVibGljIENyb25TdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShDcm9uU3RhdGVzKTtcclxuICBwdWJsaWMgQ3JvbkxvZ1N0YXRlcyA9IGluZGV4TmFtZVZhbHVlKENyb25Mb2dTdGF0ZXMpO1xyXG4gIHB1YmxpYyBDcm9uTG9nU3RhdGVDb2xvcnMgPSB7fTtcclxuXHJcbiAgcHVibGljIGNvbmZpZzogRnNMaXN0Q29uZmlnO1xyXG4gIHB1YmxpYyBjcm9uQWN0aW9ucztcclxuICBcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgKSB7fVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWQoKTtcclxuICAgIHRoaXMuQ3JvbkxvZ1N0YXRlQ29sb3JzID0gQ3JvbkxvZ1N0YXRlc1xyXG4gICAgLnJlZHVjZSgoYWNjdW0sIGNyb25Mb2dTdGF0ZSkgPT4ge1xyXG4gICAgICBhY2N1bVtjcm9uTG9nU3RhdGUudmFsdWVdID0gY3JvbkxvZ1N0YXRlLmNvbG9yO1xyXG4gICAgICByZXR1cm4gYWNjdW07XHJcbiAgICB9LCB7fSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JvbkxvZ09wZW4oY3JvbkxvZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oQ3JvbkxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7IFxyXG4gICAgICAgIGNyb25Mb2csXHJcbiAgICAgIH0sXHJcbiAgICAgIHdpZHRoOiAnODUlJ1xyXG4gICAgfSk7ICAgIFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyb25BY3Rpb25DbGljayhjcm9uQWN0aW9uKSB7XHJcbiAgICBjcm9uQWN0aW9uLmFjdGlvbih0aGlzLmNyb24pXHJcbiAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4Q2hhbmdlKGluZGV4KSB7XHJcbiAgICB0aGlzLnRhYkluZGV4ID0gaW5kZXg7XHJcbiAgfVxyXG4gICAgXHJcbiAgcHVibGljIGxvYWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kYXRhLmxvYWRDcm9uKHRoaXMuX2RhdGEuY3JvbilcclxuICAgIC5zdWJzY3JpYmUoKGNyb24pID0+IHtcclxuICAgICAgdGhpcy5jcm9uID0ge1xyXG4gICAgICAgIC4uLnRoaXMuX2RhdGEuY3JvbixcclxuICAgICAgICAuLi5jcm9uLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYodGhpcy5fZGF0YS5sb2FkQ3JvbkxvZ3MpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZyA9IHtcclxuICAgICAgICAgIGZpbHRlcnM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLlNlbGVjdCxcclxuICAgICAgICAgICAgICBuYW1lOiAnc3RhdGUnLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiAnU3RhdHVzJyxcclxuICAgICAgICAgICAgICB2YWx1ZXM6IFtcclxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ0FsbCcsIHZhbHVlOiBudWxsIH0sXHJcbiAgICAgICAgICAgICAgICAuLi5Dcm9uTG9nU3RhdGVzLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5EYXRlUmFuZ2UsXHJcbiAgICAgICAgICAgICAgbmFtZTogJ2RhdGUnLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBbJ0Zyb20gRGF0ZScsICdUbyBEYXRlJ10sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLCAgICAgICAgICBcclxuICAgICAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcclxuICAgICAgICAgICAgcXVlcnkgPSB7XHJcbiAgICAgICAgICAgICAgLi4ucXVlcnksXHJcbiAgICAgICAgICAgICAgY3JvbklkOiB0aGlzLmNyb24uaWQsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5sb2FkQ3JvbkxvZ3MocXVlcnkpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNyb25BY3Rpb25zID0gdGhpcy5fZGF0YS5jcm9uQWN0aW9uc1xyXG4gICAgICAuZmlsdGVyKChjcm9uTG9nQWN0aW9uKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNyb25Mb2dBY3Rpb24uc2hvdyh0aGlzLmNyb24pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './cron.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9zeXN0ZW0vIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50cy9jcm9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Nyb24uY29tcG9uZW50JztcclxuIl19
|