From 23bb1d768dc99cf190ce4da83e1f9b6cf1f40b63 Mon Sep 17 00:00:00 2001 From: totoro Date: Mon, 12 Jun 2017 02:12:34 +0200 Subject: [PATCH] add new way to load selector by ajax call remove writer_list and move the writer into hk_controller call_back collection --- view/view_table_manager.anubis | 46 +++++++++++++++++++++++----------------------- view/view_table_manager_types.anubis | 27 ++++++++++++++++----------- view/view_table_renderer.anubis | 43 ++++++++++++++++++++++++++++++++----------- view/web_action.anubis | 2 ++ 4 files changed, 73 insertions(+), 45 deletions(-) diff --git a/view/view_table_manager.anubis b/view/view_table_manager.anubis index b678d7e..3e42ac0 100644 --- a/view/view_table_manager.anubis +++ b/view/view_table_manager.anubis @@ -59,30 +59,30 @@ public define Maybe(VTM_edit) ) = _vtm_get_edit(table_name, vtm_vlist.list). -public define Maybe(TM_writer) - _tm_get_writer - ( - String table_name, - List(TM_writer) list - ) = - if list is - { - [] then failure, - [ h . t ] then - if h is tm_writer(tb_name, get_writer_from_type, get_writer_from_fields) then - if tb_name = table_name then - success(h) - else - _tm_get_writer(table_name, t) - }. +//public define Maybe(TM_writer) +// _tm_get_writer +// ( +// String table_name, +// List(TM_writer) list +// ) = +// if list is +// { +// [] then failure, +// [ h . t ] then +// if h is tm_writer(tb_name, get_writer_from_type, get_writer_from_fields) then +// if tb_name = table_name then +// success(h) +// else +// _tm_get_writer(table_name, t) +// }. -public define Maybe(TM_writer) - tm_get_writer - ( - String table_name, - TM_writer_list tm_wlist - ) = - _tm_get_writer(table_name, tm_wlist.list). +//public define Maybe(TM_writer) +// tm_get_writer +// ( +// String table_name, +// TM_writer_list tm_wlist +// ) = +// _tm_get_writer(table_name, tm_wlist.list). public define Maybe((SQLite3DataBase db, List(Int) l_int) -> Maybe(One)) _tm_get_delete diff --git a/view/view_table_manager_types.anubis b/view/view_table_manager_types.anubis index caae499..a5802aa 100644 --- a/view/view_table_manager_types.anubis +++ b/view/view_table_manager_types.anubis @@ -14,6 +14,7 @@ read hayamiki_lib/types/hayamiki.anubis read calexium_lib/web/CXM_common.anubis +read calexium_lib/web/CXM_making_a_web_site.anubis read calexium_lib/database/db_types.anubis public type VTM_edit: @@ -22,13 +23,13 @@ public type VTM_edit: public type VTM_edit_list: vtm_edit_list(List(VTM_edit) list). -public type TM_writer: - tm_writer( - String table_name, - (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(One) write_from_type, - (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(One) write_from_fields - ) -. +//public type TM_writer: +// tm_writer( +// String table_name, +// (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(One) write_from_type, +// (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(One) write_from_fields +// ) +//. //CRUD basis function + //Create @@ -48,12 +49,16 @@ public type HK_Table_controller: (SQLite3DataBase db, List(String) columns, HK_Referer referer, String clause, String order_by) -> JsonValue get_rows_json, //Update //Delete - (SQLite3DataBase db, List(Int) l_int) -> Maybe(One) delete + (SQLite3DataBase db, List(Int) l_int) -> Maybe(One) delete, + + //view interface + //selector + (SQLite3DataBase db, HK_Referer referer, String filter) -> List((List(CoreAttrs), WebArgValue, String)) get_selector ) . -public type TM_writer_list: - tm_writer_list(List(TM_writer) list). +//public type TM_writer_list: +// tm_writer_list(List(TM_writer) list). public type TM_delete: tm_delete(String table_name, (SQLite3DataBase db, List(Int) l_int) -> Maybe(One) delete). @@ -70,6 +75,6 @@ public type VTM_view_list: public type VTM: vtm(VTM_view_list view_list, VTM_edit_list edit_list, - TM_writer_list writer_list, + //TM_writer_list writer_list, TM_delete_list delete_list, List(HK_Table_controller) hk_controllers). diff --git a/view/view_table_renderer.anubis b/view/view_table_renderer.anubis index 7905833..4260bab 100644 --- a/view/view_table_renderer.anubis +++ b/view/view_table_renderer.anubis @@ -17,6 +17,7 @@ read hayamiki_lib/types/hayamiki.anubis read system/string.anubis read locale/L3.anubis read tools/basis.anubis +read tools/base64.anubis read tools/list.anubis read tools/printable_tree.anubis read data_base/sqlite.anubis @@ -630,17 +631,32 @@ public define List(CXM_Form_Field) ], foreign_text(s_name, c_name, value, foreign_table_name, select, help) then - with uid = generate_random_string(20)+"_", + with uid = "_"+generate_random_string(20)+"_", + with refresh_func = uid+foreign_table_name+"_"+c_name+"_selector_refresh", + with load_script = script("text/javascript","function "+refresh_func+"() { CalexiumToolBox.ajax_load_content('"+uid+foreign_table_name+"_"+c_name+"_selector', '?aws_controller=hk_c&aws_action=selector&table_name="+foreign_table_name+"&fk_filter="+fk_clause+"&selected="+value+"');} "+refresh_func+"(); "), + //with load_script_b64 = base64_encode(load_script, false), [ - partial(jq_dialog_create(dialog_id(uid+foreign_table_name+"_dlg_ajax"), ajax(controller_action("hk_c", "ajax_edit_table&dialog_id="+uid+foreign_table_name+"_dlg_ajax&sub_dialog=true&table_name="+foreign_table_name)))), + partial(jq_dialog_create(dialog_id(uid+foreign_table_name+"_dlg_ajax"), ajax(controller_action("hk_c", "ajax_edit_table&dialog_id="+uid+foreign_table_name+"_dlg_ajax&sub_dialog=true&table_name="+foreign_table_name+"&after_close_cb="+refresh_func)))), one_line_fields([ - selector_c([],label(_T(s_name), no_help), html_Id(""), wan(c_name), 1, select.get(db, table_referer, fk_clause), success(init(to_String(value))), mandatory), help_line(help, _T), + partial(partial_content([js_inline(load_script)],empty)), + selector_c([],label(_T(s_name), no_help), html_Id(uid+foreign_table_name+"_"+c_name+"_selector"), wan(c_name), 1, [],/*select.get(db, table_referer, fk_clause), */ success(init("")), mandatory), help_line(help, _T), partial(img_button(icn16_add, [event(onclick, jq_dialog_open(dialog_id(uid+foreign_table_name+"_dlg_ajax")))], "", [])), ]) ], + +// with uid = generate_random_string(20)+"_", +// with load_script = "CalexiumToolBox.ajax_load_content('"+uid+foreign_table_name+c_name+"_selector', '?aws_controller=hkc&aws_action=selector&table_name="+foreign_table_name+"&fk_filter="+fk_clause+"');", +// [ +// partial(jq_dialog_create(dialog_id(uid+foreign_table_name+"_dlg_ajax"), ajax(controller_action("hk_c", "ajax_edit_table&dialog_id="+uid+foreign_table_name+"_dlg_ajax&sub_dialog=true&table_name="+foreign_table_name)))), +// one_line_fields([ +// partial(partial_content([js_inline(jquery_ready(load_script))],empty)), +// selector_c([],label(_T(s_name), no_help), html_Id(uid+foreign_table_name+c_name+"_selector"), wan(c_name), 1, select.get(db, table_referer, fk_clause), success(init(to_String(value))), mandatory), help_line(help, _T), +// partial(img_button(icn16_add, [event(onclick, jq_dialog_open(dialog_id(uid+foreign_table_name+"_dlg_ajax")))], "", [])), +// ]) +// ], foreign_text_search(s_name, c_name, select, foreign_table_name, fields, help) then - with uid = generate_random_string(20)+"_", + with uid = "_"+generate_random_string(20)+"_", [ partial(jq_dialog_create(dialog_id(uid+foreign_table_name+"_dlg_ajax"), ajax(controller_action("hk_c", "ajax_edit_table&dialog_id="+uid+foreign_table_name+"_dlg_ajax&sub_dialog=true&table_name="+foreign_table_name)))), one_line_fields([ @@ -866,8 +882,9 @@ public define HTML_Partial_Content with id = get_String(lwa, "id","none"), with sub_dialog = get_String(lwa, "sub_dialog", "false"), with dialog_id = get_String(lwa, "dialog_id", ""), - with button_label = if create then _T("CREATE") else _T("UPDATE"), - with button_name = if create then "create" else "update", + with after_close_cb = get_String(lwa, "after_close_cb", ""), //call back + with button_label = if create then _T("CREATE") else _T("UPDATE"), + with button_name = if create then "create" else "update", with button_name_and_new = if create then _T("CREATE_AND_EDIT_NEW") else _T("UPDATE_AND_EDIT_NEW"), println("renderer_edit_list_form dialog_id ["+dialog_id+"]"); @@ -889,7 +906,7 @@ public define HTML_Partial_Content (if length(list_entries) > 19 then [ one_line_fields([ - partial(jquery_button(jQuery_button(button, dialog_id+button_name, button_name, button_label, jQuery_actioner(same, jqscript(jq_form_submit_and_close(dialog_id, table_name, hkc_update_row, [("table_name", table_name), ("sub_dialog", sub_dialog)])))))), + partial(jquery_button(jQuery_button(button, dialog_id+button_name, button_name, button_label, jQuery_actioner(same, jqscript(jq_form_submit_and_close(dialog_id, table_name, hkc_update_row, [("table_name", table_name), ("sub_dialog", sub_dialog)], after_close_cb)))))), partial(jquery_button(jQuery_button(button, dialog_id+"cancel", "cancel", _T("CANCEL"), jQuery_actioner(same, jqscript("$('#"+dialog_id+"').dialog('close')"))))), ]), hr @@ -917,7 +934,7 @@ public define HTML_Partial_Content [ hr, one_line_fields([ - partial(jquery_button(jQuery_button(button, dialog_id+button_name, button_name, button_label, jQuery_actioner(same, jqscript(jq_form_submit_and_close(dialog_id, table_name, hkc_update_row, [("table_name", table_name), ("sub_dialog", sub_dialog)])))))), + partial(jquery_button(jQuery_button(button, dialog_id+button_name, button_name, button_label, jQuery_actioner(same, jqscript(jq_form_submit_and_close(dialog_id, table_name, hkc_update_row, [("table_name", table_name), ("sub_dialog", sub_dialog)], after_close_cb)))))), partial(jquery_button(jQuery_button(button, dialog_id+"cancel", "cancel", _T("CANCEL"), jQuery_actioner(same, jqscript("$('#"+dialog_id+"').dialog('close')"))))), ]) ] @@ -975,18 +992,22 @@ public define List(CXM_Form_Field) foreign_text(s_name, c_name, value, foreign_table_name, select, help) then //[selector_c([],no_label, html_Id(""), wan(c_name), 1, select.get(db, table_referer, fk_clause), success(init(to_String(value))), mandatory), help_line(help, _T)], - with uid = generate_random_string(20)+"_", + with uid = "_"+generate_random_string(20)+"_", + with refresh_func = uid+foreign_table_name+"_"+c_name+"_selector_refresh", + //with load_script = "CalexiumToolBox.ajax_load_content('"+uid+foreign_table_name+"_"+c_name+"_selector', '?aws_controller=hk_c&aws_action=selector&table_name="+foreign_table_name+"&fk_filter="+fk_clause+"&selected="+value+"');", + with load_script = script("text/javascript","function "+refresh_func+"() { CalexiumToolBox.ajax_load_content('"+uid+foreign_table_name+"_"+c_name+"_selector', '?aws_controller=hk_c&aws_action=selector&table_name="+foreign_table_name+"&fk_filter="+fk_clause+"&selected="+value+"');} "+refresh_func+"(); "), [ partial(jq_dialog_create(dialog_id(uid+foreign_table_name+"_dlg_ajax"), ajax(controller_action("hk_c", "ajax_edit_table&dialog_id="+uid+foreign_table_name+"_dlg_ajax&sub_dialog=true&table_name="+foreign_table_name)))), one_line_fields([ - selector_c([],label(_T(s_name), no_help), html_Id(""), wan(c_name), 1, select.get(db, table_referer, fk_clause), success(init(to_String(value))), mandatory), help_line(help, _T), + partial(partial_content([js_inline(load_script)],empty)), + selector_c([],label(_T(s_name), no_help), html_Id(uid+foreign_table_name+"_"+c_name+"_selector"), wan(c_name), 1, select.get(db, table_referer, fk_clause), success(init(to_String(value))), mandatory), help_line(help, _T), partial(img_button(icn16_add, [event(onclick, jq_dialog_open(dialog_id(uid+foreign_table_name+"_dlg_ajax")))], "", [])), ]) ], foreign_text_search(s_name, c_name, select, foreign_table_name, s_fields, help) then //[raw_in_form(literal(""))] - with uid = generate_random_string(20)+"_", + with uid = "_"+generate_random_string(20)+"_", [ partial(jq_dialog_create(dialog_id(uid+foreign_table_name+"_dlg_ajax"), ajax(controller_action("hk_c", "ajax_edit_table&dialog_id="+uid+foreign_table_name+"_dlg_ajax&sub_dialog=true&table_name="+foreign_table_name)))), one_line_fields([ diff --git a/view/web_action.anubis b/view/web_action.anubis index 040a98e..623cf9c 100644 --- a/view/web_action.anubis +++ b/view/web_action.anubis @@ -15,6 +15,8 @@ public define WEB_Action_Name hkc_view_editor = controller_action("hk_c" public define WEB_Action_Name hkc_grid_view = controller_action("hk_c", "grid_view"). public define WEB_Action_Name hkc_grid_action = controller_action("hk_c", "grid_action"). public define WEB_Action_Name hkc_combo_search = controller_action("hk_c", "combo_search"). +public define WEB_Action_Name hkc_selector = controller_action("hk_c", "selector"). //get dropdown HMTL content + public define WEB_Action_Name hkc_list_view = controller_action("hk_c", "view_table"). public define WEB_Action_Name hkc_list_view_name = controller_action("hk_c", "hkc_list_view_name"). public define WEB_Action_Name hkc_list_view_filter = controller_action("hk_c", "hkc_list_view_filter"). -- libgit2 0.21.4