@firestitch/system 9.1.6 → 9.2.0
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-logs/api-logs.component.d.ts +1 -3
- package/app/components/crons/crons.component.d.ts +2 -3
- package/app/components/dashboard/dashboard.component.d.ts +1 -3
- package/app/components/processes/processes.component.d.ts +1 -3
- package/app/components/server-logs/server-logs.component.d.ts +1 -3
- package/app/components/settings/settings.component.d.ts +1 -3
- package/app/components/upgrade-logs/upgrade-logs.component.d.ts +0 -3
- package/app/enums/setting-interface-type.enum.d.ts +2 -1
- package/app/interfaces/system-config.d.ts +0 -1
- package/bundles/firestitch-system.umd.js +77 -114
- package/bundles/firestitch-system.umd.js.map +1 -1
- package/bundles/firestitch-system.umd.min.js +2 -2
- package/bundles/firestitch-system.umd.min.js.map +1 -1
- package/esm2015/app/components/api-logs/api-logs.component.js +5 -9
- package/esm2015/app/components/crons/crons.component.js +38 -13
- package/esm2015/app/components/dashboard/dashboard.component.js +3 -7
- package/esm2015/app/components/processes/processes.component.js +4 -8
- package/esm2015/app/components/server-logs/server-logs.component.js +6 -10
- package/esm2015/app/components/settings/settings.component.js +5 -8
- package/esm2015/app/components/upgrade-logs/upgrade-logs.component.js +4 -10
- package/esm2015/app/enums/setting-interface-type.enum.js +3 -2
- package/esm2015/app/fs-system.module.js +1 -5
- package/esm2015/app/interfaces/system-config.js +1 -1
- package/esm2015/app/pipes/key-name-value.pipe.js +2 -2
- package/esm2015/firestitch-system.js +15 -17
- package/esm5/app/components/api-logs/api-logs.component.js +5 -9
- package/esm5/app/components/crons/crons.component.js +38 -13
- package/esm5/app/components/dashboard/dashboard.component.js +3 -7
- package/esm5/app/components/processes/processes.component.js +4 -8
- package/esm5/app/components/server-logs/server-logs.component.js +6 -10
- package/esm5/app/components/settings/settings.component.js +5 -8
- package/esm5/app/components/upgrade-logs/upgrade-logs.component.js +4 -10
- package/esm5/app/enums/setting-interface-type.enum.js +3 -2
- package/esm5/app/fs-system.module.js +1 -5
- package/esm5/app/interfaces/system-config.js +1 -1
- package/esm5/app/pipes/key-name-value.pipe.js +1 -1
- package/esm5/firestitch-system.js +15 -17
- package/fesm2015/firestitch-system.js +65 -98
- package/fesm2015/firestitch-system.js.map +1 -1
- package/fesm5/firestitch-system.js +64 -100
- package/fesm5/firestitch-system.js.map +1 -1
- package/firestitch-system.d.ts +14 -17
- package/firestitch-system.metadata.json +1 -1
- package/package.json +1 -1
- package/app/services/index.d.ts +0 -1
- package/app/services/system.service.d.ts +0 -7
- package/esm2015/app/services/index.js +0 -2
- package/esm2015/app/services/system.service.js +0 -43
- package/esm5/app/services/index.js +0 -2
- package/esm5/app/services/system.service.js +0 -46
|
@@ -1 +1 @@
|
|
|
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/services/system.service.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","snakecaseKeys","_snakecaseKeys","camelcaseKeys","_camelcaseKeys","SystemService","_config","input","data","_this","isArray","map","item","case","deep","output","Inject","args","Injectable","DashboardComponent","_message","_cdRef","_systemService","_buildService","buttonActions","menuActions","_destroy$","Subject","actions","ngOnInit","_load","filter","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","MAT_DIALOG_DATA","CronComponent","_dialog","tabIndex","cronLogOpen","open","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","rowAction","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","loadCrons","response","queue","tap","list","reload","state","run","enable","disable","kill","ViewChild","FsListComponent","static","SettingsComponent","_clipboardService","_prompt","fileRemove","EventEmitter","fileSelect","groupedSettings","groups","loadSettings","settings","setting","interfaceType","Time","parse","groupBy","group","keys","export","event","stopPropagation","copy","JSON","stringify","import","title","commitLabel","required","settings_1","find","saveGroup","result","save","ClipboardService","FsPrompt","Output","FileManagerComponent","_configFileManager","path","deleteFile","deleteDirectory","createDirectory","download","upload","file","KeyNameValuePipe","transform","Pipe","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 DropDown = 'D',\r\n Date = 'A',\r\n File = 'F',\r\n Static = 'S',\r\n Password = 'P',\r\n Time = 'M',\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 { FsSystemConfig } from './../interfaces/system-config';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport * as _snakecaseKeys from 'snakecase-keys';\r\nimport * as _camelcaseKeys from 'camelcase-keys';\r\nimport { isArray } from 'lodash-es';\r\nimport { FS_SYSTEM_CONFIG } from '../injectors/system-config.injector';\r\n\r\nconst snakecaseKeys = _snakecaseKeys;\r\nconst camelcaseKeys = _camelcaseKeys;\r\n\r\n@Injectable()\r\nexport class SystemService {\r\n\r\n constructor(@Inject(FS_SYSTEM_CONFIG) private _config: FsSystemConfig) {}\r\n\r\n public input(data) {\r\n if (isArray(data)) {\r\n return data.map(item => {\r\n return this._config.case === 'snake' ? camelcaseKeys(item, { deep: true }) : item;\r\n });\r\n } else {\r\n return this._config.case === 'snake' ? camelcaseKeys(data, { deep: true }) : data;\r\n }\r\n }\r\n\r\n public output(data) {\r\n if (isArray(data)) {\r\n return data.map(item => {\r\n return this._config.case === 'snake' ? snakecaseKeys(item, { deep: true }) : item;\r\n });\r\n } else {\r\n return this._config.case === 'snake' ? snakecaseKeys(data, { deep: true }) : data;\r\n }\r\n }\r\n}\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\nimport { SystemService } from './../../services/system.service';\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 _systemService: SystemService,\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 = this._systemService.input(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 } from '@firestitch/list';\r\n\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { SystemService } from './../../services';\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\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\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 _systemService: SystemService,\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: this._systemService.input(response) }))\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(this._systemService.output(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(this._systemService.output(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(this._systemService.output(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(this._systemService.output(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(this._systemService.output(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 { SystemService } from './../../services/system.service';\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 _systemService: SystemService,\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 = this._systemService.input(settings);\r\n\r\n settings = settings.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 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 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 { SystemService } from './../../services/system.service';\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 _systemService: SystemService,\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: this._systemService.input(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 { SystemService } from './../../services/system.service';\r\nimport { 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 private _systemService: SystemService\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: this._systemService.input(response.data), paging: response.paging }))\r\n );\r\n }\r\n };\r\n }\r\n\r\n public open(log) {\r\n const dialogRef = this._dialog.open(ServerLogComponent, {\r\n data: { log: log },\r\n width: '85%'\r\n });\r\n }\r\n}\r\n","import { SystemService } from './../../services/system.service';\r\nimport { 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 constructor(private _systemService: SystemService) {}\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: this._systemService.input(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 { SystemService } from './../../services/system.service';\r\nimport { 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 private _systemService: SystemService\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: this._systemService.input(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 { SystemService } from './services/system.service';\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 providers: [\r\n SystemService\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
|
+
{"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","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}\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.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 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,5 +1,4 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { SystemService } from './../../services/system.service';
|
|
3
2
|
import { Component, ViewChild, Input } from '@angular/core';
|
|
4
3
|
import { ItemType } from '@firestitch/filter';
|
|
5
4
|
import { FsListComponent } from '@firestitch/list';
|
|
@@ -9,9 +8,8 @@ import { ApiLogStates } from '../../consts';
|
|
|
9
8
|
import { ApiLogComponent } from '../api-log/api-log.component';
|
|
10
9
|
import { indexNameValue } from '../../helpers/index-name-value';
|
|
11
10
|
let ApiLogsComponent = class ApiLogsComponent {
|
|
12
|
-
constructor(_dialog
|
|
11
|
+
constructor(_dialog) {
|
|
13
12
|
this._dialog = _dialog;
|
|
14
|
-
this._systemService = _systemService;
|
|
15
13
|
this.config = null;
|
|
16
14
|
this.apiLogStates = indexNameValue(ApiLogStates);
|
|
17
15
|
}
|
|
@@ -41,7 +39,7 @@ let ApiLogsComponent = class ApiLogsComponent {
|
|
|
41
39
|
fetch: query => {
|
|
42
40
|
Object.assign(query, {});
|
|
43
41
|
return this.loadApiLogs(query)
|
|
44
|
-
.pipe(map((response) => ({ data:
|
|
42
|
+
.pipe(map((response) => ({ data: response.data, paging: response.paging })));
|
|
45
43
|
}
|
|
46
44
|
};
|
|
47
45
|
}
|
|
@@ -53,8 +51,7 @@ let ApiLogsComponent = class ApiLogsComponent {
|
|
|
53
51
|
}
|
|
54
52
|
};
|
|
55
53
|
ApiLogsComponent.ctorParameters = () => [
|
|
56
|
-
{ type: MatDialog }
|
|
57
|
-
{ type: SystemService }
|
|
54
|
+
{ type: MatDialog }
|
|
58
55
|
];
|
|
59
56
|
__decorate([
|
|
60
57
|
ViewChild(FsListComponent, { static: true }),
|
|
@@ -70,8 +67,7 @@ ApiLogsComponent = __decorate([
|
|
|
70
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",
|
|
71
68
|
styles: [""]
|
|
72
69
|
}),
|
|
73
|
-
__metadata("design:paramtypes", [MatDialog
|
|
74
|
-
SystemService])
|
|
70
|
+
__metadata("design:paramtypes", [MatDialog])
|
|
75
71
|
], ApiLogsComponent);
|
|
76
72
|
export { ApiLogsComponent };
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWxvZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvc3lzdGVtLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBvbmVudHMvYXBpLWxvZ3MvYXBpLWxvZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFTaEUsSUFBYSxnQkFBZ0IsR0FBN0IsTUFBYSxnQkFBZ0I7SUFVM0IsWUFDVSxPQUFrQjtRQUFsQixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBSnJCLFdBQU0sR0FBaUIsSUFBSSxDQUFDO1FBQzVCLGlCQUFZLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBSS9DLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxXQUFXO1FBRWpCLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPO29CQUN0QixJQUFJLEVBQUUsU0FBUztvQkFDZixLQUFLLEVBQUUsUUFBUTtpQkFDaEI7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNO29CQUNyQixJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUUsUUFBUTtvQkFDZixNQUFNLEVBQUUsWUFBWTtpQkFDckI7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSxRQUFRLENBQUMsU0FBUztvQkFDeEIsS0FBSyxFQUFFLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQztpQkFDaEM7YUFDRjtZQUNELEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDYixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFHLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztxQkFDM0IsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUMzRSxDQUFDO1lBQ04sQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sSUFBSSxDQUFDLE1BQU07UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ2pDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7WUFDeEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQTs7WUE1Q29CLFNBQVM7O0FBUjVCO0lBREMsU0FBUyxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs4QkFDaEMsZUFBZTs4Q0FBQztBQUVwQjtJQUFSLEtBQUssRUFBRTs7cURBQXNFO0FBTG5FLGdCQUFnQjtJQUw1QixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsb0JBQW9CO1FBQzlCLGltQ0FBd0M7O0tBRXpDLENBQUM7cUNBWW1CLFNBQVM7R0FYakIsZ0JBQWdCLENBdUQ1QjtTQXZEWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XHJcbmltcG9ydCB7IEZzTGlzdENvbmZpZywgRnNMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGlzdCc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQXBpTG9nU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcclxuaW1wb3J0IHsgQXBpTG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vYXBpLWxvZy9hcGktbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbmRleC1uYW1lLXZhbHVlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZnMtc3lzdGVtLWFwaS1sb2dzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXBpLWxvZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FwaS1sb2dzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaUxvZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgXHJcbiAgcHVibGljIGxpc3Q6IEZzTGlzdENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KCkgbG9hZEFwaUxvZ3M6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8eyBkYXRhOiBhbnlbXSwgcGFnaW5nOiBhbnkgfT47XHJcblxyXG4gIHB1YmxpYyBjb25maWc6IEZzTGlzdENvbmZpZyA9IG51bGw7XHJcbiAgcHVibGljIGFwaUxvZ1N0YXRlcyA9IGluZGV4TmFtZVZhbHVlKEFwaUxvZ1N0YXRlcyk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9jb25maWdMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb25maWdMaXN0KCkge1xyXG5cclxuICAgIHRoaXMuY29uZmlnID0ge1xyXG4gICAgICBmaWx0ZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuS2V5d29yZCxcclxuICAgICAgICAgIG5hbWU6ICdrZXl3b3JkJyxcclxuICAgICAgICAgIGxhYmVsOiAnU2VhcmNoJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuU2VsZWN0LFxyXG4gICAgICAgICAgbmFtZTogJ3N0YXRlJyxcclxuICAgICAgICAgIGxhYmVsOiAnU3RhdHVzJyxcclxuICAgICAgICAgIHZhbHVlczogQXBpTG9nU3RhdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAnY3JlYXRlRGF0ZScsXHJcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5EYXRlUmFuZ2UsXHJcbiAgICAgICAgICBsYWJlbDogWydGcm9tIERhdGUnLCAnVG8gRGF0ZSddLFxyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgICAgZmV0Y2g6IHF1ZXJ5ID0+IHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHF1ZXJ5LCB7IH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRBcGlMb2dzKHF1ZXJ5KVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gKHsgZGF0YTogcmVzcG9uc2UuZGF0YSwgcGFnaW5nOiByZXNwb25zZS5wYWdpbmcgfSkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW4oYXBpTG9nKSB7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihBcGlMb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogeyBhcGlMb2c6IGFwaUxvZyB9LFxyXG4gICAgICB3aWR0aDogJzg1JSdcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|