dbm 1.1.18 → 1.1.19

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.
@@ -31,5 +31,19 @@ export const propertyOf = function(aValue, aPropertyName) {
31
31
  updateFunction.input.properties.value.setOrConnect(aValue);
32
32
  updateFunction.input.properties.propertyName.setOrConnect(aPropertyName);
33
33
 
34
+ return updateFunction;
35
+ }
36
+
37
+ export const combine = function(...aValues) {
38
+ let updateFunction = new Dbm.flow.updatefunctions.basic.CombineString();
39
+
40
+ let currentArray = aValues;
41
+ let currentArrayLength = currentArray.length;
42
+ for(let i = 0; i < currentArrayLength; i++) {
43
+ let currentData = currentArray[i];
44
+ updateFunction.addPart(currentData);
45
+ }
46
+
47
+
34
48
  return updateFunction;
35
49
  }
@@ -60,6 +60,7 @@ export default class ApiConnection extends Dbm.core.BaseObject {
60
60
 
61
61
  requestItem(aId, aEncode) {
62
62
  let item = this._getRequestItem();
63
+ item.requireProperty("item", null);
63
64
 
64
65
  let encodeString = aEncode.join(",");
65
66
 
@@ -84,6 +84,7 @@ export default class WebSocketConnection extends Dbm.core.BaseObject {
84
84
 
85
85
  requestItem(aId, aEncode) {
86
86
  let item = this._getRequestItem();
87
+ item.requireProperty("item", null);
87
88
  item.setValue("requestData", {"type": "item", "id": aId, "encode": aEncode, "requestId": item.id});
88
89
  this._runRequest(item);
89
90
 
@@ -105,7 +105,7 @@ export default class ItemEditor extends Dbm.core.BaseObject {
105
105
  }
106
106
 
107
107
  getVisibilityEditor(aInitialValue) {
108
- let name = "visibility"
108
+ let name = "visibility";
109
109
  let valueEditor = this.item["visibility"];
110
110
  if(!valueEditor) {
111
111
  valueEditor = new Dbm.graphapi.webclient.admin.ValueEditor();
@@ -124,6 +124,26 @@ export default class ItemEditor extends Dbm.core.BaseObject {
124
124
  return valueEditor;
125
125
  }
126
126
 
127
+ getIdentiferEditor(aInitialValue) {
128
+ let name = "identifer";
129
+ let valueEditor = this.item["identifer"];
130
+ if(!valueEditor) {
131
+ valueEditor = new Dbm.graphapi.webclient.admin.ValueEditor();
132
+ valueEditor.item.editValue.setInitialValue(aInitialValue);
133
+
134
+ valueEditor.item.setValue("itemEditor", this.item);
135
+ valueEditor.item.setValue("updateEncoding", "identifer");
136
+
137
+ this.item.anyChange.addCheck(valueEditor.item.properties.changed);
138
+ this.item.setValue(name, valueEditor);
139
+ this.item.editors = [].concat(this.item.editors, valueEditor);
140
+
141
+ valueEditor.addSaveFunction(Dbm.graphapi.webclient.admin.SaveFunctions.setIdentifier);
142
+ }
143
+
144
+ return valueEditor;
145
+ }
146
+
127
147
  addCommandsToSaveData(aSaveData) {
128
148
 
129
149
  let editedItemId = Dbm.objectPath(this.item, "editedItem.id");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dbm",
3
- "version": "1.1.18",
3
+ "version": "1.1.19",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "scripts": {},
@@ -194,7 +194,13 @@ export default class EditPage extends Dbm.react.BaseObject {
194
194
  "155"
195
195
  )
196
196
  ),
197
-
197
+ React.createElement("div", {className: "spacing standard"}),
198
+ React.createElement(Dbm.react.form.LabelledArea, {label: "Main image"},
199
+ React.createElement(Dbm.react.admin.editorsgroup.EditRelation, {"direction": "in", "relationType": "isMainImageFor", "objectType": "image"},
200
+ React.createElement(Dbm.react.form.GraphApiImage, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), "objectType": "page", "encoding": "title", nameField: "title", className: "standard-field standard-field-padding full-width"})
201
+ )
202
+ ),
203
+ React.createElement("div", {className: "spacing standard"}),
198
204
  React.createElement("div", {className: "flex-row small-item-spacing"},
199
205
  React.createElement("div", {className: "flex-row-item"},
200
206
  React.createElement(Dbm.react.form.Checkbox, {checked: itemEditor.getEditor("seo/noIndex").item.editValue.value}),
@@ -58,6 +58,14 @@ export default class ImageField extends Dbm.react.BaseObject {
58
58
  "Save to library"
59
59
  )
60
60
  )
61
+ ),
62
+ React.createElement("div", {className: "flex-row-item flex-resize"}),
63
+ React.createElement("div", {className: "flex-row-item"},
64
+ React.createElement(Dbm.react.interaction.CommandButton, {command: Dbm.commands.callFunction(this._updateFromLibrary.bind(this))},
65
+ React.createElement("div", {className: "action-button action-button-padding"},
66
+ "Update from library"
67
+ )
68
+ )
61
69
  )
62
70
  )
63
71
  )
@@ -153,6 +161,29 @@ export default class ImageField extends Dbm.react.BaseObject {
153
161
  let request = Dbm.getInstance().repository.getItem("graphApi").controller.editItem(this.item.value.id, changes);
154
162
  }
155
163
 
164
+ _updateFromLibrary() {
165
+ let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
166
+
167
+ let request = graphApi.requestItem(this.item.value.id, ["image"]);
168
+ Dbm.flow.addUpdateCommandWhenMatched(request.properties.status, Dbm.loading.LoadingStatus.LOADED, Dbm.commands.callFunction(this._libraryImageLoaded.bind(this), [request]));
169
+
170
+ }
171
+
172
+ _libraryImageLoaded(aRequest) {
173
+ console.log("_libraryImageLoaded");
174
+ console.log(aRequest);
175
+
176
+ let item = aRequest.item;
177
+
178
+ let imageData = {id: item.id, url: item.url, resizeUrl: item.resizeUrl, identifier: item.identifier, altText: item.altText};
179
+ this.item.value = null;
180
+
181
+ setTimeout(() => {
182
+ this.item.value = imageData;
183
+ }, 100);
184
+
185
+ }
186
+
156
187
  _imageSelected(aImage) {
157
188
  //console.log("_imageSelected");
158
189
  //console.log(aImage);
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import Dbm from "../../../index.js";
3
+
4
+ export default class EditVisibility extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ let item = this.context.item;
9
+ let itemEditor = this.context.itemEditor;
10
+ let initialDataPath = this.getPropValueWithDefault("initialDataPath", "identifier");
11
+ let initialData = Dbm.objectPath(item, initialDataPath);
12
+
13
+ let editor = itemEditor.getIdentiferEditor(initialData);
14
+ this.item.setValue("editor", editor.item);
15
+ }
16
+
17
+ _renderMainElement() {
18
+
19
+ let children = this.getPropValue("children")
20
+
21
+ return React.createElement("div", {},
22
+ React.createElement(Dbm.react.context.AddContextVariables, {"values": {"valueEditor": this.item.editor}}, children)
23
+ );
24
+ }
25
+ }
@@ -1,4 +1,5 @@
1
1
  export {default as EditField} from "./EditField.js";
2
2
  export {default as EditItem} from "./EditItem.js";
3
3
  export {default as EditRelation} from "./EditRelation.js";
4
- export {default as EditVisibility} from "./EditVisibility.js";
4
+ export {default as EditVisibility} from "./EditVisibility.js";
5
+ export {default as EditIdentifer} from "./EditIdentifer.js";
@@ -44,6 +44,7 @@ export default class ObjectList extends Dbm.react.BaseObject {
44
44
 
45
45
  _create() {
46
46
  console.log("_create");
47
+
47
48
  let objectType = this.getPropValue("objectType");
48
49
  let encodings = this.getPropValueWithDefault("encodings", ["name"]);
49
50
  let visibility = this.getPropValueWithDefault("visibility", "private");
@@ -52,7 +53,13 @@ export default class ObjectList extends Dbm.react.BaseObject {
52
53
  {"type": "setField", "data": {"value": "Unnamed " + objectType, "field": "name"}}
53
54
  ];
54
55
 
55
- let request = Dbm.getInstance().repository.getItem("graphApi").controller.createItem([objectType], visibility, changes, encodings);
56
+ let types = [objectType];
57
+ let additionalTypes = this.getPropValue("additionalTypes");
58
+ if(additionalTypes) {
59
+ types = types.concat(additionalTypes);
60
+ }
61
+
62
+ let request = Dbm.getInstance().repository.getItem("graphApi").controller.createItem(types, visibility, changes, encodings);
56
63
 
57
64
  Dbm.flow.addUpdateCommand(request.properties.status, Dbm.commands.callFunction(this._created.bind(this), [request]));
58
65
  }
@@ -0,0 +1,45 @@
1
+ import React from "react";
2
+ import Dbm from "../../../../index.js";
3
+
4
+ export default class Identifier extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
9
+
10
+ let id = this.context.item.id;
11
+
12
+ let allLoaded = Dbm.flow.updatefunctions.logic.allAtValue(Dbm.loading.LoadingStatus.LOADED);
13
+ this.item.requireProperty("loaded", false);
14
+
15
+ {
16
+ let request = graphApi.requestRange(
17
+ [
18
+ {"type": "includePrivate"},
19
+ {"type": "includeDraft"},
20
+ {"type": "idSelection", "ids": [id]},
21
+ ],
22
+ ["identifier"]
23
+ );
24
+ allLoaded.addCheck(request.properties.status);
25
+ }
26
+
27
+ this.item.properties.loaded.connectInput(allLoaded.output.properties.value);
28
+ }
29
+
30
+ _renderMainElement() {
31
+
32
+ let id = this.context.item.id;
33
+
34
+ return React.createElement("div", {},
35
+ React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
36
+ React.createElement(Dbm.react.form.LabelledArea, {label: "Identifer"},
37
+ React.createElement(Dbm.react.admin.editorsgroup.EditIdentifer, {},
38
+ React.createElement(Dbm.react.form.FormField, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
39
+ )
40
+ )
41
+ )
42
+
43
+ )
44
+ }
45
+ }
@@ -0,0 +1,46 @@
1
+ import React from "react";
2
+ import Dbm from "../../../../index.js";
3
+
4
+ export default class MainImage extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
9
+
10
+ let id = this.context.item.id;
11
+
12
+ let allLoaded = Dbm.flow.updatefunctions.logic.allAtValue(Dbm.loading.LoadingStatus.LOADED);
13
+ this.item.requireProperty("loaded", false);
14
+
15
+ {
16
+ let request = graphApi.requestRange(
17
+ [
18
+ {"type": "includePrivate"},
19
+ {"type": "includeDraft"},
20
+ {"type": "idSelection", "ids": [id]},
21
+ ],
22
+ ["admin_fields", "relations"]
23
+ );
24
+ allLoaded.addCheck(request.properties.status);
25
+ }
26
+
27
+ this.item.properties.loaded.connectInput(allLoaded.output.properties.value);
28
+ }
29
+
30
+ _renderMainElement() {
31
+
32
+ let id = this.context.item.id;
33
+
34
+ return React.createElement("div", {},
35
+
36
+ React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
37
+ React.createElement(Dbm.react.form.LabelledArea, {label: "Main image"},
38
+ React.createElement(Dbm.react.admin.editorsgroup.EditRelation, {"direction": "in", "relationType": "isMainImageFor", "objectType": "image"},
39
+ React.createElement(Dbm.react.form.GraphApiImage, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), "objectType": "page", "encoding": "title", nameField: "title", className: "standard-field standard-field-padding full-width"})
40
+ )
41
+ )
42
+ )
43
+
44
+ )
45
+ }
46
+ }
@@ -0,0 +1,46 @@
1
+ import React from "react";
2
+ import Dbm from "../../../../index.js";
3
+
4
+ export default class PageRepresentation extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
9
+
10
+ let id = this.context.item.id;
11
+
12
+ let allLoaded = Dbm.flow.updatefunctions.logic.allAtValue(Dbm.loading.LoadingStatus.LOADED);
13
+ this.item.requireProperty("loaded", false);
14
+
15
+ {
16
+ let request = graphApi.requestRange(
17
+ [
18
+ {"type": "includePrivate"},
19
+ {"type": "includeDraft"},
20
+ {"type": "idSelection", "ids": [id]},
21
+ ],
22
+ ["admin_fields", "relations"]
23
+ );
24
+ allLoaded.addCheck(request.properties.status);
25
+ }
26
+
27
+ this.item.properties.loaded.connectInput(allLoaded.output.properties.value);
28
+ }
29
+
30
+ _renderMainElement() {
31
+
32
+ let id = this.context.item.id;
33
+
34
+ return React.createElement("div", {},
35
+
36
+ React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
37
+ React.createElement(Dbm.react.form.LabelledArea, {label: "Represening page"},
38
+ React.createElement(Dbm.react.admin.editorsgroup.EditRelation, {"direction": "in", "relationType": "pageRepresentationFor", "objectType": "page"},
39
+ React.createElement(Dbm.react.form.GraphApiObjectSelection, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), "objectType": "page", "encoding": "title", nameField: "title", className: "standard-field standard-field-padding full-width"})
40
+ )
41
+ )
42
+ )
43
+
44
+ )
45
+ }
46
+ }
@@ -5,4 +5,7 @@ export {default as Link} from "./Link.js";
5
5
  export {default as Visibility} from "./Visibility.js";
6
6
  export {default as LinkedPage} from "./LinkedPage.js";
7
7
  export {default as Question} from "./Question.js";
8
- export {default as RichDescription} from "./RichDescription.js";
8
+ export {default as RichDescription} from "./RichDescription.js";
9
+ export {default as PageRepresentation} from "./PageRepresentation.js";
10
+ export {default as MainImage} from "./MainImage.js";
11
+ export {default as Identifier} from "./Identifier.js";
@@ -48,6 +48,12 @@ export default class EditWebsite extends Dbm.react.BaseObject {
48
48
  let mainImage = (isMainImageForRelations && isMainImageForRelations.length) ? isMainImageForRelations[0].id : null;
49
49
  itemEditor.addIncomingRelationEditor("isMainImageFor", "image", mainImage, ["relations"]);
50
50
 
51
+ {
52
+ let relatedItems = Dbm.utils.ArrayFunctions.filterByField(Dbm.objectPath(item, "relations/in.for.objects"), "objectTypes", "schema/type", "arrayContains");
53
+ let relatedItem = (relatedItems && relatedItems.length) ? relatedItems[0].id : null;
54
+ itemEditor.addIncomingRelationEditor("for", "schema/type", relatedItem, ["relations"]);
55
+ }
56
+
51
57
  itemEditor.addFieldEditor("phoneNumber", Dbm.objectPath(item, "fields.phoneNumber"), "admin_fields");
52
58
  itemEditor.addFieldEditor("email", Dbm.objectPath(item, "fields.email"), "admin_fields");
53
59
  itemEditor.addFieldEditor("priceRangeDescription", Dbm.objectPath(item, "fields.priceRangeDescription"), "admin_fields");
@@ -83,6 +89,9 @@ export default class EditWebsite extends Dbm.react.BaseObject {
83
89
  React.createElement(Dbm.react.form.LabelledArea, {"label": "Name"},
84
90
  React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_name.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"})
85
91
  ),
92
+ React.createElement(Dbm.react.form.LabelledArea, {"label": "Schema type"},
93
+ React.createElement(Dbm.react.form.GraphApiObjectSelection, {"objectType": "schema/type", "value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_relation_in_for_schema/type.item.editValue.item.properties.value")}),
94
+ ),
86
95
  React.createElement(Dbm.react.form.LabelledArea, {"label": "Image"},
87
96
  React.createElement(Dbm.react.form.GraphApiImage, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_relation_in_isMainImageFor_image.item.editValue.item.properties.value")}),
88
97
  ),
@@ -9,9 +9,15 @@ export default class ObjectList extends Dbm.react.BaseObject {
9
9
  _renderMainElement() {
10
10
 
11
11
  let encodings = Dbm.utils.ArrayFunctions.arrayOrSeparatedString(this.context.blockData.encodings);
12
+ let additionalTypes = [];
13
+
14
+ let additionalTypesString = this.context.blockData.additionalTypes;
15
+ if(additionalTypesString) {
16
+ additionalTypes = Dbm.utils.ArrayFunctions.arrayOrSeparatedString(additionalTypesString);
17
+ }
12
18
 
13
19
  return React.createElement("div", {className: "content-narrow"},
14
- React.createElement(Dbm.react.admin.objects.ObjectList, {objectType: this.context.blockData.objectType, encodings: encodings, nameField: this.context.blockData.nameField, visibility: this.context.blockData.visibility})
20
+ React.createElement(Dbm.react.admin.objects.ObjectList, {objectType: this.context.blockData.objectType, additionalTypes: additionalTypes, encodings: encodings, nameField: this.context.blockData.nameField, visibility: this.context.blockData.visibility})
15
21
  );
16
22
  }
17
23
  }
@@ -66,7 +66,7 @@ export default class AskAQuestion extends Dbm.react.BaseObject {
66
66
  let currentRow = new Dbm.repository.Item();
67
67
  currentRow.setId("_dbmInternal/row" + Dbm.getInstance().getNextId());
68
68
  currentRow.setValue("item", currentItem);
69
- currentRow.setValue("element", React.createElement(Dbm.react.blocks.faq.HelpSectionRowItem, {"open": this._getOpenProperty(i)}));
69
+ currentRow.setValue("element", React.createElement(Dbm.react.blocks.faq.HelpSectionRowItem, {"open": this._getOpenProperty(i), "startState": (i === 0 ? "open" : "close")}));
70
70
  rows.push(currentRow);
71
71
  }
72
72
  this.item.results = rows;
@@ -133,7 +133,7 @@ export default class AskAQuestion extends Dbm.react.BaseObject {
133
133
  ),
134
134
  React.createElement("div", {className: "flex-row-item flex-no-resize"},
135
135
  React.createElement("div", {className: "submit-button-field-padding-right-side border-box-sizing full-height"},
136
- React.createElement("button", {className: "skip-default full-height"},
136
+ React.createElement("button", {className: "skip-default full-height", "aria-label": "Search"},
137
137
  React.createElement("div", {className: "field-submit-button field-submit-button-padding full-height", onClick: () => {this._search();}},
138
138
  React.createElement("div", {className: "centered-cell-holder full-size"},
139
139
  React.createElement(Dbm.react.image.Image, {src: "/assets/img/right-arrow.svg", className: "right-arrow-link-icon background-contain"})
@@ -71,7 +71,7 @@ export default class HelpSectionRowItem extends Dbm.react.BaseObject {
71
71
  )
72
72
  )
73
73
  ),
74
- React.createElement(Dbm.react.area.OpenCloseExpandableArea, {open: open},
74
+ React.createElement(Dbm.react.area.OpenCloseExpandableArea, {open: open, startState: this.getPropValue("startState")},
75
75
  answerElement
76
76
  )
77
77
  );
@@ -114,6 +114,10 @@ export let registerAllBlocks = function() {
114
114
  createElement(Dbm.react.admin.editor.fields.TextField, {name: "objectType"})
115
115
  ),
116
116
  createElement("div", {className: "spacing medium"}),
117
+ createElement(Dbm.react.form.LabelledArea, {label: "Additional types (optional)"},
118
+ createElement(Dbm.react.admin.editor.fields.TextField, {name: "additionalTypes"})
119
+ ),
120
+ createElement("div", {className: "spacing medium"}),
117
121
  createElement(Dbm.react.form.LabelledArea, {label: "Encodings"},
118
122
  createElement(Dbm.react.admin.editor.fields.TextField, {name: "encodings"})
119
123
  ),
@@ -210,15 +214,11 @@ export let registerAllBlocks = function() {
210
214
 
211
215
  {
212
216
  let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
213
- createElement(Dbm.react.form.LabelledArea, {label: "Text 1"},
214
- createElement(Dbm.react.admin.editor.fields.TextField, {name: "text1"})
215
- ),
216
- createElement("div", {className: "spacing medium"}),
217
217
  createElement(Dbm.react.form.LabelledArea, {label: "Initial sections"},
218
218
  createElement(Dbm.react.admin.editor.fields.SelectObjectsField, {objectType: "helpSection", name:"initialSections", "encoding": "title", "nameField": "title"})
219
219
  ),
220
220
  );
221
- registerBlock("faq/askAQuestion", "FAQ / Ask a question", createElement(Dbm.react.blocks.faq.AskAQuestion, {}), editor, {}, {"text1": true, "text2": true});
221
+ registerBlock("faq/askAQuestion", "FAQ / Ask a question", createElement(Dbm.react.blocks.faq.AskAQuestion, {}), editor, {}, {});
222
222
  }
223
223
 
224
224
  {
@@ -251,6 +251,11 @@ export let registerAllBlocks = function() {
251
251
  itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Visibility, {}));
252
252
  }
253
253
 
254
+ {
255
+ let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/identifier");
256
+ itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Identifier, {}));
257
+ }
258
+
254
259
  {
255
260
  let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/linkedPage");
256
261
  itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.LinkedPage, {}));
@@ -260,6 +265,16 @@ export let registerAllBlocks = function() {
260
265
  let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/question");
261
266
  itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Question, {}));
262
267
  }
268
+
269
+ {
270
+ let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/pageRepresentation");
271
+ itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.PageRepresentation, {}));
272
+ }
273
+
274
+ {
275
+ let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/mainImage");
276
+ itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.MainImage, {}));
277
+ }
263
278
 
264
279
  {
265
280
  let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/page");
@@ -300,4 +315,19 @@ export let registerAllBlocks = function() {
300
315
  newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/visibility"));
301
316
  objectTypeEditor.editors = newArray;
302
317
  }
318
+
319
+ {
320
+ let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/type");
321
+ if(!objectTypeEditor.editors) {
322
+ objectTypeEditor.setValue("editors", []);
323
+ }
324
+
325
+ let newArray = [].concat(objectTypeEditor.editors);
326
+ newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/name"));
327
+ newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/identifier"));
328
+ newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/pageRepresentation"));
329
+ newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/mainImage"));
330
+
331
+ objectTypeEditor.editors = newArray;
332
+ }
303
333
  }
@@ -290,4 +290,24 @@ export const getItemIndexByIfExists = function(aArray, aField, aIdentifier) {
290
290
  }
291
291
 
292
292
  return -1;
293
+ }
294
+
295
+ export const sum = function(aArray) {
296
+
297
+ if(!Array.isArray(aArray)) {
298
+ console.warn("No array provided", aArray);
299
+ return 0;
300
+ }
301
+
302
+ let sum = 0;
303
+ let currentArray = aArray;
304
+ let currentArrayLength = currentArray.length;
305
+ for(let i = 0; i < currentArrayLength; i++) {
306
+ let currentValue = 1*currentArray[i];
307
+ if(!isNaN(currentValue)) {
308
+ sum += currentValue;
309
+ }
310
+ }
311
+
312
+ return sum;
293
313
  }