Daniel@0: "use strict"; Daniel@0: Daniel@0: App.module("ContextModule", function(ContextModule, App, Backbone, Marionette, $, _, Logger) { Daniel@0: Daniel@0: // Define private variables Daniel@0: var logger = null; Daniel@0: Daniel@0: ContextModule.addInitializer(function(options){ Daniel@0: Daniel@0: logger = Logger.get("ContextModule.StateBookmarkCollection"); Daniel@0: logger.setLevel(Logger.WARN); Daniel@0: Daniel@0: /** Daniel@0: * StateBookmarkCollection is needed to store bookmarks for the states Daniel@0: */ Daniel@0: ContextModule.StateBookmarkCollection = Backbone.Collection.extend({ Daniel@0: model: ContextModule.StateBookmark, Daniel@0: Daniel@0: serialize: function() { Daniel@0: return this.map(function(model){ return model.serialize(); }); Daniel@0: }, Daniel@0: Daniel@0: unserialize: function(serializedModels) { Daniel@0: var fixedSerializedModels = serializedModels; Daniel@0: if (!_.isArray(serializedModels)) { Daniel@0: logger.warn("StateBookmarkCollection::unserialize called for not an array: ", serializedModels); Daniel@0: fixedSerializedModels = []; Daniel@0: } Daniel@0: if (!_.isEqual(fixedSerializedModels, this.serialize())) { Daniel@0: var modelArray = []; Daniel@0: for (var i = 0; i < fixedSerializedModels.length; i++) { Daniel@0: var model = new this.model(); Daniel@0: modelArray.push(model.unserialize(fixedSerializedModels[i])); Daniel@0: } Daniel@0: this.reset(modelArray); Daniel@0: } Daniel@0: } Daniel@0: }); Daniel@0: }); Daniel@0: }, Logger);