diff --git a/src/js/pages/current.js b/src/js/pages/current.js index 64326d1e..5c3e4671 100644 --- a/src/js/pages/current.js +++ b/src/js/pages/current.js @@ -1,12 +1,30 @@ -import { _elWithAttrs, getHtml, _getById } from '../modules/utils.js' +import { _elWithAttrs, getJson, _getById } from '../modules/utils.js' window.addEventListener('DOMContentLoaded', function () { + const url = window.location.href + "_update" + const dateEl = _getById("date") + const seqEl = _getById("seqNum") + const eventLink = _getById("eventLink") + const eventImage = _getById("eventImage") + let currentSeq = parseInt(seqEl.innerText) + let currentDate = dateEl.innerText setInterval(function () { - getHtml(window.location.href).then(htmlString => { - const temp = _elWithAttrs('div') - temp.innerHTML = htmlString - const replacementHtml = temp.querySelector('#refresher').innerHTML - _getById('refresher').innerHTML = replacementHtml + getJson(url).then(data => { + if (data.seqNum !== currentSeq || data.date !== currentDate) { + currentSeq = data.seqNum + currentDate = data.date + seqEl.textContent = currentSeq + dateEl.textContent = currentDate + eventLink.href = data.url + const newEventImage = _elWithAttrs("img", { + id: "eventImage", + class: "resp", + src: data.url + }) + newEventImage.addEventListener('load', (e) => { + eventImage.replaceWith(newEventImage) + }) + } }) }, 5000) }) diff --git a/src/rubintv/handlers/external/endpoints.py b/src/rubintv/handlers/external/endpoints.py index aa2704de..22c54a5f 100644 --- a/src/rubintv/handlers/external/endpoints.py +++ b/src/rubintv/handlers/external/endpoints.py @@ -659,3 +659,21 @@ async def current(request: web.Request) -> Dict[str, Any]: "date": the_date, "seq": seq, } + + +@routes.get( + "/{location}/{camera}/{channel}_current_update", name="current_update" +) +async def get_channel_current_update(request: web.Request) -> web.Response: + location_name = request.match_info["location"] + location = find_location(location_name, request) + cameras = request.config_dict["rubintv/models"].cameras + camera = cameras[request.match_info["camera"]] + bucket = request.config_dict[f"rubintv/buckets/{location.slug}"] + historical = request.config_dict[f"rubintv/cached_data/{location.slug}"] + channel = camera.channels[request.match_info["channel"]] + event: Event = get_current_event(camera, channel, bucket, historical) + json_event = json.dumps( + {"seqNum": event.seq, "url": event.url, "date": event.clean_date()} + ) + return web.Response(text=json_event, content_type="application/json") diff --git a/src/rubintv/templates/single_event.jinja b/src/rubintv/templates/single_event.jinja index eddbadd0..fa83c2b8 100644 --- a/src/rubintv/templates/single_event.jinja +++ b/src/rubintv/templates/single_event.jinja @@ -9,26 +9,26 @@ {% endblock undertitle %} {% block content %} -
+
-

{{ date }} : Sequence {{ seq }}

+

{{ date }} : Sequence {{ seq }}

{% if event %} - + {% set image_class = "resp" %} {# {% if channel=="Monitor" %} {% set image_class = "resp behind" %} {% endif %} #} - + {% if channel != "Monitor" %} -
{{ event.name }}
+
{{ event.name }}
{% endif %} {% else %}

Event not found

{% endif %} -
+ {% endblock content %}