dbm
Version:
164 lines (140 loc) • 12 kB
JavaScript
import React from "react";
import Dbm from "../../../index.js";
export default class EditWebsite extends Dbm.react.BaseObject {
_construct() {
super._construct();
let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
this.item.requireProperty("itemEditor", null);
this.item.requireProperty("locationEditor", null);
let allLoaded = Dbm.flow.updatefunctions.logic.allAtValue(Dbm.loading.LoadingStatus.LOADED);
this.item.requireProperty("loaded", false);
Dbm.flow.addUpdateCommandWhenMatched(this.item.properties.loaded, true, Dbm.commands.callFunction(this._allLoaded.bind(this), []));
let id = this.context.item.id;
{
let request = graphApi.requestRange(
[
{"type": "includePrivate"},
{"type": "includeDraft"},
{"type": "idSelection", "ids": [id]},
],
["admin_fields", "relations"]
);
Dbm.flow.addUpdateCommandWhenMatched(request.properties.status, Dbm.loading.LoadingStatus.LOADED, Dbm.commands.callFunction(this._dataLoaded.bind(this), [request]));
allLoaded.addCheck(request.properties.status);
}
this.item.properties.loaded.connectInput(allLoaded.output.properties.value);
}
_dataLoaded(aRequest) {
console.log("_dataLoaded");
console.log(aRequest);
let item = aRequest.items[0];
let id = item.id;
let editorGroup = this.context.editorGroup;
let itemEditor = editorGroup.getItemEditor(id);
itemEditor.addFieldEditor("name", Dbm.objectPath(item, "fields.name"), "admin_fields");
let isMainImageForRelations = Dbm.utils.ArrayFunctions.filterByField(Dbm.objectPath(item, "relations/in.isMainImageFor.objects"), "objectTypes", "image", "arrayContains");
let mainImage = (isMainImageForRelations && isMainImageForRelations.length) ? isMainImageForRelations[0].id : null;
itemEditor.addIncomingRelationEditor("isMainImageFor", "image", mainImage, ["relations"]);
{
let relatedItems = Dbm.utils.ArrayFunctions.filterByField(Dbm.objectPath(item, "relations/in.for.objects"), "objectTypes", "schema/type", "arrayContains");
let relatedItem = (relatedItems && relatedItems.length) ? relatedItems[0].id : null;
itemEditor.addIncomingRelationEditor("for", "schema/type", relatedItem, ["relations"]);
}
itemEditor.addFieldEditor("phoneNumber", Dbm.objectPath(item, "fields.phoneNumber"), "admin_fields");
itemEditor.addFieldEditor("email", Dbm.objectPath(item, "fields.email"), "admin_fields");
itemEditor.addFieldEditor("priceRangeDescription", Dbm.objectPath(item, "fields.priceRangeDescription"), "admin_fields");
itemEditor.addFieldEditor("rating/value", Dbm.objectPath(item, "fields.rating/value"), "admin_fields");
itemEditor.addFieldEditor("rating/count", Dbm.objectPath(item, "fields.rating/count"), "admin_fields");
itemEditor.addFieldEditor("rating/min", Dbm.objectPath(item, "fields.rating/min"), "admin_fields");
itemEditor.addFieldEditor("rating/max", Dbm.objectPath(item, "fields.rating/max"), "admin_fields");
{
let relationType = "at";
let objectType = "location";
let relations = Dbm.utils.ArrayFunctions.filterByField(Dbm.objectPath(item, "relations/out." + relationType + ".objects"), "objectTypes", objectType, "arrayContains");
let relation = (relations && relations.length) ? relations[0].id : null;
itemEditor.addOutgoingRelationEditor(relationType, objectType, relation, ["relations"]);
}
this.item.setValue("itemEditor", itemEditor);
}
_allLoaded() {
console.log("_allLoaded");
}
_renderMainElement() {
let locationId = Dbm.react.source.contextVariable("itemEditor.value.item.editor_relation_out_at_location.item.editValue.item.properties.value");
return React.createElement("div", {},
React.createElement(Dbm.react.area.HasData, {"check": this.item.properties.loaded},
React.createElement(Dbm.react.context.AddContextVariables, {values: {"itemEditor": this.item.properties.itemEditor}},
React.createElement(Dbm.react.form.LabelledArea, {"label": "Name"},
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"})
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Schema type"},
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")}),
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Image"},
React.createElement(Dbm.react.form.GraphApiImage, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_relation_in_isMainImageFor_image.item.editValue.item.properties.value")}),
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Phone number"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_phoneNumber.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Email"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_email.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Price range description"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_priceRangeDescription.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Rating"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_rating/value.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Rating (count)"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_rating/count.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Min"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_rating/min.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Max"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_rating/max.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Location"},
React.createElement(Dbm.react.form.GraphApiSelectOrCreateObject, {"value": locationId, objectType: "location"}),
React.createElement(Dbm.react.area.HasData, {check: locationId},
React.createElement(Dbm.react.context.AddItemByIdToContext, {id: locationId},
React.createElement(Dbm.react.admin.editorsgroup.EditItem, {},
React.createElement(Dbm.react.form.LabelledArea, {"label": "Street"},
React.createElement(Dbm.react.admin.editorsgroup.EditField, {fieldName: "street"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
)
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Post code"},
React.createElement(Dbm.react.admin.editorsgroup.EditField, {fieldName: "postCode"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
)
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "City"},
React.createElement(Dbm.react.admin.editorsgroup.EditField, {fieldName: "city"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
)
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Country code"},
React.createElement(Dbm.react.admin.editorsgroup.EditField, {fieldName: "country"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
)
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Latitude"},
React.createElement(Dbm.react.admin.editorsgroup.EditField, {fieldName: "latitude"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
)
),
React.createElement(Dbm.react.form.LabelledArea, {"label": "Longitude"},
React.createElement(Dbm.react.admin.editorsgroup.EditField, {fieldName: "longitude"},
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
)
)
)
),
),
)
)
)
);
}
}