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