NVD3 Multibar: actualice la tabla existente con diferentes estados de la leyenda (como si se hicieran clic) -- javascript campo con jquery campo con json campo con charts campo con nvd3.js camp Relacionados El problema

nvd3 multibar - update existing chart with different legend states (as if they were clicked)


1
vote

problema

Español

Necesito ayuda sobre cómo acceder y "actualizar" a los estados en un NVD3 Multibarchart (y otros como StackeDareachart, Multichart). Estoy usando NVD3 1.7.x y tengo un multibarquarto en ejecución con algunas fuentes (estados) de un archivo JSON. Además, tengo varios archivos JSON para diferentes conjuntos de tiempo con las mismas fuentes (estados).

Busqué mucho para respuestas y tipps con respecto a esta pregunta y encontré solo 2 hits en una antigua pregunta (antigua versión NVD3) NVD3 Pasando el evento incorrecto en STATECHANE (al hacer clic en Legend) Después de recargar y ¿Cómo deshabilitar algunas corriente de forma predeterminada en un gráfico de línea simple NVD3? con respecto a NVD3 1.1 o más, por lo que discutieron una solución debido a un error. Como recibimos actualizaciones en 2015 a 1.7 y ha habido algunos cambios en las funciones estatales (Getter, Setter, etc.) Quiero saber si este error aún existe y cómo usar las nuevas funciones de la manera correcta. La anotación y la nueva documentación no me ayudaron (solo para el Estado default desunido, le dijo: Utilice el despacho.Statechange (estado); en lugar de


OK, ¿qué hago / necesito?: Quiero guardar los cambios / opciones en los Estados Unidos que un usuario se realizó como "config" -Variable y luego quiero restaurar estos estados al mismo ChartObject que se actualizó con datos diferentes (de otro archivo JSON) que tiene los mismos estados disponibles. Mi problema es que los archivos JSON han almacenado las configuraciones de estado predeterminadas que necesito sobrescribir en los casos en que los ciclos de usuario a través de los conjuntos de datos, de lo contrario, debe seleccionar la configuración de flujo de nuevo.

Ejemplo: digamos que tenemos la tabla que se ejecuta con apilada y agrupada disponible y algunos flujos: Stream1, Stream2, Stream3. Por defecto, el gráfico carga la vista apilada y las 3 transmisiones son visibles en el archivo JSON para E.G. "2015".

  chart.stacked(): {true} chart.state.disabled: {"disabled":[false,false,false]}   

Entonces, si solo si un usuario solo desea comparar la transmisión 1 y 3 en diferentes series de tiempo, se desactiva / Klicks en Stream 2:

  chart.stacked(): {true} chart.state.disabled: {"disabled":[false,true,false]}   

y después de que esta configuración está almacenada (¡esto funciona!) Y debe restaurarse para el siguiente conjunto de datos (diferente archivo JSON E.G. "2014") (esto no funciona ahora mismo).


Lo que tengo es un gráfico de trabajo, que está cargando y mostrando diferentes archivos JSON. La selección se implementa mediante la lista desplegable y los eventos son despedidos por JQuery. Soy capaz de salvar a los estados obteniendo valores de:

  chart.stacked(); chart.state.disabled; chart.reduceXTicks();   

Cuando sobrescriba los estados guardados, puedo ver los nuevos valores en chart.state.disabled , pero después de un 9988777664 se han ido y veo los estados predeterminados del archivo JSON / desde El objeto de la tabla inicial.

Ya he jugado con diferentes funciones como las funciones de despacho (CH CAMINATE, STATECHANGE), pero no tuve éxito para mantener los valores después de una actualización de la tabla.

  //oldStates is a copy of the last states before switching to a new time set (json file) in the chart. chart.state.disabled = oldStates;  // works but chart.update overwrites it with default values!  chart.defaultState(oldStates); // NO changes. marked as DEPRECATED in documentation saying: Use chart.dispatch.changeState(...) instead.  chart.dispatch.changeState(oldStates);  // No change, not working?   

Me alegraría de obtener cualquier sugerencia / tipps cómo cambiar de estados por sobrescribir / cambiar los estados individuales y actualizar el gráfico con ellos, lo que representa solo la nueva selección. Thx!

Original en ingles

I need help in how to access and "update" states in an nvd3 multiBarChart (and others like stackedAreaChart, multiChart). I am using nvd3 1.7.x and have a running multiBarChart with some sources (states) from a JSON file. Additionally I have multiple JSON files for different time sets with the same sources (states).

I searched a lot for answers and tipps regarding this question and found only 2 hits in a old questions (old nvd3 version) nvd3 passing wrong event on stateChange (when clicking legend) after chart is reloaded and How to disable some streams by default in a nvd3 Simple Line Chart? regarding nvd3 1.1 or older for which they discussed an workaround because of an bug. As we got updates in 2015 to 1.7 and there have been some changes to the state functions (getter, setter and so on) I want to know if this bug still exists and how to use the new functions in the right way. The annotation and the new documentation did not help me out (only for deprecated defaultState its told: use dispatch.stateChange(state); instead).


OK, what do i do/need?: I want to save changes/choices on the states a user made as a "config"-variable and then I want to restore these states to the same chartobject wich was updated with different data (of another json file) having the same states available. My problem is, that the json files have stored default state settings that I need to overwrite in cases a user cycles through data sets - otherwise he needs to select the stream config every change again.

Example: Lets say we have the chart running with stacked and grouped available and some streams: stream1, stream2, stream3. By default the chart loads stacked view and all 3 streams are visible in json file for e.g. "2015".

chart.stacked(): {true} chart.state.disabled: {"disabled":[false,false,false]} 

So if a user only wants only to compare stream 1 and 3 in different time series, he deactivates/klicks on stream 2:

chart.stacked(): {true} chart.state.disabled: {"disabled":[false,true,false]} 

and after that this setting is stored (this is working!) and needs to be restored for the next data set (different json file e.g. "2014") (this is not working right now).


What i have is a working chart, that is loading and displaying different json files. The selection is implemented by dropdown list and events are fired by jquery. I am able to save the states by getting values of:

chart.stacked(); chart.state.disabled; chart.reduceXTicks(); 

When I overwrite the saved states i can see the new values in chart.state.disabled but after an chart.update(); they are gone and i see the default states from the json file /from the initial chart object.

I already played around with different functions like the dispatch functions (changeState, stateChange) but I had no success to keep the values in after a chart update.

//oldStates is a copy of the last states before switching to a new time set (json file) in the chart. chart.state.disabled = oldStates;  // works but chart.update overwrites it with default values!  chart.defaultState(oldStates); // NO changes. marked as DEPRECATED in documentation saying: Use chart.dispatch.changeState(...) instead.  chart.dispatch.changeState(oldStates);  // No change, not working? 

I would be glad in getting any hints/tipps how to change states by overwriting/changing single states and update the chart with them, rendering only the new selection. THX!

              

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

Tal vez esto ayuda: http://plnkr.co/edit/cogzknoe4coetjhmwtk6?p=preview

  div0  

Puede configurar los atributos deshabilitados de la serie individual en la matriz de series antes de pasarlo para que se establezca.

 

Maybe this helps: http://plnkr.co/edit/CoGZkNoe4COEtjHMWtk6?p=preview

    data = data.map(function(series){       if (series.key === 'Disabled Series Key'){         series.disabled = true;       }       return series;     }); 

You can set the individual series disabled attributes in the array of series before you pass it to be charted.

 
 
 
 

Relacionados problema

40  NVD3 PIECHART.JS - ¿Cómo editar la información sobre herramientas?  ( Nvd3 piechart js how to edit the tooltip ) 
Estoy usando el componente Piechart.js de NVD3 para generar un Piechart en mi sitio. El archivo .js proporcionado incluye varios var's, de la siguiente manera...

36  Gráfico de línea en tiempo real con nvd3.js  ( Real time line graph with nvd3 js ) 
Estoy tratando de crear un gráfico de tiempo real usando NVD3.js que se actualizaría periódicamente y con la impresión de que los datos se procesan en tiempo ...

0  NVD3 LINE LINE CUESTION  ( Nvd3 line chart issue ) 
Aquí, he usado la tabla de línea de NVD3. Estoy tratando de solucionar algunos problemas con esta tabla 1. Esta es una tabla interactiva, pero incluso si h...

0  Cómo Center NDV3 LinChart  ( How to center ndv3 linechart ) 
Soy un NOOB total a HTML y Javascript, así que por favor perdona mi ignorancia. Quiero crear un gráfico nvd3 . Estoy pasando datos a ndv3 y generando un ar...

1  Añadir línea vertical a la tabla de líneas en RCHART NVD3 (NPLOT)  ( Add vertical line to line chart in rchart nvd3 nplot ) 
Me gustaría agregar varias líneas verticales que indican eventos particulares en una tabla de línea creada con NPLOT. ¿Alguna sugerencia? ngOnInit() { le...

2  Use un valor diferente en el mouseover en NVD3 angular  ( Use different value on mouseover in angular nvd3 ) 
Tengo un conjunto de datos que contiene una frecuencia por ciento y un conteo absoluto. El conjunto de datos se ve así: $scope.data = [ { key: ...

0  Etiquetas de eje X que no se muestran completamente  ( X axis labels not displaying fully ) 
Sé que este es probablemente el peor código jamás escrito, pero por favor soporte conmigo, realmente no consigo el D3 (todavía). Entonces tengo el siguiente...

0  Multichart de NVD3 angular no está funcionando  ( Angular nvd3 multichart is not working ) 
Quiero crear gráficos múltiples con la línea y el gráfico multibar usando angularjs nvd3 . Tengo que crear gráficos de línea, pero incapaz de mostrar gráfic...

15  ¿Qué pasó con NVD3? [cerrado]  ( What happened to nvd3 ) 
cerrado. Esta pregunta es off-topic . Actualmente no está aceptando respuestas. ¿Quieres ...

0  cambiar el tamaño de la fuente del axislabel  ( Change font size of axislabel ) 
Cómo aumentar el tamaño de la fuente de solo los axislabels y no las etiquetas de garrapatas. Como puede ver el tamaño de fuente Axislabel es demasiado pe...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos