[Fixed Position] Implement remove

Implement remove button for selected elements in fixed
position view. WTD-879.
This commit is contained in:
Victor Woeltjen
2015-02-18 20:12:55 -08:00
parent f66fb0a32d
commit 5680710c06
5 changed files with 50 additions and 5 deletions

View File

@@ -17,9 +17,10 @@ define(
*
* @param structure toolbar structure, as provided by view definition
* @param {Array} selection the current selection state
* @param {Function} commit callback to invoke after changes
* @constructor
*/
function EditToolbar(structure, selection) {
function EditToolbar(structure, selection, commit) {
var toolbarStructure = Object.create(structure || {}),
toolbarState,
properties = [];
@@ -124,11 +125,14 @@ define(
// Invoke all functions in selections with the given name
function invoke(method, value) {
if (method) {
// Make the change in the selection
selection.forEach(function (selected) {
if (typeof selected[method] === 'function') {
selected[method](value);
}
});
// ...and commit!
commit();
}
}
@@ -139,7 +143,9 @@ define(
converted.key = addKey(item.property);
}
if (item.method) {
converted.click = function (v) { invoke(item.method, v); };
converted.click = function (v) {
invoke(item.method, v);
};
}
return converted;
}

View File

@@ -20,6 +20,13 @@ define(
toolbar,
toolbarObject = {};
// Mark changes as ready to persist
function commit(message) {
if (scope.commit) {
scope.commit(message);
}
}
// Handle changes to the current selection
function updateSelection(selection) {
// Make sure selection is array-like
@@ -28,7 +35,7 @@ define(
(selection ? [selection] : []);
// Instantiate a new toolbar...
toolbar = new EditToolbar(definition, selection);
toolbar = new EditToolbar(definition, selection, commit);
// ...and expose its structure/state
toolbarObject.structure = toolbar.getStructure();
@@ -37,6 +44,7 @@ define(
// Update selection models to match changed toolbar state
function updateState(state) {
// Update underlying state based on toolbar changes
state.forEach(function (value, index) {
toolbar.updateState(index, value);
});