jq_dialog.anubis 5.23 KB
/*
 * Created by PyramIDE.
 * User: フランスのトトロ & julien
 * Date: 09/11/2014
 * Time: 15:51
 * © David RENÉ
 */

read system/convert.anubis
read xlib/web/json.anubis
read xlib/web/js_tools.anubis
read xlib/web/making_a_web_site.anubis
transmit xlib/web/jquery.anubis

public type JQuery_dialog_id:
  dialog_id(String id).

public type JQuery_dialog:
  empty,
  p_content(HTML_Partial_Content content),
  off_form(HTML_Off_Form o_form),
  ajax(WEB_Action_Name url).
  
public define JQuery_dialog ajax(String url) = ajax(action_name(url)).

public type JQuery_dialog_size:
  auto,
  percent(Float w, Float h)
.

public define JQuery_dialog_size
  percent
  (
    Float all
  )=
  percent(all, all).
  
public define String
  jq_dialog_confirm
  (
    String  dlg_title,
    String  dlg_text,
    String  dlg_ok,
    String  dlg_cancel,
    String  ok_action
  )=
  "Xlib.confirm_dialog("+to_JS_String(dlg_title)+", "
                   +to_JS_String(dlg_text)+", "
                   +to_JS_String(dlg_ok)+", "
                   +to_JS_String(dlg_cancel)+", "
                   +to_JS_String(ok_action)+");"
.


public define HTML_Partial_Content
  jq_dialog_create
  (
    JQuery_dialog_id  dial_id,
    JQuery_dialog     content,
    Bool              autoOpen,
    JQuery_dialog_size size,
    String            extra_param
  )=
  with dlg_id = id(dial_id),
       js_str =
"if($(\"#"+dlg_id+"\").dialog(\"instance\")) {
     // Dialog exists, destroy it
     console.log('jq_dialog_create : #"+dlg_id+" dialog id already exists. Hence destroy it');
     $(\"#"+dlg_id+"\").dialog(\"destroy\");
   };
$( \"#"+dlg_id+"\" ).dialog({
   autoOpen: "+to_String(autoOpen)+",
   modal: true,
"+
  if size is
  {
    auto          then "height: 'auto', width:  'auto',",
    percent(w, h) then "width: $(window).width() * "+w+", height: $(window).height() * "+h+","
  }
   +extra_param+"
   Cancel: function() {
     $( this ).dialog( 'close' );
     }
   });
",
  js = js_inline(jquery_ready(js_str)),
  
  if content is
  {
    empty           then
      partial_content([js], div([id(dlg_id)], empty)),
    p_content(pc)   then
      if pc is partial_content(tags, html) then
        partial_content( [js . tags ], div([id(dlg_id)], html)),  //html code of the dialog
    off_form(html)  then
        partial_content( [js], div([id(dlg_id)], html)),          //html code of the dialog
    ajax(_url)      then
      with url = format_web_action_name(_url),
      //println("jq_dialog_create : \njs_str ->"+js_str+"\nurl ->"+url);
        partial_content( [js], div([id(dlg_id), attr("ajax_url",url)]))
  }.

public define HTML_Partial_Content
  jq_dialog_create
  (
    JQuery_dialog_id    dial_id,
    JQuery_dialog       content,
    JQuery_dialog_size  size,    
    String              extra_param
  )=
  jq_dialog_create(dial_id, content, false, size, extra_param).

public define HTML_Partial_Content
  jq_dialog_create
  (
    JQuery_dialog_id    dial_id,
    JQuery_dialog       content,
    JQuery_dialog_size  size
  )=
  jq_dialog_create(dial_id, content, false, size, "").
  
public define HTML_Partial_Content
  jq_dialog_create
  (
    JQuery_dialog_id  dial_id,
    JQuery_dialog     content,
    String            extra_param
  )=
  jq_dialog_create(dial_id, content, false, auto, extra_param).
  
public define HTML_Partial_Content
  jq_dialog_create
  (
    JQuery_dialog_id  dial_id,
    JQuery_dialog     content
  )=
  jq_dialog_create(dial_id, content, false, auto, "").

public define HTML_Partial_Content
  jq_dialog_create
  (
    JQuery_dialog_id  dial_id,
    JQuery_dialog     content,
    Bool              autoOpen
  )=
  jq_dialog_create(dial_id, content, autoOpen, auto, "").

public define String
  jq_dialog_load
  (
    JQuery_dialog_id      dialog_id,
    WEB_Action_Name       action,
    List((String,String)) extra_ops
  )=
  "Xlib.jq_dialog_load('"+id(dialog_id)+"',"+format_web_action_name_to_js(action, extra_ops)+");"
.


public define String
  jq_dialog_load
  (
    JQuery_dialog_id      dialog_id,
    WEB_Action_Name       action
  )=
  jq_dialog_load(dialog_id, action)
.
    
define String
  _jq_dialog_open
  (
    Maybe(String)    mb_html,
    JQuery_dialog_id dialog_id,
    String           params
  )= 
  with js_function = "Xlib.jquery_dialog_click('"+id(dialog_id)+"', "+(if length(params)=0 then "''" else params) +");",
  if mb_html is
  {
    failure        then  js_function,
    success(html)  then  "<a onclick=\""+js_function+"\">"+html+"</a>"
  }.

public define String
  jq_dialog_open
  (
    String            html,
    JQuery_dialog_id  dialog_id,
    String            params
  )= 
  _jq_dialog_open(success(html), dialog_id, params).

public define HTML_Partial_Content
  jq_dialog_open
  (
    String            html,
    JQuery_dialog_id  dialog_id,
    String            params
  )= 
  partial_content([],
    literal(_jq_dialog_open(success(html), dialog_id, params))).

public define String
  jq_dialog_open
  (
    JQuery_dialog_id  dialog_id,
    String            params
  )= 
  _jq_dialog_open(failure, dialog_id, params).


public define String
  jq_dialog_open
  (
    JQuery_dialog_id dialog_id
  )= 
  _jq_dialog_open(failure, dialog_id, "").
  
public define List(HTML_Head_Tag)
  jq_dialog_init
  =
  [
    js_inline(jquery_ready("

    "))
  ].