diff --git a/client/components/stats/YearInReview.vue b/client/components/stats/YearInReview.vue index 8564576b..54f0e65e 100644 --- a/client/components/stats/YearInReview.vue +++ b/client/components/stats/YearInReview.vue @@ -132,6 +132,8 @@ export default { ctx.restore() } + const twoColumnWidth = 210 + ctx.globalAlpha = 1 ctx.textBaseline = 'middle' @@ -150,12 +152,12 @@ export default { // Top text addText('audiobookshelf', '28px', 'normal', tanColor, '0px', 65, 28) - addText(`${this.year} ${this.$strings.StatsYearInReview}`, '18px', 'bold', 'white', '1px', 65, 51) + addText(`${this.year} ${this.$strings.StatsYearInReview}`, '18px', 'bold', 'white', '1px', 65, 51,) // Top left box createRoundedRect(50, 100, 340, 160) addText(this.yearStats.numBooksFinished, '64px', 'bold', 'white', '0px', 160, 165) - addText(this.$strings.StatsBooksFinished, '28px', 'normal', tanColor, '0px', 160, 210) + addText(this.$strings.StatsBooksFinished, '28px', 'normal', tanColor, '0px', 160, 210, twoColumnWidth) const readIconPath = new Path2D() readIconPath.addPath(new Path2D('M19 1H5c-1.1 0-1.99.9-1.99 2L3 15.93c0 .69.35 1.3.88 1.66L12 23l8.11-5.41c.53-.36.88-.97.88-1.66L21 3c0-1.1-.9-2-2-2zm-9 15l-5-5 1.41-1.41L10 13.17l7.59-7.59L19 7l-9 9z'), { a: 2, d: 2, e: 100, f: 160 }) ctx.fillStyle = '#ffffff' @@ -164,40 +166,40 @@ export default { // Box top right createRoundedRect(410, 100, 340, 160) addText(this.$elapsedPrettyExtended(this.yearStats.totalListeningTime, true, false), '40px', 'bold', 'white', '0px', 500, 165) - addText(this.$strings.StatsSpentListening, '28px', 'normal', tanColor, '0px', 500, 205) + addText(this.$strings.StatsSpentListening, '28px', 'normal', tanColor, '0px', 500, 205, twoColumnWidth) addIcon('watch_later', 'white', '52px', 440, 180) // Box bottom left createRoundedRect(50, 280, 340, 160) addText(this.yearStats.totalListeningSessions, '64px', 'bold', 'white', '0px', 160, 345) - addText(this.$strings.StatsSessions, '28px', 'normal', tanColor, '1px', 160, 390) + addText(this.$strings.StatsSessions, '28px', 'normal', tanColor, '1px', 160, 390, twoColumnWidth) addIcon('headphones', 'white', '52px', 95, 360) // Box bottom right createRoundedRect(410, 280, 340, 160) addText(this.yearStats.numBooksListened, '64px', 'bold', 'white', '0px', 500, 345) - addText(this.$strings.StatsBooksListenedTo, '28px', 'normal', tanColor, '0px', 500, 390) + addText(this.$strings.StatsBooksListenedTo, '28px', 'normal', tanColor, '0px', 500, 390, twoColumnWidth) addIcon('local_library', 'white', '52px', 440, 360) if (!this.variant) { // Text stats const topNarrator = this.yearStats.mostListenedNarrator if (topNarrator) { - addText(this.$strings.StatsTopNarrator, '24px', 'normal', tanColor, '1px', 70, 520) + addText(this.$strings.StatsTopNarrator, '24px', 'normal', tanColor, '1px', 70, 520, 330) addText(topNarrator.name, '36px', 'bolder', 'white', '0px', 70, 564, 330) addText(this.$elapsedPrettyExtended(topNarrator.time, true, false), '24px', 'lighter', 'white', '1px', 70, 599) } const topGenre = this.yearStats.topGenres[0] if (topGenre) { - addText(this.$strings.StatsTopGenre, '24px', 'normal', tanColor, '1px', 430, 520) + addText(this.$strings.StatsTopGenre, '24px', 'normal', tanColor, '1px', 430, 520, 330) addText(topGenre.genre, '36px', 'bolder', 'white', '0px', 430, 564, 330) addText(this.$elapsedPrettyExtended(topGenre.time, true, false), '24px', 'lighter', 'white', '1px', 430, 599) } const topAuthor = this.yearStats.topAuthors[0] if (topAuthor) { - addText(this.$strings.StatsTopAuthor, '24px', 'normal', tanColor, '1px', 70, 670) + addText(this.$strings.StatsTopAuthor, '24px', 'normal', tanColor, '1px', 70, 670, 330) addText(topAuthor.name, '36px', 'bolder', 'white', '0px', 70, 714, 330) addText(this.$elapsedPrettyExtended(topAuthor.time, true, false), '24px', 'lighter', 'white', '1px', 70, 749) } @@ -205,7 +207,7 @@ export default { if (this.yearStats.mostListenedMonth?.time) { const jsdate = new Date(this.year, this.yearStats.mostListenedMonth.month, 1) const monthName = this.$formatJsDate(jsdate, 'LLLL') - addText(this.$strings.StatsTopMonth, '24px', 'normal', tanColor, '1px', 430, 670) + addText(this.$strings.StatsTopMonth, '24px', 'normal', tanColor, '1px', 430, 670, 330) addText(monthName, '36px', 'bolder', 'white', '0px', 430, 714, 330) addText(this.$elapsedPrettyExtended(this.yearStats.mostListenedMonth.time, true, false), '24px', 'lighter', 'white', '1px', 430, 749) } diff --git a/client/components/stats/YearInReviewServer.vue b/client/components/stats/YearInReviewServer.vue index 123a3071..9843a64d 100644 --- a/client/components/stats/YearInReviewServer.vue +++ b/client/components/stats/YearInReviewServer.vue @@ -123,6 +123,8 @@ export default { ctx.restore() } + const threeColumnTextWidth = 200 + ctx.globalAlpha = 1 ctx.textBaseline = 'middle' @@ -147,17 +149,17 @@ export default { createRoundedRect(40, 100, 230, 100) ctx.textAlign = 'center' addText(this.yearStats.numBooksAdded, '48px', 'bold', 'white', '0px', 155, 140) - addText(this.$strings.StatsBooksAdded, '18px', 'normal', tanColor, '0px', 155, 170) + addText(this.$strings.StatsBooksAdded, '18px', 'normal', tanColor, '0px', 155, 170, threeColumnTextWidth) // Box top right createRoundedRect(285, 100, 230, 100) addText(this.yearStats.numAuthorsAdded, '48px', 'bold', 'white', '0px', 400, 140) - addText(this.$strings.StatsAuthorsAdded, '18px', 'normal', tanColor, '0px', 400, 170) + addText(this.$strings.StatsAuthorsAdded, '18px', 'normal', tanColor, '0px', 400, 170, threeColumnTextWidth) // Box bottom left createRoundedRect(530, 100, 230, 100) addText(this.yearStats.numListeningSessions, '48px', 'bold', 'white', '0px', 645, 140) - addText(this.$strings.StatsSessions, '18px', 'normal', tanColor, '1px', 645, 170) + addText(this.$strings.StatsSessions, '18px', 'normal', tanColor, '1px', 645, 170, threeColumnTextWidth) // Text stats if (this.yearStats.totalBooksAddedSize) { @@ -187,7 +189,7 @@ export default { // Text stats ctx.textAlign = 'left' if (this.yearStats.topAuthors.length) { - addText(this.$strings.StatsTopAuthors, '24px', 'normal', tanColor, '1px', 70, 549) + addText(this.$strings.StatsTopAuthors, '24px', 'normal', tanColor, '1px', 70, 549, 330) for (let i = 0; i < this.yearStats.topAuthors.length; i++) { addText(this.yearStats.topAuthors[i].name, '36px', 'bolder', 'white', '0px', 70, 609 + i * 60, 330) } @@ -203,7 +205,7 @@ export default { // Text stats ctx.textAlign = 'left' if (this.yearStats.topAuthors.length) { - addText(this.$strings.StatsTopAuthors, '24px', 'normal', tanColor, '1px', 70, 549) + addText(this.$strings.StatsTopAuthors, '24px', 'normal', tanColor, '1px', 70, 549, 330) for (let i = 0; i < this.yearStats.topAuthors.length; i++) { addText(this.yearStats.topAuthors[i].name, '36px', 'bolder', 'white', '0px', 70, 609 + i * 60, 330) } diff --git a/client/components/stats/YearInReviewShort.vue b/client/components/stats/YearInReviewShort.vue index 9bcd8735..8a87e224 100644 --- a/client/components/stats/YearInReviewShort.vue +++ b/client/components/stats/YearInReviewShort.vue @@ -113,6 +113,8 @@ export default { ctx.restore() } + const twoColumnWidth = 180 + ctx.globalAlpha = 1 ctx.textBaseline = 'middle' @@ -136,7 +138,7 @@ export default { // Top left box createRoundedRect(15, 75, 280, 110) addText(this.yearStats.numBooksFinished, '48px', 'bold', 'white', '0px', 105, 120) - addText(this.$strings.StatsBooksFinished, '20px', 'normal', tanColor, '0px', 105, 155) + addText(this.$strings.StatsBooksFinished, '20px', 'normal', tanColor, '0px', 105, 155, twoColumnWidth) const readIconPath = new Path2D() readIconPath.addPath(new Path2D('M19 1H5c-1.1 0-1.99.9-1.99 2L3 15.93c0 .69.35 1.3.88 1.66L12 23l8.11-5.41c.53-.36.88-.97.88-1.66L21 3c0-1.1-.9-2-2-2zm-9 15l-5-5 1.41-1.41L10 13.17l7.59-7.59L19 7l-9 9z'), { a: 1.5, d: 1.5, e: 55, f: 115 }) ctx.fillStyle = '#ffffff' @@ -144,7 +146,7 @@ export default { createRoundedRect(305, 75, 280, 110) addText(this.yearStats.numBooksListened, '48px', 'bold', 'white', '0px', 400, 120) - addText(this.$strings.StatsBooksListenedTo, '20px', 'normal', tanColor, '0px', 400, 155) + addText(this.$strings.StatsBooksListenedTo, '20px', 'normal', tanColor, '0px', 400, 155, twoColumnWidth) addIcon('local_library', 'white', '42px', 345, 130) this.canvas = canvas diff --git a/client/strings/en-us.json b/client/strings/en-us.json index b6e5f651..a8740b14 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -780,7 +780,6 @@ "StatsCollectionGrewTo": "Your book collection grew to…", "StatsSessions": "sessions", "StatsSpentListening": "spent listening", - "StatsTotalDuration": "With a total duration of…", "StatsTopAuthor": "TOP AUTHOR", "StatsTopAuthors": "TOP AUTHORS", "StatsTopGenre": "TOP GENRE", @@ -788,6 +787,7 @@ "StatsTopMonth": "TOP MONTH", "StatsTopNarrator": "TOP NARRATOR", "StatsTopNarrators": "TOP NARRATORS", + "StatsTotalDuration": "With a total duration of…", "StatsYearInReview": "YEAR IN REVIEW", "ToastAccountUpdateFailed": "Failed to update account", "ToastAccountUpdateSuccess": "Account updated",