2016-03-02 17:36:20 +00:00
|
|
|
(function(GOVUK, Modules) {
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
GOVUK.timeCache = {};
|
|
|
|
|
GOVUK.resultCache = {};
|
|
|
|
|
|
2016-03-23 08:54:48 +00:00
|
|
|
let getter = function(resource, interval, render) {
|
2016-03-02 17:36:20 +00:00
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
GOVUK.resultCache[resource] &&
|
|
|
|
|
(Date.now() < GOVUK.timeCache[resource])
|
|
|
|
|
) {
|
|
|
|
|
render(GOVUK.resultCache[resource]);
|
|
|
|
|
} else {
|
|
|
|
|
GOVUK.timeCache[resource] = Date.now() + interval;
|
|
|
|
|
$.get(
|
|
|
|
|
resource,
|
|
|
|
|
response => render(GOVUK.resultCache[resource] = response)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
2016-03-23 08:54:48 +00:00
|
|
|
let poller = (resource, key, component, interval) => () => getter(
|
|
|
|
|
resource, interval, response => component.html(response[key])
|
2016-03-02 17:36:20 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
Modules.UpdateContent = function() {
|
|
|
|
|
|
|
|
|
|
this.start = function(component) {
|
|
|
|
|
|
|
|
|
|
const $component = $(component);
|
2016-03-23 08:54:48 +00:00
|
|
|
interval = ($(component).data("interval-seconds") * 1000) || 1500;
|
2016-03-02 17:36:20 +00:00
|
|
|
|
|
|
|
|
setInterval(
|
2016-03-23 08:54:48 +00:00
|
|
|
poller($component.data('resource'), $component.data('key'), $component, interval),
|
2016-03-02 17:36:20 +00:00
|
|
|
interval / 5
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
})(window.GOVUK, window.GOVUK.Modules);
|