aboutsummaryrefslogtreecommitdiff
path: root/src/server/ServerUtil.ts
diff options
context:
space:
mode:
authorab <abdullah_ahmed@brown.edu>2019-03-09 15:59:36 -0500
committerab <abdullah_ahmed@brown.edu>2019-03-09 15:59:36 -0500
commit30b082a9d94465ae24d9c392843518e8df2c9d66 (patch)
tree01c464b96defe06b2c99e8e298b9287901d4d9b0 /src/server/ServerUtil.ts
parent12d20ab1b9b843d816bde445d9b67b3aa6abc6ae (diff)
parent96eede5f7d1706a3f7ac6ee02a85bb3da217f467 (diff)
merging
Diffstat (limited to 'src/server/ServerUtil.ts')
-rw-r--r--src/server/ServerUtil.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/server/ServerUtil.ts b/src/server/ServerUtil.ts
new file mode 100644
index 000000000..3b9d14891
--- /dev/null
+++ b/src/server/ServerUtil.ts
@@ -0,0 +1,60 @@
+import {HtmlField} from '../fields/HtmlField';
+import {InkField} from '../fields/InkField';
+import {PDFField} from '../fields/PDFField';
+import {WebField} from '../fields/WebField';
+import {Utils} from '../Utils';
+import {Document} from './../fields/Document';
+import {Field} from './../fields/Field';
+import {ImageField} from './../fields/ImageField';
+import {Key} from './../fields/Key';
+import {ListField} from './../fields/ListField';
+import {NumberField} from './../fields/NumberField';
+import {RichTextField} from './../fields/RichTextField';
+import {TextField} from './../fields/TextField';
+import {Types} from './Message';
+
+export class ServerUtils {
+ public static FromJson(json: any): Field {
+ let obj = json
+ let data: any = obj.data
+ let id: string = obj._id
+ let type: Types = obj.type
+
+ if (!(data !== undefined && id && type !== undefined)) {
+ console.log("how did you manage to get an object that doesn't have a data or an id?")
+ return new TextField("Something to fill the space", Utils.GenerateGuid());
+ }
+
+ switch (type) {
+ case Types.Number:
+ return new NumberField(data, id, false)
+ case Types.Text:
+ return new TextField(data, id, false)
+ case Types.Html:
+ return new HtmlField(data, id, false)
+ case Types.Web:
+ return new WebField(new URL(data), id, false)
+ case Types.RichText:
+ return new RichTextField(data, id, false)
+ case Types.Key:
+ return new Key(data, id, false)
+ case Types.Image:
+ return new ImageField(new URL(data), id, false)
+ case Types.PDF:
+ return new PDFField(new URL(data), id, false)
+ case Types.List:
+ return ListField.FromJson(id, data)
+ case Types.Ink:
+ return InkField.FromJson(id, data);
+ case Types.Document:
+ let doc: Document = new Document(id, false)
+ let fields: [string, string][] = data as [string, string][]
+ fields.forEach(element => {
+ doc._proxies.set(element[0], element[1]);
+ });
+ return doc
+ default:
+ throw Error("Error, unrecognized field type received from server. If you just created a new field type, be sure to add it here");
+ }
+ }
+} \ No newline at end of file