tipos para node hacer graficos grafico graficas grafica google estadisticas dinamicos con como javascript angularjs highcharts highstock

javascript - para - highcharts grafica



¿Cómo crear un gráfico de rango de columnas en Highcharts usando las funciones de rango y navegador? (1)

Entonces, después de unas horas de excavación, acabo de descubrir al culpable (o realmente lo espero). El problema es su definición del formateador de etiquetas yAxis :

yAxis: { tickInterval: 1, gridLineWidth: 1, labels: { formatter: function() { // THIS IS THE PROBLEM if (tasks[this.value]) { return tasks[this.value].name; } } }, startOnTick: false, endOnTick: false, title: { text: ''Task'' } },

En realidad, no verifica si debe mostrar la etiqueta de acuerdo con task.intervals (consulte json.js ). Una simple actualización ( Plunker ) del formateador parece funcionar:

yAxis: { tickInterval: 1, gridLineWidth: 1, labels: { formatter: function () { console.log("scripts.js - yAxis.labels.formatter", this.value); if (tasks[this.value]) { //if (tasks[this.value].name === ''LILLY_C'') { var _xAxis = this.chart.axes[0]; var _task = tasks[this.value]; var _show = false; // Not optimized for large collections for (var _i = 0; _i < _task.intervals.length; _i++) { var _int = _task.intervals[_i]; if (_xAxis.min <= _int.to) { _show = true; } } console.log("scripts.js - yAxis.labels.formatter", tasks[this.value].name, _show, _xAxis.min, _xAxis.max, _task.intervals ); if (_show) { return tasks[this.value].name; } else { return; } //} //return tasks[this.value].name; } } }, startOnTick: false, endOnTick: false, title: { text: ''Task'' } },

Ver Plunker para la Plunker .

El significado de las etiquetas yAxis es: Mostrar etiqueta si ve una ejecución en el gráfico o si hay una ejecución a la derecha del gráfico. Por favor modifique la condición

if (_xAxis.min <= _int.to) {

como veas conveniente.

Descargo de responsabilidad: no uso Highcharts, por lo que esta respuesta intenta explicar el problema y no sugerir una forma de Highcharts para resolver el problema.

Lecciones aprendidas:

  • yaxis-plugin.js es irrelevante para el problema.
  • Highstock.js es una biblioteca de código abierto ( highstock.src.js ). Cualquier depuración es mucho más fácil si depura el código fuente original. El código minimizado agrega complejidad y adivinanzas innecesarias. Descargué la biblioteca y agregué algún console.log() para averiguar qué está sucediendo.

Tengo un requisito para trazar el historial de ejecución de una tarea en Highcharts. Tiene que mostrar que el historial de ejecución de las tareas es una barra horizontal. Hay requisitos adicionales que he agregado como una actualización a continuación. Recientemente descubrí que StockChart no admite la opción inverted y que solo rangeSelector y rangeSelector están disponibles en StockChart. Por lo tanto, estoy usando esas funciones.

Entonces, para cumplir con el requisito, creé algo similar a este ejemplo de jsfiddle (encontrado en algún lugar mientras navegaba, no recuerdo la fuente) y terminé con este enlace de plunker con la ayuda de mi question anterior, gracias a Pawel Fus

Pregunta de actualización para evitar confusiones

Requerimientos adicionales:

Mostrar solo aquellas tareas que se ejecutaron en un rango de fecha y hora en particular. En caso de que haya demasiadas ejecuciones, como más de 10 ejecuciones, entonces debe existir una manera de mostrar solo 10 tareas de forma visible con un eje y que se pueda desplazar para mostrar otras tareas. enlace plunker al problema

Explicación del problema del plunker anterior.

Si verifica la captura de pantalla siguiente desde el plunker anterior, el rango de tiempo es del 12/12/2014 09:32:26 al 12/12/2014 10:32:26 y solo hay 2 tareas que han ejecutado m_ARRAYV_SALES_ZIG1_CALL2_VOD__C_OB & m_ZIG2_HCP_MERGE_IB_CN . Sin embargo, puedo ver otra tarea entre LILLY_C que ni siquiera se ejecutó en este rango de fecha y hora. (En los datos reales hay más de 10 tareas que saturan este gráfico que ni siquiera se encuentra dentro de este rango de fecha y hora)

Además, si observa en la esquina inferior derecha, el tiempo cambió de 09:38 a 19:20 . 19:20 es la hora de m_ZIG2_HCP_MERGE_IB_CN tarea m_ZIG2_HCP_MERGE_IB_CN . A continuación se muestran mis opciones de gráfico

var chart_options = { chart: { renderTo: ''container'', height: 600 }, title: { }, credits: { enabled: false }, xAxis: { type: ''datetime'', gridLineWidth: 1, tickInterval: 1 * 3600 * 1000, dateTimeLabelFormats: { month: ''%b %e, %Y'' } }, yAxis: { tickInterval: 1, gridLineWidth: 1, labels: { formatter: function() { if (tasks[this.value]) { return tasks[this.value].name; } } }, startOnTick: false, endOnTick: false, title: { text: ''Task'' } }, rangeSelector: { selected: 0, buttons: [ { type: "minute", count: 60, text: "1h" }, { type: "minute", count: 180, text: "3h" }, { type: "minute", count: 300, text: "5h" }], inputDateFormat: ''%m/%d/%Y %H:%M:%S'', inputEditDateFormat: ''%m/%d/%Y %H:%M:%S'', inputBoxWidth: 120 }, navigator: { enabled: false }, legend: { enabled: false }, tooltip: { shared: false, formatter: function() { var str = ''''; str += ''Task: '' + this.series.name + ''<br>''; str += ''From: '' + Highcharts.dateFormat(''%m/%d/%y %H:%M'', this.point.from) + ''<br>''; str += ''To: '' + Highcharts.dateFormat(''%m/%d/%y %H:%M'', this.point.to) + ''<br>''; return str; } }, plotOptions: { line: { lineWidth: 10, marker: { enabled: true }, dataLabels: { enabled: true, align: ''left'', formatter: function() { return this.point.options && this.point.options.label; } }, states:{ hover:{ lineWidth:10 } } }, series: { cursor: ''pointer'', point: { events: { click: function () { var query = ''{ "task_id": "''+this.task_id+''","start_time": ''+this.from+'',"exclude_interval": ''+opExcludeMinutes+'',"size": 10 }''; $scope.taskName = this.series.name; $scope.isTaskSelected = false; $scope.operationalReportAgentTaskHistoryServiceRequest(query); } } } } }, series: seriesData };