* Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
*/
import { request } from './request';
interface ResponseBase<T> {
result: boolean;
body: T;
msg?: string;
errCode?: number;
};
interface ImportFileRequestParams {
rootPaths: string[];
};
interface ImportFileResponseBody {
data: FileItem[];
};
export interface FileItem {
filePath: string;
tagList: string[];
};
export const importFile = async (params: ImportFileRequestParams): Promise<ResponseBase<ImportFileResponseBody>> => {
return await request({
data: params,
url: '/HistoVisually/ImportProject',
method: 'post',
});
};
export const addNewFile = async (params: { filePathList: string[] }): Promise<ResponseBase<ImportFileResponseBody>> => {
return await request({
data: params,
url: '/HistoVisually/AddImportFile',
method: 'post',
});
};
export interface ChartsDataRequestParams {
filePathToTags: Array<{ tag: string; filePath: string; range: { max: number | null, min: number | null } }>;
};
export interface ChartsDataResponseBody {
data: ChartsDataItem[];
newTags: FileItem[];
};
interface ChartsDataItem {
tag: string;
filePath: string;
histogramGraph: DataItem[];
};
export interface DataItem {
step: number;
bucket: number[];
bucketLimit: number[];
};
let controller = new AbortController();
export const getChartsData = async (params: ChartsDataRequestParams): Promise<ResponseBase<ChartsDataResponseBody>> => {
controller.abort();
controller = new AbortController();
return await request({
data: params,
url: '/HistoVisually/GetHistoData',
method: 'post',
signal: controller.signal,
});
};
export interface NewFileResponseBody {
data: string[];
};
export const getNewFile = async (): Promise<ResponseBase<NewFileResponseBody>> => {
return await request({
url: '/HistoVisually/GetNewFiles',
method: 'post',
});
};