hobby-enquete-component
Version:
You can display complex enquete if you make a json file written in my structure.
125 lines (118 loc) • 5.01 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var is___questions = function (arg) {
try {
var questionsCheck = true;
if (Array.isArray(arg) === false) {
return false;
}
for (var i = 0; i < arg.length; i++) {
questionsCheck = questionsCheck && is___question(arg[i]);
}
return questionsCheck;
}
catch (error) {
return false;
}
};
var is___question = function (arg) {
try {
var parentCheck = typeof (arg.parent) !== "undefined" && Array.isArray(arg.parent) && typeof (arg.parent[0]) === 'string';
var questionCheck = typeof (arg.question) === 'string';
var answersCheck = typeof (arg.answers) !== "undefined" && Array.isArray(arg.answers);
var answerCheck = true;
for (var i = 0; i < arg.answers.length; i++) {
answerCheck = answerCheck && is___answer(arg.answers[i]);
}
return parentCheck && questionCheck && answersCheck && answerCheck;
}
catch (error) {
return false;
}
};
var is___answer = function (arg) {
try {
var ansidCheck = typeof (arg.ansid) === "string";
var anstextCheck = typeof (arg.anstext) === "string";
var ansvalueCheck = typeof (arg.ansvalue) === "string";
return ansidCheck && anstextCheck && ansvalueCheck;
}
catch (error) {
return false;
}
};
var Enq = function (props) {
var qdata = props.q;
var _a = React.useState(qdata.filter(function (q) { return q.parent.indexOf("") !== -1; }).slice(1)), qstuck = _a[0], setQStuck = _a[1];
var _b = React.useState(qdata[0]), qhead = _b[0], setQHead = _b[1];
// headを更新する
var goNextQ = function (newqstuck) {
// nextqhead ... 次の読み込みでの表示
var nextqhead = newqstuck[0];
setQHead(nextqhead);
};
// スタックを更新する
var makeNextQs = function (id) {
var tmpqstuck = [];
for (var i = 0; i < qstuck.length; i++) {
tmpqstuck.push(qstuck[i]);
}
for (var i = 0; i < qdata.length; i++) {
if (qdata[i].parent.indexOf(id) !== -1) {
tmpqstuck.push(qdata[i]);
}
}
// nextqstuck ... 次の読み込みでのスタック
var nextqstuck = tmpqstuck.slice(1);
setQStuck(nextqstuck);
return tmpqstuck;
};
// コンポーネント更新処理
var enqUpdate = function (id) {
var newqstuck = makeNextQs(id);
goNextQ(newqstuck);
return newqstuck.length;
};
// 返り値処理
var backUpdate = function (restlen, value) {
// Enqを呼び出したコンポーネントへの戻り値
props.getRest(restlen); // 最初の質問はスタックに入っていないからlengthもそのままあげて良い。
props.getAns(value);
};
// クリック時
var clk = function (id, value) {
var restlen = enqUpdate(id);
backUpdate(restlen, value);
};
return (React__default["default"].createElement("div", null, (qstuck.length !== 0 || qhead !== undefined) &&
React__default["default"].createElement("div", null,
props.debug &&
React__default["default"].createElement(React__default["default"].Fragment, null,
React__default["default"].createElement("h1", null, "enq component"),
React__default["default"].createElement("p", null,
"parent id :",
qhead.parent)),
qhead.title !== undefined &&
React__default["default"].createElement("p", { className: '___qtitle' }, qhead.title),
React__default["default"].createElement("p", { className: '___qhead' }, qhead.question),
React__default["default"].createElement("ul", { className: '___selectul' }, qhead.answers.map(function (item, key) {
return React__default["default"].createElement("li", { className: '___selectli', key: key, onClick: function () { return clk(item.ansid, item.ansvalue); } },
item.anstext,
props.debug &&
React__default["default"].createElement(React__default["default"].Fragment, null,
"",
" | ansID : ",
item.ansid,
" | ansVALUE : ",
item.ansvalue));
})),
props.debug &&
React__default["default"].createElement("hr", null))));
};
exports.Enq = Enq;
exports.is___answer = is___answer;
exports.is___question = is___question;
exports.is___questions = is___questions;