Showing
5 changed files
with
84 additions
and
25 deletions
... | @@ -1911,18 +1911,6 @@ app:ImageResourceViewer | ... | @@ -1911,18 +1911,6 @@ app:ImageResourceViewer |
1911 | ] | 1911 | ] |
1912 | ] . | 1912 | ] . |
1913 | 1913 | ||
1914 | -app:InstancesGrid | ||
1915 | - rdf:type ui:NodeClass ; | ||
1916 | - rdfs:comment "A grid displaying all instances of a class."^^xsd:string ; | ||
1917 | - rdfs:label "Instances grid"^^xsd:string ; | ||
1918 | - rdfs:subClassOf app:GridElements ; | ||
1919 | - spin:constraint | ||
1920 | - [ rdf:type spl:Argument ; | ||
1921 | - rdfs:comment "The class to display the instances of."^^xsd:string ; | ||
1922 | - spl:predicate arg:class ; | ||
1923 | - spl:valueType rdfs:Class | ||
1924 | - ] . | ||
1925 | - | ||
1926 | app:Label | 1914 | app:Label |
1927 | rdf:type ui:NodeClass ; | 1915 | rdf:type ui:NodeClass ; |
1928 | rdfs:label "Label"^^xsd:string ; | 1916 | rdfs:label "Label"^^xsd:string ; |
... | @@ -3849,6 +3837,13 @@ app:SearchForm | ... | @@ -3849,6 +3837,13 @@ app:SearchForm |
3849 | ] ; | 3837 | ] ; |
3850 | spin:constraint | 3838 | spin:constraint |
3851 | [ rdf:type spl:Argument ; | 3839 | [ rdf:type spl:Argument ; |
3840 | + rdfs:comment "The onSelect handler of the generated SearchResultsGrid."^^xsd:string ; | ||
3841 | + spl:optional "true"^^xsd:boolean ; | ||
3842 | + spl:predicate arg:onSelect ; | ||
3843 | + spl:valueType xsd:string | ||
3844 | + ] ; | ||
3845 | + spin:constraint | ||
3846 | + [ rdf:type spl:Argument ; | ||
3852 | rdfs:comment "An optional graph that contains the schema (needed to determine whether an instance has a class that is the subclass of the resource type)."^^xsd:string ; | 3847 | rdfs:comment "An optional graph that contains the schema (needed to determine whether an instance has a class that is the subclass of the resource type)."^^xsd:string ; |
3853 | spl:optional "true"^^xsd:boolean ; | 3848 | spl:optional "true"^^xsd:boolean ; |
3854 | spl:predicate arg:queryGraph ; | 3849 | spl:predicate arg:queryGraph ; |
... | @@ -3883,7 +3878,7 @@ app:SearchForm | ... | @@ -3883,7 +3878,7 @@ app:SearchForm |
3883 | ui:child | 3878 | ui:child |
3884 | [ rdf:type html:Form ; | 3879 | [ rdf:type html:Form ; |
3885 | html:class | 3880 | html:class |
3886 | - [ rdf:type fn:concat ; | 3881 | + [ rdf:type ui:concat ; |
3887 | sp:arg1 "appForm "^^xsd:string ; | 3882 | sp:arg1 "appForm "^^xsd:string ; |
3888 | sp:arg2 [ rdf:type sp:if ; | 3883 | sp:arg2 [ rdf:type sp:if ; |
3889 | sp:arg1 [ rdf:type sp:or ; | 3884 | sp:arg1 [ rdf:type sp:or ; |
... | @@ -3922,7 +3917,7 @@ app:SearchForm | ... | @@ -3922,7 +3917,7 @@ app:SearchForm |
3922 | html:name "type"^^xsd:string ; | 3917 | html:name "type"^^xsd:string ; |
3923 | html:type "hidden"^^xsd:string ; | 3918 | html:type "hidden"^^xsd:string ; |
3924 | html:value | 3919 | html:value |
3925 | - [ rdf:type fn:concat ; | 3920 | + [ rdf:type ui:concat ; |
3926 | sp:arg1 "<"^^xsd:string ; | 3921 | sp:arg1 "<"^^xsd:string ; |
3927 | sp:arg2 [ sp:varName "resourceType"^^xsd:string | 3922 | sp:arg2 [ sp:varName "resourceType"^^xsd:string |
3928 | ] ; | 3923 | ] ; |
... | @@ -3967,7 +3962,7 @@ app:SearchForm | ... | @@ -3967,7 +3962,7 @@ app:SearchForm |
3967 | ui:child | 3962 | ui:child |
3968 | [ rdf:type html:Input ; | 3963 | [ rdf:type html:Input ; |
3969 | html:name | 3964 | html:name |
3970 | - [ rdf:type fn:concat ; | 3965 | + [ rdf:type ui:concat ; |
3971 | sp:arg1 "keyProperty"^^xsd:string ; | 3966 | sp:arg1 "keyProperty"^^xsd:string ; |
3972 | sp:arg2 [ sp:varName "index"^^xsd:string | 3967 | sp:arg2 [ sp:varName "index"^^xsd:string |
3973 | ] | 3968 | ] |
... | @@ -4024,7 +4019,7 @@ app:SearchForm | ... | @@ -4024,7 +4019,7 @@ app:SearchForm |
4024 | ui:child | 4019 | ui:child |
4025 | [ rdf:type html:Input ; | 4020 | [ rdf:type html:Input ; |
4026 | html:onclick | 4021 | html:onclick |
4027 | - [ rdf:type fn:concat ; | 4022 | + [ rdf:type ui:concat ; |
4028 | sp:arg1 "appLoadSearchResultsGrid('"^^xsd:string ; | 4023 | sp:arg1 "appLoadSearchResultsGrid('"^^xsd:string ; |
4029 | sp:arg2 [ sp:varName "fid"^^xsd:string | 4024 | sp:arg2 [ sp:varName "fid"^^xsd:string |
4030 | ] ; | 4025 | ] ; |
... | @@ -4032,7 +4027,9 @@ app:SearchForm | ... | @@ -4032,7 +4027,9 @@ app:SearchForm |
4032 | sp:arg4 [ sp:varName "resultsId"^^xsd:string | 4027 | sp:arg4 [ sp:varName "resultsId"^^xsd:string |
4033 | ] ; | 4028 | ] ; |
4034 | sp:arg5 "', '"^^xsd:string ; | 4029 | sp:arg5 "', '"^^xsd:string ; |
4035 | - sp:arg6 [ rdf:type ui:currentQueryGraph | 4030 | + sp:arg6 [ rdf:type ui:escapeJSON ; |
4031 | + sp:arg1 [ sp:varName "onSelect"^^xsd:string | ||
4032 | + ] | ||
4036 | ] ; | 4033 | ] ; |
4037 | sp:arg7 "')"^^xsd:string | 4034 | sp:arg7 "')"^^xsd:string |
4038 | ] ; | 4035 | ] ; |
... | @@ -4040,6 +4037,18 @@ app:SearchForm | ... | @@ -4040,6 +4037,18 @@ app:SearchForm |
4040 | html:value "Search"^^xsd:string ; | 4037 | html:value "Search"^^xsd:string ; |
4041 | ui:childIndex 0 | 4038 | ui:childIndex 0 |
4042 | ] ; | 4039 | ] ; |
4040 | + ui:child | ||
4041 | + [ rdf:type ui:TextNode ; | ||
4042 | + ui:childIndex 1 ; | ||
4043 | + ui:text """ | ||
4044 | +"""^^xsd:string | ||
4045 | + ] ; | ||
4046 | + ui:child | ||
4047 | + [ rdf:type html:Input ; | ||
4048 | + html:type "reset"^^xsd:string ; | ||
4049 | + html:value "Reset"^^xsd:string ; | ||
4050 | + ui:childIndex 2 | ||
4051 | + ] ; | ||
4043 | ui:childIndex 6 | 4052 | ui:childIndex 6 |
4044 | ] ; | 4053 | ] ; |
4045 | ui:childIndex 0 ; | 4054 | ui:childIndex 0 ; |
... | @@ -4082,6 +4091,13 @@ app:SearchResultsGrid | ... | @@ -4082,6 +4091,13 @@ app:SearchResultsGrid |
4082 | rdfs:subClassOf app:GridElements ; | 4091 | rdfs:subClassOf app:GridElements ; |
4083 | spin:constraint | 4092 | spin:constraint |
4084 | [ rdf:type spl:Argument ; | 4093 | [ rdf:type spl:Argument ; |
4094 | + rdfs:comment "JavaScript code that shall be executed if the user selects a row in the grid. In this JavaScript code, the variable resource contains the URI of the selected resource."^^xsd:string ; | ||
4095 | + spl:optional "true"^^xsd:boolean ; | ||
4096 | + spl:predicate arg:onSelect ; | ||
4097 | + spl:valueType xsd:string | ||
4098 | + ] ; | ||
4099 | + spin:constraint | ||
4100 | + [ rdf:type spl:Argument ; | ||
4085 | rdfs:comment "A URL-encoded string of the parameters produced by a SearchForm."^^xsd:string ; | 4101 | rdfs:comment "A URL-encoded string of the parameters produced by a SearchForm."^^xsd:string ; |
4086 | spl:predicate arg:params ; | 4102 | spl:predicate arg:params ; |
4087 | spl:valueType xsd:string | 4103 | spl:valueType xsd:string | ... | ... |
... | @@ -123,11 +123,29 @@ function appInitDatePicker(id, altId) { | ... | @@ -123,11 +123,29 @@ function appInitDatePicker(id, altId) { |
123 | if(!altId) { | 123 | if(!altId) { |
124 | altId = 'new-' + id; | 124 | altId = 'new-' + id; |
125 | } | 125 | } |
126 | - $('#dateEditor' + id).datepicker({ | 126 | + var eid = '#dateEditor' + id; |
127 | + $(eid).datepicker({ | ||
127 | altField: '#' + altId, | 128 | altField: '#' + altId, |
128 | altFormat: 'yy-mm-dd', | 129 | altFormat: 'yy-mm-dd', |
129 | dateFormat: 'yy-mm-dd', | 130 | dateFormat: 'yy-mm-dd', |
130 | }); | 131 | }); |
132 | + | ||
133 | + // Work-around to bug: Make sure that hidden field is cleared if field is empty | ||
134 | + $(eid).change(function() { | ||
135 | + if('' == $(eid).val()) { | ||
136 | + $('#' + altId).val(''); | ||
137 | + } | ||
138 | + }); | ||
139 | +} | ||
140 | + | ||
141 | + | ||
142 | +/** | ||
143 | + * Replaces the content of a given jQuery element with a loading indicator | ||
144 | + * (spinning wheel). | ||
145 | + * @param e the jQuery element | ||
146 | + */ | ||
147 | +function appInsertLoadingIndicator(e) { | ||
148 | + e.html('<div class="appLoadingIndicator" />'); | ||
131 | } | 149 | } |
132 | 150 | ||
133 | 151 | ||
... | @@ -156,7 +174,7 @@ function appLoad(id, args) { | ... | @@ -156,7 +174,7 @@ function appLoad(id, args) { |
156 | var p = jQuery.param(c); | 174 | var p = jQuery.param(c); |
157 | url = p + "&" + base; | 175 | url = p + "&" + base; |
158 | } | 176 | } |
159 | - e.html('<div class="appLoadingIndicator" />'); | 177 | + appInsertLoadingIndicator(e); |
160 | e.load(uispinServlet, url); | 178 | e.load(uispinServlet, url); |
161 | } | 179 | } |
162 | 180 | ||
... | @@ -187,6 +205,7 @@ function appLoadForm(formId, mode, resourceURI, resourceTypeURI, queryGraphURI) | ... | @@ -187,6 +205,7 @@ function appLoadForm(formId, mode, resourceURI, resourceTypeURI, queryGraphURI) |
187 | if(queryGraphURI) { | 205 | if(queryGraphURI) { |
188 | data._base = '<' + queryGraphURI + '>'; | 206 | data._base = '<' + queryGraphURI + '>'; |
189 | } | 207 | } |
208 | + appInsertLoadingIndicator($('#' + formId).parent()); | ||
190 | $.get(uispinServlet, data, function(data) { | 209 | $.get(uispinServlet, data, function(data) { |
191 | $('#' + formId).parent().html(data); | 210 | $('#' + formId).parent().html(data); |
192 | }); | 211 | }); |
... | @@ -199,16 +218,35 @@ function appLoadForm(formId, mode, resourceURI, resourceTypeURI, queryGraphURI) | ... | @@ -199,16 +218,35 @@ function appLoadForm(formId, mode, resourceURI, resourceTypeURI, queryGraphURI) |
199 | * a given id. Will replace the content of a given target element. | 218 | * a given id. Will replace the content of a given target element. |
200 | * @param formId the form id | 219 | * @param formId the form id |
201 | * @param targetId the target id | 220 | * @param targetId the target id |
202 | - * @returns false | 221 | + * @param onSelect the value for onSelect of the generated grid |
203 | */ | 222 | */ |
204 | -function appLoadSearchResultsGrid(formId, targetId) { | 223 | +function appLoadSearchResultsGrid(formId, targetId, onSelect) { |
205 | var params = $('#' + formId).serialize(); | 224 | var params = $('#' + formId).serialize(); |
206 | var escaped = '¶ms=' + escape(params); | 225 | var escaped = '¶ms=' + escape(params); |
226 | + if(onSelect) { | ||
227 | + escaped += '&onSelect=' + escape(onSelect); | ||
228 | + } | ||
229 | + appInsertLoadingIndicator($('#' + targetId)); | ||
207 | $.get(uispinServlet + '?_viewClass=app:SearchResultsGrid&_snippet=true&' + | 230 | $.get(uispinServlet + '?_viewClass=app:SearchResultsGrid&_snippet=true&' + |
208 | params + escaped, function(data) { | 231 | params + escaped, function(data) { |
209 | $('#' + targetId).html(data); | 232 | $('#' + targetId).html(data); |
210 | }); | 233 | }); |
211 | - return false; | 234 | +} |
235 | + | ||
236 | + | ||
237 | +/** | ||
238 | + * Loads a given ui:loadable with a given variable pre-bound to | ||
239 | + * a given URI resource. | ||
240 | + * This can be used as onSelect handler of tree and grid elements, | ||
241 | + * e.g. onSelect="appLoadWithResource('form', 'resource', resource)" | ||
242 | + * @param loadId the id of the ui:loadable | ||
243 | + * @param varName the name of the variable to set | ||
244 | + * @param resourceURI the URI of the resource | ||
245 | + */ | ||
246 | +function appLoadWithResource(loadId, varName, resourceURI) { | ||
247 | + var params = {}; | ||
248 | + params[varName] = '<' + resourceURI + '>'; | ||
249 | + appLoad(loadId, params); | ||
212 | } | 250 | } |
213 | 251 | ||
214 | 252 | ... | ... |
... | @@ -6,7 +6,7 @@ | ... | @@ -6,7 +6,7 @@ |
6 | <div id="{= ?pagerId }" /> | 6 | <div id="{= ?pagerId }" /> |
7 | <script> | 7 | <script> |
8 | $("#{= ?tableId }").jqGrid({ | 8 | $("#{= ?tableId }").jqGrid({ |
9 | - <swon:NameValuePair arg:name="url" arg:value="{= fn:concat('getSearchResults?', ?params) }" />, | 9 | + <swon:NameValuePair arg:name="url" arg:value="getSearchResults?{= ?params }" />, |
10 | <swon:NameValuePair arg:name="datatype" arg:value="json" />, | 10 | <swon:NameValuePair arg:name="datatype" arg:value="json" />, |
11 | colNames:[ | 11 | colNames:[ |
12 | <ui:if ui:condition="{= bound(?keyProperties) }"> | 12 | <ui:if ui:condition="{= bound(?keyProperties) }"> |
... | @@ -48,11 +48,16 @@ | ... | @@ -48,11 +48,16 @@ |
48 | } | 48 | } |
49 | </ui:else> | 49 | </ui:else> |
50 | ], | 50 | ], |
51 | + <ui:if ui:condition="{= bound(?onSelect) }"> | ||
52 | + onSelectRow: function(resource) { | ||
53 | + {= ?onSelect } | ||
54 | + }, | ||
55 | + </ui:if> | ||
51 | rowNum: 10, | 56 | rowNum: 10, |
52 | rowList:[5,10,20], | 57 | rowList:[5,10,20], |
53 | pager: '#{= ?pagerId }', | 58 | pager: '#{= ?pagerId }', |
54 | viewrecords: true, | 59 | viewrecords: true, |
55 | - sortorder: "desc", | 60 | + sortorder: "asc", |
56 | height: "100%", | 61 | height: "100%", |
57 | width: "100%" | 62 | width: "100%" |
58 | }).jqGrid('navGrid', '#{= ?pagerId }', { add:false, edit:false, del:false}); | 63 | }).jqGrid('navGrid', '#{= ?pagerId }', { add:false, edit:false, del:false}); | ... | ... |
appschema.org/skapp.ui.ttl
0 → 100644
This diff is collapsed. Click to expand it.
... | @@ -47,7 +47,7 @@ log:LogBrowser | ... | @@ -47,7 +47,7 @@ log:LogBrowser |
47 | [ rdf:type app:Tree ; | 47 | [ rdf:type app:Tree ; |
48 | arg:dataProvider log:LogEventClassTreeDataProvider ; | 48 | arg:dataProvider log:LogEventClassTreeDataProvider ; |
49 | arg:id "classTree"^^xsd:string ; | 49 | arg:id "classTree"^^xsd:string ; |
50 | - arg:onSelect "appLoad('form', {resourceType: '<' + resource + '>'})"^^xsd:string ; | 50 | + arg:onSelect "appLoadWithResource('form', 'resourceType', resource)"^^xsd:string ; |
51 | ui:childIndex 1 | 51 | ui:childIndex 1 |
52 | ] ; | 52 | ] ; |
53 | ui:childIndex 0 | 53 | ui:childIndex 0 | ... | ... |
-
Please register or login to post a comment