* -------------------------------------------------------------------------
* This file is part of the MindStudio project.
* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* MindStudio is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* -------------------------------------------------------------------------
*/
import { register } from './register';
import { Session } from '../entity/session';
import { createCurve } from '../api/request';
import connector from '../connection';
import { ProjectType } from '../entity/insight';
async function findLineChart(session: Session, type: string): Promise<void> {
if (!session.selectedData) {
return;
}
const { name, cardId, processId, threadId } = session.selectedData;
const params = {
fileId: cardId as string,
pid: processId,
tid: threadId,
x: name,
type,
};
const res = await createCurve(params);
connector.send({
event: 'switchModule',
body: {
switchTo: 'statistic',
toModuleEvent: 'locateGroup',
params: {
fileId: cardId as string,
group: res.curveName,
},
},
});
}
export function checkCardIsIE(session: Session): boolean {
const { isIE, isCluster, selectedData, units } = session;
const projectType = units.find(unit => unit.metadata?.cardId === selectedData?.cardId)?.projectType;
return Boolean(isIE && selectedData && (!isCluster || (isCluster && projectType === ProjectType.IE)));
}
export const actionGenerateBubbleCurve = register({
name: 'generateBubbleCurveByBlock',
label: 'timeline:contextMenu.Generate Bubble Line Chart By Block',
visible: (session) => checkCardIsIE(session),
perform: (session): void => {
findLineChart(session, '2');
},
});
export const actionGenerateCurve = register({
name: 'generateCurveByBlock',
label: 'timeline:contextMenu.Generate Line Chart By Block',
visible: (session) => checkCardIsIE(session),
perform: (session): void => {
findLineChart(session, '1');
},
});