I am trying to create two tabs in Info Window and display pie charts. The second tab displays the pie chart, but I could not create and load a pie chart in the first tab.
Thanks.
<!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>Pie Chart</title> <link rel="stylesheet" href="https://js.arcgis.com/3.18/dijit/themes/claro/claro.css"> <link rel="stylesheet" href="https://js.arcgis.com/3.18/esri/css/esri.css"> <style> html, body, #map { height: 100%; width: 100%; margin: 0; padding: 0; } .chart { width:200px; height:200px; padding:0 !important; } </style> <script src="https://js.arcgis.com/3.18/"></script> <script> var map; // Try other themes: Julie, CubanShirts, PrimaryColors, Charged, BlueDusk, Bahamation, Harmony, Shrooms, Minty, Tom var theme = "PrimaryColors"; require([ "esri/map", "esri/layers/FeatureLayer", "esri/dijit/InfoWindow", "esri/InfoTemplate", "esri/symbols/SimpleFillSymbol", "esri/renderers/SimpleRenderer", "dijit/layout/ContentPane", "dijit/layout/TabContainer", "dojox/charting/Chart2D", "dojox/charting/plot2d/Pie", "dojox/charting/action2d/Highlight", "dojox/charting/action2d/MoveSlice", "dojox/charting/action2d/Tooltip", "dojox/charting/themes/" + theme, "dojo/dom-construct", "dojo/dom-class", "dojo/number", "dojo/domReady!" ], function( Map, FeatureLayer, InfoWindow, InfoTemplate, SimpleFillSymbol, SimpleRenderer, ContentPane, TabContainer, Chart2D, Pie, Highlight, MoveSlice, Tooltip, dojoxTheme, domConstruct, domClass, number, parser ) { // Use the info window instead of the popup. var infoWindow = new InfoWindow(null, domConstruct.create("div")); infoWindow.startup(); map = new Map("map", { basemap: "topo", center: [-113.405, 43.521], infoWindow: infoWindow, zoom: 5 }); map.infoWindow.resize(275, 275); var template = new esri.InfoTemplate(); template.setTitle("<b> ${Instl_Name}</b>"); template.setContent(getWindowContent); var layer = new FeatureLayer("RESTUrl/FeatureServer/0", { mode: FeatureLayer.MODE_ONDEMAND, infoTemplate: template, outFields: ["*"] }); map.addLayer(layer); function getWindowContent(graphic) { // Make a tab container. var tc = new TabContainer({ style: "width:100%;height:100%;" }, domConstruct.create("div")); // Display attribute information. var cp1 = new ContentPane({ title: "Collection" }); tc.addChild(cp1); //Codes to create a tab for the first pie chart // Display a dojo pie chart for the complete/incomplete percentage. var cp2 = new ContentPane({ title: "Processing" }); tc.addChild(cp2); // Create the chart that will display in the second tab. var c = domConstruct.create("div", { id: "demoChart" }, domConstruct.create("div")); var chart = new Chart2D(c); domClass.add(chart, "chart"); // Apply a color theme to the chart. chart.setTheme(dojoxTheme); chart.addPlot("default", { type: "Pie", radius: 70, htmlLabels: true }); tc.watch("selectedChildWidget", function(name, oldVal, newVal){ if ( newVal.title === "Processing" ) { chart.resize(180,180); } }); // Calculate percent complete/ incomplete. var total = 100; var complete_processing = number.round(graphic.attributes.Data_Development); var incomplete = total - complete_processing; chart.addSeries("% Complete", [{ y: incomplete, tooltip: incomplete, text: "% Incomplete", color: "red" }, { y: complete_processing, tooltip: complete_processing, text: "% Complete", color: "green" }]); //highlight the chart and display tooltips when you mouse over a slice. new Highlight(chart, "default"); new Tooltip(chart, "default"); new MoveSlice(chart, "default"); cp2.set("content", chart.node); return tc.domNode; } }); </script> </head> <body class="claro"> <div id="map"></div> </body> </html>
Did you ever get this solved? I want to acheived tabbed pop-ups as well saroj1983
Andrew,
I got the tabbed pop-ups working. What are you trying to display in the tabs of the tabcontainer?
saroj thapa I'm looking to, essentially, replicate this behavior: ArcGIS Web Application
Our current application has some complex nested pop-ups Virtual Charlotte, Charlotte GIS (if you zoom in, click on a parcel, click 'More' you'll see the types of tabs we're working with. The app was built in C#, the developer left and we're trying to refresh via the JS API esri offers.
In the sample app, there's both the 'size' and the 'attribute' tabs. I'd look to basically have a main tab, then secondary and tertiary tabs about the item's proximity.
Andrew,
Check this one out.
dijit/layout/TabContainer — The Dojo Toolkit - Reference Guide
You should be able to follow the Tabcontainer samples and achieve what you are trying to achieve. The samples are well documented. Let me know if you need additional help.
Thanks saroj1983! I'll give this a go right now. Off hand, do you know where this would be configured within an Esri Web App Builder Application file structure?
Andrew,
I do not use Web App Builder. Esri has a few repos on web app builder in github. Ask this question on geonet as a new question. Hopefully, someone will help you.
Good luck.