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.
@@ -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 { 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" });
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 { 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 });
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
  ;