Свойства и функции списка колонок табличного вопроса

Список колонок для табличного вопроса доступен через объект columns. В основном columns используется для доступа к колонкам по коду, например Q.columns[5], но также предоставляет набор различных свойств и функций. Часть функций, для удобства, доступна для вызова через объект answers у строки, например Q.rows[2].answers.show(5) равнозначно вызову Q.columns.show(5).

Большинство методов дублируются в вопросе, для удобства использования.

count

Возвращает общее количество колонок в списке.

visibleCount

Возвращает количество видимых колонок. Например:

return Q.columns.visibleCount > 1 ? ok : skip;

getAll()

Возвращает все колонки в виде массива. Например:

Q.columns.getAll().forEach(function (c) {
    c.text += 'Колонка с кодом ' + c.code + '<br>';
}); 

getCodes()

Возвращает массив кодов всех колонок.

getVisibleCodes()

Возвращает массив кодов всех видимых колонок.

getVisible()

Возвращает видимые колонки в виде массива.

showAll()

Делает видимыми все колонки в табличном вопросе.

show(code)

Делает видимой колонку с кодом code.

showOnly(code)

Делает видимой только колонку с кодом code. Остальные колонки будут скрыты.

showCodes(codes)

Делает видимыми колонки, коды которых содержатся в переданном массиве codes. Например:

Q.columns.showCodes([1,3,5,6]);

showOnlyCodes(codes)

Делает видимыми только колонки, коды которых содержатся в переданном массиве codes.

showFromTo(codeFrom, codeTo)

Делает видимыми все колонки, коды которых попадают в диапазон от codeFrom до codeTo. Например:

Q.columns.showFromTo(2, 50);

showOnlyFromTo(codeFrom, codeTo)

Делает видимыми только те колонки, коды которых попадают в диапазон от codeFrom до codeTo.

hideAll()

Скрывает все колонки в табличном вопросе. Колонки, у которых установлен флаг Всегда отображается, остаются всегда видимыми.

hide(code)

Скрывает колонку с кодом code.

hideCodes(codes)

Скрывает колонки, коды которых содержатся в переданном массиве codes.

hideFromTo(codeFrom, codeTo)

Скрывает все колонки, коды которых попадают в диапазон от codeFrom до codeTo.

hasVisible

Возвращает true, если есть хотя бы одна видимая колонка. Например:

return Q.columns.hasVisible ? ok : skip;

randomize()
randomize(codes)

Перемешивает все колонки (или только те, коды которых указаны в параметре codes) случайным образом.

Q.columns.randomize();
Q.columns.randomize([1,4,5,6,9]);

rotate()
rotate(shift)
rotate(codes)
rotate(codes, shift)

Производит ротацию колонок (циклический сдвиг на определенный шаг). Если не передан массив кодов в параметре codes - ротируются все колонки. Также можно передать шаг сдвига в параметре shift, при этом если шаг не передается - используется внутренний шаг, который автоматически увеличивается на 1 для каждого следующего интервью, что дает правильное равномерное распределение. Примеры:

Q.columns.rotate();
Q.columns.rotate(5);
Q.columns.rotate([1,2,3,4,5,6]);
Q.columns.rotate([1,2,3,4,5,6], 5);

setOrder(orderedCodes)

Устанавливает необходимый порядок следования колонок. В параметре orderedCodes передается массив кодов колонок, в необходимом порядке. Например:

Q.columns.setOrder([5,4,3,2,1]);

add(code, text)

Добавляет новую колонку (вариант ответа для всех строк табличного вопроса) с указанным кодом и текстом в конец списка. Созданная колонка возвращается как результат. Например:

// добавляем новую колонку 99 в конец списка
var column = Q.columns.add(99, 'Не знаю');
// включаем в ней флаг "Блокирующий / исключающий"
column.flags |= 0x0010;

insert(refCode, code, text)

Создает новую колонку (вариант ответа) с указанным кодом и текстом и вставляет её перед колонкой, код которой указан в параметре refCode. Созданная колонка возвращается как результат. Например:

// добавляем новую колонку 5 перед колонкой 6
Q.columns.insert(6, 5, 'Москва');

insertAfter(refCode, code, text)

Создает новую колонку (вариант ответа) с указанным кодом и текстом и вставляет её после колонки, код которой указан в параметре refCode. Созданная колонка возвращается как результат. Например:

// добавляем новую колонку 7 после колонки 6
Q.columns.insertAfter(6, 7, 'Санкт-Петербург');

remove(code)
remove(column)

Удаляет указанную колонку (вариант ответа). Например:

// удаляем колонку 5 из списка
Q.columns.remove(5);
// то же самое:
Q.columns.remove(Q.columns[5]);

load(fromQuestion)
load(fromList)

Загружает колонки (варианты ответа) из другого вопроса либо из другого списка строк. Например:

Q.columns.load(Q3);
Q.columns.load(Q3.rows);