placementt-core 1.400.840 → 1.400.842
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.d.ts +3 -0
- package/lib/exportTransformers.js +28 -0
- package/lib/exportTransformers.js.map +1 -0
- package/lib/hooks.d.ts +8 -6
- package/lib/hooks.js +43 -4
- 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/typeDefinitions.d.ts +2 -0
- package/package.json +1 -1
- package/src/exportTransformers.ts +32 -0
- package/src/hooks.tsx +47 -5
- package/src/index.ts +1 -0
- package/src/typeDefinitions.ts +1 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { SectionDataFetcher } from "./typeDefinitions";
|
|
2
|
+
export type ExportTransformerFn = (fetcher: SectionDataFetcher, value: unknown, item: Record<string, unknown>, params?: Record<string, unknown>) => Promise<unknown>;
|
|
3
|
+
export declare const exportTransformers: Record<string, ExportTransformerFn>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exportTransformers = void 0;
|
|
4
|
+
exports.exportTransformers = {
|
|
5
|
+
resolveCohortName: async (fetcher, value) => {
|
|
6
|
+
var _a;
|
|
7
|
+
if (!value)
|
|
8
|
+
return value;
|
|
9
|
+
const cohort = await fetcher.getDocData(["cohorts", value]).catch(() => null);
|
|
10
|
+
return (_a = cohort === null || cohort === void 0 ? void 0 : cohort.name) !== null && _a !== void 0 ? _a : value;
|
|
11
|
+
},
|
|
12
|
+
resolveWorkflowStageName: async (fetcher, value, item) => {
|
|
13
|
+
var _a, _b, _c;
|
|
14
|
+
const cohortId = item.cohort;
|
|
15
|
+
if (!cohortId)
|
|
16
|
+
return value;
|
|
17
|
+
const cohort = await fetcher.getDocData(["cohorts", cohortId]).catch(() => null);
|
|
18
|
+
return (_c = (_b = (_a = cohort === null || cohort === void 0 ? void 0 : cohort.workflow) === null || _a === void 0 ? void 0 : _a.find(s => s.id === value)) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : value;
|
|
19
|
+
},
|
|
20
|
+
resolveActivityTitles: async (fetcher, value) => {
|
|
21
|
+
const activityIds = value;
|
|
22
|
+
if (!(activityIds === null || activityIds === void 0 ? void 0 : activityIds.length))
|
|
23
|
+
return "";
|
|
24
|
+
const activities = await Promise.all(activityIds.map(id => fetcher.getDocData(["externalActivities", id]).catch(() => null)));
|
|
25
|
+
return activities.flatMap(a => (a === null || a === void 0 ? void 0 : a.title) ? [a.title] : []).join(", ");
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=exportTransformers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exportTransformers.js","sourceRoot":"","sources":["../src/exportTransformers.ts"],"names":[],"mappings":";;;AASa,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,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,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,OAAO,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,0CAAE,IAAI,mCAAI,KAAK,CAAC;IACtE,CAAC;IAED,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC5C,MAAM,WAAW,GAAG,KAAoC,CAAC;QACzD,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,CAAA;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,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;CACJ,CAAC"}
|
package/lib/hooks.d.ts
CHANGED
|
@@ -76,7 +76,7 @@ export declare function useNewInstitutePlacementList({ id, user, oId, uid, filte
|
|
|
76
76
|
value: string;
|
|
77
77
|
direction: "asc" | "desc";
|
|
78
78
|
}] | undefined;
|
|
79
|
-
exportCSV: (userId: string, filename?: string) => Promise<CSVExportResponse
|
|
79
|
+
exportCSV: ((userId: string, filename?: string) => Promise<CSVExportResponse>) | undefined;
|
|
80
80
|
};
|
|
81
81
|
type AlumniPaginatorParams = {
|
|
82
82
|
user?: UserData;
|
|
@@ -105,7 +105,7 @@ export declare function useAlumniPaginator({ user, alumniConvoUser, filters, vie
|
|
|
105
105
|
direction: "asc" | "desc";
|
|
106
106
|
};
|
|
107
107
|
};
|
|
108
|
-
exportCSV: (userId: string, filename?: string) => Promise<CSVExportResponse
|
|
108
|
+
exportCSV: ((userId: string, filename?: string) => Promise<CSVExportResponse>) | undefined;
|
|
109
109
|
};
|
|
110
110
|
type ParentPaginatorParams = {
|
|
111
111
|
user?: UserData;
|
|
@@ -134,7 +134,7 @@ export declare function useParentPaginator({ user, filters, view, school, additi
|
|
|
134
134
|
direction: "asc" | "desc";
|
|
135
135
|
};
|
|
136
136
|
};
|
|
137
|
-
exportCSV: (userId: string, filename?: string) => Promise<CSVExportResponse
|
|
137
|
+
exportCSV: ((userId: string, filename?: string) => Promise<CSVExportResponse>) | undefined;
|
|
138
138
|
};
|
|
139
139
|
export declare const algoliaPlacementSearch: (data: QueryObject | null, user: UserData, query?: string, sort?: [string, {
|
|
140
140
|
value: string;
|
|
@@ -215,7 +215,7 @@ export declare function useProviderContactPaginator({ data, institute, user, eve
|
|
|
215
215
|
value: string;
|
|
216
216
|
direction: "asc" | "desc";
|
|
217
217
|
}] | undefined;
|
|
218
|
-
exportCSV: (userId: string, filename?: string) => Promise<CSVExportResponse
|
|
218
|
+
exportCSV: ((userId: string, filename?: string) => Promise<CSVExportResponse>) | undefined;
|
|
219
219
|
};
|
|
220
220
|
type UserPaginatorParams = {
|
|
221
221
|
user: UserData;
|
|
@@ -269,7 +269,7 @@ export declare function useNewCohortUserPaginator({ user, oId, trustSchoolsIDs,
|
|
|
269
269
|
direction: "asc" | "desc";
|
|
270
270
|
}] | undefined;
|
|
271
271
|
search: string | undefined;
|
|
272
|
-
exportCSV: (userId: string, filename?: string) => Promise<CSVExportResponse
|
|
272
|
+
exportCSV: ((userId: string, filename?: string) => Promise<CSVExportResponse>) | undefined;
|
|
273
273
|
};
|
|
274
274
|
export declare function useCohortUserPaginator({ user, cohort, data, search, userType, sort }: UserPaginatorParams): {
|
|
275
275
|
tableData: {
|
|
@@ -850,6 +850,8 @@ export type DataViewerPaginater = {
|
|
|
850
850
|
columns?: {
|
|
851
851
|
field: string;
|
|
852
852
|
header: string;
|
|
853
|
+
transform?: string;
|
|
854
|
+
transformParams?: Record<string, unknown>;
|
|
853
855
|
}[];
|
|
854
856
|
filename?: string;
|
|
855
857
|
};
|
|
@@ -874,6 +876,6 @@ export declare function useDataViewerPaginator({ view: initialView, sorts, query
|
|
|
874
876
|
updateSort: (sortLabel?: string) => void;
|
|
875
877
|
setView: (v: "list" | "table") => void;
|
|
876
878
|
updateSearch: (search: string) => void;
|
|
877
|
-
exportCSV: (userId: string, filename?: string) => Promise<CSVExportResponse
|
|
879
|
+
exportCSV: ((userId: string, filename?: string) => Promise<CSVExportResponse>) | undefined;
|
|
878
880
|
};
|
|
879
881
|
export {};
|
package/lib/hooks.js
CHANGED
|
@@ -298,7 +298,28 @@ function useNewInstitutePlacementList({ id, user, oId, uid, filters, initialSort
|
|
|
298
298
|
}
|
|
299
299
|
return [k, { ...placement, id: k }];
|
|
300
300
|
};
|
|
301
|
-
const
|
|
301
|
+
const exportCols = {
|
|
302
|
+
columns: [
|
|
303
|
+
{ field: "studentForename", header: "Student Forename" },
|
|
304
|
+
{ field: "studentSurname", header: "Student Surname" },
|
|
305
|
+
{ field: "studentEmail", header: "Student Email" },
|
|
306
|
+
{ field: "name", header: "Employer Name" },
|
|
307
|
+
{ field: "contactForename", header: "Employer Forename" },
|
|
308
|
+
{ field: "contactSurname", header: "Employer Surname" },
|
|
309
|
+
{ field: "startDate", header: "Start Date" },
|
|
310
|
+
{ field: "endDate", header: "End Date" },
|
|
311
|
+
...(!cohort ? [{ field: "cohort", header: "Cohort", transform: "resolveCohortName" }] : []),
|
|
312
|
+
{ field: "status", header: "Workflow Stage", transform: "resolveWorkflowStageName" },
|
|
313
|
+
{ field: "providerEmail", header: "Employer Email" },
|
|
314
|
+
{ field: "providerPhone", header: "Employer Phone" },
|
|
315
|
+
{ field: "address-line1", header: "Address One" },
|
|
316
|
+
{ field: "address-line2", header: "Address Two" },
|
|
317
|
+
{ field: "locality", header: "City" },
|
|
318
|
+
{ field: "postal_code", header: "Postcode" },
|
|
319
|
+
{ field: "country", header: "Country" },
|
|
320
|
+
]
|
|
321
|
+
};
|
|
322
|
+
const { tableData, pageUp, pageDown, setFilters, page, setView, loading, updateSearch, updateSort, sort, exportCSV } = useDataViewerPaginator({ view, filters, sorts, queryLimit: ql, initialSort, initialSearch, data: query, additionalEntryProcessing: additionalProcessing, onSearch: async (s, sort, data, page, filters, limit) => await (0, exports.algoliaPlacementSearch)(data || null, user, s, sort, page, filters, limit, cohort, inProgress), algoliaIndex: "placements", csvExport: exportCols });
|
|
302
323
|
(0, react_1.useEffect)(() => {
|
|
303
324
|
var _a;
|
|
304
325
|
console.log("SET QUERY", user, queryConstraints, cohort);
|
|
@@ -910,6 +931,7 @@ const algoliaProviderContactSearch = async (data, user, query, sort, page, filte
|
|
|
910
931
|
};
|
|
911
932
|
exports.algoliaProviderContactSearch = algoliaProviderContactSearch;
|
|
912
933
|
function useProviderContactPaginator({ data, institute, user, event, view, initialSort, initialSearch, eventId, filters, sources = ["self"], csvExport }) {
|
|
934
|
+
var _a;
|
|
913
935
|
const [query, setQuery] = (0, react_1.useState)();
|
|
914
936
|
const firebaseQuery = new firebaseQuery_1.default();
|
|
915
937
|
const sorts = {
|
|
@@ -973,7 +995,24 @@ function useProviderContactPaginator({ data, institute, user, event, view, initi
|
|
|
973
995
|
return [k, v];
|
|
974
996
|
};
|
|
975
997
|
console.log("Query", JSON.stringify(query));
|
|
976
|
-
const
|
|
998
|
+
const defaultExportColumns = [
|
|
999
|
+
{ field: "contactForename", header: "First Name" },
|
|
1000
|
+
{ field: "contactSurname", header: "Last Name" },
|
|
1001
|
+
{ field: "name", header: "Employer" },
|
|
1002
|
+
{ field: "providerEmail", header: "Email" },
|
|
1003
|
+
{ field: "providerPhone", header: "Phone" },
|
|
1004
|
+
{ field: "sector", header: "Sector" },
|
|
1005
|
+
{ field: "subsector", header: "Subsector" },
|
|
1006
|
+
{ field: "address-line1", header: "Address line 1" },
|
|
1007
|
+
{ field: "address-line2", header: "Address line 2" },
|
|
1008
|
+
{ field: "locality", header: "City" },
|
|
1009
|
+
{ field: "postal_code", header: "Postcode" },
|
|
1010
|
+
{ field: "country", header: "Country" },
|
|
1011
|
+
{ field: "created", header: "Created" },
|
|
1012
|
+
{ field: `savedBy.${user.oId}.activities`, header: "Consented Activities", transform: "resolveActivityTitles" },
|
|
1013
|
+
];
|
|
1014
|
+
const mergedCsvExport = { ...csvExport, columns: (_a = csvExport === null || csvExport === void 0 ? void 0 : csvExport.columns) !== null && _a !== void 0 ? _a : defaultExportColumns };
|
|
1015
|
+
const { tableData, pageUp, pageDown, setFilters, page, setView, loading, updateSearch, updateSort, sort, exportCSV } = useDataViewerPaginator({ view, filters, sorts, queryLimit: 10, data: query, initialSearch, initialSort, additionalEntryProcessing: getAdditionalData, onSearch: async (s, sort, data, page, filters, limit) => await (0, exports.algoliaProviderContactSearch)(data !== null && data !== void 0 ? data : null, user, s, sort, page, filters, limit), algoliaIndex: "providerContacts", csvExport: mergedCsvExport });
|
|
977
1016
|
(0, react_1.useEffect)(() => {
|
|
978
1017
|
if (eventId && (event === null || event === void 0 ? void 0 : event.oId)) {
|
|
979
1018
|
console.log("Setting Query");
|
|
@@ -4019,7 +4058,7 @@ function useDataViewerPaginator({ view: initialView, sorts, queryLimit = 10, add
|
|
|
4019
4058
|
}
|
|
4020
4059
|
reset();
|
|
4021
4060
|
};
|
|
4022
|
-
const exportCSV = async (userId, filename) => {
|
|
4061
|
+
const exportCSV = (csvExportConfig === null || csvExportConfig === void 0 ? void 0 : csvExportConfig.columns) ? async (userId, filename) => {
|
|
4023
4062
|
console.log("Export Data");
|
|
4024
4063
|
if (!fData || !Array.isArray(fData))
|
|
4025
4064
|
throw new Error("CSV export requires QueryObject[] data.");
|
|
@@ -4034,7 +4073,7 @@ function useDataViewerPaginator({ view: initialView, sorts, queryLimit = 10, add
|
|
|
4034
4073
|
filename: filename || (csvExportConfig === null || csvExportConfig === void 0 ? void 0 : csvExportConfig.filename),
|
|
4035
4074
|
});
|
|
4036
4075
|
return res.data;
|
|
4037
|
-
};
|
|
4076
|
+
} : undefined;
|
|
4038
4077
|
return ({ ...{ tableData, pageUp, pageDown, search: searchString, setFilters: updateFilters, page: page[0], sorts, loading, sort, updateSort: updateSort, setView: updateView, updateSearch, exportCSV } });
|
|
4039
4078
|
}
|
|
4040
4079
|
;
|