POST
|
Estoy programando una aplicación en Web AppBuilder. Estoy trabajando con la plantilla Dashboard de Web AppBuilder y deseo que al hacer la selección de un atributo en el filtro se modifique el extent del mapa. Lo que tengo en este momento está así: Como se puede ver, ya tengo los filtros configurados en la aplicación, pero no sé como se puede hacer en la plantilla Dashboard (widget Infographics) para que, por ejemplo, al seleccionar un dato del filtro Municipio, se cambie el extent del mapa web y se acerque a una zona determinada. Lo que quiero es saber como le puedo pasar un dato desde otro widget al mapa de esta plantilla. Muchas gracias por la ayuda en este tema.
... View more
02-21-2019
01:06 PM
|
0
|
1
|
412
|
POST
|
Buenas noches, Estoy desarrollando una aplicación con Web AppBuilder versión 2.9 y deseo que al acceder a los elementos de Portal de ArcGIS 10.6 se muestre siempre el popup de inicio de sesión. El popup del que hablo es el siguiente: Cuando trabajo en la aplicación de forma local aparece el popup como lo deseo. Pero al llevar la aplicación al servidor de producción la configuración de la aplicación cambia y aparece la ventana de inicio de sesión de Portal. Al tener la aplicación en el servidor, el inicio de sesión aparece así: ¿Cómo puedo hacer para forzar el popup de inicio de sesión en la aplicación? Muchas gracias por la ayuda en este tema.
... View more
11-13-2018
04:32 PM
|
0
|
3
|
588
|
POST
|
Si alguien lo necesita, la solución que yo encontré fue colocar un botón dentro del WAB y que al hacer clic sobre ese botón me abra la página https://url.propia/arcgis/sharing/rest/oauth2/signout. Al hacerlo se abre una página que indica que se cerró sesión. Así de sencillo lo hice. Ojalá esto sea de gran ayuda para quien lo necesite y también espero que alguien encuentre una mejor solución a este problema.
... View more
05-03-2018
08:40 AM
|
1
|
0
|
502
|
POST
|
Muchas gracias por la ayuda. Leí la información del link y me sirvió un poco para entender el proceso
... View more
05-03-2018
08:36 AM
|
0
|
0
|
502
|
POST
|
Buenos días, He estado buscando en foros, en la comunidad esri y en diferentes páginas web pero no he encontrado información concreta y mucho menos una solución. Creo tal vez puede ser un problema de fácil solución, pero no he dado con dicha solución hasta ahora. Estoy trabajando con Web AppBuilder 2.1 y deseo agregar un botón de cerrar sesión dentro de las aplicaciones desarrolladas con dicha herramienta, de tal forma que una vez el usuario haga clic sobre el botón de cerrar sesión, la aplicación del WAB se recargue y pida los datos de inicio de sesión de nuevo, además de destruir las credenciales con las que se ingresó a la aplicación. Muchas gracias por la ayuda en este tema.
... View more
04-03-2018
09:12 AM
|
0
|
3
|
737
|
POST
|
Buenos días, En la aplicación que estoy desarrollando ya tengo múltiples acciones que he podido ir solucionando gracias a la ayuda de este foro. En este momento tengo un nuevo problema con mi aplicación. Ya puedo agregar un nuevo registro a una tabla relacionada. El proceso funciona para agregar un solo registro a la vez. Lo que deseo hacer ahora es poder subir muchos registros a la vez a través de un archivo .csv o .xml o en el formato que se pueda hacer esto. No sé si es posible o no y hasta ahora empiezo a indagar en este tema, pero hasta ahora no he encontrado información concreta sobre este tema y es muy importante ya que deseo que el usuario pueda subir muchos registros a la vez a una tabla. Agradezco cualquier ayuda con este tema.
... View more
04-02-2018
02:46 PM
|
0
|
0
|
310
|
POST
|
Buenas tardes, Estuve trabajando en este tema y para agrear registros ya encontré la solución. Estoy trabajando en la parte de eliminar un registro, pero ya tengo una idea de como hacerlo y voy a tener listo eso muy pronto. Por si alguien necesita esto mismo solo debe avisarme y con gusto le diré que fue lo que hice para solucionar el problema.
... View more
04-02-2018
02:30 PM
|
2
|
1
|
717
|
POST
|
Good morning, I don't know if the original subject of this question is still a problem. A few weeks ago I come across with the same issue and I manage to solve it by destroing the container of the FeatureTable. This is he code of my solution (with some extra code that you may not need at all): var editorWidget; var featureTable0; var featureTable1; var map; var capaVisible = []; var definitivo = []; var relationships = []; var relationship0; var relationship1; var relationship2; var names = []; var name0; var name1; var name2; var myFeatureLayer0 = null; var capasUsuario = []; //var webmap = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //Mapa de consulta (Servidor de pruebas) var webmap = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //Mapa de edición (Servidor pruebas) require([ "esri/layers/FeatureLayer", "esri/dijit/FeatureTable", "dojo/ready", "dojo/parser", "esri/arcgis/Portal", "esri/arcgis/OAuthInfo", "esri/IdentityManager", "esri/config", "esri/tasks/GeometryService", "esri/symbols/PictureMarkerSymbol", "esri/arcgis/utils", "esri/dijit/LayerList", "esri/tasks/query", "dojo/on", "dojo/dom", "dojo/dom-attr", "dojo/_base/lang", "dojo/_base/array", "esri/dijit/editing/Editor", 'dojo/_base/html', "esri/dijit/HomeButton", "dojo/domReady!" ], function ( FeatureLayer, FeatureTable, ready, parser, arcgisPortal, OAuthInfo, esriId, config, GeometryService, PictureMarkerSymbol, arcgisUtils, LayerList, Query, on, dom, domAttr, lang, array, Editor, html, HomeButton ) { ready(function () { var info = new OAuthInfo({ appId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", portalUrl: "https://your.server/arcgis", popup: false }); esriId.registerOAuthInfos([info]); esriId.checkSignInStatus(info.portalUrl + "/sharing").then( function () { createMap(); } ).otherwise( function () { esriId.getCredential(info.portalUrl + "/sharing").then(function () { createMap(); }); } ); on(dom.byId("return"), "click", function () { window.location.replace("inicio.php"); }); on(dom.byId("sign-out"), "click", function () { esriId.destroyCredentials(); }); function createMap() { parser.parse(); config.defaults.io.proxyUrl = "https://your.server/apps/edicion/Net/proxy.ashx"; config.defaults.geometryService = new GeometryService("https://utility.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"); //Creando el mapa arcgisUtils.arcgisUrl = "https://your.server/arcgis/sharing/rest/content/items"; arcgisUtils.createMap(webmap, "map", { ignorePopups: true }).then(function (response) { map = response.map; var capas = arcgisUtils.getLayerList(response); //var capasTematicas = capas.reverse(); var capasTematicas = capas; for (var i = 0; i < arreglo.length; i++) { for (var j = 0; j < capasTematicas.length; j++) { if ((capasTematicas .layer.layerId === parseInt(arreglo[0])) && (capasTematicas .layer.arcgisProps.title === arreglo[1])) { capasUsuario.push(capasTematicas ); } } } var myWidget = new LayerList({ map: map, layers: capasUsuario.reverse() }, "layerList"); myWidget.startup(); var table1 = html.create('div', { 'class': 'esriTable', 'id': 'myTableNode3' }, "myTableNode0"); var table2 = html.create('div', { 'class': 'esriTable', 'id': 'myTableNode4' }, "myTableNode1"); var table3 = html.create('div', { 'class': 'esriTable', 'id': 'myTableNode5' }, "myTableNode2"); // FeatureLayer editable myFeatureLayer0 = new FeatureLayer("https://gyour.server/server/rest/services/yourService/FeatureServer/0", { mode: FeatureLayer.MODE_ONDEMAND, outFields: ["*"], visible: true }); // FeatureLayer editable var myFeatureLayer1 = new FeatureLayer("https://gyour.server/server/rest/services/yourService/FeatureServer/0", { mode: FeatureLayer.MODE_ONDEMAND, outFields: ["*"], visible: true }); // FeatureLayer editable var myFeatureLayer2 = new FeatureLayer("https://gyour.server/server/rest/services/yourService/FeatureServer/0", { mode: FeatureLayer.MODE_ONDEMAND, outFields: ["*"], visible: true }); domAttr.set("tab0", "innerHTML", "Seleccione una capa para ver las tablas relacionadas"); domAttr.set("tab1", "innerHTML", "."); domAttr.set("tab2", "innerHTML", "."); //Crea un nuevo FeatureTable y establece sus propiedades featureTable0 = new FeatureTable({ featureLayer: myFeatureLayer0, map: map, editable: true, syncSelection: true, showGridHeader: false }, 'myTableNode3'); featureTable0.startup(); //Crea un nuevo FeatureTable y establece sus propiedades featureTable1 = new FeatureTable({ featureLayer: myFeatureLayer1, map: map, editable: true, syncSelection: true, showGridHeader: false }, 'myTableNode4'); featureTable1.startup(); //Crea un nuevo FeatureTable y establece sus propiedades featureTable2 = new FeatureTable({ featureLayer: myFeatureLayer2, map: map, editable: true, syncSelection: true, showGridHeader: false }, 'myTableNode5'); featureTable2.startup(); on(myWidget, "toggle", lang.hitch(this, function (evt) { array.map(myWidget.layers, function (layer, indx) { if (evt.visible) { if (indx === evt.layerIndex) { if (layer.visibility === true) { if (typeof capaVisible !== 'undefined') { capaVisible.push(layer); } } layer.layer.setVisibility(true); layer.visibility = true; } if (indx !== evt.layerIndex) { layer.layer.setVisibility(false); layer.visibility = false; } } }); if (typeof capaVisible[0] !== 'undefined') { if (typeof capaVisible[0].layer.relationships[0] !== 'undefined') { if (typeof capaVisible[0].layer.relationships[1] !== 'undefined') { relationships = []; names = []; name0 = capaVisible[0].layer.name; name1 = capaVisible[0].layer.relationships[0].name; name2 = capaVisible[0].layer.relationships[1].name; names.push(name0); names.push(name1); names.push(name2); relationship0 = capaVisible[0].layer.layerId.toString(); relationship1 = capaVisible[0].layer.relationships[0].relatedTableId.toString(); relationship2 = capaVisible[0].layer.relationships[1].relatedTableId.toString(); relationships.push(relationship0); relationships.push(relationship1); relationships.push(relationship2); if (featureTable0 && featureTable1 && featureTable2) { featureTable0.destroy(); featureTable1.destroy(); featureTable2.destroy(); featureTable0 = null; featureTable1 = null; featureTable2 = null; capaVisible = []; loadTable(relationships, names); } } else if (typeof capaVisible[0].layer.relationships[1] === 'undefined') { relationships = []; names = []; name0 = capaVisible[0].layer.name; name1 = capaVisible[0].layer.relationships[0].name; name2 = "."; names.push(name0); names.push(name1); names.push(name2); relationship0 = capaVisible[0].layer.layerId.toString(); relationship1 = capaVisible[0].layer.relationships[0].relatedTableId.toString(); relationship2 = "0"; relationships.push(relationship0); relationships.push(relationship1); relationships.push(relationship2); if (featureTable0 && featureTable1 && featureTable2) { featureTable0.destroy(); featureTable1.destroy(); featureTable2.destroy(); featureTable0 = null; featureTable1 = null; featureTable2 = null; capaVisible = []; loadTable(relationships, names); } } } else if (typeof capaVisible[0].layer.relationships[0] === 'undefined') { relationships = []; names = []; name0 = capaVisible[0].layer.name; name1 = "."; name2 = "."; names.push(name0); names.push(name1); names.push(name2); relationship0 = capaVisible[0].layer.layerId.toString(); relationship1 = "0"; relationship2 = "0"; relationships.push(relationship0); relationships.push(relationship1); relationships.push(relationship2); if (featureTable0 && featureTable1 && featureTable2) { featureTable0.destroy(); featureTable1.destroy(); featureTable2.destroy(); featureTable0 = null; featureTable1 = null; featureTable2 = null; capaVisible = []; loadTable(relationships, names); } } } })); }); } function loadTable(id, nombre) { map.removeLayer(myFeatureLayer0); domAttr.set("tab0", "innerHTML", nombre[0]); domAttr.set("tab1", "innerHTML", nombre[1]); domAttr.set("tab2", "innerHTML", nombre[2]); var table1 = html.create('div', { 'class': 'esriTable', 'id': 'myTableNode3' }, "myTableNode0"); var table2 = html.create('div', { 'class': 'esriTable', 'id': 'myTableNode4' }, "myTableNode1"); var table3 = html.create('div', { 'class': 'esriTable', 'id': 'myTableNode5' }, "myTableNode2"); // FeatureLayer1 editable myFeatureLayer0 = new FeatureLayer("https://gyour.server/server/rest/services/yourService/FeatureServer/" + id[0], { mode: FeatureLayer.MODE_ONDEMAND, outFields: ["*"], visible: true }); // Recuadro azul al seleccionar un feature en el mapa var selectionSymbol = new PictureMarkerSymbol("img/select.png", 35, 35); myFeatureLayer0.setSelectionSymbol(selectionSymbol); // Cuando un usuario hace clic sobre un elemento en el mapa, la fila correspondiente en la primer tabla // (Tabla de featureLayer) se selecciona myFeatureLayer0.on("click", function (evt) { var idProperty = myFeatureLayer0.objectIdField, feature, featureId, query; if (evt.graphic && evt.graphic.attributes && evt.graphic.attributes[idProperty]) { feature = evt.graphic, featureId = feature.attributes[idProperty]; query = new Query(); query.returnGeometry = false; query.objectIds = [featureId]; query.where = "1=1"; myFeatureLayer0.selectFeatures(query, FeatureLayer.SELECTION_NEW); } }); map.addLayer(myFeatureLayer0); //Crea una nueva FeatureTable y establece sus propiedades featureTable0 = new FeatureTable({ featureLayer: myFeatureLayer0, map: map, editable: true, syncSelection: true, showGridHeader: false }, 'myTableNode3'); featureTable0.startup(); console.log("featureTable0"); console.log(featureTable0); // FeatureLayer2 editable var myFeatureLayer1 = new FeatureLayer("https://gyour.server/server/rest/services/yourService/FeatureServer/" + id[1], { mode: FeatureLayer.MODE_ONDEMAND, outFields: ["*"], visible: true }); //Crea una nueva FeatureTable y establece sus propiedades featureTable1 = new FeatureTable({ featureLayer: myFeatureLayer1, map: map, editable: true, syncSelection: true, showGridHeader: false }, 'myTableNode4'); featureTable1.startup(); console.log("featureTable1"); console.log(featureTable1); // FeatureLayer2 editable var myFeatureLayer2 = new FeatureLayer("https://gyour.server/server/rest/services/yourService/FeatureServer/" + id[2], { mode: FeatureLayer.MODE_ONDEMAND, outFields: ["*"], visible: true }); //Crea una nueva FeatureTable y establece sus propiedades featureTable2 = new FeatureTable({ featureLayer: myFeatureLayer2, map: map, editable: true, syncSelection: true, showGridHeader: false }, 'myTableNode5'); featureTable2.startup(); // Escucha al evento para refrescar la información featureTable0.on("refresh", function (evt) { //console.log("refresh event - ", evt); }); featureTable0.on("show-related-records", function (evt) { console.log("show-related-records", evt); }); // Escucha al evento para refrescar la información featureTable1.on("refresh", function (evt) { //console.log("refresh event - ", evt); }); // Escucha al evento para refrescar la información featureTable2.on("refresh", function (evt) { //console.log("refresh event - ", evt); }); relationships = null; } }); }); And in this video you can see how this code works (of course, the HTML code is on a different file): I hope this answer helps with this problem
... View more
01-26-2018
06:43 AM
|
0
|
0
|
341
|
POST
|
Buenas tardes, Muchas gracias Alexander Daniel Mena por tu respuesta, me fue muy útil en verdad. Ya en mi proyecto puedo filtrar las capas una a una por el usuario (Puedo permitirle ver 1 o muchas tablas). Hice la implementación propia a partir de tu respuesta, fui mucho más allá, pero este fue el punto de partida.
... View more
01-24-2018
01:50 PM
|
1
|
0
|
727
|
POST
|
Puedo pasarte el código para que puedas replicar el problema si te parece bien. Gracias por la ayuda
... View more
12-29-2017
01:05 PM
|
0
|
1
|
922
|
POST
|
Buenas tardes, El problema está pasando en todos los navegadores. Ya modifiqué estilos del dgrid y se pierde el estilo. Pasa que no aparece la fila de los títulos. Modifiqué una propiedad: .dgrid-scroller{ margin-top: 6% !important; } Con esto logré que se muestre la fila de títulos de las columnas, pero ya que cambia el tamaño de los títulos en la tabla queda un espacio en blanco, tal como se ve en la imagen: Así mismo, los registros de las tablas que se muestran al seleccionar la tabla tienen el estilo, pero los que quedan ocultos no mantienen el estilo. En la imagen se muestra el problema de los estilos de las tablas.
... View more
12-29-2017
01:04 PM
|
0
|
0
|
922
|
POST
|
Buenos días, En el proyecto en el que estoy trabajando tengo ya implementado el widget LayerList y funciona perfecto para activar y desactivar las capas que se ven en el mapa. En la aplicación estoy trabajando con los usuarios de mi Portal ArcGIS, ellos tienen compartido un mapa con los layers que es al que acceden a través de mi aplicación. Para dividirlos cree varios mapas con solo las capas a las que cada usuario puede acceder en base a la dependencia a la que pertenecen. Esto hizo que tuviera que crear 8 mapas para separar cada dependencia sólo con las capas que deberian ver los funcionarios. Lo que quiero ahora es saber si es posible filtrar las capas que aparecen en el LayerList de acuerdo a los permisos que tiene cada usuario. Es decir, si el funcionario pertenece a la "dependencia01" deberia poder ver sólo las capas marcadas con la palabara "Aire", las cuales señalo en la imagen. El resto de capas que allí se muestran deberían desaparecer. ¿Es posible hacer esto? ¿filtrar las capas dentro del LayerList en base a los permisos de usuario? ¿o en base a alguna variable en mi aplicación para hacer el filtro? Lo ideal es tener sólo un mapa en portal y que al acceder a él, en base a los permisos en la aplicación que estoy desarrollando, se filtren las capas y muestre sólo aquellas capas a las que tiene permiso cada usuario. Quiero saber si se puede hacer en el código de programación y sin la necesidad de crear muchos mapas para realizar esta tarea. Muchas gracias por la ayuda.
... View more
12-14-2017
05:54 AM
|
1
|
2
|
984
|
POST
|
Buenas tardes, Estoy trabajando con la API de ArcGIS para JavaScript para crear una nueva aplicación que permita a los usuarios interactuar con los feature layers en un mapa web. La idea es que en la aplicación un usuario pueda editar/añadir/eliminar un registro de una tabla relacionada con una feature layer en un mapa web. Hasta ahora, he tenido éxito con la creación de la tabla de cada una de las tablas relacionadas de una feature layer. Ahora, necesito ayuda con la adición/eliminación de un registro en la tabla. He estado buscando en foros y sitios web, y por supuesto en el API reference, pero no puedo encontrar ningún tipo de información sobre cómo crear o eliminar un registro de una feature table. ¿Es posible hacer esto con la API? Necesito poder añadir una nueva fila en cualquier tabla relacionada con una feature layer. Así es como funciona mi aplicación por ahora: Como se muestra en la imagen, un usuario puede ver la feature table de una feature layer y sus tablas relacionadas. En cualquiera de esas tablas, el usuario puede editar la información. Ahora, necesito saber cómo añadir una nueva fila con información a cualquiera de las tablas. Realmente gracias por cualquier respuesta a este asunto, cualquier cosa puede ser de ayuda para resolver este problema.
... View more
12-05-2017
12:33 PM
|
0
|
3
|
1369
|
POST
|
Buenos días, Tengo un problema con FatureTable. Estoy consultando los feature layer de un mapa, la información del feature layer se muestra en una tabla y consulto las tablas relacionadas en otras tablas. Estoy usando FeatureTable para cargar la información del feature layer y sus tablas relacionadas. El problema que tengo actualmente es que no me muestra los títulos de las columnas de las tablas, o las muestra pero las columnas se superponen. Sólo cuando hago cambio de layer en el widget de layer list y se consultan las tablas del layer seleccionado, se carga de forma completa la tabla mostrando los títulos en la primer fila de la tabla. encontré que es un problema con el dgrid-scroller, pero no sé como solucionar el problema que se presenta. Agradezco toda ayuda con este tema.
... View more
12-05-2017
07:28 AM
|
0
|
4
|
1057
|
POST
|
Si. Ya en mi aplicación pude filtrar las capas en el widget. Ahora, cada vez que selecciono una capa en el la lista, se muestra sólo el simbolo de esa capa en el widget. Muchas gracias por la ayuda. Fue muy util la respuesta.
... View more
12-05-2017
06:01 AM
|
1
|
0
|
484
|
Title | Kudos | Posted |
---|---|---|
1 | 05-03-2018 08:40 AM | |
1 | 11-17-2017 11:59 AM | |
2 | 04-02-2018 02:30 PM | |
1 | 01-24-2018 01:50 PM | |
1 | 12-14-2017 05:54 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:24 AM
|