Loading frontend/SongList.mjs +22 −15 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ import Artist from "./components/pieces/Artist.mjs" import Message from "./components/pieces/Message.mjs" import ClearSearchLink from "./components/pieces/ClearSearchLink.mjs" import Song from "./components/pieces/Song.mjs" import PaginationControls from "./components/pieces/PaginationControls.mjs" import SongListModel from "./model/SongListModel.js" Loading @@ -17,10 +16,11 @@ const SongList = { const { currentView, searchTerm, onSearchTermChange } = vnode.attrs const model = SongListModel if (model.isLoading && (!model.allSongs || model.allSongs.length === 0)) { return [ m("div.loading-placeholder", "Lade Songs vom Server..."), ] if ( model.isLoading && (!model.allSongs || model.allSongs.length === 0) ) { return [m("div.loading-placeholder", "Lade Songs vom Server...")] } const { Loading @@ -43,17 +43,21 @@ const SongList = { `Möchtest du `, m(ClearSearchLink, { totalFavs: message.total, onClear: () => onSearchTermChange && onSearchTermChange("") onClear: () => onSearchTermChange && onSearchTermChange(""), }), `?`, ]) } else if (message.type === "filtered_favorites_none_found_by_search") { } else if ( message.type === "filtered_favorites_none_found_by_search" ) { messageElement = m(Message, [ `Deine Suche ergab keine Treffer unter deinen ${message.total} Favoriten. `, `Möchtest du `, m(ClearSearchLink, { totalFavs: message.total, onClear: () => onSearchTermChange && onSearchTermChange("") onClear: () => onSearchTermChange && onSearchTermChange(""), }), `?`, ]) Loading @@ -64,7 +68,10 @@ const SongList = { } } if (!messageElement && totalFilteredItems === 0 && !model.isLoading) { messageElement = m(Message, "Keine Songs entsprechen den aktuellen Kriterien.") messageElement = m( Message, "Keine Songs entsprechen den aktuellen Kriterien.", ) } const elementsToRender = [] Loading @@ -82,8 +89,8 @@ const SongList = { searchTerm, currentPage, onToggleFavorite: model.toggleFavorite.bind(model), }) ) }), ), ) } Loading @@ -93,7 +100,7 @@ const SongList = { currentPage: currentPage, totalPages: totalPages, onPageChange: model.onPageChange.bind(model), }) }), ) } Loading frontend/components/pieces/Artist.mjs +12 −5 Original line number Diff line number Diff line Loading @@ -3,7 +3,14 @@ import Song from "./Song.mjs" const Artist = { view: function (vnode) { const { artist, songs, currentView, searchTerm, currentPage, onToggleFavorite } = vnode.attrs const { artist, songs, currentView, searchTerm, currentPage, onToggleFavorite, } = vnode.attrs return m( "div.artist", { Loading @@ -16,9 +23,9 @@ const Artist = { key: s.id, song: s, onToggleFavorite, }) }), ), ] ], ) }, } Loading frontend/components/pieces/Header.mjs +1 −4 Original line number Diff line number Diff line Loading @@ -3,9 +3,6 @@ import TabBar from "./TabBar.mjs" export default { view(vnode) { return m("header", [ m(SearchBar, vnode.attrs), m(TabBar), ]) return m("header", [m(SearchBar, vnode.attrs), m(TabBar)]) }, } frontend/components/pieces/Tab.mjs +1 −1 Original line number Diff line number Diff line Loading @@ -10,5 +10,5 @@ export const Tab = { }, vnode.attrs.label, ) } }, } frontend/components/pieces/TabBar.mjs +9 −8 Original line number Diff line number Diff line Loading @@ -5,17 +5,18 @@ export default { return m("nav", [ m(Tab, { href: "/all", label: "Alle" label: "Alle", }), m(Tab, { href: "/favorites", label: "Favoriten" label: "Favoriten", }), // TODO We could enable this some time in the future false && m(Tab, { false && m(Tab, { href: "/popular", label: "Beliebt" }) label: "Beliebt", }), ]) } }, } Loading
frontend/SongList.mjs +22 −15 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ import Artist from "./components/pieces/Artist.mjs" import Message from "./components/pieces/Message.mjs" import ClearSearchLink from "./components/pieces/ClearSearchLink.mjs" import Song from "./components/pieces/Song.mjs" import PaginationControls from "./components/pieces/PaginationControls.mjs" import SongListModel from "./model/SongListModel.js" Loading @@ -17,10 +16,11 @@ const SongList = { const { currentView, searchTerm, onSearchTermChange } = vnode.attrs const model = SongListModel if (model.isLoading && (!model.allSongs || model.allSongs.length === 0)) { return [ m("div.loading-placeholder", "Lade Songs vom Server..."), ] if ( model.isLoading && (!model.allSongs || model.allSongs.length === 0) ) { return [m("div.loading-placeholder", "Lade Songs vom Server...")] } const { Loading @@ -43,17 +43,21 @@ const SongList = { `Möchtest du `, m(ClearSearchLink, { totalFavs: message.total, onClear: () => onSearchTermChange && onSearchTermChange("") onClear: () => onSearchTermChange && onSearchTermChange(""), }), `?`, ]) } else if (message.type === "filtered_favorites_none_found_by_search") { } else if ( message.type === "filtered_favorites_none_found_by_search" ) { messageElement = m(Message, [ `Deine Suche ergab keine Treffer unter deinen ${message.total} Favoriten. `, `Möchtest du `, m(ClearSearchLink, { totalFavs: message.total, onClear: () => onSearchTermChange && onSearchTermChange("") onClear: () => onSearchTermChange && onSearchTermChange(""), }), `?`, ]) Loading @@ -64,7 +68,10 @@ const SongList = { } } if (!messageElement && totalFilteredItems === 0 && !model.isLoading) { messageElement = m(Message, "Keine Songs entsprechen den aktuellen Kriterien.") messageElement = m( Message, "Keine Songs entsprechen den aktuellen Kriterien.", ) } const elementsToRender = [] Loading @@ -82,8 +89,8 @@ const SongList = { searchTerm, currentPage, onToggleFavorite: model.toggleFavorite.bind(model), }) ) }), ), ) } Loading @@ -93,7 +100,7 @@ const SongList = { currentPage: currentPage, totalPages: totalPages, onPageChange: model.onPageChange.bind(model), }) }), ) } Loading
frontend/components/pieces/Artist.mjs +12 −5 Original line number Diff line number Diff line Loading @@ -3,7 +3,14 @@ import Song from "./Song.mjs" const Artist = { view: function (vnode) { const { artist, songs, currentView, searchTerm, currentPage, onToggleFavorite } = vnode.attrs const { artist, songs, currentView, searchTerm, currentPage, onToggleFavorite, } = vnode.attrs return m( "div.artist", { Loading @@ -16,9 +23,9 @@ const Artist = { key: s.id, song: s, onToggleFavorite, }) }), ), ] ], ) }, } Loading
frontend/components/pieces/Header.mjs +1 −4 Original line number Diff line number Diff line Loading @@ -3,9 +3,6 @@ import TabBar from "./TabBar.mjs" export default { view(vnode) { return m("header", [ m(SearchBar, vnode.attrs), m(TabBar), ]) return m("header", [m(SearchBar, vnode.attrs), m(TabBar)]) }, }
frontend/components/pieces/Tab.mjs +1 −1 Original line number Diff line number Diff line Loading @@ -10,5 +10,5 @@ export const Tab = { }, vnode.attrs.label, ) } }, }
frontend/components/pieces/TabBar.mjs +9 −8 Original line number Diff line number Diff line Loading @@ -5,17 +5,18 @@ export default { return m("nav", [ m(Tab, { href: "/all", label: "Alle" label: "Alle", }), m(Tab, { href: "/favorites", label: "Favoriten" label: "Favoriten", }), // TODO We could enable this some time in the future false && m(Tab, { false && m(Tab, { href: "/popular", label: "Beliebt" }) label: "Beliebt", }), ]) } }, }