Browse Source

Fix navigator count

pull/36/head
Artur Arseniev 10 years ago
parent
commit
827fc38b7b
  1. 40
      src/navigator/view/ItemView.js
  2. 27
      src/navigator/view/ItemsView.js

40
src/navigator/view/ItemView.js

@ -161,7 +161,7 @@ define(['backbone', 'text!./../template/item.html','require'],
* @return void
* */
checkChildren: function(){
var c = this.model.components.length,
var c = this.countChildren(this.model),
pfx = this.pfx,
tC = '> .' + pfx + 'title-c > .' + pfx + 'title';
if(!this.$counter)
@ -176,16 +176,36 @@ define(['backbone', 'text!./../template/item.html','require'],
}
},
render : function(){
var pfx = this.pfx,
vis = this.isVisible();
/**
* Count children inside model
* @param {Object} model
* @return {number}
* @private
*/
countChildren: function(model){
var count = 0;
model.components.each(function(m){
var isCountable = this.opt.isCountable;
var hide = this.config.hideTextnode;
if(isCountable && !isCountable(m, hide))
return;
count++;
}, this);
return count;
},
render: function(){
var pfx = this.pfx;
var vis = this.isVisible();
var count = this.countChildren(this.model);
this.$el.html( this.template({
title : this.model.getName(),
addClass : (this.model.components.length ? '' : pfx+'no-chld'),
count : this.model.components.length,
visible : vis,
hidable : this.config.hidable,
prefix : pfx
title: this.model.getName(),
addClass: (count ? '' : pfx+'no-chld'),
count: count,
visible: vis,
hidable: this.config.hidable,
prefix: pfx
}));
if(typeof ItemsView == 'undefined')
ItemsView = require('./ItemsView');

27
src/navigator/view/ItemsView.js

@ -43,10 +43,11 @@ define(['backbone','./ItemView'],
var fragment = fragmentEl || null;
var viewObject = ItemView;
var view = new viewObject({
model : model,
config : this.config,
sorter : this.sorter,
var view = new viewObject({
model: model,
config: this.config,
sorter: this.sorter,
isCountable: this.isCountable,
});
var rendered = view.render().el;
@ -73,12 +74,26 @@ define(['backbone','./ItemView'],
return rendered;
},
/**
* Check if the model could be count by the navigator
* @param {Object} model
* @return {Boolean}
* @private
*/
isCountable: function(model, hide) {
var type = model.get('type');
var tag = model.get('tagName');
if((type == 'textnode' || tag == 'br') && hide)
return false;
return true;
},
render: function() {
var fragment = document.createDocumentFragment();
this.$el.empty();
this.collection.each(function(model){
if(model.get('type') == 'textnode' && this.config.hideTextnode)
this.collection.each(function(model) {
if(!this.isCountable(model, this.config.hideTextnode))
return;
this.addToCollection(model, fragment);
}, this);

Loading…
Cancel
Save