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-странице будет размещена кнопка с наименованием «Свернуть раскрытые». Для выполнения примера необходимо наличие в рабочей книге раскрытого ряда. Нужно выделить такой ряд и нажать на кнопку «Свернуть раскрытые». При нажатии на эту кнопку выделенный ряд будет свернут.
См. также: