【问题标题】:Change values of chart range filter in Google Chart更改 Google Chart 中图表范围过滤器的值
【发布时间】:2017-11-25 13:46:03
【问题描述】:

Picture

我有两个用于折线图的图表范围过滤器。

一个是日期,第二个是时间。

首先我想从日期范围过滤器中选择日期,然后我希望另一个图表范围滑块的值相对于第一个滑块发生变化。

或者如何设置图表范围过滤器的“hAxis”值?

提前致谢。

  var controll = new google.visualization.ControlWrapper({
                controlType: 'ChartRangeFilter',
                containerId: 'control_div1',
                options: {

                    filterColumnIndex: 0,

                    ui: {
                        chartOptions: {
                            height: 50,
                            labelStacking: 'vertical',

                            chartArea: {
                                width: '80%',
                            },

                            'hAxis': { 'baselineColor': 'none', format: "dd MMM yyyy" }


                        }
                    }
                },
                state: {
                    range: {
                        start: new Date(2017, 5, 8, 20, 00, 00, 00),
                        end: new Date(2017, 5, 8, 20, 50, 00, 00)

                        //state: { lowValue: new Date(2017, 5, 5, 20, 00, 00, 00),
                        //    highValue: new Date(2017, 5, 13, 20, 50, 00, 00) }
                    }

                }
            });

第二个控制包装跟随时间变化

var control = new google.visualization.ControlWrapper({
        controlType: 'ChartRangeFilter',
        containerId: 'control_div',
        options: {

            filterColumnIndex: 0,

            ui: {
                chartOptions: {
                    height: 50,

                    chartArea: {
                        width: '80%',
                    },

                    'hAxis': { 'baselineColor': 'none', format: " hh:mm:ss" }



                }
            }
        },


    });

【问题讨论】:

    标签: jquery charts google-visualization


    【解决方案1】:

    监听第一个控件的'statechange'事件,

    然后使用state属性值设置第二个的范围

    设置状态后一定要重新绘制控件...

    google.visualization.events.addListener(controlDate, 'statechange', function () {
      var stateDate = controlDate.getState();
      controlTime.setState({
        range: {
          start: stateDate.range.start,
          end: stateDate.range.end
        }
      });
      controlTime.draw();
    });
    

    请参阅以下工作 sn-p...

    google.charts.load('current', {
      callback: drawChart,
      packages: ['controls', 'corechart']
    });
    
    function drawChart() {
      var data = new google.visualization.DataTable();
      data.addColumn('date', 'TimeStamp');
      data.addColumn('number', 'Value');
      data.addRow([new Date('05/03/2016 12:00:19'),  0]);
      data.addRow([new Date('05/03/2016 12:01:31'),  1]);
      data.addRow([new Date('05/03/2016 12:02:43'),  2]);
      data.addRow([new Date('05/03/2016 12:32:01'),  3]);
      data.addRow([new Date('05/03/2016 12:33:14'),  4]);
      data.addRow([new Date('06/03/2016 11:50:42'),  5]);
      data.addRow([new Date('06/03/2016 11:51:57'),  6]);
      data.addRow([new Date('06/03/2016 11:53:11'),  7]);
      data.addRow([new Date('06/03/2016 11:54:25'),  8]);
      data.addRow([new Date('06/03/2016 11:55:39'),  9]);
      data.addRow([new Date('07/03/2016 15:43:50'), 10]);
      data.addRow([new Date('07/03/2016 15:45:02'), 11]);
      data.addRow([new Date('07/03/2016 15:46:14'), 12]);
      data.addRow([new Date('07/03/2016 15:47:26'), 13]);
    
      var controlDate = new google.visualization.ControlWrapper({
        controlType: 'ChartRangeFilter',
        containerId: 'control-date',
        options: {
          filterColumnLabel: 'TimeStamp',
          ui: {
            chartOptions: {
              hAxis: {
                format: 'dd MMM yyyy'
              }
            }
          }
        }
      });
    
      google.visualization.events.addListener(controlDate, 'statechange', function () {
        var stateDate = controlDate.getState();
        controlTime.setState({
          range: {
            start: stateDate.range.start,
            end: stateDate.range.end
          }
        });
        controlTime.draw();
      });
    
      var controlTime = new google.visualization.ControlWrapper({
        controlType: 'ChartRangeFilter',
        containerId: 'control-time',
        options: {
          filterColumnLabel: 'TimeStamp',
          ui: {
            chartOptions: {
              hAxis: {
                format: 'hh:mm:ss'
              }
            }
          }
        }
      });
    
      var chart = new google.visualization.ChartWrapper({
        chartType: 'LineChart',
        containerId: 'chart-line'
      });
    
      var dash = new google.visualization.Dashboard(document.getElementById('dashboard'));
      dash.bind([controlDate, controlTime], [chart]);
      dash.draw(data);
    }
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <div id="dashboard">
      <div id="control-date"></div>
      <div id="chart-line"></div>
      <div id="control-time"></div>
    </div>

    【讨论】:

    • 兄弟谢谢你我找到了方法。!接下来我想知道我可以移动我的固定范围滑块,就像我可以在设置间隔函数中使用它来模拟图表一样。几秒钟后。
    • 使用如上所示的setState方法更改任何过滤器的范围,请务必在之后重新绘制-您还可以在创建时为控件设置“默认范围”添加state 键,类似于options...
    • stackoverflow.com/questions/44703987/… 这是我下一个问题的链接。请指导我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多