immich-assets-manager/public/index.html
2025-08-29 22:14:39 +02:00

72 lines
2.2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Immich Asset Manager</title>
<script
defer
src="https://cdnjs.cloudflare.com/ajax/libs/alpinejs/3.13.3/cdn.min.js"
></script>
<link rel="stylesheet" href="styles.css" />
</head>
<body x-data="photoManager()">
<div class="header">
<h1>📸 Immich Asset Manager</h1>
<div class="controls">
<button
class="control-btn"
:class="{ 'active': isPlaying }"
@click="togglePlayback()"
:title="isPlaying ? 'Pause slideshow' : 'Play slideshow'"
>
<span x-show="!isPlaying">▶️</span>
<span x-show="isPlaying">⏸️</span>
</button>
</div>
</div>
<div class="photo-grid">
<template x-if="photos.length === 0">
<div class="empty-state">
<h2>No photos yet</h2>
<p>Photos will appear here when displayed on your Immich Frame</p>
</div>
</template>
<template x-for="photo in getVisiblePhotos()" :key="photo.id">
<div class="photo-card">
<div class="photo-container">
<img
:src="photo.url"
:alt="'Photo from ' + photo.displayDate"
@error="handleImageError($event)"
/>
<div class="photo-overlay">
<div class="photo-actions">
<button
class="action-btn"
@click="openInImmich(photo.immichUrl)"
>
📱 Open in Immich
</button>
<button
class="action-btn delete-btn"
@click="deletePhoto(photo.id)"
>
🗑️ Delete
</button>
</div>
</div>
</div>
<div class="photo-info">
<div class="photo-date">
<span>🖼️ Displayed on</span> <span x-text="photo.date"></span>
</div>
</div>
</div>
</template>
</div>
<script src="main.js"></script>
</body>
</html>