diff --git a/controllets/data-sevc-controllet/data-sevc-controllet.html b/controllets/data-sevc-controllet/data-sevc-controllet.html index 76eeb3d..8870da2 100755 --- a/controllets/data-sevc-controllet/data-sevc-controllet.html +++ b/controllets/data-sevc-controllet/data-sevc-controllet.html @@ -936,7 +936,8 @@ Example: dataUrl : this.dataUrl, params : this.params_fields, fields : this.selected_fields, - datalet : this.selected_datalet + datalet : this.selected_datalet, + staticData : JSON.stringify(this.$.datalet_placeholder.children[1].behavior.data) } this.fire('data-sevc-controllet.dataletCreated', {data : data}); diff --git a/datalets/barchart-datalet/barchart-datalet.html b/datalets/barchart-datalet/barchart-datalet.html index b6f8900..e653394 100755 --- a/datalets/barchart-datalet/barchart-datalet.html +++ b/datalets/barchart-datalet/barchart-datalet.html @@ -188,7 +188,7 @@ Example: ready: function(){ this.behavior = $.extend(true, {}, HighchartsComponentBehavior, BarchartBehavior); - this.behavior.init(this); + this.async(function(){this.behavior.init(this)},1); } }); diff --git a/datalets/base-ajax-json-jsonpath-datalet/base-ajax-json-jsonpath-datalet.html b/datalets/base-ajax-json-jsonpath-datalet/base-ajax-json-jsonpath-datalet.html index 1c05518..0aef252 100755 --- a/datalets/base-ajax-json-jsonpath-datalet/base-ajax-json-jsonpath-datalet.html +++ b/datalets/base-ajax-json-jsonpath-datalet/base-ajax-json-jsonpath-datalet.html @@ -52,7 +52,7 @@ Example : diff --git a/datalets/base-datalet/static/js/BaseDataletBehaviors.js b/datalets/base-datalet/static/js/BaseDataletBehaviors.js new file mode 100644 index 0000000..ba4bfb6 --- /dev/null +++ b/datalets/base-datalet/static/js/BaseDataletBehaviors.js @@ -0,0 +1,153 @@ +/* +@license + The MIT License (MIT) + + Copyright (c) 2015 Dipartimento di Informatica - Università di Salerno - Italy + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +var BaseDataletBehavior ={ + + properties: { + + /** + * It represent the dataset api url + * + * @attribute dataUrl + * @type string + * @default 'null' + */ + dataUrl: { + type: String, + value: "" + }, + + /** + * It represents one or multiple fields selected by user + * + * @attribute fields + * @type Array + * @default empty + */ + fields: { + type: String, + value: "" + }, + + /** + * The selected and transformed data you can use in presentation phase + * + * @attribute data + * @type Array + * @default empty + */ + data: { + type: Array, + value: [] + } + + }, + + factoryImpl: function(data_url, fields) { + this.data_url = data_url; + this.fields = fields; + } + +}; + +var WorkcycleBehavior = { + /** + * A reference to Polymer object + * + */ + _component: null, + + /** + * Request data from source(e.g. CKAN by api) using some kind of technology(e.g. Ajax) + * + * @method requestData + */ + requestData: function(){ + }, + + /** + * Select the fields from data(typically json) previously retrieved by ajax request. The selection could be done by jsonPath but + * it depends on the representation data format(CKAN apies return a json representation of the dataset). + * + * @method selectData + */ + selectData: function(){ + }, + + /** + * Filter data previously selected. An example of filterting could be an expression such "fields > 30" or "fields = 'AAA'" + * If you are using jsonPath to select the datas you can apply an expression directly in the jsonPath query string. + * + * @method filterData + */ + filterData: function(){ + }, + + /** + * Transform the selected data in order to build the structure that the presentation phase needs. + * + * @method transformData + */ + transformData: function(){ + }, + + /** + * Build the object/s for presentation layer. + * + * @method presentData + */ + presentData: function(){ + + }, + + /** + * This method represents the entire datalet workcycle. + * + * @method runWorkcycle + */ + runWorkcycle: function() { + this.selectData(); + this.filterData(); + this.transformData(); + this.presentData(); + }, + + /** + * This method save the reference to the polymer object related to the datalet. + * + * @method init + */ + init: function(component){ + this._component = component; + + if(this.properties.data.length == 0){ + this.requestData(); + }else{ + this.transformData(); + this.presentData(); + } + } + +}; \ No newline at end of file diff --git a/datalets/base-datalet/static/js/WorkcycleBehavior.js b/datalets/base-datalet/static/js/WorkcycleBehavior.js index fea5984..c308e7f 100755 --- a/datalets/base-datalet/static/js/WorkcycleBehavior.js +++ b/datalets/base-datalet/static/js/WorkcycleBehavior.js @@ -97,7 +97,14 @@ var WorkcycleBehavior = { */ init: function(component){ this._component = component; - this.requestData(); + + if(this._component.data === undefined || this._component.data == ""){ + this.requestData(); + }else{ + this.data = JSON.parse(this._component.data); + this.transformData(); + this.presentData(); + } } }; \ No newline at end of file diff --git a/datalets/column3Dchart-datalet/column3Dchart-datalet.html b/datalets/column3Dchart-datalet/column3Dchart-datalet.html index dcdd2f1..27b9d4b 100755 --- a/datalets/column3Dchart-datalet/column3Dchart-datalet.html +++ b/datalets/column3Dchart-datalet/column3Dchart-datalet.html @@ -187,7 +187,7 @@ Example: */ ready: function(){ this.behavior = $.extend(true, {}, HighchartsComponentBehavior, column3DchartBehavior); - this.behavior.init(this); + this.async(function(){this.behavior.init(this)},1); } }); diff --git a/datalets/columnchart-datalet/columnchart-datalet.html b/datalets/columnchart-datalet/columnchart-datalet.html index fc6436a..47e210a 100755 --- a/datalets/columnchart-datalet/columnchart-datalet.html +++ b/datalets/columnchart-datalet/columnchart-datalet.html @@ -186,7 +186,7 @@ Example: */ ready: function(){ this.behavior = $.extend(true, {}, HighchartsComponentBehavior, ColumnchartBehavior); - this.behavior.init(this); + this.async(function(){this.behavior.init(this)},1); } }); diff --git a/datalets/datatable-datalet/datatable-datalet.html b/datalets/datatable-datalet/datatable-datalet.html index 82501cf..edea819 100755 --- a/datalets/datatable-datalet/datatable-datalet.html +++ b/datalets/datatable-datalet/datatable-datalet.html @@ -113,7 +113,7 @@ Example: ready: function(){ this.behavior = $.extend(true, {}, BaseDataletBehavior, WorkcycleBehavior, AjaxJsonJsonPathBehavior, DatatableBehavior); - this.behavior.init(this); + this.async(function(){this.behavior.init(this)},1); } }); diff --git a/datalets/donutpie3dchart-datalet/donutpie3dchart-datalet.html b/datalets/donutpie3dchart-datalet/donutpie3dchart-datalet.html index 5e8ef85..f0af23c 100755 --- a/datalets/donutpie3dchart-datalet/donutpie3dchart-datalet.html +++ b/datalets/donutpie3dchart-datalet/donutpie3dchart-datalet.html @@ -139,7 +139,7 @@ Example: */ ready: function(){ this.behavior = $.extend(true, {}, HighchartsComponentBehavior, DonutPiechartBehavior); - this.behavior.init(this); + this.async(function(){this.behavior.init(this)},1); } }); diff --git a/datalets/highcharts-datalet/highcharts-datalet.html b/datalets/highcharts-datalet/highcharts-datalet.html index aa71ce6..6fb5faa 100755 --- a/datalets/highcharts-datalet/highcharts-datalet.html +++ b/datalets/highcharts-datalet/highcharts-datalet.html @@ -57,7 +57,7 @@ Example : diff --git a/datalets/leafletjs-datalet/leafletjs-datalet.html b/datalets/leafletjs-datalet/leafletjs-datalet.html index 58a8eac..b84a54c 100755 --- a/datalets/leafletjs-datalet/leafletjs-datalet.html +++ b/datalets/leafletjs-datalet/leafletjs-datalet.html @@ -160,7 +160,7 @@ Example: L.Icon.Default.imagePath = 'http://services.routetopa.eu/DEEalerProvider/COMPONENTS/datalets/leafletjs-datalet/leafletsjs/images'; this.behavior = $.extend(true, {}, BaseDataletBehavior, WorkcycleBehavior, AjaxJsonJsonPathBehavior, leafletjsBehavior); - this.behavior.init(this); + this.async(function(){this.behavior.init(this)},1); } }); diff --git a/datalets/linechart-datalet/linechart-datalet.html b/datalets/linechart-datalet/linechart-datalet.html index f3cf85a..89dc98c 100755 --- a/datalets/linechart-datalet/linechart-datalet.html +++ b/datalets/linechart-datalet/linechart-datalet.html @@ -50,7 +50,7 @@ Example: diff --git a/datalets/treemap-datalet/treemap-datalet.html b/datalets/treemap-datalet/treemap-datalet.html index f0a5f79..36cf1e1 100755 --- a/datalets/treemap-datalet/treemap-datalet.html +++ b/datalets/treemap-datalet/treemap-datalet.html @@ -213,7 +213,7 @@ Example: ready: function(){ this.behavior = $.extend(true, {}, BaseDataletBehavior, WorkcycleBehavior, AjaxJsonJsonPathBehavior, TreemapBehavior); - this.behavior.init(this); + this.async(function(){this.behavior.init(this)},1); } });