@firestitch/system 18.0.34 → 18.0.37

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.
Files changed (40) hide show
  1. package/app/modules/system/components/process/process.component.d.ts +4 -5
  2. package/app/modules/system/components/processes/processes.component.d.ts +4 -4
  3. package/app/modules/system/interfaces/process.d.ts +0 -2
  4. package/esm2022/app/consts/log-types.const.mjs +2 -1
  5. package/esm2022/app/modules/query-logs/components/index.mjs +1 -1
  6. package/esm2022/app/modules/system/components/api-log/index.mjs +1 -1
  7. package/esm2022/app/modules/system/components/api-logs/api-logs.component.mjs +3 -3
  8. package/esm2022/app/modules/system/components/api-logs/index.mjs +1 -1
  9. package/esm2022/app/modules/system/components/cron/index.mjs +1 -1
  10. package/esm2022/app/modules/system/components/cron-log/index.mjs +1 -1
  11. package/esm2022/app/modules/system/components/crons/index.mjs +1 -1
  12. package/esm2022/app/modules/system/components/dashboard/index.mjs +1 -1
  13. package/esm2022/app/modules/system/components/info/index.mjs +1 -1
  14. package/esm2022/app/modules/system/components/info/info.component.mjs +3 -3
  15. package/esm2022/app/modules/system/components/process/index.mjs +1 -1
  16. package/esm2022/app/modules/system/components/process/process.component.mjs +37 -58
  17. package/esm2022/app/modules/system/components/processes/index.mjs +1 -1
  18. package/esm2022/app/modules/system/components/processes/processes.component.mjs +47 -53
  19. package/esm2022/app/modules/system/components/server-logs/components/server-log/server-log.component.mjs +3 -3
  20. package/esm2022/app/modules/system/components/server-logs/index.mjs +1 -1
  21. package/esm2022/app/modules/system/components/server-logs/server-logs.component.mjs +24 -3
  22. package/esm2022/app/modules/system/components/settings/index.mjs +1 -1
  23. package/esm2022/app/modules/system/components/upgrade-logs/index.mjs +1 -1
  24. package/esm2022/app/modules/system/components/upgrade-logs/upgrade-logs.component.mjs +3 -3
  25. package/esm2022/app/modules/system/consts/api-log-states.const.mjs +1 -1
  26. package/esm2022/app/modules/system/consts/process-states.const.mjs +1 -1
  27. package/esm2022/app/modules/system/consts/setting-interface-types.const.mjs +1 -1
  28. package/esm2022/app/modules/system/enums/api-log-state.enum.mjs +1 -1
  29. package/esm2022/app/modules/system/enums/index.mjs +1 -1
  30. package/esm2022/app/modules/system/enums/process-state.enum.mjs +1 -1
  31. package/esm2022/app/modules/system/enums/setting-interface-type.enum.mjs +1 -1
  32. package/esm2022/app/modules/system/helpers/index-name-value.mjs +1 -1
  33. package/esm2022/app/modules/system/injectors/system-config.injector.mjs +1 -1
  34. package/esm2022/app/modules/system/interfaces/dashboard-action.mjs +1 -1
  35. package/esm2022/app/modules/system/interfaces/process-action.mjs +1 -1
  36. package/esm2022/app/modules/system/interfaces/process.mjs +1 -1
  37. package/esm2022/app/modules/system/interfaces/system-config.mjs +1 -1
  38. package/fesm2022/firestitch-system.mjs +76 -81
  39. package/fesm2022/firestitch-system.mjs.map +1 -1
  40. package/package.json +1 -1
@@ -13,4 +13,4 @@ export var SettingInterfaceType;
13
13
  SettingInterfaceType["None"] = "N";
14
14
  SettingInterfaceType["Color"] = "C";
15
15
  })(SettingInterfaceType || (SettingInterfaceType = {}));
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1pbnRlcmZhY2UtdHlwZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3N5c3RlbS9lbnVtcy9zZXR0aW5nLWludGVyZmFjZS10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBYVg7QUFiRCxXQUFZLG9CQUFvQjtJQUM5Qix5Q0FBaUIsQ0FBQTtJQUNqQixzQ0FBYyxDQUFBO0lBQ2Qsc0NBQWMsQ0FBQTtJQUNkLG9DQUFZLENBQUE7SUFDWiw0Q0FBb0IsQ0FBQTtJQUNwQixrQ0FBVSxDQUFBO0lBQ1Ysa0NBQVUsQ0FBQTtJQUNWLG9DQUFZLENBQUE7SUFDWixzQ0FBYyxDQUFBO0lBQ2Qsa0NBQVUsQ0FBQTtJQUNWLGtDQUFVLENBQUE7SUFDVixtQ0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQWJXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFhL0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTZXR0aW5nSW50ZXJmYWNlVHlwZSB7XG4gIFJhZGlvQnV0dG9uID0gJ1InLFxuICBJbnB1dEJveCA9ICdJJyxcbiAgVGV4dGFyZWEgPSAnVCcsXG4gIFNlbGVjdCA9ICdEJyxcbiAgU2VsZWN0TXVsdGlwbGUgPSAnVycsXG4gIERhdGUgPSAnQScsXG4gIEZpbGUgPSAnRicsXG4gIFN0YXRpYyA9ICdTJyxcbiAgUGFzc3dvcmQgPSAnUCcsXG4gIFRpbWUgPSAnTScsXG4gIE5vbmUgPSAnTicsXG4gIENvbG9yID0gJ0MnLFxufVxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1pbnRlcmZhY2UtdHlwZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3N5c3RlbS9lbnVtcy9zZXR0aW5nLWludGVyZmFjZS10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBYVg7QUFiRCxXQUFZLG9CQUFvQjtJQUM5Qix5Q0FBaUIsQ0FBQTtJQUNqQixzQ0FBYyxDQUFBO0lBQ2Qsc0NBQWMsQ0FBQTtJQUNkLG9DQUFZLENBQUE7SUFDWiw0Q0FBb0IsQ0FBQTtJQUNwQixrQ0FBVSxDQUFBO0lBQ1Ysa0NBQVUsQ0FBQTtJQUNWLG9DQUFZLENBQUE7SUFDWixzQ0FBYyxDQUFBO0lBQ2Qsa0NBQVUsQ0FBQTtJQUNWLGtDQUFVLENBQUE7SUFDVixtQ0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQWJXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFhL0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTZXR0aW5nSW50ZXJmYWNlVHlwZSB7XHJcbiAgUmFkaW9CdXR0b24gPSAnUicsXHJcbiAgSW5wdXRCb3ggPSAnSScsXHJcbiAgVGV4dGFyZWEgPSAnVCcsXHJcbiAgU2VsZWN0ID0gJ0QnLFxyXG4gIFNlbGVjdE11bHRpcGxlID0gJ1cnLFxyXG4gIERhdGUgPSAnQScsXHJcbiAgRmlsZSA9ICdGJyxcclxuICBTdGF0aWMgPSAnUycsXHJcbiAgUGFzc3dvcmQgPSAnUCcsXHJcbiAgVGltZSA9ICdNJyxcclxuICBOb25lID0gJ04nLFxyXG4gIENvbG9yID0gJ0MnLFxyXG59XHJcbiJdfQ==
@@ -5,4 +5,4 @@ export function indexNameValue(arry) {
5
5
  });
6
6
  return obj;
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtbmFtZS12YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaGVscGVycy9pbmRleC1uYW1lLXZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBSTtJQUNqQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGZ1bmN0aW9uIGluZGV4TmFtZVZhbHVlKGFycnkpIHtcbiAgY29uc3Qgb2JqID0ge307XG4gIGFycnkuZm9yRWFjaChpdGVtID0+IHtcbiAgICBvYmpbaXRlbS52YWx1ZV0gPSBpdGVtLm5hbWU7XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG4iXX0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtbmFtZS12YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaGVscGVycy9pbmRleC1uYW1lLXZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBSTtJQUNqQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhOYW1lVmFsdWUoYXJyeSkge1xyXG4gIGNvbnN0IG9iaiA9IHt9O1xyXG4gIGFycnkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgIG9ialtpdGVtLnZhbHVlXSA9IGl0ZW0ubmFtZTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIG9iajtcclxufVxyXG4iXX0=
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const FS_SYSTEM_CONFIG = new InjectionToken('fs-system-config');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLWNvbmZpZy5pbmplY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaW5qZWN0b3JzL3N5c3RlbS1jb25maWcuaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBUSxrQkFBa0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEZTX1NZU1RFTV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55W10+KCdmcy1zeXN0ZW0tY29uZmlnJyk7XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLWNvbmZpZy5pbmplY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaW5qZWN0b3JzL3N5c3RlbS1jb25maWcuaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBUSxrQkFBa0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBGU19TWVNURU1fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPGFueVtdPignZnMtc3lzdGVtLWNvbmZpZycpO1xyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaW50ZXJmYWNlcy9kYXNoYm9hcmQtYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZEFjdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmcsXG4gIGNsaWNrOiBGdW5jdGlvbixcbiAgbWVudT86IGJvb2xlYW5cbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaW50ZXJmYWNlcy9kYXNoYm9hcmQtYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZEFjdGlvbiB7XHJcbiAgbGFiZWw6IHN0cmluZyxcclxuICBjbGljazogRnVuY3Rpb24sXHJcbiAgbWVudT86IGJvb2xlYW5cclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2ludGVyZmFjZXMvcHJvY2Vzcy1hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0FjdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNsaWNrPzogKGRhdGE/KSA9PiB2b2lkO1xuICBjb21wb25lbnQ/OiBhbnk7XG4gIG1lbnU/OiBib29sZWFuO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2ludGVyZmFjZXMvcHJvY2Vzcy1hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0FjdGlvbiB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBjbGljaz86IChkYXRhPykgPT4gdm9pZDtcclxuICBjb21wb25lbnQ/OiBhbnk7XHJcbiAgbWVudT86IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaW50ZXJmYWNlcy9wcm9jZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFByb2Nlc3Mge1xuICBjbGFzcz86IHN0cmluZztcbiAgZnVuY3Rpb24/OiBzdHJpbmc7XG4gIGNyZWF0ZURhdGU/OiBhbnk7XG4gIGNyZWF0ZWRUaW1lPzogRGF0ZTtcbiAgZGF0YT86IGFueTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGR1cmF0aW9uPzogYW55O1xuICBlbmREYXRlPzogYW55O1xuICBlbmRUaW1lPzogRGF0ZTtcbiAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIGZpbGVzPzogYW55O1xuICBndWlkPzogc3RyaW5nO1xuICBsb2c/OiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIG5vdGlmeT86IHN0cmluZztcbiAgcGVyY2VudD86IG51bWJlcjtcbiAgcGlkPzogc3RyaW5nO1xuICBwcmV0dHlOYW1lPzogYW55O1xuICBpZD86IG51bWJlcjtcbiAgcHJvY2Vzc1N0YXRlPzogYW55O1xuICBzdGFydERhdGU/OiBhbnk7XG4gIHN0YXJ0VGltZT86IERhdGU7XG4gIHN0YXRlPzogc3RyaW5nO1xuICBzdGF0cz86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaW50ZXJmYWNlcy9wcm9jZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFByb2Nlc3Mge1xuICBjcmVhdGVEYXRlPzogYW55O1xuICBjcmVhdGVkVGltZT86IERhdGU7XG4gIGRhdGE/OiBhbnk7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkdXJhdGlvbj86IGFueTtcbiAgZW5kRGF0ZT86IGFueTtcbiAgZW5kVGltZT86IERhdGU7XG4gIGZpbGVuYW1lPzogc3RyaW5nO1xuICBmaWxlcz86IGFueTtcbiAgZ3VpZD86IHN0cmluZztcbiAgbG9nPzogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBub3RpZnk/OiBzdHJpbmc7XG4gIHBlcmNlbnQ/OiBudW1iZXI7XG4gIHBpZD86IHN0cmluZztcbiAgcHJldHR5TmFtZT86IGFueTtcbiAgaWQ/OiBudW1iZXI7XG4gIHByb2Nlc3NTdGF0ZT86IGFueTtcbiAgc3RhcnREYXRlPzogYW55O1xuICBzdGFydFRpbWU/OiBEYXRlO1xuICBzdGF0ZT86IHN0cmluZztcbiAgc3RhdHM/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaW50ZXJmYWNlcy9zeXN0ZW0tY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZzU3lzdGVtQ29uZmlnIHtcblxufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vaW50ZXJmYWNlcy9zeXN0ZW0tY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZzU3lzdGVtQ29uZmlnIHtcclxuXHJcbn1cclxuIl19
@@ -255,7 +255,7 @@ class ApiLogsComponent {
255
255
  };
256
256
  }
257
257
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ApiLogsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
258
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ApiLogsComponent, isStandalone: true, selector: "fs-system-api-logs", inputs: { loadApiLogs: "loadApiLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a href=\"javascript:;\" (click)=\"open(row)\">\n {{row.type || 'Unknown'}}\n @if (row.direction=='outgoing') {\n <mat-icon class=\"direction\">arrow_upward</mat-icon>\n }\n @if (row.direction=='incoming') {\n <mat-icon class=\"direction\">arrow_downward</mat-icon>\n }\n </a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{apiLogStates[row.state]}}\n @if (row.code) {\n <span class=\"code\" [ngClass]=\"{'success': row.code >= 200 && row.code < 300,'error': row.code < 200 || row.code >= 300 }\">[{{row.code}}]</span>\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Message</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.message}}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Date</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div>@if (row.length) {\n <small>Duration: {{ row.length | fsDateDuration }}</small>\n }</div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [".code.success{color:green}.code.error{color:red}.direction{font-size:14px;height:14px;line-height:14px;width:14px}\n"], dependencies: [{ kind: "ngmodule", type: FsListModule }, { kind: "component", type: i1$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: i1$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customizable", "sortable", "sortableDefault", "sortableDirection", "direction", "align", "width", "class"] }, { kind: "directive", type: i1$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: i1$1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FsDateModule }, { kind: "pipe", type: i4.FsDateDurationPipe, name: "fsDateDuration" }, { kind: "component", type: i4.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
258
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ApiLogsComponent, isStandalone: true, selector: "fs-system-api-logs", inputs: { loadApiLogs: "loadApiLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a href=\"javascript:;\" (click)=\"open(row)\">\n {{row.type || 'Unknown'}}\n @if (row.direction=='outgoing') {\n <mat-icon class=\"direction\">arrow_upward</mat-icon>\n }\n @if (row.direction=='incoming') {\n <mat-icon class=\"direction\">arrow_downward</mat-icon>\n }\n </a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{apiLogStates[row.state]}}\n @if (row.code) {\n <span class=\"code\" [ngClass]=\"{'success': row.code==200,'error': row.code!=200 }\">[{{row.code}}]</span>\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Message</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.message}}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Date</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div>@if (row.length) {\n <small>Duration: {{ row.length | fsDateDuration }}</small>\n }</div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [".code.success{color:green}.code.error{color:red}.direction{font-size:14px;height:14px;line-height:14px;width:14px}\n"], dependencies: [{ kind: "ngmodule", type: FsListModule }, { kind: "component", type: i1$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: i1$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customizable", "sortable", "sortableDefault", "sortableDirection", "direction", "align", "width", "class"] }, { kind: "directive", type: i1$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: i1$1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FsDateModule }, { kind: "pipe", type: i4.FsDateDurationPipe, name: "fsDateDuration" }, { kind: "component", type: i4.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
259
259
  }
260
260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ApiLogsComponent, decorators: [{
261
261
  type: Component,
@@ -264,7 +264,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
264
264
  MatIcon,
265
265
  NgClass,
266
266
  FsDateModule,
267
- ], template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a href=\"javascript:;\" (click)=\"open(row)\">\n {{row.type || 'Unknown'}}\n @if (row.direction=='outgoing') {\n <mat-icon class=\"direction\">arrow_upward</mat-icon>\n }\n @if (row.direction=='incoming') {\n <mat-icon class=\"direction\">arrow_downward</mat-icon>\n }\n </a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{apiLogStates[row.state]}}\n @if (row.code) {\n <span class=\"code\" [ngClass]=\"{'success': row.code >= 200 && row.code < 300,'error': row.code < 200 || row.code >= 300 }\">[{{row.code}}]</span>\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Message</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.message}}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Date</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div>@if (row.length) {\n <small>Duration: {{ row.length | fsDateDuration }}</small>\n }</div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [".code.success{color:green}.code.error{color:red}.direction{font-size:14px;height:14px;line-height:14px;width:14px}\n"] }]
267
+ ], template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a href=\"javascript:;\" (click)=\"open(row)\">\n {{row.type || 'Unknown'}}\n @if (row.direction=='outgoing') {\n <mat-icon class=\"direction\">arrow_upward</mat-icon>\n }\n @if (row.direction=='incoming') {\n <mat-icon class=\"direction\">arrow_downward</mat-icon>\n }\n </a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{apiLogStates[row.state]}}\n @if (row.code) {\n <span class=\"code\" [ngClass]=\"{'success': row.code==200,'error': row.code!=200 }\">[{{row.code}}]</span>\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Message</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.message}}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Date</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div>@if (row.length) {\n <small>Duration: {{ row.length | fsDateDuration }}</small>\n }</div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [".code.success{color:green}.code.error{color:red}.direction{font-size:14px;height:14px;line-height:14px;width:14px}\n"] }]
268
268
  }], propDecorators: { list: [{
269
269
  type: ViewChild,
270
270
  args: [FsListComponent, { static: true }]
@@ -943,11 +943,11 @@ class InfoComponent {
943
943
  });
944
944
  }
945
945
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
946
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: InfoComponent, isStandalone: true, selector: "fs-system-info", inputs: { load: "load" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }], ngImport: i0, template: "<iframe #iframe></iframe>\n", styles: ["iframe{width:100%;border:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
946
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: InfoComponent, isStandalone: true, selector: "fs-system-info", inputs: { load: "load" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }], ngImport: i0, template: "<iframe #iframe></iframe>\r\n", styles: ["iframe{width:100%;border:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
947
947
  }
948
948
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InfoComponent, decorators: [{
949
949
  type: Component,
950
- args: [{ selector: 'fs-system-info', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<iframe #iframe></iframe>\n", styles: ["iframe{width:100%;border:0}\n"] }]
950
+ args: [{ selector: 'fs-system-info', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<iframe #iframe></iframe>\r\n", styles: ["iframe{width:100%;border:0}\n"] }]
951
951
  }], propDecorators: { iframe: [{
952
952
  type: ViewChild,
953
953
  args: ['iframe']
@@ -1007,12 +1007,14 @@ class ProcessComponent {
1007
1007
  _destroy$ = new Subject();
1008
1008
  _processData = inject(ProcessData);
1009
1009
  ngOnInit() {
1010
- this.load$().subscribe(() => {
1010
+ this.load$()
1011
+ .subscribe(() => {
1011
1012
  this.runningRefresh();
1012
1013
  });
1013
1014
  }
1014
1015
  load$() {
1015
- return this._processData.get(this.data.process.id).pipe(tap((process) => {
1016
+ return this._processData.get(this.data.process.id)
1017
+ .pipe(tap((process) => {
1016
1018
  this.process = process;
1017
1019
  this._cdRef.markForCheck();
1018
1020
  }));
@@ -1023,22 +1025,21 @@ class ProcessComponent {
1023
1025
  .subscribe();
1024
1026
  }
1025
1027
  kill() {
1026
- this._prompt
1027
- .confirm({
1028
- title: "Kill process",
1029
- template: "Are you sure you would like to kill the process?",
1028
+ this._prompt.confirm({
1029
+ title: 'Kill process',
1030
+ template: 'Are you sure you would like to kill the process?',
1030
1031
  })
1031
1032
  .pipe(switchMap(() => this._processData.kill(this.data.process)), switchMap(() => this.load$()))
1032
1033
  .subscribe(() => {
1033
- this._message.success("Killed process");
1034
+ this._message.success('Killed process');
1034
1035
  });
1035
1036
  }
1036
1037
  run() {
1037
- this._process.run(`Run ${this.process.name}`, this._api
1038
+ this._process
1039
+ .run(`Run ${this.process.name}`, this._api
1038
1040
  .stream(RequestMethod.Post, `processes/${this.process.id}/run`)
1039
1041
  .pipe(tap((event) => {
1040
- if (event instanceof StreamEventData &&
1041
- event.type === StreamEventType.Sent) {
1042
+ if (event instanceof StreamEventData && event.type === StreamEventType.Sent) {
1042
1043
  this.process.state = ProcessState.Running;
1043
1044
  this._cdRef.markForCheck();
1044
1045
  }
@@ -1047,42 +1048,20 @@ class ProcessComponent {
1047
1048
  }), filter((data) => !!data)));
1048
1049
  }
1049
1050
  queue() {
1050
- this._message.success("Running process");
1051
- this._processData
1052
- .queue(this.data.process)
1051
+ this._message.success('Running process');
1052
+ this._processData.queue(this.data.process)
1053
1053
  .pipe(switchMap(() => this.load$()))
1054
1054
  .subscribe();
1055
1055
  }
1056
1056
  download() {
1057
1057
  this._processData.download(this.data.process);
1058
1058
  }
1059
- get formattedProcessData() {
1060
- const d = this.process?.data;
1061
- if (d === null || d === undefined) {
1062
- return null;
1063
- }
1064
- let value = d;
1065
- if (typeof d === "string") {
1066
- try {
1067
- value = JSON.parse(d);
1068
- }
1069
- catch {
1070
- return d;
1071
- }
1072
- }
1073
- try {
1074
- return JSON.stringify(value, null, 2);
1075
- }
1076
- catch {
1077
- return String(value);
1078
- }
1079
- }
1080
1059
  ngOnDestroy() {
1081
1060
  this._destroy$.next(null);
1082
1061
  this._destroy$.complete();
1083
1062
  }
1084
1063
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProcessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1085
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ProcessComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"process\">\n <div mat-dialog-title>\n Process\n </div>\n <mat-dialog-content>\n <div class=\"column\">\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Name\n </fs-label>\n {{ process.prettyName }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Class\n </fs-label>\n {{ process.class || 'None' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Function\n </fs-label>\n {{ process['function'] || 'None' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n <div\n class=\"status\"\n [ngClass]=\"{ 'running': process.state === ProcessState.Running }\">\n {{ ProcessStates[process.state] }}\n @if (process.state === ProcessState.Running) {\n <mat-progress-spinner\n [diameter]=\"20\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n }\n </div>\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Notification Email\n </fs-label>\n @if (process.notify) {\n <a [href]=\"'mailto:' + process.notify\">\n {{ process.notify }}\n </a>\n } @else {\n None\n }\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Process ID\n </fs-label>\n {{ process.pid || 'None' }}\n @if (process.pid) {\n <div class=\"small\">\n {{ ProcessProcessStates[process.processState] || 'Unknown' }}\n </div>\n }\n </fs-label-field>\n @if (process.createDate) {\n <fs-label-field>\n <fs-label>\n Create Date\n </fs-label>\n {{ process.createDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.startDate) {\n <fs-label-field>\n <fs-label>\n Start Date\n </fs-label>\n {{ process.startDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.endDate) {\n <fs-label-field>\n <fs-label>\n Complete Date\n </fs-label>\n {{ process.endDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.duration) {\n <fs-label-field>\n <fs-label>\n Duration\n </fs-label>\n {{ process.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </fs-label-field>\n }\n </div>\n <fs-label-field>\n <fs-label>\n Data\n </fs-label>\n @if (formattedProcessData === null) {\n None\n } @else {\n <pre class=\"log json-block\">\n {{ formattedProcessData }}\n </pre>\n }\n </fs-label-field>\n @if (process.message) {\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n {{ process.message }}\n </fs-label-field>\n }\n @if (process.log) {\n <fs-label-field>\n <fs-label>\n Log\n </fs-label>\n <div class=\"log\">\n {{ process.log }}\n </div>\n </fs-label-field>\n }\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Close\n </button>\n @if (process.state === ProcessState.Running) {\n <button\n mat-button\n (click)=\"kill()\">\n Kill\n </button>\n }\n @if (process.state !== ProcessState.Running) {\n <button\n mat-button\n (click)=\"run()\">\n Run\n </button>\n }\n @if (( process.state !== ProcessState.Running && process.state !== ProcessState.Queued )) {\n <button\n mat-button\n (click)=\"queue()\">\n Queue\n </button>\n }\n @if (process.filename) {\n <button\n mat-button\n (click)=\"download()\">\n Download\n </button>\n }\n </mat-dialog-actions>\n</fs-dialog>", styles: [".log{white-space:pre-line;font-family:monospace;font-size:95%;line-height:130%}.json-block{max-height:320px;margin:0;overflow:auto;white-space:pre-wrap;word-break:break-word}.status{display:flex}.status.running{margin-right:28px}.status.running mat-progress-spinner{position:absolute;right:0}\n"], dependencies: [{ kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "ngmodule", type: FsDialogModule }, { kind: "component", type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FsLabelModule }, { kind: "component", type: i3.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i3.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["appearance", "showOutline", "disabled", "focused", "hoverable", "padless"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: FsDateModule }, { kind: "pipe", type: i4.FsDateDurationPipe, name: "fsDateDuration" }, { kind: "pipe", type: i4.FsDateFormatPipe, name: "fsDateFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1064
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ProcessComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"process\">\n <div mat-dialog-title>\n Process\n </div>\n <mat-dialog-content>\n <div class=\"column\">\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Name\n </fs-label>\n {{ process.prettyName }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n <div\n class=\"status\"\n [ngClass]=\"{ 'running': process.state === ProcessState.Running }\">\n {{ ProcessStates[process.state] }}\n @if (process.state === ProcessState.Running) {\n <mat-progress-spinner\n [diameter]=\"20\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n }\n </div>\n </fs-label-field>\n @if (process.notify) {\n <fs-label-field>\n <fs-label>\n Notification Email\n </fs-label>\n {{ process.notify }}\n </fs-label-field>\n }\n <fs-label-field>\n <fs-label>\n Process ID\n </fs-label>\n {{ process.pid || 'None' }}\n @if (process.pid) {\n <div class=\"small\">\n {{ ProcessProcessStates[process.processState] || 'Unknown' }}\n </div>\n }\n </fs-label-field>\n @if (process.createDate) {\n <fs-label-field>\n <fs-label>\n Create Date\n </fs-label>\n {{ process.createDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.startDate) {\n <fs-label-field>\n <fs-label>\n Start Date\n </fs-label>\n {{ process.startDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.endDate) {\n <fs-label-field>\n <fs-label>\n Complete Date\n </fs-label>\n {{ process.endDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.duration) {\n <fs-label-field>\n <fs-label>\n Duration\n </fs-label>\n {{ process.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </fs-label-field>\n }\n </div>\n @if (process.message) {\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n {{ process.message }}\n </fs-label-field>\n }\n @if (process.log) {\n <fs-label-field>\n <fs-label>\n Log\n </fs-label>\n <div class=\"log\">\n {{ process.log }}\n </div>\n </fs-label-field>\n }\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Close\n </button>\n @if (process.state === ProcessState.Running) {\n <button\n mat-button\n (click)=\"kill()\">\n Kill\n </button>\n }\n @if (process.state !== ProcessState.Running) {\n <button\n mat-button\n (click)=\"run()\">\n Run\n </button>\n }\n @if ((\n process.state !== ProcessState.Running &&\n process.state !== ProcessState.Queued\n )) {\n <button\n mat-button\n (click)=\"queue()\">\n Queue\n </button>\n }\n @if (process.filename) {\n <button\n mat-button\n (click)=\"download()\">\n Download\n </button>\n }\n </mat-dialog-actions>\n</fs-dialog>", styles: [".log{white-space:pre-line;font-family:monospace;font-size:95%;line-height:130%}.status{display:flex}.status.running{margin-right:28px}.status.running mat-progress-spinner{position:absolute;right:0}\n"], dependencies: [{ kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "ngmodule", type: FsDialogModule }, { kind: "component", type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FsLabelModule }, { kind: "component", type: i3.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i3.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["appearance", "showOutline", "disabled", "focused", "hoverable", "padless"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: FsDateModule }, { kind: "pipe", type: i4.FsDateDurationPipe, name: "fsDateDuration" }, { kind: "pipe", type: i4.FsDateFormatPipe, name: "fsDateFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1086
1065
  }
1087
1066
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProcessComponent, decorators: [{
1088
1067
  type: Component,
@@ -1099,7 +1078,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
1099
1078
  MatButton,
1100
1079
  MatDialogClose,
1101
1080
  FsDateModule,
1102
- ], template: "<fs-dialog *fsSkeleton=\"process\">\n <div mat-dialog-title>\n Process\n </div>\n <mat-dialog-content>\n <div class=\"column\">\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Name\n </fs-label>\n {{ process.prettyName }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Class\n </fs-label>\n {{ process.class || 'None' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Function\n </fs-label>\n {{ process['function'] || 'None' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n <div\n class=\"status\"\n [ngClass]=\"{ 'running': process.state === ProcessState.Running }\">\n {{ ProcessStates[process.state] }}\n @if (process.state === ProcessState.Running) {\n <mat-progress-spinner\n [diameter]=\"20\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n }\n </div>\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Notification Email\n </fs-label>\n @if (process.notify) {\n <a [href]=\"'mailto:' + process.notify\">\n {{ process.notify }}\n </a>\n } @else {\n None\n }\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Process ID\n </fs-label>\n {{ process.pid || 'None' }}\n @if (process.pid) {\n <div class=\"small\">\n {{ ProcessProcessStates[process.processState] || 'Unknown' }}\n </div>\n }\n </fs-label-field>\n @if (process.createDate) {\n <fs-label-field>\n <fs-label>\n Create Date\n </fs-label>\n {{ process.createDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.startDate) {\n <fs-label-field>\n <fs-label>\n Start Date\n </fs-label>\n {{ process.startDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.endDate) {\n <fs-label-field>\n <fs-label>\n Complete Date\n </fs-label>\n {{ process.endDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.duration) {\n <fs-label-field>\n <fs-label>\n Duration\n </fs-label>\n {{ process.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </fs-label-field>\n }\n </div>\n <fs-label-field>\n <fs-label>\n Data\n </fs-label>\n @if (formattedProcessData === null) {\n None\n } @else {\n <pre class=\"log json-block\">\n {{ formattedProcessData }}\n </pre>\n }\n </fs-label-field>\n @if (process.message) {\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n {{ process.message }}\n </fs-label-field>\n }\n @if (process.log) {\n <fs-label-field>\n <fs-label>\n Log\n </fs-label>\n <div class=\"log\">\n {{ process.log }}\n </div>\n </fs-label-field>\n }\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Close\n </button>\n @if (process.state === ProcessState.Running) {\n <button\n mat-button\n (click)=\"kill()\">\n Kill\n </button>\n }\n @if (process.state !== ProcessState.Running) {\n <button\n mat-button\n (click)=\"run()\">\n Run\n </button>\n }\n @if (( process.state !== ProcessState.Running && process.state !== ProcessState.Queued )) {\n <button\n mat-button\n (click)=\"queue()\">\n Queue\n </button>\n }\n @if (process.filename) {\n <button\n mat-button\n (click)=\"download()\">\n Download\n </button>\n }\n </mat-dialog-actions>\n</fs-dialog>", styles: [".log{white-space:pre-line;font-family:monospace;font-size:95%;line-height:130%}.json-block{max-height:320px;margin:0;overflow:auto;white-space:pre-wrap;word-break:break-word}.status{display:flex}.status.running{margin-right:28px}.status.running mat-progress-spinner{position:absolute;right:0}\n"] }]
1081
+ ], template: "<fs-dialog *fsSkeleton=\"process\">\n <div mat-dialog-title>\n Process\n </div>\n <mat-dialog-content>\n <div class=\"column\">\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Name\n </fs-label>\n {{ process.prettyName }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n <div\n class=\"status\"\n [ngClass]=\"{ 'running': process.state === ProcessState.Running }\">\n {{ ProcessStates[process.state] }}\n @if (process.state === ProcessState.Running) {\n <mat-progress-spinner\n [diameter]=\"20\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n }\n </div>\n </fs-label-field>\n @if (process.notify) {\n <fs-label-field>\n <fs-label>\n Notification Email\n </fs-label>\n {{ process.notify }}\n </fs-label-field>\n }\n <fs-label-field>\n <fs-label>\n Process ID\n </fs-label>\n {{ process.pid || 'None' }}\n @if (process.pid) {\n <div class=\"small\">\n {{ ProcessProcessStates[process.processState] || 'Unknown' }}\n </div>\n }\n </fs-label-field>\n @if (process.createDate) {\n <fs-label-field>\n <fs-label>\n Create Date\n </fs-label>\n {{ process.createDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.startDate) {\n <fs-label-field>\n <fs-label>\n Start Date\n </fs-label>\n {{ process.startDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.endDate) {\n <fs-label-field>\n <fs-label>\n Complete Date\n </fs-label>\n {{ process.endDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n }\n @if (process.duration) {\n <fs-label-field>\n <fs-label>\n Duration\n </fs-label>\n {{ process.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </fs-label-field>\n }\n </div>\n @if (process.message) {\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n {{ process.message }}\n </fs-label-field>\n }\n @if (process.log) {\n <fs-label-field>\n <fs-label>\n Log\n </fs-label>\n <div class=\"log\">\n {{ process.log }}\n </div>\n </fs-label-field>\n }\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Close\n </button>\n @if (process.state === ProcessState.Running) {\n <button\n mat-button\n (click)=\"kill()\">\n Kill\n </button>\n }\n @if (process.state !== ProcessState.Running) {\n <button\n mat-button\n (click)=\"run()\">\n Run\n </button>\n }\n @if ((\n process.state !== ProcessState.Running &&\n process.state !== ProcessState.Queued\n )) {\n <button\n mat-button\n (click)=\"queue()\">\n Queue\n </button>\n }\n @if (process.filename) {\n <button\n mat-button\n (click)=\"download()\">\n Download\n </button>\n }\n </mat-dialog-actions>\n</fs-dialog>", styles: [".log{white-space:pre-line;font-family:monospace;font-size:95%;line-height:130%}.status{display:flex}.status.running{margin-right:28px}.status.running mat-progress-spinner{position:absolute;right:0}\n"] }]
1103
1082
  }] });
1104
1083
 
1105
1084
  class ProcessesComponent {
@@ -1126,7 +1105,7 @@ class ProcessesComponent {
1126
1105
  data: {
1127
1106
  process,
1128
1107
  },
1129
- width: "85%",
1108
+ width: '85%',
1130
1109
  })
1131
1110
  .afterClosed()
1132
1111
  .pipe(takeUntil(this._destroy$))
@@ -1146,34 +1125,36 @@ class ProcessesComponent {
1146
1125
  actions: [],
1147
1126
  rowActions: [
1148
1127
  {
1149
- label: "Queue",
1128
+ label: 'Queue',
1150
1129
  show: (process) => {
1151
- return (process.state !== ProcessState.Running &&
1152
- process.state !== ProcessState.Queued);
1130
+ return process.state !== ProcessState.Running &&
1131
+ process.state !== ProcessState.Queued;
1153
1132
  },
1154
1133
  click: (data) => {
1155
- this._processData.queue(data).subscribe(() => {
1134
+ this._processData.queue(data)
1135
+ .subscribe(() => {
1156
1136
  this.reload();
1157
- this._message.success("Queued process");
1137
+ this._message.success('Queued process');
1158
1138
  });
1159
1139
  },
1160
1140
  },
1161
1141
  {
1162
- label: "Run",
1142
+ label: 'Run',
1163
1143
  show: (data) => {
1164
1144
  return data.state !== ProcessState.Running;
1165
1145
  },
1166
1146
  click: (process) => {
1167
- this._process.run(`Run ${process.name}`, this._api
1147
+ this._process
1148
+ .run(`Run ${process.name}`, this._api
1168
1149
  .stream(RequestMethod.Post, `processes/${process.id}/run`)
1169
1150
  .pipe(tap((event) => {
1170
- if (event instanceof StreamEventData &&
1171
- event.type === StreamEventType.Sent) {
1151
+ if (event instanceof StreamEventData && event.type === StreamEventType.Sent) {
1172
1152
  process = {
1173
1153
  ...process,
1174
1154
  state: ProcessState.Running,
1175
1155
  };
1176
- this.list.updateData(process, (row) => {
1156
+ this.list
1157
+ .updateData(process, (row) => {
1177
1158
  return process.id === row.id;
1178
1159
  });
1179
1160
  }
@@ -1185,24 +1166,26 @@ class ProcessesComponent {
1185
1166
  },
1186
1167
  },
1187
1168
  {
1188
- label: "Kill",
1169
+ label: 'Kill',
1189
1170
  show: (data) => {
1190
1171
  return !!data.pid;
1191
1172
  },
1192
1173
  click: (data) => {
1193
- this._message.info("Killing process...");
1194
- this._processData.kill(data).subscribe(() => {
1174
+ this._message.info('Killing process...');
1175
+ this._processData.kill(data)
1176
+ .subscribe(() => {
1195
1177
  this.reload();
1196
- this._message.success("Killed process");
1178
+ this._message.success('Killed process');
1197
1179
  });
1198
1180
  },
1199
1181
  },
1200
1182
  {
1201
- label: "Delete",
1183
+ label: 'Delete',
1202
1184
  click: (data) => {
1203
- this._processData.delete(data).subscribe(() => {
1185
+ this._processData.delete(data)
1186
+ .subscribe(() => {
1204
1187
  this.reload();
1205
- this._message.success("Deleted process");
1188
+ this._message.success('Deleted process');
1206
1189
  });
1207
1190
  },
1208
1191
  },
@@ -1210,28 +1193,19 @@ class ProcessesComponent {
1210
1193
  filters: [
1211
1194
  {
1212
1195
  type: ItemType.Keyword,
1213
- name: "keyword",
1214
- label: "Search",
1196
+ name: 'keyword',
1197
+ label: 'Search',
1215
1198
  },
1216
1199
  {
1217
1200
  type: ItemType.Select,
1218
- name: "state",
1219
- label: "Status",
1201
+ name: 'state',
1202
+ label: 'Status',
1220
1203
  values: ProcessStates,
1221
1204
  },
1222
- {
1223
- name: "createDate",
1224
- type: ItemType.DateRange,
1225
- label: ["From Date", "To Date"],
1226
- },
1227
1205
  ],
1228
1206
  fetch: (query) => {
1229
- return this._processData
1230
- .gets(query, { key: null })
1231
- .pipe(map((response) => ({
1232
- data: response.processes,
1233
- paging: response.paging,
1234
- })));
1207
+ return this._processData.gets(query, { key: null })
1208
+ .pipe(map((response) => ({ data: response.processes, paging: response.paging })));
1235
1209
  },
1236
1210
  };
1237
1211
  this.actions.forEach((action) => {
@@ -1244,9 +1218,8 @@ class ProcessesComponent {
1244
1218
  action.click(data);
1245
1219
  }
1246
1220
  if (action.component) {
1247
- this._dialog
1248
- .open(action.component, {
1249
- width: "800px",
1221
+ this._dialog.open(action.component, {
1222
+ width: '800px',
1250
1223
  })
1251
1224
  .afterClosed()
1252
1225
  .pipe(takeUntil(this._destroy$))
@@ -1263,7 +1236,7 @@ class ProcessesComponent {
1263
1236
  }
1264
1237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProcessesComponent, decorators: [{
1265
1238
  type: Component,
1266
- args: [{ selector: "fs-system-processes", changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FsListModule, FsDateModule], template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>\n Name\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n <a (click)=\"open(row)\">\n {{ row.name }}\n </a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Status\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ ProcessStates[row.state] }}\n <small>\n @if (row.state===ProcessState.Running && row.percent) {\n <div>\n Complete: {{ row.percent }}%\n </div>\n }\n @if (row.state===ProcessState.Completed && row.filename) {\n <div>\n <a\n href=\"javascript:;\"\n (click)=\"download(row)\">\n {{ row.filename }}\n </a>\n </div>\n }\n @if (row.pid) {\n <div>\n PID: {{ row.pid }}\n </div>\n }\n @if (row.state===ProcessState.Running && row.notify) {\n <div>\n Notify: {{ row.notify }}\n </div>\n }\n </small>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Duration\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ row.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Message\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ row.message }}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Completed\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n <fs-date-ago [date]=\"row.endDate\"></fs-date-ago>\n </ng-template>\n </fs-list-column>\n</fs-list>" }]
1239
+ args: [{ selector: 'fs-system-processes', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FsListModule, FsDateModule], template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>\n Name\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n <a (click)=\"open(row)\">\n {{ row.name }}\n </a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Status\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ ProcessStates[row.state] }}\n <small>\n @if (row.state===ProcessState.Running && row.percent) {\n <div>\n Complete: {{ row.percent }}%\n </div>\n }\n @if (row.state===ProcessState.Completed && row.filename) {\n <div>\n <a\n href=\"javascript:;\"\n (click)=\"download(row)\">\n {{ row.filename }}\n </a>\n </div>\n }\n @if (row.pid) {\n <div>\n PID: {{ row.pid }}\n </div>\n }\n @if (row.state===ProcessState.Running && row.notify) {\n <div>\n Notify: {{ row.notify }}\n </div>\n }\n </small>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Duration\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ row.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Message\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ row.message }}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Completed\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n <fs-date-ago [date]=\"row.endDate\"></fs-date-ago>\n </ng-template>\n </fs-list-column>\n</fs-list>" }]
1267
1240
  }], propDecorators: { list: [{
1268
1241
  type: ViewChild,
1269
1242
  args: [FsListComponent]
@@ -1272,6 +1245,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
1272
1245
  }] } });
1273
1246
 
1274
1247
  const LogTypes = [
1248
+ { value: '0', name: 'Debug' }, // LoggerModel::LEVEL_DEBUG
1275
1249
  { value: '1', name: 'Fatal Error' }, // E_ERROR
1276
1250
  { value: '2', name: 'Warning' }, // E_WARNING
1277
1251
  { value: '4', name: 'Parse Error' }, // E_PARSE
@@ -1311,7 +1285,7 @@ class ServerLogComponent {
1311
1285
  }
1312
1286
  }
1313
1287
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ServerLogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1314
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ServerLogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"log\">\n <div mat-dialog-title>\n Log\n </div>\n <mat-dialog-content>\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Error Type\n </fs-label>\n {{ log.type }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n {{ log.message }}\n </fs-label-field>\n @if (log.url) {\n <fs-label-field>\n <fs-label>\n URL\n </fs-label>\n {{ log.url }}\n </fs-label-field>\n }\n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{ log.createDate|fsDateFormat: 'full-date-time' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n File\n </fs-label>\n {{ log.file }} &#64; {{ log.line }}\n </fs-label-field>\n </div>\n <fs-label-field>\n <fs-label>\n $_SERVER\n </fs-label>\n <pre>\n {{ log.server|json }}\n </pre>\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Backtrace\n </fs-label>\n <pre>\n {{ log.backtrace|json }}\n </pre>\n </fs-label-field>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Done\n </button>\n </mat-dialog-actions>\n</fs-dialog>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.JsonPipe, name: "json" }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: FsLabelModule }, { kind: "component", type: i3.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i3.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["appearance", "showOutline", "disabled", "focused", "hoverable", "padless"] }, { kind: "ngmodule", type: FsBadgeModule }, { kind: "ngmodule", type: FsDateModule }, { kind: "pipe", type: i4.FsDateFormatPipe, name: "fsDateFormat" }, { kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "ngmodule", type: FsDialogModule }, { kind: "component", type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1288
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ServerLogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"log\">\n <div mat-dialog-title>\n Log\n </div>\n <mat-dialog-content>\n <div class=\"fs-row.column-gap-lg.row-gap-sm.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Error Type\n </fs-label>\n {{ log.type }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n {{ log.message }}\n </fs-label-field>\n @if (log.url) {\n <fs-label-field>\n <fs-label>\n URL\n </fs-label>\n {{ log.url }}\n </fs-label-field>\n }\n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{ log.createDate|fsDateFormat: 'full-date-time' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n File\n </fs-label>\n {{ log.file }} &#64; {{ log.line }}\n </fs-label-field>\n </div>\n @if (log.data) {\n <fs-label-field>\n <fs-label>\n Data\n </fs-label>\n <pre>\n {{ log.data|json }}\n </pre>\n </fs-label-field>\n }\n <fs-label-field>\n <fs-label>\n Backtrace\n </fs-label>\n <pre>\n {{ log.backtrace|json }}\n </pre>\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n $_SERVER\n </fs-label>\n <pre>\n {{ log.server|json }}\n </pre>\n </fs-label-field>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Done\n </button>\n </mat-dialog-actions>\n</fs-dialog>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.JsonPipe, name: "json" }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: FsLabelModule }, { kind: "component", type: i3.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i3.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["appearance", "showOutline", "disabled", "focused", "hoverable", "padless"] }, { kind: "ngmodule", type: FsBadgeModule }, { kind: "ngmodule", type: FsDateModule }, { kind: "pipe", type: i4.FsDateFormatPipe, name: "fsDateFormat" }, { kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "ngmodule", type: FsDialogModule }, { kind: "component", type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1315
1289
  }
1316
1290
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ServerLogComponent, decorators: [{
1317
1291
  type: Component,
@@ -1328,7 +1302,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
1328
1302
  FsDateModule,
1329
1303
  FsSkeletonModule,
1330
1304
  FsDialogModule,
1331
- ], template: "<fs-dialog *fsSkeleton=\"log\">\n <div mat-dialog-title>\n Log\n </div>\n <mat-dialog-content>\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Error Type\n </fs-label>\n {{ log.type }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n {{ log.message }}\n </fs-label-field>\n @if (log.url) {\n <fs-label-field>\n <fs-label>\n URL\n </fs-label>\n {{ log.url }}\n </fs-label-field>\n }\n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{ log.createDate|fsDateFormat: 'full-date-time' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n File\n </fs-label>\n {{ log.file }} &#64; {{ log.line }}\n </fs-label-field>\n </div>\n <fs-label-field>\n <fs-label>\n $_SERVER\n </fs-label>\n <pre>\n {{ log.server|json }}\n </pre>\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Backtrace\n </fs-label>\n <pre>\n {{ log.backtrace|json }}\n </pre>\n </fs-label-field>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Done\n </button>\n </mat-dialog-actions>\n</fs-dialog>" }]
1305
+ ], template: "<fs-dialog *fsSkeleton=\"log\">\n <div mat-dialog-title>\n Log\n </div>\n <mat-dialog-content>\n <div class=\"fs-row.column-gap-lg.row-gap-sm.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Error Type\n </fs-label>\n {{ log.type }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n {{ log.message }}\n </fs-label-field>\n @if (log.url) {\n <fs-label-field>\n <fs-label>\n URL\n </fs-label>\n {{ log.url }}\n </fs-label-field>\n }\n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{ log.createDate|fsDateFormat: 'full-date-time' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n File\n </fs-label>\n {{ log.file }} &#64; {{ log.line }}\n </fs-label-field>\n </div>\n @if (log.data) {\n <fs-label-field>\n <fs-label>\n Data\n </fs-label>\n <pre>\n {{ log.data|json }}\n </pre>\n </fs-label-field>\n }\n <fs-label-field>\n <fs-label>\n Backtrace\n </fs-label>\n <pre>\n {{ log.backtrace|json }}\n </pre>\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n $_SERVER\n </fs-label>\n <pre>\n {{ log.server|json }}\n </pre>\n </fs-label-field>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Done\n </button>\n </mat-dialog-actions>\n</fs-dialog>" }]
1332
1306
  }] });
1333
1307
 
1334
1308
  class ServerLogsComponent {
@@ -1387,6 +1361,27 @@ class ServerLogsComponent {
1387
1361
  name: 'keyword',
1388
1362
  label: 'Search',
1389
1363
  },
1364
+ {
1365
+ type: ItemType.DateRange,
1366
+ name: 'createDate',
1367
+ label: ['From Date', 'To Date'],
1368
+ },
1369
+ {
1370
+ type: ItemType.Select,
1371
+ name: 'types',
1372
+ label: 'Type',
1373
+ multiple: true,
1374
+ values: LogTypes,
1375
+ },
1376
+ {
1377
+ type: ItemType.Select,
1378
+ name: 'acknowledged',
1379
+ label: 'Acknowledged',
1380
+ values: [
1381
+ { name: 'Acknowledged', value: '1' },
1382
+ { name: 'Unacknowledged', value: '0' },
1383
+ ],
1384
+ },
1390
1385
  ],
1391
1386
  fetch: (query) => {
1392
1387
  return this._api
@@ -1594,11 +1589,11 @@ class UpgradeLogsComponent {
1594
1589
  };
1595
1590
  }
1596
1591
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UpgradeLogsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1597
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: UpgradeLogsComponent, isStandalone: true, selector: "fs-system-upgrade-logs", inputs: { loadUpgradeLogs: "loadUpgradeLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.name}}\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Function</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.function}}()\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Date</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FsListModule }, { kind: "component", type: i1$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: i1$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customizable", "sortable", "sortableDefault", "sortableDirection", "direction", "align", "width", "class"] }, { kind: "directive", type: i1$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: i1$1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { kind: "ngmodule", type: FsDateModule }, { kind: "component", type: i4.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1592
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: UpgradeLogsComponent, isStandalone: true, selector: "fs-system-upgrade-logs", inputs: { loadUpgradeLogs: "loadUpgradeLogs" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.name}}\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Function</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.function}}()\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FsListModule }, { kind: "component", type: i1$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: i1$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customizable", "sortable", "sortableDefault", "sortableDirection", "direction", "align", "width", "class"] }, { kind: "directive", type: i1$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: i1$1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { kind: "ngmodule", type: FsDateModule }, { kind: "component", type: i4.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1598
1593
  }
1599
1594
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UpgradeLogsComponent, decorators: [{
1600
1595
  type: Component,
1601
- args: [{ selector: 'fs-system-upgrade-logs', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FsListModule, FsDateModule], template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.name}}\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Function</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.function}}()\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Date</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n </ng-template>\n </fs-list-column>\n</fs-list>\n" }]
1596
+ args: [{ selector: 'fs-system-upgrade-logs', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FsListModule, FsDateModule], template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.name}}\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Function</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{row.function}}()\r\n </ng-template>\r\n </fs-list-column>\r\n\r\n <fs-list-column>\r\n <ng-template fs-list-header>Date</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>\r\n" }]
1602
1597
  }], propDecorators: { list: [{
1603
1598
  type: ViewChild,
1604
1599
  args: [FsListComponent, { static: true }]