Commit 2bd0873598f032348264ca8138caf6fb35de01f2

Authored by David RENÉ
1 parent f3910a95

[+] manage the active filter in ajax combo box only for the moment

[+] get hidden to add in form as value. if there is web arg with name starting with "hidden_", the name after "hidden_" will be add as hidden value in form. This allow to add necessaries values which are not especially exposed as editable but mandatory in database record. For example if there is database record editable by user and that user is not allowed to change or set some important information reserved to company's staff.
Showing 1 changed file with 95 additions and 31 deletions   Show diff stats
view/view_table_renderer.anubis
@@ -43,6 +43,28 @@ read calexium_lib/web/widgets/button.anubis @@ -43,6 +43,28 @@ read calexium_lib/web/widgets/button.anubis
43 read calexium_lib/web/widgets/specialized_elements.anubis 43 read calexium_lib/web/widgets/specialized_elements.anubis
44 read calexium_lib/web/CXM_urllib.anubis 44 read calexium_lib/web/CXM_urllib.anubis
45 45
  46 +public define List(CXM_Form_Field)
  47 + get_hidden
  48 + (
  49 + List(Web_arg) lwa
  50 + )=
  51 + map_select((Web_arg warg) |->
  52 + if warg is web_arg(name, value) then
  53 + if starts_with(name, "hidden_") then
  54 + with len_string = length(name),
  55 + if sub_string(name, 7, len_string - 7) is
  56 + {
  57 + failure then failure,
  58 + success(n) then success(hidden(html_Id(""), wan(n), wav(value)))
  59 + }
  60 + else
  61 + failure
  62 + else
  63 + failure
  64 + ,
  65 + lwa)
  66 +.
  67 +
46 public define Phone_Type 68 public define Phone_Type
47 convert 69 convert
48 ( 70 (
@@ -135,9 +157,17 @@ define String @@ -135,9 +157,17 @@ define String
135 String combo_uid, 157 String combo_uid,
136 String f_table, //db table name 158 String f_table, //db table name
137 String c_name, //column name in the table 159 String c_name, //column name in the table
138 - Maybe(Int) init_value, //  
139 - List(String) s_fields //search fields 160 + Maybe(Int) init_value, //
  161 + List(String) s_fields, //search fields
  162 + List(HK_Foreign_Key_Active_Filter) active_filters
140 )= 163 )=
  164 + println(join("", map((HK_Foreign_Key_Active_Filter a_filter) |->
  165 + since a_filter is active_filter(column, fk_column),
  166 + "column '"+column+"' fk_column '"+fk_column+"\n"
  167 + ,
  168 + active_filters
  169 + )))
  170 + ;
141 "$('#"+combo_uid+"').ajaxComboBox( '?aws_controller=hk_c&aws_action=combo_search', 171 "$('#"+combo_uid+"').ajaxComboBox( '?aws_controller=hk_c&aws_action=combo_search',
142 {" 172 {"
143 + 173 +
@@ -149,6 +179,17 @@ if init_value is {failure then "", success(value) then @@ -149,6 +179,17 @@ if init_value is {failure then "", success(value) then
149 db_table: '"+f_table+"', 179 db_table: '"+f_table+"',
150 button_img: 'ajax-combobox/btn.png', 180 button_img: 'ajax-combobox/btn.png',
151 field: '"+force_nth(0, s_fields, "name")+"', 181 field: '"+force_nth(0, s_fields, "name")+"',
  182 +" +
  183 +(if length(active_filters) > 0 then
  184 + "active_filters: ["+join(", ", map((HK_Foreign_Key_Active_Filter a_filter) |->
  185 + since a_filter is active_filter(column, fk_column),
  186 + "['"+column+"', '"+fk_column+"']"
  187 + ,
  188 + active_filters
  189 + ))+"],"
  190 +else
  191 +"")
  192 ++"
152 search_field: '"+join(", ", s_fields)+"', 193 search_field: '"+join(", ", s_fields)+"',
153 hidden_name: '"+c_name+"', 194 hidden_name: '"+c_name+"',
154 "+(if "__HK_SHOW_STRING__":s_fields then 195 "+(if "__HK_SHOW_STRING__":s_fields then
@@ -678,7 +719,17 @@ public define List(CXM_Form_Field) @@ -678,7 +719,17 @@ public define List(CXM_Form_Field)
678 password_entries 719 password_entries
679 ], 720 ],
680 721
681 - foreign_text(s_name, c_name, _value, foreign_table_name, active_filter, select, help) then 722 + foreign_text(s_name, c_name, _value, foreign_table_name, select, active_filters, help) then
  723 + with dummy = if length(active_filters) > 0 then
  724 + println("ACTIVE FILTER for "+c_name);
  725 + println(join("", map((HK_Foreign_Key_Active_Filter a_filter) |->
  726 + since a_filter is active_filter(column, fk_column),
  727 + "column '"+column+"' fk_column '"+fk_column+"\n"
  728 + ,
  729 + active_filters
  730 + )))
  731 + else
  732 + unique,
682 with uid = "_"+generate_random_string(20)+"_", 733 with uid = "_"+generate_random_string(20)+"_",
683 with refresh_func = uid+foreign_table_name+"_"+c_name+"_selector_refresh", 734 with refresh_func = uid+foreign_table_name+"_"+c_name+"_selector_refresh",
684 //Get the priority of the web argument content for the value, this means the value already set by the user or called with programmaticaly with it 735 //Get the priority of the web argument content for the value, this means the value already set by the user or called with programmaticaly with it
@@ -698,11 +749,21 @@ public define List(CXM_Form_Field) @@ -698,11 +749,21 @@ public define List(CXM_Form_Field)
698 ], 749 ],
699 750
700 751
701 - foreign_text_search(s_name, c_name, _select, foreign_table_name, s_fields, active_filter, help) then 752 + foreign_text_search(s_name, c_name, _select, foreign_table_name, s_fields, active_filters, help) then
  753 + with dummy = if length(active_filters) > 0 then
  754 + println("ACTIVE FILTER for "+c_name);
  755 + println(join("", map((HK_Foreign_Key_Active_Filter a_filter) |->
  756 + since a_filter is active_filter(column, fk_column),
  757 + "column '"+column+"' fk_column '"+fk_column+"\n"
  758 + ,
  759 + active_filters
  760 + )))
  761 + else
  762 + unique,
702 with uid = "_"+generate_random_string(20)+"_", 763 with uid = "_"+generate_random_string(20)+"_",
703 //Get the priority of the web argument content for the select, this means the value already set by the user or called with programmaticaly with it 764 //Get the priority of the web argument content for the select, this means the value already set by the user or called with programmaticaly with it
704 with select = get_DB_id(lwa, c_name, _select), 765 with select = get_DB_id(lwa, c_name, _select),
705 - with combo_init = ajax_combo_init_parameter(uid, foreign_table_name, c_name, to_mb_Int(select), s_fields), 766 + with combo_init = ajax_combo_init_parameter(uid, foreign_table_name, c_name, to_mb_Int(select), s_fields, active_filters),
706 [ 767 [
707 768
708 partial(partial_content([ js(js_file("ajax-combobox/js/jquery.ajax-combobox.js")), 769 partial(partial_content([ js(js_file("ajax-combobox/js/jquery.ajax-combobox.js")),
@@ -820,7 +881,8 @@ public define HTML_Partial_Content @@ -820,7 +881,8 @@ public define HTML_Partial_Content
820 //get_editor_header(list_entries)+ //add editor header if need. Like init ck_editor 881 //get_editor_header(list_entries)+ //add editor header if need. Like init ck_editor
821 //get_combo_header(table_name, list_entries), 882 //get_combo_header(table_name, list_entries),
822 sequence([ 883 sequence([
823 - cxm_form( form_id, lwa, 884 + cxm_form( form_id, lwa,
  885 + get_hidden(lwa)+ //collect hidden value from lwa
824 (if length(list_entries) > 5 then 886 (if length(list_entries) > 5 then
825 [ 887 [
826 one_line_fields([ 888 one_line_fields([
@@ -910,7 +972,17 @@ public define List(CXM_Form_Field) @@ -910,7 +972,17 @@ public define List(CXM_Form_Field)
910 password_entries 972 password_entries
911 ], 973 ],
912 974
913 - foreign_text(s_name, c_name, _value, foreign_table_name, active_filter, select, help) then 975 + foreign_text(s_name, c_name, _value, foreign_table_name, select, active_filters, help) then
  976 + with dummy = if length(active_filters) > 0 then
  977 + println("ACTIVE FILTER for "+c_name);
  978 + println(join("", map((HK_Foreign_Key_Active_Filter a_filter) |->
  979 + since a_filter is active_filter(column, fk_column),
  980 + "column '"+column+"' fk_column '"+fk_column+"\n"
  981 + ,
  982 + active_filters
  983 + )))
  984 + else
  985 + unique,
914 //[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)], 986 //[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)],
915 with fk_clause = "", 987 with fk_clause = "",
916 with uid = "_"+generate_random_string(20)+"_", 988 with uid = "_"+generate_random_string(20)+"_",
@@ -930,11 +1002,23 @@ public define List(CXM_Form_Field) @@ -930,11 +1002,23 @@ public define List(CXM_Form_Field)
930 ]) 1002 ])
931 ], 1003 ],
932 1004
933 - foreign_text_search(s_name, c_name, _select, foreign_table_name, s_fields, active_filer, help) then 1005 + foreign_text_search(s_name, c_name, _select, foreign_table_name, s_fields, active_filters, help) then
  1006 + with dummy = if length(active_filters) > 0then
  1007 + println("ACTIVE FILTER for "+c_name);
  1008 + println(join("", map((HK_Foreign_Key_Active_Filter a_filter) |->
  1009 + since a_filter is active_filter(column, fk_column),
  1010 + "column '"+column+"' fk_column '"+fk_column+"\n"
  1011 + ,
  1012 + active_filters
  1013 + )))
  1014 + else
  1015 + unique,
934 //[raw_in_form(literal("<input class=\"in\" id=\"acb_"+c_name+"\" data-init_record=\""+select+"\" size=\"50\" type=\"text\">"))] 1016 //[raw_in_form(literal("<input class=\"in\" id=\"acb_"+c_name+"\" data-init_record=\""+select+"\" size=\"50\" type=\"text\">"))]
935 with uid = "_"+generate_random_string(20)+"_", 1017 with uid = "_"+generate_random_string(20)+"_",
936 - with select = get_DB_id(lwa, c_name, _select),  
937 - with combo_init = ajax_combo_init_parameter(uid, foreign_table_name, c_name, to_mb_Int(select), s_fields), 1018 + //if column name came with argument, we supersede the given _select by it.
  1019 + with select = get_DB_id(lwa, c_name, _select),
  1020 +
  1021 + with combo_init = ajax_combo_init_parameter(uid, foreign_table_name, c_name, to_mb_Int(select), s_fields, active_filters),
938 [ 1022 [
939 partial(partial_content([ 1023 partial(partial_content([
940 js(js_file("ajax-combobox/js/jquery.ajax-combobox.js")), 1024 js(js_file("ajax-combobox/js/jquery.ajax-combobox.js")),
@@ -1055,27 +1139,7 @@ public define List(CXM_Form_Field) @@ -1055,27 +1139,7 @@ public define List(CXM_Form_Field)
1055 map((HK_Form_Table_Attribute attr) |-> since attr is hidden(n, v), hidden(html_Id(""), wan(n), wav(v)), table_attrs) 1139 map((HK_Form_Table_Attribute attr) |-> since attr is hidden(n, v), hidden(html_Id(""), wan(n), wav(v)), table_attrs)
1056 . 1140 .
1057 1141
1058 -public define List(CXM_Form_Field)  
1059 - get_hidden  
1060 - (  
1061 - List(Web_arg) lwa  
1062 - )=  
1063 - map_select((Web_arg warg) |->  
1064 - if warg is web_arg(name, value) then  
1065 - if starts_with(name, "hidden_") then  
1066 - with len_string = length(name),  
1067 - if sub_string(name, 7, len_string - 7) is  
1068 - {  
1069 - failure then failure,  
1070 - success(n) then success(hidden(html_Id(""), wan(n), wav(value)))  
1071 - }  
1072 - else  
1073 - failure  
1074 - else  
1075 - failure  
1076 - ,  
1077 - lwa)  
1078 -. 1142 +
1079 1143
1080 public define HTML_Partial_Content 1144 public define HTML_Partial_Content
1081 renderer_edit_table_form 1145 renderer_edit_table_form