StatWeightsTabSheetSource: PP.Ts.StatTabSheetSource;
The StatWeightsTabSheetSource property sets a data source for the sheet on the Weight Matrix tab of 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 Baxter-King Filter button is available depending on the selected series metabase.EndRequest.add(PP.Delegate(function(){ var selectedSeries = wbk.getActiveSheet().getSelectedSeries(); //Check if 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 Baxter-King Filter", //Text Click: PP.Delegate(onClickAddLRRow) }); function onClickAddLRRow(){ //Create an object that will contain information about the added series var metaData = {}; //Assign the Baxter-King Filter added series formula type" metaData.formulaType = PP.TS.Ui.FormulaTypeEnum.BaxterKingFilter; //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 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); //Set 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 a list of workbook series report.updateSeriesList(md.series.its.it); //Set whether selection must be refreshed report.setNeedUpdateSelection(True); } } //Calculate and create a new 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 a 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 of 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 selected series var start = tsService._minIndexVal(selectedIndexSeries); //Get the greatest index from indexes of 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 selected columns var colStart = tsService._minIndexVal(selectedIndexCols); //Get the greatest index from indexes of 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 source 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 for workbook metadata wbkMd.statistics = meta.statistics; if (meta.statistics) //Set workbook statistical data wbk.getActiveSheet().setStatData(meta.statistics); if (meta.results && meta.results.its && meta.results.its.it.length == 1) { if (meta.series.its.it) { //Set data source 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 Type: PP.TS.Ui.StatTabSheetType.Corr, //Type Metabase: wbk.getMetabase() //Metabase connection object })); } else wbk.getActiveSheet().setStatCorrTabSheetSource(undefined); if (result.coefficients) { //Set data source on the Equation tab of statistics panel wbk.getActiveSheet().setStatCoeffTabSheetSource(new PP.TS.StatTabSheetSource({ WbkOdId: wbk.getActiveSheet().getOdId().id, //workbook moniker Type: PP.TS.Ui.StatTabSheetType.Coeff, //Type Metabase: wbk.getMetabase() //Metabase connection object })); } else wbk.getActiveSheet().setStatCoeffTabSheetSource(undefined); if (result.weights) { //Set data source for the Weight Matrix tab of statistics panel 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 Baxter-King Filter is placed in the HTML page. Open the statistics panel by clicking the Statistics button. To make the Add Baxter-King Filter button available, select a series in the workbook. This cannot be a group or child series. On clicking the Add Baxter-King Filter button a series with the formula type Baxter-King Filter is added to the workbook. After a series is added to the workbook, data sources are set for the Weight Matrix tab in the statistics panel, and the Weight Matrix button becomes available. TO seethe series added to the workbook, click the Refresh button in the Home tab of the tool ribbon.
See also: