Commit 413bc5414bc904f1a80d226e63d666c5fd2f5504

Authored by Renato De Donato
1 parent 166db682

data cache

Showing 61 changed files with 161 additions and 53975 deletions
controllets/data-sevc-controllet/demo/index.html
... ... @@ -15,8 +15,8 @@
15 15  
16 16 <body>
17 17  
18   - <data-sevc-controllet deep-url="http://172.16.15.77/DEEalerProvider/DEEP/"
19   - datalets-list-url="http://172.16.15.77/DEEalerProvider/DEEP/datalets-list"
  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"
20 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 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\":\"\"}"}]}}'-->
22 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\"}"}]'-->
... ...
controllets/select-data-controllet/select-data-controllet.html
... ... @@ -94,13 +94,11 @@
94 94 filters : {
95 95 type : Array,
96 96 value : []
97   -// value : [{logicalOperator: "OR"}, {field: "annee", operation: "=", value: "2014"}, {field: "annee", operation: "=", value: "2015"}]
98 97 },
99 98  
100 99 selectedFields : {
101 100 type : Array,
102 101 value : []
103   -// value : [0,2,4]
104 102 }
105 103  
106 104 },
... ...
controllets/select-dataset-controllet/select-dataset-controllet.html
... ... @@ -553,7 +553,7 @@
553 553 var data = JSON.stringify({result : {providers: this.providers, datasets: this.filteredDatasets}}).replace(/'/g, "");
554 554  
555 555 if(this.filteredDatasets.length > 0)
556   - this.$.treemap_container.innerHTML = "<datasetexplorer-datalet data='"+data+"' width=\""+w+"\" height=\""+h+"\" fields='[\"result,datasets,provider_name\",\"result,datasets,organization_name\",\"result,datasets,package_name\",\"result,datasets,resource_name\",\"result,datasets,url\",\"result,datasets,w\",\"result,datasets,metas\"]'></datasetexplorer-datalet>";
  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 557 else
558 558 this.$.treemap_container.innerHTML = "";
559 559 },
... ...
datalets/areachart-datalet/areachart-datalet.html
... ... @@ -128,6 +128,10 @@ Example:
128 128 is: 'areachart-datalet',
129 129  
130 130 properties: {
  131 + data: {
  132 + type: Array,
  133 + value: undefined
  134 + },
131 135 /**
132 136 * It's the label for X axis
133 137 *
... ...
datalets/areachart_stacked-datalet/areachart_stacked-datalet.html
... ... @@ -121,6 +121,10 @@ Example:
121 121 is: 'areachart_stacked-datalet',
122 122  
123 123 properties: {
  124 + data: {
  125 + type: Array,
  126 + value: undefined
  127 + },
124 128 /**
125 129 * It's the label for X axis
126 130 *
... ...
datalets/barchart-datalet/barchart-datalet.html
... ... @@ -120,6 +120,10 @@ Example:
120 120 is: 'barchart-datalet',
121 121  
122 122 properties: {
  123 + data: {
  124 + type: Array,
  125 + value: undefined
  126 + },
123 127 xAxisLabel: {
124 128 type: String,
125 129 value: ""
... ...
datalets/barchart_stacked-datalet/barchart_stacked-datalet.html
... ... @@ -109,6 +109,10 @@ Example:
109 109 is: 'barchart_stacked-datalet',
110 110  
111 111 properties: {
  112 + data: {
  113 + type: Array,
  114 + value: undefined
  115 + },
112 116 /**
113 117 * It's the label for X axis
114 118 *
... ...
datalets/base-ajax-json-alasql-datalet/static/js/AjaxJsonAlasqlBehavior.js
... ... @@ -77,7 +77,7 @@ var AjaxJsonAlasqlBehavior = {
77 77 },
78 78  
79 79 /**
80   - * selectData built a JSONPATH query based on the user selected fields then extract data from the JSON response.
  80 + * selectData built a ALASQL query based on the user selected fields then extract data from the JSON response.
81 81 * This method built an objects <name, data> for every user selected field and push it into the data array.
82 82 *
83 83 * @method selectData
... ...
datalets/base-ajax-json-jsonpath-datalet/base-ajax-json-jsonpath-datalet.html deleted
1   -<!--
2   -@license
3   - The MIT License (MIT)
4   -
5   - Copyright (c) 2015 Dipartimento di Informatica - Universit� di Salerno - Italy
6   -
7   - Permission is hereby granted, free of charge, to any person obtaining a copy
8   - of this software and associated documentation files (the "Software"), to deal
9   - in the Software without restriction, including without limitation the rights
10   - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11   - copies of the Software, and to permit persons to whom the Software is
12   - furnished to do so, subject to the following conditions:
13   -
14   - The above copyright notice and this permission notice shall be included in
15   - all copies or substantial portions of the Software.
16   -
17   - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18   - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19   - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20   - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21   - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22   - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23   - THE SOFTWARE.
24   --->
25   -<!--
26   -* Developed by :
27   -* ROUTE-TO-PA Project - grant No 645860. - www.routetopa.eu
28   -*
29   --->
30   -
31   -<link rel="import" href="../base-datalet/base-datalet.html">
32   -
33   -<!--
34   -The `base-ajax-json-jsonpath-datalet` extend the base component and define the mechanism to access and select data.
35   -This datalet handles AJAX request with JSON response and uses JSONPATH for data selection and filtering.
36   -
37   -Example :
38   -
39   - <dom-module id="every-datalet-that-handle-ajax-json">
40   - <template>
41   - ...
42   - <base-ajax-json-jsonpath-datalet data-url="{{dataUrl}}" fields="{{fields}}"></base-ajax-json-jsonpath-datalet>
43   - ...
44   - </template>
45   - </dom-module>
46   -
47   -@element base-ajax-json-jsonpath-datalet
48   -@status v0.1
49   -@homepage
50   -@group datalets
51   --->
52   -
53   -<dom-module id="base-ajax-json-jsonpath-datalet">
54   - <template>
55   - <base-datalet data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" title="{{title}}" description="{{description}}" export_menu="{{export_menu}}"></base-datalet>
56   - </template>
57   -
58   - <script src="static/js/vendor/jsonpath-0.8.5.js"></script>
59   - <script src="static/js/AjaxJsonJsonPathBehavior.js"></script>
60   -
61   - <script>
62   - BaseDatalet = Polymer({
63   - is: 'base-ajax-json-jsonpath-datalet'
64   - });
65   - </script>
66   -</dom-module>
67 0 \ No newline at end of file
datalets/base-ajax-json-jsonpath-datalet/docs.html deleted
1   -<!DOCTYPE html>
2   -<html lang="en">
3   -<head>
4   - <link rel="import" href="../../bower_components/iron-component-page/iron-component-page.html">
5   - <meta charset="UTF-8">
6   -</head>
7   -<body>
8   -
9   -<iron-component-page src="base-ajax-json-jsonpath-datalet.html"></iron-component-page>
10   -
11   -</body>
12   -</html>
13 0 \ No newline at end of file
datalets/base-ajax-json-jsonpath-datalet/static/js/AjaxJsonJsonPathBehavior.js deleted
1   -/*
2   -@license
3   - The MIT License (MIT)
4   -
5   - Copyright (c) 2015 Dipartimento di Informatica - Universit� di Salerno - Italy
6   -
7   - Permission is hereby granted, free of charge, to any person obtaining a copy
8   - of this software and associated documentation files (the "Software"), to deal
9   - in the Software without restriction, including without limitation the rights
10   - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11   - copies of the Software, and to permit persons to whom the Software is
12   - furnished to do so, subject to the following conditions:
13   -
14   - The above copyright notice and this permission notice shall be included in
15   - all copies or substantial portions of the Software.
16   -
17   - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18   - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19   - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20   - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21   - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22   - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23   - THE SOFTWARE.
24   -*/
25   -
26   -/**
27   - * Developed by :
28   - * ROUTE-TO-PA Project - grant No 645860. - www.routetopa.eu
29   - *
30   -*/
31   -
32   -
33   -var AjaxJsonJsonPathBehavior = {
34   -
35   - properties: {
36   -
37   - /**
38   - * It contains the json data from async xhr call returned from core-ajax core component
39   - *
40   - * @attribute json_results
41   - * @type object
42   - * @default 'null'.
43   - */
44   - json_results: {
45   - type: Object,
46   - value: {}
47   - }
48   - },
49   -
50   - /**
51   - * Make an AJAX call to the dataset URL
52   - *
53   - * @method requestData
54   - */
55   - requestData: function(){
56   -
57   - var comp = this;
58   -
59   - /*if(typeof(Worker) !== "undefined") {
60   -
61   - var myWorker = function() {
62   -
63   - self.onmessage = function(event)
64   - {
65   - console.log(event.data);
66   -
67   - var xmlhttp;
68   -
69   - if ( XMLHttpRequest) {
70   - // code for IE7+, Firefox, Chrome, Opera, Safari
71   - xmlhttp = new XMLHttpRequest();
72   - } else {
73   - // code for IE6, IE5
74   - xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
75   - }
76   -
77   - xmlhttp.onreadystatechange = function() {
78   - if (xmlhttp.readyState == XMLHttpRequest.DONE ) {
79   - if(xmlhttp.status == 200){
80   - //console.log(xmlhttp.responseText);
81   - self.postMessage(xmlhttp.responseText);
82   - }
83   - else if(xmlhttp.status == 400) {
84   - console.log('There was an error 400')
85   - }
86   - else {
87   - console.log('something else other than 200 was returned')
88   - }
89   - }
90   - }
91   -
92   - //xmlhttp.open("GET", event.data, true);
93   - xmlhttp.open("GET", "http://172.16.15.77/openwall/api/datasetTree", true);
94   - xmlhttp.send();
95   - }
96   - };
97   -
98   - var workerData = new Blob(['(' + myWorker.toString() + ')()'], {
99   - type: "text/javascript"
100   - });
101   -
102   - myWorker = new Worker(window.URL.createObjectURL(workerData));
103   - myWorker.postMessage(this._component.dataUrl);
104   - myWorker.onmessage = function (e) {
105   - console.log(e);
106   - comp.handleResponse(JSON.parse(e.data));
107   - };
108   -
109   - } else {
110   - $.ajax({
111   - url: this._component.dataUrl,
112   - dataType: "json",
113   - async : true,
114   - success: function(e){
115   - comp.handleResponse(e);
116   - }
117   - });
118   - }*/
119   -
120   - $.ajax({
121   - url: this._component.dataUrl,
122   - dataType: "json",
123   - async : true,
124   - cache : false,
125   - success: function(e){
126   - comp.handleResponse(e);
127   - }
128   - });
129   - },
130   -
131   - /**
132   - * Called when core-ajax component receive the json data from called url.
133   - *
134   - * @method handleResponse
135   - */
136   - handleResponse: function(e) {
137   - this.properties.json_results.value = e;
138   - this.runWorkcycle();
139   - },
140   - /**
141   - * Check if input field(passed as an array of separated value that mach with field path in received object) is an array of objet.
142   - * The field is checked on current json object retrieved from the async request.
143   - *
144   - * @param field
145   - */
146   - isFieldArray : function(field){
147   - if(field.length == 0) return false;
148   -
149   - var obj = this.properties.json_results.value[field[0]];
150   - for(var i=1; i < field.length; i++){
151   - obj = (obj.constructor == Array) ? obj[0][field[i]] : obj[field[i]];
152   - }
153   -
154   - if(obj == null) return false;
155   - return (obj.constructor === Array && obj[0].constructor == Object) ? true : false;
156   - },
157   -
158   - /**
159   - * selectData built a JSONPATH query based on the user selected fields then extract data from the JSON response.
160   - * This method built an objects <name, data> for every user selected field and push it into the data array.
161   - *
162   - * @method selectData
163   - */
164   - selectData : function() {
165   -
166   - this.data = [];
167   -
168   - //Deal the fields with "'" char
169   - //this._component.fields = this._component.fields.replace(/#/g,"'");
170   -
171   - this._component.fields = JSON.parse(this._component.fields);
172   -
173   - for (var i = 0; i < this._component.fields.length; i++) {
174   - var query = "$";
175   - var query_elements = this._component.fields[i].split(',');
176   - for (var j = 0; j < query_elements.length; j++) {
177   - query += "['" + query_elements[j] + "']";
178   - if (this.isFieldArray(query_elements.slice(0, j + 1))) {
179   - query += "[*]";
180   - }
181   - }
182   - this.data.push({
183   - name: query_elements[query_elements.length - 1],
184   - data: jsonPath(this.properties.json_results.value, query)
185   - });
186   - }
187   - this._deleteWaitImage();
188   - },
189   -
190   - /**
191   - * Delete a image after loading a datalet
192   - */
193   - _deleteWaitImage : function() {
194   - $("img[src$='spin.svg']").remove();
195   - }
196   -};
197 0 \ No newline at end of file
datalets/base-ajax-json-jsonpath-datalet/static/js/AjaxJsonJsonPathBehavior.json deleted
1   -{
2   - "elements": [],
3   - "elementsByTagName": {},
4   - "behaviors": [
5   - {
6   - "type": "behaviour",
7   - "desc": "Defined in `AjaxJsonJsonPathBehaviour.js`. It is a specific implemetation that uses Ajax to get the data in Json format and uses JsonPath to select and filtering the data",
8   - "events": [],
9   - "properties": [
10   - {
11   - "name": "json_results",
12   - "type": "Object",
13   - "desc": "It contains the json data from async xhr call returned from core-ajax core component",
14   - "published": true
15   - },
16   - {
17   - "name": "requestData",
18   - "type": "Function",
19   - "desc": "Make an AJAX call to the dataset URL",
20   - "params": [
21   - ],
22   - "published": true,
23   - "function": true
24   - },
25   - {
26   - "name": "handleResponse",
27   - "type": "Function",
28   - "desc": "Called when core-ajax component receive the json data from called url.",
29   - "params": [
30   - ],
31   - "published": true,
32   - "function": true
33   - },
34   - {
35   - "name": "selectData",
36   - "type": "Function",
37   - "desc": "selectData built a JSONPATH query based on the user selected fields then extract data from the JSON response. This method built an objects <name, data> for every user selected field and push it into the data array.",
38   - "params": [
39   - ],
40   - "published": true,
41   - "function": true
42   - }
43   - ],
44   - "is": "AjaxJsonJsonPathBehaviour"
45   - }
46   - ]
47   -}
48 0 \ No newline at end of file
datalets/base-ajax-json-jsonpath-datalet/static/js/vendor/jsonpath-0.8.5.js deleted
1   -/* JSONPath 0.8.5 - XPath for JSON
2   - *
3   - * Copyright (c) 2007 Stefan Goessner (goessner.net)
4   - * Licensed under the MIT (MIT-LICENSE.txt) licence.
5   - *
6   - * Proposal of Chris Zyp goes into version 0.9.x
7   - * Issue 7 resolved
8   - */
9   -function jsonPath(obj, expr, arg) {
10   - var P = {
11   - resultType: arg && arg.resultType || "VALUE",
12   - result: [],
13   - normalize: function(expr) {
14   - var subx = [];
15   - return expr.replace(/[\['](\??\(.*?\))[\]']|\['(.*?)'\]/g, function($0,$1,$2){return "[#"+(subx.push($1||$2)-1)+"]";}) /* http://code.google.com/p/jsonpath/issues/detail?id=4 */
16   - .replace(/'?\.'?|\['?/g, ";")
17   - .replace(/;;;|;;/g, ";..;")
18   - .replace(/;$|'?\]|'$/g, "")
19   - .replace(/#([0-9]+)/g, function($0,$1){return subx[$1];});
20   - },
21   - asPath: function(path) {
22   - var x = path.split(";"), p = "$";
23   - for (var i=1,n=x.length; i<n; i++)
24   - p += /^[0-9*]+$/.test(x[i]) ? ("["+x[i]+"]") : ("['"+x[i]+"']");
25   - return p;
26   - },
27   - store: function(p, v) {
28   - if (p) P.result[P.result.length] = P.resultType == "PATH" ? P.asPath(p) : v;
29   - return !!p;
30   - },
31   - trace: function(expr, val, path) {
32   - if (expr !== "") {
33   - var x = expr.split(";"), loc = x.shift();
34   - x = x.join(";");
35   - if (val && val.hasOwnProperty(loc))
36   - P.trace(x, val[loc], path + ";" + loc);
37   - else if (loc === "*")
38   - P.walk(loc, x, val, path, function(m,l,x,v,p) { P.trace(m+";"+x,v,p); });
39   - else if (loc === "..") {
40   - P.trace(x, val, path);
41   - P.walk(loc, x, val, path, function(m,l,x,v,p) { typeof v[m] === "object" && P.trace("..;"+x,v[m],p+";"+m); });
42   - }
43   - else if (/^\(.*?\)$/.test(loc)) // [(expr)]
44   - P.trace(P.eval(loc, val, path.substr(path.lastIndexOf(";")+1))+";"+x, val, path);
45   - else if (/^\?\(.*?\)$/.test(loc)) // [?(expr)]
46   - P.walk(loc, x, val, path, function(m,l,x,v,p) { if (P.eval(l.replace(/^\?\((.*?)\)$/,"$1"), v instanceof Array ? v[m] : v, m)) P.trace(m+";"+x,v,p); }); // issue 5 resolved
47   - else if (/^(-?[0-9]*):(-?[0-9]*):?([0-9]*)$/.test(loc)) // [start:end:step] phyton slice syntax
48   - P.slice(loc, x, val, path);
49   - else if (/,/.test(loc)) { // [name1,name2,...]
50   - for (var s=loc.split(/'?,'?/),i=0,n=s.length; i<n; i++)
51   - P.trace(s[i]+";"+x, val, path);
52   - }
53   - }
54   - else
55   - P.store(path, val);
56   - },
57   - walk: function(loc, expr, val, path, f) {
58   - if (val instanceof Array) {
59   - for (var i=0,n=val.length; i<n; i++)
60   - if (i in val)
61   - f(i,loc,expr,val,path);
62   - }
63   - else if (typeof val === "object") {
64   - for (var m in val)
65   - if (val.hasOwnProperty(m))
66   - f(m,loc,expr,val,path);
67   - }
68   - },
69   - slice: function(loc, expr, val, path) {
70   - if (val instanceof Array) {
71   - var len=val.length, start=0, end=len, step=1;
72   - loc.replace(/^(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)$/g, function($0,$1,$2,$3){start=parseInt($1||start);end=parseInt($2||end);step=parseInt($3||step);});
73   - start = (start < 0) ? Math.max(0,start+len) : Math.min(len,start);
74   - end = (end < 0) ? Math.max(0,end+len) : Math.min(len,end);
75   - for (var i=start; i<end; i+=step)
76   - P.trace(i+";"+expr, val, path);
77   - }
78   - },
79   - eval: function(x, _v, _vname) {
80   - try { return $ && _v && eval(x.replace(/(^|[^\\])@/g, "$1_v").replace(/\\@/g, "@")); } // issue 7 : resolved ..
81   - catch(e) { throw new SyntaxError("jsonPath: " + e.message + ": " + x.replace(/(^|[^\\])@/g, "$1_v").replace(/\\@/g, "@")); } // issue 7 : resolved ..
82   - }
83   - };
84   -
85   - var $ = obj;
86   - if (expr && obj && (P.resultType == "VALUE" || P.resultType == "PATH")) {
87   - P.trace(P.normalize(expr).replace(/^\$;?/,""), obj, "$"); // issue 6 resolved
88   - return P.result.length ? P.result : false;
89   - }
90   -}
datalets/base-datalet/static/js/BaseDataletBehavior.js
... ... @@ -33,61 +33,30 @@ var BaseDataletBehavior ={
33 33  
34 34 properties: {
35 35  
36   - /**
37   - * It represent the dataset api url
38   - *
39   - * @attribute dataUrl
40   - * @type string
41   - * @default 'null'
42   - */
43   - dataUrl: {
44   - type: String,
45   - value: ""
46   - },
47   -
48   - /**
49   - * It represents one or multiple fields selected by user
50   - *
51   - * @attribute fields
52   - * @type Array
53   - * @default empty
54   - */
55   - fields: {
56   - type: String,
57   - value: ""
58   - },
59   -
60   - /**
61   - * The selected and transformed data you can use in presentation phase
62   - *
63   - * @attribute data
64   - * @type Array
65   - * @default empty
66   - */
67   - data: {
68   - type: Array,
69   - value: []
70   - },
71   - title: {
72   - type: String,
73   - value: ""
74   - },
75   - description: {
76   - type: String,
77   - value: ""
78   - }
79   -
80   - },
81   -
82   - //factoryImpl: function(data_url, fields) {
83   - // this.dataUrl = data_url;
84   - // this.fields = fields;
85   - //},
86   -
87   - //setParameters: function(params)
88   - //{
89   - // this.title = params['title'];
90   - // this.description = params['description'];
91   - //}
  36 + //dataUrl: {
  37 + // type: String,
  38 + // value: ""
  39 + //},
  40 + //
  41 + //data: {
  42 + // type: Array,
  43 + // value: []
  44 + //},
  45 +
  46 + //fields: {
  47 + // type: String,
  48 + // value: ""
  49 + //},
  50 + //
  51 + //title: {
  52 + // type: String,
  53 + // value: ""
  54 + //},
  55 + //description: {
  56 + // type: String,
  57 + // value: ""
  58 + //}
  59 +
  60 + }
92 61  
93 62 };
94 63 \ No newline at end of file
... ...
datalets/base-datalet/static/js/WorkcycleBehavior.js
... ... @@ -98,14 +98,16 @@ var WorkcycleBehavior = {
98 98 init: function(component){
99 99 this._component = component;
100 100  
101   - if(this._component.data === undefined || this._component.data == ""){
  101 + if(this._component.data == undefined){
102 102 this.requestData();
103 103 }else{
104   - this._deleteWaitImage();
105   - this.data = JSON.parse(this._component.data);
  104 + this.data = this._component.data;
  105 +
106 106 this.filterData();
107 107 this.transformData();
108 108 this.presentData();
  109 +
  110 + this._deleteWaitImage();
109 111 }
110 112 }
111 113  
... ...
datalets/bubblechart-datalet/bubblechart-datalet.html
... ... @@ -162,6 +162,10 @@ Examples:
162 162 BubblechartDatalet = Polymer({
163 163 is: 'bubblechart-datalet',
164 164 properties: {
  165 + data: {
  166 + type: Array,
  167 + value: undefined
  168 + },
165 169 xAxisLabel: {
166 170 type: String,
167 171 value: ""
... ...
datalets/columnchart-datalet/columnchart-datalet.html
... ... @@ -136,6 +136,10 @@ Example:
136 136 is: 'columnchart-datalet',
137 137  
138 138 properties: {
  139 + data: {
  140 + type: Array,
  141 + value: undefined
  142 + },
139 143 /**
140 144 * It's the label for X axis
141 145 *
... ...
datalets/columnchart_stacked-datalet/columnchart_stacked-datalet.html
... ... @@ -109,6 +109,10 @@ Example:
109 109 is: 'columnchart_stacked-datalet',
110 110  
111 111 properties: {
  112 + data: {
  113 + type: Array,
  114 + value: undefined
  115 + },
112 116 /**
113 117 * It's the label for X axis
114 118 *
... ...
datalets/datasetexplorer-datalet/datasetexplorer-datalet.html
... ... @@ -29,7 +29,7 @@
29 29 *
30 30 -->
31 31  
32   -<link rel="import" href="../base-ajax-json-jsonpath-datalet/base-ajax-json-jsonpath-datalet.html">
  32 +<link rel="import" href="../base-ajax-json-alasql-datalet/base-ajax-json-alasql-datalet.html">
33 33 <link rel="import" href="treemap_tooltip.html">
34 34  
35 35 <script src="../../locales/datasetexplorer_ln.js"></script>
... ... @@ -126,7 +126,7 @@ Example:
126 126 <div id="treemap_placeholder">
127 127 <treemap-tooltip id="treemap_tooltip"></treemap-tooltip>
128 128 </div>
129   - <base-ajax-json-jsonpath-datalet data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" export_menu="{{export_menu}}"></base-ajax-json-jsonpath-datalet>
  129 + <base-ajax-json-alasql-datalet data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" export_menu="{{export_menu}}"></base-ajax-json-alasql-datalet>
130 130 <!--<treemap-tooltip id="treemap_tooltip"></treemap-tooltip>-->
131 131 </template>
132 132  
... ... @@ -141,7 +141,7 @@ Example:
141 141 children : []
142 142 },
143 143  
144   - transformData: function(e)
  144 + transformData: function()
145 145 {
146 146 var treemapData = [];
147 147 DatasetexplorerBehavior.map.name = this._component.title;
... ... @@ -214,37 +214,71 @@ Example:
214 214  
215 215 filterData : function() {
216 216  
217   - var tmpData = [];
  217 + this.meta = this.data.result.providers;
  218 + this._component.fields = JSON.parse(this._component.fields);
  219 + this.data = this._transformData(this.data.result.datasets, this._component.fields, false);
  220 +// var tmpData = [];
  221 +//
  222 +// if(!this.properties.json_results.value.result)
  223 +// this.properties.json_results.value = this.data;
  224 +//
  225 +// this.meta = this.properties.json_results.value.result.providers;
  226 +//
  227 +// //Deal the fields with "'" char
  228 +// //this._component.fields = this._component.fields.replace(/#/g,"'");
  229 +//
  230 +// this._component.fields = JSON.parse(this._component.fields);
  231 +//
  232 +// for (var i = 0; i < this._component.fields.length; i++) {
  233 +// var query = "$";
  234 +// var query_elements = this._component.fields[i].split(',');
  235 +// for (var j = 0; j < query_elements.length; j++) {
  236 +// query += "['" + query_elements[j] + "']";
  237 +// if (this.isFieldArray(query_elements.slice(0, j + 1))) {
  238 +// query += "[*]";
  239 +// }
  240 +// }
  241 +//
  242 +// tmpData.push({
  243 +// name: query_elements[query_elements.length - 1],
  244 +// data: jsonPath(this.properties.json_results.value, query)
  245 +// });
  246 +// }
  247 +// this.data = tmpData;
  248 +// this._deleteWaitImage();
  249 + },
218 250  
219   - if(!this.properties.json_results.value.result)
220   - this.properties.json_results.value = this.data;
  251 + _transformData : function(data, fields, truncate) {
  252 + if(!data || data.length == 0)
  253 + return [];
221 254  
222   - this.meta = this.properties.json_results.value.result.providers;
  255 + /*DEPRECATED*/for (var i=0; i < fields.length; i++)
  256 + fields[i] = fields[i].substring(fields[i].lastIndexOf(",") + 1, fields[i].length);
223 257  
224   - //Deal the fields with "'" char
225   - //this._component.fields = this._component.fields.replace(/#/g,"'");
  258 + var tData = [];
226 259  
227   - this._component.fields = JSON.parse(this._component.fields);
  260 + for (var i in fields){
228 261  
229   - for (var i = 0; i < this._component.fields.length; i++) {
230   - var query = "$";
231   - var query_elements = this._component.fields[i].split(',');
232   - for (var j = 0; j < query_elements.length; j++) {
233   - query += "['" + query_elements[j] + "']";
234   - if (this.isFieldArray(query_elements.slice(0, j + 1))) {
235   - query += "[*]";
236   - }
237   - }
  262 + var field = fields[i];
  263 + var values = [];
238 264  
239   - tmpData.push({
240   - name: query_elements[query_elements.length - 1],
241   - data: jsonPath(this.properties.json_results.value, query)
242   - });
  265 + for (var i in data) {
  266 + var v = data[i][field];
  267 + if(truncate)
  268 + if(!isNaN(v) && v % 1 != 0)
  269 + v = Math.floor(v * 100) / 100;
  270 + values.push(v);
243 271 }
244   - this.data = tmpData;
245   - this._deleteWaitImage();
  272 +
  273 + tData.push({
  274 + name: field,
  275 + data: values
  276 + });
246 277 }
247 278  
  279 + return tData;
  280 + }
  281 +
248 282 };
249 283  
250 284 Polymer({
... ... @@ -263,6 +297,11 @@ Example:
263 297 value : {}
264 298 },
265 299  
  300 + data : {
  301 + type : Array,
  302 + value : undefined
  303 + },
  304 +
266 305 name : {
267 306 type : String,
268 307 value: ""
... ... @@ -294,7 +333,7 @@ Example:
294 333 ready: function(){
295 334 $(this).find("base-datalet")[0].hideFooter();
296 335  
297   - this.behavior = $.extend(true, {}, BaseDataletBehavior, WorkcycleBehavior, AjaxJsonJsonPathBehavior, DatasetexplorerBehavior);
  336 + this.behavior = $.extend(true, {}, BaseDataletBehavior, WorkcycleBehavior, AjaxJsonAlasqlBehavior, DatasetexplorerBehavior);
298 337 this.async(function(){this.behavior.init(this)},0);
299 338 },
300 339  
... ...
datalets/datatable-datalet/datatable-datalet.html
... ... @@ -92,6 +92,7 @@ Example:
92 92 is : 'datatable-datalet' ,
93 93  
94 94 properties: {
  95 +
95 96 /**
96 97 * It's the component behavior
97 98 *
... ... @@ -103,6 +104,11 @@ Example:
103 104 type : Object,
104 105 value : {}
105 106 },
  107 +
  108 + data : {
  109 + type : Array,
  110 + value : undefined
  111 + },
106 112 /**
107 113 * Control the export menu
108 114 * xxxx BITMASK. FROM RIGHT : HTML, PNG, RTF, MY SPACE (eg. 1111 show all, 0000 hide all)
... ...
datalets/dynamic-datatable-datalet/datatable-datalet.png deleted

5.56 KB

datalets/dynamic-datatable-datalet/demo/index.html deleted
1   -<!DOCTYPE html>
2   -<html lang="en">
3   -<head>
4   - <meta charset="UTF-8">
5   - <title></title>
6   -
7   - <script>
8   - </script>
9   -
10   -</head>
11   -<body>
12   -
13   -<script src="https://code.jquery.com/jquery-2.1.4.min.js" type="text/javascript"></script>
14   -<link rel="import" href="../datatable-datalet.html" />
15   -
16   -<datatable-datalet data-url="http://ckan.routetopa.eu/api/action/datastore_search?resource_id=73e02092-85a1-434e-85fe-0c9a43aa9a52&amp;limit=10000"
17   - fields='["result,records,Lat","result,records,Lng"]'></datatable-datalet>
18   -
19   -</body>
20   -</html>
21 0 \ No newline at end of file
datalets/dynamic-datatable-datalet/docs.html deleted
1   -<!DOCTYPE html>
2   -<html lang="en">
3   -<head>
4   - <link rel="import" href="../../bower_components/iron-component-page/iron-component-page.html">
5   - <meta charset="UTF-8">
6   -</head>
7   -<body>
8   -
9   -<iron-component-page src="datatable-datalet.html"></iron-component-page>
10   -
11   -</body>
12   -</html>
13 0 \ No newline at end of file
datalets/dynamic-datatable-datalet/dynamic-datatable-datalet.html deleted
1   -<!--
2   -@license
3   - The MIT License (MIT)
4   -
5   - Copyright (c) 2015 Dipartimento di Informatica - Universit� di Salerno - Italy
6   -
7   - Permission is hereby granted, free of charge, to any person obtaining a copy
8   - of this software and associated documentation files (the "Software"), to deal
9   - in the Software without restriction, including without limitation the rights
10   - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11   - copies of the Software, and to permit persons to whom the Software is
12   - furnished to do so, subject to the following conditions:
13   -
14   - The above copyright notice and this permission notice shall be included in
15   - all copies or substantial portions of the Software.
16   -
17   - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18   - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19   - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20   - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21   - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22   - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23   - THE SOFTWARE.
24   --->
25   -<!--
26   -* Developed by :
27   -* ROUTE-TO-PA Project - grant No 645860. - www.routetopa.eu
28   -*
29   --->
30   -
31   -<link rel="import" href="../base-ajax-json-alasql-datalet/base-ajax-json-alasql-datalet.html">
32   -
33   -<!--
34   -The `datatable-datalet` is a porting of Datatables JQuery library in a web component that has built up by using Polymer.
35   -Pass to this component a data url(CKAN api uri) and a string with one or multiple query in JsonPath format(separated by spaces) and it'll show a
36   -table with data and query attributes with all Datatables library features.
37   -
38   -Example:
39   -
40   - <datatable-datalet
41   - data-url="http://ckan.routetopa.eu/api/action/datastore_search?resource_id=#"
42   - fields='["field1","field2"]'>
43   - </datatables-datalet>
44   -
45   -@element datatable-datalet
46   -@status v0.1
47   -@demo demo/index.html
48   -@group datalets
49   --->
50   -
51   -<dom-module id="dynamic-datatable-datalet">
52   - <template>
53   - <link rel="stylesheet" type="text/css" href="js/DataTables/datatables.css"/>
54   -
55   - <span id="_span"></span>
56   -
57   - <base-ajax-json-alasql-datalet data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" title="{{title}}" description="{{description}}" export_menu="{{export_menu}}"></base-ajax-json-alasql-datalet>
58   - </template>
59   -
60   - <script type="text/javascript" src="js/DataTables/datatables.js"></script>
61   -
62   - <script>
63   - var DynamicDatatableBehavior = {
64   -
65   - presentData: function(){
66   - var html = "<table id=\"dynamic-datatable\" class=\"stripe row-border\" cellspacing=\"0\" style=\"height: auto; width: auto;\">";
67   -
68   - if(!this.data || this.data[0] == undefined) return;
69   - html += '<thead>'+
70   - '<tr>';
71   - for(var x = 0; x<this.data.length; x++){
72   - html += '<th>' + this.data[x].name + '</th>';
73   - }
74   - html += '</tr>' +
75   - '</thead>' +
76   - '<tbody>';
77   - for(var i = 0; i<this.data[0].data.length; i++){
78   - html += '<tr>';
79   - for(var x = 0; x<this.data.length; x++){
80   - html += '<td>' + this.data[x].data[i] + '</td>';
81   - }
82   - html += '</tr>';
83   - }
84   - html += '</tbody></table>';
85   -
86   - $(this._component.$._span).html(html);
87   - $(this._component.$._span.childNodes[0]).DataTable({"order": []});
88   - },
89   -
90   - _destroy: function(){
91   - if(this._component){//evita caso init
92   - $(this._component.$._span).html("");
93   - //$(this._component.$.datatable).DataTable().destroy();
94   - this._component.behavior.selectData();
95   - this._component.behavior.presentData();
96   - }
97   - }
98   -
99   - };
100   -
101   - Polymer({
102   - is : 'dynamic-datatable-datalet' ,
103   -
104   - properties: {
105   - /**
106   - * It's the component behavior
107   - *
108   - * @attribute behavior
109   - * @type Object
110   - * @default {}
111   - */
112   - behavior : {
113   - type : Object,
114   - value : {}
115   - },
116   -
117   - fields : {
118   - observer: '_reload'
119   - },
120   - /**
121   - * Control the export menu
122   - * xxxx BITMASK. FROM RIGHT : HTML, PNG, RTF, MY SPACE (eg. 1111 show all, 0000 hide all)
123   - *
124   - * @attribute export_menu
125   - * @type Number
126   - * @default 15
127   - */
128   - export_menu : {
129   - type : Number,
130   - value : 15 // xxxx BITMASK. FROM RIGHT : HTML, PNG, RTF, MY SPACE (eg. 1111 show all, 0000 hide all)
131   - }
132   -
133   -// filters : {
134   -// observer: '_reload'
135   -// }
136   -
137   - },
138   -
139   - ready: function(){
140   - $(this).find("base-datalet")[0].hideFooter();
141   -
142   - this.behavior = $.extend(true, {}, BaseDataletBehavior, WorkcycleBehavior, AjaxJsonAlasqlBehavior, DynamicDatatableBehavior);
143   - this.async(function(){this.behavior.init(this)}, 0);
144   - },
145   -
146   - _reload: function(){
147   -
148   - if(this.fields.constructor == Array);//fields in selectData --> from Array to String
149   - else{
150   - this.behavior._destroy();
151   -// this.behavior.selectData();
152   -// this.behavior.presentData();
153   - }
154   - }
155   - });
156   -
157   - </script>
158   -</dom-module>
159   -
datalets/dynamic-datatable-datalet/js/DataTables/datatables.css deleted
1   -/*
2   - * This combined file was created by the DataTables downloader builder:
3   - * https://datatables.net/download
4   - *
5   - * To rebuild or modify this file with the latest versions of the included
6   - * software please visit:
7   - * https://datatables.net/download/#ju-1.11.4/dt-1.10.9
8   - *
9   - * Included libraries:
10   - * jQuery UI 1.11.4, DataTables 1.10.9
11   - */
12   -
13   -/*! jQuery UI - v1.11.4 - 2015-03-11
14   -* http://jqueryui.com
15   -* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
16   -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
17   -* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
18   -
19   -/* Layout helpers
20   -----------------------------------*/
21   -.ui-helper-hidden {
22   - display: none;
23   -}
24   -.ui-helper-hidden-accessible {
25   - border: 0;
26   - clip: rect(0 0 0 0);
27   - height: 1px;
28   - margin: -1px;
29   - overflow: hidden;
30   - padding: 0;
31   - position: absolute;
32   - width: 1px;
33   -}
34   -.ui-helper-reset {
35   - margin: 0;
36   - padding: 0;
37   - border: 0;
38   - outline: 0;
39   - line-height: 1.3;
40   - text-decoration: none;
41   - font-size: 100%;
42   - list-style: none;
43   -}
44   -.ui-helper-clearfix:before,
45   -.ui-helper-clearfix:after {
46   - content: "";
47   - display: table;
48   - border-collapse: collapse;
49   -}
50   -.ui-helper-clearfix:after {
51   - clear: both;
52   -}
53   -.ui-helper-clearfix {
54   - min-height: 0; /* support: IE7 */
55   -}
56   -.ui-helper-zfix {
57   - width: 100%;
58   - height: 100%;
59   - top: 0;
60   - left: 0;
61   - position: absolute;
62   - opacity: 0;
63   - filter:Alpha(Opacity=0); /* support: IE8 */
64   -}
65   -
66   -.ui-front {
67   - z-index: 100;
68   -}
69   -
70   -
71   -/* Interaction Cues
72   -----------------------------------*/
73   -.ui-state-disabled {
74   - cursor: default !important;
75   -}
76   -
77   -
78   -/* Icons
79   -----------------------------------*/
80   -
81   -/* states and images */
82   -.ui-icon {
83   - display: block;
84   - text-indent: -99999px;
85   - overflow: hidden;
86   - background-repeat: no-repeat;
87   -}
88   -
89   -
90   -/* Misc visuals
91   -----------------------------------*/
92   -
93   -/* Overlays */
94   -.ui-widget-overlay {
95   - position: fixed;
96   - top: 0;
97   - left: 0;
98   - width: 100%;
99   - height: 100%;
100   -}
101   -.ui-accordion .ui-accordion-header {
102   - display: block;
103   - cursor: pointer;
104   - position: relative;
105   - margin: 2px 0 0 0;
106   - padding: .5em .5em .5em .7em;
107   - min-height: 0; /* support: IE7 */
108   - font-size: 100%;
109   -}
110   -.ui-accordion .ui-accordion-icons {
111   - padding-left: 2.2em;
112   -}
113   -.ui-accordion .ui-accordion-icons .ui-accordion-icons {
114   - padding-left: 2.2em;
115   -}
116   -.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
117   - position: absolute;
118   - left: .5em;
119   - top: 50%;
120   - margin-top: -8px;
121   -}
122   -.ui-accordion .ui-accordion-content {
123   - padding: 1em 2.2em;
124   - border-top: 0;
125   - overflow: auto;
126   -}
127   -.ui-autocomplete {
128   - position: absolute;
129   - top: 0;
130   - left: 0;
131   - cursor: default;
132   -}
133   -.ui-button {
134   - display: inline-block;
135   - position: relative;
136   - padding: 0;
137   - line-height: normal;
138   - margin-right: .1em;
139   - cursor: pointer;
140   - vertical-align: middle;
141   - text-align: center;
142   - overflow: visible; /* removes extra width in IE */
143   -}
144   -.ui-button,
145   -.ui-button:link,
146   -.ui-button:visited,
147   -.ui-button:hover,
148   -.ui-button:active {
149   - text-decoration: none;
150   -}
151   -/* to make room for the icon, a width needs to be set here */
152   -.ui-button-icon-only {
153   - width: 2.2em;
154   -}
155   -/* button elements seem to need a little more width */
156   -button.ui-button-icon-only {
157   - width: 2.4em;
158   -}
159   -.ui-button-icons-only {
160   - width: 3.4em;
161   -}
162   -button.ui-button-icons-only {
163   - width: 3.7em;
164   -}
165   -
166   -/* button text element */
167   -.ui-button .ui-button-text {
168   - display: block;
169   - line-height: normal;
170   -}
171   -.ui-button-text-only .ui-button-text {
172   - padding: .4em 1em;
173   -}
174   -.ui-button-icon-only .ui-button-text,
175   -.ui-button-icons-only .ui-button-text {
176   - padding: .4em;
177   - text-indent: -9999999px;
178   -}
179   -.ui-button-text-icon-primary .ui-button-text,
180   -.ui-button-text-icons .ui-button-text {
181   - padding: .4em 1em .4em 2.1em;
182   -}
183   -.ui-button-text-icon-secondary .ui-button-text,
184   -.ui-button-text-icons .ui-button-text {
185   - padding: .4em 2.1em .4em 1em;
186   -}
187   -.ui-button-text-icons .ui-button-text {
188   - padding-left: 2.1em;
189   - padding-right: 2.1em;
190   -}
191   -/* no icon support for input elements, provide padding by default */
192   -input.ui-button {
193   - padding: .4em 1em;
194   -}
195   -
196   -/* button icon element(s) */
197   -.ui-button-icon-only .ui-icon,
198   -.ui-button-text-icon-primary .ui-icon,
199   -.ui-button-text-icon-secondary .ui-icon,
200   -.ui-button-text-icons .ui-icon,
201   -.ui-button-icons-only .ui-icon {
202   - position: absolute;
203   - top: 50%;
204   - margin-top: -8px;
205   -}
206   -.ui-button-icon-only .ui-icon {
207   - left: 50%;
208   - margin-left: -8px;
209   -}
210   -.ui-button-text-icon-primary .ui-button-icon-primary,
211   -.ui-button-text-icons .ui-button-icon-primary,
212   -.ui-button-icons-only .ui-button-icon-primary {
213   - left: .5em;
214   -}
215   -.ui-button-text-icon-secondary .ui-button-icon-secondary,
216   -.ui-button-text-icons .ui-button-icon-secondary,
217   -.ui-button-icons-only .ui-button-icon-secondary {
218   - right: .5em;
219   -}
220   -
221   -/* button sets */
222   -.ui-buttonset {
223   - margin-right: 7px;
224   -}
225   -.ui-buttonset .ui-button {
226   - margin-left: 0;
227   - margin-right: -.3em;
228   -}
229   -
230   -/* workarounds */
231   -/* reset extra padding in Firefox, see h5bp.com/l */
232   -input.ui-button::-moz-focus-inner,
233   -button.ui-button::-moz-focus-inner {
234   - border: 0;
235   - padding: 0;
236   -}
237   -.ui-datepicker {
238   - width: 17em;
239   - padding: .2em .2em 0;
240   - display: none;
241   -}
242   -.ui-datepicker .ui-datepicker-header {
243   - position: relative;
244   - padding: .2em 0;
245   -}
246   -.ui-datepicker .ui-datepicker-prev,
247   -.ui-datepicker .ui-datepicker-next {
248   - position: absolute;
249   - top: 2px;
250   - width: 1.8em;
251   - height: 1.8em;
252   -}
253   -.ui-datepicker .ui-datepicker-prev-hover,
254   -.ui-datepicker .ui-datepicker-next-hover {
255   - top: 1px;
256   -}
257   -.ui-datepicker .ui-datepicker-prev {
258   - left: 2px;
259   -}
260   -.ui-datepicker .ui-datepicker-next {
261   - right: 2px;
262   -}
263   -.ui-datepicker .ui-datepicker-prev-hover {
264   - left: 1px;
265   -}
266   -.ui-datepicker .ui-datepicker-next-hover {
267   - right: 1px;
268   -}
269   -.ui-datepicker .ui-datepicker-prev span,
270   -.ui-datepicker .ui-datepicker-next span {
271   - display: block;
272   - position: absolute;
273   - left: 50%;
274   - margin-left: -8px;
275   - top: 50%;
276   - margin-top: -8px;
277   -}
278   -.ui-datepicker .ui-datepicker-title {
279   - margin: 0 2.3em;
280   - line-height: 1.8em;
281   - text-align: center;
282   -}
283   -.ui-datepicker .ui-datepicker-title select {
284   - /*font-size: 1em;*/
285   - margin: 1px 0;
286   -}
287   -.ui-datepicker select.ui-datepicker-month,
288   -.ui-datepicker select.ui-datepicker-year {
289   - width: 45%;
290   -}
291   -.ui-datepicker table {
292   - width: 100%;
293   - /*font-size: .9em;*/
294   - border-collapse: collapse;
295   - margin: 0 0 .4em;
296   -}
297   -.ui-datepicker th {
298   - padding: .7em .3em;
299   - text-align: center;
300   - font-weight: bold;
301   - border: 0;
302   -}
303   -.ui-datepicker td {
304   - border: 0;
305   - padding: 1px;
306   -}
307   -.ui-datepicker td span,
308   -.ui-datepicker td a {
309   - display: block;
310   - padding: .2em;
311   - text-align: right;
312   - text-decoration: none;
313   -}
314   -.ui-datepicker .ui-datepicker-buttonpane {
315   - background-image: none;
316   - margin: .7em 0 0 0;
317   - padding: 0 .2em;
318   - border-left: 0;
319   - border-right: 0;
320   - border-bottom: 0;
321   -}
322   -.ui-datepicker .ui-datepicker-buttonpane button {
323   - float: right;
324   - margin: .5em .2em .4em;
325   - cursor: pointer;
326   - padding: .2em .6em .3em .6em;
327   - width: auto;
328   - overflow: visible;
329   -}
330   -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
331   - float: left;
332   -}
333   -
334   -/* with multiple calendars */
335   -.ui-datepicker.ui-datepicker-multi {
336   - width: auto;
337   -}
338   -.ui-datepicker-multi .ui-datepicker-group {
339   - float: left;
340   -}
341   -.ui-datepicker-multi .ui-datepicker-group table {
342   - width: 95%;
343   - margin: 0 auto .4em;
344   -}
345   -.ui-datepicker-multi-2 .ui-datepicker-group {
346   - width: 50%;
347   -}
348   -.ui-datepicker-multi-3 .ui-datepicker-group {
349   - width: 33.3%;
350   -}
351   -.ui-datepicker-multi-4 .ui-datepicker-group {
352   - width: 25%;
353   -}
354   -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
355   -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
356   - border-left-width: 0;
357   -}
358   -.ui-datepicker-multi .ui-datepicker-buttonpane {
359   - clear: left;
360   -}
361   -.ui-datepicker-row-break {
362   - clear: both;
363   - width: 100%;
364   - font-size: 0;
365   -}
366   -
367   -/* RTL support */
368   -.ui-datepicker-rtl {
369   - direction: rtl;
370   -}
371   -.ui-datepicker-rtl .ui-datepicker-prev {
372   - right: 2px;
373   - left: auto;
374   -}
375   -.ui-datepicker-rtl .ui-datepicker-next {
376   - left: 2px;
377   - right: auto;
378   -}
379   -.ui-datepicker-rtl .ui-datepicker-prev:hover {
380   - right: 1px;
381   - left: auto;
382   -}
383   -.ui-datepicker-rtl .ui-datepicker-next:hover {
384   - left: 1px;
385   - right: auto;
386   -}
387   -.ui-datepicker-rtl .ui-datepicker-buttonpane {
388   - clear: right;
389   -}
390   -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
391   - float: left;
392   -}
393   -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
394   -.ui-datepicker-rtl .ui-datepicker-group {
395   - float: right;
396   -}
397   -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
398   -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
399   - border-right-width: 0;
400   - border-left-width: 1px;
401   -}
402   -.ui-dialog {
403   - overflow: hidden;
404   - position: absolute;
405   - top: 0;
406   - left: 0;
407   - padding: .2em;
408   - outline: 0;
409   -}
410   -.ui-dialog .ui-dialog-titlebar {
411   - padding: .4em 1em;
412   - position: relative;
413   -}
414   -.ui-dialog .ui-dialog-title {
415   - float: left;
416   - margin: .1em 0;
417   - white-space: nowrap;
418   - width: 90%;
419   - overflow: hidden;
420   - text-overflow: ellipsis;
421   -}
422   -.ui-dialog .ui-dialog-titlebar-close {
423   - position: absolute;
424   - right: .3em;
425   - top: 50%;
426   - width: 20px;
427   - margin: -10px 0 0 0;
428   - padding: 1px;
429   - height: 20px;
430   -}
431   -.ui-dialog .ui-dialog-content {
432   - position: relative;
433   - border: 0;
434   - padding: .5em 1em;
435   - background: none;
436   - overflow: auto;
437   -}
438   -.ui-dialog .ui-dialog-buttonpane {
439   - text-align: left;
440   - border-width: 1px 0 0 0;
441   - background-image: none;
442   - margin-top: .5em;
443   - padding: .3em 1em .5em .4em;
444   -}
445   -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
446   - float: right;
447   -}
448   -.ui-dialog .ui-dialog-buttonpane button {
449   - margin: .5em .4em .5em 0;
450   - cursor: pointer;
451   -}
452   -.ui-dialog .ui-resizable-se {
453   - width: 12px;
454   - height: 12px;
455   - right: -5px;
456   - bottom: -5px;
457   - background-position: 16px 16px;
458   -}
459   -.ui-draggable .ui-dialog-titlebar {
460   - cursor: move;
461   -}
462   -.ui-draggable-handle {
463   - -ms-touch-action: none;
464   - touch-action: none;
465   -}
466   -.ui-menu {
467   - list-style: none;
468   - padding: 0;
469   - margin: 0;
470   - display: block;
471   - outline: none;
472   -}
473   -.ui-menu .ui-menu {
474   - position: absolute;
475   -}
476   -.ui-menu .ui-menu-item {
477   - position: relative;
478   - margin: 0;
479   - padding: 3px 1em 3px .4em;
480   - cursor: pointer;
481   - min-height: 0; /* support: IE7 */
482   - /* support: IE10, see #8844 */
483   - list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
484   -}
485   -.ui-menu .ui-menu-divider {
486   - margin: 5px 0;
487   - height: 0;
488   - font-size: 0;
489   - line-height: 0;
490   - border-width: 1px 0 0 0;
491   -}
492   -.ui-menu .ui-state-focus,
493   -.ui-menu .ui-state-active {
494   - margin: -1px;
495   -}
496   -
497   -/* icon support */
498   -.ui-menu-icons {
499   - position: relative;
500   -}
501   -.ui-menu-icons .ui-menu-item {
502   - padding-left: 2em;
503   -}
504   -
505   -/* left-aligned */
506   -.ui-menu .ui-icon {
507   - position: absolute;
508   - top: 0;
509   - bottom: 0;
510   - left: .2em;
511   - margin: auto 0;
512   -}
513   -
514   -/* right-aligned */
515   -.ui-menu .ui-menu-icon {
516   - left: auto;
517   - right: 0;
518   -}
519   -.ui-progressbar {
520   - height: 2em;
521   - text-align: left;
522   - overflow: hidden;
523   -}
524   -.ui-progressbar .ui-progressbar-value {
525   - margin: -1px;
526   - height: 100%;
527   -}
528   -.ui-progressbar .ui-progressbar-overlay {
529   - background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
530   - height: 100%;
531   - filter: alpha(opacity=25); /* support: IE8 */
532   - opacity: 0.25;
533   -}
534   -.ui-progressbar-indeterminate .ui-progressbar-value {
535   - background-image: none;
536   -}
537   -.ui-resizable {
538   - position: relative;
539   -}
540   -.ui-resizable-handle {
541   - position: absolute;
542   - font-size: 0.1px;
543   - display: block;
544   - -ms-touch-action: none;
545   - touch-action: none;
546   -}
547   -.ui-resizable-disabled .ui-resizable-handle,
548   -.ui-resizable-autohide .ui-resizable-handle {
549   - display: none;
550   -}
551   -.ui-resizable-n {
552   - cursor: n-resize;
553   - height: 7px;
554   - width: 100%;
555   - top: -5px;
556   - left: 0;
557   -}
558   -.ui-resizable-s {
559   - cursor: s-resize;
560   - height: 7px;
561   - width: 100%;
562   - bottom: -5px;
563   - left: 0;
564   -}
565   -.ui-resizable-e {
566   - cursor: e-resize;
567   - width: 7px;
568   - right: -5px;
569   - top: 0;
570   - height: 100%;
571   -}
572   -.ui-resizable-w {
573   - cursor: w-resize;
574   - width: 7px;
575   - left: -5px;
576   - top: 0;
577   - height: 100%;
578   -}
579   -.ui-resizable-se {
580   - cursor: se-resize;
581   - width: 12px;
582   - height: 12px;
583   - right: 1px;
584   - bottom: 1px;
585   -}
586   -.ui-resizable-sw {
587   - cursor: sw-resize;
588   - width: 9px;
589   - height: 9px;
590   - left: -5px;
591   - bottom: -5px;
592   -}
593   -.ui-resizable-nw {
594   - cursor: nw-resize;
595   - width: 9px;
596   - height: 9px;
597   - left: -5px;
598   - top: -5px;
599   -}
600   -.ui-resizable-ne {
601   - cursor: ne-resize;
602   - width: 9px;
603   - height: 9px;
604   - right: -5px;
605   - top: -5px;
606   -}
607   -.ui-selectable {
608   - -ms-touch-action: none;
609   - touch-action: none;
610   -}
611   -.ui-selectable-helper {
612   - position: absolute;
613   - z-index: 100;
614   - border: 1px dotted black;
615   -}
616   -.ui-selectmenu-menu {
617   - padding: 0;
618   - margin: 0;
619   - position: absolute;
620   - top: 0;
621   - left: 0;
622   - display: none;
623   -}
624   -.ui-selectmenu-menu .ui-menu {
625   - overflow: auto;
626   - /* Support: IE7 */
627   - overflow-x: hidden;
628   - padding-bottom: 1px;
629   -}
630   -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
631   - /*font-size: 1em;*/
632   - font-weight: bold;
633   - line-height: 1.5;
634   - padding: 2px 0.4em;
635   - margin: 0.5em 0 0 0;
636   - height: auto;
637   - border: 0;
638   -}
639   -.ui-selectmenu-open {
640   - display: block;
641   -}
642   -.ui-selectmenu-button {
643   - display: inline-block;
644   - overflow: hidden;
645   - position: relative;
646   - text-decoration: none;
647   - cursor: pointer;
648   -}
649   -.ui-selectmenu-button span.ui-icon {
650   - right: 0.5em;
651   - left: auto;
652   - margin-top: -8px;
653   - position: absolute;
654   - top: 50%;
655   -}
656   -.ui-selectmenu-button span.ui-selectmenu-text {
657   - text-align: left;
658   - padding: 0.4em 2.1em 0.4em 1em;
659   - display: block;
660   - line-height: 1.4;
661   - overflow: hidden;
662   - text-overflow: ellipsis;
663   - white-space: nowrap;
664   -}
665   -.ui-slider {
666   - position: relative;
667   - text-align: left;
668   -}