\r
new: () ->\r
@trigger('title', @params)\r
- @set_new()\r
- @editor(@item.new_url())\r
+ @form_new()\r
@trigger('done', @params)\r
\r
edit: () ->\r
@trigger('title', @params)\r
- @set_model()\r
- panel = new Pettanr.Panel({id: @params['id']})\r
- @item = panel.with_elements()\r
- @item.fetch({cache: false}).done =>\r
- @item.attributes = @item.replaced_attributes()\r
- @editor(@item.edit_url())\r
- @trigger('done', @params)\r
+ @form_edit()\r
+ @trigger('done', @params)\r
\r
- editor: () ->\r
- editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
- editor.render()\r
- @trigger('lock', @params, editor)\r
- @trigger('ready', editor)\r
+ render_form: () ->\r
+ @item.attributes = @item.replaced_attributes()\r
+ @form = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
+ @form.render()\r
+ @trigger('lock', @params, @form)\r
+ @trigger('ready', @form)\r
\r
create: () ->\r
# @form is editor\r
initialize: (options) ->\r
super(options)\r
\r
- # not render\r
+ # no render\r
# get caption data and send message\r
render: () ->\r
if @item[@method_name()]\r
@listenTo(@item, 'ready:caption', @ready_caption)\r
- # fetch caption by manifest method_name\r
@item[@method_name()]()\r
\r
method_name: () ->\r
initialize: (options) ->\r
@association = options.association\r
@belongs_to_manifest = options.belongs_to_manifest\r
- retriever = new Pettanr.Cache.Retriever(@parent_model(), @parent_id())\r
- @listenTo(retriever, 'retrieve', @retrieve_item)\r
- retriever.retrieve()\r
\r
clear: () ->\r
this.$el.html('')\r
+ retriever = new Pettanr.Cache.Retriever(@parent_model(), @parent_id())\r
+ @listenTo(retriever, 'retrieve', @retrieve_parent_item)\r
+ retriever.retrieve()\r
this\r
\r
- retrieve_item: (@item) ->\r
+ retrieve_parent_item: (@parent_item) ->\r
@set_filer()\r
@render()\r
\r
\r
set_filer: () ->\r
@filer = new Locmare.Filer({\r
- item_name: @parent_model().item_name(), \r
- items: [@item], \r
+ item_name: @parent_item.item_name(), \r
+ items: [@parent_item], \r
pager: null, \r
operators: @profiler().operators\r
})\r
@association.profiler\r
\r
add_pick: (target_model) ->\r
- retriever = @item.retriever()\r
+ retriever = new Pettanr.Cache.Retriever(@parent_model(), @parent_id())\r
@listenTo(retriever, 'retrieve', @retrieve_pick_item)\r
retriever.retrieve()\r
\r
- retrieve_pick_item: (@item) ->\r
+ retrieve_pick_item: (@parent_item) ->\r
@set_filer()\r
@render()\r
@filer.add_pick(target_model)\r
@profiler().operators, \r
{id: @item().get('id'), page: 1, page_size: 3}\r
)\r
+ \r
+ clear: () ->\r
+ this.$el.html('')\r
@list.open((page_status) =>\r
@set_filer()\r
@render()\r
)\r
- \r
- clear: () ->\r
- this.$el.html('')\r
this\r
\r
render: () ->\r
@profiler().operators, \r
{id: @item().get('id')}\r
)\r
+ \r
+ clear: () ->\r
+ this.$el.html('')\r
@list.open((page_status) =>\r
@set_filer()\r
@render()\r
)\r
- \r
- clear: () ->\r
- this.$el.html('')\r
this\r
\r
render: () ->\r
\r
constructor: (options) ->\r
@data = {}\r
+ @holds = {}\r
_.extend(this, Backbone.Events)\r
\r
# return cached items\r
#if item\r
# @refresh(item)\r
\r
- retrieve: (model, id, force) ->\r
- empty_item = new model({id: id})\r
- if force\r
- # query\r
- empty_item.fetch().done =>\r
- @trigger('retrieve', empty_item)\r
- else if id\r
- # existence item\r
- item = @store(empty_item)\r
- if item\r
- @trigger('retrieve', item)\r
- else\r
- empty_item.fetch().done =>\r
- @store(empty_item)\r
- @trigger('retrieve', empty_item)\r
+ is_hold: (item) ->\r
+ if @holds[item.cache_key()]\r
+ true\r
else\r
- # new item\r
- @trigger('retrieve', empty_item)\r
+ false\r
\r
- edit: (model, id) ->\r
- @listenTo(this, 'retrieve', @edit_retrieve)\r
- @retrieve(model, id)\r
+ hold: (item) ->\r
+ return @holds[item.cache_key()] if @holds[item.cache_key()]\r
+ @holds[item.cache_key()] = item.clone()\r
\r
- edit_retrieve: (item) ->\r
- editting_item = item.clone()\r
- # get latest item\r
- editting_item.fetch().done =>\r
- @trigger('edit', editting_item)\r
+ release: (item) ->\r
+ @data[item.cache_key()] = item # overwrite\r
+ delete @holds[item.cache_key()]\r
\r
refresh: (item) ->\r
if item.expire_time\r
# new item\r
@trigger('retrieve', empty_item)\r
\r
+ edit: (model, id) ->\r
+ empty_item = new @model({id: @id})\r
+ item = Pettanr.cache.hold(empty_item)\r
+ item.fetch().done =>\r
+ @item.attributes = @item.replaced_attributes()\r
+ @trigger('retrieve', item)\r
+ \r