@acorex-platform/module-platform-management-client 0.0.21 → 0.0.24

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":"acorex-platform-module-platform-management-client-platform-console-charts.queries-CQ34R13-.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/dashboard/queries/platform-console-charts.queries.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessObject,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type {\n AXPBarChartQueryResult,\n AXPDonutChartQueryResult,\n AXPLineChartQueryResult,\n} from '@acorex-platform/module-dashboard-management-contracts';\n\nimport { Injectable, inject } from '@angular/core';\nimport {\n PLATFORM_CHART_COLORS,\n countInsightErrors,\n queryEntityItems,\n resolveDisplayTitle,\n titleCaseStatus,\n} from './platform-console-data.util';\n\n//#endregion\n\n//#region ----- Tenants by status (bar) -----\n\n/** Live bar series: TenantManagement.Tenant grouped by statusId. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformTenantsByStatusBarQuery implements AXPQuery<void, AXPBarChartQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPBarChartQueryResult> {\n try {\n const tenants = await queryEntityItems(this.entityService, 'TenantManagement', 'Tenant');\n const counts = new Map<string, number>();\n for (const tenant of tenants) {\n const status = String(tenant['statusId'] ?? 'unknown');\n counts.set(status, (counts.get(status) ?? 0) + 1);\n }\n\n // Stable order for known statuses, then any extras.\n const preferred = ['active', 'pending', 'inactive', 'suspended', 'archived'];\n const keys = [\n ...preferred.filter((k) => counts.has(k)),\n ...[...counts.keys()].filter((k) => !preferred.includes(k)).sort(),\n ];\n\n return runtimeQuerySuccessObject({\n items: keys.map((status, index) => ({\n id: status,\n label: titleCaseStatus(status),\n value: counts.get(status) ?? 0,\n color: PLATFORM_CHART_COLORS[index % PLATFORM_CHART_COLORS.length],\n })),\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load tenants by status',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Applications by edition (donut) -----\n\n/** Live donut series: ApplicationManagement.Application exploded by editionIds. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformApplicationsByEditionDonutQuery\n implements AXPQuery<void, AXPDonutChartQueryResult>\n{\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPDonutChartQueryResult> {\n try {\n const [apps, editions] = await Promise.all([\n queryEntityItems(this.entityService, 'ApplicationManagement', 'Application'),\n queryEntityItems(this.entityService, 'ApplicationManagement', 'Edition'),\n ]);\n\n const editionTitleById = new Map<string, string>();\n for (const edition of editions) {\n const id = String(edition['id'] ?? '');\n if (id) {\n editionTitleById.set(id, resolveDisplayTitle(edition['title']) || id);\n }\n }\n\n const counts = new Map<string, { label: string; value: number }>();\n for (const app of apps) {\n const editionIds = Array.isArray(app['editionIds']) ? (app['editionIds'] as string[]) : [];\n if (editionIds.length === 0) {\n const key = 'unassigned';\n const current = counts.get(key) ?? { label: 'Unassigned', value: 0 };\n current.value += 1;\n counts.set(key, current);\n continue;\n }\n for (const editionId of editionIds) {\n const key = String(editionId);\n const current = counts.get(key) ?? {\n label: editionTitleById.get(key) || key,\n value: 0,\n };\n current.value += 1;\n counts.set(key, current);\n }\n }\n\n const items = [...counts.entries()]\n .sort((a, b) => b[1].value - a[1].value || a[1].label.localeCompare(b[1].label))\n .map(([id, row], index) => ({\n id,\n label: row.label,\n value: row.value,\n color: PLATFORM_CHART_COLORS[index % PLATFORM_CHART_COLORS.length],\n }));\n\n return runtimeQuerySuccessObject({ items });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load applications by edition',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Errors trend (line) -----\n\n/** Live line series: SystemInsight error counts per day for the last 7 days. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformErrorsTrendLineQuery implements AXPQuery<void, AXPLineChartQueryResult> {\n private readonly queryExecutor = inject(AXPQueryExecutor);\n\n async fetch(): AXPQueryFetchResultPromise<AXPLineChartQueryResult> {\n try {\n const now = new Date();\n const dayMs = 24 * 60 * 60 * 1000;\n const dayLabels = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n const points: Array<{ x: string; y: number }> = [];\n\n const dayWindows = Array.from({ length: 7 }, (_, index) => {\n const offset = 6 - index;\n const dayEnd = new Date(now.getTime() - offset * dayMs);\n const dayStart = new Date(dayEnd.getTime() - dayMs);\n return { dayEnd, dayStart };\n });\n const counts = await Promise.all(\n dayWindows.map(({ dayStart, dayEnd }) => countInsightErrors(this.queryExecutor, dayStart, dayEnd)),\n );\n for (let i = 0; i < dayWindows.length; i++) {\n points.push({\n x: dayLabels[dayWindows[i].dayEnd.getDay()],\n y: counts[i],\n });\n }\n\n return runtimeQuerySuccessObject({\n series: [\n {\n id: 'errors',\n label: 'Errors',\n lineColor: '#ef4444',\n fillColor: '#ef444420',\n data: points,\n },\n ],\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load errors trend',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Jobs by status (bar) -----\n\nconst JOB_STATUS_ORDER = [\n 'completed',\n 'failed',\n 'running',\n 'queued',\n 'scheduled',\n 'created',\n 'paused',\n 'cancelled',\n 'dead-lettered',\n] as const;\n\n/** Live bar series: BackgroundJobManagement.BackgroundJob grouped by status. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformJobsByStatusBarQuery implements AXPQuery<void, AXPBarChartQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPBarChartQueryResult> {\n try {\n const jobs = await queryEntityItems(\n this.entityService,\n 'BackgroundJobManagement',\n 'BackgroundJob',\n );\n const counts = new Map<string, number>();\n for (const job of jobs) {\n const status = String(job['status'] ?? 'unknown');\n counts.set(status, (counts.get(status) ?? 0) + 1);\n }\n\n const keys = [\n ...JOB_STATUS_ORDER.filter((k) => counts.has(k)),\n ...[...counts.keys()].filter((k) => !(JOB_STATUS_ORDER as readonly string[]).includes(k)).sort(),\n ];\n\n // Always show the common statuses even when empty so the chart stays readable.\n const displayKeys =\n keys.length > 0\n ? keys\n : (['completed', 'failed', 'running', 'queued'] as string[]);\n\n return runtimeQuerySuccessObject({\n items: displayKeys.map((status, index) => ({\n id: status,\n label: titleCaseStatus(status),\n value: counts.get(status) ?? 0,\n color: PLATFORM_CHART_COLORS[index % PLATFORM_CHART_COLORS.length],\n })),\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load jobs by status',\n );\n }\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-platform-console-charts.queries-CQ34R13-.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/dashboard/queries/platform-console-charts.queries.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessObject,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type {\n AXPBarChartQueryResult,\n AXPDonutChartQueryResult,\n AXPLineChartQueryResult,\n} from '@acorex-platform/module-dashboard-management-client/contracts';\n\nimport { Injectable, inject } from '@angular/core';\nimport {\n PLATFORM_CHART_COLORS,\n countInsightErrors,\n queryEntityItems,\n resolveDisplayTitle,\n titleCaseStatus,\n} from './platform-console-data.util';\n\n//#endregion\n\n//#region ----- Tenants by status (bar) -----\n\n/** Live bar series: TenantManagement.Tenant grouped by statusId. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformTenantsByStatusBarQuery implements AXPQuery<void, AXPBarChartQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPBarChartQueryResult> {\n try {\n const tenants = await queryEntityItems(this.entityService, 'TenantManagement', 'Tenant');\n const counts = new Map<string, number>();\n for (const tenant of tenants) {\n const status = String(tenant['statusId'] ?? 'unknown');\n counts.set(status, (counts.get(status) ?? 0) + 1);\n }\n\n // Stable order for known statuses, then any extras.\n const preferred = ['active', 'pending', 'inactive', 'suspended', 'archived'];\n const keys = [\n ...preferred.filter((k) => counts.has(k)),\n ...[...counts.keys()].filter((k) => !preferred.includes(k)).sort(),\n ];\n\n return runtimeQuerySuccessObject({\n items: keys.map((status, index) => ({\n id: status,\n label: titleCaseStatus(status),\n value: counts.get(status) ?? 0,\n color: PLATFORM_CHART_COLORS[index % PLATFORM_CHART_COLORS.length],\n })),\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load tenants by status',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Applications by edition (donut) -----\n\n/** Live donut series: ApplicationManagement.Application exploded by editionIds. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformApplicationsByEditionDonutQuery\n implements AXPQuery<void, AXPDonutChartQueryResult>\n{\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPDonutChartQueryResult> {\n try {\n const [apps, editions] = await Promise.all([\n queryEntityItems(this.entityService, 'ApplicationManagement', 'Application'),\n queryEntityItems(this.entityService, 'ApplicationManagement', 'Edition'),\n ]);\n\n const editionTitleById = new Map<string, string>();\n for (const edition of editions) {\n const id = String(edition['id'] ?? '');\n if (id) {\n editionTitleById.set(id, resolveDisplayTitle(edition['title']) || id);\n }\n }\n\n const counts = new Map<string, { label: string; value: number }>();\n for (const app of apps) {\n const editionIds = Array.isArray(app['editionIds']) ? (app['editionIds'] as string[]) : [];\n if (editionIds.length === 0) {\n const key = 'unassigned';\n const current = counts.get(key) ?? { label: 'Unassigned', value: 0 };\n current.value += 1;\n counts.set(key, current);\n continue;\n }\n for (const editionId of editionIds) {\n const key = String(editionId);\n const current = counts.get(key) ?? {\n label: editionTitleById.get(key) || key,\n value: 0,\n };\n current.value += 1;\n counts.set(key, current);\n }\n }\n\n const items = [...counts.entries()]\n .sort((a, b) => b[1].value - a[1].value || a[1].label.localeCompare(b[1].label))\n .map(([id, row], index) => ({\n id,\n label: row.label,\n value: row.value,\n color: PLATFORM_CHART_COLORS[index % PLATFORM_CHART_COLORS.length],\n }));\n\n return runtimeQuerySuccessObject({ items });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load applications by edition',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Errors trend (line) -----\n\n/** Live line series: SystemInsight error counts per day for the last 7 days. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformErrorsTrendLineQuery implements AXPQuery<void, AXPLineChartQueryResult> {\n private readonly queryExecutor = inject(AXPQueryExecutor);\n\n async fetch(): AXPQueryFetchResultPromise<AXPLineChartQueryResult> {\n try {\n const now = new Date();\n const dayMs = 24 * 60 * 60 * 1000;\n const dayLabels = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n const points: Array<{ x: string; y: number }> = [];\n\n const dayWindows = Array.from({ length: 7 }, (_, index) => {\n const offset = 6 - index;\n const dayEnd = new Date(now.getTime() - offset * dayMs);\n const dayStart = new Date(dayEnd.getTime() - dayMs);\n return { dayEnd, dayStart };\n });\n const counts = await Promise.all(\n dayWindows.map(({ dayStart, dayEnd }) => countInsightErrors(this.queryExecutor, dayStart, dayEnd)),\n );\n for (let i = 0; i < dayWindows.length; i++) {\n points.push({\n x: dayLabels[dayWindows[i].dayEnd.getDay()],\n y: counts[i],\n });\n }\n\n return runtimeQuerySuccessObject({\n series: [\n {\n id: 'errors',\n label: 'Errors',\n lineColor: '#ef4444',\n fillColor: '#ef444420',\n data: points,\n },\n ],\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load errors trend',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Jobs by status (bar) -----\n\nconst JOB_STATUS_ORDER = [\n 'completed',\n 'failed',\n 'running',\n 'queued',\n 'scheduled',\n 'created',\n 'paused',\n 'cancelled',\n 'dead-lettered',\n] as const;\n\n/** Live bar series: BackgroundJobManagement.BackgroundJob grouped by status. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformJobsByStatusBarQuery implements AXPQuery<void, AXPBarChartQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPBarChartQueryResult> {\n try {\n const jobs = await queryEntityItems(\n this.entityService,\n 'BackgroundJobManagement',\n 'BackgroundJob',\n );\n const counts = new Map<string, number>();\n for (const job of jobs) {\n const status = String(job['status'] ?? 'unknown');\n counts.set(status, (counts.get(status) ?? 0) + 1);\n }\n\n const keys = [\n ...JOB_STATUS_ORDER.filter((k) => counts.has(k)),\n ...[...counts.keys()].filter((k) => !(JOB_STATUS_ORDER as readonly string[]).includes(k)).sort(),\n ];\n\n // Always show the common statuses even when empty so the chart stays readable.\n const displayKeys =\n keys.length > 0\n ? keys\n : (['completed', 'failed', 'running', 'queued'] as string[]);\n\n return runtimeQuerySuccessObject({\n items: displayKeys.map((status, index) => ({\n id: status,\n label: titleCaseStatus(status),\n value: counts.get(status) ?? 0,\n color: PLATFORM_CHART_COLORS[index % PLATFORM_CHART_COLORS.length],\n })),\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load jobs by status',\n );\n }\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { runtimeQueryCollectionData } from '@acorex-platform/framework-shared/core';
2
- import { AXMSystemInsightQueryKeys } from '@acorex-platform/module-system-insight-contracts';
2
+ import { AXMSystemInsightQueryKeys } from '@acorex-platform/module-system-insight-client/contracts';
3
3
 
4
4
  /**
5
5
  * Shared helpers for Platform Console dashboard queries (entity counts + insight windows).
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-platform-management-client-platform-console-data.util-BIkULtKk.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/dashboard/queries/platform-console-data.util.ts"],"sourcesContent":["/**\n * Shared helpers for Platform Console dashboard queries (entity counts + insight windows).\n */\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';\nimport { runtimeQueryCollectionData } from '@acorex-platform/framework-shared/core';\nimport { AXMSystemInsightQueryKeys } from '@acorex-platform/module-system-insight-contracts';\n\n//#region ----- Entity helpers -----\n\nexport async function queryEntityTotal(\n entityService: AXPEntityService,\n moduleName: string,\n entityName: string,\n): Promise<number> {\n const data = entityService.withEntity(moduleName, entityName).data();\n const result = await data.query({ skip: 0, take: 1 });\n return typeof result.total === 'number' ? result.total : (result.items?.length ?? 0);\n}\n\nexport async function queryEntityItems(\n entityService: AXPEntityService,\n moduleName: string,\n entityName: string,\n take = 5000,\n): Promise<Record<string, unknown>[]> {\n const data = entityService.withEntity(moduleName, entityName).data();\n const result = await data.query({ skip: 0, take });\n return (result.items ?? []) as unknown as Record<string, unknown>[];\n}\n\nexport function resolveDisplayTitle(value: unknown): string {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n const map = value as Record<string, string>;\n return map['en-US'] || map['fa-IR'] || Object.values(map).find((v) => typeof v === 'string' && v) || '';\n }\n return String(value);\n}\n\nexport function titleCaseStatus(statusId: string): string {\n if (!statusId) {\n return 'Unknown';\n }\n return statusId\n .split(/[-_]/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n\n//#endregion\n\n//#region ----- System insight errors -----\n\nfunction insightTimeFilter(from: Date, to: Date): Record<string, unknown> {\n return {\n logic: 'and',\n filters: [\n { field: 'from', operator: { type: 'equal' }, value: from.toISOString() },\n { field: 'to', operator: { type: 'equal' }, value: to.toISOString() },\n ],\n };\n}\n\n/** Counts SystemInsight error events in `[from, to)` via the remote ErrorEvent:List query. */\nexport async function countInsightErrors(\n queryExecutor: AXPQueryExecutor,\n from: Date,\n to: Date,\n): Promise<number> {\n try {\n const result = await queryExecutor.fetch<Record<string, unknown>, unknown>(\n AXMSystemInsightQueryKeys.ErrorEvent.List,\n {\n skip: 0,\n take: 1,\n filter: insightTimeFilter(from, to),\n },\n );\n const page = runtimeQueryCollectionData(result);\n return typeof page?.total === 'number' ? page.total : (page?.items?.length ?? 0);\n } catch {\n return 0;\n }\n}\n\n//#endregion\n\n//#region ----- Chart colors -----\n\nexport const PLATFORM_CHART_COLORS = [\n '#43b57f',\n '#3b82f6',\n '#f59e0b',\n '#ef4444',\n '#8b5cf6',\n '#0ea5e9',\n '#64748b',\n] as const;\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-platform-console-data.util-BIkULtKk.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/dashboard/queries/platform-console-data.util.ts"],"sourcesContent":["/**\n * Shared helpers for Platform Console dashboard queries (entity counts + insight windows).\n */\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';\nimport { runtimeQueryCollectionData } from '@acorex-platform/framework-shared/core';\nimport { AXMSystemInsightQueryKeys } from '@acorex-platform/module-system-insight-client/contracts';\n\n//#region ----- Entity helpers -----\n\nexport async function queryEntityTotal(\n entityService: AXPEntityService,\n moduleName: string,\n entityName: string,\n): Promise<number> {\n const data = entityService.withEntity(moduleName, entityName).data();\n const result = await data.query({ skip: 0, take: 1 });\n return typeof result.total === 'number' ? result.total : (result.items?.length ?? 0);\n}\n\nexport async function queryEntityItems(\n entityService: AXPEntityService,\n moduleName: string,\n entityName: string,\n take = 5000,\n): Promise<Record<string, unknown>[]> {\n const data = entityService.withEntity(moduleName, entityName).data();\n const result = await data.query({ skip: 0, take });\n return (result.items ?? []) as unknown as Record<string, unknown>[];\n}\n\nexport function resolveDisplayTitle(value: unknown): string {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n const map = value as Record<string, string>;\n return map['en-US'] || map['fa-IR'] || Object.values(map).find((v) => typeof v === 'string' && v) || '';\n }\n return String(value);\n}\n\nexport function titleCaseStatus(statusId: string): string {\n if (!statusId) {\n return 'Unknown';\n }\n return statusId\n .split(/[-_]/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n\n//#endregion\n\n//#region ----- System insight errors -----\n\nfunction insightTimeFilter(from: Date, to: Date): Record<string, unknown> {\n return {\n logic: 'and',\n filters: [\n { field: 'from', operator: { type: 'equal' }, value: from.toISOString() },\n { field: 'to', operator: { type: 'equal' }, value: to.toISOString() },\n ],\n };\n}\n\n/** Counts SystemInsight error events in `[from, to)` via the remote ErrorEvent:List query. */\nexport async function countInsightErrors(\n queryExecutor: AXPQueryExecutor,\n from: Date,\n to: Date,\n): Promise<number> {\n try {\n const result = await queryExecutor.fetch<Record<string, unknown>, unknown>(\n AXMSystemInsightQueryKeys.ErrorEvent.List,\n {\n skip: 0,\n take: 1,\n filter: insightTimeFilter(from, to),\n },\n );\n const page = runtimeQueryCollectionData(result);\n return typeof page?.total === 'number' ? page.total : (page?.items?.length ?? 0);\n } catch {\n return 0;\n }\n}\n\n//#endregion\n\n//#region ----- Chart colors -----\n\nexport const PLATFORM_CHART_COLORS = [\n '#43b57f',\n '#3b82f6',\n '#f59e0b',\n '#ef4444',\n '#8b5cf6',\n '#0ea5e9',\n '#64748b',\n] as const;\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-platform-management-client-platform-console-kpi.queries-BkPdhVq_.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/dashboard/queries/platform-console-kpi.queries.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessObject,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXPKpiStatCardQueryResult } from '@acorex-platform/module-dashboard-management-contracts';\n\nimport { Injectable, inject } from '@angular/core';\nimport { countInsightErrors, queryEntityTotal } from './platform-console-data.util';\n\n//#endregion\n\n//#region ----- Tenants KPI -----\n\n/** Live KPI: total rows in TenantManagement.Tenant. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformTenantsKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'TenantManagement', 'Tenant');\n return runtimeQuerySuccessObject({\n title: 'Tenants',\n value,\n icon: 'fa-light fa-building',\n iconTone: 'primary',\n });\n } catch (error) {\n return runtimeQueryFailure(error instanceof Error ? error.message : 'Failed to load tenants KPI');\n }\n }\n}\n\n//#endregion\n\n//#region ----- Users KPI -----\n\n/** Live KPI: total memberships in TenantManagement.TenantUser (platform-wide). */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformUsersKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'TenantManagement', 'TenantUser');\n return runtimeQuerySuccessObject({\n title: 'Users',\n value,\n icon: 'fa-light fa-users',\n iconTone: 'info',\n });\n } catch (error) {\n return runtimeQueryFailure(error instanceof Error ? error.message : 'Failed to load users KPI');\n }\n }\n}\n\n//#endregion\n\n//#region ----- Applications KPI -----\n\n/** Live KPI: total rows in ApplicationManagement.Application. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformApplicationsKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'ApplicationManagement', 'Application');\n return runtimeQuerySuccessObject({\n title: 'Applications',\n value,\n icon: 'fa-light fa-grid-2',\n iconTone: 'secondary',\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load applications KPI',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Errors KPI -----\n\n/** Live KPI: SystemInsight error events in the last 24 hours vs prior 24 hours. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformErrorsKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly queryExecutor = inject(AXPQueryExecutor);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const now = new Date();\n const dayMs = 24 * 60 * 60 * 1000;\n const from24h = new Date(now.getTime() - dayMs);\n const from48h = new Date(now.getTime() - 2 * dayMs);\n\n const [current, previous] = await Promise.all([\n countInsightErrors(this.queryExecutor, from24h, now),\n countInsightErrors(this.queryExecutor, from48h, from24h),\n ]);\n\n const delta = current - previous;\n const trendValue = delta === 0 ? '0' : delta > 0 ? `+${delta}` : String(delta);\n\n return runtimeQuerySuccessObject({\n title: 'Errors (24h)',\n value: current,\n icon: 'fa-light fa-triangle-exclamation',\n iconTone: current > 0 ? 'danger' : 'success',\n trendValue,\n trendLabel: 'vs prior day',\n trendStatus: delta > 0 ? 'danger' : delta < 0 ? 'success' : 'neutral',\n titleBadgeText: '24h',\n titleBadgeTone: 'warning',\n });\n } catch (error) {\n return runtimeQueryFailure(error instanceof Error ? error.message : 'Failed to load errors KPI');\n }\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-platform-console-kpi.queries-BkPdhVq_.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/dashboard/queries/platform-console-kpi.queries.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessObject,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXPKpiStatCardQueryResult } from '@acorex-platform/module-dashboard-management-client/contracts';\n\nimport { Injectable, inject } from '@angular/core';\nimport { countInsightErrors, queryEntityTotal } from './platform-console-data.util';\n\n//#endregion\n\n//#region ----- Tenants KPI -----\n\n/** Live KPI: total rows in TenantManagement.Tenant. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformTenantsKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'TenantManagement', 'Tenant');\n return runtimeQuerySuccessObject({\n title: 'Tenants',\n value,\n icon: 'fa-light fa-building',\n iconTone: 'primary',\n });\n } catch (error) {\n return runtimeQueryFailure(error instanceof Error ? error.message : 'Failed to load tenants KPI');\n }\n }\n}\n\n//#endregion\n\n//#region ----- Users KPI -----\n\n/** Live KPI: total memberships in TenantManagement.TenantUser (platform-wide). */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformUsersKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'TenantManagement', 'TenantUser');\n return runtimeQuerySuccessObject({\n title: 'Users',\n value,\n icon: 'fa-light fa-users',\n iconTone: 'info',\n });\n } catch (error) {\n return runtimeQueryFailure(error instanceof Error ? error.message : 'Failed to load users KPI');\n }\n }\n}\n\n//#endregion\n\n//#region ----- Applications KPI -----\n\n/** Live KPI: total rows in ApplicationManagement.Application. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformApplicationsKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'ApplicationManagement', 'Application');\n return runtimeQuerySuccessObject({\n title: 'Applications',\n value,\n icon: 'fa-light fa-grid-2',\n iconTone: 'secondary',\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load applications KPI',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Errors KPI -----\n\n/** Live KPI: SystemInsight error events in the last 24 hours vs prior 24 hours. */\n@Injectable({ providedIn: 'root' })\nexport class AXMPlatformErrorsKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly queryExecutor = inject(AXPQueryExecutor);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const now = new Date();\n const dayMs = 24 * 60 * 60 * 1000;\n const from24h = new Date(now.getTime() - dayMs);\n const from48h = new Date(now.getTime() - 2 * dayMs);\n\n const [current, previous] = await Promise.all([\n countInsightErrors(this.queryExecutor, from24h, now),\n countInsightErrors(this.queryExecutor, from48h, from24h),\n ]);\n\n const delta = current - previous;\n const trendValue = delta === 0 ? '0' : delta > 0 ? `+${delta}` : String(delta);\n\n return runtimeQuerySuccessObject({\n title: 'Errors (24h)',\n value: current,\n icon: 'fa-light fa-triangle-exclamation',\n iconTone: current > 0 ? 'danger' : 'success',\n trendValue,\n trendLabel: 'vs prior day',\n trendStatus: delta > 0 ? 'danger' : delta < 0 ? 'success' : 'neutral',\n titleBadgeText: '24h',\n titleBadgeTone: 'warning',\n });\n } catch (error) {\n return runtimeQueryFailure(error instanceof Error ? error.message : 'Failed to load errors KPI');\n }\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,18 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-platform-management-client",
3
- "version": "0.0.21",
3
+ "version": "0.0.24",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
+ "@acorex-platform/module-dashboard-management-client": "0.0.24",
7
+ "@acorex-platform/module-system-insight-client": "0.0.24",
6
8
  "@angular/common": "^21.0.0",
7
- "@angular/core": "^21.0.0"
9
+ "@angular/core": "^21.0.0",
10
+ "@angular/service-worker": "^21.0.0"
11
+ },
12
+ "peerDependenciesMeta": {
13
+ "@angular/service-worker": {
14
+ "optional": true
15
+ }
8
16
  },
9
17
  "dependencies": {
10
18
  "tslib": "^2.3.0"