From 6fe26d4900c974f54e425ecfb80bd070945ea82e Mon Sep 17 00:00:00 2001 From: jb-alvarado Date: Tue, 9 Apr 2024 15:45:17 +0200 Subject: [PATCH] finish generator, cleanup css, add date picker, style alert, add shadow to elements --- assets/fonts/DigitalNumbers-Regular.woff | Bin 0 -> 8876 bytes assets/fonts/DigitalNumbers-Regular.woff2 | Bin 5796 -> 0 bytes assets/scss/_variables.scss | 48 --- assets/scss/main.scss | 118 +------- components/Alert.vue | 97 +++++- components/ConfigGui.vue | 10 +- components/ConfigPlayout.vue | 4 +- components/ConfigUser.vue | 16 +- components/Control.vue | 14 +- components/Menu.vue | 2 +- components/Modal.vue | 21 +- components/PlaylistGenerator.vue | 343 +++++++++++----------- components/SystemStats.vue | 2 +- layouts/default.vue | 9 +- nuxt.config.ts | 7 - package-lock.json | 24 ++ package.json | 1 + pages/index.vue | 29 +- pages/logging.vue | 43 ++- pages/media.vue | 49 ++-- pages/message.vue | 12 +- pages/player.vue | 235 +++++---------- plugins/dayjs.ts | 8 + plugins/vue-datepicker.client.ts | 6 + stores/config.ts | 4 +- stores/index.ts | 6 +- stores/media.ts | 18 +- stores/playlist.ts | 1 + tailwind.config.ts | 2 +- 29 files changed, 515 insertions(+), 614 deletions(-) create mode 100644 assets/fonts/DigitalNumbers-Regular.woff delete mode 100644 assets/fonts/DigitalNumbers-Regular.woff2 delete mode 100644 assets/scss/_variables.scss create mode 100644 plugins/vue-datepicker.client.ts diff --git a/assets/fonts/DigitalNumbers-Regular.woff b/assets/fonts/DigitalNumbers-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..7111cec8147832171245b40967da07e6bcfc7ff7 GIT binary patch literal 8876 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/DigitalNumbers-Regular.woff2 b/assets/fonts/DigitalNumbers-Regular.woff2 deleted file mode 100644 index 1a66c7671c35ae1a596807b62c254087d7c7605e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5796 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 diff --git a/assets/scss/_variables.scss b/assets/scss/_variables.scss deleted file mode 100644 index 59d3da97..00000000 --- a/assets/scss/_variables.scss +++ /dev/null @@ -1,48 +0,0 @@ -$gray-800: #3a3f44 !default; -$gray-900: #262a2c !default; - -$primary: $gray-800 !default; -$secondary: $gray-900 !default; - -$accent: #ff9c36; -$bg-primary: #212529; -$bg-secondary: #1d2024; -$link-color: #c4c4c4; -$link-color-hover: #e7e7e7; -$item-hover: rgba(31, 31, 31, 0.8); -$border-color: black; -$overlay-bg: rgba(61, 61, 61, 0.534); - -$success: #438d3c; -$danger: #972929; -$warning: #a78c14; -$alert-color: #ffffff; - -$control-button-play: #43c32e; -$control-button-play-hover: #339924; -$control-button-stop: #d01111; -$control-button-stop-hover: #a70e0e; -$control-button-restart: #d1c410; -$control-button-restart-hover: #b4a90e; -$control-button-control: #06aad3; -$control-button-control-hover: #068bac; - -$log-time: #666864; -$log-number: #e2c317; -$log-addr: #ad7fa8; -$log-cmd: #6c95c2; -$log-content: #ececec; -$log-info: #8ae234; -$log-warning: #ff8700; -$log-error: #d32828; -$log-debug: #6e99c7; -$log-decoder: #56efff; -$log-encoder: #45ccee; -$log-server: #23cbdd; - -$theme-colors: ( - 'primary': $primary, - 'secondary': $secondary, -); - -$b-radius: 3px; diff --git a/assets/scss/main.scss b/assets/scss/main.scss index 8f2783d3..057abcc6 100644 --- a/assets/scss/main.scss +++ b/assets/scss/main.scss @@ -1,4 +1,3 @@ -@import '_variables.scss'; @import 'bootstrap-icons/font/bootstrap-icons.css'; #__nuxt, @@ -10,101 +9,12 @@ main > div { } @font-face { - font-family: 'DigitalNumbers-Regular'; - src: url('@/assets/fonts/DigitalNumbers-Regular.woff2') format('woff2'); + font-family: 'DigitalNumbers'; + src: url('@/assets/fonts/DigitalNumbers-Regular.woff') format('woff'); font-weight: normal; font-style: normal; } -.media-alert { - position: absolute; - top: 80px; - right: 12px; - max-width: 400px; - max-height: 60px; - z-index: 11; -} - -.bg-warning { - background-color: $warning; -} - -.date-div { - width: 250px; - height: 37px; - float: right; - margin-right: 12px; -} - -.browser-item { - background: none; - border: none; - margin: 0; - padding: 0 0 0 .5em; - min-height: 26px; - min-height: 26px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.browser-div { - background-color: $gray-900; - border: 1px solid $border-color; - border-radius: 3px; -} - -.media-browser-scroll { - height: calc(100% - 3px); - overflow: auto; - scrollbar-width: medium; -} - -.browser-container .player-browser-scroll { - position: relative; - height: calc(100% - 50px); - min-height: 400px; -} - -.browser-icons { - margin-right: 0.5em; -} - -.browser-icons-col { - max-width: 10px; -} - -.browser-play-col { - max-width: 30px; - text-align: center; - margin: 0; - padding: 0; -} - -.browser-dur-col { - min-width: 95px; - margin: 0; - padding: 0 10px 0 0; -} - -.browser-item-text { - display: inline-block; - max-width: 95%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.media-button { - float: right; - margin: 1em 0.8em 0 0; -} - -.splitpanes__pane { - background-color: rgba(34, 34, 34, 0.233); - position: relative; -} - .splitpanes--horizontal > .splitpanes__splitter { position: relative; border-top: 1px solid var(--my-gray); @@ -144,27 +54,3 @@ main > div { transition: background-color 0.3s; margin-left: -1px; } - -.list-row .grabbing { - cursor: -webkit-grabbing; - cursor: grabbing; -} - -.loading-overlay { - background-color: $overlay-bg; - z-index: 11; - position: absolute; - width: calc(100% - 25px); - height: calc(100% - 36px); - - .spinner-border { - position: absolute; - margin: auto; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 3rem; - height: 3rem; - } -} diff --git a/components/Alert.vue b/components/Alert.vue index 6e2c6762..8b5d1697 100644 --- a/components/Alert.vue +++ b/components/Alert.vue @@ -1,15 +1,94 @@ diff --git a/components/ConfigGui.vue b/components/ConfigGui.vue index 39690609..e169bb76 100644 --- a/components/ConfigGui.vue +++ b/components/ConfigGui.vue @@ -114,9 +114,9 @@ async function onSubmitGui() { const update = await configStore.setGuiConfig(configStore.configGui[configStore.configID]) if (update.status) { - indexStore.msgAlert('alert-success', 'Update GUI config success!', 2) + indexStore.msgAlert('success', 'Update GUI config success!', 2) } else { - indexStore.msgAlert('alert-error', 'Update GUI config failed!', 2) + indexStore.msgAlert('error', 'Update GUI config failed!', 2) } } @@ -125,7 +125,7 @@ async function deleteChannel() { const id = config[configStore.configID].id if (id === 1) { - indexStore.msgAlert('alert-warning', 'First channel can not be deleted!', 2) + indexStore.msgAlert('warning', 'First channel can not be deleted!', 2) return } @@ -140,9 +140,9 @@ async function deleteChannel() { await configStore.getPlayoutConfig() if (response.status === 200) { - indexStore.msgAlert('alert-success', 'Delete GUI config success!', 2) + indexStore.msgAlert('success', 'Delete GUI config success!', 2) } else { - indexStore.msgAlert('alert-error', 'Delete GUI config failed!', 2) + indexStore.msgAlert('error', 'Delete GUI config failed!', 2) } } diff --git a/components/ConfigPlayout.vue b/components/ConfigPlayout.vue index 179de8d7..4ddc2181 100644 --- a/components/ConfigPlayout.vue +++ b/components/ConfigPlayout.vue @@ -99,7 +99,7 @@ async function onSubmitPlayout() { const update = await configStore.setPlayoutConfig(configStore.configPlayout) if (update.status === 200) { - indexStore.msgAlert('alert-success', 'Update playout config success!', 2) + indexStore.msgAlert('success', 'Update playout config success!', 2) const channel = configStore.configGui[configStore.configID].id @@ -113,7 +113,7 @@ async function onSubmitPlayout() { } }) } else { - indexStore.msgAlert('alert-error', 'Update playout config failed!', 2) + indexStore.msgAlert('error', 'Update playout config failed!', 2) } } diff --git a/components/ConfigUser.vue b/components/ConfigUser.vue index aac813ed..2ee869f7 100644 --- a/components/ConfigUser.vue +++ b/components/ConfigUser.vue @@ -183,20 +183,20 @@ async function getUserConfig() { async function deleteUser() { if (configStore.configUser.username === configStore.currentUser) { - indexStore.msgAlert('alert-error', 'Delete current user not possible!', 2) + indexStore.msgAlert('error', 'Delete current user not possible!', 2) } else { await fetch(`/api/user/${configStore.configUser.username}`, { method: 'DELETE', headers: authStore.authHeader, }) .then(async () => { - indexStore.msgAlert('alert-success', 'Delete user done!', 2) + indexStore.msgAlert('success', 'Delete user done!', 2) await configStore.getUserConfig() await getUsers() }) .catch((e) => { - indexStore.msgAlert('alert-error', `Delete user error: ${e}`, 2) + indexStore.msgAlert('error', `Delete user error: ${e}`, 2) }) } } @@ -226,17 +226,17 @@ async function addUser(add: boolean) { showUserModal.value = false if (update.status === 200) { - indexStore.msgAlert('alert-success', 'Add user success!', 2) + indexStore.msgAlert('success', 'Add user success!', 2) await getUsers() await getUserConfig() } else { - indexStore.msgAlert('alert-error', 'Add user failed!', 2) + indexStore.msgAlert('error', 'Add user failed!', 2) } clearUser() } else { - indexStore.msgAlert('alert-error', 'Password mismatch!', 2) + indexStore.msgAlert('error', 'Password mismatch!', 2) } } else { showUserModal.value = false @@ -253,9 +253,9 @@ async function onSubmitUser() { const update = await configStore.setUserConfig(configStore.configUser) if (update.status === 200) { - indexStore.msgAlert('alert-success', 'Update user profile success!', 2) + indexStore.msgAlert('success', 'Update user profile success!', 2) } else { - indexStore.msgAlert('alert-error', 'Update user profile failed!', 2) + indexStore.msgAlert('error', 'Update user profile failed!', 2) } newPass.value = '' diff --git a/components/Control.vue b/components/Control.vue index 07a56001..8ac14407 100644 --- a/components/Control.vue +++ b/components/Control.vue @@ -2,7 +2,7 @@
-
+