29.01.2019, 14:24
(28.01.2018, 16:01)buuuudzik Wrote: This code is for using one widget page with an iframe for showing trends and schedulers:
Code:// Change src of widget and have 1 widget for every trend and scheduler in visualisation
$(function(){
if (!$('body').hasClass('usermode')) {
return;
}
// BELOW CHANGE TRENDS AND SCHEDULERS LIST
let mapping = [
// Trends:
{type: 't', className: 'wt_1', query: 'id=1'},
{type: 't', className: 'wt_2', query: 'id=2&mode=week'},
{type: 't', className: 'wt_kitchen-living', query: 'id=2,3&multiple=1'},
// Schedulers:
{type: 's', className: 'ws_1', query: 'id=1'},
{type: 's', className: 'ws_2', query: 'id=2'},
{type: 's', className: 'ws_outdoor-light', query: 'id=1,2&nohol'}
];
function updateFrameSource(interval) {
let widgetIframe = $('.trends_n_schedulers > iframe')[0];
if (widgetIframe) {
if (widgetIframe.src != location.origin + currentFrameURL) widgetIframe.src = currentFrameURL;
else clearInterval(interval);
};
};
function initEventListeners() {
for (let i=0; i<mapping.length; i++) {
let {type, className, query} = mapping[i];
let newFrameSrc = (type=='t' ? '/scada-vis/trends?' : '/scada-vis/schedulers?') + query;
$('.' + className).on('vclick', function () {
currentFrameURL = newFrameSrc;
let intervalId;
intervalId = setInterval(updateFrameSource.bind(this, intervalId), 50);
});
};
};
// Initialization
let currentFrameURL;
initEventListeners();
});
How to use it:
1. Create a widget
2. Add the iframe to the widget and add to it Additional class "trends_n_schedulers"
3. Add above Javascript code to your Custom Javascript and edit trendsMap and schedulersMap tables
This row
Code:
let {type, className, query} = mapping[i];
Working solution is
Code:
let type = mapping[i].type;
let className = mapping[i].className;
let query = mapping[i].query;
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259