/* * Created by PyramIDE. * User: フランスのトトロ aka (David RENÉ) * Date: 09/04/2017 * Time: 02:37 * © Calexium */ read hayamiki_lib/types/hayamiki.anubis read tools/streams.anubis read columns.anubis define String make_lines ( List(HK_Editor_Table_Line) lines, List(HK_Model_Column) columns, String table_name, String indent ). public define String make_cell ( HK_Editor_Table_Cell cell_description, // List(HK_Model_Column) columns, String type_name, String indent )= if cell_description is { empty then "empty" column(col_name) then if get_column_type_from_name(columns, col_name) is { failure then "label(\"column ["+col_name+"] not found\")", success(col_type) then if get_HK_Form_Entry(col_type, type_name) is { failure then "label(\" form for column ["+col_name+"] not found\")", success(form_string) then form_string } } label(label_str) then "label(\""+label_str+"\")" table(lines) then "cell(["+ make_lines(lines, columns, type_name, indent)+ "])" } . get_column_type_from_name(columns, column_name) public define String make_cells ( List(HK_Editor_Table_Cell) cells, List(HK_Model_Column) columns, String table_name, String indent ) = if is_empty(cells) then "" else "\n"+indent+ join(",\n"+indent, map((HK_Editor_Table_Cell cell) |-> "hk_form_table_cell("+ make_cell(cell, columns, table_name, indent) +")", cells)) . if columns is { [] then indent+" "+join(",\n"+indent+" ", reverse(so_far)), [h . t] then if get_HK_Form_Entry(h, type_name) is { failure then edit_entries(t, type_name, indent, so_far) success(result) then edit_entries(t, type_name, indent, [result . so_far]) } }. define String make_lines ( List(HK_Editor_Table_Line) lines, List(HK_Model_Column) columns, String table_name, String indent )= if is_empty(lines) then "" else "\n"+indent+ join(",\n"+indent, map((HK_Editor_Table_Line line) |-> "hk_form_table_line(["+ make_cells(line.cells, columns, table_name, indent+" ") +"\n"+indent+"])", lines)) . public define Maybe(One) /* Generate */ generate_edit_view_table_form ( Stream stream, //stream file where to write HK_Table table, // String view_name, HK_Editor_Table form_in_table //edit view to generate )= since table is hk_table(table_name, short_name, model, display), since model is hk_model( columns, _), with type_name = to_upper(table_name, 1), //make the first character to upper case and be an Anubis Type. //generate the type of the table that contain all components if write_string(stream, "\n\n"+ //SQL query "define HK_Form\n"+ " _get_editable_"+table_name+"_"+view_name+"\n"+ " (\n"+ " "+type_name+" "+table_name+",\n"+ " SQLite3DataBase db\n"+ " )=\n"+ " with form_table = hk_form_table( [\n"+ " //Attributes of the table\n"+ " hidden(\"id\", to_String("+table_name+".id)),\n"+ " ],\n"+ " //All lines and cells of the table \n"+ " ["+ make_lines(form_in_table.lines, columns, table_name, " ")+"\n"+ " ]),\n\n"+ " hk_form_in_table(\""+table_name+"\", \""+view_name+"\", form_table).\n\n" ) is //end of the function { failure then println("can't write generate_VT_view "+type_name); failure, success(_) then success(unique) }.