From 5dc2618dc6862d54638c73cbe106c1b60b03528e Mon Sep 17 00:00:00 2001 From: totoro Date: Wed, 24 May 2017 09:23:17 +0200 Subject: [PATCH] add hk_controller to replace little by little old controllers in VTM (virtual table manager) start to implement the combo search, still not finished --- view/types/hk_form_entry.anubis | 1 + view/view_table_manager.anubis | 17 +++++++++++++++++ view/view_table_manager_types.anubis | 27 ++++++++++++++++++++++++++- view/view_table_renderer.anubis | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- view/web_action.anubis | 1 + 5 files changed, 102 insertions(+), 6 deletions(-) diff --git a/view/types/hk_form_entry.anubis b/view/types/hk_form_entry.anubis index 5eb2fbb..d0bef73 100644 --- a/view/types/hk_form_entry.anubis +++ b/view/types/hk_form_entry.anubis @@ -25,6 +25,7 @@ public type HK_Form_Entry: //legacy VT_Edit text (String s_name, String c_name, String value, HK_Help_Text help), //s_name = show_name for translation, c_name = table column name password (String s_name, String c_name, HK_Help_Text help), //s_name = show_name for translation, c_name = table column name foreign_text(String s_name, String c_name, DB_id selected, HK_Form_Selector selector, HK_Help_Text help), + foreign_text_search(String s_name, String c_name, DB_id selected, String f_table_name, List(String) search_fields, HK_Help_Text help), choices_text(String s_name, String c_name, String selected, HK_Form_Selector selector, HK_Help_Text help), text_area (String s_name, String c_name, String value, HK_Text_Field_Attr area_att, HK_Help_Text help), //s_name = show_name for translate, c_name = table column name boolean (String s_name, String c_name, Bool value, HK_Help_Text help), diff --git a/view/view_table_manager.anubis b/view/view_table_manager.anubis index 36e28eb..b678d7e 100644 --- a/view/view_table_manager.anubis +++ b/view/view_table_manager.anubis @@ -108,3 +108,20 @@ public define Maybe((SQLite3DataBase db, List(Int) l_int) -> Maybe(One)) TM_delete_list tm_dlist ) = _tm_get_delete(table_name, tm_dlist.list). + +public define Maybe(HK_Table_controller) + get_hk_controller + ( + String _table_name, + List(HK_Table_controller) controllers + )= + if controllers is + { + [] then failure, + [h . t ] then + if h.table_name = _table_name then + success(h) + else + get_hk_controller(_table_name, t) + } +. diff --git a/view/view_table_manager_types.anubis b/view/view_table_manager_types.anubis index ce938b0..c013266 100644 --- a/view/view_table_manager_types.anubis +++ b/view/view_table_manager_types.anubis @@ -9,6 +9,8 @@ read hayamiki_lib/view/types/hk_form.anubis read hayamiki_lib/view/types/hk_view.anubis read hayamiki_lib/view/types/hk_filter.anubis +read hayamiki_lib/types/hayamiki.anubis + read calexium_lib/web/CXM_common.anubis public type VTM_edit: @@ -25,6 +27,28 @@ public type TM_writer: ) . + //CRUD basis function + + //Create + //Read + //Update + //Delete + +public type HK_Table_controller: + hk_table_controller( + String table_name, + //Create + (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(One) write_from_type, + (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(One) write_from_fields, + //Read + (SQLite3DataBase db, String clause) -> Int get_count, + (SQLite3DataBase db, HK_Referer referer, String clause, String order_by) -> JsonMember get_rows_json, + + //Update + //Delete + (SQLite3DataBase db, List(Int) l_int) -> Maybe(One) delete + ) +. + public type TM_writer_list: tm_writer_list(List(TM_writer) list). @@ -44,4 +68,5 @@ public type VTM: vtm(VTM_view_list view_list, VTM_edit_list edit_list, TM_writer_list writer_list, - TM_delete_list delete_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 93ec3fc..468f97c 100644 --- a/view/view_table_renderer.anubis +++ b/view/view_table_renderer.anubis @@ -120,7 +120,6 @@ define HTML_In_Form )= with filters = get_view_filters(current_view, all_view_name), filter_len = length(filters), - println("filter length "+filter_len); if filter_len = 0 then hidden(wan("filter_name"), wav("no_filter")) @@ -132,7 +131,7 @@ define HTML_In_Form immediate_selector([id("select_view")], wan("filter_name"), //web arg name of the selected entry 1, - map(((HK_Filter) filter) |-> println("selector filter_name "+filter.filter_name); ([], wav(filter.filter_name), _T(filter.filter_name)), filters), + map(((HK_Filter) filter) |-> ([], wav(filter.filter_name), _T(filter.filter_name)), filters), success(init(current_filter)), "" ), @@ -611,7 +610,9 @@ public define List(CXM_Form_Field) ], 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, table_referer, fk_clause), success(init(to_String(value))), mandatory), help_line(help, _T)], + [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)], + foreign_text_search(s_name, c_name, select, table_name, fields, help) then + [raw_in_form(literal(""))] 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, no_referer, ""), success(init(value)), mandatory), help_line(help, _T)], text_area(s_name, c_name, value, txt_editor, help) then @@ -695,6 +696,38 @@ define List(String) _lines) . + +define List(String) + _get_combo_header + ( + String table_name, + List(HK_Form_Table_Line) _lines + )= + map_append((HK_Form_Table_Line line) + |-> + map_append((HK_Form_Table_Cell cell) + |-> + if cell is + { + hk_form_table_cell(_, form_entry) then + if form_entry is foreign_text(s_name, c_name, value, select, help) then + with result = +"$('#acb_"+c_name+"').ajaxComboBox( '?aws_controller=hkc&aws_action=combo_action', + { + lang: 'fr', + db_table: '"+table_name+"', + button_img: 'ajax-combobox/btn.png' + });", + [result] + else + [], + hk_form_table_cell_table(_, t_lines) then + _get_combo_header(table_name, t_lines) + }, + line.form_table_cells), + _lines) +. + define List(HTML_Head_Tag) get_editor_header ( @@ -708,7 +741,21 @@ define List(HTML_Head_Tag) else [] . - +define List(HTML_Head_Tag) + get_combo_header + ( + String table_name, + List(HK_Form_Table_Line) _lines + )= + with result = _get_combo_header(table_name, _lines), + if length(result) > 0 then + [js(js_file("ajax-combobox/js/jquery.ajax-combobox.js")), + css(css_file("ajax-combobox/css/jquery.ajax-combobox.css")), + js_inline(jquery_ready(join("",result))) + ] + else + [] + . public define HTML_Partial_Content renderer_edit_list_form @@ -828,6 +875,10 @@ public define List(CXM_Form_Field) foreign_text(s_name, c_name, value, 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)], + //[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)], + foreign_text_search(s_name, c_name, select, f_table, s_fields, help) then + [raw_in_form(literal(""))], + choices_text(s_name, c_name, value, select, help) then [selector_c([],no_label, html_Id(""), wan(c_name), 1, select.get(db, no_referer, ""), success(init(value)), mandatory), help_line(help, _T)], text_area(s_name, c_name, value, txt_editor, help) then @@ -941,7 +992,8 @@ public define HTML_Partial_Content [ js(js_file("js/jscolor.min.js")) ]+ jq_datetimepicker_init(lang) + - get_editor_header(table_form.form_lines), //add editor header if need. Like init ck_editor + get_editor_header(table_form.form_lines)+ //add editor header if need. Like init ck_editor + get_combo_header(table_name, table_form.form_lines), //add editor header if need. Like init ck_editor sequence([ cxm_form( table_name, [], lwa, get_hidden(table_form.table_attr)+ diff --git a/view/web_action.anubis b/view/web_action.anubis index 9ee8f1a..040a98e 100644 --- a/view/web_action.anubis +++ b/view/web_action.anubis @@ -14,6 +14,7 @@ public define WEB_Action_Name hkc_edit_table = controller_action("hk_c" public define WEB_Action_Name hkc_view_editor = controller_action("hk_c", "view_editor"). 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_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