Sha256: f1a7cca2ff86f389c6e95cad2a590c2434369f42a7a4febc975f0be22a76aea3
Contents?: true
Size: 1.33 KB
Versions: 3
Compression:
Stored size: 1.33 KB
Contents
require 'volt/models/persistors/base' require 'volt/utils/local_storage' require 'json' module Persistors # Backs a collection in the local store class LocalStore < Base def initialize(model) @model = model end # Find the root for this model def root_model node = @model loop do parent = node.parent if parent node = parent else break end end return node end # Called when a model is added to the collection def added(model, index) root_model.persistor.save_all end def loaded # When the main model is first loaded, we pull in the data from the # store if it exists if @model.path == [] json_data = LocalStorage['volt-store'] if json_data root_attributes = JSON.parse(json_data) @loading_data = true root_attributes.each_pair do |key, value| @model.send(:"#{key}=", value) end @loading_data = nil end end end # Callled when an item is changed (or removed) def changed(attribute_name) root_model.persistor.save_all end # Called on the root def save_all return if @loading_data json_data = JSON.dump(@model.to_h) LocalStorage['volt-store'] = json_data end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
volt-0.8.4 | lib/volt/models/persistors/local_store.rb |
volt-0.8.3 | lib/volt/models/persistors/local_store.rb |
volt-0.8.2 | lib/volt/models/persistors/local_store.rb |