aboutsummaryrefslogtreecommitdiff
path: root/src/new_fields/Doc.ts
diff options
context:
space:
mode:
authorSam Wilkins <samwilkins333@gmail.com>2019-07-08 19:55:39 -0400
committerSam Wilkins <samwilkins333@gmail.com>2019-07-08 19:55:39 -0400
commitb91fc6aadf03ef0a65adb085076263b462de9423 (patch)
tree9cb11317302027ec8bafc37bf6479fc2ed7d5969 /src/new_fields/Doc.ts
parent04887c8a578147015421d3909bd100c82ac5e31d (diff)
parent4944abd854e672f62926089f3619b92dcaf3b2ca (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web into import
Diffstat (limited to 'src/new_fields/Doc.ts')
-rw-r--r--src/new_fields/Doc.ts12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts
index 092205f52..aa13b1d7a 100644
--- a/src/new_fields/Doc.ts
+++ b/src/new_fields/Doc.ts
@@ -9,6 +9,7 @@ import { ObjectField } from "./ObjectField";
import { RefField, FieldId } from "./RefField";
import { ToScriptString, SelfProxy, Parent, OnUpdate, Self, HandleUpdate, Update, Id } from "./FieldSymbols";
import { scriptingGlobal } from "../client/util/Scripting";
+import { List } from "./List";
export namespace Field {
export function toScriptString(field: Field): string {
@@ -241,9 +242,18 @@ export namespace Doc {
return Array.from(results);
}
- export function AddDocToList(target: Doc, key: string, doc: Doc, relativeTo?: Doc, before?: boolean, first?: boolean) {
+ export function AddDocToList(target: Doc, key: string, doc: Doc, relativeTo?: Doc, before?: boolean, first?: boolean, allowDuplicates?: boolean) {
+ if (target[key] === undefined) {
+ Doc.GetProto(target)[key] = new List<Doc>();
+ }
let list = Cast(target[key], listSpec(Doc));
if (list) {
+ if (allowDuplicates !== true) {
+ let pind = list.reduce((l, d, i) => d instanceof Doc && Doc.AreProtosEqual(d, doc) ? i : l, -1);
+ if (pind !== -1) {
+ list.splice(pind, 1);
+ }
+ }
if (first) list.splice(0, 0, doc);
else {
let ind = relativeTo ? list.indexOf(relativeTo) : -1;