From 1990ff0f04faea11ab9fbab4fef63622f9b35f92 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 1 Aug 2020 18:19:39 +0200 Subject: [PATCH] Fixes, theming & deploy files --- Dockerfile | 6 + buildDocker.sh | 1 + buildJar.sh | 8 + client/package-lock.json | 5 + client/package.json | 1 + client/public/index.html | 2 +- client/src/App.vue | 14 -- client/src/assets/Gravity-Regular.otf | Bin 0 -> 48376 bytes client/src/assets/_overrides.scss | 289 ++++++++++++++++++++++++++ client/src/assets/_variables.scss | 114 ++++++++++ client/src/assets/style.scss | 6 + client/src/components/Admin.vue | 9 +- client/src/components/Invite.vue | 8 +- client/src/components/Player.vue | 22 +- client/src/components/Playlist.vue | 33 ++- client/src/components/YTSearch.vue | 21 ++ client/src/main.js | 4 +- client/src/rtc.js | 205 ------------------ client/src/script.js | 92 -------- client/src/signal.js | 66 ------ client/src/store/roomModule.js | 27 ++- client/src/store/rtcModule.js | 12 ++ docker-compose.yml | 10 + 23 files changed, 552 insertions(+), 403 deletions(-) create mode 100644 Dockerfile create mode 100644 buildDocker.sh create mode 100644 buildJar.sh create mode 100644 client/src/assets/Gravity-Regular.otf create mode 100644 client/src/assets/_overrides.scss create mode 100644 client/src/assets/_variables.scss create mode 100644 client/src/assets/style.scss create mode 100644 client/src/components/YTSearch.vue delete mode 100644 client/src/rtc.js delete mode 100644 client/src/script.js delete mode 100644 client/src/signal.js create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e22c248 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM alpine:edge +MAINTAINER gltron +RUN apk --update add openjdk8-jre +COPY cloud32.jar /home/cloud32.jar +CMD ["java","-jar","/home/cloud32.jar"] +EXPOSE 8181 \ No newline at end of file diff --git a/buildDocker.sh b/buildDocker.sh new file mode 100644 index 0000000..142e14f --- /dev/null +++ b/buildDocker.sh @@ -0,0 +1 @@ +docker build . -t thomsb/c32java \ No newline at end of file diff --git a/buildJar.sh b/buildJar.sh new file mode 100644 index 0000000..85786eb --- /dev/null +++ b/buildJar.sh @@ -0,0 +1,8 @@ +cd client +npm run build +cp -r dist/* ../server/src/main/resources/public +cd ../server +mvn package +cp target/cloud32-0.0.1-SNAPSHOT.jar ../cloud32.jar +rm -rf ../client/dist +rm -rf src/main/resources/public/* \ No newline at end of file diff --git a/client/package-lock.json b/client/package-lock.json index 342b067..f7ff8cc 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -7313,6 +7313,11 @@ "object-visit": "^1.0.0" } }, + "material-design-icons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz", + "integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78=" + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", diff --git a/client/package.json b/client/package.json index e0a7399..ec389b8 100644 --- a/client/package.json +++ b/client/package.json @@ -11,6 +11,7 @@ "@chenfengyuan/vue-qrcode": "^1.0.2", "buefy": "^0.8.20", "core-js": "^3.6.5", + "material-design-icons": "^3.0.1", "register-service-worker": "^1.7.1", "vue": "^2.6.11", "vue-qrcode-reader": "^2.3.11", diff --git a/client/public/index.html b/client/public/index.html index e9bb139..96ea543 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -4,7 +4,7 @@ - + <%= htmlWebpackPlugin.options.title %> diff --git a/client/src/App.vue b/client/src/App.vue index c077d53..7de07d6 100644 --- a/client/src/App.vue +++ b/client/src/App.vue @@ -3,17 +3,3 @@ - - diff --git a/client/src/assets/Gravity-Regular.otf b/client/src/assets/Gravity-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..7aedaa2a6138fa523a955fac4f82908214d71824 GIT binary patch literal 48376 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 .navbar { + border-radius: 0; +} + +.pagination-link, +.pagination-next, +.pagination-previous { + border-width: $border-width; +} + +.panel-block, +.panel-heading, +.panel-tabs { + border-width: $border-width; + + &:first-child { + border-top-width: $border-width; + } +} + +.panel-heading { + font-weight: $weight-bold; +} + +.panel-tabs { + a { + border-width: $border-width; + margin-bottom: -$border-width; + + &.is-active { + border-bottom-color: $link-active; + } + } +} + +.panel-block { + &:hover { + color: $link-hover; + + .panel-icon { + color: $link-hover; + } + } + + &.is-active { + .panel-icon { + color: $link-active; + } + } +} + +.tabs { + a { + border-bottom-width: $border-width; + margin-bottom: -$border-width; + } + + ul { + border-bottom-width: $border-width; + } + + &.is-boxed { + a { + border-width: $border-width; + } + + li.is-active a { + background-color: darken($grey-darker, 4); + } + } + + &.is-toggle { + li a { + border-width: $border-width; + margin-bottom: 0; + } + + li + li { + margin-left: -$border-width; + } + } +} + +.hero { + // Colors + @each $name, $pair in $colors { + $color: nth($pair, 1); + $color-invert: nth($pair, 2); + + &.is-#{$name} { + .navbar { + .navbar-dropdown { + .navbar-item:hover { + background-color: $navbar-dropdown-item-hover-background-color; + } + } + } + } + } +} \ No newline at end of file diff --git a/client/src/assets/_variables.scss b/client/src/assets/_variables.scss new file mode 100644 index 0000000..e6216b7 --- /dev/null +++ b/client/src/assets/_variables.scss @@ -0,0 +1,114 @@ +$grey-lighter: #dbdee0; +$grey-light: #8c9b9d; +$grey: darken($grey-light, 18); +$grey-dark: darken($grey, 18); +$grey-darker: darken($grey, 23); + +$orange: #e67e22; +$yellow: #f1b70e; +$green: #2ecc71; +$turquoise: #26a8a2; +$blue: #3498db; +$purple: #8e44ad; +$red: #e74c3c; +$white-ter: #ecf0f1; +$primary: $turquoise; +$yellow-invert: #fff; + +$family-sans-serif: "Gravity Regular", "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", +"Helvetica Neue", "Helvetica", "Arial", sans-serif; +$family-monospace: "Inconsolata", "Consolas", "Monaco", monospace; + +$radius-small: 3px; +$radius: 0.4em; +$radius-large: 8px; +$size-6: 15px; +$size-7: 0.85em; +$title-weight: 500; +$subtitle-weight: 400; +$subtitle-color: $grey-dark; + +$border-width: 2px; +$border: $grey; + +$body-background-color: darken($grey-darker, 4); +$body-size: 15px; + +$background: $grey-darker; +$footer-background-color: $background; +$button-background-color: $background; +$button-border-color: lighten($button-background-color, 15); + +$title-color: #fff; +$subtitle-color: $grey-light; +$subtitle-strong-color: $grey-light; + +$text: #fff; +$text-light: lighten($text, 10); +$text-strong: darken($text, 5); + +$box-color: $text; +$box-background-color: $grey-dark; +$box-shadow: none; + +$link: $turquoise; +$link-hover: lighten($link, 5); +$link-focus: darken($link, 5); +$link-active: darken($link, 5); +$link-focus-border: $grey-light; + +$button-color: $primary; +$button-hover-color: darken($text, 5); // text-dark +$button-focus: darken($text, 5); // text-dark +$button-active-color: darken($text, 5); // text-dark +$button-disabled-background-color: $grey-light; + +$control-height: 2.5em; + +$input-color: $grey-darker; +$input-icon-color: $grey; +$input-icon-active-color: $input-color; +$input-hover-color: $grey-light; +$input-disabled-background-color: $grey-light; +$input-disabled-border: $grey-lighter; + +$table-color: $text; +$table-head: $grey-lighter; +$table-background-color: $grey-dark; +$table-cell-border: 1px solid $grey; + +$table-row-hover-background-color: $grey-darker; +$table-striped-row-even-background-color: $grey-darker; +$table-striped-row-even-hover-background-color: lighten($grey-darker, 2); + +$pagination-color: $link; +$pagination-border-color: $border; + +$navbar-height: 4rem; + +$navbar-background-color: $primary; +$navbar-item-color: $text; +$navbar-item-hover-color: $link; +$navbar-item-hover-background-color: transparent; +$navbar-item-active-color: $link; +$navbar-dropdown-arrow: #fff; +$navbar-divider-background-color: rgba(0, 0, 0, 0.2); +$navbar-dropdown-border-top: 1px solid $navbar-divider-background-color; +$navbar-dropdown-background-color: $primary; +$navbar-dropdown-item-hover-color: $grey-lighter; +$navbar-dropdown-item-hover-background-color: transparent; +$navbar-dropdown-item-active-background-color: transparent; +$navbar-dropdown-item-active-color: $link; + +$dropdown-content-background-color: $background; +$dropdown-item-color: $text; + +$progress-value-background-color: $grey-lighter; + +$file-cta-background-color: $grey-darker; + +$progress-bar-background-color: $grey-dark; + +$panel-heading-background-color: $grey-dark; + +$control-label: $grey-lighter; \ No newline at end of file diff --git a/client/src/assets/style.scss b/client/src/assets/style.scss new file mode 100644 index 0000000..dfab408 --- /dev/null +++ b/client/src/assets/style.scss @@ -0,0 +1,6 @@ +@import "~bulma/sass/utilities/_all"; +@import "variables"; +@import "~bulma"; +@import "~buefy/src/scss/buefy"; +@import "overrides"; +// @import "~/node_modules/material-design-icons/iconfont/material-icons.css"; \ No newline at end of file diff --git a/client/src/components/Admin.vue b/client/src/components/Admin.vue index b6fb27b..8218644 100644 --- a/client/src/components/Admin.vue +++ b/client/src/components/Admin.vue @@ -1,6 +1,7 @@