From: yasushiito Date: Thu, 22 Jan 2015 08:13:39 +0000 (+0900) Subject: fix new element dialog X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=091b085aa054691dfe37d6f55f699dcb80f63ee5;hp=408ef92fab105ea87397d2913add609760f53deb fix new element dialog --- diff --git a/app/assets/javascripts/editor/panel_editor.js.coffee b/app/assets/javascripts/editor/panel_editor.js.coffee index a47fab55..39d306a8 100644 --- a/app/assets/javascripts/editor/panel_editor.js.coffee +++ b/app/assets/javascripts/editor/panel_editor.js.coffee @@ -58,6 +58,7 @@ class Editor.PanelEditor extends Backbone.View rb = new Tag.RowBreak() this.$el.append(rb.render().el) this.$el.tabs() + window.editor = this # enable leave cancel flag on unsave this panel_resize: () -> @@ -67,8 +68,16 @@ class Editor.PanelEditor extends Backbone.View #$(trace + 'width').val(w) #$(trace + 'height').val(h) + quit: () -> + @dialog.$el.dialog('destroy') + window.editor = null # release editor + put: () -> - attrs = @dock.save_data() + if @dock.save() + window.editor = null # release editor + @dock.valid() + else + @dock.invalid() false root_item: () -> diff --git a/app/assets/javascripts/editor/panel_editor/dock.js.coffee b/app/assets/javascripts/editor/panel_editor/dock.js.coffee index 75bb0f60..75fdfe38 100644 --- a/app/assets/javascripts/editor/panel_editor/dock.js.coffee +++ b/app/assets/javascripts/editor/panel_editor/dock.js.coffee @@ -71,11 +71,21 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase @trigger('put') false + save: () -> + attrs = @save_data() + @root_bay.body.form.save(attrs) + save_data: () -> attrs = @root_bay.save_data() _.extend(attrs, @element_bay.save_data()) attrs + valid: () -> + @root_bay.body.form.valid() + + invalid: () -> + @root_bay.body.form.invalid() + class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay render: () -> diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index aa77ed3a..5c91ac9a 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -148,12 +148,23 @@ class Locmare.Form extends Locmare.FormBase _.each @fields, (field) => @item.set(field.field_name, field.val()) @item.overwrite({operators: @operators}) - attrs = @make_attrs() - if @item.save(attrs) - window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true) - return false + if @save() + @valid() else - alert('invalid') + @invalid() + + save: (attrs = null) -> + if attrs + @item.save(attrs) + else + @item.save() + + valid: () -> + window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true) + return false + + invalid: () -> + alert('invalid') save_data: () -> @item.my_class().child_models() diff --git a/app/assets/javascripts/locmare/form/field/tag/number.js.coffee b/app/assets/javascripts/locmare/form/field/tag/number.js.coffee index 66646ad8..a707cef0 100644 --- a/app/assets/javascripts/locmare/form/field/tag/number.js.coffee +++ b/app/assets/javascripts/locmare/form/field/tag/number.js.coffee @@ -21,3 +21,6 @@ class Locmare.FormModule.FieldModule.TagModule.NumberTag extends Locmare.FormMod @field.helpers.refresh() @field.trigger('change') + val: () -> + parseInt(super) + diff --git a/app/assets/javascripts/routes.js.coffee b/app/assets/javascripts/routes.js.coffee index c56221db..e3e093a4 100644 --- a/app/assets/javascripts/routes.js.coffee +++ b/app/assets/javascripts/routes.js.coffee @@ -84,6 +84,16 @@ class Pettanr.Router extends Backbone.Router r = new Pettanr.UsersController() r.index() + navigate: (fragment, options) -> + if window.editor + if confirm('leave? edit data unsaved') + window.editor.quit() + super(fragment, options) + else + false + else + super(fragment, options) + hoge: () -> names = _.map Manifest.manifest().controllers, (controller_manifest, controller_name) -> c = Pettanr[Pettanr.camelize(controller_name) + 'Controller'] diff --git a/app/controllers/panels_controller.rb b/app/controllers/panels_controller.rb index 376c68cc..6c9e4389 100644 --- a/app/controllers/panels_controller.rb +++ b/app/controllers/panels_controller.rb @@ -143,6 +143,7 @@ class PanelsController < ApplicationController updated_html_format format updated_json_format format else + p @item.errors format.html { flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human) @editor = Editor::PanelEditor.new @item, @operators