Adding time formatting
All checks were successful
Music Collection CI Workflow / test (./backend) (push) Successful in 22s
Music Collection CI Workflow / test (./frontend) (push) Successful in 19s
Music Collection CI Workflow / build-and-push-images (./backend/Dockerfile, git.anatid.net/tabris/msuic-collection-backend, ./backend) (push) Successful in 49s
Music Collection CI Workflow / build-and-push-images (./frontend/Dockerfile, git.anatid.net/tabris/music-collection-frontend, ./frontend) (push) Successful in 1m12s
Music Collection CI Workflow / deploy (push) Successful in 21s

This commit is contained in:
Phill Pover 2025-04-03 11:41:00 +01:00
parent 80c2bbfcb9
commit 72f3b9b111
6 changed files with 34 additions and 8 deletions

View File

@ -2,4 +2,5 @@ export class UpdateSongDto {
id: number; id: number;
title: string; title: string;
duration: number; duration: number;
albumId: number;
} }

View File

@ -1,9 +1,10 @@
'use client' 'use client'
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
import { Album } from '@/common/album.entity';
import { Song } from '@/common/song.entity';
import { useParams } from 'next/navigation' import { useParams } from 'next/navigation'
import { Album } from '@/entities/album.entity';
import { Song } from '@/entities/song.entity';
import { TimeUtils } from '@/utils/time.util';
export default function Page() { export default function Page() {
const [album, setAlbum] = useState<Album>(); const [album, setAlbum] = useState<Album>();
@ -28,9 +29,11 @@ export default function Page() {
<em>{album.title}</em> by {album.artist} ({album.genre}) <em>{album.title}</em> by {album.artist} ({album.genre})
</div> </div>
<ul> <ul>
{album.songs.map((song: Song) => ( if (album.songs) {
<li key={song.id}>{song.title} ({song.duration})</li> album.songs.map((song: Song) => (
))} <li key={song.id}>{song.title} ({TimeUtils.fancyTimeFormat(song.duration)})</li>
))
}
</ul> </ul>
</div> </div>
); );

View File

@ -2,7 +2,7 @@
import { useState, useEffect } from 'react'; import { useState, useEffect } from 'react';
import Link from 'next/link'; import Link from 'next/link';
import { Album } from '@/common/album.entity'; import { Album } from '@/entities/album.entity';
export default function Page() { export default function Page() {
const [albums, setAlbums] = useState<Album[]>([]); const [albums, setAlbums] = useState<Album[]>([]);

View File

@ -1,4 +1,4 @@
import { Song } from '@/common/song.entity'; import { Song } from '@/entities/song.entity';
export interface Album { export interface Album {
id: number; id: number;

View File

@ -1,4 +1,4 @@
import { Album } from '@/common/album.entity'; import { Album } from '@/entities/album.entity';
export interface Song { export interface Song {
id: number; id: number;

View File

@ -0,0 +1,22 @@
export class TimeUtils {
// Copied from https://stackoverflow.com/a/11486026
static fancyTimeFormat(duration: number) {
// Hours, minutes and seconds
const hrs = ~~(duration / 3600);
const mins = ~~((duration % 3600) / 60);
const secs = ~~duration % 60;
// Output like "1:01" or "4:03:59" or "123:03:59"
let ret = "";
if (hrs > 0) {
ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
}
ret += "" + mins + ":" + (secs < 10 ? "0" : "");
ret += "" + secs;
return ret;
}
}