From 94eba9fe96797908ea81cba473b5b1566cdbd74a Mon Sep 17 00:00:00 2001 From: "Papadakis, Charalampos" <charalampos.papadakis@sybit.de> Date: Mon, 30 Oct 2023 11:22:50 +0100 Subject: [PATCH 1/3] issue: Landing Page text into localization/translation --- frontend/src/locales/de.json | 6 ++ frontend/src/locales/en.json | 5 ++ frontend/src/views/LandingPage.vue | 127 ++++++++++++----------------- 3 files changed, 63 insertions(+), 75 deletions(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 4cbeb201f..05331bf31 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -144,7 +144,13 @@ } }, "hostLeft": "Warte, bis der Organisator die Sitzung wieder betritt..." + }, + "instruction": { + "setUpSession": "Erstellen Sie eine Planungssitzung und wählen Sie Ihr bevorzugtes Abstimmungsset aus. <br> <br> Sie können Ihre User Stories importieren oder JIRA verbinden, um Story Points zu synchronisieren. <br> <br> <span style='color: grey;'>Verbindung zum Issue-Tracker</span> <br> <br> DIVENI kann sich mit Issue-Trackern wie Azure DevOps, JIRA Server und Cloud verbinden, um User Stories anzuzeigen und die abgestimmten Ergebnisse Ihres Planning Pokers zu aktualisieren.", + "inviteYourTeam": "Laden Sie Ihr Team mit QR-Code, Einladungslink oder Code ein. <br> <br> Jeder Benutzer wird zufällig einem Tier zugewiesen und ist bereit zur Schätzung. <br> <br> Wenn alle in der Sitzung sind, können Sie mit der Schätzung beginnen. Wenn Sie ein Zeitlimit festgelegt haben, wird dieses als Limit für die Abstimmungszeit verwendet.", + "estimateUserStories": "Jedes Mitglied des Teams kann sein definiertes Set verwenden, um die ausgewählte User Story zu bewerten. <br> <br> Wenn alle abgestimmt haben, zeigt DIVENI die Ergebnisse und wählt zufällig zwei Wähler aus, die das Minimum / Maximum gewählt haben, um ihre Schätzung zu besprechen. <br> <br> Nach der Diskussion können Sie die Schätzung wiederholen." } + }, "session": { "prepare": { diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 3472ec3d6..3b916370a 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -144,6 +144,11 @@ } }, "hostLeft": "Waiting for the host to come back..." + }, + "instruction": { + "setUpSession": "Create a planning session and select your prefered voting set. <br> <br> You could import your user stories or connect JIRA to syncronize story points. <br> <br> <span style='color: grey;'>Connecting to Issue-Tracker </span> <br> <br> DIVENI could connect to issue trackers like Azure DevOps, JIRA Server and Cloud to show user stories and update the voted results of your planning poker.", + "inviteYourTeam": "Invite your team using QR-Code, invite link or code. <br> <br> Every user will be randomly assinged to a animal and is ready to estimate. <br> <br> If everybody is in the session, you could start estimation. Having defined a time limit this will be used as limit for voting time.", + "estimateUserStories": "Every member of the Team could use your defined set to vote the selected user story. <br> <br> If everybody has voted, DIVENI shows results and randomly selects two voters having voted minimum / maximum to discuss their estimation. <br> <br> After discussion you could repeat estimation." } }, "session": { diff --git a/frontend/src/views/LandingPage.vue b/frontend/src/views/LandingPage.vue index 0eda10f19..6505926ad 100644 --- a/frontend/src/views/LandingPage.vue +++ b/frontend/src/views/LandingPage.vue @@ -2,7 +2,7 @@ <div id="landing-page"> <b-container fluid class="teaser"> <b-container> - <b-jumbotron header="DIVENI" lead="Instant free and easy remote Planning Poker" /> + <b-jumbotron header="DIVENI" lead="Instant free and easy remote Planning Poker"/> </b-container> </b-container> <b-container class="my-5"> @@ -35,74 +35,49 @@ </AnalyticsDataComponent> <b-container class="py-5"> - <div class="parent py-5 px-5"> - <div class="background py-5"></div> - <div class="text"> - <h1>Remote Planning Poker using DIVENI</h1> - <b-card-group deck class="py-5"> - <b-card class="pictureCard"> - <b-card-text> - <b-img - :src="require(`@/assets/SetUpSession.png`)" - class="landingPagePictures" - /> - </b-card-text> - </b-card> - <b-card class="pictureCard"> - <b-card-text> - <b-img - :src="require(`@/assets/InviteYourTeam.png`)" - class="landingPagePictures" - /> - </b-card-text> - </b-card> - <b-card class="pictureCard"> - <b-card-text> - <b-img - :src="require(`@/assets/EstimateUserStories.png`)" - class="landingPagePictures" - /> - </b-card-text> - </b-card> - </b-card-group> - <b-card-group deck> - <b-card class="aboutDiveni" title="Set up Session"> - <b-card-text> - Create a planning session and select your prefered voting set. - </b-card-text> - <b-card-text> - You could import your user stories or connect JIRA to syncronize story points. - </b-card-text> - - <b-card-sub-title> Connecting to Issue-Tracker </b-card-sub-title> - <b-card-text> - DIVENI could connect to issue trackers like Azure DevOps, JIRA Server and Cloud to show - user stories and update the voted results of your planning poker. - </b-card-text> - </b-card> - <b-card class="aboutDiveni" title="Invite your Team"> - <b-card-text> Invite your team using QR-Code, invite link or code. </b-card-text> - <b-card-text> - Every user will be randomly assinged to a animal and is ready to estimate. - </b-card-text> - <b-card-text> - If everybody is in the session, you could start estimation. Having defined a time limit - this will be used as limit for voting time. - </b-card-text> - </b-card> - <b-card class="aboutDiveni" title="Estimate User Stories"> - <b-card-text> - Every member of team could use your defined set to vote the selected user story. - </b-card-text> - <b-card-text> - If everybody has voted, DIVENI shows results and randomly selects two voters having - voted minimum / maximum to discuss their estimation. - </b-card-text> - <b-card-text> After discussion you could repeat estimation. </b-card-text> - </b-card> - </b-card-group> - </div> + <div class="parent py-5 px-5"> + <div class="background py-5"></div> + <div class="text"> + <h1>Remote Planning Poker using DIVENI</h1> + <b-card-group deck class="py-5"> + <b-card class="pictureCard"> + <b-card-text> + <b-img + :src="require(`@/assets/SetUpSession.png`)" + class="landingPagePictures" + /> + </b-card-text> + </b-card> + <b-card class="pictureCard"> + <b-card-text> + <b-img + :src="require(`@/assets/InviteYourTeam.png`)" + class="landingPagePictures" + /> + </b-card-text> + </b-card> + <b-card class="pictureCard"> + <b-card-text> + <b-img + :src="require(`@/assets/EstimateUserStories.png`)" + class="landingPagePictures" + /> + </b-card-text> + </b-card> + </b-card-group> + <b-card-group deck> + <b-card class="aboutDiveni" title="Set up Session"> + <b-card-text v-html="$t('page.instruction.setUpSession')"></b-card-text> + </b-card> + <b-card class="aboutDiveni" title="Invite your Team"> + <b-card-text v-html="$t('page.instruction.inviteYourTeam')"></b-card-text> + </b-card> + <b-card class="aboutDiveni" title="Estimate User Stories"> + <b-card-text v-html="$t('page.instruction.estimateUserStories')"></b-card-text> + </b-card> + </b-card-group> </div> + </div> <h1 class="mt-5">About DIVENI</h1> <p>DIVENI was initially developed by students of HTWG Constance and is open source now.</p> <p> @@ -119,12 +94,13 @@ import LandingPageCard from "../components/LandingPageCard.vue"; import Constants from "../constants"; import Session from "../model/Session"; import AnalyticsDataComponent from "../components/AnalyticsDataComponent.vue"; + export default Vue.extend({ name: "LandingPage", components: { LandingPageCard, AnalyticsDataComponent, -}, + }, data() { return { sessionWrapper: {} as { session: Session }, @@ -165,7 +141,7 @@ export default Vue.extend({ sessionState: string; members: Array<string>; }; - this.sessionWrapper = { session }; + this.sessionWrapper = {session}; } catch (e) { console.error(`got error: ${e}`); window.localStorage.removeItem("adminCookie"); @@ -173,10 +149,10 @@ export default Vue.extend({ } }, goToJoinPage() { - this.$router.push({ name: "JoinPage" }); + this.$router.push({name: "JoinPage"}); }, goToPrepareSessionPage() { - this.$router.push({ name: "PrepareSessionPage" }); + this.$router.push({name: "PrepareSessionPage"}); }, goToSessionPage() { this.$store.commit("setUserStories", { @@ -211,7 +187,7 @@ export default Vue.extend({ .teaser { background: linear-gradient(var(--background-color-primary), var(--pictureGradientEnd)), - url("~@/assets/img/diveni-background.png"); + url("~@/assets/img/diveni-background.png"); background-size: cover; background-repeat: no-repeat; } @@ -226,8 +202,9 @@ export default Vue.extend({ .card-sub-title { color: red; } -.card-title{ - color:var(--text-primary-color) + +.card-title { + color: var(--text-primary-color) } .parent { From fc42d9ede38b05e2f49a8a230f2c40b04724eea6 Mon Sep 17 00:00:00 2001 From: "Papadakis, Charalampos" <charalampos.papadakis@sybit.de> Date: Mon, 30 Oct 2023 12:00:07 +0100 Subject: [PATCH 2/3] issue: german removed --- frontend/src/locales/de.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 05331bf31..4cbeb201f 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -144,13 +144,7 @@ } }, "hostLeft": "Warte, bis der Organisator die Sitzung wieder betritt..." - }, - "instruction": { - "setUpSession": "Erstellen Sie eine Planungssitzung und wählen Sie Ihr bevorzugtes Abstimmungsset aus. <br> <br> Sie können Ihre User Stories importieren oder JIRA verbinden, um Story Points zu synchronisieren. <br> <br> <span style='color: grey;'>Verbindung zum Issue-Tracker</span> <br> <br> DIVENI kann sich mit Issue-Trackern wie Azure DevOps, JIRA Server und Cloud verbinden, um User Stories anzuzeigen und die abgestimmten Ergebnisse Ihres Planning Pokers zu aktualisieren.", - "inviteYourTeam": "Laden Sie Ihr Team mit QR-Code, Einladungslink oder Code ein. <br> <br> Jeder Benutzer wird zufällig einem Tier zugewiesen und ist bereit zur Schätzung. <br> <br> Wenn alle in der Sitzung sind, können Sie mit der Schätzung beginnen. Wenn Sie ein Zeitlimit festgelegt haben, wird dieses als Limit für die Abstimmungszeit verwendet.", - "estimateUserStories": "Jedes Mitglied des Teams kann sein definiertes Set verwenden, um die ausgewählte User Story zu bewerten. <br> <br> Wenn alle abgestimmt haben, zeigt DIVENI die Ergebnisse und wählt zufällig zwei Wähler aus, die das Minimum / Maximum gewählt haben, um ihre Schätzung zu besprechen. <br> <br> Nach der Diskussion können Sie die Schätzung wiederholen." } - }, "session": { "prepare": { From 15465e1b4848cb1b78e8365382b50ee6f5a66f81 Mon Sep 17 00:00:00 2001 From: "Papadakis, Charalampos" <charalampos.papadakis@sybit.de> Date: Mon, 30 Oct 2023 13:41:44 +0100 Subject: [PATCH 3/3] run lint:fix --- frontend/src/App.vue | 115 ++++++++++++------ frontend/src/assets/variables.css | 31 +++-- .../src/components/AnalyticsDataComponent.vue | 88 +++++++------- frontend/src/components/CardSetComponent.vue | 104 ++++++++-------- .../src/components/CopySessionIdPopup.vue | 28 ++++- frontend/src/components/EstimateTimer.vue | 23 ++-- frontend/src/components/JiraComponent.vue | 30 ++--- frontend/src/components/JoinPageCard.vue | 27 ++-- frontend/src/components/LandingPageCard.vue | 10 +- frontend/src/components/MarkdownEditor.vue | 41 +++---- frontend/src/components/MemberVoteCard.vue | 4 +- .../components/ProjectSelectionComponent.vue | 4 +- frontend/src/components/RoundedAvatar.vue | 5 +- frontend/src/components/SessionMemberCard.vue | 2 +- .../SignInWithAzureDevOpsButtonComponent.vue | 9 +- .../SignInWithJiraButtonComponent.vue | 10 +- .../SignInWithJiraCloudButtonComponent.vue | 13 +- .../SignInWithJiraServerButtonComponent.vue | 8 +- .../src/components/StoryPointsComponent.vue | 2 - .../src/components/ThemeToggleComponent.vue | 30 ++--- frontend/src/components/UserStories.vue | 41 ++++--- .../src/components/UserStoryComponent.vue | 2 - .../src/components/UserStoryDescriptions.vue | 21 ++-- .../components/actions/SessionCloseButton.vue | 35 +++--- .../components/actions/SessionLeaveButton.vue | 2 +- .../components/actions/SessionStartButton.vue | 5 +- .../components/navigation/LocaleDropdown.vue | 6 +- .../navigation/TopNavigationBar.vue | 17 +-- frontend/src/services/api.service.ts | 7 +- frontend/src/views/AboutPage.vue | 27 ++-- frontend/src/views/JoinPage.vue | 13 +- frontend/src/views/LandingPage.vue | 32 ++--- frontend/src/views/MemberVotePage.vue | 3 +- frontend/src/views/PrepareSessionPage.vue | 89 +++++++------- frontend/src/views/ResultPage.vue | 23 ++-- frontend/src/views/SessionPage.vue | 61 ++++++---- 36 files changed, 534 insertions(+), 434 deletions(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 3d1b12c94..d6641acc8 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -32,26 +32,68 @@ export default Vue.extend({ main { min-height: calc(100vh - 10rem); background: - /* Top */ - radial-gradient( - farthest-corner at 500px 500px, - var(--blurredColour1) 0.1%, - rgba(255, 255, 255, 0) 26% - ), - radial-gradient(farthest-corner at 500px 500px, var(--blurredColour1) 0.1%, rgba(255, 255, 255, 0) 26%), - radial-gradient(farthest-corner at 7% 7%, var(--blurredColour2) 0.1%, rgba(255, 255, 255, 0) 8%), - radial-gradient(farthest-corner at 17% 40px, var(--blurredColour3) 1%, rgba(255, 255, 255, 0) 16%), - radial-gradient(farthest-corner at 17% 40px, var(--blurredColour3) 1%, rgba(255, 255, 255, 0) 16%), - radial-gradient(farthest-corner at 36% 7%, var(--blurredColour4) 0.1%, rgba(255, 255, 255, 0) 18%), - radial-gradient(farthest-corner at 36% 7%, var(--blurredColour4) 0.1%, rgba(255, 255, 255, 0) 18%), - - /* Bottom */ - radial-gradient(farthest-corner at 95% 42%, var(--blurredColour5) 0.1%, rgba(255, 255, 255, 0) 26%), - radial-gradient(farthest-corner at 0% 58%, var(--blurredColour5) 0.1%, rgba(255, 255, 255, 0) 22%), - radial-gradient(circle farthest-corner at 65% 95%, var(--blurredColour3) 0.1%, rgba(255, 255, 255, 0) 13%), - radial-gradient( farthest-corner at 100% 87%, var(--blurredColour3) 0.1%, rgba(255, 255, 255, 0) 13%), - radial-gradient( farthest-corner at 84% 82%, var(--blurredColour4) 0.1%, rgba(255, 255, 255, 0) 13%), - radial-gradient(circle farthest-corner at 84% 82%, var(--blurredColour6) 0.1%, rgba(255, 255, 255, 0) 13%); + /* Top */ radial-gradient( + farthest-corner at 500px 500px, + var(--blurredColour1) 0.1%, + rgba(255, 255, 255, 0) 26% + ), + radial-gradient( + farthest-corner at 500px 500px, + var(--blurredColour1) 0.1%, + rgba(255, 255, 255, 0) 26% + ), + radial-gradient(farthest-corner at 7% 7%, var(--blurredColour2) 0.1%, rgba(255, 255, 255, 0) 8%), + radial-gradient( + farthest-corner at 17% 40px, + var(--blurredColour3) 1%, + rgba(255, 255, 255, 0) 16% + ), + radial-gradient( + farthest-corner at 17% 40px, + var(--blurredColour3) 1%, + rgba(255, 255, 255, 0) 16% + ), + radial-gradient( + farthest-corner at 36% 7%, + var(--blurredColour4) 0.1%, + rgba(255, 255, 255, 0) 18% + ), + radial-gradient( + farthest-corner at 36% 7%, + var(--blurredColour4) 0.1%, + rgba(255, 255, 255, 0) 18% + ), + /* Bottom */ + radial-gradient( + farthest-corner at 95% 42%, + var(--blurredColour5) 0.1%, + rgba(255, 255, 255, 0) 26% + ), + radial-gradient( + farthest-corner at 0% 58%, + var(--blurredColour5) 0.1%, + rgba(255, 255, 255, 0) 22% + ), + radial-gradient( + circle farthest-corner at 65% 95%, + var(--blurredColour3) 0.1%, + rgba(255, 255, 255, 0) 13% + ), + radial-gradient( + farthest-corner at 100% 87%, + var(--blurredColour3) 0.1%, + rgba(255, 255, 255, 0) 13% + ), + radial-gradient( + farthest-corner at 84% 82%, + var(--blurredColour4) 0.1%, + rgba(255, 255, 255, 0) 13% + ), + radial-gradient( + circle farthest-corner at 84% 82%, + var(--blurredColour6) 0.1%, + rgba(255, 255, 255, 0) 13% + ); background-color: var(--background-color-primary); backdrop-filter: blur(5px); color: var(--text-primary-color) !important; @@ -69,18 +111,18 @@ h4 { color: var(--text-primary-color); } /* Landing Page */ -.newSessionCard .landingPageCardButton{ +.newSessionCard .landingPageCardButton { background-color: var(--startButton); border-radius: var(--buttonShape); color: var(--text-primary-color); } -.newSessionCard .landingPageCardButton:hover{ +.newSessionCard .landingPageCardButton:hover { background-color: var(--startButtonHovered); color: var(--text-primary-color); } -.newSessionCard .landingPageCardButton:focus{ +.newSessionCard .landingPageCardButton:focus { background-color: var(--startButtonHovered) !important; } @@ -88,13 +130,13 @@ h4 { background-color: #52173100; /* So the Footer does not overflow */ } -.joinSessionCard .landingPageCardButton{ +.joinSessionCard .landingPageCardButton { background-color: var(--joinButton); border-radius: var(--buttonShape); color: var(--text-primary-color); } -.joinSessionCard .landingPageCardButton:hover{ +.joinSessionCard .landingPageCardButton:hover { background-color: var(--joinButtonHovered); color: var(--text-primary-color); } @@ -122,7 +164,7 @@ h4 { background-color: #52173100; /* So the Footer does not overflow */ } /* Prepare Page */ -.selectedTab { +.selectedTab { background-color: var(--preparePageMainColor) !important; } @@ -189,27 +231,33 @@ a.btn.startButton:focus { background-color: var(--startButtonHovered) !important; } -.btn.dropdown-toggle { /* User Estimation Button */ +.btn.dropdown-toggle { + /* User Estimation Button */ color: var(--text-primary-color); background-color: var(--joinButton); } -.btn.dropdown-toggle:active { /* User Estimation Button hold */ +.btn.dropdown-toggle:active { + /* User Estimation Button hold */ background-color: var(--joinButtonHovered) !important; color: var(--text-primary-color) !important; } -.btn.dropdown-toggle:hover { /* User Estimation Button Hover */ +.btn.dropdown-toggle:hover { + /* User Estimation Button Hover */ background-color: var(--joinButtonHovered); color: var(--text-primary-color); } -.btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { /* User Estimation Button clicked */ +.btn-secondary:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle { + /* User Estimation Button clicked */ background-color: var(--joinButton) !important; color: var(--text-primary-color) !important; } -.btn-secondary:focus{ /* User Estimation Button after click & add User Story Button on click hold*/ +.btn-secondary:focus { + /* User Estimation Button after click & add User Story Button on click hold*/ background-color: var(--joinButtonHovered) !important; color: var(--text-primary-color) !important; } @@ -227,7 +275,7 @@ a.btn.startButton:focus { border-color: var(--text-primary-color) !important; } /*scrollbar - firefox*/ -:root{ +:root { scrollbar-color: #888 rgba(0, 0, 0, 0) !important; scrollbar-width: thin !important; } @@ -253,7 +301,6 @@ a.btn.startButton:focus { } ::-webkit-scrollbar-corner { - background: rgba(0,0,0,0); + background: rgba(0, 0, 0, 0); } - </style> diff --git a/frontend/src/assets/variables.css b/frontend/src/assets/variables.css index 1a5f6edcc..cab7e4bb0 100644 --- a/frontend/src/assets/variables.css +++ b/frontend/src/assets/variables.css @@ -4,43 +4,42 @@ --blurredColour2: rgba(0, 0, 0, 0.219); --blurredColour3: rgba(216, 125, 6, 0); --blurredColour4: rgba(17, 9, 0, 0); - + /* Bottom */ --blurredColour5: rgba(6, 1, 8, 0.24); --blurredColour6: rgba(80, 80, 80, 0.219); - + /*other basic stuff*/ --accent-color: #cacaca; --text-primary-color: #222; --element-size: 6rem; --buttonShape: 1rem; --linkColor: #254bb3; - + /*Landing Page*/ --startButton: #946234e0; --startButtonHovered: #9c5b1d; - --joinButton: #658462; + --joinButton: #658462; --joinButtonHovered: #4d8a47; - --reconnectButton: #822E1C; + --reconnectButton: #822e1c; --reconnectButtonHovered: #9e2e15; --pictureGradientEnd: rgba(19, 44, 20, 0.5); --landingPageCardsBackground: #e4e4e4; --blurBackGroundColor: rgba(80, 80, 80, 0.219); /*Prepare page*/ - --preparePageMainColor:#946234; + --preparePageMainColor: #946234; --preparePageInActiveTab: #ffffff; - --preparePageInActiveTabHover: #718A6F91; + --preparePageInActiveTabHover: #718a6f91; --preparePageBorderTab: grey; --preparePageImportUserStoriesButton: #30a858; --preparePageActiveCardSet: black; --preparePageInActiveCardSet: #e27712; - --preparePageTimerBackground: #974F0D3D; + --preparePageTimerBackground: #974f0d3d; /*Session Page*/ --textAreaColour: #c3c7bd; --textAreaColourHovered: #c3c7bdb6; - /*other Stuff*/ --topNavigationBarColor: rgba(200, 200, 200, 0.75); --popUpMenu: rgb(143, 143, 143); @@ -65,9 +64,9 @@ --linkColor: #00ffdd; /*Landing Page*/ - --startButton: #13276D; + --startButton: #13276d; --startButtonHovered: #13266dc9; - --joinButton: #42104B; + --joinButton: #42104b; --joinButtonHovered: #42104bb4; --reconnectButton: #033347; --reconnectButtonHovered: #033347bd; @@ -77,19 +76,19 @@ /*Prepare Page*/ - --preparePageMainColor:#13276D; + --preparePageMainColor: #13276d; --preparePageInActiveTab: #666565; - --preparePageInActiveTabHover: #42104B; + --preparePageInActiveTabHover: #42104b; --preparePageBorderTab: white; --preparePageImportUserStoriesButton: #7e5a0c; --preparePageActiveCardSet: white; --preparePageInActiveCardSet: #e27712; - --preparePageTimerBackground: #7EBCC98A; + --preparePageTimerBackground: #7ebcc98a; /*Session Page*/ - --textAreaColour: #A8E8F65C; + --textAreaColour: #a8e8f65c; --textAreaColourHovered: #a8e8f6b9; /*other Stuff*/ --topNavigationBarColor: rgba(34, 34, 34, 0.863); --popUpMenu: rgb(201, 201, 201); -} \ No newline at end of file +} diff --git a/frontend/src/components/AnalyticsDataComponent.vue b/frontend/src/components/AnalyticsDataComponent.vue index b88505d41..fccde5cef 100644 --- a/frontend/src/components/AnalyticsDataComponent.vue +++ b/frontend/src/components/AnalyticsDataComponent.vue @@ -4,69 +4,67 @@ <b-card-group deck> <b-card class="statsCards"> <b-card-title style="text-align: center"> - {{$t('page.landing.meeting.analytics.allCreatedSessionsTitle')}} + {{ $t("page.landing.meeting.analytics.allCreatedSessionsTitle") }} </b-card-title> <b-card-text> <h2 class="numbers">{{ tweenedOverAllSessions.toFixed(0) }}</h2> - <div style="text-align: center;"> - {{allSessions}} + <div style="text-align: center"> + {{ allSessions }} </div> - <br/> + <br /> <h2 class="numbers">{{ tweenedOverAllAttendees.toFixed(0) }}</h2> - <div style="text-align: center;"> - {{allAttendees}} + <div style="text-align: center"> + {{ allAttendees }} </div> </b-card-text> </b-card> <b-card class="statsCards"> <b-card-title style="text-align: center"> - {{$t('page.landing.meeting.analytics.lastMonthTitle')}} + {{ $t("page.landing.meeting.analytics.lastMonthTitle") }} </b-card-title> <b-card-text> <h2 class="numbers"> {{ tweenedOverAllSessionsFromLastMonth.toFixed(0) }} </h2> - <div style="text-align: center;"> - {{allSessions}} + <div style="text-align: center"> + {{ allSessions }} </div> - <br> + <br /> <h2 class="numbers"> {{ tweenedOverAllAttendeesFromLastMonth.toFixed(0) }} </h2> - <div style="text-align: center;"> - {{allAttendees}} + <div style="text-align: center"> + {{ allAttendees }} </div> </b-card-text> </b-card> <b-card class="statsCards"> <b-card-title style="text-align: center"> - {{$t('page.landing.meeting.analytics.activeTitle')}} + {{ $t("page.landing.meeting.analytics.activeTitle") }} </b-card-title> <b-card-text> <h2 class="numbers"> {{ tweenedCurrentSessions.toFixed(0) }} </h2> - <div style="text-align: center;"> - {{allSessions}} + <div style="text-align: center"> + {{ allSessions }} </div> - <br/> + <br /> <h2 class="numbers"> {{ tweendCurrentAttendees.toFixed(0) }} </h2> - <div style="text-align: center;"> - {{allAttendees}} + <div style="text-align: center"> + {{ allAttendees }} </div> </b-card-text> </b-card> </b-card-group> - <br/> + <br /> </b-container> - - </template> <script lang="ts"> import Vue from "vue"; -import gsap from 'gsap' +import gsap from "gsap"; import apiService from "@/services/api.service"; export default Vue.extend({ name: "AnalyticsDataComponent", @@ -84,48 +82,51 @@ export default Vue.extend({ tweenedOverAllSessionsFromLastMonth: 0, tweenedOverAllAttendeesFromLastMonth: 0, tweenedCurrentSessions: 0, - tweendCurrentAttendees: 0 + tweendCurrentAttendees: 0, }; }, + computed: { + headerText() { + return this.$t("page.landing.meeting.analytics.title"); + }, + allSessions() { + return this.$t("page.landing.meeting.analytics.sessionText"); + }, + allAttendees() { + return this.$t("page.landing.meeting.analytics.attendeesText"); + }, + }, watch: { overAllSessions(n) { - gsap.to(this, { duration: 1.25, tweenedOverAllSessions: Number(n) || 0 }) + gsap.to(this, { duration: 1.25, tweenedOverAllSessions: Number(n) || 0 }); }, overAllAttendees(n) { - gsap.to(this, { duration: 1.25, tweenedOverAllAttendees: Number(n) || 0 }) + gsap.to(this, { duration: 1.25, tweenedOverAllAttendees: Number(n) || 0 }); }, overAllSessionsFromLastMonth(n) { - gsap.to(this, { duration: 1.25, tweenedOverAllSessionsFromLastMonth: Number(n) || 0 }) + gsap.to(this, { duration: 1.25, tweenedOverAllSessionsFromLastMonth: Number(n) || 0 }); }, overAllAttendeesFromLastMonth(n) { - gsap.to(this, { duration: 1.25, tweetweenedOverAllAttendeesFromLastMonthned: Number(n) || 0 }) + gsap.to(this, { + duration: 1.25, + tweetweenedOverAllAttendeesFromLastMonthned: Number(n) || 0, + }); }, currentSessions(n) { - gsap.to(this, { duration: 1.25, tweenedCurrentSessions: Number(n) || 0 }) + gsap.to(this, { duration: 1.25, tweenedCurrentSessions: Number(n) || 0 }); }, currentAttendees(n) { - gsap.to(this, { duration: 1.25, tweendCurrentAttendees: Number(n) || 0 }) - } + gsap.to(this, { duration: 1.25, tweendCurrentAttendees: Number(n) || 0 }); + }, }, created() { this.getAllDiveniData(); }, - computed: { - headerText() { - return this.$t('page.landing.meeting.analytics.title'); - }, - allSessions() { - return this.$t('page.landing.meeting.analytics.sessionText'); - }, - allAttendees() { - return this.$t('page.landing.meeting.analytics.attendeesText'); - }, - }, methods: { async getAllDiveniData() { this.loaded = false; let response = apiService.getAllDiveniData(); - let allData = await response.then(function(result) { + let allData = await response.then(function (result) { let returnArray: Array<number> = []; returnArray.push(result.amountOfSessions); returnArray.push(result.amountOfAttendees); @@ -145,10 +146,8 @@ export default Vue.extend({ }, }, }); - </script> <style scoped> - .statsCards { border-radius: 0.5rem; background-color: rgba(200, 200, 200, 0.5); @@ -157,5 +156,4 @@ export default Vue.extend({ text-align: center; font-weight: bold; } - </style> diff --git a/frontend/src/components/CardSetComponent.vue b/frontend/src/components/CardSetComponent.vue index 4a99e0672..a0abbde91 100644 --- a/frontend/src/components/CardSetComponent.vue +++ b/frontend/src/components/CardSetComponent.vue @@ -1,40 +1,40 @@ <template> <div> <b-row class="d-flex justify-content-around"> - <b-col - cols="4" - md="auto" - v-for="item of userStoryMode === jiraTag ? allCardSetsWithJiraMode : allCardSets" - :key="item.position" - class="swipe-card my-5 mx-5" - :class="getClasses(item)" - @click="onCardSetSelected(item)" - > - <div id="text"> - {{ item.name }} - </div> - <div id="cardDescription"> - {{ item.description }} - <div v-if="item.values.length === 0"> - <span id="createSetHint"> - <b-icon-info-circle class="mt-3 me-1" />{{ - $t("session.prepare.step.selection.cardSet.sets.ownSet.hint.label") - }}</span - > - <b-popover target="createSetHint" triggers="hover" placement="top" id="popUp"> - <template #title> - {{ $t("session.prepare.step.selection.cardSet.sets.ownSet.hint.label") }} - </template> - <p> - {{ $t("session.prepare.step.selection.cardSet.sets.ownSet.hint.description") }} - </p> - <p> - {{ $t("session.prepare.step.selection.cardSet.sets.ownSet.hint.example") }} - </p> - </b-popover> - </div> - </div> - </b-col> + <b-col + v-for="item of userStoryMode === jiraTag ? allCardSetsWithJiraMode : allCardSets" + :key="item.position" + cols="4" + md="auto" + class="swipe-card my-5 mx-5" + :class="getClasses(item)" + @click="onCardSetSelected(item)" + > + <div id="text"> + {{ item.name }} + </div> + <div id="cardDescription"> + {{ item.description }} + <div v-if="item.values.length === 0"> + <span id="createSetHint"> + <b-icon-info-circle class="mt-3 me-1" />{{ + $t("session.prepare.step.selection.cardSet.sets.ownSet.hint.label") + }}</span + > + <b-popover id="popUp" target="createSetHint" triggers="hover" placement="top"> + <template #title> + {{ $t("session.prepare.step.selection.cardSet.sets.ownSet.hint.label") }} + </template> + <p> + {{ $t("session.prepare.step.selection.cardSet.sets.ownSet.hint.description") }} + </p> + <p> + {{ $t("session.prepare.step.selection.cardSet.sets.ownSet.hint.example") }} + </p> + </b-popover> + </div> + </div> + </b-col> </b-row> <b-row v-if="selectedCardSet.name !== ''"> <div v-if="selectedCardSet.values.length !== 0" class="text-center mt-3 pillPosition"> @@ -44,7 +44,10 @@ :class="isActiveCardSetNumber(item)" pill class="pills" - @click="onCardSetNumberSelected(item); $event.target.blur();" + @click=" + onCardSetNumberSelected(item); + $event.target.blur(); + " > {{ item }} </b-button> @@ -82,7 +85,7 @@ export default Vue.extend({ }, data() { return { - theme: localStorage.getItem('user-theme'), + theme: localStorage.getItem("user-theme"), jiraTag: "US_JIRA", selectedCardSet: { name: "", @@ -168,14 +171,16 @@ export default Vue.extend({ }, }, mounted() { - window.addEventListener('user-theme-localstorage-changed', (event) => { - const customEvent = event as CustomEvent; - this.theme = customEvent.detail.storage; + window.addEventListener("user-theme-localstorage-changed", (event) => { + const customEvent = event as CustomEvent; + this.theme = customEvent.detail.storage; }); }, methods: { isActiveCardSetNumber(num) { - return this.selectedCardSet.activeValues.includes(num) ? "activePills m-1" : "outline-secondary inActivePills m-1"; + return this.selectedCardSet.activeValues.includes(num) + ? "activePills m-1" + : "outline-secondary inActivePills m-1"; }, onCardSetSelected(set) { this.selectedCardSet = set; @@ -201,7 +206,7 @@ export default Vue.extend({ return `${this.getCardActiveClass(item)} ${this.getPictureClass(item)}`; }, getCardActiveClass(item) { - return this.selectedCardSet.name === item.name ? 'selectedCard' : 'inActiveCard'; + return this.selectedCardSet.name === item.name ? "selectedCard" : "inActiveCard"; }, getPictureClass(item) { if (this.userStoryMode !== this.jiraTag) { @@ -217,14 +222,13 @@ export default Vue.extend({ default: break; } - } + }, }, }); </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> - .swipe-card { width: 226px; height: 303px; @@ -249,13 +253,13 @@ export default Vue.extend({ } .light-theme1 { - background-image: url("@/assets/preparePage/Fibonacci-LightMode.png") !important; - background-size: cover !important; - border-radius: var(--buttonShape) !important; - box-shadow: 10px 10px 5px #ccc !important; + background-image: url("@/assets/preparePage/Fibonacci-LightMode.png") !important; + background-size: cover !important; + border-radius: var(--buttonShape) !important; + box-shadow: 10px 10px 5px #ccc !important; } -.light-theme2{ +.light-theme2 { background-image: url("@/assets/preparePage/TShirt-LightMode.png"); background-size: cover; border-radius: var(--buttonShape); @@ -311,7 +315,7 @@ export default Vue.extend({ position: relative; } -.dark-theme2::after{ +.dark-theme2::after { background-image: url("@/assets/preparePage/TShirt-DarkMode.png"); background-size: cover; content: ""; @@ -394,7 +398,7 @@ export default Vue.extend({ padding-top: 16px; } -#cardDescription{ +#cardDescription { padding: 16px; text-align: center; } diff --git a/frontend/src/components/CopySessionIdPopup.vue b/frontend/src/components/CopySessionIdPopup.vue index aab5ec63d..f2533e0cb 100644 --- a/frontend/src/components/CopySessionIdPopup.vue +++ b/frontend/src/components/CopySessionIdPopup.vue @@ -8,13 +8,34 @@ </strong> {{ textAfterSessionID }} <b-popover id="popover" target="popover-link" triggers="hover" placement="top"> - <b-button class="mx-1" id="sessionCode" @click="copyIdToClipboard(); $event.target.blur();"> + <b-button + id="sessionCode" + class="mx-1" + @click=" + copyIdToClipboard(); + $event.target.blur(); + " + > {{ $t("page.session.before.copy.id") }} </b-button> - <b-button class="mx-1" id="link" @click="copyLinkToClipboard(); $event.target.blur();"> + <b-button + id="link" + class="mx-1" + @click=" + copyLinkToClipboard(); + $event.target.blur(); + " + > {{ $t("page.session.before.copy.link") }} </b-button> - <b-button class="mx-1" id="qrCode" @click="$bvModal.show('qr-modal'); $event.target.blur();"> + <b-button + id="qrCode" + class="mx-1" + @click=" + $bvModal.show('qr-modal'); + $event.target.blur(); + " + > {{ $t("page.session.before.copy.qr") }} </b-button> </b-popover> @@ -102,7 +123,6 @@ export default Vue.extend({ <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> - .copy-session { font-size: 1.75rem; color: var(--text-primary-color); diff --git a/frontend/src/components/EstimateTimer.vue b/frontend/src/components/EstimateTimer.vue index 0743a1d6a..f90815be9 100644 --- a/frontend/src/components/EstimateTimer.vue +++ b/frontend/src/components/EstimateTimer.vue @@ -4,7 +4,6 @@ {{ formatTimer() }} </b-card-text> </div> - </template> <script lang="ts"> @@ -95,13 +94,15 @@ export default Vue.extend({ }, 100); }, async localClockTimer() { - if (this.member !== '') { - const response = (await this.axios.get(constants.backendURL + "/get-timer-value",{ - params: { - memberID: this.member, - }, - })).data; - this.timerCount = Math.ceil(this.duration - (response / 1000)); + if (this.member !== "") { + const response = ( + await this.axios.get(constants.backendURL + "/get-timer-value", { + params: { + memberID: this.member, + }, + }) + ).data; + this.timerCount = Math.ceil(this.duration - response / 1000); this.intervalHandler = setInterval(() => { if (this.timerCount > 0) { this.timerCount = this.timerCount - 1; @@ -111,7 +112,7 @@ export default Vue.extend({ } }, 1000); } - } + }, }, }); </script> @@ -128,13 +129,13 @@ export default Vue.extend({ .card-text { line-height: 485%; - text-align: center;; + text-align: center; } .timer { width: 100px; height: 117px; - background-image: url('@/assets/Timer.png'); + background-image: url("@/assets/Timer.png"); background-size: contain; user-select: none; } diff --git a/frontend/src/components/JiraComponent.vue b/frontend/src/components/JiraComponent.vue index 733806008..e208d35a2 100644 --- a/frontend/src/components/JiraComponent.vue +++ b/frontend/src/components/JiraComponent.vue @@ -6,29 +6,31 @@ <ul> <li> - {{ $t("session.prepare.step.selection.mode.description.withIssueTracker.descriptionLine1") }} - <sign-in-with-jira-cloud-button-component - v-if="isJiraCloudEnabled" - class="my-1" /> - <sign-in-with-jira-server-button-component - v-if="isJiraServerEnabled" - class="my-1" /> - <sign-in-with-azure-cloud-button-component - v-if="isAzureDevOpsEnabled" - class="my-1" /> + {{ + $t("session.prepare.step.selection.mode.description.withIssueTracker.descriptionLine1") + }} + <sign-in-with-jira-cloud-button-component v-if="isJiraCloudEnabled" class="my-1" /> + <sign-in-with-jira-server-button-component v-if="isJiraServerEnabled" class="my-1" /> + <sign-in-with-azure-cloud-button-component v-if="isAzureDevOpsEnabled" class="my-1" /> </li> <li> - {{ $t("session.prepare.step.selection.mode.description.withIssueTracker.descriptionLine2") }} + {{ + $t("session.prepare.step.selection.mode.description.withIssueTracker.descriptionLine2") + }} <project-selection-component v-if="isLoggedInWithJira" class="my-1" ></project-selection-component> </li> <li> - {{ $t("session.prepare.step.selection.mode.description.withIssueTracker.descriptionLine3") }} + {{ + $t("session.prepare.step.selection.mode.description.withIssueTracker.descriptionLine3") + }} </li> <li> - {{ $t("session.prepare.step.selection.mode.description.withIssueTracker.descriptionLine4") }} + {{ + $t("session.prepare.step.selection.mode.description.withIssueTracker.descriptionLine4") + }} </li> </ul> </div> @@ -89,9 +91,7 @@ export default Vue.extend({ }); </script> <style scoped> - #textDescription { color: var(--text-primary-color); } - </style> diff --git a/frontend/src/components/JoinPageCard.vue b/frontend/src/components/JoinPageCard.vue index 4eba1b716..ad0fd2a29 100644 --- a/frontend/src/components/JoinPageCard.vue +++ b/frontend/src/components/JoinPageCard.vue @@ -29,19 +29,24 @@ </b-col> </b-row> <b-row> - <b-col class="mt-2 mt-md-0 inputText" cols="12" md="9" > + <b-col class="mt-2 mt-md-0 inputText" cols="12" md="9"> <h6>{{ $t("page.join.input.password") }}</h6> - <b-form-input v-model="password" class="mt-3 inputFields" type="password" placeholder="(optional)" /> + <b-form-input + v-model="password" + class="mt-3 inputFields" + type="password" + placeholder="(optional)" + /> </b-col> - <b-col cols="12" md="3" id="startButtonCol"> + <b-col id="startButtonCol" cols="12" md="3"> <b-button - class="rounded-circle startingButton " - type="submit" - :disabled="name.length < 1 || sessionID.length < 1" - @click="onClickButton" - > - {{ buttonText }} - </b-button> + class="rounded-circle startingButton" + type="submit" + :disabled="name.length < 1 || sessionID.length < 1" + @click="onClickButton" + > + {{ buttonText }} + </b-button> </b-col> </b-row> </div> @@ -146,7 +151,7 @@ h6 { border-radius: var(--buttonShape); } -#startButtonCol{ +#startButtonCol { text-align: center; } </style> diff --git a/frontend/src/components/LandingPageCard.vue b/frontend/src/components/LandingPageCard.vue index 12fe45efb..afbdba109 100644 --- a/frontend/src/components/LandingPageCard.vue +++ b/frontend/src/components/LandingPageCard.vue @@ -25,14 +25,12 @@ export default Vue.extend({ }); </script> <style scoped> - -.landing-page-card{ +.landing-page-card { border-radius: 2rem; background-color: var(--landingPageCardsBackground); } -.card-title{ - color:var(--text-primary-color); +.card-title { + color: var(--text-primary-color); } - -</style> \ No newline at end of file +</style> diff --git a/frontend/src/components/MarkdownEditor.vue b/frontend/src/components/MarkdownEditor.vue index c8678c425..7df2d9258 100644 --- a/frontend/src/components/MarkdownEditor.vue +++ b/frontend/src/components/MarkdownEditor.vue @@ -76,50 +76,49 @@ export default Vue.extend({ ], plugins: [codeSyntaxHighlight], }, - theme: localStorage.getItem('user-theme'), + theme: localStorage.getItem("user-theme"), }; }, mounted() { - window.addEventListener('user-theme-localstorage-changed', (event) => { - const customEvent = event as CustomEvent; - this.theme = customEvent.detail.storage; + window.addEventListener("user-theme-localstorage-changed", (event) => { + const customEvent = event as CustomEvent; + this.theme = customEvent.detail.storage; }); }, methods: { getTextValueFromEditor() { if (this.$refs.toastuiEditor) { const editor = this.$refs.toastuiEditor as Editor; - const editorText = editor.invoke('getMarkdown'); - this.$emit("textValueChanged", { markdown: editorText}); + const editorText = editor.invoke("getMarkdown"); + this.$emit("textValueChanged", { markdown: editorText }); } - } - } + }, + }, }); </script> <style> - .toastui-editor-popup { background-color: var(--topNavigationBarColor); } .toastui-editor-defaultUI-toolbar { - background-color: #7A777773; + background-color: #7a777773; } .toastui-editor-defaultUI-toolbar button { - border:none; + border: none; color: var(--text-primary-color); } -.toastui-editor-defaultUI .ProseMirror{ +.toastui-editor-defaultUI .ProseMirror { background-color: #405c6c; } .toastui-editor-md-container .toastui-editor-md-preview { - overflow: auto; - padding: 0 25px; - height: 100%; - background-color: #405c6c; + overflow: auto; + padding: 0 25px; + height: 100%; + background-color: #405c6c; } .toastui-editor-mode-switch { @@ -130,15 +129,15 @@ export default Vue.extend({ color: var(--text-primary-color) !important; } -.lightMode .toastui-editor-defaultUI .ProseMirror{ +.lightMode .toastui-editor-defaultUI .ProseMirror { background-color: var(--textAreaColour); } .lightMode .toastui-editor-md-container .toastui-editor-md-preview { - overflow: auto; - padding: 0 25px; - height: 100%; - background-color: var(--textAreaColour); + overflow: auto; + padding: 0 25px; + height: 100%; + background-color: var(--textAreaColour); } .lightMode .toastui-editor-mode-switch { diff --git a/frontend/src/components/MemberVoteCard.vue b/frontend/src/components/MemberVoteCard.vue index 883debc27..6a0f9c0be 100644 --- a/frontend/src/components/MemberVoteCard.vue +++ b/frontend/src/components/MemberVoteCard.vue @@ -24,7 +24,7 @@ :style="swipeableCardBackgroundColor" @click="onCardClicked()" > - <div class="text" > + <div class="text"> {{ dragged ? "💪" : voteOption }} </div> </div> @@ -97,6 +97,6 @@ export default Vue.extend({ .text { font-size: 5rem; font-weight: 500; - color:black + color: black; } </style> diff --git a/frontend/src/components/ProjectSelectionComponent.vue b/frontend/src/components/ProjectSelectionComponent.vue index 0f290783c..bfb69a3f6 100644 --- a/frontend/src/components/ProjectSelectionComponent.vue +++ b/frontend/src/components/ProjectSelectionComponent.vue @@ -4,7 +4,9 @@ v-model="selected" :items="getProjectNames" :placeholder=" - $t('session.prepare.step.selection.mode.description.withIssueTracker.placeholder.searchProjects') + $t( + 'session.prepare.step.selection.mode.description.withIssueTracker.placeholder.searchProjects' + ) " @input="getUserStories" /> diff --git a/frontend/src/components/RoundedAvatar.vue b/frontend/src/components/RoundedAvatar.vue index 2e62ad613..d26ba3426 100644 --- a/frontend/src/components/RoundedAvatar.vue +++ b/frontend/src/components/RoundedAvatar.vue @@ -24,14 +24,13 @@ export default Vue.extend({ props: { member: { type: Object, required: true }, showName: { type: Boolean, default: true }, - admin: { type: Boolean, default: true}, + admin: { type: Boolean, default: true }, }, }); </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> - .rounded-avatar { padding: 8px; display: flex; @@ -40,7 +39,7 @@ export default Vue.extend({ overflow: hidden; } -.smallAvatars{ +.smallAvatars { width: 100px; height: 100px; } diff --git a/frontend/src/components/SessionMemberCard.vue b/frontend/src/components/SessionMemberCard.vue index d2eedf80d..c792c8df3 100644 --- a/frontend/src/components/SessionMemberCard.vue +++ b/frontend/src/components/SessionMemberCard.vue @@ -11,7 +11,7 @@ member.currentEstimation }}</strong> </h1> - <rounded-avatar :member="member" :admin="false"/> + <rounded-avatar :member="member" :admin="false" /> </div> </template> diff --git a/frontend/src/components/SignInWithAzureDevOpsButtonComponent.vue b/frontend/src/components/SignInWithAzureDevOpsButtonComponent.vue index cdc38302e..a5e363d24 100644 --- a/frontend/src/components/SignInWithAzureDevOpsButtonComponent.vue +++ b/frontend/src/components/SignInWithAzureDevOpsButtonComponent.vue @@ -1,6 +1,13 @@ <template> <div> - <b-button id="button" :disabled="disabled" @click="signIn(); $event.target.blur();"> + <b-button + id="button" + :disabled="disabled" + @click=" + signIn(); + $event.target.blur(); + " + > {{ $t( "session.prepare.step.selection.mode.description.withIssueTracker.buttons.signInWithAzureDevOps.label" diff --git a/frontend/src/components/SignInWithJiraButtonComponent.vue b/frontend/src/components/SignInWithJiraButtonComponent.vue index f82bd726d..bb99c4d50 100644 --- a/frontend/src/components/SignInWithJiraButtonComponent.vue +++ b/frontend/src/components/SignInWithJiraButtonComponent.vue @@ -8,7 +8,9 @@ " > {{ - $t("session.prepare.step.selection.mode.description.withIssueTracker.buttons.signInWithJira.label") + $t( + "session.prepare.step.selection.mode.description.withIssueTracker.buttons.signInWithJira.label" + ) }} </b-button> <b-modal @@ -19,7 +21,11 @@ @hidden="resetModal" @ok="handleOk" > - <p>{{ $t("session.prepare.step.selection.mode.description.withIssueTracker.dialog.description") }}</p> + <p> + {{ + $t("session.prepare.step.selection.mode.description.withIssueTracker.dialog.description") + }} + </p> <form ref="form" @submit.stop.prevent="handleSubmit"> <b-form-group label="Verification code" diff --git a/frontend/src/components/SignInWithJiraCloudButtonComponent.vue b/frontend/src/components/SignInWithJiraCloudButtonComponent.vue index 3a8929adb..3a20669c7 100644 --- a/frontend/src/components/SignInWithJiraCloudButtonComponent.vue +++ b/frontend/src/components/SignInWithJiraCloudButtonComponent.vue @@ -1,6 +1,13 @@ <template> <div> - <b-button id="button" :disabled="disabled" @click="redirectToJira(); $event.target.blur();"> + <b-button + id="button" + :disabled="disabled" + @click=" + redirectToJira(); + $event.target.blur(); + " + > {{ $t( "session.prepare.step.selection.mode.description.withIssueTracker.buttons.signInWithJiraCloud.label" @@ -12,7 +19,7 @@ <script lang="ts"> import Vue from "vue"; -import {v4 as uuidv4} from "uuid"; +import { v4 as uuidv4 } from "uuid"; import apiService from "@/services/api.service"; export default Vue.extend({ @@ -37,7 +44,6 @@ export default Vue.extend({ </script> <style scoped> - #button { background-color: var(--preparePageMainColor); color: var(--text-primary-color); @@ -47,5 +53,4 @@ export default Vue.extend({ background-color: var(--startButtonHovered); color: var(--text-primary-color); } - </style> diff --git a/frontend/src/components/SignInWithJiraServerButtonComponent.vue b/frontend/src/components/SignInWithJiraServerButtonComponent.vue index e99d09be0..c061ae3ee 100644 --- a/frontend/src/components/SignInWithJiraServerButtonComponent.vue +++ b/frontend/src/components/SignInWithJiraServerButtonComponent.vue @@ -23,7 +23,11 @@ @hidden="resetModal" @ok="handleOk" > - <p id="description">{{ $t("session.prepare.step.selection.mode.description.withIssueTracker.dialog.description") }}</p> + <p id="description"> + {{ + $t("session.prepare.step.selection.mode.description.withIssueTracker.dialog.description") + }} + </p> <form ref="form" @submit.stop.prevent="handleSubmit"> <b-form-group label="Verification code" @@ -125,7 +129,6 @@ export default Vue.extend({ </script> <style scoped> - #description { color: black; } @@ -139,5 +142,4 @@ export default Vue.extend({ background-color: var(--startButtonHovered); color: var(--text-primary-color); } - </style> diff --git a/frontend/src/components/StoryPointsComponent.vue b/frontend/src/components/StoryPointsComponent.vue index 3021b1cb1..c2d911505 100644 --- a/frontend/src/components/StoryPointsComponent.vue +++ b/frontend/src/components/StoryPointsComponent.vue @@ -23,9 +23,7 @@ export default Vue.extend({ </script> <style scoped> - #textDescription { color: var(--text-primary-color); } - </style> diff --git a/frontend/src/components/ThemeToggleComponent.vue b/frontend/src/components/ThemeToggleComponent.vue index ea992caa2..63c1b9eea 100644 --- a/frontend/src/components/ThemeToggleComponent.vue +++ b/frontend/src/components/ThemeToggleComponent.vue @@ -1,18 +1,10 @@ <template> <div> - <input - @change="toggleTheme" - id="checkbox" - type="checkbox" - class="switch-checkbox" - /> + <input id="checkbox" type="checkbox" class="switch-checkbox" @change="toggleTheme" /> <label for="checkbox" class="switch-label"> <span>🌙</span> <span>☀️</span> - <div - class="switch-toggle" - :class="{ 'switch-toggle-checked': userTheme === 'dark-theme' }" - /> + <div class="switch-toggle" :class="{ 'switch-toggle-checked': userTheme === 'dark-theme' }" /> </label> </div> </template> @@ -23,8 +15,8 @@ export default Vue.extend({ name: "ThemeToggleComponent", data() { return { - userTheme: "light-theme" - } + userTheme: "light-theme", + }; }, created() { if (localStorage.getItem("user-theme")) { @@ -44,13 +36,15 @@ export default Vue.extend({ localStorage.setItem("user-theme", theme); this.userTheme = theme; document.documentElement.className = theme; - window.dispatchEvent(new CustomEvent('user-theme-localstorage-changed', { - detail: { - storage: localStorage.getItem('user-theme') - } - })); + window.dispatchEvent( + new CustomEvent("user-theme-localstorage-changed", { + detail: { + storage: localStorage.getItem("user-theme"), + }, + }) + ); }, - } + }, }); </script> diff --git a/frontend/src/components/UserStories.vue b/frontend/src/components/UserStories.vue index ccf026010..f6a0fbcdd 100644 --- a/frontend/src/components/UserStories.vue +++ b/frontend/src/components/UserStories.vue @@ -6,24 +6,21 @@ <BIconSearch id="searchIcon"></BIconSearch> </b-input-group-prepend> <b-input - v-model="input" id="search" + v-model="input" type="text" :placeholder="$t('page.session.before.userStories.placeholder.searchUserStories')" @input="swapPriority" /> </b-input-group> </div> - <b-card-group - class="my-3" - id="userStoryBlock" - > + <b-card-group id="userStoryBlock" class="my-3"> <b-list-group-item v-for="(story, index) of userStories" + id="userStoryRow" :key="index" :active="index === selectedStoryIndex" class="w-100 p-1 d-flex justify-content-left" - id="userStoryRow" :style="index === selectedStoryIndex ? 'border-width: 3px;' : ''" @mouseover="hover = index" @mouseleave="hover = null" @@ -33,9 +30,12 @@ v-if="showEditButtons" :class="story.isActive ? 'selectedStory' : 'outlineColorStory'" size="sm" - @click="markUserStory(index); $event.target.blur();" + @click=" + markUserStory(index); + $event.target.blur(); + " > - <b-img :src="require('@/assets/ActiveUserStory.png')" id="userStoryPicture"/> + <b-img id="userStoryPicture" :src="require('@/assets/ActiveUserStory.png')" /> </b-button> <b-button @@ -48,19 +48,16 @@ </b-button> <b-form-input + id="userStoryTitles" v-model="story.title" class="mx-1 w-100 shadow-none" - id="userStoryTitles" readonly size="sm" :placeholder="$t('page.session.before.userStories.placeholder.userStoryTitle')" @blur="publishChanges" /> - <b-badge - id="badge" - class="p-2" - > + <b-badge id="badge" class="p-2"> {{ story.estimation == null ? "?" : story.estimation }} </b-badge> <b-button @@ -78,7 +75,10 @@ <b-button v-if="userStories.length < 1 && showEditButtons && !filterActive" class="w-100 mb-3 addButton" - @click="addUserStory(); $event.target.blur();" + @click=" + addUserStory(); + $event.target.blur(); + " > <b-icon-plus /> {{ $t("page.session.before.userStories.button.addFirstUserStory") }} @@ -95,7 +95,10 @@ <b-button v-if="userStories.length > 0 && showEditButtons && !filterActive" class="w-100 mb-3 addButton" - @click="addUserStory(); $event.target.blur();" + @click=" + addUserStory(); + $event.target.blur(); + " > <b-icon-plus /> {{ $t("page.session.before.userStories.button.addUserStory") }} @@ -204,8 +207,6 @@ export default Vue.extend({ </script> <style scoped> - - #search { border-radius: var(--element-size); padding-left: 45px; @@ -285,7 +286,7 @@ export default Vue.extend({ color: var(--text-primary-color); } -#userStoryRow{ +#userStoryRow { background-color: var(--textAreaColour); color: var(--text-primary-color); } @@ -301,14 +302,14 @@ export default Vue.extend({ background-color: transparent; color: var(--text-primary-color); font-size: large; - border: none + border: none; } #userStoryPicture { height: 30px; width: 30px; } -#badge{ +#badge { background-color: var(--joinButton); color: var(--text-primary-color); font-size: large; diff --git a/frontend/src/components/UserStoryComponent.vue b/frontend/src/components/UserStoryComponent.vue index 9d07e10d3..7386b58b7 100644 --- a/frontend/src/components/UserStoryComponent.vue +++ b/frontend/src/components/UserStoryComponent.vue @@ -21,9 +21,7 @@ export default Vue.extend({ }); </script> <style scoped> - .textDescription { color: var(--text-primary-color) !important; } - </style> diff --git a/frontend/src/components/UserStoryDescriptions.vue b/frontend/src/components/UserStoryDescriptions.vue index ccd8538ff..09d012ee7 100644 --- a/frontend/src/components/UserStoryDescriptions.vue +++ b/frontend/src/components/UserStoryDescriptions.vue @@ -48,14 +48,14 @@ @textValueChanged="(event) => valueChanged(idx, event)" /> </div> - <div v-if="!editDescription"> + <div v-if="!editDescription"> <b-form-textarea - id="textarea-auto-height-plaintext" - class="py-2" - plaintext - :value=userStories[idx].description - rows="15" - size="m" + id="textarea-auto-height-plaintext" + class="py-2" + plaintext + :value="userStories[idx].description" + rows="15" + size="m" /> </div> </b-list-group-item> @@ -122,7 +122,7 @@ export default Vue.extend({ }>; }, methods: { - valueChanged(idx, {markdown}) { + valueChanged(idx, { markdown }) { this.userStories[idx].description = markdown; this.publishChanges(idx); }, @@ -158,7 +158,6 @@ export default Vue.extend({ </script> <style scoped> - .description-box { background: transparent; padding: 0; @@ -168,13 +167,13 @@ export default Vue.extend({ .form-control { background-color: var(--textAreaColour); color: var(--text-primary-color); - border:none; + border: none; } .form-control:disabled { background-color: var(--textAreaColour); color: var(--text-primary-color); - border:none; + border: none; } .form-control:focus { diff --git a/frontend/src/components/actions/SessionCloseButton.vue b/frontend/src/components/actions/SessionCloseButton.vue index b34ddd153..29044e71f 100644 --- a/frontend/src/components/actions/SessionCloseButton.vue +++ b/frontend/src/components/actions/SessionCloseButton.vue @@ -1,13 +1,9 @@ <template> <div v-if="isPlanningStart" class="img-holderClose"> <div id="picture-holderClose"> - <b-img :src="require('@/assets/LeaveButton.png')" id="pandaPictureClose"/> + <b-img id="pandaPictureClose" :src="require('@/assets/LeaveButton.png')" /> </div> - <b-button - v-b-modal.close-session-modal - variant="danger" - class="button" - > + <b-button v-b-modal.close-session-modal variant="danger" class="button"> <b-icon-x /> {{ $t("page.session.during.estimation.buttons.finish") }} </b-button> @@ -63,7 +59,6 @@ export default Vue.extend({ }); </script> <style> - .description { color: black; } @@ -87,13 +82,13 @@ export default Vue.extend({ } .img-holderClose .button { - position: absolute !important; - text-align: left; - left: 13.5%; - bottom: 28%; - white-space: nowrap; - border-radius:var(--buttonShape); - max-height: 40px; + position: absolute !important; + text-align: left; + left: 13.5%; + bottom: 28%; + white-space: nowrap; + border-radius: var(--buttonShape); + max-height: 40px; } #picture-holderLeave { @@ -113,11 +108,11 @@ export default Vue.extend({ } .img-holderLeave .button { - position: absolute !important; - text-align: left; - max-height: 40px; - border-radius: var(--buttonShape); - bottom: 0px; - white-space: nowrap; + position: absolute !important; + text-align: left; + max-height: 40px; + border-radius: var(--buttonShape); + bottom: 0px; + white-space: nowrap; } </style> diff --git a/frontend/src/components/actions/SessionLeaveButton.vue b/frontend/src/components/actions/SessionLeaveButton.vue index 2783fb8c2..0ea50b953 100644 --- a/frontend/src/components/actions/SessionLeaveButton.vue +++ b/frontend/src/components/actions/SessionLeaveButton.vue @@ -1,7 +1,7 @@ <template> <div class="img-holderLeave mt-5"> <div id="picture-holderLeave"> - <b-img :src="require('@/assets/LeaveButton.png')" id="pandaPictureLeave"/> + <b-img id="pandaPictureLeave" :src="require('@/assets/LeaveButton.png')" /> </div> <b-button v-b-modal.close-session-modal diff --git a/frontend/src/components/actions/SessionStartButton.vue b/frontend/src/components/actions/SessionStartButton.vue index 7408dc1ec..9faa17942 100644 --- a/frontend/src/components/actions/SessionStartButton.vue +++ b/frontend/src/components/actions/SessionStartButton.vue @@ -31,8 +31,7 @@ export default Vue.extend({ </script> <style> - -#startButtonSessionPage{ +#startButtonSessionPage { background-color: var(--startButton); border-radius: 1rem; color: var(--text-primary-color); @@ -45,7 +44,6 @@ export default Vue.extend({ color: var(--text-primary-color); } - #startButtonSessionPage:disabled { background-color: var(--preparePageInActiveTab); border-radius: 1rem; @@ -57,5 +55,4 @@ export default Vue.extend({ border-radius: 1rem; color: var(--text-primary-color); } - </style> diff --git a/frontend/src/components/navigation/LocaleDropdown.vue b/frontend/src/components/navigation/LocaleDropdown.vue index 2f8e0f2d1..074aa41a4 100644 --- a/frontend/src/components/navigation/LocaleDropdown.vue +++ b/frontend/src/components/navigation/LocaleDropdown.vue @@ -12,8 +12,10 @@ @click="setLocale(key)" >{{ locale }}</b-dropdown-item > - <hr id="breakingLine"/> - <b-dropdown-item href="https://crowdin.com/project/diveni">{{ $t("general.licenses.translations")}}</b-dropdown-item> + <hr id="breakingLine" /> + <b-dropdown-item href="https://crowdin.com/project/diveni">{{ + $t("general.licenses.translations") + }}</b-dropdown-item> </b-nav-item-dropdown> </template> diff --git a/frontend/src/components/navigation/TopNavigationBar.vue b/frontend/src/components/navigation/TopNavigationBar.vue index 6e46a66c0..2d0e0fe12 100644 --- a/frontend/src/components/navigation/TopNavigationBar.vue +++ b/frontend/src/components/navigation/TopNavigationBar.vue @@ -1,25 +1,27 @@ <template> <b-navbar toggleable="md" class="top-navigation" fixed="top" sticky> <b-navbar-brand class="top-navigation__title" to="/"> - <b-img src="/img/icons/logo.svg" class="top-navigation__nav-logo"/> + <b-img src="/img/icons/logo.svg" class="top-navigation__nav-logo" /> {{ $t("page.landing.productTitle") }} </b-navbar-brand> - <theme-toggle-component/> + <theme-toggle-component /> <b-navbar-nav class="ml-auto"> <b-form> - <b-button :to="{ name: 'PrepareSessionPage' }" class="startButton px-2 mr-2">New Session</b-button> + <b-button :to="{ name: 'PrepareSessionPage' }" class="startButton px-2 mr-2" + >New Session</b-button + > </b-form> <b-form> <b-button :to="{ name: 'JoinPage' }" class="joinButton px-2 mr-2"> {{ $t("page.landing.meeting.join.buttons.start.label") }}</b-button - > + > </b-form> <b-form class="px-2 mr-2"> - <a href="https://github.com/Sybit-Education/Diveni" id="gitHubLink" target="_blank"> + <a id="gitHubLink" href="https://github.com/Sybit-Education/Diveni" target="_blank"> <BIconGithub id="gitHubLogo"></BIconGithub> </a> </b-form> - <locale-dropdown/> + <locale-dropdown /> </b-navbar-nav> </b-navbar> </template> @@ -32,12 +34,11 @@ import ThemeToggleComponent from "@/components/ThemeToggleComponent.vue"; export default Vue.extend({ name: "TopNavigationBar", - components: { LocaleDropdown, BIconGithub, ThemeToggleComponent } + components: { LocaleDropdown, BIconGithub, ThemeToggleComponent }, }); </script> <style> - /* TOP Navigation Bar */ .top-navigation { diff --git a/frontend/src/services/api.service.ts b/frontend/src/services/api.service.ts index 98e692285..d95efbd0c 100644 --- a/frontend/src/services/api.service.ts +++ b/frontend/src/services/api.service.ts @@ -61,7 +61,9 @@ class ApiService { } public async getUserStoriesFromProject(project): Promise<unknown> { - const response = await axios.get(`${constants.backendURL}/issue-tracker/projects/${project}/issues`); + const response = await axios.get( + `${constants.backendURL}/issue-tracker/projects/${project}/issues` + ); return response.data; } @@ -97,7 +99,8 @@ class ApiService { } public async getAllDiveniData() { - const response = (await axios.get(constants.backendURL + constants.getDiveniAnalytics)).data as { + const response = (await axios.get(constants.backendURL + constants.getDiveniAnalytics)) + .data as { amountOfAttendees: number; amountOfSessions: number; amountofAttendeesLastMonth: number; diff --git a/frontend/src/views/AboutPage.vue b/frontend/src/views/AboutPage.vue index 6257c4040..8787d3715 100644 --- a/frontend/src/views/AboutPage.vue +++ b/frontend/src/views/AboutPage.vue @@ -9,7 +9,10 @@ <h2 class="header">Open Source & Contribution</h2> <p> Diveni is open source and published under - <a href="https://github.com/Sybit-Education/Diveni/blob/main/LICENSE" target="_blank" class="links" + <a + href="https://github.com/Sybit-Education/Diveni/blob/main/LICENSE" + target="_blank" + class="links" >GNU Affero General Public License v3.0</a >. </p> @@ -18,10 +21,19 @@ <a href="https://github.com/Sybit-Education/Diveni" target="_blank" class="links">GitHub</a>: </p> <ul> - <li><a href="https://github.com/Sybit-Education/Diveni/" target="_blank" class="links">Code</a></li> - <li><a href="https://github.com/Sybit-Education/Diveni/issues" target="_blank" class="links">Issues</a></li> <li> - <a href="https://github.com/Sybit-Education/Diveni/discussions" target="_blank" class="links" + <a href="https://github.com/Sybit-Education/Diveni/" target="_blank" class="links">Code</a> + </li> + <li> + <a href="https://github.com/Sybit-Education/Diveni/issues" target="_blank" class="links" + >Issues</a + > + </li> + <li> + <a + href="https://github.com/Sybit-Education/Diveni/discussions" + target="_blank" + class="links" >Discussions</a > </li> @@ -41,7 +53,10 @@ <h2 class="header">License</h2> <p> Diveni is licensed under - <a href="https://github.com/Sybit-Education/Diveni/blob/main/LICENSE" target="_blank" class="links" + <a + href="https://github.com/Sybit-Education/Diveni/blob/main/LICENSE" + target="_blank" + class="links" >AGPL-3.0 license</a >. </p> @@ -74,7 +89,6 @@ export default Vue.extend({ </script> <style scoped> - .links { color: var(--linkColor); } @@ -82,5 +96,4 @@ export default Vue.extend({ .header { color: var(--text-primary-color); } - </style> diff --git a/frontend/src/views/JoinPage.vue b/frontend/src/views/JoinPage.vue index 94df1b46a..08af9b3c0 100644 --- a/frontend/src/views/JoinPage.vue +++ b/frontend/src/views/JoinPage.vue @@ -3,7 +3,7 @@ <h1 id="heading"> {{ $t("page.join.title") }} <!-- <b-img :src="require('@/assets/ControllerJoinPage.png')" id="controller"/> --> - <BIconController id="controller"/> + <BIconController id="controller" /> </h1> <join-page-card :color="hexColor" @@ -27,8 +27,8 @@ export default Vue.extend({ name: "JoinPage", components: { JoinPageCard, - BIconController -}, + BIconController, + }, data() { return { hexColor: Constants.getRandomPastelColor(), @@ -88,7 +88,7 @@ export default Vue.extend({ const sessionConfig = result.data as { set: Array<string>; timerSeconds: number; - userStories: Array<{ title: string; description: string; estimation: string | null;}>; + userStories: Array<{ title: string; description: string; estimation: string | null }>; userStoryMode: string; }; this.voteSet = JSON.stringify(sessionConfig.set); @@ -171,7 +171,6 @@ export default Vue.extend({ height: 49px; width: 78px; transform: rotate(315deg); - margin-left: 1% + margin-left: 1%; } - -</style> +</style> diff --git a/frontend/src/views/LandingPage.vue b/frontend/src/views/LandingPage.vue index 6505926ad..ff99213e2 100644 --- a/frontend/src/views/LandingPage.vue +++ b/frontend/src/views/LandingPage.vue @@ -2,7 +2,7 @@ <div id="landing-page"> <b-container fluid class="teaser"> <b-container> - <b-jumbotron header="DIVENI" lead="Instant free and easy remote Planning Poker"/> + <b-jumbotron header="DIVENI" lead="Instant free and easy remote Planning Poker" /> </b-container> </b-container> <b-container class="my-5"> @@ -31,9 +31,7 @@ /> </b-card-group> </b-container> - <AnalyticsDataComponent ref="dataComponent"> - - </AnalyticsDataComponent> + <AnalyticsDataComponent ref="dataComponent"> </AnalyticsDataComponent> <b-container class="py-5"> <div class="parent py-5 px-5"> <div class="background py-5"></div> @@ -42,18 +40,12 @@ <b-card-group deck class="py-5"> <b-card class="pictureCard"> <b-card-text> - <b-img - :src="require(`@/assets/SetUpSession.png`)" - class="landingPagePictures" - /> + <b-img :src="require(`@/assets/SetUpSession.png`)" class="landingPagePictures" /> </b-card-text> </b-card> <b-card class="pictureCard"> <b-card-text> - <b-img - :src="require(`@/assets/InviteYourTeam.png`)" - class="landingPagePictures" - /> + <b-img :src="require(`@/assets/InviteYourTeam.png`)" class="landingPagePictures" /> </b-card-text> </b-card> <b-card class="pictureCard"> @@ -70,7 +62,7 @@ <b-card-text v-html="$t('page.instruction.setUpSession')"></b-card-text> </b-card> <b-card class="aboutDiveni" title="Invite your Team"> - <b-card-text v-html="$t('page.instruction.inviteYourTeam')"></b-card-text> + <b-card-text v-html="$t('page.instruction.inviteYourTeam')"></b-card-text> </b-card> <b-card class="aboutDiveni" title="Estimate User Stories"> <b-card-text v-html="$t('page.instruction.estimateUserStories')"></b-card-text> @@ -82,7 +74,7 @@ <p>DIVENI was initially developed by students of HTWG Constance and is open source now.</p> <p> More information could be found in the - <a href="https://docs.diveni.io/" id="link">documentation</a>. + <a id="link" href="https://docs.diveni.io/">documentation</a>. </p> </b-container> </div> @@ -141,7 +133,7 @@ export default Vue.extend({ sessionState: string; members: Array<string>; }; - this.sessionWrapper = {session}; + this.sessionWrapper = { session }; } catch (e) { console.error(`got error: ${e}`); window.localStorage.removeItem("adminCookie"); @@ -149,10 +141,10 @@ export default Vue.extend({ } }, goToJoinPage() { - this.$router.push({name: "JoinPage"}); + this.$router.push({ name: "JoinPage" }); }, goToPrepareSessionPage() { - this.$router.push({name: "PrepareSessionPage"}); + this.$router.push({ name: "PrepareSessionPage" }); }, goToSessionPage() { this.$store.commit("setUserStories", { @@ -176,7 +168,6 @@ export default Vue.extend({ </script> <style scoped> - #link { color: var(--linkColor); } @@ -187,7 +178,7 @@ export default Vue.extend({ .teaser { background: linear-gradient(var(--background-color-primary), var(--pictureGradientEnd)), - url("~@/assets/img/diveni-background.png"); + url("~@/assets/img/diveni-background.png"); background-size: cover; background-repeat: no-repeat; } @@ -204,7 +195,7 @@ export default Vue.extend({ } .card-title { - color: var(--text-primary-color) + color: var(--text-primary-color); } .parent { @@ -213,7 +204,6 @@ export default Vue.extend({ width: 100%; } - .background { position: absolute; top: 0; diff --git a/frontend/src/views/MemberVotePage.vue b/frontend/src/views/MemberVotePage.vue index e4c05e9fa..991933f4d 100644 --- a/frontend/src/views/MemberVotePage.vue +++ b/frontend/src/views/MemberVotePage.vue @@ -22,7 +22,7 @@ :pause-timer="estimateFinished || pauseSession" :duration="timerCountdownNumber" :member="memberID" - :votingStarted="isStartVoting" + :voting-started="isStartVoting" /> </b-col> </b-row> @@ -329,7 +329,6 @@ export default Vue.extend({ <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> - #header { color: var(--text-primary-color); } diff --git a/frontend/src/views/PrepareSessionPage.vue b/frontend/src/views/PrepareSessionPage.vue index 38315d3c3..a1cf82298 100644 --- a/frontend/src/views/PrepareSessionPage.vue +++ b/frontend/src/views/PrepareSessionPage.vue @@ -4,18 +4,14 @@ {{ $t("session.prepare.title") }} </h1> - <h4 class="mt-3"> - <b-img + <h4 class="mt-3"> + <b-img v-if="theme === 'light-theme'" :src="require('@/assets/preparePage/P1.png')" class="numberPictures" - /> - <b-img - v-else - :src="require('@/assets/preparePage/P1D.png')" - class="numberPictures" - /> - {{ $t("session.prepare.step.selection.mode.title") }} + /> + <b-img v-else :src="require('@/assets/preparePage/P1D.png')" class="numberPictures" /> + {{ $t("session.prepare.step.selection.mode.title") }} </h4> <b-tabs v-model="tabIndex" content-class="mt-3" fill> <b-tab @@ -37,7 +33,15 @@ accept="text/csv" @change="importStory($event.target.files)" /> - <b-button block elevation="2" class="importUserStoryButton" @click="openFileUploader(); $event.target.blur();"> + <b-button + block + elevation="2" + class="importUserStoryButton" + @click=" + openFileUploader(); + $event.target.blur(); + " + > {{ $t("session.prepare.step.selection.mode.description.withUS.importButton") }} </b-button> </b-tab> @@ -54,12 +58,8 @@ v-if="theme === 'light-theme'" :src="require('@/assets/preparePage/P2.png')" class="numberPictures" - /> - <b-img - v-else - :src="require('@/assets/preparePage/P2D.png')" - class="numberPictures" - /> + /> + <b-img v-else :src="require('@/assets/preparePage/P2D.png')" class="numberPictures" /> {{ $t("session.prepare.step.selection.cardSet.title") }} </h4> <card-set-component @@ -72,25 +72,37 @@ v-if="theme === 'light-theme'" :src="require('@/assets/preparePage/P3.png')" class="numberPictures" - /> - <b-img - v-else - :src="require('@/assets/preparePage/P3D.png')" - class="numberPictures" - /> + /> + <b-img v-else :src="require('@/assets/preparePage/P3D.png')" class="numberPictures" /> {{ $t("session.prepare.step.selection.time.title") }} </h4> <b-row class="mt-3 text-center"> <b-col> - <b-button class="optionButtons" @click="setTimerDown(); $event.target.blur();"> - </b-button> + <b-button + class="optionButtons" + @click=" + setTimerDown(); + $event.target.blur(); + " + > + - + </b-button> </b-col> - <b-col class="text-center" id="timerCol" cols="auto"> + <b-col id="timerCol" class="text-center" cols="auto"> <h4 id="timerBackground"> {{ timer == 0 ? "∞" : formatTimer }} </h4> </b-col> <b-col> - <b-button class="optionButtons" @click="setTimerUp(); $event.target.blur();"> +</b-button> + <b-button + class="optionButtons" + @click=" + setTimerUp(); + $event.target.blur(); + " + > + +</b-button + > </b-col> </b-row> <h4 class="mt-3"> @@ -98,12 +110,8 @@ v-if="theme === 'light-theme'" :src="require('@/assets/preparePage/P4.png')" class="numberPictures" - /> - <b-img - v-else - :src="require('@/assets/preparePage/P4D.png')" - class="numberPictures" - /> + /> + <b-img v-else :src="require('@/assets/preparePage/P4D.png')" class="numberPictures" /> {{ $t("session.prepare.step.selection.password.title") }} </h4> <b-row class="mt-3"> @@ -157,7 +165,7 @@ export default Vue.extend({ warningWhenUnderZero: "", tabIndex: 0, isIssueTrackerEnabled: false, - theme: localStorage.getItem('user-theme'), + theme: localStorage.getItem("user-theme"), }; }, computed: { @@ -188,9 +196,9 @@ export default Vue.extend({ this.tabIndex = isNaN(parsedTabIndex) ? 0 : parsedTabIndex; }, mounted() { - window.addEventListener('user-theme-localstorage-changed', (event) => { - const customEvent = event as CustomEvent; - this.theme = customEvent.detail.storage; + window.addEventListener("user-theme-localstorage-changed", (event) => { + const customEvent = event as CustomEvent; + this.theme = customEvent.detail.storage; }); apiService.getIssueTrackerConfig().then((result) => { this.isIssueTrackerEnabled = @@ -334,7 +342,6 @@ export default Vue.extend({ </script> <style scoped> - #timerBackground { background-color: var(--preparePageTimerBackground); } @@ -358,13 +365,13 @@ export default Vue.extend({ color: var(--text-primary-color); } -.importUserStoryButton:focus{ +.importUserStoryButton:focus { background-color: var(--startButtonHovered) !important; color: var(--text-primary-color) !important; } .optionButtons { - color:var(--text-primary-color); + color: var(--text-primary-color); border-color: var(--text-primary-color); background-color: transparent; font-size: xx-large; @@ -372,12 +379,12 @@ export default Vue.extend({ } .optionButtons:hover { - color:var(--text-primary-color) !important; + color: var(--text-primary-color) !important; border-color: var(--text-primary-color); background-color: var(--preparePageInActiveTabHover); } .optionButtons:focus { - color:var(--text-primary-color); + color: var(--text-primary-color); border-color: var(--text-primary-color); background-color: transparent !important; outline: none; @@ -409,7 +416,7 @@ export default Vue.extend({ color: var(--text-primary-color); } -.numberPictures{ +.numberPictures { height: 45px; width: 45px; } diff --git a/frontend/src/views/ResultPage.vue b/frontend/src/views/ResultPage.vue index a46b5e702..587c4fe52 100644 --- a/frontend/src/views/ResultPage.vue +++ b/frontend/src/views/ResultPage.vue @@ -7,14 +7,18 @@ {{ $t("page.results.noUserStories") }} </div> <b-list-group v-else id="results"> - <b-list-group-item v-for="(story, index) of userStories" :key="index" class="text-center stories"> + <b-list-group-item + v-for="(story, index) of userStories" + :key="index" + class="text-center stories" + > {{ story.title ? story.title : "No title ..." }} - <b-button class="mx-2 estimationButtons" pill > + <b-button class="mx-2 estimationButtons" pill> {{ story.estimation ? story.estimation : "?" }} </b-button> </b-list-group-item> </b-list-group> - <b-row class=" text-center centerItems"> + <b-row class="text-center centerItems"> <b-col> <b-button id="downloadButton" @@ -23,11 +27,7 @@ > {{ $t("page.results.button.download") }} </b-button> - <b-button - id="goBackHomeButton" - class="mx-2" - @click="goHome()" - > + <b-button id="goBackHomeButton" class="mx-2" @click="goHome()"> {{ $t("page.results.button.home") }} </b-button> </b-col> @@ -73,7 +73,6 @@ export default Vue.extend({ <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> - .centerItems { display: flex; justify-content: center; @@ -82,7 +81,7 @@ export default Vue.extend({ min-height: 10vh; } -.estimationButtons { +.estimationButtons { background-color: var(--startButton); color: var(--text-primary-color); } @@ -92,11 +91,11 @@ export default Vue.extend({ color: var(--text-primary-color); } -.estimationButtons:focus{ +.estimationButtons:focus { background-color: var(--startButtonHovered) !important; color: var(--text-primary-color); } -.estimationButtons:active{ +.estimationButtons:active { background-color: var(--startButtonHovered) !important; } diff --git a/frontend/src/views/SessionPage.vue b/frontend/src/views/SessionPage.vue index 978412480..ce7f5f08d 100644 --- a/frontend/src/views/SessionPage.vue +++ b/frontend/src/views/SessionPage.vue @@ -10,14 +10,14 @@ }} </h1> </b-col> - <b-col cols="auto" > + <b-col cols="auto"> <copy-session-id-popup v-if="planningStart" class="float-end" :session-id="session_sessionID" /> </b-col> - <b-col cols="auto" id="sessionCloseCol"> + <b-col id="sessionCloseCol" cols="auto"> <session-close-button :is-planning-start="planningStart" :user-story-mode="session_userStoryMode" @@ -27,7 +27,7 @@ <div v-if="!planningStart"> <div id="catGifDiv"> - <b-img :src="require('@/assets/LoadingCat.gif')" class="catGif"/> + <b-img :src="require('@/assets/LoadingCat.gif')" class="catGif" /> </div> <copy-session-id-popup :text-before-session-i-d="$t('page.session.before.text.beforeID')" @@ -36,7 +36,6 @@ class="copy-popup" /> - <b-row class="d-flex justify-content-center overflow-auto kick-user"> <kick-user-wrapper v-for="member of members" @@ -59,14 +58,21 @@ <b-button class="mr-3 optionButton" variant="outline-dark" - @click="sendRestartMessage(); $event.target.blur();" + @click=" + sendRestartMessage(); + $event.target.blur(); + " > <BIconArrowClockwise class="bIcons"></BIconArrowClockwise> {{ $t("page.session.during.estimation.buttons.new") }} </b-button> - <b-button class="mr-3 optionButton" + <b-button + class="mr-3 optionButton" variant="outline-dark" - @click="sendVotingFinishedMessage(); $event.target.blur();" + @click=" + sendVotingFinishedMessage(); + $event.target.blur(); + " > <BIconBarChartFill class="bIcons"></BIconBarChartFill> {{ $t("page.session.during.estimation.buttons.result") }} @@ -77,7 +83,7 @@ :start-timestamp="timerTimestamp" :pause-timer="estimateFinished" :duration="timerCountdownNumber" - :votingStarted="planningStart" + :voting-started="planningStart" @timerFinished="sendVotingFinishedMessage" /> </b-col> @@ -103,9 +109,7 @@ {{ membersEstimated.length }} / {{ membersPending.length + membersEstimated.length }} </h4> - <b-row - class="my-1 d-flex justify-content-center flex-wrap overflow-auto kick-user" - > + <b-row class="my-1 d-flex justify-content-center flex-wrap overflow-auto kick-user"> <kick-user-wrapper v-for="member of estimateFinished ? members : membersEstimated" :key="member.memberID" @@ -121,7 +125,7 @@ </div> <b-row v-if="session_userStoryMode !== 'NO_US'" class="mt-4"> <b-col> - <user-story-sum-component/> + <user-story-sum-component /> </b-col> </b-row> <b-row v-if="session_userStoryMode !== 'NO_US'"> @@ -129,7 +133,10 @@ <div v-if="session_userStoryMode === 'US_JIRA'" class="refreshUserstories"> <b-button class="w-100 mb-3 refreshButton" - @click="refreshUserStories(); $event.target.blur();" + @click=" + refreshUserStories(); + $event.target.blur(); + " > {{ $t("page.session.before.refreshStories") }} </b-button> @@ -148,7 +155,10 @@ <div v-if="session_userStoryMode === 'US_JIRA'" class="refreshUserstories"> <b-button class="w-100 mb-3 refreshButton" - @click="refreshUserStories(); $event.target.blur();" + @click=" + refreshUserStories(); + $event.target.blur(); + " > {{ $t("page.session.before.refreshStories") }} </b-button> @@ -219,8 +229,8 @@ export default Vue.extend({ UserStoryDescriptions, NotifyHostComponent, BIconArrowClockwise, - BIconBarChartFill -}, + BIconBarChartFill, + }, props: { adminID: { type: String, required: false }, sessionID: { type: String, required: false }, @@ -320,7 +330,7 @@ export default Vue.extend({ } }, membersEstimated() { - if (this.membersPending.length === 0 && this.membersEstimated.length > 0) { + if (this.membersPending.length === 0 && this.membersEstimated.length > 0) { this.estimateFinished = true; } }, @@ -467,7 +477,9 @@ export default Vue.extend({ } } if (response.status === 200) { - this.$toast.success(this.$t("session.notification.messages.issueTrackerSynchronizeSuccess")); + this.$toast.success( + this.$t("session.notification.messages.issueTrackerSynchronizeSuccess") + ); } else { this.$toast.error(this.$t("session.notification.messages.issueTrackerSynchronizeFailed")); } @@ -519,7 +531,9 @@ export default Vue.extend({ } } if (response.status === 200) { - this.$toast.success(this.$t("session.notification.messages.issueTrackerSynchronizeSuccess")); + this.$toast.success( + this.$t("session.notification.messages.issueTrackerSynchronizeSuccess") + ); } else { this.$toast.error(this.$t("session.notification.messages.issueTrackerSynchronizeFailed")); } @@ -581,7 +595,6 @@ export default Vue.extend({ </script> <style scoped> - .optionButtonCol { margin-top: auto; margin-bottom: auto; @@ -614,7 +627,7 @@ export default Vue.extend({ width: 40px; } -.optionButton{ +.optionButton { background-color: var(--textAreaColour); color: var(--text-primary-color); border-color: black; @@ -623,14 +636,14 @@ export default Vue.extend({ align-items: center; } -.optionButton:hover{ +.optionButton:hover { background-color: var(--textAreaColourHovered); color: var(--text-primary-color); } -.optionButton:focus{ +.optionButton:focus { background-color: var(--textAreaColourHovered) !important; - color: var(--text-primary-color) !important; + color: var(--text-primary-color) !important; } .refreshButton {