Опрос JS Радио Расчет - PullRequest
       49

Опрос JS Радио Расчет

0 голосов
/ 14 декабря 2018

Используя Survey JS , идея состоит в том, чтобы попросить пользователей ответить на ряд вопросов из заранее определенного списка параметров (переключателей).

Каждому варианту будет назначен счет (0, 25, 75, 100), поскольку каждый выбор сделан, я хотел бы отображать текущий результат где-нибудь на экране.

Я знаю, что янужно создать выражение, как в в этом примере , но я не уверен, с чего начать.

Я создал базовую структуру формы, можно увидеть здесь.

$.material.init();

var json = {
  title: "Audit Example",
  showProgressBar: "top",
  pages: [{
    questions: [{
      type: "matrix",
      name: "Quality",
      title: "Please score each department below.",
      columns: [{
        value: 0,
        text: "None"
      }, {
        value: 25,
        text: "Isolated"
      }, {
        value: 50,
        text: "Some"
      }, {
        value: 100,
        text: "Widespread"
      }],
      rows: [{
        value: "training",
        text: "Training"
      }, {
        value: "support",
        text: "Support"
      }, {
        value: "safety",
        text: "Safety"
      }, {
        value: "communication",
        text: "Communication"
      }]
    }]
  }
  ]
};

Survey.defaultBootstrapMaterialCss.navigationButton = "btn btn-green";
Survey.defaultBootstrapMaterialCss.rating.item = "btn btn-default my-rating";
Survey.Survey.cssType = "bootstrapmaterial";

var survey = new Survey.Model(json);

survey.onComplete.add(function(result) {
  document.querySelector('#result').innerHTML = "result: " + JSON.stringify(result.data);
});

survey.render("surveyElement");

Любой совет приветствуется.

1 Ответ

0 голосов
/ 14 декабря 2018

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

Для этого вы можете зарегистрировать свою собственную функцию, например:

function sumInObject(params) {
  if (params.length != 1) return 0;
  if(!params[0]) return 0;
  const object = params[0];
  const array = Object.keys(object)
    .map(key => object[key])
    .map(value => parseInt(value));
  return array.reduce((left, right) => left + right);
}

Survey.FunctionFactory.Instance.register("sumInObject", sumInObject);

, а затем использовать ее следующим образом:

}, {
    "type": "expression",
    "name": "total",
    "title": "Total Quality:",
    "expression": "sumInObject({Quality})",
    "displayStyle": "decimal",
    "startWithNewLine": true
}

Полный код в Plunk

Надеюсь, что это поможет.

...