Commit 6cf67b09e781c09f8475c678ba69991772066a76

Authored by totoro
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.
... ...