@cyklang/cli 0.2.3 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/test/cyklang.xsd CHANGED
@@ -1,205 +1,413 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
3
 
4
+ <xs:simpleType name="identifier">
5
+ <xs:restriction base="xs:token">
6
+ <xs:pattern value="[_a-zA-Z][_a-zA-Z0-9]*"/>
7
+ </xs:restriction>
8
+ </xs:simpleType>
9
+
4
10
  <xs:element name="module" type="defineModule"/>
5
11
 
6
12
  <xs:complexType name="defineModule">
7
- <xs:complexContent >
8
- <xs:extension base="block">
9
- <xs:attribute name="name" type="xs:string"/>
10
- <xs:attribute name="dbname" type="xs:string"/>
11
- <xs:attribute name="import" type="xs:string"/>
13
+ <xs:annotation>
14
+ <xs:documentation>
15
+ root element of a module file. Module name is derived from the file name minus file xml extension.
16
+ File name must then follow identifier restrictions (alphabetic, digits and _ (underscore) characters accepted)
17
+ </xs:documentation>
18
+ </xs:annotation>
19
+ <xs:complexContent>
20
+ <xs:extension base="blockInstruction">
21
+ <xs:attribute name="description" type="xs:string">
22
+ <xs:annotation>
23
+ <xs:documentation>
24
+ description is copied to cyk_module database table, module_description column
25
+ </xs:documentation>
26
+ </xs:annotation>
27
+ </xs:attribute>
28
+ <xs:attribute name="access" type="xs:string">
29
+ <xs:annotation>
30
+ <xs:documentation>
31
+ Access Control List of the module. User group has an identifier and the permissions are a single letter: (r)ead or (w)rite
32
+ ACL is copied to cyk_module database table, module_access column
33
+ e.g. "admin:* ; readef:r ; writer:rw"
34
+ </xs:documentation>
35
+ </xs:annotation>
36
+ </xs:attribute>
12
37
  </xs:extension>
13
38
  </xs:complexContent>
14
39
  </xs:complexType>
15
40
 
16
- <xs:complexType name="block">
41
+ <xs:complexType name="blockInstruction">
42
+ <xs:annotation>
43
+ <xs:documentation>
44
+ Instructions in a block element are executed sequentially except in the parallel instruction. If not the parallel instruction, you can exit prematurely a block with the break instruction
45
+ </xs:documentation>
46
+ </xs:annotation>
17
47
  <xs:group ref="instruction" minOccurs="0" maxOccurs="unbounded"/>
18
48
  </xs:complexType>
19
49
 
20
50
  <xs:group name="instruction">
21
51
  <xs:choice>
22
- <xs:element name="module" type="defineModule"/>
23
52
  <xs:group ref="declareVariable"/>
24
53
  <xs:element name="let" type="let_set"/>
25
54
  <xs:element name="set" type="let_set"/>
26
55
  <xs:element name="print" type="xs:string"/>
27
- <xs:element ref="if"/>
28
- <xs:element ref="call"/>
29
- <xs:element name="block" type="block"/>
56
+ <xs:element name="if" type="ifInstruction"/>
57
+ <xs:element name="call" type="callInstruction"/>
58
+ <xs:element name="block" type="blockInstruction"/>
30
59
  <xs:element name="break" type="xs:string"/>
31
60
  <xs:element name="continue" type="xs:string"/>
32
61
  <xs:element name="sleep" type="xs:string"/>
33
- <xs:element ref="while"/>
34
- <xs:element name="loop" type="block"/>
35
- <xs:element ref="stringexec"/>
36
- <xs:element name="parallel" type="block"/>
62
+ <xs:element name="while" type="whileInstruction"/>
63
+ <xs:element name="loop" type="loopInstruction"/>
64
+ <xs:element name="stringexec" type="stringexecInstruction"/>
65
+ <xs:element name="parallel" type="parallelInstruction"/>
37
66
 
38
67
  <!-- server side -->
39
- <xs:element ref="db.table"/>
40
- <xs:element ref="db.query"/>
41
- <xs:element ref="db.insert"/>
42
- <xs:element ref="db.update"/>
43
- <xs:element ref="db.runquery"/>
44
- <xs:element ref="db.select"/>
45
- <xs:element ref="db.delete"/>
46
- <xs:element ref="db.call"/>
68
+ <xs:element name="db.table" type="dbtableInstruction"/>
69
+ <xs:element name="db.query" type="dbqueryInstruction"/>
70
+ <xs:element name="db.insert" type="dbinsertInstruction"/>
71
+ <xs:element name="db.update" type="dbupdateInstruction"/>
72
+ <xs:element name="db.runquery" type="dbrunqueryInstruction"/>
73
+ <xs:element name="db.select" type="dbselectInstruction"/>
74
+ <xs:element name="db.delete" type="dbdeleteInstruction"/>
75
+ <xs:element name="db.call" type="dbcallInstruction"/>
76
+
77
+ <!-- browser side -->
78
+ <xs:element name="setmenu" type="setmenuInstruction"/>
79
+ <xs:element name="closedialog" fixed=""/>
80
+ <xs:element name="showdialog" type="showdialogInstruction"/>
81
+ <xs:element name="closeform" fixed=""/>
82
+ <xs:element name="showform" type="showformInstruction"/>
83
+ <xs:element name="alert" type="alertInstruction"/>
84
+ <xs:element name="resetdialogdirty" fixed=""/>
85
+ <xs:element name="sendevent" type="sendevent"/>
86
+ <xs:element name="toolbar" type="toolbarComponent"/>
87
+
47
88
  </xs:choice>
48
89
  </xs:group>
49
90
 
50
91
  <xs:group name="declareVariable">
51
92
  <xs:choice>
52
- <xs:element ref="boolean"/>
53
- <xs:element ref="number"/>
54
- <xs:element ref="string"/>
55
- <xs:element ref="datetime"/>
56
- <xs:element ref="object"/>
93
+ <xs:element name="boolean" type="booleanType"/>
94
+ <xs:element name="number" type="numberType"/>
95
+ <xs:element name="string" type="stringType"/>
96
+ <xs:element name="datetime" type="datetimeType"/>
97
+ <xs:element name="object" type="declareObject"/>
57
98
  <xs:element name="function" type="function_method"/>
58
- <xs:element ref="type"/>
99
+ <xs:element name="type" type="typeType"/>
59
100
  <xs:element name="module_object" type="moduleObject"/>
60
-
101
+ <xs:element name="moduleobject" type="moduleObject"/>
102
+ <xs:element name="map" type="mapType"/>
61
103
  <!-- browser only -->
62
- <xs:element ref="form"/>
104
+ <xs:element name="form" type="formComponent"/>
105
+ <xs:element name="dialog" type="dialogComponent"/>
106
+ <xs:group ref="component"/>
107
+ <!-- server only -->
108
+ <xs:element name="request" type="requestObject"/>
109
+ <xs:element name="response" type="responseObject"/>
63
110
  </xs:choice>
64
111
  </xs:group>
65
112
 
66
113
  <xs:group name="declareVariable_method">
67
114
  <xs:choice>
68
- <xs:element ref="boolean"/>
69
- <xs:element ref="number"/>
70
- <xs:element ref="string"/>
71
- <xs:element ref="datetime"/>
72
- <xs:element ref="object"/>
73
- <xs:element name="function"/>
74
- <xs:element ref="type"/>
115
+ <xs:element name="boolean" type="booleanType"/>
116
+ <xs:element name="number" type="numberType"/>
117
+ <xs:element name="string" type="stringType"/>
118
+ <xs:element name="datetime" type="datetimeType"/>
119
+ <xs:element name="object" type="declareObject"/>
120
+ <xs:element name="function" type="function_method"/>
121
+ <xs:element name="type" type="typeType"/>
122
+ <xs:element name="module_object" type="moduleObject"/>
123
+ <xs:element name="moduleobject" type="moduleObject"/>
124
+ <!-- browser only -->
125
+ <xs:element name="form" type="formComponent"/>
126
+ <xs:element name="dialog" type="dialogComponent"/>
127
+ <xs:group ref="component"/>
128
+ <!-- server only -->
129
+ <xs:element name="request" type="requestObject"/>
130
+ <xs:element name="response" type="responseObject"/>
75
131
 
76
132
  <xs:element name="method" type="function_method"/>
77
133
  </xs:choice>
78
134
  </xs:group>
79
135
 
80
- <xs:element name="boolean">
81
- <xs:complexType mixed="true">
82
- <xs:attribute name="name" type="xs:string"/>
83
- </xs:complexType>
84
- </xs:element>
85
-
86
- <xs:element name="number">
87
- <xs:complexType mixed="true">
88
- <xs:attribute name="name" type="xs:string"/>
89
- </xs:complexType>
90
- </xs:element>
91
-
92
- <xs:element name="string">
93
- <xs:annotation>
94
- <!-- <xs:appinfo>string_appinfo</xs:appinfo> -->
95
- <xs:documentation>declares a <i>string</i> variable</xs:documentation>
96
- </xs:annotation>
97
- <xs:complexType mixed="true">
98
- <xs:attribute name="name" type="xs:string"/>
99
- <xs:attribute name="literal" type="xs:string" fixed=""/>
100
- </xs:complexType>
101
- </xs:element>
102
-
103
- <xs:element name="stringexec">
104
- <xs:complexType>
105
- <xs:simpleContent>
106
- <xs:extension base="xs:string">
107
- <xs:attribute name="literal" type="xs:string" fixed=""/>
108
- </xs:extension>
109
- </xs:simpleContent>
110
- </xs:complexType>
111
- </xs:element>
112
-
113
- <xs:element name="datetime">
114
- <xs:complexType mixed="true">
115
- <xs:attribute name="name" type="xs:string"/>
116
- </xs:complexType>
117
- </xs:element>
118
-
119
- <xs:element name="object">
120
- <xs:complexType mixed="true">
121
- <xs:group ref="declareVariable_method" minOccurs="0" maxOccurs="unbounded">
122
- </xs:group>
123
- <xs:attribute name="name" type="xs:string"/>
124
- <xs:attribute name="type" type="xs:string"/>
125
- </xs:complexType>
126
- </xs:element>
127
-
128
- <xs:element name="type">
129
- <xs:complexType>
130
- <xs:group ref="declareVariable_method" minOccurs="0" maxOccurs="unbounded"/>
131
- <xs:attribute name="name" type="xs:string"/>
132
- <xs:attribute name="type" type="xs:string"/>
133
- <xs:attribute name="base" type="xs:string"/>
134
- </xs:complexType>
135
- </xs:element>
136
-
137
- <xs:complexType name="moduleObject">
136
+ <xs:complexType name="booleanType">
137
+ <xs:annotation>
138
+ <xs:documentation>boolean is a basic data type wrapping javascript boolean type</xs:documentation>
139
+ </xs:annotation>
140
+ <xs:simpleContent>
141
+ <xs:extension base="xs:string">
142
+ <xs:attribute name="name" type="identifier"/>
143
+ </xs:extension>
144
+ </xs:simpleContent>
145
+ </xs:complexType>
146
+
147
+ <xs:complexType name="numberType">
148
+ <xs:annotation>
149
+ <xs:documentation>number is a basic data type wrapping javascript number type</xs:documentation>
150
+ </xs:annotation>
151
+ <xs:simpleContent>
152
+ <xs:extension base="xs:string">
153
+ <xs:attribute name="name" type="identifier"/>
154
+ </xs:extension>
155
+ </xs:simpleContent>
156
+
157
+ </xs:complexType>
158
+
159
+ <xs:complexType name="stringType">
160
+ <xs:annotation>
161
+ <xs:documentation>
162
+ string is a basic data type wrapping javascript string type. To give a literal value to the string variable rather than
163
+ an expression which will be evaluated, use [literal] attribute
164
+ </xs:documentation>
165
+ </xs:annotation>
166
+ <xs:simpleContent>
167
+ <xs:extension base="xs:string">
168
+ <xs:attribute name="name" type="identifier"/>
169
+ <xs:attribute name="literal" type="xs:string" fixed=""/>
170
+ </xs:extension>
171
+ </xs:simpleContent>
172
+
173
+ </xs:complexType>
174
+
175
+ <xs:complexType name="loopInstruction">
176
+ <xs:annotation>
177
+ <xs:documentation>
178
+ The loop instruction block is repeated indefinitely. You can exit the loop with the break instruction,
179
+ </xs:documentation>
180
+ </xs:annotation>
181
+ <xs:complexContent>
182
+ <xs:extension base="blockInstruction">
183
+ </xs:extension>
184
+ </xs:complexContent>
185
+ </xs:complexType>
186
+
187
+ <xs:complexType name="stringexecInstruction">
188
+ <xs:annotation>
189
+ <xs:documentation>
190
+ By default, the text content is considered as an expression
191
+ and evaluated to a string value is interpreted as source code for a block instruction and executed.
192
+ But with [literal] attribute, the text content is not evaluated as an expression and considered directly as the source code
193
+ </xs:documentation>
194
+ </xs:annotation>
195
+ <xs:simpleContent>
196
+ <xs:extension base="xs:string">
197
+ <xs:attribute name="literal" type="xs:string" fixed=""/>
198
+ </xs:extension>
199
+ </xs:simpleContent>
200
+ </xs:complexType>
201
+
202
+ <xs:complexType name="parallelInstruction">
203
+ <xs:annotation>
204
+ <xs:documentation>
205
+ Each instruction in the parallele block starts simultaeously. The parallel instruction ends when every instruction ends.
206
+ </xs:documentation>
207
+ </xs:annotation>
208
+ <xs:complexContent>
209
+ <xs:extension base="blockInstruction">
210
+ </xs:extension>
211
+ </xs:complexContent>
212
+ </xs:complexType>
213
+
214
+ <xs:complexType name="datetimeType">
215
+ <xs:annotation>
216
+ <xs:documentation>
217
+ datetime is a basic data type wrapping javascript Date type.
218
+ </xs:documentation>
219
+ </xs:annotation>
220
+ <xs:simpleContent>
221
+ <xs:extension base="xs:string">
222
+ <xs:attribute name="name" type="identifier"/>
223
+ </xs:extension>
224
+ </xs:simpleContent>
225
+
226
+ </xs:complexType>
227
+
228
+ <xs:complexType name="declareObject" mixed="true">
229
+ <xs:annotation>
230
+ <xs:documentation>
231
+ an object can be declared and defined
232
+ by evaluating an expression which returns an object
233
+ or by declaring all the variables member of the object
234
+ </xs:documentation>
235
+ </xs:annotation>
236
+ <xs:group ref="declareVariable_method" minOccurs="0" maxOccurs="unbounded"/>
237
+ <xs:attribute name="name" type="identifier"/>
238
+ <xs:attribute name="type" type="identifier"/>
239
+ </xs:complexType>
240
+
241
+ <xs:complexType name="typeType">
242
+ <xs:annotation>
243
+ <xs:documentation>
244
+ type declares a sub type from a base object data type. Member variables are declared as sub elements.
245
+ If attribute [literal] is unset, in a declare tag using this type, the declare tag's content is evaluated as an expression which returns that
246
+ will be the initial value of the object declared.
247
+ If attribute [literal] is set (see template and html types), in a declare tag using this type, the new object will not be initialized.
248
+ The tag's content will be accessed using Typescript.
249
+ Attribute [literal] of type declaration should not be confused with attribute [literal] in a declare tag (e.g. string data type)
250
+ To declare an object of the new data type, use [type] attribute of the object element
251
+ </xs:documentation>
252
+ </xs:annotation>
253
+ <xs:group ref="declareVariable_method" minOccurs="0" maxOccurs="unbounded"/>
254
+ <xs:attribute name="name" type="identifier"/>
255
+ <xs:attribute name="type" type="xs:string"/>
256
+ <xs:attribute name="base" type="xs:string"/>
257
+ <xs:attribute name="literal" type="xs:string" fixed=""/>
258
+ </xs:complexType>
259
+
260
+
261
+ <xs:complexType name="moduleObject" mixed="true">
262
+ <xs:annotation>
263
+ <xs:documentation>
264
+ If [module] attribute then creates an object by instantiating a module object from module whose name is given by the [module] attribute.
265
+ You can pass values to the constructor of the module as sub elements of this tag.
266
+ Without [module] attribute, tag content must be an expression that evaluates to a module object.
267
+ </xs:documentation>
268
+ </xs:annotation>
138
269
  <xs:group ref="declareVariable" minOccurs="0" maxOccurs="unbounded"/>
139
- <xs:attribute name="name" type="xs:string"/>
140
- <xs:attribute name="dbname" type="xs:string"/>
270
+ <xs:attribute name="name" type="identifier"/>
271
+ <xs:attribute name="module" type="identifier"/>
272
+ <xs:attribute name="import" type="xs:string"/>
141
273
  </xs:complexType>
142
274
 
143
- <xs:complexType name="let_set" mixed="true">
144
- <xs:attribute name="name" type="xs:string"/>
275
+ <xs:complexType name="mapType" mixed="true">
276
+ <xs:annotation>
277
+ <xs:documentation>
278
+ (key,value) pairs. Tag content is string litteral
279
+ </xs:documentation>
280
+ </xs:annotation>
281
+ <xs:sequence>
282
+ <xs:group ref="mapKeyValue" maxOccurs="unbounded"/>
283
+ </xs:sequence>
284
+ <xs:attribute name="name"/>
285
+
145
286
  </xs:complexType>
146
287
 
147
- <xs:element name="print">
148
- </xs:element>
288
+ <xs:group name="mapKeyValue">
289
+ <xs:annotation>
290
+ <xs:documentation>
291
+ </xs:documentation>
292
+ </xs:annotation>
293
+ <xs:sequence>
294
+ <xs:element name="key"/>
295
+ <xs:element name="value"/>
296
+ </xs:sequence>
297
+ </xs:group>
149
298
 
150
- <xs:complexType name="function_method">
151
- <xs:sequence minOccurs="0">
299
+ <xs:complexType name="let_set" mixed="true">
300
+ <xs:annotation>
301
+ <xs:documentation>
302
+ attribute [name] is the name of the variable to set or an expression evaluated to a variable.
303
+ The new value of the variable is determined by an expression or you can give the member variables of a new object that will be created.
304
+ In case of a string variable, you can set [literal] attribute to indicate that the value is not to be evaluated as an expression.
305
+ In case of a module object variable, you can specify [module] attribute to give the name of the module to load from the database
306
+
307
+ </xs:documentation>
308
+ </xs:annotation>
309
+ <xs:group ref="declareVariable_method" minOccurs="0" maxOccurs="unbounded"/>
310
+ <xs:attribute name="name" type="xs:string" use="required"/>
311
+ <xs:attribute name="literal" type="xs:string" fixed=""/>
312
+ <xs:attribute name="module" type="xs:string"/>
313
+ </xs:complexType>
314
+
315
+ <xs:complexType name="function_method" mixed="true">
316
+ <xs:annotation>
317
+ <xs:documentation>
318
+ declares a function which is obtained by evaluating an expression returning a function or by defining it by sub elements.
319
+ To define a function, include the following sub elements. At first declare the input parameters, then declare an instruction block.
320
+ To return a result, set a [returns] attribute which gives the name of the returned variable and its type e.g. result : number
321
+ </xs:documentation>
322
+ </xs:annotation>
323
+ <xs:sequence>
152
324
  <xs:group ref="declareVariable" minOccurs="0" maxOccurs="unbounded"/>
153
- <xs:element name="block" type="block"/>
325
+ <xs:element name="block" type="blockInstruction" minOccurs="0" maxOccurs="1"/>
154
326
  </xs:sequence>
155
- <xs:attribute name="name" type="xs:string"/>
327
+ <xs:attribute name="name" type="identifier"/>
156
328
  <xs:attribute name="returns" type="xs:string"/>
329
+ <xs:attribute name="synchronized" type="xs:string"/>
157
330
  </xs:complexType>
158
331
 
159
- <xs:element name="if">
160
- <xs:complexType>
161
- <xs:sequence>
162
- <xs:group ref="conditionThen" minOccurs="1" maxOccurs="unbounded"/>
163
- <xs:sequence minOccurs="0">
164
- <xs:element name="else" type="block"/>
165
- </xs:sequence>
332
+
333
+ <xs:complexType name="ifInstruction">
334
+ <xs:annotation>
335
+ <xs:documentation>
336
+ if instruction is similar to a case in other languages. You can give several pairs of (condition, then block) and a final [else] block.
337
+ The instruction will terminate when the first condition is verified and the corresponding [then] block is executed. See https://www.cyklang.net/reference/#ifInstruction
338
+ </xs:documentation>
339
+ </xs:annotation>
340
+ <xs:sequence>
341
+ <xs:group ref="conditionThen" minOccurs="1" maxOccurs="unbounded"/>
342
+ <xs:sequence minOccurs="0">
343
+ <xs:element name="else" type="blockInstruction"/>
166
344
  </xs:sequence>
167
- </xs:complexType>
168
- </xs:element>
345
+ </xs:sequence>
346
+ </xs:complexType>
347
+
169
348
 
170
349
  <xs:group name="conditionThen">
171
350
  <xs:sequence>
172
- <xs:element name="condition"/>
173
- <xs:element name="then" type="block"/>
351
+ <xs:element name="condition">
352
+ <xs:annotation>
353
+ <xs:documentation>
354
+ condition is an expression evaluated to a boolean value. To escape expression's characters special for XML e.g. &lt; character, use XML CDATA construction
355
+ </xs:documentation>
356
+ </xs:annotation>
357
+ </xs:element>
358
+ <xs:element name="then" type="blockInstruction"/>
174
359
  </xs:sequence>
175
360
  </xs:group>
176
361
 
177
- <xs:element name="call">
178
- <xs:complexType>
179
- <xs:group ref="declareVariable" minOccurs="0" maxOccurs="unbounded"/>
180
- <xs:attribute name="function"/>
181
- <xs:attribute name="returns"/>
182
- <xs:attribute name="object"/>
183
- <xs:attribute name="method"/>
184
- </xs:complexType>
185
- </xs:element>
186
-
187
- <xs:element name="while">
188
- <xs:complexType>
189
- <xs:group ref="conditionThen"/>
190
- </xs:complexType>
191
- </xs:element>
362
+
363
+ <xs:complexType name="callInstruction">
364
+ <xs:annotation>
365
+ <xs:documentation>
366
+ you can call a function by using the [function] attribute or an object method by giving simultaneously the [object] to call and the [method] of this object
367
+ </xs:documentation>
368
+ </xs:annotation>
369
+ <xs:group ref="declareVariable" minOccurs="0" maxOccurs="unbounded"/>
370
+ <xs:attribute name="function"/>
371
+ <xs:attribute name="returns"/>
372
+ <xs:attribute name="object"/>
373
+ <xs:attribute name="method"/>
374
+ </xs:complexType>
375
+
376
+
377
+ <xs:complexType name="whileInstruction">
378
+ <xs:annotation>
379
+ <xs:documentation>
380
+ classic while control instruction. See https://www.cyklang.net/reference/#whileInstruction
381
+ </xs:documentation>
382
+ </xs:annotation>
383
+ <xs:group ref="conditionThen"/>
384
+ </xs:complexType>
385
+
192
386
 
193
387
  <!--
194
388
  server-side
195
389
  -->
196
390
 
197
- <xs:element name="db.table">
198
- <xs:complexType>
199
- <xs:group ref="defineColumn" minOccurs="1" maxOccurs="unbounded"/>
200
- <xs:attribute name="name" type="xs:string"/>
201
- </xs:complexType>
202
- </xs:element>
391
+
392
+ <xs:complexType name="dbtableInstruction">
393
+ <xs:annotation>
394
+ <xs:documentation>
395
+ define a database table columns and foreign key. Instruction can be repeated. First time, the table will be created.
396
+ Then, the server will detect new columns and create them.
397
+ </xs:documentation>
398
+ </xs:annotation>
399
+ <xs:group ref="db.tableElement" minOccurs="1" maxOccurs="unbounded"/>
400
+ <xs:attribute name="name" type="identifier"/>
401
+ <xs:attribute name="description" type="xs:string"/>
402
+ </xs:complexType>
403
+
404
+
405
+ <xs:group name="db.tableElement">
406
+ <xs:choice>
407
+ <xs:group ref="defineColumn"/>
408
+ <xs:element name="foreignkey" type="foreignKey"/>
409
+ </xs:choice>
410
+ </xs:group>
203
411
 
204
412
  <xs:group name="defineColumn">
205
413
  <xs:choice>
@@ -210,12 +418,20 @@
210
418
  </xs:choice>
211
419
  </xs:group>
212
420
 
421
+ <xs:complexType name="foreignKey">
422
+ <xs:sequence>
423
+ <xs:element name="string" type="stringType" minOccurs="1" maxOccurs="unbounded"/>
424
+ </xs:sequence>
425
+ <xs:attribute name="parent" type="identifier"/>
426
+ </xs:complexType>
427
+
213
428
  <xs:complexType name="numberColumn">
214
- <xs:attribute name="name" type="xs:string"/>
429
+ <xs:attribute name="name" type="identifier"/>
215
430
  <xs:attribute name="type">
216
431
  <xs:simpleType>
217
432
  <xs:restriction base="xs:string">
218
433
  <xs:enumeration value="int"></xs:enumeration>
434
+ <xs:enumeration value="numeric(12,2)"></xs:enumeration>
219
435
  </xs:restriction>
220
436
  </xs:simpleType>
221
437
  </xs:attribute>
@@ -230,7 +446,7 @@
230
446
  </xs:complexType>
231
447
 
232
448
  <xs:complexType name="stringColumn">
233
- <xs:attribute name="name" type="xs:string"/>
449
+ <xs:attribute name="name" type="identifier"/>
234
450
  <xs:attribute name="type">
235
451
  <xs:simpleType>
236
452
  <xs:restriction base="xs:string">
@@ -238,7 +454,11 @@
238
454
  <xs:enumeration value="varchar(30)"></xs:enumeration>
239
455
  <xs:enumeration value="varchar(50)"></xs:enumeration>
240
456
  <xs:enumeration value="varchar(255)"></xs:enumeration>
457
+ <xs:enumeration value="varchar(1024)"></xs:enumeration>
458
+ <xs:enumeration value="varchar(2048)"></xs:enumeration>
241
459
  <xs:enumeration value="text"></xs:enumeration>
460
+ <xs:enumeration value="date"></xs:enumeration>
461
+ <xs:enumeration value="bytea"></xs:enumeration>
242
462
  </xs:restriction>
243
463
  </xs:simpleType>
244
464
  </xs:attribute>
@@ -246,7 +466,7 @@
246
466
  </xs:complexType>
247
467
 
248
468
  <xs:complexType name="datetimeColumn">
249
- <xs:attribute name="name" type="xs:string"/>
469
+ <xs:attribute name="name" type="identifier"/>
250
470
  <xs:attribute name="type">
251
471
  <xs:simpleType>
252
472
  <xs:restriction base="xs:string">
@@ -265,7 +485,7 @@
265
485
  </xs:complexType>
266
486
 
267
487
  <xs:complexType name="booleanColumn">
268
- <xs:attribute name="name" type="xs:string"/>
488
+ <xs:attribute name="name" type="identifier"/>
269
489
  <xs:attribute name="type">
270
490
  <xs:simpleType>
271
491
  <xs:restriction base="xs:string">
@@ -275,118 +495,237 @@
275
495
  </xs:attribute>
276
496
  </xs:complexType>
277
497
 
278
- <xs:element name="db.query">
279
- <xs:complexType>
280
- <xs:group ref="declareQueryParameter" minOccurs="0" maxOccurs="unbounded"/>
281
- <xs:attribute name="name" type="xs:string"/>
282
- </xs:complexType>
283
- </xs:element>
498
+ <xs:complexType name="dbqueryInstruction">
499
+ <xs:annotation>
500
+ <xs:documentation>
501
+ define a database query
502
+ </xs:documentation>
503
+ </xs:annotation>
504
+ <xs:group ref="declareQueryParameter" minOccurs="0" maxOccurs="unbounded"/>
505
+ <xs:attribute name="name" type="identifier"/>
506
+ </xs:complexType>
507
+
284
508
 
285
509
  <xs:group name="declareQueryParameter">
286
510
  <xs:choice>
287
- <xs:element ref="boolean"/>
288
- <xs:element ref="number"/>
289
- <xs:element ref="string"/>
290
- <xs:element ref="datetime"/>
511
+ <xs:element name="boolean" type="booleanType"/>
512
+ <xs:element name="number" type="numberType"/>
513
+ <xs:element name="string" type="stringType"/>
514
+ <xs:element name="datetime" type="datetimeType"/>
291
515
  </xs:choice>
292
516
  </xs:group>
293
517
 
294
- <xs:element name="db.insert">
295
- <xs:complexType>
296
- <xs:sequence>
297
- <xs:element ref="object"/>
298
- </xs:sequence>
299
- <xs:attribute name="table" use="required" type="xs:string"/>
300
- <xs:attribute name="returning_into" type="xs:string"/>
301
- </xs:complexType>
302
- </xs:element>
303
-
304
- <xs:element name="db.update">
305
- <xs:complexType>
306
- <xs:sequence>
307
- <xs:element ref="object"/>
308
- </xs:sequence>
309
- <xs:attribute name="table" use="required" type="xs:string"/>
310
- <xs:attribute name="returning_into" type="xs:string"/>
311
- </xs:complexType>
312
- </xs:element>
313
-
314
- <xs:element name="db.runquery">
315
- <xs:complexType>
316
- <xs:group ref="declareQueryParameter" minOccurs="0" maxOccurs="unbounded"/>
317
- <xs:attribute name="name" use="required" type="xs:string"/>
318
- <xs:attribute name="result" use="required" type="xs:string"/>
319
- </xs:complexType>
320
- </xs:element>
321
-
322
- <xs:element name="db.select">
323
- <xs:complexType>
324
- <xs:group ref="declareQueryParameter" minOccurs="0" maxOccurs="unbounded"/>
325
- <xs:attribute name="table" use="required" type="xs:string"/>
326
- <xs:attribute name="result" use="required" type="xs:string"/>
327
- </xs:complexType>
328
- </xs:element>
329
-
330
- <xs:element name="db.delete">
331
- <xs:complexType>
332
- <xs:sequence>
333
- <xs:element ref="object"/>
334
- </xs:sequence>
335
- <xs:attribute name="table" use="required" type="xs:string"/>
336
- </xs:complexType>
337
- </xs:element>
338
-
339
- <xs:element name="db.call">
340
- <xs:complexType>
341
- <xs:group ref="declareQueryParameter" minOccurs="0" maxOccurs="unbounded"/>
342
- <xs:attribute name="module" use="required" type="xs:string"/>
343
- <xs:attribute name="method" use="required" type="xs:string"/>
344
- <xs:attribute name="returns" type="xs:string"/>
345
- </xs:complexType>
346
- </xs:element>
518
+
519
+ <xs:complexType name="dbinsertInstruction">
520
+ <xs:annotation>
521
+ <xs:documentation>
522
+ sql insert
523
+ </xs:documentation>
524
+ </xs:annotation>
525
+ <xs:sequence>
526
+ <xs:element name="object" type="declareObject"/>
527
+ </xs:sequence>
528
+ <xs:attribute name="table" use="required" type="identifier"/>
529
+ <xs:attribute name="returning_into" type="identifier"/>
530
+ </xs:complexType>
531
+
532
+ <xs:complexType name="dbupdateInstruction">
533
+ <xs:annotation>
534
+ <xs:documentation>
535
+ sql update
536
+ </xs:documentation>
537
+ </xs:annotation>
538
+ <xs:sequence>
539
+ <xs:element name="object" type="declareObject"/>
540
+ </xs:sequence>
541
+ <xs:attribute name="table" use="required" type="identifier"/>
542
+ <xs:attribute name="returning_into" type="identifier"/>
543
+ </xs:complexType>
544
+
545
+ <xs:complexType name="dbrunqueryInstruction">
546
+ <xs:annotation>
547
+ <xs:documentation>
548
+ sql run query
549
+ </xs:documentation>
550
+ </xs:annotation>
551
+ <xs:group ref="declareQueryParameter" minOccurs="0" maxOccurs="unbounded"/>
552
+ <xs:attribute name="name" use="required" type="identifier"/>
553
+ <xs:attribute name="result" use="required" type="identifier"/>
554
+ </xs:complexType>
555
+
556
+ <xs:complexType name="dbselectInstruction">
557
+ <xs:annotation>
558
+ <xs:documentation>
559
+ sql select
560
+ </xs:documentation>
561
+ </xs:annotation>
562
+ <xs:group ref="declareQueryParameter" minOccurs="0" maxOccurs="unbounded"/>
563
+ <xs:attribute name="table" use="required" type="identifier"/>
564
+ <xs:attribute name="result" use="required" type="identifier"/>
565
+ </xs:complexType>
566
+
567
+ <xs:complexType name="dbdeleteInstruction">
568
+ <xs:annotation>
569
+ <xs:documentation>
570
+ sql delete
571
+ </xs:documentation>
572
+ </xs:annotation>
573
+ <xs:sequence>
574
+ <xs:element name="object" type="declareObject"/>
575
+ </xs:sequence>
576
+ <xs:attribute name="table" use="required" type="identifier"/>
577
+ </xs:complexType>
578
+
579
+ <xs:complexType name="dbcallInstruction">
580
+ <xs:annotation>
581
+ <xs:documentation>
582
+ remotely execute on the server a module's method.
583
+ </xs:documentation>
584
+ </xs:annotation>
585
+ <xs:group ref="declareQueryParameter" minOccurs="0" maxOccurs="unbounded"/>
586
+ <xs:attribute name="module" use="required" type="identifier"/>
587
+ <xs:attribute name="method" use="required" type="identifier"/>
588
+ <xs:attribute name="returns" type="identifier"/>
589
+ </xs:complexType>
347
590
 
348
591
  <!--
349
592
  browser-only
350
593
  -->
351
594
 
352
- <xs:element name="form" type="formComponent">
353
- </xs:element>
354
-
355
595
  <xs:complexType name="formComponent">
356
596
  <xs:complexContent>
357
597
  <xs:extension base="gridComponent">
358
- <xs:attribute name="name" type="xs:string"/>
598
+ <xs:attribute name="title" type="xs:string"/>
599
+ <xs:attribute name="card" type="xs:string" fixed=""/>
600
+ </xs:extension>
601
+ </xs:complexContent>
602
+ </xs:complexType>
603
+
604
+ <xs:complexType name="dialogComponent">
605
+ <xs:complexContent>
606
+ <xs:extension base="formComponent">
607
+ <xs:attribute name="seamless" fixed=""/>
608
+ <xs:attribute name="maximized" fixed=""/>
609
+ <xs:attribute name="full-width" fixed=""/>
610
+ <xs:attribute name="full-height" fixed=""/>
611
+ <xs:attribute name="position">
612
+ <xs:simpleType>
613
+ <xs:restriction base="xs:string">
614
+ <xs:enumeration value="standard"/>
615
+ <xs:enumeration value="top"/>
616
+ <xs:enumeration value="bottom"/>
617
+ <xs:enumeration value="right"/>
618
+ <xs:enumeration value="left"/>
619
+ </xs:restriction>
620
+ </xs:simpleType>
621
+ </xs:attribute>
622
+ <xs:attribute name="transition_show">
623
+ <xs:simpleType>
624
+ <xs:restriction base="xs:string">
625
+ <xs:enumeration value="fade"/>
626
+ <xs:enumeration value="slide-right"/>
627
+ <xs:enumeration value="slide-left"/>
628
+ <xs:enumeration value="slide-up"></xs:enumeration>
629
+ <xs:enumeration value="slide-down"></xs:enumeration>
630
+ <xs:enumeration value="scale"/>
631
+ <xs:enumeration value="rotate"/>
632
+ <xs:enumeration value="flip-right"/>
633
+ <xs:enumeration value="flip-left"/>
634
+ <xs:enumeration value="flip-up"/>
635
+ <xs:enumeration value="flip-down"/>
636
+ <xs:enumeration value="jump-right"/>
637
+ <xs:enumeration value="jump-left"/>
638
+ <xs:enumeration value="jump-up"/>
639
+ <xs:enumeration value="jump-down"/>
640
+ </xs:restriction>
641
+ </xs:simpleType>
642
+ </xs:attribute>
643
+ <xs:attribute name="transition_hide">
644
+ <xs:simpleType>
645
+ <xs:restriction base="xs:string">
646
+ <xs:enumeration value="fade"/>
647
+ <xs:enumeration value="slide-right"/>
648
+ <xs:enumeration value="slide-left"/>
649
+ <xs:enumeration value="slide-up"></xs:enumeration>
650
+ <xs:enumeration value="slide-down"></xs:enumeration>
651
+ <xs:enumeration value="scale"/>
652
+ <xs:enumeration value="rotate"/>
653
+ <xs:enumeration value="flip-right"/>
654
+ <xs:enumeration value="flip-left"/>
655
+ <xs:enumeration value="flip-up"/>
656
+ <xs:enumeration value="flip-down"/>
657
+ <xs:enumeration value="jump-right"/>
658
+ <xs:enumeration value="jump-left"/>
659
+ <xs:enumeration value="jump-up"/>
660
+ <xs:enumeration value="jump-down"/>
661
+ </xs:restriction>
662
+ </xs:simpleType>
663
+ </xs:attribute>
664
+ <xs:attribute name="transition-duration" type="xs:integer"/>
359
665
  </xs:extension>
360
666
  </xs:complexContent>
361
667
  </xs:complexType>
362
668
 
363
669
  <xs:complexType name="gridComponent" mixed="true">
670
+ <xs:annotation>
671
+ <xs:documentation>
672
+ HTML 5 CSS Grid Layout. See https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout for more information
673
+ </xs:documentation>
674
+ </xs:annotation>
364
675
  <xs:sequence>
365
676
  <xs:group ref="gridParameter" minOccurs="0" maxOccurs="unbounded"/>
366
677
  <xs:group ref="component" minOccurs="0" maxOccurs="unbounded"/>
367
678
  </xs:sequence>
368
- <xs:attribute name="template-columns" type="xs:string"/>
369
- <xs:attribute name="column" type="xs:string"/>
679
+ <xs:attribute name="name" type="identifier"/>
680
+
681
+ <xs:attribute name="grid" type="xs:string"/>
682
+ <xs:attribute name="grid-template-areas" type="xs:string"/>
683
+ <xs:attribute name="grid-template" type="xs:string"/>
684
+ <xs:attribute name="grid-template-columns" type="xs:string"/>
685
+ <xs:attribute name="grid-template-rows" type="xs:string"/>
686
+ <xs:attribute name="grid-auto-rows" type="xs:string"/>
687
+ <xs:attribute name="grid-auto-columns" type="xs:string"/>
688
+ <xs:attribute name="grid-auto-flow" type="xs:string"/>
689
+
690
+ <xs:attribute name="grid-area" type="xs:string"/>
691
+ <xs:attribute name="grid-column-start" type="xs:string"/>
692
+ <xs:attribute name="grid-column-end" type="xs:string"/>
693
+ <xs:attribute name="grid-row-start" type="xs:string"/>
694
+ <xs:attribute name="grid-row-end" type="xs:string"/>
695
+ <xs:attribute name="grid-column" type="xs:string"/>
696
+ <xs:attribute name="grid-row" type="xs:string"/>
370
697
  </xs:complexType>
371
698
 
372
699
  <xs:group name="gridParameter">
373
700
  <xs:choice>
374
- <xs:element ref="string"/>
375
- <xs:element ref="boolean"/>
701
+ <xs:element name="string" type="stringType"/>
702
+ <xs:element name="boolean" type="booleanType"/>
376
703
  </xs:choice>
377
704
  </xs:group>
378
705
 
379
706
  <xs:group name="component">
380
707
  <xs:choice>
381
708
  <xs:element name="grid" type="gridComponent"/>
709
+ <xs:element name="cardsection" type="gridComponent"/>
710
+ <xs:element name="cardactions" type="gridComponent"/>
382
711
  <xs:element name="input" type="inputComponent"/>
383
712
  <xs:element name="button" type="buttonComponent"/>
384
713
  <xs:element name="field" type="fieldComponent"/>
714
+ <xs:element name="separator" type="separatorComponent"/>
715
+ <xs:element name="tableview" type="tableviewComponent"/>
716
+ <xs:element name="select" type="selectComponent"/>
717
+ <xs:element name="html" type="htmlComponent"/>
718
+ <xs:element name="qimg" type="qimgComponent"/>
719
+ <xs:element name="form" type="formComponent"/>
385
720
  </xs:choice>
386
721
  </xs:group>
387
722
 
388
723
  <xs:complexType name="inputComponent">
389
- <xs:group ref="componentTemplate" minOccurs="0" maxOccurs="unbounded"/>
724
+ <xs:sequence>
725
+ <xs:element name="string" type="inputParameter" minOccurs="0" maxOccurs="unbounded"/>
726
+ <xs:group ref="componentTemplate" minOccurs="0" maxOccurs="unbounded"/>
727
+ </xs:sequence>
728
+
390
729
  <xs:attribute name="model" type="xs:string"/>
391
730
  <xs:attribute name="readonly" type="xs:string"/>
392
731
  <xs:attribute name="disable" type="xs:string"/>
@@ -404,22 +743,191 @@
404
743
  <xs:attribute name="rounded" type="xs:string"/>
405
744
  <xs:attribute name="square" type="xs:string"/>
406
745
  <xs:attribute name="autogrow" type="xs:string"/>
746
+ <xs:attribute name="mandatory" type="xs:string"/>
747
+
748
+ <xs:attribute name="grid-area" type="xs:string"/>
749
+ <xs:attribute name="grid-column-start" type="xs:string"/>
750
+ <xs:attribute name="grid-column-end" type="xs:string"/>
751
+ <xs:attribute name="grid-row-start" type="xs:string"/>
752
+ <xs:attribute name="grid-row-end" type="xs:string"/>
753
+ <xs:attribute name="grid-column" type="xs:string"/>
754
+ <xs:attribute name="grid-row" type="xs:string"/>
755
+
756
+ <xs:attribute name="hidden" type="xs:string"/>
757
+ </xs:complexType>
758
+
759
+ <xs:complexType name="inputParameter">
760
+ <xs:simpleContent>
761
+ <xs:restriction base="stringType">
762
+ <xs:attribute name="name" use="required">
763
+ <xs:simpleType>
764
+ <xs:restriction base="identifier">
765
+ <xs:enumeration value="label"/>
766
+ <xs:enumeration value="visible"/>
767
+ <xs:enumeration value="model"/>
768
+ </xs:restriction>
769
+ </xs:simpleType>
770
+ </xs:attribute>
771
+ <xs:attribute name="literal" type="xs:string" fixed=""/>
772
+ </xs:restriction>
773
+ </xs:simpleContent>
407
774
  </xs:complexType>
408
775
 
409
776
  <xs:complexType name="buttonComponent">
410
- <xs:group ref="buttonEvent" minOccurs="0" maxOccurs="1"/>
777
+ <xs:sequence>
778
+ <xs:element name="string" type="buttonParameter" minOccurs="0" maxOccurs="unbounded"/>
779
+ <xs:element name="function" type="buttonEvent" minOccurs="0" maxOccurs="1"/>
780
+ </xs:sequence>
781
+
411
782
  <xs:attribute name="icon" type="xs:string"/>
412
783
  <xs:attribute name="label" type="xs:string"/>
784
+ <xs:attribute name="validate_dialog" fixed=""/>
785
+ <xs:attribute name="save" fixed=""/>
786
+ <xs:attribute name="if-dirty" fixed=""/>
787
+ <xs:attribute name="closeform" fixed=""/>
788
+
789
+ <xs:attribute name="grid-area" type="xs:string"/>
790
+ <xs:attribute name="grid-column-start" type="xs:string"/>
791
+ <xs:attribute name="grid-column-end" type="xs:string"/>
792
+ <xs:attribute name="grid-row-start" type="xs:string"/>
793
+ <xs:attribute name="grid-row-end" type="xs:string"/>
794
+ <xs:attribute name="grid-column" type="xs:string"/>
795
+ <xs:attribute name="grid-row" type="xs:string"/>
413
796
  </xs:complexType>
414
797
 
415
- <xs:group name="buttonEvent">
416
- <xs:choice>
417
- <xs:element name="onclick" type="block"/>
418
- </xs:choice>
419
- </xs:group>
798
+ <xs:complexType name="buttonParameter">
799
+ <xs:simpleContent>
800
+ <xs:restriction base="stringType">
801
+ <xs:attribute name="name" use="required">
802
+ <xs:simpleType>
803
+ <xs:restriction base="identifier">
804
+ <xs:enumeration value="label"></xs:enumeration>
805
+ <xs:enumeration value="visible"></xs:enumeration>
806
+ </xs:restriction>
807
+ </xs:simpleType>
808
+ </xs:attribute>
809
+ <xs:attribute name="literal" type="xs:string" fixed=""/>
810
+ </xs:restriction>
811
+ </xs:simpleContent>
812
+ </xs:complexType>
813
+
814
+ <xs:complexType name="buttonEvent">
815
+ <xs:complexContent>
816
+ <xs:restriction base="function_method">
817
+ <xs:sequence>
818
+ <xs:group ref="declareVariable" minOccurs="0" maxOccurs="unbounded"/>
819
+ <xs:element name="block" type="blockInstruction" minOccurs="1" maxOccurs="1"/>
820
+ </xs:sequence>
821
+ <xs:attribute name="name" use="required">
822
+ <xs:simpleType>
823
+ <xs:restriction base="identifier">
824
+ <xs:enumeration value="onclick"></xs:enumeration>
825
+ </xs:restriction>
826
+ </xs:simpleType>
827
+ </xs:attribute>
828
+ </xs:restriction>
829
+ </xs:complexContent>
830
+ </xs:complexType>
420
831
 
421
832
  <xs:complexType name="fieldComponent">
422
833
  <xs:group ref="componentTemplate" minOccurs="0" maxOccurs="unbounded"/>
834
+
835
+ <xs:attribute name="grid-area" type="xs:string"/>
836
+ <xs:attribute name="grid-column-start" type="xs:string"/>
837
+ <xs:attribute name="grid-column-end" type="xs:string"/>
838
+ <xs:attribute name="grid-row-start" type="xs:string"/>
839
+ <xs:attribute name="grid-row-end" type="xs:string"/>
840
+ <xs:attribute name="grid-column" type="xs:string"/>
841
+ <xs:attribute name="grid-row" type="xs:string"/>
842
+ </xs:complexType>
843
+
844
+ <xs:complexType name="tableviewComponent">
845
+ <xs:attribute name="name" type="xs:string"/>
846
+ <xs:attribute name="model" type="xs:string" use="required"/>
847
+ <xs:attribute name="title" type="xs:string"/>
848
+ <xs:attribute name="not-empty" fixed=""/>
849
+ <xs:attribute name="rows-per-page" type="xs:integer"/>
850
+
851
+ <xs:attribute name="grid-area" type="xs:string"/>
852
+ <xs:attribute name="grid-column-start" type="xs:string"/>
853
+ <xs:attribute name="grid-column-end" type="xs:string"/>
854
+ <xs:attribute name="grid-row-start" type="xs:string"/>
855
+ <xs:attribute name="grid-row-end" type="xs:string"/>
856
+ <xs:attribute name="grid-column" type="xs:string"/>
857
+ <xs:attribute name="grid-row" type="xs:string"/>
858
+
859
+ <xs:attribute name="template" type="xs:string"/>
860
+ </xs:complexType>
861
+
862
+ <xs:complexType name="selectComponent">
863
+ <xs:sequence>
864
+ <xs:element name="string" type="selectParameter" minOccurs="0" maxOccurs="unbounded"/>
865
+ <xs:element name="object" type="declareObject" minOccurs="0"/>
866
+ <xs:element name="function" minOccurs="0">
867
+ <xs:complexType>
868
+ <xs:complexContent>
869
+ <xs:restriction base="function_method">
870
+ <xs:sequence>
871
+ <xs:group ref="declareVariable" minOccurs="0" maxOccurs="unbounded"/>
872
+ <xs:element name="block" type="blockInstruction" minOccurs="1" maxOccurs="1"/>
873
+ </xs:sequence>
874
+ <xs:attribute name="name" use="required">
875
+ <xs:simpleType>
876
+ <xs:restriction base="identifier">
877
+ <xs:enumeration value="add_function"></xs:enumeration>
878
+ </xs:restriction>
879
+ </xs:simpleType>
880
+ </xs:attribute>
881
+ </xs:restriction>
882
+ </xs:complexContent>
883
+ </xs:complexType>
884
+ </xs:element>
885
+ </xs:sequence>
886
+ <xs:attribute name="model"/>
887
+ <xs:attribute name="label"/>
888
+ <xs:attribute name="readonly" fixed=""/>
889
+
890
+ <xs:attribute name="grid-area" type="xs:string"/>
891
+ <xs:attribute name="grid-column-start" type="xs:string"/>
892
+ <xs:attribute name="grid-column-end" type="xs:string"/>
893
+ <xs:attribute name="grid-row-start" type="xs:string"/>
894
+ <xs:attribute name="grid-row-end" type="xs:string"/>
895
+ <xs:attribute name="grid-column" type="xs:string"/>
896
+ <xs:attribute name="grid-row" type="xs:string"/>
897
+ </xs:complexType>
898
+
899
+ <xs:complexType name="selectParameter">
900
+ <xs:simpleContent>
901
+ <xs:restriction base="stringType">
902
+ <xs:attribute name="name" use="required">
903
+ <xs:simpleType>
904
+ <xs:restriction base="identifier">
905
+ <xs:enumeration value="model"/>
906
+ <xs:enumeration value="label"/>
907
+ <xs:enumeration value="visible"/>
908
+ <xs:enumeration value="option_value"/>
909
+ <xs:enumeration value="option_label"/>
910
+ <xs:enumeration value="add_label"/>
911
+ <xs:enumeration value="comp_options"/>
912
+ </xs:restriction>
913
+ </xs:simpleType>
914
+ </xs:attribute>
915
+ <xs:attribute name="literal" type="xs:string" fixed=""/>
916
+ </xs:restriction>
917
+ </xs:simpleContent>
918
+ </xs:complexType>
919
+
920
+ <xs:complexType name="separatorComponent">
921
+ <xs:attribute name="dark" fixed=""/>
922
+ <xs:attribute name="vertical" fixed=""/>
923
+
924
+ <xs:attribute name="grid-area" type="xs:string"/>
925
+ <xs:attribute name="grid-column-start" type="xs:string"/>
926
+ <xs:attribute name="grid-column-end" type="xs:string"/>
927
+ <xs:attribute name="grid-row-start" type="xs:string"/>
928
+ <xs:attribute name="grid-row-end" type="xs:string"/>
929
+ <xs:attribute name="grid-column" type="xs:string"/>
930
+ <xs:attribute name="grid-row" type="xs:string"/>
423
931
  </xs:complexType>
424
932
 
425
933
  <xs:group name="componentTemplate">
@@ -436,4 +944,147 @@
436
944
  </xs:simpleContent>
437
945
  </xs:complexType>
438
946
 
947
+ <xs:complexType name="setmenuInstruction">
948
+ <xs:annotation>
949
+ <xs:documentation>
950
+ sets the drawer menu content.
951
+ </xs:documentation>
952
+ </xs:annotation>
953
+ <xs:sequence>
954
+ <xs:element name="object" type="declareObject">
955
+ <xs:annotation>
956
+ <xs:documentation>
957
+ <![CDATA[
958
+ Each menu item is described by a string variable composed of the following parts joined by a semi-colon character : title;icon;caption;path
959
+ e.g. Account table;receipt;Manage the account table; /run/accounint/account
960
+ ]]>
961
+ </xs:documentation>
962
+ </xs:annotation>
963
+ </xs:element>
964
+ </xs:sequence>
965
+ </xs:complexType>
966
+
967
+ <xs:complexType name="showdialogInstruction">
968
+ <xs:annotation>
969
+ <xs:documentation>
970
+ show a modal dialog box. You can stack up to 6 modal dialog box.
971
+ </xs:documentation>
972
+ </xs:annotation>
973
+ <xs:sequence>
974
+ <xs:element name="dialog" type="dialogComponent"/>
975
+ </xs:sequence>
976
+ </xs:complexType>
977
+
978
+ <xs:complexType name="showformInstruction">
979
+ <xs:all>
980
+ <xs:element name="toolbar" type="toolbarComponent" minOccurs="0" maxOccurs="1"/>
981
+ <xs:element name="form" type="formComponent"/>
982
+ </xs:all>
983
+ </xs:complexType>
984
+
985
+ <xs:complexType name="alertInstruction">
986
+ <xs:sequence>
987
+ <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
988
+ <xs:element name="message" type="xs:string" minOccurs="0" maxOccurs="1"/>
989
+ </xs:sequence>
990
+ </xs:complexType>
991
+
992
+ <xs:complexType name="sendevent">
993
+ <xs:sequence>
994
+ <xs:element name="string" type="sendeventParameter" minOccurs="2" maxOccurs="2"/>
995
+ </xs:sequence>
996
+ </xs:complexType>
997
+
998
+ <xs:complexType name="sendeventParameter">
999
+ <xs:simpleContent>
1000
+ <xs:restriction base="stringType">
1001
+ <xs:attribute name="name">
1002
+ <xs:simpleType>
1003
+ <xs:restriction base="identifier">
1004
+ <xs:enumeration value="component"></xs:enumeration>
1005
+ <xs:enumeration value="event"></xs:enumeration>
1006
+ </xs:restriction>
1007
+ </xs:simpleType>
1008
+ </xs:attribute>
1009
+ </xs:restriction>
1010
+ </xs:simpleContent>
1011
+ </xs:complexType>
1012
+
1013
+ <xs:complexType name="toolbarComponent" mixed="true">
1014
+ <xs:sequence>
1015
+ <xs:group ref="component" minOccurs="0" maxOccurs="unbounded"/>
1016
+ </xs:sequence>
1017
+ <xs:attribute name="name" type="xs:string"/>
1018
+ </xs:complexType>
1019
+
1020
+ <xs:complexType name="htmlComponent">
1021
+ <xs:simpleContent>
1022
+ <xs:extension base="xs:string">
1023
+ <xs:attribute name="literal" type="xs:string" fixed=""/>
1024
+ <xs:attribute name="href" type="xs:string"/>
1025
+
1026
+ <xs:attribute name="grid-area" type="xs:string"/>
1027
+ <xs:attribute name="grid-column-start" type="xs:string"/>
1028
+ <xs:attribute name="grid-column-end" type="xs:string"/>
1029
+ <xs:attribute name="grid-row-start" type="xs:string"/>
1030
+ <xs:attribute name="grid-row-end" type="xs:string"/>
1031
+ <xs:attribute name="grid-column" type="xs:string"/>
1032
+ <xs:attribute name="grid-row" type="xs:string"/>
1033
+ </xs:extension>
1034
+ </xs:simpleContent>
1035
+ </xs:complexType>
1036
+
1037
+ <xs:complexType name="qimgComponent">
1038
+ <xs:sequence>
1039
+ <xs:element name="string" type="qimgParameter" minOccurs="0" maxOccurs="2"/>
1040
+ <xs:element name="object" type="declareObject"/>
1041
+ </xs:sequence>
1042
+
1043
+ <xs:attribute name="model" type="xs:string"/>
1044
+ <xs:attribute name="label" type="xs:string"/>
1045
+
1046
+ <xs:attribute name="grid-area" type="xs:string"/>
1047
+ <xs:attribute name="grid-column-start" type="xs:string"/>
1048
+ <xs:attribute name="grid-column-end" type="xs:string"/>
1049
+ <xs:attribute name="grid-row-start" type="xs:string"/>
1050
+ <xs:attribute name="grid-row-end" type="xs:string"/>
1051
+ <xs:attribute name="grid-column" type="xs:string"/>
1052
+ <xs:attribute name="grid-row" type="xs:string"/>
1053
+ </xs:complexType>
1054
+
1055
+ <xs:complexType name="qimgParameter">
1056
+ <xs:simpleContent>
1057
+ <xs:restriction base="stringType">
1058
+ <xs:attribute name="name" use="required">
1059
+ <xs:simpleType>
1060
+ <xs:restriction base="identifier">
1061
+ <xs:enumeration value="table_name"/>
1062
+ <xs:enumeration value="field_name"/>
1063
+ </xs:restriction>
1064
+ </xs:simpleType>
1065
+ </xs:attribute>
1066
+ </xs:restriction>
1067
+ </xs:simpleContent>
1068
+ </xs:complexType>
1069
+
1070
+ <!-- server side only objects -->
1071
+
1072
+ <xs:complexType name="requestObject">
1073
+ <xs:annotation>
1074
+ <xs:documentation>
1075
+ Only on .cyk service page module, in the parameters of [get] function.
1076
+ </xs:documentation>
1077
+ </xs:annotation>
1078
+ <xs:attribute name="name"/>
1079
+ </xs:complexType>
1080
+
1081
+ <xs:complexType name="responseObject">
1082
+ <xs:annotation>
1083
+ <xs:documentation>
1084
+ Only on .cyk service page module, in the parameters of [get] function.
1085
+ </xs:documentation>
1086
+ </xs:annotation>
1087
+ <xs:attribute name="name"/>
1088
+ </xs:complexType>
1089
+
439
1090
  </xs:schema>