mirror of https://github.com/xwiki-labs/cryptpad
added date as an answer option to forms
This commit is contained in:
parent
86c7b42aae
commit
22a898403e
|
@ -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",
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue