Commit 5dc2618dc6862d54638c73cbe106c1b60b03528e
1 parent
b947f1f0
add hk_controller to replace little by little old controllers in VTM (virtual table manager)
start to implement the combo search, still not finished
Showing
5 changed files
with
102 additions
and
6 deletions
Show diff stats
view/types/hk_form_entry.anubis
| ... | ... | @@ -25,6 +25,7 @@ public type HK_Form_Entry: //legacy VT_Edit |
| 25 | 25 | text (String s_name, String c_name, String value, HK_Help_Text help), //s_name = show_name for translation, c_name = table column name |
| 26 | 26 | password (String s_name, String c_name, HK_Help_Text help), //s_name = show_name for translation, c_name = table column name |
| 27 | 27 | foreign_text(String s_name, String c_name, DB_id selected, HK_Form_Selector selector, HK_Help_Text help), |
| 28 | + foreign_text_search(String s_name, String c_name, DB_id selected, String f_table_name, List(String) search_fields, HK_Help_Text help), | |
| 28 | 29 | choices_text(String s_name, String c_name, String selected, HK_Form_Selector selector, HK_Help_Text help), |
| 29 | 30 | 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 |
| 30 | 31 | boolean (String s_name, String c_name, Bool value, HK_Help_Text help), | ... | ... |
view/view_table_manager.anubis
| ... | ... | @@ -108,3 +108,20 @@ public define Maybe((SQLite3DataBase db, List(Int) l_int) -> Maybe(One)) |
| 108 | 108 | TM_delete_list tm_dlist |
| 109 | 109 | ) = |
| 110 | 110 | _tm_get_delete(table_name, tm_dlist.list). |
| 111 | + | |
| 112 | +public define Maybe(HK_Table_controller) | |
| 113 | + get_hk_controller | |
| 114 | + ( | |
| 115 | + String _table_name, | |
| 116 | + List(HK_Table_controller) controllers | |
| 117 | + )= | |
| 118 | + if controllers is | |
| 119 | + { | |
| 120 | + [] then failure, | |
| 121 | + [h . t ] then | |
| 122 | + if h.table_name = _table_name then | |
| 123 | + success(h) | |
| 124 | + else | |
| 125 | + get_hk_controller(_table_name, t) | |
| 126 | + } | |
| 127 | +. | ... | ... |
view/view_table_manager_types.anubis
| ... | ... | @@ -9,6 +9,8 @@ |
| 9 | 9 | read hayamiki_lib/view/types/hk_form.anubis |
| 10 | 10 | read hayamiki_lib/view/types/hk_view.anubis |
| 11 | 11 | read hayamiki_lib/view/types/hk_filter.anubis |
| 12 | +read hayamiki_lib/types/hayamiki.anubis | |
| 13 | + | |
| 12 | 14 | read calexium_lib/web/CXM_common.anubis |
| 13 | 15 | |
| 14 | 16 | public type VTM_edit: |
| ... | ... | @@ -25,6 +27,28 @@ public type TM_writer: |
| 25 | 27 | ) |
| 26 | 28 | . |
| 27 | 29 | |
| 30 | + //CRUD basis function + | |
| 31 | + //Create | |
| 32 | + //Read | |
| 33 | + //Update | |
| 34 | + //Delete | |
| 35 | + | |
| 36 | +public type HK_Table_controller: | |
| 37 | + hk_table_controller( | |
| 38 | + String table_name, | |
| 39 | + //Create | |
| 40 | + (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(One) write_from_type, | |
| 41 | + (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(One) write_from_fields, | |
| 42 | + //Read | |
| 43 | + (SQLite3DataBase db, String clause) -> Int get_count, | |
| 44 | + (SQLite3DataBase db, HK_Referer referer, String clause, String order_by) -> JsonMember get_rows_json, | |
| 45 | + | |
| 46 | + //Update | |
| 47 | + //Delete | |
| 48 | + (SQLite3DataBase db, List(Int) l_int) -> Maybe(One) delete | |
| 49 | + ) | |
| 50 | +. | |
| 51 | + | |
| 28 | 52 | public type TM_writer_list: |
| 29 | 53 | tm_writer_list(List(TM_writer) list). |
| 30 | 54 | |
| ... | ... | @@ -44,4 +68,5 @@ public type VTM: |
| 44 | 68 | vtm(VTM_view_list view_list, |
| 45 | 69 | VTM_edit_list edit_list, |
| 46 | 70 | TM_writer_list writer_list, |
| 47 | - TM_delete_list delete_list). | |
| 71 | + TM_delete_list delete_list, | |
| 72 | + List(HK_Table_controller) hk_controllers). | ... | ... |
view/view_table_renderer.anubis
| ... | ... | @@ -120,7 +120,6 @@ define HTML_In_Form |
| 120 | 120 | )= |
| 121 | 121 | with filters = get_view_filters(current_view, all_view_name), |
| 122 | 122 | filter_len = length(filters), |
| 123 | - println("filter length "+filter_len); | |
| 124 | 123 | |
| 125 | 124 | if filter_len = 0 then |
| 126 | 125 | hidden(wan("filter_name"), wav("no_filter")) |
| ... | ... | @@ -132,7 +131,7 @@ define HTML_In_Form |
| 132 | 131 | immediate_selector([id("select_view")], |
| 133 | 132 | wan("filter_name"), //web arg name of the selected entry |
| 134 | 133 | 1, |
| 135 | - map(((HK_Filter) filter) |-> println("selector filter_name "+filter.filter_name); ([], wav(filter.filter_name), _T(filter.filter_name)), filters), | |
| 134 | + map(((HK_Filter) filter) |-> ([], wav(filter.filter_name), _T(filter.filter_name)), filters), | |
| 136 | 135 | success(init(current_filter)), |
| 137 | 136 | "" |
| 138 | 137 | ), |
| ... | ... | @@ -611,7 +610,9 @@ public define List(CXM_Form_Field) |
| 611 | 610 | ], |
| 612 | 611 | |
| 613 | 612 | foreign_text(s_name, c_name, value, select, help) then |
| 614 | - [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)], | |
| 613 | + [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)], | |
| 614 | + foreign_text_search(s_name, c_name, select, table_name, fields, help) then | |
| 615 | + [raw_in_form(literal("<input id=\"acb_"+c_name+"\" type=\"text\">"))] | |
| 615 | 616 | choices_text(s_name, c_name, value, select, help) then |
| 616 | 617 | [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)], |
| 617 | 618 | text_area(s_name, c_name, value, txt_editor, help) then |
| ... | ... | @@ -695,6 +696,38 @@ define List(String) |
| 695 | 696 | _lines) |
| 696 | 697 | . |
| 697 | 698 | |
| 699 | + | |
| 700 | +define List(String) | |
| 701 | + _get_combo_header | |
| 702 | + ( | |
| 703 | + String table_name, | |
| 704 | + List(HK_Form_Table_Line) _lines | |
| 705 | + )= | |
| 706 | + map_append((HK_Form_Table_Line line) | |
| 707 | + |-> | |
| 708 | + map_append((HK_Form_Table_Cell cell) | |
| 709 | + |-> | |
| 710 | + if cell is | |
| 711 | + { | |
| 712 | + hk_form_table_cell(_, form_entry) then | |
| 713 | + if form_entry is foreign_text(s_name, c_name, value, select, help) then | |
| 714 | + with result = | |
| 715 | +"$('#acb_"+c_name+"').ajaxComboBox( '?aws_controller=hkc&aws_action=combo_action', | |
| 716 | + { | |
| 717 | + lang: 'fr', | |
| 718 | + db_table: '"+table_name+"', | |
| 719 | + button_img: 'ajax-combobox/btn.png' | |
| 720 | + });", | |
| 721 | + [result] | |
| 722 | + else | |
| 723 | + [], | |
| 724 | + hk_form_table_cell_table(_, t_lines) then | |
| 725 | + _get_combo_header(table_name, t_lines) | |
| 726 | + }, | |
| 727 | + line.form_table_cells), | |
| 728 | + _lines) | |
| 729 | +. | |
| 730 | + | |
| 698 | 731 | define List(HTML_Head_Tag) |
| 699 | 732 | get_editor_header |
| 700 | 733 | ( |
| ... | ... | @@ -708,7 +741,21 @@ define List(HTML_Head_Tag) |
| 708 | 741 | else |
| 709 | 742 | [] |
| 710 | 743 | . |
| 711 | - | |
| 744 | +define List(HTML_Head_Tag) | |
| 745 | + get_combo_header | |
| 746 | + ( | |
| 747 | + String table_name, | |
| 748 | + List(HK_Form_Table_Line) _lines | |
| 749 | + )= | |
| 750 | + with result = _get_combo_header(table_name, _lines), | |
| 751 | + if length(result) > 0 then | |
| 752 | + [js(js_file("ajax-combobox/js/jquery.ajax-combobox.js")), | |
| 753 | + css(css_file("ajax-combobox/css/jquery.ajax-combobox.css")), | |
| 754 | + js_inline(jquery_ready(join("",result))) | |
| 755 | + ] | |
| 756 | + else | |
| 757 | + [] | |
| 758 | + . | |
| 712 | 759 | |
| 713 | 760 | public define HTML_Partial_Content |
| 714 | 761 | renderer_edit_list_form |
| ... | ... | @@ -828,6 +875,10 @@ public define List(CXM_Form_Field) |
| 828 | 875 | |
| 829 | 876 | foreign_text(s_name, c_name, value, select, help) then |
| 830 | 877 | [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)], |
| 878 | + //[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)], | |
| 879 | + foreign_text_search(s_name, c_name, select, f_table, s_fields, help) then | |
| 880 | + [raw_in_form(literal("<input id=\"acb_"+c_name+"\" type=\"text\">"))], | |
| 881 | + | |
| 831 | 882 | choices_text(s_name, c_name, value, select, help) then |
| 832 | 883 | [selector_c([],no_label, html_Id(""), wan(c_name), 1, select.get(db, no_referer, ""), success(init(value)), mandatory), help_line(help, _T)], |
| 833 | 884 | text_area(s_name, c_name, value, txt_editor, help) then |
| ... | ... | @@ -941,7 +992,8 @@ public define HTML_Partial_Content |
| 941 | 992 | [ js(js_file("js/jscolor.min.js")) |
| 942 | 993 | ]+ |
| 943 | 994 | jq_datetimepicker_init(lang) + |
| 944 | - get_editor_header(table_form.form_lines), //add editor header if need. Like init ck_editor | |
| 995 | + get_editor_header(table_form.form_lines)+ //add editor header if need. Like init ck_editor | |
| 996 | + get_combo_header(table_name, table_form.form_lines), //add editor header if need. Like init ck_editor | |
| 945 | 997 | sequence([ |
| 946 | 998 | cxm_form( table_name, [], lwa, |
| 947 | 999 | get_hidden(table_form.table_attr)+ | ... | ... |
view/web_action.anubis
| ... | ... | @@ -14,6 +14,7 @@ public define WEB_Action_Name hkc_edit_table = controller_action("hk_c" |
| 14 | 14 | public define WEB_Action_Name hkc_view_editor = controller_action("hk_c", "view_editor"). |
| 15 | 15 | public define WEB_Action_Name hkc_grid_view = controller_action("hk_c", "grid_view"). |
| 16 | 16 | public define WEB_Action_Name hkc_grid_action = controller_action("hk_c", "grid_action"). |
| 17 | +public define WEB_Action_Name hkc_combo_search = controller_action("hk_c", "combo_search"). | |
| 17 | 18 | public define WEB_Action_Name hkc_list_view = controller_action("hk_c", "view_table"). |
| 18 | 19 | public define WEB_Action_Name hkc_list_view_name = controller_action("hk_c", "hkc_list_view_name"). |
| 19 | 20 | public define WEB_Action_Name hkc_list_view_filter = controller_action("hk_c", "hkc_list_view_filter"). | ... | ... |