mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-14 13:47:09 +00:00
[improvement][project] supersonic 0.6.0 version update (#16)
Co-authored-by: lexluo <lexluo@tencent.com>
This commit is contained in:
@@ -1,28 +1,87 @@
|
||||
import { IChatConfig, ISemantic } from '../../data';
|
||||
import { TransType } from '../../enum';
|
||||
|
||||
type FormatResult = IChatConfig.IChatRichConfig & {
|
||||
chatDefaultConfig: {
|
||||
dimensionIds: number[];
|
||||
metricIds: number[];
|
||||
};
|
||||
};
|
||||
export const formatRichEntityDataListToIds = (
|
||||
entityData: IChatConfig.IChatRichConfig,
|
||||
): FormatResult => {
|
||||
if (!entityData?.chatDefaultConfig) {
|
||||
return {} as FormatResult;
|
||||
}
|
||||
const { chatDefaultConfig, entity } = entityData;
|
||||
|
||||
export const exChangeRichEntityListToIds = (entityData: IChatConfig.IEntity) => {
|
||||
const entityList = entityData.entityIds || [];
|
||||
const detailData: {
|
||||
dimensionIds: number[];
|
||||
metricIds: number[];
|
||||
} = { dimensionIds: [], metricIds: [] };
|
||||
const { dimensionList, metricList } = entityData.entityInternalDetailDesc || {};
|
||||
if (Array.isArray(dimensionList)) {
|
||||
detailData.dimensionIds = dimensionList.map((item: ISemantic.IDimensionItem) => {
|
||||
const { dimensions, metrics } = chatDefaultConfig || {};
|
||||
if (Array.isArray(dimensions)) {
|
||||
detailData.dimensionIds = dimensions.map((item: ISemantic.IDimensionItem) => {
|
||||
return item.id;
|
||||
});
|
||||
}
|
||||
if (Array.isArray(metricList)) {
|
||||
detailData.metricIds = metricList.map((item: ISemantic.IMetricItem) => {
|
||||
if (Array.isArray(metrics)) {
|
||||
detailData.metricIds = metrics.map((item: ISemantic.IMetricItem) => {
|
||||
return item.id;
|
||||
});
|
||||
}
|
||||
const entityIds = entityList.map((item) => {
|
||||
return item.id;
|
||||
});
|
||||
let entitySetting = {};
|
||||
if (entity) {
|
||||
const entityItem = entity.dimItem;
|
||||
const entityId = entityItem?.id || null;
|
||||
const names = entity.names || [];
|
||||
entitySetting = {
|
||||
entity: {
|
||||
...entity,
|
||||
entityId,
|
||||
name: names.join(','),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
...entityData,
|
||||
entityIds,
|
||||
detailData,
|
||||
...entitySetting,
|
||||
chatDefaultConfig: {
|
||||
...chatDefaultConfig,
|
||||
...detailData,
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
export const wrapperTransTypeAndId = (exTransType: TransType, id: number) => {
|
||||
return `${exTransType}-${id}`;
|
||||
};
|
||||
|
||||
export const splitListToTransTypeId = (dataItemIds: string[]) => {
|
||||
const idListMap = dataItemIds.reduce(
|
||||
(
|
||||
idMap: {
|
||||
dimensionIds: number[];
|
||||
metricIds: number[];
|
||||
},
|
||||
item: string,
|
||||
) => {
|
||||
const [transType, id] = item.split('-');
|
||||
if (id) {
|
||||
if (transType === TransType.DIMENSION) {
|
||||
idMap.dimensionIds.push(Number(id));
|
||||
}
|
||||
if (transType === TransType.METRIC) {
|
||||
idMap.metricIds.push(Number(id));
|
||||
}
|
||||
}
|
||||
return idMap;
|
||||
},
|
||||
{
|
||||
dimensionIds: [],
|
||||
metricIds: [],
|
||||
},
|
||||
);
|
||||
return idListMap;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user