📄 esri_toc.js
字号:
var p = a[i];
if (p.indexOf(self.toc.tokenEnd) != -1) {
var e = p.indexOf(self.toc.tokenEnd);
var t = p.substring(0, e);
var l = p.substring(e + self.toc.tokenEnd.length);
var handled = false;
if (t == "newline") {
span.innerHTML += "<br />";
span.appendChild(createSpacer(indentWd));
handled = true;
}
for (var r=0;r<self.toc.tokens.length;r++) {
if (t.indexOf(self.toc.tokens[r]) == 0) {
span.appendChild(self.toc.tokenHandlers[self.toc.tokens[r]](key, t));
handled = true;
break;
}
}
if (! handled) span.appendChild(document.createTextNode(p));
if (l != "") span.appendChild(document.createTextNode(l));
}
else span.appendChild(document.createTextNode(p));
}
return span;
}
}
return null;
}
this.reset = function() {
while (tbody.hasChildNodes()) EsriUtils.removeElement(tbody.firstChild);
self.tocContextMenuItems = new Array();
}
function createSpacer(wd) {
var spacer = document.createElement("img");
spacer.src = EsriControls.contextPath + "images/pixel.gif";
EsriUtils.setElementStyle(spacer, "width:" + wd + "px; height:0px");
return spacer;
}
function SliderHandler(k, v) {
var key = k;
var value = v;
this.sliderTransparencyCallback = function(sliderValue) {
var sValue = parseFloat((1 - (sliderValue/10)));
var map = EsriControls.maps[self.toc.mapId];
if (! (map.mapSourceNames.length == 1 && map.mapSources[map.mapSourceNames[0]].type == "dynamic")) {
var ms = map.mapSources[map.mapSourceNames[(map.mapSourceNames.length - 1) - parseInt(key)]];
var il = ms.imageList;
ms.imageOpacity = sValue;
for (var i=0;i<il.length;i++) {
var img = document.getElementById(il[i]);
if (img) EsriUtils.setElementOpacity(img, sValue);
}
}
self.toc.contextMenuOperation(value + "|" + sValue, key);
};
}
function saveGpResultRequestHandler(key) {
var map = EsriControls.maps[self.toc.mapId];
var fId = map.formId;
var url = EsriUtils.getServerUrl(fId);
var params = "gpAsyncTaskResults=gpAsyncTaskResults&saveResult=saveResult&formId=" + map.formId + "&tocId=" + self.toc.id + "&key=" + key + "&" + EsriUtils.buildRequestParams(fId);
EsriUtils.sendAjaxRequest(url, params, false, saveGpResultResponseHandler);
}
function saveGpResultResponseHandler(xh) {
if (xh != null && xh.readyState == 4 && xh.status == 200) {
var xml = EsriUtils.getXmlDocument(xh);
var downloadId = xml.getElementsByTagName("download-id").item(0).firstChild.nodeValue;
var id = downloadId;
EsriUploadUtil.showDownloadWindow("Save Result", id);
}
}
function showCopyrightRequestHandler(key) {
var map = EsriControls.maps[self.toc.mapId];
var fId = map.formId;
var url = EsriUtils.getServerUrl(fId);
var params = "agsAjax=agsAjax&showCopyright=showCopyright&formId=" + map.formId + "&tocId=" + self.toc.id + "&key=" + key + "&" + EsriUtils.buildRequestParams(fId);
EsriUtils.sendAjaxRequest(url, params, false, showCopyrightResponseHandler);
}
function showCopyrightResponseHandler(xh) {
if (xh != null && xh.readyState == 4 && xh.status == 200) {
var xml = EsriUtils.getXmlDocument(xh);
var copyrightTags = xml.getElementsByTagName("copyright");
if (copyrightTags.length > 0) {
var copyrightTag = copyrightTags.item(0);
var nodeText = copyrightTag.getElementsByTagName("node-text").item(0).firstChild.nodeValue;
var st = nodeText.indexOf(self.toc.tokenStart);
var en = nodeText.indexOf(self.toc.tokenEnd, (st + self.toc.tokenStart.length));
if (st != -1 && en != -1) nodeText = nodeText.substring(0, st) + nodeText.substring(en + 1);
var copyrightTextTag = copyrightTag.getElementsByTagName("copyright-text").item(0);
var copyrightText = "";
if (copyrightTextTag.hasChildNodes()) copyrightText = copyrightTextTag.firstChild.nodeValue;
var time = new Date().getTime();
var pe = new EsriPageElement("pe" + time);
pe.divObject = document.createElement("div");
pe.divObject.id = pe.divId = "" + time;
pe.divObject.innerHTML = "<b>Layer : </b>" + nodeText + "<br /><br /><b>Copyright : </b>" + copyrightText;
EsriUtils.setElementStyle(pe.divObject, "width:380px; height:110px; overflow:auto; margin:5px; padding:5px;");
var win = new EsriWindow("win" + time, "Copyright", pe);
win.init();
win.resize(400, 150);
win.resizable = false;
win.center();
}
}
}
function showContextMenu(e, key) {
var contextMenuId = "EsriContextMenu_" + self.toc.id;
if (document.getElementById(contextMenuId)) document.getElementById(contextMenuId).parentNode.removeChild(document.getElementById(contextMenuId));
var menuItems = tocContextMenuItems[key];
if (menuItems.length == 0) return;
var table = document.createElement("table");
table.id = contextMenuId;
table.className = "esriContextMenu";
var tb = document.createElement("tbody");
table.appendChild(tb);
for (var i=0;i<menuItems.length;i++) {
var tr = document.createElement("tr");
var td = document.createElement("td");
td.id = i;
td.className = "esriContextMenuItem";
var label = menuItems[i].label;
if (label == "Transparency") {
var initValue = (1 - menuItems[i].value.substring(menuItems[i].value.indexOf("|") + 1)) * 10;
td.appendChild(document.createTextNode(menuItems[i].label));
var slider = new EsriSlider("TocMenuSlider_" + self.toc.id + "_" + i, null, new SliderHandler(key, menuItems[i].value.substring(0, menuItems[i].value.indexOf("|"))).sliderTransparencyCallback);
slider.numSegments = 10;
slider.initValue = initValue;
slider.roundValues = false;
slider.showTicks = true;
slider.callContinuously = false;
slider.init(td);
}
else {
var elem = handleLabel(label, key, true);
if (elem) {
td = elem;
td.id = i;
td.className = "esriContextMenuItem";
}
else {
td.appendChild(document.createTextNode(menuItems[i].label));
td.onclick = function(e) {
var index = EsriUtils.getEventSource(e).id;
self.toc.contextMenuOperation(tocContextMenuItems[key][index].value, key);
return false;
}
}
td.onmouseover = function(e) { EsriUtils.getEventSource(e).className = "esriContextMenuItemActive"; }
td.onmouseout = function(e) { EsriUtils.getEventSource(e).className = "esriContextMenuItem"; }
}
tr.appendChild(td);
tb.appendChild(tr);
}
var pt = EsriUtils.getXY(e);
EsriUtils.setElementStyle(table, "position:absolute; left:" + pt.x + "px; top:" + pt.y + "px; z-index:9999;");
document.body.appendChild(table);
document.onclick = document.oncontextmenu = function(e) {
table.parentNode.removeChild(table);
document.onclick = document.oncontextmenu = null;
}
}
this.startRendering = function() {
if (EsriUtils.isIE6) checkBoxStates = EsriUtils.getCheckBoxStates(tbody);
tbody = table.removeChild(tbody);
if (EsriUtils.isIE6) EsriUtils.setCheckBoxStates(tbody, checkBoxStates);
}
this.endRendering = function() {
if (EsriUtils.isIE6) checkBoxStates = EsriUtils.getCheckBoxStates(tbody);
tbody = table.appendChild(tbody);
if (EsriUtils.isIE6) EsriUtils.setCheckBoxStates(tbody, checkBoxStates);
}
this.renderNode = function(node) {
var tr = tbody.appendChild(document.createElement("tr"));
var td = tr.appendChild(document.createElement("td"));
td.noWrap = true;
td.className = ((node.isSelected) ? ((node.isDisabled) ? "esriTocLabelSelectedDisabled" : "esriTocLabelSelected") : ((node.isDisabled) ? "esriTocLabelDisabled" : "esriTocLabel"));
td.appendChild(createSpacer((node.level * this.indentWidth) + 5));
var expanded;
if (node.isShowExpanded) {
var expanded;
if (EsriUtils.isIE) expanded = td.appendChild(document.createElement("<input type=\"image\" />"));
else {
expanded = td.appendChild(document.createElement("input"));
expanded.type = "image";
}
expanded.id = self.toc.id + "_" + node.key + "_exp";
expanded.verticalAlign = "middle";
expanded.src = (node.isExpanded) ? this.expandedImage : this.collapsedImage;
expanded.onclick = function() { self.toc.nodeOperation(node.key, "expandCollapse"); return false; };
}
else expanded = td.appendChild(createSpacer(9));
EsriUtils.setElementStyle(expanded, "padding:0px 4px 0px 0px; margin:0px 4px 0px 0px;");
if (node.isShowChecked) {
var checked;
if (EsriUtils.isIE) checked = td.appendChild(document.createElement("<input type=\"checkbox\" checked=\"checked\" />"));
else {
checked = td.appendChild(document.createElement("input"));
checked.type = "CHECKBOX";
}
checked.id = "EsriTocNodeCheckbox_" + self.toc.id + "_" + node.key;
checked.checked = node.isChecked;
checked.verticalAlign = "middle";
if (node.isDisabled) checked.disabled = true;
checked.onclick = function() { self.toc.checkedNodeOperation(node.key, document.getElementById("EsriTocNodeCheckbox_" + self.toc.id + "_" + node.key).checked); };
EsriUtils.setElementStyle(checked, "padding:0px 4px 0px 0px; margin:0px 4px 0px 0px;");
}
if (node.imageUrl) {
var symbol = td.appendChild(document.createElement("img"));
symbol.src = node.imageUrl;
symbol.onclick = function() { self.toc.nodeOperation(node.key, "click"); return false; };
EsriUtils.setElementStyle(symbol, "padding:0px 4px 0px 0px; margin:0px 4px 0px 0px;");
}
var span = document.createElement("span");
if (node.isUrl) span.onclick = function() { self.toc.nodeOperation(node.key, 1); return false; };
var elem = handleLabel(node.label, node.key, false, (node.level * this.indentWidth) + 5 + 9 + 4 + ((EsriUtils.isIE) ? 0 : 4));
if (elem) span.appendChild(elem);
else span.appendChild(document.createTextNode(node.label));
if (node.contextMenuItems) {
tocContextMenuItems[node.key] = node.contextMenuItems;
span.oncontextmenu = function(e) {
showContextMenu(e, node.key);
EsriUtils.stopEvent(e);
return false;
}
}
else span.oncontextmenu = function(e) { EsriUtils.stopEvent(e); return false; };
if (node.isUrl) {
var a = td.appendChild(document.createElement("a"));
a.href = "javascript:void(0);";
a.appendChild(span);
}
else td.appendChild(span);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -