diff -r 4b6e154ae8de -r f56199193fad src/js/model.js --- a/src/js/model.js Tue May 22 16:49:48 2012 +0200 +++ b/src/js/model.js Wed May 30 17:07:01 2012 +0200 @@ -210,26 +210,33 @@ }); } -IriSP.Model.List.prototype.removeId = function(_id) { - var _index = (IriSP._(this.idIndex).indexOf(_id)); +IriSP.Model.List.prototype.removeId = function(_id, _deleteFromDirectory) { + var _deleteFromDirectory = _deleteFromDirectory || false, + _index = (IriSP._(this.idIndex).indexOf(_id)); if (_index !== -1) { this.splice(_index,1); } + if (_deleteFromDirectory) { + delete this.directory.elements[_id]; + } } -IriSP.Model.List.prototype.removeElement = function(_el) { +IriSP.Model.List.prototype.removeElement = function(_el, _deleteFromDirectory) { + var _deleteFromDirectory = _deleteFromDirectory || false; this.removeId(_el.id); } -IriSP.Model.List.prototype.removeIds = function(_list) { - var _this = this; +IriSP.Model.List.prototype.removeIds = function(_list, _deleteFromDirectory) { + var _deleteFromDirectory = _deleteFromDirectory || false, + _this = this; IriSP._(_list).forEach(function(_id) { _this.removeId(_id); }); } -IriSP.Model.List.prototype.removeElements = function(_list) { - var _this = this; +IriSP.Model.List.prototype.removeElements = function(_list, _deleteFromDirectory) { + var _deleteFromDirectory = _deleteFromDirectory || false, + _this = this; IriSP._(_list).forEach(function(_el) { _this.removeElement(_el); }); @@ -785,6 +792,13 @@ } } +IriSP.Model.Source.prototype.merge = function(_source) { + var _this = this; + _source.forEach(function(_value, _key) { + _this.getList(_key).addElements(_value); + }); +} + /* */ IriSP.Model.RemoteSource = function(_config) {