Wiki source code of Quellen
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{content/}} | ||
| 2 | |||
| 3 | {{id name="fig_data_source"/}} | ||
| 4 | {{figure image="data_source_en.png"}}Configuration screen for creating data sources: (1) list of existing data sources, (2) area for editing the selected data source, (3) settings panel of the data source, (4) servlet URL for accessing the data source.{{/figure}} | ||
| 5 | |||
| 6 | The sources or rather data sources are lodged as text in the format CSV, JSON or XML and can be worked up through the {{designer/}}/the form. | ||
| 7 | To have an access to data sources in the script area via javascript too, all data sources are converted into a JSON structure and customized in the object {{code language="none"}}XFC_METADATA.urls.datasource_[csv|json|xml]{{/code}}. The structure of this JSON structure for the different data sources is expounded in the respective section. | ||
| 8 | |||
| 9 | {{info}} | ||
| 10 | **Servlet URL** | ||
| 11 | The servlet URL of a data source will be displayed on the configuration screen (see point 4 in [[figure>>||anchor="fig_data_source"]]) and is provided in the JS object {{code language="none"}}XFC_METADATA.urls.datasource_[csv|json|xml]{{/code}}. | ||
| 12 | {{/info}} | ||
| 13 | |||
| 14 | == Creating a data source == | ||
| 15 | |||
| 16 | Open the module "Data > Sources" and click the button "New" {{ficon name="plus-circle-outline"/}} in the header of the list (see point 1 in [[figure>>||anchor="fig_data_source"]]). After that you will be prompted to either create an empty data source or import one from a file. Three types of data sources can be created: //XML//, //CSV// und //JSON//. | ||
| 17 | |||
| 18 | {{lightbox image="data_source_new_en.png" title="Data sources can be imported or created from scratch."/}} | ||
| 19 | |||
| 20 | Every data source needs: | ||
| 21 | |||
| 22 | * a unique name (in the settings panel: see point 3 in [[figure>>||anchor="fig_data_source"]]) | ||
| 23 | * the actual data in the editing area (see point 2 in [[figure>>||anchor="fig_data_source"]]) | ||
| 24 | |||
| 25 | === Import of data sources from files === | ||
| 26 | |||
| 27 | The following Data types can be used to import data sources: | ||
| 28 | |||
| 29 | * **XML**: //.xml// | ||
| 30 | * **CSV**: //.csv//, //.xls//, //.xlsx// (Excel) | ||
| 31 | * **JSON**: //.json// | ||
| 32 | |||
| 33 | {{id name="data_source_import_csv"/}} | ||
| 34 | __CSV data sources__ | ||
| 35 | |||
| 36 | CSV data sources can be imported from different file types: | ||
| 37 | |||
| 38 | * //.csv// | ||
| 39 | Opens up a dialog for configuring the import: | ||
| 40 | ** **Delimiter**: Determines which symbol is used in the file for separating data fields/ colunms (typically: comma). | ||
| 41 | ** **Text qualifier**: Determines the text qualifier. This symbol is used to support special characters inside data fields (e.g. comma in numbers with decimal places). | ||
| 42 | ** **Start at line**: Determines where to start importing the data source from. | ||
| 43 | ** **Ignore empty lines**: When activated ignores empty lines during import. | ||
| 44 | |||
| 45 | {{lightbox image="data_source_import_csv_en.png" title="Import dialog for CSV files"/}} | ||
| 46 | |||
| 47 | * //.xls//, //.xlsx// | ||
| 48 | Opens up a dialog for configuring the import: | ||
| 49 | ** **Sheets to import**: Determines which worksheets/tables should be imported from the file. | ||
| 50 | |||
| 51 | {{lightbox image="data_source_import_excel_en.png" title="Importdialog für Excel-Dateien"/}} | ||
| 52 | |||
| 53 | __Drag&Drop__ | ||
| 54 | |||
| 55 | Data sources can be imported by Drag&Drop as well. If a file is being dropped over the list (green area) than a new data source of the corresponding type will be created (for Excel files: one data source per worksheet will be created). If a file is being dropped over an existing data source than it will be updated. Changes will only take effect after the "Save" {{icon name="save"/}} button is clicked. | ||
| 56 | |||
| 57 | == CSV == | ||
| 58 | |||
| 59 | {{figure image="data_source_csv_servlet_json_comparison.png"}} | ||
| 60 | The JSON structure of a CSV data source. This JSON structure can be accessed through JavaScript via {{code language="none"}}XFC_METADATA.urls.datasource_csv{{/code}}. (1) On the left there is the JSON structure of the data source with out using the first row as a header. Instead the headers are of the form: {{code language="none"}}colX{{/code}}. (2) On the right there is the data source where the first row is being used as the header. | ||
| 61 | {{/figure}} | ||
| 62 | |||
| 63 | CSV data sources can be viewed in a source code view or in a table view. The view can be switched by clicking the appropriate button {{ficon name="table-large"/}}/{{icon name="code"/}} beneath the editing area. | ||
| 64 | |||
| 65 | //Source code view of a CSV data source//: ([[CSV file format>>https://en.wikipedia.org/wiki/Comma-separated_values||target="_blank"]]) | ||
| 66 | {{lightbox image="data_source_csv_source.png" title="Source code view of a CSV data source"/}} | ||
| 67 | //Table view of a CSV data source//: | ||
| 68 | {{lightbox image="data_source_csv_table.png" title="Table view of a CSV data source"/}} | ||
| 69 | |||
| 70 | === Editing CSV tables === | ||
| 71 | |||
| 72 | There is a row of buttons beneath the editing area for editing the CSV data table: | ||
| 73 | |||
| 74 | * {{ficon name="plus-circle"/}} **Insert**: Inserts new rows or columns relative to the selected cell. | ||
| 75 | * {{ficon name="trash-alt2"/}} **Remove**: Removes the selected row(s) or column(s) or empties the selected cell. | ||
| 76 | * {{icon name="upload"/}} **Import**: Opens up the [[dialog for importing CSV data sources>>||anchor="data_source_import_csv"]]. | ||
| 77 | * {{icon name="code"/}} **Source code view**: Switches to source code view. | ||
| 78 | |||
| 79 | === Header of CSV data sources === | ||
| 80 | |||
| 81 | There is an additional option for CSV data sources in the data source settings. The option **First row is header** determines how the values of the data sources are being accessed via its servlet ({{code language="none"}}XFC_METADATA.urls.datasource_csv{{/code}}): | ||
| 82 | |||
| 83 | * **Activated**: | ||
| 84 | The cells of the first row will be used as {{code language="none"}}keys{{/code}} for accessing the values of the respective columns (see [[example>>||anchor="data_source_csv_example"]]). | ||
| 85 | * **Deactivated**: | ||
| 86 | The {{code language="none"}}keys{{/code}} for accessing the values of individual data fields/ rows are enumerated, starting with {{code language="none"}}0{{/code}}. These keys have the following form: {{code language="none"}}colX{{/code}} where {{code language="none"}}X{{/code}} stands for the column index. | ||
| 87 | |||
| 88 | {{lightbox image="data_source_csv_settings_en.png" title="The option **first row is header** determines how the values of CSV data sources are accessed with its servlet"/}} | ||
| 89 | |||
| 90 | CSV data sources can be accessed in the {{designer case="dat"/}} via its servlet: {{code language="none"}}XFC_METADATA.urls.datasource_csv{{/code}}. | ||
| 91 | |||
| 92 | === Servlet parameters === | ||
| 93 | |||
| 94 | {{info}} | ||
| 95 | **Servlet-URL** | ||
| 96 | http(s):~/~/<server>/formcycle/datenquellecsv?mandantName=<Mandant-Name>&name=<Datenquellen-Name> | ||
| 97 | {{/info}} | ||
| 98 | |||
| 99 | Bei Zugriff aus dem {{designer case="dat"/}} verwenden Sie immer das globale Variablen-Objekt //XFC_METADATA//, siehe hierzu auch [[Globale Designer Variablen>>https://jsdocs.formcycle.eu/jsdocs/de/modules/_formcycle_v6_de_d_.html#xfc_metadata||target="_blank"]]. Beispielsweise kann wie folgt darauf zugegriffen werden: {{code language="none"}}XFC_METADATA.urls.datasource_csv{{/code}}. | ||
| 100 | |||
| 101 | Always use the global variables object {{code language="none"}}XFC_METADATA{{/code}} when accessing data sources from the {{designer/}}, see also [[global designer variables>>doc:Formcycle.Designer.Form.CodingPanel.ScriptTab.FormMetadata]]. The servlet URK can be accessed as follows: {{code language="none"}}XFC_METADATA.urls.datasource_csv{{/code}}. | ||
| 102 | |||
| 103 | The following parameters are possible: | ||
| 104 | |||
| 105 | |=name of the parameter|=description|=necessary | ||
| 106 | |name|Must match the name of the CSV data source.|Yes | ||
| 107 | |mandantName|Must match the name of the client under which the data source was created.|Yes, if //projektId// is not given. | ||
| 108 | |projektId|Must match the ID of the form. These information can be recalled via {{code language="none"}}XFC_METADATA.currentProject.id{{/code}}.|Yes, if //mandantName// is not given. | ||
| 109 | |kopfzeile|Indicates a comma seperated list with column name of the CSV table. If this is not given, the first line of the CSV is used.|No | ||
| 110 | |spaltenNamen|Indicates a comma seperated list of the column, which columns are redelivered of the //servlet// with the corresponding value. At this, according to using, the names of the columns of the parameter //headline// or the name of the first line of the //CSV// databaseHierbei are expected.|No | ||
| 111 | |csvTrennzeichen|Indicates the seperator between the single data cells. If this is not set, a comma {{code language="none"}},{{/code}} is used by default.|No | ||
| 112 | |csvQuote|The seperator with which the values of the lines are seperated. If this is not set, a inverted comma {{code language="none"}}"{{/code}} is used by default.| No | ||
| 113 | |jsonPath {{version major="7" minor="3"/}}|This parameter allows specifying a JSON path expression which will be applied to the returned result of the query on the server side. The example //$.returnValue[0]// returns the values of the first result of the query.|No | ||
| 114 | |||
| 115 | === Application example === | ||
| 116 | |||
| 117 | A CSV data source with the option activated: **First row is header**. It has the following content: | ||
| 118 | |||
| 119 | {{code language="csv"}} | ||
| 120 | title,firstName,lastName,zip,city | ||
| 121 | Herr,Max,Mustermann,1000,Musterhausen | ||
| 122 | Frau,Monika,Mustermann,2000,Musterdorf | ||
| 123 | Frau, Luise,Musterfrau,3000,Musterstadt | ||
| 124 | |||
| 125 | {{/code}} | ||
| 126 | |||
| 127 | In the {{designer/}} the following script is used in the [[script area>>doc:Formcycle.Designer.Form.CodingPanel.ScriptTab.WebHome]] for pre-filling form fields: | ||
| 128 | |||
| 129 | {{code language="javascript"}} | ||
| 130 | $.getJSON( XFC_METADATA.urls.datasource_csv + "?name=Demo&mandantName=xima.de", function(json) { | ||
| 131 | var obj = json.returnValue[0]; | ||
| 132 | |||
| 133 | $('[name=tfTitle]').val(obj.title); | ||
| 134 | $('[name=tfFirstName]').val(obj.firstName); | ||
| 135 | $('[name=tfLastName]').val(obj.lastName); | ||
| 136 | $('[name=tfZIP]').val(obj.zip); | ||
| 137 | $('[name=tfCity]').val(obj.city); | ||
| 138 | }); | ||
| 139 | {{/code}} | ||
| 140 | |||
| 141 | {{lightbox image="data_source_csv_designer_script_en.png"/}} | ||
| 142 | |||
| 143 | This form example is provided as a [[download>>attach:CSV-Demo_en.json||rel="__blank"]]. | ||
| 144 | |||
| 145 | === Exeption selection element === | ||
| 146 | |||
| 147 | {{figure image="data_source_csv_designer_en.png"}} | ||
| 148 | The connection of a data source to a selection element takes place directly in the {{designer/}} | ||
| 149 | {{/figure}} | ||
| 150 | |||
| 151 | If the //CSV// data source has to be loaded directly in a [[selection element>>doc:Formcycle.Designer.Form.FormElements.Selection]], this happens via through the properties of the selection element in the {{designer/}}. | ||
| 152 | |||
| 153 | The content of the CSV data source is processed in a [[selection element>>doc:Formcycle.Designer.Form.FormElements.Selection]]. | ||
| 154 | |||
| 155 | {{code language="none"}} | ||
| 156 | visible value, assigned value, optional value, optional value, ... | ||
| 157 | {{/code}} | ||
| 158 | |||
| 159 | Columns of the data source are use as follows for [[selection elements>>doc:Formcycle.Designer.Form.FormElements.Selection]]: | ||
| 160 | {{code language="none"}}col + column index{{/code}}. | ||
| 161 | |||
| 162 | If a data source has more than two columns than it contains optional values. These optional values can be accessed with JavaScript via the following jQuery selector: | ||
| 163 | |||
| 164 | {{code language="javascript"}} | ||
| 165 | $('[name=sel2]').find('option:selected').attr('col2'); | ||
| 166 | {{/code}} | ||
| 167 | |||
| 168 | Optinal values start at column index 2. | ||
| 169 | If the first row is marked as a header than it will be ignored for selection elements. | ||
| 170 | |||
| 171 | == XML == | ||
| 172 | |||
| 173 | The XML data source acts analogously to the //CSV// data source, but cannot be bound to a [[selection element>>doc:Formcycle.Designer.Form.FormElements.Selection]]. | ||
| 174 | |||
| 175 | {{figure image="data_source_xml_servlet_json.png" width="300"}} | ||
| 176 | The JSON structure of the XML data source. To this JSON structure can than be accessed to {{code language="none"}}XFC_METADATA.urls.datasource_xml{{/code}} via Javascript. | ||
| 177 | {{/figure}} | ||
| 178 | |||
| 179 | === Example for an XML data source === | ||
| 180 | |||
| 181 | {{code language="xml"}} | ||
| 182 | <root> | ||
| 183 | <person> | ||
| 184 | <anrede> | ||
| 185 | Herr | ||
| 186 | </anrede> | ||
| 187 | <vorname> | ||
| 188 | Max | ||
| 189 | </vorname> | ||
| 190 | <nachname> | ||
| 191 | Mustermann | ||
| 192 | </nachname> | ||
| 193 | </person> | ||
| 194 | <person> | ||
| 195 | <anrede> | ||
| 196 | Frau | ||
| 197 | </anrede> | ||
| 198 | <vorname> | ||
| 199 | Monika | ||
| 200 | </vorname> | ||
| 201 | <nachname> | ||
| 202 | Musterfrau | ||
| 203 | </nachname> | ||
| 204 | </person> | ||
| 205 | </root> | ||
| 206 | {{/code}} | ||
| 207 | |||
| 208 | |||
| 209 | === Servlet parameter === | ||
| 210 | |||
| 211 | {{info}} | ||
| 212 | **Servlet-URL** | ||
| 213 | http(s):~/~/<server>/formcycle/datenquellexml?mandantName=<Mandant-Name>&name=<Datenquellen-Name> | ||
| 214 | {{/info}} | ||
| 215 | |||
| 216 | If you access from the {{designer/}}, always use the global variable object //XFC_METADATA//, see also [[global designer variables>>doc:Formcycle.Designer.Form.CodingPanel.ScriptTab.FormMetadata]]. For example it can be accessed as follows: {{code language="javascript"}}XFC_METADATA.urls.datasource_xml{{/code}}. | ||
| 217 | |||
| 218 | The following parameter are possible: | ||
| 219 | |||
| 220 | |=Parameter name|=Description|=Neccessary | ||
| 221 | |mandantName|Must match the name of the client under which this data source was created.|Yes | ||
| 222 | |name|Must match the name of the CSV data source.|Yes | ||
| 223 | |jsonPath {{version major="7" minor="3"/}}|This parameter allows specifying a JSON path expression which will be applied to the returned result of the query on the server side. The example //$.returnValue[0]// returns the values of the first result of the query.|No | ||
| 224 | |||
| 225 | == JSON == | ||
| 226 | |||
| 227 | The //JSON// data source acts analogously to the //CSV// data source, but cannot be bound to a [[selection element>>doc:Formcycle.Designer.Form.FormElements.Selection]] directly. | ||
| 228 | |||
| 229 | {{figure image="data_source_json_servlet_json.png"}} | ||
| 230 | The JSON structure of the JSON data source. It is identically equal to the JSON data source. This JSON structure can be accessed via Javascript through {{code language="none"}}XFC_METADATA.urls.datasource_json{{/code}}. | ||
| 231 | {{/figure}} | ||
| 232 | |||
| 233 | === Example for a JSON data source === | ||
| 234 | |||
| 235 | {{code language="json"}} | ||
| 236 | {"person":[ | ||
| 237 | { | ||
| 238 | "anrede":"Herr", | ||
| 239 | "vorname":"Max", | ||
| 240 | "nachname":"Mustermann" | ||
| 241 | }, | ||
| 242 | { | ||
| 243 | "anrede":"Frau", | ||
| 244 | "vorname":"Monika", | ||
| 245 | "nachname":"Musterfrau" | ||
| 246 | } | ||
| 247 | ]} | ||
| 248 | {{/code}} | ||
| 249 | |||
| 250 | === Servlet-Parameter === | ||
| 251 | |||
| 252 | {{info}} | ||
| 253 | **Servlet-URL** | ||
| 254 | http(s):~/~/<server>/formcycle/datenquellejson?mandantName=<Mandant-Name>&name=<Datenquellen-Name> | ||
| 255 | {{/info}} | ||
| 256 | |||
| 257 | At an access from the {{designer/}} always use the global variable object //XFC_METADATA//, see also [[global designer variables>>doc:Formcycle.Designer.Form.CodingPanel.ScriptTab.FormMetadata]]. For example you can access as follows: {{code language="javascript"}}XFC_METADATA.urls.datasource_json{{/code}}. | ||
| 258 | |||
| 259 | The following parameter are possible: | ||
| 260 | |||
| 261 | |=Parametername|=Description|=Neccessary | ||
| 262 | |mandantName| Must match the name of the client under which this data source was created.|Yes | ||
| 263 | |name| Must match the name of the CSV data source.|Yes | ||
| 264 | |jsonPath {{version major="7" minor="3"/}}|This parameter allows specifying a JSON path expression which will be applied to the returned result of the query on the server side. The example //$.returnValue[0]// returns the values of the first result of the query.|No |