OSDN Git Service

fix anything
[pettanr/pettanr.git] / app / assets / javascripts / panels.js.coffee
index 4099805..698bff6 100644 (file)
@@ -1,8 +1,31 @@
 $ ->\r
+  _.templateSettings = {\r
+    interpolate: /\<\&\=(.+?)\&\>/g,\r
+    evaluate: /\<\&(.+?)\&\>/g\r
+  }\r
+  #filer = new Filer('tt', ['ea','eb','ec'])\r
+  #view = new FilerView( { filer: filer } )\r
   confirm_confirm_confirm = () ->\r
     confirm(  )\r
   editor = window.PettanrEditor\r
-  configurations =  window.configurations\r
+  manifest =  {\r
+    items: window.items,\r
+    controllers: window.controllers,\r
+    models: window.models,\r
+    system_resources: window.system_resources,\r
+    magic_numbers: window.magic_numbers,\r
+  }\r
+  local_manifest =  {\r
+    list_groups: window.list_groups,\r
+    profilers: window.profilers,\r
+    filers: window.filers,\r
+    forms: window.forms,\r
+    buckets: window.buckets,\r
+  }\r
+  j = JSON.stringify(manifest, undefined, 2)\r
+  $('#pettanr-manifest').val(j)\r
+  j = JSON.stringify(local_manifest, undefined, 2)\r
+  $('#pettanr-local_manifest').val(j)\r
   WritingFormat = window.PettanrWritingFormat\r
   WritingFormat.load($('#writing_formats'))\r
   SpeechBalloonTemplate = window.PettanrSpeechBalloonTemplate\r
@@ -12,7 +35,13 @@ $ ->
     v.add_helper( n, '' )\r
   PictureSizeHelper = window.PettanrPictureSizeHelper\r
   ColorHelper = window.PettanrColorHelper\r
+  PopupHelper = window.PettanrPopupHelper\r
   \r
+  #panel = new Panel\r
+  #pp = new PanelPicture\r
+  #pp.set_panel(panel)\r
+  #confirm( PanelPicture.test()  )\r
+  #confirm( pp.test() )\r
   find_configurations = ( hash, key) ->\r
     if typeof(hash[key]) == 'string'\r
       find_configurations(hash, hash[key])\r
@@ -31,34 +60,73 @@ $ ->
         trace = editor.element_tag_id($(@)) \r
         if rule\r
           rules[name] = rule\r
+          $(@).focusout ->\r
+            if editor.is_panel(form)\r
+              validate_panel(form)\r
+            else\r
+              validate_element(form)\r
     if Object.keys(rules).length > 0\r
       v = form.validate({ignore:[],rules: rules})\r
-\r
+  \r
+  display_panel = (panel, vis) ->\r
+    v = if vis\r
+      ''\r
+    else\r
+      'none'\r
+    trace = editor.panel_tag_id(panel)\r
+    $(trace).css('display', v)\r
+  \r
+  validate_panel = (form) ->\r
+    valid = form.valid()\r
+    bc = if valid\r
+      ''\r
+    else\r
+      '#ef29ef'\r
+    $('a', $('#tabs-1-tab')).map ->\r
+      $(@).css('background-color', bc)\r
+    display_panel(form, valid)\r
+    valid\r
+  \r
+  display_element = (element, vis) ->\r
+    trace = editor.element_tag_id(element)\r
+    d = $(trace + '_destroy').val()\r
+    v = if vis and d.length < 1\r
+      ''\r
+    else\r
+      'none'\r
+    switch element.attr('element_type')\r
+      when 'panel_picture'\r
+        trace = trace + 'div'\r
+    $(trace).css('display', v)\r
+  \r
+  validate_element = (form) ->\r
+    valid = form.valid()\r
+    bc = if valid\r
+      ''\r
+    else\r
+      '#ef29ef'\r
+    display_element(form, valid)\r
+    trace = editor.element_tag_id(form) \r
+    $('.elements-tab', $(trace + 'element_tab')).map  ->\r
+      $(@).css('background-color', bc)\r
+    valid\r
+  \r
   validate_forms = () ->\r
     valid = true\r
     $('form', $('#tabs-1')).map  ->\r
       form_name = $(@).attr('data-form-name')\r
       if form_name\r
-        if $(@).valid()\r
-          bc = ''\r
+        if validate_panel($(@))\r
         else\r
           valid = false\r
-          bc = '#ef29ef'\r
-        $('a', $('#tabs-1-tab')).map ->\r
-          $(@).css('background-color', bc)\r
     invalid_elements = []\r
     $('form', $('#tabs-2')).map  ->\r
       form_name = $(@).attr('data-form-name')\r
       if form_name\r
-        if $(@).valid()\r
-          bc = ''\r
+        if validate_element($(@))\r
         else\r
           valid = false\r
-          bc = '#ef29ef'\r
           invalid_elements.push form_name\r
-        trace = editor.element_tag_id($(@)) \r
-        $('.elements-tab', $(trace + 'element_tab')).map  ->\r
-          $(@).css('background-color', bc)\r
     if invalid_elements.length > 0\r
       bc = '#ef29ef'\r
     else\r
@@ -131,11 +199,7 @@ $ ->
           $(trace + 'tab_panel').css('display', 'none')\r
           $(trace + 'zsort').css('display', 'none')\r
           $(trace + 'tsort').css('display', 'none')\r
-          switch $(@).attr('element_type')\r
-            when 'panel_picture'\r
-              trace = trace + 'div'\r
-          $(trace).css('display', 'none')\r
-          \r
+          display_element($(@), false)\r
     \r
     $('#pettanr-panel-submit').focusin ->\r
       editor.refresh_attribute($('#pettanr-panel-json'))\r
@@ -178,6 +242,7 @@ $ ->
     \r
     # panel picture\r
     PictureSizeHelper.add_helper()\r
+    PopupHelper.add_helper()\r
     \r
     $('.pettanr-panel-picture-wrapper').map ->\r
       $(@).draggable {\r
@@ -391,16 +456,24 @@ $ ->
 \r
     \r
     # ground-picture\r
+    refresh_ground_picture = (element_trace)  ->\r
+      x = parseInt($(element_trace + 'x').val()).toString() + 'px'\r
+      y = parseInt($(element_trace + 'y').val()).toString() + 'px'\r
+      $(element_trace).css('background-position', x + ' ' + y)\r
+    \r
     # sync view \r
     $('input').map  ->\r
       if editor.element_is('ground_picture', $(@))\r
-        $(@).focusout ->\r
-          switch $(@).attr('column')\r
-            when 'x', 'y'\r
+        switch $(@).attr('column')\r
+          when 'x', 'y'\r
+            $(@).focusout ->\r
               trace = editor.element_tag_id($(@))\r
-              x = parseInt($(trace + 'x').val()).toString() + 'px'\r
-              y = parseInt($(trace + 'y').val()).toString() + 'px'\r
-              $(trace).css('background-position', x + ' ' + y)\r
+              refresh_ground_picture(trace)\r
+            $(@).spinner {\r
+              stop: ( event, ui ) ->\r
+                trace = editor.element_tag_id($(@))\r
+                refresh_ground_picture(trace)\r
+            }\r
     $('select').map  ->\r
       if editor.element_is('ground_picture', $(@))\r
         $(@).change ->\r
@@ -415,11 +488,65 @@ $ ->
     # ground_color\r
     ColorHelper.add_helper($('.ground_color-code-wrap'), 'code')\r
     \r
+    refresh_ground_color = (element_trace)  ->\r
+      orientation = parseInt( $(element_trace + 'orientation').val() )\r
+      xy = $(element_trace + 'xy').val()\r
+      wh = $(element_trace + 'wh').val()\r
+      div_offset = if xy\r
+        xy\r
+      else\r
+        0\r
+      div_size = if wh\r
+        wh\r
+      else\r
+        100 - div_offset\r
+      div_x = if orientation == 0\r
+        0\r
+      else\r
+        div_offset\r
+      div_y = if orientation == 0\r
+        div_offset\r
+      else\r
+        0\r
+      div_width = if orientation == 0\r
+        100\r
+      else\r
+        div_size\r
+      div_height = if orientation == 0\r
+        div_size\r
+      else\r
+        100\r
+      div = $(element_trace)\r
+      div.css('left', div_x.toString() + '%')\r
+      div.css('top', div_y.toString() + '%')\r
+      div.css('width', div_width.toString() + '%')\r
+      div.css('height', div_height.toString() + '%')\r
+    \r
     # sync view \r
     $('input').map  ->\r
       if editor.element_is('ground_color', $(@))\r
-        if $(@).attr('column') == 'code'\r
-          $(@).hide()\r
+        switch $(@).attr('column')\r
+          when 'code'\r
+            $(@).hide()\r
+          when 'xy', 'wh'\r
+            $(@).spinner {\r
+              stop: ( event, ui ) ->\r
+                trace = editor.element_tag_id($(@))\r
+                refresh_ground_color(trace)\r
+              , min: 0\r
+              , max: 100\r
+            }\r
+            $(@).focusout ->\r
+              trace = editor.element_tag_id($(@))\r
+              refresh_ground_color(trace)\r
+    \r
+    $('select').map  ->\r
+      if editor.element_is('ground_color', $(@))\r
+        switch $(@).attr('column')\r
+          when 'orientation'\r
+            $(@).change ->\r
+              trace = editor.element_tag_id($(@))\r
+              refresh_ground_color(trace)\r
 \r
     update_t = (ultrace) -> \r
       t = 0\r
@@ -507,6 +634,4 @@ $ ->
     $('.new-element').map ->\r
       $(@).click -> \r
         false\r
-    j = JSON.stringify(window.configurations)\r
-    $('#pettanr-configurations').val(j)\r
 \r