@burdenoff/microfe-planmagnet 2026.928.2 → 2026.928.4
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/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.js +102 -84
- package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +103 -55
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/controls/CompetitorControls.d.ts +20 -0
- package/dist/planmagnet/controls/CompetitorControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/CompetitorControls.js +172 -0
- package/dist/planmagnet/controls/CompetitorControls.js.map +1 -0
- package/dist/planmagnet/controls/FeatureControls.js +29 -29
- package/dist/planmagnet/controls/FeatureTriage.js +11 -11
- package/dist/planmagnet/controls/ObjectiveControls.js +24 -24
- package/dist/planmagnet/controls/Pickers.d.ts +17 -2
- package/dist/planmagnet/controls/Pickers.d.ts.map +1 -1
- package/dist/planmagnet/controls/Pickers.js +100 -9
- package/dist/planmagnet/controls/Pickers.js.map +1 -1
- package/dist/planmagnet/controls/PortfolioControls.d.ts +13 -0
- package/dist/planmagnet/controls/PortfolioControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/PortfolioControls.js +114 -0
- package/dist/planmagnet/controls/PortfolioControls.js.map +1 -0
- package/dist/planmagnet/controls/ProgramControls.d.ts +25 -0
- package/dist/planmagnet/controls/ProgramControls.d.ts.map +1 -0
- package/dist/planmagnet/controls/ProgramControls.js +187 -0
- package/dist/planmagnet/controls/ProgramControls.js.map +1 -0
- package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.js +127 -0
- package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.js.map +1 -0
- package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.js +129 -0
- package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.js.map +1 -0
- package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.js +132 -0
- package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.js.map +1 -0
- package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.js +181 -0
- package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.js.map +1 -0
- package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.js +242 -0
- package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.js.map +1 -0
- package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.js +302 -0
- package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.js.map +1 -0
- package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.js +335 -0
- package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.js.map +1 -0
- package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.js +154 -0
- package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js +124 -138
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.js +221 -0
- package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ProgramsEditProgramPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/ProgramsEditProgramPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/ProgramsEditProgramPagePage.js +279 -0
- package/dist/planmagnet/pages/ProgramsEditProgramPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.js +178 -0
- package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ProgramsProgramsPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/ProgramsProgramsPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/ProgramsProgramsPagePage.js +157 -0
- package/dist/planmagnet/pages/ProgramsProgramsPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +130 -103
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +156 -136
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksImportPagePage.js +5 -5
- package/dist/planmagnet/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { usePlanMagnetNavigate as e } from "../providers/PlanMagnetProvider.js";
|
|
2
2
|
import { PersonName as t } from "../people/People.js";
|
|
3
3
|
import { workProgress as n } from "../hooks/useCounts.js";
|
|
4
|
-
import { ROW_LINK_CLASS as r,
|
|
5
|
-
import { useEntityId as a } from "../hooks/useEntityId.js";
|
|
4
|
+
import { ROW_LINK_CLASS as r, detailPath as i, rowLinkProps as a } from "../utils/rowNavigation.js";
|
|
6
5
|
import { ProjectHeaderActions as o } from "../controls/ProjectControls.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
6
|
+
import { useEntityId as s } from "../hooks/useEntityId.js";
|
|
7
|
+
import { Calendar as c, CheckSquare as l, FolderKanban as u, Users as d, Zap as f } from "lucide-react";
|
|
8
|
+
import { gql as p } from "@apollo/client";
|
|
9
|
+
import { useQuery as m } from "@apollo/client/react";
|
|
10
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
11
|
+
import { Badge as _, Card as v, CardContent as y, CardHeader as b, CardTitle as x } from "@burdenoff/fe-libs/ui";
|
|
12
12
|
//#region src/planmagnet/pages/ProjectsProjectDetailPagePage.tsx
|
|
13
|
-
var
|
|
13
|
+
var S = p`
|
|
14
14
|
query GetProjectDetail($id: ID!) {
|
|
15
15
|
planmagnetProject(id: $id) {
|
|
16
16
|
id
|
|
@@ -24,6 +24,11 @@ var x = f`
|
|
|
24
24
|
endDate
|
|
25
25
|
tags
|
|
26
26
|
createdAt
|
|
27
|
+
programId
|
|
28
|
+
program {
|
|
29
|
+
id
|
|
30
|
+
name
|
|
31
|
+
}
|
|
27
32
|
sprints {
|
|
28
33
|
id
|
|
29
34
|
name
|
|
@@ -61,7 +66,7 @@ var x = f`
|
|
|
61
66
|
}
|
|
62
67
|
}
|
|
63
68
|
}
|
|
64
|
-
`,
|
|
69
|
+
`, C = {
|
|
65
70
|
ACTIVE: "bg-green-100 text-green-800",
|
|
66
71
|
ON_HOLD: "bg-orange-100 text-orange-800",
|
|
67
72
|
CANCELLED: "bg-red-100 text-red-800",
|
|
@@ -69,186 +74,186 @@ var x = f`
|
|
|
69
74
|
PLANNING: "bg-gray-100 text-gray-800",
|
|
70
75
|
ARCHIVED: "bg-gray-100 text-gray-800"
|
|
71
76
|
};
|
|
72
|
-
function
|
|
73
|
-
let
|
|
74
|
-
variables: { id:
|
|
75
|
-
skip: !
|
|
77
|
+
function w() {
|
|
78
|
+
let p = s("projectId"), w = e(), { data: T, loading: E, error: D } = m(S, {
|
|
79
|
+
variables: { id: p },
|
|
80
|
+
skip: !p
|
|
76
81
|
});
|
|
77
|
-
if (!
|
|
82
|
+
if (!p) return /* @__PURE__ */ h("div", {
|
|
78
83
|
className: "p-6 text-muted-foreground",
|
|
79
84
|
children: "No project selected. Open one from the list."
|
|
80
85
|
});
|
|
81
|
-
if (
|
|
86
|
+
if (E && !T) return /* @__PURE__ */ h("div", {
|
|
82
87
|
className: "flex items-center justify-center p-12",
|
|
83
|
-
children: /* @__PURE__ */
|
|
88
|
+
children: /* @__PURE__ */ h("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
|
|
84
89
|
});
|
|
85
|
-
if (
|
|
90
|
+
if (D) return /* @__PURE__ */ g("div", {
|
|
86
91
|
className: "p-6 text-red-500",
|
|
87
|
-
children: ["Error loading project: ",
|
|
92
|
+
children: ["Error loading project: ", D.message]
|
|
88
93
|
});
|
|
89
|
-
let
|
|
90
|
-
if (!
|
|
94
|
+
let O = T?.planmagnetProject;
|
|
95
|
+
if (!O) return /* @__PURE__ */ h("div", {
|
|
91
96
|
className: "p-6 text-muted-foreground",
|
|
92
97
|
children: "Project not found."
|
|
93
98
|
});
|
|
94
|
-
let
|
|
95
|
-
return /* @__PURE__ */
|
|
99
|
+
let k = O.workItems ?? [], A = O.sprints ?? [], j = O.milestones ?? [], M = A.find((e) => e.status === "ACTIVE"), N = A.filter((e) => e.status === "COMPLETED" && e.velocity != null).sort((e, t) => (t.endDate ?? "").localeCompare(e.endDate ?? ""))[0], P = n(k.map((e) => ({ status: e.status }))), F = k.filter((e) => e.status !== "CANCELLED"), I = F.filter((e) => e.status === "DONE").length, L = [...k].sort((e, t) => t.createdAt.localeCompare(e.createdAt)).slice(0, 5);
|
|
100
|
+
return /* @__PURE__ */ g("div", {
|
|
96
101
|
className: "space-y-6 p-6",
|
|
97
102
|
children: [
|
|
98
|
-
/* @__PURE__ */
|
|
103
|
+
/* @__PURE__ */ g("div", {
|
|
99
104
|
className: "flex items-center justify-between",
|
|
100
|
-
children: [/* @__PURE__ */
|
|
105
|
+
children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ g("div", {
|
|
101
106
|
className: "flex items-center gap-2",
|
|
102
107
|
children: [
|
|
103
|
-
/* @__PURE__ */
|
|
104
|
-
/* @__PURE__ */
|
|
108
|
+
/* @__PURE__ */ h(u, { className: "h-5 w-5 text-primary" }),
|
|
109
|
+
/* @__PURE__ */ h("h1", {
|
|
105
110
|
className: "text-2xl font-semibold",
|
|
106
|
-
children:
|
|
111
|
+
children: O.name
|
|
107
112
|
}),
|
|
108
|
-
/* @__PURE__ */
|
|
109
|
-
className: `text-xs px-2 py-0.5 rounded-full capitalize ${
|
|
110
|
-
children:
|
|
113
|
+
/* @__PURE__ */ h("span", {
|
|
114
|
+
className: `text-xs px-2 py-0.5 rounded-full capitalize ${C[O.status] ?? "bg-gray-100"}`,
|
|
115
|
+
children: O.status.toLowerCase().replace("_", " ")
|
|
111
116
|
})
|
|
112
117
|
]
|
|
113
|
-
}), /* @__PURE__ */
|
|
118
|
+
}), /* @__PURE__ */ h("p", {
|
|
114
119
|
className: "text-sm text-muted-foreground mt-1",
|
|
115
|
-
children:
|
|
116
|
-
})] }), /* @__PURE__ */
|
|
120
|
+
children: O.description ?? "No description"
|
|
121
|
+
})] }), /* @__PURE__ */ g("div", {
|
|
117
122
|
className: "flex flex-col items-end gap-2",
|
|
118
|
-
children: [/* @__PURE__ */
|
|
119
|
-
projectId:
|
|
120
|
-
name:
|
|
121
|
-
status:
|
|
122
|
-
}), /* @__PURE__ */
|
|
123
|
+
children: [/* @__PURE__ */ h(o, {
|
|
124
|
+
projectId: O.id,
|
|
125
|
+
name: O.name,
|
|
126
|
+
status: O.status
|
|
127
|
+
}), /* @__PURE__ */ h(_, {
|
|
123
128
|
variant: "outline",
|
|
124
129
|
className: "capitalize",
|
|
125
|
-
children:
|
|
130
|
+
children: O.methodology.toLowerCase()
|
|
126
131
|
})]
|
|
127
132
|
})]
|
|
128
133
|
}),
|
|
129
|
-
/* @__PURE__ */
|
|
134
|
+
/* @__PURE__ */ g("div", {
|
|
130
135
|
className: "grid grid-cols-2 md:grid-cols-4 gap-4",
|
|
131
136
|
children: [
|
|
132
|
-
/* @__PURE__ */
|
|
137
|
+
/* @__PURE__ */ h(v, { children: /* @__PURE__ */ g(y, {
|
|
133
138
|
className: "pt-4",
|
|
134
|
-
children: [/* @__PURE__ */
|
|
139
|
+
children: [/* @__PURE__ */ g("div", {
|
|
135
140
|
className: "flex items-center gap-2 text-muted-foreground text-xs",
|
|
136
|
-
children: [/* @__PURE__ */
|
|
137
|
-
}), /* @__PURE__ */
|
|
141
|
+
children: [/* @__PURE__ */ h(l, { className: "h-4 w-4" }), "Work Items"]
|
|
142
|
+
}), /* @__PURE__ */ g("p", {
|
|
138
143
|
className: "text-xl font-bold mt-1",
|
|
139
144
|
children: [
|
|
140
|
-
|
|
145
|
+
I,
|
|
141
146
|
"/",
|
|
142
|
-
|
|
147
|
+
F.length
|
|
143
148
|
]
|
|
144
149
|
})]
|
|
145
150
|
}) }),
|
|
146
|
-
/* @__PURE__ */
|
|
151
|
+
/* @__PURE__ */ h(v, { children: /* @__PURE__ */ g(y, {
|
|
147
152
|
className: "pt-4",
|
|
148
|
-
children: [/* @__PURE__ */
|
|
153
|
+
children: [/* @__PURE__ */ g("div", {
|
|
149
154
|
className: "flex items-center gap-2 text-muted-foreground text-xs",
|
|
150
|
-
children: [/* @__PURE__ */
|
|
151
|
-
}), /* @__PURE__ */
|
|
155
|
+
children: [/* @__PURE__ */ h(f, { className: "h-4 w-4" }), "Sprints"]
|
|
156
|
+
}), /* @__PURE__ */ h("p", {
|
|
152
157
|
className: "text-xl font-bold mt-1",
|
|
153
|
-
children:
|
|
158
|
+
children: A.length
|
|
154
159
|
})]
|
|
155
160
|
}) }),
|
|
156
|
-
/* @__PURE__ */
|
|
161
|
+
/* @__PURE__ */ h(v, { children: /* @__PURE__ */ g(y, {
|
|
157
162
|
className: "pt-4",
|
|
158
|
-
children: [/* @__PURE__ */
|
|
163
|
+
children: [/* @__PURE__ */ g("div", {
|
|
159
164
|
className: "flex items-center gap-2 text-muted-foreground text-xs",
|
|
160
|
-
children: [/* @__PURE__ */
|
|
161
|
-
}), /* @__PURE__ */
|
|
165
|
+
children: [/* @__PURE__ */ h(c, { className: "h-4 w-4" }), "Milestones"]
|
|
166
|
+
}), /* @__PURE__ */ h("p", {
|
|
162
167
|
className: "text-xl font-bold mt-1",
|
|
163
|
-
children:
|
|
168
|
+
children: j.length
|
|
164
169
|
})]
|
|
165
170
|
}) }),
|
|
166
|
-
/* @__PURE__ */
|
|
171
|
+
/* @__PURE__ */ h(v, { children: /* @__PURE__ */ g(y, {
|
|
167
172
|
className: "pt-4",
|
|
168
|
-
children: [/* @__PURE__ */
|
|
173
|
+
children: [/* @__PURE__ */ g("div", {
|
|
169
174
|
className: "flex items-center gap-2 text-muted-foreground text-xs",
|
|
170
|
-
children: [/* @__PURE__ */
|
|
171
|
-
}), /* @__PURE__ */
|
|
175
|
+
children: [/* @__PURE__ */ h(d, { className: "h-4 w-4" }), "Owner"]
|
|
176
|
+
}), /* @__PURE__ */ h("p", {
|
|
172
177
|
className: "text-sm font-bold mt-1 truncate",
|
|
173
|
-
children: /* @__PURE__ */
|
|
178
|
+
children: /* @__PURE__ */ h(t, { id: O.ownerId })
|
|
174
179
|
})]
|
|
175
180
|
}) })
|
|
176
181
|
]
|
|
177
182
|
}),
|
|
178
|
-
/* @__PURE__ */
|
|
183
|
+
/* @__PURE__ */ g("div", {
|
|
179
184
|
className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
|
|
180
|
-
children: [/* @__PURE__ */
|
|
185
|
+
children: [/* @__PURE__ */ g("div", {
|
|
181
186
|
className: "lg:col-span-2 space-y-6",
|
|
182
187
|
children: [
|
|
183
|
-
/* @__PURE__ */
|
|
184
|
-
/* @__PURE__ */
|
|
188
|
+
/* @__PURE__ */ g(v, { children: [/* @__PURE__ */ h(b, { children: /* @__PURE__ */ h(x, { children: "Timeline" }) }), /* @__PURE__ */ g(y, { children: [
|
|
189
|
+
/* @__PURE__ */ g("div", {
|
|
185
190
|
className: "flex justify-between text-sm mb-2",
|
|
186
|
-
children: [/* @__PURE__ */
|
|
191
|
+
children: [/* @__PURE__ */ h("span", {
|
|
187
192
|
className: "text-muted-foreground",
|
|
188
193
|
children: "Tasks done"
|
|
189
|
-
}), /* @__PURE__ */
|
|
194
|
+
}), /* @__PURE__ */ h("span", {
|
|
190
195
|
className: "font-medium",
|
|
191
|
-
children:
|
|
196
|
+
children: P === null ? "No open tasks" : `${P}%`
|
|
192
197
|
})]
|
|
193
198
|
}),
|
|
194
|
-
/* @__PURE__ */
|
|
199
|
+
/* @__PURE__ */ h("div", {
|
|
195
200
|
className: "w-full h-4 rounded-full bg-muted overflow-hidden",
|
|
196
|
-
children: /* @__PURE__ */
|
|
201
|
+
children: /* @__PURE__ */ h("div", {
|
|
197
202
|
className: "h-full bg-primary rounded-full",
|
|
198
|
-
style: { width: `${
|
|
203
|
+
style: { width: `${P ?? 0}%` }
|
|
199
204
|
})
|
|
200
205
|
}),
|
|
201
|
-
/* @__PURE__ */
|
|
206
|
+
/* @__PURE__ */ g("div", {
|
|
202
207
|
className: "flex justify-between text-xs text-muted-foreground mt-2",
|
|
203
|
-
children: [/* @__PURE__ */
|
|
208
|
+
children: [/* @__PURE__ */ h("span", { children: O.startDate ? new Date(O.startDate).toLocaleDateString() : "Not set" }), /* @__PURE__ */ h("span", { children: O.endDate ? new Date(O.endDate).toLocaleDateString() : "Not set" })]
|
|
204
209
|
})
|
|
205
210
|
] })] }),
|
|
206
|
-
|
|
211
|
+
M && /* @__PURE__ */ g(v, { children: [/* @__PURE__ */ h(b, { children: /* @__PURE__ */ g(x, {
|
|
207
212
|
className: "flex items-center gap-2",
|
|
208
|
-
children: [/* @__PURE__ */
|
|
209
|
-
}) }), /* @__PURE__ */
|
|
213
|
+
children: [/* @__PURE__ */ h(f, { className: "h-4 w-4 text-primary" }), "Active Sprint"]
|
|
214
|
+
}) }), /* @__PURE__ */ g(y, {
|
|
210
215
|
className: "space-y-3",
|
|
211
216
|
children: [
|
|
212
|
-
/* @__PURE__ */
|
|
217
|
+
/* @__PURE__ */ g("div", {
|
|
213
218
|
className: "flex justify-between",
|
|
214
|
-
children: [/* @__PURE__ */
|
|
219
|
+
children: [/* @__PURE__ */ h("span", {
|
|
215
220
|
className: "font-medium",
|
|
216
|
-
children:
|
|
217
|
-
}), /* @__PURE__ */
|
|
221
|
+
children: M.name
|
|
222
|
+
}), /* @__PURE__ */ h(_, { children: "Active" })]
|
|
218
223
|
}),
|
|
219
|
-
|
|
224
|
+
M.goal && /* @__PURE__ */ h("p", {
|
|
220
225
|
className: "text-sm text-muted-foreground",
|
|
221
|
-
children:
|
|
226
|
+
children: M.goal
|
|
222
227
|
}),
|
|
223
|
-
/* @__PURE__ */
|
|
228
|
+
/* @__PURE__ */ g("div", {
|
|
224
229
|
className: "grid grid-cols-3 gap-4 text-center",
|
|
225
230
|
children: [
|
|
226
|
-
/* @__PURE__ */
|
|
231
|
+
/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ g("p", {
|
|
227
232
|
className: "text-lg font-semibold",
|
|
228
233
|
children: [
|
|
229
|
-
|
|
234
|
+
M.workItems?.filter((e) => e.status === "DONE").reduce((e, t) => e + (t.storyPoints ?? 0), 0),
|
|
230
235
|
"/",
|
|
231
|
-
|
|
236
|
+
M.workItems?.reduce((e, t) => e + (t.storyPoints ?? 0), 0) ?? 0
|
|
232
237
|
]
|
|
233
|
-
}), /* @__PURE__ */
|
|
238
|
+
}), /* @__PURE__ */ h("p", {
|
|
234
239
|
className: "text-xs text-muted-foreground",
|
|
235
240
|
children: "Points"
|
|
236
241
|
})] }),
|
|
237
|
-
/* @__PURE__ */
|
|
242
|
+
/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ g("p", {
|
|
238
243
|
className: "text-lg font-semibold",
|
|
239
244
|
children: [
|
|
240
|
-
|
|
245
|
+
M.workItems?.filter((e) => e.status === "DONE").length ?? 0,
|
|
241
246
|
"/",
|
|
242
|
-
|
|
247
|
+
M.workItems?.length ?? 0
|
|
243
248
|
]
|
|
244
|
-
}), /* @__PURE__ */
|
|
249
|
+
}), /* @__PURE__ */ h("p", {
|
|
245
250
|
className: "text-xs text-muted-foreground",
|
|
246
251
|
children: "Tasks"
|
|
247
252
|
})] }),
|
|
248
|
-
/* @__PURE__ */
|
|
253
|
+
/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
249
254
|
className: "text-lg font-semibold",
|
|
250
|
-
children:
|
|
251
|
-
}), /* @__PURE__ */
|
|
255
|
+
children: N ? `${N.velocity} pts` : "—"
|
|
256
|
+
}), /* @__PURE__ */ h("p", {
|
|
252
257
|
className: "text-xs text-muted-foreground",
|
|
253
258
|
children: "Velocity of the last sprint"
|
|
254
259
|
})] })
|
|
@@ -256,115 +261,130 @@ function C() {
|
|
|
256
261
|
})
|
|
257
262
|
]
|
|
258
263
|
})] }),
|
|
259
|
-
/* @__PURE__ */
|
|
264
|
+
/* @__PURE__ */ g(v, { children: [/* @__PURE__ */ h(b, { children: /* @__PURE__ */ g(x, { children: [
|
|
260
265
|
"Work items (",
|
|
261
|
-
|
|
266
|
+
k.length,
|
|
262
267
|
")",
|
|
263
|
-
|
|
264
|
-
] }) }), /* @__PURE__ */
|
|
268
|
+
k.length > 5 ? " · latest 5" : ""
|
|
269
|
+
] }) }), /* @__PURE__ */ g(y, {
|
|
265
270
|
className: "space-y-2",
|
|
266
|
-
children: [
|
|
267
|
-
...
|
|
271
|
+
children: [L.map((e) => /* @__PURE__ */ g("div", {
|
|
272
|
+
...a(() => w(`/tasks/task-detail-page?taskId=${encodeURIComponent(e.id)}`), e.key),
|
|
268
273
|
className: `flex items-center justify-between border rounded-md p-2.5 ${r}`,
|
|
269
|
-
children: [/* @__PURE__ */
|
|
274
|
+
children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ g("p", {
|
|
270
275
|
className: "text-sm font-medium",
|
|
271
276
|
children: [
|
|
272
277
|
e.key,
|
|
273
278
|
" ",
|
|
274
|
-
/* @__PURE__ */
|
|
279
|
+
/* @__PURE__ */ h("span", {
|
|
275
280
|
className: "font-normal",
|
|
276
281
|
children: e.title
|
|
277
282
|
})
|
|
278
283
|
]
|
|
279
|
-
}), /* @__PURE__ */
|
|
284
|
+
}), /* @__PURE__ */ h("div", {
|
|
280
285
|
className: "flex gap-1 mt-1",
|
|
281
|
-
children: e.labels.map((e) => /* @__PURE__ */
|
|
286
|
+
children: e.labels.map((e) => /* @__PURE__ */ h("span", {
|
|
282
287
|
className: "text-[10px] px-1.5 py-0.5 rounded bg-muted",
|
|
283
288
|
children: e
|
|
284
289
|
}, e))
|
|
285
|
-
})] }), /* @__PURE__ */
|
|
290
|
+
})] }), /* @__PURE__ */ g("div", {
|
|
286
291
|
className: "flex items-center gap-2",
|
|
287
|
-
children: [/* @__PURE__ */
|
|
292
|
+
children: [/* @__PURE__ */ g("span", {
|
|
288
293
|
className: "text-xs text-muted-foreground",
|
|
289
294
|
children: [e.storyPoints ?? 0, " pts"]
|
|
290
|
-
}), /* @__PURE__ */
|
|
295
|
+
}), /* @__PURE__ */ h(_, {
|
|
291
296
|
variant: "secondary",
|
|
292
297
|
className: "capitalize text-xs",
|
|
293
298
|
children: e.status.toLowerCase().replace("_", " ")
|
|
294
299
|
})]
|
|
295
300
|
})]
|
|
296
|
-
}, e.id)),
|
|
301
|
+
}, e.id)), k.length === 0 && /* @__PURE__ */ h("p", {
|
|
297
302
|
className: "text-sm text-muted-foreground text-center py-4",
|
|
298
303
|
children: "No work items yet."
|
|
299
304
|
})]
|
|
300
305
|
})] })
|
|
301
306
|
]
|
|
302
|
-
}), /* @__PURE__ */
|
|
307
|
+
}), /* @__PURE__ */ g("div", {
|
|
303
308
|
className: "space-y-6",
|
|
304
|
-
children: [/* @__PURE__ */
|
|
309
|
+
children: [/* @__PURE__ */ g(v, { children: [/* @__PURE__ */ h(b, { children: /* @__PURE__ */ g(x, { children: [
|
|
305
310
|
"Milestones (",
|
|
306
|
-
|
|
311
|
+
j.length,
|
|
307
312
|
")"
|
|
308
|
-
] }) }), /* @__PURE__ */
|
|
313
|
+
] }) }), /* @__PURE__ */ g(y, {
|
|
309
314
|
className: "space-y-3",
|
|
310
|
-
children: [
|
|
315
|
+
children: [j.map((e) => /* @__PURE__ */ g("div", {
|
|
311
316
|
className: "border-b pb-2 last:border-0",
|
|
312
|
-
children: [/* @__PURE__ */
|
|
317
|
+
children: [/* @__PURE__ */ g("div", {
|
|
313
318
|
className: "flex justify-between",
|
|
314
|
-
children: [/* @__PURE__ */
|
|
319
|
+
children: [/* @__PURE__ */ h("span", {
|
|
315
320
|
className: "text-sm font-medium",
|
|
316
321
|
children: e.name
|
|
317
|
-
}), /* @__PURE__ */
|
|
322
|
+
}), /* @__PURE__ */ h(_, {
|
|
318
323
|
variant: "outline",
|
|
319
324
|
className: "text-xs capitalize",
|
|
320
325
|
children: e.status.toLowerCase().replace("_", " ")
|
|
321
326
|
})]
|
|
322
|
-
}), /* @__PURE__ */
|
|
327
|
+
}), /* @__PURE__ */ g("div", {
|
|
323
328
|
className: "flex items-center gap-1 text-xs text-muted-foreground mt-1",
|
|
324
|
-
children: [/* @__PURE__ */
|
|
329
|
+
children: [/* @__PURE__ */ h(c, { className: "h-3 w-3" }), e.dueDate ? new Date(e.dueDate).toLocaleDateString() : "No due date"]
|
|
325
330
|
})]
|
|
326
|
-
}, e.id)),
|
|
331
|
+
}, e.id)), j.length === 0 && /* @__PURE__ */ h("p", {
|
|
327
332
|
className: "text-sm text-muted-foreground text-center py-2",
|
|
328
333
|
children: "No milestones."
|
|
329
334
|
})]
|
|
330
|
-
})] }), /* @__PURE__ */
|
|
335
|
+
})] }), /* @__PURE__ */ g(v, { children: [/* @__PURE__ */ h(b, { children: /* @__PURE__ */ h(x, { children: "Details" }) }), /* @__PURE__ */ g(y, {
|
|
331
336
|
className: "space-y-2 text-sm",
|
|
332
337
|
children: [
|
|
333
|
-
/* @__PURE__ */
|
|
338
|
+
/* @__PURE__ */ g("div", {
|
|
334
339
|
className: "flex justify-between",
|
|
335
|
-
children: [/* @__PURE__ */
|
|
340
|
+
children: [/* @__PURE__ */ h("span", {
|
|
336
341
|
className: "text-muted-foreground",
|
|
337
342
|
children: "Owner"
|
|
338
|
-
}), /* @__PURE__ */
|
|
343
|
+
}), /* @__PURE__ */ h("span", { children: /* @__PURE__ */ h(t, { id: O.ownerId }) })]
|
|
339
344
|
}),
|
|
340
|
-
/* @__PURE__ */
|
|
345
|
+
/* @__PURE__ */ g("div", {
|
|
341
346
|
className: "flex justify-between",
|
|
342
|
-
children: [/* @__PURE__ */
|
|
347
|
+
children: [/* @__PURE__ */ h("span", {
|
|
343
348
|
className: "text-muted-foreground",
|
|
344
349
|
children: "Key"
|
|
345
|
-
}), /* @__PURE__ */
|
|
350
|
+
}), /* @__PURE__ */ h("span", {
|
|
346
351
|
className: "font-mono",
|
|
347
|
-
children:
|
|
352
|
+
children: O.key
|
|
348
353
|
})]
|
|
349
354
|
}),
|
|
350
|
-
/* @__PURE__ */
|
|
355
|
+
/* @__PURE__ */ g("div", {
|
|
351
356
|
className: "flex justify-between",
|
|
352
|
-
children: [/* @__PURE__ */
|
|
357
|
+
children: [/* @__PURE__ */ h("span", {
|
|
353
358
|
className: "text-muted-foreground",
|
|
354
359
|
children: "Methodology"
|
|
355
|
-
}), /* @__PURE__ */
|
|
360
|
+
}), /* @__PURE__ */ h("span", {
|
|
356
361
|
className: "capitalize",
|
|
357
|
-
children:
|
|
362
|
+
children: O.methodology.toLowerCase()
|
|
363
|
+
})]
|
|
364
|
+
}),
|
|
365
|
+
/* @__PURE__ */ g("div", {
|
|
366
|
+
className: "flex justify-between",
|
|
367
|
+
children: [/* @__PURE__ */ h("span", {
|
|
368
|
+
className: "text-muted-foreground",
|
|
369
|
+
children: "Program"
|
|
370
|
+
}), O.program ? /* @__PURE__ */ h("button", {
|
|
371
|
+
type: "button",
|
|
372
|
+
className: "text-primary hover:underline underline-offset-2",
|
|
373
|
+
onClick: () => w(i("/products/program-detail-page", O.program.id)),
|
|
374
|
+
children: O.program.name
|
|
375
|
+
}) : /* @__PURE__ */ h("span", {
|
|
376
|
+
className: "text-muted-foreground",
|
|
377
|
+
children: "No program"
|
|
358
378
|
})]
|
|
359
379
|
}),
|
|
360
|
-
|
|
380
|
+
O.tags.length > 0 && /* @__PURE__ */ g("div", {
|
|
361
381
|
className: "flex justify-between items-start",
|
|
362
|
-
children: [/* @__PURE__ */
|
|
382
|
+
children: [/* @__PURE__ */ h("span", {
|
|
363
383
|
className: "text-muted-foreground",
|
|
364
384
|
children: "Tags"
|
|
365
|
-
}), /* @__PURE__ */
|
|
385
|
+
}), /* @__PURE__ */ h("div", {
|
|
366
386
|
className: "flex gap-1 flex-wrap justify-end",
|
|
367
|
-
children:
|
|
387
|
+
children: O.tags.map((e) => /* @__PURE__ */ h(_, {
|
|
368
388
|
variant: "outline",
|
|
369
389
|
className: "text-xs",
|
|
370
390
|
children: e
|
|
@@ -379,6 +399,6 @@ function C() {
|
|
|
379
399
|
});
|
|
380
400
|
}
|
|
381
401
|
//#endregion
|
|
382
|
-
export {
|
|
402
|
+
export { w as ProjectsProjectDetailPagePage };
|
|
383
403
|
|
|
384
404
|
//# sourceMappingURL=ProjectsProjectDetailPagePage.js.map
|