feat: shows monitor poster on modal

This commit is contained in:
Brock H Caldwell
2025-11-06 15:16:59 -06:00
parent ec0d2a198c
commit f253b33910
5 changed files with 14 additions and 2 deletions

View File

@@ -28,6 +28,9 @@ export default class PreviewContentDialog extends HTMLDialogElement {
}
display({ heading, content }) {
if (this.hasAttribute('mdWidth')) {
this.style.width = this.getAttribute('mdWidth');
}
this.setHeading(heading);
this.setContent(content);
this.showModal();

View File

@@ -98,6 +98,7 @@ class ApiController extends AbstractController
'allDay' => true,
'backgroundColor' => $eventColors[$monitor->getImdbId()],
'borderColor' => $eventColors[$monitor->getImdbId()],
'attachment' => $monitor->getPoster(),
];
});

View File

@@ -28,11 +28,13 @@
<td class="px-6 py-4 whitespace-nowrap text-sm">
{{ monitor|monitor_media_id }}
</td>
{# Monitor is a CHILD monitor #}
{% if null != monitor.parent %}
<td class="hidden md:table-cell px-6 py-4 whitespace-nowrap text-sm">
{{ monitor.searchCount }}
</td>
{% else %}
{# Monitor is a PARENT monitor #}
<td class="hidden md:table-cell px-6 py-4 whitespace-nowrap text-sm">
{{ monitor.children|length }}
</td>

View File

@@ -1,4 +1,4 @@
<dialog{{ attributes }} is="preview-content-dialog" class="py-3 px-4 w-full md:w-[50rem] rounded-md dark:bg-gray-950/80 dark:border-2 dark:border-orange-500 dark:text-white backdrop-filter backdrop-blur-3xl">
<dialog{{ attributes }} is="preview-content-dialog" class="py-3 px-4 w-full md:w-[{{ mdWidth|default('50rem') }}] rounded-md dark:bg-gray-950/80 dark:border-2 dark:border-orange-500 dark:text-white backdrop-filter backdrop-blur-3xl">
<div class="flex flex-row justify-end">
<twig:ux:icon name="ic:twotone-cancel" width="16.75px" height="16.75px" class="modal-close rounded-full align-middle text-red-600 hover:text-red-700" />
</div>

View File

@@ -34,6 +34,7 @@
}
document.addEventListener('DOMContentLoaded', async function() {
const modal = document.getElementById('previewModal');
modal.setAttribute('mdWidth', '25rem');
let data = await fetch('/api/monitor/upcoming-episodes');
data = (await data.json())['data'];
@@ -47,7 +48,12 @@
eventClick: function (data) {
modal.display({
heading: data.event.title,
content: `<p>${data.event.startStr}</p>`
content: `
<div class="flex flex-col gap-4 justify-center items-center">
<img src="${data.event.extendedProps.attachment}" class="w-[90%] rounded-md" />
<p>${data.event.startStr}</p>
</div>
`
})
}
});