getSelectedOrPinnedSeries();
Метод getSelectedOrPinnedSeries возвращает выделенные ряды или заблокированный ряд, если он есть.
Для выполнения примера предполагается наличие на странице компонента WorkbookBox с наименованием «workbookBox» (см. «Пример создания компонента WorkbookBox»), также необходимо в обработчике события открытия документа добавить следующий код:
//Получаем все ряды ряда
var _Series = wbk.getActiveSheet().getSeries();
//К событию окончания соединения с метабазой добавим обработчик, который
//устанавливает доступность кнопки "Свернуть раскрытые"
metabase.EndRequest.add(function (){
collapseSeriesButton.setEnabled(false);
_Series = wbk.getActiveSheet().getSeries();
var i;
//Получаем все раскрытые групповые и вычислимые ряды и сворачиваем их
for(i = 0; i < _Series.length; i++)
{
if(_Series[i].expanded && (_Series[i].expanded === true))
{
collapseSeriesButton.setEnabled(true);
break;
}
}
});
//Обработчик окончания операции сворачивания рядов
var callback = PP.Delegate(function(){
//Обновляем весь компонент для отображения рабочей книги
workbookBox.refreshAll();
});
var collapseSeriesButton = new PP.Ui.Button({
ParentNode: document.body, //Родительский узел DOM
Content: "Свернуть раскрытые", //Подпись
Click: PP.Delegate(onClickCollapseSeries)
});
function onClickCollapseSeries()
{
var i;
//Получаем все раскрытые групповые и вычислимые ряды и сворачиваем их
for(i = 0; i < _Series.length; i++)
{
if(_Series[i].expanded && (_Series[i].expanded === true))
{
collapeSerie(_Series[i]);
}
}
}
function collapeSerie(Series)
{
var args = undefined;
//Создаем объект, содержащий информацию о раскрытом ряде
_series = {
k: Series.k,
kind: Series.kind,
index: Series.index,
childrenCount: Series.childrenCount
};
_series.expanded = false;
_series.atts = { its: { it: []} };
series = [_series];
//Создаем тело запроса к серверу на сворачивание рядов
var body =
{
SetWbkMd:
{
tWbk: wbk.getOdId(),
tArg:
{
pattern:
{
series: 'Change'
},
metaGet: tsService._getWbkSeriesPattern(),
meta:
{
series:
{
its:
{
it: series
}
}
}
}
}
};
//Нужно получить структуру табшита чтобы установить правильную ширину и высоту добавленных рядов
body.SetWbkMd.tArg.metaGet.getTabSheet = {
pattern: {
DHTML: true,
structure: true
}
};
//Добавляем информацию о структуре табшита в тело запроса к серверу
if (series.length == 1 || wbk.getPinned())
{
var res = { it: [] };
if (wbk.getPinned())
res.it.push({ k: wbk.getSelectedOrPinnedSeries()[0].k });
else
{
var ser = series[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._addViewSettings(wbk, body.SetWbkMd);
//Устанавливаем признак того, что рабочая книга изменена
wbk.setIsChanged(true);
//Сортируем массив рядов
series = series.sort(tsService._sorting.bind(wbk));
//Получаем индексы первого и последнего ряда группы
var firstIndex = wbk.getRealIndex(undefined, series[0]);
var lastIndex = wbk.getRealIndex(undefined, series[series.length - 1]);
//Удаляем дочерние ряды раскрытого ряда из рабочей книги
wbk.removeSeries(wbk.getRealIndex(undefined, series[0]) + 1, series[0].childrenCount);
//Добавляем информацию о дочерних рядах группового ряда
body.SetWbkMd.tArg.metaGet.seriesFilter = {
range: {
start: firstIndex,
count: (lastIndex - firstIndex + 1)
}
};
//Добавляем процедуры в список рассылки события получения ответа от сервера
callback = tsService._visitCallback(callback, new PP.Delegate(tsService._editSerieCompleted, tsService, { Workbook: wbk, Expanding: false }));
callback = tsService._visitCallback(callback, new PP.Delegate(tsService._OnOpened, tsService, { Workbook: wbk, MetaData: args }));
//Посылаем запрос на сервер
tsService._send(body, callback);
}
После выполнения примера на html-странице будет размещена кнопка с наименованием «Свернуть раскрытые». Для выполнения примера необходимо наличие в рабочей книге раскрытого ряда. Нужно выделить такой ряд и нажать на кнопку «Свернуть раскрытые». При нажатии на эту кнопку выделенный ряд будет свернут.
См. также: