X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Fpeta%2Fitem.js.coffee;h=aac9f2d19bdb4edcc49b9341d2c993281402687c;hb=1e8400d0a3d373483cfd9fe342ca05179554bc9b;hp=bce93d94e3cdfcb4a28987e970c68b7a1171d655;hpb=29abaf3989363cb51d0bb64e1560a80114920782;p=pettanr%2Fpettanr.git diff --git a/app/assets/javascripts/peta/item.js.coffee b/app/assets/javascripts/peta/item.js.coffee index bce93d94..aac9f2d1 100644 --- a/app/assets/javascripts/peta/item.js.coffee +++ b/app/assets/javascripts/peta/item.js.coffee @@ -1,4 +1,11 @@ class Peta.Item extends Backbone.Model + + initialize: (attr = {}, options = {}) -> + super(attr, options) + @expire_time = options.expire_time + @boosters = {} + @templates = {} + @child_models: () -> @my_manifest().child_models() @@ -61,12 +68,6 @@ class Peta.Item extends Backbone.Model @path_name: (with_engine = false) -> @table_name() - @pickup_item_name: () -> - @item_name() - - @pickup_column_name: () -> - 'id' - @find_boost_name: (column_name) -> @my_peta().find_boost_name column_name @@ -99,15 +100,6 @@ class Peta.Item extends Backbone.Model path_name: (with_engine = false) -> @my_class().path_name(with_engine) - pickup_item_name: () -> - @my_class().pickup_item_name() - - pickup_column_name: () -> - @my_class().pickup_column_name() - - pickup_id: () -> - @get(pickup_column_name()) - form_template: (with_engine = false) -> @path_name(with_engine) + '/form' @@ -117,6 +109,21 @@ class Peta.Item extends Backbone.Model else @item_name() + has_many: (has_many_name) -> + has_many_manifest = @my_class().my_manifest().associations.has_many[has_many_name] + action_name = has_many_manifest.list_action_name + Locmare.ListGroup.list( + has_many_name, action_name, {id: @get('id')} + ) + + has_one: (has_one_name) -> + has_one_manifest = @my_class().my_manifest().associations.has_one[has_one_name] + controller_name = has_one_manifest.model().table_name() + action_name = has_one_manifest.list_action_name + Locmare.ListGroup.list( + controller_name, action_name, {id: @get('id')} + ) + boosts: (level) -> c = @my_class().my_peta().boost _.each c, (boost_manifest, boost_name) => @@ -124,24 +131,54 @@ class Peta.Item extends Backbone.Model @boost boost_manifest boost: (boost_manifest) -> - @boosters ||= {} @boosters[boost_manifest.name] = new Locmare.Booster(boost_manifest, this) # fetched item is not cleared . force write booster #@boosters[boost_manifest.name] ||= new Locmare.Booster(boost_manifest, this) - boosters: () -> - @boosters ||= {} - is_extend_column: (column_name) -> @is_extend_column column_name - is_visible: (operators) -> + is_visible: (operators = Pettanr.cache.operators) -> if Manifest.manifest().magic_numbers['run_mode'] == 0 return false if not operators.is_guest() else return false if not operators.is_resource_reader() true + retriever: () -> + new Pettanr.Cache.Retriever(@my_class(), @get('id')) + + @pick_item_name: () -> + null + + @pick_model: () -> + Manifest.item_name_to_model(@pick_item_name()) + + @traceable_item_names: () -> + [] + + @is_traceable: (item_name) -> + _.contains(@traceable_item_names(), item_name) + + @is_picker_inspire: (item_name) -> + item_name == @item_name() + + @is_picker_trace: (item_name) -> + @is_traceable(item_name) + + @is_picker_pick: (item_name) -> + item_name == @pick_item_name() + + @pick_type: (item_name) -> + if @is_picker_inspire(item_name) + 'inspire' + else if @is_picker_trace(item_name) + 'trace' + else if @is_picker_pick(item_name) + 'pick' + else + 'none' + icon_view: (half) -> new Pettanr.Views[@my_class().singular()].Icon({item: this, half: half}) @@ -160,6 +197,9 @@ class Peta.Item extends Backbone.Model prof_url: () -> Pettanr.url(@table_name(), 'show', {id: @get('id'), format: 'prof'}) + new_url: () -> + Pettanr.url(@table_name(), 'new', {}) + create_url: () -> Pettanr.url(@table_name(), 'create', {}) @@ -172,6 +212,15 @@ class Peta.Item extends Backbone.Model destroy_url: () -> Pettanr.url(@table_name(), 'destroy', {id: @get('id')}) + hold: () -> + Pettanr.cache.hold(this) + + fix: () -> + Pettanr.cache.fix(this) + + release: () -> + Pettanr.cache.release(this) + save: (model_attr) -> super(model_attr || @attributes, { success: (model, response, options) => @@ -194,6 +243,9 @@ class Peta.Item extends Backbone.Model dom_id: () -> (@get('id') || '').toString() + cache_key: () -> + @table_name() + '-' + @dom_id() + dom_pool_type: () -> @new_record ? 'stored' : 'new'