OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
authoryasushiito <yas@pen-chan.jp>
Fri, 20 Mar 2015 09:40:02 +0000 (18:40 +0900)
committeryasushiito <yas@pen-chan.jp>
Fri, 20 Mar 2015 09:40:02 +0000 (18:40 +0900)
33 files changed:
app/assets/images/inspire.gif [new file with mode: 0644]
app/assets/images/none.gif [new file with mode: 0644]
app/assets/images/pick.gif [new file with mode: 0644]
app/assets/images/trace.gif [new file with mode: 0644]
app/assets/javascripts/ap.js
app/assets/javascripts/controllers.js.coffee
app/assets/javascripts/controllers/folders.js.coffee
app/assets/javascripts/controllers/panels.js.coffee
app/assets/javascripts/editor/panel_editor.js.coffee
app/assets/javascripts/editor/panel_editor/dock.js.coffee
app/assets/javascripts/locmare/filer.js.coffee
app/assets/javascripts/locmare/filer/body.js.coffee
app/assets/javascripts/locmare/filer/body/file_body.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee
app/assets/javascripts/locmare/filer/body/file_header.js.coffee
app/assets/javascripts/locmare/picker/body/file_body/file_item.js.coffee
app/assets/javascripts/locmare/profiler.js.coffee
app/assets/javascripts/locmare/profiler/association.js.coffee
app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee
app/assets/javascripts/locmare/profiler/association/has_many.js.coffee
app/assets/javascripts/locmare/profiler/association/has_one.js.coffee
app/assets/javascripts/locmare/profiler/header.js.coffee
app/assets/javascripts/manifest/model/association/has_many.js.coffee
app/assets/javascripts/models/panel_picture.js.coffee
app/assets/javascripts/peta/element_nestable_content.js.coffee
app/assets/javascripts/tags.js.coffee
app/assets/javascripts/views/panel_pictures/new_element.js.coffee
app/assets/stylesheets/test.css.scss
config/locales/pettanr.ja.yml
public/images/inspire.gif [new file with mode: 0644]
public/images/none.gif [new file with mode: 0644]
public/images/pick.gif [new file with mode: 0644]
public/images/trace.gif [new file with mode: 0644]

diff --git a/app/assets/images/inspire.gif b/app/assets/images/inspire.gif
new file mode 100644 (file)
index 0000000..aacc28d
Binary files /dev/null and b/app/assets/images/inspire.gif differ
diff --git a/app/assets/images/none.gif b/app/assets/images/none.gif
new file mode 100644 (file)
index 0000000..9b6ac9e
Binary files /dev/null and b/app/assets/images/none.gif differ
diff --git a/app/assets/images/pick.gif b/app/assets/images/pick.gif
new file mode 100644 (file)
index 0000000..eceee2c
Binary files /dev/null and b/app/assets/images/pick.gif differ
diff --git a/app/assets/images/trace.gif b/app/assets/images/trace.gif
new file mode 100644 (file)
index 0000000..f66a75e
Binary files /dev/null and b/app/assets/images/trace.gif differ
index f75d5cd..c4e4dc7 100644 (file)
 //= 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
index 76c542f..2087b2d 100644 (file)
@@ -39,17 +39,14 @@ class Pettanr.AppController
     @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
index e8153f7..aa49de5 100644 (file)
@@ -66,6 +66,7 @@ class Pettanr.FoldersController extends Pettanr.AppController
         pager: null, \r
         operators: @operators\r
       })\r
+      filer.render()\r
       @trigger('ready', filer)\r
       @trigger('done', @params)\r
   \r
index 2ea987a..530b774 100644 (file)
@@ -38,7 +38,7 @@ class Pettanr.PanelsController extends Pettanr.AppController
   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
@@ -69,7 +69,7 @@ class Pettanr.PanelsController extends Pettanr.AppController
       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
index 4ab84fd..e19fa4c 100644 (file)
@@ -30,7 +30,11 @@ class Editor.PanelEditor extends Backbone.View
   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
@@ -82,10 +86,14 @@ class Editor.PanelEditor.Dialog extends Backbone.View
   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
@@ -116,6 +124,9 @@ class Editor.PanelEditor.Dialog extends Backbone.View
   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
@@ -131,3 +142,6 @@ class Editor.PanelEditor.Dialog extends Backbone.View
     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
index 025b06e..bd5795f 100644 (file)
@@ -389,7 +389,7 @@ class Editor.EditorModule.DockModule.TabModule.NewElementBoardBody extends Edito
   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
index 160eab4..5c06360 100644 (file)
@@ -11,6 +11,7 @@ class Locmare.Filer extends Backbone.View
     @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
@@ -18,7 +19,6 @@ class Locmare.Filer extends Backbone.View
     @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
@@ -33,10 +33,19 @@ class Locmare.Filer extends Backbone.View
   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
index 76b02a2..5aab71b 100644 (file)
@@ -6,6 +6,7 @@ class Locmare.FilerModule.Body extends Backbone.View
     @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
@@ -30,6 +31,13 @@ class Locmare.FilerModule.Body extends Backbone.View
   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
index 9a9f30f..ffb0b91 100644 (file)
@@ -6,7 +6,6 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View
     @file_items = []\r
     @file_items = _.map @filer().items, (item) =>\r
       @init_file_item(item)\r
-    @render()\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -16,6 +15,7 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View
   \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
@@ -37,6 +37,13 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View
   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
index 61bbe3c..86884b4 100644 (file)
@@ -23,6 +23,9 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi
     @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
@@ -33,7 +36,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi
       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
@@ -52,6 +55,17 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi
   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
@@ -76,3 +90,85 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi
   \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
index f492313..c9ab3bc 100644 (file)
@@ -13,6 +13,7 @@ class Locmare.FilerModule.BodyModule.FileHeader extends Backbone.View
   \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
@@ -21,6 +22,10 @@ class Locmare.FilerModule.BodyModule.FileHeader extends Backbone.View
     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
index 7a679c3..e471440 100644 (file)
@@ -3,11 +3,7 @@ class Locmare.PickerModule.BodyModule.FileBodyModule.FileItem extends Locmare.Fi
   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
@@ -47,3 +43,23 @@ class Locmare.PickerModule.BodyModule.FileBodyModule.FileItem extends Locmare.Fi
   \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
index 5568ef8..bbcd45e 100644 (file)
@@ -31,6 +31,13 @@ class Locmare.Profiler extends Backbone.View
   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
index 5737005..a8503c7 100644 (file)
@@ -20,17 +20,17 @@ class Locmare.ProfilerModule.Association extends Backbone.View
     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
@@ -39,6 +39,14 @@ class Locmare.ProfilerModule.Association extends Backbone.View
   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
index 4813f60..afa4b0e 100644 (file)
@@ -5,21 +5,30 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View
     @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
@@ -39,6 +48,12 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View
   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
index 919a74a..ce0c6d8 100644 (file)
@@ -12,20 +12,28 @@ class Locmare.ProfilerModule.AssociationModule.HasMany extends Backbone.View
       @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
@@ -35,6 +43,13 @@ class Locmare.ProfilerModule.AssociationModule.HasMany extends Backbone.View
   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
index 087d18a..bb85f3a 100644 (file)
@@ -12,22 +12,29 @@ class Locmare.ProfilerModule.AssociationModule.HasOne extends Backbone.View
       @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
@@ -37,6 +44,13 @@ class Locmare.ProfilerModule.AssociationModule.HasOne extends Backbone.View
   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
index 8db142b..a6dced2 100644 (file)
@@ -16,6 +16,9 @@ class Locmare.ProfilerModule.Header extends Backbone.View
     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
index 9478ea3..34cce84 100644 (file)
@@ -15,7 +15,7 @@ class Manifest.ModelModule.AssociationModule.HasMany extends ManifestBase.NameVa
     !@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
index eaac8a5..4dcaa24 100644 (file)
@@ -11,6 +11,24 @@ class Pettanr.PanelPicture extends Peta.Element
     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
index a00224e..ef01b55 100644 (file)
@@ -13,25 +13,30 @@ class Peta.ElementNestableContent extends Peta.Content
     _.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
index 3aa22a7..ca747e9 100644 (file)
@@ -32,7 +32,6 @@ class Tag.A extends Tag.A_
   \r
   initialize: (options) ->\r
     super(options)\r
-    @navigate = options.navigate\r
   \r
   render: () ->\r
     super()\r
@@ -41,10 +40,7 @@ class Tag.A extends Tag.A_
     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
index 930cc9e..587f09e 100644 (file)
@@ -4,15 +4,16 @@ class Pettanr.Views.PanelPicture.NewElement extends Backbone.View
   \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
index eb627c2..994c976 100644 (file)
@@ -403,7 +403,7 @@ ul.scenarios_elements {
 .filer-item div {
 }
 
-.filer-head-button {
+.filer-head-pick {
   width: 66px; 
 }
 .filer-head-symbol {
@@ -425,7 +425,7 @@ ul.scenarios_elements {
   width: 66px; 
 }
 
-.filer-item-button {
+.filer-item-pick {
   float: left;
   width: 66px; 
 }
index aa3d186..f47cba6 100644 (file)
@@ -1667,6 +1667,7 @@ ja:
       production: 製品版
   filer:
     header:
+      pick: 選択
       symbol: 画像
       caption: 見出し
       summary: 要約
diff --git a/public/images/inspire.gif b/public/images/inspire.gif
new file mode 100644 (file)
index 0000000..aacc28d
Binary files /dev/null and b/public/images/inspire.gif differ
diff --git a/public/images/none.gif b/public/images/none.gif
new file mode 100644 (file)
index 0000000..9b6ac9e
Binary files /dev/null and b/public/images/none.gif differ
diff --git a/public/images/pick.gif b/public/images/pick.gif
new file mode 100644 (file)
index 0000000..eceee2c
Binary files /dev/null and b/public/images/pick.gif differ
diff --git a/public/images/trace.gif b/public/images/trace.gif
new file mode 100644 (file)
index 0000000..f66a75e
Binary files /dev/null and b/public/images/trace.gif differ