block list editor better naming
This commit is contained in:
@@ -134,10 +134,11 @@
|
||||
},
|
||||
|
||||
/**
|
||||
* Retrieve editing model of a layout entry
|
||||
* Retrieve editor friendly model of a block.
|
||||
* @param {Object} layoutEntry the layout entry to build the block model from.
|
||||
* @return {Object} Scaffolded Block Content object.
|
||||
*/
|
||||
getEditingModel: function(layoutEntry) {
|
||||
getBlockModel: function(layoutEntry) {
|
||||
|
||||
var udi = layoutEntry.udi;
|
||||
|
||||
@@ -150,9 +151,9 @@
|
||||
return null;
|
||||
}
|
||||
|
||||
var editingModel = {};
|
||||
editingModel.config = angular.copy(blockConfiguration);
|
||||
editingModel.labelInterpolator = $interpolate(editingModel.config.label);
|
||||
var blockModel = {};
|
||||
blockModel.config = angular.copy(blockConfiguration);
|
||||
blockModel.labelInterpolator = $interpolate(blockModel.config.label);
|
||||
|
||||
var scaffold = this.getScaffoldFor(blockConfiguration.contentTypeAlias);
|
||||
if(scaffold === null) {
|
||||
@@ -160,30 +161,30 @@
|
||||
}
|
||||
|
||||
// make basics from scaffold
|
||||
editingModel.content = angular.copy(scaffold);
|
||||
editingModel.content.udi = udi;
|
||||
blockModel.content = angular.copy(scaffold);
|
||||
blockModel.content.udi = udi;
|
||||
|
||||
mapToElementTypeModel(editingModel.content, contentModel);
|
||||
mapToElementTypeModel(blockModel.content, contentModel);
|
||||
|
||||
editingModel.contentModel = contentModel;
|
||||
editingModel.layoutModel = layoutEntry;
|
||||
blockModel.contentModel = contentModel;
|
||||
blockModel.layoutModel = layoutEntry;
|
||||
|
||||
// TODO: settings
|
||||
|
||||
return editingModel;
|
||||
return blockModel;
|
||||
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve editing model of a layout entry
|
||||
* Retrieve block model of a layout entry
|
||||
* @return {Object} Scaffolded Block Content object.
|
||||
*/
|
||||
setDataFromEditingModel: function(editingModel) {
|
||||
setDataFromBlockModel: function(blockModel) {
|
||||
|
||||
var udi = editingModel.content.key;
|
||||
var udi = blockModel.content.key;
|
||||
|
||||
mapToPropertyModel(editingModel.content, editingModel.contentModel);
|
||||
mapToPropertyModel(blockModel.content, blockModel.contentModel);
|
||||
|
||||
// TODO: sync settings to layout entry.
|
||||
|
||||
@@ -269,9 +270,6 @@
|
||||
|
||||
mapToPropertyModel(elementTypeContentModel, contentModel);
|
||||
|
||||
console.log(elementTypeContentModel)
|
||||
console.log(contentModel)
|
||||
|
||||
return layoutEntry;
|
||||
|
||||
}
|
||||
@@ -281,24 +279,24 @@
|
||||
createModelObject: function(propertyModelValue, propertyEditorAlias, blockConfigurations) {
|
||||
return new BlockEditorModelObject(propertyModelValue, propertyEditorAlias, blockConfigurations);
|
||||
},
|
||||
getBlockLabel: function(blockModelObject) {
|
||||
getBlockLabel: function(blockModel) {
|
||||
|
||||
// TODO: we should do something about this for performance.
|
||||
|
||||
var vars = new Object();
|
||||
|
||||
var variant = blockModelObject.content.variants[0];
|
||||
var variant = blockModel.content.variants[0];
|
||||
var tab = variant.tabs[0];
|
||||
// TODO: need to look up all tabs...
|
||||
for(const property of tab.properties) {
|
||||
vars[property.alias] = property.value;
|
||||
}
|
||||
|
||||
if(blockModelObject.labelInterpolator) {
|
||||
return blockModelObject.labelInterpolator(vars);
|
||||
if(blockModel.labelInterpolator) {
|
||||
return blockModel.labelInterpolator(vars);
|
||||
}
|
||||
|
||||
return blockModelObject.contentTypeName;
|
||||
return blockModel.contentTypeName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+28
-63
@@ -32,8 +32,8 @@
|
||||
vm.moveFocusToBlock = null;
|
||||
vm.showCopy = clipboardService.isSupported();
|
||||
|
||||
vm.layout = [];// Property models layout object specific to this Block Editor.
|
||||
vm.blocks = [];// Runtime model of editing models, needs to be synced to property model on form submit.
|
||||
vm.layout = [];// The layout object specific to this Block Editor, will be a direct reference from Property Model.
|
||||
vm.blocks = [];// Runtime list of block models, needs to be synced to property model on form submit.
|
||||
vm.availableBlockTypes = [];// Available block entries of this property editor.
|
||||
|
||||
var labels = {};
|
||||
@@ -93,16 +93,25 @@
|
||||
function loaded() {
|
||||
|
||||
vm.layout = modelObject.getLayout();
|
||||
mapToBlocks();
|
||||
|
||||
// maps layout entries to editor friendly models.
|
||||
vm.layout.forEach(entry => {
|
||||
var block = getBlockModel(entry);
|
||||
if(block !== null) {
|
||||
vm.blocks.push(block);
|
||||
}
|
||||
});
|
||||
|
||||
vm.availableContentTypes = modelObject.getAvailableAliasesForBlockContent();
|
||||
vm.availableBlockTypes = modelObject.getAvailableBlocksForItemPicker();
|
||||
|
||||
$scope.$apply();
|
||||
|
||||
}
|
||||
|
||||
|
||||
function getEditingModel(entry) {
|
||||
var block = modelObject.getEditingModel(entry);
|
||||
function getBlockModel(entry) {
|
||||
var block = modelObject.getBlockModel(entry);
|
||||
|
||||
if (block === null) return null;
|
||||
|
||||
@@ -111,50 +120,6 @@
|
||||
return block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps property model to the runtime editing model (blocks).
|
||||
*/
|
||||
function mapToBlocks() {
|
||||
// clear blocks.
|
||||
vm.blocks = [];
|
||||
|
||||
// make all blocks.
|
||||
vm.layout.forEach(entry => {
|
||||
var block = getEditingModel(entry);
|
||||
if(block !== null) {
|
||||
vm.blocks.push(block);
|
||||
}
|
||||
});
|
||||
|
||||
$scope.$apply();
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps content from runtime editing model (blocks) to the property model.
|
||||
* Does not take care of ordering, we need the sort-UI to sync that, on the fly.
|
||||
*/
|
||||
/*
|
||||
function mapToContent() {
|
||||
|
||||
// sync data from blocks to content models.
|
||||
vm.blocks.forEach(block => {
|
||||
modelObject.setDataFromEditingModel(block);
|
||||
});
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
function sync() {
|
||||
// to avoid deep watches of block editors we use an event for those instead?
|
||||
// Lets inform container of this property editor that we updated.
|
||||
$scope.$emit("blockEditorValueUpdated");
|
||||
}
|
||||
*/
|
||||
/*
|
||||
function syncBlockData(block) {
|
||||
modelObject.setDataFromEditingModel(block);
|
||||
}
|
||||
*/
|
||||
|
||||
function addNewBlock(index, contentTypeAlias) {
|
||||
|
||||
@@ -164,19 +129,19 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
// make editing object
|
||||
var blockEditingObject = getEditingModel(layoutEntry);
|
||||
if (blockEditingObject === null) {
|
||||
// make block model
|
||||
var blockModel = getBlockModel(layoutEntry);
|
||||
if (blockModel === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// add layout entry at the decired location in layout.
|
||||
vm.layout.splice(index, 0, layoutEntry);
|
||||
|
||||
// apply editing model at decired location in editing model.
|
||||
vm.blocks.splice(index, 0, blockEditingObject);
|
||||
// apply block model at decired location in blocks.
|
||||
vm.blocks.splice(index, 0, blockModel);
|
||||
|
||||
vm.moveFocusToBlock = blockEditingObject;
|
||||
vm.moveFocusToBlock = blockModel;
|
||||
|
||||
return true;
|
||||
|
||||
@@ -215,7 +180,7 @@
|
||||
submit: function(elementEditorModel) {
|
||||
blockModel.content = elementEditorModel.content;
|
||||
// TODO, investigate if we need to call a sync, for this scenario to work.. Concern is regarding wether the property-value watcher will pick this up.
|
||||
//modelObject.setDataFromEditingModel(block);
|
||||
//modelObject.setDataFromBlockModel(block);
|
||||
editorService.close();
|
||||
},
|
||||
close: function() {
|
||||
@@ -344,19 +309,19 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
// make editing object
|
||||
var blockEditingObject = getEditingModel(layoutEntry);
|
||||
if (blockEditingObject === null) {
|
||||
// make block model
|
||||
var blockModel = getBlockModel(layoutEntry);
|
||||
if (blockModel === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// add layout entry at the decired location in layout.
|
||||
// insert layout entry at the decired location in layout.
|
||||
vm.layout.splice(index, 0, layoutEntry);
|
||||
|
||||
// apply editing model at decired location in editing model.
|
||||
vm.blocks.splice(index, 0, blockEditingObject);
|
||||
// insert block model at the decired location in blocks.
|
||||
vm.blocks.splice(index, 0, blockModel);
|
||||
|
||||
vm.moveFocusToBlock = blockEditingObject;
|
||||
vm.moveFocusToBlock = blockModel;
|
||||
|
||||
return true;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user