dce-reactkit 3.4.1 → 3.5.1-beta.1
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/.eslintrc.js +2 -0
- package/.vscode/settings.json +1 -0
- package/dist/cjs/index.js +36372 -435
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/DBEntryManagerPanel/AddOrEditDBEntry/CreatableMultiselect.d.ts +10 -0
- package/dist/cjs/types/components/DBEntryManagerPanel/AddOrEditDBEntry/index.d.ts +34 -0
- package/dist/cjs/types/components/DBEntryManagerPanel/helpers/generateEndpointPath.d.ts +9 -0
- package/dist/cjs/types/components/DBEntryManagerPanel/index.d.ts +25 -0
- package/dist/cjs/types/components/DBEntryManagerPanel/types/DBEntry.d.ts +8 -0
- package/dist/cjs/types/components/DBEntryManagerPanel/types/DBEntryField.d.ts +49 -0
- package/dist/cjs/types/components/DBEntryManagerPanel/types/DBEntryFieldType.d.ts +12 -0
- package/dist/cjs/types/helpers/addDBEditorEndpoints.d.ts +40 -0
- package/dist/cjs/types/helpers/canReviewLogs.d.ts +0 -5
- package/dist/cjs/types/index.d.ts +6 -5
- package/dist/esm/index.js +36587 -667
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/DBEntryManagerPanel/AddOrEditDBEntry/CreatableMultiselect.d.ts +10 -0
- package/dist/esm/types/components/DBEntryManagerPanel/AddOrEditDBEntry/index.d.ts +34 -0
- package/dist/esm/types/components/DBEntryManagerPanel/helpers/generateEndpointPath.d.ts +9 -0
- package/dist/esm/types/components/DBEntryManagerPanel/index.d.ts +25 -0
- package/dist/esm/types/components/DBEntryManagerPanel/types/DBEntry.d.ts +8 -0
- package/dist/esm/types/components/DBEntryManagerPanel/types/DBEntryField.d.ts +49 -0
- package/dist/esm/types/components/DBEntryManagerPanel/types/DBEntryFieldType.d.ts +12 -0
- package/dist/esm/types/helpers/addDBEditorEndpoints.d.ts +40 -0
- package/dist/esm/types/helpers/canReviewLogs.d.ts +0 -5
- package/dist/esm/types/index.d.ts +6 -5
- package/dist/index.d.ts +166 -100
- package/package.json +16 -12
- package/src/client/initClient.tsx +23 -31
- package/src/components/AppWrapper.tsx +1 -1
- package/src/components/DBEntryManagerPanel/AddOrEditDBEntry/CreatableMultiselect.tsx +303 -0
- package/src/components/DBEntryManagerPanel/AddOrEditDBEntry/index.tsx +737 -0
- package/src/components/DBEntryManagerPanel/helpers/generateEndpointPath.ts +16 -0
- package/src/components/DBEntryManagerPanel/index.tsx +522 -0
- package/src/components/DBEntryManagerPanel/types/DBEntry.ts +7 -0
- package/src/components/DBEntryManagerPanel/types/DBEntryField.ts +94 -0
- package/src/components/DBEntryManagerPanel/types/DBEntryFieldType.ts +18 -0
- package/src/components/ItemPicker/index.test.tsx +10 -10
- package/src/helpers/addDBEditorEndpoints.ts +128 -0
- package/src/helpers/canReviewLogs.ts +0 -20
- package/src/helpers/genCSV.ts +2 -5
- package/src/helpers/{getOrdinal.ts → getOrdinal.tsx} +0 -1
- package/src/index.ts +11 -9
- package/tsconfig.json +2 -6
- package/dist/cjs/types/helpers/abbreviate.test.d.ts +0 -5
- package/dist/cjs/types/helpers/avg.test.d.ts +0 -5
- package/dist/cjs/types/helpers/canReviewLogs.test.d.ts +0 -5
- package/dist/cjs/types/helpers/ceilToNumDecimals.test.d.ts +0 -5
- package/dist/cjs/types/helpers/compareArraysByProp.test.d.ts +0 -5
- package/dist/cjs/types/helpers/extractProp.test.d.ts +0 -5
- package/dist/cjs/types/helpers/floorToNumDecimals.test.d.ts +0 -5
- package/dist/cjs/types/helpers/forceNumIntoBounds.test.d.ts +0 -5
- package/dist/cjs/types/helpers/genCSV.test.d.ts +0 -5
- package/dist/cjs/types/helpers/genCommaList.d.ts +0 -12
- package/dist/cjs/types/helpers/genCommaList.test.d.ts +0 -1
- package/dist/cjs/types/helpers/getHumanReadableDate.test.d.ts +0 -5
- package/dist/cjs/types/helpers/getLocalTimeInfo.test.d.ts +0 -6
- package/dist/cjs/types/helpers/getMonthName.test.d.ts +0 -5
- package/dist/cjs/types/helpers/getOrdinal.test.d.ts +0 -5
- package/dist/cjs/types/helpers/getPartOfDay.test.d.ts +0 -5
- package/dist/cjs/types/helpers/getTimeInfoInET.test.d.ts +0 -5
- package/dist/cjs/types/helpers/validators/shared/constants/ERROR_MESSAGES.d.ts +0 -10
- package/dist/cjs/types/helpers/validators/shared/helpers/validateRegex.d.ts +0 -19
- package/dist/cjs/types/helpers/validators/shared/types/ValidationResult.d.ts +0 -12
- package/dist/cjs/types/helpers/validators/validateEmail.d.ts +0 -11
- package/dist/cjs/types/helpers/validators/validateEmail.test.d.ts +0 -1
- package/dist/cjs/types/helpers/validators/validatePhoneNumber.d.ts +0 -11
- package/dist/cjs/types/helpers/validators/validatePhoneNumber.test.d.ts +0 -1
- package/dist/cjs/types/helpers/validators/validateString.d.ts +0 -22
- package/dist/cjs/types/helpers/validators/validateString.test.d.ts +0 -1
- package/dist/esm/types/helpers/abbreviate.test.d.ts +0 -5
- package/dist/esm/types/helpers/avg.test.d.ts +0 -5
- package/dist/esm/types/helpers/canReviewLogs.test.d.ts +0 -5
- package/dist/esm/types/helpers/ceilToNumDecimals.test.d.ts +0 -5
- package/dist/esm/types/helpers/compareArraysByProp.test.d.ts +0 -5
- package/dist/esm/types/helpers/extractProp.test.d.ts +0 -5
- package/dist/esm/types/helpers/floorToNumDecimals.test.d.ts +0 -5
- package/dist/esm/types/helpers/forceNumIntoBounds.test.d.ts +0 -5
- package/dist/esm/types/helpers/genCSV.test.d.ts +0 -5
- package/dist/esm/types/helpers/genCommaList.d.ts +0 -12
- package/dist/esm/types/helpers/genCommaList.test.d.ts +0 -1
- package/dist/esm/types/helpers/getHumanReadableDate.test.d.ts +0 -5
- package/dist/esm/types/helpers/getLocalTimeInfo.test.d.ts +0 -6
- package/dist/esm/types/helpers/getMonthName.test.d.ts +0 -5
- package/dist/esm/types/helpers/getOrdinal.test.d.ts +0 -5
- package/dist/esm/types/helpers/getPartOfDay.test.d.ts +0 -5
- package/dist/esm/types/helpers/getTimeInfoInET.test.d.ts +0 -5
- package/dist/esm/types/helpers/validators/shared/constants/ERROR_MESSAGES.d.ts +0 -10
- package/dist/esm/types/helpers/validators/shared/helpers/validateRegex.d.ts +0 -19
- package/dist/esm/types/helpers/validators/shared/types/ValidationResult.d.ts +0 -12
- package/dist/esm/types/helpers/validators/validateEmail.d.ts +0 -11
- package/dist/esm/types/helpers/validators/validateEmail.test.d.ts +0 -1
- package/dist/esm/types/helpers/validators/validatePhoneNumber.d.ts +0 -11
- package/dist/esm/types/helpers/validators/validatePhoneNumber.test.d.ts +0 -1
- package/dist/esm/types/helpers/validators/validateString.d.ts +0 -22
- package/dist/esm/types/helpers/validators/validateString.test.d.ts +0 -1
- package/src/helpers/abbreviate.test.ts +0 -26
- package/src/helpers/avg.test.ts +0 -24
- package/src/helpers/canReviewLogs.test.ts +0 -67
- package/src/helpers/ceilToNumDecimals.test.ts +0 -39
- package/src/helpers/compareArraysByProp.test.ts +0 -102
- package/src/helpers/extractProp.test.ts +0 -34
- package/src/helpers/floorToNumDecimals.test.ts +0 -39
- package/src/helpers/forceNumIntoBounds.test.ts +0 -34
- package/src/helpers/genCSV.test.ts +0 -61
- package/src/helpers/genCommaList.test.ts +0 -57
- package/src/helpers/genCommaList.ts +0 -21
- package/src/helpers/getHumanReadableDate.test.ts +0 -29
- package/src/helpers/getLocalTimeInfo.test.ts +0 -48
- package/src/helpers/getMonthName.test.ts +0 -79
- package/src/helpers/getOrdinal.test.ts +0 -84
- package/src/helpers/getPartOfDay.test.ts +0 -56
- package/src/helpers/getTimeInfoInET.test.ts +0 -72
- package/src/helpers/validators/shared/constants/ERROR_MESSAGES.ts +0 -18
- package/src/helpers/validators/shared/helpers/validateRegex.ts +0 -47
- package/src/helpers/validators/shared/types/ValidationResult.ts +0 -20
- package/src/helpers/validators/validateEmail.test.ts +0 -110
- package/src/helpers/validators/validateEmail.ts +0 -47
- package/src/helpers/validators/validatePhoneNumber.test.ts +0 -94
- package/src/helpers/validators/validatePhoneNumber.ts +0 -49
- package/src/helpers/validators/validateString.test.ts +0 -175
- package/src/helpers/validators/validateString.ts +0 -171
- /package/src/helpers/{abbreviate.ts → abbreviate.tsx} +0 -0
- /package/src/helpers/{avg.ts → avg.tsx} +0 -0
- /package/src/helpers/{ceilToNumDecimals.ts → ceilToNumDecimals.tsx} +0 -0
- /package/src/helpers/{floorToNumDecimals.ts → floorToNumDecimals.tsx} +0 -0
- /package/src/helpers/{forceNumIntoBounds.ts → forceNumIntoBounds.tsx} +0 -0
- /package/src/helpers/{getLocalTimeInfo.ts → getLocalTimeInfo.tsx} +0 -0
- /package/src/helpers/{getTimeInfoInET.ts → getTimeInfoInET.tsx} +0 -0
package/dist/cjs/types/components/DBEntryManagerPanel/AddOrEditDBEntry/CreatableMultiselect.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import DBEntryFieldType from '../types/DBEntryFieldType';
|
|
3
|
+
declare type Props = {
|
|
4
|
+
type: DBEntryFieldType.StringArray | DBEntryFieldType.NumberArray;
|
|
5
|
+
values: string[] | number[];
|
|
6
|
+
onChange: (values: string[] | number[]) => void;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare const CreatableMultiselect: React.FC<Props>;
|
|
10
|
+
export default CreatableMultiselect;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Panel for adding a DBEntry to the database
|
|
3
|
+
* @author Yuen Ler Chow
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import DBEntry from '../types/DBEntry';
|
|
7
|
+
import DBEntryField from '../types/DBEntryField';
|
|
8
|
+
declare type Props = {
|
|
9
|
+
/**
|
|
10
|
+
* Handler for when the user finishes adding the DBEntry
|
|
11
|
+
* (if no DBEntry is returned, process was cancelled)
|
|
12
|
+
* @param DBEntry the DBEntry that was just created
|
|
13
|
+
*/
|
|
14
|
+
onFinished: (dbEntry?: DBEntry) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Function to validate the DBEntry before saving
|
|
17
|
+
* @param dbEntry
|
|
18
|
+
*/
|
|
19
|
+
validateEntry?: (dbEntry: DBEntry) => Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Function to modify the DBEntry before saving
|
|
22
|
+
* @param dbEntry
|
|
23
|
+
* @returns the modified DBEntry
|
|
24
|
+
*/
|
|
25
|
+
modifyEntry?: (dbEntry: DBEntry) => DBEntry;
|
|
26
|
+
entryFields: DBEntryField[];
|
|
27
|
+
dbEntryToEdit?: DBEntry;
|
|
28
|
+
idPropName: string;
|
|
29
|
+
itemName: string;
|
|
30
|
+
saveEndpointPath: string;
|
|
31
|
+
entries: DBEntry[];
|
|
32
|
+
};
|
|
33
|
+
declare const AddOrEditDBEntry: React.FC<Props>;
|
|
34
|
+
export default AddOrEditDBEntry;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates the endpoint path for the given collection name
|
|
3
|
+
* @author Yuen Ler Chow
|
|
4
|
+
* @param collectionName the name of the collection
|
|
5
|
+
* @param [adminsOnly] true if the endpoint is for admins only
|
|
6
|
+
* @returns the endpoint path
|
|
7
|
+
*/
|
|
8
|
+
declare const generateEndpointPath: (collectionName: string, adminsOnly?: boolean | undefined) => string;
|
|
9
|
+
export default generateEndpointPath;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DB Entry Manager Panel
|
|
3
|
+
* @author Yuen Ler Chow
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import DBEntry from './types/DBEntry';
|
|
7
|
+
import DBEntryField from './types/DBEntryField';
|
|
8
|
+
declare type Props = {
|
|
9
|
+
entryFields: DBEntryField[];
|
|
10
|
+
idPropName: string;
|
|
11
|
+
titlePropName: string;
|
|
12
|
+
descriptionPropName: string;
|
|
13
|
+
itemListTitle: string;
|
|
14
|
+
itemName: string;
|
|
15
|
+
validateEntry?: (dbEntry: DBEntry) => Promise<void>;
|
|
16
|
+
modifyEntry?: (dbEntry: DBEntry) => Promise<DBEntry>;
|
|
17
|
+
disableEdit?: boolean;
|
|
18
|
+
collectionName: string;
|
|
19
|
+
adminsOnly?: boolean;
|
|
20
|
+
filterQuery?: {
|
|
21
|
+
[k: string]: any;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
declare const DBEntryManagerPanel: React.FC<Props>;
|
|
25
|
+
export default DBEntryManagerPanel;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import DBEntryFieldType from './DBEntryFieldType';
|
|
2
|
+
/**
|
|
3
|
+
* A database entry input field
|
|
4
|
+
* @author Yuen Ler Chow
|
|
5
|
+
*/
|
|
6
|
+
declare type DBEntryField = ({
|
|
7
|
+
label: string;
|
|
8
|
+
objectKey: string;
|
|
9
|
+
placeholder: string;
|
|
10
|
+
lockAfterCreation?: boolean;
|
|
11
|
+
required?: boolean;
|
|
12
|
+
} & ({
|
|
13
|
+
type: DBEntryFieldType.String;
|
|
14
|
+
minNumChars?: number;
|
|
15
|
+
maxNumChars?: number;
|
|
16
|
+
defaultValue?: string;
|
|
17
|
+
choices?: {
|
|
18
|
+
title: string;
|
|
19
|
+
value: string;
|
|
20
|
+
}[];
|
|
21
|
+
} | {
|
|
22
|
+
type: DBEntryFieldType.Number;
|
|
23
|
+
minNumber?: number;
|
|
24
|
+
maxNumber?: number;
|
|
25
|
+
defaultValue?: number;
|
|
26
|
+
} | {
|
|
27
|
+
type: DBEntryFieldType.StringArray;
|
|
28
|
+
minNumElements?: number;
|
|
29
|
+
maxNumElements?: number;
|
|
30
|
+
defaultValue?: string[];
|
|
31
|
+
choices?: {
|
|
32
|
+
title: string;
|
|
33
|
+
value: string;
|
|
34
|
+
}[];
|
|
35
|
+
} | {
|
|
36
|
+
type: DBEntryFieldType.NumberArray;
|
|
37
|
+
minNumElements?: number;
|
|
38
|
+
maxNumElements?: number;
|
|
39
|
+
minNumber?: number;
|
|
40
|
+
maxNumber?: number;
|
|
41
|
+
defaultValue?: number[];
|
|
42
|
+
} | {
|
|
43
|
+
type: DBEntryFieldType.Object;
|
|
44
|
+
defaultValue?: {
|
|
45
|
+
[k: string]: any;
|
|
46
|
+
};
|
|
47
|
+
subfields: DBEntryField[];
|
|
48
|
+
}));
|
|
49
|
+
export default DBEntryField;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for field types
|
|
3
|
+
* @author Yuen Ler Chow
|
|
4
|
+
*/
|
|
5
|
+
declare enum DBEntryFieldType {
|
|
6
|
+
String = "String",
|
|
7
|
+
Number = "Number",
|
|
8
|
+
Object = "Object",
|
|
9
|
+
StringArray = "StringArray",
|
|
10
|
+
NumberArray = "NumberArray"
|
|
11
|
+
}
|
|
12
|
+
export default DBEntryFieldType;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
/**
|
|
3
|
+
* Interface for a collection in the database
|
|
4
|
+
* @author Yuen Ler Chow
|
|
5
|
+
*/
|
|
6
|
+
interface Collection {
|
|
7
|
+
/**
|
|
8
|
+
* Find all items in the collection that match the filter query
|
|
9
|
+
* @param filterQuery
|
|
10
|
+
* @returns list of items that match the filter query
|
|
11
|
+
*/
|
|
12
|
+
find: (filterQuery: any) => Promise<any[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Insert an item into the collection
|
|
15
|
+
* @param item the item to insert
|
|
16
|
+
*/
|
|
17
|
+
insert: (item: any) => Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Delete an item in the collection
|
|
20
|
+
* @param id the id of the item to delete
|
|
21
|
+
*/
|
|
22
|
+
delete: (filterQuery: {
|
|
23
|
+
id: string;
|
|
24
|
+
}) => Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Add all routes for the DBEditor
|
|
28
|
+
* @author Yuen Ler Chow
|
|
29
|
+
* @param opts object containing all arguments
|
|
30
|
+
* @param opts.app express app to add routes too
|
|
31
|
+
* @param opts.collectionName the name of the collection
|
|
32
|
+
* @param opts.adminsOnly true if the endpoint is for admins only
|
|
33
|
+
*/
|
|
34
|
+
declare const addDBEditorEndpoints: (opts: {
|
|
35
|
+
app: express.Application;
|
|
36
|
+
collectionName: string;
|
|
37
|
+
adminsOnly: boolean;
|
|
38
|
+
collection: Collection;
|
|
39
|
+
}) => void;
|
|
40
|
+
export default addDBEditorEndpoints;
|
|
@@ -16,6 +16,7 @@ import ItemPicker from './components/ItemPicker';
|
|
|
16
16
|
import LogReviewer from './components/LogReviewer';
|
|
17
17
|
import IntelliTable from './components/IntelliTable';
|
|
18
18
|
import CSVDownloadButton from './components/CSVDownloadButton';
|
|
19
|
+
import DBEntryManagerPanel from './components/DBEntryManagerPanel';
|
|
19
20
|
import ErrorWithCode from './errors/ErrorWithCode';
|
|
20
21
|
import MINUTE_IN_MS from './constants/MINUTE_IN_MS';
|
|
21
22
|
import HOUR_IN_MS from './constants/HOUR_IN_MS';
|
|
@@ -54,11 +55,8 @@ import canReviewLogs from './helpers/canReviewLogs';
|
|
|
54
55
|
import isMobileOrTablet from './helpers/isMobileOrTablet';
|
|
55
56
|
import extractProp from './helpers/extractProp';
|
|
56
57
|
import compareArraysByProp from './helpers/compareArraysByProp';
|
|
57
|
-
import genCommaList from './helpers/genCommaList';
|
|
58
|
-
import validateEmail from './helpers/validators/validateEmail';
|
|
59
|
-
import validatePhoneNumber from './helpers/validators/validatePhoneNumber';
|
|
60
|
-
import validateString from './helpers/validators/validateString';
|
|
61
58
|
import getLocalTimeInfo from './helpers/getLocalTimeInfo';
|
|
59
|
+
import addDBEditorEndpoints from './helpers/addDBEditorEndpoints';
|
|
62
60
|
import ModalButtonType from './types/ModalButtonType';
|
|
63
61
|
import ModalSize from './types/ModalSize';
|
|
64
62
|
import ModalType from './types/ModalType';
|
|
@@ -74,4 +72,7 @@ import LogBuiltInMetadata from './types/LogBuiltInMetadata';
|
|
|
74
72
|
import LogMetadataType from './types/LogMetadataType';
|
|
75
73
|
import IntelliTableColumn from './types/IntelliTableColumn';
|
|
76
74
|
import PickableItem from './components/ItemPicker/types/PickableItem';
|
|
77
|
-
|
|
75
|
+
import DBEntry from './components/DBEntryManagerPanel/types/DBEntry';
|
|
76
|
+
import DBEntryField from './components/DBEntryManagerPanel/types/DBEntryField';
|
|
77
|
+
import DBEntryFieldType from './components/DBEntryManagerPanel/types/DBEntryFieldType';
|
|
78
|
+
export { AppWrapper, LoadingSpinner, ErrorBox, Modal, TabBox, RadioButton, CheckboxButton, ButtonInputGroup, SimpleDateChooser, Drawer, PopSuccessMark, PopFailureMark, PopPendingMark, CopiableBox, ItemPicker, LogReviewer, IntelliTable, CSVDownloadButton, DBEntryManagerPanel, alert, confirm, showFatalError, ErrorWithCode, MINUTE_IN_MS, HOUR_IN_MS, DAY_IN_MS, DynamicWord, abbreviate, avg, ceilToNumDecimals, floorToNumDecimals, forceNumIntoBounds, padDecimalZeros, padZerosLeft, roundToNumDecimals, sum, waitMs, getOrdinal, getTimeInfoInET, stubServerEndpoint, startMinWait, getHumanReadableDate, getPartOfDay, stringsToHumanReadableList, onlyKeepLetters, parallelLimit, getMonthName, genCSV, canReviewLogs, isMobileOrTablet, extractProp, compareArraysByProp, getLocalTimeInfo, initClient, visitServerEndpoint, logClientEvent, initServer, genRouteHandler, handleError, handleSuccess, initLogCollection, addDBEditorEndpoints, ModalButtonType, ModalSize, ModalType, ReactKitErrorCode, Variant, DayOfWeek, Log, LogType, LogSource, LogAction, LogBuiltInMetadata, LogMetadataType, IntelliTableColumn, PickableItem, DBEntry, DBEntryField, DBEntryFieldType, ParamType, };
|