freeboard
freeboard copied to clipboard
Moving between pages
Hi there, Could you please advise how to correct switch two dashboards every X seconds.
My way: I made simple datasourcePlugin, whitch is switching pages.
` (function () { var pageSwitcher = function (settings, updateCallback) { var self = this; var init = false; var updateTimer = null; var currentSettings = settings;
function updateRefresh(refreshTime) {
if (updateTimer) {
clearInterval(updateTimer);
}
updateTimer = setInterval(function () {
self.updateNow();
}, refreshTime);
}
updateRefresh(currentSettings.switchTime * 1000);
this.updateNow = function () {
if(!init){
init = true;
return;
}
const pages = freeboard.pagesData();
const currentPage = freeboard.currentPage();
const pageKeys =Object.keys(pages);
let indx = pageKeys.findIndex(p => p === currentPage);
indx++;
if(indx == pageKeys.length)indx=0;
console.log(`Going to page \"${pageKeys[indx]}\"...`)
freeboard.gotoPage(pageKeys[indx]);
updateCallback(pageKeys[indx]);
}
this.onDispose = function () {
clearInterval(updateTimer);
updateTimer = null;
}
this.onSettingsChanged = function (newSettings) {
currentSettings = newSettings;
updateRefresh(currentSettings.refresh * 1000);
self.updateNow();
}
};
freeboard.loadDatasourcePlugin({
"type_name": "pageSwitcher",
"display_name": "pageSwitcher",
"settings": [
{
"name": "switchTime",
"display_name": "Switch Every",
"type": "number",
"suffix": "seconds",
"default_value": 10
}
],
newInstance: function (settings, newInstanceCallback, updateCallback) {
newInstanceCallback(new pageSwitcher(settings, updateCallback));
}
});
}()); `
But the problem is that after few hours running freeboard not rendering any widget any more. And I have empty panels.
I realized that after each freeboard.gotoPage() are created new instances of widgets. I dont know what happens with old instances. Maybe soem memory problem occures., test PC has 4GB ram and only chrome opened with this page.
Thanks, Kuan.