From: yasushiito Date: Mon, 2 Mar 2015 04:57:51 +0000 (+0900) Subject: Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06 X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=29abaf3989363cb51d0bb64e1560a80114920782;hp=1faa2a7eb0cca883d62d7e7e36ad7e3a7530a6a2 Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06 --- diff --git a/app/assets/javascripts/controllers/panels.js.coffee b/app/assets/javascripts/controllers/panels.js.coffee index e0849b6d..de3b2e0b 100644 --- a/app/assets/javascripts/controllers/panels.js.coffee +++ b/app/assets/javascripts/controllers/panels.js.coffee @@ -55,7 +55,7 @@ class Pettanr.PanelsController extends Pettanr.AppController @item = panel.with_elements() @item.fetch({cache: false}).done => editor = new Editor.PanelEditor({root_item: @item, operators: @operators}) - editor.render() + #editor.render() @trigger('ready', editor) editor: () -> diff --git a/app/assets/javascripts/editor.js.coffee b/app/assets/javascripts/editor.js.coffee index a912f7b3..dbef8d3c 100644 --- a/app/assets/javascripts/editor.js.coffee +++ b/app/assets/javascripts/editor.js.coffee @@ -119,29 +119,6 @@ class Editor.EditorModule.DockModule.FormBucket extends Editor.EditorModule.Dock render: () -> @form.render() -class Editor.EditorModule.DockModule.PriorityBucket extends Editor.EditorModule.DockModule.Bucket - - initialize: (options) -> - super(options) - - board: () -> - @parent.board() - - bay: () -> - @board().bay() - -class Editor.EditorModule.DockModule.ScenarioBucket extends Editor.EditorModule.DockModule.Bucket - - initialize: (options) -> - super(options) - @element = options.element - - board: () -> - @parent.board() - - bay: () -> - @board().bay() - class Editor.EditorModule.DockModule.TabModule class Editor.EditorModule.DockModule.TabModule.Label extends Backbone.View diff --git a/app/assets/javascripts/editor/panel_editor.js.coffee b/app/assets/javascripts/editor/panel_editor.js.coffee index e49f9edb..826a8cba 100644 --- a/app/assets/javascripts/editor/panel_editor.js.coffee +++ b/app/assets/javascripts/editor/panel_editor.js.coffee @@ -20,27 +20,25 @@ class Editor.PanelEditor extends Backbone.View _.each list, (element) => element.fetch({cache: true}).done => @add_element(element) - #@dock.add_new_tab() @body.on('panel:resize', @panel_resize) @listenTo(@dock, 'put', @put) Pettanr.History.lock_url = @panel.edit_url() add_element: (element) -> - console.log(element) panel_element_view = @body.add_element(element) - element_form = @dock.add_element(element) - @dig(element, panel_element_view, element_form) + element_tab_form = @dock.add_element_to_element_tab(element) + scenario_tab_form = @dock.add_element_to_scenario_tab(element) + @dig(element, panel_element_view, element_tab_form, scenario_tab_form) if element.constructor.has_picture() @credits.add_picture(element.picture()) - dig: (element, panel_element_view, element_form) -> - console.log(element.elements_items()) + dig: (element, panel_element_view, element_tab_form, scenario_tab_form) -> _.each element.elements_items(), (child_element) => - console.log(child_element) child_element.fetch({cache: true}).done => child_panel_element_view = panel_element_view.add_element(child_element) - child_element_form = element_form.add_element(child_element) - @dig(child_element, child_panel_element_view, child_element_form) + child_element_tab_form = element_tab_form.add_element(child_element) + child_scenario_tab_form = scenario_tab_form.add_element(child_element) + @dig(child_element, child_panel_element_view, child_element_tab_form, child_scenario_tab_form) remove_element: (element) -> @@ -55,6 +53,8 @@ class Editor.PanelEditor extends Backbone.View this.$el.append(@credits.render().el) rb = new Tag.RowBreak() this.$el.append(rb.render().el) + @dock.init_tabs() + window.editor = this # enable leave cancel flag on unsave @dock.$el.tabs() this diff --git a/app/assets/javascripts/editor/panel_editor/dock.js.coffee b/app/assets/javascripts/editor/panel_editor/dock.js.coffee index 10a56ced..fafb917e 100644 --- a/app/assets/javascripts/editor/panel_editor/dock.js.coffee +++ b/app/assets/javascripts/editor/panel_editor/dock.js.coffee @@ -52,9 +52,18 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase this.$el.append(tab.render().el) this - add_element: (element) -> + init_tabs: () -> + this.$el.tabs({ + activate: (e, ui) -> + ui.newPanel.trigger('activate') + }) + + add_element_to_element_tab: (element) -> @element_bay.add_element(element) + add_element_to_scenario_tab: (element) -> + @scenario_bay.add_element(element) + editor: () -> @parent @@ -167,12 +176,23 @@ class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.Dock render: () -> this.$el.html('') + @delegateEvents({'activate': 'activate'}) this.$el.attr('id', @body.dom_id()) this.$el.append(@elements_tabs.render().el) - @elements_tabs.$el.tabs() - # @add_new_tab() + _this = this + @elements_tabs.$el.tabs({ + activate: (e, ui) -> + ui.newPanel.trigger('activate') + }) this + activate: () -> + _.each @tabs, (tab) -> + return if not tab.element # without new element tab + console.log(tab.body.$el.css('display')) + if tab.body.$el.css('display') != 'none' + tab.body.refresh() + sorted: () -> # data-z copy to model _.each @tabs, (tab) -> @@ -260,7 +280,6 @@ class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.Edi render: () -> @body.render() - class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board initialize: (options) -> @@ -305,6 +324,7 @@ class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.E }) render: () -> + @delegateEvents({'activate': 'activate'}) this.$el.attr('id', @dom_id()) this.$el.html(@form.render().el) this @@ -312,6 +332,12 @@ class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.E add_element: (element) -> @form.add_element(element) + activate: () -> + @refresh() + + refresh: () -> + @form.refresh() + mounted: () -> true @@ -476,160 +502,207 @@ class Editor.EditorModule.DockModule.NewElementFormWrapper extends Backbone.View @model = model @render() -class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.BoardBay - - initialize: (options) -> - super(options) - i = 0 - _.each @elements(), (element) => - tab = new Editor.EditorModule.DockModule.ScenarioBoard({ - parent: this, index: i, name: element.item_name(), element: element - }) - @add_tab( - tab, - new Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel({parent: tab, caption: element.item_name()}), - new Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody({parent: tab}) - ) - i++ +class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.SimpleBay render: () -> - this.$el.html('') - this.$el.attr('id', @body.dom_id()) - elements_tabs = new Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs({ - tabs: @tabs - }) - this.$el.append(elements_tabs.render().el) - _.each @tabs, (tab) => - this.$el.append(tab.body.render().el) - elements_tabs.$el.tabs() - this + @body.render() - elements: () -> - @root_item().scenario_elements() + add_element: (element) -> + element_li = @body.add_element(element) + element_li.body.form - class_name: () -> - "tsort-box" + save_data: () -> + @body.form.save_data() -class Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs extends Backbone.View - tagName: 'ul' - className: 'tsort' +class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel + +class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody initialize: (options) -> super(options) - @tabs = options.tabs + @elements = new Editor.EditorModule.DockModule.ScenarioBay.Elements({ + parent: this, + }) + @listenTo(@elements, 'sorted', @sorted) + + add_element: (element) -> + element_li = @elements.add_element(element) render: () -> - this.$el.html('') - _.each @tabs, (tab) => - this.$el.append(tab.label.render().el) + super() + this.$el.append(@elements.render().el) + @delegateEvents({'activate': 'activate'}) this -class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel + activate: () -> + @elements.refresh() -class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody + sorted: () -> + # data-t copy to model + _.each @elements.element_lis, (element_li) => + t = parseInt(element_li.$el.attr('data-t')) + element_li.element.set({ + t: t + }, {silent: true}) + element_li.element.trigger('sort') - initialize: (options) -> - super(options) + panel_body: () -> + @dock().editor().body -class Editor.EditorModule.DockModule.ScenarioBoard extends Editor.EditorModule.DockModule.Board + save_data: () -> + attrs = {} + _.each @tabs, (tab) -> + return if not tab.element # without new element tab + form = tab.body.form + name = form.item.table_name() + '_attributes' + attrs[name] ||= [] + attrs[name].push(form.save_data()) + attrs + +class Editor.EditorModule.DockModule.ScenarioBay.Elements extends Backbone.View + tagName: 'ul' + className: 'scenarios_elements' initialize: (options) -> super(options) - @element = options.element + @parent = options.parent + @element_lis = [] -class Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel + render: () -> + this.$el.html('') + _.each @scenario_elements(), (element_li) => + this.$el.append(element_li.render().$el) + _this = this + this.$el.sortable { + update: (event, ui) -> + t = 0 + $('.t-label', $(@)).map -> + $(@).attr('data-t', t) + t++ + _this.trigger('sorted') + } + this - with_destroy_button: () -> - false + refresh: () -> + _.each @element_lis, (element_li) => + element_li.refresh() -class Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody + scenario_elements: () -> + res = [] + _.each @element_lis, (element_li) => + res[element_li.t()] = element_li + res - initialize: (options) -> - super(options) - @bucket = new Editor.EditorModule.DockModule.ScenarioBucket({ - parent: this + add_element: (element) -> + e = new Editor.EditorModule.DockModule.ScenarioBay.Element({ + parent: this, + element: element }) + @element_lis.push(e) # insert array + @render() + e -class Editor.EditorModule.DockModule.PriorityBay extends Editor.EditorModule.DockModule.BoardBay + sorted: () -> + # data-t copy to model + @trigger('sorted') + +class Editor.EditorModule.DockModule.ScenarioBay.Element extends Backbone.View + tagName: 'li' + className: 't-label' initialize: (options) -> super(options) - i = 0 - _.each @elements(), (element) => - tab = new Editor.EditorModule.DockModule.PriorityBoard({ - parent: this, index: i, name: element.item_name(), element: element - }) - @add_tab( - tab, - new Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel({parent: tab, name: element.item_name()}), - new Editor.EditorModule.DockModule.TabModule.PriorityBoardBody({parent: tab}) - ) - i++ + @parent = options.parent + @element = options.element render: () -> this.$el.html('') - this.$el.attr('id', @body.dom_id()) - elements_tabs = new Editor.EditorModule.DockModule.PriorityBay.PriorityTabs({ - tabs: @tabs + this.$el.attr('data-t', @t()) + @label = new Editor.EditorModule.DockModule.ScenarioBay.ElementLabel({ + parent: this, }) - this.$el.append(elements_tabs.render().el) - _.each @tabs, (tab) => - this.$el.append(tab.body.render().el) - elements_tabs.$el.tabs() + @body = new Editor.EditorModule.DockModule.ScenarioBay.ElementBody({ + parent: this, + }) + this.$el.append(@label.render().$el) + this.$el.append(@body.render().$el) + rb = new Tag.RowBreak() + this.$el.append(rb.render().el) this - elements: () -> - @root_item().scenario_elements() + refresh: () -> + @body.form.refresh() - class_name: () -> - "zsort-box" + t: () -> + @element.get('t') -class Editor.EditorModule.DockModule.PriorityBay.PriorityTabs extends Backbone.View - tagName: 'ul' - className: 'zsort' + dom_id: () -> + super() + '-' + @element.get('id') # use tab index + +class Editor.EditorModule.DockModule.ScenarioBay.ElementLabel extends Backbone.View + className: 'scenario-label' initialize: (options) -> super(options) - @tabs = options.tabs + @parent = options.parent render: () -> - this.$el.html('') - _.each @tabs, (tab) => - this.$el.append(tab.label.render().el) + this.$el.append(@element().element_face().render().el) + _this = this + this.$el.mouseover -> + _this.element().trigger('active') + this.$el.mouseout -> + _this.element().trigger('inactive') this -class Editor.EditorModule.DockModule.TabModule.PriorityBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel + element: () -> + @parent.element + + elements: () -> + @parent.parent -class Editor.EditorModule.DockModule.TabModule.PriorityBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody + bay: () -> + @elements().parent - initialize: (options) -> - super(options) + dock: () -> + @bay().dock() -class Editor.EditorModule.DockModule.PriorityBoard extends Editor.EditorModule.DockModule.Board +class Editor.EditorModule.DockModule.ScenarioBay.ElementBody extends Backbone.View initialize: (options) -> super(options) - @element = options.element + @parent = options.parent + @form = Locmare.Form.factory({ + form_name: @element().item_name(), + use_name: 'scenario' + item: @element(), + mounted: @mounted(), + submit: null, + operators: @dock().editor().operators, + action: '/' + @element().table_name() + '/' + Pettanr.to_s(@element().get('id')) + }) - mounted: () -> - false + render: () -> + this.$el.html(@form.render().el) + this -class Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel + element: () -> + @parent.element - with_destroy_button: () -> - false + elements: () -> + @parent.parent -class Editor.EditorModule.DockModule.TabModule.PriorityBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody + bay: () -> + @elements().parent - initialize: (options) -> - super(options) - @bucket = new Editor.EditorModule.DockModule.PriorityBucket({ - parent: this - }) - -# form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name] -# form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted -# bucket = Bucket.new self,form + dock: () -> + @bay().dock() + + mounted: () -> + true + + element: () -> + @parent.element class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index c8de9189..33bc7c21 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -83,9 +83,16 @@ class Locmare.Form extends Locmare.FormBase @delegateEvents({'submit': method_type}) this + refresh: () -> + _.each @fields, (field) => + field.refresh() + _.each @child_forms, (child_form, name) => + child_form.refresh() + add_element: (element) -> form = Locmare.Form.factory({ form_name: element.item_name(), + use_name: @use_name, item: element, mounted: @mounted, submit: null, @@ -211,6 +218,9 @@ class Locmare.ExtendForm extends Locmare.FormBase this.$el.append(@div_fields.render().el) this + refresh: () -> + @field.refresh() + init_fields: () -> _.each @manifest.field_names, (field_name) => field_manifest = @manifest.fields[field_name] diff --git a/app/assets/javascripts/locmare/form/field/tag/text.js.coffee b/app/assets/javascripts/locmare/form/field/tag/text.js.coffee index 87c667a3..0f3abc20 100644 --- a/app/assets/javascripts/locmare/form/field/tag/text.js.coffee +++ b/app/assets/javascripts/locmare/form/field/tag/text.js.coffee @@ -8,11 +8,11 @@ class Locmare.FormModule.FieldModule.TagModule.TextTag extends Locmare.FormModul this.$el.html('') @attr = { type: 'text', - name: @form_field_name(), - value: @value() + name: @form_field_name() } _.extend(@attr, @options()) this.$el.attr(@attr) + this.$el.val(@value()) this change: () -> diff --git a/app/assets/javascripts/locmare/form/field/tag/text_area.js.coffee b/app/assets/javascripts/locmare/form/field/tag/text_area.js.coffee index 34857a6d..6f81f744 100644 --- a/app/assets/javascripts/locmare/form/field/tag/text_area.js.coffee +++ b/app/assets/javascripts/locmare/form/field/tag/text_area.js.coffee @@ -16,7 +16,7 @@ class Locmare.FormModule.FieldModule.TagModule.TextAreaTag extends Locmare.FormM delete @tag_manifest.options['size'] _.extend(@attr, @options()) this.$el.attr(@attr) - this.$el.html(@value()) + this.$el.val(@value()) this change: () -> diff --git a/app/assets/javascripts/work/forms.js.coffee.erb b/app/assets/javascripts/work/forms.js.coffee.erb index 0845e979..9f05e940 100644 --- a/app/assets/javascripts/work/forms.js.coffee.erb +++ b/app/assets/javascripts/work/forms.js.coffee.erb @@ -674,6 +674,19 @@ 't', ] }, + scenario: { + fields: { + caption: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + field_names: [ + 'caption', + ] + }, }, }, speech_balloon: { @@ -749,6 +762,19 @@ 'speech_balloon_template_settings', ], }, + scenario: { + fields: { + caption: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + field_names: [ + 'caption', + ] + }, }, }, balloon: { @@ -850,6 +876,12 @@ 'speech_balloon_template_settings', ], }, + scenario: { + fields: { + }, + field_names: [ + ] + }, }, }, speech: { @@ -932,6 +964,7 @@ tag: { type: 'text', }, + row_break: true, }, content: { label: { @@ -1003,6 +1036,35 @@ 'writing_format_module_name', ], }, + scenario: { + fields: { + quotes: { + tag: { + type: 'text', + }, + row_break: true, + }, + content: { + label: { + args: { + row_break: true, + }, + }, + tag: { + type: 'text_area', + args: { + options: { + size: '45x5', + }, + }, + }, + }, + }, + field_names: [ + 'quotes', + 'content', + ] + }, }, }, ground_picture: { @@ -1089,6 +1151,19 @@ 'picture_id', ] }, + scenario: { + fields: { + caption: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + field_names: [ + 'caption', + ] + }, }, }, ground_color: { @@ -1182,6 +1257,19 @@ 't', ] }, + scenario: { + fields: { + caption: { + tag: { + type: 'text', + }, + row_break: true, + }, + }, + field_names: [ + 'caption', + ] + }, }, }, original_picture_license_group: { diff --git a/app/assets/stylesheets/test.css.scss b/app/assets/stylesheets/test.css.scss index 3b2499cd..994e0c04 100644 --- a/app/assets/stylesheets/test.css.scss +++ b/app/assets/stylesheets/test.css.scss @@ -259,54 +259,6 @@ font-family : monospace; margin: 3px 10px; } -.tsort-box { - float: left; - font-size: 12px; -} -.scenario { - float: left; -} -.tsort-row-break { - clear: both; -} -.tsort-tabs-nav { - padding: .2em .1em .2em .2em; - width: 220px; -} -.tsort { - list-style-type: none; - margin: 0; - padding: 0; -} -.tsort li { - margin: 0 3px 3px 3px; - padding: 0.3em; - padding-left: 1em; - font-size: 12px; - cursor: move; -} -.tsort-row-break { - clear: both; -} -.zsort-box { - font-size: 12px; -} -.zsort-tabs-nav { - padding: .2em .1em .2em .2em; - width: 220px; -} -.zsort { - list-style-type: none; - margin: 0; - padding: 0; -} -.zsort li { - margin: 0 3px 3px 3px; - padding: 0.3em; - padding-left: 1em; - font-size: 12px; - cursor: move; -} #elements-tabs { font-size: 12px; } @@ -389,6 +341,14 @@ font-family : monospace; .new-element-buttons div { clear: both; } +ul.scenarios_elements { + list-style-type: none; + padding: 0; +} + +.scenario-label { + float: left; +} .speech_balloon_template_item { float: left; diff --git a/public/local_manifest.json b/public/local_manifest.json index 4b6b97fb..342511e1 100644 --- a/public/local_manifest.json +++ b/public/local_manifest.json @@ -2658,6 +2658,19 @@ "z", "t" ] + }, + "scenario": { + "fields": { + "caption": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "field_names": [ + "caption" + ] } } }, @@ -2733,6 +2746,19 @@ "t", "speech_balloon_template_settings" ] + }, + "scenario": { + "fields": { + "caption": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "field_names": [ + "caption" + ] } } }, @@ -2832,6 +2858,10 @@ "speech_balloon_template_module_name", "speech_balloon_template_settings" ] + }, + "scenario": { + "fields": {}, + "field_names": [] } } }, @@ -2914,7 +2944,8 @@ "quotes": { "tag": { "type": "text" - } + }, + "row_break": true }, "content": { "label": { @@ -2985,6 +3016,35 @@ "speech_balloon_template_settings", "writing_format_module_name" ] + }, + "scenario": { + "fields": { + "quotes": { + "tag": { + "type": "text" + }, + "row_break": true + }, + "content": { + "label": { + "args": { + "row_break": true + } + }, + "tag": { + "type": "text_area", + "args": { + "options": { + "size": "45x5" + } + } + } + } + }, + "field_names": [ + "quotes", + "content" + ] } } }, @@ -3071,6 +3131,19 @@ "panel_id", "picture_id" ] + }, + "scenario": { + "fields": { + "caption": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "field_names": [ + "caption" + ] } } }, @@ -3164,6 +3237,19 @@ "z", "t" ] + }, + "scenario": { + "fields": { + "caption": { + "tag": { + "type": "text" + }, + "row_break": true + } + }, + "field_names": [ + "caption" + ] } } },