//= require ./locmare/list_group/list/through_filter
//= require ./locmare/list_group/list/foreign_filter
//= require ./locmare/list_group/list/play
-//= require ./locmare/picker
-//= require ./locmare/picker/header
-//= require ./locmare/picker/body
-//= require ./locmare/picker/body/file_header
-//= require ./locmare/picker/body/file_header/base
-//= require ./locmare/picker/body/file_header/show
-//= require ./locmare/picker/body/file_header/none
-//= require ./locmare/picker/body/file_body
-//= require ./locmare/picker/body/file_body/file_item
//= require ./peta/peta
//= require ./peta/item
//= require ./peta/owner
@set_list()\r
@list.open(() =>\r
pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, @params)\r
- filer_class = if @params['format'] == 'pick'\r
- Locmare.Picker\r
- else\r
- Locmare.Filer\r
- filer = new filer_class({\r
+ filer = new Locmare.Filer({\r
item_name: @list.item_name, \r
items: @list.items(), \r
pager: pager, \r
operators: @operators\r
})\r
@listenTo(filer, 'navigate', @navigate)\r
+ filer.render()\r
@trigger('ready', filer)\r
)\r
false\r
pager: null, \r
operators: @operators\r
})\r
+ filer.render()\r
@trigger('ready', filer)\r
@trigger('done', @params)\r
\r
show_html: () -> \r
@item = @item.with_elements() # retake panel for 'with_elements' mode\r
@item.fetch({cache: true}).done =>\r
- @item.replace_elements()\r
+ @item.attributes = @item.replaced_attributes()\r
@trigger('title', @params, @item.get('caption'))\r
show = new Pettanr.Views.Panel.Show({\r
panel: @item,\r
panel = new Pettanr.Panel({id: @params['id']})\r
@item = panel.with_elements()\r
@item.fetch({cache: false}).done =>\r
- @item.replace_elements()\r
+ @item.attributes = @item.replaced_attributes()\r
@editor(@item.edit_url())\r
@trigger('done', @params)\r
\r
render: () ->\r
this.$el.html('')\r
this.$el.append(@dialog.render().el)\r
- @dialog.$el.dialog({autoOpen: false, width: 640, height: 560 })\r
+ @dialog.$el.dialog({\r
+ autoOpen: false,\r
+ width: 750, \r
+ height: 560\r
+ })\r
this.$el.append(@body.render().el)\r
this.$el.append(@dock.render().el)\r
this.$el.append(@credits.render().el)\r
initialize: (options) ->\r
@parent = options.parent\r
@operators = options.operators\r
+ @target_model = options.target_model\r
@history = new Pettanr.Views.History({parent: this})\r
@listenTo(@history, 'http_get', @http_get)\r
@listenTo(@history, 'get', @get)\r
\r
+ start: (@target_model, params, form) ->\r
+ @get(params, form)\r
+ \r
render: () ->\r
this.$el.html('')\r
@history.render()\r
ready: (view) ->\r
@listenTo(view, 'http_get', @http_get)\r
# @listenTo(view, 'http_post', @http_post)\r
+ @listenTo(view, 'pick', @pick)\r
+ if view['is_pickable'] and view.is_pickable()\r
+ view.add_pick(@target_model)\r
@refresh(view)\r
\r
done: (params) ->\r
t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title')\r
this.$el.dialog({title: t})\r
\r
+ pick: (item) ->\r
+ console.log(item)\r
+ \r
click_button: (model) ->\r
@new_element.remove() if @new_element\r
@new_element = new Pettanr.Views[model.singular()].NewElement({\r
- parent: this, model: model\r
+ parent: this, target_model: model\r
})\r
this.$el.append(@new_element.render().el)\r
\r
@header = new (@module().Header)({'filer': this})\r
@body = new (@module().Body)({'filer': this})\r
@listenTo(@header, 'click', @click_header)\r
+ @listenTo(@body, 'click:pick', @click_pick)\r
@listenTo(@body, 'click:symbol', @click_symbol)\r
@listenTo(@body, 'click:caption', @click_caption)\r
@listenTo(@body, 'click:prof', @click_prof)\r
@listenTo(@body, 'http_post', @http_post)\r
@listenTo(@body, 'remove', @remove)\r
@listenTo(@pager, 'http_get', @http_get) if @pager\r
- @render()\r
\r
render: () ->\r
this.$el.html('')\r
image_dir: () ->\r
'/images/'\r
\r
+ is_pickable: () ->\r
+ true\r
+ \r
+ add_pick: (target_model) ->\r
+ @body.add_pick(target_model)\r
+ \r
click_header: (url) ->\r
@trigger('click:header', url)\r
@http_get(url)\r
\r
+ click_pick: (file_item_view) ->\r
+ @trigger('pick', file_item_view.item)\r
+ \r
click_symbol: (item_view) ->\r
@trigger('click:symbol', item_view)\r
\r
@filer = options.filer\r
@file_header = new (@module().FileHeader)({'body': this})\r
@file_body = new (@module().FileBody)({'body': this})\r
+ @listenTo(@file_body, 'click:pick', @click_pick)\r
@listenTo(@file_body, 'click:symbol', @click_symbol)\r
@listenTo(@file_body, 'http_get', @http_get)\r
@listenTo(@file_body, 'http_post', @http_post)\r
items: () ->\r
@filer.items\r
\r
+ add_pick: (target_model) ->\r
+ @file_header.add_pick(target_model)\r
+ @file_body.add_pick(target_model)\r
+ \r
+ click_pick: (file_item_view) ->\r
+ @trigger('click:pick', file_item_view)\r
+ \r
click_symbol: (symbol_view) ->\r
@trigger('click:symbol', symbol_view)\r
\r
@file_items = []\r
@file_items = _.map @filer().items, (item) =>\r
@init_file_item(item)\r
- @render()\r
\r
render: () ->\r
this.$el.html('')\r
\r
init_file_item: (item) ->\r
file_item_view = new (@module().FileItem)({'file_body': this, 'item': item})\r
+ @listenTo(file_item_view, 'click:pick', @click_pick)\r
@listenTo(file_item_view, 'click:symbol', @click_symbol)\r
@listenTo(file_item_view, 'http_get', @http_get)\r
@listenTo(file_item_view, 'http_post', @http_post)\r
items: () ->\r
@filer().items\r
\r
+ add_pick: (target_model) ->\r
+ _.each @file_items, (file_item) =>\r
+ file_item.add_pick(target_model)\r
+ \r
+ click_pick: (file_item_view) ->\r
+ @trigger('click:pick', file_item_view)\r
+ \r
click_symbol: (file_item_view) ->\r
@trigger('click:symbol', file_item_view)\r
\r
@listenTo(@item, 'destroy', @destroy)\r
\r
render: () ->\r
+ this.$el.html('')\r
+ if @pick\r
+ this.$el.append(@pick.render().el)\r
if @symbol.is_visible()\r
this.$el.append(@symbol.render().el)\r
if @caption.is_visible()\r
this.$el.append(@icon.render().el)\r
if @date.is_visible()\r
this.$el.append(@date.render().el)\r
- if @edit.is_visible()\r
+ if !@pick and @edit.is_visible()\r
this.$el.append(@edit.render().el)\r
this\r
\r
items: () ->\r
@filer().items\r
\r
+ add_pick: (target_model) ->\r
+ @pick = new Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.Pick.factory({\r
+ parent: this,\r
+ target_model: target_model\r
+ })\r
+ @listenTo(@pick, 'click', @click_pick)\r
+ @render()\r
+ \r
+ click_pick: () ->\r
+ @trigger('click:pick', this)\r
+ \r
click_symbol: () ->\r
@trigger('click:symbol', this)\r
\r
\r
class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule\r
\r
+\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.Pick extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ @factory: (options) ->\r
+ @target_model = options.target_model\r
+ @parent = options.parent\r
+ filer = @parent.filer()\r
+ klass = if filer.item_name == @target_model.item_name()\r
+ Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Inspire\r
+ else if @target_model.is_traceable(filer.item_name)\r
+ Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Trace\r
+ else if filer.item_name == @target_model.pick_item_name()\r
+ Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Pick\r
+ else\r
+ Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.None\r
+ new klass({\r
+ target_model: @target_model\r
+ })\r
+ \r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ @target_model = options.target_model\r
+ @el.className = 'filer-item-pick'\r
+ @button = @set_button()\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ @listenTo(@button, 'click', @click)\r
+ this.$el.append(@button.render().el)\r
+ this\r
+ \r
+ name: () ->\r
+ 'none'\r
+ \r
+ icon: () ->\r
+ new Pettanr.Image.SymbolImg({attr: {src: '/images/' + @name() + '.gif'}})\r
+ \r
+ linked_icon: () ->\r
+ new Tag.A({\r
+ attr: {href: '#'},\r
+ content: @icon().render().el\r
+ })\r
+ \r
+ click: () ->\r
+ @trigger('click', this)\r
+ \r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base\r
+ \r
+ set_button: () ->\r
+ @button = @icon()\r
+ \r
+ name: () ->\r
+ 'none'\r
+ \r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Pick extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base\r
+ \r
+ set_button: () ->\r
+ @button = @linked_icon()\r
+ \r
+ name: () ->\r
+ 'pick'\r
+ \r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Inspire extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base\r
+ \r
+ set_button: () ->\r
+ @button = @linked_icon()\r
+ \r
+ name: () ->\r
+ 'inspire'\r
+ \r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Trace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base\r
+ \r
+ set_button: () ->\r
+ @button = @linked_icon()\r
+ \r
+ name: () ->\r
+ 'trace'\r
+ \r
\r
render: () ->\r
this.$el.html('')\r
+ this.$el.append(@pick.render().el) if @pick\r
this.$el.append(@symbol.render().el) if @manifest().symbol.is_visible()\r
this.$el.append(@caption.render().el) if @manifest().caption.is_visible()\r
this.$el.append(@summary.render().el) if @manifest().summary.is_visible()\r
this.$el.append(@edit.render().el) if @manifest().edit.is_visible()\r
this\r
\r
+ add_pick: (target_mode) ->\r
+ @pick = new (@module().Show)({'file_header': this, 'column_name': 'pick'})\r
+ @render()\r
+ \r
filer: () ->\r
@body.filer\r
\r
initialize: (options) ->\r
@file_body = options.file_body\r
@item = options.item\r
- icon = new Pettanr.Image.SymbolImg({attr: {src: '/images/new.gif'}})\r
- @pick = new Tag.A({\r
- attr: {href: '#'},\r
- content: icon.render().el\r
- })\r
+ @pick = new Locmare.PickerModule.BodyModule.FileBodyModule.FileItemModule.Pick()\r
@symbol = @module().SymbolItemColumnFactory.factory this, @manifest().symbol, @item\r
@caption = @module().CaptionItemColumnFactory.factory this, @manifest().caption, @item\r
@summary = @module().SummaryItemColumnFactory.factory this, @manifest().summary, @item\r
\r
class Locmare.PickerModule.BodyModule.FileBodyModule.FileItemModule\r
\r
+class Locmare.PickerModule.BodyModule.FileBodyModule.FileItemModule.Pick extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ icon = new Pettanr.Image.SymbolImg({attr: {src: '/images/new.gif'}})\r
+ @linked_icon = new Tag.A({\r
+ attr: {href: '#'},\r
+ content: icon.render().el\r
+ })\r
+ @listenTo(@linked_icon, 'click', @click)\r
+ @el.className = 'filer-item-pick'\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ this.$el.append(@linked_icon.render().el)\r
+ this\r
+ \r
+ click: () ->\r
+ @trigger('click', this)\r
+ \r
image_dir: () ->\r
'/images/'\r
\r
+ is_pickable: () ->\r
+ true\r
+ \r
+ add_pick: (target_model) ->\r
+ @header.add_pick(target_model)\r
+ @associations.add_pick(target_model)\r
+ \r
http_get: (url) ->\r
@trigger('http_get', url)\r
\r
this.$el.append(caption.render().el)\r
_.each @belongs_to, (f) =>\r
@listenTo(f, 'http_get', @http_get)\r
- this.$el.append(f.render().el)\r
+ this.$el.append(f.clear().el)\r
caption = new Tag.Div({class_name: 'caption', content: 'has_many'})\r
this.$el.append(caption.render().el)\r
_.each @has_many, (f) =>\r
@listenTo(f, 'http_get', @http_get)\r
- this.$el.append(f.render().el)\r
+ this.$el.append(f.clear().el)\r
caption = new Tag.Div({class_name: 'caption', content: 'has_one'})\r
this.$el.append(caption.render().el)\r
_.each @has_one, (f) =>\r
@listenTo(f, 'http_get', @http_get)\r
- this.$el.append(f.render().el)\r
+ this.$el.append(f.clear().el)\r
this\r
\r
item: () ->\r
model_manifest: () ->\r
Manifest.manifest().models[@profiler.item_name]\r
\r
+ add_pick: (target_model) ->\r
+ _.each @belongs_to, (f) =>\r
+ f.add_pick(target_model)\r
+ _.each @belongs_to, (f) =>\r
+ f.add_pick(target_model)\r
+ _.each @belongs_to, (f) =>\r
+ f.add_pick(target_model)\r
+ \r
http_get: (url) ->\r
@trigger('http_get', url)\r
\r
@association = options.association\r
@belongs_to_manifest = options.belongs_to_manifest\r
pm = @parent_model()\r
- m = new pm({id: @parent_id()})\r
- m.fetch({cache: true}).done =>\r
- @filer = new Locmare.Filer({\r
- item_name: @parent_model().item_name(), \r
- items: [m], \r
- pager: null, \r
- operators: @profiler().operators\r
- })\r
- @listenTo(@filer, 'http_get', @http_get)\r
+ @item = new pm({id: @parent_id()})\r
+ \r
+ clear: () ->\r
+ this.$el.html('')\r
+ @item.fetch({cache: true}).done =>\r
+ @set_filer()\r
@render()\r
+ this\r
\r
render: () ->\r
- this.$el.html(@filer.el) if @filer\r
+ this.$el.html('')\r
+ this.$el.append(@filer.el)\r
this\r
\r
+ set_filer: () ->\r
+ @filer = new Locmare.Filer({\r
+ item_name: @parent_model().item_name(), \r
+ items: [@item], \r
+ pager: null, \r
+ operators: @profiler().operators\r
+ })\r
+ @filer.render()\r
+ @listenTo(@filer, 'http_get', @http_get)\r
+ \r
item: () ->\r
@profiler().item\r
\r
profiler: () ->\r
@association.profiler\r
\r
+ add_pick: (target_model) ->\r
+ @item.fetch({cache: true}).done =>\r
+ @set_filer()\r
+ @render()\r
+ @filer.add_pick(target_model)\r
+ \r
http_get: (url) ->\r
@trigger('http_get', url)\r
\r
@profiler().operators, {id: @item().get('id'), page: 1, page_size: 3}\r
)\r
@list.open((page_status) =>\r
- @filer = new Locmare.Filer({\r
- item_name: @has_many_model().item_name(), \r
- items: @list.items(), \r
- pager: @pager, \r
- operators: @profiler().operators\r
- })\r
- @listenTo(@filer, 'http_get', @http_get)\r
+ @set_filer()\r
@render()\r
)\r
\r
+ clear: () ->\r
+ this.$el.html('')\r
+ this\r
+ \r
render: () ->\r
- this.$el.html(@filer.el) if @filer\r
+ this.$el.html(@filer.el)\r
this\r
\r
+ set_filer: () ->\r
+ @filer = new Locmare.Filer({\r
+ item_name: @has_many_model().item_name(), \r
+ items: @list.items(), \r
+ pager: @pager, \r
+ operators: @profiler().operators\r
+ })\r
+ @filer.render()\r
+ @listenTo(@filer, 'http_get', @http_get)\r
+ \r
item: () ->\r
@profiler().item\r
\r
profiler: () ->\r
@association.profiler\r
\r
+ add_pick: (target_model) ->\r
+ @list.open((page_status) =>\r
+ @set_filer()\r
+ @render()\r
+ @filer.add_pick(target_model)\r
+ )\r
+ \r
http_get: (url) ->\r
@trigger('http_get', url)\r
\r
@profiler().operators, {id: @item().get('id')}\r
)\r
@list.open((page_status) =>\r
- @filer = new Locmare.Filer({\r
- item_name: @has_one_model().item_name(), \r
- items: @list.items(), \r
- pager: @pager, \r
- operators: @profiler().operators\r
- })\r
- @listenTo(@filer, 'http_get', @http_get)\r
+ @set_filer()\r
@render()\r
)\r
\r
+ clear: () ->\r
+ this.$el.html('')\r
+ this\r
+ \r
render: () ->\r
this.$el.html('')\r
- if @filer\r
- this.$el.html(@filer.render().el)\r
+ this.$el.html(@filer.el)\r
this\r
\r
+ set_filer: () ->\r
+ @filer = new Locmare.Filer({\r
+ item_name: @has_one_model().item_name(), \r
+ items: @list.items(), \r
+ pager: @pager, \r
+ operators: @profiler().operators\r
+ })\r
+ @filer.render()\r
+ @listenTo(@filer, 'http_get', @http_get)\r
+ \r
item: () ->\r
@profiler().item\r
\r
profiler: () ->\r
@association.profiler\r
\r
+ add_pick: (target_model) ->\r
+ @list.open((page_status) =>\r
+ @set_filer()\r
+ @render()\r
+ @filer.add_pick(target_model)\r
+ )\r
+ \r
http_get: (url) ->\r
@trigger('http_get', url)\r
\r
this.$el.html(@filer.el)\r
this\r
\r
+ add_pick: (target_model) ->\r
+ @filer.add_pick(target_model)\r
+ \r
http_get: (url) ->\r
@trigger('http_get', url)\r
\r
!@through\r
\r
model: () ->\r
- Manifest.item_name_to_model(@item_name())\r
+ Manifest.item_name_to_model(@item_name)\r
\r
association_name: () ->\r
@parent.association_name\r
id: null\r
} \r
\r
+ @pick: () ->\r
+ \r
+ @pick_item_name: () ->\r
+ 'resource_picture'\r
+ \r
+ @pick_model: () ->\r
+ Manifest.item_name_to_model(@pick_item_name())\r
+ \r
+ @traceable_item_names: () ->\r
+ ['ground_picture', 'picture']\r
+ \r
+ @is_traceable: (item_name) ->\r
+ _.contains(@traceable_item_names(), item_name)\r
+ \r
+ trace_from_ground_picture: () ->\r
+ \r
+ trace_from_picture: () ->\r
+ \r
picture: () ->\r
new Pettanr.Picture({id: @get('picture_id')})\r
\r
_.each @elements_items(), (item) =>\r
item.boosts(level) if item\r
\r
- replace_elements: () ->\r
- _.each @my_class().child_models(), (element_model) =>\r
- attrs = @element_items(element_model)\r
- return if !attrs\r
- if @my_class().my_manifest().associations.is_has_one(element_model)\r
- empty_child = new element_model(attrs)\r
- cached_child = Pettanr.cache.restore(empty_child)\r
- Pettanr.cache.store(empty_child) if !cached_child\r
- child = cached_child || empty_child\r
- child.replace_elements()\r
- @attributes[element_model.item_name()] = child # eventless setting\r
- else\r
- list = _.map attrs, (attr) =>\r
- empty_child = new element_model(attr)\r
- cached_child = Pettanr.cache.restore(empty_child)\r
- Pettanr.cache.store(empty_child) if !cached_child\r
- child = cached_child || empty_child\r
- child.replace_elements()\r
+ replaced_attributes: () ->\r
+ attributes = {}\r
+ _.each @attributes, (attribute, name) =>\r
+ replaced = if _.isArray(attribute)\r
+ # has many association\r
+ model = @my_class().my_manifest().associations.has_many[name].model()\r
+ _.map attribute, (attr) =>\r
+ child = @replace_element(model, attr)\r
+ child.attributes = child.replaced_attributes()\r
child\r
- @attributes[element_model.table_name()] = list # eventless setting\r
- \r
+ else if _.isObject(attribute)\r
+ # has one association\r
+ model = @my_class().my_manifest().associations.has_one[name].model()\r
+ child = @replace_element(model, attribute)\r
+ child.attributes = child.replaced_attributes()\r
+ child\r
+ else\r
+ attribute\r
+ attributes[name] = replaced\r
+ attributes\r
+ \r
+ replace_element: (model, attr) ->\r
+ empty_child = new model(attr)\r
+ cached_child = Pettanr.cache.restore(empty_child)\r
+ Pettanr.cache.store(empty_child) if !cached_child\r
+ cached_child || empty_child\r
\r
\r
initialize: (options) ->\r
super(options)\r
- @navigate = options.navigate\r
\r
render: () ->\r
super()\r
this\r
\r
click: () ->\r
- if @navigate\r
- window.router.navigate(@navigate, true)\r
- else\r
- @trigger('click')\r
+ @trigger('click')\r
return false\r
\r
class Tag.Div extends Backbone.View\r
\r
initialize: (options) ->\r
@parent = options.parent\r
- @model = options.model\r
+ @target_model = options.target_model\r
+ @pick_model = @target_model.pick_model()\r
\r
render: () ->\r
this.$el.html('')\r
params = {\r
- controller: @model.path_name(), action: 'index',\r
- page_size: 6, format: 'pick'\r
+ controller: @target_model.path_name(), action: 'index',\r
+ page_size: 6, format: 'html'\r
}\r
- @dialog().get(params, null)\r
+ @dialog().start(@target_model, params, null)\r
@listenTo(@dialog(), 'pick', @pick)\r
this\r
\r
.filer-item div {
}
-.filer-head-button {
+.filer-head-pick {
width: 66px;
}
.filer-head-symbol {
width: 66px;
}
-.filer-item-button {
+.filer-item-pick {
float: left;
width: 66px;
}
production: 製品版
filer:
header:
+ pick: 選択
symbol: 画像
caption: 見出し
summary: 要約