Atlas digital versão 2.0
Esse commit está contido em:
@@ -0,0 +1,73 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="initial-scale=1,user-scalable=no,maximum-scale=1,width=device-width">
|
||||||
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
|
<link rel="stylesheet" href="./resources/ol.css">
|
||||||
|
<link rel="stylesheet" href="resources/fontawesome-all.min.css">
|
||||||
|
<link rel="stylesheet" href="./resources/ol-layerswitcher.css">
|
||||||
|
<link rel="stylesheet" href="./resources/qgis2web.css">
|
||||||
|
<style>
|
||||||
|
.search-layer {
|
||||||
|
top: 65px;
|
||||||
|
left: .5em;
|
||||||
|
}
|
||||||
|
.ol-touch .search-layer {
|
||||||
|
top: 80px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
html, body {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
.ol-control button {
|
||||||
|
background-color: #f8f8f8 !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
border-radius: 0px !important;
|
||||||
|
}
|
||||||
|
.ol-zoom, .geolocate, .gcd-gl-control .ol-control {
|
||||||
|
background-color: rgba(255,255,255,.4) !important;
|
||||||
|
padding: 3px !important;
|
||||||
|
}
|
||||||
|
.ol-scale-line {
|
||||||
|
background: none !important;
|
||||||
|
}
|
||||||
|
.ol-scale-line-inner {
|
||||||
|
border: 2px solid #f8f8f8 !important;
|
||||||
|
border-top: none !important;
|
||||||
|
background: rgba(255, 255, 255, 0.5) !important;
|
||||||
|
color: black !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
html, body, #map {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="map">
|
||||||
|
<div id="popup" class="ol-popup">
|
||||||
|
<a href="#" id="popup-closer" class="ol-popup-closer"></a>
|
||||||
|
<div id="popup-content"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="resources/qgis2web_expressions.js"></script>
|
||||||
|
<script src="resources/polyfills.js"></script>
|
||||||
|
<script src="./resources/functions.js"></script>
|
||||||
|
<script src="./resources/ol.js"></script>
|
||||||
|
<script src="./resources/ol-layerswitcher.js"></script>
|
||||||
|
<script src="layers/curvasdenivel5m_2.js"></script><script src="layers/pontos_3.js"></script><script src="layers/rioss_4.js"></script>
|
||||||
|
<script src="styles/curvasdenivel5m_2_style.js"></script><script src="styles/pontos_3_style.js"></script><script src="styles/rioss_4_style.js"></script>
|
||||||
|
<script src="./layers/layers.js" type="text/javascript"></script>
|
||||||
|
<script src="./resources/Autolinker.min.js"></script>
|
||||||
|
<script src="./resources/qgis2web.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Arquivo binário não exibido.
|
Depois Largura: | Altura: | Tamanho: 131 KiB |
@@ -0,0 +1,22 @@
|
|||||||
|
<PAMDataset>
|
||||||
|
<SRS>PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]</SRS>
|
||||||
|
<GeoTransform> -5.9064795590899130e+06, 1.3172806410517078e+01, 0.0000000000000000e+00, -3.0059250504087680e+06, 0.0000000000000000e+00, -1.3171289245534393e+01</GeoTransform>
|
||||||
|
<Metadata domain="IMAGE_STRUCTURE">
|
||||||
|
<MDI key="INTERLEAVE">PIXEL</MDI>
|
||||||
|
</Metadata>
|
||||||
|
<Metadata>
|
||||||
|
<MDI key="AREA_OR_POINT">Area</MDI>
|
||||||
|
</Metadata>
|
||||||
|
<PAMRasterBand band="1">
|
||||||
|
<NoDataValue>0.00000000000000E+00</NoDataValue>
|
||||||
|
</PAMRasterBand>
|
||||||
|
<PAMRasterBand band="2">
|
||||||
|
<NoDataValue>0.00000000000000E+00</NoDataValue>
|
||||||
|
</PAMRasterBand>
|
||||||
|
<PAMRasterBand band="3">
|
||||||
|
<NoDataValue>0.00000000000000E+00</NoDataValue>
|
||||||
|
</PAMRasterBand>
|
||||||
|
<PAMRasterBand band="4">
|
||||||
|
<NoDataValue>0.00000000000000E+00</NoDataValue>
|
||||||
|
</PAMRasterBand>
|
||||||
|
</PAMDataset>
|
||||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -0,0 +1,84 @@
|
|||||||
|
var wms_layers = [];
|
||||||
|
|
||||||
|
|
||||||
|
var lyr_OpenTopoMap_0 = new ol.layer.Tile({
|
||||||
|
'title': 'OpenTopoMap',
|
||||||
|
'type': 'base',
|
||||||
|
'opacity': 1.000000,
|
||||||
|
|
||||||
|
|
||||||
|
source: new ol.source.XYZ({
|
||||||
|
attributions: ' · <a href="https://www.openstreetmap.org/copyright">Kartendaten: © OpenStreetMap-Mitwirkende, SRTM | Kartendarstellung: © OpenTopoMap (CC-BY-SA)</a>',
|
||||||
|
url: 'https://a.tile.opentopomap.org/{z}/{x}/{y}.png'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
var lyr_altimetriaalos_1 = new ol.layer.Image({
|
||||||
|
opacity: 1,
|
||||||
|
title: "altimetria alos",
|
||||||
|
|
||||||
|
|
||||||
|
source: new ol.source.ImageStatic({
|
||||||
|
url: "./layers/altimetriaalos_1.png",
|
||||||
|
attributions: ' ',
|
||||||
|
projection: 'EPSG:3857',
|
||||||
|
alwaysInRange: true,
|
||||||
|
imageExtent: [-5906479.559090, -3012576.551478, -5901210.436526, -3005925.050409]
|
||||||
|
})
|
||||||
|
});
|
||||||
|
var format_curvasdenivel5m_2 = new ol.format.GeoJSON();
|
||||||
|
var features_curvasdenivel5m_2 = format_curvasdenivel5m_2.readFeatures(json_curvasdenivel5m_2,
|
||||||
|
{dataProjection: 'EPSG:4326', featureProjection: 'EPSG:3857'});
|
||||||
|
var jsonSource_curvasdenivel5m_2 = new ol.source.Vector({
|
||||||
|
attributions: ' ',
|
||||||
|
});
|
||||||
|
jsonSource_curvasdenivel5m_2.addFeatures(features_curvasdenivel5m_2);
|
||||||
|
var lyr_curvasdenivel5m_2 = new ol.layer.Vector({
|
||||||
|
declutter: true,
|
||||||
|
source:jsonSource_curvasdenivel5m_2,
|
||||||
|
style: style_curvasdenivel5m_2,
|
||||||
|
interactive: true,
|
||||||
|
title: '<img src="styles/legend/curvasdenivel5m_2.png" /> curvas de nivel 5m'
|
||||||
|
});
|
||||||
|
var format_pontos_3 = new ol.format.GeoJSON();
|
||||||
|
var features_pontos_3 = format_pontos_3.readFeatures(json_pontos_3,
|
||||||
|
{dataProjection: 'EPSG:4326', featureProjection: 'EPSG:3857'});
|
||||||
|
var jsonSource_pontos_3 = new ol.source.Vector({
|
||||||
|
attributions: ' ',
|
||||||
|
});
|
||||||
|
jsonSource_pontos_3.addFeatures(features_pontos_3);
|
||||||
|
var lyr_pontos_3 = new ol.layer.Vector({
|
||||||
|
declutter: true,
|
||||||
|
source:jsonSource_pontos_3,
|
||||||
|
style: style_pontos_3,
|
||||||
|
interactive: true,
|
||||||
|
title: '<img src="styles/legend/pontos_3.png" /> pontos'
|
||||||
|
});
|
||||||
|
var format_rioss_4 = new ol.format.GeoJSON();
|
||||||
|
var features_rioss_4 = format_rioss_4.readFeatures(json_rioss_4,
|
||||||
|
{dataProjection: 'EPSG:4326', featureProjection: 'EPSG:3857'});
|
||||||
|
var jsonSource_rioss_4 = new ol.source.Vector({
|
||||||
|
attributions: ' ',
|
||||||
|
});
|
||||||
|
jsonSource_rioss_4.addFeatures(features_rioss_4);
|
||||||
|
var lyr_rioss_4 = new ol.layer.Vector({
|
||||||
|
declutter: true,
|
||||||
|
source:jsonSource_rioss_4,
|
||||||
|
style: style_rioss_4,
|
||||||
|
interactive: true,
|
||||||
|
title: '<img src="styles/legend/rioss_4.png" /> rioss'
|
||||||
|
});
|
||||||
|
|
||||||
|
lyr_OpenTopoMap_0.setVisible(true);lyr_altimetriaalos_1.setVisible(true);lyr_curvasdenivel5m_2.setVisible(true);lyr_pontos_3.setVisible(true);lyr_rioss_4.setVisible(true);
|
||||||
|
var layersList = [lyr_OpenTopoMap_0,lyr_altimetriaalos_1,lyr_curvasdenivel5m_2,lyr_pontos_3,lyr_rioss_4];
|
||||||
|
lyr_curvasdenivel5m_2.set('fieldAliases', {'NAME': 'NAME', 'LAYER': 'LAYER', 'ELEVATION': 'ELEVATION', });
|
||||||
|
lyr_pontos_3.set('fieldAliases', {'id': 'id', 'NUM': 'NUM', });
|
||||||
|
lyr_rioss_4.set('fieldAliases', {'GM_LAYER': 'GM_LAYER', 'GM_TYPE': 'GM_TYPE', 'MAP_NAME': 'MAP_NAME', 'OBJECTID': 'OBJECTID', 'Id': 'Id', 'Curso_Dagu': 'Curso_Dagu', 'cotrecho': 'cotrecho', 'cocursodag': 'cocursodag', 'cobacia': 'cobacia', 'corio': 'corio', 'codom': 'codom', 'dedominial': 'dedominial', 'nucomptrec': 'nucomptrec', 'nudistbact': 'nudistbact', 'nudistcdag': 'nudistcdag', 'nuareacont': 'nuareacont', 'nuareamont': 'nuareamont', 'nunivotto': 'nunivotto', 'decorpodag': 'decorpodag', 'deligacao': 'deligacao', 'norio': 'norio', 'noriocomp': 'noriocomp', 'nucomprio': 'nucomprio', 'nudistbacr': 'nudistbacr', 'cocdadesag': 'cocdadesag', 'nucompcda': 'nucompcda', 'nutrjus': 'nutrjus', 'nutrmon': 'nutrmon', 'nutrafl': 'nutrafl', 'nudistbacc': 'nudistbacc', 'nuareabacc': 'nuareabacc', 'nuordemcda': 'nuordemcda', 'nunivotcda': 'nunivotcda', 'nulondetre': 'nulondetre', 'nulatdetre': 'nulatdetre', 'nulonpatre': 'nulonpatre', 'nulatpatre': 'nulatpatre', 'nulondecda': 'nulondecda', 'nulatdecda': 'nulatdecda', 'nulonpacda': 'nulonpacda', 'nulatpacda': 'nulatpacda', 'nulonderio': 'nulonderio', 'nulatderio': 'nulatderio', 'nulonpario': 'nulonpario', 'nulatpario': 'nulatpario', 'dtversao': 'dtversao', 'LAYER': 'LAYER', 'Nome': 'Nome', 'Fonte_Topo': 'Fonte_Topo', 'Tipo_Drena': 'Tipo_Drena', 'Regime': 'Regime', 'Compriment': 'Compriment', 'Fonte_Mape': 'Fonte_Mape', 'Data_Mapea': 'Data_Mapea', 'Shape_Leng': 'Shape_Leng', 'LINE_STYLE': 'LINE_STYLE', 'LINE_COLOR': 'LINE_COLOR', 'LINE_WIDTH': 'LINE_WIDTH', });
|
||||||
|
lyr_curvasdenivel5m_2.set('fieldImages', {'NAME': '', 'LAYER': '', 'ELEVATION': '', });
|
||||||
|
lyr_pontos_3.set('fieldImages', {'id': '', 'NUM': '', });
|
||||||
|
lyr_rioss_4.set('fieldImages', {'GM_LAYER': 'TextEdit', 'GM_TYPE': 'TextEdit', 'MAP_NAME': 'TextEdit', 'OBJECTID': 'Range', 'Id': 'Range', 'Curso_Dagu': 'TextEdit', 'cotrecho': 'Range', 'cocursodag': 'TextEdit', 'cobacia': 'TextEdit', 'corio': 'TextEdit', 'codom': 'Range', 'dedominial': 'TextEdit', 'nucomptrec': 'TextEdit', 'nudistbact': 'TextEdit', 'nudistcdag': 'TextEdit', 'nuareacont': 'TextEdit', 'nuareamont': 'TextEdit', 'nunivotto': 'Range', 'decorpodag': 'TextEdit', 'deligacao': 'TextEdit', 'norio': 'TextEdit', 'noriocomp': 'TextEdit', 'nucomprio': 'TextEdit', 'nudistbacr': 'TextEdit', 'cocdadesag': 'TextEdit', 'nucompcda': 'TextEdit', 'nutrjus': 'Range', 'nutrmon': 'Range', 'nutrafl': 'Range', 'nudistbacc': 'TextEdit', 'nuareabacc': 'TextEdit', 'nuordemcda': 'Range', 'nunivotcda': 'Range', 'nulondetre': 'TextEdit', 'nulatdetre': 'TextEdit', 'nulonpatre': 'TextEdit', 'nulatpatre': 'TextEdit', 'nulondecda': 'TextEdit', 'nulatdecda': 'TextEdit', 'nulonpacda': 'TextEdit', 'nulatpacda': 'TextEdit', 'nulonderio': 'TextEdit', 'nulatderio': 'TextEdit', 'nulonpario': 'TextEdit', 'nulatpario': 'TextEdit', 'dtversao': 'TextEdit', 'LAYER': 'TextEdit', 'Nome': 'TextEdit', 'Fonte_Topo': 'TextEdit', 'Tipo_Drena': 'TextEdit', 'Regime': 'TextEdit', 'Compriment': 'TextEdit', 'Fonte_Mape': 'TextEdit', 'Data_Mapea': 'TextEdit', 'Shape_Leng': 'TextEdit', 'LINE_STYLE': 'TextEdit', 'LINE_COLOR': 'TextEdit', 'LINE_WIDTH': 'Range', });
|
||||||
|
lyr_curvasdenivel5m_2.set('fieldLabels', {'NAME': 'no label', 'LAYER': 'no label', 'ELEVATION': 'no label', });
|
||||||
|
lyr_pontos_3.set('fieldLabels', {'id': 'no label', 'NUM': 'no label', });
|
||||||
|
lyr_rioss_4.set('fieldLabels', {'GM_LAYER': 'no label', 'GM_TYPE': 'no label', 'MAP_NAME': 'no label', 'OBJECTID': 'no label', 'Id': 'no label', 'Curso_Dagu': 'no label', 'cotrecho': 'no label', 'cocursodag': 'no label', 'cobacia': 'no label', 'corio': 'no label', 'codom': 'no label', 'dedominial': 'no label', 'nucomptrec': 'no label', 'nudistbact': 'no label', 'nudistcdag': 'no label', 'nuareacont': 'no label', 'nuareamont': 'no label', 'nunivotto': 'no label', 'decorpodag': 'no label', 'deligacao': 'no label', 'norio': 'no label', 'noriocomp': 'no label', 'nucomprio': 'no label', 'nudistbacr': 'no label', 'cocdadesag': 'no label', 'nucompcda': 'no label', 'nutrjus': 'no label', 'nutrmon': 'no label', 'nutrafl': 'no label', 'nudistbacc': 'no label', 'nuareabacc': 'no label', 'nuordemcda': 'no label', 'nunivotcda': 'no label', 'nulondetre': 'no label', 'nulatdetre': 'no label', 'nulonpatre': 'no label', 'nulatpatre': 'no label', 'nulondecda': 'no label', 'nulatdecda': 'no label', 'nulonpacda': 'no label', 'nulatpacda': 'no label', 'nulonderio': 'no label', 'nulatderio': 'no label', 'nulonpario': 'no label', 'nulatpario': 'no label', 'dtversao': 'no label', 'LAYER': 'no label', 'Nome': 'no label', 'Fonte_Topo': 'no label', 'Tipo_Drena': 'no label', 'Regime': 'no label', 'Compriment': 'no label', 'Fonte_Mape': 'no label', 'Data_Mapea': 'no label', 'Shape_Leng': 'no label', 'LINE_STYLE': 'no label', 'LINE_COLOR': 'no label', 'LINE_WIDTH': 'no label', });
|
||||||
|
lyr_rioss_4.on('precompose', function(evt) {
|
||||||
|
evt.context.globalCompositeOperation = 'normal';
|
||||||
|
});
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
var json_pontos_3 = {"type":"FeatureCollection","name":"pontos_3","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"type":"Feature","properties":{"id":null,"NUM":"1"},"geometry":{"type":"Point","coordinates":[-53.024696411284417,-26.087055138096765]}},{"type":"Feature","properties":{"id":null,"NUM":"2"},"geometry":{"type":"Point","coordinates":[-53.029854971795302,-26.093844566473447]}},{"type":"Feature","properties":{"id":null,"NUM":"3"},"geometry":{"type":"Point","coordinates":[-53.012960958818446,-26.083340595178786]}},{"type":"Feature","properties":{"id":null,"NUM":"4"},"geometry":{"type":"Point","coordinates":[-53.022253925422575,-26.082252808386318]}},{"type":"Feature","properties":{"id":null,"NUM":"5"},"geometry":{"type":"Point","coordinates":[-53.032210258344705,-26.081246959232423]}},{"type":"Feature","properties":{"id":null,"NUM":"6"},"geometry":{"type":"Point","coordinates":[-53.032337659126327,-26.071390771490481]}},{"type":"Feature","properties":{"id":null,"NUM":"7"},"geometry":{"type":"Point","coordinates":[-53.029569587598331,-26.069711397550904]}},{"type":"Feature","properties":{"id":null,"NUM":"8"},"geometry":{"type":"Point","coordinates":[-53.036038072738002,-26.069911185140263]}},{"type":"Feature","properties":{"id":null,"NUM":"9"},"geometry":{"type":"Point","coordinates":[-53.045239883737977,-26.066613242179614]}}]}
|
||||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -0,0 +1,46 @@
|
|||||||
|
(function(aa){function N(b,a){var c=b.x-a.x,d=b.y-a.y;return c*c+d*d}function qa(b){var a=b.length;if(16>a)return!1;var c,d=Infinity,f=-Infinity,e=Infinity,g=-Infinity;for(c=0;c<a-1;c+=2)d=Math.min(d,b[c]),f=Math.max(f,b[c]),e=Math.min(e,b[c+1]),g=Math.max(g,b[c+1]);c=f-d;g-=e;f=c/g;if(0.85>f||1.15<f)return!1;d={x:d+c/2,y:e+g/2};c=(c+g)/4;e=c*c;for(c=0;c<a-1;c+=2)if(g=N({x:b[c],y:b[c+1]},d),0.8>g/e||1.2<g/e)return!1;return!0}function ga(b,a){var c={};b/=O;a/=O;var d=ra,f;f=0>=a?90:1<=a?-90:(2*sa(ta(C*
|
||||||
|
(1-2*a)))-I)/C*180;c[d]=f;c[ua]=360*(1===b?1:(b%1+1)%1)-180;return c}function ba(b,a){var c=P(1,J(0,0.5-va(ha(wa+I*b/180))/C/2));return{x:(a/360+0.5)*O<<0,y:c*O<<0}}function Q(b){for(var a=u+p,c=z+n,d=0,f=b.length-3;d<f;d+=2)if(b[d]>p&&b[d]<a&&b[d+1]>n&&b[d+1]<c)return!0;return!1}function xa(){X||(X=setInterval(function(){for(var b=E.items,a=!1,c=0,d=b.length;c<d;c++)1>b[c].scale&&(b[c].scale+=0.1,1<b[c].scale&&(b[c].scale=1),a=!0);R.render();a||(clearInterval(X),X=null)},33))}function ya(b){u=b.width;
|
||||||
|
z=b.height;Y=u/2<<0;ca=z/2<<0;S=Y;T=z;R.setSize(u,z);da=q-50}var w=Math,ta=w.exp,va=w.log,za=w.sin,Aa=w.cos,ha=w.tan,sa=w.atan,K=w.atan2,P=w.min,J=w.max,ia=w.sqrt,ja=w.ceil,ka=w.pow,la=la||Array,ma=ma||Array,w=/iP(ad|hone|od)/g.test(navigator.userAgent),D=!!~navigator.userAgent.indexOf("Trident"),Ba=!aa.requestAnimationFrame||w||D?function(b){b()}:aa.requestAnimationFrame,F=function(b){function a(a,b,c){0>c&&(c+=1);1<c&&(c-=1);return c<1/6?a+6*(b-a)*c:0.5>c?b:c<2/3?a+(b-a)*(2/3-c)*6:a}var c={aqua:"#00ffff",
|
||||||
|
black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",grey:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",orange:"#ffa500",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00"},d=function(a,b,c,d){this.H=a;this.S=b;this.L=c;this.A=d};d.parse=function(a){var b=0,d=0,h=0,k=1,m;a=(""+a).toLowerCase();a=c[a]||a;if(m=a.match(/^#(\w{2})(\w{2})(\w{2})$/))b=parseInt(m[1],16),d=parseInt(m[2],16),h=parseInt(m[3],
|
||||||
|
16);else if(m=a.match(/rgba?\((\d+)\D+(\d+)\D+(\d+)(\D+([\d.]+))?\)/))b=parseInt(m[1],10),d=parseInt(m[2],10),h=parseInt(m[3],10),k=m[4]?parseFloat(m[5]):1;else return;return this.fromRGBA(b,d,h,k)};d.fromRGBA=function(a,b,c,h){"object"===typeof a?(b=a.g/255,c=a.b/255,h=a.a,a=a.r/255):(a/=255,b/=255,c/=255);var k=Math.max(a,b,c),m=Math.min(a,b,c),l,y=(k+m)/2,s=k-m;if(s){m=0.5<y?s/(2-k-m):s/(k+m);switch(k){case a:l=(b-c)/s+(b<c?6:0);break;case b:l=(c-a)/s+2;break;case c:l=(a-b)/s+4}l*=60}else l=m=
|
||||||
|
0;return new d(l,m,y,h)};d.prototype={toRGBA:function(){var b=Math.min(360,Math.max(0,this.H)),c=Math.min(1,Math.max(0,this.S)),d=Math.min(1,Math.max(0,this.L)),h=Math.min(1,Math.max(0,this.A)),k;if(0===c)b=k=c=d;else{var m=0.5>d?d*(1+c):d+c-d*c,d=2*d-m,b=b/360,c=a(d,m,b+1/3);k=a(d,m,b);b=a(d,m,b-1/3)}return{r:Math.round(255*c),g:Math.round(255*k),b:Math.round(255*b),a:h}},toString:function(){var a=this.toRGBA();return 1===a.a?"#"+(16777216+(a.r<<16)+(a.g<<8)+a.b).toString(16).slice(1,7):"rgba("+
|
||||||
|
[a.r,a.g,a.b,a.a.toFixed(2)].join()+")"},hue:function(a){return new d(this.H*a,this.S,this.L,this.A)},saturation:function(a){return new d(this.H,this.S*a,this.L,this.A)},lightness:function(a){return new d(this.H,this.S,this.L*a,this.A)},alpha:function(a){return new d(this.H,this.S,this.L,this.A*a)}};return d}(this),Ca=function(){var b=Math,a=b.PI,c=b.sin,d=b.cos,f=b.tan,e=b.asin,g=b.atan2,h=a/180,k=23.4397*h;return function(b,l,y){y=h*-y;l*=h;b=b.valueOf()/864E5-0.5+2440588-2451545;var s=h*(357.5291+
|
||||||
|
0.98560028*b),A;A=h*(1.9148*c(s)+0.02*c(2*s)+3E-4*c(3*s));A=s+A+102.9372*h+a;s=e(c(0)*d(k)+d(0)*c(k)*c(A));A=g(c(A)*d(k)-f(0)*c(k),d(A));b=h*(280.16+360.9856235*b)-y-A;y=e(c(l)*c(s)+d(l)*d(s)*d(b));l=g(c(b),d(b)*c(l)-f(s)*d(l));return{altitude:y,azimuth:l-a/2}}}(),Ea=function(){function b(a){a=a.toLowerCase();return"#"===a[0]?a:d[f[a]||a]||null}function a(a,b){var c,d,f,s,A=0,p,n;p=0;for(n=a.length-3;p<n;p+=2)c=a[p],d=a[p+1],f=a[p+2],s=a[p+3],A+=c*s-f*d;if((0<A/2?e:g)===b)return a;c=[];for(d=a.length-
|
||||||
|
2;0<=d;d-=2)c.push(a[d],a[d+1]);return c}function c(b){var d,f,l=[],y;switch(b.type){case "GeometryCollection":l=[];d=0;for(f=b.geometries.length;d<f;d++)(y=c(b.geometries[d]))&&l.push.apply(l,y);return l;case "MultiPolygon":l=[];d=0;for(f=b.coordinates.length;d<f;d++)(y=c({type:"Polygon",coordinates:b.coordinates[d]}))&&l.push.apply(l,y);return l;case "Polygon":b=b.coordinates;break;default:return[]}var s,p=[],n=[];s=b[0];d=0;for(f=s.length;d<f;d++)p.push(s[d][1],s[d][0]);p=a(p,e);d=0;for(f=b.length-
|
||||||
|
1;d<f;d++){s=b[d+1];n[d]=[];l=0;for(y=s.length;l<y;l++)n[d].push(s[l][1],s[l][0]);n[d]=a(n[d],g)}return[{outer:p,inner:n.length?n:null}]}var d={brick:"#cc7755",bronze:"#ffeecc",canvas:"#fff8f0",concrete:"#999999",copper:"#a0e0d0",glass:"#e8f8f8",gold:"#ffcc00",plants:"#009933",metal:"#aaaaaa",panel:"#fff8f0",plaster:"#999999",roof_tiles:"#f08060",silver:"#cccccc",slate:"#666666",stone:"#996666",tar_paper:"#333333",wood:"#deb887"},f={asphalt:"tar_paper",bitumen:"tar_paper",block:"stone",bricks:"brick",
|
||||||
|
glas:"glass",glassfront:"glass",grass:"plants",masonry:"stone",granite:"stone",panels:"panel",paving_stones:"stone",plastered:"plaster",rooftiles:"roof_tiles",roofingfelt:"tar_paper",sandstone:"stone",sheet:"canvas",sheets:"canvas",shingle:"tar_paper",shingles:"tar_paper",slates:"slate",steel:"metal",tar:"tar_paper",tent:"canvas",thatch:"plants",tile:"roof_tiles",tiles:"roof_tiles"},e="CW",g="CCW";return{read:function(a){if(!a||"FeatureCollection"!==a.type)return[];a=a.features;var d,f,e,g,p=[],n,
|
||||||
|
q,w,r;d=0;for(f=a.length;d<f;d++)if(n=a[d],"Feature"===n.type&&!1!==na(n)){e=n.properties;g={};e=e||{};g.height=e.height||(e.levels?3*e.levels:Da);g.minHeight=e.minHeight||(e.minLevel?3*e.minLevel:0);if(q=e.material?b(e.material):e.wallColor||e.color)g.wallColor=q;if(q=e.roofMaterial?b(e.roofMaterial):e.roofColor)g.roofColor=q;switch(e.shape){case "cylinder":case "cone":case "dome":case "sphere":g.shape=e.shape;g.isRotational=!0;break;case "pyramid":g.shape=e.shape}switch(e.roofShape){case "cone":case "dome":g.roofShape=
|
||||||
|
e.roofShape;g.isRotational=!0;break;case "pyramid":g.roofShape=e.roofShape}g.roofShape&&e.roofHeight?(g.roofHeight=e.roofHeight,g.height=J(0,g.height-g.roofHeight)):g.roofHeight=0;w=g;q=c(n.geometry);e=0;for(g=q.length;e<g;e++){r=w;var t={},G=void 0;for(G in r)r.hasOwnProperty(G)&&(t[G]=r[G]);r=t;r.footprint=q[e].outer;if(r.isRotational){for(var t=r,G=r.footprint,v=180,x=-180,u=0,z=G.length;u<z;u+=2)v=P(v,G[u+1]),x=J(x,G[u+1]);t.radius=(x-v)/2}q[e].inner&&(r.holes=q[e].inner);if(n.id||n.properties.id)r.id=
|
||||||
|
n.id||n.properties.id;n.properties.relationId&&(r.relationId=n.properties.relationId);p.push(r)}}return p}}}(),C=Math.PI,I=C/2,wa=C/4,v,O,ra="latitude",ua="longitude",u=0,z=0,Y=0,ca=0,p=0,n=0,H=F.parse("rgba(200, 190, 180)"),Z=H.lightness(0.8),L=H.lightness(1.2),ea=""+H,$=""+Z,U=""+L,oa=0,B=1,da,Da=5,S,T,q=450,Fa=function(){function b(b,g){if(a[b])g&&g(a[b]);else{var h=new XMLHttpRequest;h.onreadystatechange=function(){if(4===h.readyState&&h.status&&!(200>h.status||299<h.status)&&g&&h.responseText){var k=
|
||||||
|
h.responseText;a[b]=k;c.push({url:b,size:k.length});d+=k.length;for(g(k);d>f;)k=c.shift(),d-=k.size,delete a[k.url]}};h.open("GET",b);h.send(null);return h}}var a={},c=[],d=0,f=5242880;return{loadJSON:function(a,c){return b(a,function(a){var b;try{b=JSON.parse(a)}catch(d){}c(b)})}}}(),E={loadedItems:{},items:[],getPixelFootprint:function(b){for(var a=new la(b.length),c,d=0,f=b.length-1;d<f;d+=2)c=ba(b[d],b[d+1]),a[d]=c.x,a[d+1]=c.y;b=a;a=b.length/2;c=new ma(a);var d=0,f=a-1,e,g,h,k,m=[],l=[],n=[];
|
||||||
|
for(c[d]=c[f]=1;f;){g=0;for(e=d+1;e<f;e++){h=b[2*e];var p=b[2*e+1],q=b[2*d],r=b[2*d+1],t=b[2*f],w=b[2*f+1],u=t-q,v=w-r,x=void 0;if(0!==u||0!==v)x=((h-q)*u+(p-r)*v)/(u*u+v*v),1<x?(q=t,r=w):0<x&&(q+=u*x,r+=v*x);u=h-q;v=p-r;h=u*u+v*v;h>g&&(k=e,g=h)}2<g&&(c[k]=1,m.push(d),l.push(k),m.push(k),l.push(f));d=m.pop();f=l.pop()}for(e=0;e<a;e++)c[e]&&n.push(b[2*e],b[2*e+1]);a=n;if(!(8>a.length))return a},resetItems:function(){this.items=[];this.loadedItems={};V.reset()},addRenderItems:function(b,a){for(var c,
|
||||||
|
d,f,e=Ea.read(b),g=0,h=e.length;g<h;g++)c=e[g],f=c.id||[c.footprint[0],c.footprint[1],c.height,c.minHeight].join(),!this.loadedItems[f]&&(d=this.scale(c))&&(d.scale=a?0:1,this.items.push(d),this.loadedItems[f]=1);xa()},scale:function(b){var a={},c=6/ka(2,v-15);b.id&&(a.id=b.id);a.height=P(b.height/c,da);a.minHeight=isNaN(b.minHeight)?0:b.minHeight/c;if(!(a.minHeight>da)&&(a.footprint=this.getPixelFootprint(b.footprint),a.footprint)){for(var d=a.footprint,f=Infinity,e=-Infinity,g=Infinity,h=-Infinity,
|
||||||
|
k=0,m=d.length-3;k<m;k+=2)f=P(f,d[k]),e=J(e,d[k]),g=P(g,d[k+1]),h=J(h,d[k+1]);a.center={x:f+(e-f)/2<<0,y:g+(h-g)/2<<0};b.radius&&(a.radius=b.radius*oa);b.shape&&(a.shape=b.shape);b.roofShape&&(a.roofShape=b.roofShape);"cone"!==a.roofShape&&"dome"!==a.roofShape||a.shape||!qa(a.footprint)||(a.shape="cylinder");if(b.holes){a.holes=[];for(var l,d=0,f=b.holes.length;d<f;d++)(l=this.getPixelFootprint(b.holes[d]))&&a.holes.push(l)}var n;b.wallColor&&(n=F.parse(b.wallColor))&&(n=n.alpha(B),a.altColor=""+
|
||||||
|
n.lightness(0.8),a.wallColor=""+n);b.roofColor&&(n=F.parse(b.roofColor))&&(a.roofColor=""+n.alpha(B));b.relationId&&(a.relationId=b.relationId);a.hitColor=V.idToColor(b.relationId||b.id);a.roofHeight=isNaN(b.roofHeight)?0:b.roofHeight/c;if(!(a.height+a.roofHeight<=a.minHeight))return a}},set:function(b){this.isStatic=!0;this.resetItems();this._staticData=b;this.addRenderItems(this._staticData,!0)},load:function(b,a){this.src=b||"http://{s}.data.osmbuildings.org/0.2/{k}/tile/{z}/{x}/{y}.json".replace("{k}",
|
||||||
|
a||"anonymous");this.update()},update:function(){function b(a){g.addRenderItems(a)}this.resetItems();if(!(15>v))if(this.isStatic&&this._staticData)this.addRenderItems(this._staticData);else if(this.src){var a=16<v?256<<v-16:256>>16-v,c=p/a<<0,d=n/a<<0,f=ja((p+u)/a),a=ja((n+z)/a),e,g=this;for(e=d;e<=a;e++)for(d=c;d<=f;d++)this.loadTile(d,e,16,b)}},loadTile:function(b,a,c,d){b=this.src.replace("{s}","abcd"[(b+a)%4]).replace("{x}",b).replace("{y}",a).replace("{z}",c);return Fa.loadJSON(b,d)}},W={draw:function(b,
|
||||||
|
a,c,d,f,e,g,h){var k,m=this._extrude(b,a,d,f,e,g),l=[];if(c)for(a=0,k=c.length;a<k;a++)l[a]=this._extrude(b,c[a],d,f,e,g);b.fillStyle=h;b.beginPath();this._ring(b,m);if(c)for(a=0,k=l.length;a<k;a++)this._ring(b,l[a]);b.closePath();b.stroke();b.fill()},_extrude:function(b,a,c,d,f,e){c=q/(q-c);for(var g=q/(q-d),h={x:0,y:0},k={x:0,y:0},m,l,y=[],s=0,t=a.length-3;s<t;s+=2)h.x=a[s]-p,h.y=a[s+1]-n,k.x=a[s+2]-p,k.y=a[s+3]-n,m=r.project(h,c),l=r.project(k,c),d&&(h=r.project(h,g),k=r.project(k,g)),(k.x-h.x)*
|
||||||
|
(m.y-h.y)>(m.x-h.x)*(k.y-h.y)&&(b.fillStyle=h.x<k.x&&h.y<k.y||h.x>k.x&&h.y>k.y?e:f,b.beginPath(),this._ring(b,[k.x,k.y,h.x,h.y,m.x,m.y,l.x,l.y]),b.closePath(),b.fill()),y[s]=m.x,y[s+1]=m.y;return y},_ring:function(b,a){b.moveTo(a[0],a[1]);for(var c=2,d=a.length-1;c<d;c+=2)b.lineTo(a[c],a[c+1])},simplified:function(b,a,c){b.beginPath();this._ringAbs(b,a);if(c){a=0;for(var d=c.length;a<d;a++)this._ringAbs(b,c[a])}b.closePath();b.stroke();b.fill()},_ringAbs:function(b,a){b.moveTo(a[0]-p,a[1]-n);for(var c=
|
||||||
|
2,d=a.length-1;c<d;c+=2)b.lineTo(a[c]-p,a[c+1]-n)},shadow:function(b,a,c,d,f){for(var e=null,g={x:0,y:0},h={x:0,y:0},k,m,l=0,q=a.length-3;l<q;l+=2)g.x=a[l]-p,g.y=a[l+1]-n,h.x=a[l+2]-p,h.y=a[l+3]-n,k=x.project(g,d),m=x.project(h,d),f&&(g=x.project(g,f),h=x.project(h,f)),(h.x-g.x)*(k.y-g.y)>(k.x-g.x)*(h.y-g.y)?(1===e&&b.lineTo(g.x,g.y),e=0,l||b.moveTo(g.x,g.y),b.lineTo(h.x,h.y)):(0===e&&b.lineTo(k.x,k.y),e=1,l||b.moveTo(k.x,k.y),b.lineTo(m.x,m.y));if(c)for(l=0,q=c.length;l<q;l++)this._ringAbs(b,c[l])},
|
||||||
|
shadowMask:function(b,a,c){this._ringAbs(b,a);if(c){a=0;for(var d=c.length;a<d;a++)this._ringAbs(b,c[a])}},hitArea:function(b,a,c,d,f,e){c=null;var g={x:0,y:0},h={x:0,y:0};d=q/(q-d);var k=q/(q-f),m;b.fillStyle=e;b.beginPath();for(var l=0,y=a.length-3;l<y;l+=2)g.x=a[l]-p,g.y=a[l+1]-n,h.x=a[l+2]-p,h.y=a[l+3]-n,e=r.project(g,d),m=r.project(h,d),f&&(g=r.project(g,k),h=r.project(h,k)),(h.x-g.x)*(e.y-g.y)>(e.x-g.x)*(h.y-g.y)?(1===c&&b.lineTo(g.x,g.y),c=0,l||b.moveTo(g.x,g.y),b.lineTo(h.x,h.y)):(0===c&&
|
||||||
|
b.lineTo(e.x,e.y),c=1,l||b.moveTo(e.x,e.y),b.lineTo(m.x,m.y));b.closePath();b.fill()}},t={draw:function(b,a,c,d,f,e,g,h,k){a={x:a.x-p,y:a.y-n};var m=q/(q-f),l=q/(q-e);f=r.project(a,m);d*=m;e&&(a=r.project(a,l),c*=l);(m=this._tangents(a,c,f,d))?(e=K(m[0].y1-a.y,m[0].x1-a.x),m=K(m[1].y1-a.y,m[1].x1-a.x)):(e=1.5*C,m=1.5*C);b.fillStyle=g;b.beginPath();b.arc(f.x,f.y,d,I,e,!0);b.arc(a.x,a.y,c,e,I);b.closePath();b.fill();b.fillStyle=h;b.beginPath();b.arc(f.x,f.y,d,m,I,!0);b.arc(a.x,a.y,c,I,m);b.closePath();
|
||||||
|
b.fill();b.fillStyle=k;this._circle(b,f,d)},simplified:function(b,a,c){this._circle(b,{x:a.x-p,y:a.y-n},c)},shadow:function(b,a,c,d,f,e){a={x:a.x-p,y:a.y-n};f=x.project(a,f);var g;e&&(a=x.project(a,e));var h=this._tangents(a,c,f,d);h?(e=K(h[0].y1-a.y,h[0].x1-a.x),g=K(h[1].y1-a.y,h[1].x1-a.x),b.moveTo(h[1].x2,h[1].y2),b.arc(f.x,f.y,d,g,e),b.arc(a.x,a.y,c,e,g)):(b.moveTo(a.x+c,a.y),b.arc(a.x,a.y,c,0,2*C))},shadowMask:function(b,a,c){var d=a.x-p;a=a.y-n;b.moveTo(d+c,a);b.arc(d,a,c,0,2*C)},hitArea:function(b,
|
||||||
|
a,c,d,f,e,g){a={x:a.x-p,y:a.y-n};var h=q/(q-f),k=q/(q-e);f=r.project(a,h);d*=h;e&&(a=r.project(a,k),c*=k);e=this._tangents(a,c,f,d);b.fillStyle=g;b.beginPath();e?(g=K(e[0].y1-a.y,e[0].x1-a.x),h=K(e[1].y1-a.y,e[1].x1-a.x),b.moveTo(e[1].x2,e[1].y2),b.arc(f.x,f.y,d,h,g),b.arc(a.x,a.y,c,g,h)):(b.moveTo(a.x+c,a.y),b.arc(a.x,a.y,c,0,2*C));b.closePath();b.fill()},_circle:function(b,a,c){b.beginPath();b.arc(a.x,a.y,c,0,2*C);b.stroke();b.fill()},_tangents:function(b,a,c,d){var f=b.x-c.x,e=b.y-c.y,g=a-d,h=
|
||||||
|
f*f+e*e;if(!(h<=g*g)){var h=ia(h),f=-f/h,e=-e/h,g=g/h,h=[],k,m,l;k=ia(J(0,1-g*g));for(var n=1;-1<=n;n-=2)m=f*g-n*k*e,l=e*g+n*k*f,h.push({x1:b.x+a*m<<0,y1:b.y+a*l<<0,x2:c.x+d*m<<0,y2:c.y+d*l<<0});return h}}},M={draw:function(b,a,c,d,f,e,g){var h=q/(q-f);c=r.project({x:c.x-p,y:c.y-n},q/(q-d));d={x:0,y:0};for(var k={x:0,y:0},m=0,l=a.length-3;m<l;m+=2)d.x=a[m]-p,d.y=a[m+1]-n,k.x=a[m+2]-p,k.y=a[m+3]-n,f&&(d=r.project(d,h),k=r.project(k,h)),(k.x-d.x)*(c.y-d.y)>(c.x-d.x)*(k.y-d.y)&&(b.fillStyle=d.x<k.x&&
|
||||||
|
d.y<k.y||d.x>k.x&&d.y>k.y?g:e,b.beginPath(),this._triangle(b,d,k,c),b.closePath(),b.fill())},_triangle:function(b,a,c,d){b.moveTo(a.x,a.y);b.lineTo(c.x,c.y);b.lineTo(d.x,d.y)},_ring:function(b,a){b.moveTo(a[0]-p,a[1]-n);for(var c=2,d=a.length-1;c<d;c+=2)b.lineTo(a[c]-p,a[c+1]-n)},shadow:function(b,a,c,d,f){var e={x:0,y:0},g={x:0,y:0};c=x.project({x:c.x-p,y:c.y-n},d);d=0;for(var h=a.length-3;d<h;d+=2)e.x=a[d]-p,e.y=a[d+1]-n,g.x=a[d+2]-p,g.y=a[d+3]-n,f&&(e=x.project(e,f),g=x.project(g,f)),(g.x-e.x)*
|
||||||
|
(c.y-e.y)>(c.x-e.x)*(g.y-e.y)&&this._triangle(b,e,g,c)},shadowMask:function(b,a){this._ring(b,a)},hitArea:function(b,a,c,d,f,e){var g=q/(q-f);c=r.project({x:c.x-p,y:c.y-n},q/(q-d));d={x:0,y:0};var h={x:0,y:0};b.fillStyle=e;b.beginPath();e=0;for(var k=a.length-3;e<k;e+=2)d.x=a[e]-p,d.y=a[e+1]-n,h.x=a[e+2]-p,h.y=a[e+3]-n,f&&(d=r.project(d,g),h=r.project(h,g)),(h.x-d.x)*(c.y-d.y)>(c.x-d.x)*(h.y-d.y)&&this._triangle(b,d,h,c);b.closePath();b.fill()}},r={project:function(b,a){return{x:(b.x-S)*a+S<<0,y:(b.y-
|
||||||
|
T)*a+T<<0}},render:function(){var b=this.context;b.clearRect(0,0,u,z);if(!(15>v)){var a,c,d,f={x:S+p,y:T+n},e,g,h,k,m=E.items;m.sort(function(a,b){return a.minHeight-b.minHeight||N(b.center,f)-N(a.center,f)||b.height-a.height});for(var l=0,q=m.length;l<q;l++)if(a=m[l],!fa.isSimple(a)&&(e=a.footprint,Q(e))){c=1>a.scale?a.height*a.scale:a.height;d=0;a.minHeight&&(d=1>a.scale?a.minHeight*a.scale:a.minHeight);g=a.wallColor||ea;h=a.altColor||$;k=a.roofColor||U;b.strokeStyle=h;switch(a.shape){case "cylinder":t.draw(b,
|
||||||
|
a.center,a.radius,a.radius,c,d,g,h,k);break;case "cone":t.draw(b,a.center,a.radius,0,c,d,g,h);break;case "dome":t.draw(b,a.center,a.radius,a.radius/2,c,d,g,h);break;case "sphere":t.draw(b,a.center,a.radius,a.radius,c,d,g,h,k);break;case "pyramid":M.draw(b,e,a.center,c,d,g,h);break;default:W.draw(b,e,a.holes,c,d,g,h,k)}switch(a.roofShape){case "cone":t.draw(b,a.center,a.radius,0,c+a.roofHeight,c,k,""+F.parse(k).lightness(0.9));break;case "dome":t.draw(b,a.center,a.radius,a.radius/2,c+a.roofHeight,
|
||||||
|
c,k,""+F.parse(k).lightness(0.9));break;case "pyramid":M.draw(b,e,a.center,c+a.roofHeight,c,k,F.parse(k).lightness(0.9))}}}}},fa={maxZoom:17,maxHeight:5,isSimple:function(b){return v<=this.maxZoom&&b.height+b.roofHeight<this.maxHeight},render:function(){var b=this.context;b.clearRect(0,0,u,z);if(!(15>v||v>this.maxZoom))for(var a,c,d=E.items,f=0,e=d.length;f<e;f++)if(a=d[f],!(a.height>=this.maxHeight)&&(c=a.footprint,Q(c)))switch(b.strokeStyle=a.altColor||$,b.fillStyle=a.roofColor||U,a.shape){case "cylinder":case "cone":case "dome":case "sphere":t.simplified(b,
|
||||||
|
a.center,a.radius);break;default:W.simplified(b,c,a.holes)}}},x={enabled:!0,color:"#666666",blurColor:"#000000",blurSize:15,date:new Date,direction:{x:0,y:0},project:function(b,a){return{x:b.x+this.direction.x*a,y:b.y+this.direction.y*a}},render:function(){var b=this.context,a,c,d;b.clearRect(0,0,u,z);if(!(!this.enabled||15>v||(a=ga(Y+p,ca+n),a=Ca(this.date,a.latitude,a.longitude),0>=a.altitude))){c=1/ha(a.altitude);d=5>c?0.75:1/c*5;this.direction.x=Aa(a.azimuth)*c;this.direction.y=za(a.azimuth)*
|
||||||
|
c;var f,e,g,h;a=E.items;b.canvas.style.opacity=d/(2*B);b.shadowColor=this.blurColor;b.shadowBlur=B/2*this.blurSize;b.fillStyle=this.color;b.beginPath();d=0;for(c=a.length;d<c;d++)if(f=a[d],h=f.footprint,Q(h)){e=1>f.scale?f.height*f.scale:f.height;g=0;f.minHeight&&(g=1>f.scale?f.minHeight*f.scale:f.minHeight);switch(f.shape){case "cylinder":t.shadow(b,f.center,f.radius,f.radius,e,g);break;case "cone":t.shadow(b,f.center,f.radius,0,e,g);break;case "dome":t.shadow(b,f.center,f.radius,f.radius/2,e,g);
|
||||||
|
break;case "sphere":t.shadow(b,f.center,f.radius,f.radius,e,g);break;case "pyramid":M.shadow(b,h,f.center,e,g);break;default:W.shadow(b,h,f.holes,e,g)}switch(f.roofShape){case "cone":t.shadow(b,f.center,f.radius,0,e+f.roofHeight,e);break;case "dome":t.shadow(b,f.center,f.radius,f.radius/2,e+f.roofHeight,e);break;case "pyramid":M.shadow(b,h,f.center,e+f.roofHeight,e)}}b.closePath();b.fill();b.shadowBlur=null;b.globalCompositeOperation="destination-out";b.beginPath();d=0;for(c=a.length;d<c;d++)if(f=
|
||||||
|
a[d],h=f.footprint,Q(h)&&!f.minHeight)switch(f.shape){case "cylinder":case "cone":case "dome":t.shadowMask(b,f.center,f.radius);break;default:W.shadowMask(b,h,f.holes)}b.fillStyle="#00ff00";b.fill();b.globalCompositeOperation="source-over"}}},V={_idMapping:[null],reset:function(){this._idMapping=[null]},render:function(){if(!this._timer){var b=this;this._timer=setTimeout(function(){b._timer=null;b._render()},500)}},_render:function(){var b=this.context;b.clearRect(0,0,u,z);if(!(15>v)){var a,c,d,f=
|
||||||
|
{x:S+p,y:T+n},e,g,h=E.items;h.sort(function(a,b){return a.minHeight-b.minHeight||N(b.center,f)-N(a.center,f)||b.height-a.height});for(var k=0,m=h.length;k<m;k++)if(a=h[k],g=a.hitColor)if(e=a.footprint,Q(e)){c=a.height;d=0;a.minHeight&&(d=a.minHeight);switch(a.shape){case "cylinder":t.hitArea(b,a.center,a.radius,a.radius,c,d,g);break;case "cone":t.hitArea(b,a.center,a.radius,0,c,d,g);break;case "dome":t.hitArea(b,a.center,a.radius,a.radius/2,c,d,g);break;case "sphere":t.hitArea(b,a.center,a.radius,
|
||||||
|
a.radius,c,d,g);break;case "pyramid":M.hitArea(b,e,a.center,c,d,g);break;default:W.hitArea(b,e,a.holes,c,d,g)}switch(a.roofShape){case "cone":t.hitArea(b,a.center,a.radius,0,c+a.roofHeight,c,g);break;case "dome":t.hitArea(b,a.center,a.radius,a.radius/2,c+a.roofHeight,c,g);break;case "pyramid":M.hitArea(b,e,a.center,c+a.roofHeight,c,g)}}u&&z&&(this._imageData=this.context.getImageData(0,0,u,z).data)}},getIdFromXY:function(b,a){var c=this._imageData;if(c){var d=4*((a|0)*u+(b|0));return this._idMapping[c[d]|
|
||||||
|
c[d+1]<<8|c[d+2]<<16]}},idToColor:function(b){var a=this._idMapping.indexOf(b);-1===a&&(this._idMapping.push(b),a=this._idMapping.length-1);return"rgb("+[a&255,a>>8&255,a>>16&255].join()+")"}},X,R={container:document.createElement("DIV"),items:[],init:function(){this.container.style.pointerEvents="none";this.container.style.position="absolute";this.container.style.left=0;this.container.style.top=0;x.context=this.createContext(this.container);fa.context=this.createContext(this.container);r.context=
|
||||||
|
this.createContext(this.container);V.context=this.createContext()},render:function(b){Ba(function(){b||(x.render(),fa.render(),V.render());r.render()})},createContext:function(b){var a=document.createElement("CANVAS");a.style.transform="translate3d(0, 0, 0)";a.style.imageRendering="optimizeSpeed";a.style.position="absolute";a.style.left=0;a.style.top=0;var c=a.getContext("2d");c.lineCap="round";c.lineJoin="round";c.lineWidth=1;c.imageSmoothingEnabled=!1;this.items.push(a);b&&b.appendChild(a);return c},
|
||||||
|
appendTo:function(b){b.appendChild(this.container)},remove:function(){this.container.parentNode.removeChild(this.container)},setSize:function(b,a){for(var c=0,d=this.items.length;c<d;c++)this.items[c].width=b,this.items[c].height=a},setPosition:function(b,a){this.container.style.left=b+"px";this.container.style.top=a+"px"}};R.init();w=function(b){this.map=b;this.maxExtent=[-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7];try{this.setMap(b),b.addLayer(this)}catch(a){console.log(a)}};ol.inherits(w,
|
||||||
|
ol.layer.Vector);D=w.prototype=ol.layer.Layer?new ol.layer.Vector({source:new ol.source.Vector({projection:ol.proj.get("EPSG:900913")})}):{};D.setOrigin=function(){var b=this.map;try{var a=b.getCoordinateFromPixel([0,0]),c=b.getView().getResolution(),d=this.maxExtent,f=(d[3]-a[1])/c<<0;p=(a[0]-d[0])/c<<0;n=f}catch(e){console.log(e)}};D.setMap=function(b){var a=this;R.appendTo(document.getElementById(b.get("target").id));ya({width:b.getSize()[0],height:b.getSize()[1]});var c=this.map.getView().getProjection();
|
||||||
|
b.on("click",function(a){var f=V.getIdFromXY(a.pixel[0],a.pixel[1]);f&&(a=ol.proj.transform(b.getCoordinateFromPixel([a.pixel[0],a.pixel[1]]),c,b.getView().getProjection()),pa({feature:f,lat:a[0],lon:a[1]}))});this.on("precompose",function(c){v=b.getView().getZoom();O=256<<v;c=ga(p+Y,n+ca);var f=ba(c.latitude,0);oa=ba(c.latitude,1).x-f.x;B=ka(0.95,v-15);ea=""+H.alpha(B);$=""+Z.alpha(B);U=""+L.alpha(B);a.setOrigin();E.resetItems();E.update()})};D.style=function(b){b=b||{};var a;if(a=b.color||b.wallColor)H=
|
||||||
|
F.parse(a),ea=""+H.alpha(B),Z=H.lightness(0.8),$=""+Z.alpha(B),L=H.lightness(1.2),U=""+L.alpha(B);b.roofColor&&(L=F.parse(b.roofColor),U=""+L.alpha(B));void 0!==b.shadows&&(x.enabled=!!b.shadows);R.render();return this};D.date=function(b){x.date=b;x.render();return this};D.load=function(b){E.load(b);return this};D.set=function(b){E.set(b);return this};var na=function(){};D.each=function(b){na=function(a){return b(a)};return this};var pa=function(){};D.click=function(b){pa=function(a){return b(a)};
|
||||||
|
return this};w.VERSION="0.2.2b";w.ATTRIBUTION='© <a href="http://osmbuildings.org">OSM Buildings</a>';aa.OSMBuildings=w})(this);
|
||||||
@@ -0,0 +1,757 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
/*
|
||||||
|
| tail.datetime - The vanilla way to select dates and times!
|
||||||
|
| @file ./less/tail.datetime-harx-light.less
|
||||||
|
| @author SamBrishes <sam@pytes.net>
|
||||||
|
| @version 0.4.14 - Beta
|
||||||
|
|
|
||||||
|
| @website https://github.com/pytesNET/tail.DateTime
|
||||||
|
| @license X11 / MIT License
|
||||||
|
| @copyright Copyright © 2018 - 2019 SamBrishes, pytesNET <info@pytes.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*custom for menus:*/
|
||||||
|
#menu {
|
||||||
|
vertical-align: top;
|
||||||
|
display: inline-block;
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
.filterselect{
|
||||||
|
|
||||||
|
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-left: 20px;
|
||||||
|
margin-right: 20px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
.filterselect p{
|
||||||
|
|
||||||
|
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||||
|
margin-top: 0px; !important
|
||||||
|
margin-left: 0px;
|
||||||
|
margin-right: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
.slider {
|
||||||
|
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-left: 20px;
|
||||||
|
margin-right: 20px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @start MAIN CALENDAR */
|
||||||
|
.tail-datetime-calendar, .tail-datetime-calendar *, .tail-datetime-calendar *:before,
|
||||||
|
.tail-datetime-calendar *:after{
|
||||||
|
box-sizing: border-box;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar{
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 360px;
|
||||||
|
height: auto;
|
||||||
|
margin: 15px;
|
||||||
|
padding: 0;
|
||||||
|
z-index: 3000;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
visibility: hidden;
|
||||||
|
direction: ltr;
|
||||||
|
border-collapse: separate;
|
||||||
|
font-family: "Open Sans", Calibri, Arial, sans-serif;
|
||||||
|
background-color: white;
|
||||||
|
border-width: 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 2px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 2px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar:after{
|
||||||
|
clear: both;
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
font-size: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.calendar-static{
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
position: static;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar button.calendar-close{
|
||||||
|
top: 100%;
|
||||||
|
right: 15px;
|
||||||
|
color: #303438;
|
||||||
|
width: 35px;
|
||||||
|
height: 25px;
|
||||||
|
margin: 1px 0 0 0;
|
||||||
|
padding: 5px 10px;
|
||||||
|
opacity: 0.5;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.125em;
|
||||||
|
text-shadow: none;
|
||||||
|
border: 0;
|
||||||
|
outline: none;
|
||||||
|
background-color: white;
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z\
|
||||||
|
dmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2Ij48cGF0aCBmaWxsPSIjMzAzNDM4IiB\
|
||||||
|
kPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNz\
|
||||||
|
cgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPg==");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
border-width: 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 0 0 3px 3px;
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 2px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 2px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
transition: opacity 142ms linear;
|
||||||
|
-webkit-transition: opacity 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar button.calendar-close:hover{
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
/* @end MAIN CALENDAR */
|
||||||
|
|
||||||
|
/* @start CALENDAR TOOLTIP */
|
||||||
|
.tail-datetime-calendar .calendar-tooltip{
|
||||||
|
color: white;
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
background-color: #303438;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-tooltip:before{
|
||||||
|
top: -7px;
|
||||||
|
left: 50%;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
margin: 0 0 0 -6px;
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
border-width: 0 7px 7px 7px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent transparent #303438 transparent;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-tooltip .tooltip-inner{
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px 7px;
|
||||||
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 14px;
|
||||||
|
}
|
||||||
|
/* @end CALENDAR TOOLTIP */
|
||||||
|
|
||||||
|
/* @start CALENDAR ACTIONs */
|
||||||
|
.tail-datetime-calendar .calendar-actions{
|
||||||
|
color: #303438;
|
||||||
|
width: 100%;
|
||||||
|
height: 36px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: table;
|
||||||
|
overflow: hidden;
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: separate;
|
||||||
|
background-color: white;
|
||||||
|
border-width: 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 3px 3px 0 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
opacity: 0.5;
|
||||||
|
display: table-cell;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40px;
|
||||||
|
text-shadow: none;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
transition: opacity 142ms linear, background 142ms linear;
|
||||||
|
-webkit-transition: opacity 142ms linear, background 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span[data-action]{
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action{
|
||||||
|
width: 50px;
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.label{
|
||||||
|
width: auto;
|
||||||
|
opacity: 1;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:first-child{
|
||||||
|
border-radius: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:last-child{
|
||||||
|
border-radius: 0 4px 0 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:first-child:before,
|
||||||
|
.tail-datetime-calendar .calendar-actions span:last-child:before{
|
||||||
|
top: 5px;
|
||||||
|
bottom: 5px;
|
||||||
|
width: 1px;
|
||||||
|
height: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
background-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:first-child:before{
|
||||||
|
right: -1px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:last-child:before{
|
||||||
|
left: -1px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:first-child:hover:before,
|
||||||
|
.tail-datetime-calendar .calendar-actions span:last-child:hover:before{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span[data-action]:hover{
|
||||||
|
opacity: 0.95;
|
||||||
|
background-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action-prev{
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zd\
|
||||||
|
mciIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgNiAxNiI+PHBhdGggZD0iTTYgMkwwIDhsNiA2VjJ6\
|
||||||
|
Ii8+PC9zdmc+");
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action-next{
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z\
|
||||||
|
dmciIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgNiAxNiI+PHBhdGggZD0iTTAgMTRsNi02LTYtNnY\
|
||||||
|
xMnoiLz48L3N2Zz4=");
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action-submit{
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z\
|
||||||
|
dmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2Ij48cGF0aCBkPSJNMTIgNWwtOCA4LTQ\
|
||||||
|
tNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPg==");
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action-cancel{
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z\
|
||||||
|
dmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2Ij48cGF0aCBmaWxsPSIjMzAzNDM4IiB\
|
||||||
|
kPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNz\
|
||||||
|
cgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPg==");
|
||||||
|
}
|
||||||
|
/* @end CALENDAR ACTIONs */
|
||||||
|
|
||||||
|
/* @start CALENDAR DATEPICKER */
|
||||||
|
.tail-datetime-calendar .calendar-datepicker{
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 0 15px 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker:after{
|
||||||
|
top: -1px;
|
||||||
|
left: 10px;
|
||||||
|
right: 10px;
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
border-width: 1px 0 0 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table{
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border-spacing: 1px;
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr th,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td{
|
||||||
|
color: #303438;
|
||||||
|
width: 50px;
|
||||||
|
height: 35px;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
font-size: 13px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: normal;
|
||||||
|
text-shadow: none;
|
||||||
|
line-height: 30px;
|
||||||
|
background-color: transparent;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td{
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td span.inner{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-disabled{
|
||||||
|
cursor: not-allowed;
|
||||||
|
color: #A0A4A8;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-disabled:after{
|
||||||
|
color: #A0A4A8;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 49px;
|
||||||
|
height: 35px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
content: "✕";
|
||||||
|
opacity: 0.25;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
font-size: 30px;
|
||||||
|
line-height: 35px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-previous,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-next{
|
||||||
|
color: #808488;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-today:before,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td .tooltip-tick{
|
||||||
|
top: 5px;
|
||||||
|
width: 5px;
|
||||||
|
height: 5px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
z-index: 20;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
border-width: 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-today:before{
|
||||||
|
left: 5px;
|
||||||
|
background-color: #32B93C;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td .tooltip-tick{
|
||||||
|
right: 5px;
|
||||||
|
background-color: #303438;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-select.date-today:before,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-select .tooltip-tick{
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td .tooltip-tick:before,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td .tooltip-tick:after{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade{
|
||||||
|
width: 14.28571429%;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade:hover{
|
||||||
|
border-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day.date-disabled:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month.date-disabled:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year.date-disabled:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade.date-disabled:hover{
|
||||||
|
border-color: white;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day.date-today,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month.date-today,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year.date-today,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade.date-today{
|
||||||
|
color: #32B93C;
|
||||||
|
border-color: #32B93C;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day.date-select,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month.date-select,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year.date-select,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade.date-select{
|
||||||
|
border-color: #149BE6;
|
||||||
|
background-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day.date-select span,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month.date-select span,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year.date-select span,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade.date-select span{
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day span.inner,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month span.inner,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year span.inner,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade span.inner{
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade{
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade span.inner{
|
||||||
|
height: 54px;
|
||||||
|
padding: 7px 15px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
/* @end CALENDAR DATEPICKER */
|
||||||
|
|
||||||
|
/* @start CALENDAR TIMEPICKER */
|
||||||
|
.tail-datetime-calendar .calendar-timepicker{
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
border-top: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker:after{
|
||||||
|
top: -1px;
|
||||||
|
left: 10px;
|
||||||
|
right: 10px;
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
border-width: 1px 0 0 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field{
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 20px 10px 10px 10px;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field:first-of-type{
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field:last-of-type{
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input[type="text"]{
|
||||||
|
color: #606468;
|
||||||
|
width: 75px;
|
||||||
|
height: 35px;
|
||||||
|
margin: 0;
|
||||||
|
z-index: 4;
|
||||||
|
padding: 3px 20px 3px 5px;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: center;
|
||||||
|
appearance: textfield;
|
||||||
|
-moz-appearance: textfield;
|
||||||
|
-webkit-appearance: textfield;
|
||||||
|
background-color: white;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #E0E0E0;
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: none;
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
transition: color 142ms linear, border 142ms linear, background 142ms linear;
|
||||||
|
-webkit-transition: color 142ms linear, border 142ms linear, background 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input[type="text"]:hover{
|
||||||
|
color: #404448;
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input[type="text"]:focus{
|
||||||
|
color: #303438;
|
||||||
|
border-color: #149BE6;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input[type="text"]:disabled{
|
||||||
|
cursor: not-allowed;
|
||||||
|
color: #A0A4A8;
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step{
|
||||||
|
right: 11px;
|
||||||
|
width: 20px;
|
||||||
|
height: 17px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
z-index: 15;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
background-color: white;
|
||||||
|
box-shadow: none;
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
transition: border 142ms linear, background 142ms linear;
|
||||||
|
-webkit-transition: border 142ms linear, background 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step:before{
|
||||||
|
top: 5px;
|
||||||
|
left: 50%;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
margin: 0 0 0 -3px;
|
||||||
|
padding: 0;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
transition: border 142ms linear;
|
||||||
|
-webkit-transition: border 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-up{
|
||||||
|
top: 21px;
|
||||||
|
border-width: 0 0 1px 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #E0E0E0;
|
||||||
|
border-radius: 0 2px 0 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-up:hover{
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-up:before{
|
||||||
|
border-width: 0 4px 5px 4px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent transparent #606468 transparent;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-down{
|
||||||
|
top: 37px;
|
||||||
|
border-width: 1px 0 0 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #E0E0E0;
|
||||||
|
border-radius: 0 0 2px 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-down:hover{
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-down:before{
|
||||||
|
border-width: 5px 4px 0 4px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #606468 transparent transparent transparent;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button.step-up{
|
||||||
|
border-color: #149BE6;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button.step-up:before{
|
||||||
|
border-bottom-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button.step-up:hover{
|
||||||
|
color: white;
|
||||||
|
background-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button.step-up:hover:before{
|
||||||
|
border-bottom-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button + button.step-down{
|
||||||
|
border-color: #149BE6;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button + button.step-down:before{
|
||||||
|
border-top-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button + button.step-down:hover{
|
||||||
|
color: white;
|
||||||
|
background-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button + button.step-down:hover:before{
|
||||||
|
border-top-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button.step-up{
|
||||||
|
cursor: not-allowed;
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button.step-up:hover{
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button.step-up:before{
|
||||||
|
border-bottom-color: #A0A4A8;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button + button.step-down{
|
||||||
|
cursor: not-allowed;
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button + button.step-down:hover{
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button + button.step-down:before{
|
||||||
|
border-top-color: #A0A4A8;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field label{
|
||||||
|
color: #606468;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch{
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0 0 -8px 0;
|
||||||
|
padding: 15px 0 0 0;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch:before,
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch:after{
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 5px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 16px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch:before{
|
||||||
|
content: attr(data-am);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch:after{
|
||||||
|
content: attr(data-pm);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"]{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"] + span{
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"] + span:before{
|
||||||
|
width: 50px;
|
||||||
|
height: 16px;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #149BE6;
|
||||||
|
border-radius: 14px;
|
||||||
|
transition: border 284ms linear;
|
||||||
|
-webkit-transition: border 284ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"] + span:after{
|
||||||
|
top: 3px;
|
||||||
|
left: 4px;
|
||||||
|
right: 30px;
|
||||||
|
width: auto;
|
||||||
|
height: 10px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
background-color: #149BE6;
|
||||||
|
border-radius: 15px;
|
||||||
|
vertical-align: top;
|
||||||
|
transition: left 284ms linear, right 284ms linear 284ms, background 284ms linear;
|
||||||
|
-webkit-transition: left 284ms linear, right 284ms linear 284ms, background 284ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"]:checked + span:before{
|
||||||
|
border-color: #32B93C;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"]:checked + span:after{
|
||||||
|
left: 30px;
|
||||||
|
right: 4px;
|
||||||
|
background-color: #32B93C;
|
||||||
|
transition: right 284ms linear, left 284ms linear 284ms, background 284ms linear;
|
||||||
|
-webkit-transition: right 284ms linear, left 284ms linear 284ms, background 284ms linear;
|
||||||
|
}
|
||||||
|
/* @end CALENDAR TIMEPICKER */
|
||||||
|
|
||||||
|
/* @start RTL */
|
||||||
|
.tail-datetime-calendar.rtl{
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-actions span.action-next,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-actions span.action-prev{
|
||||||
|
transform: rotate(180deg);
|
||||||
|
-moz-transform: rotate(180deg);
|
||||||
|
-webkit-transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.date-disabled:after{
|
||||||
|
right: 3px;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
-moz-transform: rotate(45deg);
|
||||||
|
-webkit-transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.date-today:before{
|
||||||
|
right: 5px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td .tooltip-tick{
|
||||||
|
left: 5px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-month.date-today:before,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-year.date-today:before,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade.date-today:before{
|
||||||
|
right: 50%;
|
||||||
|
margin-right: -2.5px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-month:hover span.inner:before,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-year:hover span.inner:before,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade:hover span.inner:before{
|
||||||
|
right: 6px;
|
||||||
|
border-right-color: #cccccc;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-month span.inner:after,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-year span.inner:after,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade span.inner:after{
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-month:hover span.inner:after,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-year:hover span.inner:after,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade:hover span.inner:after{
|
||||||
|
left: 6px;
|
||||||
|
border-left-color: #cccccc;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade span.inner{
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-timepicker .timepicker-field:first-child{
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 25px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-timepicker .timepicker-field:last-child{
|
||||||
|
text-align: right;
|
||||||
|
padding-left: 25px;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-timepicker .timepicker-field:first-child input[type="text"]{
|
||||||
|
margin-left: -1px;
|
||||||
|
margin-right: 0;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-timepicker .timepicker-field:last-child input[type="text"]{
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: -1px;
|
||||||
|
border-radius: 3px 0 0 3px;
|
||||||
|
}
|
||||||
|
/* @end RTL */
|
||||||
|
|
||||||
|
/*# sourceMappingURL=tail.datetime-harx-light.map */
|
||||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -0,0 +1,56 @@
|
|||||||
|
var createTextStyle = function(feature, resolution, labelText, labelFont,
|
||||||
|
labelFill, placement, bufferColor,
|
||||||
|
bufferWidth) {
|
||||||
|
|
||||||
|
if (feature.hide || !labelText) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bufferWidth == 0) {
|
||||||
|
var bufferStyle = null;
|
||||||
|
} else {
|
||||||
|
var bufferStyle = new ol.style.Stroke({
|
||||||
|
color: bufferColor,
|
||||||
|
width: bufferWidth
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var textStyle = new ol.style.Text({
|
||||||
|
font: labelFont,
|
||||||
|
text: labelText,
|
||||||
|
textBaseline: "middle",
|
||||||
|
textAlign: "left",
|
||||||
|
offsetX: 8,
|
||||||
|
offsetY: 3,
|
||||||
|
placement: placement,
|
||||||
|
maxAngle: 0,
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: labelFill
|
||||||
|
}),
|
||||||
|
stroke: bufferStyle
|
||||||
|
});
|
||||||
|
|
||||||
|
return textStyle;
|
||||||
|
};
|
||||||
|
|
||||||
|
function stripe(stripeWidth, gapWidth, angle, color) {
|
||||||
|
var canvas = document.createElement('canvas');
|
||||||
|
var context = canvas.getContext('2d');
|
||||||
|
canvas.width = screen.width;
|
||||||
|
canvas.height = stripeWidth + gapWidth;
|
||||||
|
context.fillStyle = color;
|
||||||
|
context.lineWidth = stripeWidth;
|
||||||
|
context.fillRect(0, 0, canvas.width, stripeWidth);
|
||||||
|
innerPattern = context.createPattern(canvas, 'repeat');
|
||||||
|
|
||||||
|
var outerCanvas = document.createElement('canvas');
|
||||||
|
var outerContext = outerCanvas.getContext('2d');
|
||||||
|
outerCanvas.width = screen.width;
|
||||||
|
outerCanvas.height = screen.height;
|
||||||
|
outerContext.rotate((Math.PI / 180) * angle);
|
||||||
|
outerContext.translate(-(screen.width/2), -(screen.height/2));
|
||||||
|
outerContext.fillStyle = innerPattern;
|
||||||
|
outerContext.fillRect(0,0,screen.width,screen.height);
|
||||||
|
|
||||||
|
return outerContext.createPattern(outerCanvas, 'no-repeat');
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.sey-container{display:none;position:absolute;box-shadow:1px 2px 6px;background-color:#fff;color:#333;transition:left .1s ease-in-out;z-index:1}.sey-list{padding:0;margin:0;list-style-type:none}.sey-show{display:block}.sey-hide{display:none}.sey-empty{cursor:default;padding:7px}.sey-item{cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:7px}.sey-item:hover{background-color:#444;color:#fff}.sey-selected{background-color:#333;color:#fff}.sey-char-highlight{font-weight:700}.sey-category-id{background-color:#eee;color:#aaa;text-align:right;text-transform:capitalize;font-style:italic;font-size:12px;box-shadow:1px 0 1px;padding:7px}
|
||||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Arquivo binário não exibido.
|
Depois Largura: | Altura: | Tamanho: 14 KiB |
@@ -0,0 +1,2 @@
|
|||||||
|
/*! nouislider - 14.0.2 - 6/28/2019 */
|
||||||
|
.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-target{position:relative;direction:ltr}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;left:0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;transform-style:flat}.noUi-connect{height:100%;width:100%}.noUi-origin{height:10%;width:10%}html:not([dir=rtl]) .noUi-horizontal .noUi-origin{left:auto;right:0}.noUi-vertical .noUi-origin{width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-touch-area{height:100%;width:100%}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{-webkit-transition:transform .3s;transition:transform .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}html:not([dir=rtl]) .noUi-horizontal .noUi-handle{right:-17px;left:auto}.noUi-target{background:#FAFAFA;border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-connects{border-radius:3px}.noUi-connect{background:#3FB8AF}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#B8B8B8}[disabled] .noUi-handle,[disabled].noUi-handle,[disabled].noUi-target{cursor:not-allowed}.noUi-pips,.noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#CCC}.noUi-marker-sub{background:#AAA}.noUi-marker-large{background:#AAA}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}.noUi-rtl .noUi-value-horizontal{-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);padding-left:25px}.noUi-rtl .noUi-value-vertical{-webkit-transform:translate(0,50%);transform:translate(0,50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #D9D9D9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%}
|
||||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -0,0 +1,123 @@
|
|||||||
|
.layer-switcher.shown.ol-control {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher.shown.ol-control:hover {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher {
|
||||||
|
position: absolute;
|
||||||
|
top: 3.5em;
|
||||||
|
right: 0.5em;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher.shown {
|
||||||
|
bottom: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher .panel {
|
||||||
|
padding: 0 1em 0 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 4px solid #eee;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: white;
|
||||||
|
display: none;
|
||||||
|
max-height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher.shown .panel {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher button {
|
||||||
|
float: right;
|
||||||
|
width: 38px;
|
||||||
|
height: 38px;
|
||||||
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==') /*logo.png*/;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 2px;
|
||||||
|
background-color: white;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher.shown button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher button:focus, .layer-switcher button:hover {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher ul {
|
||||||
|
padding-left: 2em;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher li.group > label {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher li.layer {
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher li.layer label, .layer-switcher li.layer input {
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher label.disabled {
|
||||||
|
opacity:0.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher input {
|
||||||
|
margin: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher.touch ::-webkit-scrollbar {
|
||||||
|
width: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher.touch ::-webkit-scrollbar-track {
|
||||||
|
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher.touch ::-webkit-scrollbar-thumb {
|
||||||
|
border-radius: 10px;
|
||||||
|
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher .group button {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
float: none;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background-position: center 2px;
|
||||||
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAW0lEQVR4nGNgGAWMyBwXFxcGBgaGeii3EU0tXHzPnj1wQRYsihqQ+I0ExDEMQAYNONgoAN0AmMkNaDSyQSheY8JiaCMOGzE04zIAmyFYNTMw4A+DRhzsUUBtAADw4BCeIZkGdwAAAABJRU5ErkJggg==');
|
||||||
|
-webkit-transition: -webkit-transform .2s ease-in-out;
|
||||||
|
-ms-transition: -ms-transform .2s ease-in-out;
|
||||||
|
transition: transform .2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher .group.layer-switcher-close button {
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
-webkit-transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
li.group.layer-switcher-fold {
|
||||||
|
margin-left: -18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher .group.layer-switcher-fold > ul {
|
||||||
|
padding-left: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher .group.layer-switcher-fold.layer-switcher-close > ul {
|
||||||
|
overflow: hidden;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,624 @@
|
|||||||
|
(function (global, factory) {
|
||||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('ol/control/Control'), require('ol/Observable')) :
|
||||||
|
typeof define === 'function' && define.amd ? define(['ol/control/Control', 'ol/Observable'], factory) :
|
||||||
|
(global.LayerSwitcher = factory(global.ol.control.Control,global.ol.Observable));
|
||||||
|
}(this, (function (Control,ol_Observable) { 'use strict';
|
||||||
|
|
||||||
|
Control = 'default' in Control ? Control['default'] : Control;
|
||||||
|
|
||||||
|
var classCallCheck = function (instance, Constructor) {
|
||||||
|
if (!(instance instanceof Constructor)) {
|
||||||
|
throw new TypeError("Cannot call a class as a function");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var createClass = function () {
|
||||||
|
function defineProperties(target, props) {
|
||||||
|
for (var i = 0; i < props.length; i++) {
|
||||||
|
var descriptor = props[i];
|
||||||
|
descriptor.enumerable = descriptor.enumerable || false;
|
||||||
|
descriptor.configurable = true;
|
||||||
|
if ("value" in descriptor) descriptor.writable = true;
|
||||||
|
Object.defineProperty(target, descriptor.key, descriptor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return function (Constructor, protoProps, staticProps) {
|
||||||
|
if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
||||||
|
if (staticProps) defineProperties(Constructor, staticProps);
|
||||||
|
return Constructor;
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var get = function get(object, property, receiver) {
|
||||||
|
if (object === null) object = Function.prototype;
|
||||||
|
var desc = Object.getOwnPropertyDescriptor(object, property);
|
||||||
|
|
||||||
|
if (desc === undefined) {
|
||||||
|
var parent = Object.getPrototypeOf(object);
|
||||||
|
|
||||||
|
if (parent === null) {
|
||||||
|
return undefined;
|
||||||
|
} else {
|
||||||
|
return get(parent, property, receiver);
|
||||||
|
}
|
||||||
|
} else if ("value" in desc) {
|
||||||
|
return desc.value;
|
||||||
|
} else {
|
||||||
|
var getter = desc.get;
|
||||||
|
|
||||||
|
if (getter === undefined) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
return getter.call(receiver);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var inherits = function (subClass, superClass) {
|
||||||
|
if (typeof superClass !== "function" && superClass !== null) {
|
||||||
|
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
||||||
|
constructor: {
|
||||||
|
value: subClass,
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var possibleConstructorReturn = function (self, call) {
|
||||||
|
if (!self) {
|
||||||
|
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
||||||
|
}
|
||||||
|
|
||||||
|
return call && (typeof call === "object" || typeof call === "function") ? call : self;
|
||||||
|
};
|
||||||
|
|
||||||
|
var CSS_PREFIX = 'layer-switcher-';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OpenLayers Layer Switcher Control.
|
||||||
|
* See [the examples](./examples) for usage.
|
||||||
|
* @constructor
|
||||||
|
* @extends {ol/control/Control~Control}
|
||||||
|
* @param {Object} opt_options Control options, extends ol/control/Control~Control#options adding:
|
||||||
|
* @param {String} opt_options.tipLabel the button tooltip.
|
||||||
|
* @param {String} opt_options.groupSelectStyle either `'none'` - groups don't get a checkbox,
|
||||||
|
* `'children'` (default) groups have a checkbox and affect child visibility or
|
||||||
|
* `'group'` groups have a checkbox but do not alter child visibility (like QGIS).
|
||||||
|
*/
|
||||||
|
|
||||||
|
var LayerSwitcher = function (_Control) {
|
||||||
|
inherits(LayerSwitcher, _Control);
|
||||||
|
|
||||||
|
function LayerSwitcher(opt_options) {
|
||||||
|
classCallCheck(this, LayerSwitcher);
|
||||||
|
|
||||||
|
|
||||||
|
var options = opt_options || {};
|
||||||
|
|
||||||
|
var tipLabel = options.tipLabel ? options.tipLabel : 'Legend';
|
||||||
|
|
||||||
|
var element = document.createElement('div');
|
||||||
|
|
||||||
|
var _this = possibleConstructorReturn(this, (LayerSwitcher.__proto__ || Object.getPrototypeOf(LayerSwitcher)).call(this, { element: element, target: options.target }));
|
||||||
|
|
||||||
|
_this.groupSelectStyle = LayerSwitcher.getGroupSelectStyle(options.groupSelectStyle);
|
||||||
|
|
||||||
|
_this.mapListeners = [];
|
||||||
|
|
||||||
|
_this.hiddenClassName = 'ol-unselectable ol-control layer-switcher';
|
||||||
|
if (LayerSwitcher.isTouchDevice_()) {
|
||||||
|
_this.hiddenClassName += ' touch';
|
||||||
|
}
|
||||||
|
_this.shownClassName = 'shown';
|
||||||
|
|
||||||
|
element.className = _this.hiddenClassName;
|
||||||
|
|
||||||
|
var button = document.createElement('button');
|
||||||
|
button.setAttribute('title', tipLabel);
|
||||||
|
element.appendChild(button);
|
||||||
|
|
||||||
|
_this.panel = document.createElement('div');
|
||||||
|
_this.panel.className = 'panel';
|
||||||
|
element.appendChild(_this.panel);
|
||||||
|
LayerSwitcher.enableTouchScroll_(_this.panel);
|
||||||
|
|
||||||
|
var this_ = _this;
|
||||||
|
|
||||||
|
button.onmouseover = function (e) {
|
||||||
|
this_.showPanel();
|
||||||
|
};
|
||||||
|
|
||||||
|
button.onclick = function (e) {
|
||||||
|
e = e || window.event;
|
||||||
|
this_.showPanel();
|
||||||
|
e.preventDefault();
|
||||||
|
};
|
||||||
|
|
||||||
|
this_.panel.onmouseout = function (e) {
|
||||||
|
e = e || window.event;
|
||||||
|
if (!this_.panel.contains(e.toElement || e.relatedTarget)) {
|
||||||
|
this_.hidePanel();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return _this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the map instance the control is associated with.
|
||||||
|
* @param {ol/Map~Map} map The map instance.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
createClass(LayerSwitcher, [{
|
||||||
|
key: 'setMap',
|
||||||
|
value: function setMap(map) {
|
||||||
|
// Clean up listeners associated with the previous map
|
||||||
|
for (var i = 0, key; i < this.mapListeners.length; i++) {
|
||||||
|
ol_Observable.unByKey(this.mapListeners[i]);
|
||||||
|
}
|
||||||
|
this.mapListeners.length = 0;
|
||||||
|
// Wire up listeners etc. and store reference to new map
|
||||||
|
get(LayerSwitcher.prototype.__proto__ || Object.getPrototypeOf(LayerSwitcher.prototype), 'setMap', this).call(this, map);
|
||||||
|
if (map) {
|
||||||
|
var this_ = this;
|
||||||
|
this.mapListeners.push(map.on('pointerdown', function () {
|
||||||
|
this_.hidePanel();
|
||||||
|
}));
|
||||||
|
this.renderPanel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the layer panel.
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'showPanel',
|
||||||
|
value: function showPanel() {
|
||||||
|
if (!this.element.classList.contains(this.shownClassName)) {
|
||||||
|
this.element.classList.add(this.shownClassName);
|
||||||
|
this.renderPanel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide the layer panel.
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'hidePanel',
|
||||||
|
value: function hidePanel() {
|
||||||
|
if (this.element.classList.contains(this.shownClassName)) {
|
||||||
|
this.element.classList.remove(this.shownClassName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Re-draw the layer panel to represent the current state of the layers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'renderPanel',
|
||||||
|
value: function renderPanel() {
|
||||||
|
this.dispatchEvent({ type: 'render' });
|
||||||
|
LayerSwitcher.renderPanel(this.getMap(), this.panel, { groupSelectStyle: this.groupSelectStyle });
|
||||||
|
this.dispatchEvent({ type: 'rendercomplete' });
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Static** Re-draw the layer panel to represent the current state of the layers.
|
||||||
|
* @param {ol/Map~Map} map The OpenLayers Map instance to render layers for
|
||||||
|
* @param {Element} panel The DOM Element into which the layer tree will be rendered
|
||||||
|
*/
|
||||||
|
|
||||||
|
}], [{
|
||||||
|
key: 'renderPanel',
|
||||||
|
value: function renderPanel(map, panel, options) {
|
||||||
|
// Create the event.
|
||||||
|
var render_event = new Event('render');
|
||||||
|
// Dispatch the event.
|
||||||
|
panel.dispatchEvent(render_event);
|
||||||
|
|
||||||
|
options = options || {};
|
||||||
|
|
||||||
|
options.groupSelectStyle = LayerSwitcher.getGroupSelectStyle(options.groupSelectStyle);
|
||||||
|
|
||||||
|
LayerSwitcher.ensureTopVisibleBaseLayerShown_(map);
|
||||||
|
|
||||||
|
while (panel.firstChild) {
|
||||||
|
panel.removeChild(panel.firstChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset indeterminate state for all layers and groups before
|
||||||
|
// applying based on groupSelectStyle
|
||||||
|
LayerSwitcher.forEachRecursive(map, function (l, idx, a) {
|
||||||
|
l.set('indeterminate', false);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (options.groupSelectStyle === 'children' || options.groupSelectStyle === 'none') {
|
||||||
|
// Set visibile and indeterminate state of groups based on
|
||||||
|
// their children's visibility
|
||||||
|
LayerSwitcher.setGroupVisibility(map);
|
||||||
|
} else if (options.groupSelectStyle === 'group') {
|
||||||
|
// Set child indetermiate state based on their parent's visibility
|
||||||
|
LayerSwitcher.setChildVisibility(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
var ul = document.createElement('ul');
|
||||||
|
panel.appendChild(ul);
|
||||||
|
// passing two map arguments instead of lyr as we're passing the map as the root of the layers tree
|
||||||
|
LayerSwitcher.renderLayers_(map, map, ul, options, function render(changedLyr) {
|
||||||
|
// console.log('render');
|
||||||
|
LayerSwitcher.renderPanel(map, panel, options);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create the event.
|
||||||
|
var rendercomplete_event = new Event('rendercomplete');
|
||||||
|
// Dispatch the event.
|
||||||
|
panel.dispatchEvent(rendercomplete_event);
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'isBaseGroup',
|
||||||
|
value: function isBaseGroup(lyr) {
|
||||||
|
var lyrs = lyr.getLayers ? lyr.getLayers().getArray() : [];
|
||||||
|
return lyrs.length && lyrs[0].get('type') === 'base';
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'setGroupVisibility',
|
||||||
|
value: function setGroupVisibility(map) {
|
||||||
|
// Get a list of groups, with the deepest first
|
||||||
|
var groups = LayerSwitcher.getGroupsAndLayers(map, function (l) {
|
||||||
|
return l.getLayers && !l.get('combine') && !LayerSwitcher.isBaseGroup(l);
|
||||||
|
}).reverse();
|
||||||
|
// console.log(groups.map(g => g.get('title')));
|
||||||
|
groups.forEach(function (group) {
|
||||||
|
// TODO Can we use getLayersArray, is it public in the esm build?
|
||||||
|
var descendantVisibility = group.getLayersArray().map(function (l) {
|
||||||
|
var state = l.getVisible();
|
||||||
|
// console.log('>', l.get('title'), state);
|
||||||
|
return state;
|
||||||
|
});
|
||||||
|
// console.log(descendantVisibility);
|
||||||
|
if (descendantVisibility.every(function (v) {
|
||||||
|
return v === true;
|
||||||
|
})) {
|
||||||
|
group.setVisible(true);
|
||||||
|
group.set('indeterminate', false);
|
||||||
|
} else if (descendantVisibility.every(function (v) {
|
||||||
|
return v === false;
|
||||||
|
})) {
|
||||||
|
group.setVisible(false);
|
||||||
|
group.set('indeterminate', false);
|
||||||
|
} else {
|
||||||
|
group.setVisible(true);
|
||||||
|
group.set('indeterminate', true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'setChildVisibility',
|
||||||
|
value: function setChildVisibility(map) {
|
||||||
|
// console.log('setChildVisibility');
|
||||||
|
var groups = LayerSwitcher.getGroupsAndLayers(map, function (l) {
|
||||||
|
return l.getLayers && !l.get('combine') && !LayerSwitcher.isBaseGroup(l);
|
||||||
|
});
|
||||||
|
groups.forEach(function (group) {
|
||||||
|
// console.log(group.get('title'));
|
||||||
|
var groupVisible = group.getVisible();
|
||||||
|
var groupIndeterminate = group.get('indeterminate');
|
||||||
|
group.getLayers().getArray().forEach(function (l) {
|
||||||
|
// console.log('>', l.get('title'));
|
||||||
|
l.set('indeterminate', false);
|
||||||
|
if ((!groupVisible || groupIndeterminate) && l.getVisible()) {
|
||||||
|
l.set('indeterminate', true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Static** Ensure only the top-most base layer is visible if more than one is visible.
|
||||||
|
* @param {ol/Map~Map} map The map instance.
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'ensureTopVisibleBaseLayerShown_',
|
||||||
|
value: function ensureTopVisibleBaseLayerShown_(map) {
|
||||||
|
var lastVisibleBaseLyr;
|
||||||
|
LayerSwitcher.forEachRecursive(map, function (l, idx, a) {
|
||||||
|
if (l.get('type') === 'base' && l.getVisible()) {
|
||||||
|
lastVisibleBaseLyr = l;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (lastVisibleBaseLyr) LayerSwitcher.setVisible_(map, lastVisibleBaseLyr, true);
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'getGroupsAndLayers',
|
||||||
|
value: function getGroupsAndLayers(lyr, filterFn) {
|
||||||
|
var layers = [];
|
||||||
|
filterFn = filterFn || function (l, idx, a) {
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
LayerSwitcher.forEachRecursive(lyr, function (l, idx, a) {
|
||||||
|
if (l.get('title')) {
|
||||||
|
if (filterFn(l, idx, a)) {
|
||||||
|
layers.push(l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return layers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Static** Toggle the visible state of a layer.
|
||||||
|
* Takes care of hiding other layers in the same exclusive group if the layer
|
||||||
|
* is toggle to visible.
|
||||||
|
* @private
|
||||||
|
* @param {ol/Map~Map} map The map instance.
|
||||||
|
* @param {ol/layer/Base~BaseLayer} The layer whose visibility will be toggled.
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'setVisible_',
|
||||||
|
value: function setVisible_(map, lyr, visible, groupSelectStyle) {
|
||||||
|
// console.log(lyr.get('title'), visible, groupSelectStyle);
|
||||||
|
lyr.setVisible(visible);
|
||||||
|
if (visible && lyr.get('type') === 'base') {
|
||||||
|
// Hide all other base layers regardless of grouping
|
||||||
|
LayerSwitcher.forEachRecursive(map, function (l, idx, a) {
|
||||||
|
if (l != lyr && l.get('type') === 'base') {
|
||||||
|
l.setVisible(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (lyr.getLayers && !lyr.get('combine') && groupSelectStyle === 'children') {
|
||||||
|
lyr.getLayers().forEach(function (l) {
|
||||||
|
LayerSwitcher.setVisible_(map, l, lyr.getVisible(), groupSelectStyle);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Static** Render all layers that are children of a group.
|
||||||
|
* @private
|
||||||
|
* @param {ol/Map~Map} map The map instance.
|
||||||
|
* @param {ol/layer/Base~BaseLayer} lyr Layer to be rendered (should have a title property).
|
||||||
|
* @param {Number} idx Position in parent group list.
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'renderLayer_',
|
||||||
|
value: function renderLayer_(map, lyr, idx, options, render) {
|
||||||
|
|
||||||
|
var li = document.createElement('li');
|
||||||
|
|
||||||
|
var lyrTitle = lyr.get('title');
|
||||||
|
|
||||||
|
var checkboxId = LayerSwitcher.uuid();
|
||||||
|
|
||||||
|
var label = document.createElement('label');
|
||||||
|
|
||||||
|
if (lyr.getLayers && !lyr.get('combine')) {
|
||||||
|
|
||||||
|
var isBaseGroup = LayerSwitcher.isBaseGroup(lyr);
|
||||||
|
|
||||||
|
li.classList.add('group');
|
||||||
|
if (isBaseGroup) {
|
||||||
|
li.classList.add(CSS_PREFIX + 'base-group');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Group folding
|
||||||
|
if (lyr.get('fold')) {
|
||||||
|
li.classList.add(CSS_PREFIX + 'fold');
|
||||||
|
li.classList.add(CSS_PREFIX + lyr.get('fold'));
|
||||||
|
var btn = document.createElement('button');
|
||||||
|
btn.onclick = function (e) {
|
||||||
|
LayerSwitcher.toggleFold_(lyr, li);
|
||||||
|
};
|
||||||
|
li.appendChild(btn);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isBaseGroup && options.groupSelectStyle != 'none') {
|
||||||
|
var _input = document.createElement('input');
|
||||||
|
_input.type = 'checkbox';
|
||||||
|
_input.id = checkboxId;
|
||||||
|
_input.checked = lyr.getVisible();
|
||||||
|
_input.indeterminate = lyr.get('indeterminate');
|
||||||
|
_input.onchange = function (e) {
|
||||||
|
LayerSwitcher.setVisible_(map, lyr, e.target.checked, options.groupSelectStyle);
|
||||||
|
render(lyr);
|
||||||
|
};
|
||||||
|
li.appendChild(_input);
|
||||||
|
label.htmlFor = checkboxId;
|
||||||
|
}
|
||||||
|
|
||||||
|
label.innerHTML = lyrTitle;
|
||||||
|
li.appendChild(label);
|
||||||
|
var ul = document.createElement('ul');
|
||||||
|
li.appendChild(ul);
|
||||||
|
|
||||||
|
LayerSwitcher.renderLayers_(map, lyr, ul, options, render);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
li.className = 'layer';
|
||||||
|
var input = document.createElement('input');
|
||||||
|
if (lyr.get('type') === 'base') {
|
||||||
|
input.type = 'radio';
|
||||||
|
input.name = 'base';
|
||||||
|
} else {
|
||||||
|
input.type = 'checkbox';
|
||||||
|
}
|
||||||
|
input.id = checkboxId;
|
||||||
|
input.checked = lyr.get('visible');
|
||||||
|
input.indeterminate = lyr.get('indeterminate');
|
||||||
|
input.onchange = function (e) {
|
||||||
|
LayerSwitcher.setVisible_(map, lyr, e.target.checked, options.groupSelectStyle);
|
||||||
|
render(lyr);
|
||||||
|
};
|
||||||
|
li.appendChild(input);
|
||||||
|
|
||||||
|
label.htmlFor = checkboxId;
|
||||||
|
label.innerHTML = lyrTitle;
|
||||||
|
|
||||||
|
var rsl = map.getView().getResolution();
|
||||||
|
if (rsl > lyr.getMaxResolution() || rsl < lyr.getMinResolution()) {
|
||||||
|
label.className += ' disabled';
|
||||||
|
}
|
||||||
|
|
||||||
|
li.appendChild(label);
|
||||||
|
}
|
||||||
|
|
||||||
|
return li;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Static** Render all layers that are children of a group.
|
||||||
|
* @private
|
||||||
|
* @param {ol/Map~Map} map The map instance.
|
||||||
|
* @param {ol/layer/Group~LayerGroup} lyr Group layer whose children will be rendered.
|
||||||
|
* @param {Element} elm DOM element that children will be appended to.
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'renderLayers_',
|
||||||
|
value: function renderLayers_(map, lyr, elm, options, render) {
|
||||||
|
var lyrs = lyr.getLayers().getArray().slice().reverse();
|
||||||
|
for (var i = 0, l; i < lyrs.length; i++) {
|
||||||
|
l = lyrs[i];
|
||||||
|
if (l.get('title')) {
|
||||||
|
elm.appendChild(LayerSwitcher.renderLayer_(map, l, i, options, render));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Static** Call the supplied function for each layer in the passed layer group
|
||||||
|
* recursing nested groups.
|
||||||
|
* @param {ol/layer/Group~LayerGroup} lyr The layer group to start iterating from.
|
||||||
|
* @param {Function} fn Callback which will be called for each `ol/layer/Base~BaseLayer`
|
||||||
|
* found under `lyr`. The signature for `fn` is the same as `ol/Collection~Collection#forEach`
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'forEachRecursive',
|
||||||
|
value: function forEachRecursive(lyr, fn) {
|
||||||
|
lyr.getLayers().forEach(function (lyr, idx, a) {
|
||||||
|
fn(lyr, idx, a);
|
||||||
|
if (lyr.getLayers) {
|
||||||
|
LayerSwitcher.forEachRecursive(lyr, fn);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* **Static** Generate a UUID
|
||||||
|
* Adapted from http://stackoverflow.com/a/2117523/526860
|
||||||
|
* @returns {String} UUID
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'uuid',
|
||||||
|
value: function uuid() {
|
||||||
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||||
|
var r = Math.random() * 16 | 0,
|
||||||
|
v = c == 'x' ? r : r & 0x3 | 0x8;
|
||||||
|
return v.toString(16);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @desc Apply workaround to enable scrolling of overflowing content within an
|
||||||
|
* element. Adapted from https://gist.github.com/chrismbarr/4107472
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'enableTouchScroll_',
|
||||||
|
value: function enableTouchScroll_(elm) {
|
||||||
|
if (LayerSwitcher.isTouchDevice_()) {
|
||||||
|
var scrollStartPos = 0;
|
||||||
|
elm.addEventListener("touchstart", function (event) {
|
||||||
|
scrollStartPos = this.scrollTop + event.touches[0].pageY;
|
||||||
|
}, false);
|
||||||
|
elm.addEventListener("touchmove", function (event) {
|
||||||
|
this.scrollTop = scrollStartPos - event.touches[0].pageY;
|
||||||
|
}, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @desc Determine if the current browser supports touch events. Adapted from
|
||||||
|
* https://gist.github.com/chrismbarr/4107472
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'isTouchDevice_',
|
||||||
|
value: function isTouchDevice_() {
|
||||||
|
try {
|
||||||
|
document.createEvent("TouchEvent");
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fold/unfold layer group
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'toggleFold_',
|
||||||
|
value: function toggleFold_(lyr, li) {
|
||||||
|
li.classList.remove(CSS_PREFIX + lyr.get('fold'));
|
||||||
|
lyr.set('fold', lyr.get('fold') === 'open' ? 'close' : 'open');
|
||||||
|
li.classList.add(CSS_PREFIX + lyr.get('fold'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If a valid groupSelectStyle value is not provided then return the default
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'getGroupSelectStyle',
|
||||||
|
value: function getGroupSelectStyle(groupSelectStyle) {
|
||||||
|
return ['none', 'children', 'group'].indexOf(groupSelectStyle) >= 0 ? groupSelectStyle : 'children';
|
||||||
|
}
|
||||||
|
}]);
|
||||||
|
return LayerSwitcher;
|
||||||
|
}(Control);
|
||||||
|
|
||||||
|
if (window.ol && window.ol.control) {
|
||||||
|
window.ol.control.LayerSwitcher = LayerSwitcher;
|
||||||
|
}
|
||||||
|
|
||||||
|
return LayerSwitcher;
|
||||||
|
|
||||||
|
})));
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-Index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:12px;z-Index:11;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-text{position:absolute;font-size:14px;text-align:center;bottom:25px;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-singlebar{position:relative;height:10px;z-Index:9;border:1px solid #000}.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-overlaycontainer,.ol-overlaycontainer-stopevent{pointer-events:none}.ol-overlaycontainer-stopevent>*,.ol-overlaycontainer>*{pointer-events:auto}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-control button span{pointer-events:none}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}
|
||||||
|
/*# sourceMappingURL=ol.css.map */
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["src/ol/ol.css"],"names":[],"mappings":"AAAA,QACE,WAAY,WACZ,cAAe,IACf,OAAQ,IAAI,MAAM,KAGpB,mBACE,IAAK,IACL,MAAO,IACP,SAAU,SAGZ,eACE,WAAY,kBACZ,cAAe,IACf,OAAQ,IACR,KAAM,IACN,QAAS,IACT,SAAU,SAEZ,qBACE,OAAQ,IAAI,MAAM,KAClB,WAAY,KACZ,MAAO,KACP,UAAW,KACX,WAAY,OACZ,OAAQ,IACR,YAAa,QAAQ,CAAE,MACvB,WAAY,IAAI,KAElB,cACE,SAAU,SACV,OAAQ,IACR,KAAM,IAER,sBACE,MAAO,IACP,OAAQ,KACR,iBAAkB,KAClB,MAAO,MACP,QAAS,GAEX,oBACE,SAAU,SACV,OAAQ,KACR,UAAW,KACX,QAAS,GACT,MAAO,KACP,YAAa,KAAK,EAAE,IAAO,CAAE,EAAE,IAAI,IAAO,CAAE,IAAI,EAAE,IAAO,CAAE,EAAE,KAAK,KAEpE,eACE,SAAU,SACV,UAAW,KACX,WAAY,OACZ,OAAQ,KACR,MAAO,KACP,YAAa,KAAK,EAAE,IAAO,CAAE,EAAE,IAAI,IAAO,CAAE,IAAI,EAAE,IAAO,CAAE,EAAE,KAAK,KAEpE,oBACE,SAAU,SACV,OAAQ,KACR,QAAS,EACT,OAAQ,IAAI,MAAM,KAGpB,gBACE,QAAS,KAEG,iBAAd,aACE,sBAAuB,KACvB,oBAAqB,KACrB,iBAAkB,KAClB,gBAAiB,KACjB,YAAa,KACb,4BAA6B,YAE/B,qBAAsB,+BACpB,eAAgB,KAEQ,iCAA1B,uBACE,eAAgB,KAElB,eACE,sBAAuB,QACvB,oBAAqB,KACrB,iBAAkB,KAClB,gBAAiB,KACjB,YAAa,KAEf,aACE,OAAQ,iBACR,OAAQ,cACR,OAAQ,SAEV,SACE,OAAQ,KACR,OAAQ,aACR,OAAQ,UACR,OAAQ,KAEV,YACE,SAAU,SACV,iBAAkB,qBAClB,cAAe,IACf,QAAS,IAEX,kBACE,iBAAkB,qBAEpB,SACE,IAAK,KACL,KAAM,KAER,WACE,IAAK,KACL,MAAO,KACP,WAAY,QAAQ,KAAK,MAAM,CAAE,WAAW,GAAG,OAEjD,qBACE,QAAS,EACT,WAAY,OACZ,WAAY,QAAQ,KAAK,MAAM,CAAE,WAAW,GAAG,OAAO,KAExD,gBACE,IAAK,QACL,KAAM,KAER,gBACE,MAAO,KACP,IAAK,KAGP,mBACE,QAAS,MACT,OAAQ,IACR,QAAS,EACT,MAAO,KACP,UAAW,OACX,YAAa,IACb,gBAAiB,KACjB,WAAY,OACZ,OAAQ,QACR,MAAO,QACP,YAAa,KACb,iBAAkB,kBAClB,OAAQ,KACR,cAAe,IAEjB,qCACE,OAAQ,KACR,QAAS,EAEX,wBACE,eAAgB,KAElB,uBACE,YAAa,MAEf,YACE,QAAS,MACT,YAAa,IACb,UAAW,MACX,YAAa,UAEf,6BACE,UAAW,MAEb,0BACE,IAAK,MAGP,yBADA,yBAEE,gBAAiB,KACjB,iBAAkB,kBAEpB,qBACE,cAAe,IAAI,IAAI,EAAE,EAE3B,sBACE,cAAe,EAAE,EAAE,IAAI,IAIzB,gBACE,WAAY,MACZ,OAAQ,KACR,MAAO,KACP,UAAW,mBAGb,mBACE,OAAQ,EACR,QAAS,EAAE,KACX,MAAO,KACP,YAAa,EAAE,EAAE,IAAI,KAEvB,mBACE,QAAS,OACT,WAAY,KAEd,0CACE,QAAS,IAEX,oBACE,WAAY,IACZ,UAAW,QACX,eAAgB,OAEE,uBAApB,mBACE,QAAS,aAEX,gCACE,QAAS,KAEX,mCACE,WAAY,qBAEd,iCACE,OAAQ,EACR,MAAO,EACP,cAAe,IAAI,EAAE,EAEvB,qCACE,WAAY,MACZ,WAAY,MAEd,wCACE,QAAS,KAGX,eACE,IAAK,MACL,KAAM,KACN,OAAQ,MAEV,sBACE,SAAU,SACV,OAAQ,KAGV,yBACE,IAAK,MAGP,gBACE,KAAM,KACN,OAAQ,KAEV,iCACE,OAAQ,EACR,KAAM,EACN,cAAe,EAAE,IAAI,EAAE,EAEzB,oCACA,uBACE,QAAS,aAEX,oCACE,OAAQ,IAAI,MAAM,QAClB,OAAQ,MACR,OAAQ,IACR,MAAO,MAET,0CACE,OAAQ,IACR,KAAM,IACN,SAAU,SAEZ,iDACA,wCACE,QAAS,KAEX,mCACE,WAAY,qBAEd,oBACE,OAAQ,IAAI,OAAO,kBAGrB,0CACE,OAAQ"}
|
||||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -0,0 +1,152 @@
|
|||||||
|
function hasClass(el, cls) {
|
||||||
|
return el.className && new RegExp('(\\s|^)' +
|
||||||
|
cls + '(\\s|$)').test(el.className);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addClass(elem, className) {
|
||||||
|
if (!hasClass(elem, className)) {
|
||||||
|
elem.className += ' ' + className;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeClass(elem, className) {
|
||||||
|
var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' ';
|
||||||
|
if (hasClass(elem, className)) {
|
||||||
|
while (newClass.indexOf(' ' + className + ' ') >= 0) {
|
||||||
|
newClass = newClass.replace(' ' + className + ' ', ' ');
|
||||||
|
}
|
||||||
|
elem.className = newClass.replace(/^\s+|\s+$/g, '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var SearchLayer = (function (Control) {
|
||||||
|
function SearchLayer(optOptions) {
|
||||||
|
var horseyComponent;
|
||||||
|
var select;
|
||||||
|
var options = optOptions || {};
|
||||||
|
if (optOptions.layer) {
|
||||||
|
options.layer = optOptions.layer;
|
||||||
|
} else {
|
||||||
|
throw new Error('error');
|
||||||
|
}
|
||||||
|
options.map = optOptions.map;
|
||||||
|
|
||||||
|
var source;
|
||||||
|
if (options.layer instanceof ol.layer.Image &&
|
||||||
|
options.layer.getSource() instanceof ol.source.ImageVector) {
|
||||||
|
source = options.layer.getSource().getSource();
|
||||||
|
} else if (options.layer instanceof ol.layer.Vector) {
|
||||||
|
source = options.layer.getSource();
|
||||||
|
}
|
||||||
|
options.colName = optOptions.colName;
|
||||||
|
|
||||||
|
var button = document.createElement('button');
|
||||||
|
var toogleHideShowInput = function() {
|
||||||
|
var input = document.querySelector('form > .search-layer-input-search');
|
||||||
|
if (hasClass(input, 'search-layer-collapsed')) {
|
||||||
|
removeClass(input, 'search-layer-collapsed');
|
||||||
|
} else {
|
||||||
|
input.value = '';
|
||||||
|
addClass(input, 'search-layer-collapsed');
|
||||||
|
horseyComponent.hide();
|
||||||
|
select.getFeatures().clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
button.addEventListener('click', toogleHideShowInput, false);
|
||||||
|
button.addEventListener('touchstart', toogleHideShowInput, false);
|
||||||
|
|
||||||
|
var form = document.createElement('form');
|
||||||
|
form.setAttribute('id', 'random');
|
||||||
|
form.onsubmit = undefined;
|
||||||
|
// form.setAttribute('action', 'javascript:void(0);');
|
||||||
|
|
||||||
|
var input = document.createElement('input');
|
||||||
|
input.setAttribute('id', 'ol-search-input');
|
||||||
|
var defaultInputClass = ['search-layer-input-search'];
|
||||||
|
if (optOptions.collapsed) {
|
||||||
|
defaultInputClass.push('search-layer-collapsed');
|
||||||
|
}
|
||||||
|
input.setAttribute('class', defaultInputClass.join(' '));
|
||||||
|
input.setAttribute('placeholder', 'Search ...');
|
||||||
|
input.setAttribute('type', 'text');
|
||||||
|
|
||||||
|
form.appendChild(input);
|
||||||
|
|
||||||
|
var element = document.createElement('div');
|
||||||
|
element.className = 'search-layer ol-unselectable ol-control';
|
||||||
|
|
||||||
|
element.appendChild(button);
|
||||||
|
element.appendChild(form);
|
||||||
|
|
||||||
|
ol.control.Control.call(this, {
|
||||||
|
element: element,
|
||||||
|
target: options.target
|
||||||
|
});
|
||||||
|
|
||||||
|
select = new ol.interaction.Select({
|
||||||
|
id: options.selectId || 'defaultSearchLayer',
|
||||||
|
layers: [options.layer],
|
||||||
|
condition: ol.events.condition.never
|
||||||
|
});
|
||||||
|
|
||||||
|
var map = options.map;
|
||||||
|
|
||||||
|
map.addInteraction(select);
|
||||||
|
|
||||||
|
var typesToZoomToExtent = [
|
||||||
|
'MultiPoint',
|
||||||
|
'LineString',
|
||||||
|
'MultiLineString',
|
||||||
|
'MultiPolygon',
|
||||||
|
'Polygon'
|
||||||
|
];
|
||||||
|
|
||||||
|
var typesToZoomToCenterAndZoom = [
|
||||||
|
'Point'
|
||||||
|
];
|
||||||
|
var returnHorsey = function(input, source, map, select, options) {
|
||||||
|
horsey(input, {
|
||||||
|
source: [{
|
||||||
|
list: source.getFeatures().map(function(el, i) {
|
||||||
|
if (el.getId() === undefined) {
|
||||||
|
el.setId(i);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
text: el.get(options.colName),
|
||||||
|
value: el.getId() // If GeoJSON has an id
|
||||||
|
};
|
||||||
|
})
|
||||||
|
}],
|
||||||
|
getText: 'text',
|
||||||
|
getValue: 'value',
|
||||||
|
predictNextSearch: function(info) {
|
||||||
|
var feat = source.getFeatureById(info.selection.value);
|
||||||
|
var featType = feat.getGeometry().getType();
|
||||||
|
if (typesToZoomToCenterAndZoom.indexOf(featType) !== -1) {
|
||||||
|
var newCenter = ol.extent.getCenter(feat.getGeometry().getExtent());
|
||||||
|
map.getView().setCenter(newCenter);
|
||||||
|
map.getView().setZoom(options.zoom || 12);
|
||||||
|
} else if (typesToZoomToExtent.indexOf(featType) !== -1) {
|
||||||
|
map.getView().fit(feat.getGeometry().getExtent(), map.getSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
select.getFeatures().clear();
|
||||||
|
select.getFeatures().push(feat);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (source.getState() === 'ready') {
|
||||||
|
horseyComponent = returnHorsey(input, source, map, select, options);
|
||||||
|
}
|
||||||
|
source.once('change', function(e) {
|
||||||
|
if (source.getState() === 'ready') {
|
||||||
|
horseyComponent = returnHorsey(input, source, map, select, options);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
if (Control) SearchLayer.__proto__ = Control;
|
||||||
|
SearchLayer.prototype = Object.create(Control && Control.prototype);
|
||||||
|
SearchLayer.prototype.constructor = SearchLayer;
|
||||||
|
return SearchLayer;
|
||||||
|
}(ol.control.Control));
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.search-layer{top:65px;left:.5em}.ol-touch .search-layer{top:80px}.search-layer button{background-repeat:no-repeat;background-position:center center;top:2px;left:2px}.search-layer-input-search{position:absolute;top:2px;left:32px;width:180px;padding:5px;border:1px solid #ccc;font-family:inherit;font-size:.875rem}.search-layer-collapsed{display:none}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
if (!Function.prototype.bind) {
|
||||||
|
Function.prototype.bind = function(oThis) {
|
||||||
|
if (typeof this !== 'function') {
|
||||||
|
// closest thing possible to the ECMAScript 5
|
||||||
|
// internal IsCallable function
|
||||||
|
throw new TypeError('Function#bind - not callable');
|
||||||
|
}
|
||||||
|
|
||||||
|
var aArgs = Array.prototype.slice.call(arguments, 1),
|
||||||
|
fToBind = this,
|
||||||
|
fNOP = function() {},
|
||||||
|
fBound = function() {
|
||||||
|
return fToBind.apply(this instanceof fNOP
|
||||||
|
? this
|
||||||
|
: oThis,
|
||||||
|
aArgs.concat(Array.prototype.slice.call(arguments)));
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this.prototype) {
|
||||||
|
// native functions don't have a prototype
|
||||||
|
fNOP.prototype = this.prototype;
|
||||||
|
}
|
||||||
|
fBound.prototype = new fNOP();
|
||||||
|
|
||||||
|
return fBound;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* requestAnimationFrame polyfill v1.0.0
|
||||||
|
* requires Date.now
|
||||||
|
*
|
||||||
|
* © Polyfiller 2015
|
||||||
|
* Released under the MIT license
|
||||||
|
* github.com/Polyfiller/requestAnimationFrame
|
||||||
|
*/
|
||||||
|
window.requestAnimationFrame || function (window) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
window.requestAnimationFrame = window.msRequestAnimationFrame
|
||||||
|
|| window.mozRequestAnimationFrame
|
||||||
|
|| window.webkitRequestAnimationFrame
|
||||||
|
|| function () {
|
||||||
|
|
||||||
|
var fps = 60;
|
||||||
|
var delay = 1000 / fps;
|
||||||
|
var animationStartTime = Date.now();
|
||||||
|
var previousCallTime = animationStartTime;
|
||||||
|
|
||||||
|
return function requestAnimationFrame(callback) {
|
||||||
|
|
||||||
|
var requestTime = Date.now();
|
||||||
|
var timeout = Math.max(0, delay - (requestTime - previousCallTime));
|
||||||
|
var timeToCall = requestTime + timeout;
|
||||||
|
|
||||||
|
previousCallTime = timeToCall;
|
||||||
|
|
||||||
|
return window.setTimeout(function onAnimationFrame() {
|
||||||
|
|
||||||
|
callback(timeToCall - animationStartTime);
|
||||||
|
|
||||||
|
}, timeout);
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
|
||||||
|
window.cancelAnimationFrame = window.mozCancelAnimationFrame
|
||||||
|
|| window.webkitCancelAnimationFrame
|
||||||
|
|| window.cancelRequestAnimationFrame
|
||||||
|
|| window.msCancelRequestAnimationFrame
|
||||||
|
|| window.mozCancelRequestAnimationFrame
|
||||||
|
|| window.webkitCancelRequestAnimationFrame
|
||||||
|
|| function cancelAnimationFrame(id) {
|
||||||
|
window.clearTimeout(id);
|
||||||
|
};
|
||||||
|
|
||||||
|
}(this);
|
||||||
|
|
||||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -0,0 +1,78 @@
|
|||||||
|
html, body {
|
||||||
|
height: 100%;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: small;
|
||||||
|
}
|
||||||
|
|
||||||
|
th, td {
|
||||||
|
vertical-align: top;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#map {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ol-popup {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
background-color: white;
|
||||||
|
-moz-box-shadow: 0 1px 4px rgba(0,0,0,0.2);
|
||||||
|
-webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
|
||||||
|
filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 10px;
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
bottom: 12px;
|
||||||
|
left: -50px;
|
||||||
|
height: auto;
|
||||||
|
width: auto;
|
||||||
|
min-width: 100px;
|
||||||
|
max-height:400px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ol-popup-closer {
|
||||||
|
text-decoration: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 2px;
|
||||||
|
right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ol-popup-closer:after {
|
||||||
|
content: "X";
|
||||||
|
}
|
||||||
|
|
||||||
|
.ol-attribution a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #666;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher .panel {
|
||||||
|
//border: 4px solid rgba(0,60,136,.5) !important;
|
||||||
|
//border-radius: 4px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layer-switcher {
|
||||||
|
top: 0.5em;
|
||||||
|
right: 0.5em;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#popup-content>ul>li:nth-child(even) {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
#popup-content ul {
|
||||||
|
list-style-type: none;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#popup-content li {
|
||||||
|
margin-bottom:0.25em;
|
||||||
|
}
|
||||||
@@ -0,0 +1,373 @@
|
|||||||
|
|
||||||
|
|
||||||
|
var container = document.getElementById('popup');
|
||||||
|
var content = document.getElementById('popup-content');
|
||||||
|
var closer = document.getElementById('popup-closer');
|
||||||
|
var sketch;
|
||||||
|
|
||||||
|
closer.onclick = function() {
|
||||||
|
container.style.display = 'none';
|
||||||
|
closer.blur();
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
var overlayPopup = new ol.Overlay({
|
||||||
|
element: container
|
||||||
|
});
|
||||||
|
|
||||||
|
var expandedAttribution = new ol.control.Attribution({
|
||||||
|
collapsible: false
|
||||||
|
});
|
||||||
|
|
||||||
|
var map = new ol.Map({
|
||||||
|
controls: ol.control.defaults({attribution:false}).extend([
|
||||||
|
expandedAttribution
|
||||||
|
]),
|
||||||
|
target: document.getElementById('map'),
|
||||||
|
renderer: 'canvas',
|
||||||
|
overlays: [overlayPopup],
|
||||||
|
layers: layersList,
|
||||||
|
view: new ol.View({
|
||||||
|
maxZoom: 28, minZoom: 1
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
var layerSwitcher = new ol.control.LayerSwitcher({tipLabel: "Layers"});
|
||||||
|
map.addControl(layerSwitcher);
|
||||||
|
layerSwitcher.hidePanel = function() {};
|
||||||
|
layerSwitcher.showPanel();
|
||||||
|
|
||||||
|
|
||||||
|
map.getView().fit([-5909061.403555, -3014620.642764, -5899867.325848, -3004998.250310], map.getSize());
|
||||||
|
|
||||||
|
var NO_POPUP = 0
|
||||||
|
var ALL_FIELDS = 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns either NO_POPUP, ALL_FIELDS or the name of a single field to use for
|
||||||
|
* a given layer
|
||||||
|
* @param layerList {Array} List of ol.Layer instances
|
||||||
|
* @param layer {ol.Layer} Layer to find field info about
|
||||||
|
*/
|
||||||
|
function getPopupFields(layerList, layer) {
|
||||||
|
// Determine the index that the layer will have in the popupLayers Array,
|
||||||
|
// if the layersList contains more items than popupLayers then we need to
|
||||||
|
// adjust the index to take into account the base maps group
|
||||||
|
var idx = layersList.indexOf(layer) - (layersList.length - popupLayers.length);
|
||||||
|
return popupLayers[idx];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var collection = new ol.Collection();
|
||||||
|
var featureOverlay = new ol.layer.Vector({
|
||||||
|
map: map,
|
||||||
|
source: new ol.source.Vector({
|
||||||
|
features: collection,
|
||||||
|
useSpatialIndex: false // optional, might improve performance
|
||||||
|
}),
|
||||||
|
style: [new ol.style.Style({
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
color: '#f00',
|
||||||
|
width: 1
|
||||||
|
}),
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: 'rgba(255,0,0,0.1)'
|
||||||
|
}),
|
||||||
|
})],
|
||||||
|
updateWhileAnimating: true, // optional, for instant visual feedback
|
||||||
|
updateWhileInteracting: true // optional, for instant visual feedback
|
||||||
|
});
|
||||||
|
|
||||||
|
var doHighlight = false;
|
||||||
|
var doHover = false;
|
||||||
|
|
||||||
|
var highlight;
|
||||||
|
var autolinker = new Autolinker({truncate: {length: 30, location: 'smart'}});
|
||||||
|
var onPointerMove = function(evt) {
|
||||||
|
if (!doHover && !doHighlight) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var pixel = map.getEventPixel(evt.originalEvent);
|
||||||
|
var coord = evt.coordinate;
|
||||||
|
var popupField;
|
||||||
|
var currentFeature;
|
||||||
|
var currentLayer;
|
||||||
|
var currentFeatureKeys;
|
||||||
|
var clusteredFeatures;
|
||||||
|
var popupText = '<ul>';
|
||||||
|
map.forEachFeatureAtPixel(pixel, function(feature, layer) {
|
||||||
|
// We only care about features from layers in the layersList, ignore
|
||||||
|
// any other layers which the map might contain such as the vector
|
||||||
|
// layer used by the measure tool
|
||||||
|
if (layersList.indexOf(layer) === -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var doPopup = false;
|
||||||
|
for (k in layer.get('fieldImages')) {
|
||||||
|
if (layer.get('fieldImages')[k] != "Hidden") {
|
||||||
|
doPopup = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentFeature = feature;
|
||||||
|
currentLayer = layer;
|
||||||
|
clusteredFeatures = feature.get("features");
|
||||||
|
var clusterFeature;
|
||||||
|
if (typeof clusteredFeatures !== "undefined") {
|
||||||
|
if (doPopup) {
|
||||||
|
for(var n=0; n<clusteredFeatures.length; n++) {
|
||||||
|
clusterFeature = clusteredFeatures[n];
|
||||||
|
currentFeatureKeys = clusterFeature.getKeys();
|
||||||
|
popupText += '<li><table>'
|
||||||
|
for (var i=0; i<currentFeatureKeys.length; i++) {
|
||||||
|
if (currentFeatureKeys[i] != 'geometry') {
|
||||||
|
popupField = '';
|
||||||
|
if (layer.get('fieldLabels')[currentFeatureKeys[i]] == "inline label") {
|
||||||
|
popupField += '<th>' + layer.get('fieldAliases')[currentFeatureKeys[i]] + ':</th><td>';
|
||||||
|
} else {
|
||||||
|
popupField += '<td colspan="2">';
|
||||||
|
}
|
||||||
|
if (layer.get('fieldLabels')[currentFeatureKeys[i]] == "header label") {
|
||||||
|
popupField += '<strong>' + layer.get('fieldAliases')[currentFeatureKeys[i]] + ':</strong><br />';
|
||||||
|
}
|
||||||
|
if (layer.get('fieldImages')[currentFeatureKeys[i]] != "ExternalResource") {
|
||||||
|
popupField += (clusterFeature.get(currentFeatureKeys[i]) != null ? autolinker.link(clusterFeature.get(currentFeatureKeys[i]).toLocaleString()) + '</td>' : '');
|
||||||
|
} else {
|
||||||
|
popupField += (clusterFeature.get(currentFeatureKeys[i]) != null ? '<img src="images/' + clusterFeature.get(currentFeatureKeys[i]).replace(/[\\\/:]/g, '_').trim() + '" /></td>' : '');
|
||||||
|
}
|
||||||
|
popupText += '<tr>' + popupField + '</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
popupText += '</table></li>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
currentFeatureKeys = currentFeature.getKeys();
|
||||||
|
if (doPopup) {
|
||||||
|
popupText += '<li><table>';
|
||||||
|
for (var i=0; i<currentFeatureKeys.length; i++) {
|
||||||
|
if (currentFeatureKeys[i] != 'geometry') {
|
||||||
|
popupField = '';
|
||||||
|
if (layer.get('fieldLabels')[currentFeatureKeys[i]] == "inline label") {
|
||||||
|
popupField += '<th>' + layer.get('fieldAliases')[currentFeatureKeys[i]] + ':</th><td>';
|
||||||
|
} else {
|
||||||
|
popupField += '<td colspan="2">';
|
||||||
|
}
|
||||||
|
if (layer.get('fieldLabels')[currentFeatureKeys[i]] == "header label") {
|
||||||
|
popupField += '<strong>' + layer.get('fieldAliases')[currentFeatureKeys[i]] + ':</strong><br />';
|
||||||
|
}
|
||||||
|
if (layer.get('fieldImages')[currentFeatureKeys[i]] != "ExternalResource") {
|
||||||
|
popupField += (currentFeature.get(currentFeatureKeys[i]) != null ? autolinker.link(currentFeature.get(currentFeatureKeys[i]).toLocaleString()) + '</td>' : '');
|
||||||
|
} else {
|
||||||
|
popupField += (currentFeature.get(currentFeatureKeys[i]) != null ? '<img src="images/' + currentFeature.get(currentFeatureKeys[i]).replace(/[\\\/:]/g, '_').trim() + '" /></td>' : '');
|
||||||
|
}
|
||||||
|
popupText += '<tr>' + popupField + '</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
popupText += '</table></li>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (popupText == '<ul>') {
|
||||||
|
popupText = '';
|
||||||
|
} else {
|
||||||
|
popupText += '</ul>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doHighlight) {
|
||||||
|
if (currentFeature !== highlight) {
|
||||||
|
if (highlight) {
|
||||||
|
featureOverlay.getSource().removeFeature(highlight);
|
||||||
|
}
|
||||||
|
if (currentFeature) {
|
||||||
|
var styleDefinition = currentLayer.getStyle().toString();
|
||||||
|
|
||||||
|
if (currentFeature.getGeometry().getType() == 'Point') {
|
||||||
|
var radius = styleDefinition.split('radius')[1].split(' ')[1];
|
||||||
|
|
||||||
|
highlightStyle = new ol.style.Style({
|
||||||
|
image: new ol.style.Circle({
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: "#ffff00"
|
||||||
|
}),
|
||||||
|
radius: radius
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else if (currentFeature.getGeometry().getType() == 'LineString') {
|
||||||
|
|
||||||
|
var featureWidth = styleDefinition.split('width')[1].split(' ')[1].replace('})','');
|
||||||
|
|
||||||
|
highlightStyle = new ol.style.Style({
|
||||||
|
stroke: new ol.style.Stroke({
|
||||||
|
color: '#ffff00',
|
||||||
|
lineDash: null,
|
||||||
|
width: featureWidth
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
highlightStyle = new ol.style.Style({
|
||||||
|
fill: new ol.style.Fill({
|
||||||
|
color: '#ffff00'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
featureOverlay.getSource().addFeature(currentFeature);
|
||||||
|
featureOverlay.setStyle(highlightStyle);
|
||||||
|
}
|
||||||
|
highlight = currentFeature;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doHover) {
|
||||||
|
if (popupText) {
|
||||||
|
overlayPopup.setPosition(coord);
|
||||||
|
content.innerHTML = popupText;
|
||||||
|
container.style.display = 'block';
|
||||||
|
} else {
|
||||||
|
container.style.display = 'none';
|
||||||
|
closer.blur();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var onSingleClick = function(evt) {
|
||||||
|
if (doHover) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (sketch) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var pixel = map.getEventPixel(evt.originalEvent);
|
||||||
|
var coord = evt.coordinate;
|
||||||
|
var popupField;
|
||||||
|
var currentFeature;
|
||||||
|
var currentFeatureKeys;
|
||||||
|
var clusteredFeatures;
|
||||||
|
var popupText = '<ul>';
|
||||||
|
map.forEachFeatureAtPixel(pixel, function(feature, layer) {
|
||||||
|
if (feature instanceof ol.Feature && (layer.get("interactive") || layer.get("interactive") == undefined)) {
|
||||||
|
var doPopup = false;
|
||||||
|
for (k in layer.get('fieldImages')) {
|
||||||
|
if (layer.get('fieldImages')[k] != "Hidden") {
|
||||||
|
doPopup = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentFeature = feature;
|
||||||
|
clusteredFeatures = feature.get("features");
|
||||||
|
var clusterFeature;
|
||||||
|
if (typeof clusteredFeatures !== "undefined") {
|
||||||
|
if (doPopup) {
|
||||||
|
for(var n=0; n<clusteredFeatures.length; n++) {
|
||||||
|
clusterFeature = clusteredFeatures[n];
|
||||||
|
currentFeatureKeys = clusterFeature.getKeys();
|
||||||
|
popupText += '<li><table>'
|
||||||
|
for (var i=0; i<currentFeatureKeys.length; i++) {
|
||||||
|
if (currentFeatureKeys[i] != 'geometry') {
|
||||||
|
popupField = '';
|
||||||
|
if (layer.get('fieldLabels')[currentFeatureKeys[i]] == "inline label") {
|
||||||
|
popupField += '<th>' + layer.get('fieldAliases')[currentFeatureKeys[i]] + ':</th><td>';
|
||||||
|
} else {
|
||||||
|
popupField += '<td colspan="2">';
|
||||||
|
}
|
||||||
|
if (layer.get('fieldLabels')[currentFeatureKeys[i]] == "header label") {
|
||||||
|
popupField += '<strong>' + layer.get('fieldAliases')[currentFeatureKeys[i]] + ':</strong><br />';
|
||||||
|
}
|
||||||
|
if (layer.get('fieldImages')[currentFeatureKeys[i]] != "ExternalResource") {
|
||||||
|
popupField += (clusterFeature.get(currentFeatureKeys[i]) != null ? autolinker.link(clusterFeature.get(currentFeatureKeys[i]).toLocaleString()) + '</td>' : '');
|
||||||
|
} else {
|
||||||
|
popupField += (clusterFeature.get(currentFeatureKeys[i]) != null ? '<img src="images/' + clusterFeature.get(currentFeatureKeys[i]).replace(/[\\\/:]/g, '_').trim() + '" /></td>' : '');
|
||||||
|
}
|
||||||
|
popupText += '<tr>' + popupField + '</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
popupText += '</table></li>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
currentFeatureKeys = currentFeature.getKeys();
|
||||||
|
if (doPopup) {
|
||||||
|
popupText += '<li><table>';
|
||||||
|
for (var i=0; i<currentFeatureKeys.length; i++) {
|
||||||
|
if (currentFeatureKeys[i] != 'geometry') {
|
||||||
|
popupField = '';
|
||||||
|
if (layer.get('fieldLabels')[currentFeatureKeys[i]] == "inline label") {
|
||||||
|
popupField += '<th>' + layer.get('fieldAliases')[currentFeatureKeys[i]] + ':</th><td>';
|
||||||
|
} else {
|
||||||
|
popupField += '<td colspan="2">';
|
||||||
|
}
|
||||||
|
if (layer.get('fieldLabels')[currentFeatureKeys[i]] == "header label") {
|
||||||
|
popupField += '<strong>' + layer.get('fieldAliases')[currentFeatureKeys[i]] + ':</strong><br />';
|
||||||
|
}
|
||||||
|
if (layer.get('fieldImages')[currentFeatureKeys[i]] != "ExternalResource") {
|
||||||
|
popupField += (currentFeature.get(currentFeatureKeys[i]) != null ? autolinker.link(currentFeature.get(currentFeatureKeys[i]).toLocaleString()) + '</td>' : '');
|
||||||
|
} else {
|
||||||
|
popupField += (currentFeature.get(currentFeatureKeys[i]) != null ? '<img src="images/' + currentFeature.get(currentFeatureKeys[i]).replace(/[\\\/:]/g, '_').trim() + '" /></td>' : '');
|
||||||
|
}
|
||||||
|
popupText += '<tr>' + popupField + '</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
popupText += '</table>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (popupText == '<ul>') {
|
||||||
|
popupText = '';
|
||||||
|
} else {
|
||||||
|
popupText += '</ul>';
|
||||||
|
}
|
||||||
|
|
||||||
|
var viewProjection = map.getView().getProjection();
|
||||||
|
var viewResolution = map.getView().getResolution();
|
||||||
|
for (i = 0; i < wms_layers.length; i++) {
|
||||||
|
if (wms_layers[i][1]) {
|
||||||
|
var url = wms_layers[i][0].getSource().getGetFeatureInfoUrl(
|
||||||
|
evt.coordinate, viewResolution, viewProjection,
|
||||||
|
{
|
||||||
|
'INFO_FORMAT': 'text/html',
|
||||||
|
});
|
||||||
|
if (url) {
|
||||||
|
popupText = popupText + '<iframe style="width:100%;height:110px;border:0px;" id="iframe" seamless src="' + url + '"></iframe>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (popupText) {
|
||||||
|
overlayPopup.setPosition(coord);
|
||||||
|
content.innerHTML = popupText;
|
||||||
|
container.style.display = 'block';
|
||||||
|
} else {
|
||||||
|
container.style.display = 'none';
|
||||||
|
closer.blur();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
map.on('pointermove', function(evt) {
|
||||||
|
onPointerMove(evt);
|
||||||
|
});
|
||||||
|
map.on('singleclick', function(evt) {
|
||||||
|
onSingleClick(evt);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var attributionComplete = false;
|
||||||
|
map.on("rendercomplete", function(evt) {
|
||||||
|
if (!attributionComplete) {
|
||||||
|
var attribution = document.getElementsByClassName('ol-attribution')[0];
|
||||||
|
var attributionList = attribution.getElementsByTagName('ul')[0];
|
||||||
|
var firstLayerAttribution = attributionList.getElementsByTagName('li')[0];
|
||||||
|
var qgis2webAttribution = document.createElement('li');
|
||||||
|
qgis2webAttribution.innerHTML = '<a href="https://github.com/tomchadwin/qgis2web">qgis2web</a> · ';
|
||||||
|
var olAttribution = document.createElement('li');
|
||||||
|
olAttribution.innerHTML = '<a href="https://openlayers.org/">OpenLayers</a> · ';
|
||||||
|
var qgisAttribution = document.createElement('li');
|
||||||
|
qgisAttribution.innerHTML = '<a href="https://qgis.org/">QGIS</a>';
|
||||||
|
attributionList.insertBefore(qgis2webAttribution, firstLayerAttribution);
|
||||||
|
attributionList.insertBefore(olAttribution, firstLayerAttribution);
|
||||||
|
attributionList.insertBefore(qgisAttribution, firstLayerAttribution);
|
||||||
|
attributionComplete = true;
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,765 @@
|
|||||||
|
// Aggregates
|
||||||
|
|
||||||
|
// Color
|
||||||
|
|
||||||
|
// Conditionals
|
||||||
|
|
||||||
|
// Conversions
|
||||||
|
|
||||||
|
// Custom
|
||||||
|
|
||||||
|
// Date and Time
|
||||||
|
|
||||||
|
// Fields and Values
|
||||||
|
|
||||||
|
// Fuzzy Matching
|
||||||
|
|
||||||
|
// General
|
||||||
|
|
||||||
|
// Geometry
|
||||||
|
function fnc_azimuth(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_project(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Math
|
||||||
|
function fnc_abs(values, context) {
|
||||||
|
return Math.abs(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_degrees(values, context) {
|
||||||
|
return values[0] * (180/Math.PI);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_radians(values, context) {
|
||||||
|
return values[0] * (Math.PI/180);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_sqrt(values, context) {
|
||||||
|
return Math.sqrt(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_cos(values, context) {
|
||||||
|
return Math.cos(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_sin(values, context) {
|
||||||
|
return Math.sin(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_tan(values, context) {
|
||||||
|
return Math.tan(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_asin(values, context) {
|
||||||
|
return Math.asin(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_acos(values, context) {
|
||||||
|
return Math.acos(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_atan(values, context) {
|
||||||
|
return Math.atan(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_atan2(values, context) {
|
||||||
|
return Math.atan2(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_exp(values, context) {
|
||||||
|
return Math.exp(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_ln(values, context) {
|
||||||
|
return Math.log(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_log10(values, context) {
|
||||||
|
return Math.LN10(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_log(values, context) {
|
||||||
|
return Math.log(values[0]) / Math.log(values[1]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_round(values, context) {
|
||||||
|
return Math.round(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_rand(values, context) {
|
||||||
|
return Math.floor(Math.random()*(values[1]-values[0]+1)+values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_randf(values, context) {
|
||||||
|
return Math.random()*(values[1]-values[0]+1)+values[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_max(values, context) {
|
||||||
|
return Math.max.apply(this, values);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_min(values, context) {
|
||||||
|
return Math.min.apply(this, values);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_clamp(values, context) {
|
||||||
|
return Math.min(Math.max(values[0],values[1]),values[2]);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Operators
|
||||||
|
|
||||||
|
// Record
|
||||||
|
|
||||||
|
// String
|
||||||
|
|
||||||
|
// TimeManager
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function fnc_scale_linear(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_scale_exp(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_floor(values, context) {
|
||||||
|
return Math.floor(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_ceil(values, context) {
|
||||||
|
return Math.ceil(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_pi(values, context) {
|
||||||
|
return Math.PI;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_to_int(values, context) {
|
||||||
|
var intVal = parseInt(values[0],10);
|
||||||
|
if ( isNaN(intVal) ) { return false };
|
||||||
|
return intVal;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_to_real(values, context) {
|
||||||
|
var realVal = parseFloat(values[0]);
|
||||||
|
if ( isNaN(realVal) ) { return false };
|
||||||
|
return realVal;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_to_string(values, context) {
|
||||||
|
return String(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_to_datetime(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_to_date(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_to_time(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_to_interval(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_coalesce(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_if(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_aggregate(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_relation_aggregate(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_count(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_count_distinct(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_count_missing(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_minimum(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_maximum(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_sum(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_mean(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_median(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_stdev(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_range(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_minority(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_majority(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_q1(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_q3(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_iqr(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_min_length(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_max_length(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_concatenate(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_regexp_match(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_now(values, context) {
|
||||||
|
return new Date().toISOString();
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_age(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_year(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_month(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_week(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_day(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_hour(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_minute(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_second(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_day_of_week(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_lower(values, context) {
|
||||||
|
if ( typeof values[0] != "string" ) { return false; }
|
||||||
|
return values[0].toLowerCase();
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_upper(values, context) {
|
||||||
|
if ( typeof values[0] != "string" ) { return false; }
|
||||||
|
return values[0].toUpperCase();
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_title(values, context) {
|
||||||
|
if ( typeof values[0] != "string" ) { return false; }
|
||||||
|
return values[0].toLowerCase().split(' ').map(function(word) {
|
||||||
|
return (word.charAt(0).toUpperCase() + word.slice(1));
|
||||||
|
}).join(' ');
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_trim(values, context) {
|
||||||
|
if ( typeof values[0] != "string" ) { return false; }
|
||||||
|
return String(values[0]).trim();
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_levenshtein(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_longest_common_substring(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_hamming_distance(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_soundex(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_char(values, context) {
|
||||||
|
if ( isNaN(values[0]) || !values[0]) { return null; } return String.fromCodePoint(values[0]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_wordwrap(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_length(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_replace(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_regexp_replace(values, context) {
|
||||||
|
if ( !values[0] ) { return null; } return String(values[0]).replace(RegExp(values[1]),values[2]);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_regexp_substr(values, context) {
|
||||||
|
if ( !values[0] ) { return null; }
|
||||||
|
return String(values[0]).match(RegExp(values[1]))[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_substr(values, context) {
|
||||||
|
var length = values[2]
|
||||||
|
if ( !values[0] || isNaN(values[1])) { return false; }
|
||||||
|
return String(values[0]).substr(values[1], length);
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_concat(values, context) {
|
||||||
|
return values.join('');
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_strpos(values, context) {
|
||||||
|
if (!values[0] || !values[1]) {return null}
|
||||||
|
return String(values[0]).indexOf(String(values[1]))+1;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_left(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_right(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_rpad(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_lpad(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_format(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_format_number(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_format_date(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_color_rgb(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_color_rgba(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_ramp_color(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_color_hsl(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_color_hsla(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_color_hsv(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_color_hsva(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_color_cmyk(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_color_cmyka(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_color_part(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_darker(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_lighter(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_set_color_part(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_area(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_perimeter(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_x(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_y(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_z(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_m(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_point_n(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_start_point(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_end_point(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_nodes_to_points(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_segments_to_lines(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_make_point(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_make_point_m(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_make_line(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_make_polygon(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_x_min(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_x_max(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_y_min(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_y_max(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_geom_from_wkt(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_geom_from_gml(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_relate(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_intersects_bbox(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_disjoint(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_intersects(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_touches(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_crosses(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_contains(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_overlaps(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_within(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_translate(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_buffer(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_centroid(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_point_on_surface(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_reverse(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_exterior_ring(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_interior_ring_n(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_geometry_n(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_boundary(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_line_merge(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_bounds(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_num_points(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_num_interior_rings(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_num_rings(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_num_geometries(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_bounds_width(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_bounds_height(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_is_closed(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_convex_hull(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_difference(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_distance(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_intersection(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_sym_difference(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_combine(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_union(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_geom_to_wkt(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_geometry(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_transform(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_extrude(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_order_parts(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_closest_point(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_shortest_line(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_line_interpolate_point(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_line_interpolate_angle(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_line_locate_point(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_angle_at_vertex(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_distance_to_vertex(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_uuid(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_get_feature(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_layer_property(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_var(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_eval(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_attribute(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc__specialcol_(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function fnc_project_color(values, context) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
@@ -0,0 +1,725 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
/*
|
||||||
|
| tail.datetime - The vanilla way to select dates and times!
|
||||||
|
| @file ./less/tail.datetime-harx-light.less
|
||||||
|
| @author SamBrishes <sam@pytes.net>
|
||||||
|
| @version 0.4.14 - Beta
|
||||||
|
|
|
||||||
|
| @website https://github.com/pytesNET/tail.DateTime
|
||||||
|
| @license X11 / MIT License
|
||||||
|
| @copyright Copyright © 2018 - 2019 SamBrishes, pytesNET <info@pytes.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @start MAIN CALENDAR */
|
||||||
|
.tail-datetime-calendar, .tail-datetime-calendar *, .tail-datetime-calendar *:before,
|
||||||
|
.tail-datetime-calendar *:after{
|
||||||
|
box-sizing: border-box;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar{
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 360px;
|
||||||
|
height: auto;
|
||||||
|
margin: 15px;
|
||||||
|
padding: 0;
|
||||||
|
z-index: 3000;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
visibility: hidden;
|
||||||
|
direction: ltr;
|
||||||
|
border-collapse: separate;
|
||||||
|
font-family: "Open Sans", Calibri, Arial, sans-serif;
|
||||||
|
background-color: white;
|
||||||
|
border-width: 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 2px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 2px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar:after{
|
||||||
|
clear: both;
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
font-size: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.calendar-static{
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
position: static;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar button.calendar-close{
|
||||||
|
top: 100%;
|
||||||
|
right: 15px;
|
||||||
|
color: #303438;
|
||||||
|
width: 35px;
|
||||||
|
height: 25px;
|
||||||
|
margin: 1px 0 0 0;
|
||||||
|
padding: 5px 10px;
|
||||||
|
opacity: 0.5;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.125em;
|
||||||
|
text-shadow: none;
|
||||||
|
border: 0;
|
||||||
|
outline: none;
|
||||||
|
background-color: white;
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z\
|
||||||
|
dmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2Ij48cGF0aCBmaWxsPSIjMzAzNDM4IiB\
|
||||||
|
kPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNz\
|
||||||
|
cgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPg==");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
border-width: 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 0 0 3px 3px;
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 2px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 2px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
transition: opacity 142ms linear;
|
||||||
|
-webkit-transition: opacity 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar button.calendar-close:hover{
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
/* @end MAIN CALENDAR */
|
||||||
|
|
||||||
|
/* @start CALENDAR TOOLTIP */
|
||||||
|
.tail-datetime-calendar .calendar-tooltip{
|
||||||
|
color: white;
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
background-color: #303438;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-tooltip:before{
|
||||||
|
top: -7px;
|
||||||
|
left: 50%;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
margin: 0 0 0 -6px;
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
border-width: 0 7px 7px 7px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent transparent #303438 transparent;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-tooltip .tooltip-inner{
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px 7px;
|
||||||
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 14px;
|
||||||
|
}
|
||||||
|
/* @end CALENDAR TOOLTIP */
|
||||||
|
|
||||||
|
/* @start CALENDAR ACTIONs */
|
||||||
|
.tail-datetime-calendar .calendar-actions{
|
||||||
|
color: #303438;
|
||||||
|
width: 100%;
|
||||||
|
height: 36px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: table;
|
||||||
|
overflow: hidden;
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: separate;
|
||||||
|
background-color: white;
|
||||||
|
border-width: 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 3px 3px 0 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
opacity: 0.5;
|
||||||
|
display: table-cell;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40px;
|
||||||
|
text-shadow: none;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
transition: opacity 142ms linear, background 142ms linear;
|
||||||
|
-webkit-transition: opacity 142ms linear, background 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span[data-action]{
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action{
|
||||||
|
width: 50px;
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.label{
|
||||||
|
width: auto;
|
||||||
|
opacity: 1;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:first-child{
|
||||||
|
border-radius: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:last-child{
|
||||||
|
border-radius: 0 4px 0 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:first-child:before,
|
||||||
|
.tail-datetime-calendar .calendar-actions span:last-child:before{
|
||||||
|
top: 5px;
|
||||||
|
bottom: 5px;
|
||||||
|
width: 1px;
|
||||||
|
height: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
background-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:first-child:before{
|
||||||
|
right: -1px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:last-child:before{
|
||||||
|
left: -1px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span:first-child:hover:before,
|
||||||
|
.tail-datetime-calendar .calendar-actions span:last-child:hover:before{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span[data-action]:hover{
|
||||||
|
opacity: 0.95;
|
||||||
|
background-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action-prev{
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zd\
|
||||||
|
mciIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgNiAxNiI+PHBhdGggZD0iTTYgMkwwIDhsNiA2VjJ6\
|
||||||
|
Ii8+PC9zdmc+");
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action-next{
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z\
|
||||||
|
dmciIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgNiAxNiI+PHBhdGggZD0iTTAgMTRsNi02LTYtNnY\
|
||||||
|
xMnoiLz48L3N2Zz4=");
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action-submit{
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z\
|
||||||
|
dmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2Ij48cGF0aCBkPSJNMTIgNWwtOCA4LTQ\
|
||||||
|
tNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPg==");
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-actions span.action-cancel{
|
||||||
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z\
|
||||||
|
dmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2Ij48cGF0aCBmaWxsPSIjMzAzNDM4IiB\
|
||||||
|
kPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNz\
|
||||||
|
cgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPg==");
|
||||||
|
}
|
||||||
|
/* @end CALENDAR ACTIONs */
|
||||||
|
|
||||||
|
/* @start CALENDAR DATEPICKER */
|
||||||
|
.tail-datetime-calendar .calendar-datepicker{
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 0 15px 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker:after{
|
||||||
|
top: -1px;
|
||||||
|
left: 10px;
|
||||||
|
right: 10px;
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
border-width: 1px 0 0 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table{
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border-spacing: 1px;
|
||||||
|
border-collapse: separate;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr th,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td{
|
||||||
|
color: #303438;
|
||||||
|
width: 50px;
|
||||||
|
height: 35px;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
font-size: 13px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: normal;
|
||||||
|
text-shadow: none;
|
||||||
|
line-height: 30px;
|
||||||
|
background-color: transparent;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td{
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td span.inner{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-disabled{
|
||||||
|
cursor: not-allowed;
|
||||||
|
color: #A0A4A8;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-disabled:after{
|
||||||
|
color: #A0A4A8;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 49px;
|
||||||
|
height: 35px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
content: "✕";
|
||||||
|
opacity: 0.25;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
font-size: 30px;
|
||||||
|
line-height: 35px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-previous,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-next{
|
||||||
|
color: #808488;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-today:before,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td .tooltip-tick{
|
||||||
|
top: 5px;
|
||||||
|
width: 5px;
|
||||||
|
height: 5px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
z-index: 20;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
border-width: 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-today:before{
|
||||||
|
left: 5px;
|
||||||
|
background-color: #32B93C;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td .tooltip-tick{
|
||||||
|
right: 5px;
|
||||||
|
background-color: #303438;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-select.date-today:before,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.date-select .tooltip-tick{
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td .tooltip-tick:before,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td .tooltip-tick:after{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade{
|
||||||
|
width: 14.28571429%;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade:hover{
|
||||||
|
border-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day.date-disabled:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month.date-disabled:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year.date-disabled:hover,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade.date-disabled:hover{
|
||||||
|
border-color: white;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day.date-today,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month.date-today,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year.date-today,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade.date-today{
|
||||||
|
color: #32B93C;
|
||||||
|
border-color: #32B93C;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day.date-select,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month.date-select,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year.date-select,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade.date-select{
|
||||||
|
border-color: #149BE6;
|
||||||
|
background-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day.date-select span,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month.date-select span,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year.date-select span,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade.date-select span{
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-day span.inner,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-month span.inner,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year span.inner,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade span.inner{
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-year,
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade{
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-datepicker table tr td.calendar-decade span.inner{
|
||||||
|
height: 54px;
|
||||||
|
padding: 7px 15px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
/* @end CALENDAR DATEPICKER */
|
||||||
|
|
||||||
|
/* @start CALENDAR TIMEPICKER */
|
||||||
|
.tail-datetime-calendar .calendar-timepicker{
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
border-top: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker:after{
|
||||||
|
top: -1px;
|
||||||
|
left: 10px;
|
||||||
|
right: 10px;
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
border-width: 1px 0 0 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field{
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 20px 10px 10px 10px;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field:first-of-type{
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field:last-of-type{
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input[type="text"]{
|
||||||
|
color: #606468;
|
||||||
|
width: 75px;
|
||||||
|
height: 35px;
|
||||||
|
margin: 0;
|
||||||
|
z-index: 4;
|
||||||
|
padding: 3px 20px 3px 5px;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: center;
|
||||||
|
appearance: textfield;
|
||||||
|
-moz-appearance: textfield;
|
||||||
|
-webkit-appearance: textfield;
|
||||||
|
background-color: white;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #E0E0E0;
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: none;
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
transition: color 142ms linear, border 142ms linear, background 142ms linear;
|
||||||
|
-webkit-transition: color 142ms linear, border 142ms linear, background 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input[type="text"]:hover{
|
||||||
|
color: #404448;
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input[type="text"]:focus{
|
||||||
|
color: #303438;
|
||||||
|
border-color: #149BE6;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input[type="text"]:disabled{
|
||||||
|
cursor: not-allowed;
|
||||||
|
color: #A0A4A8;
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step{
|
||||||
|
right: 11px;
|
||||||
|
width: 20px;
|
||||||
|
height: 17px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
z-index: 15;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
background-color: white;
|
||||||
|
box-shadow: none;
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
transition: border 142ms linear, background 142ms linear;
|
||||||
|
-webkit-transition: border 142ms linear, background 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step:before{
|
||||||
|
top: 5px;
|
||||||
|
left: 50%;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
margin: 0 0 0 -3px;
|
||||||
|
padding: 0;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
transition: border 142ms linear;
|
||||||
|
-webkit-transition: border 142ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-up{
|
||||||
|
top: 21px;
|
||||||
|
border-width: 0 0 1px 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #E0E0E0;
|
||||||
|
border-radius: 0 2px 0 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-up:hover{
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-up:before{
|
||||||
|
border-width: 0 4px 5px 4px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent transparent #606468 transparent;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-down{
|
||||||
|
top: 37px;
|
||||||
|
border-width: 1px 0 0 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #E0E0E0;
|
||||||
|
border-radius: 0 0 2px 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-down:hover{
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field button.picker-step.step-down:before{
|
||||||
|
border-width: 5px 4px 0 4px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #606468 transparent transparent transparent;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button.step-up{
|
||||||
|
border-color: #149BE6;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button.step-up:before{
|
||||||
|
border-bottom-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button.step-up:hover{
|
||||||
|
color: white;
|
||||||
|
background-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button.step-up:hover:before{
|
||||||
|
border-bottom-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button + button.step-down{
|
||||||
|
border-color: #149BE6;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button + button.step-down:before{
|
||||||
|
border-top-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button + button.step-down:hover{
|
||||||
|
color: white;
|
||||||
|
background-color: #149BE6;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:focus + button + button.step-down:hover:before{
|
||||||
|
border-top-color: white;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button.step-up{
|
||||||
|
cursor: not-allowed;
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button.step-up:hover{
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button.step-up:before{
|
||||||
|
border-bottom-color: #A0A4A8;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button + button.step-down{
|
||||||
|
cursor: not-allowed;
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button + button.step-down:hover{
|
||||||
|
border-color: #D0D0D0;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field input:disabled + button + button.step-down:before{
|
||||||
|
border-top-color: #A0A4A8;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker .timepicker-field label{
|
||||||
|
color: #606468;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch{
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0 0 -8px 0;
|
||||||
|
padding: 15px 0 0 0;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch:before,
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch:after{
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 5px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 16px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch:before{
|
||||||
|
content: attr(data-am);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch:after{
|
||||||
|
content: attr(data-pm);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"]{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"] + span{
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"] + span:before{
|
||||||
|
width: 50px;
|
||||||
|
height: 16px;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #149BE6;
|
||||||
|
border-radius: 14px;
|
||||||
|
transition: border 284ms linear;
|
||||||
|
-webkit-transition: border 284ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"] + span:after{
|
||||||
|
top: 3px;
|
||||||
|
left: 4px;
|
||||||
|
right: 30px;
|
||||||
|
width: auto;
|
||||||
|
height: 10px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
background-color: #149BE6;
|
||||||
|
border-radius: 15px;
|
||||||
|
vertical-align: top;
|
||||||
|
transition: left 284ms linear, right 284ms linear 284ms, background 284ms linear;
|
||||||
|
-webkit-transition: left 284ms linear, right 284ms linear 284ms, background 284ms linear;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"]:checked + span:before{
|
||||||
|
border-color: #32B93C;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar .calendar-timepicker label.timepicker-switch input[type="checkbox"]:checked + span:after{
|
||||||
|
left: 30px;
|
||||||
|
right: 4px;
|
||||||
|
background-color: #32B93C;
|
||||||
|
transition: right 284ms linear, left 284ms linear 284ms, background 284ms linear;
|
||||||
|
-webkit-transition: right 284ms linear, left 284ms linear 284ms, background 284ms linear;
|
||||||
|
}
|
||||||
|
/* @end CALENDAR TIMEPICKER */
|
||||||
|
|
||||||
|
/* @start RTL */
|
||||||
|
.tail-datetime-calendar.rtl{
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-actions span.action-next,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-actions span.action-prev{
|
||||||
|
transform: rotate(180deg);
|
||||||
|
-moz-transform: rotate(180deg);
|
||||||
|
-webkit-transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.date-disabled:after{
|
||||||
|
right: 3px;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
-moz-transform: rotate(45deg);
|
||||||
|
-webkit-transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.date-today:before{
|
||||||
|
right: 5px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td .tooltip-tick{
|
||||||
|
left: 5px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-month.date-today:before,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-year.date-today:before,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade.date-today:before{
|
||||||
|
right: 50%;
|
||||||
|
margin-right: -2.5px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-month:hover span.inner:before,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-year:hover span.inner:before,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade:hover span.inner:before{
|
||||||
|
right: 6px;
|
||||||
|
border-right-color: #cccccc;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-month span.inner:after,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-year span.inner:after,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade span.inner:after{
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-month:hover span.inner:after,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-year:hover span.inner:after,
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade:hover span.inner:after{
|
||||||
|
left: 6px;
|
||||||
|
border-left-color: #cccccc;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-datepicker table tr td.calendar-decade span.inner{
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-timepicker .timepicker-field:first-child{
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 25px;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-timepicker .timepicker-field:last-child{
|
||||||
|
text-align: right;
|
||||||
|
padding-left: 25px;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-timepicker .timepicker-field:first-child input[type="text"]{
|
||||||
|
margin-left: -1px;
|
||||||
|
margin-right: 0;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
}
|
||||||
|
.tail-datetime-calendar.rtl .calendar-timepicker .timepicker-field:last-child input[type="text"]{
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: -1px;
|
||||||
|
border-radius: 3px 0 0 3px;
|
||||||
|
}
|
||||||
|
/* @end RTL */
|
||||||
|
|
||||||
|
/*# sourceMappingURL=tail.datetime-harx-light.map */
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
var size = 0;
|
||||||
|
var placement = 'point';
|
||||||
|
|
||||||
|
var style_curvasdenivel5m_2 = function(feature, resolution){
|
||||||
|
var context = {
|
||||||
|
feature: feature,
|
||||||
|
variables: {}
|
||||||
|
};
|
||||||
|
var value = ""
|
||||||
|
var labelText = "";
|
||||||
|
size = 0;
|
||||||
|
var labelFont = "10px, sans-serif";
|
||||||
|
var labelFill = "#000000";
|
||||||
|
var bufferColor = "";
|
||||||
|
var bufferWidth = 0;
|
||||||
|
var textAlign = "left";
|
||||||
|
var offsetX = 8;
|
||||||
|
var offsetY = 3;
|
||||||
|
var placement = 'line';
|
||||||
|
if ("" !== null) {
|
||||||
|
labelText = String("");
|
||||||
|
}
|
||||||
|
var style = [ new ol.style.Style({
|
||||||
|
stroke: new ol.style.Stroke({color: 'rgba(190,178,151,1.0)', lineDash: null, lineCap: 'square', lineJoin: 'bevel', width: 0}),
|
||||||
|
text: createTextStyle(feature, resolution, labelText, labelFont,
|
||||||
|
labelFill, placement, bufferColor,
|
||||||
|
bufferWidth)
|
||||||
|
})];
|
||||||
|
|
||||||
|
return style;
|
||||||
|
};
|
||||||
Arquivo binário não exibido.
|
Depois Largura: | Altura: | Tamanho: 105 B |
Arquivo binário não exibido.
|
Depois Largura: | Altura: | Tamanho: 255 B |
Arquivo binário não exibido.
|
Depois Largura: | Altura: | Tamanho: 105 B |
@@ -0,0 +1,32 @@
|
|||||||
|
var size = 0;
|
||||||
|
var placement = 'point';
|
||||||
|
|
||||||
|
var style_pontos_3 = function(feature, resolution){
|
||||||
|
var context = {
|
||||||
|
feature: feature,
|
||||||
|
variables: {}
|
||||||
|
};
|
||||||
|
var value = ""
|
||||||
|
var labelText = "";
|
||||||
|
size = 0;
|
||||||
|
var labelFont = "10px, sans-serif";
|
||||||
|
var labelFill = "#000000";
|
||||||
|
var bufferColor = "";
|
||||||
|
var bufferWidth = 0;
|
||||||
|
var textAlign = "left";
|
||||||
|
var offsetX = 8;
|
||||||
|
var offsetY = 3;
|
||||||
|
var placement = 'point';
|
||||||
|
if ("" !== null) {
|
||||||
|
labelText = String("");
|
||||||
|
}
|
||||||
|
var style = [ new ol.style.Style({
|
||||||
|
image: new ol.style.Circle({radius: 4.0 + size,
|
||||||
|
stroke: new ol.style.Stroke({color: 'rgba(35,35,35,1.0)', lineDash: null, lineCap: 'butt', lineJoin: 'miter', width: 0}), fill: new ol.style.Fill({color: 'rgba(196,60,57,1.0)'})}),
|
||||||
|
text: createTextStyle(feature, resolution, labelText, labelFont,
|
||||||
|
labelFill, placement, bufferColor,
|
||||||
|
bufferWidth)
|
||||||
|
})];
|
||||||
|
|
||||||
|
return style;
|
||||||
|
};
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
var size = 0;
|
||||||
|
var placement = 'point';
|
||||||
|
|
||||||
|
var style_rioss_4 = function(feature, resolution){
|
||||||
|
var context = {
|
||||||
|
feature: feature,
|
||||||
|
variables: {}
|
||||||
|
};
|
||||||
|
var value = ""
|
||||||
|
var labelText = "";
|
||||||
|
size = 0;
|
||||||
|
var labelFont = "10px, sans-serif";
|
||||||
|
var labelFill = "#000000";
|
||||||
|
var bufferColor = "";
|
||||||
|
var bufferWidth = 0;
|
||||||
|
var textAlign = "left";
|
||||||
|
var offsetX = 8;
|
||||||
|
var offsetY = 3;
|
||||||
|
var placement = 'line';
|
||||||
|
if ("" !== null) {
|
||||||
|
labelText = String("");
|
||||||
|
}
|
||||||
|
var style = [ new ol.style.Style({
|
||||||
|
stroke: new ol.style.Stroke({color: 'rgba(62,16,228,1.0)', lineDash: null, lineCap: 'square', lineJoin: 'bevel', width: 0}),
|
||||||
|
text: createTextStyle(feature, resolution, labelText, labelFont,
|
||||||
|
labelFill, placement, bufferColor,
|
||||||
|
bufferWidth)
|
||||||
|
})];
|
||||||
|
|
||||||
|
return style;
|
||||||
|
};
|
||||||
Arquivo binário não exibido.
Arquivo binário não exibido.
+36
-35
@@ -31,7 +31,7 @@ if($_FILES["zip_file"]["name"]) {
|
|||||||
|
|
||||||
$continue = strtolower($name[1]) == 'zip' ? true : false;
|
$continue = strtolower($name[1]) == 'zip' ? true : false;
|
||||||
if(!$continue) {
|
if(!$continue) {
|
||||||
$message = "The file you are trying to upload is not a .zip file. Please try again.";
|
$message = "Este arquvo não é um .zip";
|
||||||
}
|
}
|
||||||
|
|
||||||
$path = dirname(__FILE__).'/';
|
$path = dirname(__FILE__).'/';
|
||||||
@@ -79,12 +79,21 @@ if (isset($_GET['dado'])){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_GET['editar'])){
|
if (isset($_POST['edit_id'])){
|
||||||
$id_dado_edit = $_GET['editar'];
|
$id_dado_edit = $_POST['edit_id'];
|
||||||
$mapas_edit = pg_query($dbcon, "SELECT * FROM mapas where id = '".$id_dado_edit."'");
|
$edit_nome = $_POST['edit_nome'];
|
||||||
|
$edit_descricao = $_POST['edit_descricao'];
|
||||||
|
$edit_status = $_POST['edit_status'];
|
||||||
|
$edit_codigo_cadastro = $_POST['edit_codigo_cadastro'];
|
||||||
|
|
||||||
|
$update = pg_query($dbcon, "UPDATE mapas SET nome = '" . $edit_nome . "', descricao = '" . $edit_descricao . "', status = '" . $edit_status . "', codigo = '" . $edit_codigo_cadastro . "' where id = '".$id_dado_edit."'");
|
||||||
|
$message = "Sucesso!!!";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$message = "Erro!!!";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
function delTree($dir) {
|
function delTree($dir) {
|
||||||
$files = array_diff(scandir($dir), array('.','..'));
|
$files = array_diff(scandir($dir), array('.','..'));
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
@@ -231,25 +240,25 @@ function deletemapa($id_dado){
|
|||||||
<div id="editModal" class="modal fade">
|
<div id="editModal" class="modal fade">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<form enctype="multipart/form-data" method="post" id="edit_id">
|
<form enctype="multipart/form-data" method="post" action="">
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
<input type="text" class="form-control" name="edit_id" id="edit_id" style="display: none;" >
|
||||||
<input type="text" class="form-control" name="edit_nome" id="edit_nome" placeholder="Nome" >
|
<input type="text" class="form-control" name="edit_nome" id="edit_nome" placeholder="Nome" >
|
||||||
<p></p>
|
<p></p>
|
||||||
<textarea type="text" class="form-control" name="edit_descricao" id="edit_descricao" placeholder="Descrição" ></textarea>
|
<textarea type="text" class="form-control" name="edit_descricao" id="edit_descricao" placeholder="Descrição" ></textarea>
|
||||||
<p></p>
|
<p></p>
|
||||||
<input type="file" class="form-control" name="edit_zip_file" required />
|
<!--<input type="file" class="form-control" name="edit_zip_file" required />
|
||||||
<p></p>
|
<p></p>-->
|
||||||
<select class="form-control" name="edit_status" id="edit_status">
|
<select class="form-control" name="edit_status" id="edit_status" onchange="habilitar_edit(this.value)">
|
||||||
<option value="1">Público</option>
|
<option value="1">Público</option>
|
||||||
<option value="2">Privado</option>
|
<option value="2">Privado</option>
|
||||||
</select>
|
</select>
|
||||||
<p></p>
|
<p></p>
|
||||||
<input type="text" class="form-control" id="edit_codigo" name="edit_codigo_cadastro" placeholder="Código" disabled="">
|
<input type="text" class="form-control" id="edit_codigo" name="edit_codigo_cadastro" placeholder="Código" disabled="">
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<input type="button" class="btn btn-default" data-dismiss="modal" value="Cancelar">
|
<input type="button" class="btn btn-default" data-dismiss="modal" value="Cancelar">
|
||||||
<input type="submit" name ="submit" class="btn btn-success" value="salvar">
|
<input type="submit" name ="submit" class="btn btn-success" value="Editar">
|
||||||
</div>
|
</div>
|
||||||
<br><br><br>
|
<br><br><br>
|
||||||
|
|
||||||
@@ -257,28 +266,6 @@ function deletemapa($id_dado){
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--
|
|
||||||
<div id="deleteEmployeeModal" class="modal fade">
|
|
||||||
<div class="modal-dialog">
|
|
||||||
<div class="modal-content">
|
|
||||||
<form>
|
|
||||||
<div class="modal-header">
|
|
||||||
<h4 class="modal-title">Deletar Mapa</h4>
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<p>Você tem certeza que deseja deletar esse Mapa?</p>
|
|
||||||
<p class="text-warning"><small>Essa ação não pode ser revertida.</small></p>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<input type="button" class="btn btn-default" data-dismiss="modal" value="Cancel">
|
|
||||||
<input type="submit" id="deletando" onclick="deletar()" class="btn btn-danger" value="Delete">
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
<script>
|
<script>
|
||||||
window.status_id = 0;
|
window.status_id = 0;
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
@@ -297,7 +284,10 @@ function deletemapa($id_dado){
|
|||||||
$("#edit_nome").val(msg["nome"]);
|
$("#edit_nome").val(msg["nome"]);
|
||||||
$("#edit_descricao").val(msg["descricao"]);
|
$("#edit_descricao").val(msg["descricao"]);
|
||||||
$("#edit_status").val(msg["status"]);
|
$("#edit_status").val(msg["status"]);
|
||||||
$("#edit_codigo").val(msg["codigo"]);
|
if($("#edit_codigo").val(msg["codigo"]) != ""){
|
||||||
|
document.getElementById('edit_codigo').removeAttribute("disabled");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -346,6 +336,17 @@ function deletemapa($id_dado){
|
|||||||
|
|
||||||
if (value == 1) {
|
if (value == 1) {
|
||||||
input.disabled = true;
|
input.disabled = true;
|
||||||
|
input.value='';
|
||||||
|
} else {
|
||||||
|
input.disabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function habilitar_edit(value) {
|
||||||
|
var input = document.getElementById("edit_codigo");
|
||||||
|
|
||||||
|
if (value == 1) {
|
||||||
|
input.disabled = true;
|
||||||
|
input.value='';
|
||||||
} else {
|
} else {
|
||||||
input.disabled = false;
|
input.disabled = false;
|
||||||
}
|
}
|
||||||
|
|||||||
Referência em uma Nova Issue
Bloquear um usuário