From fab082b63f5f8d05d320b830dcb60e8858af189c Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Tue, 23 Feb 2021 14:38:38 -0500 Subject: [PATCH] Fix revisions drawer detail when number of revisions > 100 Fixes #4187 --- app/src/lang/translations/en-US.yaml | 1 + app/src/utils/abbreviate-number.ts | 23 ++++ .../revisions-drawer-detail.vue | 114 +++++++++++++----- 3 files changed, 110 insertions(+), 28 deletions(-) create mode 100644 app/src/utils/abbreviate-number.ts diff --git a/app/src/lang/translations/en-US.yaml b/app/src/lang/translations/en-US.yaml index de6fdc0f54..fe8e220943 100644 --- a/app/src/lang/translations/en-US.yaml +++ b/app/src/lang/translations/en-US.yaml @@ -437,6 +437,7 @@ system_collections: System Collections placeholder: Placeholder icon_left: Icon Left icon_right: Icon Right +count_other_revisions: '{count} Other Revisions' font: Font sans_serif: Sans Serif serif: Serif diff --git a/app/src/utils/abbreviate-number.ts b/app/src/utils/abbreviate-number.ts new file mode 100644 index 0000000000..39b2dca2dc --- /dev/null +++ b/app/src/utils/abbreviate-number.ts @@ -0,0 +1,23 @@ +export function abbreviateNumber(value: number) { + if (value >= 1000) { + const suffixes = ['', 'K', 'M', 'B', 'T']; + const suffixNum = Math.floor(('' + value).length / 3); + let shortValue: number = value; + + for (let precision = 2; precision >= 1; precision--) { + shortValue = parseFloat((suffixNum != 0 ? value / Math.pow(1000, suffixNum) : value).toPrecision(precision)); + const dotLessShortValue = (shortValue + '').replace(/[^a-zA-Z 0-9]+/g, ''); + if (dotLessShortValue.length <= 2) break; + } + + let valueAsString: string = String(shortValue); + + if (shortValue % 1 != 0) { + valueAsString = shortValue.toFixed(1); + } + + return shortValue + suffixes[suffixNum]; + } + + return value; +} diff --git a/app/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue b/app/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue index 19fa2fa690..2c93855b77 100644 --- a/app/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue +++ b/app/src/views/private/components/revisions-drawer-detail/revisions-drawer-detail.vue @@ -2,28 +2,39 @@ -