From 2a193d46262cb78060903d1dc307427893076121 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Mon, 20 Apr 2015 15:43:16 -0400 Subject: [PATCH 001/366] Added Alternate and Role on buttons in toolbar --- js/toolbar.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/toolbar.js b/js/toolbar.js index 78ff4153..a08b4a28 100644 --- a/js/toolbar.js +++ b/js/toolbar.js @@ -127,7 +127,9 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do domConstruct.create("img", { className: "tool", - src: "images/icons_" + this.config.icons + "/" + name + ".png" + src: "images/icons_" + this.config.icons + "/" + name + ".png", + alt: tip, + role: "button" }, pTool); on(pTool, "click", lang.hitch(this, this._toolClick, name)); this.tools.push(name); From 3aba7b5355e6a8fb87a59ac861ddfc591c775981 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Tue, 21 Apr 2015 16:17:25 -0400 Subject: [PATCH 002/366] Changed Home and MyLocations buttons Changed background-images in actual IMG Added Keyboard support Added Alternate text --- images/icons_white/home.png | Bin 0 -> 636 bytes images/icons_white/locate.png | Bin 0 -> 988 bytes index.html | 25 +++++++++++++--- js/main.js | 53 +++++++++++++++++++++++++++++----- 4 files changed, 66 insertions(+), 12 deletions(-) create mode 100644 images/icons_white/home.png create mode 100644 images/icons_white/locate.png diff --git a/images/icons_white/home.png b/images/icons_white/home.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a5bf503f97f1566f4f287c70176c0a7274d3b7 GIT binary patch literal 636 zcmV-?0)zdDP) ztAS-r?djwlWEtER_G)9DsRG#sKZ@jf!n&D*7r)( z9tzF(kOVQ!D5u~V%P5(oi<+FRPOvZQnKAldF5w)XBuXw(vstU=RS>!Ab`q|-Nuy*F zwY7x1hYpTCFvUXdgU&VkAlE3lM9peH7Z`S?yPl%t615#16FHUHo)sn?C6}m?XP&_F z^yVu{E>Y8-LZcurn)7s8QF4iz9P6_RB41-!DOgE4N-j|=kH;7gv{^;TC2C)(35g%* zy#8u80fp*?T<}N4APmAF48kCpD4)h+Mg5P7-w1;+2!k*PgD?n#FbIP%$iD{p6kq^g WosiW(@KwP80000?i!&0 literal 0 HcmV?d00001 diff --git a/images/icons_white/locate.png b/images/icons_white/locate.png new file mode 100644 index 0000000000000000000000000000000000000000..594f2a868ff4a173747e7b1be0ea81b1c6591d71 GIT binary patch literal 988 zcmV<210(#2P)k(RiXrA$vd%=mv*E*6|kH1GmAK(4HtEAxMECuRPqn#s=Tu zOVA583uU?S=c>$gszYZ3(is~(JM8h8OR1jizxswk)KB?TsO&lD2rvl42(hS*aiRPZT{qKJB#ntjpf2FQT;5ZDF<{v` zYEv3BzJzoMg-1fpH)lw|0(}ls$B5uhcOfB-U|Hx+H6fjdf?A=QEt9WWAvr;Pdj&;! zR}$QEIw2jxjNNB|2$w!#1<)Z085ZUV%P{ynGt7nT6&8RQ1BGOSh2}o>%%+vfd0=~1 zE)yVUnP)lj%{AroMa$!Sh84JDnQMdWy35^Ish!=t=fM)KP*)5UQUex1(sQp_{URsX zi;oQ!q3kahVfQ+1+GBfd(lXzs*mb)S(#mdrh=Gu4cHO3gG_#vCF%UA#uJqnZ`v0@W0{305xac6_s0$r12eg=DIvdoy!Q=Uu7H16z;_?- zt*EXw!v=hdFqllUW;RY{ZNcf582oGTf7(yBFmJTRKu8;(S8QRHJP`vSd^PeWj*G@k zv}oMP7mezC;+^N_Hep$Bl3ijVKDuMX5;jp63>MPEuJ3z;*iF^4)m29T51G@-E>^YpoFL2Q?S5*#b! zBRW>dMsd(HR;GiV!$Nm*$frODJymn`R#k_g-foty;PG_U&+&AW2?I-%Ffd7boH;4} zL@Vo7+Af@;#2a10z%?*bid+RlrpC}~>tEv8d=!nZ3oroadysT7layuv0000< KMNUMnLSTYpJGwvs literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 344b9a9d..c2444a36 100644 --- a/index.html +++ b/index.html @@ -37,7 +37,7 @@ -
+
@@ -73,13 +73,15 @@ }] }; - + - + + - + + + // start template + myTemplate.startup().then(function (config) { + // The config object contains the following properties: helper services, (optionally) + // i18n, appid, webmap and any custom values defined by the application. + // In this example we have one called theme. + myApp.startup(config); + }, function (error) { + // something went wrong. Let's report it. + myApp.reportError(error); + }); + }); + diff --git a/js/FeatureListTemplate.html b/js/FeatureListTemplate.html new file mode 100644 index 00000000..8aa38173 --- /dev/null +++ b/js/FeatureListTemplate.html @@ -0,0 +1,13 @@ +
+ + + + + +$$$ +
+ + +

${Incident_Types}

+
+
\ No newline at end of file diff --git a/js/main.js b/js/main.js index 705d7e9d..6bfaff0b 100755 --- a/js/main.js +++ b/js/main.js @@ -23,7 +23,10 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo "esri/dijit/HomeButton", "esri/dijit/LocateButton", "esri/dijit/Legend", "esri/dijit/BasemapGallery", "esri/dijit/Measurement", "esri/dijit/OverviewMap", "esri/geometry/Extent", - "esri/layers/FeatureLayer", "application/TableOfContents", "application/ShareDialog", + "esri/layers/FeatureLayer", + "dojo/string", + "dojo/text!./FeatureListTemplate.html", + "application/TableOfContents", "application/ShareDialog", "esri/dijit/InfoWindow"], function ( ready, JSON, array, Color, declare, @@ -35,7 +38,10 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo HomeButton, LocateButton, Legend, BasemapGallery, Measurement, OverviewMap, Extent, - FeatureLayer, TableOfContents, ShareDialog, + FeatureLayer, + string, + listTemplate, + TableOfContents, ShareDialog, InfoWindow) { return declare(null, { @@ -78,6 +84,28 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo } } this._createWebMap(itemInfo); + window._prevSelected = null; + window.featureExpand = lang.hitch(this, function(fid, layerId) { + //var checked = dojo.query('#featureButton_'+fid)[0].checked; + //console.log(fid, checked, dojo.query('.featureItem_'+fid)); + if(_prevSelected) { + dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + dojo.style(e, 'display','none'); + }); + } + _prevSelected = fid; + dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + dojo.style(e, 'display',''); + }); + + var layer = this.map.getLayer(layerId); + q = new Query(); + q.where = "[FID]='"+fid+"'"; + layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { + f[0].symbol.size = 40; + }); + }); + })); } else { var error = new Error("Main:: Config is not defined"); @@ -180,22 +208,66 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo _query.returnGeometry = true; _query.spatialRelationship = "esriSpatialRelIntersects"; tasks.push({ + layer : layer, task : new QueryTask(this.map._layers[layer.id].url), query : _query }); } })); + _featureListItem = function(f, template, objectIdFieldName, layerId) { + try { + template = template.replace('FID', objectIdFieldName); + template = template.replace('LAYERID', layerId); + return string.substitute(template, f.attributes); + } catch (e) { + console.log(e); + return "Error on feature "+f.attributes[objectIdFieldName]; + } + }; + on(this.map, "extent-change", function(ext) { tasks.forEach(lang.hitch(this, function(t) { t.query.geometry = ext.extent; t.result = t.task.execute(t.query); })); promises = all(tasks.map(function(t) {return t.result;})); + var list = query("#featuresList")[0]; promises.then(function(results) { - console.log(results[0]); + list.innerHTML = ""; + if(results) for(var i = 0; i\n'; + content+=' \n'; + content+=' '+f.alias+'\n'; + content+=' :\n'; + content+=' ${'+f.name+'}\n'; + content+='\n'; + }); + r.features.forEach(function(f) { +// console.log(f); + if(f.attributes.Incident_Types && f.attributes.Incident_Types!=="") { + template = listTemplate.replace('$$$', content); + domConstruct.create("li", { + tabindex:0, + innerHTML : _featureListItem(f, template, objectIdFieldName, tasks[i].layer.id) + }, list); + } + }); + }; }); - }); + }, this); + }, + + _featureListItem : function(f) { + return f.attributes.Incident_Types; }, _initPopup : function (node) { @@ -231,7 +303,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo scope: "row", className: 'attrName', innerHTML: attrName.innerHTML, - }, attrName.parentNode, "first") + }, attrName.parentNode, "first"); attrValues = attrName.parentNode.querySelectorAll('.attrValue'); if(attrValues) { @@ -274,6 +346,9 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo case "details": toolList.push(this._addDetails(this.config.tools[i], toolbar, "medium")); break; + case "features": + toolList.push(this._addFeatures(this.config.tools[i], toolbar, "large")); + break; case "legend": toolList.push(this._addLegend(this.config.tools[i], toolbar, "medium")); break; @@ -617,7 +692,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo innerHTML: '

In addition to the mouse you may:

', }, instructionsText); - list = domConstruct.create("ul", { + var list = domConstruct.create("ul", { id:'instructionsList', }, instructionsText); @@ -650,6 +725,30 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo return deferred.promise; }, + _addFeatures: function (tool, toolbar, panelClass) { + //Add the legend tool to the toolbar. Only activated if the web map has operational layers. + var deferred = new Deferred(); +// if (has("features")) { + var featuresDiv = toolbar.createTool(tool, "large"); + dojo.setAttr(featuresDiv, 'tabindex', 0); + + featuresList = domConstruct.create("div", { + tabindex: '0', + class: 'desc', + }, featuresDiv); + + var list = domConstruct.create("ul", { + id:'featuresList' + }, featuresList); + + deferred.resolve(true); +// } else { +// deferred.resolve(false); +// } + + return deferred.promise; + }, + _addLegend: function (tool, toolbar, panelClass) { //Add the legend tool to the toolbar. Only activated if the web map has operational layers. var deferred = new Deferred(); diff --git a/js/nls/resources.js b/js/nls/resources.js index 9c328770..7a623c4b 100755 --- a/js/nls/resources.js +++ b/js/nls/resources.js @@ -47,6 +47,7 @@ define({ "tooltips":{ "home": "Default extent", "locate": "Find my location", + "features" : "Feature list", "instructions": "Instructions", "legend": "Legend", "bookmarks": "Bookmarks", From cd0052f25ca941f2ae646ff5f83edca873546f33 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Mon, 28 Mar 2016 21:13:21 -0400 Subject: [PATCH 090/366] Features with checkBox --- js/FeatureListTemplate.html | 10 ++-- js/has-config.js | 10 +++- js/js.zip | Bin 0 -> 35681 bytes js/main.js | 103 ++++++++++++++++++++------------ resources/configurationPanel.js | 9 +++ 5 files changed, 87 insertions(+), 45 deletions(-) create mode 100644 js/js.zip diff --git a/js/FeatureListTemplate.html b/js/FeatureListTemplate.html index 8aa38173..8869527d 100644 --- a/js/FeatureListTemplate.html +++ b/js/FeatureListTemplate.html @@ -2,12 +2,14 @@ -$$$ + ${_content}
- + -

${Incident_Types}

+

${_title}

-
\ No newline at end of file +
+ + \ No newline at end of file diff --git a/js/has-config.js b/js/has-config.js index 3ce4af37..aeeac771 100644 --- a/js/has-config.js +++ b/js/has-config.js @@ -88,7 +88,14 @@ define(["dojo/has"], function (has) { } return home; }); - + has.add("features", function (g) { + var features = getTool("features", g.config); + //overwrite the default with app settings + if (g.config.hasOwnProperty("tool_features")) { + features = g.config.tool_features; + } + return features; + }); has.add("layers", function (g) { var layers = getTool("layers", g.config); //overwrite the default with app settings @@ -97,7 +104,6 @@ define(["dojo/has"], function (has) { } return layers; }); - has.add("instructions", function (g) { var instructions = getTool("instructions", g.config); //overwrite the default with app settings diff --git a/js/js.zip b/js/js.zip new file mode 100644 index 0000000000000000000000000000000000000000..50ef4acf4864dd3285959bdd1ae22fd53b90a0a0 GIT binary patch literal 35681 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 literal 0 HcmV?d00001 diff --git a/js/main.js b/js/main.js index 6bfaff0b..d460c322 100755 --- a/js/main.js +++ b/js/main.js @@ -27,6 +27,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo "dojo/string", "dojo/text!./FeatureListTemplate.html", "application/TableOfContents", "application/ShareDialog", + "dijit/layout/AccordionContainer", "esri/dijit/InfoWindow"], function ( ready, JSON, array, Color, declare, @@ -42,6 +43,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo string, listTemplate, TableOfContents, ShareDialog, + AccordionContainer, InfoWindow) { return declare(null, { @@ -85,7 +87,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo } this._createWebMap(itemInfo); window._prevSelected = null; - window.featureExpand = lang.hitch(this, function(fid, layerId) { + window.featureExpand = lang.hitch(this, function(checkBox) {//fid, layerId //var checked = dojo.query('#featureButton_'+fid)[0].checked; //console.log(fid, checked, dojo.query('.featureItem_'+fid)); if(_prevSelected) { @@ -93,17 +95,27 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo dojo.style(e, 'display','none'); }); } - _prevSelected = fid; - dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.style(e, 'display',''); - }); + if(checkBox.checked) + { + var values = checkBox.value.split(','); + var layerId = values[0]; + var fid = values[1]; + _prevSelected = fid; + dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + dojo.style(e, 'display',''); + }); - var layer = this.map.getLayer(layerId); - q = new Query(); - q.where = "[FID]='"+fid+"'"; - layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { + var layer = this.map.getLayer(layerId); + q = new Query(); + q.where = "[FID]='"+fid+"'"; + layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { f[0].symbol.size = 40; - }); + }); + } else { + dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + dojo.style(e, 'display','none'); + }); + } }); })); @@ -215,14 +227,17 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo } })); - _featureListItem = function(f, template, objectIdFieldName, layerId) { + _getFeatureListItem = function(f, objectIdFieldName, layer, content, listTemplate) { try { - template = template.replace('FID', objectIdFieldName); - template = template.replace('LAYERID', layerId); - return string.substitute(template, f.attributes); + var featureId = f.attributes[objectIdFieldName]; + var attributes = {_featureId:featureId, _layerId:layer.id, _title:layer.infoTemplate.title(f), _content:content}; + lang.mixin(attributes, f.attributes); + content = string.substitute(content, attributes); + listTemplate=string.substitute(listTemplate, attributes); + return string.substitute(listTemplate, attributes); } catch (e) { - console.log(e); - return "Error on feature "+f.attributes[objectIdFieldName]; + console.log("Error on feature ("+featureId+")\n\t "+layer.infoTemplate.title(f)+"\n\t",e); + return null; } }; @@ -237,28 +252,38 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo list.innerHTML = ""; if(results) for(var i = 0; i\n'; - content+=' \n'; - content+=' '+f.alias+'\n'; - content+=' :\n'; - content+=' ${'+f.name+'}\n'; - content+='\n'; - }); + var fieldsMap = layer.infoTemplate._fieldsMap; + for(var p in layer.infoTemplate._fieldsMap) { + if(fieldsMap.hasOwnProperty(p) && fieldsMap[p].visible) + { + content+='\n'; + content+=' \n'; + content+=' '+fieldsMap[p].label+'\n'; + content+=' :\n'; + content+=' ${'+fieldsMap[p].fieldName; +// if(fieldsMap[p].format && fieldsMap[p].format.dateFormat) { +// content+=':DateFormat(selector: "date", fullYear: true)'; +// } + content+='}\n'; + content+='\n'; + } + }; r.features.forEach(function(f) { -// console.log(f); +// console.log(f); if(f.attributes.Incident_Types && f.attributes.Incident_Types!=="") { - template = listTemplate.replace('$$$', content); - domConstruct.create("li", { - tabindex:0, - innerHTML : _featureListItem(f, template, objectIdFieldName, tasks[i].layer.id) - }, list); + var featureListItem = _getFeatureListItem(f, r.objectIdFieldName, layer, content, listTemplate); + if(featureListItem) + { + domConstruct.create("li", { + tabindex : 0, + innerHTML : featureListItem + }, list); + } } }); }; @@ -728,23 +753,23 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo _addFeatures: function (tool, toolbar, panelClass) { //Add the legend tool to the toolbar. Only activated if the web map has operational layers. var deferred = new Deferred(); -// if (has("features")) { + if (has("features")) { var featuresDiv = toolbar.createTool(tool, "large"); dojo.setAttr(featuresDiv, 'tabindex', 0); - featuresList = domConstruct.create("div", { + features = domConstruct.create("div", { tabindex: '0', class: 'desc', }, featuresDiv); var list = domConstruct.create("ul", { id:'featuresList' - }, featuresList); + }, features); deferred.resolve(true); -// } else { -// deferred.resolve(false); -// } + } else { + deferred.resolve(false); + } return deferred.promise; }, diff --git a/resources/configurationPanel.js b/resources/configurationPanel.js index 29300dfe..2b7fce91 100755 --- a/resources/configurationPanel.js +++ b/resources/configurationPanel.js @@ -117,6 +117,10 @@ "label":"Instructions", "value":"instructions" }, + { + "label":"Features", + "value":"features" + }, { "label":"Legend", "value":"legend" @@ -164,6 +168,11 @@ "fieldName":"scalebar", "label":"Scalebar" }, + { + "type":"boolean", + "fieldName":"tool_features", + "label":"Feature List" + }, { "type":"boolean", "fieldName":"tool_layers", From ec5fc4a312683579b0213b6e747d3ec262ffaf00 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Mon, 28 Mar 2016 23:22:38 -0400 Subject: [PATCH 091/366] Features in Has(features) --- js/main.js | 131 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 84 insertions(+), 47 deletions(-) diff --git a/js/main.js b/js/main.js index d460c322..db11e338 100755 --- a/js/main.js +++ b/js/main.js @@ -86,37 +86,38 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo } } this._createWebMap(itemInfo); - window._prevSelected = null; - window.featureExpand = lang.hitch(this, function(checkBox) {//fid, layerId - //var checked = dojo.query('#featureButton_'+fid)[0].checked; - //console.log(fid, checked, dojo.query('.featureItem_'+fid)); - if(_prevSelected) { - dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.style(e, 'display','none'); - }); - } - if(checkBox.checked) - { - var values = checkBox.value.split(','); - var layerId = values[0]; - var fid = values[1]; - _prevSelected = fid; - dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.style(e, 'display',''); - }); - - var layer = this.map.getLayer(layerId); - q = new Query(); - q.where = "[FID]='"+fid+"'"; - layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { - f[0].symbol.size = 40; - }); - } else { - dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.style(e, 'display','none'); - }); - } - }); + + // window._prevSelected = null; + // window.featureExpand1 = lang.hitch(this, function(checkBox) {//fid, layerId + // //var checked = dojo.query('#featureButton_'+fid)[0].checked; + // //console.log(fid, checked, dojo.query('.featureItem_'+fid)); + // if(_prevSelected) { + // dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + // dojo.style(e, 'display','none'); + // }); + // } + // if(checkBox.checked) + // { + // var values = checkBox.value.split(','); + // var layerId = values[0]; + // var fid = values[1]; + // _prevSelected = fid; + // dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + // dojo.style(e, 'display',''); + // }); + + // var layer = this.map.getLayer(layerId); + // q = new Query(); + // q.where = "[FID]='"+fid+"'"; + // layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { + // f[0].symbol.size = 40; + // }); + // } else { + // dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + // dojo.style(e, 'display','none'); + // }); + // } + // }); })); } else { @@ -210,7 +211,43 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo this._initPopup(this.map.infoWindow.domNode); })); - var tasks = []; + window._prevSelected = null; + window.featureExpand = lang.hitch(this, function(checkBox) {//fid, layerId + //var checked = dojo.query('#featureButton_'+fid)[0].checked; + //console.log(fid, checked, dojo.query('.featureItem_'+fid)); + if(_prevSelected) { + dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + dojo.style(e, 'display','none'); + }); + dojo.query('#featureButton_'+_prevSelected).forEach(function(e) { + e.checked=false; + }); + } + if(checkBox.checked) + { + var values = checkBox.value.split(','); + var layerId = values[0]; + var fid = values[1]; + _prevSelected = fid; + dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + dojo.style(e, 'display',''); + }); + + var layer = this.map.getLayer(layerId); + q = new Query(); + q.where = "[FID]='"+fid+"'"; + //layer.clearSelection(); + layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { + f[0].symbol.size = 40; + }); + } else { + dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { + dojo.style(e, 'display','none'); + }); + } + }); + + window.tasks = []; this.map.graphicsLayerIds.forEach(lang.hitch(this, function(id) { var layer = this.map._layers[id]; if(layer.url && !layer._isSnapshot) @@ -219,7 +256,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo _query.outFields = ["*"]; _query.returnGeometry = true; _query.spatialRelationship = "esriSpatialRelIntersects"; - tasks.push({ + window.tasks.push({ layer : layer, task : new QueryTask(this.map._layers[layer.id].url), query : _query @@ -228,25 +265,25 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo })); _getFeatureListItem = function(f, objectIdFieldName, layer, content, listTemplate) { - try { - var featureId = f.attributes[objectIdFieldName]; - var attributes = {_featureId:featureId, _layerId:layer.id, _title:layer.infoTemplate.title(f), _content:content}; - lang.mixin(attributes, f.attributes); - content = string.substitute(content, attributes); - listTemplate=string.substitute(listTemplate, attributes); - return string.substitute(listTemplate, attributes); - } catch (e) { - console.log("Error on feature ("+featureId+")\n\t "+layer.infoTemplate.title(f)+"\n\t",e); - return null; - } + try { + var featureId = f.attributes[objectIdFieldName]; + var attributes = {_featureId:featureId, _layerId:layer.id, _title:layer.infoTemplate.title(f), _content:content}; + lang.mixin(attributes, f.attributes); + content = string.substitute(content, attributes); + listTemplate=string.substitute(listTemplate, attributes); + return string.substitute(listTemplate, attributes); + } catch (e) { + console.log("Error on feature ("+featureId+")\n\t "+layer.infoTemplate.title(f)+"\n\t",e); + return null; + } }; on(this.map, "extent-change", function(ext) { - tasks.forEach(lang.hitch(this, function(t) { + window.tasks.forEach(lang.hitch(this, function(t) { t.query.geometry = ext.extent; t.result = t.task.execute(t.query); })); - promises = all(tasks.map(function(t) {return t.result;})); + promises = all(window.tasks.map(function(t) {return t.result;})); var list = query("#featuresList")[0]; promises.then(function(results) { list.innerHTML = ""; @@ -254,7 +291,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo { r = results[i]; // console.log(r); - var layer = tasks[i].layer; + var layer = window.tasks[i].layer; layer.clearSelection(); var content = ''; var fieldsMap = layer.infoTemplate._fieldsMap; From e6adefecbe2bd4305d05c30119db968445e046c1 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Tue, 29 Mar 2016 00:22:56 -0400 Subject: [PATCH 092/366] Highlight feature with SimpleMarkerSymbol --- js/main.js | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/js/main.js b/js/main.js index db11e338..ff8ec631 100755 --- a/js/main.js +++ b/js/main.js @@ -27,7 +27,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo "dojo/string", "dojo/text!./FeatureListTemplate.html", "application/TableOfContents", "application/ShareDialog", - "dijit/layout/AccordionContainer", + "esri/symbols/SimpleMarkerSymbol", "esri/graphic", "esri/dijit/InfoWindow"], function ( ready, JSON, array, Color, declare, @@ -43,7 +43,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo string, listTemplate, TableOfContents, ShareDialog, - AccordionContainer, + SimpleMarkerSymbol, Graphic, InfoWindow) { return declare(null, { @@ -211,8 +211,14 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo this._initPopup(this.map.infoWindow.domNode); })); + var markerSymbol = new SimpleMarkerSymbol(); + markerSymbol.setPath("M16,4.938c-7.732,0-14,4.701-14,10.5c0,1.981,0.741,3.833,2.016,5.414L2,25.272l5.613-1.44c2.339,1.316,5.237,2.106,8.387,2.106c7.732,0,14-4.701,14-10.5S23.732,4.938,16,4.938zM16.868,21.375h-1.969v-1.889h1.969V21.375zM16.772,18.094h-1.777l-0.176-8.083h2.113L16.772,18.094z"); + markerSymbol.setColor(new Color("#00FFFF00")); + markerSymbol.size = 40; + + window._prevSelected = null; - window.featureExpand = lang.hitch(this, function(checkBox) {//fid, layerId + window.featureExpand = function(checkBox) {//fid, layerId //var checked = dojo.query('#featureButton_'+fid)[0].checked; //console.log(fid, checked, dojo.query('.featureItem_'+fid)); if(_prevSelected) { @@ -223,29 +229,37 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo e.checked=false; }); } - if(checkBox.checked) - { var values = checkBox.value.split(','); - var layerId = values[0]; + var r = window.tasks[values[0]]; var fid = values[1]; + var layer = r.layer; + layer._map.graphics.clear(); + if(checkBox.checked) + { _prevSelected = fid; dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { dojo.style(e, 'display',''); }); - var layer = this.map.getLayer(layerId); q = new Query(); q.where = "[FID]='"+fid+"'"; + q.outFields = ["FID"]; + q.returnGeometry = true; //layer.clearSelection(); - layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { - f[0].symbol.size = 40; + r.task.execute(q).then(function(ev) { + //console.log(ev); + var graphic = new Graphic(ev.features[0].geometry, markerSymbol); + layer._map.graphics.add(graphic); }); + // layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { + // f[0].symbol.size = 40; + // }); } else { dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { dojo.style(e, 'display','none'); }); } - }); + }; window.tasks = []; this.map.graphicsLayerIds.forEach(lang.hitch(this, function(id) { @@ -254,7 +268,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo { var _query = new Query(); _query.outFields = ["*"]; - _query.returnGeometry = true; + _query.returnGeometry = false; _query.spatialRelationship = "esriSpatialRelIntersects"; window.tasks.push({ layer : layer, @@ -264,10 +278,10 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo } })); - _getFeatureListItem = function(f, objectIdFieldName, layer, content, listTemplate) { + _getFeatureListItem = function(r, f, objectIdFieldName, layer, content, listTemplate) { try { var featureId = f.attributes[objectIdFieldName]; - var attributes = {_featureId:featureId, _layerId:layer.id, _title:layer.infoTemplate.title(f), _content:content}; + var attributes = {_featureId:featureId, _layerId:r, _title:layer.infoTemplate.title(f), _content:content}; lang.mixin(attributes, f.attributes); content = string.substitute(content, attributes); listTemplate=string.substitute(listTemplate, attributes); @@ -313,7 +327,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo r.features.forEach(function(f) { // console.log(f); if(f.attributes.Incident_Types && f.attributes.Incident_Types!=="") { - var featureListItem = _getFeatureListItem(f, r.objectIdFieldName, layer, content, listTemplate); + var featureListItem = _getFeatureListItem(i, f, r.objectIdFieldName, layer, content, listTemplate); if(featureListItem) { domConstruct.create("li", { From 391534ffada6f508c2784f7aaac1baa718dd7c07 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Tue, 29 Mar 2016 09:33:09 -0400 Subject: [PATCH 093/366] Json SimpleMarkerSymbol --- js/main.js | 153 ++++++++++++++++++++++++----------------------------- 1 file changed, 68 insertions(+), 85 deletions(-) diff --git a/js/main.js b/js/main.js index ff8ec631..71485eb6 100755 --- a/js/main.js +++ b/js/main.js @@ -211,11 +211,20 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo this._initPopup(this.map.infoWindow.domNode); })); - var markerSymbol = new SimpleMarkerSymbol(); - markerSymbol.setPath("M16,4.938c-7.732,0-14,4.701-14,10.5c0,1.981,0.741,3.833,2.016,5.414L2,25.272l5.613-1.44c2.339,1.316,5.237,2.106,8.387,2.106c7.732,0,14-4.701,14-10.5S23.732,4.938,16,4.938zM16.868,21.375h-1.969v-1.889h1.969V21.375zM16.772,18.094h-1.777l-0.176-8.083h2.113L16.772,18.094z"); - markerSymbol.setColor(new Color("#00FFFF00")); - markerSymbol.size = 40; - + var markerSymbol = new SimpleMarkerSymbol({ + "color": [255,0,0,100], + "size": 30, + "xoffset": 0, + "yoffset": 0, + "type": "esriSMS", + "style": "esriSMSCircle", + "outline": { + "color": [255,0,0,255], + "width": 2, + "type": "esriSLS", + "style": "esriSLSSolid" + } + }); window._prevSelected = null; window.featureExpand = function(checkBox) {//fid, layerId @@ -229,11 +238,12 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo e.checked=false; }); } - var values = checkBox.value.split(','); - var r = window.tasks[values[0]]; - var fid = values[1]; - var layer = r.layer; - layer._map.graphics.clear(); + var values = checkBox.value.split(','); + var r = window.tasks[values[0]]; + var fid = values[1]; + var layer = r.layer; + layer._map.graphics.clear(); + if(checkBox.checked) { _prevSelected = fid; @@ -262,6 +272,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo }; window.tasks = []; + this.map.graphicsLayerIds.forEach(lang.hitch(this, function(id) { var layer = this.map._layers[id]; if(layer.url && !layer._isSnapshot) @@ -292,54 +303,6 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo } }; - on(this.map, "extent-change", function(ext) { - window.tasks.forEach(lang.hitch(this, function(t) { - t.query.geometry = ext.extent; - t.result = t.task.execute(t.query); - })); - promises = all(window.tasks.map(function(t) {return t.result;})); - var list = query("#featuresList")[0]; - promises.then(function(results) { - list.innerHTML = ""; - if(results) for(var i = 0; i\n'; - content+=' :\n'; - content+=' ${'+fieldsMap[p].fieldName; -// if(fieldsMap[p].format && fieldsMap[p].format.dateFormat) { -// content+=':DateFormat(selector: "date", fullYear: true)'; -// } - content+='}\n'; - content+='\n'; - } - }; - r.features.forEach(function(f) { -// console.log(f); - if(f.attributes.Incident_Types && f.attributes.Incident_Types!=="") { - var featureListItem = _getFeatureListItem(i, f, r.objectIdFieldName, layer, content, listTemplate); - if(featureListItem) - { - domConstruct.create("li", { - tabindex : 0, - innerHTML : featureListItem - }, list); - } - } - }); - }; - }); - }, this); }, _featureListItem : function(f) { @@ -817,6 +780,53 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo id:'featuresList' }, features); + on(this.map, "extent-change", function(ext) { + var list = query("#featuresList")[0]; + window.tasks.forEach(lang.hitch(this, function(t) { + t.query.geometry = ext.extent; + t.result = t.task.execute(t.query); + })); + promises = all(window.tasks.map(function(t) {return t.result;})); + promises.then(function(results) { + list.innerHTML = ""; + if(results) for(var i = 0; i\n'; + content+=' :\n'; + content+=' ${'+fieldsMap[p].fieldName; + // if(fieldsMap[p].format && fieldsMap[p].format.dateFormat) { + // content+=':DateFormat(selector: "date", fullYear: true)'; + // } + content+='}\n'; + content+='\n'; + } + }; + r.features.forEach(function(f) { + // console.log(f); + if(f.attributes.Incident_Types && f.attributes.Incident_Types!=="") { + var featureListItem = _getFeatureListItem(i, f, r.objectIdFieldName, layer, content, listTemplate); + if(featureListItem) + { + domConstruct.create("li", { + tabindex : 0, + innerHTML : featureListItem + }, list); + } + } + }); + }; + }); + }, this); deferred.resolve(true); } else { deferred.resolve(false); @@ -1729,33 +1739,6 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo // domAttr.set(images[i],'tabindex','0'); }); -// var tasks = [] -// this.map.graphicsLayerIds.forEach(lang.hitch(this, function(id) { -// var layer = this.map._layers[id] -// if(layer.url && !layer._isSnapshot) -// { -// var _query = new Query(); -// _query.outFields = ["*"]; -// _query.returnGeometry = true; -// _query.spatialRelationship = "esriSpatialRelIntersects"; -// tasks.push({ -// task : new QueryTask(this.map._layers[layer.id].url), -// query : _query -// }) -// } -// })); - -// on(this.map, "extent-change", function(evt) { -// tasks.forEach(lang.hitch(this, function(t) { -// t.query.geometry = evt.extent; -// t.result = t.task.execute(t.query); -// })) -// promises = all(tasks.map(function(t) {return t.result})); -// promises.then(function(results) { -// console.log(results); -// }) -// }); - this._createMapUI(); // make sure map is loaded if (this.map.loaded) { From 1252b3e82027aad8e3c6b83881e7fc205f1f5538 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Tue, 29 Mar 2016 09:53:02 -0400 Subject: [PATCH 094/366] clear Marker Symbol --- js/main.js | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/js/main.js b/js/main.js index 71485eb6..b615fb14 100755 --- a/js/main.js +++ b/js/main.js @@ -27,7 +27,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo "dojo/string", "dojo/text!./FeatureListTemplate.html", "application/TableOfContents", "application/ShareDialog", - "esri/symbols/SimpleMarkerSymbol", "esri/graphic", + "esri/symbols/SimpleMarkerSymbol", "esri/symbols/PictureMarkerSymbol", "esri/graphic", "esri/dijit/InfoWindow"], function ( ready, JSON, array, Color, declare, @@ -43,7 +43,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo string, listTemplate, TableOfContents, ShareDialog, - SimpleMarkerSymbol, Graphic, + SimpleMarkerSymbol, PictureMarkerSymbol, Graphic, InfoWindow) { return declare(null, { @@ -225,6 +225,16 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo "style": "esriSLSSolid" } }); + // var markerSymbol = new esri.symbol.PictureMarkerSymbol({ + // "angle": 0, + // "xoffset": 0, + // "yoffset": 12, + // "type": "esriPMS", + // "url": "http://static.arcgis.com/images/Symbols/Basic/YellowStickpin.png", + // "contentType": "image/png", + // "width": 24, + // "height": 24 + // }); window._prevSelected = null; window.featureExpand = function(checkBox) {//fid, layerId @@ -267,6 +277,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo } else { dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { dojo.style(e, 'display','none'); + window._prevSelected = null; }); } }; @@ -781,6 +792,8 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo }, features); on(this.map, "extent-change", function(ext) { + this.graphics.clear(); + window._prevSelected = null; var list = query("#featuresList")[0]; window.tasks.forEach(lang.hitch(this, function(t) { t.query.geometry = ext.extent; @@ -810,9 +823,9 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo content+='}\n'; content+='\n'; } - }; - r.features.forEach(function(f) { - // console.log(f); + } + for(var j = 0; j Date: Tue, 29 Mar 2016 10:47:36 -0400 Subject: [PATCH 095/366] Blue Marker --- images/disk-marker.gif | Bin 0 -> 507 bytes images/rot-cursor.gif | Bin 0 -> 3773 bytes js/main.js | 12 ++++++------ 3 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 images/disk-marker.gif create mode 100644 images/rot-cursor.gif diff --git a/images/disk-marker.gif b/images/disk-marker.gif new file mode 100644 index 0000000000000000000000000000000000000000..163b8a7e3218d81214f945246d0a180581345b74 GIT binary patch literal 507 zcmZ?wbhEHbbYO5`_{abP#~Bz-fEkKESvUoOEXDuaey$%5;dZG5b?K*v@6>YHu9dHYX4|FY|E-}%?y z|Lps3U&xlB!tvv2dBThz(~qWK-u^&hr+9OFVrAv>kaCmlO5Z;(3tnNi%OdU8im6tT zN4cJUjXJ6PTXS+0(BV)I=x{P{GUx#zBU5HeKd0cK`$+*?qB=frp7UybsjNraqM&6r zDp%+o+4t$#*>4%=!|N8;y!-u9z)5c7jcA3&Q%lcr_IfS9vg&Ks*{tn%)_v#JGuzu% z&|ULR?Mn7K_uac6tx~G2J>{kU*)Ju=CqEd@% zQ9(eFQjxk_z<{VA1P~EnM5KaNTU^02tCBun^Q9l=!`$=UbI-Z=p7Y-KeeUyn z9=@-Si)(^07{d(A9iHy)^#Fzd-T-|7wE!Lf0|0{n0)W#1PXLkuHUeY;Bqb&$B_&l? zRaIA4rvan`JOg+R&;UR)F`?0D`CGT<=jZ2b*^-x+XKQ0)Yim0T@CJYaU;sb{_yyos zfEWTH20{D)`~idj0RZO#E&#{@+5s%_cq?UP!ICAu=H_ew9{@i3c^)1dCes~3m;}Oa z0KWrt04MuVSYXrfCn%PFpADdrFxs1z6E#(&;oD;U<%-8bX&MwUq0U! zz!r=3c5{nTQ_IQ8$wfzQuBWG`mzP%~fVH(XolcL5iHVJk4G9Se4Gj$p3=Bd?P>`ji zr4>4?te7N{mx00G&`myly1BV|aB%SU?b`zb1GjG7N={BrNlB@#t*xu8>+9?5@9#G> zG&C|Ys;{pm6n#4o}S*&(BS9i=kM=Np->DA49H}%P$&!t2snTK{Dlh_gCnZ(Vr zR8&+gnl;wPnV}zS`OX3Z=2JaeRDya&nTc zs+y#(-r3nXH8oWOP_3!y?&?anw3HPU$z-zB)YKpZA(2SV&dx;uW7ujp`!tle0vb z8)th--^*IpBNNdXQSP!H2SO7+t-MK+sfq~sC#lZy3rt6K{D`GCf;-AuxRvXvhqhI* zGIf>5O)g1ptmVZ!lnpdiT=64$oYrbt3inPK6#O7a6G9~|npC@%>YlbybHT;P#!Ra+ z?7`7p*3*Ml(h^aol|}K3mSFsuH%kfq4&p&9yUTL6(-8vRt)Kj*X&-g%O@W-SP>0sN zN?IM~rOzm8-E#xyxZiVHnkyl}A~o)$Nr^*rt|=d|;rndC8Q>MJ-NK`O zp-zayHB4LhE*zJuHBe%tRgDc=xTLWqnDR*1tkc7gx4QsiTg?@b@0~UKas?$}uuC8_ zyn2WGb|6G#dVQ^FW!hKbwgCG&hbsZaT6o+i`Ti8Gd?OnxtV*vxt{k75K5Uh!Rq&Jc zP}5lBCgQiL#FVdwEmmS5=xSG##<0^{C_d+%%c+J5Wv4V~gqssAj|IMxaSL@h=X2~g zcZyq9QR@0o~(f*?*AGIRC&@}Qktzy5blkrkD-2-^doMT*k9ni>*8kQwNZ}gj*7n}9upCb zGw+-_gUft|-8zGpwmPclz6>`r%<@wS($yUQ8&Wf)IWV*NaVpJ!R0@)=N zO(mb5QL<@SG~%$^&wk{zelY9*YU#;ta&BLnSL*0>M>=dG)&z@OpGZ@9%S*^8#V0(Wo2?KBZ}IgJ5KNp-;5{mM9zJ( z`}em|B2ICfVO3PG5RZ6k%B&gBcy!cCy`D*p1e*Gw@L_ODw;&-&A8}}DU!(J8Ly-Y( zmWsjR&o;GdoY8nm&|kL9u5IzM)8eTABorVHe?Xw6NF4MDfogPI;^$po3M>>(rMTU4 zg6Xm3zpOJ%2;d-8|LQ$1&gaH!>oqM)t%YOqM^g0fIfrxGBB<)>-LtTC#XtLt;dSUW z(Po0hc4?y~lexr^Ym)m>;|IJYz)zr3`p9SNJI-UQH;bs=8=~r@+ng{i__0`$lb`xf zH3DH((h-~`xl?ny+jZ=(q>+)wME1%vEVYZTisMbg_9De0%#5(sw5_T)t2E+gSi~k( z&v6ZL&yNqT{yt$o6`QpIsEG>>bl-JqO{)&7iRd1F)zghp^QqkUat~%9hTobtcB_%oy{HU8mt7bSEC{ z?{YXE)x4XPO=$aiE1n)Ma^A!p2zQ2xSDW$xJ2th??k;rRHLc9(7g}~_JV@j!Dg7^cDy>ucM*;#Vv16G+zH+yXhQ_jLgfSPE-M#nu% z``#H9=~$xqtH;9)NP7Q)Vf!_Ts_aE$!lj+YgL{xf*;{gle~pE<-WNyeXPa4u7OSlF z1lJ$?UfS|IrgzgEdXPzV^yzpW>K2j5i2_)&d?)n@o}N}Kf`EpL!!6ter8D_4ix#S+GI1**FIgw<6Q zC;irp*~MzVK3 zlfe{;%JMFHi!_!UT%+PyaU*{Fx6=MZHLjgAcV9H#_>nU8!MB+Y?9+9+PVRrhA~qmx zgUsV&P70j=)ywnl18cQC+{ybtKiZ6MC%=AeK2XRz>{L*^B98i?IAOMQi!slrDTg_;Rrk5zDqA@9xPku_%~n#k>U=0ND2R$9fQ&^XTd zcdf3aP)g>i1UGw_`*wQjpxs?vmywS?vQPSNK3b1sXq=T-^FFk`Ito_HlWW6@7vCt6 zX`NHJoAvG@*jj`Z`S!-E3FhkG>G8$Y0p&KkF5$|S#I>3;(ubc!s*nT`#JCcjVr>FL zA~4omqw;L;Zj;NqJZuu#>IJkfaL0~Dl#v^^?fm5@OF^;>;tB}TyFSDoPDmw7^UZYG zUt5xYpxG=EtRA|VP_0TCUi?wB^6Vub+Iih`MNLWRPm&o`OKflP1Z(9P&kx8OQT>Fx zz@zjGXZF7!Z~vwZ5^AE(2jn3~j&%<=D-|YM2OZ2+QK+o!280d>Ui|5U9XW;R{a?}m^4@TO3)^; x*b~)D+Jy~qs2n&ID#SHE(-1TYp6?YLbJWo?kqK&0m4@bNC-|gN|2*y7{|<``!N>pr literal 0 HcmV?d00001 diff --git a/js/main.js b/js/main.js index b615fb14..89d727cb 100755 --- a/js/main.js +++ b/js/main.js @@ -212,14 +212,14 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo })); var markerSymbol = new SimpleMarkerSymbol({ - "color": [255,0,0,100], + "color": [3,126,175,20], "size": 30, "xoffset": 0, "yoffset": 0, "type": "esriSMS", "style": "esriSMSCircle", "outline": { - "color": [255,0,0,255], + "color": [3,26,255,220], "width": 2, "type": "esriSLS", "style": "esriSLSSolid" @@ -228,12 +228,12 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo // var markerSymbol = new esri.symbol.PictureMarkerSymbol({ // "angle": 0, // "xoffset": 0, - // "yoffset": 12, + // "yoffset": 0, // "type": "esriPMS", - // "url": "http://static.arcgis.com/images/Symbols/Basic/YellowStickpin.png", + // "url": "../images/rot-cursor.gif", // "contentType": "image/png", - // "width": 24, - // "height": 24 + // "width": 31, + // "height": 31 // }); window._prevSelected = null; From 0c1c9604d438194f7e4a50d97b33725693fc8e21 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Tue, 29 Mar 2016 12:10:03 -0400 Subject: [PATCH 096/366] decode date in attributes --- js/FeatureListTemplate.html | 2 -- js/main.js | 29 ++++++++++++++++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/js/FeatureListTemplate.html b/js/FeatureListTemplate.html index 8869527d..eb311eb0 100644 --- a/js/FeatureListTemplate.html +++ b/js/FeatureListTemplate.html @@ -11,5 +11,3 @@

${_title}

${_content}
- - \ No newline at end of file diff --git a/js/main.js b/js/main.js index 89d727cb..b8763544 100755 --- a/js/main.js +++ b/js/main.js @@ -307,7 +307,17 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo lang.mixin(attributes, f.attributes); content = string.substitute(content, attributes); listTemplate=string.substitute(listTemplate, attributes); - return string.substitute(listTemplate, attributes); + var result = string.substitute(listTemplate, attributes); + var re = /FORMAT_(DATE|NUM)\((\d+),\"(.+)\"\)/gm; + do { + var matches = re.exec(result); + if(!matches) break; + if(matches[1]==="DATE") { + var date = new Date(Number(matches[2])); + result = result.replace(re, date.toLocaleDateString()); + } + } while (true); + return result; } catch (e) { console.log("Error on feature ("+featureId+")\n\t "+layer.infoTemplate.title(f)+"\n\t",e); return null; @@ -812,15 +822,20 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo for(var p in layer.infoTemplate._fieldsMap) { if(fieldsMap.hasOwnProperty(p) && fieldsMap[p].visible) { + var pField = fieldsMap[p]; + var fieldName = '${'+pField.fieldName+'}'; content+='\n'; content+=' \n'; - content+=' '+fieldsMap[p].label+'\n'; + content+=' '+pField.label+'\n'; content+=' :\n'; - content+=' ${'+fieldsMap[p].fieldName; - // if(fieldsMap[p].format && fieldsMap[p].format.dateFormat) { - // content+=':DateFormat(selector: "date", fullYear: true)'; - // } - content+='}\n'; + content+=' '; + if(pField.format && pField.format.dateFormat) { + content+='FORMAT_DATE('+fieldName+',"'+pField.format.dateFormat+'")'; + } + else { + content+=fieldName; + } + content+='\n'; content+='\n'; } } From b4bb07ac5597e56770b825d198ac29f320ec50b6 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Tue, 29 Mar 2016 12:50:53 -0400 Subject: [PATCH 097/366] feature list classes and border --- css/styles1.css | 11 +++++++++++ js/FeatureListTemplate.html | 4 ++-- js/main.js | 20 ++++++++++++++------ 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/css/styles1.css b/css/styles1.css index 876fce58..30000ede 100644 --- a/css/styles1.css +++ b/css/styles1.css @@ -119,3 +119,14 @@ tr[tabindex='0']:focus padding-left: 10px; } +.showAttr { + display:; +} + +.hideAttr { + display:none; +} + +.borderLi { + border: solid 1px #037eaf; +} \ No newline at end of file diff --git a/js/FeatureListTemplate.html b/js/FeatureListTemplate.html index eb311eb0..defec379 100644 --- a/js/FeatureListTemplate.html +++ b/js/FeatureListTemplate.html @@ -2,10 +2,10 @@ ${_content} diff --git a/js/main.js b/js/main.js index b8763544..bfad85c4 100755 --- a/js/main.js +++ b/js/main.js @@ -28,7 +28,8 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo "dojo/text!./FeatureListTemplate.html", "application/TableOfContents", "application/ShareDialog", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/PictureMarkerSymbol", "esri/graphic", - "esri/dijit/InfoWindow"], + "esri/dijit/InfoWindow", + "dojo/NodeList-dom", "dojo/NodeList-traverse"], function ( ready, JSON, array, Color, declare, lang, dom, domGeometry, domAttr, domClass, @@ -242,7 +243,9 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo //console.log(fid, checked, dojo.query('.featureItem_'+fid)); if(_prevSelected) { dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.style(e, 'display','none'); + dojo.removeClass(e, 'showAttr'); + dojo.addClass(e, 'hideAttr'); + query(e).closest('li').removeClass('borderLi'); }); dojo.query('#featureButton_'+_prevSelected).forEach(function(e) { e.checked=false; @@ -258,7 +261,9 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo { _prevSelected = fid; dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.style(e, 'display',''); + dojo.addClass(e, 'showAttr'); + dojo.removeClass(e, 'hideAttr'); + query(e).closest('li').addClass('borderLi'); }); q = new Query(); @@ -276,7 +281,8 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo // }); } else { dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.style(e, 'display','none'); + dojo.removeClass(e, 'showAttr'); + dojo.addClass(e, 'hideAttr'); window._prevSelected = null; }); } @@ -314,7 +320,9 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo if(!matches) break; if(matches[1]==="DATE") { var date = new Date(Number(matches[2])); - result = result.replace(re, date.toLocaleDateString()); + result = result.replace(re, date.toLocaleDateString("en-US", { + year: "numeric", month: "long", day: "numeric" + })); } } while (true); return result; @@ -824,7 +832,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo { var pField = fieldsMap[p]; var fieldName = '${'+pField.fieldName+'}'; - content+='\n'; + content+='\n'; content+=' \n'; content+=' \n'; From 3cb27610c02473543d9b3adc432ee5b35c4babb6 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Tue, 29 Mar 2016 15:00:52 -0400 Subject: [PATCH 098/366] animated-ripple-dots --- images/animated-ripple-dot-red.gif | Bin 0 -> 3176 bytes images/animated-ripple-dot.gif | Bin 0 -> 1329 bytes images/animated-ripple-dot1.gif | Bin 0 -> 1480 bytes images/animated-ripple-dot2.gif | Bin 0 -> 6157 bytes images/animated-ripple-dot3.gif | Bin 0 -> 4232 bytes images/animated-ripple-dot4.gif | Bin 0 -> 3825 bytes js/main.js | 46 ++++++++++++++--------------- 7 files changed, 23 insertions(+), 23 deletions(-) create mode 100644 images/animated-ripple-dot-red.gif create mode 100644 images/animated-ripple-dot.gif create mode 100644 images/animated-ripple-dot1.gif create mode 100644 images/animated-ripple-dot2.gif create mode 100644 images/animated-ripple-dot3.gif create mode 100644 images/animated-ripple-dot4.gif diff --git a/images/animated-ripple-dot-red.gif b/images/animated-ripple-dot-red.gif new file mode 100644 index 0000000000000000000000000000000000000000..3c603f1560fd64ff52e58ee65636430c83735105 GIT binary patch literal 3176 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 D9E5Z6 literal 0 HcmV?d00001 diff --git a/images/animated-ripple-dot.gif b/images/animated-ripple-dot.gif new file mode 100644 index 0000000000000000000000000000000000000000..03d71b8fad3b828474e6f6de9074c5ce7f0f9115 GIT binary patch literal 1329 zcmZ?wbhEHbv}Lem_`m=LY5x^}vaoUi*^2+U{aizWogD*Qjr0td8G%ANG7K^dtU$=X z#O9K>{Ip~M15C9JNH-%8GB7c@FcK6NWe{Z$20{iVqZa;!UA5dZy*KGb->pqtG^=vT z#m;LPb&PJ0R~whWMB$u=@;Am za{Y`sA2wEH^ZZJ=T@p8==FzhW&m)SmUopMvZZVeCw0Lr?TKDr`vqKA0ZtVKo=Mh%8 zGTUvc$?eTji|3_9ojtoHv}x}x!xvH7<&%X^OjQcO=Rp$Jzs87*>x$*d+o(n zrA)gLyBcHSdM;+F?l@a}_Ji3-K=j>~aQtNw6OeH&~cz77|O*K*#EOpVFzdzYv)*9PRpXSM)Ym>?YHqH3F zb=BS-2043U>X#lYJHz?D?u}CMo%NrNr=^8>h$neyl<#2wap{`)4uO}d9qOK&XIQLQ zxcx`5_^p@6GFNWqd>on8vC8V{ttu_6u4l)KJ9mEKTsix8^v%=ZU7c22tY%AB^DLjV zZPxLKN#85mUg&h#URSZ1lPhk^8heb*WmhS0?7Gr(wsQ9lPd=&>zt^_Rb-((PsQ1Op z$KK1WDE-a!?05P(1)GBWnxmJGZ{W}@;+icu=LL77D=QN)4*^p#dR#svGg#U>&LoGF zZg#4_F)#SX+i6>@H&tYFEMNM(v@$hM-Sz#_7-4V8)!%p7-3vFL;wJ9lxc#`;j2RW5 zj!ayBnBDm0SK*sqBuX?nR$6YmHshs)W>!a9)8ZS;y>3*#dZJeS>U)w`w)yH^T4K@N zv!!)nZtk}JUbQUk+e)X_FGpW{Ip~M15C9JNH-%8GB7c@FyayB1evWP${@-h41^3!MlJjcyK1>-dT-K=zFV8P zXjbKvi=Edp>Y}~Y=^QCqcydairT>Drsd~p2vqU>5E#WvL3UnIOi8=xd0t~W1$iNiR z(l56A<@yE}Es z%cWehz$gQvnML|u=A^ZHr2h)a_wrk8pn+A z8K2r$Bu`Jh@uK9}Mvag}PRkR9L0|_#0+5Y?jlmEI8JHHd^sfXuXmQWFTb=1gt*f6a zCU_V=Nt)-rc-r}s+w>$)7f-u&NBe5k{AQN=14Dkp%v9ZRw)XJ#q8}N0Umo6lvvXyB`8M?uwuos#sy&s9-gQp+!Msm}iX%BV^`Yvbg6(FACRn|4I^mb17$KOU=9YwjI5;G}JoG;`F76s=0M+`&CPJ*vMWC%-H*j zPhvXD^KcIJ2=^J`6-QqvZI`&I(fQp%a%Wmc#>y$4FEdVZbaaMFdTE(!RZ4|cr5|EA z_3LC&rl9reX6vgjXGOC{UimF8yvE4qPF7FO?3$aWbF8Fm-@ML|Nx3`6=PhUTU)g&< zxK8^1Tf1xS>6+hba{F>;|9ky+&C4_M*6mnlzrX(1`!l=Ent%NjRMl#l; zEoE-4`t|yBP0van>AO7*U0`JRY%3iM9ojMHWRz5<1pDIBX*(VeN5c#=8fT`g~QG z4u)QQWEi9#D}ptsPT)y|ulgL%WRZq{I?bqU!jVOjjAU%5p9?SL z+Iww-)!L({k7mw%n8F{kZQkWr&Dp0aUT-Vsys<^6!|pgtqovcum%7d#*0+| literal 0 HcmV?d00001 diff --git a/images/animated-ripple-dot2.gif b/images/animated-ripple-dot2.gif new file mode 100644 index 0000000000000000000000000000000000000000..eeb009b2ea6bd251d9c233e65b1b49e5d0100996 GIT binary patch literal 6157 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 Date: Tue, 29 Mar 2016 16:17:50 -0400 Subject: [PATCH 099/366] gif --- js/main.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/main.js b/js/main.js index da72ed7e..8a52652d 100755 --- a/js/main.js +++ b/js/main.js @@ -212,7 +212,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo this._initPopup(this.map.infoWindow.domNode); })); - // var markerSymbol = new SimpleMarkerSymbol({ + // markerSymbol = new SimpleMarkerSymbol({ // "color": [3,126,175,20], // "size": 30, // "xoffset": 0, @@ -226,13 +226,13 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo // "style": "esriSLSSolid" // } // }); - var markerSymbol = new esri.symbol.PictureMarkerSymbol({ + markerSymbol = new esri.symbol.PictureMarkerSymbol({ "angle": 0, "xoffset": 0, "yoffset": 0, "type": "esriPMS", "url": "../images/animated-ripple-dot4.gif", - "contentType": "image/png", + "contentType": "image/gif", "width": 31, "height": 31 }); From 33ff16b047772d1555f2edb2350d93c9f67028e7 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Tue, 29 Mar 2016 17:57:00 -0400 Subject: [PATCH 100/366] Maintain selected --- js/main.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/js/main.js b/js/main.js index 8a52652d..091114be 100755 --- a/js/main.js +++ b/js/main.js @@ -238,10 +238,10 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo }); window._prevSelected = null; - window.featureExpand = function(checkBox) {//fid, layerId + window.featureExpand = function(checkBox, restore) {//fid, layerId //var checked = dojo.query('#featureButton_'+fid)[0].checked; //console.log(fid, checked, dojo.query('.featureItem_'+fid)); - if(_prevSelected) { + if(_prevSelected && !restore) { dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { dojo.removeClass(e, 'showAttr'); dojo.addClass(e, 'hideAttr'); @@ -811,7 +811,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo on(this.map, "extent-change", function(ext) { this.graphics.clear(); - window._prevSelected = null; + // window._prevSelected = null; var list = query("#featuresList")[0]; window.tasks.forEach(lang.hitch(this, function(t) { t.query.geometry = ext.extent; @@ -820,6 +820,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo promises = all(window.tasks.map(function(t) {return t.result;})); promises.then(function(results) { list.innerHTML = ""; + var preselected = null; if(results) for(var i = 0; i Date: Tue, 29 Mar 2016 22:41:38 -0400 Subject: [PATCH 101/366] Right places --- images/ripple-dot.gif | Bin 0 -> 13395 bytes images/ripple-dot1.gif | Bin 0 -> 27975 bytes js/main.js | 424 ++++++++++++++++++++--------------------- 3 files changed, 211 insertions(+), 213 deletions(-) create mode 100644 images/ripple-dot.gif create mode 100644 images/ripple-dot1.gif diff --git a/images/ripple-dot.gif b/images/ripple-dot.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7344c629e7af8f79c43f5fed154dc3edd54b009 GIT binary patch literal 13395 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 Txu*Y%UDJPWZ2Z3?zm5L}Eqb%t literal 0 HcmV?d00001 diff --git a/images/ripple-dot1.gif b/images/ripple-dot1.gif new file mode 100644 index 0000000000000000000000000000000000000000..53c58245d622d5a23ae338c2302fb021a0092db5 GIT binary patch literal 27975 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 z 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 w7D6v{P8I1+Lb8(9Bw}YdrM! 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\n'; + content+=' \n'; + content+=' \n'; + content+='\n'; + } + } + for(var j = 0; j\n'; - content+=' \n'; - content+=' \n'; - content+='\n'; - } - } - for(var j = 0; j Date: Thu, 31 Mar 2016 15:18:48 -0400 Subject: [PATCH 102/366] FeatureList Widget --- css/styles1.css | 266 ++++++++++++------------ js/FeatureList.js | 306 ++++++++++++++++++++++++++++ js/TableOfContents.js | 8 +- js/dijit/templates/FeatureList.html | 5 + js/main.js | 238 +--------------------- js/toolbar.js | 2 +- 6 files changed, 460 insertions(+), 365 deletions(-) create mode 100644 js/FeatureList.js create mode 100644 js/dijit/templates/FeatureList.html diff --git a/css/styles1.css b/css/styles1.css index 30000ede..7371792f 100644 --- a/css/styles1.css +++ b/css/styles1.css @@ -1,132 +1,136 @@ -li[role='menuitem']:hover, -div[role='button']:not(.searchBtn):not(.searchClear):hover, -div[tabindex='0']:not(.pageClose):not(.pageUp):not(.pageDown):not(.searchBtn):not(.searchClear):not(.ovwHighlight):hover, -.no-touch .esriMeasurement .esriButton .dijitButtonNode:hover, -#dijit_form_ComboButton_0_arrow:hover, -button:hover, -.panelToolActive:hover, -.esriMeasurement .esriToggleButton .dijitButtonNode:hover, -.panelTool:hover, -.esriSimpleSliderDecrementButton:hover, .esriSimpleSliderIncrementButton:hover -{ - background-color: rgba(255, 255, 255, 0.3) !important; -} - -.HomeButton .home:hover, -.LocateButton .zoomLocateButton:hover { - background-color: rgba(255, 255, 255, 0.3) !important; -} - -li[role='menuitem']:focus, -div[role='button']:not(.searchBtn):not(.searchClear):not(.pageClose):not(.pageUp):not(.pageDown):focus, -div[tabindex]:not(.pageClose):not(.pageUp):not(.pageDown):not(.searchBtn):not(.searchClear):focus, -.no-touch .esriMeasurement .esriButton .dijitButtonNode:focus, -input[type='text']:focus, -button:focus, -textarea:focus, -select[tabindex='0']:not(#embedMapSizeDropDown):focus, -#dijit_form_ComboButton_0_arrow:focus, -input[type='checkbox']:focus, -input[type='image']:focus, .icon-link:focus, -tr[tabindex='0']:focus, -h1:focus, h2:focus, h3:focus -.esriOverviewMap:focus, -.esriSimpleSliderIncrementButton:focus, .esriSimpleSliderDecrementButton:focus, -h3[tabindex='0']:focus -{ - /*outline-width: 2px; - outline-offset: -2px; - outline-style: solid; - outline-color: rgba(0, 0, 0, 0.9); - border-bottom: 0;*/ - box-shadow: 0 0 12px #38c; -} - -.esriSimpleSliderIncrementButton:focus, -.esriSimpleSliderDecrementButton:focus{ - outline-offset: 2px; -} - -.icon-link:focus, -input[type='image']:focus -{ - --outline-offset: 0px; - box-shadow: 0 0 12px #38c; -} - -.homeContainer input:focus, .locateContainer input:focus -{ - --outline-offset: 2px; - box-shadow: 0 0 12px #38c; -} - -tr[tabindex='0']:focus -{ - outline-offset: 0px; -} - -.ovwHighlight:focus{ - outline-offset: 2px !important; -} - -#embedMapSizeDropDown:focus { - outline-width: 2px; - outline-style: solid; - outline-color: rgba(0, 0, 0, 0.9); -} - -.arcgisSearch .searchMenu li:hover, .arcgisSearch .searchMenu li:focus { - background-color: rgba(0, 0, 0, 0.3); -} - -.activeMarker, -.panelToolActive, -.esriBasemapGallerySelectedNode { - background-color: rgba(0, 0, 0, 0.7); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4D000000,endColorstr=#4D000000) !important; -} - -.esriBasemapGallerySelectedNode:hover span { - color: black; - text-align: center; -} - - - -.arcgisSearch .searchInput::-moz-placeholder { - color: #c6c6c1; !important - opacity: 1; -} - -.arcgisSearch .searchInput:-ms-input-placeholder { - color: #c6c6c1; !important -} - -.arcgisSearch .searchInput::-webkit-input-placeholder { - color: #c6c6c1; !important -} - -#featuresList { - list-style: none; - margin: 0; - /* -webkit-margin-before: -10px; */ - -webkit-padding-start: 0; -} -#featuresList li { - margin-bottom: 4px; - margin-left: -10px; - padding: 2px; - padding-left: 10px; -} - -.showAttr { - display:; -} - -.hideAttr { - display:none; -} - -.borderLi { - border: solid 1px #037eaf; +li[role='menuitem']:hover, +div[role='button']:not(.searchBtn):not(.searchClear):hover, +div[tabindex='0']:not(.pageClose):not(.pageUp):not(.pageDown):not(.searchBtn):not(.searchClear):not(.ovwHighlight):hover, +.no-touch .esriMeasurement .esriButton .dijitButtonNode:hover, +#dijit_form_ComboButton_0_arrow:hover, +button:hover, +.panelToolActive:hover, +.esriMeasurement .esriToggleButton .dijitButtonNode:hover, +.panelTool:hover, +.esriSimpleSliderDecrementButton:hover, .esriSimpleSliderIncrementButton:hover +{ + background-color: rgba(255, 255, 255, 0.3) !important; +} + +.HomeButton .home:hover, +.LocateButton .zoomLocateButton:hover { + background-color: rgba(255, 255, 255, 0.3) !important; +} + +li[role='menuitem']:focus, +div[role='button']:not(.searchBtn):not(.searchClear):not(.pageClose):not(.pageUp):not(.pageDown):focus, +div[tabindex]:not(.pageClose):not(.pageUp):not(.pageDown):not(.searchBtn):not(.searchClear):focus, +.no-touch .esriMeasurement .esriButton .dijitButtonNode:focus, +input[type='text']:focus, +button:focus, +textarea:focus, +select[tabindex='0']:not(#embedMapSizeDropDown):focus, +#dijit_form_ComboButton_0_arrow:focus, +input[type='checkbox']:focus, +input[type='image']:focus, .icon-link:focus, +tr[tabindex='0']:focus, +h1:focus, h2:focus, h3:focus +.esriOverviewMap:focus, +.esriSimpleSliderIncrementButton:focus, .esriSimpleSliderDecrementButton:focus, +h3[tabindex='0']:focus +{ + /*outline-width: 2px; + outline-offset: -2px; + outline-style: solid; + outline-color: rgba(0, 0, 0, 0.9); + border-bottom: 0;*/ + box-shadow: 0 0 12px #38c; +} + +.esriSimpleSliderIncrementButton:focus, +.esriSimpleSliderDecrementButton:focus{ + outline-offset: 2px; +} + +.icon-link:focus, +input[type='image']:focus +{ + --outline-offset: 0px; + box-shadow: 0 0 12px #38c; +} + +.homeContainer input:focus, .locateContainer input:focus +{ + --outline-offset: 2px; + box-shadow: 0 0 12px #38c; +} + +tr[tabindex='0']:focus +{ + outline-offset: 0px; +} + +.ovwHighlight:focus{ + outline-offset: 2px !important; +} + +#embedMapSizeDropDown:focus { + outline-width: 2px; + outline-style: solid; + outline-color: rgba(0, 0, 0, 0.9); +} + +.arcgisSearch .searchMenu li:hover, .arcgisSearch .searchMenu li:focus { + background-color: rgba(0, 0, 0, 0.3); +} + +.activeMarker, +.panelToolActive, +.esriBasemapGallerySelectedNode { + background-color: rgba(0, 0, 0, 0.7); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4D000000,endColorstr=#4D000000) !important; +} + +.esriBasemapGallerySelectedNode:hover span { + color: black; + text-align: center; +} + + + +.arcgisSearch .searchInput::-moz-placeholder { + color: #c6c6c1; !important + opacity: 1; +} + +.arcgisSearch .searchInput:-ms-input-placeholder { + color: #c6c6c1; !important +} + +.arcgisSearch .searchInput::-webkit-input-placeholder { + color: #c6c6c1; !important +} + +#featuresList { + list-style: none; + margin: 0; + /* -webkit-margin-before: -10px; */ + -webkit-padding-start: 0; +} +#featuresList li { + margin-bottom: 4px; + margin-left: -10px; + padding: 2px; + padding-left: 10px; +} + +.showAttr { + display:; +} + +.hideAttr { + display:none; +} + +.borderLi { + border: solid 1px #037eaf; +} + +.featureItem h2 { + font-size: 16px; } \ No newline at end of file diff --git a/js/FeatureList.js b/js/FeatureList.js new file mode 100644 index 00000000..6cff5fdf --- /dev/null +++ b/js/FeatureList.js @@ -0,0 +1,306 @@ +define(["dojo/Evented", "dojo/_base/declare", "dojo/_base/lang", "dojo/has", "esri/kernel", + "dijit/_WidgetBase", "dijit/_TemplatedMixin", "dojo/on", + "dojo/Deferred", "dojo/promise/all", + "dojo/query", + "esri/tasks/query", "esri/tasks/QueryTask", + "dojo/text!application/dijit/templates/FeatureList.html", + "dojo/dom-class", "dojo/dom-attr", "dojo/dom-style", "dojo/dom-construct", "dojo/_base/event", + "dojo/string", + "dojo/text!./FeatureListTemplate.html", + "esri/symbols/SimpleMarkerSymbol", "esri/symbols/PictureMarkerSymbol", "esri/graphic", + "esri/dijit/InfoWindow", + "dojo/NodeList-dom", "dojo/NodeList-traverse" + + ], function ( + Evented, declare, lang, has, esriNS, + _WidgetBase, _TemplatedMixin, on, + Deferred, all, + query, + Query, QueryTask, + FeatureList, + domClass, domAttr, domStyle, domConstruct, event, + string, + listTemplate, + SimpleMarkerSymbol, PictureMarkerSymbol, Graphic, + InfoWindow + ) { + var Widget = declare("esri.dijit.FeatureList", [_WidgetBase, _TemplatedMixin, Evented], { + // defaults + templateString: FeatureList, + + options: { + map: null, + layers: null, + visible: true + }, + + constructor: function (options, srcRefNode) { + // mix in settings and defaults + var defaults = lang.mixin({}, this.options, options); + // widget node + + this.domNode = srcRefNode; + // properties + this.set("map", defaults.map); + this.set("layers", defaults.layers); +// this.set("theme", defaults.theme); +// this.set("visible", defaults.visible); + // listeners +// this.watch("theme", this._updateThemeWatch); +// this.watch("visible", this._visible); +// this.watch("layers", this._refreshLayers); +// this.watch("map", this.refresh); + + // this.markerSymbol = new SimpleMarkerSymbol({ + // "color": [3,126,175,20], + // "size": 30, + // "xoffset": 0, + // "yoffset": 0, + // "type": "esriSMS", + // "style": "esriSMSCircle", + // "outline": { + // "color": [3,26,255,220], + // "width": 2, + // "type": "esriSLS", + // "style": "esriSLSSolid" + // } + // }); + window.markerSymbol = new esri.symbol.PictureMarkerSymbol({ + "angle": 0, + "xoffset": 0, + "yoffset": 0, + "type": "esriPMS", + "url": require.toUrl("./images/ripple-dot1.gif"), + "contentType": "image/gif", + "width": 35, + "height": 35 + }); + this.css = { + container: "toc-container", +// layer: "toc-layer", +// firstLayer: "toc-first-layer", +// title: "toc-title", +// titleContainer: "toc-title-container", +// content: "toc-content", +// titleCheckbox: "checkbox", +// checkboxCheck: "icon-check-1", +// titleText: "checkbox", +// accountText: "toc-account", +// visible: "toc-visible", +// settingsIcon: "icon-cog", +// settings: "toc-settings", +// actions: "toc-actions", +// account: "toc-account", +// clear: "clear" + }; + }, + + startup: function () { + // map not defined + if (!this.map) { + this.destroy(); + console.log("FeaturesList::map required"); + } + // when map is loaded + if (this.map.loaded) { + this._init(); + } else { + on.once(this.map, "load", lang.hitch(this, function () { + this._init(); + })); + } + }, + + _init: function () { +// this._visible(); + this._createList(); + this.set("loaded", true); + this.emit("load", {}); + }, + + _createList: function(){ + window.tasks = []; + for(var l = 0; l\n'; + content+=' \n'; + content+=' \n'; + content+='\n'; + } + } + for(var j = 0; j +
+
    +
+ diff --git a/js/main.js b/js/main.js index 4f54ef67..116cb3ea 100755 --- a/js/main.js +++ b/js/main.js @@ -26,7 +26,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo "esri/layers/FeatureLayer", "dojo/string", "dojo/text!./FeatureListTemplate.html", - "application/TableOfContents", "application/ShareDialog", + "application/FeatureList", "application/TableOfContents", "application/ShareDialog", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/PictureMarkerSymbol", "esri/graphic", "esri/dijit/InfoWindow", "dojo/NodeList-dom", "dojo/NodeList-traverse"], @@ -43,7 +43,7 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo FeatureLayer, string, listTemplate, - TableOfContents, ShareDialog, + FeatureList, TableOfContents, ShareDialog, SimpleMarkerSymbol, PictureMarkerSymbol, Graphic, InfoWindow) { @@ -87,39 +87,6 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo } } this._createWebMap(itemInfo); - - // window._prevSelected = null; - // window.featureExpand1 = lang.hitch(this, function(checkBox) {//fid, layerId - // //var checked = dojo.query('#featureButton_'+fid)[0].checked; - // //console.log(fid, checked, dojo.query('.featureItem_'+fid)); - // if(_prevSelected) { - // dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - // dojo.style(e, 'display','none'); - // }); - // } - // if(checkBox.checked) - // { - // var values = checkBox.value.split(','); - // var layerId = values[0]; - // var fid = values[1]; - // _prevSelected = fid; - // dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - // dojo.style(e, 'display',''); - // }); - - // var layer = this.map.getLayer(layerId); - // q = new Query(); - // q.where = "[FID]='"+fid+"'"; - // layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { - // f[0].symbol.size = 40; - // }); - // } else { - // dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - // dojo.style(e, 'display','none'); - // }); - // } - // }); - })); } else { var error = new Error("Main:: Config is not defined"); @@ -399,207 +366,20 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo //Add the legend tool to the toolbar. Only activated if the web map has operational layers. var deferred = new Deferred(); if (has("features")) { - // markerSymbol = new SimpleMarkerSymbol({ - // "color": [3,126,175,20], - // "size": 30, - // "xoffset": 0, - // "yoffset": 0, - // "type": "esriSMS", - // "style": "esriSMSCircle", - // "outline": { - // "color": [3,26,255,220], - // "width": 2, - // "type": "esriSLS", - // "style": "esriSLSSolid" - // } - // }); - markerSymbol = new esri.symbol.PictureMarkerSymbol({ - "angle": 0, - "xoffset": 0, - "yoffset": 0, - "type": "esriPMS", - "url": "http://apps.esri.ca/templates/WCAGViewer/images/ripple-dot1.gif", - "contentType": "image/gif", - "width": 51, - "height": 51 - }); - - window._prevSelected = null; - window.featureExpand = function(checkBox, restore) {//fid, layerId - //var checked = dojo.query('#featureButton_'+fid)[0].checked; - //console.log(fid, checked, dojo.query('.featureItem_'+fid)); - if(_prevSelected && !restore) { - dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.removeClass(e, 'showAttr'); - dojo.addClass(e, 'hideAttr'); - query(e).closest('li').removeClass('borderLi'); - }); - dojo.query('#featureButton_'+_prevSelected).forEach(function(e) { - e.checked=false; - }); - } - var values = checkBox.value.split(','); - var r = window.tasks[values[0]]; - var fid = values[1]; - var layer = r.layer; - layer._map.graphics.clear(); - - if(checkBox.checked) - { - _prevSelected = fid; - dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.addClass(e, 'showAttr'); - dojo.removeClass(e, 'hideAttr'); - query(e).closest('li').addClass('borderLi'); - }); - - q = new Query(); - q.where = "[FID]='"+fid+"'"; - q.outFields = ["FID"]; - q.returnGeometry = true; - //layer.clearSelection(); - r.task.execute(q).then(function(ev) { - //console.log(ev); - var graphic = new Graphic(ev.features[0].geometry, markerSymbol); - layer._map.graphics.add(graphic); - }); - // layer.selectFeatures(q, FeatureLayer.SELECTION_NEW).then(function(f) { - // f[0].symbol.size = 40; - // }); - } else { - dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { - dojo.removeClass(e, 'showAttr'); - dojo.addClass(e, 'hideAttr'); - window._prevSelected = null; - }); - } - }; - - window.tasks = []; - - this.map.graphicsLayerIds.forEach(lang.hitch(this, function(id) { - var layer = this.map._layers[id]; - if(layer.url && !layer._isSnapshot) - { - var _query = new Query(); - _query.outFields = ["*"]; - _query.returnGeometry = false; - _query.spatialRelationship = "esriSpatialRelIntersects"; - window.tasks.push({ - layer : layer, - task : new QueryTask(this.map._layers[layer.id].url), - query : _query - }); - } - })); - - _getFeatureListItem = function(r, f, objectIdFieldName, layer, content, listTemplate) { - try { - var featureId = f.attributes[objectIdFieldName]; - var attributes = {_featureId:featureId, _layerId:r, _title:layer.infoTemplate.title(f), _content:content}; - lang.mixin(attributes, f.attributes); - content = string.substitute(content, attributes); - listTemplate=string.substitute(listTemplate, attributes); - var result = string.substitute(listTemplate, attributes); - var re = /FORMAT_(DATE|NUM)\((\d+),\"(.+)\"\)/gm; - do { - var matches = re.exec(result); - if(!matches) break; - if(matches[1]==="DATE") { - var date = new Date(Number(matches[2])); - result = result.replace(re, date.toLocaleDateString("en-US", { - year: "numeric", month: "long", day: "numeric" - })); - } - } while (true); - return result; - } catch (e) { - console.log("Error on feature ("+featureId+")\n\t "+layer.infoTemplate.title(f)+"\n\t",e); - return null; - } - }; - var featuresDiv = toolbar.createTool(tool, "large"); - dojo.setAttr(featuresDiv, 'tabindex', 0); - features = domConstruct.create("div", { - tabindex: '0', - class: 'desc', + var layers = this.config.response.itemInfo.itemData.operationalLayers; + + var fl = new FeatureList({ + map: this.map, + layers: layers }, featuresDiv); + fl.startup(); - var list = domConstruct.create("ul", { - id:'featuresList' - }, features); - - on(this.map, "extent-change", function(ext) { - this.graphics.clear(); - // window._prevSelected = null; - var list = query("#featuresList")[0]; - window.tasks.forEach(lang.hitch(this, function(t) { - t.query.geometry = ext.extent; - t.result = t.task.execute(t.query); - })); - promises = all(window.tasks.map(function(t) {return t.result;})); - promises.then(function(results) { - list.innerHTML = ""; - var preselected = null; - if(results) for(var i = 0; i\n'; - content+='
\n'; - content+=' \n'; - content+='\n'; - } - } - for(var j = 0; j Date: Thu, 31 Mar 2016 16:03:19 -0400 Subject: [PATCH 103/366] Cleanup --- js/FeatureList.js | 2 +- .../templates}/FeatureListTemplate.html | 0 js/main.js | 17 ++++------------- 3 files changed, 5 insertions(+), 14 deletions(-) rename js/{ => dijit/templates}/FeatureListTemplate.html (100%) diff --git a/js/FeatureList.js b/js/FeatureList.js index 6cff5fdf..22a1fe52 100644 --- a/js/FeatureList.js +++ b/js/FeatureList.js @@ -6,7 +6,7 @@ define(["dojo/Evented", "dojo/_base/declare", "dojo/_base/lang", "dojo/has", "es "dojo/text!application/dijit/templates/FeatureList.html", "dojo/dom-class", "dojo/dom-attr", "dojo/dom-style", "dojo/dom-construct", "dojo/_base/event", "dojo/string", - "dojo/text!./FeatureListTemplate.html", + "dojo/text!application/dijit/templates/FeatureListTemplate.html", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/PictureMarkerSymbol", "esri/graphic", "esri/dijit/InfoWindow", "dojo/NodeList-dom", "dojo/NodeList-traverse" diff --git a/js/FeatureListTemplate.html b/js/dijit/templates/FeatureListTemplate.html similarity index 100% rename from js/FeatureListTemplate.html rename to js/dijit/templates/FeatureListTemplate.html diff --git a/js/main.js b/js/main.js index 116cb3ea..a9901295 100755 --- a/js/main.js +++ b/js/main.js @@ -19,33 +19,24 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo "dojo/dom-construct", "dojo/dom-style", "dojo/on", "dojo/Deferred", "dojo/promise/all", "dojo/query", "dijit/registry", "dijit/Menu", "dijit/CheckedMenuItem", "application/toolbar", "application/has-config", "esri/arcgis/utils", "esri/lang", - "esri/tasks/query", "esri/tasks/QueryTask", "esri/dijit/HomeButton", "esri/dijit/LocateButton", "esri/dijit/Legend", "esri/dijit/BasemapGallery", "esri/dijit/Measurement", "esri/dijit/OverviewMap", "esri/geometry/Extent", "esri/layers/FeatureLayer", - "dojo/string", - "dojo/text!./FeatureListTemplate.html", - "application/FeatureList", "application/TableOfContents", "application/ShareDialog", - "esri/symbols/SimpleMarkerSymbol", "esri/symbols/PictureMarkerSymbol", "esri/graphic", - "esri/dijit/InfoWindow", - "dojo/NodeList-dom", "dojo/NodeList-traverse"], + "application/FeatureList", "application/TableOfContents", "application/ShareDialog" + ], function ( ready, JSON, array, Color, declare, lang, dom, domGeometry, domAttr, domClass, domConstruct, domStyle, on, Deferred, all, query, registry, Menu, CheckedMenuItem, Toolbar, has, arcgisUtils, esriLang, - Query, QueryTask, HomeButton, LocateButton, Legend, BasemapGallery, Measurement, OverviewMap, Extent, FeatureLayer, - string, - listTemplate, - FeatureList, TableOfContents, ShareDialog, - SimpleMarkerSymbol, PictureMarkerSymbol, Graphic, - InfoWindow) { + FeatureList, TableOfContents, ShareDialog + ) { return declare(null, { config: {}, From b1be6e028405f279976aa05fad0985e1bec40f69 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Fri, 1 Apr 2016 15:19:48 -0400 Subject: [PATCH 104/366] new layout --- css/styles.css | 285 ++++++++++++++++++++++++++++++++++-------------- css/styles1.css | 28 ----- index.html | 44 +++++--- js/main.js | 52 ++++++++- js/toolbar.js | 100 +++++++++-------- 5 files changed, 336 insertions(+), 173 deletions(-) diff --git a/css/styles.css b/css/styles.css index 78487297..8645cd2d 100644 --- a/css/styles.css +++ b/css/styles.css @@ -111,7 +111,8 @@ html, body { margin: 0; height: 100%; width: 100%; - font-family: Arial, Helvetica, sans-serif; } + font-family: Arial, Helvetica, sans-serif; + } .modal-scrollbar { margin-right: 17px; } @@ -132,11 +133,12 @@ html, body { font-weight: normal; } #mapDiv { - position: fixed; + /* position: fixed; */ padding: 0; margin: 0; - width: 100%; - height: 100%; } + width: 100% !important; + height: 100% !important; + } .loading-indicator { /* Loading status */ @@ -523,9 +525,6 @@ img { .bg { display: block; } -.fc { - font-weight: bold; } - .rounded { -webkit-border-radius: 5px; -moz-border-radius: 5px; @@ -534,8 +533,9 @@ img { .roundedTop { -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; } + /* -webkit-border-radius: 5px 5px 0 0; */ + /* border-radius: 5px 5px 0 0; */ + } .shadow { -webkit-box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.3); @@ -544,30 +544,31 @@ img { #panelContent { font-family: Helvetica, Arial, sans-serif; - position: absolute; - right: 15px; - top: 0; - height: 100%; - width: 0px; + /* position: fixed; */ + /* right: 15px; */ + left: 0; + /* top: 0; */ + /* height: 600px; */ + /* width: 500px; */ display: block; - background-color: transparent; - background-color: rgba(0, 0, 0, 0.5); + /* background-color: transparent; */ + /* background-color: rgba(0, 0, 0, 0.5); */ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#80000000,endColorstr=#80000000); } #panelPages { - width: 100%; + /* width: 100%; */ height: 100%; - background-color: transparent; - background-color: rgba(255, 0, 0, 0.5); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#80FF0000,endColorstr=#80FF0000); + /* background-color: transparent; */ + background-color: #F9F9F9; + overflow: auto; } .page { - overflow: visible; - position: relative; - width: 100%; - height: 100%; + /* overflow: visible; */ + /* position: fixed; */ + /* width: 100%; */ + /* height: 500px; */ display: block; background-color: transparent; background-color: rgba(0, 0, 0, 0.5); @@ -576,35 +577,41 @@ img { .pageblank { width: 0px; - height: 100%; } + height: 100%; + } .pageContent { - position: absolute; - left: 10px; - right: 10px; - margin-left: -310px; - width: 300px; - display: block; - overflow: hidden; - max-height: 305px; - top: 100px; - background-color: transparent; + /* position: relative; */ + /* left: 10px; */ + /* right: 10px; */ + /* width: 300px; */ + /* height: 100%; */ + /*display: block;*/ + /*overflow: hidden;*/ + /*max-height: 305px;*/ + /*top: 100px;*/ background-color: white; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFFFF,endColorstr=#FFFFFFFF); } @media only screen and (min-width: 600px) { .pageContent { - max-height: none; } } + /* max-height: none; */ + /* width: 500px; */ + /* left: 0; */ + margin: 0; + } } @media only screen and (min-width: 1070px) { .pageContent { - top: 10px; - max-height: none; } } + /* top: 10px; */ + /* max-height: none; */ + } } /*Panel sizes*/ .small { - max-height: 205px; + /* max-height: 205px; */ + height: 100%; } .medium { @@ -612,26 +619,32 @@ img { } .large { - max-height: 450px; + /* height: 100%; */ } .pageHeader { position: relative; + margin-top: 1px; width: 100%; - height: 90px; - text-align: center; - display: block; } + /* height: 40px; */ + /* text-align: center; */ + /* display: block; */ + /* vertical-align: middle; */ + } .pageTitle { - position: absolute; - left: 80px; - top: 25px; - width: auto; - height: 20px; - font-size: 14px; + /* position: absolute; */ + /* left: 80px; */ + /* top: 25px; */ + /* width: auto; */ + /* height: 20px; */ + font-size: 20px; color: #ffffff; - --line-height: 20px; - overflow: hidden; } + /* --line-height: 20px; */ + overflow: hidden; + padding: 8px 4px; + margin: 0; + } .esriLegendServiceLabel { -webkit-margin-before: 0; @@ -665,12 +678,13 @@ img { cursor: pointer; position: absolute; right: 5px; - top: 9px; + top: 4px; --background: url(../images/close.png) no-repeat; --background-size: 24px; width: 24px; height: 24px; - display: block; } + display: block; + } .pageUp { position: absolute; @@ -695,14 +709,16 @@ img { display: block; } .pageBody { - position: relative; - -- height: 100%; + /* position: relative; */ + -- + height: 100%; top: 0; display: block; width: 100%; color: #000000; overflow-x: hidden; - overflow-y: auto; + overflow-y: auto; + margin: 0; } #pageBody_overview { @@ -739,17 +755,19 @@ img { max-height: 80%; } } .desc { - padding: 30px 10px 20px 20px; - max-width: 288px; - color: rgb(93, 93, 124); + padding: 20px 10px 20px 20px; + /* max-width: 288px; */ + color: rgb(60, 60, 90); + height: 580px; + /* overflow: auto; */ } #panelTop { - position: fixed; - left: 0px; - top: 0px; - width: 100%; - color: #ffffff; + /* position: fixed; */ + /* left: 0px; */ + /* top: 0px; */ + /* width: 100%; */ + /* color: #ffffff; */ padding: 0px; display: block; overflow: visible; @@ -757,17 +775,19 @@ img { -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; - border-radius: 0; } + /* border-radius: 0; */ + } @media only screen and (min-width: 760px) { #panelTop { width: auto; - left: 44px; - top: 10px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - border-radius: 5px; } } + /* left: 44px; */ + /* top: 10px; */ + /* -webkit-border-radius: 5px; */ + /* -moz-border-radius: 5px; */ + /* -ms-border-radius: 5px; */ + /* border-radius: 5px; */ + } } #panelTitle { height: 50px; @@ -778,7 +798,8 @@ img { border-bottom: 1px solid rgba(255, 255, 255, 0.5); font-family: "Helvetica Neue", "Arial", sans-serif; font-weight: normal; - font-size: 25px; } + font-size: 25px; + } .no-search #panelText { display: block; } @@ -789,7 +810,7 @@ img { overflow: hidden; float: left; line-height: 50px; - margin-left: 5px; + margin-left: 5px; padding-top: 7px; } @@ -845,12 +866,14 @@ img { top: 0px; min-height: 30px; width: 100%; - display: block; - clear: both; } + /* display: block; */ + clear: both; + } @media only screen and (min-width: 720px) { #panelTools { - display: block !important; } } + /* display: block !important; */ + } } #panelMenu { position: absolute; @@ -1450,14 +1473,14 @@ input[type='checkbox']:focus { .rounded { -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; + /* -webkit-border-radius: 5px 5px 5px 5px; */ + /* border-radius: 5px 5px 5px 5px; */ } .roundedTop { -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; + /* -webkit-border-radius: 5px 5px 0 0; */ + /* border-radius: 5px 5px 0 0; */ } .roundedBottom { @@ -1518,3 +1541,105 @@ h3 { .esriLegendMsg { margin-bottom: 18px; } + +html, body { + width: 100%; + height: 100%; + margin: 0; + overflow:hidden; +} + +#borderContainer { + width: 100%; + height: 100%; +} + +.dijitSplitterV, .dijitGutterV { + background: none; + border: 0; + width: 5px; + margin: 0; +} +.dijitSplitterV .dijitSplitterThumb { + background: #b5bcc7 none; + height: 19px; + left: 2px; + width: 10px; + margin: 0; + overflow: hidden; + position: absolute; + top: 49%; +} + +.dj_a11y .dijitSplitterV { + border-left: 1px solid #d3d3d3 !important; + border-right: 1px solid #d3d3d3 !important; +} +.dijitSplitterV { + width: 7px; + border-left: 1px; + border-right: 1px; + cursor: col-resize; + -webkit-tap-highlight-color: transparent; +} + +.dijitSplitter { + position: absolute; + overflow: hidden; + z-index: 10; + background-color: #fff; + border-color: gray; + border-style: solid; + border-width: 0; +} + +#featuresList { + list-style: none; + margin: 0; + /* -webkit-margin-before: -10px; */ + -webkit-padding-start: 0; +} +#featuresList li { + margin-bottom: 4px; + margin-left: -10px; + padding: 2px; + padding-left: 10px; +} + +.showAttr { + display: grid; +} + +.hideAttr { + display:none; + height: 0; +} + +.borderLi { + border: solid 1px #037eaf; +} + +.featureItem h2 { + +font-size: 16px; + +text-align: left; +} + +#mapDiv { + /* position: absolute !important; */ + /* padding: 25px; */ + /* margin: 0; */ + width: 100%; + height: 100%; +} + +.splitterContent { + overflow-y: hidden !important; + height: 100% !important; + position: fixed !important; +} + +td, th { + /* display: -webkit-inline-box; */ +} \ No newline at end of file diff --git a/css/styles1.css b/css/styles1.css index 7371792f..475855f0 100644 --- a/css/styles1.css +++ b/css/styles1.css @@ -106,31 +106,3 @@ tr[tabindex='0']:focus color: #c6c6c1; !important } -#featuresList { - list-style: none; - margin: 0; - /* -webkit-margin-before: -10px; */ - -webkit-padding-start: 0; -} -#featuresList li { - margin-bottom: 4px; - margin-left: -10px; - padding: 2px; - padding-left: 10px; -} - -.showAttr { - display:; -} - -.hideAttr { - display:none; -} - -.borderLi { - border: solid 1px #037eaf; -} - -.featureItem h2 { - font-size: 16px; -} \ No newline at end of file diff --git a/index.html b/index.html index 43fbc5d3..521d2702 100644 --- a/index.html +++ b/index.html @@ -24,6 +24,8 @@ + + @@ -33,29 +35,34 @@ -
- -
-
-
- -
- -
-

WCAG Viewer

-
-
+ +
+
+
+ +
+

WCAG Viewer

+
+
+
+
+
+ + + +
+
+
-
- - - + < + diff --git a/js/main.js b/js/main.js index a9901295..7b18ac27 100755 --- a/js/main.js +++ b/js/main.js @@ -19,24 +19,31 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo "dojo/dom-construct", "dojo/dom-style", "dojo/on", "dojo/Deferred", "dojo/promise/all", "dojo/query", "dijit/registry", "dijit/Menu", "dijit/CheckedMenuItem", "application/toolbar", "application/has-config", "esri/arcgis/utils", "esri/lang", + "dijit/layout/BorderContainer", "dijit/layout/ContentPane", + "esri/tasks/query", "esri/tasks/QueryTask", "esri/dijit/HomeButton", "esri/dijit/LocateButton", "esri/dijit/Legend", "esri/dijit/BasemapGallery", "esri/dijit/Measurement", "esri/dijit/OverviewMap", "esri/geometry/Extent", "esri/layers/FeatureLayer", - "application/FeatureList", "application/TableOfContents", "application/ShareDialog" - ], + "application/FeatureList", "application/TableOfContents", "application/ShareDialog", + "esri/symbols/SimpleMarkerSymbol", "esri/symbols/PictureMarkerSymbol", "esri/graphic", + "esri/dijit/InfoWindow", + "dojo/NodeList-dom", "dojo/NodeList-traverse"], function ( ready, JSON, array, Color, declare, lang, dom, domGeometry, domAttr, domClass, domConstruct, domStyle, on, Deferred, all, query, registry, Menu, CheckedMenuItem, Toolbar, has, arcgisUtils, esriLang, + BorderContainer, ContentPane, + Query, QueryTask, HomeButton, LocateButton, Legend, BasemapGallery, Measurement, OverviewMap, Extent, FeatureLayer, - FeatureList, TableOfContents, ShareDialog - ) { + FeatureList, TableOfContents, ShareDialog, + SimpleMarkerSymbol, PictureMarkerSymbol, Graphic, + InfoWindow) { return declare(null, { config: {}, @@ -232,6 +239,43 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo // Create UI _createUI: function () { + + var borderContainer = new BorderContainer({ + design:'sidebar', + gutters:'true', + liveSplitters:'true', + id:"borderContainer" + }); + + + + + + var contentPaneLeft = new ContentPane({ + region: "leading", + splitter: 'true', + style: "width:500px; padding:0; height: 600px !important; overflow: none;", + content: dom.byId("leftPanel"), + class: "splitterContent" + }); + // contentPaneLeft.content=domConstruct.create('div'); + borderContainer.addChild(contentPaneLeft); + + // creating a ContentPane as the Right pane in the BorderContainer + var contentPaneRight = new ContentPane({ + region: "center", + splitter:'true', + style: "padding:0", + content: dom.byId("mapDiv"), + }); + borderContainer.addChild(contentPaneRight); + + //place BorderContainer to the document Body + + borderContainer.placeAt(document.body); + borderContainer.startup(); + + domStyle.set("panelPages", "visibility", "hidden"); //Add tools to the toolbar. The tools are listed in the defaults.js file var toolbar = new Toolbar(this.config); diff --git a/js/toolbar.js b/js/toolbar.js index 9524bab5..da8d47a9 100644 --- a/js/toolbar.js +++ b/js/toolbar.js @@ -1,5 +1,9 @@ -define(["dojo/Evented", "dojo/_base/declare", "dojo/_base/window", "dojo/_base/fx", "dojo/_base/html", "dojo/_base/lang", "dojo/has", "dojo/dom", "dojo/dom-class", "dojo/dom-style", "dojo/dom-attr", "dojo/dom-construct", "dojo/dom-geometry", "dojo/on", "dojo/mouse", "dojo/query", "dojo/Deferred"], function ( -Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, domConstruct, domGeometry, on, mouse, query, Deferred) { +define([ + "dojo/Evented", "dojo/_base/declare", "dojo/_base/window", "dojo/_base/fx", + "dojo/_base/html", "dojo/_base/lang", "dojo/has", "dojo/dom", + "dojo/dom-class", "dojo/dom-style", "dojo/dom-attr", "dojo/dom-construct", "dojo/dom-geometry", "dojo/on", "dojo/mouse", "dojo/query", "dojo/Deferred"], function ( +Evented, declare, win, fx, html, lang, has, dom, +domClass, domStyle, domAttr, domConstruct, domGeometry, on, mouse, query, Deferred) { return declare([Evented], { map: null, @@ -19,12 +23,14 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do startup: function () { var deferred = this._init(); - deferred.then(lang.hitch(this, function (config) { - // optional ready event to listen to - this.emit("ready", config); - }), lang.hitch(this, function (error) { - // optional error event to listen to - this.emit("error", error); + deferred.then( + lang.hitch(this, function (config) { + // optional ready event to listen to + this.emit("ready", config); + }), + lang.hitch(this, function (error) { + // optional error event to listen to + this.emit("error", error); })); return deferred; }, @@ -65,11 +71,6 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do })); domConstruct.empty(this.pPages); // add blank page - domConstruct.create("div", { - className: "pageblank", - id: "page_blank" - }, this.pPages); - deferred.resolve(); return deferred.promise; @@ -112,7 +113,7 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do var pTool = domConstruct.create("input", { type:"image", className: "panelTool", - id: "panelTool_" + name, + id: "toolButton_" + name, "aria-label": tip, alt: tip, src: "images/icons_" + this.config.icons + "/" + name + ".png", @@ -128,7 +129,7 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do // add page var page = domConstruct.create("div", { - className: "page", + className: "page hideAttr", id: "page_" + name, }, this.pPages); @@ -152,10 +153,10 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do id: "pagetitle_" + name }, pageHeader); - domConstruct.create("div", { - className: "pageHeaderImg", - innerHTML: "" - }, pageHeader); + // domConstruct.create("div", { + // className: "pageHeaderImg", + // innerHTML: "" + // }, pageHeader); var pageBody = domConstruct.create("div", { @@ -183,27 +184,27 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do }, "pageHeader_" + name); on(pageClose, "click", lang.hitch(this, this._closePage, name)); - var pageUp = domConstruct.create("input", { - type: "image", - className: "pageUp", - "aria-label": "Previous Page", - src: 'images/up.png', - alt: 'Previous Page', - title: 'Previous Page', - }, "pageHeader_" + name); - on(pageUp, "click", lang.hitch(this, this._showPreviousPage, name)); - - if (name != this.tools[this.tools.length - 1]) { - var pageDown = domConstruct.create("input", { - type: "image", - className: "pageDown", - "aria-label": "Next Page", - src: 'images/down.png', - alt: 'Next Page', - title: 'Next Page', - }, "pageHeader_" + name); - on(pageDown, "click", lang.hitch(this, this._showNextPage, name)); - } + // var pageUp = domConstruct.create("input", { + // type: "image", + // className: "pageUp", + // "aria-label": "Previous Page", + // src: 'images/up.png', + // alt: 'Previous Page', + // title: 'Previous Page', + // }, "pageHeader_" + name); + // on(pageUp, "click", lang.hitch(this, this._showPreviousPage, name)); + + // if (name != this.tools[this.tools.length - 1]) { + // var pageDown = domConstruct.create("input", { + // type: "image", + // className: "pageDown", + // "aria-label": "Next Page", + // src: 'images/down.png', + // alt: 'Next Page', + // title: 'Next Page', + // }, "pageHeader_" + name); + // on(pageDown, "click", lang.hitch(this, this._showNextPage, name)); + // } var pageContent = dom.byId("pageContent_" + name); domAttr.set(pageContent, 'data-name', name); @@ -296,7 +297,20 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do }, _toolClick: function (name) { - this._showPage(name); + var id ="page_"+name; + var page = dom.byId(id); + + var hidden = page.classList.contains("hideAttr"); + var pages = query(".page"); + pages.forEach(function(p){ + if(hidden && p === page) { + domClass.remove(p,"hideAttr"); + domClass.add(p, "showAttr"); + } else { + domClass.add(p,"hideAttr"); + domClass.remove(p, "showAttr"); + } + }); }, _atachEnterKey: function(onButton, clickButton) { @@ -337,7 +351,7 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do _closePage: function (name) { this._scrollToPage(0); - var tool = dom.byId("panelTool_" + name); + var tool = dom.byId("toolButton_" + name); if(tool) { tool.focus(); @@ -443,7 +457,7 @@ Evented, declare, win, fx, html, lang, has, dom, domClass, domStyle, domAttr, do query(".panelTool").removeClass("panelToolActive"); var name = this.tools[num - 1]; if (name) { - domClass.add("panelTool_" + name, "panelToolActive"); + domClass.add("toolButton_" + name, "panelToolActive"); } this.emit("updateTool", name); }, From 8c1eb2536661c214d494dbf253c6533b9240d26c Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Fri, 1 Apr 2016 16:29:31 -0400 Subject: [PATCH 105/366] Pan and Zoom --- index.html | 2 +- js/FeatureList.js | 68 +++++++-------------- js/dijit/templates/FeatureListTemplate.html | 12 +++- js/main.js | 8 --- 4 files changed, 33 insertions(+), 57 deletions(-) diff --git a/index.html b/index.html index 521d2702..f7b2817f 100644 --- a/index.html +++ b/index.html @@ -38,7 +38,7 @@ -
+
diff --git a/js/FeatureList.js b/js/FeatureList.js index 22a1fe52..a6563813 100644 --- a/js/FeatureList.js +++ b/js/FeatureList.js @@ -35,21 +35,12 @@ define(["dojo/Evented", "dojo/_base/declare", "dojo/_base/lang", "dojo/has", "es }, constructor: function (options, srcRefNode) { - // mix in settings and defaults var defaults = lang.mixin({}, this.options, options); - // widget node this.domNode = srcRefNode; // properties this.set("map", defaults.map); this.set("layers", defaults.layers); -// this.set("theme", defaults.theme); -// this.set("visible", defaults.visible); - // listeners -// this.watch("theme", this._updateThemeWatch); -// this.watch("visible", this._visible); -// this.watch("layers", this._refreshLayers); -// this.watch("map", this.refresh); // this.markerSymbol = new SimpleMarkerSymbol({ // "color": [3,126,175,20], @@ -76,32 +67,14 @@ define(["dojo/Evented", "dojo/_base/declare", "dojo/_base/lang", "dojo/has", "es "height": 35 }); this.css = { - container: "toc-container", -// layer: "toc-layer", -// firstLayer: "toc-first-layer", -// title: "toc-title", -// titleContainer: "toc-title-container", -// content: "toc-content", -// titleCheckbox: "checkbox", -// checkboxCheck: "icon-check-1", -// titleText: "checkbox", -// accountText: "toc-account", -// visible: "toc-visible", -// settingsIcon: "icon-cog", -// settings: "toc-settings", -// actions: "toc-actions", -// account: "toc-account", -// clear: "clear" }; }, startup: function () { - // map not defined if (!this.map) { this.destroy(); console.log("FeaturesList::map required"); } - // when map is loaded if (this.map.loaded) { this._init(); } else { @@ -112,7 +85,6 @@ define(["dojo/Evented", "dojo/_base/declare", "dojo/_base/lang", "dojo/has", "es }, _init: function () { -// this._visible(); this._createList(); this.set("loaded", true); this.emit("load", {}); @@ -136,6 +108,26 @@ define(["dojo/Evented", "dojo/_base/declare", "dojo/_base/lang", "dojo/has", "es } } + window.featurePanZoom = function(btn, panOnly) { + console.log(btn); + values = btn.attributes.tag.value.split(','); + var r = window.tasks[values[0]]; + var fid = values[1]; + var layer = r.layer; + + q = new Query(); + q.where = "[FID]='"+fid+"'"; + q.outFields = ["FID"]; + q.returnGeometry = true; + r.task.execute(q).then(function(ev) { + if(panOnly) { + layer._map.centerAt(ev.features[0].geometry); + } else { + layer._map.centerAndZoom(ev.features[0].geometry, 10); + } + }); + }; + window._prevSelected = null; window.featureExpand = function(checkBox, restore) { if(_prevSelected && !restore) { @@ -179,8 +171,8 @@ define(["dojo/Evented", "dojo/_base/declare", "dojo/_base/lang", "dojo/has", "es dojo.query('.featureItem_'+_prevSelected).forEach(function(e) { dojo.removeClass(e, 'showAttr'); dojo.addClass(e, 'hideAttr'); - window._prevSelected = null; }); + window._prevSelected = null; } }; @@ -278,25 +270,7 @@ define(["dojo/Evented", "dojo/_base/declare", "dojo/_base/lang", "dojo/has", "es return null; } }; - }, - - - -// _updateThemeWatch: function () { -// var oldVal = arguments[1]; -// var newVal = arguments[2]; -// domClass.remove(this.domNode, oldVal); -// domClass.add(this.domNode, newVal); -// }, - -// _visible: function () { -// if (this.get("visible")) { -// domStyle.set(this.domNode, "display", "block"); -// } else { -// domStyle.set(this.domNode, "display", "none"); -// } -// } }); if (has("extend-esri")) { lang.setObject("dijit.FeaturesList", Widget, esriNS); diff --git a/js/dijit/templates/FeatureListTemplate.html b/js/dijit/templates/FeatureListTemplate.html index defec379..47f784f7 100644 --- a/js/dijit/templates/FeatureListTemplate.html +++ b/js/dijit/templates/FeatureListTemplate.html @@ -8,6 +8,16 @@

${_title}

- ${_content} +
+ + + + ${_content}
- + -

${_title}

+

${_title}

\n'; content+=' '+pField.label+'::'; + if(pField.format && pField.format.dateFormat) { + content+='FORMAT_DATE('+fieldName+',"'+pField.format.dateFormat+'")'; + } + else { + content+=fieldName; + } + content+='
:'; - if(pField.format && pField.format.dateFormat) { - content+='FORMAT_DATE('+fieldName+',"'+pField.format.dateFormat+'")'; - } - else { - content+=fieldName; - } - content+='
:'; + if(pField.format && pField.format.dateFormat) { + content+='FORMAT_DATE('+fieldName+',"'+pField.format.dateFormat+'")'; + } + else { + content+=fieldName; + } + content+='
:'; - if(pField.format && pField.format.dateFormat) { - content+='FORMAT_DATE('+fieldName+',"'+pField.format.dateFormat+'")'; - } - else { - content+=fieldName; - } - content+='
+ + + + + +
diff --git a/js/main.js b/js/main.js index 7b18ac27..9b151247 100755 --- a/js/main.js +++ b/js/main.js @@ -247,10 +247,6 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo id:"borderContainer" }); - - - - var contentPaneLeft = new ContentPane({ region: "leading", splitter: 'true', @@ -258,10 +254,8 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo content: dom.byId("leftPanel"), class: "splitterContent" }); - // contentPaneLeft.content=domConstruct.create('div'); borderContainer.addChild(contentPaneLeft); - // creating a ContentPane as the Right pane in the BorderContainer var contentPaneRight = new ContentPane({ region: "center", splitter:'true', @@ -270,8 +264,6 @@ define(["dojo/ready", "dojo/json", "dojo/_base/array", "dojo/_base/Color", "dojo }); borderContainer.addChild(contentPaneRight); - //place BorderContainer to the document Body - borderContainer.placeAt(document.body); borderContainer.startup(); From 5f128113c34f5cb65b3e879df62b438b1840c357 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Fri, 1 Apr 2016 17:12:55 -0400 Subject: [PATCH 106/366] Search panel --- css/styles.css | 17 +++++++++++------ index.html | 9 +++++---- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/css/styles.css b/css/styles.css index 8645cd2d..a8d4a68f 100644 --- a/css/styles.css +++ b/css/styles.css @@ -841,24 +841,29 @@ img { @media only screen and (min-width: 720px) { #panelText { display: block; - max-width: 300px; } } + max-width: 300px; + } } @media only screen and (min-width: 800px) { #panelText { - max-width: 400px; } } + max-width: 400px; + } } #panelText.nosearch { display: block; } #panelSearch { - float: left; - margin: 10px 0 10px 20px; - height: 30px; } + float: left !important; + margin: 2px !important; + /* height: 30px; */ + /* display: -webkit-inline-box; */ + } @media only screen and (min-width: 720px) { #panelSearch { margin: 10px 4px 10px 20px; - float: right; } } + float: right; + } } #panelTools { position: relative; diff --git a/index.html b/index.html index f7b2817f..953e061d 100644 --- a/index.html +++ b/index.html @@ -44,14 +44,15 @@

WCAG Viewer

-
-
-
+
+ +
+
- From a26f38ca4ba38f7f0e2b9786a16f45f00910561e Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Fri, 1 Apr 2016 18:27:32 -0400 Subject: [PATCH 107/366] Cleanup --- js/dijit/templates/FeatureListTemplate.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/js/dijit/templates/FeatureListTemplate.html b/js/dijit/templates/FeatureListTemplate.html index 47f784f7..e56f8134 100644 --- a/js/dijit/templates/FeatureListTemplate.html +++ b/js/dijit/templates/FeatureListTemplate.html @@ -10,11 +10,9 @@

${_tit - + - - - + From 3d9f55404681dd331e001e44f44ae89c2e833369 Mon Sep 17 00:00:00 2001 From: Horia Tudosie Date: Fri, 1 Apr 2016 21:54:53 -0400 Subject: [PATCH 108/366] better oane height --- css/styles1.css | 2 +- index.html | 10 +++++----- js/dijit/templates/FeatureList.html | 2 +- js/main.js | 2 +- js/toolbar.js | 20 ++++++++++---------- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/css/styles1.css b/css/styles1.css index 475855f0..b3313b6a 100644 --- a/css/styles1.css +++ b/css/styles1.css @@ -1,6 +1,6 @@ li[role='menuitem']:hover, div[role='button']:not(.searchBtn):not(.searchClear):hover, -div[tabindex='0']:not(.pageClose):not(.pageUp):not(.pageDown):not(.searchBtn):not(.searchClear):not(.ovwHighlight):hover, +div[tabindex='0']:not(.desc):not(.pageClose):not(.pageUp):not(.pageDown):not(.searchBtn):not(.searchClear):not(.ovwHighlight):hover, .no-touch .esriMeasurement .esriButton .dijitButtonNode:hover, #dijit_form_ComboButton_0_arrow:hover, button:hover, diff --git a/index.html b/index.html index 953e061d..db705684 100644 --- a/index.html +++ b/index.html @@ -40,19 +40,19 @@
-
+
-
+

WCAG Viewer

-
- +
+
- diff --git a/js/dijit/templates/FeatureList.html b/js/dijit/templates/FeatureList.html index 23418192..66ba1a04 100644 --- a/js/dijit/templates/FeatureList.html +++ b/js/dijit/templates/FeatureList.html @@ -1,4 +1,4 @@ -