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 |