@visactor/vchart
Version:
charts lib based @visactor/VGrammar
85 lines (71 loc) • 3.79 kB
JavaScript
import { warn } from "../util/debug";
import { isString, cloneDeep } from "@visactor/vutils";
import { DataSet, DataView } from "@visactor/vdataset";
import { registerDataSetInstanceTransform } from "./register";
import { copyDataView } from "./transforms/copy-data-view";
export function initializeData() {}
export function initCSVData() {}
export function initData() {}
export function initFoldData() {}
export function dataViewFromDataView(rawData, dataSet, op) {
dataSet = dataSet instanceof DataSet ? dataSet : rawData.dataSet, registerDataSetInstanceTransform(dataSet, "copyDataView", copyDataView);
const viewData = new DataView(dataSet, op);
return viewData.parse([ rawData ], {
type: "dataview"
}), viewData.transform({
type: "copyDataView",
level: TransformLevel.copyDataView
}), viewData;
}
export function dataToDataView(data, dataSet, sourceDataViews = []) {
var _a;
if (data instanceof DataView) return data;
const {id: id, values: values = [], fromDataIndex: fromDataIndex, fromDataId: fromDataId, transforms: transforms = []} = data, parser = data.parser ? cloneDeep(data.parser) : {
clone: !0
}, fields = cloneDeep(data.fields);
let dataView;
parser.clone = !(!1 === parser.clone);
const existDataView = sourceDataViews.find((dv => dv.name === id));
if (existDataView) dataView = existDataView; else {
const initOption = {
name: id
};
if (fields && (initOption.fields = fields), dataView = new DataView(dataSet, initOption),
"string" == typeof fromDataId) {
const fromDataView = sourceDataViews.find((dv => dv.name === fromDataId));
if (!fromDataView) return warn(`no data matches fromDataId ${fromDataId}`), null;
dataView.parse([ fromDataView ], {
type: "dataview"
}), dataView.transform({
type: "copyDataView"
});
} else if ("number" == typeof fromDataIndex) {
const fromDataView = sourceDataViews[fromDataIndex];
if (!fromDataView) return warn(`no data matches fromDataIndex ${fromDataIndex}`),
null;
dataView.parse([ fromDataView ], {
type: "dataview"
}), dataView.transform({
type: "copyDataView"
});
} else Array.isArray(values) ? dataView.parse(values, parser) : !isString(values) || parser && ![ "csv", "dsv", "tsv" ].includes(parser.type) ? (dataView.parse([]),
warn("values should be array")) : dataView.parse(values, null !== (_a = parser) && void 0 !== _a ? _a : {
type: "csv"
});
transforms && transforms.length && transforms.forEach((transform => {
dataSet.getTransform(transform.type) && dataView.transform(transform);
}));
}
return dataView;
}
export function updateDataViewInData(dataView, data, forceMerge) {
dataView && (data.fields && dataView.setFields(data.fields, forceMerge), dataView.parseNewData(data.values, data.parser));
}
export var TransformLevel;
!function(TransformLevel) {
TransformLevel[TransformLevel.copyDataView = -10] = "copyDataView", TransformLevel[TransformLevel.treemapFilter = -8] = "treemapFilter",
TransformLevel[TransformLevel.treemapFlatten = -7] = "treemapFlatten", TransformLevel[TransformLevel.dotObjFlat = -7] = "dotObjFlat",
TransformLevel[TransformLevel.linkDotInfo = -7] = "linkDotInfo", TransformLevel[TransformLevel.sankeyLayout = -7] = "sankeyLayout",
TransformLevel[TransformLevel.dataZoomFilter = -6] = "dataZoomFilter", TransformLevel[TransformLevel.legendFilter = -5] = "legendFilter";
}(TransformLevel || (TransformLevel = {}));
//# sourceMappingURL=initialize.js.map