Commit 6cf67b09e781c09f8475c678ba69991772066a76
1 parent
204b0087
add HK_List_View type in db_display. Now we can define a set of named view list display
add some icon add to_Icon for bool value which become red cross for false and green check for true
Showing
2 changed files
with
145 additions
and
34 deletions
Show diff stats
database/model/db_model.anubis
| ... | ... | @@ -6,7 +6,7 @@ |
| 6 | 6 | * © Calexium |
| 7 | 7 | */ |
| 8 | 8 | |
| 9 | - The Anubis project | |
| 9 | + The HayamiKi (早見木) project | |
| 10 | 10 | |
| 11 | 11 | Interfacing and generating a database with Anubis |
| 12 | 12 | |
| ... | ... | @@ -82,14 +82,16 @@ public type DB_Model_Attr: |
| 82 | 82 | unique, // by default, the values in a column are not required to be all different |
| 83 | 83 | indexed, // by default, a column is not indexed |
| 84 | 84 | default(String). // default value (used in case of creation of a NON NULL column |
| 85 | - // in a table which already contains some rows) | |
| 85 | + // in a table which already contains some rows) | |
| 86 | 86 | |
| 87 | 87 | public type DB_Help_Text: |
| 88 | 88 | no_help_text, //no help text available |
| 89 | - help_text_TAG(String), //TAG | |
| 90 | - help_text(String). //TAG | |
| 89 | + help_text_TAG(String), //TAG use with Anubis translation tool /locale/L3.anubis | |
| 90 | + help_text(String). //pure text to show | |
| 91 | 91 | |
| 92 | 92 | public define String |
| 93 | +/* Return the Anubis source of the type component | |
| 94 | +*/ | |
| 93 | 95 | to_Anubis_source |
| 94 | 96 | ( |
| 95 | 97 | DB_Help_Text help |
| ... | ... | @@ -117,6 +119,9 @@ public type DB_Model_Column: |
| 117 | 119 | ). |
| 118 | 120 | |
| 119 | 121 | public define DB_Model_Column |
| 122 | +/* Constructor helper for db_column without help attribute. | |
| 123 | + the real type constructor will be called with the attribute no_help_text | |
| 124 | +*/ | |
| 120 | 125 | db_column |
| 121 | 126 | ( |
| 122 | 127 | String name, |
| ... | ... | @@ -142,10 +147,18 @@ public type DB_Model: |
| 142 | 147 | db_model( List(DB_Model_Column) columns, // columns other than the primary key column (if any) |
| 143 | 148 | String show_string). |
| 144 | 149 | |
| 150 | +public type HK_List_View: | |
| 151 | + list_view_all, | |
| 152 | + list_view(String view_name, List(String) columns). | |
| 145 | 153 | |
| 154 | +public type HK_Edit_View: | |
| 155 | + edit_view_all, | |
| 156 | + edit_view(String view_name, List(String) columns). | |
| 157 | + | |
| 146 | 158 | public type DB_Display: |
| 147 | - db_display(List(String) list_view, | |
| 148 | - List(String) edit_view). | |
| 159 | + db_display(List(HK_List_View) list_views, | |
| 160 | + //List(HK_Edit_View) edit_views | |
| 161 | + List(String)). | |
| 149 | 162 | |
| 150 | 163 | public type DB_Table: |
| 151 | 164 | db_table ( String name, // name of the table |
| ... | ... | @@ -195,7 +208,7 @@ read tools/basis.anubis |
| 195 | 208 | read tools/base64.anubis |
| 196 | 209 | read system/string.anubis |
| 197 | 210 | read tools/ISO-8601.anubis |
| 198 | - | |
| 211 | +read calexium_lib/web/widgets/icons_set.anubis | |
| 199 | 212 | |
| 200 | 213 | *** [1] Tools. |
| 201 | 214 | |
| ... | ... | @@ -422,30 +435,45 @@ public define String |
| 422 | 435 | text_field then "get_String(lwa, \""+name+"\")" |
| 423 | 436 | }. |
| 424 | 437 | |
| 425 | -public define List(String) | |
| 426 | -/** | |
| 438 | +define List(String) | |
| 439 | +/* return the list of all columns name | |
| 427 | 440 | */ |
| 428 | - components | |
| 441 | + _to_List_String | |
| 429 | 442 | ( |
| 430 | 443 | List(DB_Model_Column) columns, |
| 444 | + Bool with_pk, | |
| 431 | 445 | List(String) so_far |
| 432 | 446 | )= |
| 433 | 447 | if columns is |
| 434 | 448 | { |
| 435 | 449 | [] then reverse(so_far), |
| 436 | 450 | [h . t ] then |
| 437 | - since h is db_column(name, col_type, _, _), | |
| 438 | - components(t, [ name . so_far]) | |
| 451 | + since h is db_column(name, _, _, _), | |
| 452 | + if name = "id" & with_pk = false then | |
| 453 | + _to_List_String(t, with_pk, so_far) | |
| 454 | + else | |
| 455 | + _to_List_String(t, with_pk, [ name . so_far]) | |
| 439 | 456 | }. |
| 440 | 457 | |
| 458 | +public define List(String) | |
| 459 | +/* return the list of all columns name | |
| 460 | + */ | |
| 461 | + to_List_String | |
| 462 | + ( | |
| 463 | + List(DB_Model_Column) columns, | |
| 464 | + Bool with_pk | |
| 465 | + )= | |
| 466 | + _to_List_String(columns, with_pk, []). | |
| 467 | + | |
| 468 | + | |
| 441 | 469 | public define String |
| 442 | 470 | generate_constructor |
| 443 | 471 | ( |
| 444 | - String constructor_name, | |
| 472 | + String constructor_name, | |
| 445 | 473 | List(DB_Model_Column) columns, |
| 446 | - String indent | |
| 474 | + String indent | |
| 447 | 475 | )= |
| 448 | - indent+constructor_name+"(\n"+indent+" "+join(",\n"+indent+" ", components(columns, []))+")". | |
| 476 | + indent+constructor_name+"(\n"+indent+" "+join(",\n"+indent+" ", to_List_String(columns, true))+")". | |
| 449 | 477 | |
| 450 | 478 | public define String |
| 451 | 479 | to_Bind |
| ... | ... | @@ -673,7 +701,7 @@ public define Maybe(DB_Model_Column) |
| 673 | 701 | }. |
| 674 | 702 | |
| 675 | 703 | public define String |
| 676 | -/** to_String return the String | |
| 704 | +/** to_String return the String of the given model of the column 'col' | |
| 677 | 705 | */ |
| 678 | 706 | to_String |
| 679 | 707 | ( |
| ... | ... | @@ -696,10 +724,51 @@ public define String |
| 696 | 724 | char_field(Int size) then current_type_name+"."+name, |
| 697 | 725 | text_field then current_type_name+"."+name |
| 698 | 726 | }. |
| 699 | - | |
| 727 | + | |
| 728 | +public define String | |
| 729 | +/** to_String return the String of the given model of the column 'col' | |
| 730 | + */ | |
| 731 | + to_Icon | |
| 732 | + ( | |
| 733 | + DB_Model_Column col, | |
| 734 | + String current_type_name, | |
| 735 | + String general_type_name | |
| 736 | + ) = | |
| 737 | + since col is db_column(name, col_type, _, _), | |
| 738 | + if col_type is | |
| 739 | + { | |
| 740 | + p_key then icn16_key, | |
| 741 | + boolean_field then "to_Icon("+current_type_name+"."+name+")", | |
| 742 | + date_field(attrs) then icn16_clock, | |
| 743 | + time_field(attrs) then icn16_clock, | |
| 744 | + datetime_field(attrs) then icn16_clock, | |
| 745 | + foreign_key(foreign_table) then icn16_question, | |
| 746 | + integer_field then icn16_question, | |
| 747 | + char_field(Int size) then icn16_question, | |
| 748 | + text_field then icn16_question | |
| 749 | + }. | |
| 750 | + | |
| 700 | 751 | public define String |
| 701 | 752 | to_HTML_cell_text |
| 702 | 753 | ( |
| 754 | + DB_Model_Column column, | |
| 755 | + String data_name, | |
| 756 | + String general_type_name | |
| 757 | + )= | |
| 758 | + "text("+to_String(column, data_name, general_type_name)+")". | |
| 759 | + | |
| 760 | +public define String | |
| 761 | + to_HTML_cell_link | |
| 762 | + ( | |
| 763 | + DB_Model_Column column, | |
| 764 | + String data_name, | |
| 765 | + String general_type_name | |
| 766 | + )= | |
| 767 | + "link(to_String("+data_name+".id), "+to_String(column, data_name, general_type_name)+")". | |
| 768 | + | |
| 769 | +public define String | |
| 770 | + to_HTML_cell_link | |
| 771 | + ( | |
| 703 | 772 | List(DB_Model_Column) columns, |
| 704 | 773 | String column_name, |
| 705 | 774 | String data_name, |
| ... | ... | @@ -708,11 +777,21 @@ public define String |
| 708 | 777 | if get_column_type(columns, column_name) is |
| 709 | 778 | { |
| 710 | 779 | failure then "column name "+column_name+"doesn't exist", |
| 711 | - success(column) then "text("+to_String(column, data_name, general_type_name)+")" | |
| 780 | + success(column) then to_HTML_cell_link(column, data_name, general_type_name) | |
| 712 | 781 | }. |
| 713 | 782 | |
| 714 | 783 | public define String |
| 715 | - to_HTML_cell_link | |
| 784 | + to_HTML_cell_icon | |
| 785 | + ( | |
| 786 | + DB_Model_Column column, | |
| 787 | + String data_name, | |
| 788 | + String general_type_name | |
| 789 | + )= | |
| 790 | + "icon("+to_Icon(column, data_name, general_type_name)+")". | |
| 791 | + | |
| 792 | + | |
| 793 | +public define String | |
| 794 | + to_HTML_cell | |
| 716 | 795 | ( |
| 717 | 796 | List(DB_Model_Column) columns, |
| 718 | 797 | String column_name, |
| ... | ... | @@ -722,28 +801,50 @@ public define String |
| 722 | 801 | if get_column_type(columns, column_name) is |
| 723 | 802 | { |
| 724 | 803 | failure then "column name "+column_name+"doesn't exist", |
| 725 | - success(column) then "link(to_String("+data_name+".id), "+to_String(column, data_name, general_type_name)+")" | |
| 804 | + success(column) then | |
| 805 | + since column is db_column(name, col_type, _, _), | |
| 806 | + if col_type is | |
| 807 | + { | |
| 808 | + //anubis(_T) then "constant_byte_array(0,0)", | |
| 809 | + p_key then to_HTML_cell_link(column, data_name, general_type_name), | |
| 810 | + //binary then "constant_byte_array(0,0)", | |
| 811 | + boolean_field then to_HTML_cell_icon(column, data_name, general_type_name), | |
| 812 | + date_field(attrs) then to_HTML_cell_text(column, data_name, general_type_name), | |
| 813 | + time_field(attrs) then to_HTML_cell_text(column, data_name, general_type_name), | |
| 814 | + datetime_field(attrs) then to_HTML_cell_text(column, data_name, general_type_name), | |
| 815 | + foreign_key(foreign_table) then to_HTML_cell_text(column, data_name, general_type_name), | |
| 816 | + integer_field then to_HTML_cell_text(column, data_name, general_type_name), | |
| 817 | + char_field(Int size) then to_HTML_cell_text(column, data_name, general_type_name), | |
| 818 | + text_field then to_HTML_cell_text(column, data_name, general_type_name), | |
| 819 | + } | |
| 726 | 820 | }. |
| 727 | 821 | |
| 728 | 822 | public define String |
| 729 | 823 | make_list_view_row |
| 730 | 824 | ( |
| 731 | - DB_Table table, | |
| 732 | - String data_name, | |
| 733 | - String indent | |
| 825 | + DB_Table table, //table to format | |
| 826 | + String data_name, //name of data | |
| 827 | + String indent, //indentation string to use | |
| 828 | + HK_List_View list_view //list view to generate | |
| 734 | 829 | )= |
| 735 | - since table is db_table(name, model, display), | |
| 736 | - since model is db_model( columns, _), | |
| 737 | - since display is db_display(list_view, _), | |
| 738 | - if list_view is | |
| 830 | + since table is db_table(table_name, model, _), //get name and model of the table | |
| 831 | + since model is db_model( columns, _), //get all columns of table | |
| 832 | +// since display is db_display(views, _), // | |
| 833 | + with current_list_column = if list_view is | |
| 834 | + { | |
| 835 | + list_view_all then to_List_String(columns, false), //generate a list of columns string to view from columns model | |
| 836 | + list_view(v_name, v_col) then v_col | |
| 837 | + }, | |
| 838 | + | |
| 839 | + if current_list_column is | |
| 739 | 840 | { |
| 740 | 841 | [] then "", |
| 741 | 842 | [h . t] then |
| 742 | 843 | indent+join(",\n"+indent, |
| 743 | 844 | //Make first column as link |
| 744 | - [to_HTML_cell_link(columns, h, data_name, name)] + | |
| 845 | + [to_HTML_cell_link(columns, h, data_name, table_name)] + | |
| 745 | 846 | |
| 746 | 847 | //and the other set with list_view |
| 747 | - map((String column_name) |-> to_HTML_cell_text(columns, column_name, data_name, name), t) | |
| 848 | + map((String column_name) |-> to_HTML_cell(columns, column_name, data_name, table_name), t) | |
| 748 | 849 | ) |
| 749 | 850 | }. | ... | ... |
web/widgets/icons_set.anubis
| ... | ... | @@ -6,15 +6,23 @@ |
| 6 | 6 | * © Calexium |
| 7 | 7 | */ |
| 8 | 8 | |
| 9 | -public define String icn16_cross = "icons/16x16/cross.png". | |
| 10 | -public define String icn16_edit = "icons/16x16/edit.png". | |
| 11 | -public define String icn16_check = "icons/16x16/check.png". | |
| 12 | -public define String icn16_phone = "icons/16x16/phone.png". | |
| 13 | -public define String icn16_locked = "icons/16x16/locked.png". | |
| 9 | + | |
| 10 | +public define String icn16_edit = "icons/16x16/edit.png". | |
| 11 | +public define String icn16_calendar = "icons/16x16/calendar.png". | |
| 12 | +public define String icn16_check = "icons/16x16/check.png". | |
| 14 | 13 | public define String icn16_clock = "icons/16x16/clock.png". |
| 14 | +public define String icn16_cross = "icons/16x16/cross.png". | |
| 15 | +public define String icn16_key = "icons/16x16/key.png". | |
| 16 | +public define String icn16_locked = "icons/16x16/locked.png". | |
| 17 | +public define String icn16_phone = "icons/16x16/phone.png". | |
| 15 | 18 | public define String icn16_vcard_add = "icons/16x16/vcard_add.png". |
| 16 | 19 | public define String icn16_folder_edit = "icons/16x16/folder_edit.png". |
| 17 | 20 | public define String icn16_group = "icons/16x16/group.png". |
| 21 | +public define String icn16_question = "icons/16x16/question.png". | |
| 22 | +public define String icn16_warning = "icons/16x16/warning.png". | |
| 23 | + | |
| 24 | +public define String icn16_true = "icons/16x16/check.png". | |
| 25 | +public define String icn16_false = "icons/16x16/cross.png". | |
| 18 | 26 | |
| 19 | 27 | /****------------------ MIME PART -----------------****/ |
| 20 | 28 | |
| ... | ... | @@ -24,3 +32,5 @@ public define String icn16_mime_csv = "icons/16x16/mimetypes/csv.png". |
| 24 | 32 | public define String icn16_mime_unknown = "icons/16x16/mimetypes/unknown.png". |
| 25 | 33 | |
| 26 | 34 | public define String icn16_mime(String mimetype) = "icons/16x16/mimetypes/"+mimetype+".png". |
| 35 | + | |
| 36 | +public define String to_Icon (Bool value)= if value then icn16_true else icn16_false. | ... | ... |