diff --git a/fe/src/components/panels/PanelDetail.vue b/fe/src/components/panels/PanelDetail.vue deleted file mode 100644 index 50ed42d..0000000 --- a/fe/src/components/panels/PanelDetail.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - diff --git a/fe/src/components/panels/PanelEdit.vue b/fe/src/components/panels/PanelEdit.vue new file mode 100644 index 0000000..810a98d --- /dev/null +++ b/fe/src/components/panels/PanelEdit.vue @@ -0,0 +1,236 @@ + + + + + + + + + Name:{{ editPanel.name }} + + Aspect ratio:{{ editPanel.aspectRatio }} + + + Linked Macros: + {{ Object.keys(editPanel.macros).length }} + + + + + + + + Button ID: + {{ editButton.id }} + + + + + + Unlink + + + Link + + + + + + + + + + + + + + diff --git a/fe/src/components/panels/PanelView.vue b/fe/src/components/panels/PanelView.vue new file mode 100644 index 0000000..0796571 --- /dev/null +++ b/fe/src/components/panels/PanelView.vue @@ -0,0 +1,74 @@ + + + + + + + + + diff --git a/fe/src/components/panels/PanelsOverview.vue b/fe/src/components/panels/PanelsOverview.vue index 0570aee..7893a52 100644 --- a/fe/src/components/panels/PanelsOverview.vue +++ b/fe/src/components/panels/PanelsOverview.vue @@ -1,15 +1,35 @@ - + + No panels found + - - - - + + + + + + {{ panel.name }} - {{ panel.description }} + + + {{ panel.name }} + + + {{ panel.description }} + + + + - + @@ -19,6 +39,10 @@ import { usePanelStore } from '@/stores/panel' import { onMounted, reactive } from 'vue' import AlertComp from '../base/AlertComp.vue' +import { IconEye, IconLayoutGrid, IconPencil } from '@tabler/icons-vue' +import ButtonComp from '../base/ButtonComp.vue' +import { isLocal } from '@/services/ApiService' +import { useRouter } from 'vue-router' const panel = usePanelStore() @@ -26,12 +50,20 @@ const panels = reactive({ list: {}, }) +const router = useRouter() + onMounted(async () => { - const panelList = await panel.getPanels() - console.log(panelList) + const panelList = await panel.getList() + // console.log(panelList) panels.list = panelList }) + +function panelItemClick(dir) { + if (isLocal()) return + + router.push(`/panel/view/${dir}`) +} diff --git a/fe/src/services/PanelService.js b/fe/src/services/PanelService.js new file mode 100644 index 0000000..5868191 --- /dev/null +++ b/fe/src/services/PanelService.js @@ -0,0 +1,36 @@ +export const SetPanelStyle = (styleStr) => { + const styleEl = document.createElement('style') + styleEl.setAttribute('custom_panel_style', true) + styleEl.innerHTML = styleStr + document.head.appendChild(styleEl) +} + +export const RemovePanelStyle = () => { + const styleEl = document.querySelector('style[custom_panel_style]') + if (styleEl) { + styleEl.remove() + } +} + +export const StripPanelHTML = (html, aspectRatio) => { + const parser = new DOMParser() + const doc = parser.parseFromString(html, 'text/html') + + const body = doc.body + const bodyContents = body.innerHTML + + const panelBody = document.createElement('div') + panelBody.id = 'panel-html__body' + panelBody.style = `aspect-ratio: ${aspectRatio}` + panelBody.innerHTML = bodyContents + + return panelBody.outerHTML +} + +export const PanelButtonListeners = (panelEl, callback) => { + panelEl.querySelectorAll('[mcrm__button]').forEach((button) => { + button.addEventListener('click', () => { + callback(button) + }) + }) +} diff --git a/fe/src/views/PanelsView.vue b/fe/src/views/PanelsView.vue index 359ef8e..3c6da50 100644 --- a/fe/src/views/PanelsView.vue +++ b/fe/src/views/PanelsView.vue @@ -1,19 +1,62 @@ - - - Panels {{ isLocal() ? 'remote' : 'servers' }} - - - - + + + + Panels + {{ isLocal() ? 'remote' : 'servers' }} + + Overview + + + + + +
{{ panel.description }}
+ {{ panel.description }} +