aboutsummaryrefslogtreecommitdiff
path: root/src/fields/BasicField.ts
diff options
context:
space:
mode:
authorEleanor Eng <eleanoreng@eleanors-mbp.devices.brown.edu>2019-02-25 18:58:45 -0500
committerEleanor Eng <eleanoreng@eleanors-mbp.devices.brown.edu>2019-02-25 18:58:45 -0500
commit8d3ebd1eb393baf37932d021d6da79d46ef96a03 (patch)
treef6e0ef0cce9041525bcd5f6e0a37eee9226a9896 /src/fields/BasicField.ts
parentfa2be8b245e4ed69b771e70a98e65176785751eb (diff)
parent292ff1a8d75f8b15f9388d2c577e09a13836d5dc (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web into contextMenu
Diffstat (limited to 'src/fields/BasicField.ts')
-rw-r--r--src/fields/BasicField.ts29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/fields/BasicField.ts b/src/fields/BasicField.ts
index fb5cc773e..a92c4a236 100644
--- a/src/fields/BasicField.ts
+++ b/src/fields/BasicField.ts
@@ -1,15 +1,26 @@
-import { Field } from "./Field"
+import { Field, FieldId } from "./Field"
import { observable, computed, action } from "mobx";
+import { Server } from "../client/Server";
+import { UndoManager } from "../client/util/UndoManager";
export abstract class BasicField<T> extends Field {
- constructor(data: T) {
- super();
+ constructor(data: T, save: boolean, id?: FieldId) {
+ super(id);
this.data = data;
+ if (save) {
+ Server.UpdateField(this)
+ }
+ }
+
+ UpdateFromServer(data: any) {
+ if (this.data !== data) {
+ this.data = data;
+ }
}
@observable
- private data: T;
+ protected data: T;
@computed
get Data(): T {
@@ -20,6 +31,16 @@ export abstract class BasicField<T> extends Field {
if (this.data === value) {
return;
}
+ let oldValue = this.data;
+ this.setData(value);
+ UndoManager.AddEvent({
+ undo: () => this.Data = oldValue,
+ redo: () => this.Data = value
+ })
+ Server.UpdateField(this);
+ }
+
+ protected setData(value: T) {
this.data = value;
}