X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/bbb810b9417335d3a6fbfeb300de8f12e4cd091a..ec10eee3168f37beedfb5dea757a4bdec2f2f36e:/src/editor/modules/documentCanvas/canvas/genericElement.js diff --git a/src/editor/modules/documentCanvas/canvas/genericElement.js b/src/editor/modules/documentCanvas/canvas/genericElement.js index e0fc84b..a769240 100644 --- a/src/editor/modules/documentCanvas/canvas/genericElement.js +++ b/src/editor/modules/documentCanvas/canvas/genericElement.js @@ -6,15 +6,8 @@ var $ = require('libs/jquery'), _ = require('libs/underscore'), documentElement = require('./documentElement'), utils = require('./utils'), - wlxmlUtils = require('utils/wlxml'), CommentsView = require('./comments/comments'); -var labelWidget = function(tag, klass) { - return $('') - .addClass('canvas-widget canvas-widget-label') - .text(wlxmlUtils.getTagLabel(tag) + (klass ? ' / ' + wlxmlUtils.getClassLabel(klass) : '')); -}; -void(labelWidget); // for linters; labelWidget is unused on purpose for now var DocumentNodeElement = documentElement.DocumentNodeElement; @@ -24,8 +17,9 @@ $.extend(generic, { init: function() { DocumentNodeElement.prototype.init.call(this); this._container() - .attr('wlxml-tag', this.wlxmlNode.getTagName()); - this.setWlxmlClass(this.wlxmlNode.getClass()); + .attr('wlxml-tag', this.wlxmlNode.getTagName()) + .attr('wlxml-class', this.wlxmlNode.getClass().replace(/\./g, '-')); + this.wlxmlNode.contents().forEach(function(node) { var el = this.canvas.createElement(node); if(el.dom) { @@ -33,7 +27,7 @@ $.extend(generic, { } }.bind(this)); - this.commentsView = new CommentsView(this.wlxmlNode, {}); + this.commentsView = new CommentsView(this.wlxmlNode, this.canvas.metadata.user); this.addToGutter(this.commentsView); this.commentTip = $('
'); this.addWidget(this.commentTip); @@ -80,13 +74,18 @@ $.extend(generic, { return toret; }, - getVerticallyFirstTextElement: function() { + getVerticallyFirstTextElement: function(params) { var toret; + + params = _.extend({ + considerChildren: true + }, params); + this.children().some(function(child) { if(child instanceof documentElement.DocumentTextElement) { toret = child; return true; // break - } else { + } else if(params.considerChildren) { toret = child.getVerticallyFirstTextElement(); if(toret) { return true; // break @@ -96,11 +95,6 @@ $.extend(generic, { return toret; }, - onNodeAttrChange: function(event) { - if(event.meta.attr === 'class') { - this.setWlxmlClass(event.meta.newVal); // - } - }, onNodeAdded: function(event) { if(event.meta.node.isRoot()) { this.canvas.reloadRoot(); @@ -154,18 +148,13 @@ $.extend(generic, { } }, onNodeTextChange: function(event) { - var toSet = event.meta.node.getText(); - this.children().some(function(child) { - if(child.wlxmlNode.sameNode(event.meta.node)) { - if(toSet === '') { - toSet = utils.unicode.ZWS; - } - if(toSet !== child.getText()) { - child.setText(toSet); - } - return true; - } - }); + var node = event.meta.node; + + /* TODO: This handling of changes to the comments should probably be implemented via separate, + non-rendering comments element */ + if(node.parent() && node.parent().is('comment') && this.wlxmlNode.sameNode(node.parent().parent())) { + this.commentsView.render(); + } }, onStateChange: function(changes) { @@ -221,26 +210,6 @@ $.extend(generic, { } }); return toret; - }, - - getWlxmlClass: function() { - var klass = this._container().attr('wlxml-class'); - if(klass) { - return klass.replace(/-/g, '.'); - } - return undefined; - }, - setWlxmlClass: function(klass) { - if(klass === this.getWlxmlClass()) { - return; - } - if(klass) { - this._container().attr('wlxml-class', klass.replace(/\./g, '-')); - } - else { - this._container().removeAttr('wlxml-class'); - } - this.refreshPath(); } });