Главная страница
Навигация по странице:

  • Скрипт обработки перед сохранением интервью

  • /ЗАКОДИРУЙТЕ/ выбор возрастной группы

  • Не требовать обязательного ответа на вопрос (проверка ответа скриптами) (Есть список ответа и список строк)

  • Список строк с открытыми вариантами ответа рядом

  • (цена в третьей строке не может быть больше или равна предыдущей); } if ( num 4>= num 3) { return error

  • Q and not Q (code = 7 or code = 10 or code = 14)

  • скрипты. подсказка Скрипты. Скрипт подготовки анкеты перед запуском


    Скачать 20.1 Kb.
    НазваниеСкрипт подготовки анкеты перед запуском
    Анкорскрипты
    Дата17.11.2022
    Размер20.1 Kb.
    Формат файлаdocx
    Имя файлаподсказка Скрипты.docx
    ТипДокументы
    #793331

    Скрипт подготовки анкеты перед запуском

    for (let q of questions.getAll()) {

    let tmp = q.outputColumnTemplate;

    if (q.flags & QuestionFlags.SkipExport) continue;

    if (tmp === undefined) tmp = getTemplate(q.type, 'Q' + q.number);

    let text = q.plainText.replace(/\s/g, '_').replace(/[^A-ZА-Я\d_]/gi, '').slice(0,250);

    q.outputColumnTemplate = tmp + '_' + text;

    }

    function getTemplate(qType, tmp, oV) {

    switch (qType) {

    case QuestionTypeIds.SingleChoice:

    tmp += oV === undefined ? '' : '_{1}' + oV;

    break;

    case QuestionTypeIds.MultipleChoice:

    tmp += oV === undefined ? '_{1}' : '_{1}' + oV;

    break;

    case QuestionTypeIds.Table_Text:

    case QuestionTypeIds.Table_Numeric:

    tmp += oV === undefined ? '_{2}' : '_{2}' + oV;

    break;

    case QuestionTypeIds.Table_SingleChoice:

    tmp += oV === undefined ? '_{2}' : '_{2}_{1}' + oV;

    break;

    case QuestionTypeIds.Table_MultipleChoice:

    tmp += oV === undefined ? '_{2}_{1}' : '_{2}_{1}' + oV;

    break;

    }

    return tmp;

    }

    Скрипт обработки перед сохранением интервью

    // скрипт обработки в глобальных анкеты

    if (isQuotaReached()) {

    lockKey(V.idKey);

    }

    CSS стили для анкеты

    /* Добавление нестандартного шрифта */

    @import url('https://fonts.googleapis.com/css?family=PT+Serif');

    /*стиль кнопок*/

    .btn {

    font-size: 14px

    }

    /* Блок текста вопроса */

    div.question-text {

    font-style: italic !important;

    color:#ffff;

    padding-top: 0.2em;

    padding-bottom: 0.2em;

    padding-left: 0.3em;

    background-image: linear-gradient(to top, rgb(8, 76, 153), rgb(18, 84, 162), rgb(28, 92, 171), rgb(39, 100, 179), rgb(49, 108, 188), rgb(59, 116, 197), rgb(69, 125, 206), rgb(79, 133, 215), rgb(89, 141, 224), rgb(100, 149, 232), rgb(110, 157, 241), rgb(120, 165, 250));

    }

    /* Установка шрифта в качестве основного и изменение цвета фона анкеты */

    body {

    font-family: 'PT+Serif';

    background-color: #f4f9fd;

    font-size: 16px;

    }

    /* Скрытие нижнего блока с именем клиента и логотипом */

    .ss-footer {

    display: none;

    }

    /* Цвет таблицы*/

    .table-striped>tbody>tr:nth-of-type(odd) {

    background-color: #cee5f3;/* фон нечетных строк */

    }

    .table-striped>tbody>tr:nth-of-type(even) {

    background-color: #f3fbff;/* фон четных строк */

    }

    /* расположение календаря

    .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9 {

    left: 7em;

    }

    */

    /ЗАКОДИРУЙТЕ/

    выбор возрастной группы
    let age = Q908.openValueInt;

    Q[1].checked = age < 20;

    Q[2].checked = age >= 20 && age <= 24;

    Q[3].checked = age >= 25 && age <= 34;

    Q[4].checked = age >= 35 && age <= 44;

    Q[5].checked = age >= 45 && age <= 54;

    Q[6].checked = age >= 55 && age <= 64;

    Q[7].checked = age > 64;

    return answered;

    Не требовать обязательного ответа на вопрос (проверка ответа скриптами) (Есть список ответа и список строк)

    let rFlags = AnswerFlags.CustomRowValidation | AnswerFlags.OpenValueTxt;
    for (let row of Q.rows.getVisible()) {

    if (row.isChecked(1) && row[1].openValueTxt === undefined) {

    return error('Пожалуйста, заполните выбранный ответ в строке ' + row.code);

    };

    if ((row.flags & rFlags) == rFlags) {

    if (row.openValueTxt && row.getCheckedCodes().length == 0) {

    return error('Необходимо выбрать ответ в строке Другое');

    };

    if (row[1].openValueTxt && row.openValueTxt === undefined) {

    return error('Пожалуйста, укажите что именно Другое');

    };

    };

    }
    let min = 1; // количество строк с ответом

    let count = 0;
    if (min > Q.rows.visibleCount) min = Q.rows.visibleCount;
    for (let row of Q.rows.getVisible()) {

    switch (Q.type) {

    case QuestionTypeIds.Table_Text:

    if (row.answer.openValueTxt !== undefined) count++;

    break;
    case QuestionTypeIds.Table_Numeric:

    if (row.answer.openValueNum !== undefined) count++;

    break;
    case QuestionTypeIds.Table_SingleChoice:

    case QuestionTypeIds.Table_MultipleChoice:

    if (row.getCheckedCodes().length > 0) count++;

    break;

    }
    if (count >= min) return ok;

    }
    return error('Требуется заполнить не менее ' + min + ' строки');

    Список строк с открытыми вариантами ответа рядом

    let num1 = Q.rows[1].answer.openValueInt;

    let num2 = Q.rows[2].answer.openValueInt;

    let num3 = Q.rows[3].answer.openValueInt;

    let num4 = Q.rows[4].answer.openValueInt;
    if (num2<=num1) {

    return error('цена во второй строке не может быть меньше или равна предыдущей');

    }

    if (num3<=num2) {

    return error('цена в третьей строке не может быть меньше или равна предыдущей');

    }

    if (num4<=num3) {

    return error('цена в четвертой строке не может быть меньше или равна предыдущей');

    }

    Скрипт после ответа на вопрос про телефон


    if (isTesting() || isPostProcessing() || isValidation()) return ok;


    let phone = Q.openValueNum;

    if (phone < 70000000000 || phone > 79999999999) {

    return error('Телефон должен начинаться с 7 и содержать 11 цифр.');

    }

    Скрипт перед показом вопроса  КОД В АНКЕТЕ {номер}

    if (Q2.isAnswered) {

    V['номер'] = Q2.getChecked()[0].text;

    } else {

    V['номер'] = '!ОШИБКА!';

    }

    Скрипт после последнего вопроса. ПЕРЕД ПОКАЗОМ!


    if (isPostProcessing() || isValidation()) return exit();

    lockKey(V.idKey);

    return exit();

    Цена.

    let num1 = Q.rows[1].answer.openValueInt;

    let num2 = Q.rows[2].answer.openValueInt;

    let num3 = Q.rows[3].answer.openValueInt;

    let num4 = Q.rows[4].answer.openValueInt;

    if (num2<=num1) {

    return error('цена во второй строке не может быть меньше или равна предыдущей');

    }

    if (num3<=num2) {

    return error('цена в третьей строке не может быть меньше или равна предыдущей');

    }

    if (num4<=num3) {

    return error('цена в четвертой строке не может быть меньше или равна предыдущей');

    }

    let num1 = Q.rows[1].answer.openValueInt;

    let num2 = Q.rows[2].answer.openValueInt;

    let num3 = Q.rows[3].answer.openValueInt;

    let num4 = Q.rows[4].answer.openValueInt;

    if (num2>=num1) {

    return error('цена во второй строке не может быть больше или равна предыдущей');

    }

    if (num3>=num2) {

    return error('цена в третьей строке не может быть больше или равна предыдущей');

    }

    if (num4>=num3) {

    return error('цена в четвертой строке не может быть больше или равна предыдущей');

    _____________________________________________________________________________________

    Q and not Q (code = 7 or code = 10 or code = 14)


    написать администратору сайта