From e50d5c050dfc8dc2ff7931c3a05f22c024a70e31 Mon Sep 17 00:00:00 2001 From: vekaste <vekaste@stud.ntnu.no> Date: Thu, 2 May 2024 09:08:27 +0200 Subject: [PATCH] feat: Minor changes to saving goal roadmap --- .../SavingGoalRoadmap.vue | 68 +++++++++++++++++-- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/src/components/SavingGoalComponents/SavingGoalRoadmap.vue b/src/components/SavingGoalComponents/SavingGoalRoadmap.vue index 0f31c09..65bbfb8 100644 --- a/src/components/SavingGoalComponents/SavingGoalRoadmap.vue +++ b/src/components/SavingGoalComponents/SavingGoalRoadmap.vue @@ -28,12 +28,12 @@ export default { roadmapSelected: true as boolean, statsSelected: false as boolean, chartData: { - labels: [1, 2, 3, 4, 5, 6, '7'], + labels: ["start"], datasets: [ { label: this.selectedGoal.name, backgroundColor: '#003A58', - data: [11, 24, 30, 47, 53, 62, 79] + data: [0] } ] }, @@ -60,6 +60,7 @@ export default { this.calculateSavedSoFar() this.onLoadDisableChecks(this.selectedGoal) this.onLoadAddDataToGraph(this.selectedGoal) + console.log() }, 500); }, computed: { @@ -242,6 +243,36 @@ export default { } } }) + }, + + formatDate(date: string) { + const date1 = new Date(date); + return date1.toISOString().split('T')[0] + }, + + calculateSavedSoFarPerChallengeInPercent(challenge: ChallengeDTO) { + let savedSoFarOnChallenge = 0 + let targetAmount = 1 + challenge.progressList?.forEach(progress => { + if(progress.amount) { + savedSoFarOnChallenge += progress.amount + } + }) + if(challenge.amount) { + targetAmount = challenge.amount + } + + return (savedSoFarOnChallenge / targetAmount) * 100 + }, + + calculateSavedSoFarPerChallenge(challenge: ChallengeDTO) { + let savedSoFar = 0 + challenge.progressList?.forEach(progress => { + if(progress.amount) { + savedSoFar += progress.amount + } + }) + return savedSoFar } }, }; @@ -292,7 +323,7 @@ export default { </div> <br> <div class="progress"> - <div class="progress-bar" role="progressbar" :style="{ width: challenge.percentFinished + '%' }" :aria-valuenow="challenge.percentFinished" aria-valuemin="0" aria-valuemax="100"></div> + <div class="progress-bar" role="progressbar" :style="{ width: calculateSavedSoFarPerChallengeInPercent(challenge) + '%' }" :aria-valuenow="calculateSavedSoFarPerChallengeInPercent(challenge)" aria-valuemin="0" aria-valuemax="100">{{ calculateSavedSoFarPerChallenge(challenge)}} Kr</div> </div> <br> <div class="checkbox-row"> @@ -308,9 +339,33 @@ export default { </ul> </div> <div v-else> - <h3 style="font-weight: 600;">Du har så langt spart {{ savedSoFar }} kr</h3> - <h3 style="font-weight: 600;">Ditt penge mål er: {{selectedGoal.targetAmount}} kr</h3> - <h3 style="font-weight: 600;">Utfordringene i denne sparestien vil spare deg {{ calculateTotalAmountFromChallenges() }} kr</h3> + + <div class="row"> + <div class="col-sm-3"> + <div class="card-box tilebox-one"><i class="icon-layers float-right text-muted"></i> + <h6 class="text-muted text-uppercase mt-0">Du ønsker å spare</h6> + <h2 class="" data-plugin="counterup">Kr {{ selectedGoal.targetAmount }}</h2></div> + </div> + + <div class="col-sm-3"> + <div class="card-box tilebox-one"><i class="icon-rocket float-right text-muted"></i> + <h6 class="text-muted text-uppercase mt-0">Du kan spare</h6> + <h2 class="" data-plugin="counterup">Kr {{ calculateTotalAmountFromChallenges() }}</h2></div> + </div> + + <div class="col-sm-3"> + <div class="card-box tilebox-one"><i class="icon-paypal float-right text-muted"></i> + <h6 class="text-muted text-uppercase mt-0">Du har spart</h6> + <h2 class="">Kr <span data-plugin="counterup">{{ savedSoFar }}</span></h2></div> + </div> + + <div class="col-sm-3"> + <div class="card-box tilebox-one"><i class="icon-rocket float-right text-muted"></i> + <h6 class="text-muted text-uppercase mt-0">Sparemålet ender </h6> + <h2 class="" data-plugin="counterup">{{ formatDate(selectedGoal.targetDate) }}</h2></div> + </div> + </div> + <br> <Line ref="chart" :data="chartData" :options="chartOptions" /> </div> </div> @@ -648,4 +703,5 @@ export default { flex: 0 0 calc(25% - 10px); /* 20% width for each checkbox, adjust margin accordingly */ margin-right: 10px; /* Adjust as needed */ } + </style> \ No newline at end of file -- GitLab