Skip to content

Instantly share code, notes, and snippets.

@kflaw
Created May 3, 2017 14:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kflaw/3ba1aca7dcc8e976f90e099d474c80da to your computer and use it in GitHub Desktop.
Save kflaw/3ba1aca7dcc8e976f90e099d474c80da to your computer and use it in GitHub Desktop.
define([
'dojo/_base/declare',
'dijit/_WidgetBase',
'dijit/_TemplatedMixin',
'dijit/_WidgetsInTemplateMixin',
'dijit/form/Button',
'dojo/_base/lang',
'dojo/_base/array',
'dojo/dom',
'dojo/on',
'dojo/number',
'dojo/parser',
'dojo/ready',
'dojo/dom-style',
'dojo/text!./LayerFilter/templates/LayerFilter.html',
'dojo/topic',
'xstyle/css!./LayerFilter/css/LayerFilter.css',
'dojo/dom-construct',
'dojo/_base/Color',
'esri/geometry/Extent',
'esri/graphic',
'esri/IdentityManager',
'esri/symbols/SimpleFillSymbol',
'esri/symbols/SimpleLineSymbol',
'esri/Color',
'esri/layers/ArcGISDynamicMapServiceLayer',
'esri/layers/ImageParameters',
'esri/tasks/IdentifyTask',
'esri/tasks/IdentifyParameters',
'esri/InfoTemplate',
'esri/layers/GraphicsLayer',
'esri/tasks/QueryTask',
'dijit/form/MultiSelect',
'esri/symbols/TextSymbol',
'esri/geometry/Point',
'esri/symbols/Font',
'esri/renderers/SimpleRenderer',
'dijit/layout/BorderContainer',
'dijit/layout/ContentPane',
'esri/layers/FeatureLayer',
'esri/dijit/FeatureTable',
'dojo/dom-style',
'dijit/registry',
'dojo/domReady!',
], function (declare, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, Button, lang, array, dom, on, dojoNum, parser, ready,
domStyle, template, topic, css, domConstruct, dojoColor, Extent, Graphic, IdentityManager, SimpleFillSymbol, SimpleLineSymbol, Color,
ArcGISDynamicMapServiceLayer, ImageParameters, IdentifyTask, IdentifyParameters, InfoTemplate, GraphicsLayer, QueryTask,
MultiSelect, TextSymbol, Point, Font, SimpleRenderer, BorderContainer, ContentPane, FeatureLayer, FeatureTable, domStyle,
registry, domReady) {
var dynamicMapServiceLayer;
var map;
var mapsUrl = 'http://sv04gis:6080/arcgis/rest/services/ROW/MapIndex/MapServer/15';
var prclsUrl = 'http://sv04gis:6080/arcgis/rest/services/ROW/MapIndex/MapServer/16';
var flaUrl = 'http://sv04gis:6080/arcgis/rest/services/ROW/MapIndex/MapServer/14';
var agrmntUrl = 'http://sv04gis:6080/arcgis/rest/services/ROW/Agreements/MapServer/0';
var mapsLyr = new GraphicsLayer({
id : 'mapsLayer'
});
var labelsLyr = new GraphicsLayer({
id : 'labelsLayer'
});
var agrmntsLyr = new GraphicsLayer({
id : 'agrmntsLayer'
});
var selectedGraphicsLyr = new GraphicsLayer({
id : 'selectedGraphics'
});
labelsLyr.setMinScale(9027.977411);
var filterLayerDefs = [];
var imageParameters = new ImageParameters();
imageParameters.format = "png32";
imageParameters.layerDefinitions = filterLayerDefs;
var searchResults = [];
var appraisalSymbol =
new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new Color([0, 170, 255]), 2), new Color([255, 255, 255, 0]));
var bridgeSymbol =
new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new Color([170, 85, 255]), 2), new Color([255, 255, 255, 0]));
var hardCopySymbol =
new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new Color([255, 84, 255]), 2), new Color([255, 255, 255, 0]));
var recordSymbol =
new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new Color([255, 85, 0]), 2), new Color([255, 255, 255, 0]));
var surveySymbol =
new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new Color([0, 255, 0]), 2), new Color([255, 255, 255, 0]));
var searchResultsSymbol =
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new Color([115, 255, 255]), 2);
var coopAgrmntSymbol =
new SimpleFillSymbol(SimpleFillSymbol.STYLE_FORWARD_DIAGONAL,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new Color([163, 255, 115]), 2));
var fwyAgrmntSymbol =
new SimpleFillSymbol(SimpleFillSymbol.STYLE_BACKWARD_DIAGONAL,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new Color([223, 115, 255]), 2));
var maintAgrmntSymbol =
new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new Color([223, 170, 0]), 2), new Color([255, 211, 127, 0.6]));
var myFeatureLayer;
var myFeatureTable;
var featuresList;
var searchTxt;
var feat_url;
var feat_fields;
var field_aliases;
var query_field;
var query_text;
var query_text_contains;
var selectQueryVal;
var id;
var extentLayerDef;
return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {
name : 'LayerFilter',
map : true,
widgetsInTemplate : true,
templateString : template,
mapClickMode : null,
postCreate : function () {
this.inherited(arguments);
map = this.map;
// this.initTrace();
},
getMapLayerID : function () {
if (this.ROWpane.get('selected')) {
dynamicMapServiceLayer = map.getLayer('mapSets');
id = 15;
} else if (this.agrmntPane.get('selected')) {
dynamicMapServiceLayer = map.getLayer('agreements');
id = 0;
}
else if (this.prclsPane.get('selected')) {
id = 16;
}
},
createFeatureLayer : function () {
if (this.ROWpane.get('selected')) {
feat_url = mapsUrl;
feat_fields =
['shtlabel', 'county', 'rte', 'postmile', 'maptype', 'hangingfilegroup',
'mapdate', 'mapdecade', 'geo_referenced_datum', 'image_web_path',
'error_report_path'
];
query_field = ["shtlabel"];
query_text = "shtlabel = ";
query_text_contains = "shtlabel LIKE '%"
} else if (this.agrmntPane.get('selected')) {
query_field = ["name"];
query_text = "name = ";
query_text_contains = "name LIKE '%"
feat_url = agrmntUrl;
feat_fields = ['name', 'county', 'route', 'bpm', 'epm', 'agency', 'descrip',
'effdate', 'termdate', 'weblink'];
} else if (this.prclsPane.get('selected')) {
if (this.prclType.value == 'parcel') {
feat_url = prclsUrl;
feat_fields = ['parcel_num', 'county', 'route', 'pm', 'area_raw', 'mapsheet',
'notes', 'geom_quality', 'data_source', 'record_date', 'dispdate', 'category',
'deed_path_web'
];
query_field = ["parcel_num"];
query_text = "parcel_num = ";
query_text_contains = "parcel_num LIKE '%"
} else if (this.prclType.value == 'freeway lease area') {
feat_url = flaUrl;
feat_fields = ['name', 'city', 'county', 'route', 'postmile', 'areatext',
'referencemap', 'geomqualty', 'weblink'
];
query_field = ["Name"];
query_text = 'Name = ';
query_text_contains = "Name LIKE '%"
}
}
myFeatureLayer = new FeatureLayer(feat_url, {
mode : FeatureLayer.MODE_ONDEMAND,
outFields : feat_fields,
visible : true,
id : "fLayer",
name : 'flayer',
});
},
createFeatureTable : function () {
if (myFeatureTable) {
myFeatureTable.destroy();
registry.byId("sidebarBottom").domNode.innerHTML = '<div id="resultsGrid"></div>';
}
if (this.ROWpane.get('selected')) {
field_aliases = [{
name : 'shtlabel',
alias : 'Map Name'
}, {
name : 'County',
alias : 'County'
}, {
name : 'rte',
alias : 'Route'
}, {
name : 'postmile',
alias : 'Postmile'
}, {
name : 'maptype',
alias : 'Map Type'
}, {
name : 'hangingfilegroup',
alias : 'Hanging File'
}, {
name : 'mapdate',
alias : 'Revision Date'
}, {
name : 'mapdecade',
alias : 'Original Draft Year'
}, {
name : 'geo_referenced_datum',
alias : 'Coordinate System'
}, {
name : 'image_web_path',
alias : 'PDF Link'
}, {
name : 'error_report_path',
alias : 'Report Error'
}
];
} else if (this.agrmntPane.get('selected')) {
field_aliases = [{
name : 'name',
alias : 'Name'
}, {
name : 'county',
alias : 'County'
}, {
name : 'route',
alias : 'Route'
}, {
name : 'bpm',
alias : 'Beginning Postmile'
}, {
name : 'epm',
alias : 'Ending Postmile'
}, {
name : 'agency',
alias : 'Agency'
}, {
name : 'descrip',
alias : 'Description'
}, {
name : 'ea',
alias : 'EA'
}, {
name : 'effdate',
alias : 'Effective Date'
}, {
name : 'termdate',
alias : 'Termination Date'
}, {
name : 'weblink',
alias : 'PDF Link'
}
];
} else if (this.prclsPane.get('selected')) {
if (this.prclType.value == 'parcel') {
field_aliases = [{
name : 'parcel_num',
alias : 'Parcel Number'
}, {
name : 'county',
alias : 'County'
}, {
name : 'route',
alias : 'Route'
}, {
name : 'pm',
alias : 'Postmile'
}, {
name : 'area_raw',
alias : 'Area'
}, {
name : 'mapsheet',
alias : 'Map Sheet'
}, {
name : 'descrip',
alias : 'Parcel Type'
}, {
name : 'geom_quality',
alias : 'Geometry Source'
}, {
name : 'data_source',
alias : 'Source'
}, {
name : 'record_date',
alias : 'Record Date'
}, {
name : 'dispdate',
alias : 'Disposal Date'
},{
name : 'category',
alias : 'Parcel Type'
},{
name : 'deed_path_web',
alias : 'PDF Link'
}
];
} else if (this.prclType.value == 'freeway lease area') {
field_aliases = [{
name : 'name',
alias : 'FLA ID'
}, {
name : 'city',
alias : 'City'
}, {
name : 'county',
alias : 'County'
}, {
name : 'route',
alias : 'Route'
}, {
name : 'postmile',
alias : 'Postmile'
}, {
name : 'areatext',
alias : 'Area'
}, {
name : 'referencemap',
alias : 'Reference Map'
}, {
name : 'geomqualty',
alias : 'Geometry Source'
}, {
name : 'weblink',
alias : 'PDF Link'
}
];
}
}
myFeatureTable = new FeatureTable({
featureLayer : myFeatureLayer,
map : map,
showGridMenu : true,
gridOptions : {
allowSelectAll : true,
allowTextSelection : true,
columnHider: true
},
editable : false,
dateOptions : {
//set date options at the feature table level
//all date fields will adhere this
datePattern : "MMMM d, y"
},
//define order and visibility of fields. If the fields are not listed in 'outFIelds'
// then they will be hidden when the table starts.
outFields : feat_fields,
fieldInfos : field_aliases,
}, "resultsGrid");
myFeatureTable.startup();
this.resizeGrid();
topic.publish('viewer/togglePane', {
pane : 'bottom',
show : 'block'
});
myFeatureTable.on('load', function () {
myFeatureTable.grid.refresh();
});
myFeatureTable.on("row-select", lang.hitch(this, function (evt) {
//map.graphics.clear();
if (this.ROWpane.get('selected')) {
selectQueryVal = evt[0].data.shtlabel;
} else if (this.prclsPane.get('selected')) {
if(this.prclType.value=='parcel'){
selectQueryVal = evt[0].data.parcel_num;
}else if (this.prclType.value=='freeway lease area'){
selectQueryVal=evt[0].data.name
}
} else if (this.agrmntPane.get('selected')) {
selectQueryVal = evt[0].data.name;
}
queryTaskSelect = new esri.tasks.QueryTask(feat_url);
querySelect = new esri.tasks.Query();
querySelect.returnGeometry = true;
querySelect.outFields = ["*"];
querySelect.where = query_text + "'" + selectQueryVal + "'";
queryTaskSelect.execute(querySelect, lang.hitch(this, function (fset) {
for (var i = 0; i < fset.features.length; i++) {
// Get the current feature from the featureSet.
// Feature is a graphic
var selectGraphic = fset.features[i];
selectGraphic.setSymbol(searchResultsSymbol);
//graphic.setInfoTemplate(infoWin);
selectedGraphicsLyr.add(selectGraphic);
map.addLayer(selectedGraphicsLyr);
}
map.setExtent(esri.graphicsExtent(fset.features));
}))
}));
myFeatureTable.on("row-deselect", lang.hitch(this, function (evt) {
selectedGraphicsLyr.clear();
map.removeLayer(selectedGraphicsLyr);
}));
},
resizeGrid : function () {
domStyle.set("resultsGrid", "width", "100%");
},
destroyFeatureTable : function () {
if (myFeatureTable){
myFeatureTable.destroy();
}
topic.publish('viewer/togglePane', {
pane : 'bottom',
show : 'none'
});
},
onSearchByName : function () {
this.SearchByName();
},
SearchByName : function () {
this.getMapLayerID();
if (this.ROWpane.get('selected')) {
searchTxt = this.searchTextDijit.value.charAt(0).toUpperCase() + this.searchTextDijit.value.substring(1,20).toLowerCase();
} else if (this.prclsPane.get('selected')) {
searchTxt = this.searchPrclTextDijit.value.substring(0).toUpperCase();
} else if (this.agrmntPane.get('selected')) {
searchTxt = this.searchAgrmntTextDijit.value.substring(0).toUpperCase();
}
if (searchTxt != '' && searchTxt.length >2) {
this.createFeatureLayer();
if (this.ROWpane.get('selected')) {
mapsLyr.clear();
labelsLyr.clear();
if (this.containsSearchTextMaps.checked == false) {
filterLayerDefs[id] = query_text_contains + searchTxt + "%'";
} else {
filterLayerDefs[id] = query_text + "'" + searchTxt + "'";
}
} else if (this.agrmntPane.get('selected')) {
agrmntsLyr.clear();
if (this.containsSearchTextAgrmnt.checked == false) {
filterLayerDefs[id] = query_text_contains + searchTxt + "%'";
} else {
filterLayerDefs[id] = query_text + "'" + searchTxt + "'";
}
} else if (this.prclsPane.get('selected')) {
if (this.containsSearchTextPrcls.checked == false){
filterLayerDefs[id] = query_text_contains + searchTxt + "%'";
} else {
filterLayerDefs[id] = query_text + "'" + searchTxt + "'";
}
}
console.log(filterLayerDefs[id]);
if (this.ROWpane.get('selected') || this.agrmntPane.get('selected')) {
dynamicMapServiceLayer.setLayerDefinitions(filterLayerDefs);
}
myFeatureLayer.setDefinitionExpression(filterLayerDefs[id]);
queryTaskTxt = new esri.tasks.QueryTask(feat_url);
queryTxt = new esri.tasks.Query();
queryTxt.returnGeometry = true;
queryTxt.outFields = myFeatureLayer.outFields;
queryTxt.where = filterLayerDefs[id];
queryTaskTxt.execute(queryTxt, lang.hitch(this, function (fset) {
if (fset.features.length > 1000 ) {
if (myFeatureTable) {
this.destroyFeatureTable();
}
topic.publish('growler/growl', {
title: 'Try Again',
message: 'Your query returned more than 1,000 records. Please refine your search',
level: 'default',
timeout: 2500,
opacity: 0.9
});
}
else if (fset.features.length == 0) {
if (myFeatureTable) {
this.destroyFeatureTable();
}
topic.publish('growler/growl', {
title: 'Try Again',
message: 'Your search did not return any results.',
level: 'default',
timeout: 2500,
opacity: 0.9
});
}
else {
this.createFeatureTable();
map.setExtent(esri.graphicsExtent(fset.features));
}
}));
} else {
topic.publish('growler/growl', {
title: 'Try Again',
message: 'You must type at least 3 characters to search by name.',
level: 'default',
timeout: 2500,
opacity: 0.9
});
}
},
AddLayers : function () {
var dec;
var val;
this.getMapLayerID();
if (this.ROWpane.get('selected')) {
dec = this.mapDecade.value;
val = this.mapType.value;
} else if (this.agrmntPane.get('selected')) {
dec = this.decadeAgrmnt.value;
val = this.agrmntTyp.value;
}
var valQuery;
var decQuery;
var valString = '';
var valStringCombo = '';
var decString = '';
var decStringCombo = '';
var decStringComboPre = '';
var replaceStr = '';
var replacePos;
var re;
for (var i = 0; i < val.length; i++) {
if (val.length == 1) {
valString += "'" + val[i] + "'";
} else {
valStringCombo += "'" + val[i] + "',"
valString = valStringCombo.slice(",", -1);
}
}
if (this.ROWpane.get('selected')) {
valQuery = "maptype IN (" + valString + ")";
decField = 'mapdecade';
} else if (this.agrmntPane.get('selected')) {
valQuery = "agrmnt_typ IN (" + valString + ")";
decField = 'year';
}
console.log(decField);
for (var i = 0; i < dec.length; i++) {
if(dec.length == 1 && dec =='Yes')
{decQuery = "curr_proj= 'Yes'" ;
}
else
{if (dec.length == 1 && dec != 'Pre-1950s') {
decString += "'" + dec[i].slice(0, 3) + "%'";
} else if (dec.length == 1 && dec == 'Pre-1950s') {
decString = "'190%' OR " + decField + " LIKE '191%' OR " + decField + " LIKE '192%' OR " + decField + " LIKE '193%' OR " + decField + " LIKE '194%'"
} else if (dec.length > 1 && dec.indexOf("Pre-1950s") > -1) {
decStringCombo += "'" + dec[i].slice(0, 3) + "%'OR " + decField + " LIKE "
decString = decStringCombo.replace("OR " + decField + " LIKE 'Pre%'", "OR " + decField + " LIKE '190%' OR " + decField + " LIKE '191%' OR " + decField + " LIKE '192%' OR " + decField + " LIKE '193%' OR " + decField + " LIKE '194%'");
}
else {
decString += "'" + dec[i].slice(0, 3) + "%'OR " + decField + " LIKE ";
}
decQuery = '(' + decField + ' LIKE ' + decString + ')';
}
}
console.log(decQuery);
filterLayerDefs[id] = valQuery + " and " + decQuery ; //XH SQL grammar
re = new RegExp('OR ' + decField + ' LIKE ', 'g');
var nth = 0;
var pos;
filterLayerDefs[id] = filterLayerDefs[id].replace(re, lang.hitch(this, function (match, i, original) { //XH ??
nth++;
if (this.ROWpane.get('selected')) {
if (this.mapDecade.value.indexOf('Pre-1950s') !== -1) {
pos = this.mapDecade.value.length + 4;
} else {
pos = this.mapDecade.value.length;
}
} else if (this.agrmntPane.get('selected')) {
if (this.decadeAgrmnt.value.indexOf('Pre-1950s') !== -1) {
pos = this.decadeAgrmnt.value.length + 4;
} else {
pos = this.decadeAgrmnt.value.length;
}
}
return (nth == pos) ? ' ' : match;
}));
console.log(filterLayerDefs[id]);
extentLayerDef = filterLayerDefs[id];
var infoWin = new InfoTemplate();
infoWin.setTitle("&nbsp;");
if (this.ROWpane.get('selected')) {
infoWin.setContent(
'<b>Map Sets</b><hr style="border:none; border-top:1px;margin-top:6px;margin-bottom:6px;border-bottom:1px solid black">' +
'<b>Name:</b> ${shtlabel}<br>' +
'<b>County:</b> ${county}<br>' +
'<b>Route:</b> ${rte}<br>' +
'<b>Postmile:</b> ${postmile}<br>' +
'<b>Map Type:</b> ${maptype} <br>' +
'<b>Hanging File:</b> ${hangingfilegroup}<br>' +
'<b>Revision Date:</b> ${mapdate}<br>' +
'<b>Original Draft Year:</b> ${mapdecade}<br>' +
'<b>Coordinate System:</b> ${geo_referenced_datum}<br>' +
'<div align=center>${image_web_path}</div>' +
'<div align=center>${grantor_box_path}</div>' +
'<div align=center>${imagefunctions}</div>' +
'<div align=center>${survey_index_link}</div>' +
'<div align=center>${control_pdf_link}</div>' +
'<div align=center>${controlimagefunctions}</div>' +
'<div align=center>${error_report_path}</div>');
} else if (this.agrmntPane.get('selected')) {
infoWin.setContent(
'<b>Agreements</b><hr style="border:none; border-top:1px;margin-top:6px;margin-bottom:6px;border-bottom:1px solid black">' +
'<b>Name:</b> ${name}<br>' +
'<b>County:</b> ${county}<br>' +
'<b>Route:</b> ${route}<br>' +
'<b>Postmile:</b> ${bpm}-{epm}<br>' +
'<b>Agency:</b> ${agency} <br>' +
'<b>Description:</b> ${descrip}<br>' +
'<b>Effective Date:</b> ${effdate}<br>' +
'<b>Termination Date:</b> ${term_date}<br>' +
'<div align=center>${weblink}</div>' +
'<div align=center><a href="http://www.dot.ca.gov/dist4/rightofway/documents/geerror.html?document={name}&county={county}&route={route}&postmile={bpm}-{epm}" target="_blank" style="color:red">Report Error/Make Suggestion</a></div><br>');
}
this.createFeatureLayer();
queryTask = new esri.tasks.QueryTask(feat_url);
queryGeom = new esri.tasks.Query();
queryGeom.returnGeometry = true;
queryGeom.geometry = map.extent;
queryGeom.where = filterLayerDefs[id];
queryGeom.outFields = ["*"];
queryTask.execute(queryGeom, lang.hitch(this, function (fset) {
this.createFeatureLayer();
// myFeatureLayer.clear();
if (this.ROWpane.get('selected')) {
mapsLyr.clear();
labelsLyr.clear();
} else if (this.agrmntPane.get('selected')) {
agrmntsLyr.clear();
}
map.graphics.clear();
if (fset.features.length > 1000) {
topic.publish('growler/growl', {
title: 'Try Again',
message: 'Your query returned more than 1,000 records. Please refine your search',
level: 'default',
timeout: 2500,
opacity: 0.9
});
if (this.ROWpane.get('selected')) {
filterLayerDefs[id] = "maptype in ('Record','Appraisal','Bridge','Survey') and mapdecade LIKE '20%'"; //XH
} else if (this.agrmntPane.get('selected')) {
filterLayerDefs[id] = "objectid_1 < 1";
}
dynamicMapServiceLayer.setLayerDefinitions(filterLayerDefs);
} else if (fset.features.length > 0 && fset.features.length < 1001) {
dynamicMapServiceLayer.setLayerDefinitions(filterLayerDefs);
featuresList = [];
// Loop through features in the featureSet and add them to the map.
for (var i = 0, il = fset.features.length; i < il; i++) {
// Get the current feature from the featureSet.
// Feature is a graphic
//if fset.
var graphic = fset.features[i];
var labelX = graphic.attributes.longitude;
var labelY = graphic.attributes.latitude;
var labelPt = new Point([labelX, labelY]);
var labelGraphic = new Graphic(labelPt);
var label;
if (this.ROWpane.get('selected')) {
label = graphic.attributes.shtlabel;
} else if (this.agrmntPane.get('selected')) {
label = graphic.attributes.name;
}
featuresList.push("'" + label + "'");
if (this.ROWpane.get('selected')) {
if (graphic.attributes.maptype == 'Appraisal') {
var appraisalLabel = new TextSymbol(label).setColor(new Color([0, 170, 255]));
appraisalLabel.font.setSize("12pt");
appraisalLabel.font.setFamily("franklin gothic heavy");
appraisalLabel.setHaloColor(new Color([0, 0, 0]));
appraisalLabel.setHaloSize(2);
graphic.setSymbol(appraisalSymbol);
labelGraphic.setSymbol(appraisalLabel);
} else if (graphic.attributes.maptype == 'Bridge') {
var bridgeLabel = new TextSymbol(label).setColor(new Color([170, 85, 255]));
bridgeLabel.font.setSize("12pt");
bridgeLabel.font.setFamily("franklin gothic heavy");
bridgeLabel.setHaloColor(new Color([0, 0, 0]));
bridgeLabel.setHaloSize(2);
graphic.setSymbol(bridgeSymbol);
labelGraphic.setSymbol(bridgeLabel);
} else if (graphic.attributes.maptype == 'Hardcopy') {
var hcLabel = new TextSymbol(label).setColor(new Color([255, 84, 255]));
hcLabel.font.setSize("12pt");
hcLabel.font.setFamily("franklin gothic heavy");
hcLabel.setHaloColor(new Color([0, 0, 0]));
hcLabel.setHaloSize(2);
graphic.setSymbol(hardCopySymbol);
labelGraphic.setSymbol(hcLabel);
} else if (graphic.attributes.maptype == 'Record') {
var recordLabel = new TextSymbol(label).setColor(new Color([255, 85, 0]));
recordLabel.font.setSize("12pt");
recordLabel.font.setFamily("franklin gothic heavy");
recordLabel.setHaloColor(new Color([0, 0, 0]));
recordLabel.setHaloSize(2);
graphic.setSymbol(recordSymbol);
labelGraphic.setSymbol(recordLabel);
} else if (graphic.attributes.maptype == 'Survey') {
var surveyLabel = new TextSymbol(label).setColor(new Color([0, 255, 0]));
surveyLabel.font.setSize("12pt");
surveyLabel.font.setFamily("franklin gothic heavy");
surveyLabel.setHaloColor(new Color([0, 0, 0]));
surveyLabel.setHaloSize(2);
graphic.setSymbol(surveySymbol);
labelGraphic.setSymbol(surveyLabel);
}
} else if (this.agrmntPane.get('selected')) {
if (graphic.attributes.agrmnt_typ == 'Cooperative') {
graphic.setSymbol(coopAgrmntSymbol);
} else if (graphic.attributes.agrmnt_typ == 'Freeway') {
graphic.setSymbol(fwyAgrmntSymbol);
} else if (graphic.attributes.agrmnt_typ == 'Maintenance') {
graphic.setSymbol(maintAgrmntSymbol);
}
}
//Add graphic to the map graphics layer.
if (this.ROWpane.get('selected')) {
mapsLyr.add(graphic);
labelsLyr.add(labelGraphic);
mapsLyr.setInfoTemplate(infoWin);
map.addLayer(mapsLyr);
map.addLayer(labelsLyr);
} else if (this.agrmntPane.get('selected')) {
agrmntsLyr.add(graphic);
agrmntsLyr.setInfoTemplate(infoWin);
map.addLayer(agrmntsLyr);
}
}
filterLayerDefs[id] = 'objectId < 0';
dynamicMapServiceLayer.setLayerDefinitions(filterLayerDefs);
var features = featuresList.toString();
if (this.ROWpane.get('selected')) {
var mapExtentExp = extentLayerDef + 'AND shtlabel IN (' + features + ')';
} else if (this.agrmntPane.get('selected')) {
var mapExtentExp = extentLayerDef + 'AND name IN (' + features + ')';
}
myFeatureLayer.setDefinitionExpression(mapExtentExp);
this.createFeatureTable();
map.setExtent(esri.graphicsExtent(fset.features));
} else {
topic.publish('growler/growl', {
title: 'Try Again',
message: 'Your search did not return any records, try again.',
level: 'default',
timeout: 2500,
opacity: 0.9
});
filterLayerDefs[id] = 'objectId < 0';
dynamicMapServiceLayer.setLayerDefinitions(filterLayerDefs);
if (myFeatureTable){
this.destroyFeatureTable();
}
}
}));
},
onAddLayers : function () {
this.AddLayers();
},
onClear : function () {
this.getMapLayerID();
this.destroyFeatureTable();
map.removeLayer(mapsLyr);
map.removeLayer(labelsLyr);
map.removeLayer(agrmntsLyr);
map.removeLayer(selectedGraphicsLyr);
map.graphics.clear();
map.centerAndZoom([-122.39, 37.852], 9);
dynamicMapServiceLayer = map.getLayer('mapSets');
filterLayerDefs[15] = "maptype in ('Record','Appraisal','Bridge','Survey') and mapdecade LIKE '20%'";
dynamicMapServiceLayer.setLayerDefinitions(filterLayerDefs);
queryTaskOrig = new esri.tasks.QueryTask(mapsUrl);
queryOrig = new esri.tasks.Query();
queryOrig.returnGeometry = true;
queryOrig.outFields = ["*"];
queryOrig.where = filterLayerDefs[id];
queryTaskOrig.execute(queryOrig, function () {});
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment