Correct percentage calculation for rating text

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%.
This commit is contained in:
Filip Noetzel 2025-06-10 09:07:03 +02:00
parent f0b00e11e3
commit f163bf7e60

View file

@ -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
);