placementt-core 11.0.892 → 11.0.951
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/constants.d.ts +1 -0
- package/lib/constants.js +47 -1
- package/lib/constants.js.map +1 -1
- package/lib/hooks.d.ts +57 -15
- package/lib/hooks.js +217 -43
- package/lib/hooks.js.map +1 -1
- package/lib/typeDefinitions.d.ts +91 -4
- package/lib/util.d.ts +25 -1
- package/lib/util.js +329 -2
- package/lib/util.js.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +49 -0
- package/src/hooks.tsx +247 -47
- package/src/typeDefinitions.ts +96 -20
- package/src/util.ts +350 -4
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
|
@@ -784,6 +784,53 @@ export const emailTemplates:{[key: string]: EmailTemplateConfig} = {
|
|
|
784
784
|
params: ["studentForename", "studentSurname", "studentEmail", "parentEmail", "instituteName", "cohortContactForename", "cohortContactSurname", "cohortContactEmail"],
|
|
785
785
|
type: "feedback"
|
|
786
786
|
},
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
employerEventInvite: {
|
|
790
|
+
description: "Send to employers/alumni inviting them to an event",
|
|
791
|
+
params: ["instituteName", "instituteContactForename", "instituteContactSurname", "instituteContactEmail", "forename", "surname", "providerEmail", "eventName", "startDate", "endDate"],
|
|
792
|
+
type: "event"
|
|
793
|
+
},
|
|
794
|
+
employerEventFinalConfirmation: {
|
|
795
|
+
description: "Send to the parent once the students account is activated.",
|
|
796
|
+
params: ["studentForename", "studentSurname", "studentEmail", "parentEmail", "instituteName", "cohortContactForename", "cohortContactSurname", "cohortContactEmail"],
|
|
797
|
+
type: "event"
|
|
798
|
+
},
|
|
799
|
+
employerEventConfirmationStudentMatch: {
|
|
800
|
+
description: "Send to the parent once the students account is activated.",
|
|
801
|
+
params: ["studentForename", "studentSurname", "studentEmail", "parentEmail", "instituteName", "cohortContactForename", "cohortContactSurname", "cohortContactEmail"],
|
|
802
|
+
type: "event"
|
|
803
|
+
},
|
|
804
|
+
employerEventInviteConfirmationGeneric: {
|
|
805
|
+
description: "Send to the parent once the students account is activated.",
|
|
806
|
+
params: ["studentForename", "studentSurname", "studentEmail", "parentEmail", "instituteName", "cohortContactForename", "cohortContactSurname", "cohortContactEmail"],
|
|
807
|
+
type: "event"
|
|
808
|
+
},
|
|
809
|
+
studentEventInvite: {
|
|
810
|
+
description: "Send to the parent once the students account is activated.",
|
|
811
|
+
params: ["studentForename", "studentSurname", "studentEmail", "parentEmail", "instituteName", "cohortContactForename", "cohortContactSurname", "cohortContactEmail"],
|
|
812
|
+
type: "event"
|
|
813
|
+
},
|
|
814
|
+
studentEventConfirmationEmployerMatch: {
|
|
815
|
+
description: "Send to the parent once the students account is activated.",
|
|
816
|
+
params: ["studentForename", "studentSurname", "studentEmail", "parentEmail", "instituteName", "cohortContactForename", "cohortContactSurname", "cohortContactEmail"],
|
|
817
|
+
type: "event"
|
|
818
|
+
},
|
|
819
|
+
studentEventInviteConfirmationGeneric: {
|
|
820
|
+
description: "Send to the parent once the students account is activated.",
|
|
821
|
+
params: ["studentForename", "studentSurname", "studentEmail", "parentEmail", "instituteName", "cohortContactForename", "cohortContactSurname", "cohortContactEmail"],
|
|
822
|
+
type: "event"
|
|
823
|
+
},
|
|
824
|
+
studentEventFeedback: {
|
|
825
|
+
description: "Send to the parent once the students account is activated.",
|
|
826
|
+
params: ["studentForename", "studentSurname", "studentEmail", "parentEmail", "instituteName", "cohortContactForename", "cohortContactSurname", "cohortContactEmail"],
|
|
827
|
+
type: "event"
|
|
828
|
+
},
|
|
829
|
+
employerEventFeedback: {
|
|
830
|
+
description: "Send to the parent once the students account is activated.",
|
|
831
|
+
params: ["studentForename", "studentSurname", "studentEmail", "parentEmail", "instituteName", "cohortContactForename", "cohortContactSurname", "cohortContactEmail"],
|
|
832
|
+
type: "event"
|
|
833
|
+
},
|
|
787
834
|
}
|
|
788
835
|
|
|
789
836
|
export const MISQueryParams = {
|
|
@@ -794,3 +841,5 @@ export const MISQueryParams = {
|
|
|
794
841
|
placeholder: "E.g. 'Year X'",
|
|
795
842
|
}],
|
|
796
843
|
};
|
|
844
|
+
|
|
845
|
+
export const externalActivityTypes = ["workExperience", "workplaceVisits", "mentoring", "mockInterviews", "other"]
|
package/src/hooks.tsx
CHANGED
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
import algoliasearch from "algoliasearch";
|
|
23
23
|
import {getDownloadURL, ref} from "firebase/storage";
|
|
24
24
|
import {OrganisationAddress} from "placementt-core";
|
|
25
|
+
import {objectsEqualNew} from "./util";
|
|
25
26
|
|
|
26
27
|
|
|
27
28
|
type StudentPlacementListParams = {
|
|
@@ -161,6 +162,9 @@ type NewInstitutePlacementParams = {
|
|
|
161
162
|
inProgress?: boolean,
|
|
162
163
|
view: "list"|"table",
|
|
163
164
|
filters?: FilterObject,
|
|
165
|
+
initialSort?: string,
|
|
166
|
+
initialSearch?: string
|
|
167
|
+
uid?: string,
|
|
164
168
|
}
|
|
165
169
|
|
|
166
170
|
|
|
@@ -323,7 +327,7 @@ export function useOldInstitutePlacementList({id, user, cohort, queryConstraint,
|
|
|
323
327
|
}
|
|
324
328
|
|
|
325
329
|
|
|
326
|
-
export function useNewInstitutePlacementList({id, user, filters, view, cohort, queryConstraints, ql=DEFAULTQUERYLIMIT, inProgress}:NewInstitutePlacementParams) {
|
|
330
|
+
export function useNewInstitutePlacementList({id, user, uid, filters, initialSort, initialSearch, view, cohort, queryConstraints, ql=DEFAULTQUERYLIMIT, inProgress}:NewInstitutePlacementParams) {
|
|
327
331
|
const [query, setQuery] = useState<QueryObject[]>();
|
|
328
332
|
|
|
329
333
|
const sorts:Sorts = {
|
|
@@ -348,7 +352,7 @@ export function useNewInstitutePlacementList({id, user, filters, view, cohort, q
|
|
|
348
352
|
direction: "asc",
|
|
349
353
|
},
|
|
350
354
|
["Student Email - Desc"]: {
|
|
351
|
-
value: "
|
|
355
|
+
value: "studentEmail",
|
|
352
356
|
direction: "desc",
|
|
353
357
|
},
|
|
354
358
|
["Provider email - Asc"]: {
|
|
@@ -367,28 +371,34 @@ export function useNewInstitutePlacementList({id, user, filters, view, cohort, q
|
|
|
367
371
|
|
|
368
372
|
const student = await getUserById(placement.uid).catch(() => false) as UserData|false;
|
|
369
373
|
|
|
370
|
-
if (!student)
|
|
374
|
+
if (!student) {
|
|
375
|
+
console.log("No student");
|
|
376
|
+
return
|
|
377
|
+
};
|
|
371
378
|
|
|
372
379
|
if (!user.studentFilterValues.includes(student.details[user.studentFilter])) {
|
|
380
|
+
console.log("filter not included. Filteres: ", user.studentFilterValues, "value", user.studentFilter, "-", student.details[user.studentFilter]);
|
|
373
381
|
return false;
|
|
374
382
|
}
|
|
375
383
|
}
|
|
376
384
|
return {...placement, id: k};
|
|
377
385
|
}
|
|
378
386
|
|
|
379
|
-
|
|
380
|
-
const {tableData, pageUp, pageDown, setFilters, page, setView, loading, updateSearch, updateSort, sort} = useDataViewerPaginator({view, filters, sorts, queryLimit: ql, data: query, additionalEntryProcessing: additionalProcessing, onSearch: async (s, sort, page, filters, limit) => await algoliaPlacementSearch(user, s, sort, page, filters, limit, cohort, inProgress)})
|
|
387
|
+
const {tableData, pageUp, pageDown, setFilters, page, setView, loading, updateSearch, updateSort, sort} = useDataViewerPaginator({view, filters, sorts, queryLimit: ql, initialSort, initialSearch, data: query, additionalEntryProcessing: additionalProcessing, onSearch: async (s, sort, page, filters, limit) => await algoliaPlacementSearch(query || [], user, s, sort, page, filters, limit, cohort, inProgress)})
|
|
381
388
|
|
|
382
389
|
useEffect(() => {
|
|
390
|
+
console.log("SET QUERY", user, queryConstraints, cohort);
|
|
383
391
|
// Sets the query of for the DataViewerPaginator
|
|
384
392
|
if(user.product !== "institutes" || user.userType !== "Staff") {
|
|
385
393
|
setQuery(undefined);
|
|
386
394
|
return;
|
|
387
395
|
}
|
|
388
|
-
if (((user.userGroup === "admin" || (cohort && user.viewCohorts === "some" && user?.visibleCohorts?.includes(cohort as string)) || (user.viewCohorts === "all" && user.viewStudents
|
|
396
|
+
if (((user.userGroup === "admin" || (cohort && user.viewCohorts === "some" && user?.visibleCohorts?.includes(cohort as string)) || (user.viewCohorts === "all" && user.viewStudents !== "none")))) {
|
|
389
397
|
const constraints:QueryObjectConstraint = [["oId", "==", user.oId], ["draft", "==", false]];
|
|
390
398
|
|
|
391
399
|
cohort && constraints.push(["cohort", "==", cohort]);
|
|
400
|
+
uid && constraints.push(["uid", "==", uid]);
|
|
401
|
+
|
|
392
402
|
queryConstraints && constraints.unshift(...queryConstraints);
|
|
393
403
|
inProgress !== undefined && constraints.push(["inProgress", "==", inProgress]);
|
|
394
404
|
|
|
@@ -499,7 +509,7 @@ export function useAlumniPaginator({user, alumniConvoUser, filters, view, school
|
|
|
499
509
|
}
|
|
500
510
|
|
|
501
511
|
|
|
502
|
-
const algoliaPlacementSearch = async (user: UserData, query?: string, sort?: [string, {value: string, direction: "asc"|"desc"}], page?: number, filters?: FilterObject, limit?: number, cohort?: string, inProgress?: boolean) => {
|
|
512
|
+
const algoliaPlacementSearch = async (data: QueryObject[], user: UserData, query?: string, sort?: [string, {value: string, direction: "asc"|"desc"}], page?: number, filters?: FilterObject, limit?: number, cohort?: string, inProgress?: boolean) => {
|
|
503
513
|
const algoliaClient = algoliasearch(process.env.NODE_ENV === "development" ? "A0ZB50I7VS" : "XMPXCMUUOJ", user.algoliaKey);
|
|
504
514
|
const placementsIndex = algoliaClient.initIndex(sort ? Object.values(sort[1]).join("_") : "placements");
|
|
505
515
|
// const usersIndex = algoliaClient.initIndex("users");
|
|
@@ -1000,7 +1010,7 @@ export function useProviderContactPaginator({data, user, view, filters}:{data:Qu
|
|
|
1000
1010
|
return v;
|
|
1001
1011
|
}
|
|
1002
1012
|
|
|
1003
|
-
const {tableData, pageUp, pageDown, setFilters, page, setView, loading} = useDataViewerPaginator({view, filters, queryLimit:
|
|
1013
|
+
const {tableData, pageUp, pageDown, setFilters, page, setView, loading} = useDataViewerPaginator({view, filters, queryLimit: 10, data: query, additionalEntryProcessing: getAdditionalData})
|
|
1004
1014
|
|
|
1005
1015
|
|
|
1006
1016
|
useEffect(() => {
|
|
@@ -1029,6 +1039,184 @@ type UserPaginatorParams = {
|
|
|
1029
1039
|
sort?: string
|
|
1030
1040
|
}
|
|
1031
1041
|
|
|
1042
|
+
|
|
1043
|
+
const algoliaUsersSearch = async (data: QueryObject[], user: UserData, query?: string, sort?: [string, {value: string, direction: "asc"|"desc"}], page?: number, filters?: FilterObject, limit?: number, cohort?: string) => {
|
|
1044
|
+
const algoliaClient = algoliasearch(process.env.NODE_ENV === "development" ? "A0ZB50I7VS" : "XMPXCMUUOJ", user.algoliaKey);
|
|
1045
|
+
console.log("SORT", sort);
|
|
1046
|
+
const userIndex = algoliaClient.initIndex(sort ? `users_${Object.values(sort[1]).join("_")}` : "users");
|
|
1047
|
+
const constraints = data[0].where;
|
|
1048
|
+
|
|
1049
|
+
if (!constraints?.length) return {};
|
|
1050
|
+
|
|
1051
|
+
let userSearchString = constraints.map(([k, e, v]) => {
|
|
1052
|
+
if (e === "==") return `${k}:${v}`; // Equality check
|
|
1053
|
+
if (e === "!=") return `${k}:-${v}`; // Not equal check
|
|
1054
|
+
if (e === "<") return `${k}:<${v}`; // Less than check
|
|
1055
|
+
if (e === "<=") return `${k}:<=${v}`; // Less than or equal check
|
|
1056
|
+
if (e === ">") return `${k}:>${v}`; // Greater than check
|
|
1057
|
+
if (e === ">=") return `${k}:>=${v}`; // Greater than or equal check
|
|
1058
|
+
if (e === "array-contains") return `${k}:${v}`; // Array contains check (string format)
|
|
1059
|
+
if (e === "array-contains-any") return `${k}:"${(v as string[]).join('","')}"`; // Array contains any of the values (string format)
|
|
1060
|
+
if (e === "in") return `(${(v as string[]).map((value) => `${k}:${value}`).join(' OR ')})`; // In check
|
|
1061
|
+
if (e === "not-in") return (v as string[]).map((value) => `${k}:-${value}`).join(' AND '); // In check
|
|
1062
|
+
return;
|
|
1063
|
+
}).join(" AND ");
|
|
1064
|
+
|
|
1065
|
+
filters && Object.entries(filters).filter(([, filter]) => filter.value).map(([id, filter]) => {
|
|
1066
|
+
userSearchString = userSearchString + ` AND ${id}:${filter.value}`;
|
|
1067
|
+
});
|
|
1068
|
+
|
|
1069
|
+
console.log("QUERY", userSearchString);
|
|
1070
|
+
|
|
1071
|
+
|
|
1072
|
+
const options = {
|
|
1073
|
+
filters: userSearchString,
|
|
1074
|
+
hitsPerPage: limit,
|
|
1075
|
+
page: page ? page - 1 : undefined,
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
const searchUsersHits = await userIndex.search<UserData>(query || "", options);
|
|
1079
|
+
|
|
1080
|
+
console.log(searchUsersHits.hits);
|
|
1081
|
+
|
|
1082
|
+
const i = (searchUsersHits ? (await Promise.all(searchUsersHits.hits.map(async (hit) => {
|
|
1083
|
+
return [hit.objectID, hit];
|
|
1084
|
+
}))) : []).filter((e) => e !== undefined) as [string, UserData][];
|
|
1085
|
+
|
|
1086
|
+
return Object.fromEntries(i)
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
|
|
1090
|
+
type NewUserPaginatorParams = {
|
|
1091
|
+
user: UserData,
|
|
1092
|
+
cohort?: string,
|
|
1093
|
+
queryConstraints?: QueryObjectConstraint,
|
|
1094
|
+
ql?: number,
|
|
1095
|
+
view: "list"|"table",
|
|
1096
|
+
filters?: FilterObject,
|
|
1097
|
+
institute: InstituteData,
|
|
1098
|
+
userType: "Staff"|"Students",
|
|
1099
|
+
initialSort?: string
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
|
|
1103
|
+
export function useNewCohortUserPaginator({user, institute, initialSort, filters, view, cohort, queryConstraints, ql=DEFAULTQUERYLIMIT, userType}:NewUserPaginatorParams) {
|
|
1104
|
+
const [query, setQuery] = useState<QueryObject[]>();
|
|
1105
|
+
|
|
1106
|
+
const firebaseQuery = new FirebaseQuery();
|
|
1107
|
+
|
|
1108
|
+
const sorts:Sorts = {
|
|
1109
|
+
["Student Forename - Asc"]: {
|
|
1110
|
+
value: "details.forename",
|
|
1111
|
+
direction: "asc",
|
|
1112
|
+
},
|
|
1113
|
+
["Student Forename - Desc"]: {
|
|
1114
|
+
value: "details.forename",
|
|
1115
|
+
direction: "desc",
|
|
1116
|
+
},
|
|
1117
|
+
["Student Surname - Asc"]: {
|
|
1118
|
+
value: "details.surname",
|
|
1119
|
+
direction: "asc",
|
|
1120
|
+
},
|
|
1121
|
+
["Student Surname - Desc"]: {
|
|
1122
|
+
value: "details.surname",
|
|
1123
|
+
direction: "desc",
|
|
1124
|
+
},
|
|
1125
|
+
["Student Email - Asc"]: {
|
|
1126
|
+
value: "email",
|
|
1127
|
+
direction: "asc",
|
|
1128
|
+
},
|
|
1129
|
+
["Student Email - Desc"]: {
|
|
1130
|
+
value: "email",
|
|
1131
|
+
direction: "desc",
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
useEffect(() => {
|
|
1136
|
+
|
|
1137
|
+
const getAccess = async () => {
|
|
1138
|
+
// Sets the query of for the DataViewerPaginator
|
|
1139
|
+
if(user.product !== "institutes" || user.userType !== "Staff") {
|
|
1140
|
+
setQuery(undefined);
|
|
1141
|
+
return;
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
const constraints:QueryObjectConstraint = [["oId", "==", user.oId], ["userType", "==", userType]];
|
|
1145
|
+
cohort && constraints.push(["cohort", "==", cohort]);
|
|
1146
|
+
queryConstraints && constraints.unshift(...queryConstraints);
|
|
1147
|
+
|
|
1148
|
+
const mSetQuery = (clear?: boolean) => {
|
|
1149
|
+
setQuery(clear ? undefined : [{
|
|
1150
|
+
path: ["users"],
|
|
1151
|
+
where: constraints
|
|
1152
|
+
}]);
|
|
1153
|
+
return;
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
if (institute.package === "institutes-one") {
|
|
1157
|
+
if (user.userGroup === "admin" || (user.viewCohorts === "all" && user.viewStudents === "all")) return mSetQuery();
|
|
1158
|
+
|
|
1159
|
+
if (!user.viewCohorts || user.viewCohorts === "none" || !user.viewStudents || user.viewStudents === "none" || (user.viewCohorts === "some" && !user.visibleCohorts?.length) || (user.viewStudents === "some" && !user.studentFilterValues?.length)) return mSetQuery(true);
|
|
1160
|
+
|
|
1161
|
+
if (user.viewStudents === "some") {
|
|
1162
|
+
constraints.push([`details.${user.studentFilter}`, "in", user.studentFilterValues as string[]]);
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
if (cohort) {
|
|
1166
|
+
const canViewCohort = user.viewCohorts === "all" || (user.viewCohorts === "some" && user.visibleCohorts?.includes("cohort"));
|
|
1167
|
+
return mSetQuery(canViewCohort);
|
|
1168
|
+
} else {
|
|
1169
|
+
// No cohort.
|
|
1170
|
+
if (user.viewCohorts === "all") return mSetQuery();
|
|
1171
|
+
if (user.viewCohorts === "some" && user.visibleCohorts) {
|
|
1172
|
+
constraints.push(["cohort", "in", user.visibleCohorts]);
|
|
1173
|
+
return mSetQuery()
|
|
1174
|
+
}
|
|
1175
|
+
return mSetQuery(true);
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
if (institute.package === "institutes-two") {
|
|
1180
|
+
if (user.userGroup === "admin" || (user.viewSchools === "all" && user.viewCohorts === "all" && user.viewStudents === "all")) return mSetQuery();
|
|
1181
|
+
|
|
1182
|
+
if (!user.viewCohorts || !user.viewSchools || user.viewSchools === "none" || user.viewCohorts === "none") return mSetQuery(true);
|
|
1183
|
+
if (!user.viewStudents || user.viewStudents === "none" || (user.viewStudents === "some" && !user.studentFilterValues?.length) || (user.viewCohorts === "some" && !user.visibleCohorts?.length) || (user.viewSchools === "some" && !user.visibleSchools?.length)) return mSetQuery(true);
|
|
1184
|
+
|
|
1185
|
+
if (user.viewStudents === "some") {
|
|
1186
|
+
constraints.push([`details.${user.studentFilter}`, "in", user.studentFilterValues as string[]]);
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
if (cohort) {
|
|
1190
|
+
if (user.viewCohorts === "some" && !user.visibleCohorts?.includes(cohort)) return mSetQuery(true);
|
|
1191
|
+
|
|
1192
|
+
if (user.viewSchools === "some") {
|
|
1193
|
+
const cohortData = await firebaseQuery.getDocData(["cohorts", cohort]) as CohortData;
|
|
1194
|
+
if (!cohortData.schoolId || !user.visibleSchools?.includes(cohortData.schoolId)) return mSetQuery(true)
|
|
1195
|
+
}
|
|
1196
|
+
} else {
|
|
1197
|
+
if (user.viewCohorts === "some" && user.visibleCohorts) {
|
|
1198
|
+
constraints.push(["cohort", "in", user.visibleCohorts]);
|
|
1199
|
+
} else if (user.viewSchools === "some" && user.visibleSchools) {
|
|
1200
|
+
const cohorts = await firebaseQuery.getDocsWhere("cohorts", [where("oId", "==", user.oId), where("schoolId", "in", user.visibleSchools)]);
|
|
1201
|
+
constraints.push(["cohort", "in", Object.keys(cohorts || {})]);
|
|
1202
|
+
}
|
|
1203
|
+
}
|
|
1204
|
+
return mSetQuery();
|
|
1205
|
+
}
|
|
1206
|
+
setQuery(undefined)
|
|
1207
|
+
}
|
|
1208
|
+
getAccess();
|
|
1209
|
+
}, [user, queryConstraints, cohort])
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
const {tableData, pageUp, pageDown, setFilters, page, setView, loading, updateSearch, updateSort, sort} = useDataViewerPaginator({view, filters, initialSort, sorts, queryLimit: ql, data: query, onSearch: async (s, sort, page, filters, limit) => await algoliaUsersSearch(query || [], user, s, sort, page, filters, limit, cohort)})
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
return {tableData, page, loading, updateSearch, setFilters, setView, pageUp, pageDown, sorts, updateSort, sort}
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
|
|
1032
1220
|
export function useCohortUserPaginator({user, cohort, data, search, userType, sort}:UserPaginatorParams) {
|
|
1033
1221
|
const [tableData, setTableData] = useState<{[key:string]:{[key:string]: unknown}}>({});
|
|
1034
1222
|
const [queryAnchor, setQueryAnchor] = useState<{startDoc?: QueryDocumentSnapshot, endDoc?: QueryDocumentSnapshot, startQueryPos: number, endQueryPos: number}>({startDoc: undefined, endDoc: undefined, startQueryPos: 0, endQueryPos: 0});
|
|
@@ -2065,8 +2253,8 @@ type CreateCohortRendererParams = {
|
|
|
2065
2253
|
initialData ?: CohortData
|
|
2066
2254
|
}
|
|
2067
2255
|
|
|
2068
|
-
export type CreateCohortStages = "info"|"name"|"placementType"|"review";
|
|
2069
|
-
const cohortStages = ["info", "name", "placementType", "review", "created"];
|
|
2256
|
+
export type CreateCohortStages = "info"|"name"|"placementType"|"database"|"review";
|
|
2257
|
+
const cohortStages = ["info", "name", "placementType", "database", "review", "created"];
|
|
2070
2258
|
|
|
2071
2259
|
const defaultCohortData:CohortData = {
|
|
2072
2260
|
name: "",
|
|
@@ -3272,7 +3460,7 @@ export function useGetIndividualPlacementForPlacementPage({user, placementId, or
|
|
|
3272
3460
|
}
|
|
3273
3461
|
if (e === "noInsurance") {
|
|
3274
3462
|
if (!eliData) {
|
|
3275
|
-
const storageRef = ref(storage, `insurance/${placement.
|
|
3463
|
+
const storageRef = ref(storage, `insurance/${placement.providerContactId}.pdf`);
|
|
3276
3464
|
const file = await getDownloadURL(storageRef).catch(() => placement.insuranceSkippedReason);
|
|
3277
3465
|
setELIData(file);
|
|
3278
3466
|
}
|
|
@@ -3948,10 +4136,12 @@ export type DataViewerPaginater = {
|
|
|
3948
4136
|
onSearch?: boolean | ((search?: string, sort?: [string, {value: string, direction: "asc"|"desc"}], page?: number, filters?:FilterObject, limit?: number) => Promise<{ [key: string]: any }>);
|
|
3949
4137
|
data?: {[key:string]:{[key:string]: unknown}}|QueryObject[];
|
|
3950
4138
|
additionalEntryProcessing?: (k: string, v: any) => Promise<any> | any,
|
|
3951
|
-
sorts?: Sorts
|
|
4139
|
+
sorts?: Sorts,
|
|
4140
|
+
initialSort?: string,
|
|
4141
|
+
initialSearch?: string
|
|
3952
4142
|
}
|
|
3953
4143
|
|
|
3954
|
-
export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10, additionalEntryProcessing, formatItems, snapshot, filters: initialFilters, onSearch, data}:DataViewerPaginater) {
|
|
4144
|
+
export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10, additionalEntryProcessing, formatItems, snapshot, filters: initialFilters, initialSort, initialSearch, onSearch, data}:DataViewerPaginater) {
|
|
3955
4145
|
const [tableData, setTableData] = useState<{[key:string]:{[key:string]: unknown}}>(Array.isArray(data) ? Object.fromEntries(Object.entries(data).slice(0, queryLimit)) : {});
|
|
3956
4146
|
const [page, setPage] = useState([1, 0]);
|
|
3957
4147
|
const [view, setView] = useState(initialView);
|
|
@@ -3961,16 +4151,18 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
3961
4151
|
const [dataListenerUnsubscribe, setDataListenerUnsubscribe] = useState<{[key: string] : Unsubscribe}>();
|
|
3962
4152
|
const [loading, setLoading] = useState<boolean|"loaded">(true);
|
|
3963
4153
|
const [searchString, setSearchString] = useState<string>();
|
|
3964
|
-
const [sort, setSort] = useState<[string, {value: string, direction: "asc"|"desc"}]>();
|
|
4154
|
+
const [sort, setSort] = useState<[string, {value: string, direction: "asc"|"desc"}]|undefined>((initialSort && sorts && sorts[initialSort]) ? [initialSort, sorts[initialSort]] : undefined);
|
|
4155
|
+
const [fData, setFData] = useState(data);
|
|
3965
4156
|
|
|
4157
|
+
console.log("SORT", sort, initialSort, sorts, sorts?.[initialSort || ""]);
|
|
3966
4158
|
|
|
3967
4159
|
|
|
3968
4160
|
const processedData = async (k: string, v: any) => additionalEntryProcessing ? await additionalEntryProcessing(k, v) : v;
|
|
3969
4161
|
|
|
3970
4162
|
const setTableDataFromDefinedData = async () => {
|
|
3971
|
-
if (!
|
|
4163
|
+
if (!fData || Array.isArray(fData)) return;
|
|
3972
4164
|
|
|
3973
|
-
const dataWithAdditionalProcessingPossibleNulls: [string, any][] = (await Promise.all(Object.entries(
|
|
4165
|
+
const dataWithAdditionalProcessingPossibleNulls: [string, any][] = (await Promise.all(Object.entries(fData).map(async ([k, v]) => [k, await processedData(k, v)])))
|
|
3974
4166
|
const dataWithAdditionalProcessing = dataWithAdditionalProcessingPossibleNulls.filter(([k, v]) => v);
|
|
3975
4167
|
|
|
3976
4168
|
const searchedData: [string, any][] = searchString ? dataWithAdditionalProcessing.filter(([, v]) => {
|
|
@@ -3992,7 +4184,7 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
3992
4184
|
if (!queryLimit) throw new Error("Tables must have a limit defined.");
|
|
3993
4185
|
const newData:[string, any][] = filteredData.slice((page[0] - 1)*queryLimit, page[0]*queryLimit);
|
|
3994
4186
|
setTableData(Object.fromEntries(newData));
|
|
3995
|
-
if (Object.keys(Object.fromEntries(newData)).pop() === Object.keys(
|
|
4187
|
+
if (Object.keys(Object.fromEntries(newData)).pop() === Object.keys(fData).pop()) {
|
|
3996
4188
|
setLoading("loaded");
|
|
3997
4189
|
} else {
|
|
3998
4190
|
setLoading(false);
|
|
@@ -4010,7 +4202,7 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
4010
4202
|
|
|
4011
4203
|
// if (!filters) return;
|
|
4012
4204
|
setLoading(true);
|
|
4013
|
-
if (!Array.isArray(
|
|
4205
|
+
if (!Array.isArray(fData)) {
|
|
4014
4206
|
setTableDataFromDefinedData();
|
|
4015
4207
|
return;
|
|
4016
4208
|
}
|
|
@@ -4018,8 +4210,8 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
4018
4210
|
|
|
4019
4211
|
if (onSearch && (searchString || sort)) {
|
|
4020
4212
|
if (typeof onSearch === "boolean") throw new Error("When using Firestore queries, an onSearch function should be passed to retrieve data externally. Additional processing is however completed in this hook.");
|
|
4021
|
-
const
|
|
4022
|
-
const dataWithAdditionalProcessing: [string, any][] = await Promise.all(Object.entries(
|
|
4213
|
+
const searchData = await onSearch(searchString, sort, page[0], filters, queryLimit);
|
|
4214
|
+
const dataWithAdditionalProcessing: [string, any][] = await Promise.all(Object.entries(searchData).map(async ([k, v]) => [k, await processedData(k, v)]));
|
|
4023
4215
|
|
|
4024
4216
|
setTableData((old) => {
|
|
4025
4217
|
if (view === "table") {
|
|
@@ -4045,7 +4237,7 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
4045
4237
|
cursorPos = currentQueryAnchor.startQueryPos;
|
|
4046
4238
|
}
|
|
4047
4239
|
|
|
4048
|
-
const querySchema:QueryObject =
|
|
4240
|
+
const querySchema:QueryObject = fData[cursorPos];
|
|
4049
4241
|
|
|
4050
4242
|
const createQuery = (queryData:QueryObject) => {
|
|
4051
4243
|
const constraints:any[] = [];
|
|
@@ -4107,7 +4299,7 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
4107
4299
|
|
|
4108
4300
|
// Function to handle query snapshot
|
|
4109
4301
|
async function handleQuerySnapshot(querySnapshot: QuerySnapshot) {
|
|
4110
|
-
if (!Array.isArray(
|
|
4302
|
+
if (!Array.isArray(fData)) throw new Error("Called querySnapshot but data is defined.");
|
|
4111
4303
|
if (!queryLimit) throw new Error("Firestore queries must have a limit defined.");
|
|
4112
4304
|
|
|
4113
4305
|
const queryResults: { [key: string]: { [key: string]: unknown } } = {};
|
|
@@ -4162,7 +4354,7 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
4162
4354
|
|
|
4163
4355
|
if (querySnapshot.size < queryLimit && Object.keys(itemList).length < queryLimit) {
|
|
4164
4356
|
// If we have ran out of entries, increase or decrease the index.
|
|
4165
|
-
if (page[0] > page[1] && cursorPos+1 <
|
|
4357
|
+
if (page[0] > page[1] && cursorPos+1 < fData.length) {
|
|
4166
4358
|
return getDataFromQuery(itemList, {...currentQueryAnchor, endQueryPos: currentQueryAnchor.endQueryPos+1}, "increase", prevEntries);
|
|
4167
4359
|
} else if (page[0] < page[1] && cursorPos > 0) {
|
|
4168
4360
|
return getDataFromQuery(itemList, {...currentQueryAnchor, startQueryPos: currentQueryAnchor.startQueryPos-1}, "decrease", prevEntries);
|
|
@@ -4176,7 +4368,7 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
4176
4368
|
|
|
4177
4369
|
if (querySnapshot.size === 0 &&
|
|
4178
4370
|
Object.keys(itemList).length === 0 &&
|
|
4179
|
-
currentQueryAnchor.endQueryPos+1 ===
|
|
4371
|
+
currentQueryAnchor.endQueryPos+1 === fData.length &&
|
|
4180
4372
|
page[0] > 1) {
|
|
4181
4373
|
if (view === "table") {
|
|
4182
4374
|
setTableData({});
|
|
@@ -4214,31 +4406,34 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
4214
4406
|
};
|
|
4215
4407
|
|
|
4216
4408
|
useEffect(() => {
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
reset();
|
|
4221
|
-
}, [filters]);
|
|
4222
|
-
|
|
4223
|
-
useEffect(() => {
|
|
4224
|
-
console.log("View reset.")
|
|
4409
|
+
if (objectsEqualNew(fData, data)) return;
|
|
4410
|
+
console.log("data reset.", fData, data);
|
|
4411
|
+
setFData(data);
|
|
4225
4412
|
reset();
|
|
4226
|
-
}, [
|
|
4413
|
+
}, [data]);
|
|
4227
4414
|
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4415
|
+
const updateFilters = (fFilters?: FilterObject) => {
|
|
4416
|
+
if (!objectsEqualNew(fFilters, filters)) {
|
|
4417
|
+
console.log("FILTER RESET", fFilters, filters);
|
|
4418
|
+
setFilters(fFilters);
|
|
4419
|
+
reset();
|
|
4420
|
+
}
|
|
4421
|
+
}
|
|
4232
4422
|
|
|
4233
|
-
|
|
4234
|
-
|
|
4423
|
+
|
|
4424
|
+
const updateSearch = (search: string) => {
|
|
4425
|
+
if (searchString === search) return;
|
|
4426
|
+
console.log("SEARCH RESET", searchString, search);
|
|
4427
|
+
setSearchString(search);
|
|
4235
4428
|
reset();
|
|
4236
|
-
}
|
|
4429
|
+
}
|
|
4237
4430
|
|
|
4238
|
-
|
|
4239
|
-
|
|
4431
|
+
const updateView = (v: "list" | "table") => {
|
|
4432
|
+
if (v === view) return;
|
|
4433
|
+
console.log("View reset", view, v);
|
|
4434
|
+
setView(v);
|
|
4240
4435
|
reset();
|
|
4241
|
-
}
|
|
4436
|
+
}
|
|
4242
4437
|
|
|
4243
4438
|
|
|
4244
4439
|
// Fetch new data when queries or page change
|
|
@@ -4255,10 +4450,15 @@ export function useDataViewerPaginator({view: initialView, sorts, queryLimit=10,
|
|
|
4255
4450
|
setPage((p) => ([p[0]-1, p[0]]));
|
|
4256
4451
|
};
|
|
4257
4452
|
|
|
4258
|
-
const updateSort = (sortLabel
|
|
4259
|
-
if (!
|
|
4260
|
-
|
|
4453
|
+
const updateSort = (sortLabel?: string) => {
|
|
4454
|
+
if (!sortLabel) {
|
|
4455
|
+
setSort(undefined);
|
|
4456
|
+
} else {
|
|
4457
|
+
if (!sorts || !sorts[sortLabel]) return;
|
|
4458
|
+
setSort([sortLabel, sorts[sortLabel]]);
|
|
4459
|
+
}
|
|
4460
|
+
reset();
|
|
4261
4461
|
}
|
|
4262
4462
|
|
|
4263
|
-
return ({...{tableData, pageUp, pageDown, setFilters, page: page[0], sorts, loading, sort, updateSort: updateSort, setView, updateSearch
|
|
4463
|
+
return ({...{tableData, pageUp, pageDown, search: searchString, setFilters: updateFilters, page: page[0], sorts, loading, sort, updateSort: updateSort, setView: updateView, updateSearch}});
|
|
4264
4464
|
};
|