added date as an answer option to forms

This commit is contained in:
zuzanna-maria 2023-01-09 23:19:54 +01:00
parent 86c7b42aae
commit 22a898403e
2 changed files with 106 additions and 2 deletions

View File

@ -1216,6 +1216,7 @@
"form_type_textarea": "Paragraph", "form_type_textarea": "Paragraph",
"form_type_radio": "Choice", "form_type_radio": "Choice",
"form_type_multiradio": "Choice Grid", "form_type_multiradio": "Choice Grid",
"form_type_date": "Date",
"form_type_checkbox": "Checkbox", "form_type_checkbox": "Checkbox",
"form_type_multicheck": "Checkbox Grid", "form_type_multicheck": "Checkbox Grid",
"form_type_poll": "Poll", "form_type_poll": "Poll",

View File

@ -199,6 +199,24 @@ define([
saveAndCancel saveAndCancel
]; ];
}; };
var editDateOptions = function (cb) {
var evOnSave = Util.mkEvent();
evOnSave.reg(function () {
var res = getSaveRes();
if (!res) { return; }
cb(res);
});
var saveAndCancel = saveAndCancelOptions(cb);
return [
saveAndCancel
];
};
var editOptions = function (v, isDefaultOpts, setCursorGetter, cb, tmp) { var editOptions = function (v, isDefaultOpts, setCursorGetter, cb, tmp) {
var evOnSave = Util.mkEvent(); var evOnSave = Util.mkEvent();
@ -1127,6 +1145,8 @@ define([
printResults: function () { return; }, printResults: function () { return; },
icon: h('i.cptools.cptools-form-page-break') icon: h('i.cptools.cptools-form-page-break')
}, },
section: { section: {
defaultOpts: { defaultOpts: {
questions: [] questions: []
@ -1643,6 +1663,7 @@ define([
}; };
}, },
printResults: function (answers, uid) { // results text printResults: function (answers, uid) { // results text
var results = []; var results = [];
var empty = 0; var empty = 0;
var tally = {}; var tally = {};
@ -1995,6 +2016,89 @@ define([
}, },
icon: h('i.cptools.cptools-form-grid-radio') icon: h('i.cptools.cptools-form-grid-radio')
}, },
date: {
defaultOpts: {
type: 'date',
},
get: function (opts, a, n, evOnChange) {
opts = Util.clone(TYPES.date.defaultOpts)
var tag = h('input', {
type: opts.type,
});
var $tag = $(tag);
$tag.on('change keypress', Util.throttle(function () {
evOnChange.fire();
}, 500));
var cursorGetter;
var setCursorGetter = function (f) { cursorGetter = f; };
return {
tag: tag,
isEmpty: function () { return !$tag.val().trim(); },
getValue: function () {
var invalid = $tag.is(':invalid');
if (invalid) { return; }
return $tag.val();
},
setValue: function (val) { $tag.val(val); },
setEditable: function (state) {
if (state) { $tag.removeAttr('disabled'); }
else { $tag.attr('disabled', 'disabled'); }
},
edit: function (cb, tmp) {
return editDateOptions(cb);
},
getCursor: function () { return cursorGetter(); },
reset: function () { $tag.val(''); }
};
},
printResults: function (answers, uid) { // results text
var results = [];
var empty = 0;
var tally = {};
var isEmpty = function (answer) {
return !answer || !answer.trim();
};
Object.keys(answers).forEach(function (author) {
var obj = answers[author];
var answer = obj.msg[uid];
if (isEmpty(answer)) { return empty++; }
Util.inc(tally, answer);
});
//if (max < 2) { // there are no duplicates, so just return text
results.push(getEmpty(empty));
Object.keys(answers).forEach(function (author) {
var obj = answers[author];
var answer = obj.msg[uid];
if (!answer || !answer.trim()) { return empty++; }
results.push(h('div.cp-charts-row', h('span.cp-value', answer)));
});
return h('div.cp-form-results-contained', h('div.cp-charts.cp-text-table', results));
return h('div.cp-charts.cp-bar-table', results);
},
exportCSV: function (answer, form) {
var opts = form.opts || {};
var q = form.q || Messages.form_default;
if (answer === false) {
return (opts.items || []).map(function (obj) {
return q + ' | ' + obj.v;
});
}
if (!answer) { return ['']; }
return (opts.items || []).map(function (obj) {
var uid = obj.uid;
return String(answer[uid] || '');
});
},
icon: h('i.cp-calendar-active.fa.fa-calendar')},
checkbox: { checkbox: {
compatible: ['radio', 'checkbox', 'sort'], compatible: ['radio', 'checkbox', 'sort'],
defaultOpts: { defaultOpts: {
@ -2767,7 +2871,6 @@ define([
var switchMode = h('button.btn.btn-secondary', Messages.form_showIndividual); var switchMode = h('button.btn.btn-secondary', Messages.form_showIndividual);
$controls.hide().append(switchMode); $controls.hide().append(switchMode);
var show = function (answers, header) { var show = function (answers, header) {
var order = getFullOrder(content); var order = getFullOrder(content);
var elements = order.map(function (uid) { var elements = order.map(function (uid) {
@ -2791,6 +2894,7 @@ define([
TYPES[type].icon.cloneNode(), TYPES[type].icon.cloneNode(),
h('span', Messages['form_type_'+type]) h('span', Messages['form_type_'+type])
]), ]),
q, q,
h('div.cp-form-block-content', print), h('div.cp-form-block-content', print),
]); ]);
@ -3529,7 +3633,6 @@ define([
}); });
} }
var getFormCreator = function (uid, inSection) { var getFormCreator = function (uid, inSection) {
if (!APP.isEditor) { return; } if (!APP.isEditor) { return; }
var full = !uid; var full = !uid;