From 12a7b6eb50518138082caf70edfbadf58db54d90 Mon Sep 17 00:00:00 2001 From: WolverinDEV Date: Tue, 29 Dec 2020 16:53:04 +0100 Subject: [PATCH] Reimplemented the music bot manage UI --- ChangeLog.md | 7 +- shared/css/static/frame-chat.scss | 525 +--------- shared/html/templates.html | 288 ------ shared/js/ConnectionHandler.ts | 11 +- shared/js/ConnectionManager.ts | 5 +- .../js/connection/AbstractCommandHandler.ts | 2 +- shared/js/connection/CommandHandler.ts | 129 +-- shared/js/connection/ErrorCode.ts | 1 + .../connection/ServerConnectionDeclaration.ts | 4 + .../ChannelConversationManager.ts | 4 + shared/js/i18n/localize.ts | 18 +- shared/js/music/PlaylistManager.ts | 555 +++++++++++ shared/js/tree/Client.ts | 98 +- shared/js/ui/frames/SideBarController.ts | 17 +- shared/js/ui/frames/SideBarDefinitions.ts | 5 +- shared/js/ui/frames/SideBarRenderer.tsx | 19 +- shared/js/ui/frames/side/HeaderController.ts | 34 +- .../js/ui/frames/side/MusicBotController.ts | 386 ++++++++ .../js/ui/frames/side/MusicBotDefinitions.ts | 63 ++ .../js/ui/frames/side/MusicBotRenderer.scss | 329 +++++++ shared/js/ui/frames/side/MusicBotRenderer.tsx | 450 +++++++++ .../ui/frames/side/MusicPlaylistController.ts | 228 +++++ .../frames/side/MusicPlaylistDefinitions.ts | 51 + .../ui/frames/side/MusicPlaylistRenderer.scss | 275 ++++++ .../ui/frames/side/MusicPlaylistRenderer.tsx | 386 ++++++++ shared/js/ui/frames/side/music_info.ts | 906 ------------------ shared/js/ui/modal/ModalChangeVolumeNew.tsx | 2 +- shared/js/ui/react-elements/Slider.tsx | 14 +- 28 files changed, 2923 insertions(+), 1889 deletions(-) create mode 100644 shared/js/music/PlaylistManager.ts create mode 100644 shared/js/ui/frames/side/MusicBotController.ts create mode 100644 shared/js/ui/frames/side/MusicBotDefinitions.ts create mode 100644 shared/js/ui/frames/side/MusicBotRenderer.scss create mode 100644 shared/js/ui/frames/side/MusicBotRenderer.tsx create mode 100644 shared/js/ui/frames/side/MusicPlaylistController.ts create mode 100644 shared/js/ui/frames/side/MusicPlaylistDefinitions.ts create mode 100644 shared/js/ui/frames/side/MusicPlaylistRenderer.scss create mode 100644 shared/js/ui/frames/side/MusicPlaylistRenderer.tsx delete mode 100644 shared/js/ui/frames/side/music_info.ts diff --git a/ChangeLog.md b/ChangeLog.md index 2c1ff924..aa9347dc 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,4 +1,9 @@ # Changelog: +* **29.12.20** + - Reimplemented the music bot control UI + - Fixing some bugs from earlier versions + - Added a volume change button to easily change the bots volume + * **22.12.20** - Fixed missing channel status icon update on channel type edit - Improved channel edit UI experience and fixed some bugs @@ -33,7 +38,7 @@ - Enabled context menus for all clickable client tags - Allowing to drag client tags - Fixed the context menu within popout windows for the web client - - Reworked the whole sidebar (Hightly decreased memory footprint) + - Reworked the whole sidebar (Highly decreased memory footprint) * **08.12.20** - Fixed the permission editor not resolving unique ids diff --git a/shared/css/static/frame-chat.scss b/shared/css/static/frame-chat.scss index b75be2fe..9f0fba27 100644 --- a/shared/css/static/frame-chat.scss +++ b/shared/css/static/frame-chat.scss @@ -1,12 +1,7 @@ @import "mixin"; @import "properties"; -//$color_client_normal: #bebebe; -$color_client_normal: #cccccc; -$client_info_avatar_size: 10em; -$bot_thumbnail_width: 16em; -$bot_thumbnail_height: 9em; - +/* FIXME: Resolve variable usage! */ html:root { --side-info-background: #2e2e2e; --side-info-shadow: rgba(0, 0, 0, 0.25); @@ -26,520 +21,4 @@ html:root { --side-info-ping-very-poor: #7f2222; --side-info-bot-add-song: #3f7538; -} - -.container-chat-frame { - flex-grow: 1; - flex-shrink: 1; - - display: flex; - flex-direction: column; - justify-content: stretch; - - min-height: 200px; - - .container-chat { - width: 100%; - - flex-grow: 1; - flex-shrink: 1; - - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - - min-width: 350px; - min-height: 16em; - - display: flex; - flex-direction: column; - - .container-music-info { - position: relative; - - height: 100%; - - flex-grow: 1; - flex-shrink: 1; - - display: flex; - flex-direction: column; - justify-content: stretch; - - padding-right: 5px; - padding-left: 5px; - - .player { - flex-shrink: 0; - flex-grow: 0; - - display: flex; - flex-direction: column; - justify-content: stretch; - - .container-thumbnail { - flex-grow: 0; - flex-shrink: 0; - - position: relative; - - display: inline-block; - margin: calc(#{$bot_thumbnail_height} / -2) .75em .5em .5em; - - align-self: center; - - border-radius: .5em; - overflow: hidden; - - .thumbnail { - overflow: hidden; - - width: $bot_thumbnail_width; - height: $bot_thumbnail_height; - - @include transition(opacity $button_hover_animation_time ease-in-out); - - img { - position: absolute; - - width: 100%; - height: 100%; - } - } - } - - .container-song-info { - display: flex; - flex-direction: column; - justify-content: flex-start; - - flex-shrink: 1; - flex-grow: 1; - - margin-left: .5em; - margin-right: .5em; - - min-width: 1em; - - .song-name { - font-size: 1.5em; - - min-width: 1em; - max-width: 100%; - - flex-shrink: 1; - flex-grow: 0; - - align-self: center; - color: #999999; - - @include text-dotdotdot(); - } - - .song-description { - display: none; - } - } - - .container-timeline { - margin-left: .5em; - margin-right: .5em; - - margin-bottom: .5em; - - .timestamps { - display: flex; - flex-direction: row; - justify-content: space-between; - - color: #999; - font-size: .75em; - } - - $timeline_height: .6em; - .timeline { - width: 100%; - position: relative; - - font-size: 0.8em; - margin-top: 0.1em; - height: $timeline_height; - cursor: pointer; - background-color: #242527; - border-radius: 0.2em; - overflow: visible; - - .indicator { - position: absolute; - left: 0; - top: 0; - bottom: 0; - - border-radius: .2em; - } - - .indicator-buffered { - background-color: #2f3133; - width: 30%; - } - - .indicator-playtime { - background-color: #4370a2; - width: 25%; - } - - $thumb_width: 1.2em; - $thumb_inner_width: 0.4em; - .thumb { - position: absolute; - - height: $thumb_width; - width: $thumb_width; - - left: -($thumb_width / 2); - bottom: -$thumb_width / 2 + $timeline_height / 2; - - background-color: #a5a5a5; - box-shadow: 0 0 0.5em 1px #a5a5a53d; - - display: flex; - flex-direction: column; - justify-content: center; - - .dot { - align-self: center; - - height: $thumb_inner_width; - width: $thumb_inner_width; - - - background-color: #4370a2; - box-shadow: 0 0 0.1em 1px hsla(212, 41%, 60%, 1); - - border-radius: 50%; - } - border-radius: 50%; - - //@include transition(.4s); - - margin-left: 25%; - } - } - } - - .control-buttons { - display: flex; - flex-direction: row; - justify-content: center; - - margin-top: 1em; - - .button { - width: 2em; - height: 2em; - - margin-right: .5em; - margin-left: .5em; - - cursor: pointer; - - svg { - width: 2em; - height: 2em; - - - fill: #242527; - @include transition($button_hover_animation_time ease-in-out); - } - - &:hover { - svg { - fill: #0a0a0a; - } - } - } - - .button-play, .button-pause { - &.hidden { - display: none; - } - } - } - } - - .container-playlist { - flex-grow: 1; - flex-shrink: 1; - - min-height: calc(3em + 4px); - position: relative; - - display: flex; - flex-direction: column; - justify-content: stretch; - - margin-bottom: 5px; - margin-top: 1em; - - @include user-select(none); - - .overlay { - position: absolute; - z-index: 1; - - top: 0; - left: 0; - right: 0; - bottom: 0; - - background: #2b2b28; - - display: flex; - flex-direction: column; - justify-content: center; - - border-radius: 0.2em; - border: 1px #161616 solid; - - a { - text-align: center; - - font-size: 1.5em; - color: hsla(0, 1%, 40%, 1); - } - - button { - width: 8em; - font-size: .8em; - align-self: center; - margin-top: .5em; - } - - &.hidden { - display: none; - } - } - - .playlist { - flex-grow: 1; - flex-shrink: 1; - min-height: 3em; - - cursor: pointer; - - display: flex; - flex-direction: column; - justify-content: flex-start; - - overflow-x: hidden; - overflow-y: auto; - - border: 1px #161616 solid; - border-radius: 0.2em; - background-color: rgba(43, 43, 40, 1); - - @include chat-scrollbar-vertical(); - - .entry { - flex-shrink: 0; - flex-grow: 0; - - display: flex; - flex-direction: row; - justify-content: stretch; - - width: 100%; - overflow: hidden; - - padding: .5em; - - color: #999; - border-bottom: 1px solid #242527; - - opacity: 0; - height: 0; - - @include transition(background-color $button_hover_animation_time ease-in-out); - - &:hover { - background-color: hsla(220, 0%, 20%, 1); - } - - &.shown { - opacity: 1; - height: 3.7em; - } - - &.animation { - @include transition(opacity 0.5s ease-in-out, height 0.5s ease-in); - } - - &.deleted { - @include transition(opacity 0.5s ease-in-out, height 0.5s ease-in, padding 0.5s ease-in); - - padding: 0; - opacity: 0; - height: 0; - } - - &.reordering { - z-index: 10000; - - position: fixed; - cursor: move; - - border: 1px #161616 solid; - border-radius: 0.2em; - background-color: #2b2b28; - } - - .container-thumbnail { - flex-shrink: 0; - flex-grow: 0; - - align-self: center; - - height: .9em; - width: 1.6em; - - font-size: 3em; - position: relative; - - border-radius: 0.05em; - overflow: hidden; - - img { - position: absolute; - - width: 100%; - height: 100%; - } - } - - .container-data { - margin-left: .5em; - - display: flex; - flex-direction: column; - justify-content: center; - - flex-shrink: 1; - flex-grow: 1; - min-width: 2em; - - .row { - display: flex; - flex-direction: row; - justify-content: space-between; - - &.second { - font-size: .8em; - } - - .name { - flex-shrink: 1; - min-width: 1em; - - @include text-dotdotdot(); - } - - .container-delete { - flex-grow: 0; - flex-shrink: 0; - - width: 1.5em; - height: 1em; - margin-left: .5em; - - opacity: .4; - @include transition($button_hover_animation_time ease-in-out); - - &:hover { - opacity: 1; - } - } - - .description { - flex-shrink: 1; - min-width: 1em; - - @include text-dotdotdot(); - } - - .length { - flex-grow: 0; - flex-shrink: 0; - - margin-left: .5em; - } - } - } - - &.current-song { - background-color: hsla(130, 50%, 30%, .25); - - &:hover { - background-color: hsla(130, 50%, 50%, .25); - } - - .container-delete { - display: none; - } - } - } - - .reorder-indicator { - $indicator_thickness: .2em; - - height: 0; - border: none; - border-top: $indicator_thickness solid hsla(0, 0%, 30%, 1); - - margin-top: $indicator_thickness / -2; - margin-bottom: $indicator_thickness / -2; - } - } - } - - .button-close { - font-size: 4em; - - cursor: pointer; - - position: absolute; - right: 0; - top: 0; - bottom: 0; - - opacity: 0.3; - - width: .5em; - height: .5em; - - margin-right: .1em; - margin-top: .1em; - - &:hover { - opacity: 1; - } - @include transition(opacity $button_hover_animation_time ease-in-out); - - &:before, &:after { - position: absolute; - left: .25em; - content: ' '; - height: .5em; - width: .05em; - background-color: #5a5a5a; - } - - &:before { - transform: rotate(45deg); - } - - &:after { - transform: rotate(-45deg); - } - } - } - } -} +} \ No newline at end of file diff --git a/shared/html/templates.html b/shared/html/templates.html index f8c18b8c..430340cc 100644 --- a/shared/html/templates.html +++ b/shared/html/templates.html @@ -67,168 +67,6 @@ - - - - - -
- - - -