freeboard icon indicating copy to clipboard operation
freeboard copied to clipboard

Moving between pages

Open stikekua opened this issue 2 years ago • 1 comments

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.

stikekua avatar Mar 28 '22 13:03 stikekua