@powerhousedao/network-admin 0.0.38 → 0.0.39
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/document-models/network-profile/gen/reducer.d.ts +1 -1
- package/dist/document-models/network-profile/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/gen/ph-factories.js +1 -1
- package/dist/document-models/request-for-proposals/gen/utils.js +1 -1
- package/dist/document-models/workstream/hooks.d.ts +1 -1
- package/dist/document-models/workstream/hooks.d.ts.map +1 -1
- package/dist/document-models/workstream/module.d.ts +1 -1
- package/dist/document-models/workstream/module.d.ts.map +1 -1
- package/dist/powerhouse.manifest.json +9 -1
- package/dist/subgraphs/index.d.ts +0 -5
- package/dist/subgraphs/index.d.ts.map +1 -1
- package/dist/subgraphs/index.js +0 -5
- package/package.json +15 -15
- package/dist/scripts/sow-mirror/mirror_sow_state.d.ts +0 -3
- package/dist/scripts/sow-mirror/mirror_sow_state.d.ts.map +0 -1
- package/dist/scripts/sow-mirror/mirror_sow_state.js +0 -441
- package/dist/subgraphs/networks/index.d.ts +0 -11
- package/dist/subgraphs/networks/index.d.ts.map +0 -1
- package/dist/subgraphs/networks/index.js +0 -11
- package/dist/subgraphs/networks/resolvers.d.ts +0 -3
- package/dist/subgraphs/networks/resolvers.d.ts.map +0 -1
- package/dist/subgraphs/networks/resolvers.js +0 -42
- package/dist/subgraphs/networks/schema.d.ts +0 -3
- package/dist/subgraphs/networks/schema.d.ts.map +0 -1
- package/dist/subgraphs/networks/schema.js +0 -39
- package/dist/subgraphs/payment-terms/index.d.ts +0 -11
- package/dist/subgraphs/payment-terms/index.d.ts.map +0 -1
- package/dist/subgraphs/payment-terms/index.js +0 -11
- package/dist/subgraphs/payment-terms/resolvers.d.ts +0 -3
- package/dist/subgraphs/payment-terms/resolvers.d.ts.map +0 -1
- package/dist/subgraphs/payment-terms/resolvers.js +0 -264
- package/dist/subgraphs/payment-terms/schema.d.ts +0 -3
- package/dist/subgraphs/payment-terms/schema.d.ts.map +0 -1
- package/dist/subgraphs/payment-terms/schema.js +0 -199
- package/dist/subgraphs/request-for-proposals/index.d.ts +0 -11
- package/dist/subgraphs/request-for-proposals/index.d.ts.map +0 -1
- package/dist/subgraphs/request-for-proposals/index.js +0 -11
- package/dist/subgraphs/request-for-proposals/resolvers.d.ts +0 -3
- package/dist/subgraphs/request-for-proposals/resolvers.d.ts.map +0 -1
- package/dist/subgraphs/request-for-proposals/resolvers.js +0 -144
- package/dist/subgraphs/request-for-proposals/schema.d.ts +0 -3
- package/dist/subgraphs/request-for-proposals/schema.d.ts.map +0 -1
- package/dist/subgraphs/request-for-proposals/schema.js +0 -141
- package/dist/subgraphs/workstream/index.d.ts +0 -11
- package/dist/subgraphs/workstream/index.d.ts.map +0 -1
- package/dist/subgraphs/workstream/index.js +0 -11
- package/dist/subgraphs/workstream/resolvers.d.ts +0 -3
- package/dist/subgraphs/workstream/resolvers.d.ts.map +0 -1
- package/dist/subgraphs/workstream/resolvers.js +0 -180
- package/dist/subgraphs/workstream/schema.d.ts +0 -3
- package/dist/subgraphs/workstream/schema.d.ts.map +0 -1
- package/dist/subgraphs/workstream/schema.js +0 -146
- package/dist/subgraphs/workstreams/index.d.ts +0 -11
- package/dist/subgraphs/workstreams/index.d.ts.map +0 -1
- package/dist/subgraphs/workstreams/index.js +0 -11
- package/dist/subgraphs/workstreams/resolvers.d.ts +0 -3
- package/dist/subgraphs/workstreams/resolvers.d.ts.map +0 -1
- package/dist/subgraphs/workstreams/resolvers.js +0 -380
- package/dist/subgraphs/workstreams/schema.d.ts +0 -3
- package/dist/subgraphs/workstreams/schema.d.ts.map +0 -1
- package/dist/subgraphs/workstreams/schema.js +0 -326
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { BaseSubgraph } from "@powerhousedao/reactor-api";
|
|
2
|
-
import { schema } from "./schema.js";
|
|
3
|
-
import { getResolvers } from "./resolvers.js";
|
|
4
|
-
export class WorkstreamsSubgraph extends BaseSubgraph {
|
|
5
|
-
name = "workstreams";
|
|
6
|
-
typeDefs = schema;
|
|
7
|
-
resolvers = getResolvers(this);
|
|
8
|
-
additionalContextFields = {};
|
|
9
|
-
async onSetup() { }
|
|
10
|
-
async onDisconnect() { }
|
|
11
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../subgraphs/workstreams/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAmC5D,eAAO,MAAM,YAAY,GAAI,UAAU,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAqdxE,CAAC"}
|
|
@@ -1,380 +0,0 @@
|
|
|
1
|
-
import {} from "@powerhousedao/reactor-api";
|
|
2
|
-
import { WorkstreamsProcessor } from "../../processors/workstreams/index.js";
|
|
3
|
-
import {} from "../../document-models/request-for-proposals/index.js";
|
|
4
|
-
import {} from "../../document-models/workstream/index.js";
|
|
5
|
-
export const getResolvers = (subgraph) => {
|
|
6
|
-
const reactor = subgraph.reactor;
|
|
7
|
-
const db = subgraph.relationalDb;
|
|
8
|
-
const deriveSlug = (name) => name.toLowerCase().trim().split(/\s+/).join("-");
|
|
9
|
-
const getCandidateDrives = async () => {
|
|
10
|
-
try {
|
|
11
|
-
const drives = await reactor.getDrives?.();
|
|
12
|
-
if (Array.isArray(drives) && drives.length > 0)
|
|
13
|
-
return drives;
|
|
14
|
-
}
|
|
15
|
-
catch { }
|
|
16
|
-
return [];
|
|
17
|
-
};
|
|
18
|
-
const loadLinkedDocument = async (id) => {
|
|
19
|
-
if (!id)
|
|
20
|
-
return null;
|
|
21
|
-
try {
|
|
22
|
-
const linked = await reactor.getDocument(id);
|
|
23
|
-
return { id, stateJSON: linked.state.global };
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return { id, stateJSON: null };
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
const loadRfpDetails = async (rfpRef) => {
|
|
30
|
-
if (!rfpRef?.id) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
const rfpDoc = await reactor.getDocument(rfpRef.id);
|
|
35
|
-
const rfpState = rfpDoc.state.global;
|
|
36
|
-
return {
|
|
37
|
-
id: rfpRef.id,
|
|
38
|
-
code: rfpState?.code ?? null,
|
|
39
|
-
title: rfpRef.title ?? rfpState?.title ?? null,
|
|
40
|
-
status: rfpState?.status ?? null,
|
|
41
|
-
summary: rfpState?.summary ?? null,
|
|
42
|
-
submissionDeadline: rfpState?.deadline ?? null,
|
|
43
|
-
budgetMin: rfpState?.budgetRange?.min ?? null,
|
|
44
|
-
budgetMax: rfpState?.budgetRange?.max ?? null,
|
|
45
|
-
budgetCurrency: rfpState?.budgetRange?.currency ?? null,
|
|
46
|
-
eligibilityCriteria: rfpState?.eligibilityCriteria ?? null,
|
|
47
|
-
evaluationCriteria: rfpState?.evaluationCriteria ?? null,
|
|
48
|
-
briefing: rfpState?.briefing ?? null,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
return {
|
|
53
|
-
id: rfpRef.id,
|
|
54
|
-
code: null,
|
|
55
|
-
title: rfpRef.title ?? null,
|
|
56
|
-
status: null,
|
|
57
|
-
summary: null,
|
|
58
|
-
submissionDeadline: null,
|
|
59
|
-
budgetMin: null,
|
|
60
|
-
budgetMax: null,
|
|
61
|
-
budgetCurrency: null,
|
|
62
|
-
eligibilityCriteria: null,
|
|
63
|
-
evaluationCriteria: null,
|
|
64
|
-
briefing: null,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
const hydrateWorkstreamRow = async (row) => {
|
|
69
|
-
try {
|
|
70
|
-
const doc = await reactor.getDocument(row.workstream_phid);
|
|
71
|
-
const state = doc.state.global;
|
|
72
|
-
const initialProposalBase = state.initialProposal
|
|
73
|
-
? {
|
|
74
|
-
id: state.initialProposal.id,
|
|
75
|
-
status: state.initialProposal.status,
|
|
76
|
-
author: state.initialProposal.author,
|
|
77
|
-
}
|
|
78
|
-
: null;
|
|
79
|
-
const alternativeProposalsBase = (state.alternativeProposals || []).map((p) => ({
|
|
80
|
-
id: p.id,
|
|
81
|
-
status: p.status,
|
|
82
|
-
author: p.author,
|
|
83
|
-
}));
|
|
84
|
-
const [topSowDoc, topPaymentTermsDoc, initialSowDoc, initialPaymentTermsDoc, altSowDocs, altPaymentDocs, rfpDetails,] = await Promise.all([
|
|
85
|
-
loadLinkedDocument(state.sow || row.sow_phid || null),
|
|
86
|
-
loadLinkedDocument(state.paymentTerms || null),
|
|
87
|
-
loadLinkedDocument(state.initialProposal?.sow || row.sow_phid || null),
|
|
88
|
-
loadLinkedDocument(state.initialProposal?.paymentTerms || null),
|
|
89
|
-
Promise.all((state.alternativeProposals || []).map((p) => loadLinkedDocument(p.sow || null))),
|
|
90
|
-
Promise.all((state.alternativeProposals || []).map((p) => loadLinkedDocument(p.paymentTerms || null))),
|
|
91
|
-
loadRfpDetails(state.rfp || null),
|
|
92
|
-
]);
|
|
93
|
-
const client = state.client ??
|
|
94
|
-
(row.network_phid
|
|
95
|
-
? { id: row.network_phid, name: row.network_slug, icon: null }
|
|
96
|
-
: null);
|
|
97
|
-
return {
|
|
98
|
-
code: state.code || null,
|
|
99
|
-
title: state.title || row.workstream_title || null,
|
|
100
|
-
status: state.status || row.workstream_status || null,
|
|
101
|
-
client,
|
|
102
|
-
rfp: rfpDetails,
|
|
103
|
-
initialProposal: initialProposalBase
|
|
104
|
-
? {
|
|
105
|
-
...initialProposalBase,
|
|
106
|
-
sow: initialSowDoc?.stateJSON || null,
|
|
107
|
-
paymentTerms: initialPaymentTermsDoc?.stateJSON || null,
|
|
108
|
-
}
|
|
109
|
-
: null,
|
|
110
|
-
alternativeProposals: alternativeProposalsBase.map((proposal, index) => ({
|
|
111
|
-
...proposal,
|
|
112
|
-
sow: altSowDocs[index]?.stateJSON || null,
|
|
113
|
-
paymentTerms: altPaymentDocs[index]?.stateJSON || null,
|
|
114
|
-
})),
|
|
115
|
-
sow: topSowDoc?.stateJSON || null,
|
|
116
|
-
paymentTerms: topPaymentTermsDoc?.stateJSON || null,
|
|
117
|
-
paymentRequests: state.paymentRequests || [],
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
return {
|
|
122
|
-
code: row.workstream_title || null,
|
|
123
|
-
title: row.workstream_title || null,
|
|
124
|
-
status: row.workstream_status || null,
|
|
125
|
-
client: row.network_phid
|
|
126
|
-
? { id: row.network_phid, name: row.network_slug, icon: null }
|
|
127
|
-
: null,
|
|
128
|
-
rfp: null,
|
|
129
|
-
initialProposal: null,
|
|
130
|
-
alternativeProposals: [],
|
|
131
|
-
sow: null,
|
|
132
|
-
paymentTerms: null,
|
|
133
|
-
paymentRequests: [],
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
const applyWorkstreamFilters = (qb, filters, wantedSlug) => {
|
|
138
|
-
if (filters.workstreamId) {
|
|
139
|
-
qb = qb.where("workstream_phid", "=", filters.workstreamId);
|
|
140
|
-
}
|
|
141
|
-
else if (filters.workstreamSlug) {
|
|
142
|
-
qb = qb.where("workstream_slug", "=", filters.workstreamSlug);
|
|
143
|
-
}
|
|
144
|
-
if (filters.networkId) {
|
|
145
|
-
qb = qb.where("network_phid", "=", filters.networkId);
|
|
146
|
-
}
|
|
147
|
-
else if (filters.networkSlug) {
|
|
148
|
-
qb = qb.where("network_slug", "=", filters.networkSlug);
|
|
149
|
-
}
|
|
150
|
-
else if (filters.networkName && wantedSlug) {
|
|
151
|
-
qb = qb.where("network_slug", "=", wantedSlug);
|
|
152
|
-
}
|
|
153
|
-
const statuses = (filters.workstreamStatuses || []).filter((status) => Boolean(status));
|
|
154
|
-
if (statuses.length > 0) {
|
|
155
|
-
qb = qb.where("workstream_status", "in", statuses);
|
|
156
|
-
}
|
|
157
|
-
else if (filters.workstreamStatus) {
|
|
158
|
-
qb = qb.where("workstream_status", "=", filters.workstreamStatus);
|
|
159
|
-
}
|
|
160
|
-
return qb;
|
|
161
|
-
};
|
|
162
|
-
const applyScopeOfWorkFilters = (qb, filters, wantedSlug) => {
|
|
163
|
-
if (filters.workstreamId) {
|
|
164
|
-
qb = qb.where("workstream_phid", "=", filters.workstreamId);
|
|
165
|
-
}
|
|
166
|
-
else if (filters.workstreamSlug) {
|
|
167
|
-
qb = qb.where("workstream_slug", "=", filters.workstreamSlug);
|
|
168
|
-
}
|
|
169
|
-
if (filters.networkId) {
|
|
170
|
-
qb = qb.where("network_phid", "=", filters.networkId);
|
|
171
|
-
}
|
|
172
|
-
else if (filters.networkSlug) {
|
|
173
|
-
qb = qb.where("network_slug", "=", filters.networkSlug);
|
|
174
|
-
}
|
|
175
|
-
else if (filters.networkName && wantedSlug) {
|
|
176
|
-
qb = qb.where("network_slug", "=", wantedSlug);
|
|
177
|
-
}
|
|
178
|
-
if (filters.workstreamStatus) {
|
|
179
|
-
qb = qb.where("workstream_status", "=", filters.workstreamStatus);
|
|
180
|
-
}
|
|
181
|
-
return qb;
|
|
182
|
-
};
|
|
183
|
-
return {
|
|
184
|
-
Query: {
|
|
185
|
-
processorWorkstreams: async (parent, args) => {
|
|
186
|
-
const drives = await getCandidateDrives();
|
|
187
|
-
const allProcessorWorkstreams = await Promise.all(drives.map(async (driveId) => {
|
|
188
|
-
return WorkstreamsProcessor.query(driveId, db)
|
|
189
|
-
.selectFrom("workstreams")
|
|
190
|
-
.selectAll()
|
|
191
|
-
.execute();
|
|
192
|
-
}));
|
|
193
|
-
// Flatten the array of arrays into a single array
|
|
194
|
-
const flattenedWorkstreams = allProcessorWorkstreams.flat();
|
|
195
|
-
return flattenedWorkstreams.map((workstream) => ({
|
|
196
|
-
network_phid: workstream.network_phid,
|
|
197
|
-
network_slug: workstream.network_slug,
|
|
198
|
-
workstream_phid: workstream.workstream_phid,
|
|
199
|
-
workstream_slug: workstream.workstream_slug,
|
|
200
|
-
workstream_title: workstream.workstream_title,
|
|
201
|
-
workstream_status: workstream.workstream_status,
|
|
202
|
-
sow_phid: workstream.sow_phid,
|
|
203
|
-
roadmap_oid: workstream.roadmap_oid,
|
|
204
|
-
final_milestone_target: workstream.final_milestone_target,
|
|
205
|
-
initial_proposal_status: workstream.initial_proposal_status,
|
|
206
|
-
initial_proposal_author: workstream.initial_proposal_author,
|
|
207
|
-
}));
|
|
208
|
-
},
|
|
209
|
-
workstream: async (parent, args) => {
|
|
210
|
-
const filters = args.filter || {};
|
|
211
|
-
const candidateDrives = await getCandidateDrives();
|
|
212
|
-
const wantedSlug = filters.networkSlug ||
|
|
213
|
-
(filters.networkName ? deriveSlug(filters.networkName) : undefined);
|
|
214
|
-
let resolved = null;
|
|
215
|
-
for (const driveId of candidateDrives) {
|
|
216
|
-
let qb = WorkstreamsProcessor.query(driveId, db)
|
|
217
|
-
.selectFrom("workstreams")
|
|
218
|
-
.selectAll();
|
|
219
|
-
qb = applyWorkstreamFilters(qb, filters, wantedSlug);
|
|
220
|
-
const row = await qb.executeTakeFirst();
|
|
221
|
-
if (!row)
|
|
222
|
-
continue;
|
|
223
|
-
resolved = await hydrateWorkstreamRow(row);
|
|
224
|
-
break;
|
|
225
|
-
}
|
|
226
|
-
return resolved;
|
|
227
|
-
},
|
|
228
|
-
workstreams: async (parent, args) => {
|
|
229
|
-
const filters = args.filter || {};
|
|
230
|
-
const candidateDrives = await getCandidateDrives();
|
|
231
|
-
// Check if any filters are provided
|
|
232
|
-
const hasFilters = filters.networkId ||
|
|
233
|
-
filters.networkSlug ||
|
|
234
|
-
filters.networkName ||
|
|
235
|
-
filters.workstreamStatus ||
|
|
236
|
-
(filters.workstreamStatuses &&
|
|
237
|
-
filters.workstreamStatuses.length > 0);
|
|
238
|
-
const wantedSlug = filters.networkSlug ||
|
|
239
|
-
(filters.networkName ? deriveSlug(filters.networkName) : undefined);
|
|
240
|
-
const results = [];
|
|
241
|
-
for (const driveId of candidateDrives) {
|
|
242
|
-
let qb = WorkstreamsProcessor.query(driveId, db)
|
|
243
|
-
.selectFrom("workstreams")
|
|
244
|
-
.selectAll();
|
|
245
|
-
// Only apply filters if any are provided
|
|
246
|
-
if (hasFilters) {
|
|
247
|
-
const filterArgs = {
|
|
248
|
-
networkId: filters.networkId,
|
|
249
|
-
networkSlug: filters.networkSlug,
|
|
250
|
-
networkName: filters.networkName,
|
|
251
|
-
workstreamStatus: filters.workstreamStatus,
|
|
252
|
-
workstreamStatuses: filters.workstreamStatuses,
|
|
253
|
-
};
|
|
254
|
-
qb = applyWorkstreamFilters(qb, filterArgs, wantedSlug);
|
|
255
|
-
}
|
|
256
|
-
const rows = await qb.execute();
|
|
257
|
-
if (rows.length === 0) {
|
|
258
|
-
continue;
|
|
259
|
-
}
|
|
260
|
-
for (const row of rows) {
|
|
261
|
-
const hydrated = await hydrateWorkstreamRow(row);
|
|
262
|
-
results.push(hydrated);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
return results;
|
|
266
|
-
},
|
|
267
|
-
rfpByWorkstream: async (parent, args) => {
|
|
268
|
-
const filters = args.filter || {};
|
|
269
|
-
const candidateDrives = await getCandidateDrives();
|
|
270
|
-
const wantedSlug = filters.networkSlug ||
|
|
271
|
-
(filters.networkName ? deriveSlug(filters.networkName) : undefined);
|
|
272
|
-
const results = [];
|
|
273
|
-
for (const driveId of candidateDrives) {
|
|
274
|
-
let qb = WorkstreamsProcessor.query(driveId, db)
|
|
275
|
-
.selectFrom("workstreams")
|
|
276
|
-
.selectAll();
|
|
277
|
-
qb = applyWorkstreamFilters(qb, filters, wantedSlug);
|
|
278
|
-
const rows = await qb.execute();
|
|
279
|
-
if (rows.length === 0) {
|
|
280
|
-
continue;
|
|
281
|
-
}
|
|
282
|
-
for (const row of rows) {
|
|
283
|
-
const hydrated = await hydrateWorkstreamRow(row);
|
|
284
|
-
results.push({
|
|
285
|
-
code: hydrated.code,
|
|
286
|
-
title: hydrated.title,
|
|
287
|
-
status: hydrated.status,
|
|
288
|
-
rfp: hydrated.rfp,
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
if (filters.workstreamId || filters.workstreamSlug) {
|
|
292
|
-
break;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
return results;
|
|
296
|
-
},
|
|
297
|
-
scopeOfWorkByNetworkOrStatus: async (parent, args) => {
|
|
298
|
-
const filters = args.filter || {};
|
|
299
|
-
const candidateDrives = await getCandidateDrives();
|
|
300
|
-
const wantedSlug = filters.networkSlug ||
|
|
301
|
-
(filters.networkName ? deriveSlug(filters.networkName) : undefined);
|
|
302
|
-
const results = [];
|
|
303
|
-
for (const driveId of candidateDrives) {
|
|
304
|
-
let qb = WorkstreamsProcessor.query(driveId, db)
|
|
305
|
-
.selectFrom("workstreams")
|
|
306
|
-
.selectAll();
|
|
307
|
-
qb = applyScopeOfWorkFilters(qb, filters, wantedSlug);
|
|
308
|
-
const rows = await qb.execute();
|
|
309
|
-
if (rows.length === 0) {
|
|
310
|
-
continue;
|
|
311
|
-
}
|
|
312
|
-
for (const row of rows) {
|
|
313
|
-
const hydrated = await hydrateWorkstreamRow(row);
|
|
314
|
-
// Collect SOWs based on proposalRole filter
|
|
315
|
-
const sowDocs = [];
|
|
316
|
-
if (!filters.proposalRole) {
|
|
317
|
-
// If no proposalRole specified, include all SOWs
|
|
318
|
-
if (hydrated.sow) {
|
|
319
|
-
sowDocs.push(hydrated.sow);
|
|
320
|
-
}
|
|
321
|
-
if (hydrated.initialProposal?.sow) {
|
|
322
|
-
sowDocs.push(hydrated.initialProposal.sow);
|
|
323
|
-
}
|
|
324
|
-
for (const altProposal of hydrated.alternativeProposals || []) {
|
|
325
|
-
if (altProposal.sow) {
|
|
326
|
-
sowDocs.push(altProposal.sow);
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
else if (filters.proposalRole === "INITIAL") {
|
|
331
|
-
if (hydrated.initialProposal?.sow) {
|
|
332
|
-
sowDocs.push(hydrated.initialProposal.sow);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
else if (filters.proposalRole === "ALTERNATIVE") {
|
|
336
|
-
for (const altProposal of hydrated.alternativeProposals || []) {
|
|
337
|
-
if (altProposal.sow) {
|
|
338
|
-
sowDocs.push(altProposal.sow);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
else if (filters.proposalRole === "AWARDED") {
|
|
343
|
-
// For AWARDED, we check if the workstream status is AWARDED
|
|
344
|
-
// and return the initial proposal's SOW (as it's typically the awarded one)
|
|
345
|
-
if (hydrated.status === "AWARDED" && hydrated.initialProposal?.sow) {
|
|
346
|
-
sowDocs.push(hydrated.initialProposal.sow);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
// Filter out null/undefined SOWs and add to results
|
|
350
|
-
for (const sow of sowDocs) {
|
|
351
|
-
if (sow) {
|
|
352
|
-
results.push(sow);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
if (filters.workstreamId || filters.workstreamSlug) {
|
|
357
|
-
break;
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
return results;
|
|
361
|
-
},
|
|
362
|
-
},
|
|
363
|
-
SOW_Progress: {
|
|
364
|
-
__resolveType(obj) {
|
|
365
|
-
if (obj && typeof obj === "object") {
|
|
366
|
-
if (Object.prototype.hasOwnProperty.call(obj, "total") && Object.prototype.hasOwnProperty.call(obj, "completed")) {
|
|
367
|
-
return "SOW_StoryPoint";
|
|
368
|
-
}
|
|
369
|
-
if (Object.prototype.hasOwnProperty.call(obj, "value")) {
|
|
370
|
-
return "SOW_Percentage";
|
|
371
|
-
}
|
|
372
|
-
if (Object.prototype.hasOwnProperty.call(obj, "done")) {
|
|
373
|
-
return "SOW_Binary";
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
return null;
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
};
|
|
380
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../subgraphs/workstreams/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,MAAM,EAAE,YAoUpB,CAAC"}
|