<link rel="import" href="../../bower_components/polymer/polymer.html"> <link rel="import" href="../../bower_components/iron-ajax/iron-ajax.html"> <link rel="import" href="../../bower_components/iron-flex-layout/iron-flex-layout.html"> <!--<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">--> <link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html"> <link rel="import" href="../../bower_components/paper-styles/color.html"> <link rel="import" href="../../bower_components/paper-styles/typography.html"> <link rel="import" href="../../bower_components/iron-ajax/iron-ajax.html"> <link rel="import" href="../../bower_components/iron-icons/iron-icons.html"> <link rel="import" href="../../bower_components/iron-image/iron-image.html"> <link rel="import" href="../../bower_components/iron-list/iron-list.html"> <link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html"> <link rel="import" href="../../bower_components/paper-menu/paper-menu.html"> <link rel="import" href="../../bower_components/paper-item/paper-item.html"> <link rel="import" href="../../bower_components/paper-input/paper-input.html"> <link rel="import" href="../../bower_components/paper-input/paper-textarea.html"> <link rel="import" href="../../bower_components/paper-material/paper-material.html" /> <link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html"> <link rel="import" href="../../bower_components/iron-icons/hardware-icons.html"> <!--<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">--> <link rel="import" href="../../bower_components/paper-radio-button/paper-radio-button.html"> <link rel="import" href="../../bower_components/paper-radio-group/paper-radio-group.html"> <link rel="import" href="../../bower_components/paper-checkbox/paper-checkbox.html"> <dom-module id="ortelio-controllet"> <template> <style> :host { --paper-dropdown-menu-icon: { color: #000000; }; --paper-dropdown-menu-ripple: { color: #FFFFFF; }; /*--paper-tab-ink: {*/ /*color: #FFFFFF;*/ /*};*/ } iron-list { --iron-list-items-container: { margin:16px 16px 8px 16px; }; } paper-textarea { width: 100%; --paper-input-container-focus-color: #2196F3; } paper-input { --paper-input-container-focus-color: #2196F3; } paper-dropdown-menu { width: 100%; --paper-input-container-focus-color: #2196F3; } paper-item.iron-selected { background-color: #2196F3; color: #FFFFFF; } paper-radio-button { height: 24px; --paper-radio-button-checked-color: #2196F3; --paper-radio-button-checked-ink-color: #FFFFFF; --paper-radio-button-unchecked-color: #000000; --paper-radio-button-unchecked-ink-color: #FFFFFF; --paper-radio-button-label-color: #000000; } paper-icon-button{ height: 48px; width: 48px; padding: 0px; --paper-icon-button-ink-color: #FFFFFF; } paper-icon-button:hover{ color: #2196F3; } paper-icon-button[disabled]{ color: #B6B6B6; } paper-icon-button.clear { width: 24px; height: 24px; padding: 0px 4px; color: #F44336; --paper-icon-button-ink-color: #FFFFFF; } paper-tabs { font-weight: bold; } paper-tab { transition: all 1.0s; } paper-tab.iron-selected { background-color: #2196F3; color: #FFFFFF; } paper-tab:not(.iron-selected):hover { color: #2196F3; } .item { /*@apply(--layout-horizontal);*/ display: flex; padding: 11px; border: 1px solid #B6B6B6; border-radius: 4px; cursor: pointer; margin-bottom: 8px; background-color: #E0E0E0; } .item.expanded { /*border: 2px solid #2196F3;*/ border-color: #2196F3; } .pad { @apply(--layout-flex); /*@apply(--layout-vertical);*/ } .primary { font-weight: bold; } .item.expanded .primary { color: #2196F3; } .longText { display: none; } .item.expanded .longText { display: block; } #ortelio_container * { font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; } #ortelio_container { height: 100%; width: 100%; margin-top: -48px;/*bad*/ } #ortelio_container #list_info { display: flex; height: calc(100% - 48px); width: calc(100% + 8px);/*bad*/ } #ortelio_container #list_container { position: relative; height: 100%; width: 50%; border-left: 4px solid #B6B6B6; } #ortelio_container #info_container { position: relative; height: 100%; width: 50%; border-right: 4px solid #B6B6B6; } #ortelio_container #info { position: relative; height: calc(100% - 56px); width: calc(100% - 56px); padding: 11px; border: 1px solid #B6B6B6; border-radius: 4px; background-color: #E0E0E0; margin: 16px; } #ortelio_container #header { width: 100%; position: relative; z-index: 1; -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); -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); 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); background-color: #B6B6B6; display: flex; padding: 0px 4px; } #header .header_block { width: 20%; height: 40px; padding: 4px 16px 4px 16px; } #header .header_block:nth-child(4) { text-align: center; } #ortelio_container #footer_list { position: relative; z-index: 1; -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); -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); 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); } #ortelio_container #footer_list{ width: 100%; background-color: #B6B6B6; display: flex; padding: 0px 4px; } .footer_block { width: calc((100% - 0px) / 3); height: 24px; padding: 12px 8px 12px 8px; text-align: center; } .footer_block:nth-child(2) { height: 48px; padding: 0px 8px; } .footer_block:nth-child(3) { height: 48px; padding: 0px 8px; /*cursor: url(http://www.i2clipart.com/cliparts/f/5/9/a/clipart-pointer-f59a.png), auto;*/ } </style> <iron-ajax id="filteredDatasets_request" handle-as="json" url="http://uc1.ortelio.co.uk/api/" on-response="_getFilteredDatasets"></iron-ajax> <div id="ortelio_container"> <div id="header"> <div class="header_block"> </div> <div class="header_block"> </div> <div class="header_block"> </div> <div class="header_block"> </div> <div class="header_block"> <paper-input id="datasets_filter" value={{filter}} no-label-float label=""> <iron-icon class="search" icon="search" prefix></iron-icon> <paper-icon-button class="clear" suffix on-click="_clearInput" icon="clear" tabindex="0"></paper-icon-button> </paper-input> </div> </div> <div id="list_info"> <div id="list_container"> <iron-list id="list" items="{{shownDatasets}}" selection-enabled> <template> <div> <div class$="{{getClassForItem(selected)}}" on-tap="_selectDataUrl"> <div class="pad"> <div class="primary">{{item.package_name}}</div> </div> </div> </div> </template> </iron-list> </div> <div id="info_container"> <div id="info"> </div> </div> </div> <div id="footer_list"> <div class="footer_block"><span id="showing"></span> {{shownPrev}} <span id="to"></span> {{shownNext}} <span id="of"></span> {{length}} <span id="datasets"></span></div> <div class="footer_block"> <paper-icon-button id="slider_chevron_left" class="chevron-left" on-click="_onPrevClick" icon="chevron-left"></paper-icon-button> <paper-icon-button id="slider_chevron_right" class="chevron-right" on-click="_onNextClick" icon="chevron-right"></paper-icon-button> </div> <div class="footer_block"> <paper-radio-group id="radio_sort" on-change="_changeSorting" selected="date"> <paper-radio-button name="date">Date</paper-radio-button> <paper-radio-button name="relevance">Relevance</paper-radio-button> </paper-radio-group> </div> </div> </div> </template> <script> HTMLImports.whenReady(function() { Polymer({ is: 'ortelio-controllet', properties: { // datasets: { // type: Object, // value: undefined // }, filteredDatasets : { type : Array, value : undefined }, shownDatasets : { type : Array, value : undefined }, suggestedDatasets : { type : Array, value : undefined }, providers : { type : Array, value : undefined }, dataUrl : { type : String, value : undefined, observer : '_fireDataUrl' }, filter : { type : String, value : "", observer : '_filter' }, sort : { type : String, value : "date", }, selected : { type : Number, value : 0 }, prev : {type : Number, value : undefined}, next : {type : Number, value : undefined}, shownPrev : {type : Number, value : undefined}, shownNext : {type : Number, value : undefined}, length : {type : Number, value : undefined}, step : {type : Number, value : 20}, }, ready : function() { $(this.$.list_container).perfectScrollbar(); $(this.$.info).perfectScrollbar(); // this.$.selected_url.invalid = true; }, // attached: function() { var that = this; window.addEventListener("resize", function() { that._refreshList();});///?????????????? // this.providers = this.datasets["result"]["providers"]; // this.datasets = this.datasets["result"]["datasets"]; // this.datasets = [{"package_name":"openbilancio-provincia-di-prato","package_url":"http:\/\/ckan.routetopa.eu\/dataset\/openbilancio-provincia-di-prato","ckan_id":"0cb600fc-19ad-4aaf-9794-1e6ea851840a","portal":"http:\/\/ckan.routetopa.eu\/","resource_url":"http:\/\/ckan.routetopa.eu\/dataset\/58e0c611-8d26-4efe-ad77-af2c7a16234d\/resource\/0cb600fc-19ad-4aaf-9794-1e6ea851840a\/download\/CONSUNTIVOENTRATE2014.csv"},{"package_name":"albo-regionale-delle-concessioni-demaniali-marittime-per-finalita-turistico-ricreative","package_url":"http:\/\/dati.lazio.it\/catalog\/en\/dataset\/albo-regionale-delle-concessioni-demaniali-marittime-per-finalita-turistico-ricreative","ckan_id":"c8772359-fc32-4c8f-8e93-8e9bb3ccb17b","portal":"http:\/\/dati.lazio.it\/","resource_url":"http:\/\/dati.lazio.it\/catalog\/dataset\/c18aec8b-f33c-41dd-80f6-c1c9777ec842\/resource\/c8772359-fc32-4c8f-8e93-8e9bb3ccb17b\/download\/datianno2013.csv"},{"package_name":"artes-registro-regionale-delle-associazioni","package_url":"http:\/\/dati.lazio.it\/catalog\/en\/dataset\/artes-registro-regionale-delle-associazioni","ckan_id":"3dcbe73c-6724-458d-9976-9b420be95e74","portal":"http:\/\/dati.lazio.it\/","resource_url":"http:\/\/dati.lazio.it\/catalog\/dataset\/bdcbd139-c5d7-45f9-8d30-433e090bad02\/resource\/3dcbe73c-6724-458d-9976-9b420be95e74\/download\/associazioni.csv"},{"package_name":"bilanci-preventivi-della-regione-lazio","package_url":"http:\/\/dati.lazio.it\/catalog\/en\/dataset\/bilanci-preventivi-della-regione-lazio","ckan_id":"722b6cbd-28d3-4151-ac50-9c4261298168","portal":"http:\/\/dati.lazio.it\/","resource_url":"http:\/\/dati.lazio.it\/catalog\/dataset\/6febe802-8344-4734-b11b-ce4638234b45\/resource\/722b6cbd-28d3-4151-ac50-9c4261298168\/download\/preventivospese2013.csv"},{"package_name":"contributi-per-gli-spettacoli-dal-vivo","package_url":"http:\/\/dati.lazio.it\/catalog\/en\/dataset\/contributi-per-gli-spettacoli-dal-vivo","ckan_id":"e7c66956-5a08-4c2f-bee9-366e3035b0b7","portal":"http:\/\/dati.lazio.it\/","resource_url":"http:\/\/dati.lazio.it\/catalog\/dataset\/00bc8d2f-1513-4c45-89a1-75fc65d09c03\/resource\/e7c66956-5a08-4c2f-bee9-366e3035b0b7\/download\/contributi2010.csv"}] this._reset(); // // this.prev = 1; // this.next = this.step; // this.length = this.filteredDatasets.length; // // this.shownPrev = Math.min(this.prev, this.length); // this.shownNext = Math.min(this.next, this.length); // this.shownDatasets = this.filteredDatasets.slice(this.prev-1, this.next); // // this.$.list.scrollTarget = this.ownerDocument.documentElement; this._translate(); }, _translate : function(){ this.$.showing.innerHTML = ln["showing_" + ln["localization"]]; this.$.to.innerHTML = ln["to_" + ln["localization"]]; this.$.of.innerHTML = ln["of_" + ln["localization"]]; this.$.datasets.innerHTML = ln["datasets_" + ln["localization"]]; }, _refreshList : function() { this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next); }, _getFilteredDatasets : function(e) { // console.log(e.detail.response); if(e.detail.response == null) return; this.filteredDatasets = e.detail.response["results"]; this.prev = 1; this.next = this.step; this.length = this.filteredDatasets.length; this.shownPrev = Math.min(this.prev, this.length); this.shownNext = Math.min(this.next, this.length); this.shownDatasets = this.filteredDatasets.slice(this.prev-1, this.next); this.$.list.scrollTarget = this.ownerDocument.documentElement; }, _reset : function() { this.filteredDatasets = []; // this.prev = 1; this.next = this.step; this.length = this.filteredDatasets.length; this.shownPrev = Math.min(this.prev, this.length); this.shownNext = Math.min(this.next, this.length); this.shownDatasets = this.filteredDatasets.slice(this.prev-1, this.next); this.$.list.scrollTarget = this.ownerDocument.documentElement; }, _filter : function() { if (this.filter == "super finger") this.$.ortelio_container.style.cursor = "url(http://www.i2clipart.com/cliparts/f/5/9/a/clipart-pointer-f59a.png), auto"; if(this.filter.length > 0) this.debounce('filter', function () { this.$.filteredDatasets_request.url = "http://uc1.ortelio.co.uk/api/" + this.filter + "/order:" + this.sort + "/limit:99999"; this.$.filteredDatasets_request.generateRequest(); }, 500); else this._reset(); }, _clearInput : function() { this.$.datasets_filter.value = ""; this._filter(); }, _changeSorting : function() { this.async(function () { this.sort = this.$.radio_sort.selectedItem.name; this._filter(); }, 0); }, getClassForItem: function(selected) { return selected ? 'item expanded' : 'item'; }, _onPrevClick : function(){ if(this.prev != 1) { this.prev -= this.step; this.next -= this.step; this.shownPrev = Math.min(this.prev, this.length); this.shownNext = Math.min(this.next, this.length); this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next); } $("#list_container").animate({ scrollTop: 0}, 0); }, _onNextClick : function(){ if(this.next < this.length) { this.prev += this.step; this.next += this.step; this.shownPrev = Math.min(this.prev, this.length); this.shownNext = Math.min(this.next, this.length); this.shownDatasets = this.filteredDatasets.slice(this.prev - 1, this.next); } $("#list_container").animate({ scrollTop: 0}, 0); }, _selectDataUrl : function(){ this.async(function () { if(this.$.list.selectedItem) { var metas = this.$.list.selectedItem; var html = "<span style=\"color: #2196F3; font-weight: bold;\">" + this.$.list.selectedItem.package_name + "</span><br><br>"; for(var i in metas) html += "<b>" + i + ":</b> " + metas[i] + "<br>"; this.$.info.innerHTML = html; var url = this.$.list.selectedItem.resource_url; // Check if CKAN var strDatasetPos = url.indexOf('/dataset/'); var strResourcePos = (strDatasetPos >= 0) ? url.indexOf('/resource/') : -1; if (strDatasetPos >= 0 && strResourcePos > strDatasetPos) { var urlSegment1 = url.substring(0, strDatasetPos); var urlResourceEnd = url.indexOf('/', strResourcePos + 10); var resourceId = url.substring(strResourcePos + 10, urlResourceEnd); url = urlSegment1 + "/api/action/datastore_search?resource_id=" + resourceId; } // // // Check if OPENDATASOFT // var strExploreDatasetPos = url.indexOf('/explore/dataset/'); // if (strExploreDatasetPos >= 0) { // var urlSegment1 = url.substring(0, strExploreDatasetPos); // var datasetEnd = url.indexOf(strExploreDatasetPos + 17, '/'); // var datasetId = url.substring(strExploreDatasetPos + 17, datasetEnd >= 0 ? datasetEnd : url.length); // url = urlSegment1 + '/api/records/1.0/search?dataset=' + datasetId; // } // url = this._addlimitUrl(url); this.fire("datasetexplorer-datalet_data-url", { url: url });//change event name } else { this.fire("datasetexplorer-datalet_data-url", { url: "" }); this.$.info.innerHTML = ""; } }, 0); }, // _addlimitUrl : function(url){ // //CKAN --> action no limit // if((url.indexOf("api/action") > -1) && !(url.indexOf("limit") > -1)) // { // url += "&limit=99999"; // } // //OpenDataSoft --> action no limit // if((url.indexOf("api/records") > -1) && !(url.indexOf("rows") > -1)){ // url += "&rows=10000"; // } // return url; // } }); }); </script> </dom-module>