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/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
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "name": "placementt-core",
4
4
  "author": "Placementt",
5
- "version": "11.0.892",
5
+ "version": "11.0.951",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
8
8
  "scripts": {
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: "studentEmaile",
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) return;
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 === "all")))) {
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: 20, data: query, additionalEntryProcessing: getAdditionalData})
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.providerId}.pdf`);
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 (!data || Array.isArray(data)) return;
4163
+ if (!fData || Array.isArray(fData)) return;
3972
4164
 
3973
- const dataWithAdditionalProcessingPossibleNulls: [string, any][] = (await Promise.all(Object.entries(data).map(async ([k, v]) => [k, await processedData(k, v)])))
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(data).pop()) {
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(data)) {
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 data = await onSearch(searchString, sort, page[0], filters, queryLimit);
4022
- const dataWithAdditionalProcessing: [string, any][] = await Promise.all(Object.entries(data).map(async ([k, v]) => [k, await processedData(k, v)]));
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 = data[cursorPos];
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(data)) throw new Error("Called querySnapshot but data is defined.");
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 < data.length) {
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 === data.length &&
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
- console.log("Filters updates", filters);
4218
- if (!filters) return;
4219
- console.log("Resetting cus filters");
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
- }, [view]);
4413
+ }, [data]);
4227
4414
 
4228
- useEffect(() => {
4229
- console.log("search reset.")
4230
- reset();
4231
- }, [searchString]);
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
- useEffect(() => {
4234
- console.log("data reset.")
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
- }, [data]);
4429
+ }
4237
4430
 
4238
- useEffect(() => {
4239
- console.log("sort reset.")
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
- }, [sort]);
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: string) => {
4259
- if (!sorts || !sorts[sortLabel]) return;
4260
- setSort([sortLabel, sorts[sortLabel]]);
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: setSearchString}});
4463
+ return ({...{tableData, pageUp, pageDown, search: searchString, setFilters: updateFilters, page: page[0], sorts, loading, sort, updateSort: updateSort, setView: updateView, updateSearch}});
4264
4464
  };