Commit 73cc8795b09adf7737fdaefc0691a7699762e12c
1 parent
339d682e
dataset page and wait datalet
Showing
3 changed files
with
129 additions
and
13 deletions
datalets/base-ajax-json-jsonpath-datalet/static/js/AjaxJsonJsonPathBehavior.js
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | @license | 2 | @license |
3 | The MIT License (MIT) | 3 | The MIT License (MIT) |
4 | 4 | ||
5 | - Copyright (c) 2015 Dipartimento di Informatica - Università di Salerno - Italy | 5 | + Copyright (c) 2015 Dipartimento di Informatica - Universit� di Salerno - Italy |
6 | 6 | ||
7 | Permission is hereby granted, free of charge, to any person obtaining a copy | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy |
8 | of this software and associated documentation files (the "Software"), to deal | 8 | of this software and associated documentation files (the "Software"), to deal |
@@ -98,7 +98,7 @@ var AjaxJsonJsonPathBehavior = { | @@ -98,7 +98,7 @@ var AjaxJsonJsonPathBehavior = { | ||
98 | * | 98 | * |
99 | * @method selectData | 99 | * @method selectData |
100 | */ | 100 | */ |
101 | - selectData : function(){ | 101 | + selectData : function() { |
102 | 102 | ||
103 | this.data = []; | 103 | this.data = []; |
104 | 104 | ||
@@ -107,17 +107,27 @@ var AjaxJsonJsonPathBehavior = { | @@ -107,17 +107,27 @@ var AjaxJsonJsonPathBehavior = { | ||
107 | 107 | ||
108 | this._component.fields = JSON.parse(this._component.fields); | 108 | this._component.fields = JSON.parse(this._component.fields); |
109 | 109 | ||
110 | - for(var i=0;i < this._component.fields.length; i++){ | 110 | + for (var i = 0; i < this._component.fields.length; i++) { |
111 | var query = "$"; | 111 | var query = "$"; |
112 | var query_elements = this._component.fields[i].split(','); | 112 | var query_elements = this._component.fields[i].split(','); |
113 | - for(var j=0; j < query_elements.length;j++){ | 113 | + for (var j = 0; j < query_elements.length; j++) { |
114 | query += "['" + query_elements[j] + "']"; | 114 | query += "['" + query_elements[j] + "']"; |
115 | - if(this.isFieldArray(query_elements.slice(0,j+1))){ | 115 | + if (this.isFieldArray(query_elements.slice(0, j + 1))) { |
116 | query += "[*]"; | 116 | query += "[*]"; |
117 | } | 117 | } |
118 | } | 118 | } |
119 | - this.data.push({name : query_elements[query_elements.length - 1], data : jsonPath(this.properties.json_results.value, query)}); | 119 | + this.data.push({ |
120 | + name: query_elements[query_elements.length - 1], | ||
121 | + data: jsonPath(this.properties.json_results.value, query) | ||
122 | + }); | ||
120 | } | 123 | } |
121 | - } | 124 | + this.deleteWaitImage(); |
125 | + }, | ||
122 | 126 | ||
127 | + /** | ||
128 | + * Delete a image after loading a datalet | ||
129 | + */ | ||
130 | + deleteWaitImage : function() { | ||
131 | + $("img[src$='spin.svg']").remove(); | ||
132 | + } | ||
123 | }; | 133 | }; |
124 | \ No newline at end of file | 134 | \ No newline at end of file |
datalets/base-datalet/base-datalet.html
@@ -72,13 +72,27 @@ Example : | @@ -72,13 +72,27 @@ Example : | ||
72 | height:32px; | 72 | height:32px; |
73 | width: 32px; | 73 | width: 32px; |
74 | } | 74 | } |
75 | + #image_spin { | ||
76 | + height:32px; | ||
77 | + width: 32px; | ||
78 | + position: relative; | ||
79 | + center: center; | ||
80 | + width: 100%; | ||
81 | + } | ||
82 | + | ||
75 | </style> | 83 | </style> |
76 | 84 | ||
85 | + <div id="base_datalet_imgWaitDatalet"> | ||
86 | + <img id="image_spin" src="static/images/spin.svg"> | ||
87 | + | ||
88 | + </div> | ||
89 | + | ||
77 | <div id="base_datalet_container"> | 90 | <div id="base_datalet_container"> |
78 | <b>Source: </b><span id="domain"></span> | 91 | <b>Source: </b><span id="domain"></span> |
92 | + <b> </b><span id="domainPage"></span> | ||
79 | <div id="base_datalet_rtp"> | 93 | <div id="base_datalet_rtp"> |
80 | - <div id="rtp">Powered by Route-to-PA</div> | ||
81 | - <div><a href="http://routetopa.eu/"><img id="rtpalogo" src="static/images/rtpalogo.png"></a></div> | 94 | + <div id="rtp">Powered by ROUTE-TO-PA</div> |
95 | + <div><a href="http://www.routetopa.eu/"><img id="rtpalogo" src="static/images/rtpalogo.png" ></a></div> | ||
82 | </div> | 96 | </div> |
83 | </div> | 97 | </div> |
84 | 98 | ||
@@ -92,19 +106,51 @@ Example : | @@ -92,19 +106,51 @@ Example : | ||
92 | <script> | 106 | <script> |
93 | BaseDatalet = Polymer({ | 107 | BaseDatalet = Polymer({ |
94 | is: 'base-datalet', | 108 | is: 'base-datalet', |
95 | - | 109 | + objectDatalet: { |
110 | + /** | ||
111 | + * It contains the json data from async xhr call returned from core-ajax core component | ||
112 | + * | ||
113 | + * @attribute json_resultDatalet | ||
114 | + * @type object | ||
115 | + * @default 'null'. | ||
116 | + */ | ||
117 | + json_resultDatalet: { | ||
118 | + type: Object, | ||
119 | + value: {} | ||
120 | + } | ||
121 | + }, | ||
96 | /** | 122 | /** |
97 | * It is called after the element�s template has been stamped and all elements inside the element�s local | 123 | * It is called after the element�s template has been stamped and all elements inside the element�s local |
98 | * DOM have been configured (with values bound from parents, deserialized attributes, or else default values) | 124 | * DOM have been configured (with values bound from parents, deserialized attributes, or else default values) |
99 | * and had their ready method called. | 125 | * and had their ready method called. |
100 | * | 126 | * |
101 | - * Extract the dataset domain from the entire URL and set the text content of the datalet footer. | ||
102 | - * | 127 | + * Extract |
128 | + * 1) the dataset domain | ||
129 | + * 2) the page of a datalet | ||
130 | + * from the entire URL and set the text content of the datalet footer. | ||
103 | * @method ready | 131 | * @method ready |
104 | - * | ||
105 | */ | 132 | */ |
106 | ready: function(){ | 133 | ready: function(){ |
134 | + var urlDatalet; | ||
107 | if(this.dataUrl != undefined){ | 135 | if(this.dataUrl != undefined){ |
136 | + | ||
137 | + urlSource = this.dataUrl.split("/")[0] + "//" + this.dataUrl.split("/")[2]; | ||
138 | + | ||
139 | + var apiIdResource = "resource_show?id="; | ||
140 | + | ||
141 | + //Resourceid of a datalet | ||
142 | + var query = this.dataUrl.substring(this.dataUrl.indexOf("?"), this.dataUrl.length); | ||
143 | + var params = this.decomponeQueryString(query); | ||
144 | + resultIdDatalet = params["resource_id"]; | ||
145 | + | ||
146 | + //cKan organized with or not catalog | ||
147 | + queryInitial = this.dataUrl.substring(0, this.dataUrl.indexOf("api")); | ||
148 | + queryFinal = this.dataUrl.substring(this.dataUrl.indexOf("api"), this.dataUrl.indexOf("datastore_search")); | ||
149 | + | ||
150 | + urlDatalet = queryInitial + queryFinal + apiIdResource + resultIdDatalet; | ||
151 | + | ||
152 | + this.requestDataletData(urlDatalet); | ||
153 | + //String source to define for Issy | ||
108 | this.$.domain.textContent = this.dataUrl.split("/")[0] + "//" + this.dataUrl.split("/")[2]; | 154 | this.$.domain.textContent = this.dataUrl.split("/")[0] + "//" + this.dataUrl.split("/")[2]; |
109 | } | 155 | } |
110 | }, | 156 | }, |
@@ -113,7 +159,66 @@ Example : | @@ -113,7 +159,66 @@ Example : | ||
113 | */ | 159 | */ |
114 | setDomain: function(url){ | 160 | setDomain: function(url){ |
115 | this.$.domain.textContent = url; | 161 | this.$.domain.textContent = url; |
162 | + }, | ||
163 | + /** | ||
164 | + * Get the (key, value) query string parameters | ||
165 | + **/ | ||
166 | + decomponeQueryString: function (querystring) { | ||
167 | + // remove any preceding url and split | ||
168 | + querystring = querystring.substring(querystring.indexOf('?')+1).split('&'); | ||
169 | + var params = {}, pair, d = decodeURIComponent; | ||
170 | + // march and parse | ||
171 | + for (var i = querystring.length - 1; i >= 0; i--) { | ||
172 | + pair = querystring[i].split('='); | ||
173 | + params[d(pair[0])] = d(pair[1]); | ||
174 | + } | ||
175 | + return params; | ||
176 | + }, | ||
177 | + /** | ||
178 | + * Make an AJAX call to the dataset URL to retrieve package_id | ||
179 | + * | ||
180 | + * @method urlDatalet | ||
181 | + */ | ||
182 | + requestDataletData: function(urlDatalet){ | ||
183 | + var comp = this; | ||
184 | + $.ajax({ | ||
185 | + url: urlDatalet, //url con package | ||
186 | + dataType: "json", | ||
187 | + success: function(e){ | ||
188 | + comp.handleDataletResponse(e); | ||
189 | + } | ||
190 | + }); | ||
191 | + }, | ||
192 | + /** | ||
193 | + * Called when core-ajax component receive the json data from called url. | ||
194 | + * | ||
195 | + * @method handleResponse | ||
196 | + */ | ||
197 | + handleDataletResponse: function(e) { | ||
198 | + this.objectDatalet.json_resultDatalet.value = e; | ||
199 | + | ||
200 | + //packageId of a give datalet | ||
201 | + packageIdDatalet = this.objectDatalet.json_resultDatalet.value.result.package_id; | ||
202 | + resourceId = this.objectDatalet.json_resultDatalet.value.result.id; | ||
203 | + | ||
204 | + //url complete of download | ||
205 | + urlDatasetDownload = this.objectDatalet.json_resultDatalet.value.result.url; | ||
206 | + | ||
207 | + if(this.dataUrl != undefined){ | ||
208 | + //static url | ||
209 | + lastStringResourceId = this.dataUrl.split("/")[5]; | ||
210 | + resourceId = lastStringResourceId.split('=')[1]; | ||
211 | + var urlDatalet = this.dataUrl.split("/")[0]+ "//" + this.dataUrl.split("/")[2] + "/dataset/" + packageIdDatalet +"/resource/" +resourceId; | ||
116 | 212 | ||
213 | + | ||
214 | + urlDatalet = urlDatasetDownload.replace(/\/download\/.*/, ''); | ||
215 | + urlSource = this.dataUrl.split("/")[0] + "//" + this.dataUrl.split("/")[2]; | ||
216 | + | ||
217 | + //this.$.domain.textContent = this.dataUrl.split("/")[0] + "//" + this.dataUrl.split("/")[2]; | ||
218 | + | ||
219 | + //this.$.domainPage.innerHTML = '<a href=' + urlSource + ' target=' + "_blank>" + " urlSource" + '</a>'; | ||
220 | + this.$.domainPage.innerHTML = '<a href=' + urlDatalet + ' target=' + "_blank>" + " Dataset's page" + '</a>'; | ||
221 | + } | ||
117 | } | 222 | } |
118 | }); | 223 | }); |
119 | </script> | 224 | </script> |
datalets/base-datalet/static/images/spin.svg
0 → 100644
1 | +<?xml version="1.0" encoding="utf-8"?><svg width='198px' height='198px' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-spin"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><g transform="translate(50 50)"><g transform="rotate(0) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#1976d2"><animate attributeName="opacity" from="1" to="0.1" begin="0s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(45) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#1976d2"><animate attributeName="opacity" from="1" to="0.1" begin="0.12s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.12s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(90) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#1976d2"><animate attributeName="opacity" from="1" to="0.1" begin="0.25s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.25s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(135) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#1976d2"><animate attributeName="opacity" from="1" to="0.1" begin="0.37s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.37s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(180) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#1976d2"><animate attributeName="opacity" from="1" to="0.1" begin="0.5s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.5s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(225) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#1976d2"><animate attributeName="opacity" from="1" to="0.1" begin="0.62s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.62s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(270) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#1976d2"><animate attributeName="opacity" from="1" to="0.1" begin="0.75s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.75s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(315) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#1976d2"><animate attributeName="opacity" from="1" to="0.1" begin="0.87s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.87s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g></g></svg> | ||
0 | \ No newline at end of file | 2 | \ No newline at end of file |