X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/0990bc1dc7fad5165148a8993901138de9e22d0e..16c90b3616f1645aab9fe284fd3b89641dfb42f2:/src/editor/modules/metadataEditor/metadataEditor.js diff --git a/src/editor/modules/metadataEditor/metadataEditor.js b/src/editor/modules/metadataEditor/metadataEditor.js index 0c8a816..5530de9 100644 --- a/src/editor/modules/metadataEditor/metadataEditor.js +++ b/src/editor/modules/metadataEditor/metadataEditor.js @@ -10,6 +10,7 @@ define([ return function(sandbox) { + var currentNode; var view = { node: $(_.template(mainTemplate)()), @@ -20,15 +21,14 @@ return function(sandbox) { this.node.find('.rng-module-metadataEditor-addBtn').click(function() { var newRow = view._addMetaRow('', ''); $(newRow.find('td div')[0]).focus(); - sandbox.publish('metadataChanged', view.getMetadata()); }); this.metaTable.on('click', '.rng-visualEditor-metaRemoveBtn', function(e) { $(e.target).closest('tr').remove(); - sandbox.publish('metadataChanged', view.getMetadata()); }); this.metaTable.on('keydown', '[contenteditable]', function(e) { + /* globals document */ if(e.which === 13) { if($(document.activeElement).hasClass('rng-module-metadataEditor-metaItemKey')) { metaTable.find('.rng-module-metadataEditor-metaItemValue').focus(); @@ -45,26 +45,32 @@ return function(sandbox) { var onKeyUp = function(e) { if(e.which !== 13) { - sandbox.publish('metadataChanged', view.getMetadata()); + var editable = $(e.target), + myIndex = metaTable.find('.'+editable.attr('class')).index(editable), + isKey = _.last(editable.attr('class').split('-')) === 'metaItemKey', + toSet = {}; + toSet[isKey ? 'key' : 'value'] = editable.text(); + currentNode.setMetadataRow(myIndex, toSet); } }; this.metaTable.on('keyup', '[contenteditable]', _.throttle(onKeyUp, 500)); }, getMetadata: function() { - var toret = {}; + var toret = []; this.node.find('tr').each(function() { var inputs = $(this).find('td [contenteditable]'); var key = $(inputs[0]).text(); var value = $(inputs[1]).text(); - toret[key] = value; + toret.push({key:key, value: value}); }); return toret; }, - setMetadata: function(metadata) { - var view = this; + setMetadata: function(node) { + var view = this, + metadata = node.getMetadata(); this.metaTable.find('tr').remove(); - _.each(_.keys(metadata), function(key) { - view._addMetaRow(key, metadata[key]); + metadata.forEach(function(row) { + view._addMetaRow(row.key, row.value); }); }, _addMetaRow: function(key, value) { @@ -80,9 +86,21 @@ return function(sandbox) { start: function() { sandbox.publish('ready'); }, - setDocument: function(xml) { - view.setMetadata(transformations.getMetadata(xml)); - sandbox.publish('metadataSet'); + setDocument: function(document) { + document.on('change', function(event) { + if(event.type === 'nodeMetadataChange' && event.meta.node.sameNode(currentNode)) { + view.setMetadata(currentNode); + } + }); +// view.setMetadata(transformations.getMetadata(xml)); + // sandbox.publish('metadataSet'); to wywalki + }, + setNodeElement: function(node) { + if(currentNode && currentNode.sameNode(node)) { + return; + } + currentNode = node; + view.setMetadata(node); }, getMetadata: function() { return transformations.getXML(view.getMetadata());