mirror of
https://github.com/antebudimir/feishin.git
synced 2026-01-01 02:13:33 +00:00
[enhancement]: apply formatting to card values
This commit is contained in:
parent
38ed083693
commit
aa89c5e80e
9 changed files with 95 additions and 75 deletions
|
|
@ -1,24 +0,0 @@
|
|||
import formatDuration from 'format-duration';
|
||||
|
||||
export const formatDurationString = (duration: number) => {
|
||||
const rawDuration = formatDuration(duration).split(':');
|
||||
|
||||
let string;
|
||||
|
||||
switch (rawDuration.length) {
|
||||
case 1:
|
||||
string = `${rawDuration[0]} sec`;
|
||||
break;
|
||||
case 2:
|
||||
string = `${rawDuration[0]} min ${rawDuration[1]} sec`;
|
||||
break;
|
||||
case 3:
|
||||
string = `${rawDuration[0]} hr ${rawDuration[1]} min ${rawDuration[2]} sec`;
|
||||
break;
|
||||
case 4:
|
||||
string = `${rawDuration[0]} day ${rawDuration[1]} hr ${rawDuration[2]} min ${rawDuration[3]} sec`;
|
||||
break;
|
||||
}
|
||||
|
||||
return string;
|
||||
};
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
const SIZES = ['B', 'KiB', 'MiB', 'GiB', 'TiB'];
|
||||
|
||||
export const formatSizeString = (size?: number): string => {
|
||||
let count = 0;
|
||||
let finalSize = size ?? 0;
|
||||
while (finalSize > 1024) {
|
||||
finalSize /= 1024;
|
||||
count += 1;
|
||||
}
|
||||
|
||||
return `${finalSize.toFixed(2)} ${SIZES[count]}`;
|
||||
};
|
||||
56
src/renderer/utils/format.tsx
Normal file
56
src/renderer/utils/format.tsx
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
import dayjs from 'dayjs';
|
||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||
import formatDuration from 'format-duration';
|
||||
import type { Album, AlbumArtist, Song } from '/@/renderer/api/types';
|
||||
import { Rating } from '/@/renderer/components/rating';
|
||||
|
||||
dayjs.extend(relativeTime);
|
||||
|
||||
export const formatDateAbsolute = (key: string | null) =>
|
||||
key ? dayjs(key).format('MMM D, YYYY') : '';
|
||||
|
||||
export const formatDateRelative = (key: string | null) => (key ? dayjs(key).fromNow() : '');
|
||||
|
||||
export const formatDurationString = (duration: number) => {
|
||||
const rawDuration = formatDuration(duration).split(':');
|
||||
|
||||
let string;
|
||||
|
||||
switch (rawDuration.length) {
|
||||
case 1:
|
||||
string = `${rawDuration[0]} sec`;
|
||||
break;
|
||||
case 2:
|
||||
string = `${rawDuration[0]} min ${rawDuration[1]} sec`;
|
||||
break;
|
||||
case 3:
|
||||
string = `${rawDuration[0]} hr ${rawDuration[1]} min ${rawDuration[2]} sec`;
|
||||
break;
|
||||
case 4:
|
||||
string = `${rawDuration[0]} day ${rawDuration[1]} hr ${rawDuration[2]} min ${rawDuration[3]} sec`;
|
||||
break;
|
||||
}
|
||||
|
||||
return string;
|
||||
};
|
||||
|
||||
export const formatRating = (item: Album | AlbumArtist | Song) =>
|
||||
item.userRating !== null ? (
|
||||
<Rating
|
||||
readOnly
|
||||
value={item.userRating}
|
||||
/>
|
||||
) : null;
|
||||
|
||||
const SIZES = ['B', 'KiB', 'MiB', 'GiB', 'TiB'];
|
||||
|
||||
export const formatSizeString = (size?: number): string => {
|
||||
let count = 0;
|
||||
let finalSize = size ?? 0;
|
||||
while (finalSize > 1024) {
|
||||
finalSize /= 1024;
|
||||
count += 1;
|
||||
}
|
||||
|
||||
return `${finalSize.toFixed(2)} ${SIZES[count]}`;
|
||||
};
|
||||
|
|
@ -5,6 +5,6 @@ export * from './constrain-sidebar-width';
|
|||
export * from './title-case';
|
||||
export * from './get-header-color';
|
||||
export * from './parse-search-params';
|
||||
export * from './format-duration-string';
|
||||
export * from './rgb-to-rgba';
|
||||
export * from './sentence-case';
|
||||
export * from './format';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue