POST
|
Thanks a lot! I researched the link and run the codes, the current report is like the picture attached below. The code for is as the following: { title: "Testing Report", addPageBreak: false, type: "table", tableCols: 10, data: { showRowIndex: true, cols:this.colItem, rows:this.rowItem//this.rowItem } }, My question is that: after changing the tableCols to 10, why there are still 3 columns in the report? When there are many fields, can I make them display in one row instead of 3 columns for each row? This post helps me a lot! Thank you very much!
... View more
08-14-2017
10:15 AM
|
0
|
1
|
615
|
POST
|
ESRI released its new report widget using report class, I am trying to let the report widget print my query result, which is sent from another query widget. The data is sent from another widget uisng publishData function as an object, it is census data such as census tracts. The sending object has been tested: it is an array object containing 23 row records and each one has 57 fields as columns, e.g., 23 census tracts and each one contains fields like ID, Name, Area, Population ... My codes inserting to the report widget is like the following, the colItem and rowItem are defined at the beginning of the report widget as colItem:null, rowItem:null, queryResult is defined in publishData() in another widget to pass the query result as this.publishData({ 'target': 'Report', 'queryResult': this.results }); My question is how to make the queryResult to display in Report widget in a good format? At least displaying as a table with fields as columns and census tracts as row records. Thanks a lot! onReceiveData: function(name, widgetId, data, historyData) {
if(widgetId === 'widgets_test_36') {
console.log("Report widget got the message");
var resultItems = [];
var resultCount = data.queryResult.length;
for (var i =0; i<data.queryResult.length; i++) {
var featureAttributes = data.queryResult[i].attributes; //each row record
//The next is to handle fields of each record and push them into resultItems
for (var attr in featureAttributes){
resultItems.push(featureAttributes[attr]);
}
this.rowItem = resultItems;
console.info(this.rowItem);
}
}
}
_onBtnPrintClicked: function(){
var printData = [
{
addPageBreak: true,
type: "map",
map: this.map
},
{
title: "Testing Report",
addPageBreak: false,
type: "table",
tableCols: 4,
data: {
showRowIndex: true,
cols: this.colItem,// I have no idea how to code this?
rows: this.rowItem
}
}
];
this.report.print("Testing Report", printData);
}, //_onBtnPrintClicked funciton ends
... View more
08-10-2017
07:33 AM
|
0
|
3
|
922
|
POST
|
I created a query and queryTask; run the queryTask and get a result (say featureSet) . Now I need to convert this object (featureSet) to create a PDF report, make it display as a table, like field A, field B, ... as columns. I know how to loop the feature to get a value, but have no clue how to put them into a table in PDF. Is there any hint or sample code how to do this? Thanks a lot!
... View more
07-20-2017
02:37 PM
|
0
|
2
|
1148
|
POST
|
I am using the following function to create smart mapping. After this method is done, I need to use another function to change the classificationMethod string from "quantile" to "natural break" function createRenderer(field) { //smart mapping functionality begins smartMapping.createClassedColorRenderer({ layer: layer, field: field, basemap: map.getBasemap(), classificationMethod: "quantile" }).then(function (response) { layer.setRenderer(response.renderer); layer.redraw(); createLegend(map, layer, field); }); } My question is: is there any statement that I can change the classsificationMethod value from “quantile” to “natural break” outside the scope of function createRenderer() {….} For example: smartMapping.createClassedColorRenderer.classficationMethod = “equal-interval”; Is this correct? Thanks!
... View more
10-18-2016
12:29 PM
|
0
|
0
|
587
|
POST
|
When I use queryTask to call a function, say, function showResults() as below: queryTask.execute(query, showResults); function showResults (results) { ….} One thing I am confused is that: usually when a function is called, the parameter that the function is going to use (e.g., results in this case) should be included inside the showResults(). Since queryTask called this function, it should be: queryTask.execute(query, showResults(ABC); then this ABC will be passed into function showResults. In the above example, there is nothing like showResults(ABC), just showResults. How can the function showResults (results) tell what kind of parameter is actually passed into it? Thanks!
... View more
09-27-2016
01:18 PM
|
0
|
3
|
1605
|
POST
|
All our print widgets are not working in our web apps(using Developer Edition). I also tried to build new apps with new print widget set up inside, but still not working. The error always throws out "Timeout Exceeded". The online version of print widget is not working neither. Is this just for me for everybody? Is there any rule/policy changed recently? Thanks!
... View more
08-15-2016
08:10 AM
|
0
|
1
|
2927
|
POST
|
I need to set up some percentage values in PopupTemplate (esri/dijit/PopupTemplate) using two fields (fieldA is divided by fieldB). See “description” part below (percentage 1, 2, 3, 4, 5): All the fields are defined, the chart works well. But the text in “description” just did not display any the calculation by me. I also tried {“Age_Under_5”/ “Pop_Total “}, not working either. Thanks! var popupTemplateUpdated2 = new PopupTemplate({
title: "Population by Age",
description: "Total Population is <b>{Pop_Total}</b>, "
+ "Percentage 1 <b>{Age_Under_5/Pop_Total }</b>; "
+ " Percentage 2 <b>{Age_5to17/Pop_Total }</b>; "
+ " Percentage 3 <b>{Age_18to34/Pop_Total }</b>; "
+ " Percentage 4 <b>{Age_35to64/Pop_Total }</b>; "
+ " Percentage 5 <b>{Age_65plus/Pop_Total }</b>; ",
mediaInfos: [{
type: "piechart",
value: {
fields: ["Age_Under_5", "Age_5to17", "Age_18to34", "Age_35to64", "Age_65plus"]
}
}],
fieldInfos: [{
fieldName: "Age_Under_5",
label: "< 5 Yrs",
format: { places: 0, digitSeparator: true }
}, {
fieldName: "Age_5to17",
label: " 5 - 17",
format: { places: 0, digitSeparator: true }
}, {
fieldName: "Age_18to34",
label: "18 - 34",
format: { places: 0, digitSeparator: true }
}, {
fieldName: "Age_35to64",
label: "35 - 64",
format: { places: 0, digitSeparator: true }
}, {
fieldName: "Age_65plus",
label: "> 65",
format: { places: 0, digitSeparator: true }
}]
});
... View more
08-08-2016
01:02 PM
|
0
|
1
|
1107
|
DOC
|
Hi, Robert, I add the following in main config.json: "position": { "relativeTo": "map", "left":200, "width":720 }, "openAtStart": true The "openAtStart" works; but width is not changed at all. "left":200 is not working, either. Is that because the theme is LaunchPad so it is not working? Thanks a lot!
... View more
07-25-2016
03:18 PM
|
0
|
0
|
4024
|
DOC
|
Hi, Robert, I use ‘between’ expression to set up a query, like 'Total population is between min and max'. My current max value is 8 numbers, and the input window is too narrow (See the picture). Is there any method to adjust the width of input window so that the whole max value can display? Or is that way to adjust the eSearch default window size? BTW, the theme is LaunchPad. Thanks a lot!
... View more
07-21-2016
02:19 PM
|
0
|
0
|
4025
|
POST
|
No, the Feature Table still display all the records when first time open or after the query. Thanks!
... View more
06-28-2016
01:18 PM
|
0
|
0
|
1359
|
POST
|
I added the following change in the function: featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function(results), it seems the table just can not get all the selected records, still displaying all of them. But it is strange if I click 'Options' -- 'clear selection', all the points in buffer will be removed. That means the table gets all the selected points information already, just canot display. Thanks! myFeatureTable.selectedRowIds = objectIds; myFeatureTable.filterSelectedRecords(true); // 3.17 new
... View more
06-27-2016
10:13 AM
|
0
|
2
|
1359
|
POST
|
I am studying the following ESRI "Select with Feature layer" sample codes: ArcGIS API for JavaScript Sandbox After that query is finished, I would like to create a FeatureTable and let all the query pink points within the 1 mile buffer go to the FeatureTable. Currently all the records go to the Feature Table, but I just need want to display data in table for the points inside the buffer. Below is my codes. Thanks a lot! <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> <title>Select with feature layer</title> <link rel="stylesheet" href="https://js.arcgis.com/3.17/dijit/themes/tundra/tundra.css"> <link rel="stylesheet" href="https://js.arcgis.com/3.17/esri/css/esri.css"> <style> html, body, #mapDiv { padding: 0; margin: 0; height: 100%; } #messages{ background-color: #fff; box-shadow: 0 0 5px #888; font-size: 1.1em; max-width: 15em; padding: 0.5em; position: absolute; right: 20px; top: 20px; z-index: 40; } </style> <script src="https://js.arcgis.com/3.17/"></script> <script> var map; require([ "esri/map", "esri/layers/FeatureLayer", "esri/dijit/FeatureTable", "esri/tasks/query", "esri/geometry/Circle", "esri/graphic", "esri/InfoTemplate", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/renderers/SimpleRenderer", "esri/config", "esri/Color", "dojo/dom", "dojo/domReady!" ], function( Map, FeatureLayer,FeatureTable, Query, Circle, Graphic, InfoTemplate, SimpleMarkerSymbol, SimpleLineSymbol, SimpleFillSymbol, SimpleRenderer, esriConfig, Color, dom ) { // use a proxy page if a URL generated by this page is greater than 2000 characters // // this should not be needed as nearly all query & select functions are performed on the client esriConfig.defaults.io.proxyUrl = "/proxy/"; map = new Map("mapDiv", { basemap: "streets", center: [-95.249, 38.954], zoom: 14, slider: false }); //add the census block points in on demand mode. Note that an info template has been defined so when //selected features are clicked a popup window will appear displaying the content defined in the info template. var featureLayer = new FeatureLayer("https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/0",{ //infoTemplate: new InfoTemplate("Block: ${BLOCK}", "${*}"), outFields: ["*"] }); // selection symbol used to draw the selected census block points within the buffer polygon var symbol = new SimpleMarkerSymbol( SimpleMarkerSymbol.STYLE_CIRCLE, 12, new SimpleLineSymbol( SimpleLineSymbol.STYLE_NULL, new Color([247, 34, 101, 0.9]), 1 ), new Color([207, 34, 171, 0.5]) ); featureLayer.setSelectionSymbol(symbol); //make unselected features invisible var nullSymbol = new SimpleMarkerSymbol().setSize(0); featureLayer.setRenderer(new SimpleRenderer(nullSymbol)); map.addLayer(featureLayer); var circleSymb = new SimpleFillSymbol( SimpleFillSymbol.STYLE_NULL, new SimpleLineSymbol( SimpleLineSymbol.STYLE_SHORTDASHDOTDOT, new Color([105, 105, 105]), 2 ), new Color([255, 255, 0, 0.25]) ); var circle; //when the map is clicked create a buffer around the click point of the specified distance. map.on("click", function(evt){ circle = new Circle({ center: evt.mapPoint, geodesic: true, radius: 1, radiusUnit: "esriMiles" }); map.graphics.clear(); map.infoWindow.hide(); var graphic = new Graphic(circle, circleSymb); map.graphics.add(graphic); var query = new Query(); query.geometry = circle.getExtent(); //use a fast bounding box query. will only go to the server if bounding box is outside of the visible map featureLayer.queryFeatures(query, selectInBuffer); }); function selectInBuffer(response){ var feature; var features = response.features; var inBuffer = []; //filter out features that are not actually in buffer, since we got all points in the buffer's bounding box for (var i = 0; i < features.length; i++) { feature = features; if(circle.contains(feature.geometry)){ inBuffer.push(feature.attributes[featureLayer.objectIdField]); } } var query = new Query(); query.objectIds = inBuffer; myFeatureTable.selectedRowIds = query.objectIds; // here is what I added myFeatureTable._showSelectedRecords(); // //use a fast objectIds selection query (should not need to go to the server) featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function(results){ var totalPopulation = sumPopulation(results); var r = ""; r = "<b>The total Census Block population within the buffer is <i>" + totalPopulation + "</i>.</b>"; dom.byId("messages").innerHTML = r; }); } function sumPopulation(features) { var popTotal = 0; for (var x = 0; x < features.length; x++) { popTotal = popTotal + features .attributes["POP2000"]; } return popTotal; } myFeatureTable = new FeatureTable({ "featureLayer" : featureLayer, "outFields": [ "POP2000" ], fieldInfos: [ { name: 'POP2000', alias: 'POP2000', }, { name: 'HOUSEHOLDS', alias: 'Household Name', } ], "map" : map }, 'myTableNode'); myFeatureTable.startup(); }); </script> </head> <body> <span id="messages">Click on the map to select census block points within 1 mile.</span> <div id="mapDiv"></div> <div id="myTableNode"></div> </body> </html>
... View more
06-26-2016
01:06 PM
|
0
|
5
|
5805
|
POST
|
I try to do a simple test, just add a map and its title to a html file. But at the right-bottom corner, there is always space, and the vertical scroll bar always exists. I want the map and title display as a whole thing without any vertical scroll bar. See my codes below and the Pics. I have set the div container as 100%, but why the vertical scroll bar is not gone? Thanks! <!DOCTYPE html> <html> <head> <title>Testing Map</title> <script src="https://js.arcgis.com/3.16/"></script> <link rel="stylesheet" href="https://js.arcgis.com/3.16/esri/css/esri.css"> <style> html, body, #map, #container{ height: 100%; margin: 0; padding: 0; } </style> </head> <body> <div id="container"> <div>Map Title</div> <div id="map"></div> </div> <!-- ESRI JS API Element--> <script> var map; require(["esri/map", "dojo/domReady!"], function(Map) { map = new Map("map", { basemap: "topo", center: [-122.45, 37.75], // longitude, latitude zoom: 13 }); }); </script> </body> </html>
... View more
05-23-2016
02:42 PM
|
0
|
2
|
2160
|
POST
|
These map services do not contain all the content such population, income. I guess what we need is to query all the topics. Does ESRI currently have any tool to use Census API? Thanks!
... View more
05-17-2016
12:33 PM
|
0
|
1
|
1809
|
Title | Kudos | Posted |
---|---|---|
1 | 09-01-2015 07:06 AM | |
1 | 07-20-2015 07:17 AM | |
3 | 07-14-2015 04:07 PM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:24 AM
|