Commit 37bd0ebd877ebcdecc6ff3874fb6d2a5dabd6e19

Authored by Andrea Petta
2 parents b0b8a913 34789a0e

Merge branch 'master' of http://service.routetopa.eu:7480/WebCompDev/COMPONENTS

Showing 31 changed files with 2057 additions and 2565 deletions
alasql-utility/alasql-utility.js
@@ -125,7 +125,8 @@ function _addParenthesis (fields) { @@ -125,7 +125,8 @@ function _addParenthesis (fields) {
125 } 125 }
126 126
127 function _normalizeField (field) { 127 function _normalizeField (field) {
128 - return "[" + field + "]"; 128 + return "`" + field + "`";
  129 + //return "[" + field + "]";
129 } 130 }
130 131
131 function alasql_transformData (data, fields, round) { 132 function alasql_transformData (data, fields, round) {
bower_components/jsdatachecker/.bower.json
1 { 1 {
2 - "name": "JSDataChecker",  
3 - "version": "0.0.9",  
4 - "homepage": "https://github.com/donpir/JSDataChecker", 2 + "name": "jsdatachecker",
  3 + "version": "0.1.2",
  4 + "homepage": "https://github.com/donpir/jsdatachecker",
5 "authors": [ 5 "authors": [
6 "'Donato Pirozzi <'donatopirozzi@gmail.com'>" 6 "'Donato Pirozzi <'donatopirozzi@gmail.com'>"
7 ], 7 ],
@@ -19,17 +19,17 @@ @@ -19,17 +19,17 @@
19 "polymer": "Polymer/polymer#1.2.0", 19 "polymer": "Polymer/polymer#1.2.0",
20 "qunit": "~1.22.0", 20 "qunit": "~1.22.0",
21 "csvjson": "0.1.1", 21 "csvjson": "0.1.1",
22 - "polywc": "https://github.com/donpir/polywc.git#master" 22 + "polywc-data-table": "https://github.com/donpir/polywc-data-table.git#master"
23 }, 23 },
24 "private": false, 24 "private": false,
25 - "_release": "0.0.9", 25 + "_release": "0.1.2",
26 "_resolution": { 26 "_resolution": {
27 "type": "version", 27 "type": "version",
28 - "tag": "v0.0.9",  
29 - "commit": "277c51efeee4daa0bd11051de022975ba86f47fa" 28 + "tag": "v0.1.2",
  29 + "commit": "1cd37fc00315232a97de7978e5423784899eca29"
30 }, 30 },
31 "_source": "https://github.com/donpir/JSDataChecker.git", 31 "_source": "https://github.com/donpir/JSDataChecker.git",
32 - "_target": "~0.0.9", 32 + "_target": "~0.1.2",
33 "_originalSource": "jsdatachecker", 33 "_originalSource": "jsdatachecker",
34 "_direct": true 34 "_direct": true
35 } 35 }
36 \ No newline at end of file 36 \ No newline at end of file
bower_components/jsdatachecker/README.md
@@ -3,6 +3,18 @@ JavaScript Library to read dataset content (e.g., Open Data), infer data types, @@ -3,6 +3,18 @@ JavaScript Library to read dataset content (e.g., Open Data), infer data types,
3 3
4 In details, it analysis the json (specified paths) to infer the data type. In addition, when request (via code) the library converts the json data based on the inferred type. 4 In details, it analysis the json (specified paths) to infer the data type. In addition, when request (via code) the library converts the json data based on the inferred type.
5 5
  6 +Recognised basic types:
  7 + - Text;
  8 + - Number;
  9 + - Date;
  10 + - Object;
  11 + - Null.
  12 +
  13 +Recognised types:
  14 + - Geographic coordinates;
  15 + - JSON;
  16 + - GEOJSON.
  17 +
6 ## Documentation 18 ## Documentation
7 19
8 See wiki pages [here](https://github.com/donpir/JSDataChecker/wiki). 20 See wiki pages [here](https://github.com/donpir/JSDataChecker/wiki).
bower_components/jsdatachecker/bower.json
1 { 1 {
2 - "name": "JSDataChecker",  
3 - "version": "v0.0.9",  
4 - "homepage": "https://github.com/donpir/JSDataChecker", 2 + "name": "jsdatachecker",
  3 + "version": "v0.1.2",
  4 + "homepage": "https://github.com/donpir/jsdatachecker",
5 "authors": [ 5 "authors": [
6 "'Donato Pirozzi <'donatopirozzi@gmail.com'>" 6 "'Donato Pirozzi <'donatopirozzi@gmail.com'>"
7 ], 7 ],
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 "polymer": "Polymer/polymer#1.2.0", 19 "polymer": "Polymer/polymer#1.2.0",
20 "qunit": "~1.22.0", 20 "qunit": "~1.22.0",
21 "csvjson": "0.1.1", 21 "csvjson": "0.1.1",
22 - "polywc": "https://github.com/donpir/polywc.git#master" 22 + "polywc-data-table": "https://github.com/donpir/polywc-data-table.git#master"
23 }, 23 },
24 "private": false 24 "private": false
25 } 25 }
bower_components/jsdatachecker/build.cmd
1 del jsdatachecker.min.js 1 del jsdatachecker.min.js
2 -uglifyjs src\ArrayUtils.js src\DataTypeConverter.js src\DataTypesUtils.js src\DataTypeHierarchy.js --compress -o jsdatachecker.min.js  
3 \ No newline at end of file 2 \ No newline at end of file
  3 +uglifyjs src\ArrayUtils.js src\DataTypeConverter.js src\DataTypesUtils.js src\DataTypeHierarchy.js src\langs.js --compress -o jsdatachecker.min.js
4 \ No newline at end of file 4 \ No newline at end of file
bower_components/jsdatachecker/jsdatachecker.min.js
1 -function ArrayUtils(){}function DataTypeConverter(){this._fields=[],this._numOfRows=0}function DataTypesUtils(){}function DataTypeHierarchy(){}ArrayUtils.TestAndSet=function(arr,key,object){return"undefined"==typeof arr?null:0==Array.isArray(arr)?null:("undefined"==typeof arr[key]&&(arr[key]=object),arr[key])},ArrayUtils.TestAndInitializeKey=function(obj,key,value){return"undefined"==typeof obj?null:("undefined"==typeof obj[key]&&(obj[key]=value),obj[key])},ArrayUtils.TestAndIncrement=function(arr,key){var exists=arr[key];return"undefined"==typeof exists&&(arr[key]=0),arr[key]++,arr},ArrayUtils.toFieldsArray=function(obj){var fields=[];return ArrayUtils.IteratorOverKeys(obj,function(field,key){field.key=key,fields.push(field)}),fields},ArrayUtils.IteratorOverKeys=function(arr,callback){for(var property in arr)if(arr.hasOwnProperty(property)){var item=arr[property];callback(item,property)}},ArrayUtils.FindMinMax=function(arr,fncompare){var max1=null,max2=null;for(var key in arr)null==max1||fncompare(arr[key],max1.value)?(max2=max1,max1={index:-1,key:key,value:arr[key]}):(null==max2||fncompare(arr[key],max2.value))&&(max2={index:-1,key:key,value:arr[key]});return{first:max1,second:max2}},ArrayUtils.isArray=function(arr){return Array.isArray(arr)?arr.length>0:!1},DataTypeConverter.TYPES={TEXT:{value:0,name:"TEXT"},CODE:{value:1,name:"CODE"},NUMBER:{value:2,name:"NUMBER"},OBJECT:{value:3,name:"OBJECT"},BOOL:{value:5,name:"BOOL"},CONST:{value:6,name:"CONST"},CATEGORY:{value:7,name:"CATEGORY"},DATETIME:{value:8,name:"DATETIME"},EMPTY:{value:101,name:"NULL"}},DataTypeConverter.SUBTYPES={GEOCOORDINATE:{value:1e3,name:"GEOCOORDINATE"},PERCENTAGE:{value:1e3,name:"PERCENTAGE"},LATITUDE:{value:1001,name:"LATITUDE"},LONGITUDE:{value:1002,name:"LONGITUDE"}},DataTypeConverter.prototype=function(){var _analyseDataTypes=function(fields){ArrayUtils.IteratorOverKeys(fields,function(field){if(field._inferredTypes[DataTypeConverter.TYPES.CODE.name]){var confidence=field._inferredTypes[DataTypeConverter.TYPES.CODE.name]/field.numOfItems,_numericalInferredType=field._inferredTypes[DataTypeConverter.TYPES.NUMBER.name];return"undefined"!=typeof _numericalInferredType&&(confidence+=_numericalInferredType/field.numOfItems),field.type=DataTypeConverter.TYPES.CODE.name,void(field.typeConfidence=confidence)}var max=ArrayUtils.FindMinMax(field._inferredTypes,function(curval,lastval){return curval>lastval}),tkey=max.first.key;tkey===DataTypeConverter.TYPES.EMPTY.name&&null!=max.second&&"undefined"!=typeof max.second&&(tkey=max.second.key),field.type=tkey,field.typeConfidence=field._inferredTypes[max.first.key]/field.numOfItems;var max=ArrayUtils.FindMinMax(field._inferredSubTypes,function(curval,lastval){return curval>lastval});if(field.subtype=null,null!=max&&null!=max.first){field.subtype=max.first.key,field.subtypeConfidence=field._inferredSubTypes[field.subtype]/field.numOfItems;var fieldName=field.name.toLowerCase(),isLatType=field.subtype===DataTypeConverter.SUBTYPES.LATITUDE.name,fieldNameContainsLat=fieldName.indexOf("lat")>=0,fieldNameContainsLon=fieldName.indexOf("ng")>=0;1==isLatType&&0==fieldNameContainsLat&&1==fieldNameContainsLon&&(field.subtype=DataTypeConverter.SUBTYPES.LONGITUDE.name)}})},_processInferType=function(value){if(null===value||"undefined"==typeof value)return DataTypeConverter.TYPES.EMPTY;if("object"==typeof value)return DataTypeConverter.TYPES.OBJECT;if(/^0[0-9]+$/.test(value))return DataTypeConverter.TYPES.CODE;var isnumber=DataTypesUtils.FilterFloat(value);if(isNaN(isnumber)!==!0)return DataTypeConverter.TYPES.NUMBER;var _date=DataTypesUtils.FilterDateTime(value);return 0==isNaN(_date)&&null!=_date?DataTypeConverter.TYPES.DATETIME:DataTypeConverter.TYPES.TEXT},_processInferSubType=function(value){if(null===value||"undefined"==typeof value)return null;var isnumber=DataTypesUtils.FilterFloat(value);return isNaN(isnumber)!==!0?isnumber>=-90&&90>=isnumber&&DataTypesUtils.DecimalPlaces(isnumber)>=5?DataTypeConverter.SUBTYPES.GEOCOORDINATE:isnumber>=-180&&180>=isnumber&&DataTypesUtils.DecimalPlaces(isnumber)>=5?DataTypeConverter.SUBTYPES.GEOCOORDINATE:null:null},_filterBasedOnThreshold=function(metadata,threshold){return ArrayUtils.IteratorOverKeys(metadata.types,function(fieldType,key){if(!(fieldType.typeConfidence>=threshold)){var arrHierarchyTypes=DataTypeHierarchy.HIERARCHY[fieldType.type],lastFieldType={lastType:arrHierarchyTypes[0],lastTypeCounter:fieldType._inferredTypes[arrHierarchyTypes[0]],typeConfidence:0};lastFieldType.typeConfidence=lastFieldType.lastTypeCounter/fieldType.numOfItems;for(var curType,i=1;i<arrHierarchyTypes.length,curType=arrHierarchyTypes[i];i++){var numItemsOfCurType=fieldType._inferredTypes.hasOwnProperty(curType)?fieldType._inferredTypes[curType]:0;if(lastFieldType.lastType=curType,lastFieldType.lastTypeCounter+=numItemsOfCurType,lastFieldType.typeConfidence=lastFieldType.lastTypeCounter/fieldType.numOfItems,lastFieldType.typeConfidence>=threshold){fieldType.type=lastFieldType.lastType,fieldType.typeConfidence=lastFieldType.typeConfidence;break}}}}),metadata},jsonTraverse=function(json,fieldKeys,callback){var stack=[],numOfRows=0;for(stack.push({item:json,fieldKeyIndex:0});stack.length>0;){var stackTask=stack.pop(),item=stackTask.item,fieldKeyIndex=stackTask.fieldKeyIndex,fieldKey=fieldKeys[fieldKeyIndex];if("*"!=fieldKey||0!=ArrayUtils.isArray(item))if("*"!=fieldKey||1!=ArrayUtils.isArray(item)){var jsonSubtree=item[fieldKey];if(Array.isArray(jsonSubtree))for(var j=0;j<jsonSubtree.length;j++){var jsonItem=jsonSubtree[j];stack.push({item:jsonItem,fieldKeyIndex:fieldKeyIndex+1})}else stack.push({item:jsonSubtree,fieldKeyIndex:fieldKeyIndex+1})}else for(var cell,j=0;j<item.length&&(cell=item[j]);j++)stack.push({item:cell,fieldKeyIndex:fieldKeyIndex}),numOfRows++;else{var sProcessedKeys=fieldKeys.slice(0,fieldKeyIndex).toString();ArrayUtils.IteratorOverKeys(item,function(value,key){var curKey=sProcessedKeys+(sProcessedKeys.length>0?",":"")+key,_value=callback(value,key,curKey,numOfRows);item[key]=_value}),numOfRows++}}};return{constructor:DataTypeConverter,cast:function(metadata,options){return"undefined"!=typeof options&&null!=options||(options={castThresholdConfidence:1,castIfNull:!1}),this.convert(metadata,options)},convert:function(metadata,options){var lastRowIndex=0,numOfRows=0,numOfValues=0,datasetErrors=0,datasetMissingValues=0;return"undefined"!=typeof options&&null!=options||(options={castThresholdConfidence:1,castIfNull:!1}),jsonTraverse(metadata.dataset,metadata.fieldKeys,function(value,key,traversedKeys,rowIndex){var inferredType=metadata.types[traversedKeys];numOfValues++,lastRowIndex!=rowIndex&&(lastRowIndex=rowIndex,numOfRows++),null==value||"undefined"==typeof value||0==(value+"").length;var isCast=inferredType.typeConfidence>=options.castThresholdConfidence;if(inferredType.type==DataTypeConverter.TYPES.NUMBER.name&&isCast){var number=parseFloat(value);return isNaN(number)?(datasetErrors++,value):number}return value}),metadata.qualityIndex.notNullValues=(numOfValues-datasetMissingValues)/numOfValues,metadata.qualityIndex.errors=(numOfValues-datasetErrors)/numOfValues,metadata},inferJsonDataType:function(json,fieldKeys,options){"undefined"!=typeof options&&null!=options||(options={thresholdConfidence:1});var stack=[],fieldsType={},numOfRows=0;if("undefined"==typeof fieldKeys)throw"IllegalArgumentException: undefined json path to analyse.";for(stack.push({item:json,fieldKeyIndex:0});stack.length>0;){var stackTask=stack.pop(),item=stackTask.item,fieldKeyIndex=stackTask.fieldKeyIndex,fieldKey=fieldKeys[fieldKeyIndex];if("*"!=fieldKey||0!=ArrayUtils.isArray(item))if("*"==fieldKey&&ArrayUtils.isArray(item))for(var cell,j=0;j<item.length&&(cell=item[j]);j++)stack.push({item:cell,fieldKeyIndex:fieldKeyIndex}),numOfRows++;else{var jsonSubtree=item[fieldKey];if(Array.isArray(jsonSubtree))for(var j=0;j<jsonSubtree.length;j++){var jsonItem=jsonSubtree[j];stack.push({item:jsonItem,fieldKeyIndex:fieldKeyIndex+1})}else stack.push({item:jsonSubtree,fieldKeyIndex:fieldKeyIndex+1})}else{var sProcessedKeys=fieldKeys.slice(0,fieldKeyIndex).toString();ArrayUtils.IteratorOverKeys(item,function(item,key){var curKey=sProcessedKeys+(0==sProcessedKeys.length?"":",")+key,fieldType=ArrayUtils.TestAndInitializeKey(fieldsType,curKey,{name:curKey,_inferredTypes:[],_inferredSubTypes:[],_inferredValues:[],numOfItems:0});fieldType.numOfItems++;var inferredType=_processInferType(item);ArrayUtils.TestAndIncrement(fieldType._inferredTypes,inferredType.name),inferredType===DataTypeConverter.TYPES.TEXT&&ArrayUtils.TestAndIncrement(fieldType._inferredValues,item);var inferredSubType=_processInferSubType(item);null!=inferredSubType&&"undefined"!=typeof inferredSubType&&ArrayUtils.TestAndIncrement(fieldType._inferredSubTypes,inferredSubType.name)}),numOfRows++}}_analyseDataTypes(fieldsType);var quality={homogeneity:1,completeness:1,totalNullValues:0,totalValues:0};ArrayUtils.IteratorOverKeys(fieldsType,function(fieldType){quality.totalValues+=fieldType.numOfItems,quality.homogeneity*=fieldType.typeConfidence,fieldType.totalNullValues=0,fieldType._inferredTypes.hasOwnProperty(DataTypeConverter.TYPES.EMPTY.name)&&(fieldType.totalNullValues=fieldType._inferredTypes[DataTypeConverter.TYPES.EMPTY.name],quality.totalNullValues+=fieldType.totalNullValues)}),quality.homogeneity=Math.round(100*quality.homogeneity)/100;var totFullValues=quality.totalValues-quality.totalNullValues;quality.completeness=Math.round(totFullValues/quality.totalValues*100)/100;var warningsTextual="";ArrayUtils.IteratorOverKeys(fieldsType,function(fieldType){fieldType.errorsDescription="";var description="";if(fieldType.typeConfidence<1){var incorrect=fieldType.numOfItems-fieldType.totalNullValues-fieldType._inferredTypes[fieldType.type];if(incorrect>0){description+="The column <"+fieldType.name+"> has the type <"+fieldType.type+">";var verb=1==incorrect?" value is":" values are";description+=", but "+incorrect+verb+" not a "+fieldType.type}}fieldType.totalNullValues>0&&(description+="The column <"+fieldType.name+"> has "+fieldType.totalNullValues+" EMPTY value",fieldType.totalNullValues>1&&(description+="s")),description.length>0&&(description+="."),fieldType.errorsDescription=description,warningsTextual+=description});var metadata={dataset:json,fieldKeys:fieldKeys,types:fieldsType,qualityIndex:quality,warningsTextual:warningsTextual};return _filterBasedOnThreshold(metadata,options.thresholdConfidence),metadata},inferDataTypeOfValue:function(value){return _processInferType(value)}}}(),DataTypesUtils.FilterTime=function(value){var expTime=/^[0-9]{2}:[0-9]{2}(:[0-9]{2})?(\+[0-9]{2}:[0-9]{2})?$/;if(0==expTime.test(value))return null;var splitted=value.split(/[:|\+]/),expNumber=/^[0-9]{2}$/,HH=expNumber.test(splitted[0])?parseInt(splitted[0]):0,MM=expNumber.test(splitted[1])?parseInt(splitted[1]):0,SS=splitted.length>=3&&expNumber.test(splitted[2])?parseInt(splitted[2]):0,dt=new Date;return dt.setHours(HH),dt.setMinutes(MM),dt.setSeconds(SS),dt},DataTypesUtils.FilterDateTime=function(value){var _dtSplitted=value.split(/[T|\s]/);if(2==_dtSplitted.length){var dtTime=DataTypesUtils.FilterTime(_dtSplitted[1]);if(null==dtTime)return null;var dtDateTime=DataTypesUtils.FilterDate(_dtSplitted[0],dtTime);return dtDateTime}var dtDate=DataTypesUtils.FilterDate(value);if(null!=dtDate)return dtDate;var dtTime=DataTypesUtils.FilterTime(value);return dtTime},DataTypesUtils.FilterDate=function(value,dtDate){if(null==dtDate&&(dtDate=new Date),/^[0-9][0-9][0-9][0-9]\-[0-9][0-9]$/.test(value)){var year=parseInt(value.substring(0,4)),month=parseInt(value.substring(5));return dtDate.setYear(year),dtDate.setMonth(month),dtDate}var expDate=/^[0-9]{4}(\-|\/)[0-9]{2}((\-|\/)[0-9]{2})?$/;if(expDate.test(value)){var splitted=value.split(/[\-|\/]/),year=parseInt(splitted[0]),month=parseInt(splitted[1]),day=3==splitted.length?parseInt(splitted[2]):0;return dtDate.setYear(year),dtDate.setMonth(month),dtDate.setDate(day),dtDate}if(expDate=/^[0-9]{2}(\-|\/)[0-9]{2}(\-|\/)[0-9]{4}$/,expDate.test(value)){var splitted=value.split(/[\-|\/]/),year=parseInt(splitted[2]),month=parseInt(splitted[1]),day=parseInt(splitted[0]);return dtDate.setYear(year),dtDate.setMonth(month),dtDate.setDate(day),dtDate}return null},DataTypesUtils.FilterFloat=function(value){return/^(\-|\+)?((0|([1-9][0-9]*))(\.[0-9]+)?|Infinity)$/.test(value)?Number(value):NaN},DataTypesUtils.DecimalPlaces=function(num){var match=(""+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return match?Math.max(0,(match[1]?match[1].length:0)-(match[2]?+match[2]:0)):0},DataTypeHierarchy.HIERARCHY=[],DataTypeHierarchy.HIERARCHY[DataTypeConverter.TYPES.TEXT.name]=[DataTypeConverter.TYPES.TEXT.name],DataTypeHierarchy.HIERARCHY[DataTypeConverter.TYPES.NUMBER.name]=[DataTypeConverter.TYPES.NUMBER.name,DataTypeConverter.TYPES.TEXT.name],DataTypeHierarchy.HIERARCHY[DataTypeConverter.TYPES.DATETIME.name]=[DataTypeConverter.TYPES.DATETIME.name,DataTypeConverter.TYPES.TEXT.name],DataTypeHierarchy.HIERARCHY[DataTypeConverter.SUBTYPES.GEOCOORDINATE.name]=[DataTypeConverter.SUBTYPES.GEOCOORDINATE.name,DataTypeConverter.TYPES.NUMBER.name,DataTypeConverter.TYPES.TEXT.name],DataTypeHierarchy.canConvert=function(fromType,toType){var arrConvertableTypes=DataTypeHierarchy.HIERARCHY[fromType],idx=arrConvertableTypes.indexOf(toType);return idx>=0};  
2 \ No newline at end of file 1 \ No newline at end of file
  2 +function ArrayUtils(){}function DataTypeConverter(){this._fields=[],this._numOfRows=0}function DataTypesUtils(){}function DataTypeHierarchy(){}ArrayUtils.TestAndSet=function(arr,key,object){return"undefined"==typeof arr?null:0==Array.isArray(arr)?null:("undefined"==typeof arr[key]&&(arr[key]=object),arr[key])},ArrayUtils.TestAndInitializeKey=function(obj,key,value){return"undefined"==typeof obj?null:("undefined"==typeof obj[key]&&(obj[key]=value),obj[key])},ArrayUtils.TestAndIncrement=function(arr,key){var exists=arr[key];return"undefined"==typeof exists&&(arr[key]=0),arr[key]++,arr},ArrayUtils.toFieldsArray=function(obj){var fields=[];return ArrayUtils.IteratorOverKeys(obj,function(field,key){field.key=key,fields.push(field)}),fields},ArrayUtils.IteratorOverKeys=function(arr,callback){for(var property in arr)if(arr.hasOwnProperty(property)){var item=arr[property];callback(item,property)}},ArrayUtils.FindMinMax=function(arr,fncompare){var max1=null,max2=null;for(var key in arr)null==max1||fncompare(arr[key],max1.value)?(max2=max1,max1={index:-1,key:key,value:arr[key]}):(null==max2||fncompare(arr[key],max2.value))&&(max2={index:-1,key:key,value:arr[key]});return{first:max1,second:max2}},ArrayUtils.isArray=function(arr){return Array.isArray(arr)?arr.length>0:!1},DataTypeConverter.TYPES={EMPTY:{value:0,name:"NULL"},TEXT:{value:1,name:"TEXT"},NUMBER:{value:2,name:"NUMBER"},OBJECT:{value:3,name:"OBJECT"},DATETIME:{value:4,name:"DATETIME"}},DataTypeConverter.SUBTYPES={GEOCOORDINATE:{value:1e3,name:"GEOCOORDINATE"},GEOJSON:{value:1001,name:"GEOJSON"},BOOL:{value:1002,name:"BOOL"},CONST:{value:1003,name:"CONST"},CATEGORY:{value:1004,name:"CATEGORY"},PERCENTAGE:{value:1100,name:"PERCENTAGE"},LATITUDE:{value:1101,name:"LATITUDE"},LONGITUDE:{value:1102,name:"LONGITUDE"}},DataTypeConverter.LANGS={EN:{value:1e3,name:"EN"},IT:{value:1001,name:"IT"},FR:{value:1100,name:"FR"},NL:{value:1101,name:"NL"}},DataTypeConverter.GEOJSONTYPES=["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","Feature","FeatureCollection"],DataTypeConverter.prototype=function(){var _analyseDataTypes=function(fields){ArrayUtils.IteratorOverKeys(fields,function(field){var max=ArrayUtils.FindMinMax(field._inferredTypes,function(curval,lastval){return curval>lastval}),tkey=max.first.key;tkey===DataTypeConverter.TYPES.EMPTY.name&&null!=max.second&&"undefined"!=typeof max.second&&(tkey=max.second.key),field.type=tkey,field.typeConfidence=field._inferredTypes[max.first.key]/field.numOfItems;var max=ArrayUtils.FindMinMax(field._inferredSubTypes,function(curval,lastval){return curval>lastval});if(field.subtype=null,null!=max&&null!=max.first){field.subtype=max.first.key,field.subtypeConfidence=field._inferredSubTypes[field.subtype]/field.numOfItems;var fieldName=field.name.toLowerCase(),isLatType=field.subtype===DataTypeConverter.SUBTYPES.LATITUDE.name,fieldNameContainsLat=fieldName.indexOf("lat")>=0,fieldNameContainsLon=fieldName.indexOf("ng")>=0;1==isLatType&&0==fieldNameContainsLat&&1==fieldNameContainsLon&&(field.subtype=DataTypeConverter.SUBTYPES.LONGITUDE.name)}})},_processInferType=function(value){if(null===value||"undefined"==typeof value)return DataTypeConverter.TYPES.EMPTY;if("object"==typeof value)return DataTypeConverter.TYPES.OBJECT;var isnumber=DataTypesUtils.FilterFloat(value);if(isNaN(isnumber)!==!0)return DataTypeConverter.TYPES.NUMBER;var _date=DataTypesUtils.FilterDateTime(value);return 0==isNaN(_date)&&null!=_date?DataTypeConverter.TYPES.DATETIME:DataTypeConverter.TYPES.TEXT},_processInferSubType=function(value){if(null===value||"undefined"==typeof value)return null;if(Array.isArray(value)&&2==value.length&&NaN!=DataTypesUtils.FilterFloat(value[0])&&NaN!=DataTypesUtils.FilterFloat(value[1])&&DataTypesUtils.DecimalPlaces(value[0])>4&&DataTypesUtils.DecimalPlaces(value[1])>4)return DataTypeConverter.SUBTYPES.GEOCOORDINATE;if("string"==typeof value){var split=value.split(",");if(DataTypesUtils.IsLatLng(split[0])&&DataTypesUtils.IsLatLng(split[1]))return DataTypeConverter.SUBTYPES.GEOCOORDINATE}var isnumber=DataTypesUtils.FilterFloat(value);if(isNaN(isnumber)!==!0)return isnumber>=-90&&90>=isnumber&&DataTypesUtils.DecimalPlaces(isnumber)>=5?DataTypeConverter.SUBTYPES.GEOCOORDINATE:isnumber>=-180&&180>=isnumber&&DataTypesUtils.DecimalPlaces(isnumber)>=5?DataTypeConverter.SUBTYPES.GEOCOORDINATE:null;if("object"==typeof value&&value.hasOwnProperty("type")){var geotype=value.type,isincluded=DataTypeConverter.GEOJSONTYPES.includes(geotype);if(isincluded)return DataTypeConverter.SUBTYPES.GEOJSON}return null},_filterBasedOnThreshold=function(metadata,threshold){return ArrayUtils.IteratorOverKeys(metadata.types,function(fieldType,key){if(!(fieldType.typeConfidence>=threshold)){var arrHierarchyTypes=DataTypeHierarchy.HIERARCHY[fieldType.type];if(null==arrHierarchyTypes)return metadata;var lastFieldType={lastType:arrHierarchyTypes[0],lastTypeCounter:fieldType._inferredTypes[arrHierarchyTypes[0]],typeConfidence:0};lastFieldType.typeConfidence=lastFieldType.lastTypeCounter/fieldType.numOfItems;for(var curType,i=1;i<arrHierarchyTypes.length,curType=arrHierarchyTypes[i];i++){var numItemsOfCurType=fieldType._inferredTypes.hasOwnProperty(curType)?fieldType._inferredTypes[curType]:0;if(lastFieldType.lastType=curType,lastFieldType.lastTypeCounter+=numItemsOfCurType,lastFieldType.typeConfidence=lastFieldType.lastTypeCounter/fieldType.numOfItems,lastFieldType.typeConfidence>=threshold){fieldType.type=lastFieldType.lastType,fieldType.typeConfidence=lastFieldType.typeConfidence;break}}}}),metadata},_capitalizeFirstLetter=function(string){return string.charAt(0).toUpperCase()+string.slice(1)},jsonTraverse=function(json,fieldKeys,callback){var stack=[],numOfRows=0;for(stack.push({item:json,fieldKeyIndex:0});stack.length>0;){var stackTask=stack.pop(),item=stackTask.item,fieldKeyIndex=stackTask.fieldKeyIndex,fieldKey=fieldKeys[fieldKeyIndex];if("*"!=fieldKey||0!=ArrayUtils.isArray(item))if("*"!=fieldKey||1!=ArrayUtils.isArray(item)){var jsonSubtree=item[fieldKey];if(Array.isArray(jsonSubtree))for(var j=0;j<jsonSubtree.length;j++){var jsonItem=jsonSubtree[j];stack.push({item:jsonItem,fieldKeyIndex:fieldKeyIndex+1})}else stack.push({item:jsonSubtree,fieldKeyIndex:fieldKeyIndex+1})}else for(var cell,j=0;j<item.length&&(cell=item[j]);j++)stack.push({item:cell,fieldKeyIndex:fieldKeyIndex}),numOfRows++;else{var sProcessedKeys=fieldKeys.slice(0,fieldKeyIndex).toString();ArrayUtils.IteratorOverKeys(item,function(value,key){var curKey=sProcessedKeys+(sProcessedKeys.length>0?",":"")+key,_value=callback(value,key,curKey,numOfRows);item[key]=_value}),numOfRows++}}};return{constructor:DataTypeConverter,cast:function(metadata,options){return"undefined"!=typeof options&&null!=options||(options={castThresholdConfidence:1,castIfNull:!1}),this.convert(metadata,options)},convert:function(metadata,options){var lastRowIndex=0,numOfRows=0,numOfValues=0,datasetErrors=0,datasetMissingValues=0;return"undefined"!=typeof options&&null!=options||(options={castThresholdConfidence:1,castIfNull:!1}),jsonTraverse(metadata.dataset,metadata.fieldKeys,function(value,key,traversedKeys,rowIndex){var inferredType=metadata.types[traversedKeys];numOfValues++,lastRowIndex!=rowIndex&&(lastRowIndex=rowIndex,numOfRows++),null==value||"undefined"==typeof value||0==(value+"").length;var isCast=inferredType.typeConfidence>=options.castThresholdConfidence;if(inferredType.type==DataTypeConverter.TYPES.NUMBER.name&&isCast){var number=parseFloat(value);return isNaN(number)?(datasetErrors++,value):number}return value}),metadata.qualityIndex.notNullValues=(numOfValues-datasetMissingValues)/numOfValues,metadata.qualityIndex.errors=(numOfValues-datasetErrors)/numOfValues,metadata},inferJsonDataType:function(json,fieldKeys,options){"undefined"!=typeof options&&null!=options||(options={}),0==options.hasOwnProperty("thresholdConfidence")&&(options.thresholdConfidence=1),0==options.hasOwnProperty("language")?options.language=DataTypeConverter.LANGS.EN.name:options.language=options.language.toUpperCase();var stack=[],fieldsType={},numOfRows=0;if("undefined"==typeof fieldKeys)throw"IllegalArgumentException: undefined json path to analyse.";for(stack.push({item:json,fieldKeyIndex:0});stack.length>0;){var stackTask=stack.pop(),item=stackTask.item,fieldKeyIndex=stackTask.fieldKeyIndex,fieldKey=fieldKeys[fieldKeyIndex];if("*"!=fieldKey||0!=ArrayUtils.isArray(item))if("*"==fieldKey&&ArrayUtils.isArray(item))for(var cell,j=0;j<item.length&&(cell=item[j]);j++)stack.push({item:cell,fieldKeyIndex:fieldKeyIndex}),numOfRows++;else{var jsonSubtree=item[fieldKey];if(Array.isArray(jsonSubtree))for(var j=0;j<jsonSubtree.length;j++){var jsonItem=jsonSubtree[j];stack.push({item:jsonItem,fieldKeyIndex:fieldKeyIndex+1})}else stack.push({item:jsonSubtree,fieldKeyIndex:fieldKeyIndex+1})}else{var sProcessedKeys=fieldKeys.slice(0,fieldKeyIndex).toString();ArrayUtils.IteratorOverKeys(item,function(item,key){var curKey=sProcessedKeys+(0==sProcessedKeys.length?"":",")+key,fieldType=ArrayUtils.TestAndInitializeKey(fieldsType,curKey,{name:curKey,_inferredTypes:[],_inferredSubTypes:[],_inferredValues:[],numOfItems:0});fieldType.numOfItems++;var inferredType=_processInferType(item);ArrayUtils.TestAndIncrement(fieldType._inferredTypes,inferredType.name),inferredType===DataTypeConverter.TYPES.TEXT&&ArrayUtils.TestAndIncrement(fieldType._inferredValues,item);var inferredSubType=_processInferSubType(item);null!=inferredSubType&&"undefined"!=typeof inferredSubType&&ArrayUtils.TestAndIncrement(fieldType._inferredSubTypes,inferredSubType.name)}),numOfRows++}}_analyseDataTypes(fieldsType);var quality={homogeneity:1,completeness:1,totalNullValues:0,totalValues:0};ArrayUtils.IteratorOverKeys(fieldsType,function(fieldType){quality.totalValues+=fieldType.numOfItems,quality.homogeneity*=fieldType.typeConfidence,fieldType.totalNullValues=0,fieldType._inferredTypes.hasOwnProperty(DataTypeConverter.TYPES.EMPTY.name)&&(fieldType.totalNullValues=fieldType._inferredTypes[DataTypeConverter.TYPES.EMPTY.name],quality.totalNullValues+=fieldType.totalNullValues)}),quality.homogeneity=Math.round(100*quality.homogeneity)/100;var totFullValues=quality.totalValues-quality.totalNullValues;quality.completeness=Math.round(totFullValues/quality.totalValues*100)/100;var warningsTextual="";ArrayUtils.IteratorOverKeys(fieldsType,function(fieldType){fieldType.errorsDescription="";var description="";if(fieldType.typeConfidence<1){var incorrect=fieldType.numOfItems-fieldType.totalNullValues-fieldType._inferredTypes[fieldType.type];if(incorrect>0){var _descr1=_capitalizeFirstLetter(JDC_LNG.key_declaretype[options.language])+".",_descr2=_capitalizeFirstLetter(JDC_LNG.key_notoftype_singular[options.language])+".";incorrect>1&&(_descr2=_capitalizeFirstLetter(JDC_LNG.key_notoftype_plural[options.language])+".");var descr=_descr1+" "+_descr2;descr=descr.replace(/%COL_NAME/g,fieldType.name),descr=descr.replace(/%COL_TYPE/g,fieldType.type),descr=descr.replace(/%COL_ERRORS/g,incorrect),description+=descr}}var descr="";1==fieldType.totalNullValues?descr=_capitalizeFirstLetter(JDC_LNG.key_emptyvalue_singolar[options.language])+".":fieldType.totalNullValues>1&&(descr=_capitalizeFirstLetter(JDC_LNG.key_emptyvalue_plural[options.language])+"."),descr=descr.replace(/%COL_NAME/g,fieldType.name),descr=descr.replace(/%COL_TYPE/g,fieldType.type),descr=descr.replace(/%COL_NULLVALUES/g,fieldType.totalNullValues),fieldType.errorsDescription=description,warningsTextual+=description});var metadata={dataset:json,fieldKeys:fieldKeys,types:fieldsType,qualityIndex:quality,warningsTextual:warningsTextual};return _filterBasedOnThreshold(metadata,options.thresholdConfidence),metadata},inferDataTypeOfValue:function(value){return _processInferType(value)},inferDataSubTypeOfValue:function(value){return _processInferSubType(value)}}}(),DataTypesUtils.FilterTime=function(value){var expTime=/^[0-9]{2}:[0-9]{2}(:[0-9]{2})?(\+[0-9]{2}:[0-9]{2})?$/;if(0==expTime.test(value))return null;var splitted=value.split(/[:|\+]/),expNumber=/^[0-9]{2}$/,HH=expNumber.test(splitted[0])?parseInt(splitted[0]):0,MM=expNumber.test(splitted[1])?parseInt(splitted[1]):0,SS=splitted.length>=3&&expNumber.test(splitted[2])?parseInt(splitted[2]):0,dt=new Date;return dt.setHours(HH),dt.setMinutes(MM),dt.setSeconds(SS),dt},DataTypesUtils.FilterDateTime=function(value){var _dtSplitted=value.split(/[T|\s]/);if(2==_dtSplitted.length){var dtTime=DataTypesUtils.FilterTime(_dtSplitted[1]);if(null==dtTime)return null;var dtDateTime=DataTypesUtils.FilterDate(_dtSplitted[0],dtTime);return dtDateTime}var dtDate=DataTypesUtils.FilterDate(value);if(null!=dtDate)return dtDate;var dtTime=DataTypesUtils.FilterTime(value);return dtTime},DataTypesUtils.FilterDate=function(value,dtDate){if(null==dtDate&&(dtDate=new Date),/^[0-9][0-9][0-9][0-9]\-[0-9][0-9]$/.test(value)){var year=parseInt(value.substring(0,4)),month=parseInt(value.substring(5));return dtDate.setYear(year),dtDate.setMonth(month),dtDate}var expDate=/^[0-9]{4}(\-|\/)[0-9]{2}((\-|\/)[0-9]{2})?$/;if(expDate.test(value)){var splitted=value.split(/[\-|\/]/),year=parseInt(splitted[0]),month=parseInt(splitted[1]),day=3==splitted.length?parseInt(splitted[2]):0;return dtDate.setYear(year),dtDate.setMonth(month),dtDate.setDate(day),dtDate}if(expDate=/^[0-9]{2}(\-|\/)[0-9]{2}(\-|\/)[0-9]{4}$/,expDate.test(value)){var splitted=value.split(/[\-|\/]/),year=parseInt(splitted[2]),month=parseInt(splitted[1]),day=parseInt(splitted[0]);return dtDate.setYear(year),dtDate.setMonth(month),dtDate.setDate(day),dtDate}return null},DataTypesUtils.FilterFloat=function(value){return/^(\-|\+)?((0|([1-9][0-9]*))(\.[0-9]+)?|Infinity)$/.test(value)?Number(value):NaN},DataTypesUtils.DecimalPlaces=function(num){var match=(""+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return match?Math.max(0,(match[1]?match[1].length:0)-(match[2]?+match[2]:0)):0},DataTypesUtils.IsLatLng=function(num){return NaN==DataTypesUtils.FilterFloat(num)?!1:DataTypesUtils.DecimalPlaces(num)>4},DataTypeHierarchy.HIERARCHY=[],DataTypeHierarchy.HIERARCHY[DataTypeConverter.TYPES.TEXT.name]=[DataTypeConverter.TYPES.TEXT.name],DataTypeHierarchy.HIERARCHY[DataTypeConverter.TYPES.NUMBER.name]=[DataTypeConverter.TYPES.NUMBER.name,DataTypeConverter.TYPES.TEXT.name],DataTypeHierarchy.HIERARCHY[DataTypeConverter.TYPES.DATETIME.name]=[DataTypeConverter.TYPES.DATETIME.name,DataTypeConverter.TYPES.TEXT.name],DataTypeHierarchy.HIERARCHY[DataTypeConverter.SUBTYPES.GEOCOORDINATE.name]=[DataTypeConverter.SUBTYPES.GEOCOORDINATE.name,DataTypeConverter.TYPES.NUMBER.name,DataTypeConverter.TYPES.TEXT.name],DataTypeHierarchy.canConvert=function(fromType,toType){var arrConvertableTypes=DataTypeHierarchy.HIERARCHY[fromType],idx=arrConvertableTypes.indexOf(toType);return idx>=0};var JDC_LNG={key_declaretype:{EN:"the column <%COL_NAME> is of type <%COL_TYPE>",IT:"la colonna <%COL_NAME> รจ di tipo <%COL_TYPE>",FR:"le colum <%COL_NAME> est de type <%COL_TYPE>",NL:"de kolom <%COL_NAME> is van het type <%COL_TYPE>"},key_notoftype_singular:{EN:"a value is not <%COL_TYPE>",IT:"un valore non รจ un <%COL_TYPE>",FR:"une valeur est pas <%COL_TYPE> se trouvant",NL:"een waarde is niet <%COL_TYPE>"},key_notoftype_plural:{EN:"%COL_ERRORS values are not <%COL_TYPE>",IT:"%COL_ERRORS valori non sono di tipo <%COL_TYPE>",FR:"les valeurs %COL_ERRORS sont du type <%COL_TYPE>",NL:"%COL_ERRORS waarden niet <%COL_TYPE>"},key_emptyvalue_singolar:{EN:"the column <%COL_NAME> has an empty value",IT:"la colonna <%COL_NAME> ha un valore vuoto",FR:"la colonne <%COL_NAME> a une valeur vide",NL:"de kolom <%COL_NAME> heeft een lege waarde"},key_emptyvalue_plural:{EN:"the column <%COL_NAME> has <%COL_NULLVALUES> empty values",IT:"la colonna <%COL_NAME> ha <%COL_NULLVALUES> valori vuoti",FR:"la colonne <%COL_NAME> a <%COL_NULLVALUES> valeurs vide",NL:"de kolom <%COL_NAME> heeft <%COL_NULLVALUES> lege waarde"},key_type:{EN:"type",IT:"tipo",FR:"type",NL:"type"},key_subtype:{EN:"subtype",IT:"sottotipo",FR:"sous-type",NL:"subtype"},key_typetext:{EN:"text",IT:"testo",FR:"texte",NL:"tekst"},key_typenumber:{EN:"number",IT:"numero",FR:"nombre",NL:"aantal"},key_typeobject:{EN:"object",IT:"oggetto",FR:"objet",NL:"voorwerp"},key_typedatetime:{EN:"date or time",IT:"data o orario",FR:"date ou l'heure",NL:"datum of tijd"},key_typeempty:{EN:"empty",IT:"vuoto",FR:"vide",NL:"leeg"},key_typelatitude:{EN:"latitude",IT:"latitudine",FR:"latitude",NL:"breedtegraad"},key_typelongitude:{EN:"longitude",IT:"longitudine",FR:"longitude",NL:"lengtegraad"}};
3 \ No newline at end of file 3 \ No newline at end of file
bower_components/jsdatachecker/src/DataTypeConverter.js
@@ -25,29 +25,40 @@ function DataTypeConverter() { @@ -25,29 +25,40 @@ function DataTypeConverter() {
25 };//EndConstructor. 25 };//EndConstructor.
26 26
27 DataTypeConverter.TYPES = { 27 DataTypeConverter.TYPES = {
28 - TEXT : { value: 0, name: "TEXT" },  
29 - CODE : { value: 1, name: "CODE"}, 28 + EMPTY : { value: 0, name: "NULL"},
30 29
  30 + TEXT : { value: 1, name: "TEXT" },
31 NUMBER : { value: 2, name: "NUMBER" }, 31 NUMBER : { value: 2, name: "NUMBER" },
32 OBJECT : { value: 3, name: "OBJECT" }, 32 OBJECT : { value: 3, name: "OBJECT" },
  33 + DATETIME : { value: 4, name: "DATETIME" }
  34 +};
33 35
  36 +DataTypeConverter.SUBTYPES = {
  37 + GEOCOORDINATE : { value: 1000, name: "GEOCOORDINATE" },
  38 + GEOJSON : { value: 1001, name: "GEOJSON" },
  39 + BOOL : { value: 1002, name: "BOOL"},
  40 + CONST : { value: 1003, name: "CONST" },
  41 + CATEGORY : { value: 1004, name: "CATEGORY" },
34 42
35 - BOOL : { value: 5, name: "BOOL"},  
36 - CONST : { value: 6, name: "CONST" },  
37 - CATEGORY : { value: 7, name: "CATEGORY" },  
38 -  
39 - DATETIME : { value: 8, name: "DATETIME" }, 43 + PERCENTAGE : { value: 1100, name: "PERCENTAGE" },
  44 + LATITUDE : { value: 1101, name: "LATITUDE" },
  45 + LONGITUDE : { value: 1102, name: "LONGITUDE" }
40 46
41 - EMPTY : { value: 101, name: "NULL" } 47 + /*CODE : { value: 2000, name: "CODE"},*/
42 }; 48 };
43 49
44 -DataTypeConverter.SUBTYPES = {  
45 - GEOCOORDINATE : { value: 1000, name: "GEOCOORDINATE" },  
46 - PERCENTAGE : { value: 1000, name: "PERCENTAGE" },  
47 - LATITUDE : { value: 1001, name: "LATITUDE" },  
48 - LONGITUDE : { value: 1002, name: "LONGITUDE" } 50 +DataTypeConverter.LANGS = {
  51 + EN : { value: 1000, name: "EN" },
  52 + IT : { value: 1001, name: "IT" },
  53 + FR : { value: 1100, name: "FR" },
  54 + NL : { value: 1101, name: "NL" }
49 }; 55 };
50 56
  57 +
  58 +DataTypeConverter.GEOJSONTYPES = [ "Point", "MultiPoint", "LineString",
  59 + "MultiLineString", "Polygon", "MultiPolygon", "GeometryCollection", "Feature",
  60 + "FeatureCollection" ];
  61 +
51 DataTypeConverter.prototype = (function () { 62 DataTypeConverter.prototype = (function () {
52 63
53 /*** 64 /***
@@ -111,6 +122,10 @@ DataTypeConverter.prototype = (function () { @@ -111,6 +122,10 @@ DataTypeConverter.prototype = (function () {
111 122
112 var _analyseDataTypes = function(fields) { 123 var _analyseDataTypes = function(fields) {
113 ArrayUtils.IteratorOverKeys(fields, function(field) { 124 ArrayUtils.IteratorOverKeys(fields, function(field) {
  125 +
  126 +
  127 + /*
  128 + //TODO: removed CODE, I don't know whether it must be inserted
114 if (field._inferredTypes[DataTypeConverter.TYPES.CODE.name]) { 129 if (field._inferredTypes[DataTypeConverter.TYPES.CODE.name]) {
115 var confidence = field._inferredTypes[DataTypeConverter.TYPES.CODE.name] / field.numOfItems; 130 var confidence = field._inferredTypes[DataTypeConverter.TYPES.CODE.name] / field.numOfItems;
116 var _numericalInferredType = field._inferredTypes[DataTypeConverter.TYPES.NUMBER.name]; 131 var _numericalInferredType = field._inferredTypes[DataTypeConverter.TYPES.NUMBER.name];
@@ -119,7 +134,7 @@ DataTypeConverter.prototype = (function () { @@ -119,7 +134,7 @@ DataTypeConverter.prototype = (function () {
119 field.type = DataTypeConverter.TYPES.CODE.name; 134 field.type = DataTypeConverter.TYPES.CODE.name;
120 field.typeConfidence = confidence; 135 field.typeConfidence = confidence;
121 return; 136 return;
122 - } 137 + }*/
123 138
124 //Infers the field TYPE. 139 //Infers the field TYPE.
125 var max = ArrayUtils.FindMinMax(field._inferredTypes, function (curval, lastval) { 140 var max = ArrayUtils.FindMinMax(field._inferredTypes, function (curval, lastval) {
@@ -189,11 +204,6 @@ DataTypeConverter.prototype = (function () { @@ -189,11 +204,6 @@ DataTypeConverter.prototype = (function () {
189 if (typeof value === 'object') 204 if (typeof value === 'object')
190 return DataTypeConverter.TYPES.OBJECT; 205 return DataTypeConverter.TYPES.OBJECT;
191 206
192 - //If the value starts with a zero and contains all numbers, it is  
193 - //inferred as textual content.  
194 - if (/^0[0-9]+$/.test(value))  
195 - return DataTypeConverter.TYPES.CODE;  
196 -  
197 //Try to parse the float. 207 //Try to parse the float.
198 var isnumber = DataTypesUtils.FilterFloat(value); 208 var isnumber = DataTypesUtils.FilterFloat(value);
199 if (isNaN(isnumber) !== true) {//It is a number. 209 if (isNaN(isnumber) !== true) {//It is a number.
@@ -222,6 +232,21 @@ DataTypeConverter.prototype = (function () { @@ -222,6 +232,21 @@ DataTypeConverter.prototype = (function () {
222 var _processInferSubType = function (value) { 232 var _processInferSubType = function (value) {
223 if (value === null || typeof value === 'undefined') return null; 233 if (value === null || typeof value === 'undefined') return null;
224 234
  235 + //GEOCOORDINATE
  236 + if (Array.isArray(value) && value.length == 2) {//It recognises the LAT LNG as array of two values.
  237 + //Checks if the two array's values are numbers.
  238 + if ( DataTypesUtils.FilterFloat(value[0]) != NaN && DataTypesUtils.FilterFloat(value[1]) != NaN )
  239 + if (DataTypesUtils.DecimalPlaces(value[0]) > 4 && DataTypesUtils.DecimalPlaces(value[1]) > 4 )
  240 + return DataTypeConverter.SUBTYPES.GEOCOORDINATE;
  241 + }//EndIf.
  242 +
  243 + if (typeof value === 'string') {
  244 + var split = value.split(",");
  245 + //if (split.length == 2)
  246 + if (DataTypesUtils.IsLatLng(split[0]) && DataTypesUtils.IsLatLng(split[1]))
  247 + return DataTypeConverter.SUBTYPES.GEOCOORDINATE;
  248 + }
  249 +
225 //Try to parse the float. 250 //Try to parse the float.
226 var isnumber = DataTypesUtils.FilterFloat(value); 251 var isnumber = DataTypesUtils.FilterFloat(value);
227 if (isNaN(isnumber) !== true) {//It is a number. 252 if (isNaN(isnumber) !== true) {//It is a number.
@@ -240,6 +265,19 @@ DataTypeConverter.prototype = (function () { @@ -240,6 +265,19 @@ DataTypeConverter.prototype = (function () {
240 return null; 265 return null;
241 } 266 }
242 267
  268 + //Try to parse GEOJSON.
  269 + if (typeof value === 'object' && value.hasOwnProperty('type')) {
  270 + //Check the type variable.
  271 + var geotype = value.type;
  272 + var isincluded = DataTypeConverter.GEOJSONTYPES.includes(geotype);
  273 + if (isincluded) return DataTypeConverter.SUBTYPES.GEOJSON;
  274 + }
  275 +
  276 + //If the value starts with a zero and contains all numbers, it is
  277 + //inferred as textual content.
  278 + /*if (/^0[0-9]+$/.test(value))
  279 + return DataTypeConverter.TYPES.CODE;*/
  280 +
243 return null; 281 return null;
244 };//EndFunction. 282 };//EndFunction.
245 283
@@ -248,6 +286,9 @@ DataTypeConverter.prototype = (function () { @@ -248,6 +286,9 @@ DataTypeConverter.prototype = (function () {
248 if (fieldType.typeConfidence >= threshold) return; 286 if (fieldType.typeConfidence >= threshold) return;
249 287
250 var arrHierarchyTypes = DataTypeHierarchy.HIERARCHY[fieldType.type]; 288 var arrHierarchyTypes = DataTypeHierarchy.HIERARCHY[fieldType.type];
  289 + if (arrHierarchyTypes == null)
  290 + return metadata;
  291 +
251 var lastFieldType = { lastType: arrHierarchyTypes[0], 292 var lastFieldType = { lastType: arrHierarchyTypes[0],
252 lastTypeCounter: fieldType._inferredTypes[arrHierarchyTypes[0]], 293 lastTypeCounter: fieldType._inferredTypes[arrHierarchyTypes[0]],
253 typeConfidence: 0 }; 294 typeConfidence: 0 };
@@ -270,6 +311,15 @@ DataTypeConverter.prototype = (function () { @@ -270,6 +311,15 @@ DataTypeConverter.prototype = (function () {
270 return metadata; 311 return metadata;
271 };//EndFunction. 312 };//EndFunction.
272 313
  314 + var _capitalizeFirstLetter = function(string) {
  315 + return string.charAt(0).toUpperCase() + string.slice(1);
  316 + };//EndFunction.
  317 +
  318 + var _replaceAll = function(search, replacement) {
  319 + var target = this;
  320 + return target.split(search).join(replacement);
  321 + };
  322 +
273 var jsonTraverse = function(json, fieldKeys, callback) { 323 var jsonTraverse = function(json, fieldKeys, callback) {
274 var stack = []; 324 var stack = [];
275 var numOfRows = 0; 325 var numOfRows = 0;
@@ -396,8 +446,17 @@ DataTypeConverter.prototype = (function () { @@ -396,8 +446,17 @@ DataTypeConverter.prototype = (function () {
396 * @param options Infer Data Type options, in particular the threshold value for the confidence. 446 * @param options Infer Data Type options, in particular the threshold value for the confidence.
397 */ 447 */
398 inferJsonDataType: function (json, fieldKeys, options) { 448 inferJsonDataType: function (json, fieldKeys, options) {
399 - if (typeof options === 'undefined' || options == null)  
400 - options = { thresholdConfidence: 1 }; 449 +
  450 + //Default options initialisation.
  451 + if (typeof options === 'undefined' || options == null) options = { };
  452 +
  453 + if (options.hasOwnProperty("thresholdConfidence") == false)
  454 + options.thresholdConfidence = 1;
  455 +
  456 + if (options.hasOwnProperty("language") == false)
  457 + options.language = DataTypeConverter.LANGS.EN.name;
  458 + else
  459 + options.language = options.language.toUpperCase();
401 460
402 var stack = []; 461 var stack = [];
403 var fieldsType = {}; 462 var fieldsType = {};
@@ -508,19 +567,43 @@ DataTypeConverter.prototype = (function () { @@ -508,19 +567,43 @@ DataTypeConverter.prototype = (function () {
508 567
509 var incorrect = fieldType.numOfItems - fieldType.totalNullValues - fieldType._inferredTypes[fieldType.type]; 568 var incorrect = fieldType.numOfItems - fieldType.totalNullValues - fieldType._inferredTypes[fieldType.type];
510 if (incorrect > 0) { 569 if (incorrect > 0) {
511 - description += "The column <" + fieldType.name + "> has the type <" + fieldType.type + ">"; 570 + var _descr1 = _capitalizeFirstLetter(JDC_LNG['key_declaretype'][options.language]) + ".";
  571 + var _descr2 = _capitalizeFirstLetter(JDC_LNG['key_notoftype_singular'][options.language]) + ".";
  572 + if (incorrect > 1)
  573 + _descr2 = _capitalizeFirstLetter(JDC_LNG['key_notoftype_plural'][options.language]) + ".";
  574 +
  575 + var descr = _descr1 + " " + _descr2;
  576 + descr = descr.replace(/%COL_NAME/g, fieldType.name);
  577 + descr = descr.replace(/%COL_TYPE/g, fieldType.type);
  578 + descr = descr.replace(/%COL_ERRORS/g, incorrect);
  579 +
  580 + description += descr;
  581 +
  582 + /*description += "The column <" + fieldType.name + "> has the type <" + fieldType.type + ">";
512 var verb = (incorrect == 1) ? " value is" : " values are"; 583 var verb = (incorrect == 1) ? " value is" : " values are";
513 - description += ", but " + incorrect + verb + " not a " + fieldType.type; 584 + description += ", but " + incorrect + verb + " not a " + fieldType.type;*/
514 } 585 }
515 } 586 }
516 587
517 - if (fieldType.totalNullValues > 0) { 588 + var descr = "";
  589 + if (fieldType.totalNullValues == 1)
  590 + descr = _capitalizeFirstLetter(JDC_LNG['key_emptyvalue_singolar'][options.language]) + ".";
  591 + else if (fieldType.totalNullValues > 1 )
  592 + descr = _capitalizeFirstLetter(JDC_LNG['key_emptyvalue_plural'][options.language]) + ".";
  593 +
  594 + descr = descr.replace(/%COL_NAME/g, fieldType.name);
  595 + descr = descr.replace(/%COL_TYPE/g, fieldType.type);
  596 + descr = descr.replace(/%COL_NULLVALUES/g, fieldType.totalNullValues);
  597 +
  598 + /*if (fieldType.totalNullValues > 0) {
  599 + var descr = _capitalizeFirstLetter(JDC_LNG['key_declaretype'][options.language]) + ".";
  600 +
518 description += "The column <" + fieldType.name + "> has " + fieldType.totalNullValues + " EMPTY value"; 601 description += "The column <" + fieldType.name + "> has " + fieldType.totalNullValues + " EMPTY value";
519 if (fieldType.totalNullValues > 1) description += "s"; 602 if (fieldType.totalNullValues > 1) description += "s";
520 } 603 }
521 604
522 if (description.length > 0) 605 if (description.length > 0)
523 - description += "."; 606 + description += ".";*/
524 607
525 fieldType.errorsDescription = description; 608 fieldType.errorsDescription = description;
526 warningsTextual += description; 609 warningsTextual += description;
@@ -547,6 +630,15 @@ DataTypeConverter.prototype = (function () { @@ -547,6 +630,15 @@ DataTypeConverter.prototype = (function () {
547 */ 630 */
548 inferDataTypeOfValue: function (value) { 631 inferDataTypeOfValue: function (value) {
549 return _processInferType(value); 632 return _processInferType(value);
  633 + },//EndFunction.
  634 +
  635 + /**
  636 + * Given in input a value, the function infers the data type.
  637 + * @param value
  638 + * @returns {*}
  639 + */
  640 + inferDataSubTypeOfValue: function (value) {
  641 + return _processInferSubType(value);
550 }//EndFunction. 642 }//EndFunction.
551 643
552 }; 644 };
bower_components/jsdatachecker/src/DataTypesUtils.js
@@ -122,4 +122,10 @@ DataTypesUtils.DecimalPlaces = function (num) { @@ -122,4 +122,10 @@ DataTypesUtils.DecimalPlaces = function (num) {
122 (match[1] ? match[1].length : 0) 122 (match[1] ? match[1].length : 0)
123 // Adjust for scientific notation. 123 // Adjust for scientific notation.
124 - (match[2] ? +match[2] : 0)); 124 - (match[2] ? +match[2] : 0));
  125 +}//EndFunction.
  126 +
  127 +DataTypesUtils.IsLatLng = function (num) {
  128 + if (DataTypesUtils.FilterFloat(num) == NaN) return false;
  129 + if (DataTypesUtils.DecimalPlaces(num) > 4) return true;
  130 + return false;
125 }//EndFunction. 131 }//EndFunction.
126 \ No newline at end of file 132 \ No newline at end of file
bower_components/jsdatachecker/src/ODPlatforms/CKAN.js
@@ -39,6 +39,7 @@ CKANApi.prototype = (function() { @@ -39,6 +39,7 @@ CKANApi.prototype = (function() {
39 errorCallback("Check DataStoreAPI."); 39 errorCallback("Check DataStoreAPI.");
40 }; 40 };
41 xhttp.open("GET", theUrl, true);//true for asynchronous. 41 xhttp.open("GET", theUrl, true);//true for asynchronous.
  42 + //xhttp.setRequestHeader('Content-yype')
42 xhttp.send(null); 43 xhttp.send(null);
43 };//EndFunction. 44 };//EndFunction.
44 45
bower_components/jsdatachecker/src/ODPlatforms/ODStatistics.js
@@ -53,18 +53,44 @@ ODStatistics.prototype = (function() { @@ -53,18 +53,44 @@ ODStatistics.prototype = (function() {
53 53
54 stats.numOfDatasets = datasets.length; 54 stats.numOfDatasets = datasets.length;
55 stats.formats = []; 55 stats.formats = [];
  56 + stats.formatsAggregated = [];
56 57
57 for (var i=0; i<datasets.length; i++) { 58 for (var i=0; i<datasets.length; i++) {
58 var dataset = datasets[i]; 59 var dataset = datasets[i];
59 60
60 //Statistics on the datasets' formats. 61 //Statistics on the datasets' formats.
61 ArrayUtils.TestAndIncrement(stats.formats, dataset.format); 62 ArrayUtils.TestAndIncrement(stats.formats, dataset.format);
  63 +
  64 + var dsformat = dataset.format.toLowerCase();
  65 +
  66 + //Aggregated formats.
  67 + if (dsformat.includes("csv"))
  68 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "csv");
  69 + else if (dsformat.includes("pdf"))
  70 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "pdf");
  71 + else if (dsformat.includes("html"))
  72 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "html");
  73 + else if (dsformat.includes("json"))
  74 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "json");
  75 + else if (dsformat.includes("xml"))
  76 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "xml");
  77 + else if (dsformat.includes("shp"))
  78 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "shp");
  79 + else if (dsformat.includes("geojson"))
  80 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "geojson");
  81 + else if (dsformat.includes("kml"))
  82 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "kml");
  83 + else if (dsformat.includes("txt"))
  84 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "txt");
  85 + else if (dsformat.includes("xls") || dsformat.includes("xlsx") || dsformat.includes("ods"))
  86 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "xls/ods");
  87 + else
  88 + ArrayUtils.TestAndIncrement(stats.formatsAggregated, "other");
62 }//EndForI. 89 }//EndForI.
63 90
64 //Calculates the formats percentages. 91 //Calculates the formats percentages.
65 var tmpArrFormats = stats.formats; 92 var tmpArrFormats = stats.formats;
66 stats.formats = []; 93 stats.formats = [];
67 -  
68 ArrayUtils.IteratorOverKeys(tmpArrFormats, function(item, property) { 94 ArrayUtils.IteratorOverKeys(tmpArrFormats, function(item, property) {
69 var recordFormat = {}; 95 var recordFormat = {};
70 recordFormat.name = property; 96 recordFormat.name = property;
@@ -74,6 +100,18 @@ ODStatistics.prototype = (function() { @@ -74,6 +100,18 @@ ODStatistics.prototype = (function() {
74 stats.formats.push(recordFormat); 100 stats.formats.push(recordFormat);
75 }); 101 });
76 102
  103 + //Calculates the formats percentage for the aggregated formats.
  104 + var tmpArrFormatsAggregated = stats.formatsAggregated;
  105 + stats.formatsAggregated = [];
  106 + ArrayUtils.IteratorOverKeys(tmpArrFormatsAggregated, function(item, property) {
  107 + var recordFormat = {};
  108 + recordFormat.name = property;
  109 + recordFormat.occurrance = item;
  110 + recordFormat.occurrancePercentage = (item / datasets.length) * 100;
  111 + recordFormat.occurrancePercentage = Math.round(recordFormat.occurrancePercentage * 100) / 100;
  112 + stats.formatsAggregated.push(recordFormat);
  113 + });
  114 +
77 return stats; 115 return stats;
78 };//EndFunction. 116 };//EndFunction.
79 117
bower_components/jsdatachecker/src/langs.js 0 โ†’ 100644
  1 +
  2 +
  3 +
  4 +var JDC_LNG = {
  5 +
  6 + "key_declaretype": {
  7 + "EN": "the column <%COL_NAME> is of type <%COL_TYPE>",
  8 + "IT": "la colonna <%COL_NAME> รจ di tipo <%COL_TYPE>",
  9 + "FR": "le colum <%COL_NAME> est de type <%COL_TYPE>",
  10 + "NL": "de kolom <%COL_NAME> is van het type <%COL_TYPE>"
  11 + },
  12 +
  13 + "key_notoftype_singular": {
  14 + "EN": "a value is not <%COL_TYPE>",
  15 + "IT": "un valore non รจ un <%COL_TYPE>",
  16 + "FR": "une valeur est pas <%COL_TYPE> se trouvant",
  17 + "NL": "een waarde is niet <%COL_TYPE>"
  18 + },
  19 +
  20 + "key_notoftype_plural": {
  21 + "EN": "%COL_ERRORS values are not <%COL_TYPE>",
  22 + "IT": "%COL_ERRORS valori non sono di tipo <%COL_TYPE>",
  23 + "FR": "les valeurs %COL_ERRORS sont du type <%COL_TYPE>",
  24 + "NL": "%COL_ERRORS waarden niet <%COL_TYPE>"
  25 + },
  26 +
  27 + "key_emptyvalue_singolar": {
  28 + "EN": "the column <%COL_NAME> has an empty value",
  29 + "IT": "la colonna <%COL_NAME> ha un valore vuoto",
  30 + "FR": "la colonne <%COL_NAME> a une valeur vide",
  31 + "NL": "de kolom <%COL_NAME> heeft een lege waarde"
  32 + },
  33 +
  34 + "key_emptyvalue_plural": {
  35 + "EN": "the column <%COL_NAME> has <%COL_NULLVALUES> empty values",
  36 + "IT": "la colonna <%COL_NAME> ha <%COL_NULLVALUES> valori vuoti",
  37 + "FR": "la colonne <%COL_NAME> a <%COL_NULLVALUES> valeurs vide",
  38 + "NL": "de kolom <%COL_NAME> heeft <%COL_NULLVALUES> lege waarde"
  39 + },
  40 +
  41 + "key_type": {
  42 + "EN": "type",
  43 + "IT": "tipo",
  44 + "FR": "type",
  45 + "NL": "type"
  46 + },
  47 +
  48 + "key_subtype": {
  49 + "EN": "subtype",
  50 + "IT": "sottotipo",
  51 + "FR": "sous-type",
  52 + "NL": "subtype"
  53 + },
  54 +
  55 + "key_typetext": {
  56 + "EN": "text",
  57 + "IT": "testo",
  58 + "FR": "texte",
  59 + "NL": "tekst"
  60 + },
  61 +
  62 + "key_typenumber": {
  63 + "EN": "number",
  64 + "IT": "numero",
  65 + "FR": "nombre",
  66 + "NL": "aantal"
  67 + },
  68 +
  69 + "key_typeobject": {
  70 + "EN": "object",
  71 + "IT": "oggetto",
  72 + "FR": "objet",
  73 + "NL": "voorwerp"
  74 + },
  75 +
  76 + "key_typedatetime": {
  77 + "EN": "date or time",
  78 + "IT": "data o orario",
  79 + "FR": "date ou l'heure",
  80 + "NL": "datum of tijd"
  81 + },
  82 +
  83 + "key_typeempty": {
  84 + "EN": "empty",
  85 + "IT": "vuoto",
  86 + "FR": "vide",
  87 + "NL": "leeg"
  88 + },
  89 +
  90 + "key_typelatitude": {
  91 + "EN": "latitude",
  92 + "IT": "latitudine",
  93 + "FR": "latitude",
  94 + "NL": "breedtegraad"
  95 + },
  96 +
  97 + "key_typelongitude": {
  98 + "EN": "longitude",
  99 + "IT": "longitudine",
  100 + "FR": "longitude",
  101 + "NL": "lengtegraad"
  102 + }
  103 +
  104 +};
0 \ No newline at end of file 105 \ No newline at end of file
controllets/data-sevc-controllet/data-sevc-controllet.html
@@ -47,7 +47,7 @@ @@ -47,7 +47,7 @@
47 47
48 listeners : { 48 listeners : {
49 'page-slider-controllet_selected' : '_updateSlider', 49 'page-slider-controllet_selected' : '_updateSlider',
50 - 'dataset-selection-controllet_data-url' : '_allowSecondStep', 50 + 'select-dataset-controllet_data-url' : '_allowSecondStep',
51 'select-fields-controllet_selected-fields' : '_allowThirdStep', 51 'select-fields-controllet_selected-fields' : '_allowThirdStep',
52 'filters-controllet_filters': '_allowThirdStep', 52 'filters-controllet_filters': '_allowThirdStep',
53 'aggregators-controllet_aggregators': '_allowThirdStep', 53 'aggregators-controllet_aggregators': '_allowThirdStep',
@@ -117,7 +117,7 @@ @@ -117,7 +117,7 @@
117 117
118 _allowSecondStep : function(e){ 118 _allowSecondStep : function(e){
119 this.$.slider.chevronRight(false); 119 this.$.slider.chevronRight(false);
120 -// 120 +
121 var f = Object.create(providerFactory); 121 var f = Object.create(providerFactory);
122 var provider = f.getProvider(e.detail.url); 122 var provider = f.getProvider(e.detail.url);
123 var dataUrl = provider.addLimit(e.detail.url); 123 var dataUrl = provider.addLimit(e.detail.url);
@@ -135,6 +135,8 @@ @@ -135,6 +135,8 @@
135 } 135 }
136 else 136 else
137 this.$.select_dataset.$.selected_url.invalid = true; 137 this.$.select_dataset.$.selected_url.invalid = true;
  138 +
  139 + this.$.select_dataset.showDatasetInfo();
138 }, 140 },
139 141
140 _allowThirdStep : function(){ 142 _allowThirdStep : function(){
controllets/data-sevc-controllet/demo/index.html
@@ -18,8 +18,10 @@ @@ -18,8 +18,10 @@
18 <data-sevc-controllet deep-url="http://172.16.15.38/DEEalerProvider/DEEP/" 18 <data-sevc-controllet deep-url="http://172.16.15.38/DEEalerProvider/DEEP/"
19 datalets-list-url="http://172.16.15.38/DEEalerProvider/DEEP/datalets-list" 19 datalets-list-url="http://172.16.15.38/DEEalerProvider/DEEP/datalets-list"
20 datasets='{"result":{"providers":{"1":{"title":"CKAN","api_url":"http:\/\/ckan.routetopa.eu","image_hash":"11","id":"1"}},"datasets":[{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 2","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b056c5e6-76af-4526-a35d-7dee664fb6ee\/download\/isislab.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/818c2edb-0cb7-4288-b340-e4dd1933d817\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New---Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination - dl","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/fd8c4d6f-315d-4aa0-b7bd-4fdde7bf641b\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New---Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) dissemination of ROUTE-TO-PA project","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/b0ef6017-8c64-4e11-8046-7e51a8561856\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New---Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"test dissemination with link","resource_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/ba5054af-7561-4f99-9504-76ea004a1e85\/resource\/4cc2349d-bf7b-4bbe-a7ca-db5312bb6c94\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New---Link.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Dissemination activity of the first year","resource_name":"Dissemination activity of the first year (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/61f07087-210a-4c35-9606-2aafe183633b\/resource\/5f9d8d8b-1c41-45f7-9dbb-61b9a7bcd076\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"City of the Hague Municipality","package_name":"Test 3- Buurten","resource_name":"Test Buurten - 3","url":"http:\/\/ckan.routetopa.eu\/dataset\/1248d447-2901-4beb-91ae-c2f249fd8a99\/resource\/1fdbc765-8945-4271-8dce-9c7eba45a67d\/download\/Test-3-Compare.csv","metas":"{\"organization\":\"City of the Hague Municipality\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"}]}}' 20 datasets='{"result":{"providers":{"1":{"title":"CKAN","api_url":"http:\/\/ckan.routetopa.eu","image_hash":"11","id":"1"}},"datasets":[{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 2","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b056c5e6-76af-4526-a35d-7dee664fb6ee\/download\/isislab.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/818c2edb-0cb7-4288-b340-e4dd1933d817\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New---Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination - dl","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/fd8c4d6f-315d-4aa0-b7bd-4fdde7bf641b\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New---Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) dissemination of ROUTE-TO-PA project","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/b0ef6017-8c64-4e11-8046-7e51a8561856\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New---Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"test dissemination with link","resource_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/ba5054af-7561-4f99-9504-76ea004a1e85\/resource\/4cc2349d-bf7b-4bbe-a7ca-db5312bb6c94\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New---Link.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Dissemination activity of the first year","resource_name":"Dissemination activity of the first year (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/61f07087-210a-4c35-9606-2aafe183633b\/resource\/5f9d8d8b-1c41-45f7-9dbb-61b9a7bcd076\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"City of the Hague Municipality","package_name":"Test 3- Buurten","resource_name":"Test Buurten - 3","url":"http:\/\/ckan.routetopa.eu\/dataset\/1248d447-2901-4beb-91ae-c2f249fd8a99\/resource\/1fdbc765-8945-4271-8dce-9c7eba45a67d\/download\/Test-3-Compare.csv","metas":"{\"organization\":\"City of the Hague Municipality\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"}]}}'
  21 + suggested-datasets='[{"resource_name":"SUGGESTED 1","url":"noUrl.csv","metas":"{\"description\":\"noDescriione\"}"},{"resource_name":"SUGGESTED 2","url":"noUrl.csv","metas":"{\"description\":\"noDescriione\"}"},{"resource_name":"SUGGESTED 3","url":"noUrl.csv","metas":"{\"description\":\"noDescriione\"}"}]'
  22 + <!--suggested-datasets='{"result":{"providers":{"1":{"title":"CKAN","api_url":"http:\/\/ckan.routetopa.eu","image_hash":"11","id":"1"}},"datasets":[{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 2","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b056c5e6-76af-4526-a35d-7dee664fb6ee\/download\/isislab.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/818c2edb-0cb7-4288-b340-e4dd1933d817\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination - dl","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/fd8c4d6f-315d-4aa0-b7bd-4fdde7bf641b\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) dissemination of ROUTE-TO-PA project","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/b0ef6017-8c64-4e11-8046-7e51a8561856\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"test dissemination with link","resource_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/ba5054af-7561-4f99-9504-76ea004a1e85\/resource\/4cc2349d-bf7b-4bbe-a7ca-db5312bb6c94\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Dissemination activity of the first year","resource_name":"Dissemination activity of the first year (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/61f07087-210a-4c35-9606-2aafe183633b\/resource\/5f9d8d8b-1c41-45f7-9dbb-61b9a7bcd076\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"City of the Hague Municipality","package_name":"Test 3- Buurten","resource_name":"Test Buurten - 3","url":"http:\/\/ckan.routetopa.eu\/dataset\/1248d447-2901-4beb-91ae-c2f249fd8a99\/resource\/1fdbc765-8945-4271-8dce-9c7eba45a67d\/download\/Test-3-Compare.csv","metas":"{\"organization\":\"City of the Hague Municipality\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"}]}}'-->
21 <!--datasets='{"result":{"providers":{"1":{"title":"CKAN","api_url":"http:\/\/ckan.routetopa.eu","image_hash":"11","id":"1"}},"datasets":[{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 2","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b056c5e6-76af-4526-a35d-7dee664fb6ee\/download\/isislab.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/818c2edb-0cb7-4288-b340-e4dd1933d817\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination - dl","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/fd8c4d6f-315d-4aa0-b7bd-4fdde7bf641b\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) dissemination of ROUTE-TO-PA project","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/b0ef6017-8c64-4e11-8046-7e51a8561856\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"test dissemination with link","resource_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/ba5054af-7561-4f99-9504-76ea004a1e85\/resource\/4cc2349d-bf7b-4bbe-a7ca-db5312bb6c94\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Dissemination activity of the first year","resource_name":"Dissemination activity of the first year (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/61f07087-210a-4c35-9606-2aafe183633b\/resource\/5f9d8d8b-1c41-45f7-9dbb-61b9a7bcd076\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"City of the Hague Municipality","package_name":"Test 3- Buurten","resource_name":"Test Buurten - 3","url":"http:\/\/ckan.routetopa.eu\/dataset\/1248d447-2901-4beb-91ae-c2f249fd8a99\/resource\/1fdbc765-8945-4271-8dce-9c7eba45a67d\/download\/Test-3-Compare.csv","metas":"{\"organization\":\"City of the Hague Municipality\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"}]}}'--> 23 <!--datasets='{"result":{"providers":{"1":{"title":"CKAN","api_url":"http:\/\/ckan.routetopa.eu","image_hash":"11","id":"1"}},"datasets":[{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 2","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b056c5e6-76af-4526-a35d-7dee664fb6ee\/download\/isislab.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/818c2edb-0cb7-4288-b340-e4dd1933d817\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination - dl","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/fd8c4d6f-315d-4aa0-b7bd-4fdde7bf641b\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) dissemination of ROUTE-TO-PA project","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/b0ef6017-8c64-4e11-8046-7e51a8561856\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"test dissemination with link","resource_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/ba5054af-7561-4f99-9504-76ea004a1e85\/resource\/4cc2349d-bf7b-4bbe-a7ca-db5312bb6c94\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Dissemination activity of the first year","resource_name":"Dissemination activity of the first year (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/61f07087-210a-4c35-9606-2aafe183633b\/resource\/5f9d8d8b-1c41-45f7-9dbb-61b9a7bcd076\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"City of the Hague Municipality","package_name":"Test 3- Buurten","resource_name":"Test Buurten - 3","url":"http:\/\/ckan.routetopa.eu\/dataset\/1248d447-2901-4beb-91ae-c2f249fd8a99\/resource\/1fdbc765-8945-4271-8dce-9c7eba45a67d\/download\/Test-3-Compare.csv","metas":"{\"organization\":\"City of the Hague Municipality\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"}]}}'-->
22 - <!--suggested-datasets='[{"resource_name":"SUGGESTED 1","url":"noUrl.csv","metas":"{\"description\":\"noDescriione\"}"},{"resource_name":"SUGGESTED 2","url":"noUrl.csv","metas":"{\"description\":\"noDescriione\"}"},{"resource_name":"SUGGESTED 3","url":"noUrl.csv","metas":"{\"description\":\"noDescriione\"}"}]'--> 24 +
23 </data-sevc-controllet> 25 </data-sevc-controllet>
24 26
25 <!--<co-datalets-creator-controllet data='[{"a":"0", "b":"1"},{"a":"2", "b":"3a"},{"a":"2", "b":"3"}]' deep-url="http://172.16.15.38/DEEalerProvider/DEEP/"--> 27 <!--<co-datalets-creator-controllet data='[{"a":"0", "b":"1"},{"a":"2", "b":"3a"},{"a":"2", "b":"3"}]' deep-url="http://172.16.15.38/DEEalerProvider/DEEP/"-->
controllets/data-table-controllet/data-table-controllet.html
@@ -40,15 +40,20 @@ @@ -40,15 +40,20 @@
40 } 40 }
41 41
42 paper-icon-button.order { 42 paper-icon-button.order {
43 - height: 24px;  
44 - width: 24px; 43 + height: 40px;
  44 + width: 40px;
  45 + padding: 4px;
  46 +
45 cursor: pointer; 47 cursor: pointer;
46 } 48 }
47 49
48 paper-icon-button.warning { 50 paper-icon-button.warning {
49 - height: 24px;  
50 - width: 24px; 51 + height: 40px;
  52 + width: 40px;
  53 + padding: 4px;
51 color: #FFEB3B; 54 color: #FFEB3B;
  55 + --paper-icon-button-ink-color: #FFEB3B;
  56 +
52 cursor: help; 57 cursor: help;
53 } 58 }
54 59
@@ -77,18 +82,22 @@ @@ -77,18 +82,22 @@
77 82
78 #data_table_container #header { 83 #data_table_container #header {
79 background: #B6B6B6; 84 background: #B6B6B6;
80 - height: 24px;  
81 - padding: 12px; 85 + height: 40px;
  86 + padding: 4px;
82 text-align: center; 87 text-align: center;
83 font-weight: 700; 88 font-weight: 700;
84 cursor: help; 89 cursor: help;
85 } 90 }
86 91
  92 + #data_table_container #header * {
  93 + line-height: 40px !important;
  94 + }
  95 +
87 #data_table_container table { 96 #data_table_container table {
88 height: calc(100% - 96px); 97 height: calc(100% - 96px);
89 width: 100%; 98 width: 100%;
90 99
91 - border-spacing: 0px; 100 + border-spacing: 0;
92 } 101 }
93 102
94 #data_table_container tbody { 103 #data_table_container tbody {
@@ -103,22 +112,35 @@ @@ -103,22 +112,35 @@
103 112
104 #data_table_container th, 113 #data_table_container th,
105 #data_table_container td{ 114 #data_table_container td{
106 - height: 24px;  
107 - padding: 12px; 115 + height: 32px;
  116 + /*padding: 12px;*/
108 text-align: center; 117 text-align: center;
109 - max-width: 256px;  
110 - min-width: 156px; 118 + /*max-width: 256px;*/
  119 + /*min-width: 156px;*/
111 overflow: hidden; 120 overflow: hidden;
112 white-space: nowrap; 121 white-space: nowrap;
113 text-overflow: ellipsis; 122 text-overflow: ellipsis;
114 width: 1%; 123 width: 1%;
115 } 124 }
116 125
  126 + #data_table_container td {
  127 + font-size: 14px;
  128 + padding: 4px 12px;
  129 + max-width: calc(360px - 24px);
  130 + }
  131 +
117 #data_table_container th { 132 #data_table_container th {
118 background: #2196F3; 133 background: #2196F3;
119 color: #FFFFFF; 134 color: #FFFFFF;
120 font-weight: 700; 135 font-weight: 700;
121 cursor: help; 136 cursor: help;
  137 + border-right: 2px solid #FFFFFF;
  138 + height: 40px;
  139 + padding: 4px 12px;
  140 + }
  141 +
  142 + #data_table_container tr :nth-last-child(2) {
  143 + border-right: 0;
122 } 144 }
123 145
124 #data_table_container th, 146 #data_table_container th,
@@ -128,17 +150,13 @@ @@ -128,17 +150,13 @@
128 150
129 #data_table_container th .th_label { 151 #data_table_container th .th_label {
130 display: inline-block; 152 display: inline-block;
131 - max-width: calc(100% - 48px - 8px); 153 + /*max-width: calc(100% - 48px - 8px);*/
132 vertical-align: middle; 154 vertical-align: middle;
133 overflow: hidden; 155 overflow: hidden;
134 white-space: nowrap; 156 white-space: nowrap;
135 text-overflow: ellipsis; 157 text-overflow: ellipsis;
136 line-height: 24px;/**/ 158 line-height: 24px;/**/
137 - }  
138 -  
139 - #data_table_container td {  
140 - font-size: 14px;  
141 - padding: 4px; 159 + max-width: calc(360px - 114px);
142 } 160 }
143 161
144 #data_table_container #footer { 162 #data_table_container #footer {
@@ -202,10 +220,10 @@ @@ -202,10 +220,10 @@
202 <paper-material id="data_table_container" elevation="5"> 220 <paper-material id="data_table_container" elevation="5">
203 221
204 <div id="header"> 222 <div id="header">
205 - <span id="selected_data"></span>  
206 <template is="dom-if" if={{hasWarnings}}> 223 <template is="dom-if" if={{hasWarnings}}>
207 <paper-icon-button class="warning" icon="warning"></paper-icon-button> 224 <paper-icon-button class="warning" icon="warning"></paper-icon-button>
208 </template> 225 </template>
  226 + <span id="selected_data"></span>
209 </div> 227 </div>
210 228
211 <paper-tooltip id="tooltip_wornings" for="header" offset="56"> 229 <paper-tooltip id="tooltip_wornings" for="header" offset="56">
@@ -223,10 +241,11 @@ @@ -223,10 +241,11 @@
223 <tr> 241 <tr>
224 <template is="dom-repeat" items="{{fields}}"> 242 <template is="dom-repeat" items="{{fields}}">
225 <th id="id_{{index}}"> 243 <th id="id_{{index}}">
226 - <div class="th_label">{{item.name}}</div> 244 +
227 <template is="dom-if" if={{item.errorsDescription.length}}> 245 <template is="dom-if" if={{item.errorsDescription.length}}>
228 <paper-icon-button class="warning" icon="warning"></paper-icon-button> 246 <paper-icon-button class="warning" icon="warning"></paper-icon-button>
229 </template> 247 </template>
  248 + <div class="th_label">{{item.name}}</div>
230 <paper-icon-button id="{{index}}" class="order" on-click="_order" icon="unfold-more"></paper-icon-button> 249 <paper-icon-button id="{{index}}" class="order" on-click="_order" icon="unfold-more"></paper-icon-button>
231 </th> 250 </th>
232 </template> 251 </template>
@@ -340,7 +359,7 @@ @@ -340,7 +359,7 @@
340 359
341 setData : function(data) { 360 setData : function(data) {
342 var converter = new DataTypeConverter(); 361 var converter = new DataTypeConverter();
343 - var result = converter.inferJsonDataType(data, ["*"]); 362 + var result = converter.inferJsonDataType(data, ["*"], { language: ln["localization"] } );
344 result = converter.cast(result); 363 result = converter.cast(result);
345 this.fields = ArrayUtils.toFieldsArray(result.types); 364 this.fields = ArrayUtils.toFieldsArray(result.types);
346 this.data = result.dataset; 365 this.data = result.dataset;
controllets/dataset-table-controllet/dataset-table-controllet.html
@@ -434,7 +434,10 @@ @@ -434,7 +434,10 @@
434 434
435 //2nd loop will extract each column and convert it in string comma-seprated 435 //2nd loop will extract each column and convert it in string comma-seprated
436 for (var index in arrData[i]) { 436 for (var index in arrData[i]) {
437 - row += arrData[i][index] + ','; 437 + if(typeof arrData[i][index] == 'string')
  438 + row += '"' + arrData[i][index].replace('"', '""') + '",';
  439 + else
  440 + row += arrData[i][index] + ',';
438 } 441 }
439 442
440 row.slice(0, row.length - 1); 443 row.slice(0, row.length - 1);
controllets/datasets-list-controllet/datasets-list-controllet.html 0 โ†’ 100644
  1 +<link rel="import" href="../../bower_components/polymer/polymer.html">
  2 +
  3 +<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">
  4 +<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">
  5 +<link rel="import" href="../../bower_components/paper-menu/paper-menu.html">
  6 +<link rel="import" href="../../bower_components/paper-item/paper-item.html">
  7 +<link rel="import" href="../../bower_components/paper-spinner/paper-spinner.html">
  8 +
  9 +<dom-module id="datasets-list-controllet">
  10 + <template>
  11 + <style>
  12 +
  13 + #datasets_list_container {
  14 + height: 100%;
  15 + width: 100%;
  16 + }
  17 +
  18 + #datasets_list_container * {
  19 + font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  20 + font-size: 16px;
  21 + line-height: 24px;
  22 + }
  23 +
  24 + #datasets_list_container #list_info {
  25 + display: flex;
  26 + height: calc(100% - 48px);
  27 + width: 100%;
  28 +
  29 + background: #E0E0E0;
  30 + }
  31 +
  32 + #datasets_list_container #menu {
  33 + background: #E0E0E0;
  34 + }
  35 +
  36 + #datasets_list_container #list_container {
  37 + position: relative;
  38 + height: calc(100% - 28px);
  39 + width: calc(50% - 24px);
  40 + margin-top: 12px;
  41 + padding: 0 12px;
  42 + overflow: hidden;
  43 + background: #E0E0E0;
  44 + }
  45 +
  46 + #datasets_list_container #info_container {
  47 + position: relative;
  48 + height: calc(100% - 32px);
  49 + width: calc(50% - 32px);
  50 + padding: 16px;
  51 + background: #E0E0E0;
  52 + }
  53 +
  54 + #datasets_list_container #info {
  55 + position: relative;
  56 + height: calc(100% - 2px);
  57 + width: calc(100% - 2px);
  58 + border: 1px solid #B6B6B6;
  59 + border-radius: 2px;
  60 + background: #FFFFFF;
  61 + }
  62 +
  63 + #datasets_list_container #footer {
  64 + width: 100%;
  65 + height: 48px;
  66 + background: #B6B6B6;
  67 + display: flex;
  68 + flex-direction: row;
  69 + }
  70 +
  71 + #datasets_list_container .footer_block {
  72 + height: 24px;
  73 + padding: 12px 8px;
  74 + text-align: right;
  75 + }
  76 +
  77 + #datasets_list_container .footer_block:nth-child(1) {
  78 + width: 30%;
  79 + overflow: hidden;
  80 + white-space: nowrap;
  81 + text-overflow: ellipsis;
  82 + }
  83 +
  84 + #datasets_list_container .footer_block:nth-child(2) {
  85 + width: 40%;
  86 + height: 48px;
  87 + padding: 0 8px;
  88 + text-align: center;
  89 + }
  90 +
  91 + #datasets_list_container .footer_block:nth-child(3) {
  92 + width: 30%;
  93 + height: 40px;
  94 + padding: 4px 8px;
  95 + text-align: left;
  96 + }
  97 +
  98 + #datasets_list_container #info_header {
  99 + height: 24px;
  100 + padding: 12px;
  101 + text-align: center;
  102 + font-weight: 700;
  103 + color: #FFFFFF;
  104 + background: #2196F3;
  105 +
  106 + overflow: hidden;
  107 + white-space: nowrap;
  108 + text-overflow: ellipsis;
  109 +
  110 + border-bottom: 1px solid #B6B6B6;
  111 + }
  112 +
  113 + #datasets_list_container #info_body {
  114 + padding: 12px;
  115 + }
  116 +
  117 + #datasets_list_container br {
  118 + display: block;
  119 + margin-top: 8px;
  120 + content: " ";
  121 + }
  122 +
  123 + paper-input {
  124 + max-width: 288px;
  125 + --paper-input-container-focus-color: #2196F3;
  126 + }
  127 +
  128 + paper-menu {
  129 + padding: 0;
  130 + }
  131 +
  132 + paper-item {
  133 + cursor: pointer;
  134 + color: #000000;
  135 + margin: 4px;
  136 + padding: 0 12px;
  137 + border-radius: 2px;
  138 + border: 1px solid #B6B6B6;
  139 +
  140 + background: #FFFFFF;
  141 + }
  142 +
  143 + paper-item span {
  144 + width: 100%;
  145 + overflow: hidden;
  146 + white-space: nowrap;
  147 + text-overflow: ellipsis;
  148 + }
  149 +
  150 + paper-item.iron-selected {
  151 + background: #2196F3 !important;;
  152 + color: #FFFFFF;
  153 + /*font-weight: 700;*/
  154 + }
  155 +
  156 + paper-item:focus:before {
  157 + opacity: 0 !important;
  158 + background: white;
  159 + }
  160 +
  161 + paper-item:focus:after {
  162 + opacity: 0 !important;
  163 + background: white;
  164 + }
  165 +
  166 + paper-item:hover:not(.iron-selected) {
  167 + background: #BBDEFB !important;
  168 + }
  169 +
  170 + paper-icon-button{
  171 + height: 48px;
  172 + width: 48px;
  173 + padding: 0;
  174 + --paper-icon-button-ink-color: #FFFFFF;
  175 + }
  176 +
  177 + paper-icon-button:hover{
  178 + color: #2196F3;
  179 + }
  180 +
  181 + paper-icon-button.clear {
  182 + width: 24px;
  183 + height: 24px;
  184 + padding: 0 4px;
  185 + color: #F44336;
  186 + --paper-icon-button-ink-color: #FFFFFF;
  187 + }
  188 +
  189 + #datasets_list_container #spinner_container {
  190 + height: calc(100% - 49px);
  191 + width: 100%;
  192 + text-align: center;
  193 + display: none;
  194 + }
  195 +
  196 + paper-spinner {
  197 + top: calc(50% - 32px);
  198 + height: 64px;
  199 + width: 64px;
  200 +
  201 + --paper-spinner-stroke-width: 8px;
  202 +
  203 + --paper-spinner-layer-1-color: #2196F3;
  204 + --paper-spinner-layer-2-color: #F44336;;
  205 + --paper-spinner-layer-3-color: #FFEB3B;;
  206 + --paper-spinner-layer-4-color: #4CAF50;;
  207 + }
  208 +
  209 + </style>
  210 +
  211 + <div id="datasets_list_container">
  212 + <div id="list_info">
  213 + <div id="list_container">
  214 + <div id="menu_container">
  215 + <paper-menu id="menu">
  216 + <template is="dom-repeat" items="{{shownDatasets}}">
  217 + <paper-item id={{index}} title="{{item.resource_name}}" on-click="_selectDataset" style$="background: {{_getColorForItem(item)}};"><span>{{_getVersionedResourceName(item)}}</span></paper-item>
  218 + </template>
  219 + </paper-menu>
  220 + </div>
  221 + </div>
  222 + <div id="info_container">
  223 + <div id="info">
  224 + <div id="info_header"><span id="datasets_info"></span></div>
  225 + <div id="info_body"></div>
  226 + <div id="spinner_container">
  227 + <paper-spinner id="spinner"></paper-spinner>
  228 + </div>
  229 + </div>
  230 + </div>
  231 + </div>
  232 +
  233 + <div id="footer">
  234 + <div class="footer_block">
  235 + <span id="showing"></span> {{shownPrev}} <span id="to"></span> {{shownNext}} <span id="of"></span> {{length}} <span id="rows"></span>
  236 + </div>
  237 + <div class="footer_block">
  238 + <paper-icon-button id="slider_chevron_left" class="chevron-left" on-click="_onPrevClick" icon="chevron-left"></paper-icon-button>
  239 + <paper-icon-button id="slider_chevron_right" class="chevron-right" on-click="_onNextClick" icon="chevron-right"></paper-icon-button>
  240 + </div>
  241 + <div class="footer_block">
  242 + <paper-input id="filter" value={{filter}} no-label-float>
  243 + <iron-icon class="search" icon="search" prefix></iron-icon>
  244 + <paper-icon-button class="clear" suffix on-click="_clearInput" icon="clear"></paper-icon-button>
  245 + </paper-input>
  246 + </div>
  247 + </div>
  248 + </div>
  249 +
  250 + </template>
  251 +
  252 + <script>
  253 + HTMLImports.whenReady(function() {
  254 + Polymer({
  255 + is: 'datasets-list-controllet',
  256 +
  257 + properties: {
  258 +
  259 + datasets: {
  260 + type: Object,
  261 + value: undefined
  262 + },
  263 +
  264 + providers: {
  265 + type: Object,
  266 + value: undefined
  267 + },
  268 +
  269 + filter : {
  270 + type : String,
  271 + value : "",
  272 + observer : '_filter'
  273 + }
  274 +
  275 + },
  276 +
  277 +// _loadTreeMap : function(){
  278 +// this.async(function () {
  279 +// var h = $("#list_info").height();
  280 +// var w = $("#list_info").width();
  281 +//
  282 +// var data = JSON.stringify({result : {providers: this.providers, datasets: this.datasets}}).replace(/'/g, "");
  283 +//
  284 +// this.$.list_info.innerHTML = "<datasetexplorer-datalet data='"+data+"' width=\""+w+"\" height=\""+h+"\" fields='[\"provider_name\",\"organization_name\",\"package_name\",\"resource_name\",\"url\",\"w\",\"metas\"]'></datasetexplorer-datalet>";
  285 +// }, 100);
  286 +// },
  287 +//
  288 +// setProviders : function(providers) {
  289 +// this.providers = this._copy(providers);
  290 +// },
  291 +
  292 + ready : function() {
  293 + $(this.$.list_container).perfectScrollbar();
  294 + $(this.$.info).perfectScrollbar();
  295 +
  296 + this.step = 20;
  297 + this.version = true;
  298 + this.selectedItemId = -1;
  299 + },
  300 +
  301 + attached: function() {
  302 + this._translate();
  303 + },
  304 +
  305 + setDatasets : function(datasets) {
  306 + this.datasets = this._copy(datasets);
  307 +
  308 + this.prev = 1;
  309 + this.next = this.step;
  310 + this.length = this.datasets.length;
  311 +
  312 + this.shownPrev = Math.min(this.prev, this.length);
  313 + this.shownNext = Math.min(this.next, this.length);
  314 + this.shownDatasets = this.datasets.slice(this.prev-1, this.next);
  315 +
  316 + this._filter();
  317 + },
  318 +
  319 + showDatasetInfo : function() {
  320 + this.$.spinner_container.style.display = "none";
  321 + this.$.info_body.style.display = "block";
  322 + this.$.spinner.active = false;
  323 + },
  324 +
  325 + showVersion : function(flag) {
  326 + this.version = flag;
  327 + },
  328 +
  329 + _loadDatasetInfo : function() {
  330 + $(this.$.info).animate({ scrollTop: 0}, 0);
  331 + this.$.info_body.style.display = "none";
  332 + this.$.spinner_container.style.display = "block";
  333 + this.$.spinner.active = true;
  334 + },
  335 +
  336 + _onPrevClick : function(){
  337 + if(this.prev != 1) {
  338 + this.prev -= this.step;
  339 + this.next -= this.step;
  340 +
  341 + this.shownPrev = Math.min(this.prev, this.length);
  342 + this.shownNext = Math.min(this.next, this.length);
  343 + this.shownDatasets = this.datasets.slice(this.prev - 1, this.next);
  344 + }
  345 + $(this.$.list_container).animate({ scrollTop: 0}, 0);
  346 + this.$.menu.selected = -1;
  347 + },
  348 +
  349 + _onNextClick : function(){
  350 + if(this.next < this.length) {
  351 + this.prev += this.step;
  352 + this.next += this.step;
  353 +
  354 + this.shownPrev = Math.min(this.prev, this.length);
  355 + this.shownNext = Math.min(this.next, this.length);
  356 + this.shownDatasets = this.datasets.slice(this.prev - 1, this.next);
  357 + }
  358 + $(this.$.list_container).animate({ scrollTop: 0}, 0);
  359 + this.$.menu.selected = -1;
  360 + },
  361 +
  362 + _filter : function() {
  363 + this.debounce('_filter', function () {
  364 + if(this.datasets && this.datasets.length) {
  365 + var filter = this.filter.toLowerCase();
  366 +
  367 + if(filter == "")
  368 + this.shownDatasets = this.datasets;
  369 + else
  370 + this.shownDatasets = this.datasets.filter(function (el) {
  371 + return (el.resource_name.toLowerCase().indexOf(filter) > -1);
  372 + });
  373 +
  374 + this.prev = 1;
  375 + this.next = this.step;
  376 + this.length = this.shownDatasets.length;
  377 +
  378 + this.shownPrev = Math.min(this.prev, this.length);
  379 + this.shownNext = Math.min(this.next, this.length);
  380 + this.shownDatasets = this.shownDatasets.slice(this.prev - 1, this.next);
  381 +
  382 + $(this.$.list_container).animate({ scrollTop: 0}, 0);
  383 + this.$.menu.selected = -1;
  384 + }
  385 + }, 0);
  386 + },
  387 +
  388 + _clearInput : function() {
  389 + this.$.filter.value = "";
  390 + },
  391 +
  392 + _translate : function(){
  393 + this.$.datasets_info.innerHTML = ln["datasetsInfo_" + ln["localization"]];
  394 +
  395 + this.$.showing.innerHTML = ln["showing_" + ln["localization"]];
  396 + this.$.to.innerHTML = ln["to_" + ln["localization"]];
  397 + this.$.of.innerHTML = ln["of_" + ln["localization"]];
  398 +
  399 + this.$.filter.setAttribute("label", ln["search_" + ln["localization"]]);
  400 + },
  401 +
  402 + _selectDataset : function(){
  403 + var id = this.$.menu.selectedItem.id;
  404 + if(id == this.selectedItemId)
  405 + return;
  406 +
  407 + this.selectedItemId = id;
  408 +
  409 + this._loadDatasetInfo();
  410 +
  411 + var dataset = this.shownDatasets[id];
  412 +
  413 + var html = '';
  414 +
  415 + var users = dataset.users;
  416 + var metas = JSON.parse(dataset.metas);
  417 +
  418 + if(users) {
  419 + html += '<b>users:</b><div class="user_icons" style="display: flex; flex-direction: row;">';
  420 + for(var j in users) {
  421 + html += '<a href="' + users[j].href + '">';
  422 + html += '<div class="user_icon" style="background-image: url(' + users[j].src + '); background-size: 40px 40px; height:40px; width:40px; border-radius: 50%; cursor: pointer; margin-right: 12px;" title="' + users[j].user + '"></div>';
  423 + html += '</a>';
  424 +
  425 + }
  426 + html += '</div>';
  427 + html += '<b> version:</b> ' + dataset.version + '<br>';
  428 + }
  429 +
  430 + for(var i in metas)
  431 + html += '<b>' + i + ':</b> ' + metas[i] + '<br>';
  432 +
  433 +// this.$.info_header.innerHTML = this._getVersionedResourceName(dataset);
  434 + this.$.info_header.innerHTML = dataset.resource_name;
  435 + this.$.info_body.innerHTML = html;
  436 +
  437 + this.fire("datasets-list-controllet_dataset", { dataset: dataset });
  438 + },
  439 +
  440 + _getVersionedResourceName : function(dataset){
  441 + if(this.version && dataset.version)
  442 +// return dataset.resource_name + ' [' + ln["Version_" + ln["localization"]] + ' ' + dataset.version + ']';
  443 + return dataset.resource_name + ' [VER ' + dataset.version + ']';
  444 + return dataset.resource_name;
  445 + },
  446 +
  447 + _getColorForItem : function(item) {
  448 + if(!item.provider_name)
  449 + return "#FFEB3B";
  450 + },
  451 +
  452 + _copy : function(o) {
  453 + var out, v, key;
  454 + out = Array.isArray(o) ? new Array(o.length) : {};
  455 + for (key in o) {
  456 + v = o[key];
  457 + out[key] = (typeof v === "object") ? this._copy(v) : v;
  458 + }
  459 + return out;
  460 + }
  461 +
  462 + });
  463 + });
  464 + </script>
  465 +</dom-module>
0 \ No newline at end of file 466 \ No newline at end of file
controllets/datasets-list-controllet/demo/index.html 0 โ†’ 100644
  1 +<html>
  2 +
  3 +<head>
  4 + <script src="../../shared_js/jquery-1.11.2.min.js"></script>
  5 +
  6 + <script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
  7 +
  8 + <script src="../../shared_js/perfect-scrollbar/js/min/perfect-scrollbar.jquery.min.js"></script>
  9 + <link rel="stylesheet" href="../../shared_js/perfect-scrollbar/css/perfect-scrollbar.min.css">
  10 +
  11 + <script src="../../../locales/controllet_ln.js"></script>
  12 + <script>
  13 + ln["localization"] = "en";
  14 + </script>
  15 +
  16 + <link rel="import" href="../datasets-list-controllet.html" />
  17 +</head>
  18 +
  19 +<body>
  20 +
  21 +<style>
  22 +
  23 + .container {
  24 + width: 1200px;
  25 + height: 600px;
  26 + position: relative;
  27 + top: 96px;
  28 + left: calc((100% - 1200px) / 2);
  29 + }
  30 +
  31 +</style>
  32 +
  33 +<div class="container">
  34 + <datasets-list-controllet datasets='{"result":{"providers":{"1":{"title":"CKAN","api_url":"http:\/\/ckan.routetopa.eu","image_hash":"11","id":"1"}},"datasets":[{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"}]}}'></datasets-list-controllet>
  35 +
  36 + <!--<select-dataset-controllet id="ds" datasets="we"></select-dataset-controllet>-->
  37 +
  38 + <!--<select-dataset-controllet id="ds" datasets='{"result":{"providers":{"1":{"title":"CKAN","api_url":"http:\/\/ckan.routetopa.eu","image_hash":"11","id":"1"}},"datasets":[{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 2","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b056c5e6-76af-4526-a35d-7dee664fb6ee\/download\/isislab.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/818c2edb-0cb7-4288-b340-e4dd1933d817\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) ROUTE-TO-PA Dissemination - dl","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/fd8c4d6f-315d-4aa0-b7bd-4fdde7bf641b\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","resource_name":"First year (2015) dissemination of ROUTE-TO-PA project","url":"http:\/\/ckan.routetopa.eu\/dataset\/d81d451d-8b3d-47f4-b57f-e295e8f51da0\/resource\/b0ef6017-8c64-4e11-8046-7e51a8561856\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link-Upd.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"test dissemination with link","resource_name":"Year 1 Dissemination of the ROUTE-TO-PA project (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/ba5054af-7561-4f99-9504-76ea004a1e85\/resource\/4cc2349d-bf7b-4bbe-a7ca-db5312bb6c94\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New-&#45;&#45;Link.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"ROUTE-TO-PA","package_name":"Dissemination activity of the first year","resource_name":"Dissemination activity of the first year (2015)","url":"http:\/\/ckan.routetopa.eu\/dataset\/61f07087-210a-4c35-9606-2aafe183633b\/resource\/5f9d8d8b-1c41-45f7-9dbb-61b9a7bcd076\/download\/ROUTE-TO-PA-Individual-Dissemination-Activity-Report-Form-Responses-New.csv","metas":"{\"organization\":\"ROUTE-TO-PA\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"},{"w":1,"provider_name":"p:1","organization_name":"City of the Hague Municipality","package_name":"Test 3- Buurten","resource_name":"Test Buurten - 3","url":"http:\/\/ckan.routetopa.eu\/dataset\/1248d447-2901-4beb-91ae-c2f249fd8a99\/resource\/1fdbc765-8945-4271-8dce-9c7eba45a67d\/download\/Test-3-Compare.csv","metas":"{\"organization\":\"City of the Hague Municipality\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"}]}}'-->
  39 + <!--suggested-datasets='[{"resource_name":"SUGGESTED 1","url":"noUrl.csv","metas":"{\"description\":\"noDescriione\"}"},{"resource_name":"SUGGESTED 2","url":"noUrl.csv","metas":"{\"description\":\"noDescriione\"}"},{"resource_name":"SUGGESTED 3","url":"noUrl.csv","metas":"{\"description\":\"noDescriione\"}"}]'-->
  40 + <!--<select-dataset-controllet id="ds" datasets='{"result":{"providers":{"1":{"title":"CKAN","api_url":"http:\/\/ckan.routetopa.eu","image_hash":"11","id":"1"}},"datasets":[{"w":1,"provider_name":"p:1","organization_name":"Dublin","package_name":"isislab DATA","resource_name":"Resource 1","url":"http:\/\/ckan.routetopa.eu\/dataset\/566c2867-ea89-45a2-bd7a-30ae82606007\/resource\/b3d3d9ff-291e-47ca-a0d2-a15deef81737\/download\/isislab2.csv","metas":"{\"organization\":\"Dublin\",\"description\":\"\",\"format\":\"\",\"last_modified\":\"\",\"name\":\"\",\"created\":\"\"}"}]}}'></select-dataset-controllet>-->
  41 +</div>
  42 +
  43 +<script>
  44 + var description = "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa "+
  45 + " aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa "+
  46 + " aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa "+
  47 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  48 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  49 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  50 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  51 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  52 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  53 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  54 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  55 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  56 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  57 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  58 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  59 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa"+
  60 + "aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaa";
  61 +
  62 + var dataset1 = {description: description, name: "Data", url: "http://ckan.routetopa.eu/api/action/datastore_search?resource_id=c3b52992-ba61-4a73-a637-0f2e1ca26aab"};
  63 + var dataset2 = {description: "", name: "Klassen", url: "http://ckan.routetopa.eu/api/action/datastore_search?resource_id=dfd27de5-0790-466c-af59-6a82509e7fbb"};
  64 + var dataset3 = {description: "descrizione bellissima purissima levissima sbiricuda antani", name: "Derelict Sites", url: "http://ckan.routetopa.eu/api/action/datastore_search?resource_id=fcbee83e-3d3d-4303-a568-24dd33d02adc"};
  65 + var datasets = [dataset1, dataset2, dataset3];
  66 + var datasets = [dataset1, dataset2, dataset3, dataset1, dataset2, dataset3, dataset1, dataset2, dataset3, dataset1, dataset2, dataset3, dataset1, dataset2, dataset3];
  67 +
  68 + // var ds = document.getElementById('ds');
  69 + // ds.setAttribute("items", JSON.stringify(datasets));
  70 + // ds.setAttribute("items", a);
  71 +
  72 +</script>
  73 +
  74 +</body>
  75 +
  76 +</html>
controllets/select-dataset-controllet/select-dataset-controllet.html
1 <link rel="import" href="../../bower_components/polymer/polymer.html"> 1 <link rel="import" href="../../bower_components/polymer/polymer.html">
2 2
  3 +<link rel="import" href="../../bower_components/paper-material/paper-material.html" />
3 <link rel="import" href="../../bower_components/paper-tabs/paper-tabs.html"> 4 <link rel="import" href="../../bower_components/paper-tabs/paper-tabs.html">
4 <link rel="import" href="../../bower_components/paper-tabs/paper-tab.html"> 5 <link rel="import" href="../../bower_components/paper-tabs/paper-tab.html">
5 -  
6 -<link rel="import" href="../../bower_components/neon-animation/neon-animation.html">  
7 -<link rel="import" href="../../bower_components/neon-animation/neon-animatable.html">  
8 -<link rel="import" href="../../bower_components/neon-animation/neon-animations.html">  
9 -  
10 -<link rel="import" href="../../bower_components/iron-flex-layout/iron-flex-layout.html">  
11 -<!--<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">-->  
12 -<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">  
13 -<link rel="import" href="../../bower_components/paper-styles/color.html">  
14 -<link rel="import" href="../../bower_components/paper-styles/typography.html">  
15 -<link rel="import" href="../../bower_components/iron-ajax/iron-ajax.html">  
16 -<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">  
17 -<link rel="import" href="../../bower_components/iron-image/iron-image.html">  
18 -<link rel="import" href="../../bower_components/iron-list/iron-list.html">  
19 -  
20 <link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html"> 6 <link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">
21 <link rel="import" href="../../bower_components/paper-menu/paper-menu.html"> 7 <link rel="import" href="../../bower_components/paper-menu/paper-menu.html">
22 <link rel="import" href="../../bower_components/paper-item/paper-item.html"> 8 <link rel="import" href="../../bower_components/paper-item/paper-item.html">
  9 +<link rel="import" href="../../bower_components/iron-ajax/iron-ajax.html">
  10 +<link rel="import" href="../../bower_components/paper-tooltip/paper-tooltip.html">
23 11
24 -<link rel="import" href="../../bower_components/paper-input/paper-input.html">  
25 -  
26 -<link rel="import" href="../../bower_components/paper-input/paper-textarea.html">  
27 -  
28 -<link rel="import" href="../../bower_components/paper-material/paper-material.html" />  
29 -  
30 -<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">  
31 -<link rel="import" href="../../bower_components/iron-icons/hardware-icons.html">  
32 -<!--<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">-->  
33 -  
34 -<link rel="import" href="../../bower_components/paper-checkbox/paper-checkbox.html">  
35 -  
36 -<link rel="import" href="../providers-utility-controllet/providers-utility-controllet.html">  
37 -<link rel="import" href="ortelio-controllet.html">  
38 -<link rel="import" href="../../datalets/datasetexplorer-datalet/datasetexplorer-datalet.html"> 12 +<link rel="import" href="../datasets-list-controllet/datasets-list-controllet.html">
39 13
40 <dom-module id="select-dataset-controllet"> 14 <dom-module id="select-dataset-controllet">
41 <template> 15 <template>
42 <style> 16 <style>
43 - :host {  
44 - --paper-dropdown-menu-icon: {  
45 - color: #000000;  
46 - };  
47 - --paper-dropdown-menu-ripple: {  
48 - color: #FFFFFF;  
49 - };  
50 - /*--paper-tab-ink: {*/  
51 - /*color: #FFFFFF;*/  
52 - /*};*/  
53 - }  
54 -  
55 - iron-list {  
56 - --iron-list-items-container: {  
57 - margin:16px 16px 8px 16px;  
58 - };  
59 - }  
60 17
61 - paper-textarea {  
62 - width: 100%;  
63 - --paper-input-container-focus-color: #2196F3;  
64 - }  
65 -  
66 - paper-input {  
67 - --paper-input-container-focus-color: #2196F3;  
68 - }  
69 - paper-dropdown-menu {  
70 - width: 100%;  
71 - --paper-input-container-focus-color: #2196F3; 18 + #select_dataset_container {
  19 + margin-top: 8px;
72 } 20 }
73 21
74 - paper-item.iron-selected {  
75 - background-color: #2196F3;  
76 - color: #FFFFFF; 22 + #select_dataset_container * {
  23 + font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  24 + font-size: 16px;
  25 + line-height: 24px;
77 } 26 }
78 27
79 - paper-checkbox {  
80 - height: 24px;  
81 - /*margin-top: 8px*/  
82 - --paper-checkbox-checked-color: #2196F3;  
83 - --paper-checkbox-checked-ink-color: #FFFFFF;  
84 - --paper-checkbox-unchecked-color: #000000;  
85 - --paper-checkbox-unchecked-ink-color: #FFFFFF;  
86 - --paper-checkbox-label-color: #000000;  
87 - } 28 + #select_dataset_container #options {
  29 + display: flex;
  30 + flex-direction: row;
88 31
89 - paper-icon-button{  
90 height: 48px; 32 height: 48px;
91 - width: 48px;  
92 - padding: 0px;  
93 - --paper-icon-button-ink-color: #FFFFFF;  
94 - }  
95 -  
96 - paper-icon-button:hover{  
97 - color: #2196F3;  
98 - }  
99 -  
100 - paper-icon-button[disabled]{  
101 - color: #B6B6B6;  
102 - } 33 + padding: 0;
  34 + font-weight: 700;
  35 + background: #B6B6B6;
103 36
104 - paper-icon-button.clear {  
105 - width: 24px;  
106 - height: 24px;  
107 - padding: 0px 4px;  
108 - color: #F44336;  
109 - --paper-icon-button-ink-color: #FFFFFF;  
110 - } 37 + margin-top: 2px;
111 38
112 - paper-tabs {  
113 - font-weight: bold; 39 + overflow: hidden;
114 } 40 }
115 41
116 - paper-tab {  
117 - transition: all 1.0s;  
118 - }  
119 -  
120 - paper-tab.iron-selected {  
121 - background-color: #2196F3;  
122 - color: #FFFFFF;  
123 - }  
124 -  
125 - paper-tab:not(.iron-selected):hover {  
126 - color: #2196F3; 42 + #select_dataset_container #options_header {
  43 + width: calc(100% - 96px);
  44 + text-align: center;
  45 + padding: 12px 0 12px 48px;
127 } 46 }
128 47
129 - .item {  
130 - /*@apply(--layout-horizontal);*/  
131 - display: flex;  
132 - padding: 11px;  
133 - border: 1px solid #B6B6B6;  
134 - border-radius: 4px;  
135 - cursor: pointer;  
136 - margin-bottom: 8px;  
137 - background-color: #E0E0E0;  
138 - } 48 + #select_dataset_container .header_block {
  49 + width: calc((100% - 48px) / 2);
  50 + max-width: 400px;
  51 + margin-left: 12px;
139 52
140 - .item.expanded {  
141 - /*border: 2px solid #2196F3;*/  
142 - border-color: #2196F3;  
143 - } 53 + line-height: 40px;
144 54
145 - .pad {  
146 - @apply(--layout-flex);  
147 - /*@apply(--layout-vertical);*/ 55 + display: none;
148 } 56 }
149 57
150 - .primary {  
151 - font-weight: bold;  
152 - } 58 + #select_dataset_container #url {
  59 + padding: 0 12px 12px 12px;
  60 + height: 60px;
153 61
154 - .item.expanded .primary {  
155 - color: #2196F3; 62 + border: 2px solid #B6B6B6;
  63 + border-top: 0;
156 } 64 }
157 65
158 - .longText {  
159 - display: none; 66 + #select_dataset_container #datasets_list_container {
  67 + height: calc(100% - 96px - 2px - 74px);
  68 + width: 100%;
160 } 69 }
161 70
162 - .item.expanded .longText {  
163 - display: block; 71 + paper-tabs {
  72 + background: #B6B6B6;
164 } 73 }
165 74
166 - #select_dataset_container {  
167 - margin-top: 8px; 75 + paper-tab {
  76 + font-weight: 700;
  77 + border-right: 2px solid #FFFFFF;
168 } 78 }
169 79
170 - #select_dataset_container * {  
171 - font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;  
172 - font-size: 16px;  
173 - line-height: 24px; 80 + paper-tab:nth-child(2) {
  81 + border-right: 0;
174 } 82 }
175 83
176 - #select_dataset_container #neon_container {  
177 - height: calc(100% - 172px);  
178 - width: calc(100% - 8px); 84 + paper-tab.iron-selected {
  85 + color: #FFFFFF;
  86 + background: #2196F3;;
179 } 87 }
180 88
181 - #select_dataset_container #list_info {  
182 - display: flex;  
183 - height: calc(100% - 48px);  
184 - width: calc(100% + 8px);/*bad*/ 89 + paper-tab:not(.iron-selected):hover {
  90 + color: #2196F3;
185 } 91 }
186 92
187 - #select_dataset_container #list_container {  
188 - position: relative;  
189 - height: 100%;  
190 - width: 50%;  
191 - border-left: 4px solid #B6B6B6; 93 + paper-input {
  94 + --paper-input-container-focus-color: #2196F3;
192 } 95 }
193 96
194 - #select_dataset_container #info_container {  
195 - position: relative;  
196 - height: 100%;  
197 - width: 50%;  
198 - border-right: 4px solid #B6B6B6; 97 + paper-icon-button {
  98 + height: 48px;
  99 + width: 48px;
  100 + padding: 8px;
199 } 101 }
200 102
201 - #select_dataset_container #info {  
202 - position: relative;  
203 - height: calc(100% - 56px);  
204 - width: calc(100% - 56px);  
205 - padding: 11px;  
206 - border: 1px solid #B6B6B6;  
207 - border-radius: 4px;  
208 - background-color: #E0E0E0;  
209 - margin: 16px;  
210 - } 103 + paper-icon-button[icon="settings"] {
  104 + cursor: pointer;
  105 + color: #00BCD4;
  106 + --paper-icon-button-ink-color: #00BCD4;
211 107
212 - #select_dataset_container #treemap_container {  
213 - /*height: calc(100% - 244px);*/  
214 - /*width: calc(100% - 8px);*/  
215 - height: calc(100% - 48px);  
216 - width: 100%;  
217 - border: 4px solid #B6B6B6;  
218 - border-top: 0px;  
219 - border-bottom: 0px;  
220 - position: relative; 108 + background: #E0E0E0;
  109 + float: right;
  110 + position: absolute;
  111 + right: 0;
221 } 112 }
222 113
223 - #select_dataset_container #header {  
224 - position: relative;  
225 - z-index: 1;  
226 - -webkit-box-shadow: 0 30px 24px -12px rgba(0, 0, 0, 0.14), 0 20px 30px -9px rgba(0, 0, 0, 0.12), 0 20px 10px -19px rgba(0, 0, 0, 0.4);  
227 - -moz-box-shadow: 0 30px 24px -12px rgba(0, 0, 0, 0.14), 0 20px 30px -9px rgba(0, 0, 0, 0.12), 0 20px 10px -19px rgba(0, 0, 0, 0.4);  
228 - box-shadow: 0 30px 24px -12px rgba(0, 0, 0, 0.14), 0 20px 30px -9px rgba(0, 0, 0, 0.12), 0 20px 10px -19px rgba(0, 0, 0, 0.4);  
229 -  
230 - background-color: #B6B6B6;  
231 - display: flex;  
232 - padding: 0px 4px; 114 + paper-icon-button[icon="info-outline"] {
  115 + cursor: help;
233 } 116 }
234 117
235 - #select_dataset_container #footer_list {  
236 - position: relative;  
237 - z-index: 1;  
238 - -webkit-box-shadow: 0 -30px 24px -12px rgba(0, 0, 0, 0.14), 0 -20px 30px -9px rgba(0, 0, 0, 0.12), 0 -20px 10px -19px rgba(0, 0, 0, 0.4);  
239 - -moz-box-shadow: 0 -30px 24px -12px rgba(0, 0, 0, 0.14), 0 -20px 30px -9px rgba(0, 0, 0, 0.12), 0 -20px 10px -19px rgba(0, 0, 0, 0.4);  
240 - box-shadow: 0 -30px 24px -12px rgba(0, 0, 0, 0.14), 0 -20px 30px -9px rgba(0, 0, 0, 0.12), 0 -20px 10px -19px rgba(0, 0, 0, 0.4); 118 + :host {
  119 + --paper-dropdown-menu-icon: {
  120 + color: #000000;
  121 + };
  122 + --paper-dropdown-menu-ripple: {
  123 + color: #FFFFFF;
  124 + };
241 } 125 }
242 126
243 - .noshadow {  
244 - -webkit-box-shadow: none !important;  
245 - -moz-box-shadow: none !important;  
246 - box-shadow: none !important; 127 + paper-dropdown-menu {
  128 + width: 200px;
  129 + --paper-input-container-focus-color: #2196F3;
247 } 130 }
248 131
249 - #select_dataset_container #footer_list,  
250 - #select_dataset_container #footer_treemap {  
251 - width: 100%;  
252 - background-color: #B6B6B6;  
253 - display: flex;  
254 - padding: 0px 4px; 132 + paper-item {
  133 + min-width: 128px;
  134 + white-space: nowrap;
255 } 135 }
256 136
257 - #select_dataset_container #url {  
258 - height: 76px;/*100*/  
259 - border: 4px solid #B6B6B6;  
260 - border-top: 0px;  
261 - padding: 0px 16px;  
262 - margin-top: -4px; 137 + paper-item.iron-selected {
  138 + background-color: #2196F3;
  139 + color: #FFFFFF;
263 } 140 }
264 141
265 - #header .header_block {  
266 - width: 20%;  
267 - height: 40px;  
268 - padding: 4px 16px 4px 16px; 142 + paper-tooltip {
  143 + min-width: 400px;
  144 + --paper-tooltip-background: black;
269 } 145 }
270 146
271 - /*.header_block:nth-child(2), .header_block:nth-child(3), .header_block:nth-child(3), .header_block:nth-child(4){*/  
272 - /*visibility: hidden;*/  
273 - /*}*/  
274 -  
275 - #header .header_block:nth-child(4) {  
276 - text-align: center; 147 + #select_dataset_container br {
  148 + display: block;
  149 + margin-top: 8px;
  150 + content: " ";
277 } 151 }
278 152
279 - .footer_block {  
280 - width: calc((100% - 0px) / 3);  
281 - height: 24px;  
282 - padding: 12px 8px 12px 8px;  
283 - text-align: center; 153 + #select_dataset_container p {
  154 + margin: 0;
  155 + padding: 0;
284 } 156 }
285 157
286 - .footer_block:nth-child(2) {  
287 - height: 48px;  
288 - padding: 0px 8px; 158 + #select_dataset_container p .option {
  159 + color: #2196F3;;
  160 + font-weight: 700;
289 } 161 }
290 162
291 - #suggested_div {  
292 - visibility: hidden; 163 + #select_dataset_container p .description {
293 } 164 }
294 165
295 - /*.info_resource_name {*/  
296 - /*color: #2196F3;*/  
297 - /*font-weight: bold;*/  
298 - /*line-height: 48px;*/  
299 - /*}*/  
300 -  
301 - /*#ortelio {*/  
302 - /*/!*height: calc(100% - 172px);*!/*/  
303 - /*/!*width: calc(100% - 8px);*!/*/  
304 - /*height: 100%;*/  
305 - /*width: 100%;*/  
306 - /*background-color: red;*/  
307 - /*}*/  
308 </style> 166 </style>
309 167
310 <paper-material id="select_dataset_container" elevation="5"> 168 <paper-material id="select_dataset_container" elevation="5">
311 -  
312 - <paper-tabs selected="{{selected}}" no-bar>  
313 - <paper-tab on-tap="_refreshList" noink><span id="listView"></span></paper-tab>  
314 - <paper-tab on-tap="_noShadow" noink><span id="treeMapView"></span></paper-tab>  
315 - <paper-tab on-tap="_hideSearch" noink><span id="extendedSearch"></span></paper-tab> 169 + <paper-tabs selected={{tabIndex}} no-bar>
  170 + <paper-tab noink on-tap="_setProvidersDatasets"><span id="providers_datasets"></span></paper-tab>
  171 + <paper-tab noink on-tap="_setLocalDatasets"><span id="spod_users_datasets"></span></paper-tab>
316 </paper-tabs> 172 </paper-tabs>
317 173
318 - <div id="header">  
319 - <div class="header_block"> 174 + <div id="options">
  175 +
  176 + <div id="options_header"></div>
  177 +
  178 + <div id="provider_option" class="header_block">
  179 + {{_getLocalization('provider')}}:&nbsp;
320 <paper-dropdown-menu id="ddl_provider" label="" no-label-float> 180 <paper-dropdown-menu id="ddl_provider" label="" no-label-float>
321 - <paper-menu class="dropdown-content" selected="0">  
322 - <paper-item id="0" on-tap="_filter"></paper-item>  
323 - <template is="dom-repeat" items={{_toArray(providers)}} as="provider">  
324 - <!--<paper-item id={{provider.value.id}} style$="background: {{_getProviderColor(provider.value.id)}};">{{provider.value.title}}</paper-item>-->  
325 - <paper-item id={{provider.value.id}} on-tap="_filter">{{provider.value.title}}</paper-item> 181 + <paper-menu id="menu_provider" class="dropdown-content">
  182 + <paper-item id="0" on-tap="_setProvidersDatasets"><span id="all"></span></paper-item>
  183 + <template is="dom-repeat" items={{_toArray(providers)}}>
  184 + <paper-item id={{item.value.id}} on-tap="_setProvidersDatasets">{{item.value.title}}</paper-item>
326 </template> 185 </template>
327 </paper-menu> 186 </paper-menu>
328 </paper-dropdown-menu> 187 </paper-dropdown-menu>
  188 + <paper-icon-button id="info_provider" icon="info-outline" noink></paper-icon-button>
  189 + <paper-tooltip id="tooltip_provider" for="info_provider" offset="8">
  190 + <p>
  191 + <span class="option">{{_getLocalization('all')}}</span><br>
  192 + <span class="description">{{_getLocalization('allDescription')}}</span><br>
  193 + <span class="option">{{_getLocalization('providerName')}}</span><br>
  194 + <span class="description">{{_getLocalization('providerNameDescription')}}</span><br>
  195 + </p>
  196 + </paper-tooltip>
329 </div> 197 </div>
330 - <div class="header_block">  
331 - </div>  
332 - <div class="header_block">  
333 - </div>  
334 - <div class="header_block"> 198 +
  199 + <!--<div id="view_option" class="header_block">-->
  200 + <!--{{_getLocalization('view')}}:&nbsp;-->
  201 + <!--<paper-dropdown-menu id="ddl_view" label="" no-label-float>-->
  202 + <!--<paper-menu id="menu_view" class="dropdown-content">-->
  203 + <!--<paper-item id="0" on-tap=""><span id="list"></span></paper-item>-->
  204 + <!--<paper-item id="1" on-tap="" disabled><span id="tree"></span></paper-item>-->
  205 + <!--</paper-menu>-->
  206 + <!--</paper-dropdown-menu>-->
  207 + <!--<paper-icon-button id="info_view" icon="info-outline" noink></paper-icon-button>-->
  208 + <!--<paper-tooltip id="tooltip_view" for="info_view" offset="8">-->
  209 + <!--<p>-->
  210 + <!--<span class="option">{{_getLocalization('list')}}</span><br>-->
  211 + <!--<span class="description">{{_getLocalization('listDescription')}}</span><br>-->
  212 + <!--<span class="option">{{_getLocalization('tree')}}</span><br>-->
  213 + <!--<span class="description">{{_getLocalization('treeDescription')}}</span><br>-->
  214 + <!--</p>-->
  215 + <!--</paper-tooltip>-->
  216 + <!--</div>-->
  217 +
  218 + <div id="search_option" class="header_block">
  219 + {{_getLocalization('search')}}:&nbsp;
  220 + <paper-dropdown-menu id="ddl_search" label="" no-label-float>
  221 + <paper-menu id="menu_search" class="dropdown-content">
  222 + <paper-item><span id="standard"></span></paper-item>
  223 + <paper-item disabled><span id="extended"></span></paper-item>
  224 + </paper-menu>
  225 + </paper-dropdown-menu>
  226 + <paper-icon-button id="info_search" icon="info-outline" noink></paper-icon-button>
  227 + <paper-tooltip id="tooltip_search" for="info_search" offset="8">
  228 + <p>
  229 + <span class="option">{{_getLocalization('standard')}}</span><br>
  230 + <span class="description">{{_getLocalization('standardDescription')}}</span><br>
  231 + <span class="option">{{_getLocalization('extended')}}</span><br>
  232 + <span class="description">{{_getLocalization('extendedDescription')}}</span><br>
  233 + </p>
  234 + </paper-tooltip>
335 </div> 235 </div>
336 - <div class="header_block">  
337 - <paper-input id="datasets_filter" value={{filter}} no-label-float label="">  
338 - <iron-icon class="search" icon="search" prefix></iron-icon>  
339 - <paper-icon-button class="clear" suffix on-click="_clearInput" icon="clear" tabindex="0"></paper-icon-button>  
340 - </paper-input> 236 +
  237 + <div id="version_option" class="header_block">
  238 + {{_getLocalization('version')}}:&nbsp;
  239 + <paper-dropdown-menu id="ddl_version" label="" no-label-float>
  240 + <paper-menu id="menu_version" class="dropdown-content">
  241 + <paper-item id="0" on-tap="_showLast"><span id="show_last"></span></paper-item>
  242 + <paper-item id="1" on-tap="_showAll"><span id="show_all"></span></paper-item>
  243 + </paper-menu>
  244 + </paper-dropdown-menu>
  245 + <paper-icon-button id="tooltip_version" icon="info-outline" noink></paper-icon-button>
  246 + <paper-tooltip id="tooltip_version" for="tooltip_version" offset="8">
  247 + <p>
  248 + <span class="option">{{_getLocalization('showLast')}}</span><br>
  249 + <span class="description">{{_getLocalization('showLastDescription')}}</span><br>
  250 + <span class="option">{{_getLocalization('showAll')}}</span><br>
  251 + <span class="description">{{_getLocalization('showAllDescription')}}</span><br>
  252 + </p>
  253 + </paper-tooltip>
341 </div> 254 </div>
  255 +
  256 + <paper-icon-button icon="settings" on-click="_optionsMenu"></paper-icon-button>
  257 +
342 </div> 258 </div>
343 259
344 - <neon-animated-pages id="neon_container" selected="{{selected}}" entry-animation="fade-in-animation" exit-animation="fade-out-animation">  
345 -  
346 - <neon-animatable>  
347 - <div id="list_info">  
348 - <div id="list_container">  
349 - <iron-list id="list" items="{{shownDatasets}}" selection-enabled>  
350 - <template>  
351 - <div>  
352 - <div class$="{{getClassForItem(selected)}}" on-tap="_selectDataUrl" style$="background: {{_getColorForItem(item)}};">  
353 - <span style="display:none;">{{item.url}}</span>  
354 - <div class="pad">  
355 - <div class="primary">{{item.resource_name}}</div>  
356 - <!--<div class="longText">-->  
357 - <!--<template is="dom-repeat" items="{{_stringToArray(item.metas)}}" as="mata">-->  
358 - <!--<b>{{mata.name}}:</b>-->  
359 - <!--<span inner-h-t-m-l="{{mata.value}}"></span> <br>-->  
360 - <!--</template>-->  
361 - <!--</div>-->  
362 - </div>  
363 - <iron-icon icon$="{{_getIconForItem(item)}}" style$="color: {{_getColorForIcon(item)}};"></iron-icon>  
364 - </div>  
365 - </div>  
366 - </template>  
367 - </iron-list>  
368 - </div>  
369 - <div id="info_container">  
370 - <div id="info">  
371 - </div>  
372 - </div>  
373 - </div>  
374 -  
375 - <div id="footer_list">  
376 - <div class="footer_block"><span id="showing"></span> {{shownPrev}} <span id="to"></span> {{shownNext}} <span id="of"></span> {{length}} <span id="datasets"></span></div>  
377 - <div class="footer_block">  
378 - <paper-icon-button id="slider_chevron_left" class="chevron-left" on-click="_onPrevClick" icon="chevron-left"></paper-icon-button>  
379 - <paper-icon-button id="slider_chevron_right" class="chevron-right" on-click="_onNextClick" icon="chevron-right"></paper-icon-button>  
380 - </div>  
381 - <div id="suggested_div" class="footer_block">  
382 - <!--<template is="dom-if" if={{suggestedDatasets}}>-->  
383 - <paper-checkbox checked on-change="showSuggested"><span id="suggested_datasets"></span></paper-checkbox>  
384 - <!--</template>-->  
385 - </div>  
386 - </div>  
387 - </neon-animatable>  
388 -  
389 - <neon-animatable>  
390 - <div id="treemap_container"></div>  
391 -  
392 - <div id="footer_treemap">  
393 - <div class="footer_block"><span id="showing2"></span> {{tLength}} <span id="datasets2"></span></div>  
394 - <div class="footer_block"></div>  
395 - <div class="footer_block"></div>  
396 - </div>  
397 - </neon-animatable>  
398 -  
399 - <neon-animatable>  
400 - <!--<div id="ortelio">-->  
401 - <ortelio-controllet datasets={{datasets}}></ortelio-controllet>  
402 - <!--</div>-->  
403 - </neon-animatable>  
404 -  
405 - </neon-animated-pages>  
406 -  
407 - <div id="url">  
408 - <paper-textarea id="selected_url" label="" value={{dataUrl}} error-message={{errorMessage}}></paper-textarea> 260 + <div id="datasets_list_container">
  261 + <datasets-list-controllet id="datasets_list"></datasets-list-controllet>
409 </div> 262 </div>
410 263
  264 + <div id="url"><paper-input id="selected_url" label="" value={{dataUrl}} error-message={{errorMessage}}></paper-input></div>
411 </paper-material> 265 </paper-material>
412 266
413 </template> 267 </template>
@@ -416,211 +270,130 @@ @@ -416,211 +270,130 @@
416 HTMLImports.whenReady(function() { 270 HTMLImports.whenReady(function() {
417 Polymer({ 271 Polymer({
418 is: 'select-dataset-controllet', 272 is: 'select-dataset-controllet',
  273 +
419 properties: { 274 properties: {
  275 +
  276 + tabIndex: {
  277 + type: Number,
  278 + value: 0
  279 + },
  280 +
420 datasets: { 281 datasets: {
421 type: Object, 282 type: Object,
422 value: undefined 283 value: undefined
423 }, 284 },
424 - filteredDatasets : {  
425 - type : Array,  
426 - value : undefined  
427 - },  
428 - shownDatasets : {  
429 - type : Array,  
430 - value : undefined  
431 - }, 285 +
432 suggestedDatasets : { 286 suggestedDatasets : {
433 type : Array, 287 type : Array,
434 value : undefined 288 value : undefined
435 }, 289 },
436 290
437 - providers : {  
438 - type : Array,  
439 - value : undefined  
440 - },  
441 dataUrl : { 291 dataUrl : {
442 type : String, 292 type : String,
443 value : undefined, 293 value : undefined,
444 observer : '_fireDataUrl' 294 observer : '_fireDataUrl'
445 - },  
446 - filter : {  
447 - type : String,  
448 - value : "",  
449 - observer : '_filter'  
450 - },  
451 - selected : {  
452 - type : Number,  
453 - value : 0  
454 - },  
455 - prev : {type : Number, value : undefined},  
456 - next : {type : Number, value : undefined},  
457 - shownPrev : {type : Number, value : undefined},  
458 - shownNext : {type : Number, value : undefined},  
459 - length : {type : Number, value : undefined},  
460 - tLength : {type : Number, computed : 'treemapLength(length)'},  
461 - step : {type : Number, value : 20},  
462 - colors : {  
463 - type : Array,  
464 - value : ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"]  
465 } 295 }
  296 +
466 }, 297 },
467 298
468 listeners: { 299 listeners: {
469 - 'datasetexplorer-datalet_data-url': '_selectDataUrl_treeMap' 300 + 'datasets-list-controllet_dataset' : '_selectDataUrl'
470 }, 301 },
471 302
472 ready : function() { 303 ready : function() {
  304 + this._translate();
  305 +
473 $(this.$.list_container).perfectScrollbar(); 306 $(this.$.list_container).perfectScrollbar();
474 $(this.$.info).perfectScrollbar(); 307 $(this.$.info).perfectScrollbar();
475 308
476 -// this.$.selected_url.invalid = true; 309 + this.options = false;
477 }, 310 },
478 311
479 - attached: function() { 312 + attached : function() {
  313 + this._translate();
  314 +
480 this._resize(); 315 this._resize();
481 var that = this; 316 var that = this;
482 - window.addEventListener("resize", function() { that._resize(); that._loadTreeMap();}); 317 + window.addEventListener("resize", function() { that._resize() });
483 318
484 -// this.providers = that.datasets["result"]["providers"];  
485 -// this.datasets = that.datasets["result"]["datasets"]; 319 + this.providers = this.datasets["result"]["providers"];
  320 + this.providersDatasets = this.datasets["result"]["datasets"];
  321 +
  322 + if(this.suggestedDatasets)
  323 + this.providersDatasets = this.suggestedDatasets.concat(this.providersDatasets);
486 324
487 $.ajax({ 325 $.ajax({
488 url: "/cocreation/ajax/get-all-dataset", 326 url: "/cocreation/ajax/get-all-dataset",
489 dataType: "json", 327 dataType: "json",
490 - success: function(spodDatasets){  
491 -  
492 - that.providers = $.extend(that.datasets["result"]["providers"], {99: {api_url: "/cocreation/ajax/get-all-dataset", id: "99", image_hash: "SPOD", title: "SPOD"}});  
493 - that.datasets = $.merge(spodDatasets, that.datasets["result"]["datasets"]);  
494 -  
495 - if(that.suggestedDatasets) {  
496 - that.tempDatasets = that.datasets;  
497 - that.datasets = that.suggestedDatasets.concat(that.datasets);  
498 - that.$.suggested_div.style.visibility = "visible";  
499 - }  
500 -  
501 - that.filteredDatasets = that.datasets;  
502 -  
503 - that.prev = 1;  
504 - that.next = that.step;  
505 - that.length = that.filteredDatasets.length;  
506 -  
507 - that.shownPrev = Math.min(that.prev, that.length);  
508 - that.shownNext = Math.min(that.next, that.length);  
509 - that.shownDatasets = that.filteredDatasets.slice(that.prev-1, that.next);  
510 -  
511 - that.$.list.scrollTarget = that.ownerDocument.documentElement;  
512 -  
513 - that._translate();  
514 -  
515 - that._loadTreeMap(); 328 + success: function(localDatasets){
  329 + that.localDatasets = localDatasets;
  330 + that.lastLocalDatasets = [];
  331 + var resource_name = "";
  332 + for(var i in localDatasets)
  333 + if(localDatasets[i].resource_name != resource_name) {
  334 + that.lastLocalDatasets.push(localDatasets[i]);
  335 + resource_name = localDatasets[i].resource_name;
  336 + }
  337 + },
  338 + error: function(){
  339 + that.localDatasets = [];
  340 + that.lastLocalDatasets = [];
516 } 341 }
517 }); 342 });
518 - },  
519 343
520 - _translate : function(){  
521 - this.$.listView.innerHTML = ln["listView_" + ln["localization"]];  
522 - this.$.treeMapView.innerHTML = ln["treeMapView_" + ln["localization"]];  
523 - this.$.extendedSearch.innerHTML = ln["extendedSearch_" + ln["localization"]];  
524 -  
525 - this.$.ddl_provider.setAttribute("label", ln["provider_" + ln["localization"]]);  
526 - this.$.datasets_filter.setAttribute("label", ln["search_" + ln["localization"]]);  
527 -  
528 - this.$.suggested_datasets.innerHTML = ln["suggestedDatasets_" + ln["localization"]]; 344 + this._setProvidersDatasets();
  345 + },
529 346
530 - this.$.showing.innerHTML = ln["showing_" + ln["localization"]];  
531 - this.$.showing2.innerHTML = ln["showing_" + ln["localization"]];  
532 - this.$.to.innerHTML = ln["to_" + ln["localization"]];  
533 - this.$.of.innerHTML = ln["of_" + ln["localization"]];  
534 - this.$.datasets.innerHTML = ln["datasets_" + ln["localization"]];  
535 - this.$.datasets2.innerHTML = ln["datasets_" + ln["localization"]]; 347 + showDatasetInfo : function() {
  348 + this.$.datasets_list.showDatasetInfo();
  349 + },
536 350
  351 + _translate : function(){
537 this.$.selected_url.setAttribute("label", ln["selectedUrl_" + ln["localization"]]); 352 this.$.selected_url.setAttribute("label", ln["selectedUrl_" + ln["localization"]]);
538 this.errorMessage = ln["wrongUrl_" + ln["localization"]]; 353 this.errorMessage = ln["wrongUrl_" + ln["localization"]];
539 - },  
540 354
541 - showSuggested : function(e) {  
542 - if(e.target.checked)  
543 - this.datasets = this.suggestedDatasets.concat(this.tempDatasets);  
544 - else  
545 - this.datasets = this.tempDatasets;  
546 - this._filter(); 355 + this.$.providers_datasets.innerHTML = ln["providersDatasets_" + ln["localization"]];
  356 + this.$.spod_users_datasets.innerHTML = ln["spodUsersDatasets_" + ln["localization"]];
  357 + this.$.options_header.innerHTML = ln["datasets_" + ln["localization"]];
  358 +
  359 + this.$.all.innerHTML = ln["all_" + ln["localization"]];
  360 +// this.$.list.innerHTML = ln["list_" + ln["localization"]];
  361 +// this.$.tree.innerHTML = ln["tree_" + ln["localization"]];
  362 + this.$.standard.innerHTML = ln["standard_" + ln["localization"]];
  363 + this.$.extended.innerHTML = ln["extended_" + ln["localization"]];
  364 + this.$.show_last.innerHTML = ln["showLast_" + ln["localization"]];
  365 + this.$.show_all.innerHTML = ln["showAll_" + ln["localization"]];
  366 +
  367 + this.$.menu_provider.select(0);
  368 +// this.$.menu_view.select(0);
  369 + this.$.menu_search.select(0);
  370 + this.$.menu_version.select(0);
547 }, 371 },
548 372
549 - _loadTreeMap : function(){  
550 - var h = $("#neon_container").height() - 48;  
551 - var w = $("#neon_container").width();  
552 -  
553 - var data = JSON.stringify({result : {providers: this.providers, datasets: this.filteredDatasets}}).replace(/'/g, "");  
554 -  
555 - if(this.filteredDatasets.length > 0)  
556 - this.$.treemap_container.innerHTML = "<datasetexplorer-datalet data='"+data+"' width=\""+w+"\" height=\""+h+"\" fields='[\"provider_name\",\"organization_name\",\"package_name\",\"resource_name\",\"url\",\"w\",\"metas\"]'></datasetexplorer-datalet>"; 373 + _setLocalDatasets : function() {
  374 + if(this.$.ddl_version.selectedItem.id == 0)
  375 + this._showLast();
557 else 376 else
558 - this.$.treemap_container.innerHTML = ""; 377 + this._showAll();
  378 + this._showOptions()
559 }, 379 },
560 380
561 - _filter : function() {  
562 - if(this.filteredDatasets) {  
563 - this.async(function () {  
564 - var ddl_provider = $(this.$.ddl_provider).find("paper-menu")[0].selectedItem;  
565 - var name = ddl_provider.innerHTML.trim();  
566 - var id = this._getIdByProviderName(name);  
567 - this.prev = 1;  
568 - this.next = this.step;  
569 - if (id) {  
570 - //filtered by provider name  
571 - this.filteredDatasets = this.datasets.filter(function (el) {  
572 - return el.provider_name == "p:" + id;  
573 - });  
574 - }  
575 - else {  
576 - this.filteredDatasets = this.datasets;  
577 - }  
578 -  
579 - //filtered by filter  
580 - var filter = this.filter;  
581 - this.filteredDatasets = this.filteredDatasets.filter(function (el) {  
582 - return el.resource_name.toLowerCase().indexOf(filter.toLowerCase()) > -1; 381 + _setProvidersDatasets : function() {
  382 + this.async(function () {
  383 + var ddl_provider = $(this.$.ddl_provider).find("paper-menu")[0].selectedItem;
  384 + var name = ddl_provider.innerHTML.trim();
  385 + var id = this._getIdByProviderName(name);
  386 + if (id) {
  387 + var providerDatasets = this.providersDatasets.filter(function (el) {
  388 + return el.provider_name == "p:" + id;
583 }); 389 });
  390 + this.$.datasets_list.setDatasets(providerDatasets);
  391 + }
  392 + else
  393 + this.$.datasets_list.setDatasets(this.providersDatasets);
584 394
585 - this.length = this.filteredDatasets.length;  
586 -  
587 - this.shownPrev = Math.min(this.prev, this.length);  
588 - this.shownNext = Math.min(this.next, this.length);  
589 - this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next);  
590 -  
591 - $("#list_container").animate({scrollTop: 0}, 0);  
592 -  
593 - this._loadTreeMap();  
594 - }, 0);  
595 - }  
596 - },  
597 -  
598 - _refreshList : function() {  
599 - this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next);  
600 -  
601 - this.$.header.style.display = "flex";  
602 - this.$.header.style.visibility = "visible";  
603 -// this.$.url.style.marginTop = "-4px";  
604 -  
605 - this.$.header.className = this.$.header.className.replace(" noshadow", "");  
606 - },  
607 -  
608 - _noShadow : function() {  
609 - this.$.header.style.display = "flex";  
610 - this.$.header.style.visibility = "visible";  
611 -// this.$.url.style.marginTop = "-4px";  
612 -  
613 - this.$.header.className += " noshadow";  
614 - },  
615 -  
616 - _hideSearch : function() {  
617 -// this.$.header.style.display = "none";  
618 - this.$.header.style.visibility = "hidden";  
619 -// this.$.url.style.marginTop = "44px";  
620 - },  
621 -  
622 - _clearInput : function() {  
623 - this.$.datasets_filter.value = ""; 395 + this._showOptions()
  396 + }, 0);
624 }, 397 },
625 398
626 _getIdByProviderName : function(name) { 399 _getIdByProviderName : function(name) {
@@ -630,104 +403,49 @@ @@ -630,104 +403,49 @@
630 } 403 }
631 }, 404 },
632 405
633 -// iconForItem: function(item) {  
634 -// return item ? (item.integer < 50 ? 'star-border' : 'info-outline') : '';  
635 -// },  
636 -  
637 - treemapLength : function(length) {  
638 - var ddl_provider = $(this.$.ddl_provider).find("paper-menu")[0].selectedItem;  
639 - var name = ddl_provider.innerHTML.trim();  
640 - var id = this._getIdByProviderName(name);  
641 -  
642 - if(this.suggestedDatasets && !id)  
643 - return Math.max(length - this.suggestedDatasets.length, 0);  
644 - return length;  
645 - },  
646 -  
647 - _getColorForIcon : function(item) {  
648 - var ddl_provider = $(this.$.ddl_provider).find("paper-menu")[0].selectedItem;  
649 - var name = ddl_provider.innerHTML.trim();  
650 - var id = this._getIdByProviderName(name);  
651 - if (id) {  
652 - return this.colors[0];  
653 - }  
654 - if(!item.provider_name) {  
655 - return "#00BCD4";  
656 - }  
657 - var id = item.provider_name.substring(2, item.provider_name.length);  
658 - var i = this.getProviderById(id) % this.colors.length;  
659 - return this.colors[i];  
660 - },  
661 -  
662 - _getColorForItem : function(item) {  
663 -// var ddl_provider = $(this.$.ddl_provider).find("paper-menu")[0].selectedItem;  
664 -// var name = ddl_provider.innerHTML.trim();  
665 -// var id = this._getIdByProviderName(name);  
666 -// if (id) {  
667 -// return this.colors[0];  
668 -// }  
669 - if(!item.provider_name) {  
670 - return "#FFEB3B";  
671 - }  
672 -// var id = item.provider_name.substring(2, item.provider_name.length);  
673 -// var i = this.getProviderById(id) % this.colors.length;  
674 -// return this.colors[i];  
675 - },  
676 -  
677 - _getIconForItem : function(item) {  
678 - return item.provider_name ? 'bookmark' : 'star';  
679 - },  
680 -  
681 -// _getProviderColor: function(id) {  
682 -// var i = this.getProviderById(id) % this.colors.length;  
683 -// return this.colors[i];  
684 -// },  
685 -  
686 - getClassForItem: function(selected) {  
687 - return selected ? 'item expanded' : 'item'; 406 + _optionsMenu : function() {
  407 + this.options = !this.options;
  408 + this._showOptions();
688 }, 409 },
689 410
690 - getProviderById: function(providerId) {  
691 - var i = 0;  
692 - for(var id in this.providers){  
693 - if(this.providers[id].id == providerId)  
694 - return i;  
695 - i++;  
696 - } 411 + _showOptions : function() {
  412 + this.async(function () {
  413 + if(!this.options) {
  414 + this.$.options_header.style.display = "block";
  415 + this.$.provider_option.style.display = "none";
  416 +// this.$.view_option.style.display = "none";
  417 + this.$.search_option.style.display = "none";
  418 + this.$.version_option.style.display = "none";
  419 + }
  420 + else if(this.tabIndex == 0) {
  421 + this.$.options_header.style.display = "none";
  422 + this.$.provider_option.style.display = "block";
  423 +// this.$.view_option.style.display = "block";
  424 + this.$.search_option.style.display = "block";
  425 + this.$.version_option.style.display = "none";
  426 + }
  427 + else if(this.tabIndex == 1) {
  428 + this.$.options_header.style.display = "none";
  429 + this.$.provider_option.style.display = "none";
  430 +// this.$.view_option.style.display = "none";
  431 + this.$.search_option.style.display = "none";
  432 + this.$.version_option.style.display = "block";
  433 + }
  434 + }, 0);
697 }, 435 },
698 436
699 - _onPrevClick : function(){  
700 - if(this.prev != 1) {  
701 - this.prev -= this.step;  
702 - this.next -= this.step;  
703 -  
704 - this.shownPrev = Math.min(this.prev, this.length);  
705 - this.shownNext = Math.min(this.next, this.length);  
706 - this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next);  
707 - }  
708 - $("#list_container").animate({ scrollTop: 0}, 0); 437 + _showAll : function() {
  438 + this.$.datasets_list.showVersion(true);
  439 + this.$.datasets_list.setDatasets(this.localDatasets);
709 }, 440 },
710 441
711 - _onNextClick : function(){  
712 - if(this.next < this.length) {  
713 - this.prev += this.step;  
714 - this.next += this.step;  
715 -  
716 - this.shownPrev = Math.min(this.prev, this.length);  
717 - this.shownNext = Math.min(this.next, this.length);  
718 - this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next);  
719 - }  
720 - $("#list_container").animate({ scrollTop: 0}, 0); 442 + _showLast : function() {
  443 + this.$.datasets_list.showVersion(false);
  444 + this.$.datasets_list.setDatasets(this.lastLocalDatasets);
721 }, 445 },
722 446
723 - _stringToArray: function(obj) {  
724 - obj = JSON.parse(obj);  
725 - return Object.keys(obj).map(function(key) {  
726 - return {  
727 - name: key,  
728 - value: obj[key]  
729 - };  
730 - }); 447 + _getLocalization : function(text){
  448 + return ln[text + "_" + ln["localization"]];
731 }, 449 },
732 450
733 _toArray: function(obj) { 451 _toArray: function(obj) {
@@ -739,74 +457,16 @@ @@ -739,74 +457,16 @@
739 }); 457 });
740 }, 458 },
741 459
742 - _selectDataUrl : function(){ 460 + _selectDataUrl : function(e){
743 this.async(function () { 461 this.async(function () {
744 - if(this.$.list.selectedItem) {  
745 -  
746 - var metas = JSON.parse(this.$.list.selectedItem.metas);  
747 - var html = "<span style=\"color: #2196F3; font-weight: bold;\">" + this.$.list.selectedItem.resource_name + "</span><br><br>";  
748 - /*font-weight: bold;*/  
749 - /*line-height: 48px;*/  
750 - for(var i in metas)  
751 - html += "<b>" + i + ":</b> " + metas[i] + "<br>";  
752 - this.$.info.innerHTML = html;  
753 -  
754 - this.dataUrl = this.$.list.selectedItem.url;  
755 -// var url = this.$.list.selectedItem.url;  
756 -  
757 -// url = utility_getResourceUrl(url);  
758 -  
759 -// // Check if CKAN  
760 -// var strDatasetPos = url.indexOf('/dataset/');  
761 -// var strResourcePos = (strDatasetPos >= 0) ? url.indexOf('/resource/') : -1;  
762 -// if (strDatasetPos >= 0 && strResourcePos > strDatasetPos) {  
763 -// var urlSegment1 = url.substring(0, strDatasetPos);  
764 -// var urlResourceEnd = url.indexOf('/', strResourcePos + 10);  
765 -// var resourceId = url.substring(strResourcePos + 10, urlResourceEnd);  
766 -// url = urlSegment1 + "/api/action/datastore_search?resource_id=" + resourceId;  
767 -// }  
768 -//  
769 -// // Check if OPENDATASOFT  
770 -// var strExploreDatasetPos = url.indexOf('/explore/dataset/');  
771 -// if (strExploreDatasetPos >= 0) {  
772 -// var urlSegment1 = url.substring(0, strExploreDatasetPos);  
773 -// var datasetEnd = url.indexOf(strExploreDatasetPos + 17, '/');  
774 -// var datasetId = url.substring(strExploreDatasetPos + 17, datasetEnd >= 0 ? datasetEnd : url.length);  
775 -// url = urlSegment1 + '/api/records/1.0/search?dataset=' + datasetId;  
776 -// }  
777 -  
778 -// this.dataUrl = this._addlimitUrl(url);  
779 -// this.dataUrl = url;  
780 - }  
781 - else {  
782 - this.dataUrl = "";  
783 - this.$.info.innerHTML = "";  
784 - } 462 + this.dataUrl = e.detail.dataset.url;
785 }, 0); 463 }, 0);
786 }, 464 },
787 465
788 - _selectDataUrl_treeMap : function(e) {  
789 -// this.dataUrl = this._addlimitUrl(e.detail.url);  
790 - this.dataUrl = e.detail.url;  
791 - },  
792 -  
793 _fireDataUrl : function(){ 466 _fireDataUrl : function(){
794 - this.fire('dataset-selection-controllet_data-url', {url: this.dataUrl}); 467 + this.fire('select-dataset-controllet_data-url', {url: this.dataUrl});
795 }, 468 },
796 469
797 -// _addlimitUrl : function(url){  
798 -// //CKAN --> action no limit  
799 -// if((url.indexOf("api/action") > -1) && !(url.indexOf("limit") > -1))  
800 -// {  
801 -// url += "&limit=99999";  
802 -// }  
803 -// //OpenDataSoft --> action no limit  
804 -// if((url.indexOf("api/records") > -1) && !(url.indexOf("rows") > -1)){  
805 -// url += "&rows=10000";  
806 -// }  
807 -// return url;  
808 -// },  
809 -  
810 _resize : function(){ 470 _resize : function(){
811 var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 16; 471 var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 16;
812 h = h - 64 - 8; //height with page scroller 472 h = h - 64 - 8; //height with page scroller
controllets/select-dataset-controllet/select-dataset-controllet_old.html 0 โ†’ 100755
  1 +<link rel="import" href="../../bower_components/polymer/polymer.html">
  2 +
  3 +<link rel="import" href="../../bower_components/paper-tabs/paper-tabs.html">
  4 +<link rel="import" href="../../bower_components/paper-tabs/paper-tab.html">
  5 +
  6 +<link rel="import" href="../../bower_components/neon-animation/neon-animation.html">
  7 +<link rel="import" href="../../bower_components/neon-animation/neon-animatable.html">
  8 +<link rel="import" href="../../bower_components/neon-animation/neon-animations.html">
  9 +
  10 +<link rel="import" href="../../bower_components/iron-flex-layout/iron-flex-layout.html">
  11 +<!--<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">-->
  12 +<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">
  13 +<link rel="import" href="../../bower_components/paper-styles/color.html">
  14 +<link rel="import" href="../../bower_components/paper-styles/typography.html">
  15 +<link rel="import" href="../../bower_components/iron-ajax/iron-ajax.html">
  16 +<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">
  17 +<link rel="import" href="../../bower_components/iron-image/iron-image.html">
  18 +<link rel="import" href="../../bower_components/iron-list/iron-list.html">
  19 +
  20 +<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">
  21 +<link rel="import" href="../../bower_components/paper-menu/paper-menu.html">
  22 +<link rel="import" href="../../bower_components/paper-item/paper-item.html">
  23 +
  24 +<link rel="import" href="../../bower_components/paper-input/paper-input.html">
  25 +
  26 +<link rel="import" href="../../bower_components/paper-input/paper-textarea.html">
  27 +
  28 +<link rel="import" href="../../bower_components/paper-material/paper-material.html" />
  29 +
  30 +<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">
  31 +<link rel="import" href="../../bower_components/iron-icons/hardware-icons.html">
  32 +<!--<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">-->
  33 +
  34 +<link rel="import" href="../../bower_components/paper-checkbox/paper-checkbox.html">
  35 +
  36 +<link rel="import" href="../providers-utility-controllet/providers-utility-controllet.html">
  37 +<link rel="import" href="ortelio-controllet.html">
  38 +<link rel="import" href="../../datalets/datasetexplorer-datalet/datasetexplorer-datalet.html">
  39 +
  40 +<dom-module id="select-dataset-controllet">
  41 + <template>
  42 + <style>
  43 + :host {
  44 + --paper-dropdown-menu-icon: {
  45 + color: #000000;
  46 + };
  47 + --paper-dropdown-menu-ripple: {
  48 + color: #FFFFFF;
  49 + };
  50 + /*--paper-tab-ink: {*/
  51 + /*color: #FFFFFF;*/
  52 + /*};*/
  53 + }
  54 +
  55 + iron-list {
  56 + --iron-list-items-container: {
  57 + margin:16px 16px 8px 16px;
  58 + };
  59 + }
  60 +
  61 + paper-textarea {
  62 + width: 100%;
  63 + --paper-input-container-focus-color: #2196F3;
  64 + }
  65 +
  66 + paper-input {
  67 + --paper-input-container-focus-color: #2196F3;
  68 + }
  69 + paper-dropdown-menu {
  70 + width: 100%;
  71 + --paper-input-container-focus-color: #2196F3;
  72 + }
  73 +
  74 + paper-item.iron-selected {
  75 + background-color: #2196F3;
  76 + color: #FFFFFF;
  77 + }
  78 +
  79 + paper-checkbox {
  80 + height: 24px;
  81 + /*margin-top: 8px*/
  82 + --paper-checkbox-checked-color: #2196F3;
  83 + --paper-checkbox-checked-ink-color: #FFFFFF;
  84 + --paper-checkbox-unchecked-color: #000000;
  85 + --paper-checkbox-unchecked-ink-color: #FFFFFF;
  86 + --paper-checkbox-label-color: #000000;
  87 + }
  88 +
  89 + paper-icon-button{
  90 + height: 48px;
  91 + width: 48px;
  92 + padding: 0px;
  93 + --paper-icon-button-ink-color: #FFFFFF;
  94 + }
  95 +
  96 + paper-icon-button:hover{
  97 + color: #2196F3;
  98 + }
  99 +
  100 + paper-icon-button[disabled]{
  101 + color: #B6B6B6;
  102 + }
  103 +
  104 + paper-icon-button.clear {
  105 + width: 24px;
  106 + height: 24px;
  107 + padding: 0px 4px;
  108 + color: #F44336;
  109 + --paper-icon-button-ink-color: #FFFFFF;
  110 + }
  111 +
  112 + paper-tabs {
  113 + font-weight: bold;
  114 + }
  115 +
  116 + paper-tab {
  117 + transition: all 1.0s;
  118 + }
  119 +
  120 + paper-tab.iron-selected {
  121 + background-color: #2196F3;
  122 + color: #FFFFFF;
  123 + }
  124 +
  125 + paper-tab:not(.iron-selected):hover {
  126 + color: #2196F3;
  127 + }
  128 +
  129 + .item {
  130 + /*@apply(--layout-horizontal);*/
  131 + display: flex;
  132 + padding: 11px;
  133 + border: 1px solid #B6B6B6;
  134 + border-radius: 4px;
  135 + cursor: pointer;
  136 + margin-bottom: 8px;
  137 + background-color: #E0E0E0;
  138 + }
  139 +
  140 + .item.expanded {
  141 + /*border: 2px solid #2196F3;*/
  142 + border-color: #2196F3;
  143 + }
  144 +
  145 + .pad {
  146 + @apply(--layout-flex);
  147 + /*@apply(--layout-vertical);*/
  148 + }
  149 +
  150 + .primary {
  151 + font-weight: bold;
  152 + }
  153 +
  154 + .item.expanded .primary {
  155 + color: #2196F3;
  156 + }
  157 +
  158 + .longText {
  159 + display: none;
  160 + }
  161 +
  162 + .item.expanded .longText {
  163 + display: block;
  164 + }
  165 +
  166 + #select_dataset_container {
  167 + margin-top: 8px;
  168 + }
  169 +
  170 + #select_dataset_container * {
  171 + font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  172 + font-size: 16px;
  173 + line-height: 24px;
  174 + }
  175 +
  176 + #select_dataset_container #neon_container {
  177 + height: calc(100% - 172px);
  178 + width: calc(100% - 8px);
  179 + }
  180 +
  181 + #select_dataset_container #list_info {
  182 + display: flex;
  183 + height: calc(100% - 48px);
  184 + width: calc(100% + 8px);/*bad*/
  185 + }
  186 +
  187 + #select_dataset_container #list_container {
  188 + position: relative;
  189 + height: 100%;
  190 + width: 50%;
  191 + border-left: 4px solid #B6B6B6;
  192 + }
  193 +
  194 + #select_dataset_container #info_container {
  195 + position: relative;
  196 + height: 100%;
  197 + width: 50%;
  198 + border-right: 4px solid #B6B6B6;
  199 + }
  200 +
  201 + #select_dataset_container #info {
  202 + position: relative;
  203 + height: calc(100% - 56px);
  204 + width: calc(100% - 56px);
  205 + padding: 11px;
  206 + border: 1px solid #B6B6B6;
  207 + border-radius: 4px;
  208 + background-color: #E0E0E0;
  209 + margin: 16px;
  210 + }
  211 +
  212 + #select_dataset_container #treemap_container {
  213 + /*height: calc(100% - 244px);*/
  214 + /*width: calc(100% - 8px);*/
  215 + height: calc(100% - 48px);
  216 + width: 100%;
  217 + border: 4px solid #B6B6B6;
  218 + border-top: 0px;
  219 + border-bottom: 0px;
  220 + position: relative;
  221 + }
  222 +
  223 + #select_dataset_container #header {
  224 + position: relative;
  225 + z-index: 1;
  226 + -webkit-box-shadow: 0 30px 24px -12px rgba(0, 0, 0, 0.14), 0 20px 30px -9px rgba(0, 0, 0, 0.12), 0 20px 10px -19px rgba(0, 0, 0, 0.4);
  227 + -moz-box-shadow: 0 30px 24px -12px rgba(0, 0, 0, 0.14), 0 20px 30px -9px rgba(0, 0, 0, 0.12), 0 20px 10px -19px rgba(0, 0, 0, 0.4);
  228 + box-shadow: 0 30px 24px -12px rgba(0, 0, 0, 0.14), 0 20px 30px -9px rgba(0, 0, 0, 0.12), 0 20px 10px -19px rgba(0, 0, 0, 0.4);
  229 +
  230 + background-color: #B6B6B6;
  231 + display: flex;
  232 + padding: 0px 4px;
  233 + }
  234 +
  235 + #select_dataset_container #footer_list {
  236 + position: relative;
  237 + z-index: 1;
  238 + -webkit-box-shadow: 0 -30px 24px -12px rgba(0, 0, 0, 0.14), 0 -20px 30px -9px rgba(0, 0, 0, 0.12), 0 -20px 10px -19px rgba(0, 0, 0, 0.4);
  239 + -moz-box-shadow: 0 -30px 24px -12px rgba(0, 0, 0, 0.14), 0 -20px 30px -9px rgba(0, 0, 0, 0.12), 0 -20px 10px -19px rgba(0, 0, 0, 0.4);
  240 + box-shadow: 0 -30px 24px -12px rgba(0, 0, 0, 0.14), 0 -20px 30px -9px rgba(0, 0, 0, 0.12), 0 -20px 10px -19px rgba(0, 0, 0, 0.4);
  241 + }
  242 +
  243 + .noshadow {
  244 + -webkit-box-shadow: none !important;
  245 + -moz-box-shadow: none !important;
  246 + box-shadow: none !important;
  247 + }
  248 +
  249 + #select_dataset_container #footer_list,
  250 + #select_dataset_container #footer_treemap {
  251 + width: 100%;
  252 + background-color: #B6B6B6;
  253 + display: flex;
  254 + padding: 0px 4px;
  255 + }
  256 +
  257 + #select_dataset_container #url {
  258 + height: 76px;/*100*/
  259 + border: 4px solid #B6B6B6;
  260 + border-top: 0px;
  261 + padding: 0px 16px;
  262 + margin-top: -4px;
  263 + }
  264 +
  265 + #header .header_block {
  266 + width: 20%;
  267 + height: 40px;
  268 + padding: 4px 16px 4px 16px;
  269 + }
  270 +
  271 + /*.header_block:nth-child(2), .header_block:nth-child(3), .header_block:nth-child(3), .header_block:nth-child(4){*/
  272 + /*visibility: hidden;*/
  273 + /*}*/
  274 +
  275 + #header .header_block:nth-child(4) {
  276 + text-align: center;
  277 + }
  278 +
  279 + .footer_block {
  280 + width: calc((100% - 0px) / 3);
  281 + height: 24px;
  282 + padding: 12px 8px 12px 8px;
  283 + text-align: center;
  284 + }
  285 +
  286 + .footer_block:nth-child(2) {
  287 + height: 48px;
  288 + padding: 0px 8px;
  289 + }
  290 +
  291 + #suggested_div {
  292 + visibility: hidden;
  293 + }
  294 +
  295 + /*.info_resource_name {*/
  296 + /*color: #2196F3;*/
  297 + /*font-weight: bold;*/
  298 + /*line-height: 48px;*/
  299 + /*}*/
  300 +
  301 + /*#ortelio {*/
  302 + /*/!*height: calc(100% - 172px);*!/*/
  303 + /*/!*width: calc(100% - 8px);*!/*/
  304 + /*height: 100%;*/
  305 + /*width: 100%;*/
  306 + /*background-color: red;*/
  307 + /*}*/
  308 + </style>
  309 +
  310 + <paper-material id="select_dataset_container" elevation="5">
  311 +
  312 + <paper-tabs selected="{{selected}}" no-bar>
  313 + <paper-tab on-tap="_refreshList" noink><span id="listView"></span></paper-tab>
  314 + <paper-tab on-tap="_noShadow" noink><span id="treeMapView"></span></paper-tab>
  315 + <paper-tab on-tap="_hideSearch" noink><span id="extendedSearch"></span></paper-tab>
  316 + </paper-tabs>
  317 +
  318 + <div id="header">
  319 + <div class="header_block">
  320 + <paper-dropdown-menu id="ddl_provider" label="" no-label-float>
  321 + <paper-menu class="dropdown-content" selected="0">
  322 + <paper-item id="0" on-tap="_filter"></paper-item>
  323 + <template is="dom-repeat" items={{_toArray(providers)}} as="provider">
  324 + <!--<paper-item id={{provider.value.id}} style$="background: {{_getProviderColor(provider.value.id)}};">{{provider.value.title}}</paper-item>-->
  325 + <paper-item id={{provider.value.id}} on-tap="_filter">{{provider.value.title}}</paper-item>
  326 + </template>
  327 + </paper-menu>
  328 + </paper-dropdown-menu>
  329 + </div>
  330 + <div class="header_block">
  331 + </div>
  332 + <div class="header_block">
  333 + </div>
  334 + <div class="header_block">
  335 + </div>
  336 + <div class="header_block">
  337 + <paper-input id="datasets_filter" value={{filter}} no-label-float label="">
  338 + <iron-icon class="search" icon="search" prefix></iron-icon>
  339 + <paper-icon-button class="clear" suffix on-click="_clearInput" icon="clear" tabindex="0"></paper-icon-button>
  340 + </paper-input>
  341 + </div>
  342 + </div>
  343 +
  344 + <neon-animated-pages id="neon_container" selected="{{selected}}" entry-animation="fade-in-animation" exit-animation="fade-out-animation">
  345 +
  346 + <neon-animatable>
  347 + <div id="list_info">
  348 + <div id="list_container">
  349 + <iron-list id="list" items="{{shownDatasets}}" selection-enabled>
  350 + <template>
  351 + <div>
  352 + <div class$="{{getClassForItem(selected)}}" on-tap="_selectDataUrl" style$="background: {{_getColorForItem(item)}};">
  353 + <span style="display:none;">{{item.url}}</span>
  354 + <div class="pad">
  355 + <div class="primary">{{item.resource_name}}</div>
  356 + <!--<div class="longText">-->
  357 + <!--<template is="dom-repeat" items="{{_stringToArray(item.metas)}}" as="mata">-->
  358 + <!--<b>{{mata.name}}:</b>-->
  359 + <!--<span inner-h-t-m-l="{{mata.value}}"></span> <br>-->
  360 + <!--</template>-->
  361 + <!--</div>-->
  362 + </div>
  363 + <iron-icon icon$="{{_getIconForItem(item)}}" style$="color: {{_getColorForIcon(item)}};"></iron-icon>
  364 + </div>
  365 + </div>
  366 + </template>
  367 + </iron-list>
  368 + </div>
  369 + <div id="info_container">
  370 + <div id="info">
  371 + </div>
  372 + </div>
  373 + </div>
  374 +
  375 + <div id="footer_list">
  376 + <div class="footer_block"><span id="showing"></span> {{shownPrev}} <span id="to"></span> {{shownNext}} <span id="of"></span> {{length}} <span id="datasets"></span></div>
  377 + <div class="footer_block">
  378 + <paper-icon-button id="slider_chevron_left" class="chevron-left" on-click="_onPrevClick" icon="chevron-left"></paper-icon-button>
  379 + <paper-icon-button id="slider_chevron_right" class="chevron-right" on-click="_onNextClick" icon="chevron-right"></paper-icon-button>
  380 + </div>
  381 + <div id="suggested_div" class="footer_block">
  382 + <!--<template is="dom-if" if={{suggestedDatasets}}>-->
  383 + <paper-checkbox checked on-change="showSuggested"><span id="suggested_datasets"></span></paper-checkbox>
  384 + <!--</template>-->
  385 + </div>
  386 + </div>
  387 + </neon-animatable>
  388 +
  389 + <neon-animatable>
  390 + <div id="treemap_container"></div>
  391 +
  392 + <div id="footer_treemap">
  393 + <div class="footer_block"><span id="showing2"></span> {{tLength}} <span id="datasets2"></span></div>
  394 + <div class="footer_block"></div>
  395 + <div class="footer_block"></div>
  396 + </div>
  397 + </neon-animatable>
  398 +
  399 + <neon-animatable>
  400 + <!--<div id="ortelio">-->
  401 + <ortelio-controllet datasets={{datasets}}></ortelio-controllet>
  402 + <!--</div>-->
  403 + </neon-animatable>
  404 +
  405 + </neon-animated-pages>
  406 +
  407 + <div id="url">
  408 + <paper-textarea id="selected_url" label="" value={{dataUrl}} error-message={{errorMessage}}></paper-textarea>
  409 + </div>
  410 +
  411 + </paper-material>
  412 +
  413 + </template>
  414 +
  415 + <script>
  416 + HTMLImports.whenReady(function() {
  417 + Polymer({
  418 + is: 'select-dataset-controllet',
  419 + properties: {
  420 + datasets: {
  421 + type: Object,
  422 + value: undefined
  423 + },
  424 + filteredDatasets : {
  425 + type : Array,
  426 + value : undefined
  427 + },
  428 + shownDatasets : {
  429 + type : Array,
  430 + value : undefined
  431 + },
  432 + suggestedDatasets : {
  433 + type : Array,
  434 + value : undefined
  435 + },
  436 +
  437 + providers : {
  438 + type : Array,
  439 + value : undefined
  440 + },
  441 + dataUrl : {
  442 + type : String,
  443 + value : undefined,
  444 + observer : '_fireDataUrl'
  445 + },
  446 + filter : {
  447 + type : String,
  448 + value : "",
  449 + observer : '_filter'
  450 + },
  451 + selected : {
  452 + type : Number,
  453 + value : 0
  454 + },
  455 + prev : {type : Number, value : undefined},
  456 + next : {type : Number, value : undefined},
  457 + shownPrev : {type : Number, value : undefined},
  458 + shownNext : {type : Number, value : undefined},
  459 + length : {type : Number, value : undefined},
  460 + tLength : {type : Number, computed : 'treemapLength(length)'},
  461 + step : {type : Number, value : 20},
  462 + colors : {
  463 + type : Array,
  464 + value : ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"]
  465 + }
  466 + },
  467 +
  468 + listeners: {
  469 + 'datasetexplorer-datalet_data-url': '_selectDataUrl_treeMap'
  470 + },
  471 +
  472 + ready : function() {
  473 + $(this.$.list_container).perfectScrollbar();
  474 + $(this.$.info).perfectScrollbar();
  475 +
  476 +// this.$.selected_url.invalid = true;
  477 + },
  478 +
  479 + attached: function() {
  480 + this._resize();
  481 + var that = this;
  482 + window.addEventListener("resize", function() { that._resize(); that._loadTreeMap();});
  483 +
  484 +// this.providers = that.datasets["result"]["providers"];
  485 +// this.datasets = that.datasets["result"]["datasets"];
  486 +
  487 + $.ajax({
  488 + url: "/cocreation/ajax/get-all-dataset",
  489 + dataType: "json",
  490 + success: function(spodDatasets){
  491 +
  492 + that.providers = $.extend(that.datasets["result"]["providers"], {99: {api_url: "/cocreation/ajax/get-all-dataset", id: "99", image_hash: "SPOD", title: "SPOD"}});
  493 + that.datasets = $.merge(spodDatasets, that.datasets["result"]["datasets"]);
  494 +
  495 + if(that.suggestedDatasets) {
  496 + that.tempDatasets = that.datasets;
  497 + that.datasets = that.suggestedDatasets.concat(that.datasets);
  498 + that.$.suggested_div.style.visibility = "visible";
  499 + }
  500 +
  501 + that.filteredDatasets = that.datasets;
  502 +
  503 + that.prev = 1;
  504 + that.next = that.step;
  505 + that.length = that.filteredDatasets.length;
  506 +
  507 + that.shownPrev = Math.min(that.prev, that.length);
  508 + that.shownNext = Math.min(that.next, that.length);
  509 + that.shownDatasets = that.filteredDatasets.slice(that.prev-1, that.next);
  510 +
  511 + that.$.list.scrollTarget = that.ownerDocument.documentElement;
  512 +
  513 + that._translate();
  514 +
  515 + that._loadTreeMap();
  516 + }
  517 + });
  518 + },
  519 +
  520 + _translate : function(){
  521 + this.$.listView.innerHTML = ln["listView_" + ln["localization"]];
  522 + this.$.treeMapView.innerHTML = ln["treeMapView_" + ln["localization"]];
  523 + this.$.extendedSearch.innerHTML = ln["extendedSearch_" + ln["localization"]];
  524 +
  525 + this.$.ddl_provider.setAttribute("label", ln["provider_" + ln["localization"]]);
  526 + this.$.datasets_filter.setAttribute("label", ln["search_" + ln["localization"]]);
  527 +
  528 + this.$.suggested_datasets.innerHTML = ln["suggestedDatasets_" + ln["localization"]];
  529 +
  530 + this.$.showing.innerHTML = ln["showing_" + ln["localization"]];
  531 + this.$.showing2.innerHTML = ln["showing_" + ln["localization"]];
  532 + this.$.to.innerHTML = ln["to_" + ln["localization"]];
  533 + this.$.of.innerHTML = ln["of_" + ln["localization"]];
  534 + this.$.datasets.innerHTML = ln["datasets_" + ln["localization"]];
  535 + this.$.datasets2.innerHTML = ln["datasets_" + ln["localization"]];
  536 +
  537 + this.$.selected_url.setAttribute("label", ln["selectedUrl_" + ln["localization"]]);
  538 + this.errorMessage = ln["wrongUrl_" + ln["localization"]];
  539 + },
  540 +
  541 + showSuggested : function(e) {
  542 + if(e.target.checked)
  543 + this.datasets = this.suggestedDatasets.concat(this.tempDatasets);
  544 + else
  545 + this.datasets = this.tempDatasets;
  546 + this._filter();
  547 + },
  548 +
  549 + _loadTreeMap : function(){
  550 + var h = $("#neon_container").height() - 48;
  551 + var w = $("#neon_container").width();
  552 +
  553 + var data = JSON.stringify({result : {providers: this.providers, datasets: this.filteredDatasets}}).replace(/'/g, "");
  554 +
  555 + if(this.filteredDatasets.length > 0)
  556 + this.$.treemap_container.innerHTML = "<datasetexplorer-datalet data='"+data+"' width=\""+w+"\" height=\""+h+"\" fields='[\"provider_name\",\"organization_name\",\"package_name\",\"resource_name\",\"url\",\"w\",\"metas\"]'></datasetexplorer-datalet>";
  557 + else
  558 + this.$.treemap_container.innerHTML = "";
  559 + },
  560 +
  561 + _filter : function() {
  562 + if(this.filteredDatasets) {
  563 + this.async(function () {
  564 + var ddl_provider = $(this.$.ddl_provider).find("paper-menu")[0].selectedItem;
  565 + var name = ddl_provider.innerHTML.trim();
  566 + var id = this._getIdByProviderName(name);
  567 + this.prev = 1;
  568 + this.next = this.step;
  569 + if (id) {
  570 + //filtered by provider name
  571 + this.filteredDatasets = this.datasets.filter(function (el) {
  572 + return el.provider_name == "p:" + id;
  573 + });
  574 + }
  575 + else {
  576 + this.filteredDatasets = this.datasets;
  577 + }
  578 +
  579 + //filtered by filter
  580 + var filter = this.filter;
  581 + this.filteredDatasets = this.filteredDatasets.filter(function (el) {
  582 + return el.resource_name.toLowerCase().indexOf(filter.toLowerCase()) > -1;
  583 + });
  584 +
  585 + this.length = this.filteredDatasets.length;
  586 +
  587 + this.shownPrev = Math.min(this.prev, this.length);
  588 + this.shownNext = Math.min(this.next, this.length);
  589 + this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next);
  590 +
  591 + $("#list_container").animate({scrollTop: 0}, 0);
  592 +
  593 + this._loadTreeMap();
  594 + }, 0);
  595 + }
  596 + },
  597 +
  598 + _refreshList : function() {
  599 + this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next);
  600 +
  601 + this.$.header.style.display = "flex";
  602 + this.$.header.style.visibility = "visible";
  603 +// this.$.url.style.marginTop = "-4px";
  604 +
  605 + this.$.header.className = this.$.header.className.replace(" noshadow", "");
  606 + },
  607 +
  608 + _noShadow : function() {
  609 + this.$.header.style.display = "flex";
  610 + this.$.header.style.visibility = "visible";
  611 +// this.$.url.style.marginTop = "-4px";
  612 +
  613 + this.$.header.className += " noshadow";
  614 + },
  615 +
  616 + _hideSearch : function() {
  617 +// this.$.header.style.display = "none";
  618 + this.$.header.style.visibility = "hidden";
  619 +// this.$.url.style.marginTop = "44px";
  620 + },
  621 +
  622 + _clearInput : function() {
  623 + this.$.datasets_filter.value = "";
  624 + },
  625 +
  626 + _getIdByProviderName : function(name) {
  627 + for(var id in this.providers) {
  628 + if (this.providers[id].title == name)
  629 + return this.providers[id].id;
  630 + }
  631 + },
  632 +
  633 +// iconForItem: function(item) {
  634 +// return item ? (item.integer < 50 ? 'star-border' : 'info-outline') : '';
  635 +// },
  636 +
  637 + treemapLength : function(length) {
  638 + var ddl_provider = $(this.$.ddl_provider).find("paper-menu")[0].selectedItem;
  639 + var name = ddl_provider.innerHTML.trim();
  640 + var id = this._getIdByProviderName(name);
  641 +
  642 + if(this.suggestedDatasets && !id)
  643 + return Math.max(length - this.suggestedDatasets.length, 0);
  644 + return length;
  645 + },
  646 +
  647 + _getColorForIcon : function(item) {
  648 + var ddl_provider = $(this.$.ddl_provider).find("paper-menu")[0].selectedItem;
  649 + var name = ddl_provider.innerHTML.trim();
  650 + var id = this._getIdByProviderName(name);
  651 + if (id) {
  652 + return this.colors[0];
  653 + }
  654 + if(!item.provider_name) {
  655 + return "#00BCD4";
  656 + }
  657 + var id = item.provider_name.substring(2, item.provider_name.length);
  658 + var i = this.getProviderById(id) % this.colors.length;
  659 + return this.colors[i];
  660 + },
  661 +
  662 + _getColorForItem : function(item) {
  663 +// var ddl_provider = $(this.$.ddl_provider).find("paper-menu")[0].selectedItem;
  664 +// var name = ddl_provider.innerHTML.trim();
  665 +// var id = this._getIdByProviderName(name);
  666 +// if (id) {
  667 +// return this.colors[0];
  668 +// }
  669 + if(!item.provider_name) {
  670 + return "#FFEB3B";
  671 + }
  672 +// var id = item.provider_name.substring(2, item.provider_name.length);
  673 +// var i = this.getProviderById(id) % this.colors.length;
  674 +// return this.colors[i];
  675 + },
  676 +
  677 + _getIconForItem : function(item) {
  678 + return item.provider_name ? 'bookmark' : 'star';
  679 + },
  680 +
  681 +// _getProviderColor: function(id) {
  682 +// var i = this.getProviderById(id) % this.colors.length;
  683 +// return this.colors[i];
  684 +// },
  685 +
  686 + getClassForItem: function(selected) {
  687 + return selected ? 'item expanded' : 'item';
  688 + },
  689 +
  690 + getProviderById: function(providerId) {
  691 + var i = 0;
  692 + for(var id in this.providers){
  693 + if(this.providers[id].id == providerId)
  694 + return i;
  695 + i++;
  696 + }
  697 + },
  698 +
  699 + _onPrevClick : function(){
  700 + if(this.prev != 1) {
  701 + this.prev -= this.step;
  702 + this.next -= this.step;
  703 +
  704 + this.shownPrev = Math.min(this.prev, this.length);
  705 + this.shownNext = Math.min(this.next, this.length);
  706 + this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next);
  707 + }
  708 + $("#list_container").animate({ scrollTop: 0}, 0);
  709 + },
  710 +
  711 + _onNextClick : function(){
  712 + if(this.next < this.length) {
  713 + this.prev += this.step;
  714 + this.next += this.step;
  715 +
  716 + this.shownPrev = Math.min(this.prev, this.length);
  717 + this.shownNext = Math.min(this.next, this.length);
  718 + this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next);
  719 + }
  720 + $("#list_container").animate({ scrollTop: 0}, 0);
  721 + },
  722 +
  723 + _stringToArray: function(obj) {
  724 + obj = JSON.parse(obj);
  725 + return Object.keys(obj).map(function(key) {
  726 + return {
  727 + name: key,
  728 + value: obj[key]
  729 + };
  730 + });
  731 + },
  732 +
  733 + _toArray: function(obj) {
  734 + return Object.keys(obj).map(function(key) {
  735 + return {
  736 + name: key,
  737 + value: obj[key]
  738 + };
  739 + });
  740 + },
  741 +
  742 + _selectDataUrl : function(){
  743 + this.async(function () {
  744 + if(this.$.list.selectedItem) {
  745 +
  746 + var metas = JSON.parse(this.$.list.selectedItem.metas);
  747 + var html = "<span style=\"color: #2196F3; font-weight: bold;\">" + this.$.list.selectedItem.resource_name + "</span><br><br>";
  748 + /*font-weight: bold;*/
  749 + /*line-height: 48px;*/
  750 + for(var i in metas)
  751 + html += "<b>" + i + ":</b> " + metas[i] + "<br>";
  752 + this.$.info.innerHTML = html;
  753 +
  754 + this.dataUrl = this.$.list.selectedItem.url;
  755 +// var url = this.$.list.selectedItem.url;
  756 +
  757 +// url = utility_getResourceUrl(url);
  758 +
  759 +// // Check if CKAN
  760 +// var strDatasetPos = url.indexOf('/dataset/');
  761 +// var strResourcePos = (strDatasetPos >= 0) ? url.indexOf('/resource/') : -1;
  762 +// if (strDatasetPos >= 0 && strResourcePos > strDatasetPos) {
  763 +// var urlSegment1 = url.substring(0, strDatasetPos);
  764 +// var urlResourceEnd = url.indexOf('/', strResourcePos + 10);
  765 +// var resourceId = url.substring(strResourcePos + 10, urlResourceEnd);
  766 +// url = urlSegment1 + "/api/action/datastore_search?resource_id=" + resourceId;
  767 +// }
  768 +//
  769 +// // Check if OPENDATASOFT
  770 +// var strExploreDatasetPos = url.indexOf('/explore/dataset/');
  771 +// if (strExploreDatasetPos >= 0) {
  772 +// var urlSegment1 = url.substring(0, strExploreDatasetPos);
  773 +// var datasetEnd = url.indexOf(strExploreDatasetPos + 17, '/');
  774 +// var datasetId = url.substring(strExploreDatasetPos + 17, datasetEnd >= 0 ? datasetEnd : url.length);
  775 +// url = urlSegment1 + '/api/records/1.0/search?dataset=' + datasetId;
  776 +// }
  777 +
  778 +// this.dataUrl = this._addlimitUrl(url);
  779 +// this.dataUrl = url;
  780 + }
  781 + else {
  782 + this.dataUrl = "";
  783 + this.$.info.innerHTML = "";
  784 + }
  785 + }, 0);
  786 + },
  787 +
  788 + _selectDataUrl_treeMap : function(e) {
  789 +// this.dataUrl = this._addlimitUrl(e.detail.url);
  790 + this.dataUrl = e.detail.url;
  791 + },
  792 +
  793 + _fireDataUrl : function(){
  794 + this.fire('dataset-selection-controllet_data-url', {url: this.dataUrl});
  795 + },
  796 +
  797 +// _addlimitUrl : function(url){
  798 +// //CKAN --> action no limit
  799 +// if((url.indexOf("api/action") > -1) && !(url.indexOf("limit") > -1))
  800 +// {
  801 +// url += "&limit=99999";
  802 +// }
  803 +// //OpenDataSoft --> action no limit
  804 +// if((url.indexOf("api/records") > -1) && !(url.indexOf("rows") > -1)){
  805 +// url += "&rows=10000";
  806 +// }
  807 +// return url;
  808 +// },
  809 +
  810 + _resize : function(){
  811 + var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 16;
  812 + h = h - 64 - 8; //height with page scroller
  813 + $("#select_dataset_container").height(h);
  814 + }
  815 + });
  816 + });
  817 + </script>
  818 +</dom-module>
0 \ No newline at end of file 819 \ No newline at end of file
controllets/select-fields-controllet/select-fields-controllet.html
@@ -45,8 +45,14 @@ @@ -45,8 +45,14 @@
45 paper-item { 45 paper-item {
46 cursor: pointer; 46 cursor: pointer;
47 color: #000000; 47 color: #000000;
  48 + background: #FFFFFF;
48 margin: 4px; 49 margin: 4px;
49 - padding: 0px 12px; 50 + padding: 0 12px;
  51 + /*background: rgba(0, 0, 0, 0.12);*/
  52 + border-radius: 2px;
  53 + border: 1px solid #B6B6B6;
  54 +
  55 + /*background: #E0E0E0;*/
50 } 56 }
51 57
52 paper-item span { 58 paper-item span {
@@ -72,7 +78,11 @@ @@ -72,7 +78,11 @@
72 } 78 }
73 79
74 paper-item:hover:not(.iron-selected) { 80 paper-item:hover:not(.iron-selected) {
75 - background-color: rgba(0, 0, 0, 0.12); 81 + background-color: #BBDEFB;
  82 + }
  83 +
  84 + #menu, #menu_container {
  85 + background-color: #E0E0E0;
76 } 86 }
77 87
78 </style> 88 </style>
controllets/select-marker-map-controllet/select-marker-map-controllet.html
@@ -147,6 +147,7 @@ @@ -147,6 +147,7 @@
147 type: Object, 147 type: Object,
148 value: new ol.layer.Tile({ 148 value: new ol.layer.Tile({
149 title: 'Global Imagery', 149 title: 'Global Imagery',
  150 + visible: false,
150 source: new ol.source.BingMaps({ 151 source: new ol.source.BingMaps({
151 key : "AiAjdlCagGtE5269Z4YP3e3VtMkzzAKvowq5cQadahNZjVxttUxdDS40u91Uv8qP", 152 key : "AiAjdlCagGtE5269Z4YP3e3VtMkzzAKvowq5cQadahNZjVxttUxdDS40u91Uv8qP",
152 imagerySet: 'AerialWithLabels' 153 imagerySet: 'AerialWithLabels'
controllets/select-visualization-controllet/select-datalet-inputs.html deleted
1 -<link rel="import" href="../../bower_components/polymer/polymer.html" />  
2 -  
3 -<link rel="import" href="../../bower_components/paper-material/paper-material.html" />  
4 -  
5 -<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">  
6 -<link rel="import" href="../../bower_components/paper-menu/paper-menu.html">  
7 -<link rel="import" href="../../bower_components/paper-item/paper-item.html">  
8 -  
9 -<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">  
10 -<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">  
11 -<link rel="import" href="../../bower_components/iron-icon/iron-icon.html">  
12 -  
13 -<dom-module id="select-datalet-inputs">  
14 -  
15 - <template>  
16 -  
17 - <style is="custom-style">  
18 - :host {  
19 - --paper-dropdown-menu-icon: {  
20 - color: #2196F3;  
21 - };  
22 - }  
23 -  
24 - #inputs_container {  
25 - font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;  
26 - font-size: 16px;  
27 -  
28 - height: 100%;  
29 - width: 258px;  
30 - }  
31 -  
32 - .inputs{  
33 - position: relative;  
34 - }  
35 -  
36 - .input_header {  
37 - height: 32px;  
38 - padding-top: 16px;  
39 - text-align: center;  
40 - font-weight: 700;  
41 - background-color: #B6B6B6;  
42 - }  
43 -  
44 - #expert_container {  
45 - display: none;  
46 - }  
47 -  
48 - #expert_header {  
49 - height: 32px;  
50 - padding-top: 16px;  
51 - margin-top: 8px;  
52 - text-align: center;  
53 - font-weight: 700;  
54 - color: #00BCD4;  
55 - cursor: pointer;  
56 -  
57 - display: none;  
58 - }  
59 -  
60 - .info_button {  
61 - position: absolute;  
62 - top: 18px;  
63 - right: 0px;  
64 - }  
65 -  
66 - paper-dropdown-menu {  
67 - height: 48px;  
68 - width: 210px;;  
69 - padding-left: 8px;  
70 - padding-bottom: 8px;  
71 - --paper-input-container-focus-color: #2196F3;  
72 - }  
73 -  
74 - paper-item.iron-selected {  
75 - background-color: #2196F3;  
76 - color: #FFFFFF;  
77 - }  
78 -  
79 - paper-icon-button {  
80 - color: #2196F3;  
81 - --paper-icon-button-ink-color: #2196F3;  
82 - margin: 0px;  
83 - }  
84 - </style>  
85 -  
86 - <paper-material id="inputs_container" elevation="5">  
87 -  
88 - <div class="input_header"><span id="inputs"></span></div>  
89 -  
90 - <template is="dom-repeat" items="{{inputs}}" index-as="ddl_index">  
91 - <div class="inputs">  
92 - <paper-dropdown-menu id={{ddl_index}} label={{_getLabelName(item.name)}}>  
93 - <paper-menu class="dropdown-content">  
94 - <template is="dom-repeat" items={{fields}}>  
95 - <paper-item id={{index}} on-tap="_addInput">{{_fieldName(item)}}</paper-item>  
96 - </template>  
97 - </paper-menu>  
98 - </paper-dropdown-menu>  
99 - <div class="info_button">  
100 - <paper-icon-button id="{{ddl_index}}" on-click="_setOrders" icon="unfold-more" title=""></paper-icon-button>  
101 - </div>  
102 - </div>  
103 - </template>  
104 -  
105 - <div id="expert_header" on-click="_showExpertMode"><span id="groupBy"></span></div>  
106 -  
107 - <div id="expert_container">  
108 -  
109 - <div class="inputs">  
110 - <paper-dropdown-menu id="group_by" disabled>  
111 - <paper-menu class="dropdown-content">  
112 - <template is="dom-repeat" items={{groupableFields}}>  
113 - <paper-item id={{index}} on-tap="_setAggregatorsFields">{{_fieldName(item)}}</paper-item>  
114 - </template>  
115 - </paper-menu>  
116 - </paper-dropdown-menu>  
117 - </div>  
118 -  
119 - <template is="dom-repeat" items="{{aggregateFields}}" as="field">  
120 - <div class="inputs">  
121 - <paper-dropdown-menu id="calculate_{{index}}" label="{{_calculateLabel()}}">  
122 - <paper-menu class="dropdown-content">  
123 - <template is="dom-repeat" items="{{functions}}">  
124 - <paper-item id={{index}} on-tap="_setAggregators">{{_operationName(index)}} : {{_fieldName(field)}}</paper-item>  
125 - </template>  
126 - </paper-menu>  
127 - </paper-dropdown-menu>  
128 - </div>  
129 - </template>  
130 -  
131 - </div>  
132 -  
133 - </paper-material>  
134 -  
135 -  
136 - </template>  
137 -  
138 - <script>  
139 -  
140 - Polymer({  
141 -  
142 - is : 'select-datalet-inputs',  
143 -  
144 - properties : {  
145 -  
146 - //INPUT  
147 - fields : {type : Array, value : []},  
148 -  
149 - //OUTPUT  
150 - selectedFields : {type : Array, value : []},  
151 - aggregators : {type : Array, value : []},  
152 - orders : {type : Array, value : []},  
153 -  
154 - expert : {  
155 - type : Boolean,  
156 - value : false  
157 - },  
158 -  
159 - functions : {  
160 - type : Array,  
161 - value : ["COUNT", "SUM", "MIN", "MAX", "AVG", "FIRST", "LAST"]  
162 - },  
163 -  
164 - inputs : {  
165 - type : Array,  
166 - value : []  
167 - },  
168 -  
169 - groupableFields : {  
170 - type : Array,  
171 - value : []  
172 - },  
173 -  
174 - aggregateFields : {  
175 - type : Array,  
176 - value : []  
177 - }  
178 -  
179 - },  
180 -  
181 - ready : function() {  
182 - $(this.$.inputs_container).perfectScrollbar();  
183 - },  
184 -  
185 - attached : function() {  
186 - this._translate();  
187 - },  
188 -  
189 - _preselectInputs : function(fields, aggregators, orders) {  
190 - aggregators = JSON.parse(aggregators);  
191 - orders = JSON.parse(orders);  
192 -  
193 - this.selectedFields = this._copy(fields);  
194 -  
195 - var ddls = this.$.inputs_container.querySelectorAll("paper-dropdown-menu");  
196 -  
197 - for (var i = 0; i < fields.length; i++)  
198 - $(ddls[i]).find("paper-menu")[0].select(i+1);  
199 -  
200 - if(orders.length > 0) {  
201 - this.orders = this._copy(orders);//wrong  
202 - }  
203 -  
204 - if(aggregators.length > 0) {  
205 -  
206 - this.$.group_by.removeAttribute("disabled");  
207 - this._showExpertMode();  
208 -  
209 - var groupableFields = [];  
210 - for (var i = 0; i < this.selectedFields.length; i++) {  
211 - if(this.selectedFields[i])  
212 - groupableFields.push(this.selectedFields[i]);  
213 - }  
214 - this.groupableFields = this._copy(groupableFields);  
215 - this.aggregateFields = [];  
216 -  
217 - var index = this.groupableFields.indexOf(aggregators[0].field);  
218 -  
219 - this.async(function () {  
220 - var menu = $(this.$.group_by).find("paper-menu")[0];  
221 - menu.select(index);  
222 - }, 0);  
223 -  
224 - var aggregateFields = [];  
225 - for (var i = 0; i < this.groupableFields.length; i++) {  
226 - if (i != index && this.groupableFields[i])  
227 - aggregateFields.push(this.groupableFields[i]);  
228 - }  
229 - this.aggregateFields = this._copy(aggregateFields);  
230 -  
231 - this.async(function() {  
232 - var ddls = document.getElementsByTagName("paper-dropdown-menu");  
233 - var j = 1;  
234 - for (var i = 0; i < ddls.length; i++){  
235 - var id = ddls[i].id;  
236 - if(id.indexOf("calculate") > -1) {  
237 - var ii = this.functions.indexOf(aggregators[j].operation);  
238 - j++;  
239 - $(ddls[i]).find("paper-menu")[0].select(-1);  
240 - $(ddls[i]).find("paper-menu")[0].select(ii);  
241 - }  
242 - }  
243 -  
244 -// this._setAggregators();  
245 - this.aggregators = this._copy(aggregators);  
246 -  
247 - this.fireReady();  
248 - }, 0);  
249 - }  
250 - else  
251 - this.fireReady();  
252 - },  
253 -  
254 - getSelectedFields : function () {  
255 - return this.selectedFields.filter(function(field){ return field != "" });  
256 - },  
257 -  
258 - getAggregators : function () {  
259 - return this.aggregators;  
260 - },  
261 -  
262 - getOrders : function () {  
263 - return this.orders;  
264 - },  
265 -  
266 - setFields : function(fields) {  
267 - var temp = this._copy(fields);  
268 - temp.unshift("");  
269 -  
270 - if (JSON.stringify(this.fields) != JSON.stringify(temp)) {  
271 - this.fields = this._copy(temp);  
272 - this.$.expert_header.style.display = "block";  
273 - this._reset();  
274 - }  
275 - },  
276 -  
277 - setInputs : function(inputs) {  
278 - var temp = this._copy(inputs);  
279 - if (inputs.constructor != Array && inputs.name == "GEOJSON") {  
280 - temp = [];  
281 - temp.push(inputs);  
282 - }  
283 - else if (inputs.constructor != Array) {//table --> 1 input  
284 - var name = inputs.name;  
285 - var description = inputs.description;  
286 - var selection = inputs.selection;  
287 - temp = [];  
288 - for (var i = 1; i < this.fields.length; i++)  
289 - temp.push({name: name + " " + i, description: description, selection: selection});  
290 - }  
291 - else if (inputs.length > 2 && inputs[2].selection == "*") {//map --> multiple baloon content  
292 - name = inputs[2].name;  
293 - description = inputs[2].description;  
294 - selection = inputs[2].selection;  
295 - temp = [inputs[0], inputs[1]];  
296 - temp.push({name: name + " 1", description: description, selection: selection});  
297 - for (var i = 4; i < this.fields.length; i++)  
298 - temp.push({name: name + " " +(i-2), description: description, selection: selection});  
299 - }  
300 -// else if (inputs.length > 4 && inputs[4].selection == "+") {//bubble --> multiple bubble content  
301 -// name = inputs[4].name;  
302 -// description = inputs[4].description;  
303 -// selection = inputs[4].selection;  
304 -// temp = [inputs[0], inputs[1], inputs[2], inputs[3]];  
305 -// temp.push({name: name + " 1", description: description, selection: selection});  
306 -// for (var i = 6; i < this.fields.length; i++)  
307 -// temp.push({name: name + " " + (i-4), description: description, selection: selection});  
308 -// }  
309 -  
310 - else if (inputs.length == 2 && inputs[1].selection == "*") {//  
311 - name = inputs[1].name;  
312 - description = inputs[1].description;  
313 - selection = inputs[1].selection;  
314 - temp = [inputs[0]];  
315 - temp.push({name: name + " 1", description: description, selection: selection});  
316 - for (var i = 3; i < this.fields.length; i++)  
317 - temp.push({name: name + " " +(i-1), description: description, selection: selection});  
318 - }  
319 -  
320 - else if (inputs.length == 3 && inputs[1].selection == "*") {//  
321 - name = inputs[1].name;  
322 - description = inputs[1].description;  
323 - selection = inputs[1].selection;  
324 - temp = [inputs[0]];  
325 - temp.push({name: name + " 1", description: description, selection: selection});  
326 - for (var i = 3; i < this.fields.length; i++)  
327 - temp.push({name: name + " " +(i-1), description: description, selection: selection});  
328 -  
329 - temp.push(inputs[2]);  
330 - }  
331 -  
332 - this.inputs = this._copy(temp);  
333 -  
334 - this.selectedFields = new Array(temp.length);  
335 -  
336 - this.selectedFields2 = new Array(temp.length);  
337 - },  
338 -  
339 - fireReady : function() {  
340 - if(this._isReady())  
341 - this.fire('select_visualization_inputs_ready', {isReady: true});  
342 - else  
343 - this.fire('select_visualization_inputs_ready', {isReady: false});  
344 - },  
345 -  
346 - _isReady : function() {  
347 - var fire = true;  
348 - for (var i = 0; i < this.selectedFields.length; i++) {  
349 - if (!this.selectedFields[i] && this.inputs[i].selection != "+" && this.inputs[i].selection != "*" && this.inputs[i].selection != "?")  
350 - return false;  
351 - if(this.inputs[i].selection == "+")  
352 - fire = false;  
353 - }  
354 -  
355 - if(!fire) {  
356 - for (var i = 0; i < this.selectedFields.length; i++) {  
357 - if (this.selectedFields[i] && this.inputs[i].selection == "+") {  
358 - fire = true;  
359 - break;  
360 - }  
361 - }  
362 - }  
363 -  
364 - return fire;  
365 - },  
366 -  
367 - _reset : function() {  
368 - //this.fields = []; --> setFields  
369 - //this.inputs = []; --> setInputs  
370 - this.selectedFields = [];  
371 - this.aggregators = [];  
372 - //this.orders = []; --> _resetOrders  
373 - this._resetOrders();  
374 - this.expert = true;  
375 - this._showExpertMode();//expert --> false  
376 - this.groupableFields = [];  
377 - this.aggregateFields = [];  
378 -  
379 - this.async(function () {  
380 - //reset ddl  
381 - var ddls = this.$.inputs_container.getElementsByTagName("paper-dropdown-menu");  
382 - for (var i = 0; i < ddls.length; i++)  
383 - $(ddls[i]).find("paper-menu")[0].select(-1);  
384 - this.$.group_by.setAttribute("disabled", "");  
385 - //reset orders  
386 - this._resetOrders();  
387 - }, 1);  
388 - },  
389 -  
390 - _translate : function(){  
391 - this.$.inputs.innerHTML = ln["inputs_" + ln["localization"]];  
392 - this.$.groupBy.innerHTML = ln["expertGroupBy_" + ln["localization"]];  
393 -  
394 - this.$.group_by.setAttribute("label", ln["groupBy_" + ln["localization"]]);  
395 - },  
396 -  
397 - _showExpertMode : function() {  
398 - if(!this.expert) {  
399 - this.$.expert_header.style.color = "#000000";  
400 - this.$.expert_header.style.background = "#B6B6B6";  
401 - this.$.expert_container.style.display = "block";  
402 - }  
403 - else {  
404 - this.$.expert_header.style.color = "#00BCD4";  
405 - this.$.expert_header.style.background = "#FFFFFF";  
406 - this.$.expert_container.style.display = "none";  
407 - }  
408 -  
409 - this.expert = !this.expert;  
410 - },  
411 -  
412 - getFields : function () {  
413 - return this.selectedFields2;  
414 - },  
415 -  
416 - _addInput : function(e){  
417 - var selectedFields = this._copy(this.selectedFields);  
418 -  
419 - var ddl_index = $(e.target).parents("paper-dropdown-menu")[0].id;  
420 -  
421 - var index = e.target.id;  
422 - selectedFields[ddl_index] = this.fields[index];  
423 -  
424 - this.selectedFields = this._copy(selectedFields);  
425 -  
426 -// console.log(this.inputs[ddl_index].name);  
427 - this.selectedFields2[ddl_index] = {field: this.fields[index], input: this.inputs[ddl_index].name};  
428 -  
429 - if(!this._isReady()) {  
430 - this.$.group_by.setAttribute("disabled", "");  
431 -  
432 - this.groupableFields = [];  
433 - this.aggregateFields = [];  
434 - }  
435 - else {  
436 - this.$.group_by.removeAttribute("disabled");  
437 -  
438 - var groupableFields = [];  
439 - for (var i = 0; i < this.selectedFields.length; i++) {  
440 - if(this.selectedFields[i])  
441 - groupableFields.push(this.selectedFields[i]);  
442 - }  
443 - this.groupableFields = this._copy(groupableFields);  
444 - this.aggregateFields = [];  
445 -  
446 - this.async(function () {  
447 - var menu = $(this.$.group_by).find("paper-menu")[0];  
448 - menu.select(-1);  
449 - }, 0);  
450 - }  
451 - this._setAggregators();  
452 - },  
453 -  
454 - _setAggregatorsFields : function(e){  
455 - var index = e.target.id;  
456 - var aggregateFields = [];  
457 - for (var i = 0; i < this.groupableFields.length; i++) {  
458 - if (i != index && this.groupableFields[i])  
459 - aggregateFields.push(this.groupableFields[i]);  
460 - }  
461 - this.aggregateFields = this._copy(aggregateFields);  
462 -  
463 - this.async(function() {  
464 - var ddls = document.getElementsByTagName("paper-dropdown-menu");  
465 - for (var i = 0; i < ddls.length; i++){  
466 - var id = ddls[i].id;  
467 - if(id.indexOf("calculate") > -1) {  
468 - $(ddls[i]).find("paper-menu")[0].select(-1);  
469 - $(ddls[i]).find("paper-menu")[0].select(0);  
470 - }  
471 - }  
472 -  
473 - this._setAggregators();  
474 - }, 0);  
475 - },  
476 -  
477 - _setAggregators : function(){  
478 - this.async(function() {  
479 - this.aggregators = [];  
480 -  
481 - this._resetOrders();  
482 -  
483 - var gb_menu = $(this.$.group_by).find("paper-menu")[0];  
484 - var groupByField = this.groupableFields[gb_menu.selected];  
485 - if(groupByField) {  
486 - this.aggregators.push({"field": groupByField, "operation": "GROUP BY"});  
487 - for (var i = 0; i < this.aggregateFields.length; i++){  
488 - var c_menu = $("#calculate_"+i).find("paper-menu")[0];  
489 - var operationIndex = c_menu.selectedItem.id;  
490 - this.aggregators.push({"field": this.aggregateFields[i], "operation": this.functions[operationIndex]})  
491 - }  
492 - }  
493 -  
494 - this.fireReady();  
495 - }, 1);  
496 - },  
497 -  
498 - _setOrders : function(e){  
499 - var t = e.target;  
500 - if(t.tagName.indexOf("IRON-ICON") > -1)  
501 - t = $(e.target).parents("paper-icon-button")[0];  
502 -  
503 - var icon = t.getAttribute("icon");  
504 - var id = t.getAttribute("id");  
505 - var field = this.selectedFields[id];  
506 -  
507 - if(icon.indexOf("unfold-more") > -1){  
508 - t.setAttribute("icon", "expand-less");  
509 - t.setAttribute("title", ln["sortAscending_" + ln["localization"]]);  
510 - var orders = this.orders.filter(function (el) { return el.field !== field; });  
511 - orders.unshift({"field": field, "operation": "ASC"});  
512 - this.orders = this._copy(orders);  
513 - }  
514 - else if(icon.indexOf("expand-less") > -1){  
515 - t.setAttribute("icon", "expand-more");  
516 - t.setAttribute("title", ln["sortDescending_" + ln["localization"]]);  
517 - var orders = this.orders.filter(function (el) { return el.field !== field; });  
518 - orders.unshift({"field": field, "operation": "DESC"});  
519 - this.orders = this._copy(orders);  
520 - }  
521 - else if(icon.indexOf("expand-more") > -1){  
522 - t.setAttribute("icon", "unfold-more");  
523 - t.setAttribute("title", ln["unsort_" + ln["localization"]]);  
524 - var orders = this.orders.filter(function (el) { return el.field !== field; });  
525 - this.orders = this._copy(orders);  
526 - }  
527 -  
528 - this.fireReady();  
529 - },  
530 -  
531 - _resetOrders : function(){  
532 - var icons = this.$.inputs_container.querySelectorAll("paper-icon-button");  
533 - for (var i = 0; i < icons.length; i++){  
534 - icons[i].setAttribute("icon", "unfold-more");  
535 - icons[i].setAttribute("title", ln["unsort_" + ln["localization"]]);  
536 - }  
537 - this.orders = [];  
538 - },  
539 -  
540 - _fieldName : function(field) {  
541 - return field.substring(field.lastIndexOf(",")+1, field.length);  
542 - },  
543 -  
544 - _getLabelName: function(key) {  
545 - if(key.indexOf("Column") > -1) {  
546 - return ln["Column" + "_" +ln["localization"]] + key.slice(-2);  
547 - }  
548 - if(key.indexOf("Level") > -1) {  
549 - return ln["Level" + "_" +ln["localization"]] + key.slice(-2);  
550 - }  
551 - if(key.indexOf("BalloonContent") > -1) {  
552 - return ln["BalloonContent" + "_" +ln["localization"]] + key.slice(-2);  
553 - }  
554 -// if(key.indexOf("BubbleContent") > -1) {  
555 -// return ln["BubbleContent" + "_" +ln["localization"]] + key.slice(-2);  
556 -// }  
557 - if(key.indexOf("NumericYAxis") > -1) {  
558 - return ln["NumericYAxis" + "_" +ln["localization"]] + key.slice(-2);  
559 - }  
560 -  
561 - return ln[key + "_" +ln["localization"]];  
562 - },  
563 -  
564 - _operationName: function(index) {  
565 - var key = this.functions[index];  
566 - return ln[key + "_" +ln["localization"]];  
567 - },  
568 -  
569 - _calculateLabel: function() {  
570 - return ln["calculate" + "_" +ln["localization"]];  
571 - },  
572 -  
573 - _copy : function(o) {  
574 - var out, v, key;  
575 - out = Array.isArray(o) ? new Array(o.length) : {};  
576 - for (key in o) {  
577 - v = o[key];  
578 - out[key] = (typeof v === "object") ? this._copy(v) : v;  
579 - }  
580 - return out;  
581 - }  
582 -  
583 - });  
584 -  
585 - </script>  
586 -  
587 -</dom-module>  
588 \ No newline at end of file 0 \ No newline at end of file
controllets/select-visualization-controllet/select-datalet-inputs_series.html deleted
1 -<link rel="import" href="../../bower_components/polymer/polymer.html" />  
2 -  
3 -<link rel="import" href="../../bower_components/paper-material/paper-material.html" />  
4 -  
5 -<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">  
6 -<link rel="import" href="../../bower_components/paper-menu/paper-menu.html">  
7 -<link rel="import" href="../../bower_components/paper-item/paper-item.html">  
8 -  
9 -<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">  
10 -<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">  
11 -<link rel="import" href="../../bower_components/iron-icon/iron-icon.html">  
12 -  
13 -<dom-module id="select-datalet-inputs_series">  
14 -  
15 - <template>  
16 -  
17 - <style is="custom-style">  
18 - :host {  
19 - --paper-dropdown-menu-icon: {  
20 - color: #2196F3;  
21 - };  
22 - }  
23 -  
24 - #inputs_series_container {  
25 - font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;  
26 - font-size: 16px;  
27 -  
28 - height: 100%;  
29 - width: 258px;  
30 - }  
31 -  
32 - .inputs{  
33 - position: relative;  
34 - }  
35 -  
36 - .input_header {  
37 - height: 32px;  
38 - padding-top: 16px;  
39 - text-align: center;  
40 - font-weight: 700;  
41 - background-color: #B6B6B6;  
42 - }  
43 -  
44 - #expert_container {  
45 - display: none;  
46 - }  
47 -  
48 - #expert_header {  
49 - height: 32px;  
50 - padding-top: 16px;  
51 - margin-top: 8px;  
52 - text-align: center;  
53 - font-weight: 700;  
54 - color: #00BCD4;  
55 - cursor: pointer;  
56 - }  
57 -  
58 - .info_button {  
59 - position: absolute;  
60 - top: 18px;  
61 - right: 0px;  
62 - }  
63 -  
64 - paper-dropdown-menu {  
65 - height: 48px;  
66 - width: 210px;;  
67 - padding-left: 8px;  
68 - padding-bottom: 8px;  
69 - --paper-input-container-focus-color: #2196F3;  
70 - }  
71 -  
72 - paper-item.iron-selected {  
73 - background-color: #2196F3;  
74 - color: #FFFFFF;  
75 - }  
76 -  
77 - paper-icon-button {  
78 - color: #2196F3;  
79 - --paper-icon-button-ink-color: #2196F3;  
80 - margin: 0px;  
81 - }  
82 - </style>  
83 -  
84 - <paper-material id="inputs_series_container" elevation="5">  
85 -  
86 - <div class="input_header"><span id="inputs"></span></div>  
87 -  
88 - <template is="dom-repeat" items="{{inputs}}" index-as="ddl_index">  
89 - <div class="inputs">  
90 - <paper-dropdown-menu id={{ddl_index}} label={{_getLabelName(item.name)}}>  
91 - <paper-menu class="dropdown-content">  
92 - <template is="dom-repeat" items={{fields}}>  
93 - <paper-item id={{index}} on-tap="_addInput">{{_fieldName(item)}}</paper-item>  
94 - </template>  
95 - </paper-menu>  
96 - </paper-dropdown-menu>  
97 - <div class="info_button">  
98 - <paper-icon-button id="{{ddl_index}}" on-click="_setOrders" icon="unfold-more" title=""></paper-icon-button>  
99 - </div>  
100 - </div>  
101 - </template>  
102 -  
103 - <div id="expert_header" on-click="_showExpertMode"><span id="groupBy"></span></div>  
104 -  
105 - <div id="expert_container">  
106 -  
107 - <div class="inputs">  
108 - <paper-dropdown-menu id="group_by" disabled>  
109 - <paper-menu class="dropdown-content">  
110 - <template is="dom-repeat" items={{groupableFields}}>  
111 - <paper-item id={{index}} on-tap="_setAggregatorsFields">{{_fieldName(item)}}</paper-item>  
112 - </template>  
113 - </paper-menu>  
114 - </paper-dropdown-menu>  
115 - <div class="info_button">  
116 - <paper-icon-button id="gb" on-click="_setOrders" icon="unfold-more" title="" disabled></paper-icon-button>  
117 - </div>  
118 - </div>  
119 -  
120 - <template is="dom-repeat" items="{{aggregateFields}}" as="field">  
121 - <div class="inputs">  
122 - <paper-dropdown-menu id="calculate_{{index}}" label="{{_calculateLabel()}}" disabled>  
123 - <paper-menu class="dropdown-content">  
124 - <template is="dom-repeat" items="{{functions}}">  
125 - <paper-item id={{index}} on-tap="_setAggregators">{{_operationName(index)}} : {{_fieldName(field)}}</paper-item>  
126 - </template>  
127 - </paper-menu>  
128 - </paper-dropdown-menu>  
129 - </div>  
130 - </template>  
131 -  
132 - </div>  
133 -  
134 - </paper-material>  
135 -  
136 -  
137 - </template>  
138 -  
139 - <script>  
140 -  
141 - Polymer({  
142 -  
143 - is : 'select-datalet-inputs_series',  
144 -  
145 - properties : {  
146 -  
147 - //INPUT  
148 - fields : {type : Array, value : []},  
149 -  
150 - //OUTPUT  
151 - selectedFields : {type : Array, value : ["", ""]},  
152 - aggregators : {type : Array, value : []},  
153 - orders : {type : Array, value : []},  
154 -  
155 - expert : {  
156 - type : Boolean,  
157 - value : false  
158 - },  
159 -  
160 - functions : {  
161 - type : Array,  
162 - value : ["COUNT", "SUM", "MIN", "MAX", "AVG", "FIRST", "LAST"]  
163 - },  
164 -  
165 - inputs : {  
166 - type : Array,  
167 - value : []  
168 - },  
169 -  
170 - groupableFields : {  
171 - type : Array,  
172 - value : []  
173 - },  
174 -  
175 - aggregateFields : {  
176 - type : Array,  
177 - value : [""]  
178 - }  
179 -  
180 - },  
181 -  
182 - ready : function() {  
183 - $(this.$.inputs_series_container).perfectScrollbar();  
184 - },  
185 -  
186 - attached : function() {  
187 - this._translate();  
188 - },  
189 -  
190 - _preselectInputs : function(fields, aggregators, orders) {  
191 - aggregators = JSON.parse(aggregators);  
192 - orders = JSON.parse(orders);  
193 -  
194 - //fields = [f1 gb(opt) f2] --> si puรฒ cambiare in f1 f2 gb ???  
195 -  
196 - this.selectedFields = this._copy(fields);  
197 -  
198 - var ddls = this.$.inputs_series_container.querySelectorAll("paper-dropdown-menu");  
199 -  
200 - $(ddls[0]).find("paper-menu")[0].select(1);  
201 - $(ddls[1]).find("paper-menu")[0].select(2);  
202 -  
203 - if(orders.length > 0) {  
204 - this.orders = this._copy(orders);//wrong  
205 - }  
206 -  
207 - if(aggregators.length > 0) {  
208 - if(fields.length == 2) {  
209 - this.selectedFields = [fields[0], fields[1]];  
210 -  
211 - this.$.group_by.removeAttribute("disabled");  
212 - $("#calculate_0")[0].removeAttribute("disabled");  
213 - $("#gb")[0].removeAttribute("disabled");  
214 - this._showExpertMode();  
215 -  
216 - var groupableFields = [];  
217 - for (var i = 0; i < this.fields.length; i++) {  
218 - if(this.fields[i] != this.selectedFields[1])  
219 - groupableFields.push(this.fields[i]);  
220 - }  
221 - this.groupableFields = this._copy(groupableFields);  
222 - this.aggregateFields = [this.selectedFields[1]];  
223 -  
224 - $(ddls[0]).find("paper-menu")[0].select(1);  
225 - $(ddls[1]).find("paper-menu")[0].select(2);  
226 -  
227 - this.async(function () {  
228 - var i = this.functions.indexOf(aggregators[1].operation);  
229 -  
230 - $(this.$.group_by).find("paper-menu")[0].select(1);  
231 - $("#calculate_0").find("paper-menu")[0].select(i);  
232 -  
233 -// this._setAggregators();//if dont --> $("#gb")[0].removeAttribute("disabled");  
234 - this.aggregators = this._copy(aggregators);  
235 -  
236 - this.fireReady();  
237 - }, 0);  
238 - }  
239 - else/*if(fields.length == 3)*/ {  
240 - this.selectedFields = [fields[0], fields[2]];  
241 -  
242 - this.$.group_by.removeAttribute("disabled");  
243 - $("#calculate_0")[0].removeAttribute("disabled");  
244 - $("#gb")[0].removeAttribute("disabled");  
245 - this._showExpertMode();  
246 -  
247 - var groupableFields = [];  
248 - for (var i = 0; i < this.fields.length; i++) {  
249 - if(this.fields[i] != this.selectedFields[1])  
250 - groupableFields.push(this.fields[i]);  
251 - }  
252 - this.groupableFields = this._copy(groupableFields);  
253 - this.aggregateFields = [this.selectedFields[1]];  
254 -  
255 - $(ddls[0]).find("paper-menu")[0].select(1);  
256 - $(ddls[1]).find("paper-menu")[0].select(3);  
257 -  
258 - this.async(function () {  
259 - var i = this.functions.indexOf(aggregators[2].operation);  
260 -  
261 - $(this.$.group_by).find("paper-menu")[0].select(2);  
262 - $("#calculate_0").find("paper-menu")[0].select(i);  
263 -  
264 -// this._setAggregators();//if dont --> $("#gb")[0].removeAttribute("disabled");  
265 - this.aggregators = this._copy(aggregators);  
266 -  
267 - this.fireReady();  
268 - }, 0);  
269 - }  
270 - }  
271 - else  
272 - this.fireReady();  
273 - },  
274 -  
275 - getSelectedFields : function () {  
276 - var gb_menu = $(this.$.group_by).find("paper-menu")[0];  
277 - var c_menu = $("#calculate_0").find("paper-menu")[0];  
278 -  
279 - if(gb_menu.selectedItem && c_menu.selectedItem && gb_menu.selectedItem.id != 0) {  
280 - var groupByField = this.groupableFields[gb_menu.selected];  
281 - if (groupByField != this.selectedFields[0])  
282 - return [this.selectedFields[0], groupByField, this.selectedFields[1]];  
283 - }  
284 - return this.selectedFields;  
285 - },  
286 -  
287 - getAggregators : function () {  
288 - return this.aggregators;  
289 - },  
290 -  
291 - getOrders : function () {  
292 - return this.orders;  
293 - },  
294 -  
295 - setFields : function(fields) {  
296 - var temp = this._copy(fields);  
297 - temp.unshift("");  
298 -  
299 - if (JSON.stringify(this.fields) != JSON.stringify(temp)) {  
300 - this.fields = this._copy(temp);  
301 - this._reset();  
302 - }  
303 - },  
304 -  
305 - getFields : function () {  
306 - return null;  
307 - },  
308 -  
309 - setInputs : function(inputs) {  
310 - this.inputs = this._copy(inputs);  
311 - },  
312 -  
313 - fireReady : function() {  
314 - if(this.selectedFields[0] != "" && this.selectedFields[1] != "")  
315 - this.fire('select_visualization_inputs_ready', {isReady: true});  
316 - else  
317 - this.fire('select_visualization_inputs_ready', {isReady: false});  
318 - },  
319 -  
320 - _reset : function() {  
321 - //this.fields = []; --> setFields  
322 - //this.inputs = []; --> setInputs  
323 - this.selectedFields = ["", ""];  
324 - this.aggregators = [];  
325 - //this.orders = []; --> _resetOrders  
326 - this.expert = true;  
327 - this._showExpertMode();//expert --> false  
328 - this.groupableFields = [];  
329 - this.aggregateFields = [""];  
330 -  
331 - this.async(function () {  
332 - //reset ddl  
333 - var ddls = this.$.inputs_series_container.getElementsByTagName("paper-dropdown-menu");  
334 - for (var i = 0; i < ddls.length; i++)  
335 - $(ddls[i]).find("paper-menu")[0].select(-1);  
336 - this.$.group_by.setAttribute("disabled", "");  
337 - $("#calculate_0")[0].setAttribute("disabled", "");  
338 - //reset orders  
339 - this._resetOrders();  
340 - }, 1);  
341 - },  
342 -  
343 - _translate : function(){  
344 - this.$.inputs.innerHTML = ln["inputs_" + ln["localization"]];  
345 - this.$.groupBy.innerHTML = ln["expertGroupBy_" + ln["localization"]];  
346 -  
347 - this.$.group_by.setAttribute("label", ln["groupBy_" + ln["localization"]]);  
348 - },  
349 -  
350 - _showExpertMode : function() {  
351 - if(!this.expert) {  
352 - this.$.expert_header.style.color = "#000000";  
353 - this.$.expert_header.style.background = "#B6B6B6";  
354 - this.$.expert_container.style.display = "block";  
355 - }  
356 - else {  
357 - this.$.expert_header.style.color = "#00BCD4";  
358 - this.$.expert_header.style.background = "#FFFFFF";  
359 - this.$.expert_container.style.display = "none";  
360 - }  
361 -  
362 - this.expert = !this.expert;  
363 - },  
364 -  
365 - _addInput : function(e){  
366 - var selectedFields = this._copy(this.selectedFields);  
367 -  
368 - var ddl_index = $(e.target).parents("paper-dropdown-menu")[0].id;  
369 - var index = e.target.id;  
370 - selectedFields[ddl_index] = this.fields[index];  
371 -  
372 - this.selectedFields = this._copy(selectedFields);  
373 -  
374 - if(this.selectedFields[0] == "" || this.selectedFields[1] == "") {  
375 - this.$.group_by.setAttribute("disabled", "");  
376 - $("#calculate_0")[0].setAttribute("disabled", "");  
377 -  
378 - this.groupableFields = [];  
379 - this.aggregateFields = [""];  
380 - var menu = $("#calculate_0").find("paper-menu")[0];  
381 - menu.select(-1);  
382 - }  
383 - else {  
384 - this.$.group_by.removeAttribute("disabled");  
385 - $("#calculate_0")[0].removeAttribute("disabled");  
386 -  
387 - var groupableFields = [];  
388 - for (var i = 0; i < this.fields.length; i++) {  
389 - if(this.fields[i] != this.selectedFields[1])  
390 - groupableFields.push(this.fields[i]);  
391 - }  
392 - this.groupableFields = this._copy(groupableFields);  
393 - this.aggregateFields = [this.selectedFields[1]];  
394 -  
395 - this.async(function () {  
396 - var menu = $(this.$.group_by).find("paper-menu")[0];  
397 - menu.select(-1);  
398 - var menu = $("#calculate_0").find("paper-menu")[0];  
399 - //var selected = menu.selected;  
400 - menu.select(-1);  
401 - //menu.select(selected);  
402 - }, 0);  
403 - }  
404 - this._setAggregators();  
405 - },  
406 -  
407 - _setAggregatorsFields : function(){  
408 - this.async(function() {  
409 - var c_menu = $("#calculate_0").find("paper-menu")[0];  
410 - var selected = c_menu.selected > 0 ? c_menu.selected : 0;  
411 - c_menu.select(-1);  
412 - c_menu.select(selected);  
413 -  
414 - this._setAggregators();  
415 - }, 0);  
416 - },  
417 -  
418 - _setAggregators : function(){  
419 - this.async(function() {  
420 - this.aggregators = [];  
421 -  
422 - this._resetOrders();  
423 -  
424 - $("#gb")[0].setAttribute("disabled", "");  
425 -  
426 - var gb_menu = $(this.$.group_by).find("paper-menu")[0];  
427 - var c_menu = $("#calculate_0").find("paper-menu")[0];  
428 -  
429 - if(gb_menu.selectedItem && c_menu.selectedItem && gb_menu.selectedItem.id != 0) {  
430 - var groupByField = this.groupableFields[gb_menu.selected];  
431 - var operationIndex = c_menu.selectedItem.id;  
432 -  
433 - if (groupByField == this.selectedFields[0]){// X Axis field  
434 - this.aggregators.push({"field": groupByField, "operation": "GROUP BY"});  
435 - }  
436 - else{  
437 - $("#gb")[0].removeAttribute("disabled");  
438 - this.aggregators.push({"field": this.selectedFields[0], "operation": "GROUP BY"});  
439 - this.aggregators.push({"field": groupByField, "operation": "GROUP BY"});  
440 - }  
441 -  
442 - this.aggregators.push({"field": this.selectedFields[1], "operation": this.functions[operationIndex]});  
443 - }  
444 -  
445 - this.fireReady();  
446 - }, 0);  
447 - },  
448 -  
449 - _setOrders : function(e){  
450 - var t = e.target;  
451 - if(t.tagName.indexOf("IRON-ICON") > -1)  
452 - t = $(e.target).parents("paper-icon-button")[0];  
453 -  
454 - var icon = t.getAttribute("icon");  
455 - var id = t.getAttribute("id");  
456 - var field;  
457 -  
458 - if(id == "gb"){  
459 - var gb_menu = $(this.$.group_by).find("paper-menu")[0];  
460 - field = this.groupableFields[gb_menu.selected];  
461 - }  
462 - else {  
463 - field = this.selectedFields[id];  
464 - }  
465 -  
466 - if(icon.indexOf("unfold-more") > -1){  
467 - t.setAttribute("icon", "expand-less");  
468 - t.setAttribute("title", ln["sortAscending_" + ln["localization"]]);  
469 - var orders = this.orders.filter(function (el) { return el.field !== field; });  
470 - orders.unshift({"field": field, "operation": "ASC"});  
471 - this.orders = this._copy(orders);  
472 - }  
473 - else if(icon.indexOf("expand-less") > -1){  
474 - t.setAttribute("icon", "expand-more");  
475 - t.setAttribute("title", ln["sortDescending_" + ln["localization"]]);  
476 - var orders = this.orders.filter(function (el) { return el.field !== field; });  
477 - orders.unshift({"field": field, "operation": "DESC"});  
478 - this.orders = this._copy(orders);  
479 - }  
480 - else if(icon.indexOf("expand-more") > -1){  
481 - t.setAttribute("icon", "unfold-more");  
482 - t.setAttribute("title", ln["unsort_" + ln["localization"]]);  
483 - var orders = this.orders.filter(function (el) { return el.field !== field; });  
484 - this.orders = this._copy(orders);  
485 - }  
486 -  
487 - this.fireReady();  
488 - },  
489 -  
490 - _resetOrders : function(){  
491 - var icons = this.$.inputs_series_container.querySelectorAll("paper-icon-button");  
492 - for (var i = 0; i < icons.length; i++){  
493 - icons[i].setAttribute("icon", "unfold-more");  
494 - icons[i].setAttribute("title", ln["unsort_" + ln["localization"]]);  
495 - }  
496 - this.orders = [];  
497 - },  
498 -  
499 - _fieldName : function(field) {  
500 - return field.substring(field.lastIndexOf(",")+1, field.length);  
501 - },  
502 -  
503 - _getLabelName: function(key) {  
504 - return ln[key + "_" +ln["localization"]];  
505 - },  
506 -  
507 - _operationName: function(index) {  
508 - var key = this.functions[index];  
509 - return ln[key + "_" +ln["localization"]];  
510 - },  
511 -  
512 - _calculateLabel: function() {  
513 - return ln["calculate" + "_" +ln["localization"]];  
514 - },  
515 -  
516 - _copy : function(o) {  
517 - var out, v, key;  
518 - out = Array.isArray(o) ? new Array(o.length) : {};  
519 - for (key in o) {  
520 - v = o[key];  
521 - out[key] = (typeof v === "object") ? this._copy(v) : v;  
522 - }  
523 - return out;  
524 - }  
525 -  
526 - });  
527 -  
528 - </script>  
529 -  
530 -</dom-module>  
531 \ No newline at end of file 0 \ No newline at end of file
controllets/select-visualization-controllet/select-datalet-options.html deleted
1 -<link rel="import" href="../../bower_components/polymer/polymer.html" />  
2 -  
3 -<link rel="import" href="../../bower_components/paper-material/paper-material.html" />  
4 -  
5 -<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">  
6 -<link rel="import" href="../../bower_components/paper-menu/paper-menu.html">  
7 -<link rel="import" href="../../bower_components/paper-item/paper-item.html">  
8 -  
9 -<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">  
10 -<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">  
11 -<link rel="import" href="../../bower_components/iron-icon/iron-icon.html">  
12 -  
13 -<link rel="import" href="../../bower_components/paper-input/paper-textarea.html">  
14 -<link rel="import" href="../../bower_components/paper-input/paper-input.html">  
15 -  
16 -<link rel="import" href="../../bower_components/paper-dialog/paper-dialog.html">  
17 -  
18 -<dom-module id="select-datalet-options">  
19 -  
20 - <template>  
21 -  
22 - <style is="custom-style">  
23 - :host {  
24 - --paper-dropdown-menu-icon: {  
25 - color: #2196F3;  
26 - };  
27 - }  
28 -  
29 - #select_datalet_options_container {  
30 - font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;  
31 - font-size: 16px;  
32 -  
33 - /*height: 100vh;*/  
34 - height: 100%;  
35 - width: 258px;  
36 - }  
37 -  
38 - .inputs{  
39 - position: relative;  
40 - }  
41 -  
42 - .input_header {  
43 - height: 32px;  
44 - padding-top: 16px;  
45 - text-align: center;  
46 - font-weight: 700;  
47 - background-color: #B6B6B6;  
48 - }  
49 -  
50 - .info_button {  
51 - position: absolute;  
52 - top: 18px;  
53 - right: 0px;  
54 - }  
55 -  
56 - #dialog_info_input {  
57 - display: flex;  
58 - flex-direction: column;  
59 - color: #000000;  
60 - border: 2px solid #2196F3;  
61 - background-color: #E0E0E0;  
62 - min-width: 244px;  
63 - padding: 8px;  
64 - }  
65 -  
66 - #dialog_name{  
67 - font-size: 24px;  
68 - line-height: 24px;  
69 - font-weight: 700;  
70 - padding: 0px;  
71 - margin: 0px;  
72 - }  
73 -  
74 - #dialog_description{  
75 -  
76 - font-size: 16px;  
77 - line-height: 16px;  
78 - font-weight: normal;  
79 - padding: 0px;  
80 - margin: 8px 0px 0px 0px;  
81 - }  
82 -  
83 - paper-dropdown-menu {  
84 - height: 48px;  
85 - width: 210px;;  
86 - padding-left: 8px;  
87 - padding-bottom: 8px;  
88 - --paper-input-container-focus-color: #2196F3;  
89 - }  
90 -  
91 - paper-item.iron-selected {  
92 - background-color: #2196F3;  
93 - color: #FFFFFF;  
94 - }  
95 -  
96 - paper-icon-button {  
97 - color: #2196F3;  
98 - --paper-icon-button-ink-color: #2196F3;  
99 - margin: 0px;  
100 - }  
101 -  
102 - paper-input {  
103 - display: inline-block;  
104 - height: 48px;  
105 - /*padding: 0px 8px;*/  
106 - width: 210px;  
107 - padding-left: 8px;  
108 - padding-bottom: 8px;  
109 - --paper-input-container-focus-color: #2196F3;  
110 - }  
111 -  
112 - paper-input.base_input {  
113 - width: 242px;  
114 - }  
115 -  
116 - paper-textarea {  
117 - width: 242px;  
118 - padding-left: 8px;  
119 - padding-bottom: 4px;  
120 - --paper-input-container-focus-color: #2196F3;  
121 - }  
122 - </style>  
123 -  
124 - <paper-material id="select_datalet_options_container" elevation="5">  
125 -  
126 - <div class="input_header"><span id="baseInfo"></span></div>  
127 -  
128 - <div class="inputs">  
129 - <paper-input id="base_title" maxlength="32" class="base_input" on-change="_updateParams" value=""></paper-input>  
130 - </div>  
131 -  
132 - <div class="inputs">  
133 - <paper-textarea id="base_description" maxlength="100" class="base_input" on-change="_updateParams" value=""></paper-textarea>  
134 - </div>  
135 -  
136 - <div class="input_header"><span id="layouts"></span></div>  
137 -  
138 - <template is="dom-repeat" items={{options}} index-as="index">  
139 - <div class="inputs">  
140 - <template is="dom-if" if="{{_checkType(item.type, 'TEXT')}}">  
141 - <paper-input label={{_getLabelName(item.name)}} on-change="_updateParams"></paper-input>  
142 - </template>  
143 -  
144 - <template is="dom-if" if="{{_checkType(item.type, 'LIST')}}">  
145 - <paper-dropdown-menu label={{_getLabelName(item.name)}}>  
146 - <paper-menu class="dropdown-content" selected = 0>  
147 - <!--<paper-item on-tap="_updateParams"></paper-item>-->  
148 - <template is="dom-repeat" items={{item.list.item}}>  
149 - <paper-item id={{index}} on-tap="_updateParams">{{item}}</paper-item>  
150 - </template>  
151 - </paper-menu>  
152 - </paper-dropdown-menu>  
153 - </template>  
154 -  
155 - <div class="info_button">  
156 - <paper-icon-button id={{item.name}} on-click="_showInfo" icon="info-outline" title="{{_getLabelName(item.name)}} info"></paper-icon-button>  
157 - </div>  
158 - </div>  
159 - </template>  
160 -  
161 - </paper-material>  
162 -  
163 - <paper-dialog id="dialog_info_input">  
164 - <span id="dialog_name"></span>  
165 - <span id="dialog_description"></span>  
166 - </paper-dialog>  
167 -  
168 - </template>  
169 -  
170 - <script>  
171 -  
172 - Polymer({  
173 -  
174 - is : 'select-datalet-options',  
175 -  
176 - properties : {  
177 -  
178 - options : {  
179 - type : Array,  
180 - value : []  
181 - },  
182 -  
183 - params : {  
184 - type : Object,  
185 - value : {}  
186 - }  
187 -  
188 - },  
189 -  
190 - ready : function() {  
191 - $(this.$.select_datalet_options_container).perfectScrollbar();  
192 - },  
193 -  
194 - attached : function() {  
195 - this._translate();  
196 - },  
197 -  
198 - _preselectOptions : function(params) {  
199 - var textarea = this.$.select_datalet_options_container.querySelectorAll("paper-textarea");  
200 - textarea[0].value = params["description"];  
201 -  
202 - var inputs = this.$.select_datalet_options_container.querySelectorAll("paper-input");  
203 - inputs[0].value = params["title"];  
204 -  
205 - for (var i = 1; i < inputs.length; i++)  
206 - if(params[this.options[i - 1].name])  
207 - inputs[i].value = params[this.options[i - 1].name];  
208 -  
209 - this._updateParams();  
210 -  
211 -// var menus = this.$.select_datalet_options_container.querySelectorAll("paper-menu");  
212 -// var ddls = this.$.select_datalet_options_container.querySelectorAll("paper-dropdown-menu");  
213 -// for (var i = 0; i < ddls.length; i++) {  
214 -// var menu = $(ddls[i]).find("paper-menu")[0];  
215 -// if(params[ddls[i].label])  
216 -// menu.select(1);//select item con nome params[ddls[i].label]  
217 -// }  
218 - },  
219 -  
220 - setOptions : function(options) {  
221 - this.options = [];  
222 - this.params = [];  
223 - this.async(function() {  
224 - this.options = options;  
225 - }, 0);  
226 -  
227 -// this.params["title"] = "";  
228 -// this.params["description"] = "";  
229 - },  
230 -  
231 - checkOptions : function(options) {  
232 - if(options.length != this.options.length)  
233 - this.setOptions(options);  
234 - },  
235 -  
236 - getParams : function() {  
237 - return this.params;  
238 - },  
239 -  
240 - _reset : function() {  
241 - this.options = [];  
242 - this.params = [];  
243 - },  
244 -  
245 - _updateParams : function() {  
246 - this.async(function() {  
247 - var textarea = this.$.select_datalet_options_container.querySelectorAll("paper-textarea");  
248 - this.params["description"] = textarea[0].value;  
249 -  
250 - var inputs = this.$.select_datalet_options_container.querySelectorAll("paper-input");  
251 - this.params["title"] = inputs[0].value;  
252 -  
253 - for (var i = 1; i < inputs.length; i++)  
254 - this.params[this.options[i-1].name] = inputs[i].value;  
255 -  
256 - this.fire('select_visualization_options_changed');  
257 - }, 0);  
258 - },  
259 -  
260 - _translate : function(){  
261 - this.$.baseInfo.innerHTML = ln["baseInfo_" + ln["localization"]];  
262 - this.$.layouts.innerHTML = ln["layouts_" + ln["localization"]];  
263 -  
264 - this.$.base_title.label = ln["title_" + ln["localization"]];  
265 - this.$.base_description.label = ln["description_" + ln["localization"]];  
266 - },  
267 -  
268 - _checkType: function(type, check){  
269 - return (type == check);  
270 - },  
271 -  
272 - _getLabelName: function(key) {  
273 - return ln[key + "_" +ln["localization"]];  
274 - },  
275 -  
276 - _showInfo : function(e){  
277 - var t = e.target;  
278 - if(t.tagName.indexOf("IRON-ICON") != -1)  
279 - t = $(e.target).parents("paper-icon-button")[0];  
280 -  
281 - var name = t.getAttribute("id");  
282 -  
283 - this.$.dialog_name.innerHTML = ln[name + "_" + ln["localization"]];  
284 - this.$.dialog_description.innerHTML = ln[name + "_description_" + ln["localization"]];  
285 - this.$.dialog_info_input.open();  
286 -  
287 - var pos = t.getBoundingClientRect();  
288 - $("#dialog_info_input").css("top", pos.top - 4);  
289 - $("#dialog_info_input").css("left", pos.left - 4);  
290 - },  
291 -  
292 - });  
293 -  
294 - </script>  
295 -  
296 -</dom-module>  
297 \ No newline at end of file 0 \ No newline at end of file
controllets/select-visualization-controllet/select-visualization-controllet_old.html deleted
1 -<link rel="import" href="../../bower_components/polymer/polymer.html" />  
2 -  
3 -<link rel="import" href="../../bower_components/paper-material/paper-material.html" />  
4 -  
5 -<link rel="import" href="../../bower_components/paper-button/paper-button.html">  
6 -  
7 -<link rel="import" href="../items-vslider-controllet/items-vslider-controllet.html" />  
8 -<link rel="import" href="select-datalet-inputs_series.html" />  
9 -<link rel="import" href="select-datalet-inputs.html" />  
10 -<link rel="import" href="select-datalet-options.html" />  
11 -  
12 -<script src="../../../DEEPCLIENT/js/deepClient.js"></script>  
13 -  
14 -<dom-module id="select-visualization-controllet">  
15 -  
16 - <template>  
17 -  
18 - <style is="custom-style">  
19 - #select_visualization_container {  
20 - display: flex;  
21 - font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;  
22 - font-size: 16px;  
23 - margin-top: 8px;  
24 - }  
25 -  
26 - #items_vslider_controllet {  
27 - position: relative;  
28 - min-width: 172px;  
29 - }  
30 -  
31 - #datalet_selection_inputs {  
32 - position: relative;  
33 - margin-left: 32px;  
34 - min-width: 258px;  
35 - }  
36 -  
37 - #datalet_selection_options {  
38 - position: relative;  
39 - margin-left: 32px;  
40 - min-width: 258px;  
41 - }  
42 -  
43 - #datalet_preview_container {  
44 - position: relative;  
45 - width: 100%;  
46 - margin-left: 32px;  
47 - }  
48 -  
49 - #datalet_selection_datalet {  
50 - position: relative;  
51 - height: 100vh;  
52 - width: 100%;  
53 - }  
54 -  
55 - #datalet_selection_datalet_placeholder {  
56 - padding: 16px;  
57 - }  
58 -  
59 - .input_header {  
60 - height: 32px;  
61 - padding-top: 16px;  
62 - text-align: center;  
63 - font-weight: 700;  
64 - background-color: #B6B6B6;  
65 - }  
66 -  
67 - paper-button {  
68 - position: absolute;  
69 - bottom: 16px;  
70 - right: 11px;  
71 -  
72 - height: 48px;  
73 - width: 172px;  
74 - background-color: #00BCD4;  
75 - color: white;  
76 - font-weight: 700;  
77 - padding: 16px;  
78 - }  
79 -  
80 - paper-button:hover {  
81 - background-color: #00AABF;  
82 -  
83 - box-shadow: 0px 8px 12px #888;  
84 - -webkit-box-shadow: 0px 8px 12px #888;  
85 - -moz-box-shadow: 0px 8px 12px #888;  
86 - }  
87 -  
88 - paper-button[disabled] {  
89 - background-color: #B6B6B6;  
90 - }  
91 - </style>  
92 -  
93 - <iron-ajax id="selectedDatalet_request" on-response="_handleSelectedDatalet"></iron-ajax>  
94 -  
95 - <div id="select_visualization_container">  
96 -  
97 - <div id="items_vslider_controllet">  
98 - <items-vslider-controllet id="vslider" datalets-list-url={{dataletsListUrl}} preselected-datalet={{preselectedDatalet}}></items-vslider-controllet>  
99 - </div>  
100 -  
101 - <div id="datalet_selection_inputs">  
102 - <template is="dom-if" if="{{_checkType(type, 'multiseries')}}">  
103 - <select-datalet-inputs_series id="inputs_series"></select-datalet-inputs_series>  
104 - </template>  
105 - <template is="dom-if" if="{{_checkType(type, 'default')}}">  
106 - <select-datalet-inputs id="inputs"></select-datalet-inputs>  
107 - </template>  
108 - <template is="dom-if" if="{{_checkType(type, '')}}">  
109 - <select-datalet-inputs></select-datalet-inputs>  
110 - </template>  
111 - </div>  
112 -  
113 - <div id="datalet_selection_options">  
114 - <select-datalet-options id="options"></select-datalet-options>  
115 - </div>  
116 -  
117 - <div id="datalet_preview_container">  
118 -  
119 - <paper-material id="datalet_selection_datalet" elevation="5">  
120 - <div class="input_header"><span id="dataletPreview"></span></div>  
121 - <div id="datalet_selection_datalet_placeholder"></div>  
122 - </paper-material>  
123 -  
124 - <paper-button id="add_button" disabled raised on-click="_addDatalet"></paper-button>  
125 -  
126 - </div>  
127 -  
128 - </div>  
129 -  
130 - </template>  
131 -  
132 - <script>  
133 -  
134 - Polymer({  
135 -  
136 - is : 'select-visualization-controllet',  
137 -  
138 - properties : {  
139 -  
140 - deepUrl : {  
141 - type : String,  
142 - value : undefined  
143 - },  
144 -  
145 - dataletsListUrl : {  
146 - type : String,  
147 - value : undefined  
148 - },  
149 -  
150 - selectedDatalet : {  
151 - type : String,  
152 - value : undefined  
153 - },  
154 -  
155 - preselectedDatalet : {  
156 - type : String,  
157 - value : undefined  
158 - },  
159 -  
160 - type : {  
161 - type : String,  
162 - value : ""  
163 - },  
164 -  
165 - filters : {  
166 - type : Array,  
167 - value : []  
168 - },  
169 -  
170 - fields : {  
171 - type : Array,  
172 - value : []  
173 - },  
174 -  
175 - selectedFields : {  
176 - type : Array,  
177 - value : []  
178 - },  
179 -  
180 - dataletPreset : {  
181 - type : Object,  
182 - value : []  
183 - },  
184 -  
185 - dataUrl : {  
186 - type : String,  
187 - value : undefined  
188 - },  
189 -  
190 - params:{  
191 - type: Object,  
192 - value: undefined  
193 - },  
194 -  
195 - data : {  
196 - type : Object,  
197 - value : undefined  
198 - },  
199 -  
200 - },  
201 -  
202 - listeners: {  
203 -// 'select-fields-controllet_selected-fields': '_updateFields',  
204 -// 'filters-controllet_filters': '_updateFilters',  
205 - 'items-vslider-controllet_selected-datalet': '_selectDatalet',  
206 - 'select_visualization_inputs_ready': '_loadDatalet',  
207 - 'select_visualization_options_changed': '_tryLoadDatalet'  
208 - },  
209 -  
210 - ready : function() {  
211 - this._resize();  
212 -  
213 - $(this.$.datalet_selection_datalet).perfectScrollbar();  
214 -  
215 -// this.params = {'data-url' : this.dataUrl};//not here  
216 - },  
217 -  
218 - attached : function() {  
219 - this._resize();  
220 - var that = this;  
221 - window.addEventListener("resize", function() { that._resize(); });  
222 -  
223 - this._translate();  
224 - },  
225 -  
226 - setFilters : function(filters) {  
227 - this.filters = this._copy(filters);  
228 - },  
229 -  
230 - setFields : function(fields) {  
231 -// if (this.fields.length > 0 && JSON.stringify(this.fields) != JSON.stringify(fields))  
232 -// this.init();  
233 -  
234 - this.fields = this._copy(fields);  
235 -  
236 - var inputs = this._getInputs();  
237 - if (inputs)  
238 - inputs.setFields(this.fields);  
239 - },  
240 -  
241 - setData : function(data) {  
242 - this.data = this._copy(data);  
243 - },  
244 -  
245 - init : function() {  
246 - this.$.vslider._reset();  
247 - },  
248 -  
249 - show : function() {//show --> preselect  
250 -// if(this.preselectedDatalet)  
251 - if(this.dataletPreset)  
252 - this._preselectDatalet();  
253 -  
254 -// if (this.$.datalet_selection_datalet_placeholder.innerHTML == "") {  
255 -// var inputs = this._getInputs();  
256 -// inputs.fireReady();  
257 -// }  
258 - },  
259 -  
260 - _translate : function(){  
261 - if(this.preselectedDatalet)  
262 - this.$.add_button.innerHTML = ln["modifyDatalet_" + ln["localization"]];  
263 - else  
264 - this.$.add_button.innerHTML = ln["addDatalet_" + ln["localization"]];  
265 -  
266 - this.$.dataletPreview.innerHTML = ln["dataletPreview_" + ln["localization"]];  
267 - },  
268 -  
269 - _selectDatalet : function(e){  
270 -  
271 - this.$.add_button.setAttribute("disabled", "true");  
272 -  
273 - this.selectedDatalet = e.detail.datalet;  
274 -  
275 - this.$.datalet_selection_datalet_placeholder.innerHTML = "";  
276 -  
277 - if(!this.selectedDatalet){  
278 - this.type = "";  
279 - this.$.options.setOptions([]);  
280 - }  
281 - else{  
282 - this.$.selectedDatalet_request.url = this.deepUrl + e.detail.datalet + "-datalet";  
283 - this.$.selectedDatalet_request.generateRequest();  
284 - }  
285 - },  
286 -  
287 - _handleSelectedDatalet : function(e){  
288 -  
289 - if(this.type != e.detail.response.type) {  
290 -  
291 - this.type = e.detail.response.type;  
292 -  
293 - this.async(function () {  
294 - var inputs = this._getInputs();  
295 - inputs.setFields(this.fields);  
296 - inputs.setInputs(e.detail.response.idm.inputs.input);// Cannot read property '0' of undefined  
297 - }, 0);  
298 -  
299 - this.$.options.setOptions(e.detail.response.idm.inputs.layouts.input);  
300 - }  
301 - else {  
302 - this.$.options.checkOptions(e.detail.response.idm.inputs.layouts.input);  
303 - }  
304 -  
305 - this.async(function () {  
306 - var inputs = this._getInputs();  
307 - inputs.fireReady();  
308 - }, 0);  
309 -  
310 -// this.async(function () {  
311 -// if(this.preselectedDatalet)  
312 -// this._preselectDatalet();  
313 -// }, 1);  
314 - },  
315 -  
316 - _preselectDatalet : function() {  
317 - this.$.vslider._preselectDatalet();  
318 -  
319 - this.async(function () {  
320 - this.$.options._preselectOptions(this.dataletPreset);  
321 - }, 100);  
322 -  
323 - this.async(function () {  
324 - var inputs = this._getInputs();  
325 - inputs._preselectInputs(this.fields, this.dataletPreset["aggregators"], this.dataletPreset["orders"]);  
326 - this.dataletPreset = undefined;  
327 - }, 200);  
328 - },  
329 -  
330 - _tryLoadDatalet : function(){  
331 - var inputs = this._getInputs();  
332 - inputs.fireReady();  
333 - },  
334 -  
335 - _loadDatalet : function(e){  
336 - if(!e.detail.isReady) {  
337 - this.$.datalet_selection_datalet_placeholder.innerHTML = "";  
338 - return;  
339 - }  
340 -  
341 - var inputs = this._getInputs();  
342 -  
343 - this.selectedFields = inputs.getSelectedFields();  
344 -  
345 -// console.log(inputs.getFields());  
346 -  
347 - this.params = {'data-url' : this.dataUrl};//??????????????????  
348 -// this.params = {};  
349 -  
350 - this.params["selectedfields"] = JSON.stringify(inputs.getFields());  
351 -  
352 - this.params["filters"] = JSON.stringify(this.filters);  
353 - this.params["aggregators"] = JSON.stringify(inputs.getAggregators());  
354 - this.params["orders"] = JSON.stringify(inputs.getOrders());  
355 -  
356 - this.params["export_menu"] = "0";  
357 -  
358 - var params = this.$.options.getParams();  
359 - for (var key in params) { this.params[key] = params[key]; }  
360 -  
361 - //use cache  
362 - var data = alasql_QUERY(this.data, this.selectedFields, null, inputs.getAggregators(), inputs.getOrders());  
363 -  
364 - var converter = new DataTypeConverter();  
365 - var result = converter.inferJsonDataType(data, ["*"]);  
366 - result = converter.cast(result);  
367 - data = result.dataset;  
368 -  
369 - data = alasql_transformData(data, this.selectedFields, true);  
370 -  
371 - this.params["data"] = JSON.stringify(data).replace(/'/g, "&#39;");  
372 - //  
373 -  
374 - var dataletParams ={  
375 - component: this.selectedDatalet+"-datalet",  
376 - fields: this.selectedFields,  
377 - params: this.params,  
378 - placeHolder: this.$.datalet_selection_datalet_placeholder,  
379 - };  
380 -  
381 - ComponentService.deep_url = this.deepUrl;  
382 - ComponentService.getComponent(dataletParams);  
383 -  
384 - this.$.add_button.removeAttribute("disabled");  
385 - },  
386 -  
387 - _addDatalet : function(){  
388 - delete this.params["export_menu"];  
389 - delete this.params["data"];  
390 -  
391 - var data = {  
392 - dataUrl: this.dataUrl,  
393 - datalet: this.selectedDatalet+"-datalet",  
394 - fields: this.selectedFields,  
395 - params: this.params,  
396 - staticData: JSON.stringify(this.$.datalet_selection_datalet_placeholder.children[1].behavior.data)  
397 - }  
398 -  
399 - this.fire('data-sevc-controllet.dataletCreated', {data : data});  
400 - },  
401 -  
402 - _checkType: function(type, check){  
403 - if (type == "multiseries" || type == "")  
404 - return (type == check);  
405 - else if(check == "default")  
406 - return true;  
407 - return false;  
408 - },  
409 -  
410 - _getInputs : function(){  
411 - if(this.type == "multiseries")  
412 - return this.$$("#inputs_series")  
413 - return this.$$("#inputs");  
414 - },  
415 -  
416 - _copy : function(o) {  
417 - var out, v, key;  
418 - out = Array.isArray(o) ? new Array(o.length) : {};  
419 - for (key in o) {  
420 - v = o[key];  
421 - out[key] = (typeof v === "object") ? this._copy(v) : v;  
422 - }  
423 - return out;  
424 - },  
425 -  
426 - _resize : function(){  
427 - var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 16;  
428 - h = h - 64 - 8; //height with page scroller  
429 -  
430 - $("#items_vslider_controllet").height(h);//vslider controllet  
431 - $("#datalet_selection_inputs").height(h);  
432 - $("#datalet_selection_options").height(h);  
433 -  
434 - $("#datalet_selection_datalet").height(h);  
435 - }  
436 -  
437 - });  
438 -  
439 - </script>  
440 -  
441 -</dom-module>  
442 \ No newline at end of file 0 \ No newline at end of file
datalets/base-datalet/base-datalet.html
@@ -272,6 +272,7 @@ Example : @@ -272,6 +272,7 @@ Example :
272 this.$.base_datalet_container.innerHTML = ""; 272 this.$.base_datalet_container.innerHTML = "";
273 this.$.base_datalet_container.style.margin = 0; 273 this.$.base_datalet_container.style.margin = 0;
274 this.$.base_datalet_container.style.border = 0; 274 this.$.base_datalet_container.style.border = 0;
  275 + this.removeLoader();
275 }, 276 },
276 277
277 setExportMenu: function() 278 setExportMenu: function()
datalets/datasetexplorer-datalet/datasetexplorer-datalet.html
@@ -67,7 +67,8 @@ Example: @@ -67,7 +67,8 @@ Example:
67 width: 100%; 67 width: 100%;
68 height: 70%; 68 height: 70%;
69 /*min-height: 500px;*/ 69 /*min-height: 500px;*/
70 - background: #ffffff; 70 + /*background: #ffffff;*/
  71 + background: transparent;
71 position: relative; 72 position: relative;
72 } 73 }
73 74
@@ -115,6 +116,10 @@ Example: @@ -115,6 +116,10 @@ Example:
115 fill: #bbb; 116 fill: #bbb;
116 } 117 }
117 118
  119 + :host ::content iframe.iframe {
  120 + border: 0 !important;
  121 + }
  122 +
118 /*:host ::content .children svg.foreignObject {*/ 123 /*:host ::content .children svg.foreignObject {*/
119 /*font: 9px sans-serif;*/ 124 /*font: 9px sans-serif;*/
120 /*text-overflow: ellipsis;*/ 125 /*text-overflow: ellipsis;*/
@@ -206,7 +211,7 @@ Example: @@ -206,7 +211,7 @@ Example:
206 var xyz = function(url) { 211 var xyz = function(url) {
207 me.selectResource(url); 212 me.selectResource(url);
208 } 213 }
209 - this.map.name = this._component.name; 214 + this.map.name = datasetexplorer_ln["path_" + datasetexplorer_ln["ln"]];
210 build2(this.map, this.meta, this._component.$.treemap_placeholder, xyz, this._component.width, this._component.height); 215 build2(this.map, this.meta, this._component.$.treemap_placeholder, xyz, this._component.width, this._component.height);
211 }, 216 },
212 217
datalets/datasetexplorer-datalet/js/buildtreemap2.js
@@ -249,7 +249,7 @@ function build2(root, meta, place_holder, select_listener, width, height) { @@ -249,7 +249,7 @@ function build2(root, meta, place_holder, select_listener, width, height) {
249 .attr("width", root.dx) 249 .attr("width", root.dx)
250 .attr("height", root.dy - root.y) 250 .attr("height", root.dy - root.y)
251 .append("xhtml:body") 251 .append("xhtml:body")
252 - .html('<iframe src="'+pageurl+'" width="'+root.dx+'" height="'+root.dy+'"></iframe>'); 252 + .html('<iframe class="iframe" src="'+pageurl+'" width="'+root.dx+'" height="'+root.dy+'"></iframe>');
253 } 253 }
254 254
255 return g; 255 return g;
datalets/highcharts-datalet/static/themes/themes.js
@@ -14,7 +14,7 @@ Highcharts.themeSpod = { @@ -14,7 +14,7 @@ Highcharts.themeSpod = {
14 14
15 // Load the fonts 15 // Load the fonts
16 Highcharts.createElement('link', { 16 Highcharts.createElement('link', {
17 - href: '//fonts.googleapis.com/css?family=Unica+One', 17 + //href: '//fonts.googleapis.com/css?family=Unica+One',
18 rel: 'stylesheet', 18 rel: 'stylesheet',
19 type: 'text/css' 19 type: 'text/css'
20 }, null, document.getElementsByTagName('head')[0]); 20 }, null, document.getElementsByTagName('head')[0]);
@@ -225,7 +225,7 @@ Highcharts.themeDarkUnika = { @@ -225,7 +225,7 @@ Highcharts.themeDarkUnika = {
225 225
226 // Load the fonts 226 // Load the fonts
227 Highcharts.createElement('link', { 227 Highcharts.createElement('link', {
228 - href: '//fonts.googleapis.com/css?family=Signika:400,700', 228 + //href: '//fonts.googleapis.com/css?family=Signika:400,700',
229 rel: 'stylesheet', 229 rel: 'stylesheet',
230 type: 'text/css' 230 type: 'text/css'
231 }, null, document.getElementsByTagName('head')[0]); 231 }, null, document.getElementsByTagName('head')[0]);
@@ -326,7 +326,7 @@ Highcharts.themeSandSignika = { @@ -326,7 +326,7 @@ Highcharts.themeSandSignika = {
326 326
327 // Load the fonts 327 // Load the fonts
328 Highcharts.createElement('link', { 328 Highcharts.createElement('link', {
329 - href: '//fonts.googleapis.com/css?family=Dosis:400,600', 329 + //href: '//fonts.googleapis.com/css?family=Dosis:400,600',
330 rel: 'stylesheet', 330 rel: 'stylesheet',
331 type: 'text/css' 331 type: 'text/css'
332 }, null, document.getElementsByTagName('head')[0]); 332 }, null, document.getElementsByTagName('head')[0]);
locales/controllet_ln.js
@@ -17,17 +17,43 @@ ln[&quot;forward_en&quot;] = &quot;FORWARD&quot;; @@ -17,17 +17,43 @@ ln[&quot;forward_en&quot;] = &quot;FORWARD&quot;;
17 17
18 //SELECT DATASET 18 //SELECT DATASET
19 19
20 -ln["listView_en"] = "LIST VIEW";  
21 -ln["treeMapView_en"] = "TREE MAP VIEW";  
22 -ln["extendedSearch_en"] = "EXTENDED SEARCH"; 20 +ln["selectedUrl_en"] = "Selected url";
  21 +ln["wrongUrl_en"] = "Invalid url or data provider not supported yet.";
  22 +
  23 +ln["providersDatasets_en"] = "PROVIDERS DATASETS";
  24 +ln["spodUsersDatasets_en"] = "SPOD USERS DATASETS";
  25 +ln["datasets_en"] = "DATASETS";
  26 +
23 ln["provider_en"] = "Provider"; 27 ln["provider_en"] = "Provider";
  28 +ln["all_en"] = "All";
  29 +ln["allDescription_en"] = "Shows the datasets of all associated providers.";
  30 +ln["providerName_en"] = "Provider";
  31 +ln["providerNameDescription_en"] = "Shows only the datasets of the selected provider.";
  32 +
  33 +//ln["view_en"] = "View";
  34 +//ln["list_en"] = "List";
  35 +//ln["listDescription_en"] = "Shows the datasets with a classic list.";
  36 +//ln["tree_en"] = "Tree";
  37 +//ln["treeDescription_en"] = "Shows the datasets with a tree map.";
  38 +
  39 +ln["search_en"] = "Search";
  40 +ln["standard_en"] = "Standard";
  41 +ln["standardDescription_en"] = "The search function works only on datasets names.";
  42 +ln["extended_en"] = "Extended [NOT AVAILABLE]";
  43 +ln["extendedDescription_en"] = "The search function works the entire contents of the datasets.";
  44 +
  45 +ln["version_en"] = "Version";
  46 +ln["showLast_en"] = "Show last";
  47 +ln["showLastDescription_en"] = "Shows only the latest version of the datasets.";
  48 +ln["showAll_en"] = "Show all";
  49 +ln["showAllDescription_en"] = "Shows all versions of the datasets.";
  50 +
  51 +//select-dataset-controllet
  52 +ln["datasetsInfo_en"] = "DATASET INFO";
24 ln["showing_en"] = "Showing"; 53 ln["showing_en"] = "Showing";
25 ln["to_en"] = "to"; 54 ln["to_en"] = "to";
26 ln["of_en"] = "of"; 55 ln["of_en"] = "of";
27 -ln["datasets_en"] = "datasets";  
28 -ln["suggestedDatasets_en"] = "Suggested datasets";  
29 -ln["selectedUrl_en"] = "Selected url";  
30 -ln["wrongUrl_en"] = "Invalid url or data provider not supported yet."; 56 +ln["search_en"] = "Search";
31 57
32 //SELECT DATA 58 //SELECT DATA
33 59
locales/datasetexplorer_ln.js
@@ -2,12 +2,16 @@ datasetexplorer_ln = []; @@ -2,12 +2,16 @@ datasetexplorer_ln = [];
2 2
3 /*EN*/ 3 /*EN*/
4 datasetexplorer_ln["ode+back_en"] = "<< Click to navigate back to the top level."; 4 datasetexplorer_ln["ode+back_en"] = "<< Click to navigate back to the top level.";
  5 +datasetexplorer_ln["path_en"] = "Path: ";
5 6
6 /*IT*/ 7 /*IT*/
7 datasetexplorer_ln["ode+back_it"] = "<< Clicca qui per tornare al livello precedente."; 8 datasetexplorer_ln["ode+back_it"] = "<< Clicca qui per tornare al livello precedente.";
  9 +datasetexplorer_ln["path_it"] = "Path: ";
8 10
9 /*FR*/ 11 /*FR*/
10 datasetexplorer_ln["ode+back_fr"] = "<< Click to navigate back to the top level."; 12 datasetexplorer_ln["ode+back_fr"] = "<< Click to navigate back to the top level.";
  13 +datasetexplorer_ln["path_fr"] = "Path: ";
11 14
12 /*NL*/ 15 /*NL*/
13 datasetexplorer_ln["ode+back_nl"] = "<< Click to navigate back to the top level."; 16 datasetexplorer_ln["ode+back_nl"] = "<< Click to navigate back to the top level.";
  17 +datasetexplorer_ln["path_nl"] = "Path: ";