Implement fetching photos from photoprism #19

Merged
balki merged 7 commits from photoprism-fetch into main 2024-08-08 12:19:45 -04:00
2 changed files with 40 additions and 5 deletions
Showing only changes of commit 5fee186dcb - Show all commits

View File

@ -6,6 +6,10 @@
<script src="choose.js" defer></script> <script src="choose.js" defer></script>
</head> </head>
<body> <body>
<dialog id="notice_dialog">
<p id="notice_p"></p>
<form><button type="submit" formmethod="dialog">X</button></form>
</dialog>
<label> <label>
<span>Select Album</span> <span>Select Album</span>
<select id="album_selector" size="8"> <select id="album_selector" size="8">

View File

@ -11,28 +11,59 @@ let loadPhotosBtn
/** @type {HTMLSelectElement} */ /** @type {HTMLSelectElement} */
let albumSelect let albumSelect
/** @type {HTMLParagraphElement} */
let noticeP
/** @type {HTMLDialogElement} */
let noticeDialog
function main() { function main() {
albumSelect = document.getElementById("album_selector") albumSelect = document.getElementById("album_selector")
loadAlbumsBtn = document.getElementById("load_albums_button") loadAlbumsBtn = document.getElementById("load_albums_button")
loadPhotosBtn = document.getElementById("load_photos_button") loadPhotosBtn = document.getElementById("load_photos_button")
noticeDialog = document.getElementById("notice_dialog")
noticeP = document.getElementById("notice_p")
loadAlbumsBtn.onclick = () => loadAlbums() loadAlbumsBtn.onclick = () => loadAlbums()
loadPhotosBtn.onclick = () => loadPhotos() loadPhotosBtn.onclick = () => loadPhotos()
} }
function loadAlbums() { function loadAlbums() {
(async () => { (async () => {
const resp = await fetch("get-albums") try {
const albums = await resp.json() closeNotice()
albumSelect.replaceChildren() // This empties existing options const resp = await fetch("get-albums")
for(const album of albums) { const albums = await resp.json()
albumSelect.add(new Option(album.Title, album.UID)) if(albums.length == 0) {
showNotice("No Albums found")
return
}
albumSelect.replaceChildren() // This empties existing options
for(const album of albums) {
albumSelect.add(new Option(album.Title, album.UID))
}
} catch(e) {
console.log(e)
} }
})(); })();
} }
function closeNotice() {
noticeDialog.close()
}
/**
* @param {string} notice
*/
function showNotice(notice) {
noticeP.textContent = notice
noticeDialog.show()
}
function loadPhotos() { function loadPhotos() {
closeNotice()
const selected = albumSelect.selectedOptions const selected = albumSelect.selectedOptions
if(selected.length != 1) { if(selected.length != 1) {
showNotice("Select an album to load photos")
return return
} }
const [elem] = selected const [elem] = selected