Commit bba31ce5648894a7568ccf2a4ff080fe4a591dc2

Authored by totoro
1 parent ea8ac774

manage the hk_filter for rendreing table in list

add order_by parameter in get_all_XXX_by_clause
model/display.anubis
@@ -31,6 +31,15 @@ public define HK_Viewer @@ -31,6 +31,15 @@ public define HK_Viewer
31 ( 31 (
32 String view_name, 32 String view_name,
33 List(String) columns, 33 List(String) columns,
  34 + WEB_Action_Name action_name
  35 + )=
  36 + list_view(view_name, columns, [], action_name).
  37 +
  38 +public define HK_Viewer
  39 + list_view
  40 + (
  41 + String view_name,
  42 + List(String) columns,
34 List(HK_Filter) l_filter 43 List(HK_Filter) l_filter
35 )= 44 )=
36 list_view(view_name, columns, l_filter, no_action). 45 list_view(view_name, columns, l_filter, no_action).
view/types/hk_view.anubis
@@ -94,7 +94,7 @@ public type VT_view_row: @@ -94,7 +94,7 @@ public type VT_view_row:
94 public type VT_View_DB_Calls: 94 public type VT_View_DB_Calls:
95 vt_view_db_calls( 95 vt_view_db_calls(
96 (SQLite3DataBase db, String clause) -> Int get_count, 96 (SQLite3DataBase db, String clause) -> Int get_count,
97 - (SQLite3DataBase db, HK_Referer referer, String clause) -> JsonMember get_rows_json 97 + (SQLite3DataBase db, HK_Referer referer, String clause, String order_by) -> JsonMember get_rows_json
98 // (SQLite3DataBase db, String clause) -> List(VT_view_row) get_rows 98 // (SQLite3DataBase db, String clause) -> List(VT_view_row) get_rows
99 ) 99 )
100 . 100 .
view/view_table_manager_types.anubis
@@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
8 8
9 read hayamiki_lib/view/types/hk_form.anubis 9 read hayamiki_lib/view/types/hk_form.anubis
10 read hayamiki_lib/view/types/hk_view.anubis 10 read hayamiki_lib/view/types/hk_view.anubis
  11 +read hayamiki_lib/view/types/hk_filter.anubis
11 read calexium_lib/web/CXM_common.anubis 12 read calexium_lib/web/CXM_common.anubis
12 13
13 public type VTM_edit: 14 public type VTM_edit:
@@ -34,7 +35,7 @@ public type TM_delete_list: @@ -34,7 +35,7 @@ public type TM_delete_list:
34 tm_delete_list(List(TM_delete) list). 35 tm_delete_list(List(TM_delete) list).
35 36
36 public type VTM_view: 37 public type VTM_view:
37 - vtm_view(String table_name, (String view_name) -> VT_view get_view, (One) -> List(String) get_all_view_name). 38 + vtm_view(String table_name, (String view_name) -> VT_view get_view, (One) -> List((String, List(HK_Filter))) get_all_view_name).
38 39
39 public type VTM_view_list: 40 public type VTM_view_list:
40 vtm_view_list(List(VTM_view) list). 41 vtm_view_list(List(VTM_view) list).
view/view_table_renderer.anubis
@@ -39,31 +39,140 @@ read calexium_lib/web/widgets/css_helper.anubis @@ -39,31 +39,140 @@ read calexium_lib/web/widgets/css_helper.anubis
39 read calexium_lib/web/widgets/button.anubis 39 read calexium_lib/web/widgets/button.anubis
40 read calexium_lib/web/CXM_urllib.anubis 40 read calexium_lib/web/CXM_urllib.anubis
41 41
  42 +public define List(HK_Filter)
  43 + get_view_filters
  44 + (
  45 + String view_name,
  46 + List((String, List(HK_Filter))) all_view_name
  47 + )=
  48 + if all_view_name is
  49 + {
  50 + [] then [],
  51 + [h . t] then
  52 + since h is (v_name, filters),
  53 + if v_name = view_name then
  54 + filters
  55 + else
  56 + get_view_filters(view_name, t)
  57 + }
  58 +.
  59 +
  60 +public define HK_Filter
  61 + get_default_filter
  62 + (
  63 + VTM_view vtm_v, //virtual table manager view
  64 + String view_name //
  65 + )=
  66 + with all_view_name = vtm_v.get_all_view_name(unique),
  67 + with filters = get_view_filters(view_name, all_view_name),
  68 + filter_len = length(filters),
  69 +
  70 + if filter_len = 0 then
  71 + hk_filter("", "")
  72 + else
  73 + if filters is
  74 + { [] then hk_filter("", ""),
  75 + [h . _] then h
  76 + }
  77 +.
  78 +
  79 +public define HK_Filter
  80 + get_filter_from_name
  81 + (
  82 + List(HK_Filter) filters,
  83 + String _filter_name
  84 + )=
  85 + if filters is
  86 + {
  87 + [] then hk_filter("", ""),
  88 + [h . t] then
  89 + if h.filter_name = _filter_name then
  90 + h
  91 + else
  92 + get_filter_from_name(t, _filter_name)
  93 + }
  94 +.
  95 +
  96 +public define HK_Filter
  97 + get_filter_from_name
  98 + (
  99 + VTM_view vtm_v, //virtual table manager view
  100 + String view_name, //
  101 + String filter_name
  102 + )=
  103 + with all_view_name = vtm_v.get_all_view_name(unique),
  104 + with filters = get_view_filters(view_name, all_view_name),
  105 +
  106 + get_filter_from_name(filters, filter_name)
  107 +.
  108 +
  109 +define HTML_In_Form
  110 +/* create a selector for choosing the view name.
  111 + * The selector create an immediate action. This means when the entry is selected, the action is fired.
  112 + * If only one view exists, the selector is not created
  113 + */
  114 + table_filter_selector
  115 + (
  116 + (String) -> String _T, //translator function
  117 + List((String, List(HK_Filter))) all_view_name, //virtual table manager view
  118 + String current_view, //
  119 + String current_filter
  120 + )=
  121 + with filters = get_view_filters(current_view, all_view_name),
  122 + filter_len = length(filters),
  123 + println("filter length "+filter_len);
  124 +
  125 + if filter_len = 0 then
  126 + hidden(wan("filter_name"), wav("no_filter"))
  127 + else if filter_len = 1 then
  128 + with filter_name = if filters is { [] then "", [h . _] then h.filter_name },
  129 + hidden(wan("filter_name"), wav(filter_name))
  130 + else
  131 + actioner(same, same,
  132 + immediate_selector([id("select_view")],
  133 + wan("filter_name"), //web arg name of the selected entry
  134 + 1,
  135 + map(((HK_Filter) filter) |-> println("selector filter_name "+filter.filter_name); ([], wav(filter.filter_name), _T(filter.filter_name)), filters),
  136 + success(init(current_filter)),
  137 + ""
  138 + ),
  139 + hkc_list_view_filter, //web_actioner
  140 + [], [])
  141 +.
  142 +
42 define HTML_Off_Form 143 define HTML_Off_Form
43 /* create a selector for choosing the view name. 144 /* create a selector for choosing the view name.
44 * The selector create an immediate action. This means when the entry is selected, the action is fired. 145 * The selector create an immediate action. This means when the entry is selected, the action is fired.
45 * If only one view exists, the selector is not created 146 * If only one view exists, the selector is not created
46 */ 147 */
47 - table_view_selector 148 + table_view_filter_selector
48 ( 149 (
49 (String) -> String _T, //translator function 150 (String) -> String _T, //translator function
50 VTM_view vtm_v, //virtual table manager view 151 VTM_view vtm_v, //virtual table manager view
51 - String current_view // 152 + String current_view, //
  153 + String current_filter
52 )= 154 )=
53 - if length(vtm_v.get_all_view_name(unique)) = 1 then  
54 - empty  
55 - else  
56 - form( "table_view_selector", [], "", [],  
57 - actioner(same, same,  
58 - immediate_selector([id("select_view")],  
59 - wan("view_name"), //web arg name of the selected entry  
60 - 1,  
61 - map((String view_name) |-> ([], wav(view_name), _T(view_name)), vtm_v.get_all_view_name(unique)),  
62 - success(init(current_view)),  
63 - ""  
64 - ),  
65 - hkc_list_view,  
66 - [("table_name", vtm_v.table_name)], [])) 155 + with all_view_name = vtm_v.get_all_view_name(unique),
  156 + form( "table_view_filter_selector", [], "", [],
  157 + sequence([
  158 + hidden(wan("table_name"), wav(vtm_v.table_name)),
  159 + (if length(all_view_name) = 1 then
  160 + empty
  161 + else
  162 + actioner(same, same,
  163 + immediate_selector([id("select_view")],
  164 + wan("view_name"), //web arg name of the selected entry
  165 + 1,
  166 + map(((String, List(HK_Filter)) name_and_filters) |-> since name_and_filters is (view_name, filters), ([], wav(view_name), _T(view_name)), all_view_name),
  167 + success(init(current_view)),
  168 + ""
  169 + ),
  170 + hkc_list_view_name, //web_actioner
  171 + [], []
  172 + )), //!actionner
  173 + table_filter_selector(_T, all_view_name, current_view, current_filter)
  174 + ])
  175 + )//!form
67 . 176 .
68 177
69 178
@@ -246,8 +355,9 @@ public define HTML_Partial_Content @@ -246,8 +355,9 @@ public define HTML_Partial_Content
246 SQLite3DataBase db, 355 SQLite3DataBase db,
247 String uid, 356 String uid,
248 VT_view rows, 357 VT_view rows,
  358 + String filter_name,
249 (String) -> String _T, 359 (String) -> String _T,
250 - String lang, 360 + String lang,
251 String clause, 361 String clause,
252 HK_Referer table_referer 362 HK_Referer table_referer
253 )= 363 )=
@@ -273,7 +383,7 @@ public define HTML_Partial_Content @@ -273,7 +383,7 @@ public define HTML_Partial_Content
273 .autocomplete(\"option\", \"source\", newUniqueValues); 383 .autocomplete(\"option\", \"source\", newUniqueValues);
274 }; 384 };
275 $(\"#"+uid+"_grid\").jqGrid({ 385 $(\"#"+uid+"_grid\").jqGrid({
276 -url:'?aws_controller=hk_c&aws_action=grid_view&table_name="+rows.table_name+"&view_name="+rows.view_name+filter_clause+referer_arg+"',"+ 386 +url:'?aws_controller=hk_c&aws_action=grid_view&table_name="+rows.table_name+"&view_name="+rows.view_name+"&filter_name="+filter_name+filter_clause+referer_arg+"',"+
277 "datatype: \"json\", 387 "datatype: \"json\",
278 "+ 388 "+
279 to_jqGrid_ColModel(db, table_referer, _T, rows.view_model.list)+","+ 389 to_jqGrid_ColModel(db, table_referer, _T, rows.view_model.list)+","+
@@ -329,15 +439,19 @@ public define HTML_Partial_Content @@ -329,15 +439,19 @@ public define HTML_Partial_Content
329 String action_name, 439 String action_name,
330 VTM_view vtm_v, 440 VTM_view vtm_v,
331 String view_name, 441 String view_name,
  442 + String filter_name,
332 String f_clause, //filter for current table 443 String f_clause, //filter for current table
333 HK_Referer table_referer, 444 HK_Referer table_referer,
334 String fk_clause //filter for foreign key of the table (one to many) 445 String fk_clause //filter for foreign key of the table (one to many)
335 ) = 446 ) =
  447 + with current_view = vtm_v.get_view(view_name),
  448 + //with _filter = get_filter_from_name(vtm_v, view_name, filter_name),
  449 + //with f_clause = if _filter.filter_string = "" then "" else if _f_clause = "" then _filter.filter_string else "("+_filter.filter_string+") AND "+_f_clause,
336 with filter_clause = if f_clause = "" then "" else "&clause="+url_quote(f_clause), 450 with filter_clause = if f_clause = "" then "" else "&clause="+url_quote(f_clause),
337 //with foreign_clause = if fk_clause = "" then "" else "&fk_clause="+url_quote(fk_clause), 451 //with foreign_clause = if fk_clause = "" then "" else "&fk_clause="+url_quote(fk_clause),
338 with referer_arg = "&"+to_Web_arg(table_referer, ""), 452 with referer_arg = "&"+to_Web_arg(table_referer, ""),
339 453
340 - with current_view = vtm_v.get_view(view_name), 454 +
341 with uid = generate_random_string(20)+"_", 455 with uid = generate_random_string(20)+"_",
342 partial_content([ js(js_file("js/jscolor.min.js")) 456 partial_content([ js(js_file("js/jscolor.min.js"))
343 ]+jq_dialog_init + jq_datetimepicker_init(lang), 457 ]+jq_dialog_init + jq_datetimepicker_init(lang),
@@ -349,10 +463,10 @@ public define HTML_Partial_Content @@ -349,10 +463,10 @@ public define HTML_Partial_Content
349 // (+) icon for adding new entry 463 // (+) icon for adding new entry
350 partial(img_button(icn16_add, [event(onclick, jq_dialog_open(dialog_id(uid+action_name+"_dlg_ajax")))], "", [])), 464 partial(img_button(icn16_add, [event(onclick, jq_dialog_open(dialog_id(uid+action_name+"_dlg_ajax")))], "", [])),
351 // view selector if there is more than one view name 465 // view selector if there is more than one view name
352 - table_view_selector(_T, vtm_v, view_name), 466 + table_view_filter_selector(_T, vtm_v, view_name, filter_name),
353 ])), 467 ])),
354 //grid with data 468 //grid with data
355 - partial(jqGrid_table(db, uid, current_view, _T, lang, f_clause, table_referer)) 469 + partial(jqGrid_table(db, uid, current_view, filter_name, _T, lang, f_clause, table_referer))
356 //partial(jquery_datatable(uid+"table_view", view_table_form(_T, uid, action_name, rows), true, false, jq_dt_pt_full_numbers, false, scrollY(500), true, true, true, lang, no_extra, web_site_directory)) 470 //partial(jquery_datatable(uid+"table_view", view_table_form(_T, uid, action_name, rows), true, false, jq_dt_pt_full_numbers, false, scrollY(500), true, true, true, lang, no_extra, web_site_directory))
357 ]))]). 471 ]))]).
358 472
@@ -366,6 +480,7 @@ public define HTML_Partial_Content @@ -366,6 +480,7 @@ public define HTML_Partial_Content
366 String action_name, 480 String action_name,
367 VTM_view vtm_v, 481 VTM_view vtm_v,
368 String view_name, 482 String view_name,
  483 + String filter_name,
369 String f_clause, //filter for current table 484 String f_clause, //filter for current table
370 HK_Referer table_referer, 485 HK_Referer table_referer,
371 String fk_clause //filter for foreign key of the table (one to many) 486 String fk_clause //filter for foreign key of the table (one to many)
@@ -383,7 +498,7 @@ public define HTML_Partial_Content @@ -383,7 +498,7 @@ public define HTML_Partial_Content
383 partial(jq_dialog_create(dialog_id(uid+action_name+"_dlg_ajax"), ajax(controller_action("hk_c", "ajax_edit_table&table_name="+current_view.table_name+filter_clause+referer_arg)))), 498 partial(jq_dialog_create(dialog_id(uid+action_name+"_dlg_ajax"), ajax(controller_action("hk_c", "ajax_edit_table&table_name="+current_view.table_name+filter_clause+referer_arg)))),
384 partial(img_button(icn16_add, [event(onclick, jq_dialog_open(dialog_id(uid+action_name+"_dlg_ajax")))], "", [])), 499 partial(img_button(icn16_add, [event(onclick, jq_dialog_open(dialog_id(uid+action_name+"_dlg_ajax")))], "", [])),
385 //table_view_selector(_T, vtm_v, view_name), 500 //table_view_selector(_T, vtm_v, view_name),
386 - partial(jqGrid_table(db, uid, current_view, _T, lang, fk_clause, table_referer)), 501 + partial(jqGrid_table(db, uid, current_view, filter_name, _T, lang, fk_clause, table_referer)),
387 //partial(jquery_datatable(uid+"table_view", view_table_form(_T, uid, action_name, rows), true, false, jq_dt_pt_full_numbers, false, scrollY(200), true, true, true, lang, no_extra, web_site_directory)) 502 //partial(jquery_datatable(uid+"table_view", view_table_form(_T, uid, action_name, rows), true, false, jq_dt_pt_full_numbers, false, scrollY(200), true, true, true, lang, no_extra, web_site_directory))
388 ]). 503 ]).
389 504
@@ -394,19 +509,20 @@ public define Maybe(HTML_Partial_Content) @@ -394,19 +509,20 @@ public define Maybe(HTML_Partial_Content)
394 (String) -> String _T, 509 (String) -> String _T,
395 String lang, 510 String lang,
396 String web_site_directory, 511 String web_site_directory,
397 - String table, 512 + String table_name,
398 String view_name, 513 String view_name,
399 String action_name, 514 String action_name,
  515 + String filter_name,
400 String f_clause, 516 String f_clause,
401 HK_Referer table_referer, 517 HK_Referer table_referer,
402 String fk_clause, 518 String fk_clause,
403 VTM vtm 519 VTM vtm
404 ) = 520 ) =
405 - if vtm_get_view(table, vtm.view_list) is 521 + if vtm_get_view(table_name, vtm.view_list) is
406 { 522 {
407 failure then failure, 523 failure then failure,
408 success(vtm_v) then 524 success(vtm_v) then
409 - success(view_table_page(db, _T, lang, web_site_directory, action_name, vtm_v, view_name, f_clause, table_referer, fk_clause)) 525 + success(view_table_page(db, _T, lang, web_site_directory, action_name, vtm_v, view_name, filter_name, f_clause, table_referer, fk_clause))
410 }. 526 }.
411 527
412 public define Maybe(HTML_Partial_Content) 528 public define Maybe(HTML_Partial_Content)
@@ -418,6 +534,7 @@ public define Maybe(HTML_Partial_Content) @@ -418,6 +534,7 @@ public define Maybe(HTML_Partial_Content)
418 String web_site_directory, 534 String web_site_directory,
419 String table, 535 String table,
420 String view_name, 536 String view_name,
  537 + String filter_name,
421 String action_name, 538 String action_name,
422 String f_clause, 539 String f_clause,
423 HK_Referer table_referer, 540 HK_Referer table_referer,
@@ -428,7 +545,7 @@ public define Maybe(HTML_Partial_Content) @@ -428,7 +545,7 @@ public define Maybe(HTML_Partial_Content)
428 { 545 {
429 failure then failure, 546 failure then failure,
430 success(vtm_v) then 547 success(vtm_v) then
431 - success(table_in_list_view(db, _T, lang, web_site_directory, action_name, vtm_v, view_name, f_clause, table_referer, fk_filter)) 548 + success(table_in_list_view(db, _T, lang, web_site_directory, action_name, vtm_v, view_name, filter_name, f_clause, table_referer, fk_filter))
432 }. 549 }.
433 550
434 define CXM_Form_Field 551 define CXM_Form_Field
@@ -647,7 +764,7 @@ public define HTML_Partial_Content @@ -647,7 +764,7 @@ public define HTML_Partial_Content
647 |-> 764 |->
648 since tab is hk_form_tab(fk_table_name, fk_col_name, list_view_name), 765 since tab is hk_form_tab(fk_table_name, fk_col_name, list_view_name),
649 with referer = hk_referer(table_name, id, fk_table_name, fk_col_name), 766 with referer = hk_referer(table_name, id, fk_table_name, fk_col_name),
650 - if table_in_list_view_only(db, _T, lang, web_site_directory, fk_table_name, list_view_name, "edit", "", referer, fk_clause, vtm) is 767 + if table_in_list_view_only(db, _T, lang, web_site_directory, fk_table_name, list_view_name, "", "edit", "", referer, fk_clause, vtm) is
651 { 768 {
652 failure then empty, 769 failure then empty,
653 success(p_content) then partial(p_content) 770 success(p_content) then partial(p_content)
view/web_action.anubis
@@ -15,6 +15,8 @@ public define WEB_Action_Name hkc_view_editor = controller_action("hk_c" @@ -15,6 +15,8 @@ public define WEB_Action_Name hkc_view_editor = controller_action("hk_c"
15 public define WEB_Action_Name hkc_grid_view = controller_action("hk_c", "grid_view"). 15 public define WEB_Action_Name hkc_grid_view = controller_action("hk_c", "grid_view").
16 public define WEB_Action_Name hkc_grid_action = controller_action("hk_c", "grid_action"). 16 public define WEB_Action_Name hkc_grid_action = controller_action("hk_c", "grid_action").
17 public define WEB_Action_Name hkc_list_view = controller_action("hk_c", "view_table"). 17 public define WEB_Action_Name hkc_list_view = controller_action("hk_c", "view_table").
  18 +public define WEB_Action_Name hkc_list_view_name = controller_action("hk_c", "hkc_list_view_name").
  19 +public define WEB_Action_Name hkc_list_view_filter = controller_action("hk_c", "hkc_list_view_filter").
18 public define WEB_Action_Name hkc_save_row = controller_action("hk_c", "save_row"). 20 public define WEB_Action_Name hkc_save_row = controller_action("hk_c", "save_row").
19 public define WEB_Action_Name hkc_save_row_and_new = controller_action("hk_c", "save_row_and_new"). 21 public define WEB_Action_Name hkc_save_row_and_new = controller_action("hk_c", "save_row_and_new").
20 public define WEB_Action_Name hkc_update_row = controller_action("hk_c", "update_row"). 22 public define WEB_Action_Name hkc_update_row = controller_action("hk_c", "update_row").