aboutsummaryrefslogtreecommitdiff
path: root/src/server/index.ts
diff options
context:
space:
mode:
authorTyler Schicke <tyler_schicke@brown.edu>2019-05-07 21:57:48 -0400
committerTyler Schicke <tyler_schicke@brown.edu>2019-05-07 21:57:48 -0400
commit85d8e29c15b45cd83d258f185d3d55ff400a145e (patch)
tree5ba6a1c24abd990d650c9dd64f7786f8a30fef5e /src/server/index.ts
parent19bca65d863d1f40bd663f0aa5ed61ad92b6a764 (diff)
Added date support
Diffstat (limited to 'src/server/index.ts')
-rw-r--r--src/server/index.ts24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/server/index.ts b/src/server/index.ts
index 44251de3d..5023bf717 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -296,10 +296,17 @@ function GetRefFields([ids, callback]: [string[], (result?: Transferable[]) => v
}
-const suffixMap: { [type: string]: string } = {
+const suffixMap: { [type: string]: string | [string, string] | [string, string, (json: any) => any] } = {
"number": "_n",
- "string": "_t"
+ "string": "_t",
+ "image": ["_t", "url"],
+ "video": ["_t", "url"],
+ "pdf": ["_t", "url"],
+ "audio": ["_t", "url"],
+ "web": ["_t", "url"],
+ "date": ["_d", "date", millis => new Date(millis).toISOString()],
};
+
function UpdateField(socket: Socket, diff: Diff) {
Database.Instance.update(diff.id, diff.diff,
() => socket.broadcast.emit(MessageStore.UpdateField.Message, diff), false, "newDocuments");
@@ -311,9 +318,18 @@ function UpdateField(socket: Socket, diff: Diff) {
let dynfield = false;
for (let key in docfield) {
if (!key.startsWith("fields.")) continue;
- const val = docfield[key];
- const suffix = suffixMap[typeof val];
+ let val = docfield[key];
+ const type = val.__type || typeof val;
+ let suffix = suffixMap[type];
if (suffix !== undefined) {
+ if (Array.isArray(suffix)) {
+ val = val[suffix[1]];
+ const func = suffix[2];
+ if (func) {
+ val = func(val);
+ }
+ suffix = suffix[0];
+ }
key = key.substring(7);
Object.values(suffixMap).forEach(suf => update[key + suf] = null);
update[key + suffix] = { set: val };