diff --git a/ds_files/ds_types.anubis b/ds_files/ds_types.anubis index 53326ce..7e33e5a 100644 --- a/ds_files/ds_types.anubis +++ b/ds_files/ds_types.anubis @@ -91,8 +91,9 @@ public define List(DS_Type_File) hayamiki_lib_types_description = [ component(extern_type("HK_App_Name", model_types+"hk_app_name.anubis"), "app_name"), component(string, "table_name"), - component(list, string, "searchable_fields"), - component(list, extern_type("HK_Foreign_Key_Clause", model_types+"hk_foreign_key_clause.anubis"), "hk_fk_clause"), + component(list, string, "searchable_fields", comment("if that list contain any string, this is means we use the drop down with input field. if one of the string is \"__HK_SHOW_STRING__\" this is means we search also in show_string ")), + component(list, extern_type("HK_Foreign_Key_Active_Filter", model_types+"hk_foreign_key_active_filter.anubis"), "hk_fk_active_filter", comment("make dependence of foreign key with another fk entris on current table")), + component(list, extern_type("HK_Foreign_Key_Clause", model_types+"hk_foreign_key_clause.anubis"), "hk_fk_clause", comment("on_delete, on_update")), ]), alternative("integer_field", [ component(extern_type("HK_Int_Choices", model_types+"hk_int_choices.anubis"), "choices", comment("integer of arbitrary size ")), @@ -140,7 +141,14 @@ public define List(DS_Type_File) hayamiki_lib_types_description = ]), alternative("on_update", [ component(extern_type("HK_Foreign_Key_Clause_On_Directive", model_types+"hk_foreign_key_clause_on_directive.anubis"), "on_update") - ]) + ]) + ]), + + ds_type("HK_Foreign_Key_Active_Filter", [ + alternative("active_filter", [ + component(string, "column"), + component(string, "fk_column") + ]) ]), ds_type("HK_Int_Choices", [ @@ -228,8 +236,8 @@ 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") + component(string, "filter_name", comment("name of the filter which will be display on dropdown")), + component(string, "filter_string", comment("filter in sql format after WHERE")) ]) ]), @@ -253,10 +261,6 @@ public define List(DS_Type_File) hayamiki_lib_types_description = - - - - ds_type("HK_Editor", [ enum("edit_view_all"), alternative("edit_view_list_form", [ diff --git a/model/fields.anubis b/model/fields.anubis index a260878..ca3db13 100644 --- a/model/fields.anubis +++ b/model/fields.anubis @@ -188,7 +188,7 @@ public define HK_Model_Field ( String table_name )= - foreign_key(this, table_name, [], []). + foreign_key(this, table_name, [], [], []). public define HK_Model_Field @@ -197,7 +197,7 @@ public define HK_Model_Field HK_App_Name hk_app_name, String table_name )= - foreign_key(hk_app_name, table_name, [], []). + foreign_key(hk_app_name, table_name, [], [], []). public define HK_Model_Field foreign_key @@ -206,7 +206,7 @@ public define HK_Model_Field String table_name, List(String) searchable_fields )= - foreign_key(hk_app_name, table_name, searchable_fields, []). + foreign_key(hk_app_name, table_name, searchable_fields, [], []). public define HK_Model_Field foreign_key @@ -215,7 +215,7 @@ public define HK_Model_Field String table_name, List(HK_Foreign_Key_Clause) fk_clause )= - foreign_key(hk_app_name, table_name, [], fk_clause). + foreign_key(hk_app_name, table_name, [], [], fk_clause). public define HK_Model_Field foreign_key @@ -223,7 +223,7 @@ public define HK_Model_Field String table_name, List(String) searchable_fields )= - foreign_key(this, table_name, searchable_fields, []) + foreign_key(this, table_name, searchable_fields, [], []) . public define HK_Model_Field @@ -233,7 +233,7 @@ public define HK_Model_Field List(String) searchable_fields, List(HK_Foreign_Key_Clause) fk_clause )= - foreign_key(this, table_name, searchable_fields, fk_clause) + foreign_key(this, table_name, searchable_fields, [], fk_clause) . public define HK_Model_Field @@ -242,7 +242,7 @@ public define HK_Model_Field String table_name, List(HK_Foreign_Key_Clause) fk_clause )= - foreign_key(this, table_name, [], fk_clause) + foreign_key(this, table_name, [], [], fk_clause) . public define HK_Model_Field @@ -309,7 +309,7 @@ public define JsonValue json_member("dt_attribute", json_string(to_String(attr))) ], - foreign_key(app_name, table_name, _, _) then // foreign key to 'id' in another (or same) table and column_name for choice selector. + foreign_key(app_name, table_name, _, _, _) then // foreign key to 'id' in another (or same) table and column_name for choice selector. [ json_member("type", json_string("foreign_key")), json_member("app_name", to_JSON(app_name)), json_member("table_name", json_string(table_name)), diff --git a/model/types/hk_foreign_key_active_filter.anubis b/model/types/hk_foreign_key_active_filter.anubis new file mode 100644 index 0000000..97d2c76 --- /dev/null +++ b/model/types/hk_foreign_key_active_filter.anubis @@ -0,0 +1,71 @@ +/* + * Created by 伝作 (Densaku). + * Types & Messages generator written by フランスのトトロ aka (David RENÉ) + * Date: 2019-07-14 + * Time: 16:15:41 + * + */ + +transmit system/muscle.anubis +transmit system/convert.anubis +transmit tools/basis.anubis + + + + +public type HK_Foreign_Key_Active_Filter: + active_filter( + String column, + String fk_column + ) +. + + HK_Foreign_Key_Active_Filter message format + =========================================== + + +public define Message + to_Message + ( + HK_Foreign_Key_Active_Filter _hk_foreign_key_active_filter + )= + with _hk_foreign_key_active_filter_message = message((Word32)0), // + forget(add_string(_hk_foreign_key_active_filter_message, "__TYPE__", "HK_Foreign_Key_Active_Filter")); + if _hk_foreign_key_active_filter is + { + //Alternative active_filter + active_filter(_column, _fk_column) then + forget(add_string(_hk_foreign_key_active_filter_message, "__TYPE_ALT__", "active_filter")); + // [type = String] active_filter.column + forget(add_string(_hk_foreign_key_active_filter_message, "column", _column)); + // [type = String] active_filter.fk_column + forget(add_string(_hk_foreign_key_active_filter_message, "fk_column", _fk_column)), + + }; + _hk_foreign_key_active_filter_message +. + +public define Maybe(HK_Foreign_Key_Active_Filter) + from_Message + ( + Message _hk_foreign_key_active_filter_message + )= + if find_string(_hk_foreign_key_active_filter_message, "__TYPE__") is {failure then failure, success(__type__) then + if find_string(_hk_foreign_key_active_filter_message, "__TYPE_ALT__") is {failure then failure, success(__type_alt__) then + if __type__ = "HK_Foreign_Key_Active_Filter" then + //Alternative active_filter + if __type_alt__ = "active_filter" then //Alternative active_filter + // [type = String] active_filter.column + if find_string(_hk_foreign_key_active_filter_message, "column") is {failure then failure, success(_column_) then + // [type = String] active_filter.fk_column + if find_string(_hk_foreign_key_active_filter_message, "fk_column") is {failure then failure, success(_fk_column_) then + + success(active_filter(_column_, _fk_column_)) + }} + else + failure //No valid Alternative found ! + else + failure //Type not found in message ! + }} +. + diff --git a/model/types/hk_model_field.anubis b/model/types/hk_model_field.anubis index ebfbc16..f10c980 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: 2018-11-10 - * Time: 17:14:38 + * Date: 2019-07-14 + * Time: 16:15:41 * */ @@ -15,55 +15,57 @@ transmit hayamiki_lib/model/types/hk_text_field_attr.anubis transmit hayamiki_lib/model/types/hk_text_choices.anubis transmit hayamiki_lib/model/types/hk_int_choices.anubis transmit hayamiki_lib/model/types/hk_foreign_key_clause.anubis +transmit hayamiki_lib/model/types/hk_foreign_key_active_filter.anubis transmit hayamiki_lib/model/types/hk_app_name.anubis transmit hayamiki_lib/model/types/hk_datetime_field_attr.anubis public type HK_Model_Field: - p_key, - boolean_field, //true or false + p_key, + boolean_field, //true or false date_field( - HK_Datetime_Field_Attr hk_dt_f_attr //date with the precision of the day + HK_Datetime_Field_Attr hk_dt_f_attr //date with the precision of the day ), time_field( - HK_Datetime_Field_Attr hk_dt_f_attr //time with the precision of the second + HK_Datetime_Field_Attr hk_dt_f_attr //time with the precision of the second ), datetime_field( - HK_Datetime_Field_Attr hk_dt_f_attr //datetime with the precision of the second + HK_Datetime_Field_Attr hk_dt_f_attr //datetime with the precision of the second ), //foreign key to 'id' in another (or same) table and column_name for choice selector) foreign_key( - HK_App_Name app_name, - String table_name, - List(String) searchable_fields, - List(HK_Foreign_Key_Clause) hk_fk_clause + HK_App_Name app_name, + String table_name, + List(String) searchable_fields, //if that list contain any string, this is means we use the drop down with input field. if one of the string is "__HK_SHOW_STRING__" this is means we search also in show_string + List(HK_Foreign_Key_Active_Filter) hk_fk_active_filter, //make dependence of foreign key with another fk entris on current table + List(HK_Foreign_Key_Clause) hk_fk_clause //on_delete, on_update ), integer_field( - HK_Int_Choices choices //integer of arbitrary size + HK_Int_Choices choices //integer of arbitrary size ), - float_field, + float_field, char_field( - HK_Text_Choices choices, - Int size //text of maximal size 'size' (number of characters) + HK_Text_Choices choices, + Int size //text of maximal size 'size' (number of characters) ), password_field( - Int min_size //the password field doesn't show the password string or store it in hashed version into database + Int min_size //the password field doesn't show the password string or store it in hashed version into database ), //text of variable size text_field( - HK_Text_Field_Attr hk_text_field_attr + HK_Text_Field_Attr hk_text_field_attr ), - color_field, //String which representing RGBA color like HTML + color_field, //String which representing RGBA color like HTML //phone field phone_field( - HK_Phone_Field_Attr hk_ph_f_attr //phone line number type like (cellphone, landline, fax, etc) + HK_Phone_Field_Attr hk_ph_f_attr //phone line number type like (cellphone, landline, fax, etc) ), - url_field, //url field for website and so forth - email_field //email field + url_field, //url field for website and so forth + email_field //email field . HK_Model_Field message format @@ -107,7 +109,7 @@ public define Message //Alternative foreign_key //foreign key to 'id' in another (or same) table and column_name for choice selector) - foreign_key(_app_name, _table_name, __searchable_fields, __hk_fk_clause) then + foreign_key(_app_name, _table_name, __searchable_fields, __hk_fk_active_filter, __hk_fk_clause) then forget(add_string(_hk_model_field_message, "__TYPE_ALT__", "foreign_key")); // [type = HK_App_Name] foreign_key.app_name forget(add_message(_hk_model_field_message, "app_name", to_Message(_app_name))); @@ -115,6 +117,8 @@ public define Message forget(add_string(_hk_model_field_message, "table_name", _table_name)); // [type = List(String)] foreign_key.searchable_fields map_forget((String _searchable_fields) |-> add_string(_hk_model_field_message, "searchable_fields", _searchable_fields), __searchable_fields); + // [type = List(HK_Foreign_Key_Active_Filter)] foreign_key.hk_fk_active_filter + map_forget((HK_Foreign_Key_Active_Filter _hk_fk_active_filter) |-> add_message(_hk_model_field_message, "hk_fk_active_filter", to_Message(_hk_fk_active_filter)), __hk_fk_active_filter); // [type = List(HK_Foreign_Key_Clause)] foreign_key.hk_fk_clause map_forget((HK_Foreign_Key_Clause _hk_fk_clause) |-> add_message(_hk_model_field_message, "hk_fk_clause", to_Message(_hk_fk_clause)), __hk_fk_clause), @@ -220,12 +224,15 @@ public define Maybe(HK_Model_Field) if find_string(_hk_model_field_message, "table_name") is {failure then failure, success(_table_name_) then // [type = List(String)] foreign_key.searchable_fields with _searchable_fields_ = find_string_list(_hk_model_field_message, "searchable_fields"), + // [type = List(HK_Foreign_Key_Active_Filter)] foreign_key.hk_fk_active_filter + with mb__hk_fk_active_filter_ = map_escape(( Message msg ) |-> (Maybe(HK_Foreign_Key_Active_Filter)) from_Message(msg), find_messages(_hk_model_field_message, "hk_fk_active_filter")), + if mb__hk_fk_active_filter_ is {failure then failure, success(_hk_fk_active_filter_) then // [type = List(HK_Foreign_Key_Clause)] foreign_key.hk_fk_clause with mb__hk_fk_clause_ = map_escape(( Message msg ) |-> (Maybe(HK_Foreign_Key_Clause)) from_Message(msg), find_messages(_hk_model_field_message, "hk_fk_clause")), if mb__hk_fk_clause_ is {failure then failure, success(_hk_fk_clause_) then - success(foreign_key(_app_name_, _table_name_, _searchable_fields_, _hk_fk_clause_)) - }}}} + success(foreign_key(_app_name_, _table_name_, _searchable_fields_, _hk_fk_active_filter_, _hk_fk_clause_)) + }}}}} else //Alternative integer_field if __type_alt__ = "integer_field" then //Alternative integer_field // [type = HK_Int_Choices] integer_field.choices -- libgit2 0.21.4