diff --git a/package.json b/package.json index 9ef38385..65c00506 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,8 @@ "ecmaVersion": 2020 }, "rules": { - "@typescript-eslint/no-explicit-any": "off" + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" }, "overrides": [ { diff --git a/src/components/Graph.vue b/src/components/Graph.vue index f038a91c..92b8b2cb 100644 --- a/src/components/Graph.vue +++ b/src/components/Graph.vue @@ -16,9 +16,18 @@ limitations under the License. -->
diff --git a/src/utils/event.ts b/src/utils/event.ts new file mode 100644 index 00000000..7309c586 --- /dev/null +++ b/src/utils/event.ts @@ -0,0 +1,40 @@ +const isServer = typeof window === "undefined"; + +function resizeHandler(entries: any[]): void { + for (const entry of entries) { + const listeners = entry.target.__resizeListeners__ || []; + if (listeners.length) { + listeners.forEach((fn: () => any) => { + fn(); + }); + } + } +} + +export function addResizeListener(element: any, fn: () => unknown): void { + if (isServer) return; + if (!element.__resizeListeners__) { + element.__resizeListeners__ = []; + element.__ro__ = new ResizeObserver(resizeHandler); + element.__ro__.observe(element); + } + element.__resizeListeners__.push(fn); +} + +export function removeResizeListener(element: any, fn: () => unknown): void { + if (!element || !element.__resizeListeners__) return; + element.__resizeListeners__.splice( + element.__resizeListeners__.indexOf(fn), + 1 + ); + if (!element.__resizeListeners__.length) { + element.__ro__.disconnect(); + } +} + +export function triggerWindowResize(): void { + const event = document.createEvent("HTMLEvents"); + event.initEvent("resize", true, true); + (event as any).eventType = "message"; + window.dispatchEvent(event); +} diff --git a/src/views/dashboard/controls/Widget.vue b/src/views/dashboard/controls/Widget.vue index 17cfca2e..778697d9 100644 --- a/src/views/dashboard/controls/Widget.vue +++ b/src/views/dashboard/controls/Widget.vue @@ -32,7 +32,7 @@ limitations under the License. --> -
+
.widget { font-size: 12px; + height: 100%; } .header { @@ -149,8 +149,8 @@ export default defineComponent({ } .body { - padding: 5px; - height: 200px; + padding: 5px 10px; width: 100%; + height: calc(100% - 30px); } diff --git a/src/views/dashboard/panel/Layout.vue b/src/views/dashboard/panel/Layout.vue index f1ea3bd2..532a8533 100644 --- a/src/views/dashboard/panel/Layout.vue +++ b/src/views/dashboard/panel/Layout.vue @@ -30,6 +30,7 @@ limitations under the License. --> :i="item.i" :key="item.i" @click="clickGrid(item)" + @resized="resizedEvent" :class="{ active: dashboardStore.activedGridItem === item.i }" >