StatCorrTabSheetSource: PP.TS.StatTabSheetSource;
The StatCorrTabSheetSource property sets data source for a sheet in the Correlation Matrix tab in the statistics panel.
To execute the example, the page must contain the WorkbookBox component named workbookBox (see Example of Creating the WorkbookBox Component), and also add the following code in the handler, that processes document opening event:
//Add a handler to the metabase connection end event that
//sets whether the Add Series button is available depending on the selected series
metabase.EndRequest.add(PP.Delegate(function(){
var selectedSeries = wbk.getActiveSheet().getSelectedSeries();
//Check whether there are group series in the selected series
var groupSerieSelected = False;
for (var i = 0; i < selectedSeries.length; i++)
{
if (PP.TS.isGroupSerie(selectedSeries[i]))
{
groupSerieSelected = True;
break;
}
}
//Check if there are child series in the selected series
var derivedSerieSelected = False;
for (var i = 0; i < selectedSeries.length; i++)
{
if (PP.TS.isDerivedSerie(selectedSeries[i]))
{
derivedSerieSelected = True;
break;
}
}
//Set button availability
if(selectedSeries.length>1 && !groupSerieSelected && !derivedSerieSelected)
{
addLRRowButton.setEnabled(True);
}
else
{
addLRRowButton.setEnabled(False);
}
}));
var addLRRowButton = new PP.Ui.Button({
ParentNode: document.body, //DOM parent node
Content: "Add Series", //Text
Click: PP.Delegate(onClickAddLRRow)
});
function onClickAddLRRow(){
//Create an object that will contain information about the added series
var metaData = {};
//Assign the Linear Regression added series formula type
metaData.formulaType = PP.TS.Ui.FormulaTypeEnum.LinearRegression;
//Get selected workbook series
var selectedSeries = wbk.getActiveSheet().getSelectedSeries();
var series = [];
for (var i = 0; i < selectedSeries.length; i++)
{
if (!PP.TS.isGroupSerie(selectedSeries[i]))
//Create an array of non-group series from the array of selected ones
series.push(selectedSeries[i]);
}
if (series.length > 0)
{
//Get index of the last selected non-group series
var lastSerieIndex = series[series.length - 1].index;
}
metaData.serieFlags = 0;
metaData.selectedRows = series;
metaData.index = lastSerieIndex;
//Set level
metaData.formulaLevel = series[0].level;
//Create a body of server request for adding a calculated series
var requestBody = tsService._getSetWbkMdSettings(wbk, metaData, PP.Mb.ListOperation.Add);
requestBody.SetWbkMd.tArg.metaGet.getTabSheet = {
pattern: {
DHTML: True,
structure: True
}
};
//Set whether workbook is changed
wbk.setIsChanged(True);
//Send request to server
tsService._invokeRemoteProc(wbk, requestBody, PP.Delegate(onResponse));
}
function onResponse(sender, args)
{
//Get information
var res = JSON.parse(args.ResponseText);
var report = args.Args.Workbook || args.Args.Report;
var doc = args.Args.Document;
if (res.SetWbkMdResult.meta)
{
var md = res.SetWbkMdResult.meta;
report.setWbkMetadata(md);
//Determine a set of time series for workbook
if (md.series && md.series && md.series.its && md.series.its.it && md.series.its.it.length == md.series["@count"])
{
report.setSeries(md.series.its.it);
report.setNeedUpdateSelection(True);
}
else
{
if (md.series && md.series && md.series.its && md.series.its.it)
{
//refreshes the list of workbook time series
report.updateSeriesList(md.series.its.it);
//Set whether selection must be refreshed
report.setNeedUpdateSelection(True);
}
}
//Calculate and create a mew selection
var headerSz = tsService._getHeaderSizes(report); //width and height of sidehead and header
//Get selected cells in workbook table
var oldsel = report.getSelection();
//Get range of selected cells
var oldparts = PP.getProperty(oldsel, "range.parts.it") ? PP.getProperty(oldsel, "range.parts.it") : [PP.getProperty(oldsel, "range")];
var minleft = null;
var mintop = null;
var maxright = null;
var maxbottom = null;
//Get coordinates of selection angles
for (i = 0; i < oldparts.length; i++)
{
if (minleft == null || oldparts[i].left < minleft)
minleft = oldparts[i].left;
if (mintop == null || oldparts[i].top < mintop)
mintop = oldparts[i].top;
var right = oldparts[i].left + oldparts[i].width - 1;
if (maxright == null || right > maxright)
maxright = right;
var bottom = oldparts[i].top + oldparts[i].height - 1;
if (maxbottom == null || bottom > maxbottom)
maxbottom = bottom;
}
//Get whether table is rotated
var trans = report.getMetadata().grid.transposed;
//Create an object that will contain information about selected areas
var part = { type: "Cells" };
//Initialize an object that will contain information about selected areas
if (trans)
{
part.left = headerSz.Width + report.getRealIndex(md.series.its.it[0].index);
part.width = md.series.its.it.length;
part.top = mintop;
part.height = maxbottom - mintop + 1;
}
else
{
part.left = minleft;
part.width = maxright - minleft + 1;
part.top = headerSz.Height + report.getRealIndex(md.series.its.it[0].index);
part.height = md.series.its.it.length;
}
//Initialize an object that will contain information about table selection
var sel = {
type: "Normal",
range: {
left: 0,
top: 0,
height: 0,
width: 0,
parts: {
it: [part]
},
type: "MultiPart"
}
};
var selSeriesIdxes = [];
for (i = 0; i < md.series.its.it.length; i++)
selSeriesIdxes.push(md.series.its.it[i].index);
//Send request for changing table selection
setTableSelection(report, selSeriesIdxes, undefined, undefined, True, sel, part.left, part.top, part.width, part.height);
}
}
function setTableSelection(wbk, selectedIndexSeries, selectedIndexCols, callback, _setSelectedSerieses, selection, left, top, width, height)
{
if (selectedIndexSeries && selectedIndexSeries.length > 0)
//Set array of indexes of selected table series
wbk.setSelectedIndexSeries(selectedIndexSeries);
else selectedIndexSeries = wbk.getSelectedIndexSeries();
if (!selectedIndexSeries)
selectedIndexSeries = [];
if (selectedIndexCols && selectedIndexCols.length > 0)
//Set indexes of selected columns
wbk.setSelectedIndexCols(selectedIndexCols);
else selectedIndexCols = wbk.getSelectedIndexCols();
if (!selectedIndexCols)
selectedIndexCols = [];
//Get the least index from indexes of the selected series
var start = tsService._minIndexVal(selectedIndexSeries);
//Get the greatest index from indexes of the selected series
var count = tsService._maxIndexVal(selectedIndexSeries) - start + 1;
if (isNaN(start))
start = undefined;
if (isNaN(count))
count = undefined;
//Get the least index from indexes of the selected columns
var colStart = tsService._minIndexVal(selectedIndexCols);
//Get the greatest index from indexes of the selected columns
var colCount = tsService._maxIndexVal(selectedIndexCols) - colStart + 1;
if (isNaN(colStart))
start = undefined;
if (isNaN(colCount))
count = undefined;
//create a body of server request for selecting the added series
var body =
{
SetWbkMd:
{
tWbk: wbk.getOdId(),
tArg:
{
meta:
{
},
pattern:
{
setTabSheet: {
setPattern: {
metaData: True,
selection: True
},
metaData: {
selection: selection
}
}
},
metaGet:
{
seriesFilter: {
range: {
start: start,
count: count
}
},
columnsFilter:
{
range: {
start: selectedIndexCols[0],
count: selectedIndexCols.length
}
},
statistics: {
includeAll: True
},
lanerFilter: True,
period: True,
seriesDependencies: True,
seriesDependents: True,
seriesAtts: True,
seriesDiscrepancies: True,
seriesDisplayParams: True,
sorting: True,
series: PP.Mb.ListOperation.Get,
columns: PP.Mb.ListOperation.Get
}
}
}
};
//Enter information about data sources for statistics panel to the body of server request
if (selectedIndexSeries.length == 1 || wbk.getPinned())
{
var res = { it: [] };
if (wbk.getPinned())
res.it.push({ k: wbk.getSelectedOrPinnedSeries()[0].k });
else
{
var ser = wbk.getSeries()[selectedIndexSeries[0]];
if (ser)
res.it.push({ k: ser.k });
}
if (res)
{
body.SetWbkMd.tArg.metaGet.results = {
correlation: True,
coefficients: True,
tabSheet: True,
series: res
};
}
}
tsService._send(body, PP.Delegate(onGetMd, undefined, { Workbook: wbk, SetSelectedSerieses: _setSelectedSerieses, Indexes: selectedIndexSeries }));
}
function onGetMd(sender, args)
{
//Get JSON object from server response
var res = JSON.parse(args.ResponseText);
//Get workbook metadata
var wbkMd = wbk.getActiveSheet().getWbkMetadata();
//Create an object that will contain information about statistics data
var meta = undefined;
if (wbkMd)
{
//Initialize an object that will contain information about statistics data from the body of server response
if (res.GetWbkMdResult)
meta = res.GetWbkMdResult.meta;
else meta = res.SetWbkMdResult.meta;
}
//Refresh data sources for statistics panel
refreshStatSources(wbkMd, meta);
//Get statistics panel
var tsPanel = workbookBox.getDataView()._TabStatPanel;
tsPanel.refresh();
}
function refreshStatSources(wbkMd, meta)
{
//Assign statistics data to workbook metadata
wbkMd.statistics = meta.statistics;
if (meta.statistics)
//Set statistics data for workbook
wbk.getActiveSheet().setStatData(meta.statistics);
if (meta.results && meta.results.its && meta.results.its.it.length == 1)
{
if (meta.series.its.it)
{
//Set data sources of statistics panel for workbook
var result = meta.results.its.it[0];
if (result.correlation)
{
wbk.getActiveSheet().setStatCorrTabSheetSource(new PP.TS.StatTabSheetSource({
WbkOdId: wbk.getActiveSheet().getOdId().id, //workbook moniker
Metabase: wbk.getMetabase() //Metabase connection object
}));
}
else wbk.getActiveSheet().setStatCorrTabSheetSource(undefined);
if (result.coefficients)
{
//Set data source for the Equation statistics panel tab
wbk.getActiveSheet().setStatCoeffTabSheetSource(new PP.TS.StatTabSheetSource({
WbkOdId: wbk.getActiveSheet().getOdId().id, //workbook moniker
Metabase: wbk.getMetabase() //Metabase connection object
}));
}
else wbk.getActiveSheet().setStatCoeffTabSheetSource(undefined);
if (result.weights)
{
//Set data source for the Weight Matrix statistics panel tab
wbk.getActiveSheet().setStatWeightsTabSheetSource(new PP.TS.StatTabSheetSource({
WbkOdId: wbk.getActiveSheet().getOdId().id, //workbook moniker
Type: PP.TS.Ui.StatTabSheetType.Weights, //Type
Metabase: wbk.getMetabase() //Metabase connection object
}));
}
else
wbk.getActiveSheet().setStatWeightsTabSheetSource(undefined);
}
}
else
{
wbk.getActiveSheet().setStatCorrTabSheetSource(undefined);
wbk.getActiveSheet().setStatCoeffTabSheetSource(undefined);
wbk.getActiveSheet().setStatWeightsTabSheetSource(undefined);
}
}
After executing the example a button named Add Series is placed on the HTML page. Open the statistics panel by clicking the Statistics button. To make the Add Series button available, select several series in the workbook. None of the selected series should be a group series or a child one. On clicking the Add Series button a series with the Linear Regression formula type is added to the workbook. After a series is added to the workbook, data sources are set for the Equation and Correlation Matrix tabs in the statistics panel. TO seehe series added to the workbook, click the Refresh button in the Home tab of the ribbon.
See also: