placementt-core 1.400.1007 → 1.400.1008
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/lib/exportTransformers.js +5 -1
- package/lib/exportTransformers.js.map +1 -1
- package/lib/features/search/globalSearch.d.ts +16 -0
- package/lib/features/search/globalSearch.js +37 -5
- package/lib/features/search/globalSearch.js.map +1 -1
- package/lib/hooks.d.ts +7 -2
- package/lib/hooks.js +16 -7
- package/lib/hooks.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/tasksAndTips.js +3 -2
- package/lib/tasksAndTips.js.map +1 -1
- package/lib/typeDefinitions.d.ts +44 -4
- package/lib/util.js +1 -1
- package/lib/util.js.map +1 -1
- package/lib/workflows.d.ts +54 -0
- package/lib/workflows.js +124 -0
- package/lib/workflows.js.map +1 -0
- package/package.json +1 -1
- package/src/exportTransformers.ts +5 -2
- package/src/features/search/globalSearch.ts +41 -4
- package/src/hooks.tsx +17 -9
- package/src/index.ts +1 -0
- package/src/tasksAndTips.ts +3 -2
- package/src/typeDefinitions.ts +50 -4
- package/src/util.ts +1 -1
- package/src/workflows.ts +125 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.exportTransformers = void 0;
|
|
4
|
+
const workflows_1 = require("./workflows");
|
|
4
5
|
exports.exportTransformers = {
|
|
5
6
|
resolveCohortName: async (fetcher, value) => {
|
|
6
7
|
if (!value)
|
|
@@ -13,7 +14,10 @@ exports.exportTransformers = {
|
|
|
13
14
|
if (!cohortId)
|
|
14
15
|
return value;
|
|
15
16
|
const cohort = await fetcher.getDocData(["cohorts", cohortId]).catch(() => null);
|
|
16
|
-
|
|
17
|
+
if (!cohort?.workflowId)
|
|
18
|
+
return value;
|
|
19
|
+
const workflowConfig = await fetcher.getDocData(["workflows", cohort.workflowId]).catch(() => null);
|
|
20
|
+
return (0, workflows_1.applyWorkflowOverrides)(workflowConfig?.workflow || [], cohort.workflowOverrides).find(s => s.id === value)?.name ?? value;
|
|
17
21
|
},
|
|
18
22
|
resolveActivityTitles: async (fetcher, value) => {
|
|
19
23
|
const activityIds = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exportTransformers.js","sourceRoot":"","sources":["../src/exportTransformers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"exportTransformers.js","sourceRoot":"","sources":["../src/exportTransformers.ts"],"names":[],"mappings":";;;AACA,2CAAmD;AAStC,QAAA,kBAAkB,GAAwC;IACnE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACxC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAa,CAAC,SAAS,EAAE,KAAe,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACpG,OAAO,MAAM,EAAE,IAAI,IAAI,KAAK,CAAC;IACjC,CAAC;IAED,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAgB,CAAC;QACvC,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7F,IAAI,CAAC,MAAM,EAAE,UAAU;YAAE,OAAO,KAAK,CAAC;QACtC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACpH,OAAO,IAAA,kCAAsB,EAAC,cAAc,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC;IACrI,CAAC;IAED,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC5C,MAAM,WAAW,GAAG,KAAoC,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE,MAAM;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAmB,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAC5G,CAAC;QACF,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;CACJ,CAAC"}
|
|
@@ -63,6 +63,22 @@ export type GlobalSearchIndexDefinition = {
|
|
|
63
63
|
/** Turns one raw hit into a row. */
|
|
64
64
|
toHit: (hit: any) => GlobalSearchHit;
|
|
65
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* The oIds whose employer databases this institute may read.
|
|
68
|
+
*
|
|
69
|
+
* Its own, plus every trust and every careers hub it has an approved link with —
|
|
70
|
+
* for a trust, `trustLinks` holds its member schools, so the same walk covers
|
|
71
|
+
* both directions of the relationship. Mirrors the `sources` handling in
|
|
72
|
+
* useProviderContactPaginator, which is what the Employers list itself queries.
|
|
73
|
+
*
|
|
74
|
+
* @param {UserData} user the signed-in user.
|
|
75
|
+
* @param {InstituteData} [institute] the signed-in institute.
|
|
76
|
+
* @return {{oId: string, linked: boolean}[]} scopes to search, own database first.
|
|
77
|
+
*/
|
|
78
|
+
export declare const employerSearchScopes: (user: UserData, institute?: InstituteData) => {
|
|
79
|
+
oId: string;
|
|
80
|
+
linked: boolean;
|
|
81
|
+
}[];
|
|
66
82
|
/**
|
|
67
83
|
* The indexes the navbar search covers.
|
|
68
84
|
*
|
|
@@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.nonEmptyGlobalSearchSections = exports.totalGlobalSearchHits = exports.globalSearch = exports.availableGlobalSearchIndexes = exports.GLOBAL_SEARCH_INDEXES = exports.GLOBAL_SEARCH_INDEX_HITS = exports.GLOBAL_SEARCH_OVERVIEW_HITS = void 0;
|
|
17
|
+
exports.nonEmptyGlobalSearchSections = exports.totalGlobalSearchHits = exports.globalSearch = exports.availableGlobalSearchIndexes = exports.GLOBAL_SEARCH_INDEXES = exports.employerSearchScopes = exports.GLOBAL_SEARCH_INDEX_HITS = exports.GLOBAL_SEARCH_OVERVIEW_HITS = void 0;
|
|
18
18
|
const algoliasearch_1 = __importDefault(require("algoliasearch"));
|
|
19
19
|
const util_1 = require("../../firebase/util");
|
|
20
20
|
const algoliaConfig_1 = require("../../algoliaConfig");
|
|
@@ -26,6 +26,33 @@ const fullName = (forename, surname) => [forename, surname].filter(Boolean).join
|
|
|
26
26
|
const joinParts = (...parts) => parts.filter(Boolean).join(" · ") || undefined;
|
|
27
27
|
/** Packages that run their own students, placements and cohorts. */
|
|
28
28
|
const isSchoolPackage = (institute) => institute?.package === "institutes-one" || institute?.package === "institutes-two";
|
|
29
|
+
/** Packages that keep an employer database of their own. */
|
|
30
|
+
const hasEmployerDatabase = (institute) => isSchoolPackage(institute) || institute?.package === "careersHub";
|
|
31
|
+
/**
|
|
32
|
+
* The oIds whose employer databases this institute may read.
|
|
33
|
+
*
|
|
34
|
+
* Its own, plus every trust and every careers hub it has an approved link with —
|
|
35
|
+
* for a trust, `trustLinks` holds its member schools, so the same walk covers
|
|
36
|
+
* both directions of the relationship. Mirrors the `sources` handling in
|
|
37
|
+
* useProviderContactPaginator, which is what the Employers list itself queries.
|
|
38
|
+
*
|
|
39
|
+
* @param {UserData} user the signed-in user.
|
|
40
|
+
* @param {InstituteData} [institute] the signed-in institute.
|
|
41
|
+
* @return {{oId: string, linked: boolean}[]} scopes to search, own database first.
|
|
42
|
+
*/
|
|
43
|
+
const employerSearchScopes = (user, institute) => {
|
|
44
|
+
const approved = (links) => Object.entries(links || {})
|
|
45
|
+
.filter(([, link]) => link?.status === "approved")
|
|
46
|
+
.map(([oId]) => oId);
|
|
47
|
+
const linked = [...approved(institute?.trustLinks), ...approved(institute?.careersHubLinks)]
|
|
48
|
+
.filter((oId) => oId !== user.oId);
|
|
49
|
+
return [
|
|
50
|
+
{ oId: user.oId, linked: false },
|
|
51
|
+
// Deduped: a school can be linked to a trust and a hub that share an oId.
|
|
52
|
+
...Array.from(new Set(linked)).map((oId) => ({ oId, linked: true })),
|
|
53
|
+
];
|
|
54
|
+
};
|
|
55
|
+
exports.employerSearchScopes = employerSearchScopes;
|
|
29
56
|
/**
|
|
30
57
|
* The indexes the navbar search covers.
|
|
31
58
|
*
|
|
@@ -54,10 +81,15 @@ exports.GLOBAL_SEARCH_INDEXES = [
|
|
|
54
81
|
label: "Employers",
|
|
55
82
|
labelSingular: "employer",
|
|
56
83
|
indexName: "providerContacts",
|
|
57
|
-
available: (institute) => Boolean(institute && institute
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
|
|
84
|
+
available: (institute) => Boolean(hasEmployerDatabase(institute) && institute?.network !== false),
|
|
85
|
+
// oIds are Firestore ids, so they go into the attribute path unquoted — the
|
|
86
|
+
// same shape algoliaProviderContactSearch already uses. Own records come
|
|
87
|
+
// through at any status; a linked trust's or hub's only once approved.
|
|
88
|
+
filters: (user, institute) => `(${(0, exports.employerSearchScopes)(user, institute)
|
|
89
|
+
.map(({ oId, linked }) => (linked ?
|
|
90
|
+
`(savedBy.${oId}.exists:true AND savedBy.${oId}.status:approved)` :
|
|
91
|
+
`savedBy.${oId}.exists:true`))
|
|
92
|
+
.join(" OR ")})`,
|
|
61
93
|
toHit: (hit) => ({
|
|
62
94
|
id: hit.objectID,
|
|
63
95
|
title: hit.name || fullName(hit.contactForename, hit.contactSurname) || "Unnamed employer",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalSearch.js","sourceRoot":"","sources":["../../../src/features/search/globalSearch.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;AAEH,kEAA0C;AAE1C,8CAA+D;AAC/D,uDAAmD;AAEnD,8EAA8E;AACjE,QAAA,2BAA2B,GAAG,CAAC,CAAC;AAE7C,8EAA8E;AACjE,QAAA,wBAAwB,GAAG,EAAE,CAAC;AAoD3C,MAAM,QAAQ,GAAG,CAAC,QAAiB,EAAE,OAAgB,EAAE,EAAE,CACrD,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAEzD,MAAM,SAAS,GAAG,CAAC,GAAG,KAAiC,EAAE,EAAE,CACvD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;AAEnD,oEAAoE;AACpE,MAAM,eAAe,GAAG,CAAC,SAAyB,EAAE,EAAE,CAClD,SAAS,EAAE,OAAO,KAAK,gBAAgB,IAAI,SAAS,EAAE,OAAO,KAAK,gBAAgB,CAAC;AAEvF;;;;;GAKG;AACU,QAAA,qBAAqB,GAAkC;IAChE;QACI,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,aAAa,EAAE,WAAW;QAC1B,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,cAAc,CAAC;QAC1F,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAA,iCAA0B,EAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB;QAChF,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,EAAE,EAAE,GAAG,CAAC,QAAQ;YAChB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,oBAAoB;YACpD,QAAQ,EAAE,SAAS,CACf,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EACrB,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,EAC9D,GAAG,CAAC,QAAQ,CACf;YACD,IAAI,EAAE,GAAG,CAAC,UAAU;YACpB,IAAI,EAAE,kCAAkC,GAAG,CAAC,QAAQ,EAAE;YACtD,GAAG,EAAE,GAAG;SACX,CAAC;KACL;IACD;QACI,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,aAAa,EAAE,UAAU;QACzB,SAAS,EAAE,kBAAkB;QAC7B,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,
|
|
1
|
+
{"version":3,"file":"globalSearch.js","sourceRoot":"","sources":["../../../src/features/search/globalSearch.ts"],"names":[],"mappings":"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"}
|
package/lib/hooks.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DocumentData, QueryConstraint, QueryDocumentSnapshot } from "firebase/firestore";
|
|
2
|
-
import { AlumniConvoUser, ApplicantStage, Application, ArrowObject, CohortData, CSVExportResponse, CustomFormSchema, ExternalEvent, FileItem, FilterObject, FlagCodes, InstituteData, OnboardingDocs, PlacementListing, Products, ProviderData, QueryObject, QueryObjectConstraint, Sorts, StudentPlacementData, UserData, UserGroupData, WorkflowStage } from "./typeDefinitions";
|
|
2
|
+
import { AlumniConvoUser, ApplicantStage, Application, ArrowObject, CohortData, CSVExportResponse, CustomFormSchema, ExternalEvent, FileItem, FilterObject, FlagCodes, InstituteData, OnboardingDocs, PlacementListing, Products, ProviderData, QueryObject, QueryObjectConstraint, Sorts, StudentPlacementData, UserData, UserGroupData, WorkflowConfig, WorkflowStage } from "./typeDefinitions";
|
|
3
3
|
type StudentPlacementListParams = {
|
|
4
4
|
user: UserData;
|
|
5
5
|
student?: UserData;
|
|
@@ -413,7 +413,9 @@ export declare function useUserUploadHandler({ product, oId, event, eventId, use
|
|
|
413
413
|
parentEmail?: string;
|
|
414
414
|
year: number;
|
|
415
415
|
[key: string]: unknown;
|
|
416
|
-
}[]
|
|
416
|
+
}[], options?: {
|
|
417
|
+
activateImmediately?: boolean;
|
|
418
|
+
}) => Promise<void>;
|
|
417
419
|
alert: {
|
|
418
420
|
severity: "warning" | "error" | "success" | "info";
|
|
419
421
|
msg: string;
|
|
@@ -572,6 +574,9 @@ export declare function useGetIndividualPlacementForPlacementPage({ user, placem
|
|
|
572
574
|
cohorts: {
|
|
573
575
|
[key: string]: CohortData;
|
|
574
576
|
};
|
|
577
|
+
workflows?: {
|
|
578
|
+
[key: string]: WorkflowConfig;
|
|
579
|
+
};
|
|
575
580
|
};
|
|
576
581
|
}): {
|
|
577
582
|
placement: StudentPlacementData | undefined;
|
package/lib/hooks.js
CHANGED
|
@@ -42,6 +42,7 @@ const writeDatabase_1 = require("./firebase/writeDatabase");
|
|
|
42
42
|
const algoliasearch_1 = __importDefault(require("algoliasearch"));
|
|
43
43
|
const storage_1 = require("firebase/storage");
|
|
44
44
|
const util_2 = require("./util");
|
|
45
|
+
const workflows_1 = require("./workflows");
|
|
45
46
|
const algoliaConfig_1 = require("./algoliaConfig");
|
|
46
47
|
const DEFAULTQUERYLIMIT = 5;
|
|
47
48
|
function useStudentPlacementList({ user, student, queryConstraint, ql = DEFAULTQUERYLIMIT }) {
|
|
@@ -2172,7 +2173,6 @@ const defaultCohortData = {
|
|
|
2172
2173
|
startPlacements: "",
|
|
2173
2174
|
endPlacements: "",
|
|
2174
2175
|
placementType: "defined",
|
|
2175
|
-
workflow: [],
|
|
2176
2176
|
oId: "",
|
|
2177
2177
|
product: "providers",
|
|
2178
2178
|
feedback: {
|
|
@@ -2301,7 +2301,9 @@ function useUserUploadHandler({ product, oId, event, eventId, userType, user, on
|
|
|
2301
2301
|
}
|
|
2302
2302
|
return true;
|
|
2303
2303
|
};
|
|
2304
|
-
|
|
2304
|
+
// activateImmediately can be set per submission (e.g. the "Add and activate"
|
|
2305
|
+
// button on staff uploads) as well as for the whole hook.
|
|
2306
|
+
const uploadUsers = async (users, options) => {
|
|
2305
2307
|
let fUsers = [];
|
|
2306
2308
|
const cleanUpload = checkData(users);
|
|
2307
2309
|
if (!cleanUpload) {
|
|
@@ -2311,7 +2313,7 @@ function useUserUploadHandler({ product, oId, event, eventId, userType, user, on
|
|
|
2311
2313
|
setAlert(undefined);
|
|
2312
2314
|
if (fUsers.length) {
|
|
2313
2315
|
console.log("fUsers", fUsers);
|
|
2314
|
-
const jobId = await execute(userType === "eventStudents" ? "events-addStudents" : "userManagement-addUsers", { product: product, oId: oId, event: event, eventId: eventId, users: fUsers, userType: userType, userGroupId: userGroupId, cohortId: cohortId, activateImmediately, parentEmailTemplate });
|
|
2316
|
+
const jobId = await execute(userType === "eventStudents" ? "events-addStudents" : "userManagement-addUsers", { product: product, oId: oId, event: event, eventId: eventId, users: fUsers, userType: userType, userGroupId: userGroupId, cohortId: cohortId, activateImmediately: options?.activateImmediately ?? activateImmediately, parentEmailTemplate });
|
|
2315
2317
|
onComplete && onComplete(jobId.jobId);
|
|
2316
2318
|
}
|
|
2317
2319
|
console.log("Complete", onComplete);
|
|
@@ -3017,12 +3019,19 @@ function useGetIndividualPlacementForPlacementPage({ user, placementId, organisa
|
|
|
3017
3019
|
}
|
|
3018
3020
|
if (placement.cohort) {
|
|
3019
3021
|
if (user.product === "institutes" && user.oId === placement.oId) {
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
+
const cohortData = organisation?.cohorts[placement.cohort];
|
|
3023
|
+
setCohort(cohortData);
|
|
3024
|
+
// Workflows live in their own collection - resolve from context when loaded, else fetch.
|
|
3025
|
+
if (organisation?.workflows) {
|
|
3026
|
+
setWorkflow((0, workflows_1.resolveCohortWorkflow)(cohortData, organisation.workflows));
|
|
3027
|
+
}
|
|
3028
|
+
else {
|
|
3029
|
+
(0, workflows_1.fetchCohortWorkflow)(cohortData, firebaseQuery).then(setWorkflow);
|
|
3030
|
+
}
|
|
3022
3031
|
}
|
|
3023
3032
|
else {
|
|
3024
|
-
firebaseQuery.getDocData(["cohorts", placement.cohort]).then((w) => {
|
|
3025
|
-
setWorkflow(
|
|
3033
|
+
firebaseQuery.getDocData(["cohorts", placement.cohort]).then(async (w) => {
|
|
3034
|
+
setWorkflow(await (0, workflows_1.fetchCohortWorkflow)(w, firebaseQuery));
|
|
3026
3035
|
setCohort(w);
|
|
3027
3036
|
});
|
|
3028
3037
|
}
|