javascript - Google Visualization CategoryFilter 用于日期类型

标签 javascript charts google-visualization

我有一个表,其中包含 myDatepartCategory 的过滤器。我的示例数据集包含一个日期 2020 年 1 月 1 日。CategoryFilter 多次显示 2020 年 1 月 1 日。零件类别的另一个 CategoryFilter 正确显示,并具有与数据表匹配的单个值。

如何修改 myDate 使其像 partCategory 一样工作?

一如既往地感谢!

// Load the Visualization API and the corechart package.
google.charts.load('current', {
  'packages': ['corechart', 'table', 'gauge', 'controls']
});

// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(gChart0);

function gChart0() {
  drawChart();
}

function drawChart() {

  var result = [{
    "myDate": new Date(2020, 0, 1),
    "partId": '1234567890xxx',
    "partCategory": 'ABC',
    "someNumber": 0
  }, {
    "myDate": new Date(2020, 0, 1),
    "partId": '1234567890yyy',
    "partCategory": 'ABC',
    "someNumber": 0
  }, {
    "myDate":new Date(2020, 0, 1),
    "partId": '1234567890111',
    "partCategory": 'ABC',
    "someNumber": 0
  }];

  //Create DataTable
  var data = new google.visualization.DataTable();
  data.addColumn('date', 'Calendar Date');
  data.addColumn('string', 'Part Id');
  data.addColumn('string', 'Part Category');
  data.addColumn('number', 'Some Number');

  var dataArray = [];
  $.each(result, function(i, obj) {
    dataArray.push([
      obj.myDate,
      obj.partId,
      obj.partCategory,
      obj.someNumber
    ]);
  });
  data.addRows(dataArray);

  //Options

  var dashboard = new google.visualization.Dashboard(document.getElementById('div_dashboard'));

  var categoryPicker1 = new google.visualization.ControlWrapper({
    controlType: 'CategoryFilter',
    containerId: 'div_categoryPicker1',
    options: {
      filterColumnIndex: 0,
      matchType: 'any',
      ui: {
        labelStacking: 'vertical',
        allowTyping: false,
        allowMultiple: false,
        allowNone: true
      }
    }
  });

  var categoryPicker2 = new google.visualization.ControlWrapper({
    controlType: 'CategoryFilter',
    containerId: 'div_categoryPicker2',
    options: {
      filterColumnIndex: 2,
      matchType: 'any',
      ui: {
        labelStacking: 'vertical',
        allowTyping: false,
        allowMultiple: false,
        allowNone: true
      }
    }
  });

  var table = new google.visualization.ChartWrapper({
    chartType: 'Table',
    containerId: 'div_table',
    options: {
      width: '100%',
      height: 'auto',
      page: 'enable',
      pageSize: '15',
      sort: 'enable',
      allowHtml: true
    }
  });

  dashboard.bind([categoryPicker1, categoryPicker2], [table]);
  dashboard.draw(data);

} //END  function drawChart()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>

<div id="div_dashboard"></div><br />
<div id="div_categoryPicker1"></div><br />
<div id="div_categoryPicker2"></div><br />
<div id="div_table"></div><br />

最佳答案

myDate 类别过滤器上,
您可以使用values选项。
这将覆盖数据表中的可用值。

要提供值,可以使用数据表方法 --> getDistinctValues(columnIndex)

在这里,我们将可用值设置为数据表列中不同的日期列表。

var categoryPicker1 = new google.visualization.ControlWrapper({
  controlType: 'CategoryFilter',
  containerId: 'div_categoryPicker1',
  options: {
    filterColumnIndex: 0,
    matchType: 'any',
    ui: {
      labelStacking: 'vertical',
      allowTyping: false,
      allowMultiple: false,
      allowNone: true
    },
    values: data.getDistinctValues(0)  // <-- set values
  }
});

请参阅以下工作片段...

// Load the Visualization API and the corechart package.
google.charts.load('current', {
  'packages': ['corechart', 'table', 'gauge', 'controls']
});

// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(gChart0);

function gChart0() {
  drawChart();
}

function drawChart() {

  var result = [{
    "myDate": new Date(2020, 0, 1),
    "partId": '1234567890xxx',
    "partCategory": 'ABC',
    "someNumber": 0
  }, {
    "myDate": new Date(2020, 0, 1),
    "partId": '1234567890yyy',
    "partCategory": 'ABC',
    "someNumber": 0
  }, {
    "myDate":new Date(2020, 0, 1),
    "partId": '1234567890111',
    "partCategory": 'ABC',
    "someNumber": 0
  }];

  //Create DataTable
  var data = new google.visualization.DataTable();
  data.addColumn('date', 'Calendar Date');
  data.addColumn('string', 'Part Id');
  data.addColumn('string', 'Part Category');
  data.addColumn('number', 'Some Number');

  var dataArray = [];
  $.each(result, function(i, obj) {
    dataArray.push([
      obj.myDate,
      obj.partId,
      obj.partCategory,
      obj.someNumber
    ]);
  });
  data.addRows(dataArray);

  //Options

  var dashboard = new google.visualization.Dashboard(document.getElementById('div_dashboard'));

  var categoryPicker1 = new google.visualization.ControlWrapper({
    controlType: 'CategoryFilter',
    containerId: 'div_categoryPicker1',
    options: {
      filterColumnIndex: 0,
      matchType: 'any',
      ui: {
        labelStacking: 'vertical',
        allowTyping: false,
        allowMultiple: false,
        allowNone: true
      },
      values: data.getDistinctValues(0)
    }
  });

  var categoryPicker2 = new google.visualization.ControlWrapper({
    controlType: 'CategoryFilter',
    containerId: 'div_categoryPicker2',
    options: {
      filterColumnIndex: 2,
      matchType: 'any',
      ui: {
        labelStacking: 'vertical',
        allowTyping: false,
        allowMultiple: false,
        allowNone: true
      }
    }
  });

  var table = new google.visualization.ChartWrapper({
    chartType: 'Table',
    containerId: 'div_table',
    options: {
      width: '100%',
      height: 'auto',
      page: 'enable',
      pageSize: '15',
      sort: 'enable',
      allowHtml: true
    }
  });

  dashboard.bind([categoryPicker1, categoryPicker2], [table]);
  dashboard.draw(data);

} //END  function drawChart()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>

<div id="div_dashboard"></div><br />
<div id="div_categoryPicker1"></div><br />
<div id="div_categoryPicker2"></div><br />
<div id="div_table"></div><br />

关于javascript - Google Visualization CategoryFilter 用于日期类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60491740/

相关文章:

javascript - 需要 Google 图表帮助,用于带有额外垂直线的需求和供应图表

javascript - 如何在 react-google-charts 中绘制与主要刻度、刻度长度、位置、颜色等刻度相关的样式

google-visualization - 如何用不同长度的线(系列)创建谷歌图表?

javascript - 无法发送到特定客户端 : Socket IO sends it to every client?

javascript - 在 Google Drive 上安装 Node.js(或使用 Google Drive 运行您的 Web 应用程序)

javascript - JS : Failed to execute 'getComputedStyle' on 'Window' : parameter is not of type 'Element'

javascript - 在extjs中选择字段

java - DHTMLX 甘特图未存储到数据库

javascript - 修改谷歌图表中的最大值

css - 谷歌图表大小问题