@burdenoff/microfe-planmagnet 2026.927.4 → 2026.927.6
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/generated/global-types.d.ts +9 -1
- package/dist/generated/global-types.d.ts.map +1 -1
- package/dist/generated/wspace-operations.d.ts +0 -12
- package/dist/generated/wspace-operations.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +14 -10
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts.map +1 -1
- package/dist/planmagnet/admin/PlanMagnetAdminRoot.js +149 -127
- package/dist/planmagnet/admin/PlanMagnetAdminRoot.js.map +1 -1
- package/dist/planmagnet/board/ProjectBoard.d.ts +2 -0
- package/dist/planmagnet/board/ProjectBoard.d.ts.map +1 -1
- package/dist/planmagnet/board/ProjectBoard.js +492 -225
- package/dist/planmagnet/board/ProjectBoard.js.map +1 -1
- package/dist/planmagnet/controls/FeatureControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/FeatureControls.js +142 -139
- package/dist/planmagnet/controls/FeatureControls.js.map +1 -1
- package/dist/planmagnet/controls/FeatureTriage.d.ts +21 -0
- package/dist/planmagnet/controls/FeatureTriage.d.ts.map +1 -0
- package/dist/planmagnet/controls/FeatureTriage.js +398 -0
- package/dist/planmagnet/controls/FeatureTriage.js.map +1 -0
- package/dist/planmagnet/controls/MilestoneControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/MilestoneControls.js +76 -73
- package/dist/planmagnet/controls/MilestoneControls.js.map +1 -1
- package/dist/planmagnet/controls/ProjectControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/ProjectControls.js +47 -44
- package/dist/planmagnet/controls/ProjectControls.js.map +1 -1
- package/dist/planmagnet/controls/ReleaseControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/ReleaseControls.js +47 -44
- package/dist/planmagnet/controls/ReleaseControls.js.map +1 -1
- package/dist/planmagnet/controls/WorkItemControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/WorkItemControls.js +68 -65
- package/dist/planmagnet/controls/WorkItemControls.js.map +1 -1
- package/dist/planmagnet/hooks/useCounts.d.ts +39 -0
- package/dist/planmagnet/hooks/useCounts.d.ts.map +1 -0
- package/dist/planmagnet/hooks/useCounts.js +209 -0
- package/dist/planmagnet/hooks/useCounts.js.map +1 -0
- package/dist/planmagnet/import/exportColumns.d.ts +52 -0
- package/dist/planmagnet/import/exportColumns.d.ts.map +1 -0
- package/dist/planmagnet/import/exportColumns.js +81 -0
- package/dist/planmagnet/import/exportColumns.js.map +1 -0
- package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +255 -242
- package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/DashboardDashboardPagePage.js +199 -160
- package/dist/planmagnet/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js +147 -144
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/GoalsGoalsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/GoalsGoalsPagePage.js +2 -7
- package/dist/planmagnet/pages/GoalsGoalsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js +173 -173
- package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js +120 -117
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js +97 -117
- package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js +168 -103
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.js +117 -103
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +4 -8
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsProductsPagePage.js +85 -90
- package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js +12 -2
- package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsReleasesPagePage.js +2 -2
- package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +48 -71
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +17 -13
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js +1 -1
- package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +6 -6
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +11 -8
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +4 -4
- package/dist/planmagnet/pages/ProjectsPlanningPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningPagePage.js +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +152 -139
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectsPagePage.js +75 -74
- package/dist/planmagnet/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts +7 -0
- package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ReportsReportsPagePage.js +39 -201
- package/dist/planmagnet/pages/ReportsReportsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +118 -99
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksImportPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/TasksImportPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/TasksImportPagePage.js +309 -0
- package/dist/planmagnet/pages/TasksImportPagePage.js.map +1 -0
- package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksTasksPagePage.js +110 -104
- package/dist/planmagnet/pages/TasksTasksPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.js +99 -177
- package/dist/planmagnet/pages/TeamTeamPagePage.js.map +1 -1
- package/dist/planmagnet/pages/analytics/DeliveryHealthCards.d.ts.map +1 -1
- package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js +8 -4
- package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js.map +1 -1
- package/dist/planmagnet/releases/ReleaseWorkItemsCard.d.ts.map +1 -1
- package/dist/planmagnet/releases/ReleaseWorkItemsCard.js +10 -4
- package/dist/planmagnet/releases/ReleaseWorkItemsCard.js.map +1 -1
- package/dist/planmagnet/roadmaps/RoadmapControls.d.ts.map +1 -1
- package/dist/planmagnet/roadmaps/RoadmapControls.js +151 -138
- package/dist/planmagnet/roadmaps/RoadmapControls.js.map +1 -1
- package/dist/planmagnet/sprints/SprintControls.d.ts.map +1 -1
- package/dist/planmagnet/sprints/SprintControls.js +32 -30
- package/dist/planmagnet/sprints/SprintControls.js.map +1 -1
- package/dist/planmagnet/utils/mutationResult.d.ts +10 -0
- package/dist/planmagnet/utils/mutationResult.d.ts.map +1 -1
- package/dist/planmagnet/utils/mutationResult.js +2 -1
- package/dist/planmagnet/utils/mutationResult.js.map +1 -1
- package/dist/planmagnet/utils/rowNavigation.d.ts +2 -0
- package/dist/planmagnet/utils/rowNavigation.d.ts.map +1 -1
- package/dist/planmagnet/utils/rowNavigation.js +9 -8
- package/dist/planmagnet/utils/rowNavigation.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,208 +1,237 @@
|
|
|
1
|
-
import { usePlanMagnet as e } from "../providers/PlanMagnetProvider.js";
|
|
2
|
-
import { PersonName as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { usePlanMagnet as e, usePlanMagnetNavigate as t } from "../providers/PlanMagnetProvider.js";
|
|
2
|
+
import { PersonName as n } from "../people/People.js";
|
|
3
|
+
import { countLabel as r, useProjectCounts as i, useSprintCounts as a, workProgress as o } from "../hooks/useCounts.js";
|
|
4
|
+
import { ROW_LINK_CLASS as s, detailPath as c, rowLinkProps as l } from "../utils/rowNavigation.js";
|
|
5
|
+
import { AlertTriangle as u, ArrowUpRight as d, Calendar as f, CheckSquare as p, FolderKanban as m, LayoutDashboard as h, TrendingUp as g, Users as _, Zap as v } from "lucide-react";
|
|
6
|
+
import { gql as y } from "@apollo/client";
|
|
7
|
+
import { useQuery as b } from "@apollo/client/react";
|
|
8
|
+
import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
9
|
+
import { useI18n as w } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
10
|
+
import { Badge as T, Card as E, CardContent as D, CardHeader as O, CardTitle as k } from "@burdenoff/fe-libs/ui";
|
|
9
11
|
//#region src/planmagnet/pages/DashboardDashboardPagePage.tsx
|
|
10
|
-
var
|
|
11
|
-
query GetDashboardData($workspaceId: ID
|
|
12
|
-
planmagnetProjects(
|
|
12
|
+
var A = y`
|
|
13
|
+
query GetDashboardData($workspaceId: ID!, $today: DateTime) {
|
|
14
|
+
activeProjects: planmagnetProjects(
|
|
15
|
+
workspaceId: $workspaceId
|
|
16
|
+
filter: { status: ACTIVE }
|
|
17
|
+
pagination: { first: 20 }
|
|
18
|
+
) {
|
|
13
19
|
items {
|
|
14
20
|
id
|
|
15
21
|
name
|
|
16
|
-
description
|
|
17
|
-
key
|
|
18
22
|
status
|
|
19
|
-
methodology
|
|
20
23
|
ownerId
|
|
21
|
-
startDate
|
|
22
|
-
endDate
|
|
23
|
-
tags
|
|
24
|
-
createdAt
|
|
25
24
|
}
|
|
26
25
|
totalCount
|
|
27
26
|
}
|
|
28
|
-
|
|
27
|
+
onHoldProjects: planmagnetProjects(
|
|
28
|
+
workspaceId: $workspaceId
|
|
29
|
+
filter: { status: ON_HOLD }
|
|
30
|
+
pagination: { first: 20 }
|
|
31
|
+
) {
|
|
29
32
|
items {
|
|
30
33
|
id
|
|
31
34
|
name
|
|
32
|
-
projectId
|
|
33
|
-
project {
|
|
34
|
-
id
|
|
35
|
-
name
|
|
36
|
-
}
|
|
37
35
|
status
|
|
38
|
-
startDate
|
|
39
|
-
endDate
|
|
40
|
-
goal
|
|
41
|
-
capacity
|
|
42
|
-
velocity
|
|
43
|
-
workItems {
|
|
44
|
-
id
|
|
45
|
-
status
|
|
46
|
-
storyPoints
|
|
47
|
-
}
|
|
48
36
|
}
|
|
49
37
|
totalCount
|
|
50
38
|
}
|
|
51
|
-
|
|
39
|
+
activeSprints: planmagnetSprints(
|
|
40
|
+
workspaceId: $workspaceId
|
|
41
|
+
filter: { status: ACTIVE }
|
|
42
|
+
pagination: { first: 20 }
|
|
43
|
+
) {
|
|
44
|
+
items {
|
|
45
|
+
...DashboardSprint
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
reviewSprints: planmagnetSprints(
|
|
49
|
+
workspaceId: $workspaceId
|
|
50
|
+
filter: { status: REVIEW }
|
|
51
|
+
pagination: { first: 20 }
|
|
52
|
+
) {
|
|
53
|
+
items {
|
|
54
|
+
...DashboardSprint
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
upcomingMilestones: planmagnetMilestones(
|
|
58
|
+
workspaceId: $workspaceId
|
|
59
|
+
filter: { open: true, dueFrom: $today }
|
|
60
|
+
orderBy: DUE_SOONEST
|
|
61
|
+
pagination: { first: 4 }
|
|
62
|
+
) {
|
|
52
63
|
items {
|
|
53
64
|
id
|
|
54
65
|
name
|
|
55
|
-
|
|
56
|
-
|
|
66
|
+
status
|
|
67
|
+
dueDate
|
|
57
68
|
project {
|
|
58
69
|
id
|
|
59
70
|
name
|
|
60
71
|
}
|
|
61
|
-
status
|
|
62
|
-
dueDate
|
|
63
|
-
ownerId
|
|
64
|
-
createdAt
|
|
65
72
|
}
|
|
66
73
|
totalCount
|
|
67
74
|
}
|
|
68
|
-
|
|
75
|
+
allMilestones: planmagnetMilestones(workspaceId: $workspaceId, pagination: { first: 1 }) {
|
|
76
|
+
totalCount
|
|
77
|
+
}
|
|
78
|
+
planmagnetWorkItems(workspaceId: $workspaceId, pagination: { first: 5 }) {
|
|
69
79
|
items {
|
|
70
80
|
id
|
|
71
81
|
key
|
|
72
|
-
|
|
82
|
+
title
|
|
73
83
|
status
|
|
74
|
-
priority
|
|
75
84
|
storyPoints
|
|
76
85
|
assigneeId
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
86
|
+
project {
|
|
87
|
+
id
|
|
88
|
+
name
|
|
89
|
+
}
|
|
80
90
|
}
|
|
81
91
|
totalCount
|
|
82
92
|
}
|
|
83
93
|
}
|
|
94
|
+
|
|
95
|
+
fragment DashboardSprint on Sprint {
|
|
96
|
+
id
|
|
97
|
+
name
|
|
98
|
+
status
|
|
99
|
+
startDate
|
|
100
|
+
endDate
|
|
101
|
+
project {
|
|
102
|
+
id
|
|
103
|
+
name
|
|
104
|
+
}
|
|
105
|
+
workItems {
|
|
106
|
+
id
|
|
107
|
+
status
|
|
108
|
+
storyPoints
|
|
109
|
+
}
|
|
110
|
+
}
|
|
84
111
|
`;
|
|
85
|
-
function
|
|
86
|
-
let { workspaceId:
|
|
87
|
-
|
|
112
|
+
function j() {
|
|
113
|
+
let { workspaceId: y } = e(), { t: j } = w(), { data: M, loading: N, error: P } = b(A, { variables: {
|
|
114
|
+
workspaceId: y ?? "default",
|
|
115
|
+
today: (/* @__PURE__ */ new Date()).toISOString().slice(0, 10)
|
|
116
|
+
} }), F = i(), I = a(), L = t();
|
|
117
|
+
if (N && !M) return /* @__PURE__ */ S("div", {
|
|
88
118
|
className: "flex items-center justify-center p-12",
|
|
89
|
-
children: /* @__PURE__ */
|
|
119
|
+
children: /* @__PURE__ */ S("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
|
|
90
120
|
});
|
|
91
|
-
if (
|
|
121
|
+
if (P) return /* @__PURE__ */ C("div", {
|
|
92
122
|
className: "p-6 text-red-500",
|
|
93
123
|
children: [
|
|
94
|
-
|
|
124
|
+
j("planmagnet.dashboard.errorLoading", "Error loading dashboard"),
|
|
95
125
|
": ",
|
|
96
|
-
|
|
126
|
+
P.message
|
|
97
127
|
]
|
|
98
128
|
});
|
|
99
|
-
let
|
|
100
|
-
D.filter((e) => e.status === "COMPLETED");
|
|
101
|
-
let M = O.filter((e) => e.status === "ACTIVE"), N = k.filter((e) => e.status === "PENDING" || e.status === "IN_PROGRESS"), P = N.slice(0, 4), F = A.slice(0, 5), I = new Map(D.map((e) => [e.id, e.name])), L = [
|
|
129
|
+
let R = M?.activeProjects?.items ?? [], z = M?.onHoldProjects?.items ?? [], B = [...M?.activeSprints?.items ?? [], ...M?.reviewSprints?.items ?? []], V = M?.upcomingMilestones?.items ?? [], H = M?.planmagnetWorkItems?.items ?? [], U = [
|
|
102
130
|
{
|
|
103
|
-
label:
|
|
104
|
-
value:
|
|
105
|
-
trend: `${
|
|
131
|
+
label: j("planmagnet.dashboard.metrics.totalProjects.label", "Total Projects"),
|
|
132
|
+
value: r(F?.all),
|
|
133
|
+
trend: `${r(F?.active)} ${j("planmagnet.dashboard.metrics.totalProjects.trend", "active")}`
|
|
106
134
|
},
|
|
107
135
|
{
|
|
108
|
-
label:
|
|
109
|
-
value:
|
|
110
|
-
trend: `${
|
|
136
|
+
label: j("planmagnet.dashboard.metrics.activeSprints.label", "Active Sprints"),
|
|
137
|
+
value: r(I?.running),
|
|
138
|
+
trend: `${r(I?.all)} ${j("planmagnet.dashboard.metrics.activeSprints.trend", "total")}`
|
|
111
139
|
},
|
|
112
140
|
{
|
|
113
|
-
label:
|
|
114
|
-
value:
|
|
115
|
-
trend:
|
|
141
|
+
label: j("planmagnet.dashboard.metrics.workItems.label", "Work Items"),
|
|
142
|
+
value: r(M?.planmagnetWorkItems?.totalCount),
|
|
143
|
+
trend: j("planmagnet.dashboard.metrics.workItems.trend", "across all projects")
|
|
116
144
|
},
|
|
117
145
|
{
|
|
118
|
-
label:
|
|
119
|
-
value:
|
|
120
|
-
trend: `${
|
|
146
|
+
label: j("planmagnet.dashboard.metrics.milestones.label", "Milestones"),
|
|
147
|
+
value: r(M?.allMilestones?.totalCount),
|
|
148
|
+
trend: `${r(M?.upcomingMilestones?.totalCount)} ${j("planmagnet.dashboard.metrics.milestones.trend", "upcoming")}`
|
|
121
149
|
}
|
|
122
150
|
];
|
|
123
|
-
return /* @__PURE__ */
|
|
151
|
+
return /* @__PURE__ */ C("div", {
|
|
124
152
|
className: "space-y-6 p-6",
|
|
125
153
|
children: [
|
|
126
|
-
/* @__PURE__ */
|
|
154
|
+
/* @__PURE__ */ S("div", {
|
|
127
155
|
className: "flex items-center justify-between",
|
|
128
|
-
children: /* @__PURE__ */
|
|
156
|
+
children: /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ C("h1", {
|
|
129
157
|
className: "text-2xl font-semibold flex items-center gap-2",
|
|
130
|
-
children: [/* @__PURE__ */
|
|
131
|
-
}), /* @__PURE__ */
|
|
158
|
+
children: [/* @__PURE__ */ S(h, { className: "h-6 w-6" }), j("planmagnet.dashboard.title", "Dashboard")]
|
|
159
|
+
}), /* @__PURE__ */ S("p", {
|
|
132
160
|
className: "text-sm text-muted-foreground mt-1",
|
|
133
|
-
children:
|
|
161
|
+
children: j("planmagnet.dashboard.subtitle", "Welcome back! Here is your project overview.")
|
|
134
162
|
})] })
|
|
135
163
|
}),
|
|
136
|
-
/* @__PURE__ */
|
|
164
|
+
/* @__PURE__ */ S("div", {
|
|
137
165
|
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
|
|
138
|
-
children:
|
|
166
|
+
children: U.map((e) => /* @__PURE__ */ C(E, { children: [/* @__PURE__ */ C(O, {
|
|
139
167
|
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
140
|
-
children: [/* @__PURE__ */
|
|
168
|
+
children: [/* @__PURE__ */ S(k, {
|
|
141
169
|
className: "text-sm font-medium",
|
|
142
170
|
children: e.label
|
|
143
|
-
}), /* @__PURE__ */
|
|
144
|
-
}), /* @__PURE__ */
|
|
171
|
+
}), /* @__PURE__ */ S(g, { className: "h-4 w-4 text-muted-foreground" })]
|
|
172
|
+
}), /* @__PURE__ */ C(D, { children: [/* @__PURE__ */ S("div", {
|
|
145
173
|
className: "text-2xl font-bold",
|
|
146
174
|
children: e.value
|
|
147
|
-
}), /* @__PURE__ */
|
|
175
|
+
}), /* @__PURE__ */ S("p", {
|
|
148
176
|
className: "text-xs text-muted-foreground",
|
|
149
177
|
children: e.trend
|
|
150
178
|
})] })] }, e.label))
|
|
151
179
|
}),
|
|
152
|
-
/* @__PURE__ */
|
|
180
|
+
/* @__PURE__ */ C("div", {
|
|
153
181
|
className: "grid gap-6 lg:grid-cols-12",
|
|
154
|
-
children: [/* @__PURE__ */
|
|
182
|
+
children: [/* @__PURE__ */ C(E, {
|
|
155
183
|
className: "lg:col-span-8",
|
|
156
|
-
children: [/* @__PURE__ */
|
|
184
|
+
children: [/* @__PURE__ */ S(O, { children: /* @__PURE__ */ C(k, {
|
|
157
185
|
className: "flex items-center gap-2 text-base",
|
|
158
|
-
children: [/* @__PURE__ */
|
|
159
|
-
}) }), /* @__PURE__ */
|
|
186
|
+
children: [/* @__PURE__ */ S(v, { className: "h-5 w-5 text-blue-500" }), j("planmagnet.dashboard.activeSprints.title", "Active Sprints")]
|
|
187
|
+
}) }), /* @__PURE__ */ C(D, {
|
|
160
188
|
className: "space-y-4",
|
|
161
|
-
children: [
|
|
162
|
-
let t = e.workItems.reduce((e, t) => e + (t.storyPoints ?? 0), 0), n = e.workItems.filter((e) => e.status === "DONE").reduce((e, t) => e + (t.storyPoints ?? 0), 0), r = e.workItems.length, i = e.workItems.filter((e) => e.status === "DONE").length, a =
|
|
163
|
-
return /* @__PURE__ */
|
|
164
|
-
|
|
189
|
+
children: [B.map((e) => {
|
|
190
|
+
let t = e.workItems.reduce((e, t) => e + (t.storyPoints ?? 0), 0), n = e.workItems.filter((e) => e.status === "DONE").reduce((e, t) => e + (t.storyPoints ?? 0), 0), r = e.workItems.length, i = e.workItems.filter((e) => e.status === "DONE").length, a = o(e.workItems) ?? 0;
|
|
191
|
+
return /* @__PURE__ */ C("div", {
|
|
192
|
+
...l(() => L(c("/projects/planning-detail-page", e.id)), e.name),
|
|
193
|
+
className: `rounded-lg border p-4 ${s}`,
|
|
165
194
|
children: [
|
|
166
|
-
/* @__PURE__ */
|
|
195
|
+
/* @__PURE__ */ C("div", {
|
|
167
196
|
className: "flex items-center justify-between mb-2",
|
|
168
|
-
children: [/* @__PURE__ */
|
|
197
|
+
children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
169
198
|
className: "font-medium",
|
|
170
199
|
children: e.name
|
|
171
|
-
}), /* @__PURE__ */
|
|
200
|
+
}), /* @__PURE__ */ C("p", {
|
|
172
201
|
className: "text-xs text-muted-foreground",
|
|
173
202
|
children: [
|
|
174
|
-
|
|
203
|
+
j("planmagnet.dashboard.shared.project", "Project"),
|
|
175
204
|
":",
|
|
176
205
|
" ",
|
|
177
|
-
e.project?.name ??
|
|
206
|
+
e.project?.name ?? j("planmagnet.dashboard.shared.projectUnavailable", "not available")
|
|
178
207
|
]
|
|
179
|
-
})] }), /* @__PURE__ */
|
|
208
|
+
})] }), /* @__PURE__ */ C(T, {
|
|
180
209
|
variant: "secondary",
|
|
181
210
|
children: [
|
|
182
211
|
n,
|
|
183
212
|
"/",
|
|
184
213
|
t,
|
|
185
214
|
" ",
|
|
186
|
-
|
|
215
|
+
j("planmagnet.dashboard.shared.pointsShort", "pts")
|
|
187
216
|
]
|
|
188
217
|
})]
|
|
189
218
|
}),
|
|
190
|
-
/* @__PURE__ */
|
|
219
|
+
/* @__PURE__ */ S("div", {
|
|
191
220
|
className: "w-full h-2 bg-muted rounded-full overflow-hidden",
|
|
192
|
-
children: /* @__PURE__ */
|
|
221
|
+
children: /* @__PURE__ */ S("div", {
|
|
193
222
|
className: "h-full bg-primary rounded-full transition-all",
|
|
194
223
|
style: { width: `${a}%` }
|
|
195
224
|
})
|
|
196
225
|
}),
|
|
197
|
-
/* @__PURE__ */
|
|
226
|
+
/* @__PURE__ */ C("div", {
|
|
198
227
|
className: "flex items-center justify-between mt-2 text-xs text-muted-foreground",
|
|
199
|
-
children: [/* @__PURE__ */
|
|
228
|
+
children: [/* @__PURE__ */ C("span", { children: [
|
|
200
229
|
i,
|
|
201
230
|
"/",
|
|
202
231
|
r,
|
|
203
232
|
" ",
|
|
204
|
-
|
|
205
|
-
] }), /* @__PURE__ */
|
|
233
|
+
j("planmagnet.dashboard.shared.tasks", "tasks")
|
|
234
|
+
] }), /* @__PURE__ */ C("span", { children: [
|
|
206
235
|
e.startDate ? new Date(e.startDate).toLocaleDateString() : "—",
|
|
207
236
|
" -",
|
|
208
237
|
" ",
|
|
@@ -211,140 +240,150 @@ function C() {
|
|
|
211
240
|
})
|
|
212
241
|
]
|
|
213
242
|
}, e.id);
|
|
214
|
-
}),
|
|
243
|
+
}), B.length === 0 && /* @__PURE__ */ S("p", {
|
|
215
244
|
className: "text-sm text-muted-foreground text-center py-4",
|
|
216
|
-
children:
|
|
245
|
+
children: j("planmagnet.dashboard.activeSprints.empty", "No active sprints.")
|
|
217
246
|
})]
|
|
218
247
|
})]
|
|
219
|
-
}), /* @__PURE__ */
|
|
248
|
+
}), /* @__PURE__ */ C("div", {
|
|
220
249
|
className: "lg:col-span-4 space-y-6",
|
|
221
|
-
children: [
|
|
250
|
+
children: [z.length > 0 && /* @__PURE__ */ C(E, { children: [/* @__PURE__ */ S(O, { children: /* @__PURE__ */ C(k, {
|
|
222
251
|
className: "flex items-center gap-2 text-base",
|
|
223
|
-
children: [/* @__PURE__ */
|
|
224
|
-
}) }), /* @__PURE__ */
|
|
252
|
+
children: [/* @__PURE__ */ S(u, { className: "h-5 w-5 text-orange-500" }), j("planmagnet.dashboard.onHoldProjects.title", "On-Hold Projects")]
|
|
253
|
+
}) }), /* @__PURE__ */ S(D, {
|
|
225
254
|
className: "space-y-3",
|
|
226
|
-
children:
|
|
255
|
+
children: z.map((e) => /* @__PURE__ */ C("div", {
|
|
227
256
|
className: "flex items-center justify-between rounded border p-2",
|
|
228
|
-
children: [/* @__PURE__ */
|
|
257
|
+
children: [/* @__PURE__ */ S("div", { children: /* @__PURE__ */ S("p", {
|
|
229
258
|
className: "text-sm font-medium",
|
|
230
259
|
children: e.name
|
|
231
|
-
}) }), /* @__PURE__ */
|
|
260
|
+
}) }), /* @__PURE__ */ S(T, {
|
|
232
261
|
variant: "destructive",
|
|
233
262
|
children: e.status.toLowerCase().replace("_", " ")
|
|
234
263
|
})]
|
|
235
264
|
}, e.id))
|
|
236
|
-
})] }), /* @__PURE__ */
|
|
265
|
+
})] }), /* @__PURE__ */ C(E, { children: [/* @__PURE__ */ S(O, { children: /* @__PURE__ */ C(k, {
|
|
237
266
|
className: "flex items-center gap-2 text-base",
|
|
238
|
-
children: [/* @__PURE__ */
|
|
239
|
-
}) }), /* @__PURE__ */
|
|
267
|
+
children: [/* @__PURE__ */ S(f, { className: "h-5 w-5 text-green-500" }), j("planmagnet.dashboard.upcomingMilestones.title", "Upcoming Milestones")]
|
|
268
|
+
}) }), /* @__PURE__ */ C(D, {
|
|
240
269
|
className: "space-y-3",
|
|
241
|
-
children: [
|
|
242
|
-
|
|
243
|
-
|
|
270
|
+
children: [V.map((e) => /* @__PURE__ */ C("div", {
|
|
271
|
+
...l(() => L(c("/projects/milestone-detail-page", e.id)), e.name),
|
|
272
|
+
className: `flex items-start gap-3 rounded border p-2 ${s}`,
|
|
273
|
+
children: [/* @__PURE__ */ C("div", {
|
|
244
274
|
className: "flex-1 min-w-0",
|
|
245
275
|
children: [
|
|
246
|
-
/* @__PURE__ */
|
|
276
|
+
/* @__PURE__ */ S("p", {
|
|
247
277
|
className: "text-sm font-medium truncate",
|
|
248
278
|
children: e.name
|
|
249
279
|
}),
|
|
250
|
-
/* @__PURE__ */
|
|
280
|
+
/* @__PURE__ */ C("p", {
|
|
251
281
|
className: "text-xs text-muted-foreground",
|
|
252
282
|
children: [
|
|
253
|
-
|
|
283
|
+
j("planmagnet.dashboard.shared.project", "Project"),
|
|
254
284
|
":",
|
|
255
285
|
" ",
|
|
256
|
-
e.project?.name ??
|
|
286
|
+
e.project?.name ?? j("planmagnet.dashboard.shared.projectUnavailable", "not available")
|
|
257
287
|
]
|
|
258
288
|
}),
|
|
259
|
-
/* @__PURE__ */
|
|
289
|
+
/* @__PURE__ */ C("p", {
|
|
260
290
|
className: "text-xs text-muted-foreground",
|
|
261
291
|
children: [
|
|
262
|
-
|
|
292
|
+
j("planmagnet.dashboard.shared.due", "Due"),
|
|
263
293
|
" ",
|
|
264
294
|
e.dueDate ? new Date(e.dueDate).toLocaleDateString() : "—"
|
|
265
295
|
]
|
|
266
296
|
})
|
|
267
297
|
]
|
|
268
|
-
}), /* @__PURE__ */
|
|
298
|
+
}), /* @__PURE__ */ S(T, {
|
|
269
299
|
variant: "secondary",
|
|
270
300
|
className: "text-xs flex-shrink-0 capitalize",
|
|
271
301
|
children: e.status.toLowerCase().replace("_", " ")
|
|
272
302
|
})]
|
|
273
|
-
}, e.id)),
|
|
303
|
+
}, e.id)), V.length === 0 && /* @__PURE__ */ S("p", {
|
|
274
304
|
className: "text-sm text-muted-foreground text-center py-2",
|
|
275
|
-
children:
|
|
305
|
+
children: j("planmagnet.dashboard.upcomingMilestones.empty", "No upcoming milestones.")
|
|
276
306
|
})]
|
|
277
307
|
})] })]
|
|
278
308
|
})]
|
|
279
309
|
}),
|
|
280
|
-
/* @__PURE__ */
|
|
310
|
+
/* @__PURE__ */ C("div", {
|
|
281
311
|
className: "grid gap-6 lg:grid-cols-2",
|
|
282
|
-
children: [/* @__PURE__ */
|
|
312
|
+
children: [/* @__PURE__ */ C(E, { children: [/* @__PURE__ */ S(O, { children: /* @__PURE__ */ C(k, {
|
|
283
313
|
className: "flex items-center gap-2 text-base",
|
|
284
|
-
children: [/* @__PURE__ */
|
|
285
|
-
}) }), /* @__PURE__ */
|
|
314
|
+
children: [/* @__PURE__ */ S(p, { className: "h-5 w-5 text-purple-500" }), j("planmagnet.dashboard.recentWorkItems.title", "Recent Work Items")]
|
|
315
|
+
}) }), /* @__PURE__ */ C(D, {
|
|
286
316
|
className: "space-y-3",
|
|
287
|
-
children: [
|
|
288
|
-
|
|
289
|
-
|
|
317
|
+
children: [H.map((e) => /* @__PURE__ */ C("div", {
|
|
318
|
+
...l(() => L(`/tasks/task-detail-page?taskId=${encodeURIComponent(e.id)}`), `${e.key} ${e.title}`),
|
|
319
|
+
className: `flex items-center justify-between rounded border p-2 ${s}`,
|
|
320
|
+
children: [/* @__PURE__ */ C("div", {
|
|
290
321
|
className: "min-w-0 flex-1",
|
|
291
|
-
children: [/* @__PURE__ */
|
|
322
|
+
children: [/* @__PURE__ */ C("p", {
|
|
292
323
|
className: "text-sm font-medium truncate",
|
|
293
|
-
children:
|
|
294
|
-
|
|
324
|
+
children: [
|
|
325
|
+
e.key,
|
|
326
|
+
" ",
|
|
327
|
+
/* @__PURE__ */ S("span", {
|
|
328
|
+
className: "font-normal",
|
|
329
|
+
children: e.title
|
|
330
|
+
})
|
|
331
|
+
]
|
|
332
|
+
}), /* @__PURE__ */ C("p", {
|
|
295
333
|
className: "text-xs text-muted-foreground",
|
|
296
|
-
children: [
|
|
334
|
+
children: [e.project?.name ?? j("planmagnet.dashboard.shared.projectUnavailable", "not available"), e.assigneeId ? /* @__PURE__ */ C(x, { children: [" · ", /* @__PURE__ */ S(n, { id: e.assigneeId })] }) : null]
|
|
297
335
|
})]
|
|
298
|
-
}), /* @__PURE__ */
|
|
336
|
+
}), /* @__PURE__ */ C("div", {
|
|
299
337
|
className: "flex items-center gap-2 flex-shrink-0",
|
|
300
|
-
children: [/* @__PURE__ */
|
|
338
|
+
children: [/* @__PURE__ */ C(T, {
|
|
301
339
|
variant: "outline",
|
|
302
340
|
className: "text-xs",
|
|
303
341
|
children: [
|
|
304
342
|
e.storyPoints ?? 0,
|
|
305
343
|
" ",
|
|
306
|
-
|
|
344
|
+
j("planmagnet.dashboard.shared.pointsShort", "pts")
|
|
307
345
|
]
|
|
308
|
-
}), /* @__PURE__ */
|
|
346
|
+
}), /* @__PURE__ */ S(T, {
|
|
309
347
|
variant: "secondary",
|
|
310
348
|
className: "text-xs capitalize",
|
|
311
349
|
children: e.status.toLowerCase().replace("_", " ")
|
|
312
350
|
})]
|
|
313
351
|
})]
|
|
314
|
-
}, e.id)),
|
|
352
|
+
}, e.id)), H.length === 0 && /* @__PURE__ */ S("p", {
|
|
315
353
|
className: "text-sm text-muted-foreground text-center py-4",
|
|
316
|
-
children:
|
|
354
|
+
children: j("planmagnet.dashboard.recentWorkItems.empty", "No work items yet.")
|
|
317
355
|
})]
|
|
318
|
-
})] }), /* @__PURE__ */
|
|
356
|
+
})] }), /* @__PURE__ */ C(E, { children: [/* @__PURE__ */ S(O, { children: /* @__PURE__ */ C(k, {
|
|
319
357
|
className: "flex items-center gap-2 text-base",
|
|
320
|
-
children: [/* @__PURE__ */ m
|
|
321
|
-
}) }), /* @__PURE__ */
|
|
358
|
+
children: [/* @__PURE__ */ S(m, { className: "h-5 w-5 text-cyan-500" }), j("planmagnet.dashboard.projectStatus.title", "Project Status")]
|
|
359
|
+
}) }), /* @__PURE__ */ C(D, {
|
|
322
360
|
className: "space-y-3",
|
|
323
|
-
children: [
|
|
324
|
-
|
|
325
|
-
|
|
361
|
+
children: [R.map((e) => /* @__PURE__ */ C("div", {
|
|
362
|
+
...l(() => L(c("/projects/project-detail-page", e.id)), e.name),
|
|
363
|
+
className: `flex items-center justify-between rounded border p-2 ${s}`,
|
|
364
|
+
children: [/* @__PURE__ */ C("div", {
|
|
326
365
|
className: "min-w-0 flex-1",
|
|
327
|
-
children: [/* @__PURE__ */
|
|
366
|
+
children: [/* @__PURE__ */ S("p", {
|
|
328
367
|
className: "text-sm font-medium truncate",
|
|
329
368
|
children: e.name
|
|
330
|
-
}), /* @__PURE__ */
|
|
369
|
+
}), /* @__PURE__ */ S("p", {
|
|
331
370
|
className: "text-xs text-muted-foreground capitalize",
|
|
332
371
|
children: e.status.toLowerCase().replace("_", " ")
|
|
333
372
|
})]
|
|
334
|
-
}), /* @__PURE__ */
|
|
373
|
+
}), /* @__PURE__ */ C("div", {
|
|
335
374
|
className: "flex items-center gap-2 ml-3 flex-shrink-0",
|
|
336
375
|
children: [
|
|
337
|
-
/* @__PURE__ */
|
|
338
|
-
/* @__PURE__ */
|
|
376
|
+
/* @__PURE__ */ S(_, { className: "h-3 w-3 text-muted-foreground" }),
|
|
377
|
+
/* @__PURE__ */ S("span", {
|
|
339
378
|
className: "text-xs text-muted-foreground",
|
|
340
|
-
children: /* @__PURE__ */
|
|
379
|
+
children: /* @__PURE__ */ S(n, { id: e.ownerId })
|
|
341
380
|
}),
|
|
342
|
-
/* @__PURE__ */
|
|
381
|
+
/* @__PURE__ */ S(d, { className: "h-3 w-3 text-muted-foreground" })
|
|
343
382
|
]
|
|
344
383
|
})]
|
|
345
|
-
}, e.id)),
|
|
384
|
+
}, e.id)), R.length === 0 && /* @__PURE__ */ S("p", {
|
|
346
385
|
className: "text-sm text-muted-foreground text-center py-4",
|
|
347
|
-
children:
|
|
386
|
+
children: j("planmagnet.dashboard.projectStatus.empty", "No active projects.")
|
|
348
387
|
})]
|
|
349
388
|
})] })]
|
|
350
389
|
})
|
|
@@ -352,6 +391,6 @@ function C() {
|
|
|
352
391
|
});
|
|
353
392
|
}
|
|
354
393
|
//#endregion
|
|
355
|
-
export {
|
|
394
|
+
export { j as DashboardDashboardPagePage };
|
|
356
395
|
|
|
357
396
|
//# sourceMappingURL=DashboardDashboardPagePage.js.map
|