/* * Created by PyramIDE. * User: Totoro * Date: 30/11/2011 * Time: 21:22 * */ read calexium_lib/database/vtm/view_table_types.anubis read calexium_lib/database/vtm/view_table_manager_types.anubis read calexium_lib/database/vtm/view_table_manager.anubis read hayamiki_lib/types/hayamiki.anubis read system/string.anubis read locale/L3.anubis read tools/basis.anubis read system_colors/rgb.anubis read system/convert.anubis //read utils.anubis read locale/L3LanguageInfo.anubis read calexium_lib/web/CXM_common.anubis read calexium_lib/web/CXM_web_arg_utils.anubis read calexium_lib/web/CXM_making_a_web_site.anubis read calexium_lib/web/CXM_multihost_http_server.anubis read calexium_lib/web/jQuery/CXM_jquery_datatable.anubis read calexium_lib/web/jQuery/CXM_jquery_datatable_types.anubis read calexium_lib/web/jQuery/CXM_jquery_dialog.anubis read calexium_lib/web/jQuery/CXM_jquery_button.anubis read calexium_lib/web/jQuery/ui-addon/datetimepicker.anubis read calexium_lib/web/CXM_form.anubis read calexium_lib/web/widgets/css_helper.anubis read calexium_lib/web/widgets/button.anubis define CXM_Form_Field help_line ( HK_Help_Text help, (String) -> String _T )= if help is { no_help_text then empty, help_text_TAG(tag) then explain(_T(tag)), help_text(str) then explain(str) }. //Edit table part public define List(CXM_Form_Field) edit_form_lines ( SQLite3DataBase db, (String) -> String _T, List(VT_edit_entry) list, List(CXM_Form_Field) so_far )= if list is { [] then reverse(so_far), [ h . t] then with line = if h is { hidden(name, value) then //print("hidden "+name+" = "+value); [hidden(html_Id(""), wan(name), wav(value))], primary_key(idx) then [hidden(html_Id(""), wan("id"), wav(idx))], information(s_name, c_name, value, width, help) then [input_readonly(label(_T(s_name), no_help), wan(c_name), init(value), if width > 0 then custom(width) else narrow), help_line(help, _T)], text(s_name, c_name, value, help) then [input(label(_T(s_name), no_help), wan(c_name), init(value), narrow, mandatory), help_line(help, _T)], foreign_text(s_name, c_name, value, select, help) then [selector_c([],label(_T(s_name), no_help), html_Id(""), wan(c_name), 1, select.get(db), success(init(to_String(value))), mandatory), help_line(help, _T)], choices_text(s_name, c_name, value, select, help) then [selector_c([],label(_T(s_name), no_help), html_Id(""), wan(c_name), 1, select.get(db), success(init(value)), mandatory), help_line(help, _T)], text_area(s_name, c_name, value, help) then [text_area([],label(_T(s_name), no_help), html_Id(""), wan(c_name), init(value), narrow, (Int)5, mandatory), help_line(help, _T)], boolean(s_name, c_name, value, help) then [checkboxr([],label(_T(s_name), no_help), html_Id(""), wan(c_name), wav(c_name),value, mandatory), help_line(help, _T)], integer(s_name, c_name, value, help) then [input(label(_T(s_name), no_help), wan(c_name), init(abs_to_decimal(value)), small, mandatory), help_line(help, _T)], date(s_name, c_name, value, help) then [input([class("datepicker")], label(_T(s_name), no_help), html_Id(c_name), wan(c_name), init(value), small, non_mandatory), help_line(help, _T)], time(s_name, c_name, value, help) then [input([class("timepicker")], label(_T(s_name), no_help), html_Id(c_name), wan(c_name), init(value), small, non_mandatory), help_line(help, _T)], datetime(s_name, c_name, value, help) then [input([class("datetimepicker")], label(_T(s_name), no_help), html_Id(c_name), wan(c_name), init(value), custom(18), mandatory), help_line(help, _T)], }, edit_form_lines(db, _T, t, reverse(line)+so_far) }. public define HTML_Partial_Content edit_table_page ( SQLite3DataBase db, (String) -> String _T, String lang, List(Web_arg) lwa, VT_edit vt_elist ) = with table_name = vt_elist.table_name, with button_name = if get_String(lwa, "id","none") = "none" then _T("CREATE") else _T("UPDATE"), partial_content(jq_datetimepicker_init(lang), cxm_form( table_name, lwa, edit_form_lines(db, _T, vt_elist.list, [])+ [ submit("create", failure, button_name, [("table_name", table_name)]) ] )). public define Maybe(HTML_Partial_Content) edit_table_content ( SQLite3DataBase db, (String) -> String _T, String lang, List(Web_arg) lwa, String table, VT_action action, VTM vtm ) = if vtm_get_edit(table, vtm.edit_list) is { failure then failure, success(vtm_e) then since vtm_e is vtm_edit(_, get_edit), success(edit_table_page(db, _T, lang, lwa, get_edit(db, action))) }. // View table part define HTML_Row(HTML_Off_Form) make_line ( String table_name, String action_name, //default is "edit_table", but can be surcharged for own use List(VT_view_entry) entries, List(HTML_Cell(HTML_Off_Form)) so_far )= if entries is { [] then row( [], reverse(so_far)), [h . t] then with cell = if h is { text(string) then cell((HTML_Off_Form)text(string)), // link(id, string) then cell((HTML_Off_Form)actioner(same,same, link(string), action_name, [("table_name", table_name),("id",id)])), link(id, string) then cell((HTML_Off_Form)literal(jq_dialog_open(string, dialog_id(action_name+"_dlg_ajax"), "'id="+id+"'"))), link_id_action(id, name, action) then cell((HTML_Off_Form)actioner(same,same, link(name), action, [("id",id)])), icon(icon_path) then cell((HTML_Off_Form)image([], icon_path, "")) }, make_line(table_name, action_name, t, [cell . so_far]) }. define List(HTML_Row(HTML_Off_Form)) make_lines ( (String) -> String _T, //translator String table_name, String action_name, List(VT_view_row) entries, List(HTML_Row(HTML_Off_Form)) so_far )= if entries is { [] then reverse(so_far), [h . t] then //compute each line //prepare here the first cell for actioner with actions_cell = (HTML_Cell(HTML_Off_Form)) cell([], sequence([ partial(img_button_confirm(icn16_cross, _T("CONFIRMATION_REQUEST"), _T("CONFIRM_LINE_DELETION") , _T("OK"), _T("CANCEL"), jQuery_actioner(same, jqlink, "hk_del_row" + format_extra_operands([("table_name", table_name),("id",to_String(h.db_id))])))), partial(img_button(icn16_edit, [event(onclick, jq_dialog_open(dialog_id(action_name+"_dlg_ajax"), "'id="+to_String(h.db_id)+"'"))], "", [])), ]) ), make_lines(_T, table_name, action_name, t, [make_line(table_name, action_name, h.list, [actions_cell]). so_far] ) }. // View table part define HTML_Header_Row(HTML_Off_Form) make_header ( (String) -> String _T, //translator List(VT_view_entry) entries, List(HTML_Header_Cell(HTML_Off_Form)) so_far )= if entries is { [] then header_row( [], reverse(so_far)), [h . t] then with cell = if h is { text(string) then header_cell((HTML_Off_Form)text(_T(string))), link(id, string) then header_cell((HTML_Off_Form)actioner(same,same, link(string),"edit_table",[])), //TODO link_id_action(id, text, action) then header_cell((HTML_Off_Form)actioner(same,same, link(text),action,[("id",id)])), //TODO icon(icon_path) then header_cell((HTML_Off_Form)image([], icon_path, "")) }, make_header(_T, t, [cell . so_far]) }. public define HTML_Partial_Content view_table_form ( (String) -> String _T, String action_name, VT_view rows )= with action_header_cell = header_cell((HTML_Off_Form)text(_T("ACTION"))), partial_content( div( [/*class("tableau")*/], sequence( [ partial(jquery_button(jQuery_button(button, "edit_table_"+rows.table_name, "", _T("NEW"), jQuery_actioner(same, jqlink, "edit_table&table_name="+rows.table_name)))), //dialog used by datatable entries partial(jq_dialog_create(dialog_id(action_name+"_dlg_ajax"), ajax("?a=ajax_edit_table&table_name="+rows.table_name))), table([core_attrs([id("table_view"), class("tableau display compact nowrap")])], make_header(_T, rows.header.list, [action_header_cell]), make_lines(_T, rows.table_name, action_name, rows.list, [])) ] ) )) . public define HTML_Partial_Content view_table_page ( (String) -> String _T, String lang, String web_site_directory, String action_name, VT_view rows ) = // if tb is tool_box(lang, _T, _, _, db, _) then // println("view_table_page - lang : "+lang); // println("view_table_page - web_site_directory : "+web_site_directory); partial_content(jq_dialog_init + jq_datetimepicker_init(lang), [partial(html_wave_box_wide(_T(to_upper(rows.table_name)), jquery_datatable("table_view", view_table_form(_T, action_name, rows), true, false, jq_dt_pt_full_numbers, false, scrollY(500), true, true, true, lang, no_extra, web_site_directory)))]). public define Maybe(HTML_Partial_Content) view_table_content ( SQLite3DataBase db, (String) -> String _T, String lang, String web_site_directory, String table, String view_name, String action_name, VTM vtm ) = if vtm_get_view(table, vtm.view_list) is { failure then failure, success(vtm_v) then since vtm_v is vtm_view(_, get_view), success(view_table_page(_T, lang, web_site_directory, action_name, get_view(db, view_name))) }.