@esfaenza/admin-module 20.3.17 → 20.3.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"esfaenza-admin-module.mjs","sources":["../../../projects/admin-feature/src/lib/models/components/AuditsView.ts","../../../projects/admin-feature/src/lib/tokens.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.loc.ts","../../../projects/admin-feature/src/lib/services/admin-feature.base.service.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.html","../../../projects/admin-feature/src/lib/models/shared/KeyValue.ts","../../../projects/admin-feature/src/lib/models/components/ProcessesView.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.loc.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.html","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNode.loc.ts","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNode.ts","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNodesView.ts","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.html","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.ts","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.html","../../../projects/admin-feature/src/lib/models/components/TopActivitiesDataView.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.loc.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.html","../../../projects/admin-feature/src/lib/models/components/TopActivityV2Enums.ts","../../../projects/admin-feature/src/lib/models/components/TopActivityV2Request.ts","../../../projects/admin-feature/src/lib/components/topact_v2/topact_v2.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/session_detail.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/session_detail.component.ts","../../../projects/admin-feature/src/lib/components/_shared/session_detail.component.html","../../../projects/admin-feature/src/lib/components/topact_v2/topact_v2.component.ts","../../../projects/admin-feature/src/lib/components/topact_v2/topact_v2.component.html","../../../projects/admin-feature/src/lib/models/components/LocksView.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.loc.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.html","../../../projects/admin-feature/src/lib/models/components/MetricsView.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.loc.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.html","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.loc.ts","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.ts","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.html","../../../projects/admin-feature/src/lib/models/components/DynamicViewsView.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.loc.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.html","../../../projects/admin-feature/src/lib/models/components/QueryView.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.loc.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.html","../../../projects/admin-feature/src/lib/models/components/SystemParametersView.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.loc.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.html","../../../projects/admin-feature/src/lib/pipes/format_time.pipe.ts","../../../projects/admin-feature/src/lib/admin-feature-messages.ts","../../../projects/admin-feature/src/lib/admin-feature.comms.service.ts","../../../projects/admin-feature/src/lib/admin-feature.module.ts","../../../projects/admin-feature/src/public-api.ts","../../../projects/admin-feature/src/esfaenza-admin-module.ts"],"sourcesContent":["import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Audit } from \"./Audit\";\r\n\r\nexport class AuditsView extends AppSearch<Audit> {\r\n constructor() {\r\n super();\r\n this.filteraction = '';\r\n this.filterhttp = '';\r\n }\r\n\r\n filterda: string;\r\n filtera: string;\r\n filteruser: string;\r\n filterroute: string;\r\n filteraction: string;\r\n filteraddress: string;\r\n filterhttp: string;\r\n filterargs: string;\r\n filterobjid: string;\r\n filterobjtype: string;\r\n filterconversationid: string;\r\n filterhttpcode: string;\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const ADM_MODULE_PATH: InjectionToken<string> = new InjectionToken<string>('ADM_MODULE_PATH');\r\nexport const ADM_CONVERSATIONS: InjectionToken<boolean> = new InjectionToken<boolean>('ADM_CONVERSATIONS');\r\nexport const ADM_TOPACT_V2: InjectionToken<boolean> = new InjectionToken<boolean>('ADM_TOPACT_V2');","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmAuditLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Audit Applicativi\", [\"Search Application Audits\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Chiamata REST\", [\"REST Call\"]);\r\n super.set(\"it->en\", \"Aggiornamento\", [\"Update\"]);\r\n super.set(\"it->en\", \"Route\", [\"Route\"]);\r\n super.set(\"it->en\", \"Azione\", [\"Action\"]);\r\n super.set(\"it->en\", \"Metodo HTTP\", [\"HTTP Method\"]);\r\n super.set(\"it->en\", \"Argomenti\", [\"Arguments\"]);\r\n super.set(\"it->en\", \"ID Oggetto\", [\"Object ID\"]);\r\n super.set(\"it->en\", \"Tipo Oggetto\", [\"Object Type\"]);\r\n super.set(\"it->en\", \"Dati Oggetto\", [\"Object Data\"]);\r\n super.set(\"it->en\", \"Carico gli Audit dell'Applicazione\", [\"Loading Application Audits\"]);\r\n super.set(\"it->en\", \"Data\", [\"Date\"]);\r\n super.set(\"it->en\", \"Indirizzo\", [\"Address\"]);\r\n super.set(\"it->en\", \"Risposta HTTP\", [\"HTTP Response\"]);\r\n super.set(\"it->en\", \"Codice Errore Applicativo\", [\"Application Error Code\"]);\r\n super.set(\"it->en\", \"Cod. Conversation\", [\"Conversation ID\"]);\r\n }\r\n}","// Angular\r\nimport { Injectable, Injector } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n// ES\r\nimport { CallResult, MessageService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Configurazioni\r\nimport { ProcessesView } from \"../models/components/ProcessesView\";\r\nimport { firstValueFrom, catchError, of } from \"rxjs\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { TopActivitiesDataView } from \"../models/components/TopActivitiesDataView\";\r\nimport { TopActivityV2Request } from \"../models/components/TopActivityV2Request\";\r\nimport { TopActivityV2Response } from \"../models/components/TopActivityV2Response\";\r\nimport { DirectorInfos } from \"../models/components/DirectorInfos\";\r\nimport { NodeStats } from \"../models/components/NodeStats\";\r\nimport { SessionStats } from \"../models/components/SessionStats\";\r\nimport { ProfilerDataNodesView } from \"../models/components/ProfilerDataNodesView\";\r\nimport { MetricsView } from \"../models/components/MetricsView\";\r\nimport { Metric } from \"../models/components/Metric\";\r\nimport { LocksView } from \"../models/components/LocksView\";\r\nimport { DynamicViewsView } from \"../models/components/DynamicViewsView\";\r\nimport { AuditsView } from \"../models/components/AuditsView\";\r\nimport { QueryView } from \"../models/components/QueryView\";\r\nimport { SystemParametersView } from \"../models/components/SystemParametersView\";\r\nimport { SystemParameters } from \"../models/components/SystemParameters\";\r\n\r\n// Chiamate ai Repository\r\nconst GET_Director_ChangeProcessConsumerGroup: string = \"/api/Director/ChangeProcessConsumerGroup\";\r\nconst GET_Director_GetConsumerGroups: string = \"/api/Director/GetConsumerGroups#cache\";\r\nconst GET_Director_GetInfos: string = \"/api/Director/GetInfos\";\r\nconst GET_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetProfilerDataNodes: string = \"/api/Director/GetProfilerDataNodes\";\r\nconst GET_Director_GetWorkloadReport: string = \"/api/Director/GetWorkloadReport\";\r\nconst POST_Director_GetServerAudits: string = \"/api/Director/GetServerAudits\";\r\nconst POST_Director_GetDynamicViewData: string = \"/api/Director/GetDynamicViewData\";\r\nconst POST_Director_GetServerLocks: string = \"/api/Director/GetServerLocks\";\r\nconst POST_Director_GetServerQuery: string = \"/api/Director/GetServerQuery\";\r\nconst GET_Director_GetServerLogs: string = \"/api/Director/GetServerLogs\";\r\nconst GET_Director_GetDynamicViews: string = \"/api/Director/GetDynamicViews\";\r\nconst POST_Director_GetServerWorkers: string = \"/api/Director/GetServerWorkers\";\r\nconst POST_Director_GetTopActivities: string = \"/api/Director/GetTopActivities\";\r\nconst GET_Director_KillProcess: string = \"/api/Director/KillProcess\";\r\nconst GET_Director_SetProcessTracing: string = \"/api/Director/SetProcessTracing\";\r\nconst GET_Director_GetNodeStats: string = \"/api/Director/GetNodeStats\";\r\nconst GET_Director_GetSessionStats: string = \"/api/Director/GetSessionStats\";\r\nconst POST_Director_GetSystemParameters: string = \"/api/Director/GetSystemParameters\";\r\nconst POST_Director_UpdatSystemParameter: string = \"/api/Director/UpdatSystemParameter\";\r\nconst GET_Director_ResetSystemParameter: string = \"/api/Director/ResetSystemParameter\";\r\nconst GET_Director_GetInstances: string = \"/api/Director/GetInstances\";\r\nconst GET_Director_GetLogTargets: string = \"/api/Director/GetLogTargets\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AdminModuleBaseService {\r\n public http: HTTPService;\r\n public msgExts: MessageService;\r\n\r\n constructor(private injector: Injector) {\r\n this.http = this.injector.get(HTTPService);\r\n this.msgExts = this.injector.get(MessageService);\r\n }\r\n\r\n public async getServerWorkers(be: string, sv: ProcessesView): Promise<ProcessesView> {\r\n var pars = new HttpParams().set(\"be\", be);\r\n\r\n let ret: ProcessesView = await firstValueFrom(this.http.post<ProcessesView>(POST_Director_GetServerWorkers, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async doSetProcessTracing(be: string, instanceid: string, sid: string, serial: string, enable: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"enable\", enable ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_SetProcessTracing, pars));\r\n return ret;\r\n }\r\n\r\n public async doKillProcess(be: string, instanceid: string, sid: string, serial: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_KillProcess, pars));\r\n return ret;\r\n }\r\n\r\n public async doChangeProcessConsumerGroup(be: string, instanceid: string, sid: string, serial: string, consumerGroup: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"consumer_group\", consumerGroup ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_ChangeProcessConsumerGroup, pars));\r\n return ret;\r\n }\r\n\r\n public async getConsumerGroups(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetConsumerGroups, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerLogs(be: string, from: string, to: string, instance: string, target: string): Promise<string> {\r\n var pars = new HttpParams().set(\"from\", from ?? \"\").set(\"to\", to ?? \"\").set(\"instance\", instance ?? \"\").set(\"target\", target ?? \"\").set(\"be\", be ?? \"\");\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_GetServerLogs, pars));\r\n return ret;\r\n }\r\n\r\n public async getTopActivities(be: string, sv: TopActivitiesDataView): Promise<TopActivitiesDataView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: TopActivitiesDataView = await firstValueFrom(this.http.post<TopActivitiesDataView>(POST_Director_GetTopActivities, sv, pars));\r\n return ret;\r\n }\r\n\r\n // Stesso URL di getTopActivities: con DirectorFeature.TopActivityV2 attivo il backend-for-frontend risponde con il contratto v2\r\n public async getTopActivitiesV2(be: string, req: TopActivityV2Request): Promise<TopActivityV2Response> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: TopActivityV2Response = await firstValueFrom(this.http.post<TopActivityV2Response>(POST_Director_GetTopActivities, req, pars));\r\n return ret;\r\n }\r\n\r\n public async getInfos(be: string): Promise<DirectorInfos> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: DirectorInfos = await firstValueFrom(this.http.get<DirectorInfos>(GET_Director_GetInfos, pars, null, false).pipe(catchError(_ => of(null as DirectorInfos))));\r\n return ret;\r\n }\r\n\r\n public async getNodeStats(be: string, nodeId: string, global: boolean = false): Promise<NodeStats> {\r\n let pars = new HttpParams().set(\"nodeId\", nodeId ?? \"\").set(\"be\", be ?? \"\").set(\"global\", global);\r\n let ret: NodeStats = await firstValueFrom(this.http.get<NodeStats>(GET_Director_GetNodeStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getSessionStats(be: string, sid: string, serial: string, instance: string): Promise<SessionStats> {\r\n let pars = new HttpParams().set('sid', sid ?? \"\").set('serial', serial ?? \"\").set('instanceid', instance ?? \"\").set(\"be\", be ?? \"\");\r\n let ret: SessionStats = await firstValueFrom(this.http.get<SessionStats>(GET_Director_GetSessionStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getProfilerDataNodes(be: string, sv: ProfilerDataNodesView): Promise<ProfilerDataNodesView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: ProfilerDataNodesView = await firstValueFrom(this.http.post<ProfilerDataNodesView>(POST_Director_GetProfilerDataNodes, sv, pars));\r\n return ret;\r\n }\r\n\r\n public downloadWorkloadReport(be: string, from: string, to: string, global: boolean = false) {\r\n let pars = new HttpParams().set(\"from\", from ?? \"\").set(\"to\", to ?? \"\").set(\"be\", be ?? \"\").set(\"global\", global);\r\n this.http.getFileNative(GET_Director_GetWorkloadReport, pars);\r\n }\r\n\r\n public async getMetrics(be: string, sv: MetricsView): Promise<MetricsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: MetricsView = await firstValueFrom(this.http.post<MetricsView>(POST_Director_GetMetrics, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getMetricsList(be: string, from: string, to: string): Promise<Metric[]> {\r\n let pars = new HttpParams()\r\n .set(\"from\", from ?? \"\")\r\n .set(\"to\", to ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: Metric[] = await firstValueFrom(this.http.get<Metric[]>(GET_Director_GetMetrics, pars));\r\n return ret.sort((a, b) => a.name.localeCompare(b.name));\r\n }\r\n\r\n public async getServerLocks(be: string, sv: LocksView): Promise<LocksView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: LocksView = await firstValueFrom(this.http.post<LocksView>(POST_Director_GetServerLocks, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerQuery(be: string, sv: QueryView): Promise<QueryView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: QueryView = await firstValueFrom(this.http.post<QueryView>(POST_Director_GetServerQuery, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViewData(be: string, sv: DynamicViewsView): Promise<DynamicViewsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: DynamicViewsView = await firstValueFrom(this.http.post<DynamicViewsView>(POST_Director_GetDynamicViewData, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViews(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetDynamicViews, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerAudits(be: string, sv: AuditsView): Promise<AuditsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: AuditsView = await firstValueFrom(this.http.post<AuditsView>(POST_Director_GetServerAudits, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getSystemParameters(be: string, sv: SystemParametersView): Promise<SystemParametersView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: SystemParametersView = await firstValueFrom(this.http.post<SystemParametersView>(POST_Director_GetSystemParameters, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getInstances(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetInstances, pars));\r\n return ret;\r\n }\r\n\r\n \r\n public async getLogTargets(be: string, instance: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\").set(\"instance\", instance ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetLogTargets, pars));\r\n return ret;\r\n }\r\n\r\n public async updateSystemParameter(be: string, dto: SystemParameters): Promise<string> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: string = await firstValueFrom(this.http.post<string>(POST_Director_UpdatSystemParameter, dto, pars));\r\n return ret;\r\n }\r\n\r\n public async resetSystemParameter(be: string, parId: string, level: string): Promise<string> {\r\n let pars = new HttpParams()\r\n .set(\"parId\", parId)\r\n .set(\"level\", level)\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_ResetSystemParameter, pars));\r\n return ret;\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InterComService, InboundMessageTypes, ClipboardService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { AuditsView } from \"../../models/components/AuditsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH, ADM_CONVERSATIONS } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmAuditLoc } from \"./adm_audits.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"adm_audits\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }],\r\n templateUrl: \"./adm_audits.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmAuditsComponent {\r\n\r\n public searchView: AuditsView = new AuditsView();\r\n public Actions: KeyValue[] = [];\r\n public HttpMethods: KeyValue[] = [];\r\n public searchInProgress: boolean = false;\r\n public storageSub: any;\r\n\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n public exts: ClipboardService,\r\n @Inject(ADM_MODULE_PATH) private mod: string,\r\n @Inject(ADM_CONVERSATIONS) public usesConversations: boolean) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n\r\n this.HttpMethods = [\r\n { id: \"GET\", description: \"GET\" },\r\n { id: \"POST\", description: \"POST\" },\r\n { id: \"PUT\", description: \"PUT\" },\r\n { id: \"PATCH\", description: \"PATCH\" },\r\n { id: \"DELETE\", description: \"DELETE\" }\r\n ];\r\n\r\n this.Actions = [\r\n { id: \"C\", description: this.lc.loc(\"Chiamata REST\") },\r\n { id: \"U\", description: this.lc.loc(\"Aggiornamento\") },\r\n { id: \"D\", description: this.lc.loc(\"Elimina\") }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<AuditsView>(\"HotAudittato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serveraudits`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotAudittato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: AuditsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n else {\r\n this.searchView = new AuditsView();\r\n this.searchView.filterda = dayjs().add(-1, \"month\").format(this.lc.token(\"getSmallDateFormat\"));\r\n this.searchView.filtera = dayjs().format(this.lc.token(\"getSmallDateFormat\"));\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchInProgress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n\r\n async POSTGetProcesses(data: AuditsView) {\r\n this.searchView = await this.adms.getServerAudits(this.be, data);\r\n this.searchInProgress = false;\r\n this.localStorage.setItem(\"HotAudittato\", this.searchView).subscribe();\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Audit Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'A' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteraddress\" name=\"filteraddress\" [Placeholder]=\"'Indirizzo' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [Placeholder]=\"'Azione' | localize: lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [Placeholder]=\"'Metodo HTTP' | localize: lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Argomenti' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'ID Oggetto' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Tipo Oggetto' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterhttpcode\" name=\"filterhttpcode\" [Placeholder]=\"'Risposta HTTP' | localize: lc\"></form-input>\n </div>\n <!-- Per ora commentato -->\n <!-- <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" *ngIf=\"usesConversations\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterconversationid\" name=\"filterconversationid\" [Placeholder]=\"'Cod. Conversation' | localize: lc\"></form-input>\n </div> -->\n </div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico gli Audit dell\\'Applicazione' | localize: lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\n <span *th=\"'Timestamp'\">{{'Data' | localize: lc}}</span>\n <span *th=\"'User'\">{{'Utente' | localize: lc}}</span>\n <span *th=\"'RemoteAddress'\">{{'Indirizzo' | localize: lc}}</span>\n <span *th=\"'Action'\">{{'Azione' | localize: lc}}</span>\n <span *th=\"'HttpMethod'\">{{'Metodo HTTP' | localize: lc}}</span>\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\n <span *th=\"'Args'\">{{'Argomenti' | localize: lc}}</span>\n <span *th=\"'HttpResponse'\">{{'Risposta HTTP' | localize: lc}}</span>\n <span *th=\"'NonStdErrorMessage'\">{{'Codice Errore Applicativo' | localize: lc}}</span>\n <span *th=\"'ConvId'; If: usesConversations\">{{'Cod. Conversation' | localize: lc}}</span>\n <span *th=\"'ObjectType'\">{{'Tipo Oggetto' | localize: lc}}</span>\n <span *th=\"'ObjectId'\">{{'ID Oggetto' | localize: lc}}</span>\n <span *th=\"'ObjectData'\">{{'Dati Oggetto' | localize: lc}}</span>\n <strong *td=\"'Timestamp'; let item\">{{item.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\n <span *td=\"'User'; let item\">{{item.user}}</span>\n <span *td=\"'RemoteAddress'; let item\">{{item.address}}</span>\n <span *td=\"'Action'; let item\">{{item.action}}</span>\n <span *td=\"'HttpMethod'; let item\">{{item.httpmethod}}</span>\n <span *td=\"'Route'; let item\">{{item.route}}</span>\n <span *td=\"'Args'; let item\" class=\"app-pointer\" title=\"Click per copiarlo nella clipboard\" (click)=\"exts.copyTextToClipboard(item.args)\">{{item.args}}</span>\n <span *td=\"'HttpResponse'; let item\">{{item.httpresponse}}</span>\n <span *td=\"'NonStdErrorMessage'; let item\">{{item.mdmerrorcode}}</span>\n <span *td=\"'ConvId'; If: usesConversations; let item\">{{item.conversationid}}</span>\n <span *td=\"'ObjectType'; let item\">{{item.objecttype}}</span>\n <span *td=\"'ObjectId'; let item\">{{item.objectid}}</span>\n <span *td=\"'ObjectData'; let item\">{{item.objectdata}}</span>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n</div>","export class KeyValue {\r\n constructor(public id: string, public description: string) { }\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class ProcessesView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtertenant: string;\r\n filteruser: string;\r\n filterstate: string;\r\n filterglobal: boolean;\r\n filtertype: string;\r\n filterthreadtype: string;\r\n filterthreadstatus: string;\r\n filterinwait: boolean;\r\n filtersid: string;\r\n filtertid: string;\r\n filtermtid: string;\r\n filterdcid: boolean;\r\n\r\n filterbe: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmWrkLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Gruppo di Consumo modificato con successo\", [\"Consumer Group succesfully changed\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Gruppo di Consumo\", [\"Errors changing Consumer Group\"]);\r\n super.set(\"it->en\", \"Modifica Gruppo di Consumo\", [\"Change Consumer Group\"]);\r\n super.set(\"it->en\", \"Nuovo Gruppo di Consumo\", [\"New Consumer Group\"]);\r\n super.set(\"it->en\", \"Tipo Thread\", [\"Thread Type\"]);\r\n super.set(\"it->en\", \"Stato Thread\", [\"Thread Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Stato\", [\"State\"]);\r\n super.set(\"it->en\", \"SID\", [\"SID\"]);\r\n super.set(\"it->en\", \"TID\", [\"TID\"]);\r\n super.set(\"it->en\", \"In Attesa\", [\"In Wait\"]);\r\n super.set(\"it->en\", \"Push dedicato connesso\", [\"Dedicated push connected\"]);\r\n super.set(\"it->en\", \"Ricerca globale\", [\"Global search\"]);\r\n super.set(\"it->en\", \"Ricerca Processi Applicativi\", [\"Search Application Processes\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Tracing del Processo\", [\"Errors toggling Process Tracing\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Carico i Processi Applicativi\", [\"Loading Application Processes\"]);\r\n super.set(\"it->en\", \"Attiva Tracing Processo\", [\"Activate Process Tracing\"]);\r\n super.set(\"it->en\", \"Disattiva Tracing Progetto\", [\"Deactivate Process Tracing\"]);\r\n super.set(\"it->en\", \"Ammazza Processo\", [\"Kill Process\"]);\r\n super.set(\"it->en\", \"Errori durante la Kill del Processo\", [\"Errors killing the Process\"]);\r\n super.set(\"it->en\", \"Processo ucciso con successo\", [\"Process succesfully killed\"]);\r\n super.set(\"it->en\", \"Conferma Terminazione del Processo\", [\"Confirm Process Kill\"]);\r\n super.set(\"it->en\", \"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\", [\"Are you sure you wish to kill the selected process? The associated user will be disconnected\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { EsTableOperationDefinition } from \"@esfaenza/es-table\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ProcessesView } from \"../../models/components/ProcessesView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmWrkLoc } from \"./adm_wrk.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_wrk\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }],\r\n templateUrl: \"./adm_wrk.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmWrkComponent {\r\n\r\n private globalFilterValue = null;\r\n\r\n public searchView: ProcessesView = new ProcessesView();\r\n public DynamicOps: EsTableOperationDefinition[] = [];\r\n public storageSub: any;\r\n public valueToShow: string = \"\";\r\n\r\n public Types: KeyValue[] = [];\r\n public States: KeyValue[] = [];\r\n public ThreadTypes: KeyValue[] = [];\r\n public ThreadStatuses: KeyValue[] = [];\r\n\r\n private be: string;\r\n constructor(\r\n private utiExts: UtilityService,\r\n private msgExts: MessageService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.DynamicOps = [\r\n new EsTableOperationDefinition(\"trace_on\", this.lc.loc(\"Attiva Tracing Processo\"), \"fa fa-circle text-danger\", \"\", \"trace_enabled\", \"N\"),\r\n new EsTableOperationDefinition(\"trace_off\", this.lc.loc(\"Disattiva Tracing Progetto\"), \"fa fa-circle text-success\", \"\", \"trace_enabled\", \"Y\"),\r\n new EsTableOperationDefinition(\"kill\", this.lc.loc(\"Ammazza Processo\"), \"fa fa-ban text-danger\"),\r\n new EsTableOperationDefinition(\"change_cg\", this.lc.loc(\"Modifica Gruppo di Consumo\"), \"fa fa-edit text-info\")\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n Init(ignoreStorage) {\r\n this.Types = [new KeyValue(\"USER\", \"USER\"), new KeyValue(\"BACKGROUND\", \"BACKGROUND\"), new KeyValue(\"JOB\", \"JOB\")];\r\n this.States = [new KeyValue(\"ACTIVE\", \"ACTIVE\"), new KeyValue(\"INACTIVE\", \"INACTIVE\"), new KeyValue(\"KILLED\", \"KILLED\")];\r\n this.ThreadTypes = [\"APITHREAD\", \"APIPUSHTHREAD\", \"BACKGROUNDTHREAD\", \"JOBTHREAD\", \"PARALLELSLAVETHREAD\"].map(t => new KeyValue(t, t));\r\n this.ThreadStatuses = [\"ACTIVE\", \"IDLE\", \"THROTTLING\", \"KILLED\"].map(t => new KeyValue(t, t));\r\n this.doInit(ignoreStorage);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProcessesView>(\"HotProcessato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverworkers`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotProcessato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProcessesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetServerWorkers();\r\n }\r\n else {\r\n this.searchView = new ProcessesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n this.searchView.columns = [];\r\n this.searchView.column_ordering = [];\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetServerWorkers();\r\n }\r\n\r\n async POSTGetServerWorkers() {\r\n // Switch cattivo per resettare la tabella quando cambia il global (dato che potrebbero cambiare le colonne)\r\n // La casistica è esplicitamente non supportata dall'estable quindi abbozzo un hard refresh da qui...\r\n if (this.globalFilterValue != null && this.globalFilterValue != this.searchView.filterglobal) {\r\n let prevSearchView = this.utiExts.deepClone(this.searchView);\r\n this.searchView = null;\r\n requestAnimationFrame(async () => {\r\n this.globalFilterValue = prevSearchView.filterglobal;\r\n this.searchView = await this.adms.getServerWorkers(this.be, prevSearchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n });\r\n }\r\n else {\r\n this.globalFilterValue = this.searchView.filterglobal || false;\r\n this.searchView = await this.adms.getServerWorkers(this.be, this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n }\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerWorkers(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n onOperation(event: { id: string, item: any }) {\r\n switch (event.id) {\r\n case \"trace_on\": this.toggleTracing(event.item, true); break;\r\n case \"trace_off\": this.toggleTracing(event.item, false); break;\r\n case \"kill\": this.killProcess(event.item); break;\r\n case \"change_cg\": this.changeProcessCg(event.item); break;\r\n }\r\n }\r\n\r\n async toggleTracing(process: any, tracing: boolean) {\r\n let res = await this.adms.doSetProcessTracing(this.be, (process.properties[\"inst_id\"] || process.properties[\"INST_ID\"] || \"\"), process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"], tracing.toString());\r\n this.msgExts.manageStringResponse(res, \"\", this.lc.loc(\"Errori nella modifica del Tracing del Processo\"), () => this.sendSearch());\r\n }\r\n\r\n killProcess(process: any) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Conferma Terminazione del Processo\"),\r\n this.lc.loc(\"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\"),\r\n async () => {\r\n let res = await this.adms.doKillProcess(this.be, (process.properties[\"inst_id\"] || process.properties[\"INST_ID\"] || \"\"), process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"]);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Processo ucciso con successo\"), this.lc.loc(\"Errori durante la Kill del Processo\"), () => this.sendSearch());\r\n });\r\n }\r\n\r\n //********************************************** Gestione modifica Consumer Group ***************************************\r\n\r\n newCg: string = \"\";\r\n CGs: KeyValue[] = [];\r\n CgDictionariesLoaded: boolean = false;\r\n ProcessOnEdit: any;\r\n\r\n @ViewChild(\"cgFrom\") cgFrom: NgForm;\r\n @ViewChild(\"dlgChangeCg\") dlgChangeCg: ModalDirective;\r\n\r\n changeProcessCg(process: any) {\r\n this.ProcessOnEdit = process;\r\n if (!this.CgDictionariesLoaded) {\r\n this.loadCgDictionaries();\r\n this.CgDictionariesLoaded = true;\r\n }\r\n this.setupChangeCg();\r\n this.dlgChangeCg.show();\r\n }\r\n\r\n async loadCgDictionaries() {\r\n this.CGs = await this.adms.getConsumerGroups(this.be);\r\n }\r\n\r\n setupChangeCg() {\r\n this.utiExts.cleanForm(this.cgFrom)\r\n setTimeout(() => { this.newCg = \"\" });\r\n }\r\n\r\n async doChangeCg() {\r\n let res = await this.adms.doChangeProcessConsumerGroup(this.be, this.ProcessOnEdit.properties[\"inst_id\"] || this.ProcessOnEdit.properties[\"INST_ID\"], this.ProcessOnEdit.properties[\"sid\"] || this.ProcessOnEdit.properties[\"SID\"], this.ProcessOnEdit.properties[\"serial\"] || this.ProcessOnEdit.properties[\"SERIAL\"], this.newCg);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Gruppo di Consumo modificato con successo\"), this.lc.loc(\"Errori nella modifica del Gruppo di Consumo\"), () => this.sendSearch());\r\n return true;\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Processi Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n @if (searchView) {\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Ricerca globale' | localize: lc}}</span>\n </div>\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertype\" name=\"filtertype\" [Placeholder]=\"'Tipo' | localize: lc\" [Source]=\"Types\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Tenant' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [Placeholder]=\"'Stato' | localize: lc\" [Source]=\"States\"></form-select>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertid\" name=\"filtertid\" [Placeholder]=\"'TID'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermtid\" name=\"filtermtid\" [Placeholder]=\"'Thread gestito'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadtype\" name=\"filterthreadtype\" [Placeholder]=\"'Tipo Thread' | localize: lc\" [Source]=\"ThreadTypes\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadstatus\" name=\"filterthreadstatus\" [Placeholder]=\"'Stato Thread' | localize: lc\" [Source]=\"ThreadStatuses\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterinwait\" name=\"filterinwait\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterinwait = !searchView.filterinwait\">{{'In Attesa' | localize: lc}}</span>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterdcid\" name=\"filterdcid\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterdcid = !searchView.filterdcid\">{{'Push dedicato connesso' | localize: lc}}</span>\n </div>\n </div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n </form>\n </div>\n }\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Processi Applicativi' | localize: lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [Export]=\"true\" [ColumnsOrdering]=\"false\"\n [ExportFileName]=\"'Application Processes.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [AutoUpdate]=\"true\"\n [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span>&nbsp;\n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\n </span>\n </es-table>\n </div>\n }\n </div>\n </div>\n <div class=\"app-margin-top-15\">\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Indietro' | localize: lc}}</button>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-lg\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{'Modifica Gruppo di Consumo' | localize: lc}}</h4>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\n <div class=\"modal-body\">\n <form-select [Label]=\"'Nuovo Gruppo di Consumo' | localize: lc\" [(ngModel)]=\"newCg\" name=\"newCg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Chiudi' | localize: lc}}</button>\n <button type=\"submit\" class=\"btn btn-primary\">{{'Conferma' | localize: lc}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title pull-left\">\n Full Wait Stack\n </h5>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\n <span class=\"app-wrap\">\n {{valueToShow}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\n </div>\n </div>\n </div>\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class ProfilerDataNodeLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"ID Padre\", [\"Parent ID\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"])\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"])\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Export, ExportLocalization } from \"@esfaenza/extensions\";\r\n\r\nimport { ProfilerDataNodeLoc } from \"./ProfilerDataNode.loc\";\r\n\r\n@ExportLocalization(ProfilerDataNodeLoc)\r\nexport class ProfilerDataNode {\r\n @Export(10, \"ID Padre\")\r\n parentid: string;\r\n @Export(20, \"ID\")\r\n id: string;\r\n @Export(30, \"Descrizione\")\r\n description: string;\r\n @Export(40, \"Chiamate\")\r\n calls: number;\r\n @Export(50, \"Tempo\")\r\n time: number;\r\n @Export(60, \"Tempo Max\")\r\n peaktime: number;\r\n @Export(70, \"Tempo Min\")\r\n mintime: number;\r\n @Export(80, \"Tempo Medio\")\r\n avgtime: number;\r\n @Export(90, \"Tempo Specifico\")\r\n timewithoutchildren: number;\r\n @Export(100, \"Percentuale\")\r\n percentage: number;\r\n @Export(110, \"Chiamate Periodo\")\r\n snapdeltacalls: number;\r\n @Export(120, \"Tempo Periodo\")\r\n snapdeltatime: number;\r\n @Export(130, \"Tempo Max Periodo\")\r\n snappeaktime: number;\r\n @Export(140, \"Tempo Min Periodo\")\r\n snapmintime: number;\r\n @Export(150, \"Tempo Medio Periodo\")\r\n snapavgtime: number;\r\n @Export(160, \"Tempo Specifico Periodo\")\r\n snaptimewithoutchildren: number;\r\n @Export(170, \"Percentuale Periodo\")\r\n snappercentage: number;\r\n @Export(180, \"Nome Tipologia Evento\")\r\n eventtypename: string;\r\n @Export(190, \"Nome Classe Attesa\")\r\n waitclassname: string;\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { ProfilerDataNode } from \"./ProfilerDataNode\";\r\n\r\nexport class ProfilerDataNodesView extends AppSearch<ProfilerDataNode>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmProfilerComponentLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Profiler del Server\", [\"Server Profiler\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"]);\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"]);\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class NodeDetailLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Dettaglio Attività Nodo\", [\"Activity Node Details\"]);\r\n super.set(\"it->en\", \"Tipo Evento\", [\"Event Type\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso (Con Figli)\", [\"Elapsed (With Children)\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso\", [\"Elapsed (No Children)\"]);\r\n super.set(\"it->en\", \"Stack di Attesa\", [\"Wait Stack\"]);\r\n super.set(\"it->en\", \"Utilizzo Risorse\", [\"Resources Usage\"]);\r\n super.set(\"it->en\", \"Esecuzioni\", [\"Executions\"]);\r\n\t\tsuper.set(\"it->en\", \"Dettaglio evento\", [\"Event detail\"]);\r\n }\r\n}","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { BaseInterval, KeyValueColor, LineChartData, LineSerie, PieChartData } from \"@esfaenza/es-charts\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n// Applicazione\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\n// Localizzazione\r\nimport { NodeDetailLoc } from \"./node_detail.component.loc\";\r\n\r\n@Component({\r\n selector: \"node-detail\",\r\n viewProviders: [{ provide: LocalizationService, useClass: NodeDetailLoc }],\r\n templateUrl: \"./node_detail.component.html\",\r\n standalone: false\r\n})\r\nexport class NodeDetailComponent {\r\n\r\n @Input() NodeDetails: NodeStats;\r\n\r\n @Output() onClose: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(public lc: LocalizationService) { }\r\n\r\n ngOnInit() {\r\n let serie = new LineSerie(this.lc.loc(\"Sessioni Attive\"), this.NodeDetails.activesessions, null);\r\n this.NodeDetails.sessionchart = new LineChartData([serie]);\r\n this.NodeDetails.loadchart = new PieChartData([\r\n new KeyValueColor(\"CPU\", this.NodeDetails.cpuperc),\r\n new KeyValueColor(\"Wait\", this.NodeDetails.waitperc),\r\n new KeyValueColor(\"DB\", this.NodeDetails.dbperc),\r\n new KeyValueColor(\"Script\", this.NodeDetails.scriptperc),\r\n new KeyValueColor(\"Throttle\", this.NodeDetails.throttleperc),\r\n new KeyValueColor(\"Sleep\", this.NodeDetails.sleepperc),\r\n new KeyValueColor(\"Networking\", this.NodeDetails.networkperc),\r\n new KeyValueColor(\"IO\", this.NodeDetails.ioperc)\r\n ]);\r\n }\r\n\r\n closeDialog() {\r\n this.onClose.emit(true);\r\n }\r\n}","<div class=\"modal-dialog modal-xl\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">\n {{'Dettaglio Attività Nodo' | localize: lc}}\n @if (NodeDetails) {\n <span>&nbsp;{{NodeDetails.nodeid}}</span>\n }\n </h4>\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n @if (NodeDetails) {\n <div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-md-6\">\n <strong>{{'Tipo Evento' | localize: lc}}</strong>:&nbsp;{{NodeDetails.eventtypedesc}}&nbsp;<strong>{{'Classe Attesa' | localize: lc}}</strong>:&nbsp;{{NodeDetails.waitclassname}}\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Tempo Trascorso (Con Figli)' | localize: lc}}</strong>:&nbsp;{{NodeDetails.elapsed}}&nbsp;s\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Esecuzioni' | localize: lc}}</strong>:&nbsp;{{NodeDetails.executions}}\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Tempo Trascorso' | localize: lc}}</strong>:&nbsp;{{NodeDetails.elapsedlesschildren}}&nbsp;s\n </div>\n </div>\n <div>\n <h5 class=\"app-margin-top-10\"><strong>{{'Dettaglio evento' | localize: lc}}</strong></h5>\n {{NodeDetails.nodedescription}}\n </div>\n @if ((NodeDetails?.waitstack?.length || 0) > 0) {\n <div style=\"max-height: 200px; overflow: auto\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Stack di Attesa' | localize: lc}}</strong></h5>\n @for (wait of NodeDetails.waitstack; track wait; let i = $index) {\n <div>\n @for (_ of [].constructor(i+1); track _) {\n -\n }&nbsp;{{wait.nodeid}}&nbsp;-&nbsp;{{wait.nodedescription}}:&nbsp;\n <strong>{{'Tipo Evento' | localize: lc}}</strong>:&nbsp;{{wait.eventtypedesc}}&nbsp;\n <strong>{{'Classe Attesa' | localize: lc}}</strong>:&nbsp;{{wait.waitclassname}}\n </div>\n }\n </div>\n }\n @if ((NodeDetails?.foundininstanceids?.length || 0) > 0) {\n <div style=\"max-height: 200px; overflow: auto\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Presente nelle seguenti istanze' | localize: lc}}</strong></h5>\n @for (instid of NodeDetails.foundininstanceids; track instid; let i = $index) {\n <div style=\"margin-right: 15px;\">\n {{instid}}\n </div>\n }\n </div>\n }\n <div style=\"height: 200px;\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Utilizzo Risorse' | localize: lc}}</strong></h5>\n @if (NodeDetails.sessionchart) {\n <es-line-chart\n [MinGridDistance]=\"65\"\n [Timeline]=\"false\"\n [FinalInstants]=\"false\"\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\n [Fill]=\"true\"\n [MergeDatasets]=\"true\"\n [Data]=\"NodeDetails.sessionchart\"\n [Legend]=\"true\"\n name=\"nodeDetailSessionChart\"\n [DataGroupingThreshold]=\"99999999\"></es-line-chart>\n }\n </div>\n <div style=\"height: 200px;\">\n @if (NodeDetails.loadchart) {\n <es-pie-chart [Legend]=\"true\" [Data]=\"NodeDetails.loadchart\" name=\"nodeDetailLoadChart\"></es-pie-chart>\n }\n </div>\n </div>\n }\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\n </div>\n </div>\n </div>","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Applicazione\r\nimport { ProfilerDataNode } from \"../../models/components/ProfilerDataNode\";\r\nimport { ProfilerDataNodesView } from \"../../models/components/ProfilerDataNodesView\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmProfilerComponentLoc } from \"./adm_profiler.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\n@Component({\r\n selector: \"adm_profiler\",\r\n providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }],\r\n templateUrl: \"./adm_profiler.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmProfilerComponent {\r\n public searchView: ProfilerDataNodesView = new ProfilerDataNodesView();\r\n public storageSub: any;\r\n\r\n public NodeDetails: NodeStats;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProfilerDataNodesView>(\"HotSearchProfilato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/profiler`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchProfilato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProfilerDataNodesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProfilerDataNodesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n\r\n downloadWorkloadReport() {\r\n this.adms.downloadWorkloadReport(this.be, this.searchView.filterfrom, this.searchView.filterto, this.searchView.filterglobal);\r\n }\r\n\r\n async POSTGetItems(data: ProfilerDataNodesView) {\r\n this.searchView = await this.adms.getProfilerDataNodes(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSearchProfilato\", this.searchView).subscribe();\r\n }\r\n\r\n async prepareExport(dataCallBack) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let res = await this.adms.getProfilerDataNodes(this.be, view);\r\n dataCallBack(res.items, ProfilerDataNode);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId);\r\n });\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Profiler del Server' | localize: lc}}</span>&nbsp;\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"downloadWorkloadReport()\" type=\"submit\"><i class=\"fa fa-download\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Dati' | localize: lc}}</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\n <span *th=\"'2'\">{{'Descrizione' | localize: lc}}</span>\n <span *th=\"'3'\">{{'Chiamate' | localize: lc}}</span>\n <span *th=\"'4'\">{{'Tempo' | localize: lc}}</span>\n <span *th=\"'5'\">{{'Tempo Max' | localize: lc}}</span>\n <span *th=\"'6'\">{{'Tempo Min' | localize: lc}}</span>\n <span *th=\"'7'\">{{'Tempo Medio' | localize: lc}}</span>\n <span *th=\"'8'\">{{'Tempo Specifico' | localize: lc}}</span>\n <span *th=\"'9'\">{{'Percentuale' | localize: lc}}</span>\n <span *th=\"'10'\">{{'Chiamate Periodo' | localize: lc}}</span>\n <span *th=\"'11'\">{{'Tempo Periodo' | localize: lc}}</span>\n <span *th=\"'12'\">{{'Tempo Max Periodo' | localize: lc}}</span>\n <span *th=\"'13'\">{{'Tempo Min Periodo' | localize: lc}}</span>\n <span *th=\"'14'\">{{'Tempo Medio Periodo' | localize: lc}}</span>\n <span *th=\"'15'\">{{'Tempo Specifico Periodo' | localize: lc}}</span>\n <span *th=\"'16'\">{{'Percentuale Periodo' | localize: lc}}</span>\n <span *th=\"'17'\">{{'Nome Tipologia Evento' | localize: lc}}</span>\n <span *th=\"'18'\">{{'Nome Classe Attesa' | localize: lc}}</span>\n <span *th=\"'19'\">{{'Numero Istanze' | localize: lc}}</span>\n <span *td=\"'1'; let item\"><span class=\"app-link app-inline\" (click)=\"loadNodeDetails(item.id); dlgNodeDetails.show();\">{{item.id}}</span></span>\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\n <span *td=\"'3'; let item\">{{item.calls}}</span>\n <span *td=\"'4'; let item\">{{item.time}}</span>\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\n <span *td=\"'8'; let item\">{{item.timewithoutchildren }}</span>\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\n <span *td=\"'17' let item\">{{item.eventtypename}}</span>\n <span *td=\"'18' let item\">{{item.waitclassname}}</span>\n <span *td=\"'19' let item\">{{item.numinstances}}</span>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n @if (NodeDetails) {\n <node-detail [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\n }\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { TopActivity } from \"./TopActivity\";\r\n\r\nexport class TopActivitiesDataView extends AppSearch<TopActivity>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterrealtime: boolean;\r\n filterbe: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivitieLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Prime Istruzioni\", [\"Top Nodes\"]);\r\n super.set(\"it->en\", \"Prime Sessioni\", [\"Top Sessions\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Attività Principali\", [\"Top Activities\"]);\r\n super.set(\"it->en\", \"Descrizione Nodo\", [\"Node Description\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Limite\", [\"Limit\"]);\r\n super.set(\"it->en\", \"Tipo Nodo\", [\"Node Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Processo\", [\"Process\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Thread Massimi\", [\"Maximum Threads\"]);\r\n super.set(\"it->en\", \"CPU\", [\"CPUs\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class Name\"]);\r\n\r\n super.set(\"it->en\", \"Seriale\", [\"Serial\"]);\r\n super.set(\"it->en\", \"Stato\", [\"Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, BaseInterval, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ItemsSelection } from \"@esfaenza/es-table\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am5xy from \"@amcharts/amcharts5/xy\";\r\nimport { ReplaySubject } from \"rxjs\";\r\nimport { Dayjs } from \"dayjs\";\r\n\r\n// Modelli\r\nimport { DirectorInfos } from \"../../models/components/DirectorInfos\";\r\nimport { TopActivitiesDataView } from \"../../models/components/TopActivitiesDataView\";\r\nimport { TopNode } from \"../../models/components/TopNode\";\r\nimport { TopSession } from \"../../models/components/TopSession\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { SessionThread } from \"../../models/components/SessionThread\";\r\n\r\n// Applicazione\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmTopActivitieLoc } from \"./topact_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"topact_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmTopActivitieLoc }],\r\n templateUrl: \"./topact_search.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmTopActivitiesComponent {\r\n public searchView: TopActivitiesDataView = new TopActivitiesDataView();\r\n public storageSub: any;\r\n private LastDataPoint: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n\r\n private ChartInstance: BaseChartComponent<any>;\r\n public NodeDetails: NodeStats;\r\n\r\n private rtWindow: { from: Dayjs, to: Dayjs } = null;\r\n\r\n protected destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n private be: string;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // Ogni minuto calcolo qual è la finestra del realTime\r\n // interval(60 * 1000).pipe(takeUntil(this.destroyed$)).subscribe(_ => {\r\n // this.updateRealTimeWindow();\r\n // });\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n async updateRealTimeWindow() {\r\n let data = new TopActivitiesDataView();\r\n data.filterbe = this.be;\r\n data = await this.adms.getTopActivities(this.be, data);\r\n let reference = data.items[0];\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = this.dateExts.getDateConvertion(itemref.sampletime);\r\n\r\n if (!this.rtWindow)\r\n this.rtWindow = { from: theD, to: theD };\r\n else {\r\n if (theD.isBefore(this.rtWindow.from))\r\n this.rtWindow.from = theD;\r\n if (theD.isAfter(this.rtWindow.to))\r\n this.rtWindow.to = theD;\r\n }\r\n }\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<TopActivitiesDataView>(\"HotSearchTopAct\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/topact`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchTopAct\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: TopActivitiesDataView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new TopActivitiesDataView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: TopActivitiesDataView = null) {\r\n let sv = searchViewOverride ?? this.searchView;\r\n if ((sv.filterfrom || sv.filterto) && !this.rtWindow)\r\n await this.updateRealTimeWindow();\r\n\r\n let dateRequestOnRealtimeWindow: boolean =\r\n sv.filterfrom && this.dateExts.getDateConvertion(sv.filterfrom).isAfter(this.rtWindow.from) &&\r\n sv.filterto && this.dateExts.getDateConvertion(sv.filterto).isBefore(this.rtWindow.to);\r\n\r\n sv.filterrealtime = dateRequestOnRealtimeWindow;\r\n sv.searchinprogress = true;\r\n\r\n this.POSTGetItems(sv, update);\r\n }\r\n\r\n async POSTGetItems(data: TopActivitiesDataView, update: boolean) {\r\n data.filterbe = this.be;\r\n let res = await this.adms.getTopActivities(this.be, data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.searchView = res;\r\n this.localStorage.setItem(\"HotSearchTopAct\", this.searchView).subscribe();\r\n }\r\n // DirectorInfos anche se per qualche motivo crasha di brutto è comunque non obbligatorio, evito di non caricare la pagina solo perché lui scoppia\r\n let dirinfos = await this.adms.getInfos(this.be);\r\n this.searchView.searchinprogress = false;\r\n this.reviewBindings(update, res, dirinfos);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId, this.searchView.filterglobal);\r\n });\r\n }\r\n\r\n // **************************************************** Trasformazione da searchview con unico elemento con tutto ai 3 elementi:\r\n // **************************************************** Grafico, TopNodes e TopSessions\r\n TopActiveSessions: LineChartData;\r\n TopNodes: TopNode[];\r\n TopSessions: TopSession[];\r\n DirInfos: DirectorInfos;\r\n DirInfosGlobal: DirectorInfos;\r\n seriesPropertiesMapping: { [index: string]: LineSerie } = {};\r\n propertiesSeriesMapping: { [index: string]: string } = {\r\n [\"cputime\"]: \"CPU\",\r\n [\"waittime\"]: \"Wait\",\r\n [\"scripttime\"]: \"Scripting\",\r\n [\"dbtime\"]: \"DB\",\r\n [\"nettime\"]: \"Network\",\r\n [\"throttletime\"]: \"Throttling\",\r\n [\"sleeptime\"]: \"Sleep\",\r\n [\"iotime\"]: \"IO\"\r\n };\r\n\r\n reviewBindings(update: boolean, searchViewOverride?, dirInfos?: DirectorInfos) {\r\n let reference = (searchViewOverride ?? this.searchView).items[0];\r\n this.TopNodes = reference.topnodes;\r\n this.TopSessions = reference.topsessions;\r\n this.DirInfos = dirInfos?.cluster ? dirInfos : null;\r\n this.DirInfosGlobal = !dirInfos?.cluster ? dirInfos : null;\r\n\r\n if (!reference.actsessions || reference.actsessions.length == 0) {\r\n this.TopActiveSessions = null;\r\n return;\r\n }\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(reference.actsessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping[props[i]] = s;\r\n }\r\n }\r\n\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n\r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))\r\n this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n if (update && this.ChartInstance) {\r\n let data = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n if (series.some(t => t.values.length > 0)) {\r\n this.ChartInstance.addData(data);\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n else {\r\n this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n\r\n private from: Date;\r\n private to: Date;\r\n\r\n dataSelectionChanged(event: { from: Date, to: Date, initial: boolean }) {\r\n this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : \"\") : event.from;\r\n this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : \"\") : event.to;\r\n\r\n var pseudoSearchView: TopActivitiesDataView = JSON.parse(JSON.stringify(this.searchView));\r\n pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n this.sendSearch(true, true, pseudoSearchView);\r\n }\r\n\r\n onChartLoaded(chart: BaseChartComponent<any>, overwriteInstance: boolean = true) {\r\n if(overwriteInstance)\r\n this.ChartInstance = chart;\r\n\r\n let readyHandler = () => {\r\n (chart.Chart as am5xy.XYChart).xAxes.each(x => x.zoom(0, 1, 0));\r\n (chart.Chart as am5xy.XYChart).yAxes.each(y => y.zoom(0, 1, 0));\r\n\r\n chart.Chart!.root.events.off(\"frameended\", readyHandler);\r\n };\r\n\r\n chart.Chart!.root.events.onDebounced(\"frameended\", readyHandler, 500);\r\n }\r\n\r\n // **************************************************** Gestione dettaglio sessione\r\n\r\n SessionDetails: SessionStats;\r\n SelectedTopNodes: TopNode[];\r\n SelectedSessions: LineChartData;\r\n\r\n seriesPropertiesMapping2: { [index: string]: LineSerie } = {};\r\n\r\n loadSessionDetails(sessionId: number, serialNo: number, instanceid: string) {\r\n this.SessionDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.SessionDetails = await this.adms.getSessionStats(this.be, sessionId?.toString(), serialNo?.toString(), instanceid);\r\n this.threadSelectionChanged(null);\r\n });\r\n }\r\n\r\n threadSelectionChanged(selection?: ItemsSelection<SessionThread>) {\r\n this.SelectedTopNodes = null;\r\n this.SelectedSessions = null;\r\n\r\n requestAnimationFrame(() => {\r\n let sessDet = (selection?.count || 0) == 0 ? this.SessionDetails : selection.items[0];\r\n\r\n this.SelectedTopNodes = sessDet.nodes;\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(sessDet.sessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null , null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping2[props[i]] = s;\r\n }\r\n }\r\n \r\n for (let i = 0; i < sessDet.sessions.length; i++) {\r\n let itemref = sessDet.sessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n \r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime')\r\n this.seriesPropertiesMapping2[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n this.SelectedSessions = new LineChartData(series);\r\n\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Attività Principali' | localize: lc}}\r\n <span *ngIf=\"DirInfos && !DirInfosGlobal\">&nbsp;-&nbsp;\r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}&nbsp;\r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfos.lavg5 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </span>&nbsp;\r\n <span *ngIf=\"DirInfosGlobal\">&nbsp;|&nbsp;\r\n {{'' + DirInfosGlobal.cpus + ' ' + ('CPU (Global)' | localize: lc) + (DirInfosGlobal.rssplan ? ' - ' + DirInfosGlobal.rssplan : '')}}&nbsp;\r\n Load average: {{ DirInfosGlobal.lavg1 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfosGlobal.lavg5 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfosGlobal.lavg15 | number : '1.1-2' : 'it'}}\r\n <span *ngIf=\"(DirInfosGlobal?.perinstancedata?.length || 0) > 0\">\r\n &nbsp;\r\n <a class=\"app-link app-pointer app-inline\" (click)=\"dlgDirInfos.show();\">[{{'Info per Istanza' | localize: lc}}...]</a>\r\n </span>\r\n </span>&nbsp;\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Aggiorna ogni' | localize: lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" />&nbsp;{{'secondo/i' | localize: lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Prime Sessioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n <th>{{'Attività' | localize: lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td class=\"app-col-min\"><span class=\"app-link\" title=\"{{session.instanceid? (' - ' + session.instanceid) : ''}}\" (click)=\"loadSessionDetails(session.sid, session.serial, session.instanceid); dlgSessionDetails.show();\">{{session.sid}}</span></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgDirInfos=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio per Istanza' | localize: lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgDirInfos.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"(DirInfosGlobal?.perinstancedata?.length || 0) > 0\">\r\n <div class=\"row\" *ngFor=\"let info of DirInfosGlobal.perinstancedata\">\r\n <div class=\"col-md-12\"> \r\n <strong>{{info.instance}}</strong>:&nbsp;\r\n {{'' + info.cpus + ' ' + ('CPU (Global)' | localize: lc) + (info.rssplan ? ' - ' + info.rssplan : '')}}&nbsp;\r\n Load average: {{ info.lavg1 | number : '1.1-2' : 'it'}}&nbsp;{{ info.lavg5 | number : '1.1-2' : 'it'}}&nbsp;{{ info.lavg15 | number : '1.1-2' : 'it'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgDirInfos.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\">&nbsp;{{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgSessionDetails.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div *ngIf=\"SessionDetails.instanceid\" class=\"col-md-6\"><strong>{{'Istanza' | localize: lc}}</strong>:&nbsp;{{SessionDetails.instanceid}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>:&nbsp;{{SessionDetails.serial}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>:&nbsp;{{SessionDetails.status}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>:&nbsp;{{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>:&nbsp;{{SessionDetails.user}}&nbsp;<span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>Prime Istruzioni</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\"(click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{(node.activity == \"NaN\" ? null : node.activity) | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column\">\r\n <h5>Attività</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"SelectedSessions\"\r\n [Legend]=\"true\" \r\n name=\"session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event, true)\">\r\n </es-line-chart>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>Statistiche Thread</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>Stato</th>\r\n <th>Tipo</th>\r\n <th>API</th>\r\n <th>Attesa corrente</th>\r\n <th>Nodo di attesa</th>\r\n <th>Attesa su</th>\r\n <th>Classe</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>Tempo Attesa</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{(thread.waittime == \"NaN\" ? null : thread.waittime) | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgSessionDetails.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Enum della Top Activity v2: i numeri sono quelli del backend (le risposte li riportano come numeri)\r\n\r\nexport enum TopActivityDimension {\r\n WaitClass = 0,\r\n EventType = 1,\r\n WaitEvent = 2,\r\n Instance = 3,\r\n UserSession = 4,\r\n UserName = 5,\r\n Tenant = 6,\r\n SessionType = 7,\r\n BackgroundSession = 8,\r\n JobName = 9,\r\n ConsumerGroup = 10,\r\n ThreadType = 11,\r\n Api = 12,\r\n Machine = 13\r\n}\r\n\r\nexport enum TopActivityDataSource {\r\n Memory = 0,\r\n MemoryAndStored = 1\r\n}\r\n\r\nexport enum TopActivityResolution {\r\n Low = 0,\r\n Medium = 1,\r\n High = 2,\r\n Maximum = 3\r\n}\r\n\r\nexport enum TopActivityMaximumThreads {\r\n None = 0,\r\n Cores = 1,\r\n Threads = 2\r\n}\r\n","import { TopActivityDataSource, TopActivityDimension, TopActivityMaximumThreads, TopActivityResolution } from \"./TopActivityV2Enums\";\r\n\r\nexport class TopActivityV2Filter {\r\n dimension: TopActivityDimension;\r\n // key di un componente o di una riga; \"\" seleziona l'attività senza valore\r\n value: string;\r\n}\r\n\r\n// Richiesta della Top Activity v2: date in ISO UTC (…Z), campi non valorizzati = default del backend.\r\n// Il backend-for-frontend legge i nomi senza badare a maiuscole e minuscole\r\nexport class TopActivityV2Request {\r\n from?: string;\r\n to?: string;\r\n global?: boolean;\r\n instanceId?: string;\r\n dataSource?: TopActivityDataSource;\r\n dimension?: TopActivityDimension;\r\n filters?: TopActivityV2Filter[];\r\n totalActivity?: boolean;\r\n maximumThreads?: TopActivityMaximumThreads;\r\n resolution?: TopActivityResolution;\r\n maxComponents?: number;\r\n tablesFrom?: string;\r\n tablesTo?: string;\r\n tables?: TopActivityDimension[];\r\n topCount?: number;\r\n}\r\n","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivityV2Loc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Attività Principali\", [\"Top Activities\"]);\r\n super.set(\"it->en\", \"CPU\", [\"CPUs\"]);\r\n super.set(\"it->en\", \"Da\", [\"From\"]);\r\n super.set(\"it->en\", \"A\", [\"To\"]);\r\n super.set(\"it->en\", \"Cerca\", [\"Search\"]);\r\n super.set(\"it->en\", \"Istanza\", [\"Instance\"]);\r\n super.set(\"it->en\", \"Istanza corrente\", [\"Current instance\"]);\r\n super.set(\"it->en\", \"Tutte le istanze\", [\"All instances\"]);\r\n super.set(\"it->en\", \"Origine dati\", [\"Data source\"]);\r\n super.set(\"it->en\", \"Memoria e storico\", [\"Memory and history\"]);\r\n super.set(\"it->en\", \"Solo memoria\", [\"Memory only\"]);\r\n super.set(\"it->en\", \"Aggiornamento\", [\"Refresh\"]);\r\n super.set(\"it->en\", \"Spento\", [\"Off\"]);\r\n super.set(\"it->en\", \"Ogni 15 s\", [\"Every 15 s\"]);\r\n super.set(\"it->en\", \"Ogni 30 s\", [\"Every 30 s\"]);\r\n super.set(\"it->en\", \"Ogni 60 s\", [\"Every 60 s\"]);\r\n super.set(\"it->en\", \"Dividi per\", [\"Split by\"]);\r\n super.set(\"it->en\", \"Risoluzione\", [\"Resolution\"]);\r\n super.set(\"it->en\", \"Bassa\", [\"Low\"]);\r\n super.set(\"it->en\", \"Media\", [\"Medium\"]);\r\n super.set(\"it->en\", \"Alta\", [\"High\"]);\r\n super.set(\"it->en\", \"Massima\", [\"Maximum\"]);\r\n super.set(\"it->en\", \"Attività totale\", [\"Total activity\"]);\r\n super.set(\"it->en\", \"Limite\", [\"Limit\"]);\r\n super.set(\"it->en\", \"Worker thread\", [\"Worker threads\"]);\r\n super.set(\"it->en\", \"CPU Massime\", [\"Maximum CPUs\"]);\r\n super.set(\"it->en\", \"Thread Massimi\", [\"Maximum Threads\"]);\r\n super.set(\"it->en\", \"Sessioni attive medie per\", [\"Average active sessions by\"]);\r\n super.set(\"it->en\", \"Picco\", [\"Peak\"]);\r\n super.set(\"it->en\", \"un punto ogni\", [\"one point every\"]);\r\n super.set(\"it->en\", \"Filtri\", [\"Filters\"]);\r\n super.set(\"it->en\", \"Rimuovi\", [\"Remove\"]);\r\n super.set(\"it->en\", \"Clic per filtrare\", [\"Click to filter\"]);\r\n super.set(\"it->en\", \"Prima di questo istante i dati vengono dallo storico (un campione ogni 10 secondi)\", [\"Before this instant data comes from history (one sample every 10 seconds)\"]);\r\n super.set(\"it->en\", \"sessioni\", [\"sessions\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Nessun dato nella finestra\", [\"No data in the window\"]);\r\n super.set(\"it->en\", \"Finestra tabelle\", [\"Tables window\"]);\r\n super.set(\"it->en\", \"Ultimi 5 minuti\", [\"Last 5 minutes\"]);\r\n super.set(\"it->en\", \"Finestra fissa\", [\"Fixed window\"]);\r\n super.set(\"it->en\", \"Prime righe per\", [\"Top rows by\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Altri\", [\"Others\"]);\r\n super.set(\"it->en\", \"(non attribuito)\", [\"(not attributed)\"]);\r\n super.set(\"it->en\", \"(nessuno)\", [\"(none)\"]);\r\n super.set(\"it->en\", \"Classe di attesa\", [\"Wait class\"]);\r\n super.set(\"it->en\", \"Tipo evento\", [\"Event type\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Sessione\", [\"Session\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Tipo sessione\", [\"Session type\"]);\r\n super.set(\"it->en\", \"Sessione di background\", [\"Background session\"]);\r\n super.set(\"it->en\", \"Job\", [\"Job\"]);\r\n super.set(\"it->en\", \"Gruppo di consumo\", [\"Consumer group\"]);\r\n super.set(\"it->en\", \"Tipo thread\", [\"Thread type\"]);\r\n super.set(\"it->en\", \"Macchina\", [\"Machine\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Processo\", [\"Process\"]);\r\n }\r\n}\r\n","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class SessionDetailLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Dettaglio Sessione\", [\"Session Detail\"]);\r\n super.set(\"it->en\", \"Istanza\", [\"Instance\"]);\r\n super.set(\"it->en\", \"Seriale\", [\"Serial\"]);\r\n super.set(\"it->en\", \"Stato\", [\"Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Prime Istruzioni\", [\"Top Nodes\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Descrizione Nodo\", [\"Node Description\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Tipo Nodo\", [\"Node Type\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class Name\"]);\r\n super.set(\"it->en\", \"Statistiche Thread\", [\"Thread Statistics\"]);\r\n super.set(\"it->en\", \"Attesa corrente\", [\"Current Wait\"]);\r\n super.set(\"it->en\", \"Nodo di attesa\", [\"Wait Node\"]);\r\n super.set(\"it->en\", \"Attesa su\", [\"Waiting On\"]);\r\n super.set(\"it->en\", \"Classe\", [\"Class\"]);\r\n super.set(\"it->en\", \"Tempo Attesa\", [\"Wait Time\"]);\r\n super.set(\"it->en\", \"Chiudi\", [\"Close\"]);\r\n }\r\n}\r\n","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, DateValue, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { ItemsSelection } from \"@esfaenza/es-table\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am5xy from \"@amcharts/amcharts5/xy\";\r\n\r\n// Applicazione\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { SessionThread } from \"../../models/components/SessionThread\";\r\nimport { TopNode } from \"../../models/components/TopNode\";\r\n\r\n// Localizzazione\r\nimport { SessionDetailLoc } from \"./session_detail.component.loc\";\r\n\r\n// Dettaglio sessione condiviso (stesso contenuto del dialog della pagina Top Activity di sempre): il dialog che lo ospita resta del chiamante,\r\n// il clic su un nodo viene rilanciato con onNodeSelected perché il dettaglio nodo è anch'esso un dialog del chiamante\r\n@Component({\r\n selector: \"session-detail\",\r\n viewProviders: [{ provide: LocalizationService, useClass: SessionDetailLoc }],\r\n templateUrl: \"./session_detail.component.html\",\r\n standalone: false\r\n})\r\nexport class SessionDetailComponent {\r\n\r\n @Input() SessionDetails: SessionStats;\r\n\r\n @Output() onClose: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() onNodeSelected: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n SelectedTopNodes: TopNode[];\r\n SelectedSessions: LineChartData;\r\n\r\n private seriesPropertiesMapping: { [index: string]: LineSerie } = {};\r\n private propertiesSeriesMapping: { [index: string]: string } = {\r\n [\"cputime\"]: \"CPU\",\r\n [\"waittime\"]: \"Wait\",\r\n [\"scripttime\"]: \"Scripting\",\r\n [\"dbtime\"]: \"DB\",\r\n [\"nettime\"]: \"Network\",\r\n [\"throttletime\"]: \"Throttling\",\r\n [\"sleeptime\"]: \"Sleep\",\r\n [\"iotime\"]: \"IO\"\r\n };\r\n\r\n constructor(public lc: LocalizationService) { }\r\n\r\n ngOnInit() {\r\n this.threadSelectionChanged(null);\r\n }\r\n\r\n threadSelectionChanged(selection?: ItemsSelection<SessionThread>) {\r\n this.SelectedTopNodes = null;\r\n this.SelectedSessions = null;\r\n\r\n requestAnimationFrame(() => {\r\n let sessDet = (selection?.count || 0) == 0 ? this.SessionDetails : selection.items[0];\r\n\r\n this.SelectedTopNodes = sessDet.nodes;\r\n\r\n if (!sessDet.sessions || sessDet.sessions.length == 0)\r\n return;\r\n\r\n let series: LineSerie[] = [];\r\n let props = Object.keys(sessDet.sessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping[props[i]] = s;\r\n }\r\n }\r\n\r\n for (let i = 0; i < sessDet.sessions.length; i++) {\r\n let itemref = sessDet.sessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n\r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime')\r\n this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n this.SelectedSessions = new LineChartData(series);\r\n });\r\n }\r\n\r\n onChartLoaded(chart: BaseChartComponent<any>) {\r\n let readyHandler = () => {\r\n (chart.Chart as am5xy.XYChart).xAxes.each(x => x.zoom(0, 1, 0));\r\n (chart.Chart as am5xy.XYChart).yAxes.each(y => y.zoom(0, 1, 0));\r\n\r\n chart.Chart!.root.events.off(\"frameended\", readyHandler);\r\n };\r\n\r\n chart.Chart!.root.events.onDebounced(\"frameended\", readyHandler, 500);\r\n }\r\n\r\n closeDialog() {\r\n this.onClose.emit(true);\r\n }\r\n}\r\n","<div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\">&nbsp;{{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div *ngIf=\"SessionDetails.instanceid\" class=\"col-md-6\"><strong>{{'Istanza' | localize: lc}}</strong>:&nbsp;{{SessionDetails.instanceid}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>:&nbsp;{{SessionDetails.serial}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>:&nbsp;{{SessionDetails.status}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>:&nbsp;{{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>:&nbsp;{{SessionDetails.user}}&nbsp;<span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"onNodeSelected.emit(node.profnodeid)\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc?.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{(node.activity == \"NaN\" ? null : node.activity) | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column\">\r\n <h5>{{'Attività' | localize: lc}}</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"SelectedSessions\"\r\n [Legend]=\"true\"\r\n name=\"shared_session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event)\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>{{'Statistiche Thread' | localize: lc}}</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>{{'Stato' | localize: lc}}</th>\r\n <th>{{'Tipo' | localize: lc}}</th>\r\n <th>API</th>\r\n <th>{{'Attesa corrente' | localize: lc}}</th>\r\n <th>{{'Nodo di attesa' | localize: lc}}</th>\r\n <th>{{'Attesa su' | localize: lc}}</th>\r\n <th>{{'Classe' | localize: lc}}</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>{{'Tempo Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{(thread.waittime == \"NaN\" ? null : thread.waittime) | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n</div>\r\n","// Angular\r\nimport { Component, NgZone, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am5 from \"@amcharts/amcharts5\";\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\nimport { firstValueFrom } from \"rxjs\";\r\n\r\n// Modelli\r\nimport { DirectorInfos } from \"../../models/components/DirectorInfos\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { TopActivityDataSource, TopActivityDimension, TopActivityMaximumThreads, TopActivityResolution } from \"../../models/components/TopActivityV2Enums\";\r\nimport { TopActivityV2Filter, TopActivityV2Request } from \"../../models/components/TopActivityV2Request\";\r\nimport { TopActivityV2Breakdown, TopActivityV2Response, TopActivityV2Session, TopActivityV2Table, TopActivityV2TableItem } from \"../../models/components/TopActivityV2Response\";\r\n\r\n// Applicazione\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\n// Localizzazione\r\nimport { AdmTopActivityV2Loc } from \"./topact_v2.component.loc\";\r\n\r\ndeclare var dayjs;\r\n\r\nconst STORAGE_KEY = \"HotSearchTopActV2\";\r\nconst TABLES_WINDOW_MS = 5 * 60 * 1000;\r\nconst INSTANCE_CURRENT = \"@current\";\r\nconst INSTANCE_ALL = \"@all\";\r\n\r\n// WaitClass ed EventType hanno valori fissi: colori fissi, così il grafico si legge sempre allo stesso modo\r\nconst FIXED_COLORS: { [key: string]: string } = {\r\n Cpu: \"#43a047\", Database: \"#1e88e5\", Script: \"#8e24aa\", Network: \"#8d6e63\", IO: \"#00acc1\", Sleep: \"#b0bec5\", Throttle: \"#fb8c00\", Wait: \"#fdd835\",\r\n Latch: \"#e53935\", Semaphore: \"#f06292\", Enqueue: \"#c62828\", ReadWriteLock: \"#ad1457\", Fence: \"#6d4c41\", ConditionVariable: \"#00897b\", Scheduler: \"#5e35b1\"\r\n};\r\nconst PALETTE = [\"#1e88e5\", \"#43a047\", \"#fb8c00\", \"#8e24aa\", \"#e53935\", \"#00897b\", \"#fdd835\", \"#6d4c41\", \"#3949ab\", \"#c0ca33\"];\r\nconst OTHER_COLOR = \"#9e9e9e\";\r\nconst TOTAL_COLOR = \"#263238\";\r\nconst LIMIT_COLOR = \"#e53935\";\r\n\r\nexport class TopActivityV2LegendItem {\r\n key: string;\r\n label: string;\r\n color: string;\r\n other: boolean;\r\n activity: number;\r\n percentage: number;\r\n}\r\n\r\nexport class TopActivityV2FilterChip {\r\n filter: TopActivityV2Filter;\r\n label: string;\r\n}\r\n\r\n// Impostazioni ricordate fra una visita e l'altra (la finestra temporale riparte sempre dall'ultima ora)\r\nclass TopActivityV2Settings {\r\n instance: string;\r\n dataSource: string;\r\n dimension: string;\r\n resolution: string;\r\n totalActivity: boolean;\r\n maxCpu: boolean;\r\n maxThreadsKind: string;\r\n tableDims: string[];\r\n filters: TopActivityV2FilterChip[];\r\n}\r\n\r\n@Component({\r\n selector: \"topact_v2\",\r\n providers: [{ provide: LocalizationService, useClass: AdmTopActivityV2Loc }],\r\n templateUrl: \"./topact_v2.component.html\",\r\n styleUrls: [\"./topact_v2.component.scss\"],\r\n standalone: false\r\n})\r\nexport class AdmTopActivityV2Component {\r\n @ViewChild(\"dlgNodeDetails\") dlgNodeDetails: ModalDirective;\r\n @ViewChild(\"dlgSessionDetails\") dlgSessionDetails: ModalDirective;\r\n\r\n public readonly Dim = TopActivityDimension;\r\n public readonly TotalColor = TOTAL_COLOR;\r\n public readonly LimitColor = LIMIT_COLOR;\r\n\r\n // Filtri\r\n public filterfrom: string = \"\";\r\n public filterto: string = \"\";\r\n public instance: string = INSTANCE_CURRENT;\r\n public dataSource: string = String(TopActivityDataSource.MemoryAndStored);\r\n public dimension: string = String(TopActivityDimension.WaitClass);\r\n public resolution: string = String(TopActivityResolution.Medium);\r\n public totalActivity: boolean = false;\r\n public maxCpu: boolean = true;\r\n public maxThreadsKind: string = String(TopActivityMaximumThreads.Threads);\r\n public tableDims: string[] = [String(TopActivityDimension.UserSession), String(TopActivityDimension.WaitEvent)];\r\n public filters: TopActivityV2FilterChip[] = [];\r\n public refreshSeconds: string = \"0\";\r\n\r\n // Sorgenti delle select\r\n public Instances: KeyValue[] = [];\r\n public DataSources: KeyValue[] = [];\r\n public Dimensions: KeyValue[] = [];\r\n public Resolutions: KeyValue[] = [];\r\n public ThreadKinds: KeyValue[] = [];\r\n public RefreshOptions: KeyValue[] = [];\r\n\r\n // Risultato\r\n public loading: boolean = false;\r\n public result: TopActivityV2Response;\r\n public chartData: LineChartData;\r\n public chartMax: number;\r\n public legend: TopActivityV2LegendItem[] = [];\r\n public tables: TopActivityV2Table[] = [];\r\n public memoryFrom: string;\r\n public limitLabel: string;\r\n\r\n // Time slider: fine della finestra di 5 minuti delle tabelle, in millisecondi\r\n public sliderMin: number = 0;\r\n public sliderMax: number = 0;\r\n public sliderStep: number = 1000;\r\n public sliderValue: number = 0;\r\n public sliderAnchored: boolean = true;\r\n public tablesWindowLabel: string = \"\";\r\n\r\n // Dettagli\r\n public DirInfos: DirectorInfos;\r\n public NodeDetails: NodeStats;\r\n public SessionDetails: SessionStats;\r\n\r\n private be: string;\r\n private chartFrom: number = 0;\r\n private chartTo: number = 0;\r\n private colors: { [key: string]: string } = {};\r\n private lastChartKey: string;\r\n private chart: BaseChartComponent<any>;\r\n private windowAxis: any;\r\n private windowRange: any;\r\n private refreshTimer: any;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n private zone: NgZone) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.buildSources();\r\n\r\n let saved = this.route.snapshot.queryParams[\"ignoreStorage\"] ? null : await firstValueFrom(this.localStorage.getItem<TopActivityV2Settings>(STORAGE_KEY), { defaultValue: null });\r\n if (saved)\r\n this.applySettings(saved);\r\n\r\n this.setLastHour();\r\n this.loadInstances();\r\n this.refreshInfos();\r\n this.search();\r\n }\r\n\r\n ngOnDestroy() {\r\n clearInterval(this.refreshTimer);\r\n }\r\n\r\n // #region Ricerca\r\n\r\n searchClicked() {\r\n this.refreshInfos();\r\n this.search();\r\n }\r\n\r\n async search() {\r\n let req = this.buildRequest();\r\n this.loading = true;\r\n try {\r\n let res = await this.adms.getTopActivitiesV2(this.be, req);\r\n this.applyResult(req, res);\r\n this.saveSettings();\r\n }\r\n catch {\r\n // L'errore (finestra non valida, backend non raggiungibile...) lo mostra già HTTPService\r\n }\r\n finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n private buildRequest(): TopActivityV2Request {\r\n let to = this.toDate(this.filterto) ?? new Date();\r\n let from = this.toDate(this.filterfrom) ?? new Date(to.getTime() - 3600 * 1000);\r\n\r\n let req = new TopActivityV2Request();\r\n req.from = from.toISOString();\r\n req.to = to.toISOString();\r\n req.global = this.instance != INSTANCE_CURRENT;\r\n if (this.instance != INSTANCE_CURRENT && this.instance != INSTANCE_ALL)\r\n req.instanceId = this.instance;\r\n req.dataSource = +this.dataSource;\r\n req.dimension = +this.dimension;\r\n if (this.filters.length > 0)\r\n req.filters = this.filters.map(t => t.filter);\r\n req.totalActivity = this.totalActivity;\r\n req.maximumThreads = this.maxCpu ? +this.maxThreadsKind : TopActivityMaximumThreads.None;\r\n req.resolution = +this.resolution;\r\n req.tables = this.tableDims.map(t => +t);\r\n req.topCount = 10;\r\n\r\n // Lo slider agganciato a destra segue la fine del grafico; spostato resta fermo finché cade dentro la finestra\r\n let outside = this.sliderValue <= from.getTime() || this.sliderValue > to.getTime();\r\n if (this.sliderAnchored || outside) {\r\n this.sliderAnchored = true;\r\n this.sliderValue = to.getTime();\r\n }\r\n req.tablesTo = new Date(this.sliderValue).toISOString();\r\n req.tablesFrom = new Date(Math.max(from.getTime(), this.sliderValue - TABLES_WINDOW_MS)).toISOString();\r\n return req;\r\n }\r\n\r\n private applyResult(req: TopActivityV2Request, res: TopActivityV2Response) {\r\n this.result = res;\r\n this.tables = res?.tables ?? [];\r\n this.chartFrom = new Date(req.from).getTime();\r\n this.chartTo = new Date(req.to).getTime();\r\n\r\n this.sliderStep = Math.max(1, res?.bucketSeconds || 1) * 1000;\r\n this.sliderMin = Math.min(this.chartTo, this.chartFrom + TABLES_WINDOW_MS);\r\n this.sliderMax = this.chartTo;\r\n this.sliderValue = new Date(req.tablesTo).getTime();\r\n this.updateTablesWindowLabel();\r\n\r\n if (!res) {\r\n this.chartData = null;\r\n this.legend = [];\r\n this.lastChartKey = null;\r\n return;\r\n }\r\n\r\n let memoryFrom = res.memoryFrom ? this.parseUtc(res.memoryFrom) : null;\r\n this.memoryFrom = memoryFrom && memoryFrom.getTime() > this.chartFrom ? this.fmt(memoryFrom) : null;\r\n this.limitLabel = this.lc.loc(+this.maxThreadsKind == TopActivityMaximumThreads.Cores ? \"CPU Massime\" : \"Thread Massimi\");\r\n\r\n // Se è cambiata solo la finestra delle tabelle il grafico resta quello di prima: ridisegnarlo lo farebbe lampeggiare\r\n let chartKey = JSON.stringify({ ...req, tablesFrom: null, tablesTo: null, tables: null, topCount: null });\r\n if (chartKey == this.lastChartKey && this.chartData) {\r\n this.drawTablesWindow();\r\n return;\r\n }\r\n this.lastChartKey = chartKey;\r\n\r\n let times = (res.times ?? []).map(t => this.parseUtc(t));\r\n let fixed = res.dimension == TopActivityDimension.WaitClass || res.dimension == TopActivityDimension.EventType;\r\n let uom = this.lc.loc(\"sessioni\");\r\n let series: LineSerie[] = [];\r\n\r\n this.colors = {};\r\n this.legend = (res.components ?? []).map((c, i) => {\r\n let color = c.other ? OTHER_COLOR : (fixed && FIXED_COLORS[c.key]) || PALETTE[i % PALETTE.length];\r\n if (c.key != null)\r\n this.colors[c.key] = color;\r\n let label = this.valueLabel(c.label, c.other, res.dimension);\r\n series.push(new LineSerie(label, times.map((t, j) => new DateValue(t, c.values?.[j] ?? 0)), null, color, uom));\r\n return { key: c.key, label: label, color: color, other: c.other, activity: c.activity, percentage: c.percentage };\r\n });\r\n\r\n // L'attività totale è una linea scura sopra le aree impilate, non impilata a sua volta\r\n if (res.totalActivity)\r\n series.push(new LineSerie(this.lc.loc(\"Attività totale\"), times.map((t, j) => new DateValue(t, res.totalActivity[j] ?? 0)), null, TOTAL_COLOR, uom, false, false));\r\n\r\n let limit: Limit = null;\r\n if (res.maximumThreads != null)\r\n limit = new Limit(res.maximumThreads, this.limitLabel, LIMIT_COLOR);\r\n\r\n // L'asse Y non si allarga da solo per le linee limite: lo allargo solo se l'attività arriva ad almeno un quarto del limite,\r\n // altrimenti con il sistema scarico il grafico diventerebbe una riga piatta sul fondo (il valore del limite resta in legenda)\r\n let peak = Math.max(res.peakActiveSessions ?? 0, ...(res.totalActivity ?? [0]));\r\n this.chartMax = limit && peak >= res.maximumThreads / 4 ? Math.max(peak, res.maximumThreads) * 1.1 : undefined;\r\n this.chartData = series.length > 0 ? new LineChartData(series, limit) : null;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Grafico, legenda e filtri\r\n\r\n onChartLoaded(chart: BaseChartComponent<any>) {\r\n // Il grafico viene ricreato a ogni cambio di dati: l'area della finestra delle tabelle va rifatta\r\n this.chart = chart;\r\n this.windowAxis = null;\r\n this.drawTablesWindow();\r\n }\r\n\r\n private drawTablesWindow() {\r\n let dateAxis = (this.chart?.ChartService as any)?.dateAxis;\r\n if (!dateAxis || !this.sliderMax)\r\n return;\r\n\r\n let end = this.sliderValue;\r\n let start = Math.max(this.chartFrom, end - TABLES_WINDOW_MS);\r\n\r\n this.zone.runOutsideAngular(() => {\r\n if (this.windowAxis !== dateAxis) {\r\n this.windowAxis = dateAxis;\r\n this.windowRange = dateAxis.makeDataItem({ value: start, endValue: end });\r\n dateAxis.createAxisRange(this.windowRange);\r\n this.windowRange.get(\"axisFill\")?.setAll({ fill: am5.color(0x6366f1), fillOpacity: 0.12, visible: true });\r\n this.windowRange.get(\"grid\")?.set(\"forceHidden\", true);\r\n this.windowRange.get(\"label\")?.set(\"forceHidden\", true);\r\n }\r\n else\r\n this.windowRange.setAll({ value: start, endValue: end });\r\n });\r\n }\r\n\r\n addFilter(item: TopActivityV2LegendItem) {\r\n // Il componente \"altri\" non è filtrabile, come in Oracle\r\n if (item.other || !this.result)\r\n return;\r\n\r\n let filter = new TopActivityV2Filter();\r\n filter.dimension = this.result.dimension;\r\n filter.value = item.key ?? \"\";\r\n if (this.filters.some(t => t.filter.dimension == filter.dimension && t.filter.value == filter.value))\r\n return;\r\n\r\n this.filters.push({ filter: filter, label: `${this.dimensionLabel(filter.dimension)} = ${item.label}` });\r\n this.totalActivity = true;\r\n this.search();\r\n }\r\n\r\n removeFilter(index: number) {\r\n this.filters.splice(index, 1);\r\n this.search();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Time slider e tabelle\r\n\r\n sliderMoving() {\r\n this.updateTablesWindowLabel();\r\n this.drawTablesWindow();\r\n }\r\n\r\n sliderChanged() {\r\n // Il range input arrotonda al passo: \"agganciato\" se è a meno di un passo dalla fine\r\n this.sliderAnchored = this.sliderMax - this.sliderValue < this.sliderStep;\r\n this.search();\r\n }\r\n\r\n private updateTablesWindowLabel() {\r\n if (!this.sliderMax) {\r\n this.tablesWindowLabel = \"\";\r\n return;\r\n }\r\n let start = Math.max(this.chartFrom, this.sliderValue - TABLES_WINDOW_MS);\r\n this.tablesWindowLabel = `${this.fmt(new Date(start))} - ${this.fmt(new Date(this.sliderValue))}`;\r\n }\r\n\r\n isClickable(item: TopActivityV2TableItem): boolean {\r\n return !item.other && (!!item.session || !!item.event?.eventId);\r\n }\r\n\r\n openItem(item: TopActivityV2TableItem) {\r\n if (!this.isClickable(item))\r\n return;\r\n if (item.session)\r\n this.loadSessionDetails(item.session);\r\n else\r\n this.loadNodeDetails(item.event.eventId);\r\n }\r\n\r\n breakdownWidth(item: TopActivityV2TableItem, part: TopActivityV2Breakdown): number {\r\n return item.activity ? part.activity / item.activity * 100 : 0;\r\n }\r\n\r\n breakdownColor(part: TopActivityV2Breakdown): string {\r\n return part.other || part.key == null ? OTHER_COLOR : this.colors[part.key] ?? OTHER_COLOR;\r\n }\r\n\r\n itemLabel(item: TopActivityV2TableItem, table: TopActivityV2Table): string {\r\n return this.valueLabel(item.label, item.other, table.dimension);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n this.dlgNodeDetails.show();\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId, this.instance != INSTANCE_CURRENT);\r\n });\r\n }\r\n\r\n loadSessionDetails(session: TopActivityV2Session) {\r\n this.SessionDetails = null;\r\n this.dlgSessionDetails.show();\r\n requestAnimationFrame(async () => {\r\n this.SessionDetails = await this.adms.getSessionStats(this.be, session.sessionId?.toString(), session.serialNo?.toString(), session.instanceId);\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Aggiornamento automatico\r\n\r\n refreshChanged() {\r\n clearInterval(this.refreshTimer);\r\n this.refreshTimer = null;\r\n\r\n let seconds = +this.refreshSeconds;\r\n if (seconds > 0)\r\n this.refreshTimer = setInterval(() => this.shiftWindow(), seconds * 1000);\r\n }\r\n\r\n // Sposta in avanti la finestra della stessa durata: lo slider agganciato la segue, quello spostato resta dov'è\r\n private shiftWindow() {\r\n if (this.loading)\r\n return;\r\n\r\n let to = this.toDate(this.filterto) ?? new Date();\r\n let from = this.toDate(this.filterfrom) ?? new Date(to.getTime() - 3600 * 1000);\r\n let now = new Date();\r\n this.filterfrom = this.fmt(new Date(now.getTime() - (to.getTime() - from.getTime())));\r\n this.filterto = this.fmt(now);\r\n this.search();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Supporto\r\n\r\n private buildSources() {\r\n this.DataSources = [\r\n new KeyValue(String(TopActivityDataSource.MemoryAndStored), this.lc.loc(\"Memoria e storico\")),\r\n new KeyValue(String(TopActivityDataSource.Memory), this.lc.loc(\"Solo memoria\"))\r\n ];\r\n this.Dimensions = Object.keys(TopActivityDimension).filter(t => !isNaN(+t)).map(t => new KeyValue(t, this.dimensionLabel(+t)));\r\n this.Resolutions = [\r\n new KeyValue(String(TopActivityResolution.Low), this.lc.loc(\"Bassa\")),\r\n new KeyValue(String(TopActivityResolution.Medium), this.lc.loc(\"Media\")),\r\n new KeyValue(String(TopActivityResolution.High), this.lc.loc(\"Alta\")),\r\n new KeyValue(String(TopActivityResolution.Maximum), this.lc.loc(\"Massima\"))\r\n ];\r\n this.ThreadKinds = [\r\n new KeyValue(String(TopActivityMaximumThreads.Threads), this.lc.loc(\"Worker thread\")),\r\n new KeyValue(String(TopActivityMaximumThreads.Cores), \"CPU\")\r\n ];\r\n this.RefreshOptions = [\r\n new KeyValue(\"0\", this.lc.loc(\"Spento\")),\r\n new KeyValue(\"15\", this.lc.loc(\"Ogni 15 s\")),\r\n new KeyValue(\"30\", this.lc.loc(\"Ogni 30 s\")),\r\n new KeyValue(\"60\", this.lc.loc(\"Ogni 60 s\"))\r\n ];\r\n this.Instances = [\r\n new KeyValue(INSTANCE_CURRENT, this.lc.loc(\"Istanza corrente\")),\r\n new KeyValue(INSTANCE_ALL, this.lc.loc(\"Tutte le istanze\"))\r\n ];\r\n }\r\n\r\n private async loadInstances() {\r\n try {\r\n let instances = await this.adms.getInstances(this.be);\r\n this.Instances = [...this.Instances.slice(0, 2), ...(instances ?? []).map(t => new KeyValue(t.id, t.description))];\r\n }\r\n catch {\r\n // Senza elenco istanze restano \"corrente\" e \"tutte\"\r\n }\r\n }\r\n\r\n private async refreshInfos() {\r\n // DirectorInfos è facoltativo: se scoppia la pagina va avanti lo stesso\r\n this.DirInfos = await this.adms.getInfos(this.be);\r\n }\r\n\r\n dimensionLabel(dimension: TopActivityDimension): string {\r\n switch (dimension) {\r\n case TopActivityDimension.WaitClass: return this.lc.loc(\"Classe di attesa\");\r\n case TopActivityDimension.EventType: return this.lc.loc(\"Tipo evento\");\r\n case TopActivityDimension.WaitEvent: return this.lc.loc(\"Nodo\");\r\n case TopActivityDimension.Instance: return this.lc.loc(\"Istanza\");\r\n case TopActivityDimension.UserSession: return this.lc.loc(\"Sessione\");\r\n case TopActivityDimension.UserName: return this.lc.loc(\"Utente\");\r\n case TopActivityDimension.Tenant: return this.lc.loc(\"Tenant\");\r\n case TopActivityDimension.SessionType: return this.lc.loc(\"Tipo sessione\");\r\n case TopActivityDimension.BackgroundSession: return this.lc.loc(\"Sessione di background\");\r\n case TopActivityDimension.JobName: return this.lc.loc(\"Job\");\r\n case TopActivityDimension.ConsumerGroup: return this.lc.loc(\"Gruppo di consumo\");\r\n case TopActivityDimension.ThreadType: return this.lc.loc(\"Tipo thread\");\r\n case TopActivityDimension.Api: return \"API\";\r\n case TopActivityDimension.Machine: return this.lc.loc(\"Macchina\");\r\n }\r\n return String(dimension);\r\n }\r\n\r\n private valueLabel(label: string, other: boolean, dimension: TopActivityDimension): string {\r\n if (other)\r\n return this.lc.loc(\"Altri\");\r\n if (label == null || label === \"\")\r\n return this.lc.loc(dimension == TopActivityDimension.WaitEvent ? \"(non attribuito)\" : \"(nessuno)\");\r\n return label;\r\n }\r\n\r\n private applySettings(saved: TopActivityV2Settings) {\r\n this.instance = saved.instance ?? this.instance;\r\n this.dataSource = saved.dataSource ?? this.dataSource;\r\n this.dimension = saved.dimension ?? this.dimension;\r\n this.resolution = saved.resolution ?? this.resolution;\r\n this.totalActivity = saved.totalActivity ?? this.totalActivity;\r\n this.maxCpu = saved.maxCpu ?? this.maxCpu;\r\n this.maxThreadsKind = saved.maxThreadsKind ?? this.maxThreadsKind;\r\n this.tableDims = saved.tableDims?.length == 2 ? saved.tableDims : this.tableDims;\r\n // Filtri salvati con i nomi delle prime versioni (PascalCase) non sono più validi\r\n this.filters = (saved.filters ?? []).filter(t => t?.filter?.dimension != null);\r\n }\r\n\r\n private saveSettings() {\r\n let settings: TopActivityV2Settings = {\r\n instance: this.instance,\r\n dataSource: this.dataSource,\r\n dimension: this.dimension,\r\n resolution: this.resolution,\r\n totalActivity: this.totalActivity,\r\n maxCpu: this.maxCpu,\r\n maxThreadsKind: this.maxThreadsKind,\r\n tableDims: this.tableDims,\r\n filters: this.filters\r\n };\r\n this.localStorage.setItem(STORAGE_KEY, settings).subscribe();\r\n }\r\n\r\n private setLastHour() {\r\n let now = new Date();\r\n this.filterfrom = this.fmt(new Date(now.getTime() - 3600 * 1000));\r\n this.filterto = this.fmt(now);\r\n }\r\n\r\n private toDate(value: string): Date {\r\n return value ? this.dateExts.getDateConvertion(value).toDate() : null;\r\n }\r\n\r\n private fmt(date: Date): string {\r\n return dayjs(date).format(this.lc.token(\"getFullDateDisplayFormat\"));\r\n }\r\n\r\n // Le date della risposta sono UTC \"dd/MM/yyyy HH:mm:ss\" senza fuso\r\n private parseUtc(value: string): Date {\r\n let m = /^(\\d{2})\\/(\\d{2})\\/(\\d{4}) (\\d{2}):(\\d{2}):(\\d{2})$/.exec(value ?? \"\");\r\n return m ? new Date(Date.UTC(+m[3], +m[2] - 1, +m[1], +m[4], +m[5], +m[6])) : new Date(value);\r\n }\r\n\r\n // #endregion\r\n}\r\n","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Attività Principali' | localize: lc}}\r\n @if (DirInfos) {\r\n <span>&nbsp;-&nbsp;\r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}&nbsp;\r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfos.lavg5 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </span>\r\n }\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <form role=\"form\">\r\n <!-- Finestra e origine dei dati -->\r\n <div class=\"tav2-toolbar\">\r\n <div class=\"tav2-field\">\r\n <form-datetime [readonly]=\"refreshSeconds != '0'\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"tav2-field\">\r\n <form-datetime [readonly]=\"refreshSeconds != '0'\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"tav2-field tav2-field-wide\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"instance\" name=\"instance\" [Source]=\"Instances\" [Placeholder]=\"'Istanza' | localize: lc\" (inputChange)=\"search()\"></form-select>\r\n </div>\r\n <div class=\"tav2-field\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"dataSource\" name=\"dataSource\" [Source]=\"DataSources\" [Placeholder]=\"'Origine dati' | localize: lc\" (inputChange)=\"search()\"></form-select>\r\n </div>\r\n <div class=\"tav2-spacer\"></div>\r\n <div class=\"tav2-field tav2-field-narrow\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"refreshSeconds\" name=\"refreshSeconds\" [Source]=\"RefreshOptions\" [Placeholder]=\"'Aggiornamento' | localize: lc\" (inputChange)=\"refreshChanged()\"></form-select>\r\n </div>\r\n <button [disabled]=\"loading || refreshSeconds != '0'\" class=\"btn app-btn-search\" (click)=\"searchClicked()\" type=\"submit\" [title]=\"'Cerca' | localize: lc\">\r\n <i class=\"fa\" [class.fa-search]=\"!loading\" [class.fa-spinner]=\"loading\" [class.fa-spin]=\"loading\"></i>\r\n </button>\r\n </div>\r\n\r\n <!-- Come dividere e cosa disegnare -->\r\n <div class=\"tav2-toolbar\">\r\n <div class=\"tav2-field tav2-field-wide\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"dimension\" name=\"dimension\" [Source]=\"Dimensions\" [Placeholder]=\"'Dividi per' | localize: lc\" (inputChange)=\"search()\"></form-select>\r\n </div>\r\n <div class=\"tav2-field tav2-field-narrow\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"resolution\" name=\"resolution\" [Source]=\"Resolutions\" [Placeholder]=\"'Risoluzione' | localize: lc\" (inputChange)=\"search()\"></form-select>\r\n </div>\r\n <div class=\"tav2-toggle\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"totalActivity\" name=\"totalActivity\" (inputChange)=\"search()\"></form-checkbox>\r\n <span>{{'Attività totale' | localize: lc}}</span>\r\n </div>\r\n <div class=\"tav2-toggle\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"maxCpu\" name=\"maxCpu\" (inputChange)=\"search()\"></form-checkbox>\r\n <span>{{'Limite' | localize: lc}}</span>\r\n </div>\r\n @if (maxCpu) {\r\n <div class=\"tav2-field tav2-field-narrow\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"maxThreadsKind\" name=\"maxThreadsKind\" [Source]=\"ThreadKinds\" (inputChange)=\"search()\"></form-select>\r\n </div>\r\n }\r\n </div>\r\n </form>\r\n\r\n <!-- Grafico -->\r\n <div class=\"tav2-panel\">\r\n <div class=\"tav2-panel-header\">\r\n <span class=\"tav2-title\">{{'Sessioni attive medie per' | localize: lc}} {{dimensionLabel(result?.dimension ?? +dimension) | lowercase}}</span>\r\n @if (result) {\r\n <span class=\"tav2-muted\">\r\n {{'Media' | localize: lc}} <strong>{{result.averageActiveSessions | number : '1.2-3' : 'it'}}</strong>\r\n &middot; {{'Picco' | localize: lc}} <strong>{{result.peakActiveSessions | number : '1.2-3' : 'it'}}</strong>\r\n &middot; {{'un punto ogni' | localize: lc}} {{result.bucketSeconds}} s\r\n </span>\r\n }\r\n @if (loading) {\r\n <span class=\"tav2-muted\"><i class=\"fa fa-spinner fa-spin\"></i></span>\r\n }\r\n </div>\r\n\r\n @if (filters.length > 0) {\r\n <div class=\"tav2-chips\">\r\n <span class=\"tav2-muted\">{{'Filtri' | localize: lc}}</span>\r\n @for (chip of filters; track $index) {\r\n <span class=\"tav2-chip\">\r\n {{chip.label}}\r\n <button type=\"button\" [title]=\"'Rimuovi' | localize: lc\" (click)=\"removeFilter($index)\">&times;</button>\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"tav2-chart\">\r\n @if (chartData) {\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [Step]=\"true\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"chartData\"\r\n [Max]=\"chartMax\"\r\n [Legend]=\"false\"\r\n name=\"topactv2\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n } @else {\r\n <div class=\"tav2-empty\">{{(loading ? 'Carico i Dati' : 'Nessun dato nella finestra') | localize: lc}}</div>\r\n }\r\n </div>\r\n\r\n <!-- Legenda: un clic su una voce la aggiunge ai filtri (\"altri\" non è filtrabile) -->\r\n @if (legend.length > 0) {\r\n <div class=\"tav2-legend\">\r\n @for (item of legend; track $index) {\r\n <span class=\"tav2-legend-item\" [class.tav2-clickable]=\"!item.other\" [title]=\"item.other ? '' : ('Clic per filtrare' | localize: lc)\" (click)=\"addFilter(item)\">\r\n <span class=\"tav2-swatch\" [style.background]=\"item.color\"></span>\r\n {{item.label}}\r\n <span class=\"tav2-muted\">{{item.percentage | number : '1.0-1' : 'it'}}%</span>\r\n </span>\r\n }\r\n @if (result?.totalActivity) {\r\n <span class=\"tav2-legend-item\">\r\n <span class=\"tav2-line\" [style.border-color]=\"TotalColor\"></span>\r\n {{'Attività totale' | localize: lc}}\r\n </span>\r\n }\r\n @if (result?.maximumThreads != null) {\r\n <span class=\"tav2-legend-item\">\r\n <span class=\"tav2-line\" [style.border-color]=\"LimitColor\"></span>\r\n {{limitLabel}} <strong>{{result.maximumThreads}}</strong>\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n @if (memoryFrom) {\r\n <div class=\"tav2-note\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n {{'Prima di questo istante i dati vengono dallo storico (un campione ogni 10 secondi)' | localize: lc}}: {{memoryFrom}}\r\n </div>\r\n }\r\n\r\n <!-- Time slider: finestra di 5 minuti per le tabelle -->\r\n @if (sliderMax > sliderMin) {\r\n <div class=\"tav2-slider\">\r\n <span class=\"tav2-slider-label\">\r\n <span class=\"tav2-muted\">{{'Finestra tabelle' | localize: lc}}</span>\r\n <strong>{{tablesWindowLabel}}</strong>\r\n </span>\r\n <input type=\"range\" [min]=\"sliderMin\" [max]=\"sliderMax\" [step]=\"sliderStep\" [ngModel]=\"sliderValue\" (ngModelChange)=\"sliderValue = $event; sliderMoving()\" (change)=\"sliderChanged()\" />\r\n <span class=\"tav2-badge\" [class.tav2-badge-off]=\"!sliderAnchored\">{{(sliderAnchored ? 'Ultimi 5 minuti' : 'Finestra fissa') | localize: lc}}</span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Tabelle -->\r\n <div class=\"tav2-tables\">\r\n @for (table of tables; track $index; let i = $index) {\r\n <div class=\"tav2-panel\">\r\n <div class=\"tav2-panel-header\">\r\n <span class=\"tav2-title\">{{'Prime righe per' | localize: lc}}</span>\r\n <div class=\"tav2-field tav2-field-wide\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"tableDims[i]\" name=\"tabledim{{i}}\" [Source]=\"Dimensions\" (inputChange)=\"search()\"></form-select>\r\n </div>\r\n <span class=\"tav2-muted\">{{'Attività' | localize: lc}} <strong>{{table.activity | number : '1.2-3' : 'it'}}</strong></span>\r\n </div>\r\n <es-table [(ngModel)]=\"table.items\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th>{{dimensionLabel(table.dimension)}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min tav2-right\">%</th>\r\n @if (table.dimension == Dim.UserSession) {\r\n <th>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tenant' | localize: lc}}</th>\r\n <th>{{'Tipo' | localize: lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n }\r\n @if (table.dimension == Dim.WaitEvent) {\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo evento' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe di attesa' | localize: lc}}</th>\r\n }\r\n </ng-template>\r\n <ng-template #body let-item>\r\n <td>\r\n @if (isClickable(item)) {\r\n <span class=\"app-link tav2-ellipsis\" [title]=\"item.label || item.key\" (click)=\"openItem(item)\">{{itemLabel(item, table)}}</span>\r\n } @else {\r\n <span class=\"tav2-ellipsis\" [class.tav2-muted]=\"item.other || !item.label\">{{itemLabel(item, table)}}</span>\r\n }\r\n </td>\r\n <td class=\"app-nowrap\">\r\n <div class=\"tav2-bar-cell\">\r\n <div class=\"tav2-bar\">\r\n @for (part of item.breakdown; track $index) {\r\n <div [style.width.%]=\"breakdownWidth(item, part)\" [style.background]=\"breakdownColor(part)\" [title]=\"part.key\"></div>\r\n }\r\n </div>\r\n <span>{{item.activity | number : '1.2-3' : 'it'}}</span>\r\n </div>\r\n </td>\r\n <td class=\"app-nowrap tav2-right\">{{item.percentage | number : '1.1-1' : 'it'}}</td>\r\n @if (table.dimension == Dim.UserSession) {\r\n <td>{{item.session?.userName}}</td>\r\n <td>{{item.session?.tenantId}}</td>\r\n <td>{{item.session?.sessionType}}</td>\r\n <td><span class=\"tav2-ellipsis\" [title]=\"item.session?.bgProcessName || item.session?.jobName || ''\">{{item.session?.bgProcessName || item.session?.jobName}}</span></td>\r\n }\r\n @if (table.dimension == Dim.WaitEvent) {\r\n <td>{{item.event?.eventType}}</td>\r\n <td>{{item.event?.waitClass}}</td>\r\n }\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n @if (NodeDetails) {\r\n <node-detail [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n }\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n @if (SessionDetails) {\r\n <session-detail [SessionDetails]=\"SessionDetails\" (onClose)=\"dlgSessionDetails.hide()\" (onNodeSelected)=\"loadNodeDetails($event)\"></session-detail>\r\n }\r\n</div>\r\n","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class LocksView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filtersid: string;\r\n filterlock: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmEnqLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Ricerca Lock Applicativi\", [\"Search Application Locks\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico i Lock Applicativi\", [\"Loading Application Locks\"]);\r\n super.set(\"it->en\", \"Globale\", [\"Global\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { LocksView } from \"../../models/components/LocksView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmEnqLoc } from \"./adm_enq.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_enq\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }],\r\n templateUrl: \"./adm_enq.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmEnqComponent {\r\n public locksView: LocksView = new LocksView();\r\n public storageSub: any;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<LocksView>(\"HotEnqueue\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverenqueues`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotEnqueue\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: LocksView) {\r\n if (HotPotato) {\r\n this.locksView = HotPotato;\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n else {\r\n this.locksView = new LocksView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (resetPage)\r\n this.locksView.page = 1;\r\n\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n\r\n async POSTGetProcesses(data: LocksView) {\r\n this.locksView = await this.adms.getServerLocks(this.be, data);\r\n this.locksView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotEnqueue\", this.locksView).subscribe();\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.locksView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerLocks(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Lock Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <form role=\"form\">\n <div class=\"col-md-12 row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Nome' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!locksView) {\n <p><em>{{'Carico i Lock Applicativi' | localize: lc}}...</em></p>\n }\n @if (locksView) {\n <div>\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"\n [ExportFileName]=\"'Application Locks.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"></es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Metric } from \"./Metric\";\r\n\r\nexport class MetricsView extends AppSearch<Metric> {\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filtersid: string;\r\n filterserial: string;\r\n filtermetrics: string[];\r\n filterrealtime: boolean;\r\n fitlerinstance: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmMetricsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Metriche di Sistema\", [\"System Metrics\"]);\r\n super.set(\"it->en\", \"Cod. Sessione\", [\"Session ID\"]);\r\n super.set(\"it->en\", \"Seriale Sessione\", [\"Session Serial\"]);\r\n super.set(\"it->en\", \"Filtra Metriche...\", [\"Filter Metrics...\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Istanza Metriche\", [\"Metrics Instance\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { BaseChartComponent } from \"@esfaenza/es-charts\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { Metric } from \"../../models/components/Metric\";\r\nimport { MetricChart } from \"../../models/components/MetricChart\";\r\nimport { MetricsView } from \"../../models/components/MetricsView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmMetricsLoc } from \"./metrics_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"metrics_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmMetricsLoc }],\r\n templateUrl: \"./metrics_search.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmMetricsComponent {\r\n\r\n public Metrics: Metric[];\r\n private MetricsChartCache: { [name: string]: { chart: BaseChartComponent<any>, lastTs: Date } } = {};\r\n\r\n public searchView: MetricsView = new MetricsView();\r\n public storageSub: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n private be: string;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async dateChanged() {\r\n // Pulizia di tutti i parametri di ricerca dipendenti dalle date\r\n this.metricsToShow = [];\r\n this.Metrics = [];\r\n this.instanceRequired = false;\r\n this.Instances = [];\r\n this.selectedInstance = \"\";\r\n this.searchView.filtermetrics = [];\r\n\r\n this.Metrics = await this.adms.getMetricsList(this.be, this.searchView.filterfrom || \"\", this.searchView.filterto || \"\");\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<MetricsView>(\"HotSearchMetrics\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metrics`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchMetrics\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: MetricsView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new MetricsView();\r\n this.sendSearch();\r\n }\r\n this.dateChanged();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: MetricsView = null) {\r\n if (!update)\r\n this.MetricsChartCache = {};\r\n\r\n this.searchView.searchinprogress = true;\r\n // Questa ricerca prende i nomi distinct delle metriche quindi devo prendere tutto per forza\r\n this.searchView.itemsperpageoverride = 999999;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(searchViewOverride ?? this.searchView, update);\r\n }\r\n\r\n public Instances: KeyValue[] = []\r\n public selectedInstance = \"\";\r\n public instanceRequired: boolean = false;\r\n public metricsToShow: Metric[] = [];\r\n\r\n async POSTGetItems(data: MetricsView, update: boolean) {\r\n data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);\r\n\r\n let res = await this.adms.getMetrics(this.be, data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.selectedInstance = \"\";\r\n this.metricsToShow = [];\r\n this.searchView = res;\r\n this.searchView.items.forEach(m => {\r\n if (m.instance && !this.Instances.find(t => t.id == m.instance))\r\n this.Instances.push(new KeyValue(m.instance, m.instance));\r\n });\r\n this.instanceRequired = this.Instances.length > 1;\r\n if (this.Instances.length == 1) {\r\n this.selectedInstance = this.Instances[0].id;\r\n this.instanceSelected();\r\n }\r\n else\r\n this.instanceSelected(true);\r\n this.localStorage.setItem(\"HotSearchMetrics\", this.searchView).subscribe();\r\n }\r\n else {\r\n // Per ogni grafico di ogni metrica aggiungo tutti i valori che sono DOPO all'ultimo ts registrato per quel grafico\r\n res.items.forEach(m => {\r\n m.values.forEach(c => {\r\n let refm = this.MetricsChartCache[this.metricKey(m, c)];\r\n if (refm) {\r\n c.series.forEach(s => { s.values = s.values.filter(v => this.dateExts.getDateConvertion(v.d).isAfter(refm.lastTs)); });\r\n if (c.series.some(t => t.values.length > 0)) {\r\n refm.lastTs = c.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n refm.chart.addData(c);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n this.searchView.searchinprogress = false;\r\n }\r\n\r\n instanceSelected(allowNull: boolean = false) {\r\n if (!this.selectedInstance && !allowNull)\r\n return;\r\n\r\n this.metricsToShow = this.searchView.items.filter(t => !this.selectedInstance || (t.instance == this.selectedInstance));\r\n }\r\n\r\n linkChartToMetric(metric: Metric, metricChart: MetricChart, chartComp: BaseChartComponent<any>) {\r\n this.MetricsChartCache[this.metricKey(metric, metricChart)] = { chart: chartComp, lastTs: metricChart.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0] };\r\n }\r\n\r\n private metricKey(metric: Metric, value: MetricChart): string {\r\n return metric.name + \" - \" + value.xtitle + (metric.instance ? \" - \" + metric.instance : \"\");\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">\n {{'Metriche di Sistema' | localize: lc}}\n </span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Cod. Sessione' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Seriale Sessione' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-12 app-filter-wrapper\">\n <form-multiselect [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [Placeholder]=\"'Filtra Metriche...' | localize: lc\" [Source]=\"Metrics\"></form-multiselect>\n </div>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n </form>\n <div class=\"app-col-12 app-margin-top-15\">\n <div class=\"pull-right\">\n {{'Aggiorna ogni' | localize: lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" />&nbsp;{{'secondo/i' | localize: lc}}\n </div>\n <div class=\"pull-right m-t-2 app-margin-right-5\">\n <label class=\"switch\">\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\n <div class=\"slider round\"></div>\n </label>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Dati' | localize: lc}}</em></p>\n }\n @if (searchView && instanceRequired) {\n <div>\n <form-select [Validation]=\"false\" [Label]=\"'Istanza Metriche' | localize: lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\n </div>\n }\n @if (searchView && metricsToShow && metricsToShow.length > 0) {\n <div>\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\n @for (metric of metricsToShow; track metric; let i = $index) {\n @for (chart of metric.values; track chart; let z = $index) {\n <div class=\"col-md-4 app-no-padding app-simple-border\">\n <div style=\"width: 100%; height: 260px\">\n <es-line-chart [XTitle]=\"chart.xtitle\"\n [YTitle]=\"chart.ytitle\"\n [MinGridDistance]=\"65\"\n [Timeline]=\"false\"\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\n [MergeDatasets]=\"true\"\n [Data]=\"chart\"\n [Animations]=\"true\"\n [Legend]=\"chart.legend\"\n name=\"metric_{{i}}_chart_{{z}}\"\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\n [DataGroupingThreshold]=\"99999999\">\n </es-line-chart>\n </div>\n </div>\n }\n }\n </div>\n <div class=\"clearfix\"></div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmLogsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Log del Server\", [\"Server Logs\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Localizzazione\r\nimport { AdmLogsLoc } from \"./adm_logs.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\n\r\n@Component({\r\n selector: \"adm_logs\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }],\r\n templateUrl: \"./adm_logs.component.html\",\r\n styleUrls: [\"./adm_logs.component.scss\"],\r\n standalone: false\r\n})\r\nexport class AdmLogsComponent {\r\n public Log: string;\r\n\r\n public filterfrom: string = \"\";\r\n public filterto: string = \"\";\r\n public filterinstance: string = \"\";\r\n public filtertarget: string = \"\";\r\n\r\n public searchinprogress: boolean;\r\n private be: string;\r\n\r\n public AvailableInstances: KeyValue[];\r\n public AvailableTargets: KeyValue[];\r\n\r\n constructor(\r\n private intercom: InterComService,\r\n private lc: LocalizationService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.instanceChanged();\r\n this.AvailableInstances = await this.adms.getInstances(this.be);\r\n\r\n await this.sendSearch();\r\n }\r\n\r\n async instanceChanged(){\r\n this.AvailableTargets = await this.adms.getLogTargets(this.be, this.filterinstance);\r\n }\r\n\r\n async sendSearch(){\r\n this.searchinprogress = true;\r\n this.Log = await this.adms.getServerLogs(this.be, this.filterfrom, this.filterto, this.filterinstance, this.filtertarget);\r\n this.searchinprogress = false;\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da'\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterto\" name=\"filterto\" [Placeholder]=\"'A'\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterinstance\" name=\"filterinstance\" [Placeholder]=\"'Istanza'\" [Source]=\"AvailableInstances\" (inputChange)=\"instanceChanged();\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filtertarget\" name=\"filtertarget\" [Placeholder]=\"'Target'\" [Source]=\"AvailableTargets\"></form-select>\n </div>\n <button [disabled]=\"searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n </div>\n @if (Log) {\n <p class=\"app-whitespace-prewrap app-log-monospace\" [innerHTML]=\"Log\"></p>\n }\n\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class DynamicViewsView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtername: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmDynamicViewsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Viste Dinamiche Applicative\", [\"Search Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico le Viste Dinamiche Applicative\", [\"Loading Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Il nome della vista è obbligatorio per le operazioni di ricerca\", [\"View Name is mandatory for search operations\"]);\r\n super.set(\"it->en\", \"Nessun elemento trovato per la vista dinamica\", [\"No element found for Dynamic View\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { AppSearch } from \"@esfaenza/es-table\";\r\n\r\n// Applicazione\r\nimport { DynamicViewsView } from \"../../models/components/DynamicViewsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmDynamicViewsLoc } from \"./adm_dynamic_views.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_dynamic_views\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmDynamicViewsLoc }],\r\n templateUrl: \"./adm_dynamic_views.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmDynamicViewsComponent {\r\n\r\n public searchView: DynamicViewsView = new DynamicViewsView();\r\n public Names: KeyValue[] = [];\r\n public storageSub: any;\r\n public badSearch: boolean = false;\r\n\r\n public currentName: string = \"\";\r\n\r\n // Staccato dalla view perché deve essere distrutta e ricreata di continuo\r\n public filterName:string = \"\";\r\n\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.Names = await this.adms.getDynamicViews(this.be);\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<DynamicViewsView>(\"HotDinamitato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverviews`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotDinamitato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: DynamicViewsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems();\r\n }\r\n else {\r\n this.searchView = new DynamicViewsView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.searchView.filtername = this.filterName;\r\n this.POSTGetItems();\r\n }\r\n\r\n async prepareExportDynamicView(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getDynamicViewData(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n\r\n async POSTGetItems() {\r\n if (!this.searchView.filtername) {\r\n this.badSearch = true;\r\n AppSearch.reset(this.searchView);\r\n return;\r\n }\r\n else\r\n this.badSearch = false;\r\n\r\n // Per force-resettare l'estable\r\n if (this.currentName != this.searchView.filtername) {\r\n this.currentName = this.searchView.filtername;\r\n\r\n this.searchView = new DynamicViewsView();\r\n this.searchView.page = 1;\r\n this.searchView.filtername = this.currentName;\r\n }\r\n \r\n this.searchView = await this.adms.getDynamicViewData(this.be, this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotDinamitato\", this.searchView).subscribe();\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Viste Dinamiche Applicative' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterName\" name=\"filtername\" [Source]=\"Names\" [Placeholder]=\"'Nome' | localize: lc\"></form-select>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (badSearch) {\n <div class=\"card card-info app-white-text app-padding-10\">{{'Il nome della vista è obbligatorio per le operazioni di ricerca' | localize: lc}}</div>\n }\n @if (!badSearch) {\n @if (!searchView) {\n <p><em>{{'Carico le Viste Dinamiche Applicative' | localize: lc}}...</em></p>\n }\n @if (searchView && searchView.items.length > 0) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [ExportFunction]=\"prepareExportDynamicView.bind(this)\" [Export]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\n </div>\n }\n @if (searchView && searchView.items.length == 0 && !searchView.searchinprogress) {\n <div class=\"card card-info app-white-text app-padding-10\">\n {{'Nessun elemento trovato per la vista dinamica' | localize: lc}}&nbsp;<strong>{{searchView.filtername}}</strong>\n </div>\n }\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class QueryView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filterquery: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class MtdQueryLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Esecuzione Query Metadati\", [\"Metadata Query Execution\"]);\r\n super.set(\"it->en\", \"Query\", [\"Query\"]);\r\n super.set(\"it->en\", \"Carico i Risultati\", [\"Loading Results\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { QueryView } from \"../../models/components/QueryView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { MtdQueryLoc } from \"./mtd_query.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_mtd_query\",\r\n viewProviders: [{ provide: LocalizationService, useClass: MtdQueryLoc }],\r\n templateUrl: \"./mtd_query.component.html\",\r\n standalone: false\r\n})\r\nexport class MtdQueryComponent {\r\n public searchView: QueryView = new QueryView();\r\n public storageSub: any;\r\n\r\n public searching: boolean = false;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<QueryView>(\"HotQuery\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metadataquery`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotQuery\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: QueryView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetSearch(this.searchView);\r\n }\r\n else {\r\n this.searchView = new QueryView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searching = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n if(!this.searchView.filterquery)\r\n return;\r\n\r\n this.POSTGetSearch(this.searchView);\r\n }\r\n\r\n async POSTGetSearch(data: QueryView) {\r\n this.searchView = await this.adms.getServerQuery(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotEnqueue\", this.searchView).subscribe();\r\n this.searching = false;\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerQuery(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Esecuzione Query Metadati' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <form role=\"form\">\n <div class=\"col-md-12 row app-first-filter-line\">\n <div class=\"col-xl-11 col-lg-11 col-md-11 app-filter-wrapper\">\n <form-textarea rows=\"3\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterquery\" name=\"filterquery\" [Placeholder]=\"'Query'\"></form-textarea>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Risultati' | localize: lc}}...</em></p>\n }\n @if (searchView && !searching) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" [Export]=\"true\" [ExportFileName]=\"'Results.csv'\" [ExportFunction]=\"prepareExport.bind(this)\"></es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { SystemParameters } from \"./SystemParameters\";\r\n\r\nexport class SystemParametersView extends AppSearch<SystemParameters>{\r\n constructor() { super(); }\r\n\r\n filterparameter: string;\r\n filterlevel: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmSystemParametersLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Parametri di sistema\", [\"System Parameters\"]);\r\n super.set(\"it->en\", \"Nome parametro\", [\"Parameter Name\"]);\r\n super.set(\"it->en\", \"Carico Parametri di sistema\", [\"Loading System Parameters\"]);\r\n super.set(\"it->en\", \"Valore\", [\"Value\"]);\r\n super.set(\"it->en\", \"Valore Default\", [\"Default value\"]); \r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Default\", [\"Default\"]); super.set(\"it->en\", \"Modificabile\", [\"Modifiable\"]);\r\n super.set(\"it->en\", \"Modifica parametro\", [\"Edit Parameter\"]);\r\n\r\n super.set(\"it->en\", \"Parametro di Sistema modificato con successo \", [\"System Parameter succesfully edited\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Parametro di Sistema\", [\"Errors editing System Parameter\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\n\r\n// Classi\r\nimport { SystemParametersView } from \"../../models/components/SystemParametersView\";\r\nimport { SystemParameters } from \"../../models/components/SystemParameters\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Loc\r\nimport { AdmSystemParametersLoc } from \"./adm_syspars.component.loc\";\r\n\r\n@Component({\r\n selector: \"adm_syspars\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmSystemParametersLoc }],\r\n templateUrl: \"./adm_syspars.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmSystemParametersComponent {\r\n\r\n public searchView: SystemParametersView = new SystemParametersView();\r\n public storageSub: any;\r\n\r\n public LevelsSource: KeyValue[] = [];\r\n public lastSelectedLevel = \"\";\r\n\r\n private be: string;\r\n \r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n private msgExts: MessageService,\r\n private utiExts: UtilityService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.LevelsSource = [new KeyValue(\"SYS\", \"System\"), new KeyValue(\"SES\", \"Session\")];\r\n\r\n this.AvailableInstances = await this.adms.getInstances(this.be);\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await firstValueFrom(this.localStorage.getItem<SystemParametersView>(\"HotSysParConfiggato\"));\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/syspars`);\r\n this.route.snapshot.queryParams = [];\r\n await firstValueFrom(this.localStorage.removeItem(\"HotSysParConfiggato\"));\r\n }\r\n }\r\n\r\n init(HotPotato: SystemParametersView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n else {\r\n this.searchView = new SystemParametersView();\r\n this.searchView.filterlevel = \"SES\";\r\n \r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (!this.searchView.filterlevel) {\r\n this.msgExts.simpleError(\"È obbligatorio specificare il filtro 'livello' per procedere alla ricerca\");\r\n return;\r\n }\r\n\r\n if (this.searchView.filterlevel == \"SES\") {\r\n this.searchView.filterglobal = false;\r\n }\r\n\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n\r\n async POSTGetItems(data: SystemParametersView) {\r\n this.lastSelectedLevel = this.searchView.filterlevel;\r\n \r\n this.searchView = await this.adms.getSystemParameters(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSysParConfiggato\", this.searchView).subscribe();\r\n }\r\n\r\n //*********************************************EDIT************************************\r\n\r\n ParOnEdit: SystemParameters = null;\r\n @ViewChild(\"editConfigForm\", { static: true }) editConfigForm: NgForm;\r\n\r\n AvailableInstances: KeyValue[] = [];\r\n\r\n setupEdit(item: SystemParameters) {\r\n this.utiExts.cleanForm(this.editConfigForm);\r\n setTimeout(() => {\r\n this.ParOnEdit = this.utiExts.deepClone(item);\r\n this.ParOnEdit.memory = true;\r\n });\r\n }\r\n\r\n submitForm() {\r\n this.adms.updateSystemParameter(this.be, this.ParOnEdit).then(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Parametro di Sistema modificato con successo \"), this.lc.loc(\"Errori nella modifica del Parametro di Sistema\"), () => { this.sendSearch() });\r\n })\r\n return true;\r\n }\r\n\r\n //*********************************************RESET************************************\r\n\r\n setupReset(item: SystemParameters) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Richiesta conferma\"),\r\n this.lc.loc(\"Si desidera procedere al reset del parametro??\"),\r\n async () => {\r\n let t = await this.adms.resetSystemParameter(this.be, item.parametername, this.lastSelectedLevel);\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Parametro di Sistema resettato con successo \"), this.lc.loc(\"Errori nel reset del Parametro di Sistema\"), () => { this.sendSearch() });\r\n });\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Parametri di sistema' | localize : lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterparameter\" name=\"filterparameter\" [Placeholder]=\"'Nome parametro' | localize : lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterlevel\" name=\"filterlevel\" [Placeholder]=\"'Livello' | localize : lc\" [Source]=\"LevelsSource\"></form-select>\n </div>\n @if (searchView.filterlevel == 'SYS') {\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n }\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"far fa-search\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico Parametri di sistema' | localize : lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" (onSearchRequest)=\"sendSearch($event);\">\n <ng-template #header>\n <th class=\"app-col-min\"></th>\n <th class=\"app-col-min\"></th>\n <th class=\"app-nowrap\">{{'Nome parametro' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Valore' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Default' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Descrizione' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Valore Default' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile a livello di Sessione' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile a livello di Sistema' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificato' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Aggiustato' | localize : lc}}</th>\n </ng-template>\n <ng-template #body let-item>\n <td class=\"app-no-wrap app-right-0 app-padding-top-8\">\n @if (!item.isreadonly && ((lastSelectedLevel == 'SYS' && item.syseditable) || (lastSelectedLevel == 'SES' && item.seseditable))) {\n <a class=\"app-link far fa-edit\" (click)=\"setupEdit(item); dlgEdit.show();\"></a>\n }\n </td>\n <td class=\"app-no-wrap app-right-0 app-padding-top-8\">\n @if (!item.isreadonly && ((lastSelectedLevel == 'SYS' && item.syseditable) || (lastSelectedLevel == 'SES' && item.seseditable))) {\n <a class=\"app-link far fa-refresh\" (click)=\"setupReset(item);\"></a>\n }\n </td>\n <td class=\"app-nowrap\"><strong>{{item.parametername}}</strong></td>\n <td class=\"app-nowrap\">{{item.value}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.isdefault\" [class.text-danger]=\"!item.isdefault\">\n {{ item.isdefault ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.parameterdescription}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"!item.isreadonly\" [class.text-danger]=\"item.isreadonly\">\n {{ !item.isreadonly ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.defaultvalue}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.seseditable\" [class.text-danger]=\"!item.seseditable\">\n {{ item.seseditable ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.syseditable\" [class.text-danger]=\"!item.syseditable\">\n {{ item.syseditable ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.modified}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.adjusted\" [class.text-danger]=\"!item.adjusted\">\n {{ item.adjusted ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n </ng-template>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div esModal #dlgEdit=\"es-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-lg\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title pull-left\">{{ 'Modifica parametro' | localize : lc }}</h5>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgEdit.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <form novalidate #editConfigForm=\"ngForm\" (ngSubmit)=\"editConfigForm.valid && submitForm() && dlgEdit.hide()\">\n @if (ParOnEdit) {\n <div class=\"modal-body\">\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Nome parametro' | localize : lc\" [(ngModel)]=\"ParOnEdit.parametername\" [disabled]=\"true\" name=\"parametername\"></form-input>\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Valore' | localize : lc\" [(ngModel)]=\"ParOnEdit.value\" name=\"value\" [Last]=\"lastSelectedLevel == 'SES'\"></form-input>\n @if (lastSelectedLevel == 'SYS') {\n <form-checkbox [LabelInputRatio]=\"'3 9'\" [Label]=\"'File Configurazione' | localize : lc\" [(ngModel)]=\"ParOnEdit.configfile\" name=\"configfile\"></form-checkbox>\n <form-checkbox [LabelInputRatio]=\"'3 9'\" [Label]=\"'Memoria' | localize : lc\" [(ngModel)]=\"ParOnEdit.memory\" name=\"memory\"></form-checkbox>\n <form-multiselect [LabelInputRatio]=\"'3 9'\" [Label]=\"'Applica solo a' | localize : lc\" [Source]=\"AvailableInstances\" name=\"instanceids\" [(ngModel)]=\"ParOnEdit.instanceids\" [Last]=\"true\"> </form-multiselect>\n }\n </div>\n }\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgEdit.hide()\">{{'Annulla' | localize : lc}}</button>\n <button type=\"submit\" contextAware class=\"btn btn-primary\">{{'Conferma' | localize : lc}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>","// Angular\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({ name: 'format_time' })\r\nexport class FormatTimePipe implements PipeTransform {\r\n\r\n constructor() { }\r\n\r\n transform(value: number | string) {\r\n return this.secondsToHms(value);\r\n }\r\n\r\n secondsToHms(d: number | string): string {\r\n d = Number(d);\r\n var h = Math.floor(d / 3600);\r\n var m = Math.floor(d % 3600 / 60);\r\n var s = Math.floor(d % 3600 % 60);\r\n \r\n var hDisplay = h > 0 ? h + \" h, \" : \"\";\r\n var mDisplay = m > 0 ? m + \" min, \" : \"\";\r\n var sDisplay = s > 0 ? s + \" sec\" : \"\";\r\n return hDisplay + mDisplay + sDisplay; \r\n }\r\n}","/** Chiave di questo modulo, da utilizzare per i messaggi */\r\nexport const MK_ADM = \"EsAdminModule\";\r\n\r\n/** Messaggi gestiti da questo modulo */\r\nexport enum AdmMessageTypes{\r\n Message\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { InterComService, InterComMessage } from \"@esfaenza/extensions\";\r\n\r\n// Modelli\r\nimport { AdmMessageTypes, MK_ADM } from \"./admin-feature-messages\";\r\n\r\ndeclare var myconfig;\r\n\r\n@Injectable()\r\nexport class AdminModuleCommService {\r\n\r\n constructor(private intercom: InterComService) { }\r\n\r\n public register() {\r\n this.intercom.register(MK_ADM);\r\n this.intercom.outbounds[MK_ADM].subscribe((t: InterComMessage) => { this.handleOutbound(t.type, t.message); });\r\n }\r\n\r\n private handleOutbound(type: AdmMessageTypes, message: any) {\r\n switch (type) {\r\n case AdmMessageTypes.Message:\r\n if (myconfig.DEBUG_MODE)\r\n console.log(\"@admin-feature outbound message: \" + message);\r\n break;\r\n }\r\n }\r\n}","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgModule, inject } from \"@angular/core\";\r\nimport { CanMatchFn, RouterModule } from \"@angular/router\";\r\n\r\n// Libs\r\nimport { ModalModule } from \"ngx-bootstrap/modal\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\r\n\r\n// Esfaenza\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { EsChartsModule } from \"@esfaenza/es-charts\";\r\nimport { EsGertrudeModule } from \"@esfaenza/gertrude\";\r\nimport { ExtensionsModule } from \"@esfaenza/extensions\";\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { ContextMenuModule } from \"@esfaenza/ngx-contextmenu\";\r\n\r\n// Components\r\nimport { AdmAuditsComponent } from \"./components/audits/adm_audits.component\";\r\nimport { AdmWrkComponent } from \"./components/workers/adm_wrk.component\";\r\nimport { AdmProfilerComponent } from \"./components/profiler/adm_profiler.component\";\r\nimport { AdmTopActivitiesComponent } from \"./components/topact/topact_search.component\";\r\nimport { AdmTopActivityV2Component } from \"./components/topact_v2/topact_v2.component\";\r\nimport { SessionDetailComponent } from \"./components/_shared/session_detail.component\";\r\nimport { AdmEnqComponent } from \"./components/enqueues/adm_enq.component\";\r\nimport { AdmMetricsComponent } from \"./components/metrics/metrics_search.component\";\r\nimport { AdmLogsComponent } from \"./components/logs/adm_logs.component\";\r\nimport { NodeDetailComponent } from \"./components/_shared/node_detail.component\";\r\nimport { AdmDynamicViewsComponent } from \"./components/dynamic_views/adm_dynamic_views.component\";\r\nimport { MtdQueryComponent } from \"./components/mtd_query/mtd_query.component\";\r\nimport { AdmSystemParametersComponent } from \"./components/syspars/adm_syspars.component\";\r\n\r\n// Pipes\r\nimport { FormatTimePipe } from \"./pipes/format_time.pipe\";\r\n\r\n// Communication Service\r\nimport { AdminModuleCommService } from \"./admin-feature.comms.service\";\r\n\r\n// Tokens\r\nimport { ADM_CONVERSATIONS, ADM_TOPACT_V2 } from \"./tokens\";\r\nimport { ComponentsModule } from \"@esfaenza/core/components\";\r\nimport { DirectivesModule } from \"@esfaenza/core/directives\";\r\n\r\ndeclare var myconfig;\r\n\r\n// La Top Activity v2 prende la rotta \"topact\" solo se DirectorFeature.TopActivityV2 è attivo nella configurazione del modulo,\r\n// altrimenti la guardia fallisce e la rotta successiva apre la pagina di sempre\r\nexport const topActivityV2Enabled: CanMatchFn = () => inject(ADM_TOPACT_V2, { optional: true }) ?? false;\r\n\r\nexport const routeConfig = [\r\n {\r\n path: \"\", children: [\r\n { path: \"serverworkers/:be\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler/:be\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact/:be\", component: AdmTopActivityV2Component, canMatch: [topActivityV2Enabled], data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"topact/:be\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics/:be\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs/:be\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits/:be\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues/:be\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews/:be\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"metadataquery/:be\", component: MtdQueryComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"serverworkers\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact\", component: AdmTopActivityV2Component, canMatch: [topActivityV2Enabled], data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"topact\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"metadataquery\", component: MtdQueryComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"syspars\", component: AdmSystemParametersComponent, data: { title: \"Parametri di sistema\", internalNavigation: false } }]\r\n }\r\n];\r\n\r\nconst MODULES = [\r\n // Base\r\n CommonModule,\r\n FormsModule,\r\n\r\n // Bootstrap\r\n ModalModule,\r\n TooltipModule,\r\n BsDropdownModule,\r\n\r\n // Esfaenza e componenti visuali\r\n ContextMenuModule,\r\n LocalizationModule,\r\n ExtensionsModule,\r\n EsTableModule,\r\n FormsAndValidationsModule,\r\n EsGertrudeModule,\r\n EsChartsModule,\r\n ComponentsModule,\r\n DirectivesModule,\r\n\r\n RouterModule.forChild(routeConfig),\r\n];\r\n\r\nconst COMPONENTS = [\r\n AdmWrkComponent,\r\n AdmProfilerComponent,\r\n AdmTopActivitiesComponent,\r\n AdmTopActivityV2Component,\r\n SessionDetailComponent,\r\n AdmDynamicViewsComponent,\r\n AdmLogsComponent,\r\n AdmAuditsComponent,\r\n AdmEnqComponent,\r\n AdmMetricsComponent,\r\n NodeDetailComponent,\r\n MtdQueryComponent,\r\n AdmSystemParametersComponent\r\n];\r\n\r\nconst PIPES = [\r\n FormatTimePipe\r\n]\r\n\r\n@NgModule({\r\n imports: [...MODULES, ...PIPES],\r\n declarations: [...COMPONENTS],\r\n providers: [\r\n AdminModuleCommService,\r\n { provide: ADM_CONVERSATIONS, useFactory: () => !!myconfig.TransactionTimeoutSeconds },\r\n { provide: ADM_TOPACT_V2, useFactory: () => !!myconfig?.DirectorFeature?.TopActivityV2 }\r\n ]\r\n})\r\nexport class AdmModule {\r\n constructor(private commService: AdminModuleCommService) {\r\n console.log(\"@esfaenza/admin-feature: BOOTSTRAP\");\r\n this.commService.register();\r\n }\r\n}","/*\r\n * Public API Surface of admin-feature\r\n */\r\n\r\nexport * from './lib/admin-feature.module';\r\nexport * from './lib/tokens';\r\nexport * from \"./lib/admin-feature-messages\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i6.AdminModuleBaseService","i8","i9","i10","i11","i3","i12.NodeDetailComponent","i4","i12","i13.NodeDetailComponent","i5","i6","i1","i5.AdminModuleBaseService","i7","i12.SessionDetailComponent","i14","i4.AdminModuleBaseService","KeyValue","i1.AdminModuleCommService"],"mappings":"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"}
1
+ {"version":3,"file":"esfaenza-admin-module.mjs","sources":["../../../projects/admin-feature/src/lib/models/components/AuditsView.ts","../../../projects/admin-feature/src/lib/tokens.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.loc.ts","../../../projects/admin-feature/src/lib/services/admin-feature.base.service.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.html","../../../projects/admin-feature/src/lib/models/shared/KeyValue.ts","../../../projects/admin-feature/src/lib/models/components/ProcessesView.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.loc.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.html","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNode.loc.ts","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNode.ts","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNodesView.ts","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.html","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.ts","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.html","../../../projects/admin-feature/src/lib/models/components/TopActivitiesDataView.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.loc.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.html","../../../projects/admin-feature/src/lib/models/components/TopActivityV2Enums.ts","../../../projects/admin-feature/src/lib/models/components/TopActivityV2Request.ts","../../../projects/admin-feature/src/lib/components/topact_v2/topact_v2.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/session_detail.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/session_detail.component.ts","../../../projects/admin-feature/src/lib/components/_shared/session_detail.component.html","../../../projects/admin-feature/src/lib/components/topact_v2/topact_v2.component.ts","../../../projects/admin-feature/src/lib/components/topact_v2/topact_v2.component.html","../../../projects/admin-feature/src/lib/models/components/LocksView.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.loc.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.html","../../../projects/admin-feature/src/lib/models/components/MetricsView.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.loc.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.html","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.loc.ts","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.ts","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.html","../../../projects/admin-feature/src/lib/models/components/DynamicViewsView.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.loc.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.html","../../../projects/admin-feature/src/lib/models/components/QueryView.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.loc.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.html","../../../projects/admin-feature/src/lib/models/components/SystemParametersView.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.loc.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.html","../../../projects/admin-feature/src/lib/pipes/format_time.pipe.ts","../../../projects/admin-feature/src/lib/admin-feature-messages.ts","../../../projects/admin-feature/src/lib/admin-feature.comms.service.ts","../../../projects/admin-feature/src/lib/admin-feature.module.ts","../../../projects/admin-feature/src/public-api.ts","../../../projects/admin-feature/src/esfaenza-admin-module.ts"],"sourcesContent":["import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Audit } from \"./Audit\";\r\n\r\nexport class AuditsView extends AppSearch<Audit> {\r\n constructor() {\r\n super();\r\n this.filteraction = '';\r\n this.filterhttp = '';\r\n }\r\n\r\n filterda: string;\r\n filtera: string;\r\n filteruser: string;\r\n filterroute: string;\r\n filteraction: string;\r\n filteraddress: string;\r\n filterhttp: string;\r\n filterargs: string;\r\n filterobjid: string;\r\n filterobjtype: string;\r\n filterconversationid: string;\r\n filterhttpcode: string;\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const ADM_MODULE_PATH: InjectionToken<string> = new InjectionToken<string>('ADM_MODULE_PATH');\r\nexport const ADM_CONVERSATIONS: InjectionToken<boolean> = new InjectionToken<boolean>('ADM_CONVERSATIONS');\r\nexport const ADM_TOPACT_V2: InjectionToken<boolean> = new InjectionToken<boolean>('ADM_TOPACT_V2');","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmAuditLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Audit Applicativi\", [\"Search Application Audits\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Chiamata REST\", [\"REST Call\"]);\r\n super.set(\"it->en\", \"Aggiornamento\", [\"Update\"]);\r\n super.set(\"it->en\", \"Route\", [\"Route\"]);\r\n super.set(\"it->en\", \"Azione\", [\"Action\"]);\r\n super.set(\"it->en\", \"Metodo HTTP\", [\"HTTP Method\"]);\r\n super.set(\"it->en\", \"Argomenti\", [\"Arguments\"]);\r\n super.set(\"it->en\", \"ID Oggetto\", [\"Object ID\"]);\r\n super.set(\"it->en\", \"Tipo Oggetto\", [\"Object Type\"]);\r\n super.set(\"it->en\", \"Dati Oggetto\", [\"Object Data\"]);\r\n super.set(\"it->en\", \"Carico gli Audit dell'Applicazione\", [\"Loading Application Audits\"]);\r\n super.set(\"it->en\", \"Data\", [\"Date\"]);\r\n super.set(\"it->en\", \"Indirizzo\", [\"Address\"]);\r\n super.set(\"it->en\", \"Risposta HTTP\", [\"HTTP Response\"]);\r\n super.set(\"it->en\", \"Codice Errore Applicativo\", [\"Application Error Code\"]);\r\n super.set(\"it->en\", \"Cod. Conversation\", [\"Conversation ID\"]);\r\n }\r\n}","// Angular\r\nimport { Injectable, Injector } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n// ES\r\nimport { CallResult, MessageService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Configurazioni\r\nimport { ProcessesView } from \"../models/components/ProcessesView\";\r\nimport { firstValueFrom, catchError, of } from \"rxjs\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { TopActivitiesDataView } from \"../models/components/TopActivitiesDataView\";\r\nimport { TopActivityV2Request } from \"../models/components/TopActivityV2Request\";\r\nimport { TopActivityV2Response } from \"../models/components/TopActivityV2Response\";\r\nimport { DirectorInfos } from \"../models/components/DirectorInfos\";\r\nimport { NodeStats } from \"../models/components/NodeStats\";\r\nimport { SessionStats } from \"../models/components/SessionStats\";\r\nimport { ProfilerDataNodesView } from \"../models/components/ProfilerDataNodesView\";\r\nimport { MetricsView } from \"../models/components/MetricsView\";\r\nimport { Metric } from \"../models/components/Metric\";\r\nimport { LocksView } from \"../models/components/LocksView\";\r\nimport { DynamicViewsView } from \"../models/components/DynamicViewsView\";\r\nimport { AuditsView } from \"../models/components/AuditsView\";\r\nimport { QueryView } from \"../models/components/QueryView\";\r\nimport { SystemParametersView } from \"../models/components/SystemParametersView\";\r\nimport { SystemParameters } from \"../models/components/SystemParameters\";\r\n\r\n// Chiamate ai Repository\r\nconst GET_Director_ChangeProcessConsumerGroup: string = \"/api/Director/ChangeProcessConsumerGroup\";\r\nconst GET_Director_GetConsumerGroups: string = \"/api/Director/GetConsumerGroups#cache\";\r\nconst GET_Director_GetInfos: string = \"/api/Director/GetInfos\";\r\nconst GET_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetProfilerDataNodes: string = \"/api/Director/GetProfilerDataNodes\";\r\nconst GET_Director_GetWorkloadReport: string = \"/api/Director/GetWorkloadReport\";\r\nconst POST_Director_GetServerAudits: string = \"/api/Director/GetServerAudits\";\r\nconst POST_Director_GetDynamicViewData: string = \"/api/Director/GetDynamicViewData\";\r\nconst POST_Director_GetServerLocks: string = \"/api/Director/GetServerLocks\";\r\nconst POST_Director_GetServerQuery: string = \"/api/Director/GetServerQuery\";\r\nconst GET_Director_GetServerLogs: string = \"/api/Director/GetServerLogs\";\r\nconst GET_Director_GetDynamicViews: string = \"/api/Director/GetDynamicViews\";\r\nconst POST_Director_GetServerWorkers: string = \"/api/Director/GetServerWorkers\";\r\nconst POST_Director_GetTopActivities: string = \"/api/Director/GetTopActivities\";\r\nconst GET_Director_KillProcess: string = \"/api/Director/KillProcess\";\r\nconst GET_Director_SetProcessTracing: string = \"/api/Director/SetProcessTracing\";\r\nconst GET_Director_GetNodeStats: string = \"/api/Director/GetNodeStats\";\r\nconst GET_Director_GetSessionStats: string = \"/api/Director/GetSessionStats\";\r\nconst POST_Director_GetSystemParameters: string = \"/api/Director/GetSystemParameters\";\r\nconst POST_Director_UpdatSystemParameter: string = \"/api/Director/UpdatSystemParameter\";\r\nconst GET_Director_ResetSystemParameter: string = \"/api/Director/ResetSystemParameter\";\r\nconst GET_Director_GetInstances: string = \"/api/Director/GetInstances\";\r\nconst GET_Director_GetLogTargets: string = \"/api/Director/GetLogTargets\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AdminModuleBaseService {\r\n public http: HTTPService;\r\n public msgExts: MessageService;\r\n\r\n constructor(private injector: Injector) {\r\n this.http = this.injector.get(HTTPService);\r\n this.msgExts = this.injector.get(MessageService);\r\n }\r\n\r\n public async getServerWorkers(be: string, sv: ProcessesView): Promise<ProcessesView> {\r\n var pars = new HttpParams().set(\"be\", be);\r\n\r\n let ret: ProcessesView = await firstValueFrom(this.http.post<ProcessesView>(POST_Director_GetServerWorkers, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async doSetProcessTracing(be: string, instanceid: string, sid: string, serial: string, enable: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"enable\", enable ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_SetProcessTracing, pars));\r\n return ret;\r\n }\r\n\r\n public async doKillProcess(be: string, instanceid: string, sid: string, serial: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_KillProcess, pars));\r\n return ret;\r\n }\r\n\r\n public async doChangeProcessConsumerGroup(be: string, instanceid: string, sid: string, serial: string, consumerGroup: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"consumer_group\", consumerGroup ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_ChangeProcessConsumerGroup, pars));\r\n return ret;\r\n }\r\n\r\n public async getConsumerGroups(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetConsumerGroups, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerLogs(be: string, from: string, to: string, instance: string, target: string): Promise<string> {\r\n var pars = new HttpParams().set(\"from\", from ?? \"\").set(\"to\", to ?? \"\").set(\"instance\", instance ?? \"\").set(\"target\", target ?? \"\").set(\"be\", be ?? \"\");\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_GetServerLogs, pars));\r\n return ret;\r\n }\r\n\r\n public async getTopActivities(be: string, sv: TopActivitiesDataView): Promise<TopActivitiesDataView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: TopActivitiesDataView = await firstValueFrom(this.http.post<TopActivitiesDataView>(POST_Director_GetTopActivities, sv, pars));\r\n return ret;\r\n }\r\n\r\n // Stesso URL di getTopActivities: con DirectorFeature.TopActivityV2 attivo il backend-for-frontend risponde con il contratto v2\r\n public async getTopActivitiesV2(be: string, req: TopActivityV2Request): Promise<TopActivityV2Response> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: TopActivityV2Response = await firstValueFrom(this.http.post<TopActivityV2Response>(POST_Director_GetTopActivities, req, pars));\r\n return ret;\r\n }\r\n\r\n public async getInfos(be: string): Promise<DirectorInfos> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: DirectorInfos = await firstValueFrom(this.http.get<DirectorInfos>(GET_Director_GetInfos, pars, null, false).pipe(catchError(_ => of(null as DirectorInfos))));\r\n return ret;\r\n }\r\n\r\n public async getNodeStats(be: string, nodeId: string, global: boolean = false): Promise<NodeStats> {\r\n let pars = new HttpParams().set(\"nodeId\", nodeId ?? \"\").set(\"be\", be ?? \"\").set(\"global\", global);\r\n let ret: NodeStats = await firstValueFrom(this.http.get<NodeStats>(GET_Director_GetNodeStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getSessionStats(be: string, sid: string, serial: string, instance: string): Promise<SessionStats> {\r\n let pars = new HttpParams().set('sid', sid ?? \"\").set('serial', serial ?? \"\").set('instanceid', instance ?? \"\").set(\"be\", be ?? \"\");\r\n let ret: SessionStats = await firstValueFrom(this.http.get<SessionStats>(GET_Director_GetSessionStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getProfilerDataNodes(be: string, sv: ProfilerDataNodesView): Promise<ProfilerDataNodesView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: ProfilerDataNodesView = await firstValueFrom(this.http.post<ProfilerDataNodesView>(POST_Director_GetProfilerDataNodes, sv, pars));\r\n return ret;\r\n }\r\n\r\n public downloadWorkloadReport(be: string, from: string, to: string, global: boolean = false) {\r\n let pars = new HttpParams().set(\"from\", from ?? \"\").set(\"to\", to ?? \"\").set(\"be\", be ?? \"\").set(\"global\", global);\r\n this.http.getFileNative(GET_Director_GetWorkloadReport, pars);\r\n }\r\n\r\n public async getMetrics(be: string, sv: MetricsView): Promise<MetricsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: MetricsView = await firstValueFrom(this.http.post<MetricsView>(POST_Director_GetMetrics, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getMetricsList(be: string, from: string, to: string): Promise<Metric[]> {\r\n let pars = new HttpParams()\r\n .set(\"from\", from ?? \"\")\r\n .set(\"to\", to ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: Metric[] = await firstValueFrom(this.http.get<Metric[]>(GET_Director_GetMetrics, pars));\r\n return ret.sort((a, b) => a.name.localeCompare(b.name));\r\n }\r\n\r\n public async getServerLocks(be: string, sv: LocksView): Promise<LocksView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: LocksView = await firstValueFrom(this.http.post<LocksView>(POST_Director_GetServerLocks, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerQuery(be: string, sv: QueryView): Promise<QueryView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: QueryView = await firstValueFrom(this.http.post<QueryView>(POST_Director_GetServerQuery, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViewData(be: string, sv: DynamicViewsView): Promise<DynamicViewsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: DynamicViewsView = await firstValueFrom(this.http.post<DynamicViewsView>(POST_Director_GetDynamicViewData, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViews(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetDynamicViews, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerAudits(be: string, sv: AuditsView): Promise<AuditsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: AuditsView = await firstValueFrom(this.http.post<AuditsView>(POST_Director_GetServerAudits, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getSystemParameters(be: string, sv: SystemParametersView): Promise<SystemParametersView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: SystemParametersView = await firstValueFrom(this.http.post<SystemParametersView>(POST_Director_GetSystemParameters, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getInstances(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetInstances, pars));\r\n return ret;\r\n }\r\n\r\n \r\n public async getLogTargets(be: string, instance: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\").set(\"instance\", instance ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetLogTargets, pars));\r\n return ret;\r\n }\r\n\r\n public async updateSystemParameter(be: string, dto: SystemParameters): Promise<string> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: string = await firstValueFrom(this.http.post<string>(POST_Director_UpdatSystemParameter, dto, pars));\r\n return ret;\r\n }\r\n\r\n public async resetSystemParameter(be: string, parId: string, level: string): Promise<string> {\r\n let pars = new HttpParams()\r\n .set(\"parId\", parId)\r\n .set(\"level\", level)\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_ResetSystemParameter, pars));\r\n return ret;\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InterComService, InboundMessageTypes, ClipboardService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { AuditsView } from \"../../models/components/AuditsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH, ADM_CONVERSATIONS } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmAuditLoc } from \"./adm_audits.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"adm_audits\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }],\r\n templateUrl: \"./adm_audits.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmAuditsComponent {\r\n\r\n public searchView: AuditsView = new AuditsView();\r\n public Actions: KeyValue[] = [];\r\n public HttpMethods: KeyValue[] = [];\r\n public searchInProgress: boolean = false;\r\n public storageSub: any;\r\n\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n public exts: ClipboardService,\r\n @Inject(ADM_MODULE_PATH) private mod: string,\r\n @Inject(ADM_CONVERSATIONS) public usesConversations: boolean) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n\r\n this.HttpMethods = [\r\n { id: \"GET\", description: \"GET\" },\r\n { id: \"POST\", description: \"POST\" },\r\n { id: \"PUT\", description: \"PUT\" },\r\n { id: \"PATCH\", description: \"PATCH\" },\r\n { id: \"DELETE\", description: \"DELETE\" }\r\n ];\r\n\r\n this.Actions = [\r\n { id: \"C\", description: this.lc.loc(\"Chiamata REST\") },\r\n { id: \"U\", description: this.lc.loc(\"Aggiornamento\") },\r\n { id: \"D\", description: this.lc.loc(\"Elimina\") }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<AuditsView>(\"HotAudittato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serveraudits`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotAudittato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: AuditsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n else {\r\n this.searchView = new AuditsView();\r\n this.searchView.filterda = dayjs().add(-1, \"month\").format(this.lc.token(\"getSmallDateFormat\"));\r\n this.searchView.filtera = dayjs().format(this.lc.token(\"getSmallDateFormat\"));\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchInProgress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n\r\n async POSTGetProcesses(data: AuditsView) {\r\n this.searchView = await this.adms.getServerAudits(this.be, data);\r\n this.searchInProgress = false;\r\n this.localStorage.setItem(\"HotAudittato\", this.searchView).subscribe();\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Audit Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'A' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteraddress\" name=\"filteraddress\" [Placeholder]=\"'Indirizzo' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [Placeholder]=\"'Azione' | localize: lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [Placeholder]=\"'Metodo HTTP' | localize: lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Argomenti' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'ID Oggetto' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Tipo Oggetto' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterhttpcode\" name=\"filterhttpcode\" [Placeholder]=\"'Risposta HTTP' | localize: lc\"></form-input>\n </div>\n <!-- Per ora commentato -->\n <!-- <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" *ngIf=\"usesConversations\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterconversationid\" name=\"filterconversationid\" [Placeholder]=\"'Cod. Conversation' | localize: lc\"></form-input>\n </div> -->\n </div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico gli Audit dell\\'Applicazione' | localize: lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\n <span *th=\"'Timestamp'\">{{'Data' | localize: lc}}</span>\n <span *th=\"'User'\">{{'Utente' | localize: lc}}</span>\n <span *th=\"'RemoteAddress'\">{{'Indirizzo' | localize: lc}}</span>\n <span *th=\"'Action'\">{{'Azione' | localize: lc}}</span>\n <span *th=\"'HttpMethod'\">{{'Metodo HTTP' | localize: lc}}</span>\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\n <span *th=\"'Args'\">{{'Argomenti' | localize: lc}}</span>\n <span *th=\"'HttpResponse'\">{{'Risposta HTTP' | localize: lc}}</span>\n <span *th=\"'NonStdErrorMessage'\">{{'Codice Errore Applicativo' | localize: lc}}</span>\n <span *th=\"'ConvId'; If: usesConversations\">{{'Cod. Conversation' | localize: lc}}</span>\n <span *th=\"'ObjectType'\">{{'Tipo Oggetto' | localize: lc}}</span>\n <span *th=\"'ObjectId'\">{{'ID Oggetto' | localize: lc}}</span>\n <span *th=\"'ObjectData'\">{{'Dati Oggetto' | localize: lc}}</span>\n <strong *td=\"'Timestamp'; let item\">{{item.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\n <span *td=\"'User'; let item\">{{item.user}}</span>\n <span *td=\"'RemoteAddress'; let item\">{{item.address}}</span>\n <span *td=\"'Action'; let item\">{{item.action}}</span>\n <span *td=\"'HttpMethod'; let item\">{{item.httpmethod}}</span>\n <span *td=\"'Route'; let item\">{{item.route}}</span>\n <span *td=\"'Args'; let item\" class=\"app-pointer\" title=\"Click per copiarlo nella clipboard\" (click)=\"exts.copyTextToClipboard(item.args)\">{{item.args}}</span>\n <span *td=\"'HttpResponse'; let item\">{{item.httpresponse}}</span>\n <span *td=\"'NonStdErrorMessage'; let item\">{{item.mdmerrorcode}}</span>\n <span *td=\"'ConvId'; If: usesConversations; let item\">{{item.conversationid}}</span>\n <span *td=\"'ObjectType'; let item\">{{item.objecttype}}</span>\n <span *td=\"'ObjectId'; let item\">{{item.objectid}}</span>\n <span *td=\"'ObjectData'; let item\">{{item.objectdata}}</span>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n</div>","export class KeyValue {\r\n constructor(public id: string, public description: string) { }\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class ProcessesView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtertenant: string;\r\n filteruser: string;\r\n filterstate: string;\r\n filterglobal: boolean;\r\n filtertype: string;\r\n filterthreadtype: string;\r\n filterthreadstatus: string;\r\n filterinwait: boolean;\r\n filtersid: string;\r\n filtertid: string;\r\n filtermtid: string;\r\n filterdcid: boolean;\r\n\r\n filterbe: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmWrkLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Gruppo di Consumo modificato con successo\", [\"Consumer Group succesfully changed\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Gruppo di Consumo\", [\"Errors changing Consumer Group\"]);\r\n super.set(\"it->en\", \"Modifica Gruppo di Consumo\", [\"Change Consumer Group\"]);\r\n super.set(\"it->en\", \"Nuovo Gruppo di Consumo\", [\"New Consumer Group\"]);\r\n super.set(\"it->en\", \"Tipo Thread\", [\"Thread Type\"]);\r\n super.set(\"it->en\", \"Stato Thread\", [\"Thread Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Stato\", [\"State\"]);\r\n super.set(\"it->en\", \"SID\", [\"SID\"]);\r\n super.set(\"it->en\", \"TID\", [\"TID\"]);\r\n super.set(\"it->en\", \"In Attesa\", [\"In Wait\"]);\r\n super.set(\"it->en\", \"Push dedicato connesso\", [\"Dedicated push connected\"]);\r\n super.set(\"it->en\", \"Ricerca globale\", [\"Global search\"]);\r\n super.set(\"it->en\", \"Ricerca Processi Applicativi\", [\"Search Application Processes\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Tracing del Processo\", [\"Errors toggling Process Tracing\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Carico i Processi Applicativi\", [\"Loading Application Processes\"]);\r\n super.set(\"it->en\", \"Attiva Tracing Processo\", [\"Activate Process Tracing\"]);\r\n super.set(\"it->en\", \"Disattiva Tracing Progetto\", [\"Deactivate Process Tracing\"]);\r\n super.set(\"it->en\", \"Ammazza Processo\", [\"Kill Process\"]);\r\n super.set(\"it->en\", \"Errori durante la Kill del Processo\", [\"Errors killing the Process\"]);\r\n super.set(\"it->en\", \"Processo ucciso con successo\", [\"Process succesfully killed\"]);\r\n super.set(\"it->en\", \"Conferma Terminazione del Processo\", [\"Confirm Process Kill\"]);\r\n super.set(\"it->en\", \"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\", [\"Are you sure you wish to kill the selected process? The associated user will be disconnected\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { EsTableOperationDefinition } from \"@esfaenza/es-table\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ProcessesView } from \"../../models/components/ProcessesView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmWrkLoc } from \"./adm_wrk.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_wrk\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }],\r\n templateUrl: \"./adm_wrk.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmWrkComponent {\r\n\r\n private globalFilterValue = null;\r\n\r\n public searchView: ProcessesView = new ProcessesView();\r\n public DynamicOps: EsTableOperationDefinition[] = [];\r\n public storageSub: any;\r\n public valueToShow: string = \"\";\r\n\r\n public Types: KeyValue[] = [];\r\n public States: KeyValue[] = [];\r\n public ThreadTypes: KeyValue[] = [];\r\n public ThreadStatuses: KeyValue[] = [];\r\n\r\n private be: string;\r\n constructor(\r\n private utiExts: UtilityService,\r\n private msgExts: MessageService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.DynamicOps = [\r\n new EsTableOperationDefinition(\"trace_on\", this.lc.loc(\"Attiva Tracing Processo\"), \"fa fa-circle text-danger\", \"\", \"trace_enabled\", \"N\"),\r\n new EsTableOperationDefinition(\"trace_off\", this.lc.loc(\"Disattiva Tracing Progetto\"), \"fa fa-circle text-success\", \"\", \"trace_enabled\", \"Y\"),\r\n new EsTableOperationDefinition(\"kill\", this.lc.loc(\"Ammazza Processo\"), \"fa fa-ban text-danger\"),\r\n new EsTableOperationDefinition(\"change_cg\", this.lc.loc(\"Modifica Gruppo di Consumo\"), \"fa fa-edit text-info\")\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n Init(ignoreStorage) {\r\n this.Types = [new KeyValue(\"USER\", \"USER\"), new KeyValue(\"BACKGROUND\", \"BACKGROUND\"), new KeyValue(\"JOB\", \"JOB\")];\r\n this.States = [new KeyValue(\"ACTIVE\", \"ACTIVE\"), new KeyValue(\"INACTIVE\", \"INACTIVE\"), new KeyValue(\"KILLED\", \"KILLED\")];\r\n this.ThreadTypes = [\"APITHREAD\", \"APIPUSHTHREAD\", \"BACKGROUNDTHREAD\", \"JOBTHREAD\", \"PARALLELSLAVETHREAD\"].map(t => new KeyValue(t, t));\r\n this.ThreadStatuses = [\"ACTIVE\", \"IDLE\", \"THROTTLING\", \"KILLED\"].map(t => new KeyValue(t, t));\r\n this.doInit(ignoreStorage);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProcessesView>(\"HotProcessato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverworkers`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotProcessato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProcessesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetServerWorkers();\r\n }\r\n else {\r\n this.searchView = new ProcessesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n this.searchView.columns = [];\r\n this.searchView.column_ordering = [];\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetServerWorkers();\r\n }\r\n\r\n async POSTGetServerWorkers() {\r\n // Switch cattivo per resettare la tabella quando cambia il global (dato che potrebbero cambiare le colonne)\r\n // La casistica è esplicitamente non supportata dall'estable quindi abbozzo un hard refresh da qui...\r\n if (this.globalFilterValue != null && this.globalFilterValue != this.searchView.filterglobal) {\r\n let prevSearchView = this.utiExts.deepClone(this.searchView);\r\n this.searchView = null;\r\n requestAnimationFrame(async () => {\r\n this.globalFilterValue = prevSearchView.filterglobal;\r\n this.searchView = await this.adms.getServerWorkers(this.be, prevSearchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n });\r\n }\r\n else {\r\n this.globalFilterValue = this.searchView.filterglobal || false;\r\n this.searchView = await this.adms.getServerWorkers(this.be, this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n }\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerWorkers(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n onOperation(event: { id: string, item: any }) {\r\n switch (event.id) {\r\n case \"trace_on\": this.toggleTracing(event.item, true); break;\r\n case \"trace_off\": this.toggleTracing(event.item, false); break;\r\n case \"kill\": this.killProcess(event.item); break;\r\n case \"change_cg\": this.changeProcessCg(event.item); break;\r\n }\r\n }\r\n\r\n async toggleTracing(process: any, tracing: boolean) {\r\n let res = await this.adms.doSetProcessTracing(this.be, (process.properties[\"inst_id\"] || process.properties[\"INST_ID\"] || \"\"), process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"], tracing.toString());\r\n this.msgExts.manageStringResponse(res, \"\", this.lc.loc(\"Errori nella modifica del Tracing del Processo\"), () => this.sendSearch());\r\n }\r\n\r\n killProcess(process: any) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Conferma Terminazione del Processo\"),\r\n this.lc.loc(\"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\"),\r\n async () => {\r\n let res = await this.adms.doKillProcess(this.be, (process.properties[\"inst_id\"] || process.properties[\"INST_ID\"] || \"\"), process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"]);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Processo ucciso con successo\"), this.lc.loc(\"Errori durante la Kill del Processo\"), () => this.sendSearch());\r\n });\r\n }\r\n\r\n //********************************************** Gestione modifica Consumer Group ***************************************\r\n\r\n newCg: string = \"\";\r\n CGs: KeyValue[] = [];\r\n CgDictionariesLoaded: boolean = false;\r\n ProcessOnEdit: any;\r\n\r\n @ViewChild(\"cgFrom\") cgFrom: NgForm;\r\n @ViewChild(\"dlgChangeCg\") dlgChangeCg: ModalDirective;\r\n\r\n changeProcessCg(process: any) {\r\n this.ProcessOnEdit = process;\r\n if (!this.CgDictionariesLoaded) {\r\n this.loadCgDictionaries();\r\n this.CgDictionariesLoaded = true;\r\n }\r\n this.setupChangeCg();\r\n this.dlgChangeCg.show();\r\n }\r\n\r\n async loadCgDictionaries() {\r\n this.CGs = await this.adms.getConsumerGroups(this.be);\r\n }\r\n\r\n setupChangeCg() {\r\n this.utiExts.cleanForm(this.cgFrom)\r\n setTimeout(() => { this.newCg = \"\" });\r\n }\r\n\r\n async doChangeCg() {\r\n let res = await this.adms.doChangeProcessConsumerGroup(this.be, this.ProcessOnEdit.properties[\"inst_id\"] || this.ProcessOnEdit.properties[\"INST_ID\"], this.ProcessOnEdit.properties[\"sid\"] || this.ProcessOnEdit.properties[\"SID\"], this.ProcessOnEdit.properties[\"serial\"] || this.ProcessOnEdit.properties[\"SERIAL\"], this.newCg);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Gruppo di Consumo modificato con successo\"), this.lc.loc(\"Errori nella modifica del Gruppo di Consumo\"), () => this.sendSearch());\r\n return true;\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Processi Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n @if (searchView) {\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Ricerca globale' | localize: lc}}</span>\n </div>\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertype\" name=\"filtertype\" [Placeholder]=\"'Tipo' | localize: lc\" [Source]=\"Types\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Tenant' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [Placeholder]=\"'Stato' | localize: lc\" [Source]=\"States\"></form-select>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertid\" name=\"filtertid\" [Placeholder]=\"'TID'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermtid\" name=\"filtermtid\" [Placeholder]=\"'Thread gestito'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadtype\" name=\"filterthreadtype\" [Placeholder]=\"'Tipo Thread' | localize: lc\" [Source]=\"ThreadTypes\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadstatus\" name=\"filterthreadstatus\" [Placeholder]=\"'Stato Thread' | localize: lc\" [Source]=\"ThreadStatuses\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterinwait\" name=\"filterinwait\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterinwait = !searchView.filterinwait\">{{'In Attesa' | localize: lc}}</span>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterdcid\" name=\"filterdcid\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterdcid = !searchView.filterdcid\">{{'Push dedicato connesso' | localize: lc}}</span>\n </div>\n </div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n </form>\n </div>\n }\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Processi Applicativi' | localize: lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [Export]=\"true\" [ColumnsOrdering]=\"false\"\n [ExportFileName]=\"'Application Processes.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [AutoUpdate]=\"true\"\n [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span>&nbsp;\n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\n </span>\n </es-table>\n </div>\n }\n </div>\n </div>\n <div class=\"app-margin-top-15\">\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Indietro' | localize: lc}}</button>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-lg\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{'Modifica Gruppo di Consumo' | localize: lc}}</h4>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\n <div class=\"modal-body\">\n <form-select [Label]=\"'Nuovo Gruppo di Consumo' | localize: lc\" [(ngModel)]=\"newCg\" name=\"newCg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Chiudi' | localize: lc}}</button>\n <button type=\"submit\" class=\"btn btn-primary\">{{'Conferma' | localize: lc}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title pull-left\">\n Full Wait Stack\n </h5>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\n <span class=\"app-wrap\">\n {{valueToShow}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\n </div>\n </div>\n </div>\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class ProfilerDataNodeLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"ID Padre\", [\"Parent ID\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"])\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"])\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Export, ExportLocalization } from \"@esfaenza/extensions\";\r\n\r\nimport { ProfilerDataNodeLoc } from \"./ProfilerDataNode.loc\";\r\n\r\n@ExportLocalization(ProfilerDataNodeLoc)\r\nexport class ProfilerDataNode {\r\n @Export(10, \"ID Padre\")\r\n parentid: string;\r\n @Export(20, \"ID\")\r\n id: string;\r\n @Export(30, \"Descrizione\")\r\n description: string;\r\n @Export(40, \"Chiamate\")\r\n calls: number;\r\n @Export(50, \"Tempo\")\r\n time: number;\r\n @Export(60, \"Tempo Max\")\r\n peaktime: number;\r\n @Export(70, \"Tempo Min\")\r\n mintime: number;\r\n @Export(80, \"Tempo Medio\")\r\n avgtime: number;\r\n @Export(90, \"Tempo Specifico\")\r\n timewithoutchildren: number;\r\n @Export(100, \"Percentuale\")\r\n percentage: number;\r\n @Export(110, \"Chiamate Periodo\")\r\n snapdeltacalls: number;\r\n @Export(120, \"Tempo Periodo\")\r\n snapdeltatime: number;\r\n @Export(130, \"Tempo Max Periodo\")\r\n snappeaktime: number;\r\n @Export(140, \"Tempo Min Periodo\")\r\n snapmintime: number;\r\n @Export(150, \"Tempo Medio Periodo\")\r\n snapavgtime: number;\r\n @Export(160, \"Tempo Specifico Periodo\")\r\n snaptimewithoutchildren: number;\r\n @Export(170, \"Percentuale Periodo\")\r\n snappercentage: number;\r\n @Export(180, \"Nome Tipologia Evento\")\r\n eventtypename: string;\r\n @Export(190, \"Nome Classe Attesa\")\r\n waitclassname: string;\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { ProfilerDataNode } from \"./ProfilerDataNode\";\r\n\r\nexport class ProfilerDataNodesView extends AppSearch<ProfilerDataNode>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmProfilerComponentLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Profiler del Server\", [\"Server Profiler\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"]);\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"]);\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class NodeDetailLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Dettaglio Attività Nodo\", [\"Activity Node Details\"]);\r\n super.set(\"it->en\", \"Tipo Evento\", [\"Event Type\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso (Con Figli)\", [\"Elapsed (With Children)\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso\", [\"Elapsed (No Children)\"]);\r\n super.set(\"it->en\", \"Stack di Attesa\", [\"Wait Stack\"]);\r\n super.set(\"it->en\", \"Utilizzo Risorse\", [\"Resources Usage\"]);\r\n super.set(\"it->en\", \"Esecuzioni\", [\"Executions\"]);\r\n\t\tsuper.set(\"it->en\", \"Dettaglio evento\", [\"Event detail\"]);\r\n }\r\n}","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { BaseInterval, KeyValueColor, LineChartData, LineSerie, PieChartData } from \"@esfaenza/es-charts\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n// Applicazione\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\n// Localizzazione\r\nimport { NodeDetailLoc } from \"./node_detail.component.loc\";\r\n\r\n@Component({\r\n selector: \"node-detail\",\r\n viewProviders: [{ provide: LocalizationService, useClass: NodeDetailLoc }],\r\n templateUrl: \"./node_detail.component.html\",\r\n standalone: false\r\n})\r\nexport class NodeDetailComponent {\r\n\r\n @Input() NodeDetails: NodeStats;\r\n\r\n @Output() onClose: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(public lc: LocalizationService) { }\r\n\r\n ngOnInit() {\r\n let serie = new LineSerie(this.lc.loc(\"Sessioni Attive\"), this.NodeDetails.activesessions, null);\r\n this.NodeDetails.sessionchart = new LineChartData([serie]);\r\n this.NodeDetails.loadchart = new PieChartData([\r\n new KeyValueColor(\"CPU\", this.NodeDetails.cpuperc),\r\n new KeyValueColor(\"Wait\", this.NodeDetails.waitperc),\r\n new KeyValueColor(\"DB\", this.NodeDetails.dbperc),\r\n new KeyValueColor(\"Script\", this.NodeDetails.scriptperc),\r\n new KeyValueColor(\"Throttle\", this.NodeDetails.throttleperc),\r\n new KeyValueColor(\"Sleep\", this.NodeDetails.sleepperc),\r\n new KeyValueColor(\"Networking\", this.NodeDetails.networkperc),\r\n new KeyValueColor(\"IO\", this.NodeDetails.ioperc)\r\n ]);\r\n }\r\n\r\n closeDialog() {\r\n this.onClose.emit(true);\r\n }\r\n}","<div class=\"modal-dialog modal-xl\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">\n {{'Dettaglio Attività Nodo' | localize: lc}}\n @if (NodeDetails) {\n <span>&nbsp;{{NodeDetails.nodeid}}</span>\n }\n </h4>\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n @if (NodeDetails) {\n <div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-md-6\">\n <strong>{{'Tipo Evento' | localize: lc}}</strong>:&nbsp;{{NodeDetails.eventtypedesc}}&nbsp;<strong>{{'Classe Attesa' | localize: lc}}</strong>:&nbsp;{{NodeDetails.waitclassname}}\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Tempo Trascorso (Con Figli)' | localize: lc}}</strong>:&nbsp;{{NodeDetails.elapsed}}&nbsp;s\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Esecuzioni' | localize: lc}}</strong>:&nbsp;{{NodeDetails.executions}}\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Tempo Trascorso' | localize: lc}}</strong>:&nbsp;{{NodeDetails.elapsedlesschildren}}&nbsp;s\n </div>\n </div>\n <div>\n <h5 class=\"app-margin-top-10\"><strong>{{'Dettaglio evento' | localize: lc}}</strong></h5>\n {{NodeDetails.nodedescription}}\n </div>\n @if ((NodeDetails?.waitstack?.length || 0) > 0) {\n <div style=\"max-height: 200px; overflow: auto\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Stack di Attesa' | localize: lc}}</strong></h5>\n @for (wait of NodeDetails.waitstack; track wait; let i = $index) {\n <div>\n @for (_ of [].constructor(i+1); track _) {\n -\n }&nbsp;{{wait.nodeid}}&nbsp;-&nbsp;{{wait.nodedescription}}:&nbsp;\n <strong>{{'Tipo Evento' | localize: lc}}</strong>:&nbsp;{{wait.eventtypedesc}}&nbsp;\n <strong>{{'Classe Attesa' | localize: lc}}</strong>:&nbsp;{{wait.waitclassname}}\n </div>\n }\n </div>\n }\n @if ((NodeDetails?.foundininstanceids?.length || 0) > 0) {\n <div style=\"max-height: 200px; overflow: auto\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Presente nelle seguenti istanze' | localize: lc}}</strong></h5>\n @for (instid of NodeDetails.foundininstanceids; track instid; let i = $index) {\n <div style=\"margin-right: 15px;\">\n {{instid}}\n </div>\n }\n </div>\n }\n <div style=\"height: 200px;\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Utilizzo Risorse' | localize: lc}}</strong></h5>\n @if (NodeDetails.sessionchart) {\n <es-line-chart\n [MinGridDistance]=\"65\"\n [Timeline]=\"false\"\n [FinalInstants]=\"false\"\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\n [Fill]=\"true\"\n [MergeDatasets]=\"true\"\n [Data]=\"NodeDetails.sessionchart\"\n [Legend]=\"true\"\n name=\"nodeDetailSessionChart\"\n [DataGroupingThreshold]=\"99999999\"></es-line-chart>\n }\n </div>\n <div style=\"height: 200px;\">\n @if (NodeDetails.loadchart) {\n <es-pie-chart [Legend]=\"true\" [Data]=\"NodeDetails.loadchart\" name=\"nodeDetailLoadChart\"></es-pie-chart>\n }\n </div>\n </div>\n }\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\n </div>\n </div>\n </div>","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Applicazione\r\nimport { ProfilerDataNode } from \"../../models/components/ProfilerDataNode\";\r\nimport { ProfilerDataNodesView } from \"../../models/components/ProfilerDataNodesView\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmProfilerComponentLoc } from \"./adm_profiler.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\n@Component({\r\n selector: \"adm_profiler\",\r\n providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }],\r\n templateUrl: \"./adm_profiler.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmProfilerComponent {\r\n public searchView: ProfilerDataNodesView = new ProfilerDataNodesView();\r\n public storageSub: any;\r\n\r\n public NodeDetails: NodeStats;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProfilerDataNodesView>(\"HotSearchProfilato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/profiler`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchProfilato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProfilerDataNodesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProfilerDataNodesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n\r\n downloadWorkloadReport() {\r\n this.adms.downloadWorkloadReport(this.be, this.searchView.filterfrom, this.searchView.filterto, this.searchView.filterglobal);\r\n }\r\n\r\n async POSTGetItems(data: ProfilerDataNodesView) {\r\n this.searchView = await this.adms.getProfilerDataNodes(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSearchProfilato\", this.searchView).subscribe();\r\n }\r\n\r\n async prepareExport(dataCallBack) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let res = await this.adms.getProfilerDataNodes(this.be, view);\r\n dataCallBack(res.items, ProfilerDataNode);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId);\r\n });\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Profiler del Server' | localize: lc}}</span>&nbsp;\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"downloadWorkloadReport()\" type=\"submit\"><i class=\"fa fa-download\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Dati' | localize: lc}}</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\n <span *th=\"'2'\">{{'Descrizione' | localize: lc}}</span>\n <span *th=\"'3'\">{{'Chiamate' | localize: lc}}</span>\n <span *th=\"'4'\">{{'Tempo' | localize: lc}}</span>\n <span *th=\"'5'\">{{'Tempo Max' | localize: lc}}</span>\n <span *th=\"'6'\">{{'Tempo Min' | localize: lc}}</span>\n <span *th=\"'7'\">{{'Tempo Medio' | localize: lc}}</span>\n <span *th=\"'8'\">{{'Tempo Specifico' | localize: lc}}</span>\n <span *th=\"'9'\">{{'Percentuale' | localize: lc}}</span>\n <span *th=\"'10'\">{{'Chiamate Periodo' | localize: lc}}</span>\n <span *th=\"'11'\">{{'Tempo Periodo' | localize: lc}}</span>\n <span *th=\"'12'\">{{'Tempo Max Periodo' | localize: lc}}</span>\n <span *th=\"'13'\">{{'Tempo Min Periodo' | localize: lc}}</span>\n <span *th=\"'14'\">{{'Tempo Medio Periodo' | localize: lc}}</span>\n <span *th=\"'15'\">{{'Tempo Specifico Periodo' | localize: lc}}</span>\n <span *th=\"'16'\">{{'Percentuale Periodo' | localize: lc}}</span>\n <span *th=\"'17'\">{{'Nome Tipologia Evento' | localize: lc}}</span>\n <span *th=\"'18'\">{{'Nome Classe Attesa' | localize: lc}}</span>\n <span *th=\"'19'\">{{'Numero Istanze' | localize: lc}}</span>\n <span *td=\"'1'; let item\"><span class=\"app-link app-inline\" (click)=\"loadNodeDetails(item.id); dlgNodeDetails.show();\">{{item.id}}</span></span>\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\n <span *td=\"'3'; let item\">{{item.calls}}</span>\n <span *td=\"'4'; let item\">{{item.time}}</span>\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\n <span *td=\"'8'; let item\">{{item.timewithoutchildren }}</span>\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\n <span *td=\"'17' let item\">{{item.eventtypename}}</span>\n <span *td=\"'18' let item\">{{item.waitclassname}}</span>\n <span *td=\"'19' let item\">{{item.numinstances}}</span>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n @if (NodeDetails) {\n <node-detail [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\n }\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { TopActivity } from \"./TopActivity\";\r\n\r\nexport class TopActivitiesDataView extends AppSearch<TopActivity>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterrealtime: boolean;\r\n filterbe: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivitieLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Prime Istruzioni\", [\"Top Nodes\"]);\r\n super.set(\"it->en\", \"Prime Sessioni\", [\"Top Sessions\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Attività Principali\", [\"Top Activities\"]);\r\n super.set(\"it->en\", \"Descrizione Nodo\", [\"Node Description\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Limite\", [\"Limit\"]);\r\n super.set(\"it->en\", \"Tipo Nodo\", [\"Node Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Processo\", [\"Process\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Thread Massimi\", [\"Maximum Threads\"]);\r\n super.set(\"it->en\", \"CPU\", [\"CPUs\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class Name\"]);\r\n\r\n super.set(\"it->en\", \"Seriale\", [\"Serial\"]);\r\n super.set(\"it->en\", \"Stato\", [\"Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, BaseInterval, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ItemsSelection } from \"@esfaenza/es-table\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am5xy from \"@amcharts/amcharts5/xy\";\r\nimport { ReplaySubject } from \"rxjs\";\r\nimport { Dayjs } from \"dayjs\";\r\n\r\n// Modelli\r\nimport { DirectorInfos } from \"../../models/components/DirectorInfos\";\r\nimport { TopActivitiesDataView } from \"../../models/components/TopActivitiesDataView\";\r\nimport { TopNode } from \"../../models/components/TopNode\";\r\nimport { TopSession } from \"../../models/components/TopSession\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { SessionThread } from \"../../models/components/SessionThread\";\r\n\r\n// Applicazione\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmTopActivitieLoc } from \"./topact_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"topact_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmTopActivitieLoc }],\r\n templateUrl: \"./topact_search.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmTopActivitiesComponent {\r\n public searchView: TopActivitiesDataView = new TopActivitiesDataView();\r\n public storageSub: any;\r\n private LastDataPoint: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n\r\n private ChartInstance: BaseChartComponent<any>;\r\n public NodeDetails: NodeStats;\r\n\r\n private rtWindow: { from: Dayjs, to: Dayjs } = null;\r\n\r\n protected destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n private be: string;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // Ogni minuto calcolo qual è la finestra del realTime\r\n // interval(60 * 1000).pipe(takeUntil(this.destroyed$)).subscribe(_ => {\r\n // this.updateRealTimeWindow();\r\n // });\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n async updateRealTimeWindow() {\r\n let data = new TopActivitiesDataView();\r\n data.filterbe = this.be;\r\n data = await this.adms.getTopActivities(this.be, data);\r\n let reference = data.items[0];\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = this.dateExts.getDateConvertion(itemref.sampletime);\r\n\r\n if (!this.rtWindow)\r\n this.rtWindow = { from: theD, to: theD };\r\n else {\r\n if (theD.isBefore(this.rtWindow.from))\r\n this.rtWindow.from = theD;\r\n if (theD.isAfter(this.rtWindow.to))\r\n this.rtWindow.to = theD;\r\n }\r\n }\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<TopActivitiesDataView>(\"HotSearchTopAct\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/topact`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchTopAct\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: TopActivitiesDataView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new TopActivitiesDataView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: TopActivitiesDataView = null) {\r\n let sv = searchViewOverride ?? this.searchView;\r\n if ((sv.filterfrom || sv.filterto) && !this.rtWindow)\r\n await this.updateRealTimeWindow();\r\n\r\n let dateRequestOnRealtimeWindow: boolean =\r\n sv.filterfrom && this.dateExts.getDateConvertion(sv.filterfrom).isAfter(this.rtWindow.from) &&\r\n sv.filterto && this.dateExts.getDateConvertion(sv.filterto).isBefore(this.rtWindow.to);\r\n\r\n sv.filterrealtime = dateRequestOnRealtimeWindow;\r\n sv.searchinprogress = true;\r\n\r\n this.POSTGetItems(sv, update);\r\n }\r\n\r\n async POSTGetItems(data: TopActivitiesDataView, update: boolean) {\r\n data.filterbe = this.be;\r\n let res = await this.adms.getTopActivities(this.be, data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.searchView = res;\r\n this.localStorage.setItem(\"HotSearchTopAct\", this.searchView).subscribe();\r\n }\r\n // DirectorInfos anche se per qualche motivo crasha di brutto è comunque non obbligatorio, evito di non caricare la pagina solo perché lui scoppia\r\n let dirinfos = await this.adms.getInfos(this.be);\r\n this.searchView.searchinprogress = false;\r\n this.reviewBindings(update, res, dirinfos);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId, this.searchView.filterglobal);\r\n });\r\n }\r\n\r\n // **************************************************** Trasformazione da searchview con unico elemento con tutto ai 3 elementi:\r\n // **************************************************** Grafico, TopNodes e TopSessions\r\n TopActiveSessions: LineChartData;\r\n TopNodes: TopNode[];\r\n TopSessions: TopSession[];\r\n DirInfos: DirectorInfos;\r\n DirInfosGlobal: DirectorInfos;\r\n seriesPropertiesMapping: { [index: string]: LineSerie } = {};\r\n propertiesSeriesMapping: { [index: string]: string } = {\r\n [\"cputime\"]: \"CPU\",\r\n [\"waittime\"]: \"Wait\",\r\n [\"scripttime\"]: \"Scripting\",\r\n [\"dbtime\"]: \"DB\",\r\n [\"nettime\"]: \"Network\",\r\n [\"throttletime\"]: \"Throttling\",\r\n [\"sleeptime\"]: \"Sleep\",\r\n [\"iotime\"]: \"IO\"\r\n };\r\n\r\n reviewBindings(update: boolean, searchViewOverride?, dirInfos?: DirectorInfos) {\r\n let reference = (searchViewOverride ?? this.searchView).items[0];\r\n this.TopNodes = reference.topnodes;\r\n this.TopSessions = reference.topsessions;\r\n this.DirInfos = dirInfos?.cluster ? dirInfos : null;\r\n this.DirInfosGlobal = !dirInfos?.cluster ? dirInfos : null;\r\n\r\n if (!reference.actsessions || reference.actsessions.length == 0) {\r\n this.TopActiveSessions = null;\r\n return;\r\n }\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(reference.actsessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping[props[i]] = s;\r\n }\r\n }\r\n\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n\r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))\r\n this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n if (update && this.ChartInstance) {\r\n let data = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n if (series.some(t => t.values.length > 0)) {\r\n this.ChartInstance.addData(data);\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n else {\r\n this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n\r\n private from: Date;\r\n private to: Date;\r\n\r\n dataSelectionChanged(event: { from: Date, to: Date, initial: boolean }) {\r\n this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : \"\") : event.from;\r\n this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : \"\") : event.to;\r\n\r\n var pseudoSearchView: TopActivitiesDataView = JSON.parse(JSON.stringify(this.searchView));\r\n pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n this.sendSearch(true, true, pseudoSearchView);\r\n }\r\n\r\n onChartLoaded(chart: BaseChartComponent<any>, overwriteInstance: boolean = true) {\r\n if(overwriteInstance)\r\n this.ChartInstance = chart;\r\n\r\n let readyHandler = () => {\r\n (chart.Chart as am5xy.XYChart).xAxes.each(x => x.zoom(0, 1, 0));\r\n (chart.Chart as am5xy.XYChart).yAxes.each(y => y.zoom(0, 1, 0));\r\n\r\n chart.Chart!.root.events.off(\"frameended\", readyHandler);\r\n };\r\n\r\n chart.Chart!.root.events.onDebounced(\"frameended\", readyHandler, 500);\r\n }\r\n\r\n // **************************************************** Gestione dettaglio sessione\r\n\r\n SessionDetails: SessionStats;\r\n SelectedTopNodes: TopNode[];\r\n SelectedSessions: LineChartData;\r\n\r\n seriesPropertiesMapping2: { [index: string]: LineSerie } = {};\r\n\r\n loadSessionDetails(sessionId: number, serialNo: number, instanceid: string) {\r\n this.SessionDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.SessionDetails = await this.adms.getSessionStats(this.be, sessionId?.toString(), serialNo?.toString(), instanceid);\r\n this.threadSelectionChanged(null);\r\n });\r\n }\r\n\r\n threadSelectionChanged(selection?: ItemsSelection<SessionThread>) {\r\n this.SelectedTopNodes = null;\r\n this.SelectedSessions = null;\r\n\r\n requestAnimationFrame(() => {\r\n let sessDet = (selection?.count || 0) == 0 ? this.SessionDetails : selection.items[0];\r\n\r\n this.SelectedTopNodes = sessDet.nodes;\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(sessDet.sessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null , null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping2[props[i]] = s;\r\n }\r\n }\r\n \r\n for (let i = 0; i < sessDet.sessions.length; i++) {\r\n let itemref = sessDet.sessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n \r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime')\r\n this.seriesPropertiesMapping2[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n this.SelectedSessions = new LineChartData(series);\r\n\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Attività Principali' | localize: lc}}\r\n <span *ngIf=\"DirInfos && !DirInfosGlobal\">&nbsp;-&nbsp;\r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}&nbsp;\r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfos.lavg5 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </span>&nbsp;\r\n <span *ngIf=\"DirInfosGlobal\">&nbsp;|&nbsp;\r\n {{'' + DirInfosGlobal.cpus + ' ' + ('CPU (Global)' | localize: lc) + (DirInfosGlobal.rssplan ? ' - ' + DirInfosGlobal.rssplan : '')}}&nbsp;\r\n Load average: {{ DirInfosGlobal.lavg1 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfosGlobal.lavg5 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfosGlobal.lavg15 | number : '1.1-2' : 'it'}}\r\n <span *ngIf=\"(DirInfosGlobal?.perinstancedata?.length || 0) > 0\">\r\n &nbsp;\r\n <a class=\"app-link app-pointer app-inline\" (click)=\"dlgDirInfos.show();\">[{{'Info per Istanza' | localize: lc}}...]</a>\r\n </span>\r\n </span>&nbsp;\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Aggiorna ogni' | localize: lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" />&nbsp;{{'secondo/i' | localize: lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Prime Sessioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n <th>{{'Attività' | localize: lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td class=\"app-col-min\"><span class=\"app-link\" title=\"{{session.instanceid? (' - ' + session.instanceid) : ''}}\" (click)=\"loadSessionDetails(session.sid, session.serial, session.instanceid); dlgSessionDetails.show();\">{{session.sid}}</span></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgDirInfos=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio per Istanza' | localize: lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgDirInfos.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"(DirInfosGlobal?.perinstancedata?.length || 0) > 0\">\r\n <div class=\"row\" *ngFor=\"let info of DirInfosGlobal.perinstancedata\">\r\n <div class=\"col-md-12\"> \r\n <strong>{{info.instance}}</strong>:&nbsp;\r\n {{'' + info.cpus + ' ' + ('CPU (Global)' | localize: lc) + (info.rssplan ? ' - ' + info.rssplan : '')}}&nbsp;\r\n Load average: {{ info.lavg1 | number : '1.1-2' : 'it'}}&nbsp;{{ info.lavg5 | number : '1.1-2' : 'it'}}&nbsp;{{ info.lavg15 | number : '1.1-2' : 'it'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgDirInfos.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\">&nbsp;{{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgSessionDetails.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div *ngIf=\"SessionDetails.instanceid\" class=\"col-md-6\"><strong>{{'Istanza' | localize: lc}}</strong>:&nbsp;{{SessionDetails.instanceid}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>:&nbsp;{{SessionDetails.serial}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>:&nbsp;{{SessionDetails.status}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>:&nbsp;{{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>:&nbsp;{{SessionDetails.user}}&nbsp;<span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>Prime Istruzioni</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\"(click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{(node.activity == \"NaN\" ? null : node.activity) | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column\">\r\n <h5>Attività</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"SelectedSessions\"\r\n [Legend]=\"true\" \r\n name=\"session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event, true)\">\r\n </es-line-chart>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>Statistiche Thread</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>Stato</th>\r\n <th>Tipo</th>\r\n <th>API</th>\r\n <th>Attesa corrente</th>\r\n <th>Nodo di attesa</th>\r\n <th>Attesa su</th>\r\n <th>Classe</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>Tempo Attesa</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{(thread.waittime == \"NaN\" ? null : thread.waittime) | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgSessionDetails.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Enum della Top Activity v2: i numeri sono quelli del backend (le risposte li riportano come numeri)\r\n\r\nexport enum TopActivityDimension {\r\n WaitClass = 0,\r\n EventType = 1,\r\n WaitEvent = 2,\r\n Instance = 3,\r\n UserSession = 4,\r\n UserName = 5,\r\n Tenant = 6,\r\n SessionType = 7,\r\n BackgroundSession = 8,\r\n JobName = 9,\r\n ConsumerGroup = 10,\r\n ThreadType = 11,\r\n Api = 12,\r\n Machine = 13\r\n}\r\n\r\nexport enum TopActivityDataSource {\r\n Memory = 0,\r\n MemoryAndStored = 1\r\n}\r\n\r\nexport enum TopActivityResolution {\r\n Low = 0,\r\n Medium = 1,\r\n High = 2,\r\n Maximum = 3\r\n}\r\n\r\nexport enum TopActivityMaximumThreads {\r\n None = 0,\r\n Cores = 1,\r\n Threads = 2\r\n}\r\n","import { TopActivityDataSource, TopActivityDimension, TopActivityMaximumThreads, TopActivityResolution } from \"./TopActivityV2Enums\";\r\n\r\nexport class TopActivityV2Filter {\r\n dimension: TopActivityDimension;\r\n // key di un componente o di una riga; \"\" seleziona l'attività senza valore\r\n value: string;\r\n}\r\n\r\n// Richiesta della Top Activity v2: date in ISO UTC (…Z), campi non valorizzati = default del backend.\r\n// Il backend-for-frontend legge i nomi senza badare a maiuscole e minuscole\r\nexport class TopActivityV2Request {\r\n from?: string;\r\n to?: string;\r\n global?: boolean;\r\n instanceId?: string;\r\n dataSource?: TopActivityDataSource;\r\n dimension?: TopActivityDimension;\r\n filters?: TopActivityV2Filter[];\r\n totalActivity?: boolean;\r\n maximumThreads?: TopActivityMaximumThreads;\r\n resolution?: TopActivityResolution;\r\n maxComponents?: number;\r\n tablesFrom?: string;\r\n tablesTo?: string;\r\n tables?: TopActivityDimension[];\r\n topCount?: number;\r\n}\r\n","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivityV2Loc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Attività Principali\", [\"Top Activities\"]);\r\n super.set(\"it->en\", \"CPU\", [\"CPUs\"]);\r\n super.set(\"it->en\", \"Da\", [\"From\"]);\r\n super.set(\"it->en\", \"A\", [\"To\"]);\r\n super.set(\"it->en\", \"Cerca\", [\"Search\"]);\r\n super.set(\"it->en\", \"Istanza\", [\"Instance\"]);\r\n super.set(\"it->en\", \"Istanza corrente\", [\"Current instance\"]);\r\n super.set(\"it->en\", \"Tutte le istanze\", [\"All instances\"]);\r\n super.set(\"it->en\", \"Ultime\", [\"Last\"]);\r\n super.set(\"it->en\", \"Origine dati\", [\"Data source\"]);\r\n super.set(\"it->en\", \"Memoria\", [\"Memory\"]);\r\n super.set(\"it->en\", \"Memoria + storico\", [\"Memory + history\"]);\r\n super.set(\"it->en\", \"Aggiornamento automatico\", [\"Auto refresh\"]);\r\n super.set(\"it->en\", \"Dividi per\", [\"Split by\"]);\r\n super.set(\"it->en\", \"Risoluzione\", [\"Resolution\"]);\r\n super.set(\"it->en\", \"Bassa\", [\"Low\"]);\r\n super.set(\"it->en\", \"Media\", [\"Medium\"]);\r\n super.set(\"it->en\", \"Alta\", [\"High\"]);\r\n super.set(\"it->en\", \"Massima\", [\"Maximum\"]);\r\n super.set(\"it->en\", \"Attività totale\", [\"Total activity\"]);\r\n super.set(\"it->en\", \"Limite\", [\"Limit\"]);\r\n super.set(\"it->en\", \"Nessuno\", [\"None\"]);\r\n super.set(\"it->en\", \"CPU Massime\", [\"Maximum CPUs\"]);\r\n super.set(\"it->en\", \"Thread Massimi\", [\"Maximum Threads\"]);\r\n super.set(\"it->en\", \"Sessioni attive medie per\", [\"Average active sessions by\"]);\r\n super.set(\"it->en\", \"Picco\", [\"Peak\"]);\r\n super.set(\"it->en\", \"un punto ogni\", [\"one point every\"]);\r\n super.set(\"it->en\", \"Filtri\", [\"Filters\"]);\r\n super.set(\"it->en\", \"Rimuovi\", [\"Remove\"]);\r\n super.set(\"it->en\", \"Clic per filtrare\", [\"Click to filter\"]);\r\n super.set(\"it->en\", \"Prima di questo istante i dati vengono dallo storico (un campione ogni 10 secondi)\", [\"Before this instant data comes from history (one sample every 10 seconds)\"]);\r\n super.set(\"it->en\", \"sessioni\", [\"sessions\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Nessun dato nella finestra\", [\"No data in the window\"]);\r\n super.set(\"it->en\", \"Finestra tabelle\", [\"Tables window\"]);\r\n super.set(\"it->en\", \"Ultimi 5 minuti\", [\"Last 5 minutes\"]);\r\n super.set(\"it->en\", \"Finestra fissa\", [\"Fixed window\"]);\r\n super.set(\"it->en\", \"Prime righe per\", [\"Top rows by\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Altri\", [\"Others\"]);\r\n super.set(\"it->en\", \"(non attribuito)\", [\"(not attributed)\"]);\r\n super.set(\"it->en\", \"(nessuno)\", [\"(none)\"]);\r\n super.set(\"it->en\", \"Classe di attesa\", [\"Wait class\"]);\r\n super.set(\"it->en\", \"Tipo evento\", [\"Event type\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Sessione\", [\"Session\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Tipo sessione\", [\"Session type\"]);\r\n super.set(\"it->en\", \"Sessione di background\", [\"Background session\"]);\r\n super.set(\"it->en\", \"Job\", [\"Job\"]);\r\n super.set(\"it->en\", \"Gruppo di consumo\", [\"Consumer group\"]);\r\n super.set(\"it->en\", \"Tipo thread\", [\"Thread type\"]);\r\n super.set(\"it->en\", \"Macchina\", [\"Machine\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Processo\", [\"Process\"]);\r\n }\r\n}\r\n","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class SessionDetailLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Dettaglio Sessione\", [\"Session Detail\"]);\r\n super.set(\"it->en\", \"Istanza\", [\"Instance\"]);\r\n super.set(\"it->en\", \"Seriale\", [\"Serial\"]);\r\n super.set(\"it->en\", \"Stato\", [\"Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Prime Istruzioni\", [\"Top Nodes\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Descrizione Nodo\", [\"Node Description\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Tipo Nodo\", [\"Node Type\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class Name\"]);\r\n super.set(\"it->en\", \"Statistiche Thread\", [\"Thread Statistics\"]);\r\n super.set(\"it->en\", \"Attesa corrente\", [\"Current Wait\"]);\r\n super.set(\"it->en\", \"Nodo di attesa\", [\"Wait Node\"]);\r\n super.set(\"it->en\", \"Attesa su\", [\"Waiting On\"]);\r\n super.set(\"it->en\", \"Classe\", [\"Class\"]);\r\n super.set(\"it->en\", \"Tempo Attesa\", [\"Wait Time\"]);\r\n super.set(\"it->en\", \"Chiudi\", [\"Close\"]);\r\n }\r\n}\r\n","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, DateValue, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { ItemsSelection } from \"@esfaenza/es-table\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am5xy from \"@amcharts/amcharts5/xy\";\r\n\r\n// Applicazione\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { SessionThread } from \"../../models/components/SessionThread\";\r\nimport { TopNode } from \"../../models/components/TopNode\";\r\n\r\n// Localizzazione\r\nimport { SessionDetailLoc } from \"./session_detail.component.loc\";\r\n\r\n// Dettaglio sessione condiviso (stesso contenuto del dialog della pagina Top Activity di sempre): il dialog che lo ospita resta del chiamante,\r\n// il clic su un nodo viene rilanciato con onNodeSelected perché il dettaglio nodo è anch'esso un dialog del chiamante\r\n@Component({\r\n selector: \"session-detail\",\r\n viewProviders: [{ provide: LocalizationService, useClass: SessionDetailLoc }],\r\n templateUrl: \"./session_detail.component.html\",\r\n // Il componente sta fra il bsModal e il .modal-dialog: inline perderebbe la centratura del dialog\r\n styles: [\":host { display: block; }\"],\r\n standalone: false\r\n})\r\nexport class SessionDetailComponent {\r\n\r\n @Input() SessionDetails: SessionStats;\r\n\r\n @Output() onClose: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() onNodeSelected: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n SelectedTopNodes: TopNode[];\r\n SelectedSessions: LineChartData;\r\n\r\n private seriesPropertiesMapping: { [index: string]: LineSerie } = {};\r\n private propertiesSeriesMapping: { [index: string]: string } = {\r\n [\"cputime\"]: \"CPU\",\r\n [\"waittime\"]: \"Wait\",\r\n [\"scripttime\"]: \"Scripting\",\r\n [\"dbtime\"]: \"DB\",\r\n [\"nettime\"]: \"Network\",\r\n [\"throttletime\"]: \"Throttling\",\r\n [\"sleeptime\"]: \"Sleep\",\r\n [\"iotime\"]: \"IO\"\r\n };\r\n\r\n constructor(public lc: LocalizationService) { }\r\n\r\n ngOnInit() {\r\n this.threadSelectionChanged(null);\r\n }\r\n\r\n threadSelectionChanged(selection?: ItemsSelection<SessionThread>) {\r\n this.SelectedTopNodes = null;\r\n this.SelectedSessions = null;\r\n\r\n requestAnimationFrame(() => {\r\n let sessDet = (selection?.count || 0) == 0 ? this.SessionDetails : selection.items[0];\r\n\r\n this.SelectedTopNodes = sessDet.nodes;\r\n\r\n if (!sessDet.sessions || sessDet.sessions.length == 0)\r\n return;\r\n\r\n let series: LineSerie[] = [];\r\n let props = Object.keys(sessDet.sessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping[props[i]] = s;\r\n }\r\n }\r\n\r\n for (let i = 0; i < sessDet.sessions.length; i++) {\r\n let itemref = sessDet.sessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n\r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime')\r\n this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n this.SelectedSessions = new LineChartData(series);\r\n });\r\n }\r\n\r\n onChartLoaded(chart: BaseChartComponent<any>) {\r\n let readyHandler = () => {\r\n (chart.Chart as am5xy.XYChart).xAxes.each(x => x.zoom(0, 1, 0));\r\n (chart.Chart as am5xy.XYChart).yAxes.each(y => y.zoom(0, 1, 0));\r\n\r\n chart.Chart!.root.events.off(\"frameended\", readyHandler);\r\n };\r\n\r\n chart.Chart!.root.events.onDebounced(\"frameended\", readyHandler, 500);\r\n }\r\n\r\n closeDialog() {\r\n this.onClose.emit(true);\r\n }\r\n}\r\n","<div class=\"modal-dialog modal-xl\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\">&nbsp;{{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div *ngIf=\"SessionDetails.instanceid\" class=\"col-md-6\"><strong>{{'Istanza' | localize: lc}}</strong>:&nbsp;{{SessionDetails.instanceid}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>:&nbsp;{{SessionDetails.serial}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>:&nbsp;{{SessionDetails.status}}&nbsp;</div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>:&nbsp;{{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>:&nbsp;{{SessionDetails.user}}&nbsp;<span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"onNodeSelected.emit(node.profnodeid)\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc?.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{(node.activity == \"NaN\" ? null : node.activity) | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column;min-width: 0\">\r\n <h5>{{'Attività' | localize: lc}}</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"SelectedSessions\"\r\n [Legend]=\"true\"\r\n name=\"shared_session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event)\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>{{'Statistiche Thread' | localize: lc}}</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>{{'Stato' | localize: lc}}</th>\r\n <th>{{'Tipo' | localize: lc}}</th>\r\n <th>API</th>\r\n <th>{{'Attesa corrente' | localize: lc}}</th>\r\n <th>{{'Nodo di attesa' | localize: lc}}</th>\r\n <th>{{'Attesa su' | localize: lc}}</th>\r\n <th>{{'Classe' | localize: lc}}</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>{{'Tempo Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{(thread.waittime == \"NaN\" ? null : thread.waittime) | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n</div>\r\n","// Angular\r\nimport { Component, NgZone, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am5 from \"@amcharts/amcharts5\";\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\nimport { firstValueFrom } from \"rxjs\";\r\n\r\n// Modelli\r\nimport { DirectorInfos } from \"../../models/components/DirectorInfos\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { TopActivityDataSource, TopActivityDimension, TopActivityMaximumThreads, TopActivityResolution } from \"../../models/components/TopActivityV2Enums\";\r\nimport { TopActivityV2Filter, TopActivityV2Request } from \"../../models/components/TopActivityV2Request\";\r\nimport { TopActivityV2Breakdown, TopActivityV2Response, TopActivityV2Session, TopActivityV2Table, TopActivityV2TableItem } from \"../../models/components/TopActivityV2Response\";\r\n\r\n// Applicazione\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\n// Localizzazione\r\nimport { AdmTopActivityV2Loc } from \"./topact_v2.component.loc\";\r\n\r\ndeclare var dayjs;\r\n\r\nconst STORAGE_KEY = \"HotSearchTopActV2\";\r\nconst TABLES_WINDOW_MS = 5 * 60 * 1000;\r\nconst INSTANCE_CURRENT = \"@current\";\r\nconst INSTANCE_ALL = \"@all\";\r\n\r\n// WaitClass ed EventType hanno valori fissi: colori fissi, così il grafico si legge sempre allo stesso modo\r\nconst FIXED_COLORS: { [key: string]: string } = {\r\n Cpu: \"#43a047\", Database: \"#1e88e5\", Script: \"#8e24aa\", Network: \"#8d6e63\", IO: \"#00acc1\", Sleep: \"#b0bec5\", Throttle: \"#fb8c00\", Wait: \"#fdd835\",\r\n Latch: \"#e53935\", Semaphore: \"#f06292\", Enqueue: \"#c62828\", ReadWriteLock: \"#ad1457\", Fence: \"#6d4c41\", ConditionVariable: \"#00897b\", Scheduler: \"#5e35b1\"\r\n};\r\nconst PALETTE = [\"#1e88e5\", \"#43a047\", \"#fb8c00\", \"#8e24aa\", \"#e53935\", \"#00897b\", \"#fdd835\", \"#6d4c41\", \"#3949ab\", \"#c0ca33\"];\r\nconst OTHER_COLOR = \"#9e9e9e\";\r\nconst TOTAL_COLOR = \"#263238\";\r\nconst LIMIT_COLOR = \"#e53935\";\r\n\r\nexport class TopActivityV2LegendItem {\r\n key: string;\r\n label: string;\r\n color: string;\r\n other: boolean;\r\n activity: number;\r\n percentage: number;\r\n}\r\n\r\nexport class TopActivityV2FilterChip {\r\n filter: TopActivityV2Filter;\r\n label: string;\r\n}\r\n\r\n// Impostazioni ricordate fra una visita e l'altra (la finestra temporale riparte sempre dall'ultima ora)\r\nclass TopActivityV2Settings {\r\n instance: string;\r\n dataSource: string;\r\n dimension: string;\r\n resolution: string;\r\n totalActivity: boolean;\r\n maxCpu: boolean;\r\n maxThreadsKind: string;\r\n tableDims: string[];\r\n filters: TopActivityV2FilterChip[];\r\n}\r\n\r\n@Component({\r\n selector: \"topact_v2\",\r\n providers: [{ provide: LocalizationService, useClass: AdmTopActivityV2Loc }],\r\n templateUrl: \"./topact_v2.component.html\",\r\n styleUrls: [\"./topact_v2.component.scss\"],\r\n standalone: false\r\n})\r\nexport class AdmTopActivityV2Component {\r\n @ViewChild(\"dlgNodeDetails\") dlgNodeDetails: ModalDirective;\r\n @ViewChild(\"dlgSessionDetails\") dlgSessionDetails: ModalDirective;\r\n\r\n public readonly Dim = TopActivityDimension;\r\n public readonly TotalColor = TOTAL_COLOR;\r\n public readonly LimitColor = LIMIT_COLOR;\r\n\r\n // Filtri\r\n public filterfrom: string = \"\";\r\n public filterto: string = \"\";\r\n public instance: string = INSTANCE_CURRENT;\r\n public dataSource: string = String(TopActivityDataSource.MemoryAndStored);\r\n public dimension: string = String(TopActivityDimension.WaitClass);\r\n public resolution: string = String(TopActivityResolution.Medium);\r\n public totalActivity: boolean = false;\r\n public maxCpu: boolean = true;\r\n public maxThreadsKind: string = String(TopActivityMaximumThreads.Threads);\r\n public tableDims: string[] = [String(TopActivityDimension.UserSession), String(TopActivityDimension.WaitEvent)];\r\n public filters: TopActivityV2FilterChip[] = [];\r\n public refreshSeconds: string = \"0\";\r\n // Ore dell'intervallo rapido scelto (null se le date sono state scritte a mano)\r\n public activeRange: number = 1;\r\n\r\n // Sorgenti di select e pulsanti\r\n public Instances: KeyValue[] = [];\r\n public DataSources: KeyValue[] = [];\r\n public Dimensions: KeyValue[] = [];\r\n public Resolutions: KeyValue[] = [];\r\n public LimitOptions: KeyValue[] = [];\r\n public RefreshOptions: KeyValue[] = [];\r\n public readonly QuickRanges: number[] = [1, 6, 24];\r\n\r\n // Risultato\r\n public loading: boolean = false;\r\n public result: TopActivityV2Response;\r\n public chartData: LineChartData;\r\n public chartMax: number;\r\n public legend: TopActivityV2LegendItem[] = [];\r\n public tables: TopActivityV2Table[] = [];\r\n public memoryFrom: string;\r\n public limitLabel: string;\r\n\r\n // Time slider: fine della finestra di 5 minuti delle tabelle, in millisecondi\r\n public sliderMin: number = 0;\r\n public sliderMax: number = 0;\r\n public sliderStep: number = 1000;\r\n public sliderValue: number = 0;\r\n public sliderAnchored: boolean = true;\r\n public tablesWindowLabel: string = \"\";\r\n\r\n // Dettagli\r\n public DirInfos: DirectorInfos;\r\n public NodeDetails: NodeStats;\r\n public SessionDetails: SessionStats;\r\n\r\n private be: string;\r\n private chartFrom: number = 0;\r\n private chartTo: number = 0;\r\n private colors: { [key: string]: string } = {};\r\n private lastChartKey: string;\r\n private chart: BaseChartComponent<any>;\r\n private windowAxis: any;\r\n private windowRange: any;\r\n private refreshTimer: any;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n private zone: NgZone) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.buildSources();\r\n\r\n let saved = this.route.snapshot.queryParams[\"ignoreStorage\"] ? null : await firstValueFrom(this.localStorage.getItem<TopActivityV2Settings>(STORAGE_KEY), { defaultValue: null });\r\n if (saved)\r\n this.applySettings(saved);\r\n\r\n this.setLastHours(this.activeRange);\r\n this.loadInstances();\r\n this.refreshInfos();\r\n this.search();\r\n }\r\n\r\n ngOnDestroy() {\r\n clearInterval(this.refreshTimer);\r\n }\r\n\r\n // #region Ricerca\r\n\r\n searchClicked() {\r\n this.refreshInfos();\r\n this.search();\r\n }\r\n\r\n quickRange(hours: number) {\r\n this.activeRange = hours;\r\n this.setLastHours(hours);\r\n this.search();\r\n }\r\n\r\n datesEdited() {\r\n this.activeRange = null;\r\n }\r\n\r\n setDataSource(id: string) {\r\n this.dataSource = id;\r\n this.search();\r\n }\r\n\r\n setResolution(id: string) {\r\n this.resolution = id;\r\n this.search();\r\n }\r\n\r\n // Limite: \"0\" nessuno, altrimenti il tipo (thread o CPU)\r\n get limitValue(): string {\r\n return this.maxCpu ? this.maxThreadsKind : String(TopActivityMaximumThreads.None);\r\n }\r\n\r\n setLimit(id: string) {\r\n this.maxCpu = +id != TopActivityMaximumThreads.None;\r\n if (this.maxCpu)\r\n this.maxThreadsKind = id;\r\n this.search();\r\n }\r\n\r\n setRefresh(id: string) {\r\n this.refreshSeconds = id;\r\n this.refreshChanged();\r\n }\r\n\r\n async search() {\r\n let req = this.buildRequest();\r\n this.loading = true;\r\n try {\r\n let res = await this.adms.getTopActivitiesV2(this.be, req);\r\n this.applyResult(req, res);\r\n this.saveSettings();\r\n }\r\n catch {\r\n // L'errore (finestra non valida, backend non raggiungibile...) lo mostra già HTTPService\r\n }\r\n finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n private buildRequest(): TopActivityV2Request {\r\n let to = this.toDate(this.filterto) ?? new Date();\r\n let from = this.toDate(this.filterfrom) ?? new Date(to.getTime() - 3600 * 1000);\r\n\r\n let req = new TopActivityV2Request();\r\n req.from = from.toISOString();\r\n req.to = to.toISOString();\r\n req.global = this.instance != INSTANCE_CURRENT;\r\n if (this.instance != INSTANCE_CURRENT && this.instance != INSTANCE_ALL)\r\n req.instanceId = this.instance;\r\n req.dataSource = +this.dataSource;\r\n req.dimension = +this.dimension;\r\n if (this.filters.length > 0)\r\n req.filters = this.filters.map(t => t.filter);\r\n req.totalActivity = this.totalActivity;\r\n req.maximumThreads = this.maxCpu ? +this.maxThreadsKind : TopActivityMaximumThreads.None;\r\n req.resolution = +this.resolution;\r\n req.tables = this.tableDims.map(t => +t);\r\n req.topCount = 10;\r\n\r\n // Lo slider agganciato a destra segue la fine del grafico; spostato resta fermo finché cade dentro la finestra\r\n let outside = this.sliderValue <= from.getTime() || this.sliderValue > to.getTime();\r\n if (this.sliderAnchored || outside) {\r\n this.sliderAnchored = true;\r\n this.sliderValue = to.getTime();\r\n }\r\n req.tablesTo = new Date(this.sliderValue).toISOString();\r\n req.tablesFrom = new Date(Math.max(from.getTime(), this.sliderValue - TABLES_WINDOW_MS)).toISOString();\r\n return req;\r\n }\r\n\r\n private applyResult(req: TopActivityV2Request, res: TopActivityV2Response) {\r\n this.result = res;\r\n this.tables = res?.tables ?? [];\r\n this.chartFrom = new Date(req.from).getTime();\r\n this.chartTo = new Date(req.to).getTime();\r\n\r\n this.sliderStep = Math.max(1, res?.bucketSeconds || 1) * 1000;\r\n this.sliderMin = Math.min(this.chartTo, this.chartFrom + TABLES_WINDOW_MS);\r\n this.sliderMax = this.chartTo;\r\n this.sliderValue = new Date(req.tablesTo).getTime();\r\n this.updateTablesWindowLabel();\r\n\r\n if (!res) {\r\n this.chartData = null;\r\n this.legend = [];\r\n this.lastChartKey = null;\r\n return;\r\n }\r\n\r\n let memoryFrom = res.memoryFrom ? this.parseUtc(res.memoryFrom) : null;\r\n this.memoryFrom = memoryFrom && memoryFrom.getTime() > this.chartFrom ? this.fmt(memoryFrom) : null;\r\n this.limitLabel = this.lc.loc(+this.maxThreadsKind == TopActivityMaximumThreads.Cores ? \"CPU Massime\" : \"Thread Massimi\");\r\n\r\n // Se è cambiata solo la finestra delle tabelle il grafico resta quello di prima: ridisegnarlo lo farebbe lampeggiare\r\n let chartKey = JSON.stringify({ ...req, tablesFrom: null, tablesTo: null, tables: null, topCount: null });\r\n if (chartKey == this.lastChartKey && this.chartData) {\r\n this.drawTablesWindow();\r\n return;\r\n }\r\n this.lastChartKey = chartKey;\r\n\r\n let times = (res.times ?? []).map(t => this.parseUtc(t));\r\n let fixed = res.dimension == TopActivityDimension.WaitClass || res.dimension == TopActivityDimension.EventType;\r\n let uom = this.lc.loc(\"sessioni\");\r\n let series: LineSerie[] = [];\r\n\r\n this.colors = {};\r\n this.legend = (res.components ?? []).map((c, i) => {\r\n let color = c.other ? OTHER_COLOR : (fixed && FIXED_COLORS[c.key]) || PALETTE[i % PALETTE.length];\r\n if (c.key != null)\r\n this.colors[c.key] = color;\r\n let label = this.valueLabel(c.label, c.other, res.dimension);\r\n series.push(new LineSerie(label, times.map((t, j) => new DateValue(t, c.values?.[j] ?? 0)), null, color, uom));\r\n return { key: c.key, label: label, color: color, other: c.other, activity: c.activity, percentage: c.percentage };\r\n });\r\n\r\n // L'attività totale è una linea scura sopra le aree impilate, non impilata a sua volta\r\n if (res.totalActivity)\r\n series.push(new LineSerie(this.lc.loc(\"Attività totale\"), times.map((t, j) => new DateValue(t, res.totalActivity[j] ?? 0)), null, TOTAL_COLOR, uom, false, false));\r\n\r\n let limit: Limit = null;\r\n if (res.maximumThreads != null)\r\n limit = new Limit(res.maximumThreads, this.limitLabel, LIMIT_COLOR);\r\n\r\n // L'asse Y non si allarga da solo per le linee limite: lo allargo solo se l'attività arriva ad almeno un quarto del limite,\r\n // altrimenti con il sistema scarico il grafico diventerebbe una riga piatta sul fondo (il valore del limite resta in legenda)\r\n let peak = Math.max(res.peakActiveSessions ?? 0, ...(res.totalActivity ?? [0]));\r\n this.chartMax = limit && peak >= res.maximumThreads / 4 ? Math.max(peak, res.maximumThreads) * 1.1 : undefined;\r\n this.chartData = series.length > 0 ? new LineChartData(series, limit) : null;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Grafico, legenda e filtri\r\n\r\n onChartLoaded(chart: BaseChartComponent<any>) {\r\n // Il grafico viene ricreato a ogni cambio di dati: l'area della finestra delle tabelle va rifatta\r\n this.chart = chart;\r\n this.windowAxis = null;\r\n this.drawTablesWindow();\r\n }\r\n\r\n private drawTablesWindow() {\r\n let dateAxis = (this.chart?.ChartService as any)?.dateAxis;\r\n if (!dateAxis || !this.sliderMax)\r\n return;\r\n\r\n let end = this.sliderValue;\r\n let start = Math.max(this.chartFrom, end - TABLES_WINDOW_MS);\r\n\r\n this.zone.runOutsideAngular(() => {\r\n if (this.windowAxis !== dateAxis) {\r\n this.windowAxis = dateAxis;\r\n this.windowRange = dateAxis.makeDataItem({ value: start, endValue: end });\r\n dateAxis.createAxisRange(this.windowRange);\r\n this.windowRange.get(\"axisFill\")?.setAll({ fill: am5.color(0x6366f1), fillOpacity: 0.12, visible: true });\r\n this.windowRange.get(\"grid\")?.set(\"forceHidden\", true);\r\n this.windowRange.get(\"label\")?.set(\"forceHidden\", true);\r\n }\r\n else\r\n this.windowRange.setAll({ value: start, endValue: end });\r\n });\r\n }\r\n\r\n addFilter(item: TopActivityV2LegendItem) {\r\n // Il componente \"altri\" non è filtrabile, come in Oracle\r\n if (item.other || !this.result)\r\n return;\r\n\r\n let filter = new TopActivityV2Filter();\r\n filter.dimension = this.result.dimension;\r\n filter.value = item.key ?? \"\";\r\n if (this.filters.some(t => t.filter.dimension == filter.dimension && t.filter.value == filter.value))\r\n return;\r\n\r\n this.filters.push({ filter: filter, label: `${this.dimensionLabel(filter.dimension)} = ${item.label}` });\r\n this.totalActivity = true;\r\n this.search();\r\n }\r\n\r\n removeFilter(index: number) {\r\n this.filters.splice(index, 1);\r\n this.search();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Time slider e tabelle\r\n\r\n sliderMoving() {\r\n this.updateTablesWindowLabel();\r\n this.drawTablesWindow();\r\n }\r\n\r\n sliderChanged() {\r\n // Il range input arrotonda al passo: \"agganciato\" se è a meno di un passo dalla fine\r\n this.sliderAnchored = this.sliderMax - this.sliderValue < this.sliderStep;\r\n this.search();\r\n }\r\n\r\n private updateTablesWindowLabel() {\r\n if (!this.sliderMax) {\r\n this.tablesWindowLabel = \"\";\r\n return;\r\n }\r\n let start = Math.max(this.chartFrom, this.sliderValue - TABLES_WINDOW_MS);\r\n this.tablesWindowLabel = `${this.fmt(new Date(start))} - ${this.fmt(new Date(this.sliderValue))}`;\r\n }\r\n\r\n isClickable(item: TopActivityV2TableItem): boolean {\r\n return !item.other && (!!item.session || !!item.event?.eventId);\r\n }\r\n\r\n openItem(item: TopActivityV2TableItem) {\r\n if (!this.isClickable(item))\r\n return;\r\n if (item.session)\r\n this.loadSessionDetails(item.session);\r\n else\r\n this.loadNodeDetails(item.event.eventId);\r\n }\r\n\r\n breakdownWidth(item: TopActivityV2TableItem, part: TopActivityV2Breakdown): number {\r\n return item.activity ? part.activity / item.activity * 100 : 0;\r\n }\r\n\r\n breakdownColor(part: TopActivityV2Breakdown): string {\r\n return part.other || part.key == null ? OTHER_COLOR : this.colors[part.key] ?? OTHER_COLOR;\r\n }\r\n\r\n itemLabel(item: TopActivityV2TableItem, table: TopActivityV2Table): string {\r\n return this.valueLabel(item.label, item.other, table.dimension);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n this.dlgNodeDetails.show();\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId, this.instance != INSTANCE_CURRENT);\r\n });\r\n }\r\n\r\n loadSessionDetails(session: TopActivityV2Session) {\r\n this.SessionDetails = null;\r\n this.dlgSessionDetails.show();\r\n requestAnimationFrame(async () => {\r\n this.SessionDetails = await this.adms.getSessionStats(this.be, session.sessionId?.toString(), session.serialNo?.toString(), session.instanceId);\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Aggiornamento automatico\r\n\r\n refreshChanged() {\r\n clearInterval(this.refreshTimer);\r\n this.refreshTimer = null;\r\n\r\n let seconds = +this.refreshSeconds;\r\n if (seconds > 0)\r\n this.refreshTimer = setInterval(() => this.shiftWindow(), seconds * 1000);\r\n }\r\n\r\n // Sposta in avanti la finestra della stessa durata: lo slider agganciato la segue, quello spostato resta dov'è\r\n private shiftWindow() {\r\n if (this.loading)\r\n return;\r\n\r\n let to = this.toDate(this.filterto) ?? new Date();\r\n let from = this.toDate(this.filterfrom) ?? new Date(to.getTime() - 3600 * 1000);\r\n let now = new Date();\r\n this.filterfrom = this.fmt(new Date(now.getTime() - (to.getTime() - from.getTime())));\r\n this.filterto = this.fmt(now);\r\n this.search();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Supporto\r\n\r\n private buildSources() {\r\n this.DataSources = [\r\n new KeyValue(String(TopActivityDataSource.Memory), this.lc.loc(\"Memoria\")),\r\n new KeyValue(String(TopActivityDataSource.MemoryAndStored), this.lc.loc(\"Memoria + storico\"))\r\n ];\r\n this.Dimensions = Object.keys(TopActivityDimension).filter(t => !isNaN(+t)).map(t => new KeyValue(t, this.dimensionLabel(+t)));\r\n this.Resolutions = [\r\n new KeyValue(String(TopActivityResolution.Low), this.lc.loc(\"Bassa\")),\r\n new KeyValue(String(TopActivityResolution.Medium), this.lc.loc(\"Media\")),\r\n new KeyValue(String(TopActivityResolution.High), this.lc.loc(\"Alta\")),\r\n new KeyValue(String(TopActivityResolution.Maximum), this.lc.loc(\"Massima\"))\r\n ];\r\n this.LimitOptions = [\r\n new KeyValue(String(TopActivityMaximumThreads.None), this.lc.loc(\"Nessuno\")),\r\n new KeyValue(String(TopActivityMaximumThreads.Threads), \"Thread\"),\r\n new KeyValue(String(TopActivityMaximumThreads.Cores), \"CPU\")\r\n ];\r\n this.RefreshOptions = [\r\n new KeyValue(\"0\", \"Off\"),\r\n new KeyValue(\"15\", \"15 s\"),\r\n new KeyValue(\"30\", \"30 s\"),\r\n new KeyValue(\"60\", \"60 s\")\r\n ];\r\n this.Instances = [\r\n new KeyValue(INSTANCE_CURRENT, this.lc.loc(\"Istanza corrente\")),\r\n new KeyValue(INSTANCE_ALL, this.lc.loc(\"Tutte le istanze\"))\r\n ];\r\n }\r\n\r\n private async loadInstances() {\r\n try {\r\n let instances = await this.adms.getInstances(this.be);\r\n this.Instances = [...this.Instances.slice(0, 2), ...(instances ?? []).map(t => new KeyValue(t.id, t.description))];\r\n }\r\n catch {\r\n // Senza elenco istanze restano \"corrente\" e \"tutte\"\r\n }\r\n }\r\n\r\n private async refreshInfos() {\r\n // DirectorInfos è facoltativo: se scoppia la pagina va avanti lo stesso\r\n this.DirInfos = await this.adms.getInfos(this.be);\r\n }\r\n\r\n dimensionLabel(dimension: TopActivityDimension): string {\r\n switch (dimension) {\r\n case TopActivityDimension.WaitClass: return this.lc.loc(\"Classe di attesa\");\r\n case TopActivityDimension.EventType: return this.lc.loc(\"Tipo evento\");\r\n case TopActivityDimension.WaitEvent: return this.lc.loc(\"Nodo\");\r\n case TopActivityDimension.Instance: return this.lc.loc(\"Istanza\");\r\n case TopActivityDimension.UserSession: return this.lc.loc(\"Sessione\");\r\n case TopActivityDimension.UserName: return this.lc.loc(\"Utente\");\r\n case TopActivityDimension.Tenant: return this.lc.loc(\"Tenant\");\r\n case TopActivityDimension.SessionType: return this.lc.loc(\"Tipo sessione\");\r\n case TopActivityDimension.BackgroundSession: return this.lc.loc(\"Sessione di background\");\r\n case TopActivityDimension.JobName: return this.lc.loc(\"Job\");\r\n case TopActivityDimension.ConsumerGroup: return this.lc.loc(\"Gruppo di consumo\");\r\n case TopActivityDimension.ThreadType: return this.lc.loc(\"Tipo thread\");\r\n case TopActivityDimension.Api: return \"API\";\r\n case TopActivityDimension.Machine: return this.lc.loc(\"Macchina\");\r\n }\r\n return String(dimension);\r\n }\r\n\r\n private valueLabel(label: string, other: boolean, dimension: TopActivityDimension): string {\r\n if (other)\r\n return this.lc.loc(\"Altri\");\r\n if (label == null || label === \"\")\r\n return this.lc.loc(dimension == TopActivityDimension.WaitEvent ? \"(non attribuito)\" : \"(nessuno)\");\r\n return label;\r\n }\r\n\r\n private applySettings(saved: TopActivityV2Settings) {\r\n this.instance = saved.instance ?? this.instance;\r\n this.dataSource = saved.dataSource ?? this.dataSource;\r\n this.dimension = saved.dimension ?? this.dimension;\r\n this.resolution = saved.resolution ?? this.resolution;\r\n this.totalActivity = saved.totalActivity ?? this.totalActivity;\r\n this.maxCpu = saved.maxCpu ?? this.maxCpu;\r\n this.maxThreadsKind = saved.maxThreadsKind ?? this.maxThreadsKind;\r\n this.tableDims = saved.tableDims?.length == 2 ? saved.tableDims : this.tableDims;\r\n // Filtri salvati con i nomi delle prime versioni (PascalCase) non sono più validi\r\n this.filters = (saved.filters ?? []).filter(t => t?.filter?.dimension != null);\r\n }\r\n\r\n private saveSettings() {\r\n let settings: TopActivityV2Settings = {\r\n instance: this.instance,\r\n dataSource: this.dataSource,\r\n dimension: this.dimension,\r\n resolution: this.resolution,\r\n totalActivity: this.totalActivity,\r\n maxCpu: this.maxCpu,\r\n maxThreadsKind: this.maxThreadsKind,\r\n tableDims: this.tableDims,\r\n filters: this.filters\r\n };\r\n this.localStorage.setItem(STORAGE_KEY, settings).subscribe();\r\n }\r\n\r\n private setLastHours(hours: number) {\r\n let now = new Date();\r\n this.filterfrom = this.fmt(new Date(now.getTime() - hours * 3600 * 1000));\r\n this.filterto = this.fmt(now);\r\n }\r\n\r\n private toDate(value: string): Date {\r\n return value ? this.dateExts.getDateConvertion(value).toDate() : null;\r\n }\r\n\r\n private fmt(date: Date): string {\r\n return dayjs(date).format(this.lc.token(\"getFullDateDisplayFormat\"));\r\n }\r\n\r\n // Le date della risposta sono UTC \"dd/MM/yyyy HH:mm:ss\" senza fuso\r\n private parseUtc(value: string): Date {\r\n let m = /^(\\d{2})\\/(\\d{2})\\/(\\d{4}) (\\d{2}):(\\d{2}):(\\d{2})$/.exec(value ?? \"\");\r\n return m ? new Date(Date.UTC(+m[3], +m[2] - 1, +m[1], +m[4], +m[5], +m[6])) : new Date(value);\r\n }\r\n\r\n // #endregion\r\n}\r\n","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Attività Principali' | localize: lc}}\r\n @if (DirInfos) {\r\n <span>&nbsp;-&nbsp;\r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}&nbsp;\r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfos.lavg5 | number : '1.1-2' : 'it'}}&nbsp;{{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </span>\r\n }\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <!-- Barra in alto: quali dati caricare (finestra, istanza, origine). Come disegnarli sta nell'intestazione del grafico -->\r\n <form role=\"form\">\r\n <div class=\"tav2-toolbar\">\r\n <div class=\"tav2-field\">\r\n <form-datetime [readonly]=\"refreshSeconds != '0'\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\" (inputChange)=\"datesEdited()\"></form-datetime>\r\n </div>\r\n <div class=\"tav2-field\">\r\n <form-datetime [readonly]=\"refreshSeconds != '0'\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\" (inputChange)=\"datesEdited()\"></form-datetime>\r\n </div>\r\n <div class=\"tav2-group\">\r\n <span class=\"tav2-group-label\">{{'Ultime' | localize: lc}}</span>\r\n <div class=\"tav2-seg\">\r\n @for (h of QuickRanges; track h) {\r\n <button type=\"button\" [class.tav2-on]=\"activeRange == h\" (click)=\"quickRange(h)\">{{h}} h</button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <span class=\"tav2-divider\"></span>\r\n\r\n <div class=\"tav2-field tav2-field-wide tav2-noclear\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"instance\" name=\"instance\" [Source]=\"Instances\" [Placeholder]=\"'Istanza' | localize: lc\" (inputChange)=\"search()\"></form-select>\r\n </div>\r\n <div class=\"tav2-group\">\r\n <span class=\"tav2-group-label\">{{'Origine dati' | localize: lc}}</span>\r\n <div class=\"tav2-seg\">\r\n @for (o of DataSources; track o.id) {\r\n <button type=\"button\" [class.tav2-on]=\"dataSource == o.id\" (click)=\"setDataSource(o.id)\">{{o.description}}</button>\r\n }\r\n </div>\r\n </div>\r\n <button [disabled]=\"loading || refreshSeconds != '0'\" class=\"btn app-btn-search\" (click)=\"searchClicked()\" type=\"submit\" [title]=\"'Cerca' | localize: lc\">\r\n <i class=\"fa\" [class.fa-search]=\"!loading\" [class.fa-spinner]=\"loading\" [class.fa-spin]=\"loading\"></i>\r\n </button>\r\n\r\n <div class=\"tav2-spacer\"></div>\r\n\r\n <div class=\"tav2-group\">\r\n <span class=\"tav2-group-label\"><i class=\"fa fa-refresh\"></i> {{'Aggiornamento automatico' | localize: lc}}</span>\r\n <div class=\"tav2-seg\">\r\n @for (o of RefreshOptions; track o.id) {\r\n <button type=\"button\" [class.tav2-on]=\"refreshSeconds == o.id\" (click)=\"setRefresh(o.id)\">{{o.description}}</button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <!-- Grafico -->\r\n <div class=\"tav2-panel\">\r\n <div class=\"tav2-panel-header tav2-chart-header\">\r\n <div class=\"tav2-heading\">\r\n <span class=\"tav2-title\">{{'Sessioni attive medie per' | localize: lc}} {{dimensionLabel(result?.dimension ?? +dimension) | lowercase}}</span>\r\n @if (result) {\r\n <span class=\"tav2-muted\">\r\n {{'Media' | localize: lc}} <strong>{{result.averageActiveSessions | number : '1.2-3' : 'it'}}</strong>\r\n &middot; {{'Picco' | localize: lc}} <strong>{{result.peakActiveSessions | number : '1.2-3' : 'it'}}</strong>\r\n &middot; {{'un punto ogni' | localize: lc}} {{result.bucketSeconds}} s\r\n @if (loading) {\r\n &nbsp;<i class=\"fa fa-spinner fa-spin\"></i>\r\n }\r\n </span>\r\n }\r\n </div>\r\n\r\n <!-- Come disegnare i dati -->\r\n <div class=\"tav2-view-controls\">\r\n <div class=\"tav2-field tav2-field-wide tav2-noclear\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"dimension\" name=\"dimension\" [Source]=\"Dimensions\" [Placeholder]=\"'Dividi per' | localize: lc\" (inputChange)=\"search()\"></form-select>\r\n </div>\r\n <div class=\"tav2-group\">\r\n <span class=\"tav2-group-label\">{{'Risoluzione' | localize: lc}}</span>\r\n <div class=\"tav2-seg\">\r\n @for (o of Resolutions; track o.id) {\r\n <button type=\"button\" [class.tav2-on]=\"resolution == o.id\" (click)=\"setResolution(o.id)\">{{o.description}}</button>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"tav2-group\">\r\n <span class=\"tav2-group-label\">{{'Limite' | localize: lc}}</span>\r\n <div class=\"tav2-seg\">\r\n @for (o of LimitOptions; track o.id) {\r\n <button type=\"button\" [class.tav2-on]=\"limitValue == o.id\" (click)=\"setLimit(o.id)\">{{o.description}}</button>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"tav2-toggle\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"totalActivity\" (inputChange)=\"search()\"></form-checkbox>\r\n <span class=\"tav2-pointer\" (click)=\"totalActivity = !totalActivity; search()\">{{'Attività totale' | localize: lc}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n @if (filters.length > 0) {\r\n <div class=\"tav2-chips\">\r\n <span class=\"tav2-muted\">{{'Filtri' | localize: lc}}</span>\r\n @for (chip of filters; track $index) {\r\n <span class=\"tav2-chip\">\r\n {{chip.label}}\r\n <button type=\"button\" [title]=\"'Rimuovi' | localize: lc\" (click)=\"removeFilter($index)\">&times;</button>\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"tav2-chart\">\r\n @if (chartData) {\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [Step]=\"true\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"chartData\"\r\n [Max]=\"chartMax\"\r\n [Legend]=\"false\"\r\n name=\"topactv2\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n } @else {\r\n <div class=\"tav2-empty\">{{(loading ? 'Carico i Dati' : 'Nessun dato nella finestra') | localize: lc}}</div>\r\n }\r\n </div>\r\n\r\n <!-- Legenda: un clic su una voce la aggiunge ai filtri (\"altri\" non è filtrabile) -->\r\n @if (legend.length > 0) {\r\n <div class=\"tav2-legend\">\r\n @for (item of legend; track $index) {\r\n <span class=\"tav2-legend-item\" [class.tav2-clickable]=\"!item.other\" [title]=\"item.other ? '' : ('Clic per filtrare' | localize: lc)\" (click)=\"addFilter(item)\">\r\n <span class=\"tav2-swatch\" [style.background]=\"item.color\"></span>\r\n {{item.label}}\r\n <span class=\"tav2-muted\">{{item.percentage | number : '1.0-1' : 'it'}}%</span>\r\n </span>\r\n }\r\n @if (result?.totalActivity) {\r\n <span class=\"tav2-legend-item\">\r\n <span class=\"tav2-line\" [style.border-color]=\"TotalColor\"></span>\r\n {{'Attività totale' | localize: lc}}\r\n </span>\r\n }\r\n @if (result?.maximumThreads != null) {\r\n <span class=\"tav2-legend-item\">\r\n <span class=\"tav2-line\" [style.border-color]=\"LimitColor\"></span>\r\n {{limitLabel}} <strong>{{result.maximumThreads}}</strong>\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n @if (memoryFrom) {\r\n <div class=\"tav2-note\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n {{'Prima di questo istante i dati vengono dallo storico (un campione ogni 10 secondi)' | localize: lc}}: {{memoryFrom}}\r\n </div>\r\n }\r\n\r\n <!-- Time slider: finestra di 5 minuti per le tabelle -->\r\n @if (sliderMax > sliderMin) {\r\n <div class=\"tav2-slider\">\r\n <span class=\"tav2-slider-label\">\r\n <span class=\"tav2-muted\">{{'Finestra tabelle' | localize: lc}}</span>\r\n <strong>{{tablesWindowLabel}}</strong>\r\n </span>\r\n <input type=\"range\" [min]=\"sliderMin\" [max]=\"sliderMax\" [step]=\"sliderStep\" [ngModel]=\"sliderValue\" (ngModelChange)=\"sliderValue = $event; sliderMoving()\" (change)=\"sliderChanged()\" />\r\n <span class=\"tav2-badge\" [class.tav2-badge-off]=\"!sliderAnchored\">{{(sliderAnchored ? 'Ultimi 5 minuti' : 'Finestra fissa') | localize: lc}}</span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Tabelle -->\r\n <div class=\"tav2-tables\">\r\n @for (table of tables; track $index; let i = $index) {\r\n <div class=\"tav2-panel\">\r\n <div class=\"tav2-panel-header\">\r\n <span class=\"tav2-title\">{{'Prime righe per' | localize: lc}}</span>\r\n <div class=\"tav2-field tav2-field-wide tav2-noclear\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"tableDims[i]\" name=\"tabledim{{i}}\" [Source]=\"Dimensions\" (inputChange)=\"search()\"></form-select>\r\n </div>\r\n <span class=\"tav2-muted\">{{'Attività' | localize: lc}} <strong>{{table.activity | number : '1.2-3' : 'it'}}</strong></span>\r\n </div>\r\n <es-table [(ngModel)]=\"table.items\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th>{{dimensionLabel(table.dimension)}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min tav2-right\">%</th>\r\n @if (table.dimension == Dim.UserSession) {\r\n <th>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tipo' | localize: lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n }\r\n @if (table.dimension == Dim.WaitEvent) {\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo' | localize: lc}}</th>\r\n }\r\n </ng-template>\r\n <ng-template #body let-item>\r\n <td>\r\n @if (isClickable(item)) {\r\n <span class=\"app-link tav2-ellipsis\" [title]=\"item.label || item.key\" (click)=\"openItem(item)\">{{itemLabel(item, table)}}</span>\r\n } @else {\r\n <span class=\"tav2-ellipsis\" [class.tav2-muted]=\"item.other || !item.label\">{{itemLabel(item, table)}}</span>\r\n }\r\n </td>\r\n <td class=\"app-nowrap\">\r\n <div class=\"tav2-bar-cell\">\r\n <div class=\"tav2-bar\">\r\n @for (part of item.breakdown; track $index) {\r\n <div [style.width.%]=\"breakdownWidth(item, part)\" [style.background]=\"breakdownColor(part)\" [title]=\"part.key\"></div>\r\n }\r\n </div>\r\n <span>{{item.activity | number : '1.2-3' : 'it'}}</span>\r\n </div>\r\n </td>\r\n <td class=\"app-nowrap tav2-right\">{{item.percentage | number : '1.1-1' : 'it'}}</td>\r\n @if (table.dimension == Dim.UserSession) {\r\n <td class=\"app-nowrap\">\r\n {{item.session?.userName}}\r\n @if (item.session?.tenantId) {\r\n <span class=\"tav2-muted\">&middot; {{item.session.tenantId}}</span>\r\n }\r\n </td>\r\n <td class=\"tav2-muted\">{{item.session?.sessionType | titlecase}}</td>\r\n <td><span class=\"tav2-ellipsis tav2-ellipsis-short\" [title]=\"item.session?.bgProcessName || item.session?.jobName || ''\">{{item.session?.bgProcessName || item.session?.jobName}}</span></td>\r\n }\r\n @if (table.dimension == Dim.WaitEvent) {\r\n <td class=\"app-nowrap\">\r\n {{item.event?.eventType}}\r\n @if (item.event?.waitClass && item.event.waitClass != 'None') {\r\n <span class=\"tav2-muted\">&middot; {{item.event.waitClass}}</span>\r\n }\r\n </td>\r\n }\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n @if (NodeDetails) {\r\n <node-detail [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n }\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n @if (SessionDetails) {\r\n <session-detail [SessionDetails]=\"SessionDetails\" (onClose)=\"dlgSessionDetails.hide()\" (onNodeSelected)=\"loadNodeDetails($event)\"></session-detail>\r\n }\r\n</div>\r\n","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class LocksView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filtersid: string;\r\n filterlock: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmEnqLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Ricerca Lock Applicativi\", [\"Search Application Locks\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico i Lock Applicativi\", [\"Loading Application Locks\"]);\r\n super.set(\"it->en\", \"Globale\", [\"Global\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { LocksView } from \"../../models/components/LocksView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmEnqLoc } from \"./adm_enq.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_enq\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }],\r\n templateUrl: \"./adm_enq.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmEnqComponent {\r\n public locksView: LocksView = new LocksView();\r\n public storageSub: any;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<LocksView>(\"HotEnqueue\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverenqueues`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotEnqueue\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: LocksView) {\r\n if (HotPotato) {\r\n this.locksView = HotPotato;\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n else {\r\n this.locksView = new LocksView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (resetPage)\r\n this.locksView.page = 1;\r\n\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n\r\n async POSTGetProcesses(data: LocksView) {\r\n this.locksView = await this.adms.getServerLocks(this.be, data);\r\n this.locksView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotEnqueue\", this.locksView).subscribe();\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.locksView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerLocks(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Lock Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <form role=\"form\">\n <div class=\"col-md-12 row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Nome' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!locksView) {\n <p><em>{{'Carico i Lock Applicativi' | localize: lc}}...</em></p>\n }\n @if (locksView) {\n <div>\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"\n [ExportFileName]=\"'Application Locks.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"></es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Metric } from \"./Metric\";\r\n\r\nexport class MetricsView extends AppSearch<Metric> {\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filtersid: string;\r\n filterserial: string;\r\n filtermetrics: string[];\r\n filterrealtime: boolean;\r\n fitlerinstance: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmMetricsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Metriche di Sistema\", [\"System Metrics\"]);\r\n super.set(\"it->en\", \"Cod. Sessione\", [\"Session ID\"]);\r\n super.set(\"it->en\", \"Seriale Sessione\", [\"Session Serial\"]);\r\n super.set(\"it->en\", \"Filtra Metriche...\", [\"Filter Metrics...\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Istanza Metriche\", [\"Metrics Instance\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { BaseChartComponent } from \"@esfaenza/es-charts\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { Metric } from \"../../models/components/Metric\";\r\nimport { MetricChart } from \"../../models/components/MetricChart\";\r\nimport { MetricsView } from \"../../models/components/MetricsView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmMetricsLoc } from \"./metrics_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"metrics_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmMetricsLoc }],\r\n templateUrl: \"./metrics_search.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmMetricsComponent {\r\n\r\n public Metrics: Metric[];\r\n private MetricsChartCache: { [name: string]: { chart: BaseChartComponent<any>, lastTs: Date } } = {};\r\n\r\n public searchView: MetricsView = new MetricsView();\r\n public storageSub: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n private be: string;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async dateChanged() {\r\n // Pulizia di tutti i parametri di ricerca dipendenti dalle date\r\n this.metricsToShow = [];\r\n this.Metrics = [];\r\n this.instanceRequired = false;\r\n this.Instances = [];\r\n this.selectedInstance = \"\";\r\n this.searchView.filtermetrics = [];\r\n\r\n this.Metrics = await this.adms.getMetricsList(this.be, this.searchView.filterfrom || \"\", this.searchView.filterto || \"\");\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<MetricsView>(\"HotSearchMetrics\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metrics`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchMetrics\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: MetricsView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new MetricsView();\r\n this.sendSearch();\r\n }\r\n this.dateChanged();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: MetricsView = null) {\r\n if (!update)\r\n this.MetricsChartCache = {};\r\n\r\n this.searchView.searchinprogress = true;\r\n // Questa ricerca prende i nomi distinct delle metriche quindi devo prendere tutto per forza\r\n this.searchView.itemsperpageoverride = 999999;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(searchViewOverride ?? this.searchView, update);\r\n }\r\n\r\n public Instances: KeyValue[] = []\r\n public selectedInstance = \"\";\r\n public instanceRequired: boolean = false;\r\n public metricsToShow: Metric[] = [];\r\n\r\n async POSTGetItems(data: MetricsView, update: boolean) {\r\n data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);\r\n\r\n let res = await this.adms.getMetrics(this.be, data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.selectedInstance = \"\";\r\n this.metricsToShow = [];\r\n this.searchView = res;\r\n this.searchView.items.forEach(m => {\r\n if (m.instance && !this.Instances.find(t => t.id == m.instance))\r\n this.Instances.push(new KeyValue(m.instance, m.instance));\r\n });\r\n this.instanceRequired = this.Instances.length > 1;\r\n if (this.Instances.length == 1) {\r\n this.selectedInstance = this.Instances[0].id;\r\n this.instanceSelected();\r\n }\r\n else\r\n this.instanceSelected(true);\r\n this.localStorage.setItem(\"HotSearchMetrics\", this.searchView).subscribe();\r\n }\r\n else {\r\n // Per ogni grafico di ogni metrica aggiungo tutti i valori che sono DOPO all'ultimo ts registrato per quel grafico\r\n res.items.forEach(m => {\r\n m.values.forEach(c => {\r\n let refm = this.MetricsChartCache[this.metricKey(m, c)];\r\n if (refm) {\r\n c.series.forEach(s => { s.values = s.values.filter(v => this.dateExts.getDateConvertion(v.d).isAfter(refm.lastTs)); });\r\n if (c.series.some(t => t.values.length > 0)) {\r\n refm.lastTs = c.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n refm.chart.addData(c);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n this.searchView.searchinprogress = false;\r\n }\r\n\r\n instanceSelected(allowNull: boolean = false) {\r\n if (!this.selectedInstance && !allowNull)\r\n return;\r\n\r\n this.metricsToShow = this.searchView.items.filter(t => !this.selectedInstance || (t.instance == this.selectedInstance));\r\n }\r\n\r\n linkChartToMetric(metric: Metric, metricChart: MetricChart, chartComp: BaseChartComponent<any>) {\r\n this.MetricsChartCache[this.metricKey(metric, metricChart)] = { chart: chartComp, lastTs: metricChart.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0] };\r\n }\r\n\r\n private metricKey(metric: Metric, value: MetricChart): string {\r\n return metric.name + \" - \" + value.xtitle + (metric.instance ? \" - \" + metric.instance : \"\");\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">\n {{'Metriche di Sistema' | localize: lc}}\n </span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Cod. Sessione' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Seriale Sessione' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-12 app-filter-wrapper\">\n <form-multiselect [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [Placeholder]=\"'Filtra Metriche...' | localize: lc\" [Source]=\"Metrics\"></form-multiselect>\n </div>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n </form>\n <div class=\"app-col-12 app-margin-top-15\">\n <div class=\"pull-right\">\n {{'Aggiorna ogni' | localize: lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" />&nbsp;{{'secondo/i' | localize: lc}}\n </div>\n <div class=\"pull-right m-t-2 app-margin-right-5\">\n <label class=\"switch\">\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\n <div class=\"slider round\"></div>\n </label>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Dati' | localize: lc}}</em></p>\n }\n @if (searchView && instanceRequired) {\n <div>\n <form-select [Validation]=\"false\" [Label]=\"'Istanza Metriche' | localize: lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\n </div>\n }\n @if (searchView && metricsToShow && metricsToShow.length > 0) {\n <div>\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\n @for (metric of metricsToShow; track metric; let i = $index) {\n @for (chart of metric.values; track chart; let z = $index) {\n <div class=\"col-md-4 app-no-padding app-simple-border\">\n <div style=\"width: 100%; height: 260px\">\n <es-line-chart [XTitle]=\"chart.xtitle\"\n [YTitle]=\"chart.ytitle\"\n [MinGridDistance]=\"65\"\n [Timeline]=\"false\"\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\n [MergeDatasets]=\"true\"\n [Data]=\"chart\"\n [Animations]=\"true\"\n [Legend]=\"chart.legend\"\n name=\"metric_{{i}}_chart_{{z}}\"\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\n [DataGroupingThreshold]=\"99999999\">\n </es-line-chart>\n </div>\n </div>\n }\n }\n </div>\n <div class=\"clearfix\"></div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmLogsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Log del Server\", [\"Server Logs\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Localizzazione\r\nimport { AdmLogsLoc } from \"./adm_logs.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\n\r\n@Component({\r\n selector: \"adm_logs\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }],\r\n templateUrl: \"./adm_logs.component.html\",\r\n styleUrls: [\"./adm_logs.component.scss\"],\r\n standalone: false\r\n})\r\nexport class AdmLogsComponent {\r\n public Log: string;\r\n\r\n public filterfrom: string = \"\";\r\n public filterto: string = \"\";\r\n public filterinstance: string = \"\";\r\n public filtertarget: string = \"\";\r\n\r\n public searchinprogress: boolean;\r\n private be: string;\r\n\r\n public AvailableInstances: KeyValue[];\r\n public AvailableTargets: KeyValue[];\r\n\r\n constructor(\r\n private intercom: InterComService,\r\n private lc: LocalizationService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.instanceChanged();\r\n this.AvailableInstances = await this.adms.getInstances(this.be);\r\n\r\n await this.sendSearch();\r\n }\r\n\r\n async instanceChanged(){\r\n this.AvailableTargets = await this.adms.getLogTargets(this.be, this.filterinstance);\r\n }\r\n\r\n async sendSearch(){\r\n this.searchinprogress = true;\r\n this.Log = await this.adms.getServerLogs(this.be, this.filterfrom, this.filterto, this.filterinstance, this.filtertarget);\r\n this.searchinprogress = false;\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da'\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterto\" name=\"filterto\" [Placeholder]=\"'A'\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterinstance\" name=\"filterinstance\" [Placeholder]=\"'Istanza'\" [Source]=\"AvailableInstances\" (inputChange)=\"instanceChanged();\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filtertarget\" name=\"filtertarget\" [Placeholder]=\"'Target'\" [Source]=\"AvailableTargets\"></form-select>\n </div>\n <button [disabled]=\"searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n </div>\n @if (Log) {\n <p class=\"app-whitespace-prewrap app-log-monospace\" [innerHTML]=\"Log\"></p>\n }\n\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class DynamicViewsView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtername: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmDynamicViewsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Viste Dinamiche Applicative\", [\"Search Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico le Viste Dinamiche Applicative\", [\"Loading Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Il nome della vista è obbligatorio per le operazioni di ricerca\", [\"View Name is mandatory for search operations\"]);\r\n super.set(\"it->en\", \"Nessun elemento trovato per la vista dinamica\", [\"No element found for Dynamic View\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { AppSearch } from \"@esfaenza/es-table\";\r\n\r\n// Applicazione\r\nimport { DynamicViewsView } from \"../../models/components/DynamicViewsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmDynamicViewsLoc } from \"./adm_dynamic_views.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_dynamic_views\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmDynamicViewsLoc }],\r\n templateUrl: \"./adm_dynamic_views.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmDynamicViewsComponent {\r\n\r\n public searchView: DynamicViewsView = new DynamicViewsView();\r\n public Names: KeyValue[] = [];\r\n public storageSub: any;\r\n public badSearch: boolean = false;\r\n\r\n public currentName: string = \"\";\r\n\r\n // Staccato dalla view perché deve essere distrutta e ricreata di continuo\r\n public filterName:string = \"\";\r\n\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.Names = await this.adms.getDynamicViews(this.be);\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<DynamicViewsView>(\"HotDinamitato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverviews`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotDinamitato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: DynamicViewsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems();\r\n }\r\n else {\r\n this.searchView = new DynamicViewsView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.searchView.filtername = this.filterName;\r\n this.POSTGetItems();\r\n }\r\n\r\n async prepareExportDynamicView(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getDynamicViewData(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n\r\n async POSTGetItems() {\r\n if (!this.searchView.filtername) {\r\n this.badSearch = true;\r\n AppSearch.reset(this.searchView);\r\n return;\r\n }\r\n else\r\n this.badSearch = false;\r\n\r\n // Per force-resettare l'estable\r\n if (this.currentName != this.searchView.filtername) {\r\n this.currentName = this.searchView.filtername;\r\n\r\n this.searchView = new DynamicViewsView();\r\n this.searchView.page = 1;\r\n this.searchView.filtername = this.currentName;\r\n }\r\n \r\n this.searchView = await this.adms.getDynamicViewData(this.be, this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotDinamitato\", this.searchView).subscribe();\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Viste Dinamiche Applicative' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterName\" name=\"filtername\" [Source]=\"Names\" [Placeholder]=\"'Nome' | localize: lc\"></form-select>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (badSearch) {\n <div class=\"card card-info app-white-text app-padding-10\">{{'Il nome della vista è obbligatorio per le operazioni di ricerca' | localize: lc}}</div>\n }\n @if (!badSearch) {\n @if (!searchView) {\n <p><em>{{'Carico le Viste Dinamiche Applicative' | localize: lc}}...</em></p>\n }\n @if (searchView && searchView.items.length > 0) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [ExportFunction]=\"prepareExportDynamicView.bind(this)\" [Export]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\n </div>\n }\n @if (searchView && searchView.items.length == 0 && !searchView.searchinprogress) {\n <div class=\"card card-info app-white-text app-padding-10\">\n {{'Nessun elemento trovato per la vista dinamica' | localize: lc}}&nbsp;<strong>{{searchView.filtername}}</strong>\n </div>\n }\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class QueryView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filterquery: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class MtdQueryLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Esecuzione Query Metadati\", [\"Metadata Query Execution\"]);\r\n super.set(\"it->en\", \"Query\", [\"Query\"]);\r\n super.set(\"it->en\", \"Carico i Risultati\", [\"Loading Results\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { QueryView } from \"../../models/components/QueryView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { MtdQueryLoc } from \"./mtd_query.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_mtd_query\",\r\n viewProviders: [{ provide: LocalizationService, useClass: MtdQueryLoc }],\r\n templateUrl: \"./mtd_query.component.html\",\r\n standalone: false\r\n})\r\nexport class MtdQueryComponent {\r\n public searchView: QueryView = new QueryView();\r\n public storageSub: any;\r\n\r\n public searching: boolean = false;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<QueryView>(\"HotQuery\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metadataquery`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotQuery\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: QueryView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetSearch(this.searchView);\r\n }\r\n else {\r\n this.searchView = new QueryView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searching = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n if(!this.searchView.filterquery)\r\n return;\r\n\r\n this.POSTGetSearch(this.searchView);\r\n }\r\n\r\n async POSTGetSearch(data: QueryView) {\r\n this.searchView = await this.adms.getServerQuery(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotEnqueue\", this.searchView).subscribe();\r\n this.searching = false;\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerQuery(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Esecuzione Query Metadati' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <form role=\"form\">\n <div class=\"col-md-12 row app-first-filter-line\">\n <div class=\"col-xl-11 col-lg-11 col-md-11 app-filter-wrapper\">\n <form-textarea rows=\"3\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterquery\" name=\"filterquery\" [Placeholder]=\"'Query'\"></form-textarea>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Risultati' | localize: lc}}...</em></p>\n }\n @if (searchView && !searching) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" [Export]=\"true\" [ExportFileName]=\"'Results.csv'\" [ExportFunction]=\"prepareExport.bind(this)\"></es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { SystemParameters } from \"./SystemParameters\";\r\n\r\nexport class SystemParametersView extends AppSearch<SystemParameters>{\r\n constructor() { super(); }\r\n\r\n filterparameter: string;\r\n filterlevel: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmSystemParametersLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Parametri di sistema\", [\"System Parameters\"]);\r\n super.set(\"it->en\", \"Nome parametro\", [\"Parameter Name\"]);\r\n super.set(\"it->en\", \"Carico Parametri di sistema\", [\"Loading System Parameters\"]);\r\n super.set(\"it->en\", \"Valore\", [\"Value\"]);\r\n super.set(\"it->en\", \"Valore Default\", [\"Default value\"]); \r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Default\", [\"Default\"]); super.set(\"it->en\", \"Modificabile\", [\"Modifiable\"]);\r\n super.set(\"it->en\", \"Modifica parametro\", [\"Edit Parameter\"]);\r\n\r\n super.set(\"it->en\", \"Parametro di Sistema modificato con successo \", [\"System Parameter succesfully edited\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Parametro di Sistema\", [\"Errors editing System Parameter\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\n\r\n// Classi\r\nimport { SystemParametersView } from \"../../models/components/SystemParametersView\";\r\nimport { SystemParameters } from \"../../models/components/SystemParameters\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Loc\r\nimport { AdmSystemParametersLoc } from \"./adm_syspars.component.loc\";\r\n\r\n@Component({\r\n selector: \"adm_syspars\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmSystemParametersLoc }],\r\n templateUrl: \"./adm_syspars.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmSystemParametersComponent {\r\n\r\n public searchView: SystemParametersView = new SystemParametersView();\r\n public storageSub: any;\r\n\r\n public LevelsSource: KeyValue[] = [];\r\n public lastSelectedLevel = \"\";\r\n\r\n private be: string;\r\n \r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n private msgExts: MessageService,\r\n private utiExts: UtilityService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.LevelsSource = [new KeyValue(\"SYS\", \"System\"), new KeyValue(\"SES\", \"Session\")];\r\n\r\n this.AvailableInstances = await this.adms.getInstances(this.be);\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await firstValueFrom(this.localStorage.getItem<SystemParametersView>(\"HotSysParConfiggato\"));\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/syspars`);\r\n this.route.snapshot.queryParams = [];\r\n await firstValueFrom(this.localStorage.removeItem(\"HotSysParConfiggato\"));\r\n }\r\n }\r\n\r\n init(HotPotato: SystemParametersView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n else {\r\n this.searchView = new SystemParametersView();\r\n this.searchView.filterlevel = \"SES\";\r\n \r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (!this.searchView.filterlevel) {\r\n this.msgExts.simpleError(\"È obbligatorio specificare il filtro 'livello' per procedere alla ricerca\");\r\n return;\r\n }\r\n\r\n if (this.searchView.filterlevel == \"SES\") {\r\n this.searchView.filterglobal = false;\r\n }\r\n\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n\r\n async POSTGetItems(data: SystemParametersView) {\r\n this.lastSelectedLevel = this.searchView.filterlevel;\r\n \r\n this.searchView = await this.adms.getSystemParameters(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSysParConfiggato\", this.searchView).subscribe();\r\n }\r\n\r\n //*********************************************EDIT************************************\r\n\r\n ParOnEdit: SystemParameters = null;\r\n @ViewChild(\"editConfigForm\", { static: true }) editConfigForm: NgForm;\r\n\r\n AvailableInstances: KeyValue[] = [];\r\n\r\n setupEdit(item: SystemParameters) {\r\n this.utiExts.cleanForm(this.editConfigForm);\r\n setTimeout(() => {\r\n this.ParOnEdit = this.utiExts.deepClone(item);\r\n this.ParOnEdit.memory = true;\r\n });\r\n }\r\n\r\n submitForm() {\r\n this.adms.updateSystemParameter(this.be, this.ParOnEdit).then(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Parametro di Sistema modificato con successo \"), this.lc.loc(\"Errori nella modifica del Parametro di Sistema\"), () => { this.sendSearch() });\r\n })\r\n return true;\r\n }\r\n\r\n //*********************************************RESET************************************\r\n\r\n setupReset(item: SystemParameters) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Richiesta conferma\"),\r\n this.lc.loc(\"Si desidera procedere al reset del parametro??\"),\r\n async () => {\r\n let t = await this.adms.resetSystemParameter(this.be, item.parametername, this.lastSelectedLevel);\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Parametro di Sistema resettato con successo \"), this.lc.loc(\"Errori nel reset del Parametro di Sistema\"), () => { this.sendSearch() });\r\n });\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Parametri di sistema' | localize : lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterparameter\" name=\"filterparameter\" [Placeholder]=\"'Nome parametro' | localize : lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterlevel\" name=\"filterlevel\" [Placeholder]=\"'Livello' | localize : lc\" [Source]=\"LevelsSource\"></form-select>\n </div>\n @if (searchView.filterlevel == 'SYS') {\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n }\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"far fa-search\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico Parametri di sistema' | localize : lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" (onSearchRequest)=\"sendSearch($event);\">\n <ng-template #header>\n <th class=\"app-col-min\"></th>\n <th class=\"app-col-min\"></th>\n <th class=\"app-nowrap\">{{'Nome parametro' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Valore' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Default' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Descrizione' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Valore Default' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile a livello di Sessione' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile a livello di Sistema' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificato' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Aggiustato' | localize : lc}}</th>\n </ng-template>\n <ng-template #body let-item>\n <td class=\"app-no-wrap app-right-0 app-padding-top-8\">\n @if (!item.isreadonly && ((lastSelectedLevel == 'SYS' && item.syseditable) || (lastSelectedLevel == 'SES' && item.seseditable))) {\n <a class=\"app-link far fa-edit\" (click)=\"setupEdit(item); dlgEdit.show();\"></a>\n }\n </td>\n <td class=\"app-no-wrap app-right-0 app-padding-top-8\">\n @if (!item.isreadonly && ((lastSelectedLevel == 'SYS' && item.syseditable) || (lastSelectedLevel == 'SES' && item.seseditable))) {\n <a class=\"app-link far fa-refresh\" (click)=\"setupReset(item);\"></a>\n }\n </td>\n <td class=\"app-nowrap\"><strong>{{item.parametername}}</strong></td>\n <td class=\"app-nowrap\">{{item.value}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.isdefault\" [class.text-danger]=\"!item.isdefault\">\n {{ item.isdefault ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.parameterdescription}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"!item.isreadonly\" [class.text-danger]=\"item.isreadonly\">\n {{ !item.isreadonly ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.defaultvalue}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.seseditable\" [class.text-danger]=\"!item.seseditable\">\n {{ item.seseditable ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.syseditable\" [class.text-danger]=\"!item.syseditable\">\n {{ item.syseditable ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.modified}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.adjusted\" [class.text-danger]=\"!item.adjusted\">\n {{ item.adjusted ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n </ng-template>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div esModal #dlgEdit=\"es-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-lg\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title pull-left\">{{ 'Modifica parametro' | localize : lc }}</h5>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgEdit.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <form novalidate #editConfigForm=\"ngForm\" (ngSubmit)=\"editConfigForm.valid && submitForm() && dlgEdit.hide()\">\n @if (ParOnEdit) {\n <div class=\"modal-body\">\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Nome parametro' | localize : lc\" [(ngModel)]=\"ParOnEdit.parametername\" [disabled]=\"true\" name=\"parametername\"></form-input>\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Valore' | localize : lc\" [(ngModel)]=\"ParOnEdit.value\" name=\"value\" [Last]=\"lastSelectedLevel == 'SES'\"></form-input>\n @if (lastSelectedLevel == 'SYS') {\n <form-checkbox [LabelInputRatio]=\"'3 9'\" [Label]=\"'File Configurazione' | localize : lc\" [(ngModel)]=\"ParOnEdit.configfile\" name=\"configfile\"></form-checkbox>\n <form-checkbox [LabelInputRatio]=\"'3 9'\" [Label]=\"'Memoria' | localize : lc\" [(ngModel)]=\"ParOnEdit.memory\" name=\"memory\"></form-checkbox>\n <form-multiselect [LabelInputRatio]=\"'3 9'\" [Label]=\"'Applica solo a' | localize : lc\" [Source]=\"AvailableInstances\" name=\"instanceids\" [(ngModel)]=\"ParOnEdit.instanceids\" [Last]=\"true\"> </form-multiselect>\n }\n </div>\n }\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgEdit.hide()\">{{'Annulla' | localize : lc}}</button>\n <button type=\"submit\" contextAware class=\"btn btn-primary\">{{'Conferma' | localize : lc}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>","// Angular\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({ name: 'format_time' })\r\nexport class FormatTimePipe implements PipeTransform {\r\n\r\n constructor() { }\r\n\r\n transform(value: number | string) {\r\n return this.secondsToHms(value);\r\n }\r\n\r\n secondsToHms(d: number | string): string {\r\n d = Number(d);\r\n var h = Math.floor(d / 3600);\r\n var m = Math.floor(d % 3600 / 60);\r\n var s = Math.floor(d % 3600 % 60);\r\n \r\n var hDisplay = h > 0 ? h + \" h, \" : \"\";\r\n var mDisplay = m > 0 ? m + \" min, \" : \"\";\r\n var sDisplay = s > 0 ? s + \" sec\" : \"\";\r\n return hDisplay + mDisplay + sDisplay; \r\n }\r\n}","/** Chiave di questo modulo, da utilizzare per i messaggi */\r\nexport const MK_ADM = \"EsAdminModule\";\r\n\r\n/** Messaggi gestiti da questo modulo */\r\nexport enum AdmMessageTypes{\r\n Message\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { InterComService, InterComMessage } from \"@esfaenza/extensions\";\r\n\r\n// Modelli\r\nimport { AdmMessageTypes, MK_ADM } from \"./admin-feature-messages\";\r\n\r\ndeclare var myconfig;\r\n\r\n@Injectable()\r\nexport class AdminModuleCommService {\r\n\r\n constructor(private intercom: InterComService) { }\r\n\r\n public register() {\r\n this.intercom.register(MK_ADM);\r\n this.intercom.outbounds[MK_ADM].subscribe((t: InterComMessage) => { this.handleOutbound(t.type, t.message); });\r\n }\r\n\r\n private handleOutbound(type: AdmMessageTypes, message: any) {\r\n switch (type) {\r\n case AdmMessageTypes.Message:\r\n if (myconfig.DEBUG_MODE)\r\n console.log(\"@admin-feature outbound message: \" + message);\r\n break;\r\n }\r\n }\r\n}","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgModule, inject } from \"@angular/core\";\r\nimport { CanMatchFn, RouterModule } from \"@angular/router\";\r\n\r\n// Libs\r\nimport { ModalModule } from \"ngx-bootstrap/modal\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\r\n\r\n// Esfaenza\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { EsChartsModule } from \"@esfaenza/es-charts\";\r\nimport { EsGertrudeModule } from \"@esfaenza/gertrude\";\r\nimport { ExtensionsModule } from \"@esfaenza/extensions\";\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { ContextMenuModule } from \"@esfaenza/ngx-contextmenu\";\r\n\r\n// Components\r\nimport { AdmAuditsComponent } from \"./components/audits/adm_audits.component\";\r\nimport { AdmWrkComponent } from \"./components/workers/adm_wrk.component\";\r\nimport { AdmProfilerComponent } from \"./components/profiler/adm_profiler.component\";\r\nimport { AdmTopActivitiesComponent } from \"./components/topact/topact_search.component\";\r\nimport { AdmTopActivityV2Component } from \"./components/topact_v2/topact_v2.component\";\r\nimport { SessionDetailComponent } from \"./components/_shared/session_detail.component\";\r\nimport { AdmEnqComponent } from \"./components/enqueues/adm_enq.component\";\r\nimport { AdmMetricsComponent } from \"./components/metrics/metrics_search.component\";\r\nimport { AdmLogsComponent } from \"./components/logs/adm_logs.component\";\r\nimport { NodeDetailComponent } from \"./components/_shared/node_detail.component\";\r\nimport { AdmDynamicViewsComponent } from \"./components/dynamic_views/adm_dynamic_views.component\";\r\nimport { MtdQueryComponent } from \"./components/mtd_query/mtd_query.component\";\r\nimport { AdmSystemParametersComponent } from \"./components/syspars/adm_syspars.component\";\r\n\r\n// Pipes\r\nimport { FormatTimePipe } from \"./pipes/format_time.pipe\";\r\n\r\n// Communication Service\r\nimport { AdminModuleCommService } from \"./admin-feature.comms.service\";\r\n\r\n// Tokens\r\nimport { ADM_CONVERSATIONS, ADM_TOPACT_V2 } from \"./tokens\";\r\nimport { ComponentsModule } from \"@esfaenza/core/components\";\r\nimport { DirectivesModule } from \"@esfaenza/core/directives\";\r\n\r\ndeclare var myconfig;\r\n\r\n// La Top Activity v2 prende la rotta \"topact\" solo se DirectorFeature.TopActivityV2 è attivo nella configurazione del modulo,\r\n// altrimenti la guardia fallisce e la rotta successiva apre la pagina di sempre\r\nexport const topActivityV2Enabled: CanMatchFn = () => inject(ADM_TOPACT_V2, { optional: true }) ?? false;\r\n\r\nexport const routeConfig = [\r\n {\r\n path: \"\", children: [\r\n { path: \"serverworkers/:be\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler/:be\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact/:be\", component: AdmTopActivityV2Component, canMatch: [topActivityV2Enabled], data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"topact/:be\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics/:be\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs/:be\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits/:be\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues/:be\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews/:be\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"metadataquery/:be\", component: MtdQueryComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"serverworkers\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact\", component: AdmTopActivityV2Component, canMatch: [topActivityV2Enabled], data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"topact\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"metadataquery\", component: MtdQueryComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"syspars\", component: AdmSystemParametersComponent, data: { title: \"Parametri di sistema\", internalNavigation: false } }]\r\n }\r\n];\r\n\r\nconst MODULES = [\r\n // Base\r\n CommonModule,\r\n FormsModule,\r\n\r\n // Bootstrap\r\n ModalModule,\r\n TooltipModule,\r\n BsDropdownModule,\r\n\r\n // Esfaenza e componenti visuali\r\n ContextMenuModule,\r\n LocalizationModule,\r\n ExtensionsModule,\r\n EsTableModule,\r\n FormsAndValidationsModule,\r\n EsGertrudeModule,\r\n EsChartsModule,\r\n ComponentsModule,\r\n DirectivesModule,\r\n\r\n RouterModule.forChild(routeConfig),\r\n];\r\n\r\nconst COMPONENTS = [\r\n AdmWrkComponent,\r\n AdmProfilerComponent,\r\n AdmTopActivitiesComponent,\r\n AdmTopActivityV2Component,\r\n SessionDetailComponent,\r\n AdmDynamicViewsComponent,\r\n AdmLogsComponent,\r\n AdmAuditsComponent,\r\n AdmEnqComponent,\r\n AdmMetricsComponent,\r\n NodeDetailComponent,\r\n MtdQueryComponent,\r\n AdmSystemParametersComponent\r\n];\r\n\r\nconst PIPES = [\r\n FormatTimePipe\r\n]\r\n\r\n@NgModule({\r\n imports: [...MODULES, ...PIPES],\r\n declarations: [...COMPONENTS],\r\n providers: [\r\n AdminModuleCommService,\r\n { provide: ADM_CONVERSATIONS, useFactory: () => !!myconfig.TransactionTimeoutSeconds },\r\n { provide: ADM_TOPACT_V2, useFactory: () => !!myconfig?.DirectorFeature?.TopActivityV2 }\r\n ]\r\n})\r\nexport class AdmModule {\r\n constructor(private commService: AdminModuleCommService) {\r\n console.log(\"@esfaenza/admin-feature: BOOTSTRAP\");\r\n this.commService.register();\r\n }\r\n}","/*\r\n * Public API Surface of admin-feature\r\n */\r\n\r\nexport * from './lib/admin-feature.module';\r\nexport * from './lib/tokens';\r\nexport * from \"./lib/admin-feature-messages\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i6.AdminModuleBaseService","i8","i9","i10","i11","i3","i12.NodeDetailComponent","i4","i12","i13.NodeDetailComponent","i5","i6","i1","i5.AdminModuleBaseService","i7","i12.SessionDetailComponent","i14","i4.AdminModuleBaseService","KeyValue","i1.AdminModuleCommService"],"mappings":"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"}