OSDN Git Service

fix: new elm launcher
[pettanr/pettanr.git] / app / assets / javascripts / editor / panel_editor / element / new_board.js.coffee
1 class Editor.EditorModule.DockModule.NewElementBoard extends Editor.EditorModule.DockModule.Board\r
2   \r
3   initialize: (options) ->\r
4     super(options)\r
5     @panel = @parent.dock().editor().panel\r
6   \r
7 class Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
8   \r
9   initialize: (options) ->\r
10     super(options)\r
11   \r
12   render: () ->\r
13     super()\r
14     this.$el.attr('data-z', 0)\r
15     this.$el.removeClass('ui-corner-top')\r
16     this.$el.addClass('ui-corner-left')\r
17     this\r
18   \r
19   face: () ->\r
20     icon = new Pettanr.Image.SymbolImg({attr: {src: '/images/new.gif'}})\r
21     linked_elements_tab = new Tag.A({\r
22       attr: {href: '#' + @board().body.dom_id() },\r
23       content: icon.render().el\r
24     })\r
25     this.$el.append(linked_elements_tab.render().el)\r
26   \r
27   add_label: () ->\r
28     this.$el.attr('id', @dom_id())\r
29   \r
30   z: () ->\r
31     parseInt(this.$el.attr('data-z'))\r
32   \r
33 class Editor.EditorModule.DockModule.TabModule.NewElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
34   className: 'new-element-board-body'\r
35   \r
36   initialize: (options) ->\r
37     super(options)\r
38   \r
39   render: () ->\r
40     this.$el.attr('id', @dom_id())\r
41     @launchers = new Editor.EditorModule.DockModule.NewElementLaunchers({\r
42       parent: this, element_models: @element_models()\r
43     })\r
44     @listenTo(@launchers, 'pick', @pick)\r
45     @listenTo(@launchers, 'dialog:open', @open_dialog)\r
46     @listenTo(@launchers, 'dialog:close', @close_dialog)\r
47     this.$el.append(@launchers.render().el)\r
48     this\r
49   \r
50   panel: () ->\r
51     @parent.panel\r
52   \r
53   element_models: () ->\r
54     @panel().my_class().child_models()\r
55   \r
56   pick: (new_item) ->\r
57     @trigger('pick', new_item)\r
58   \r
59   open_dialog: (dialog) ->\r
60     @trigger('dialog:open', dialog)\r
61   \r
62   close_dialog: (dialog) ->\r
63     @trigger('dialog:close', dialog)\r
64   \r
65 class Editor.EditorModule.DockModule.NewElementLaunchers extends Backbone.View\r
66   tagName: 'div'\r
67   className: 'new-element-buttons'\r
68   \r
69   initialize: (options) ->\r
70     super(options)\r
71     @parent = options.parent\r
72     @element_models = options.element_models\r
73   \r
74   render: () ->\r
75     _.each @element_models, (model) =>\r
76       launcher = new Pettanr.Views[model.singular()].NewElementLauncher({\r
77         parent: this, model: model\r
78       })\r
79       @listenTo(launcher, 'pick', @pick)\r
80       @listenTo(launcher, 'dialog:open', @open_dialog)\r
81       @listenTo(launcher, 'dialog:close', @close_dialog)\r
82       this.$el.append(launcher.render().el)\r
83     this\r
84   \r
85   pick: (new_item) ->\r
86     @trigger('pick', new_item)\r
87   \r
88   open_dialog: (dialog) ->\r
89     @trigger('dialog:open', dialog)\r
90   \r
91   close_dialog: (dialog) ->\r
92     @trigger('dialog:close', dialog)\r
93   \r
94   dock: () ->\r
95     @parent.dock()\r
96   \r
97 class Editor.EditorModule.DockModule.NewElementLauncher extends Backbone.View\r
98   tagName: 'div'\r
99   \r
100   initialize: (options) ->\r
101     super(options)\r
102     @parent = options.parent\r
103     @model = options.model\r
104   \r
105   render: () ->\r
106     this.$el.html('')\r
107     header = new Editor.EditorModule.DockModule.NewElementLauncherHeader({model: @model})\r
108     this.$el.append(header.render().el)\r
109     this\r
110   \r
111   get_action: (params) ->\r
112     controller = Manifest.manifest().controllers[params['controller']]\r
113     controller.actions[params['action']]\r
114   \r
115   add_links: () ->\r
116     _.each @links_conf, (conf, name) =>\r
117       @add_link(name, conf.caption, @get_action(conf.params).url(conf.params))\r
118   \r
119   add_link: (name, caption, url) ->\r
120     link = new Tag.A({\r
121       attr: {href: '/' + url},\r
122       content: caption\r
123     })\r
124     @listenTo(link, 'click', this['click_' + name])\r
125     this.$el.append(link.render().el)\r
126   \r
127   create_dialog: () ->\r
128     dialog = new Editor.PanelEditor.Dialog({\r
129       parent: this\r
130     })\r
131     this.$el.append(dialog.render().el)\r
132     _this = this\r
133     dialog.$el.dialog({\r
134       autoOpen: false,\r
135       width: 750, \r
136       height: 560,\r
137       close: (ui, event) ->\r
138         _this.close_dialog(dialog)\r
139     })\r
140     dialog\r
141   \r
142   click_default: (params) ->\r
143     dialog = @create_dialog()\r
144     picker = new Pettanr.Views[@model.singular()].NewElement({\r
145       parent: this, target_model: @model\r
146     })\r
147     @listenTo(picker, 'pick', @pick)\r
148     @listenTo(picker, 'dialog:open', @open_dialog)\r
149     @listenTo(picker, 'dialog:close', @close_dialog)\r
150     picker.start(dialog, params)\r
151   \r
152   pick: (new_item) ->\r
153     @trigger('pick', new_item)\r
154   \r
155   open_dialog: (dialog) ->\r
156     @trigger('dialog:open', dialog)\r
157   \r
158   close_dialog: (dialog) ->\r
159     @trigger('dialog:close', dialog)\r
160   \r
161   dock: () ->\r
162     @parent.dock()\r
163   \r
164 class Editor.EditorModule.DockModule.NewElementLauncherHeader extends Backbone.View\r
165   tagName: 'h3'\r
166   \r
167   initialize: (options) ->\r
168     super(options)\r
169     @model = options.model\r
170   \r
171   render: () ->\r
172     this.$el.html('')\r
173     icon = new Pettanr.Image.Icon({item: @model, half: true})\r
174     caption = Pettanr.AppHelper.t_m(@model.singular())\r
175     this.$el.append(icon.render().el)\r
176     this.$el.append(caption)\r
177     this\r
178   \r