Connector 数据接入

一个数据视图(DataSet.DataView)实例在接入数据时就会用到 Connector,其语法如下:

  1. dv.source(data, {
  2. type: `${connectorName}`,
  3. ...otherOptions,
  4. });

举个例子:

  1. const testCSV = `Expt,Run,Speed
  2. 1,1,850
  3. 1,2,740
  4. 1,3,900
  5. 1,4,1070`;
  6. const dv = new DataSet.DataView().source(testCSV, {
  7. type: 'csv',
  8. });
  9. console.log(dv.rows);
  10. /*
  11. * dv.rows:
  12. * [
  13. * {Expt: " 1", Run: "1", Speed: "850"}
  14. * {Expt: " 1", Run: "2", Speed: "740"}
  15. * {Expt: " 1", Run: "3", Speed: "900"}
  16. * {Expt: " 1", Run: "4", Speed: "1070"}
  17. * ]
  18. */

上述代码中,数据视图实例 dv 使用 csv 类型的 Connector 载入了一段 CSV 文本。

目前 DataSet 支持以下几种常用的 Connector:

默认

直接调用 dv.source(data),不通过配置项指定使用的 Connector 时,则有以下两种默认的情形:

第一种,data 传入的是具体数组数据,那么

  1. dv.rows = deepClone(data);

第二种,data 传入的是另一个 DataView 的实例或者实例的名称,那么

  1. dv.rows = deepClone(ds.getView(otherDv).rows);

dsv

具体用法见示例:

  1. dv.source(dsvStr, {
  2. type: 'dsv', // 指定使用dsv connector
  3. delimiter: '|', // 指定分隔符
  4. });

csv

具体用法见示例:

  1. dv.source(csvStr, {
  2. type: 'csv', // 指定使用dsv connector
  3. delimiter: ',', // 指定分隔符
  4. });

tsv

具体用法见示例:

  1. dv.source(tsvStr, {
  2. type: 'tsv', // 指定使用tsv connector
  3. });

GeoJSON

具体用法见示例:

  1. dv.source(geojsonData, {
  2. type: 'GeoJSON', // 别名 geo / geojson
  3. });

dv.dataType 会被更改为 'geo',从而 dv 可以执行一些 Geo 相关的实例方法。

TopoJSON

具体用法见示例:

  1. dv.source(topojsonData, {
  2. type: 'TopoJSON', // 别名 topojson
  3. object: 'xxx', // TopoJSON 相当于多个 GeoJSON 合并起来做了压缩,其中每一个 object 都相当于一份 GeoJSON 数据,指定 object 就是从中提取一份 Geo 数据
  4. });

dv.dataType 会被更改为 'geo',从而 dv 可以执行一些 Geo 相关的实例方法。

hierarchy

具体用法见示例:

  1. dv.source(tree, {
  2. type: 'hierarchy', // 别名 tree
  3. children: d => d.children, // 可选,函数,返回子树
  4. });

dv.dataType 会被变更为 'hierarchy' ,从而 dv 可以执行一些树形结构相关的实例方法和 Transform。

dv.root 为根节点

graph

具体用法见示例:

  1. dv.source(graph, {
  2. type: 'graph',
  3. nodes: d => d.nodes, // 节点集对应字段
  4. edges: d => d.edges, // 边集对应字段
  5. });

dv.dataType 会被变更为 'graph',从而 dv 可以执行图相关的实例方法和 Transform。