📄 esri_task_printing.js
字号:
/* 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*/ /** * The function is called back by the print task AJAX renderer. * It will open a new window to render the printing map. * * @param {Object} xml - an DOM object * @param {Object} eventSources */ function processCreatePrintPage(xml, eventSources) { var printMapObj = new PrintMap(xml); closeWindow(printMapObj.getTaskId()); var win = window.open("", "PrintingMap", "toolbar,menubar,scrollbars,status,resizable,alwaysRaised,width=672,height=660"); win.focus(); var doc = win.document; doc.title = printMapObj.getMapTitle(); doc.body.innerHTML=""; var docBody = doc.getElementsByTagName("body")[0]; doc.writeln(getStyleSheetString()); //Generate the printable page; doc.writeln(getPrintPage(printMapObj)); doc.close(); return false; } /** * Generates the print map page. * * @param {PrintMap Object} printMapObj */ function getPrintPageLayoutOne(printMapObj) { var htmlStr = ""; htmlStr += "<table width='100%'>"; htmlStr += "<tr><td align='center' colspan='2'><h1>"+printMapObj.getMapTitle()+"</h1></td></tr>"; htmlStr += "<tr style='vertical-align:top;'><td>"+renderPrintMapInHTML(printMapObj)+"</td><td>"+renderLegendTableInHTML(printMapObj)+"</td></tr>"; htmlStr += "<tr><td colspan='2'>"+renderResultTableInHTML(printMapObj)+"</td></tr>"; htmlStr += "</table>"; return htmlStr; } /** * Generates the print map page. * * @param {PrintMap Object} printMapObj */ function getPrintPage(printMapObj) { var htmlStr = ""; htmlStr += "<table width='100%' align='left'>"; htmlStr += "<tr><td><h1>"+printMapObj.getMapTitle()+"</h1></td></tr>"; htmlStr += "<tr><td>"+renderPrintMapInHTML(printMapObj)+"</td></tr>"; htmlStr += "<tr><td>"+renderLegendTableInHTML(printMapObj)+"</td></tr>"; htmlStr += "<tr><td >"+renderResultTableInHTML(printMapObj)+"</td></tr>"; htmlStr += "</table>"; return htmlStr; } /** * The function is called before the print map button on printing task UI is clicked. * It does the client side data validation for map resolution and scale. * * @param {Object} taskId * @param {Object} mapId * @param {Object} taskActionId * @param {Object} showingLoadingImage * @param {Object} clientPostBack */ function createPrintMap(taskId, mapId, taskActionId, showingLoadingImage, clientPostBack) { EsriControls.maps[mapId].createCurrentToolItem(taskActionId, 'button_'+taskActionId, 'EsriMapServerAction', showingLoadingImage, clientPostBack, null, null, 'esriToolDefault', 'esriToolHover', 'esriToolSelected', 'esriToolDisabled'); return false; } /** * The function to close the print task window. */ function closeWindow(taskId) { var printTaskId = "win_EsriTaskCell_"+taskId; if(taskWindowManager && taskWindowManager.windows[printTaskId]) { var w = taskWindowManager.windows[printTaskId]; w.center(); w.hide(); } } /** * The function is called when the query result checkbox is clicked. * It will update the passed hidden input value. When the print * button is clicked, the value is passed to the server. * * @param {Object} nodeId */ function resultChecked(nodeId) { var test = document.getElementsByTagName("input"); var st = ""; for (i=0; i<test.length; i++) { var n = test.item(i); if ( n.id.indexOf("print-result") >=0 && n.checked) { if (st .length == 0) { st += n.value; } else { st += ","+n.value ; } } } nodeId.value = st; } /** * Generates the legend table. * * @param {Object} printMapObj */ function renderLegendTableInHTML(printMapObj) { var htmlStr = ""; var numberOfLegendColumn = printMapObj.getLegendColumns(); if (printMapObj.getIsPrintLegend().indexOf('true') >= 0) { var nodeArray = printMapObj.getLegendNodes(); var legendNumInColumn = Math.ceil((nodeArray.length) / numberOfLegendColumn); htmlStr = "<table cellspacing='0' cellpadding='0' style='border:thin solid rgb(230,230,230);'>"; htmlStr += "<tbody>"; var node; var indexPos; for (var i=0; i<legendNumInColumn; i++) { htmlStr += "<tr>"; for (var j=0; j<numberOfLegendColumn; j++) { indexPos =i+ j*legendNumInColumn; if (indexPos < nodeArray.length) { node = nodeArray[indexPos]; htmlStr += renderLegendPatchInHTML(node.getLevel(), node.getLabel(), node.getImageUrl()); } } htmlStr += "</tr>"; } htmlStr += "</tbody>"; htmlStr += "</table>"; } return htmlStr; } /** * Generates the query result table. * * @param {Object} printMapObj */ function renderResultTableInHTML(printMapObj) { var htmlStr = ""; var printResultsArray = printMapObj.getPrintResults(); if (printResultsArray.length > 0) { for(i=0; i<printResultsArray.length; i++) { var printResult = printResultsArray[i]; htmlStr += "<table style='result'><tbody>"; htmlStr += "<tr><td>"; htmlStr += "<span style='font-family:sans-serif;font-size:8pt;font-weight:bold'>"+printResult.getName()+"</span>"; htmlStr += "</td></tr>"; var layerQueryResults = printResult.getLayerQueryResults(); for(k=0; k<layerQueryResults.length; k++) { var layerQueryResult = layerQueryResults[k]; htmlStr += "<tr><td>"; htmlStr += "<span style='font-family:sans-serif;font-size:8pt;font-weight:normal'>"+layerQueryResult.getName()+"("+layerQueryResult.getCount()+")"+"</span>"; htmlStr += "</td></tr>"; var detailKeys = layerQueryResult.getKeys(); var detailVals = layerQueryResult.getValues(); htmlStr += "<tr><td align='left'>"; //start htmlStr += "<table align='left' id='result'><tbody>"; //render the title htmlStr += "<tr>"; var keys = detailKeys[0]; for (var j=0; j<keys.length; j++) { htmlStr += "<th>"+ keys[j] +"</th>"; } htmlStr += "</tr>"; //generates the data for (m=0; m<detailVals.length; m++) { var values = detailVals[m]; htmlStr += "<tr>" ; for (var j=0;j<values.length;j++) { htmlStr += "<td>"+ values[j] +"</td>"; } htmlStr += "</tr>" ; } htmlStr += "</tbody></table>"; htmlStr += "</td></tr>";//end } htmlStr += "</tbody></table>"; htmlStr += "</br>"; } } return htmlStr; } /** * Generates each Query Result table. * * @param {Object} keys - an array object * @param {Object} values - an array object */ function getQueryResultTableInHTML(keys, values) { var htmlStr = "<table align='left' id='result'><tbody>"; htmlStr += "<tr>"; for (var j=0; j<keys.length; j++) { htmlStr = htmlStr +"<th>"+ keys[j] +"</th>"; } htmlStr += "</tr>"; //generates the data htmlStr += "<tr>" ; for (var j=0;j<values.length;j++) { htmlStr = htmlStr +"<td>"+ values[j] +"</td>"; } htmlStr += "</tr>" ; htmlStr += "</tbody></table><br><br>"; return htmlStr; } /** * Writes the Stlyes for the Page. */ function getStyleSheetString() { var cssStr = "<style type='text/css'>"; cssStr += getResultStyleStr(); cssStr += getLegendStyleStr(); cssStr += "</style>"; return cssStr; } /** * Returns the Result Stlyes. */ function getResultStyleStr() { var styleStr = "#result {border-width: 1px 1px 1px 1px;border-spacing: 0px;border-style: none none none none;border-color: #cccccc #cccccc #cccccc #cccccc;border-collapse: collapse;font-family: 'Arial','Helvetica',sans-serif;font-size: 10px;}"; styleStr += "#result th {border-width: 1px 1px 1px 1px;padding: 1px 1px 1px 1px;border-style: inset inset inset inset;border-color: #cccccc #cccccc #cccccc #cccccc;}"; styleStr += "#result td {border-width: 1px 1px 1px 1px;padding: 1px 1px 1px 1px;border-style: inset inset inset inset;border-color: #cccccc #cccccc #cccccc #cccccc;}"; return styleStr; } /** * Return the Legend Styles. */ function getLegendStyleStr() { var styleStr = "td.esriTocLabelDataFrame { color:#000; font-family:Arial,Sans-Serif; font-size:8pt; font-weight:bold; }"; styleStr += "td.esriTocLabelLayer { color:#000; font-family:Arial,Sans-Serif; font-size:8pt; font-weight:bold; }"; styleStr += "td.esriTocLabelField { color:#000; font-family:Arial,Sans-Serif;font-style: italic; font-size:8pt; font-weight:normal; }"; styleStr += "td.esriTocLabel { color:#000; font-family:Arial,Sans-Serif; font-size:8pt; font-weight:normal; }"; return styleStr; } /** * Renders the Printable Map in a HTML table. * @param {Object} printMapObj */ function renderPrintMapInHTML(printMapObj) { var htmlStr = ""; if (printMapObj.getIsPrintResultOnly().indexOf('false') >= 0) { htmlStr = "<table >"; htmlStr += "<tr ><td>"; htmlStr += "<img style='border:thin solid rgb(204,204,204);' src='"+printMapObj.getMapUrl()+"' alt='Map' width='"+printMapObj.getMapWidth()+"' height='"+printMapObj.getMapHeight()+"' />";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -