@burdenoff/microfe-assethandler 2026.608.1 → 2026.625.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assethandler/pages/AiPredictionsPage.js +49 -43
- package/dist/assethandler/pages/AiPredictionsPage.js.map +1 -1
- package/dist/assethandler/pages/AnalyticsPage.js +335 -314
- package/dist/assethandler/pages/AnalyticsPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +66 -66
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +92 -92
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetCreatePage.js +124 -124
- package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetDetailPage.js +191 -191
- package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetEditPage.js +154 -154
- package/dist/assethandler/pages/AssetsAssetEditPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetListPage.js +212 -206
- package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetTrackingPage.js +70 -70
- package/dist/assethandler/pages/AssetsAssetTrackingPage.js.map +1 -1
- package/dist/assethandler/pages/AuditTrailPage.js +127 -111
- package/dist/assethandler/pages/AuditTrailPage.js.map +1 -1
- package/dist/assethandler/pages/CmdbBrowserPage.js +38 -32
- package/dist/assethandler/pages/CmdbBrowserPage.js.map +1 -1
- package/dist/assethandler/pages/DashboardPage.js +222 -205
- package/dist/assethandler/pages/DashboardPage.js.map +1 -1
- package/dist/assethandler/pages/DigitalTwinPage.js +33 -27
- package/dist/assethandler/pages/DigitalTwinPage.js.map +1 -1
- package/dist/assethandler/pages/DiscoveryJobsPage.js +56 -50
- package/dist/assethandler/pages/DiscoveryJobsPage.js.map +1 -1
- package/dist/assethandler/pages/EsgDashboardPage.js +50 -44
- package/dist/assethandler/pages/EsgDashboardPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js +79 -79
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceFinanceHubPage.js +126 -126
- package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +73 -73
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/IotDevicesPage.js +41 -35
- package/dist/assethandler/pages/IotDevicesPage.js.map +1 -1
- package/dist/assethandler/pages/ItilChangeDetailPage.js +103 -103
- package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -1
- package/dist/assethandler/pages/ItilChangeManagementPage.js +70 -70
- package/dist/assethandler/pages/ItilChangeManagementPage.js.map +1 -1
- package/dist/assethandler/pages/ItilIncidentDetailPage.js +105 -105
- package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -1
- package/dist/assethandler/pages/ItilIncidentManagementPage.js +103 -103
- package/dist/assethandler/pages/ItilIncidentManagementPage.js.map +1 -1
- package/dist/assethandler/pages/ItilItilhubPage.js +134 -134
- package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -1
- package/dist/assethandler/pages/ItilProblemDetailPage.js +83 -83
- package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -1
- package/dist/assethandler/pages/ItilProblemManagementPage.js +67 -67
- package/dist/assethandler/pages/ItilProblemManagementPage.js.map +1 -1
- package/dist/assethandler/pages/KnowledgeBasePage.js +50 -44
- package/dist/assethandler/pages/KnowledgeBasePage.js.map +1 -1
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +73 -73
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js.map +1 -1
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +49 -49
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js.map +1 -1
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js +75 -75
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js +60 -60
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js.map +1 -1
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js +43 -43
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js.map +1 -1
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js +63 -63
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js.map +1 -1
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +89 -89
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/OperationsOperationsHubPage.js +101 -101
- package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -1
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +80 -80
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -1
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +129 -113
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js.map +1 -1
- package/dist/assethandler/pages/ProvenancePage.js +56 -51
- package/dist/assethandler/pages/ProvenancePage.js.map +1 -1
- package/dist/assethandler/pages/ReportsReportBuilderPage.js +75 -75
- package/dist/assethandler/pages/ReportsReportBuilderPage.js.map +1 -1
- package/dist/assethandler/pages/ReportsReportsDashboardPage.js +83 -83
- package/dist/assethandler/pages/ReportsReportsDashboardPage.js.map +1 -1
- package/dist/assethandler/pages/ReportsReportsListPage.js +45 -45
- package/dist/assethandler/pages/ReportsReportsListPage.js.map +1 -1
- package/dist/assethandler/pages/SamLicensesPage.js +38 -32
- package/dist/assethandler/pages/SamLicensesPage.js.map +1 -1
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js +56 -56
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js +65 -65
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -1
- package/dist/assethandler/pages/SecurityScheduleBackupPage.js +64 -64
- package/dist/assethandler/pages/SecurityScheduleBackupPage.js.map +1 -1
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +62 -62
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -1
- package/dist/assethandler/pages/SecuritySecurityHubPage.js +130 -130
- package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -1
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +120 -120
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -1
- package/dist/assethandler/pages/TransactionsTransactionListPage.js +143 -127
- package/dist/assethandler/pages/TransactionsTransactionListPage.js.map +1 -1
- package/dist/assethandler/pages/UsersPage.js +125 -109
- package/dist/assethandler/pages/UsersPage.js.map +1 -1
- package/dist/assethandler/pages/UsersUserCreatePage.js +67 -67
- package/dist/assethandler/pages/UsersUserCreatePage.js.map +1 -1
- package/dist/assethandler/pages/UsersUserManagementHubPage.js +145 -132
- package/dist/assethandler/pages/UsersUserManagementHubPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js +78 -78
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js +123 -107
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js +65 -65
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js +95 -83
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,174 +1,189 @@
|
|
|
1
1
|
import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
|
|
2
2
|
import { useState as t } from "react";
|
|
3
3
|
import { Activity as n, ArrowUpRight as r, BarChart3 as i, Box as a, DollarSign as o, Download as s, PieChart as c, TrendingDown as l } from "lucide-react";
|
|
4
|
-
import { Badge as u,
|
|
5
|
-
import { jsx as
|
|
4
|
+
import { Badge as u, CTAOverflowMenu as d, Card as f, CardContent as p, CardDescription as m, CardHeader as h, CardTitle as g, EmphasisPanel as _, GlassCard as v, GradientText as y, Separator as b, Tabs as x, TabsContent as S, TabsList as C, TabsTrigger as w } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
import { jsx as T, jsxs as E } from "react/jsx-runtime";
|
|
6
6
|
//#region src/assethandler/pages/AnalyticsPage.tsx
|
|
7
|
-
function
|
|
8
|
-
let { assets:
|
|
7
|
+
function D() {
|
|
8
|
+
let { assets: D, portfolio: O, transactions: k, incidents: A, maintenanceRecords: j, workflows: M } = e(), [N, P] = t("30d"), F = D.reduce((e, t) => e + t.currentValue, 0), I = D.reduce((e, t) => e + t.value, 0), L = I - F, R = I > 0 ? (L / I * 100).toFixed(1) : "0", z = D.length > 0 ? Math.round(F / D.length) : 0, B = D.reduce((e, t) => {
|
|
9
9
|
let n = t.category.replace("_", " ");
|
|
10
10
|
return e[n] || (e[n] = {
|
|
11
11
|
count: 0,
|
|
12
12
|
value: 0
|
|
13
13
|
}), e[n].count++, e[n].value += t.currentValue, e;
|
|
14
|
-
}, {}),
|
|
14
|
+
}, {}), V = D.reduce((e, t) => (e[t.status] = (e[t.status] || 0) + 1, e), {}), H = D.reduce((e, t) => (e[t.department] || (e[t.department] = {
|
|
15
15
|
count: 0,
|
|
16
16
|
value: 0
|
|
17
|
-
}), e[t.department].count++, e[t.department].value += t.currentValue, e), {}),
|
|
18
|
-
return /* @__PURE__ */
|
|
17
|
+
}), e[t.department].count++, e[t.department].value += t.currentValue, e), {}), U = A.filter((e) => e.status === "resolved" || e.status === "closed"), W = A.filter((e) => e.slaBreached), G = j.filter((e) => e.status === "completed"), K = j.reduce((e, t) => e + t.cost, 0);
|
|
18
|
+
return /* @__PURE__ */ E("div", {
|
|
19
19
|
className: "space-y-6 p-6",
|
|
20
|
-
children: [/* @__PURE__ */
|
|
20
|
+
children: [/* @__PURE__ */ E("div", {
|
|
21
21
|
className: "flex items-center justify-between",
|
|
22
|
-
children: [/* @__PURE__ */
|
|
22
|
+
children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("h1", {
|
|
23
23
|
className: "text-3xl font-bold",
|
|
24
|
-
children: "Analytics & Business Intelligence"
|
|
25
|
-
}), /* @__PURE__ */
|
|
26
|
-
className: "text-sm text-
|
|
24
|
+
children: /* @__PURE__ */ T(y, { children: "Analytics & Business Intelligence" })
|
|
25
|
+
}), /* @__PURE__ */ T("p", {
|
|
26
|
+
className: "text-sm text-text-secondary mt-1",
|
|
27
27
|
children: "Comprehensive asset management analytics and insights"
|
|
28
|
-
})] }), /* @__PURE__ */
|
|
28
|
+
})] }), /* @__PURE__ */ E("div", {
|
|
29
29
|
className: "flex gap-2",
|
|
30
|
-
children: [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
]
|
|
30
|
+
children: [/* @__PURE__ */ E("select", {
|
|
31
|
+
value: N,
|
|
32
|
+
onChange: (e) => P(e.target.value),
|
|
33
|
+
className: "rounded-md border border-border-default bg-bg-surface px-3 py-1.5 text-sm",
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ T("option", {
|
|
36
|
+
value: "7d",
|
|
37
|
+
children: "Last 7 days"
|
|
38
|
+
}),
|
|
39
|
+
/* @__PURE__ */ T("option", {
|
|
40
|
+
value: "30d",
|
|
41
|
+
children: "Last 30 days"
|
|
42
|
+
}),
|
|
43
|
+
/* @__PURE__ */ T("option", {
|
|
44
|
+
value: "90d",
|
|
45
|
+
children: "Last 90 days"
|
|
46
|
+
}),
|
|
47
|
+
/* @__PURE__ */ T("option", {
|
|
48
|
+
value: "1y",
|
|
49
|
+
children: "Last year"
|
|
50
|
+
})
|
|
51
|
+
]
|
|
52
|
+
}), /* @__PURE__ */ T(d, {
|
|
53
|
+
primary: {
|
|
54
|
+
label: "Generate Report",
|
|
55
|
+
onSelect: () => {}
|
|
56
|
+
},
|
|
57
|
+
actions: [{
|
|
58
|
+
label: "Export",
|
|
59
|
+
onSelect: () => {},
|
|
60
|
+
icon: /* @__PURE__ */ T(s, { className: "h-4 w-4" })
|
|
61
|
+
}]
|
|
62
|
+
})]
|
|
64
63
|
})]
|
|
65
|
-
}), /* @__PURE__ */
|
|
64
|
+
}), /* @__PURE__ */ E(x, {
|
|
66
65
|
defaultValue: "overview",
|
|
67
66
|
children: [
|
|
68
|
-
/* @__PURE__ */ C
|
|
69
|
-
/* @__PURE__ */
|
|
67
|
+
/* @__PURE__ */ E(C, { children: [
|
|
68
|
+
/* @__PURE__ */ T(w, {
|
|
70
69
|
value: "overview",
|
|
71
70
|
children: "Overview"
|
|
72
71
|
}),
|
|
73
|
-
/* @__PURE__ */
|
|
72
|
+
/* @__PURE__ */ T(w, {
|
|
74
73
|
value: "financial",
|
|
75
74
|
children: "Financial"
|
|
76
75
|
}),
|
|
77
|
-
/* @__PURE__ */
|
|
76
|
+
/* @__PURE__ */ T(w, {
|
|
78
77
|
value: "operational",
|
|
79
78
|
children: "Operational"
|
|
80
79
|
}),
|
|
81
|
-
/* @__PURE__ */
|
|
80
|
+
/* @__PURE__ */ T(w, {
|
|
82
81
|
value: "insights",
|
|
83
82
|
children: "Insights"
|
|
84
83
|
})
|
|
85
84
|
] }),
|
|
86
|
-
/* @__PURE__ */
|
|
85
|
+
/* @__PURE__ */ E(S, {
|
|
87
86
|
value: "overview",
|
|
88
87
|
className: "space-y-6 mt-6",
|
|
89
88
|
children: [
|
|
90
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ E("div", {
|
|
91
90
|
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
|
|
92
91
|
children: [
|
|
93
|
-
/* @__PURE__ */
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
className: "
|
|
137
|
-
children: [
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
className: "
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
92
|
+
/* @__PURE__ */ E(v, {
|
|
93
|
+
treatment: "metric",
|
|
94
|
+
className: "border-border-seam",
|
|
95
|
+
children: [/* @__PURE__ */ E(h, {
|
|
96
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
97
|
+
children: [/* @__PURE__ */ T(g, {
|
|
98
|
+
className: "text-sm font-medium",
|
|
99
|
+
children: "Total Portfolio Value"
|
|
100
|
+
}), /* @__PURE__ */ T(o, { className: "h-4 w-4 text-text-secondary" })]
|
|
101
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ E("div", {
|
|
102
|
+
className: "text-2xl font-bold tabular-nums",
|
|
103
|
+
children: ["$", O.totalValue.toLocaleString()]
|
|
104
|
+
}), /* @__PURE__ */ E("p", {
|
|
105
|
+
className: "text-xs text-text-secondary flex items-center mt-1",
|
|
106
|
+
children: [
|
|
107
|
+
/* @__PURE__ */ T(r, { className: "mr-1 h-3 w-3 text-status-success-text" }),
|
|
108
|
+
/* @__PURE__ */ T("span", {
|
|
109
|
+
className: "text-status-success-text",
|
|
110
|
+
children: "+5.6%"
|
|
111
|
+
}),
|
|
112
|
+
" from last quarter"
|
|
113
|
+
]
|
|
114
|
+
})] })]
|
|
115
|
+
}),
|
|
116
|
+
/* @__PURE__ */ E(v, {
|
|
117
|
+
treatment: "metric",
|
|
118
|
+
className: "border-border-seam",
|
|
119
|
+
children: [/* @__PURE__ */ E(h, {
|
|
120
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
121
|
+
children: [/* @__PURE__ */ T(g, {
|
|
122
|
+
className: "text-sm font-medium",
|
|
123
|
+
children: "Total Depreciation"
|
|
124
|
+
}), /* @__PURE__ */ T(l, { className: "h-4 w-4 text-text-secondary" })]
|
|
125
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ E("div", {
|
|
126
|
+
className: "text-2xl font-bold text-status-error-text",
|
|
127
|
+
children: ["-$", L.toLocaleString()]
|
|
128
|
+
}), /* @__PURE__ */ E("p", {
|
|
129
|
+
className: "text-xs text-text-secondary",
|
|
130
|
+
children: [R, "% of original value"]
|
|
131
|
+
})] })]
|
|
132
|
+
}),
|
|
133
|
+
/* @__PURE__ */ E(v, {
|
|
134
|
+
treatment: "metric",
|
|
135
|
+
className: "border-border-seam",
|
|
136
|
+
children: [/* @__PURE__ */ E(h, {
|
|
137
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
138
|
+
children: [/* @__PURE__ */ T(g, {
|
|
139
|
+
className: "text-sm font-medium",
|
|
140
|
+
children: "Total Assets"
|
|
141
|
+
}), /* @__PURE__ */ T(a, { className: "h-4 w-4 text-text-secondary" })]
|
|
142
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ T("div", {
|
|
143
|
+
className: "text-2xl font-bold tabular-nums",
|
|
144
|
+
children: O.totalAssets
|
|
145
|
+
}), /* @__PURE__ */ E("p", {
|
|
146
|
+
className: "text-xs text-text-secondary",
|
|
147
|
+
children: [D.filter((e) => e.status === "active").length, " currently active"]
|
|
148
|
+
})] })]
|
|
149
|
+
}),
|
|
150
|
+
/* @__PURE__ */ E(v, {
|
|
151
|
+
treatment: "metric",
|
|
152
|
+
className: "border-border-seam",
|
|
153
|
+
children: [/* @__PURE__ */ E(h, {
|
|
154
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
155
|
+
children: [/* @__PURE__ */ T(g, {
|
|
156
|
+
className: "text-sm font-medium",
|
|
157
|
+
children: "Avg. Asset Value"
|
|
158
|
+
}), /* @__PURE__ */ T(i, { className: "h-4 w-4 text-text-secondary" })]
|
|
159
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ E("div", {
|
|
160
|
+
className: "text-2xl font-bold tabular-nums",
|
|
161
|
+
children: ["$", z.toLocaleString()]
|
|
162
|
+
}), /* @__PURE__ */ T("p", {
|
|
163
|
+
className: "text-xs text-text-secondary",
|
|
164
|
+
children: "Across all categories"
|
|
165
|
+
})] })]
|
|
166
|
+
})
|
|
152
167
|
]
|
|
153
168
|
}),
|
|
154
|
-
/* @__PURE__ */
|
|
169
|
+
/* @__PURE__ */ E("div", {
|
|
155
170
|
className: "grid gap-6 lg:grid-cols-2",
|
|
156
|
-
children: [/* @__PURE__ */
|
|
171
|
+
children: [/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ E(h, { children: [/* @__PURE__ */ E(g, {
|
|
157
172
|
className: "flex items-center gap-2",
|
|
158
|
-
children: [/* @__PURE__ */
|
|
159
|
-
}), /* @__PURE__ */
|
|
173
|
+
children: [/* @__PURE__ */ T(c, { className: "h-4 w-4" }), "Category Distribution"]
|
|
174
|
+
}), /* @__PURE__ */ T(m, { children: "Assets by category with values" })] }), /* @__PURE__ */ T(p, { children: /* @__PURE__ */ T("div", {
|
|
160
175
|
className: "space-y-3",
|
|
161
|
-
children: Object.entries(
|
|
162
|
-
let n = Math.round(t.count /
|
|
163
|
-
return /* @__PURE__ */
|
|
176
|
+
children: Object.entries(B).sort((e, t) => t[1].value - e[1].value).map(([e, t]) => {
|
|
177
|
+
let n = Math.round(t.count / D.length * 100);
|
|
178
|
+
return /* @__PURE__ */ E("div", {
|
|
164
179
|
className: "space-y-1",
|
|
165
|
-
children: [/* @__PURE__ */
|
|
180
|
+
children: [/* @__PURE__ */ E("div", {
|
|
166
181
|
className: "flex items-center justify-between text-sm",
|
|
167
|
-
children: [/* @__PURE__ */
|
|
182
|
+
children: [/* @__PURE__ */ T("span", {
|
|
168
183
|
className: "font-medium capitalize",
|
|
169
184
|
children: e
|
|
170
|
-
}), /* @__PURE__ */
|
|
171
|
-
className: "text-
|
|
185
|
+
}), /* @__PURE__ */ E("span", {
|
|
186
|
+
className: "text-text-secondary",
|
|
172
187
|
children: [
|
|
173
188
|
t.count,
|
|
174
189
|
" · $",
|
|
@@ -176,40 +191,40 @@ function w() {
|
|
|
176
191
|
"K"
|
|
177
192
|
]
|
|
178
193
|
})]
|
|
179
|
-
}), /* @__PURE__ */
|
|
180
|
-
className: "h-2 rounded-full bg-
|
|
181
|
-
children: /* @__PURE__ */
|
|
182
|
-
className: "h-full rounded-full bg-primary",
|
|
194
|
+
}), /* @__PURE__ */ T("div", {
|
|
195
|
+
className: "h-2 rounded-full bg-bg-sunken overflow-hidden",
|
|
196
|
+
children: /* @__PURE__ */ T("div", {
|
|
197
|
+
className: "h-full rounded-full bg-action-primary-bg",
|
|
183
198
|
style: { width: `${n}%` }
|
|
184
199
|
})
|
|
185
200
|
})]
|
|
186
201
|
}, e);
|
|
187
202
|
})
|
|
188
|
-
}) })] }), /* @__PURE__ */
|
|
203
|
+
}) })] }), /* @__PURE__ */ E(f, { children: [/* @__PURE__ */ E(h, { children: [/* @__PURE__ */ E(g, {
|
|
189
204
|
className: "flex items-center gap-2",
|
|
190
|
-
children: [/* @__PURE__ */
|
|
191
|
-
}), /* @__PURE__ */
|
|
192
|
-
/* @__PURE__ */
|
|
205
|
+
children: [/* @__PURE__ */ T(n, { className: "h-4 w-4" }), "Status Breakdown"]
|
|
206
|
+
}), /* @__PURE__ */ T(m, { children: "Current asset status distribution" })] }), /* @__PURE__ */ E(p, { children: [
|
|
207
|
+
/* @__PURE__ */ T("div", {
|
|
193
208
|
className: "space-y-3",
|
|
194
|
-
children: Object.entries(
|
|
195
|
-
let n = Math.round(t /
|
|
196
|
-
return /* @__PURE__ */
|
|
209
|
+
children: Object.entries(V).map(([e, t]) => {
|
|
210
|
+
let n = Math.round(t / D.length * 100);
|
|
211
|
+
return /* @__PURE__ */ E("div", {
|
|
197
212
|
className: "flex items-center justify-between",
|
|
198
|
-
children: [/* @__PURE__ */
|
|
213
|
+
children: [/* @__PURE__ */ T("div", {
|
|
199
214
|
className: "flex items-center gap-2",
|
|
200
|
-
children: /* @__PURE__ */
|
|
215
|
+
children: /* @__PURE__ */ T(u, {
|
|
201
216
|
variant: e === "active" ? "default" : e === "under_maintenance" ? "secondary" : "outline",
|
|
202
217
|
children: e.replace("_", " ")
|
|
203
218
|
})
|
|
204
|
-
}), /* @__PURE__ */
|
|
219
|
+
}), /* @__PURE__ */ E("div", {
|
|
205
220
|
className: "flex items-center gap-3",
|
|
206
|
-
children: [/* @__PURE__ */
|
|
207
|
-
className: "h-2 w-24 rounded-full bg-
|
|
208
|
-
children: /* @__PURE__ */
|
|
209
|
-
className: "h-full rounded-full bg-primary",
|
|
221
|
+
children: [/* @__PURE__ */ T("div", {
|
|
222
|
+
className: "h-2 w-24 rounded-full bg-bg-sunken overflow-hidden",
|
|
223
|
+
children: /* @__PURE__ */ T("div", {
|
|
224
|
+
className: "h-full rounded-full bg-action-primary-bg",
|
|
210
225
|
style: { width: `${n}%` }
|
|
211
226
|
})
|
|
212
|
-
}), /* @__PURE__ */
|
|
227
|
+
}), /* @__PURE__ */ T("span", {
|
|
213
228
|
className: "text-sm font-medium w-8 text-right",
|
|
214
229
|
children: t
|
|
215
230
|
})]
|
|
@@ -217,43 +232,43 @@ function w() {
|
|
|
217
232
|
}, e);
|
|
218
233
|
})
|
|
219
234
|
}),
|
|
220
|
-
/* @__PURE__ */
|
|
221
|
-
/* @__PURE__ */
|
|
235
|
+
/* @__PURE__ */ T(b, { className: "my-4" }),
|
|
236
|
+
/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("h4", {
|
|
222
237
|
className: "text-sm font-medium mb-3",
|
|
223
238
|
children: "By Department"
|
|
224
|
-
}), /* @__PURE__ */
|
|
239
|
+
}), /* @__PURE__ */ T("div", {
|
|
225
240
|
className: "space-y-2",
|
|
226
|
-
children: Object.entries(
|
|
241
|
+
children: Object.entries(H).sort((e, t) => t[1].count - e[1].count).slice(0, 5).map(([e, t]) => /* @__PURE__ */ E("div", {
|
|
227
242
|
className: "flex items-center justify-between text-sm",
|
|
228
|
-
children: [/* @__PURE__ */
|
|
229
|
-
className: "text-
|
|
243
|
+
children: [/* @__PURE__ */ T("span", { children: e }), /* @__PURE__ */ E("span", {
|
|
244
|
+
className: "text-text-secondary",
|
|
230
245
|
children: [t.count, " assets"]
|
|
231
246
|
})]
|
|
232
247
|
}, e))
|
|
233
248
|
})] })
|
|
234
249
|
] })] })]
|
|
235
250
|
}),
|
|
236
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ E(h, { children: [/* @__PURE__ */ T(g, { children: "Depreciation Trend" }), /* @__PURE__ */ T(m, { children: "Portfolio depreciation over the last 6 months" })] }), /* @__PURE__ */ T(p, { children: /* @__PURE__ */ T("div", {
|
|
237
252
|
className: "flex items-end gap-2 h-40",
|
|
238
|
-
children:
|
|
239
|
-
let t = Math.max(...
|
|
240
|
-
return /* @__PURE__ */
|
|
253
|
+
children: O.depreciationTrend.map((e) => {
|
|
254
|
+
let t = Math.max(...O.depreciationTrend.map((e) => e.value)), n = t > 0 ? e.value / t * 100 : 0;
|
|
255
|
+
return /* @__PURE__ */ E("div", {
|
|
241
256
|
className: "flex-1 flex flex-col items-center gap-1",
|
|
242
257
|
children: [
|
|
243
|
-
/* @__PURE__ */
|
|
244
|
-
className: "text-[10px] text-
|
|
258
|
+
/* @__PURE__ */ E("span", {
|
|
259
|
+
className: "text-[10px] text-text-secondary",
|
|
245
260
|
children: [
|
|
246
261
|
"$",
|
|
247
262
|
(e.value / 1e6).toFixed(2),
|
|
248
263
|
"M"
|
|
249
264
|
]
|
|
250
265
|
}),
|
|
251
|
-
/* @__PURE__ */
|
|
252
|
-
className: "w-full bg-primary/80 rounded-t",
|
|
266
|
+
/* @__PURE__ */ T("div", {
|
|
267
|
+
className: "w-full bg-action-primary-bg/80 rounded-t",
|
|
253
268
|
style: { height: `${n}%` }
|
|
254
269
|
}),
|
|
255
|
-
/* @__PURE__ */
|
|
256
|
-
className: "text-[10px] text-
|
|
270
|
+
/* @__PURE__ */ T("span", {
|
|
271
|
+
className: "text-[10px] text-text-secondary",
|
|
257
272
|
children: e.month.replace(" 20", "'")
|
|
258
273
|
})
|
|
259
274
|
]
|
|
@@ -262,135 +277,135 @@ function w() {
|
|
|
262
277
|
}) })] })
|
|
263
278
|
]
|
|
264
279
|
}),
|
|
265
|
-
/* @__PURE__ */
|
|
280
|
+
/* @__PURE__ */ E(S, {
|
|
266
281
|
value: "financial",
|
|
267
282
|
className: "space-y-6 mt-6",
|
|
268
283
|
children: [
|
|
269
|
-
/* @__PURE__ */
|
|
284
|
+
/* @__PURE__ */ E("div", {
|
|
270
285
|
className: "grid gap-4 md:grid-cols-3",
|
|
271
286
|
children: [
|
|
272
|
-
/* @__PURE__ */
|
|
287
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ T(h, {
|
|
273
288
|
className: "pb-2",
|
|
274
|
-
children: /* @__PURE__ */
|
|
289
|
+
children: /* @__PURE__ */ T(g, {
|
|
275
290
|
className: "text-sm font-medium",
|
|
276
291
|
children: "Total Transactions"
|
|
277
292
|
})
|
|
278
|
-
}), /* @__PURE__ */
|
|
279
|
-
className: "text-2xl font-bold",
|
|
280
|
-
children:
|
|
281
|
-
}), /* @__PURE__ */
|
|
282
|
-
className: "text-xs text-
|
|
293
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ T("div", {
|
|
294
|
+
className: "text-2xl font-bold tabular-nums",
|
|
295
|
+
children: k.length
|
|
296
|
+
}), /* @__PURE__ */ E("p", {
|
|
297
|
+
className: "text-xs text-text-secondary",
|
|
283
298
|
children: [
|
|
284
299
|
"$",
|
|
285
|
-
|
|
300
|
+
k.reduce((e, t) => e + Math.abs(t.amount), 0).toLocaleString(),
|
|
286
301
|
" total value"
|
|
287
302
|
]
|
|
288
303
|
})] })] }),
|
|
289
|
-
/* @__PURE__ */
|
|
304
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ T(h, {
|
|
290
305
|
className: "pb-2",
|
|
291
|
-
children: /* @__PURE__ */
|
|
306
|
+
children: /* @__PURE__ */ T(g, {
|
|
292
307
|
className: "text-sm font-medium",
|
|
293
308
|
children: "Maintenance Cost"
|
|
294
309
|
})
|
|
295
|
-
}), /* @__PURE__ */
|
|
296
|
-
className: "text-2xl font-bold",
|
|
297
|
-
children: ["$",
|
|
298
|
-
}), /* @__PURE__ */
|
|
299
|
-
className: "text-xs text-
|
|
300
|
-
children: [
|
|
310
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ E("div", {
|
|
311
|
+
className: "text-2xl font-bold tabular-nums",
|
|
312
|
+
children: ["$", K.toLocaleString()]
|
|
313
|
+
}), /* @__PURE__ */ E("p", {
|
|
314
|
+
className: "text-xs text-text-secondary",
|
|
315
|
+
children: [j.length, " maintenance records"]
|
|
301
316
|
})] })] }),
|
|
302
|
-
/* @__PURE__ */
|
|
317
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ T(h, {
|
|
303
318
|
className: "pb-2",
|
|
304
|
-
children: /* @__PURE__ */
|
|
319
|
+
children: /* @__PURE__ */ T(g, {
|
|
305
320
|
className: "text-sm font-medium",
|
|
306
321
|
children: "Acquisitions (6mo)"
|
|
307
322
|
})
|
|
308
|
-
}), /* @__PURE__ */
|
|
309
|
-
className: "text-2xl font-bold",
|
|
310
|
-
children:
|
|
311
|
-
}), /* @__PURE__ */
|
|
312
|
-
className: "text-xs text-
|
|
323
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ T("div", {
|
|
324
|
+
className: "text-2xl font-bold tabular-nums",
|
|
325
|
+
children: O.acquisitionTrend.reduce((e, t) => e + t.count, 0)
|
|
326
|
+
}), /* @__PURE__ */ E("p", {
|
|
327
|
+
className: "text-xs text-text-secondary",
|
|
313
328
|
children: [
|
|
314
329
|
"$",
|
|
315
|
-
(
|
|
330
|
+
(O.acquisitionTrend.reduce((e, t) => e + t.value, 0) / 1e3).toFixed(0),
|
|
316
331
|
"K total spend"
|
|
317
332
|
]
|
|
318
333
|
})] })] })
|
|
319
334
|
]
|
|
320
335
|
}),
|
|
321
|
-
/* @__PURE__ */
|
|
336
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ E(h, { children: [/* @__PURE__ */ T(g, { children: "Acquisition Trend" }), /* @__PURE__ */ T(m, { children: "New assets acquired over the last 6 months" })] }), /* @__PURE__ */ T(p, { children: /* @__PURE__ */ T("div", {
|
|
322
337
|
className: "flex items-end gap-2 h-40",
|
|
323
|
-
children:
|
|
324
|
-
let t = Math.max(...
|
|
325
|
-
return /* @__PURE__ */
|
|
338
|
+
children: O.acquisitionTrend.map((e) => {
|
|
339
|
+
let t = Math.max(...O.acquisitionTrend.map((e) => e.count)), n = t > 0 ? e.count / t * 100 : 0;
|
|
340
|
+
return /* @__PURE__ */ E("div", {
|
|
326
341
|
className: "flex-1 flex flex-col items-center gap-1",
|
|
327
342
|
children: [
|
|
328
|
-
/* @__PURE__ */
|
|
329
|
-
className: "text-[10px] text-
|
|
343
|
+
/* @__PURE__ */ E("span", {
|
|
344
|
+
className: "text-[10px] text-text-secondary",
|
|
330
345
|
children: [e.count, " units"]
|
|
331
346
|
}),
|
|
332
|
-
/* @__PURE__ */
|
|
333
|
-
className: "w-full bg-
|
|
347
|
+
/* @__PURE__ */ T("div", {
|
|
348
|
+
className: "w-full bg-status-success-bg rounded-t",
|
|
334
349
|
style: { height: `${n}%` }
|
|
335
350
|
}),
|
|
336
|
-
/* @__PURE__ */
|
|
337
|
-
className: "text-[10px] text-
|
|
351
|
+
/* @__PURE__ */ T("span", {
|
|
352
|
+
className: "text-[10px] text-text-secondary",
|
|
338
353
|
children: e.month.replace(" 20", "'")
|
|
339
354
|
})
|
|
340
355
|
]
|
|
341
356
|
}, e.month);
|
|
342
357
|
})
|
|
343
358
|
}) })] }),
|
|
344
|
-
/* @__PURE__ */
|
|
359
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ T(h, { children: /* @__PURE__ */ T(g, { children: "Recent Transactions" }) }), /* @__PURE__ */ T(p, { children: /* @__PURE__ */ T("div", {
|
|
345
360
|
className: "overflow-x-auto",
|
|
346
|
-
children: /* @__PURE__ */
|
|
361
|
+
children: /* @__PURE__ */ E("table", {
|
|
347
362
|
className: "w-full text-sm",
|
|
348
|
-
children: [/* @__PURE__ */
|
|
363
|
+
children: [/* @__PURE__ */ T("thead", { children: /* @__PURE__ */ E("tr", {
|
|
349
364
|
className: "border-b",
|
|
350
365
|
children: [
|
|
351
|
-
/* @__PURE__ */
|
|
366
|
+
/* @__PURE__ */ T("th", {
|
|
352
367
|
className: "text-left py-2 font-medium",
|
|
353
368
|
children: "ID"
|
|
354
369
|
}),
|
|
355
|
-
/* @__PURE__ */
|
|
370
|
+
/* @__PURE__ */ T("th", {
|
|
356
371
|
className: "text-left py-2 font-medium",
|
|
357
372
|
children: "Type"
|
|
358
373
|
}),
|
|
359
|
-
/* @__PURE__ */
|
|
374
|
+
/* @__PURE__ */ T("th", {
|
|
360
375
|
className: "text-left py-2 font-medium",
|
|
361
376
|
children: "Description"
|
|
362
377
|
}),
|
|
363
|
-
/* @__PURE__ */
|
|
378
|
+
/* @__PURE__ */ T("th", {
|
|
364
379
|
className: "text-right py-2 font-medium",
|
|
365
380
|
children: "Amount"
|
|
366
381
|
}),
|
|
367
|
-
/* @__PURE__ */
|
|
382
|
+
/* @__PURE__ */ T("th", {
|
|
368
383
|
className: "text-left py-2 font-medium",
|
|
369
384
|
children: "Status"
|
|
370
385
|
})
|
|
371
386
|
]
|
|
372
|
-
}) }), /* @__PURE__ */
|
|
373
|
-
className: "border-b hover:bg-
|
|
387
|
+
}) }), /* @__PURE__ */ T("tbody", { children: k.slice(0, 5).map((e) => /* @__PURE__ */ E("tr", {
|
|
388
|
+
className: "border-b hover:bg-bg-sunken/50",
|
|
374
389
|
children: [
|
|
375
|
-
/* @__PURE__ */
|
|
390
|
+
/* @__PURE__ */ T("td", {
|
|
376
391
|
className: "py-2 font-mono text-xs",
|
|
377
392
|
children: e.id
|
|
378
393
|
}),
|
|
379
|
-
/* @__PURE__ */
|
|
394
|
+
/* @__PURE__ */ T("td", {
|
|
380
395
|
className: "py-2 capitalize",
|
|
381
396
|
children: e.type
|
|
382
397
|
}),
|
|
383
|
-
/* @__PURE__ */
|
|
398
|
+
/* @__PURE__ */ T("td", {
|
|
384
399
|
className: "py-2 truncate max-w-xs",
|
|
385
400
|
children: e.description
|
|
386
401
|
}),
|
|
387
|
-
/* @__PURE__ */
|
|
388
|
-
className: `py-2 text-right font-medium ${e.amount < 0 ? "text-
|
|
402
|
+
/* @__PURE__ */ E("td", {
|
|
403
|
+
className: `py-2 text-right font-medium ${e.amount < 0 ? "text-status-error-text" : ""}`,
|
|
389
404
|
children: ["$", Math.abs(e.amount).toLocaleString()]
|
|
390
405
|
}),
|
|
391
|
-
/* @__PURE__ */
|
|
406
|
+
/* @__PURE__ */ T("td", {
|
|
392
407
|
className: "py-2",
|
|
393
|
-
children: /* @__PURE__ */
|
|
408
|
+
children: /* @__PURE__ */ T(u, {
|
|
394
409
|
variant: "outline",
|
|
395
410
|
children: e.status
|
|
396
411
|
})
|
|
@@ -401,176 +416,182 @@ function w() {
|
|
|
401
416
|
}) })] })
|
|
402
417
|
]
|
|
403
418
|
}),
|
|
404
|
-
/* @__PURE__ */ S
|
|
419
|
+
/* @__PURE__ */ T(S, {
|
|
405
420
|
value: "operational",
|
|
406
421
|
className: "space-y-6 mt-6",
|
|
407
|
-
children: /* @__PURE__ */
|
|
422
|
+
children: /* @__PURE__ */ E("div", {
|
|
408
423
|
className: "grid gap-4 md:grid-cols-4",
|
|
409
424
|
children: [
|
|
410
|
-
/* @__PURE__ */
|
|
425
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ T(h, {
|
|
411
426
|
className: "pb-2",
|
|
412
|
-
children: /* @__PURE__ */
|
|
427
|
+
children: /* @__PURE__ */ T(g, {
|
|
413
428
|
className: "text-sm font-medium",
|
|
414
429
|
children: "Incidents"
|
|
415
430
|
})
|
|
416
|
-
}), /* @__PURE__ */
|
|
417
|
-
className: "text-2xl font-bold",
|
|
418
|
-
children:
|
|
419
|
-
}), /* @__PURE__ */
|
|
420
|
-
className: "text-xs text-
|
|
421
|
-
children: [
|
|
431
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ T("div", {
|
|
432
|
+
className: "text-2xl font-bold tabular-nums",
|
|
433
|
+
children: A.length
|
|
434
|
+
}), /* @__PURE__ */ E("p", {
|
|
435
|
+
className: "text-xs text-text-secondary",
|
|
436
|
+
children: [U.length, " resolved"]
|
|
422
437
|
})] })] }),
|
|
423
|
-
/* @__PURE__ */
|
|
438
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ T(h, {
|
|
424
439
|
className: "pb-2",
|
|
425
|
-
children: /* @__PURE__ */
|
|
440
|
+
children: /* @__PURE__ */ T(g, {
|
|
426
441
|
className: "text-sm font-medium",
|
|
427
442
|
children: "SLA Breaches"
|
|
428
443
|
})
|
|
429
|
-
}), /* @__PURE__ */
|
|
430
|
-
className: "text-2xl font-bold text-
|
|
431
|
-
children:
|
|
432
|
-
}), /* @__PURE__ */
|
|
433
|
-
className: "text-xs text-
|
|
434
|
-
children: [((1 -
|
|
444
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ T("div", {
|
|
445
|
+
className: "text-2xl font-bold text-status-error-text",
|
|
446
|
+
children: W.length
|
|
447
|
+
}), /* @__PURE__ */ E("p", {
|
|
448
|
+
className: "text-xs text-text-secondary",
|
|
449
|
+
children: [((1 - W.length / Math.max(A.length, 1)) * 100).toFixed(1), "% compliance"]
|
|
435
450
|
})] })] }),
|
|
436
|
-
/* @__PURE__ */
|
|
451
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ T(h, {
|
|
437
452
|
className: "pb-2",
|
|
438
|
-
children: /* @__PURE__ */
|
|
453
|
+
children: /* @__PURE__ */ T(g, {
|
|
439
454
|
className: "text-sm font-medium",
|
|
440
455
|
children: "Maintenance Done"
|
|
441
456
|
})
|
|
442
|
-
}), /* @__PURE__ */
|
|
443
|
-
className: "text-2xl font-bold",
|
|
444
|
-
children:
|
|
445
|
-
}), /* @__PURE__ */
|
|
446
|
-
className: "text-xs text-
|
|
457
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ T("div", {
|
|
458
|
+
className: "text-2xl font-bold tabular-nums",
|
|
459
|
+
children: G.length
|
|
460
|
+
}), /* @__PURE__ */ E("p", {
|
|
461
|
+
className: "text-xs text-text-secondary",
|
|
447
462
|
children: [
|
|
448
463
|
"of ",
|
|
449
|
-
|
|
464
|
+
j.length,
|
|
450
465
|
" total"
|
|
451
466
|
]
|
|
452
467
|
})] })] }),
|
|
453
|
-
/* @__PURE__ */
|
|
468
|
+
/* @__PURE__ */ E(f, { children: [/* @__PURE__ */ T(h, {
|
|
454
469
|
className: "pb-2",
|
|
455
|
-
children: /* @__PURE__ */
|
|
470
|
+
children: /* @__PURE__ */ T(g, {
|
|
456
471
|
className: "text-sm font-medium",
|
|
457
472
|
children: "Workflow Success"
|
|
458
473
|
})
|
|
459
|
-
}), /* @__PURE__ */
|
|
460
|
-
className: "text-2xl font-bold",
|
|
461
|
-
children: [(
|
|
462
|
-
}), /* @__PURE__ */
|
|
463
|
-
className: "text-xs text-
|
|
464
|
-
children: [
|
|
474
|
+
}), /* @__PURE__ */ E(p, { children: [/* @__PURE__ */ E("div", {
|
|
475
|
+
className: "text-2xl font-bold tabular-nums",
|
|
476
|
+
children: [(M.reduce((e, t) => e + t.successRate, 0) / Math.max(M.length, 1)).toFixed(1), "%"]
|
|
477
|
+
}), /* @__PURE__ */ E("p", {
|
|
478
|
+
className: "text-xs text-text-secondary",
|
|
479
|
+
children: [M.length, " active workflows"]
|
|
465
480
|
})] })] })
|
|
466
481
|
]
|
|
467
482
|
})
|
|
468
483
|
}),
|
|
469
|
-
/* @__PURE__ */
|
|
484
|
+
/* @__PURE__ */ E(S, {
|
|
470
485
|
value: "insights",
|
|
471
486
|
className: "space-y-6 mt-6",
|
|
472
|
-
children: [/* @__PURE__ */
|
|
487
|
+
children: [/* @__PURE__ */ E("div", {
|
|
473
488
|
className: "grid gap-4 md:grid-cols-3",
|
|
474
489
|
children: [
|
|
475
|
-
/* @__PURE__ */
|
|
476
|
-
className: "border-
|
|
477
|
-
children: [/* @__PURE__ */
|
|
478
|
-
className: "text-
|
|
490
|
+
/* @__PURE__ */ E(f, {
|
|
491
|
+
className: "border-status-info-border bg-status-info-bg-subtle",
|
|
492
|
+
children: [/* @__PURE__ */ T(h, { children: /* @__PURE__ */ T(g, {
|
|
493
|
+
className: "text-status-info-text text-base",
|
|
479
494
|
children: "Diversification"
|
|
480
|
-
}) }), /* @__PURE__ */
|
|
481
|
-
className: "text-sm text-
|
|
495
|
+
}) }), /* @__PURE__ */ T(p, { children: /* @__PURE__ */ E("p", {
|
|
496
|
+
className: "text-sm text-status-info-text",
|
|
482
497
|
children: [
|
|
483
498
|
"Your portfolio spans ",
|
|
484
|
-
Object.keys(
|
|
499
|
+
Object.keys(B).length,
|
|
485
500
|
" categories across",
|
|
486
501
|
" ",
|
|
487
|
-
Object.keys(
|
|
502
|
+
Object.keys(H).length,
|
|
488
503
|
" departments. IT Hardware represents the largest segment at ",
|
|
489
|
-
|
|
504
|
+
O.byCategory[0]?.count || 0,
|
|
490
505
|
" assets."
|
|
491
506
|
]
|
|
492
507
|
}) })]
|
|
493
508
|
}),
|
|
494
|
-
/* @__PURE__ */
|
|
495
|
-
className: "border-
|
|
496
|
-
children: [/* @__PURE__ */
|
|
497
|
-
className: "text-
|
|
509
|
+
/* @__PURE__ */ E(f, {
|
|
510
|
+
className: "border-status-success-border bg-status-success-bg-subtle",
|
|
511
|
+
children: [/* @__PURE__ */ T(h, { children: /* @__PURE__ */ T(g, {
|
|
512
|
+
className: "text-status-success-text text-base",
|
|
498
513
|
children: "Performance"
|
|
499
|
-
}) }), /* @__PURE__ */
|
|
500
|
-
className: "text-sm text-
|
|
514
|
+
}) }), /* @__PURE__ */ T(p, { children: /* @__PURE__ */ E("p", {
|
|
515
|
+
className: "text-sm text-status-success-text",
|
|
501
516
|
children: [
|
|
502
517
|
"Portfolio depreciated value stands at $",
|
|
503
|
-
(
|
|
518
|
+
(O.depreciatedValue / 1e6).toFixed(2),
|
|
504
519
|
"M. Depreciation rate is within expected range at ",
|
|
505
|
-
|
|
520
|
+
R,
|
|
506
521
|
"% of original cost."
|
|
507
522
|
]
|
|
508
523
|
}) })]
|
|
509
524
|
}),
|
|
510
|
-
/* @__PURE__ */
|
|
511
|
-
className: "border-
|
|
512
|
-
children: [/* @__PURE__ */
|
|
513
|
-
className: "text-
|
|
525
|
+
/* @__PURE__ */ E(f, {
|
|
526
|
+
className: "border-status-warning-border bg-status-warning-bg-subtle",
|
|
527
|
+
children: [/* @__PURE__ */ T(h, { children: /* @__PURE__ */ T(g, {
|
|
528
|
+
className: "text-status-warning-text text-base",
|
|
514
529
|
children: "Maintenance"
|
|
515
|
-
}) }), /* @__PURE__ */
|
|
516
|
-
className: "text-sm text-
|
|
530
|
+
}) }), /* @__PURE__ */ T(p, { children: /* @__PURE__ */ E("p", {
|
|
531
|
+
className: "text-sm text-status-warning-text",
|
|
517
532
|
children: [
|
|
518
|
-
|
|
533
|
+
j.filter((e) => e.status === "scheduled").length,
|
|
519
534
|
" maintenance tasks are scheduled. Total maintenance spend is $",
|
|
520
|
-
|
|
535
|
+
K.toLocaleString(),
|
|
521
536
|
". Stay on top of preventive maintenance."
|
|
522
537
|
]
|
|
523
538
|
}) })]
|
|
524
539
|
})
|
|
525
540
|
]
|
|
526
|
-
}), /* @__PURE__ */
|
|
527
|
-
className: "
|
|
528
|
-
children: [
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
className: "
|
|
537
|
-
children:
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
children: [
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
})] })]
|
|
546
|
-
}), /* @__PURE__ */ C("div", {
|
|
547
|
-
className: "text-right",
|
|
548
|
-
children: [/* @__PURE__ */ C("p", {
|
|
549
|
-
className: "text-sm font-medium",
|
|
550
|
-
children: ["$", e.currentValue.toLocaleString()]
|
|
551
|
-
}), /* @__PURE__ */ S("p", {
|
|
552
|
-
className: "text-xs text-muted-foreground",
|
|
553
|
-
children: e.currentValue < e.value ? /* @__PURE__ */ C("span", {
|
|
554
|
-
className: "text-red-600",
|
|
541
|
+
}), /* @__PURE__ */ E(_, { children: [/* @__PURE__ */ E(h, {
|
|
542
|
+
className: "px-0 pt-0",
|
|
543
|
+
children: [/* @__PURE__ */ T(g, { children: "Top Assets by Value" }), /* @__PURE__ */ T(m, { children: "Highest value assets in your portfolio" })]
|
|
544
|
+
}), /* @__PURE__ */ T(p, {
|
|
545
|
+
className: "px-0 pb-0",
|
|
546
|
+
children: /* @__PURE__ */ T("div", {
|
|
547
|
+
className: "space-y-3",
|
|
548
|
+
children: [...D].sort((e, t) => t.currentValue - e.currentValue).slice(0, 5).map((e, t) => /* @__PURE__ */ E("div", {
|
|
549
|
+
className: "flex items-center justify-between p-3 rounded-lg border border-border-seam bg-gloss-card",
|
|
550
|
+
children: [/* @__PURE__ */ E("div", {
|
|
551
|
+
className: "flex items-center gap-3",
|
|
552
|
+
children: [/* @__PURE__ */ T("div", {
|
|
553
|
+
className: "w-8 h-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-xs font-medium text-primary",
|
|
554
|
+
children: t + 1
|
|
555
|
+
}), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
556
|
+
className: "text-sm font-medium",
|
|
557
|
+
children: e.name
|
|
558
|
+
}), /* @__PURE__ */ E("p", {
|
|
559
|
+
className: "text-xs text-text-secondary",
|
|
555
560
|
children: [
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
"
|
|
561
|
+
e.department,
|
|
562
|
+
" · ",
|
|
563
|
+
e.category.replace("_", " ")
|
|
559
564
|
]
|
|
560
|
-
})
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
565
|
+
})] })]
|
|
566
|
+
}), /* @__PURE__ */ E("div", {
|
|
567
|
+
className: "text-right",
|
|
568
|
+
children: [/* @__PURE__ */ E("p", {
|
|
569
|
+
className: "text-sm font-medium",
|
|
570
|
+
children: ["$", e.currentValue.toLocaleString()]
|
|
571
|
+
}), /* @__PURE__ */ T("p", {
|
|
572
|
+
className: "text-xs text-text-secondary",
|
|
573
|
+
children: e.currentValue < e.value ? /* @__PURE__ */ E("span", {
|
|
574
|
+
className: "text-status-error-text",
|
|
575
|
+
children: [
|
|
576
|
+
"-",
|
|
577
|
+
((1 - e.currentValue / e.value) * 100).toFixed(1),
|
|
578
|
+
"%"
|
|
579
|
+
]
|
|
580
|
+
}) : /* @__PURE__ */ T("span", {
|
|
581
|
+
className: "text-status-success-text",
|
|
582
|
+
children: "No depreciation"
|
|
583
|
+
})
|
|
584
|
+
})]
|
|
564
585
|
})]
|
|
565
|
-
})
|
|
566
|
-
}
|
|
567
|
-
})
|
|
586
|
+
}, e.id))
|
|
587
|
+
})
|
|
588
|
+
})] })]
|
|
568
589
|
})
|
|
569
590
|
]
|
|
570
591
|
})]
|
|
571
592
|
});
|
|
572
593
|
}
|
|
573
594
|
//#endregion
|
|
574
|
-
export {
|
|
595
|
+
export { D as AnalyticsPage };
|
|
575
596
|
|
|
576
597
|
//# sourceMappingURL=AnalyticsPage.js.map
|