settings for future and past dates
Some checks failed
PHPUnit / test (push) Has been cancelled

This commit is contained in:
2026-07-17 17:45:38 +02:00
parent 9265181154
commit 764b4c5545
5 changed files with 25 additions and 4 deletions

View File

@ -602,6 +602,7 @@ function configFormHTML(layout, config, prefix, opts = {}) {
const notBefore = config.constraints?.notBefore || '';
const notAfter = config.constraints?.notAfter || '';
const precision = config.precision || 'full';
const dateRange = config.dateRange === 'future' ? 'future' : 'past';
html = `
<div class="form-group">
<label>Date precision</label>
@ -611,6 +612,14 @@ function configFormHTML(layout, config, prefix, opts = {}) {
<option value="year" ${precision === 'year' ? 'selected' : ''}>Year only</option>
</select>
</div>
<div class="form-group">
<label>Allowed dates</label>
<select id="${prefix}_dateRange">
<option value="past" ${dateRange === 'past' ? 'selected' : ''}>Past (today and earlier)</option>
<option value="future" ${dateRange === 'future' ? 'selected' : ''}>Future (today and later)</option>
</select>
<span class="field-hint">Controls which years the app shows. Default is past.</span>
</div>
<div class="form-row">
<div class="form-group">
<label>Not before (question key)</label>
@ -717,6 +726,8 @@ function readConfigFromForm(layout, prefix) {
case 'date_spinner': {
const prec = val('precision') || 'full';
if (prec && prec !== 'full') config.precision = prec;
const dateRange = val('dateRange') || 'past';
if (dateRange === 'future') config.dateRange = 'future';
const nb = val('notBefore');
const na = val('notAfter');
if (nb || na) {

View File

@ -333,9 +333,14 @@ function renderQuestionBody(q, sectionIdx) {
case 'date_spinner': {
const precision = config.precision || 'full';
const dateRange = config.dateRange === 'future' ? 'future' : 'past';
const years = [];
const now = new Date().getFullYear();
for (let yr = now + 1; yr >= 1900; yr--) years.push(yr);
if (dateRange === 'future') {
for (let yr = now; yr <= now + 50; yr++) years.push(yr);
} else {
for (let yr = now; yr >= 1900; yr--) years.push(yr);
}
inner += `<div class="qp-date-row">`;
if (precision === 'full') {
inner += `<select data-part="day" class="qp-select qp-select-sm"><option value="">Day</option>`;