From ee7a1e4b8501171f91d90a0c93d4f23d8b9018e6 Mon Sep 17 00:00:00 2001 From: totoro Date: Fri, 19 May 2017 12:36:47 +0900 Subject: [PATCH] add hk_filter in list view --- ds_files/ds_types.anubis | 9 ++++++++- model/display.anubis | 13 +++++++++++-- model/types/hk_app.anubis | 4 ++-- model/types/hk_app_name.anubis | 4 ++-- model/types/hk_database.anubis | 4 ++-- model/types/hk_datetime_field_attr.anubis | 4 ++-- model/types/hk_help_text.anubis | 4 ++-- model/types/hk_icon.anubis | 4 ++-- model/types/hk_int_choice.anubis | 4 ++-- model/types/hk_int_choices.anubis | 4 ++-- model/types/hk_model.anubis | 4 ++-- model/types/hk_model_attr.anubis | 4 ++-- model/types/hk_model_column.anubis | 4 ++-- model/types/hk_model_field.anubis | 4 ++-- model/types/hk_table.anubis | 4 ++-- model/types/hk_text_choice.anubis | 4 ++-- model/types/hk_text_choices.anubis | 4 ++-- model/types/hk_text_field_attr.anubis | 4 ++-- view/types/hk_display.anubis | 4 ++-- view/types/hk_editor.anubis | 4 ++-- view/types/hk_editor_table.anubis | 4 ++-- view/types/hk_filter.anubis | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ view/types/hk_fk_view.anubis | 4 ++-- view/types/hk_form.anubis | 4 ++-- view/types/hk_form_tab.anubis | 4 ++-- view/types/hk_form_table.anubis | 4 ++-- view/types/hk_viewer.anubis | 17 ++++++++++++----- 27 files changed, 148 insertions(+), 54 deletions(-) create mode 100644 view/types/hk_filter.anubis diff --git a/ds_files/ds_types.anubis b/ds_files/ds_types.anubis index 9d22dc2..c6d01be 100644 --- a/ds_files/ds_types.anubis +++ b/ds_files/ds_types.anubis @@ -184,12 +184,19 @@ public define List(DS_Type_File) hayamiki_lib_types_description = ]), + ds_type("HK_Filter", [ + alternative("hk_filter", [ + component(string, "filter_name"), + component(string, "filter_string") + ]) + ]), ds_type("HK_Viewer", [ enum("list_view_all"), alternative("list_view", [ component(string, "view_name"), component(list, string, "columns"), + component(list, extern_type("HK_Filter", view_types+"hk_filter.anubis"), "l_filter"), component(extern_type("WEB_Action_Name", "calexium_lib/web/types/web_action_name.anubis"), "link_id_action") ]) ]), @@ -232,7 +239,7 @@ public define List(DS_Type_File) hayamiki_lib_types_description = ds_type("HK_Form", no_message, [ alternative("hk_form_in_list", [ component(string, "table_name", comment("database table name which belonging this form")), - component(string, "view_name", comment("name of the view")), + component(string, "view_name", comment("name of the view")), component(list, extern_type("HK_Form_Entry", view_types+"hk_form_entry.anubis"), "list"), component(list, extern_type("HK_Form_Tab", view_types+"hk_form_tab.anubis"), "tabs") ]), diff --git a/model/display.anubis b/model/display.anubis index d2ef88f..9b36ec7 100644 --- a/model/display.anubis +++ b/model/display.anubis @@ -15,6 +15,7 @@ transmit hayamiki_lib/view/types/hk_display.anubis transmit hayamiki_lib/view/types/hk_viewer.anubis transmit hayamiki_lib/view/types/hk_editor.anubis transmit hayamiki_lib/view/types/hk_fk_view.anubis +transmit hayamiki_lib/view/types/hk_filter.anubis transmit hayamiki_lib/model/types/hk_icon.anubis public define HK_Viewer @@ -23,9 +24,17 @@ public define HK_Viewer String view_name, List(String) columns )= - list_view(view_name, columns, no_action). - + list_view(view_name, columns, [], no_action). +public define HK_Viewer + list_view + ( + String view_name, + List(String) columns, + List(HK_Filter) l_filter + )= + list_view(view_name, columns, l_filter, no_action). + public define HK_Editor edit_view_list_form ( diff --git a/model/types/hk_app.anubis b/model/types/hk_app.anubis index 8d99a66..7b72b2f 100644 --- a/model/types/hk_app.anubis +++ b/model/types/hk_app.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_app_name.anubis b/model/types/hk_app_name.anubis index 673cc4d..af98f7b 100644 --- a/model/types/hk_app_name.anubis +++ b/model/types/hk_app_name.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_database.anubis b/model/types/hk_database.anubis index 4c88ccc..4353b38 100644 --- a/model/types/hk_database.anubis +++ b/model/types/hk_database.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_datetime_field_attr.anubis b/model/types/hk_datetime_field_attr.anubis index ff99d26..c34f9ea 100644 --- a/model/types/hk_datetime_field_attr.anubis +++ b/model/types/hk_datetime_field_attr.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_help_text.anubis b/model/types/hk_help_text.anubis index 37633a0..6caeb8e 100644 --- a/model/types/hk_help_text.anubis +++ b/model/types/hk_help_text.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_icon.anubis b/model/types/hk_icon.anubis index f542b88..517c644 100644 --- a/model/types/hk_icon.anubis +++ b/model/types/hk_icon.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_int_choice.anubis b/model/types/hk_int_choice.anubis index 39f0e2f..0b0f89f 100644 --- a/model/types/hk_int_choice.anubis +++ b/model/types/hk_int_choice.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_int_choices.anubis b/model/types/hk_int_choices.anubis index 2b92366..aa7cca8 100644 --- a/model/types/hk_int_choices.anubis +++ b/model/types/hk_int_choices.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_model.anubis b/model/types/hk_model.anubis index cf089f4..e42cb63 100644 --- a/model/types/hk_model.anubis +++ b/model/types/hk_model.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_model_attr.anubis b/model/types/hk_model_attr.anubis index a731e88..0d127b8 100644 --- a/model/types/hk_model_attr.anubis +++ b/model/types/hk_model_attr.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_model_column.anubis b/model/types/hk_model_column.anubis index dd45334..2fc9dc9 100644 --- a/model/types/hk_model_column.anubis +++ b/model/types/hk_model_column.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_model_field.anubis b/model/types/hk_model_field.anubis index ee278db..b56fc18 100644 --- a/model/types/hk_model_field.anubis +++ b/model/types/hk_model_field.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-05-02 - * Time: 10:06:16 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_table.anubis b/model/types/hk_table.anubis index 789e0f9..411ffea 100644 --- a/model/types/hk_table.anubis +++ b/model/types/hk_table.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_text_choice.anubis b/model/types/hk_text_choice.anubis index 55ff9b5..db0a5ee 100644 --- a/model/types/hk_text_choice.anubis +++ b/model/types/hk_text_choice.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_text_choices.anubis b/model/types/hk_text_choices.anubis index 98b89ba..2ed696c 100644 --- a/model/types/hk_text_choices.anubis +++ b/model/types/hk_text_choices.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/model/types/hk_text_field_attr.anubis b/model/types/hk_text_field_attr.anubis index eb4fdfe..ef88b59 100644 --- a/model/types/hk_text_field_attr.anubis +++ b/model/types/hk_text_field_attr.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/view/types/hk_display.anubis b/view/types/hk_display.anubis index 01c61c4..76677a9 100644 --- a/view/types/hk_display.anubis +++ b/view/types/hk_display.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/view/types/hk_editor.anubis b/view/types/hk_editor.anubis index f2a30d5..e3cc1a6 100644 --- a/view/types/hk_editor.anubis +++ b/view/types/hk_editor.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/view/types/hk_editor_table.anubis b/view/types/hk_editor_table.anubis index 7f7d666..a5ac927 100644 --- a/view/types/hk_editor_table.anubis +++ b/view/types/hk_editor_table.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-28 - * Time: 18:53:19 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/view/types/hk_filter.anubis b/view/types/hk_filter.anubis new file mode 100644 index 0000000..14ca289 --- /dev/null +++ b/view/types/hk_filter.anubis @@ -0,0 +1,71 @@ +/* + * Created by 伝作 (Densaku). + * Types & Messages generator written by フランスのトトロ aka (David RENÉ) + * Date: 2017-05-19 + * Time: 09:34:01 + * + */ + +transmit system/muscle.anubis +transmit system/convert.anubis +transmit tools/basis.anubis + + + + +public type HK_Filter: + hk_filter( + String filter_name, + String filter_string + ) +. + + HK_Filter message format + ======================== + + +public define Message + to_Message + ( + HK_Filter _hk_filter + )= + with _hk_filter_message = message((Word32)0), // + forget(add_string(_hk_filter_message, "__TYPE__", "HK_Filter")); + if _hk_filter is + { + //Alternative hk_filter + hk_filter(_filter_name, _filter_string) then + forget(add_string(_hk_filter_message, "__TYPE_ALT__", "hk_filter")); + // [type = String] hk_filter.filter_name + forget(add_string(_hk_filter_message, "filter_name", _filter_name)); + // [type = String] hk_filter.filter_string + forget(add_string(_hk_filter_message, "filter_string", _filter_string)), + + }; + _hk_filter_message +. + +public define Maybe(HK_Filter) + from_Message + ( + Message _hk_filter_message + )= + if find_string(_hk_filter_message, "__TYPE__") is {failure then failure, success(__type__) then + if find_string(_hk_filter_message, "__TYPE_ALT__") is {failure then failure, success(__type_alt__) then + if __type__ = "HK_Filter" then + //Alternative hk_filter + if __type_alt__ = "hk_filter" then //Alternative hk_filter + // [type = String] hk_filter.filter_name + if find_string(_hk_filter_message, "filter_name") is {failure then failure, success(_filter_name_) then + // [type = String] hk_filter.filter_string + if find_string(_hk_filter_message, "filter_string") is {failure then failure, success(_filter_string_) then + + success(hk_filter(_filter_name_, _filter_string_)) + }} + else + failure //No valid Alternative found ! + else + failure //Type not found in message ! + }} +. + diff --git a/view/types/hk_fk_view.anubis b/view/types/hk_fk_view.anubis index d1c6c05..8a39a8b 100644 --- a/view/types/hk_fk_view.anubis +++ b/view/types/hk_fk_view.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/view/types/hk_form.anubis b/view/types/hk_form.anubis index 452dbf4..48e5c92 100644 --- a/view/types/hk_form.anubis +++ b/view/types/hk_form.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/view/types/hk_form_tab.anubis b/view/types/hk_form_tab.anubis index 25258c2..1b77b93 100644 --- a/view/types/hk_form_tab.anubis +++ b/view/types/hk_form_tab.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/view/types/hk_form_table.anubis b/view/types/hk_form_table.anubis index b601787..26f35bd 100644 --- a/view/types/hk_form_table.anubis +++ b/view/types/hk_form_table.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-28 - * Time: 18:53:20 + * Date: 2017-05-19 + * Time: 09:24:24 * */ diff --git a/view/types/hk_viewer.anubis b/view/types/hk_viewer.anubis index 5f42055..20cb3c2 100644 --- a/view/types/hk_viewer.anubis +++ b/view/types/hk_viewer.anubis @@ -1,8 +1,8 @@ /* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) - * Date: 2017-04-12 - * Time: 23:52:21 + * Date: 2017-05-19 + * Time: 09:24:24 * */ @@ -11,6 +11,7 @@ transmit system/convert.anubis transmit tools/basis.anubis transmit calexium_lib/web/types/web_action_name.anubis +transmit hayamiki_lib/view/types/hk_filter.anubis @@ -19,6 +20,7 @@ public type HK_Viewer: list_view( String view_name, List(String) columns, + List(HK_Filter) l_filter, WEB_Action_Name link_id_action ) . @@ -41,12 +43,14 @@ public define Message forget(add_string(_hk_viewer_message, "__TYPE_ALT__", "list_view_all")), //Alternative list_view - list_view(_view_name, __columns, _link_id_action) then + list_view(_view_name, __columns, __l_filter, _link_id_action) then forget(add_string(_hk_viewer_message, "__TYPE_ALT__", "list_view")); // [type = String] list_view.view_name forget(add_string(_hk_viewer_message, "view_name", _view_name)); // [type = List(String)] list_view.columns map_forget((String _columns) |-> add_string(_hk_viewer_message, "columns", _columns), __columns); + // [type = List(HK_Filter)] list_view.l_filter + map_forget((HK_Filter _l_filter) |-> add_message(_hk_viewer_message, "l_filter", to_Message(_l_filter)), __l_filter); // [type = WEB_Action_Name] list_view.link_id_action forget(add_message(_hk_viewer_message, "link_id_action", to_Message(_link_id_action))), @@ -71,12 +75,15 @@ public define Maybe(HK_Viewer) if find_string(_hk_viewer_message, "view_name") is {failure then failure, success(_view_name_) then // [type = List(String)] list_view.columns with _columns_ = find_string_list(_hk_viewer_message, "columns"), + // [type = List(HK_Filter)] list_view.l_filter + with mb__l_filter_ = map_escape(( Message msg ) |-> (Maybe(HK_Filter)) from_Message(msg), find_messages(_hk_viewer_message, "l_filter")), + if mb__l_filter_ is {failure then failure, success(_l_filter_) then // [type = WEB_Action_Name] list_view.link_id_action if find_message(_hk_viewer_message, "link_id_action") is {failure then failure, success(_link_id_action__msg) then if (Maybe(WEB_Action_Name))from_Message(_link_id_action__msg) is {failure then failure, success(_link_id_action_) then - success(list_view(_view_name_, _columns_, _link_id_action_)) - }}} + success(list_view(_view_name_, _columns_, _l_filter_, _link_id_action_)) + }}}} else failure //No valid Alternative found ! else -- libgit2 0.21.4