{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/utils/data.ts"],"names":[],"mappings":"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","sourcesContent":["import { filter, get, isNumber } from '@antv/util';\nimport { Data, Datum, Meta, Options } from '../types';\nimport { Node, NodeLinkData } from '../types/relation-data';\nimport { LEVEL, log } from './invariant';\nimport { pick } from './pick';\n\n/**\n * 查看数据是否是全负数、或者全正数\n * @param data\n * @param field\n */\nexport function adjustYMetaByZero(data: Data, field: string): Meta {\n if (!data) return {};\n // 过滤出数字数据\n const numberData = data.filter((datum: Datum) => {\n const v = get(datum, [field]);\n return isNumber(v) && !isNaN(v);\n });\n\n const gtZero = numberData.every((datum: Datum) => get(datum, [field]) >= 0);\n const ltZero = numberData.every((datum: Datum) => get(datum, [field]) <= 0);\n\n // 目前是增量更新,对 { min: 0, max: undefined } 进行 update({ max: 0 }) 会得到 { min: 0, max: 0 }\n if (gtZero) {\n return { min: 0 };\n }\n if (ltZero) {\n return { max: 0 };\n }\n return {};\n}\n\n/**\n * 转换数据格式为带有节点与边的数据格式\n * @param data\n * @param sourceField\n * @param targetField\n * @param weightField\n * @param rawFields 存放一些原数据\n */\nexport function transformDataToNodeLinkData(\n data: Data,\n sourceField: string,\n targetField: string,\n weightField: string,\n rawFields: string[] = []\n): NodeLinkData {\n if (!Array.isArray(data)) {\n return {\n nodes: [],\n links: [],\n };\n }\n\n // const nodes = [];\n const links = [];\n // 先使用对象方式存储\n const nodesMap: Record = {};\n let nodesIndex = -1;\n // 数组变换成 chord layout 的数据结构\n data.forEach((datum: Datum) => {\n const source = datum[sourceField];\n const target = datum[targetField];\n const weight = datum[weightField];\n\n const rawData = pick(datum, rawFields);\n\n // source node\n if (!nodesMap[source]) {\n nodesMap[source] = {\n id: ++nodesIndex,\n name: source,\n ...rawData,\n };\n }\n if (!nodesMap[target]) {\n nodesMap[target] = {\n id: ++nodesIndex,\n name: target,\n ...rawData,\n };\n }\n // links\n links.push({\n source: nodesMap[source].id,\n target: nodesMap[target].id,\n // sourceName: source,\n // targetName: target,\n value: weight,\n ...rawData,\n });\n });\n return {\n // 需要按照 id 的顺序\n nodes: Object.values(nodesMap).sort((a, b) => a.id - b.id),\n links,\n };\n}\n\n/**\n * 处理不合法的数据(过滤 非数值型 和 NaN,保留 null)\n * @param data\n * @param angleField\n */\nexport function processIllegalData(data: Options['data'], field: string) {\n const processData = filter(data, (d) => {\n const v = d[field];\n return v === null || (typeof v === 'number' && !isNaN(v));\n });\n\n // 打印异常数据情况\n log(LEVEL.WARN, processData.length === data.length, 'illegal data existed in chart data.');\n\n return processData;\n}\n"]}