From db13de327b50f5c78519c295a3f9dff1dc592ca0 Mon Sep 17 00:00:00 2001 From: Maksim Mrug <80621719+kruzhambus@users.noreply.github.com> Date: Tue, 29 Nov 2022 19:35:17 +0200 Subject: [PATCH] added function for newPanelTab and customizePanelTab --- src/SDK.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/SDK.ts b/src/SDK.ts index dd12b6d..14f20a0 100644 --- a/src/SDK.ts +++ b/src/SDK.ts @@ -81,6 +81,8 @@ type SwetrixCallbacks = { onRemoveExportDataRow: (name: string) => void onAddPanelTab: (extensionID: string, panelID: string, tabContent: string, onClick: () => void) => void onRemovePanelTab: (extensionID: string, panelID: string) => void + onCustomizePanelTab: (extensionID: string, panelID: string, tabContent: string) => void + onAddNewPanelTab: (extensionID: string, panelID: string, tabContent: string) => void } /** @@ -324,4 +326,47 @@ export class SDK { this.swetrixCallbacks?.onRemovePanelTab(extensionID, panelID) } } + + public customizePanelTab(extensionID: string): (panelID: PanelTab, tabContent: string) => void { + /** + * Customize a panel tab. + * + * @param panelID The ID of the panel. + * @param tabContent The new content of the tab. + * @returns {void} + */ + return (panelID: PanelTab, tabContent: string): void => { + this.debug(`Customizing panel tab ${panelID}`) + const panelName = getPanelTabName(extensionID, panelID) + + if (!this.panelTabValues.includes(panelName)) { + this.debug(`Panel tab ${panelID} (${extensionID}) does not exist`, DebugType.WARN) + return + } + + this.swetrixCallbacks?.onCustomizePanelTab(extensionID, panelID, tabContent) + } + } + + public addNewPanelTab(extensionID: string): (panelID: PanelTab, tabContent: string) => void { + /** + * Add a new panel tab into the dashboard panels. + * + * @param extensionID The ID of the extension. + * @param panelID The ID of the panel. + * @returns {void} + */ + return (panelID: PanelTab, tabContent: string): void => { + this.debug(`Adding panel tab ${panelID}`) + const panelName = getPanelTabName(extensionID, panelID) + + if (this.panelTabValues.includes(panelName)) { + this.debug(`Panel tab ${panelID} (${extensionID}) already exists`, DebugType.WARN) + return + } + + this.panelTabValues.push(panelName) + this.swetrixCallbacks?.onAddNewPanelTab(extensionID, panelID, tabContent) + } + } }