Перейти к основному содержимому

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

Список колонок для табличного вопроса доступен через объект 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, codes, answer, row, column])

Делает видимыми колонки, коды которых переданы в параметрах. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют, главное - должно быть передано не меньше одного параметра. Например:

Q.columns.show(1, [3,5,6], Q.answers[8], Q3.rows[10], Q6.columns[12]);
Q.columns.show(Q1.getCheckedCode(), Q2.getCheckedCodes());

showOnly([code, codes, answer, row, column])

Делает видимым только колонки, коды которых переданы в параметрах. Остальные колонки будут скрыты. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют, главное - должно быть передано не меньше одного параметра.

showFromTo(codeFrom, codeTo)

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

Q.columns.showFromTo(2, 50);

showOnlyFromTo(codeFrom, codeTo)

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

hideAll()

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

hide([code, codes, answer, row, column])

Скрывает колонки, коды которых переданы в параметрах. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют, главное - должно быть передано не меньше одного параметра.

hideOnly([code, codes, answer, row, column])

Скрывает только колонки, коды которых переданы в параметрах. Остальные колонки останутся видны. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют, главное - должно быть передано не меньше одного параметра.

hideFromTo(codeFrom, codeTo)

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

hasVisible

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

return Q.columns.hasVisible ? ok : skip;

randomize()
randomize(codes)
randomizeFromTo(fromCode, toCode)

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

Q.columns.randomize();
Q.columns.randomize([1,3,5,7]);
Q.columns.randomizeFromTo(10, 20);

randomizeGroups(groups)
randomizeGroups(groupSize, firstNumbers)

Перемешивает случайным образом группы колонок.

В параметре groups передаётся массив с массивами кодов первой и последней колонки в группе. Если группы колонок одинакового размера, то в первом параметре (groupSize) можно указать количество колонок в группе, а во втором — массив кодов первых колонок в каждой группе.

Порядок колонок внутри группы не изменяется.

Примеры.

  1. Есть колонки с кодами: 1,2, 3,4,5,6,7,8, 9, 98,99. Необходимо перемешать между собой колонки группами 1-2, 3-8, и 9. Сделать это можно так:
Q.columns.randomizeGroups([[1,2], [3,8], [9,9]]);
  1. Есть колонки с кодами: 1,2,3, 4,5,6, 7,8,9, 98,99. Необходимо перемешать между собой колонки группами 1-3, 4-6, 7-9. Сделать это можно так:
Q.columns.randomizeGroups(3, [1,4,7]);
// или
Q.columns.randomizeGroups([[1,3], [4,6], [7,9]]);

rotate()
rotate([codes [, shift]])
rotateFromTo(codeFrom, codeTo [, shift])

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

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);
Q.columns.rotateFromTo(1, 6);
Q.columns.rotateFromTo(1, 6, 5);

rotateGroups(groups [, shift])
rotateGroups(groupSize, firstNumbers [, shift])

Ротация колонок группами. Работает по аналогии с функцией randomizeGroups Примеры:

Q.columns.rotateGroups([[1,3], [4,6], [7,9]]);
Q.columns.rotateGroups([[1,3], [4,6], [7,9]], 2);
Q.columns.rotateGroups(3, [1,4,7]);
Q.columns.rotateGroups(3, [1,4,7], 2);

setOrder(orderedCodes)

Устанавливает необходимый порядок следования колонок. В параметре 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);