⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 results.js

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JS
📖 第 1 页 / 共 2 页
字号:
/*
COPYRIGHT 1995-2005 ESRI

TRADE SECRETS: ESRI PROPRIETARY AND CONFIDENTIAL
Unpublished material - all rights reserved under the 
Copyright Laws of the United States.

For additional information, contact:
Environmental Systems Research Institute, Inc.
Attn: Contracts Dept
380 New York Street
Redlands, California, USA 92373

email: contracts@esri.com
*/
function EsriWebMapResultsTocRenderer() {
  this.inheritsFrom(new EsriTocRenderer());
  var tbody, container;
  var checkBoxStates;
  var isExpandCollapse = false;
  var tocContextMenuItems = new Array();
  this.collapsedImage = EsriControls.contextPath + "images/plus.gif";
  this.expandedImage = EsriControls.contextPath + "images/minus.gif";
  this.indentWidth = 10;
  
  var padFactor = 1.25;
  var padUnits = "em";
  var map = null;
  var self = this;
  var lastResultId = null;
  var checkBoxElements = [];
  
  this.init = function(container) {
    this.container = container;
    tbody = document.createElement("div");
    tbody.className = "nodes";
    container.appendChild(tbody);
    addTokenHandlers();
    map = EsriControls.maps[this.toc.mapId];
    
    map.mapTip.onFeatureFocus = function(feature) {
      highlightResultNode(feature.id, true);
    }
    map.mapTip.onFeatureBlur = function(feature) {
      unHighlightResultNode(feature.id, true);
    }    
  }

  function addTokenHandlers() {
    self.toc.addTokenHandler("loading-image", function(key, token) {
      var img = document.createElement("img");
      img.src = EsriControls.contextPath + "images/loading.gif";
      EsriUtils.setElementStyle(img, "width:16px; height:16px; vertical-align:middle; border:NONE; padding-right:4px; margin-right:4px;");
      return img;
    });

    self.toc.addTokenHandler("url", function(key, token) {
      var vStart = "(";
      var vEnd = ")";
      var a = document.createElement("a");
      var vs = token.split(vStart);
      a.href = vs[1].substring(0, vs[1].indexOf(vEnd));
      a.target = "_blank";
      a.appendChild(document.createTextNode(vs[2].substring(0, vs[2].indexOf(vEnd))));
      return a;
    });

    self.toc.addTokenHandler("imgsrc", function(key, token) {
      var img = document.createElement("img");
      img.src = token.substring("imgsrc=".length);
      EsriUtils.setElementStyle(img, "vertical-align:middle; border:NONE; padding-right:4px; margin-right:4px;");
      return img;
    });

    self.toc.addTokenHandler("save-gp-result", function(key, token, label) {
      var td = document.createElement("td");
      td.appendChild(document.createTextNode(label));
      td.onclick = function() { saveGpResultRequestHandler(key); };
      return td;
    });
  }

  function handleLabel(lbl, key, isCtxMnu, indentWd) {
    var st = lbl.indexOf(self.toc.tokenStart);
    var en = lbl.indexOf(self.toc.tokenEnd, st);

    if (st != -1 && en != -1) {
      if (isCtxMnu) {
        var token = lbl.substring((st + self.toc.tokenStart.length), en);
        var label = lbl.substring(0, st) + lbl.substring(en + 1);

        for (var t=0;t<self.toc.tokens.length;t++) {
          if (token.indexOf(self.toc.tokens[t]) == 0)
            return self.toc.tokenHandlers[self.toc.tokens[t]](key, token, label);
        }
      }
      else {
        var a = lbl.split(self.toc.tokenStart);
        var ps = [];
        var span = document.createElement("span");
        for (var i=0;i<a.length;i++) {
          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, ht) {
    if(!ht) ht = 0;
    var spacer = document.createElement("img");
    spacer.src = EsriControls.contextPath + "images/pixel.gif";
    EsriUtils.setElementStyle(spacer, "width:" + wd + "px; height:" + ht + "px");
    return spacer;
  }

  function saveGpResultRequestHandler(key) {
    var map = EsriControls.maps[self.toc.mapId];
    var fId = map.formId;
    var url = EsriUtils.getServerUrl(fId);
    var params = "ajaxCommand=ajaxCommand&ajaxCommandBeanId=saveGPTaskResultCommand&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 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 = "moreMenu";
    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;
      var label = menuItems[i].label;

      var elem = handleLabel(label, key, true);
      if (elem) {
        td = elem;
        td.id = i;
      }
      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;
        }
      }
      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.isIE7 || EsriUtils.isIE6 ) checkBoxStates = EsriUtils.getCheckBoxStates(tbody);
   tbody = self.container.removeChild(tbody);
   if (EsriUtils.isIE7 || EsriUtils.isIE6) EsriUtils.setCheckBoxStates(tbody, checkBoxStates);
  }

  this.endRendering = function() {
    if (EsriUtils.isIE6 || EsriUtils.isIE7) checkBoxStates = EsriUtils.getCheckBoxStates(tbody);
    tbody = self.container.appendChild(tbody);
    if (EsriUtils.isIE6 || EsriUtils.isIE7) EsriUtils.setCheckBoxStates(tbody, checkBoxStates);
    if(!isExpandCollapse && map.mapTip)
      map.mapTip.updateMapTips();
    if(isExpandCollapse) 
      isExpandCollapse = false;
  }

  this.renderNode = function(node) {
    if(EsriUtils.isIE6) {
      var wrapEl = document.createElement("div");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -