From f163bf7e60e4def029015cea9745bfd5d0d12f31 Mon Sep 17 00:00:00 2001 From: Filip Noetzel Date: Tue, 10 Jun 2025 09:07:03 +0200 Subject: [PATCH] Correct percentage calculation for rating text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed formatRatingText to use actual pattern length instead of parsed denominator for percentage calculations. This fixes ◼◼◼▭ showing 3% instead of 75%. The issue was that percentage parsing sets denominator=100, but calculations need actual symbol count (4), so (3/4)*100=75%. --- src/editor-extension/RatingWidget.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/editor-extension/RatingWidget.ts b/src/editor-extension/RatingWidget.ts index d1ce105..ddaa0cb 100644 --- a/src/editor-extension/RatingWidget.ts +++ b/src/editor-extension/RatingWidget.ts @@ -206,11 +206,12 @@ export class RatingWidget extends WidgetType { if (this.ratingText && !isCommentFormat) { const textContainer = container.querySelector('.interactive-rating-text'); if (textContainer) { + const unicodeLength = getUnicodeCharLength(this.pattern); const previewText = formatRatingText( this.ratingText.format, newRating, - this.ratingText.denominator, // Use original denominator - this.ratingText.denominator, + unicodeLength, // Always use actual pattern length for percentage calculations + this.ratingText.denominator, // Use original denominator for fraction displays !!this.symbolSet.half && !isFullOnly, isFullOnly ); @@ -328,8 +329,8 @@ export class RatingWidget extends WidgetType { const newRatingText = formatRatingText( newRatingFormat, newRating, - denominator, - denominator, + unicodeLength, // Always use actual pattern length for percentage calculations + denominator, // Use original denominator for fraction displays !!this.symbolSet.half && !isFullOnly, isFullOnly );