ishealth-monitor-widget/src/main/java/org/gcube/portlets/admin/ishealthmonitor/client/highchartsjs/gxt-adapter.js

89 lines
2.4 KiB
JavaScript

var registeredCharts = {}
/*
* useParent (bool) if the resize is applied from the main widget or from
* the container div.
*/
function registerChart(param, useParent) {
var paramid = String(param.id);
registeredCharts[paramid] = param;
setUseParent(param.id, useParent);
}
/*
* From the id of a chart retrieves the container from which
* the size must be taken.
*/
function getParentContainer(chartId) {
var chart = getChartById(chartId);
try {
if (document.getElementById(chart.id.substring(5) + '-frame').parentNode != null) {
return document.getElementById(chart.id.substring(5) + '-frame').parentNode;
}
return document.getElementById(chart.id.substring(5) + '-frame');
} catch (e) {
return chart.container;
}
}
/*
* chartId: the id of the chart
* useParent: boolean - if the resize is applied from the main widget or from
* the container div.
*/
function setUseParent(chartId, useParent) {
var param = getChartById(chartId);
if (useParent) {
param.parentContainer = getParentContainer(chartId);
param.widthOffset = 0;
param.heightOffset = 0;
} else {
param.parentContainer = document.documentElement;
param.widthOffset = 10;
param.heightOffset = 90;
}
}
/*
* from the id (used at registration phase) retrieves the JS instance
* if the chart.
*/
function getChartById(variable){
return registeredCharts[variable];
}
/*
* The parent can be either param.container or document.documentElement
*/
function autoResizeChart(chartID, widthOffset, heightOffset) {
var param = getChartById(chartID);
if (param != null) {
var swidth = param.parentContainer.clientWidth;
var sheight = param.parentContainer.clientHeight;
// The first time the size of the chart must be explicitly expressed
if (widthOffset == null || widthOffset == -1) {
swidth = param.parentContainer.clientWidth - param.widthOffset;
} else {
swidth = param.parentContainer.clientWidth - widthOffset;
}
if (heightOffset == null || heightOffset == -1) {
sheight = param.parentContainer.clientHeight - param.heightOffset;
} else {
sheight = param.parentContainer.clientHeight - heightOffset;
}
param.setSize(swidth, sheight, 1);
if (param.legend != null && param.legend.renderLegend != null) {
param.legend.renderLegend();
}
}
}
function resizeChart(chartID, width, height, widthOffset, heightOffset) {
var param = getChartById(chartID);
if (param != null) {
param.setSize(width - widthOffset, height - heightOffset, 1);
}
}