UNPKG

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
'use strict'; 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;