OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / app / assets / javascripts / deprecated / panels.js.coffee
1 $ ->\r
2   #filer = new Filer('tt', ['ea','eb','ec'])\r
3   #view = new FilerView( { filer: filer } )\r
4   confirm_confirm_confirm = () ->\r
5     confirm(  )\r
6   editor = window.PettanrEditor\r
7   WritingFormat = window.PettanrWritingFormat\r
8   WritingFormat.load($('#writing_formats'))\r
9   SpeechBalloonTemplate = window.PettanrSpeechBalloonTemplate\r
10   SpeechBalloonTemplate.load($('#speech_balloon_templates'))\r
11   for n, v of SpeechBalloonTemplate.scripts\r
12     v.onLoad()\r
13     v.add_helper( n, '' )\r
14   PictureSizeHelper = window.PettanrPictureSizeHelper\r
15   ColorHelper = window.PettanrColorHelper\r
16   PopupHelper = window.PettanrPopupHelper\r
17   \r
18   #panel = new Panel\r
19   #pp = new PanelPicture\r
20   #pp.set_panel(panel)\r
21   #confirm( PanelPicture.test()  )\r
22   #confirm( pp.test() )\r
23   find_configurations = ( hash, key) ->\r
24     if typeof(hash[key]) == 'string'\r
25       find_configurations(hash, hash[key])\r
26     else\r
27       return hash[key]\r
28   \r
29   set_validates = (form) ->\r
30     rules = {}\r
31     $('input', form).map ->\r
32       model_name = $(@).attr('data-model')\r
33       column_name = $(@).attr('column')\r
34       name = $(@).attr('name')\r
35       if model_name and column_name\r
36         model = find_configurations(configurations['models'], model_name)\r
37         rule = model['attributes'][column_name]['rules']\r
38         trace = editor.element_tag_id($(@)) \r
39         if rule\r
40           rules[name] = rule\r
41           $(@).focusout ->\r
42             if editor.is_panel(form)\r
43               validate_panel(form)\r
44             else\r
45               validate_element(form)\r
46     if Object.keys(rules).length > 0\r
47       v = form.validate({ignore:[],rules: rules})\r
48   \r
49   display_panel = (panel, vis) ->\r
50     v = if vis\r
51       ''\r
52     else\r
53       'none'\r
54     trace = editor.panel_tag_id(panel)\r
55     $(trace).css('display', v)\r
56   \r
57   validate_panel = (form) ->\r
58     valid = form.valid()\r
59     bc = if valid\r
60       ''\r
61     else\r
62       '#ef29ef'\r
63     $('a', $('#tabs-1-tab')).map ->\r
64       $(@).css('background-color', bc)\r
65     display_panel(form, valid)\r
66     valid\r
67   \r
68   display_element = (element, vis) ->\r
69     trace = editor.element_tag_id(element)\r
70     d = $(trace + '_destroy').val()\r
71     v = if vis and d.length < 1\r
72       ''\r
73     else\r
74       'none'\r
75     switch element.attr('element_type')\r
76       when 'panel_picture'\r
77         trace = trace + 'div'\r
78     $(trace).css('display', v)\r
79   \r
80   validate_element = (form) ->\r
81     valid = form.valid()\r
82     bc = if valid\r
83       ''\r
84     else\r
85       '#ef29ef'\r
86     display_element(form, valid)\r
87     trace = editor.element_tag_id(form) \r
88     $('.elements-tab', $(trace + 'element_tab')).map  ->\r
89       $(@).css('background-color', bc)\r
90     valid\r
91   \r
92   validate_forms = () ->\r
93     valid = true\r
94     $('form', $('#tabs-1')).map  ->\r
95       form_name = $(@).attr('data-form-name')\r
96       if form_name\r
97         if validate_panel($(@))\r
98         else\r
99           valid = false\r
100     invalid_elements = []\r
101     $('form', $('#tabs-2')).map  ->\r
102       form_name = $(@).attr('data-form-name')\r
103       if form_name\r
104         if validate_element($(@))\r
105         else\r
106           valid = false\r
107           invalid_elements.push form_name\r
108     if invalid_elements.length > 0\r
109       bc = '#ef29ef'\r
110     else\r
111       bc = ''\r
112     $('a', $('#tabs-2-tab')).map ->\r
113       $(@).css('background-color', bc)\r
114     return valid\r
115   $('form').map  ->\r
116     form_name = $(@).attr('data-form-name')\r
117     if form_name\r
118       form = $(this)\r
119       set_validates(form)\r
120   $('.panel-editor').map ->\r
121     if $(@).attr('current') and parseInt($(@).attr('current')) > 0\r
122       editor.pettanr_current_panel_id = parseInt($(@).attr('panel_id'))\r
123   if editor.is_editting()\r
124     $('#tabs').tabs()\r
125     $('#elements-tabs').tabs()\r
126     $('#new-element-tabs').tabs()\r
127     $('#new-speech_balloon-tabs').tabs()\r
128     $('#elements-tabs').addClass( "ui-tabs-vertical ui-helper-clearfix" )\r
129     $("#elements-tabs li").removeClass("ui-corner-top")\r
130     $("#elements-tabs li").addClass("ui-corner-left")\r
131     $("#elements-tabs li").map ->\r
132       $(@).mouseover -> \r
133         switch $(@).attr('element_type')\r
134           when 'speech_balloon'\r
135             trace = editor.element_tag_id($(@)) \r
136             t = $('img', $(trace))\r
137           when 'panel_picture'\r
138             trace = editor.element_tag_id($(@)) + 'img'\r
139             t = $(trace)\r
140           else\r
141             t = null\r
142         if t\r
143           $('.ui-resizable-handle', t.parent()).map ->\r
144             $(@).css('display', 'block')\r
145       $(@).mouseout -> \r
146         switch $(@).attr('element_type')\r
147           when 'speech_balloon'\r
148             trace = editor.element_tag_id($(@)) \r
149             t = $('img', $(trace))\r
150           when 'panel_picture'\r
151             trace = editor.element_tag_id($(@)) + 'img'\r
152             t = $(trace)\r
153           else\r
154             t = null\r
155         if t\r
156           $('.ui-resizable-handle', t.parent()).map ->\r
157             $(@).css('display', 'none')\r
158     \r
159     #destroy button\r
160     $('.ui-icon-destroy').map ->\r
161       $(@).button {\r
162         icons: {\r
163           primary: 'ui-icon-close', \r
164           secondary: null\r
165         }, \r
166         text: false\r
167       }\r
168       $(@).click -> \r
169         if confirm('destroy ?')\r
170           trace = editor.element_tag_id($(@))\r
171           $(trace + '_destroy').val('true')\r
172           panel_trace = editor.panel_tag_id($(@))\r
173           update_t(panel_trace + 'tsort')\r
174           update_z(panel_trace + 'zsort')\r
175           # sync\r
176           $(trace + 'element_tab').css('display', 'none')\r
177           $(trace + 'tab_panel').css('display', 'none')\r
178           $(trace + 'zsort').css('display', 'none')\r
179           $(trace + 'tsort').css('display', 'none')\r
180           display_element($(@), false)\r
181     \r
182     $('#pettanr-panel-submit').focusin ->\r
183       editor.refresh_attribute($('#pettanr-panel-json'))\r
184     \r
185     # panel\r
186     $('.pettanr-comic-panel').map ->\r
187       if editor.is_editable($(@))\r
188         $(@).resizable {\r
189           stop: ( event, ui ) ->\r
190             trace = editor.panel_tag_id($(@))\r
191             w = parseInt($(@).width())\r
192             h = parseInt($(@).height())\r
193             $(trace + 'width').val(w)\r
194             $(trace + 'height').val(h)\r
195             $('.pettanr-comic-ground-picture').map ->\r
196               $(@).width(w)\r
197               $(@).height(h)\r
198             $('.pettanr-comic-ground-color').map ->\r
199               $(@).width(w)\r
200               $(@).height(h)\r
201           , autoHide: true\r
202         }\r
203     \r
204     # sync view \r
205     $('input').map  ->\r
206       if $(@).attr('element_type')\r
207       else\r
208         if $(@).attr('panel_id')\r
209           $(@).focusout ->\r
210             switch $(@).attr('column')\r
211               when 'width'\r
212                 trace = editor.panel_tag_id($(@))\r
213                 $(trace).width(parseInt( $(@).val()))\r
214               when 'height'\r
215                 trace = editor.panel_tag_id($(@))\r
216                 $(trace).height(parseInt( $(@).val()))\r
217               when 'border'\r
218                 trace = editor.panel_tag_id($(@))\r
219                 $(trace).css('border-width', parseInt($(@).val()).toString() + 'px')\r
220     \r
221     # panel picture\r
222     PictureSizeHelper.add_helper()\r
223     PopupHelper.add_helper()\r
224     \r
225     $('.pettanr-panel-picture-wrapper').map ->\r
226       $(@).draggable {\r
227         stop: ( event, ui ) ->\r
228           trace = editor.element_tag_id($(@))\r
229           img = $(trace + 'img')\r
230           left = img.parent().position().left + $(@).position().left\r
231           top = img.parent().position().top + $(@).position().top\r
232           $(trace + 'x').val(parseInt(left))\r
233           $(trace + 'y').val(parseInt(top))\r
234       }\r
235     \r
236     $('.panel-picture').map ->\r
237       $(@).resizable {\r
238         stop: ( event, ui ) ->\r
239           resize_div = $(@)\r
240           panel_picture_div = resize_div.parent()\r
241           trace = editor.element_tag_id(panel_picture_div)\r
242           \r
243           resize_div.css('top', '0px')\r
244           resize_div.css('left', '0px')\r
245           if ui.originalPosition.top != ui.position.top\r
246             t = panel_picture_div.position().top + ui.position.top\r
247             $(trace + 'y').val(Math.floor(t))\r
248             panel_picture_div.css('top', t.toString() + 'px')\r
249           if ui.originalPosition.left != ui.position.left\r
250             l = panel_picture_div.position().left + ui.position.left\r
251             $(trace + 'x').val(Math.floor(l))\r
252             panel_picture_div.css('left', l.toString() + 'px')\r
253           w = if $(trace + 'width').val() < 0\r
254             -ui.size.width\r
255           else\r
256             ui.size.width\r
257           h = if $(trace + 'height').val() < 0\r
258             -ui.size.height\r
259           else\r
260             ui.size.height\r
261           $(trace + 'width').val(w)\r
262           $(trace + 'height').val(h)\r
263         resize: ( event, ui ) ->\r
264           resize_div = $(@)\r
265           panel_picture_div = resize_div.parent()\r
266           trace = editor.element_tag_id(panel_picture_div)\r
267         handles: 'all',\r
268         autoHide: true\r
269       }\r
270     \r
271     # sync view \r
272     $('input').map  ->\r
273       if editor.element_is('panel_picture', $(@))\r
274         $(@).focusout ->\r
275           switch $(@).attr('column')\r
276             when 'x'\r
277               trace = editor.element_tag_id($(@)) + 'div'\r
278               v = parseInt($(@).val()).toString() + 'px'\r
279               $(trace).css('left', v)\r
280             when 'y'\r
281               trace = editor.element_tag_id($(@)) + 'div'\r
282               v = parseInt($(@).val()).toString() + 'px'\r
283               $(trace).css('top', v)\r
284             when 'width'\r
285               trace = editor.element_tag_id($(@)) + 'img'\r
286               w = parseInt($(@).val())\r
287               $(trace).width(Math.abs(w))\r
288               $(trace).parent().width(Math.abs(w))\r
289               h = parseInt($(editor.element_tag_id($(@)) + 'height').val())\r
290             when 'height'\r
291               trace = editor.element_tag_id($(@)) + 'img'\r
292               h = parseInt($(@).val())\r
293               $(trace).height(Math.abs(h))\r
294               $(trace).parent().height(Math.abs(h))\r
295               w = parseInt($(editor.element_tag_id($(@)) + 'width').val())\r
296             else\r
297           PictureSizeHelper.refresh_picture($(trace), w, h)\r
298       else\r
299     \r
300     # speech_balloons\r
301     ColorHelper.add_helper($('.speech-fore_color-wrap'), 'fore_color')\r
302     \r
303     $('.pettanr-comic-balloon' ).map ->\r
304       $(@).draggable {\r
305         stop: ( event, ui ) ->\r
306           balloon = $('.pettanr-balloon', $(@))\r
307           trace = editor.element_part_tag_id(balloon)\r
308           left = $(@).position().left\r
309           top = $(@).position().top\r
310           $(trace + 'x').val(parseInt(left))\r
311           $(trace + 'y').val(parseInt(top))\r
312       }\r
313     \r
314     $('.pettanr-balloon' ).map ->\r
315       $(@).resizable {\r
316         stop: ( event, ui ) ->\r
317           resize_div = $(@)\r
318           speech_balloon_div = resize_div.parent()\r
319           balloon = $('.pettanr-balloon', $(@))\r
320           trace = editor.element_tag_id(speech_balloon_div)\r
321           trace_balloon = editor.element_part_tag_id(balloon)\r
322           \r
323           resize_div.css('top', '0px')\r
324           resize_div.css('left', '0px')\r
325           w = ui.size.width\r
326           h = ui.size.height\r
327           if ui.originalPosition.top != ui.position.top\r
328             t = speech_balloon_div.position().top + ui.position.top\r
329             $(trace_balloon + 'y').val(Math.floor(t))\r
330             speech_balloon_div.css('top', t.toString() + 'px')\r
331             speech_balloon_div.css('height', h + 'px')\r
332           if ui.originalPosition.left != ui.position.left\r
333             l = speech_balloon_div.position().left + ui.position.left\r
334             $(trace_balloon + 'x').val(Math.floor(l))\r
335             speech_balloon_div.css('left', l.toString() + 'px')\r
336             speech_balloon_div.css('width', w + 'px')\r
337           $(trace_balloon + 'width').val(w)\r
338           $(trace_balloon + 'height').val(h)\r
339           speech_balloon_div.css('width', w.toString() + 'px')\r
340           speech_balloon_div.css('height', h.toString() + 'px')\r
341        resize: ( event, ui ) ->\r
342           resize_div = $(@)\r
343           speech_balloon_div = resize_div.parent()\r
344           balloon = $('.pettanr-balloon', $(@))\r
345           trace = editor.element_tag_id(speech_balloon_div)\r
346           trace_balloon = editor.element_part_tag_id(balloon)\r
347         handles: 'all',\r
348         autoHide: true\r
349       }\r
350     \r
351     $('.pettanr-comic-speech-inner' ).map ->\r
352       $(@).mouseover -> \r
353         outer = $(@).parent()\r
354         sb = outer.parent()\r
355         trace = editor.element_tag_id(sb)\r
356         img = $('.pettanr-balloon', $(trace))\r
357         $('.ui-resizable-handle', img.parent()).map ->\r
358           $(@).css('display', 'block')\r
359       $(@).mouseout -> \r
360         outer = $(@).parent()\r
361         sb = outer.parent()\r
362         trace = editor.element_tag_id(sb)\r
363         img = $('.pettanr-balloon', $(trace))\r
364         $('.ui-resizable-handle', img.parent()).map ->\r
365           $(@).css('display', 'none')\r
366           \r
367     \r
368     # sync view \r
369     $('input').map  ->\r
370       if editor.element_is('speech_balloon', $(@))\r
371         $(@).focusout ->\r
372           switch $(@).attr('column')\r
373             when 'x'\r
374               trace = editor.element_tag_id($(@))\r
375               v = parseInt($(@).val()).toString() + 'px'\r
376               $(trace).css('left', v)\r
377             when 'y'\r
378               trace = editor.element_tag_id($(@))\r
379               v = parseInt($(@).val()).toString() + 'px'\r
380               $(trace).css('top', v)\r
381             when 'width'\r
382               trace = editor.element_tag_id($(@))\r
383               v = parseInt($(@).val())\r
384               $(trace).width(Math.abs(v))\r
385               img = $('.pettanr-balloon', $(trace))\r
386               img.parent().width(v)\r
387               img.width(v)\r
388             when 'height'\r
389               trace = editor.element_tag_id($(@))\r
390               v = parseInt($(@).val())\r
391               $(trace).height(Math.abs(v))\r
392               img = $('.pettanr-balloon', $(trace))\r
393               img.parent().height(v)\r
394               img.height(v)\r
395             else\r
396       else\r
397     $('textarea').map  ->\r
398       if editor.element_is('speech_balloon', $(@))\r
399         $(@).focusout ->\r
400           switch $(@).attr('column')\r
401             when 'content'\r
402               trace = editor.element_part_tag_id($(@))\r
403               wf_sel = $(trace + 'writing_format_id')\r
404               wf_id = parseInt(wf_sel.val())\r
405               v = WritingFormat.render(wf_id, $(@).val())\r
406               $(trace).html(v)\r
407     $('textarea').map  ->\r
408       if editor.element_is('speech_balloon', $(@))\r
409         switch $(@).attr('column')\r
410           when 'content'\r
411             $(@).bind('textchange', (event, previousText) ->\r
412               trace = editor.element_part_tag_id($(@))\r
413               wf_sel = $(trace + 'writing_format_id')\r
414               wf_id = parseInt(wf_sel.val())\r
415               v = WritingFormat.render(wf_id, $(@).val())\r
416               $(trace).html(v)\r
417             )\r
418     $('select').map  ->\r
419       if editor.element_is('speech_balloon', $(@))\r
420         $(@).change ->\r
421           switch $(@).attr('column')\r
422             when 'font_size'\r
423               trace = editor.element_part_tag_id($(@))\r
424               $(trace).css('font-size', $(@).val() + 'em')\r
425             when 'text_align'\r
426               trace = editor.element_part_tag_id($(@))\r
427               v = parseInt($(@).val())\r
428               $(trace).css('text-align', editor.text_align_texts[v])\r
429       else\r
430     $('input').map  ->\r
431       if editor.element_is('speech_balloon', $(@))\r
432         if $(@).attr('column') == 'fore_color'\r
433           $(@).hide()\r
434 \r
435     \r
436     # ground-picture\r
437     refresh_ground_picture = (element_trace)  ->\r
438       x = parseInt($(element_trace + 'x').val()).toString() + 'px'\r
439       y = parseInt($(element_trace + 'y').val()).toString() + 'px'\r
440       $(element_trace).css('background-position', x + ' ' + y)\r
441     \r
442     # sync view \r
443     $('input').map  ->\r
444       if editor.element_is('ground_picture', $(@))\r
445         switch $(@).attr('column')\r
446           when 'x', 'y'\r
447             $(@).focusout ->\r
448               trace = editor.element_tag_id($(@))\r
449               refresh_ground_picture(trace)\r
450             $(@).spinner {\r
451               stop: ( event, ui ) ->\r
452                 trace = editor.element_tag_id($(@))\r
453                 refresh_ground_picture(trace)\r
454             }\r
455     $('select').map  ->\r
456       if editor.element_is('ground_picture', $(@))\r
457         $(@).change ->\r
458           switch $(@).attr('column')\r
459             when 'repeat'\r
460               trace = editor.element_tag_id($(@))\r
461               v = parseInt($(@).val())\r
462               $(trace).css('background-repeat', editor.repeat_texts[v])\r
463       else\r
464     \r
465     \r
466     # ground_color\r
467     ColorHelper.add_helper($('.ground_color-code-wrap'), 'code')\r
468     \r
469     refresh_ground_color = (element_trace)  ->\r
470       orientation = parseInt( $(element_trace + 'orientation').val() )\r
471       xy = $(element_trace + 'xy').val()\r
472       wh = $(element_trace + 'wh').val()\r
473       div_offset = if xy\r
474         xy\r
475       else\r
476         0\r
477       div_size = if wh\r
478         wh\r
479       else\r
480         100 - div_offset\r
481       div_x = if orientation == 0\r
482         0\r
483       else\r
484         div_offset\r
485       div_y = if orientation == 0\r
486         div_offset\r
487       else\r
488         0\r
489       div_width = if orientation == 0\r
490         100\r
491       else\r
492         div_size\r
493       div_height = if orientation == 0\r
494         div_size\r
495       else\r
496         100\r
497       div = $(element_trace)\r
498       div.css('left', div_x.toString() + '%')\r
499       div.css('top', div_y.toString() + '%')\r
500       div.css('width', div_width.toString() + '%')\r
501       div.css('height', div_height.toString() + '%')\r
502     \r
503     # sync view \r
504     $('input').map  ->\r
505       if editor.element_is('ground_color', $(@))\r
506         switch $(@).attr('column')\r
507           when 'code'\r
508             $(@).hide()\r
509           when 'xy', 'wh'\r
510             $(@).spinner {\r
511               stop: ( event, ui ) ->\r
512                 trace = editor.element_tag_id($(@))\r
513                 refresh_ground_color(trace)\r
514               , min: 0\r
515               , max: 100\r
516             }\r
517             $(@).focusout ->\r
518               trace = editor.element_tag_id($(@))\r
519               refresh_ground_color(trace)\r
520     \r
521     $('select').map  ->\r
522       if editor.element_is('ground_color', $(@))\r
523         switch $(@).attr('column')\r
524           when 'orientation'\r
525             $(@).change ->\r
526               trace = editor.element_tag_id($(@))\r
527               refresh_ground_color(trace)\r
528 \r
529     update_t = (ultrace) -> \r
530       t = 0\r
531       $(ultrace + ' li').map ->\r
532         trace = editor.element_tag_id($(@))\r
533         if $(trace + '_destroy').val().length < 1\r
534           $(trace + 't').val(t)\r
535           t++\r
536         else\r
537     \r
538     $('.tsort').map -> \r
539       $(@).sortable {\r
540         update: ( event, ui ) ->\r
541           trace = editor.panel_tag_id($(@))\r
542           update_t(trace + 'tsort')\r
543       }\r
544     $('.t-sort li').map -> \r
545       $(@).disableSelection()\r
546     \r
547     update_z = (ultrace) -> \r
548       z = 1\r
549       $(ultrace + ' li').map ->\r
550         trace = editor.element_tag_id($(@))\r
551         # update panel\r
552         if $(trace + '_destroy').val().length < 1\r
553           $(trace + 'z').val(z)\r
554           switch $(@).attr('element_type')\r
555             when 'panel_picture'\r
556               trace = trace + 'div'\r
557           $(trace).css('zIndex', z)\r
558           z++\r
559         else\r
560     \r
561     $('.zsort').map -> \r
562       $(@).sortable {\r
563         update: ( event, ui ) ->\r
564           trace = editor.panel_tag_id($(@))\r
565           update_z(trace + 'zsort')\r
566       }\r
567     $('.z-sort li').map -> \r
568       $(@).disableSelection()\r
569     \r
570     # all\r
571     # disable form actions\r
572     # hide submit buttons\r
573     $('.edit_panel_picture' ).map ->\r
574       $(@).submit ->\r
575         false\r
576     $('.edit_speech_balloon' ).map ->\r
577       $(@).submit ->\r
578         false\r
579     $('.edit_ground_picture' ).map ->\r
580       $(@).submit ->\r
581         false\r
582     $('.edit_ground_color' ).map ->\r
583       $(@).submit ->\r
584         false\r
585     \r
586     $('.edit_panel' ).map ->\r
587       if $(@).attr('jqform')\r
588         $(@).submit ->\r
589           if validate_forms()\r
590             true\r
591           else\r
592             false\r
593       else\r
594         $(@).submit ->\r
595           false\r
596     \r
597     $('.submit' ).map ->\r
598       $(@).hide()\r
599     \r
600     # disable form z t\r
601     $('input').map  ->\r
602       if editor.is_element($(@))\r
603         switch $(@).attr('column')\r
604           when 'z' , 't'\r
605             $(@).hide()\r
606             $(@).parent().hide() #label\r
607     \r
608     # add button on new form\r
609     $('.submit-new-form').map ->\r
610       $(@).html('<button class="new-element">add</button>')\r
611     \r
612     $('.new-element').map ->\r
613       $(@).click -> \r
614         false\r
615 \r