|
@@ -4,10 +4,9 @@
|
|
|
'name_required': 'Sprint name is required.',
|
|
'name_required': 'Sprint name is required.',
|
|
|
'dates_invalid': 'Start and end dates must both be valid dates (YYYY-MM-DD).',
|
|
'dates_invalid': 'Start and end dates must both be valid dates (YYYY-MM-DD).',
|
|
|
'dates_order': 'End date must not be before start date.',
|
|
'dates_order': 'End date must not be before start date.',
|
|
|
|
|
+ 'dates_too_long': 'Date range spans more than 26 weeks.',
|
|
|
'reserve_invalid': 'Reserve must be a number (0–100).',
|
|
'reserve_invalid': 'Reserve must be a number (0–100).',
|
|
|
'reserve_out_of_range': 'Reserve must be between 0 and 100 percent.',
|
|
'reserve_out_of_range': 'Reserve must be between 0 and 100 percent.',
|
|
|
- 'n_weeks_invalid': 'Weeks must be an integer.',
|
|
|
|
|
- 'n_weeks_range': 'Weeks must be between 1 and 26.',
|
|
|
|
|
'db_error': 'Could not save. Try again.',
|
|
'db_error': 'Could not save. Try again.',
|
|
|
} %}
|
|
} %}
|
|
|
|
|
|
|
@@ -52,22 +51,13 @@
|
|
|
</label>
|
|
</label>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div class="grid grid-cols-2 gap-3">
|
|
|
|
|
- <label class="block">
|
|
|
|
|
- <span class="text-sm text-slate-700 dark:text-slate-300">Reserve (%)</span>
|
|
|
|
|
- <input name="reserve_fraction" type="number" min="0" max="100" step="1" required
|
|
|
|
|
- value="{{ form.reserve_fraction }}"
|
|
|
|
|
- class="mt-1 block w-full rounded-md border-slate-300 border shadow-sm px-3 py-2 font-mono focus:outline-none focus:ring-2 focus:ring-slate-400 dark:bg-slate-800 dark:border-slate-600 dark:text-slate-100 dark:focus:ring-slate-500">
|
|
|
|
|
- <span class="text-xs text-slate-500 dark:text-slate-400">Reduction from raw capacity. The Excel uses 20%.</span>
|
|
|
|
|
- </label>
|
|
|
|
|
- <label class="block">
|
|
|
|
|
- <span class="text-sm text-slate-700 dark:text-slate-300">Weeks</span>
|
|
|
|
|
- <input name="n_weeks" type="number" min="1" max="26" step="1" required
|
|
|
|
|
- value="{{ form.n_weeks }}"
|
|
|
|
|
- class="mt-1 block w-full rounded-md border-slate-300 border shadow-sm px-3 py-2 font-mono focus:outline-none focus:ring-2 focus:ring-slate-400 dark:bg-slate-800 dark:border-slate-600 dark:text-slate-100 dark:focus:ring-slate-500">
|
|
|
|
|
- <span class="text-xs text-slate-500 dark:text-slate-400">Week rows get 5 days/week by default; edit on the sprint page.</span>
|
|
|
|
|
- </label>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <label class="block">
|
|
|
|
|
+ <span class="text-sm text-slate-700 dark:text-slate-300">Reserve (%)</span>
|
|
|
|
|
+ <input name="reserve_fraction" type="number" min="0" max="100" step="1" required
|
|
|
|
|
+ value="{{ form.reserve_fraction }}"
|
|
|
|
|
+ class="mt-1 block w-full rounded-md border-slate-300 border shadow-sm px-3 py-2 font-mono focus:outline-none focus:ring-2 focus:ring-slate-400 dark:bg-slate-800 dark:border-slate-600 dark:text-slate-100 dark:focus:ring-slate-500">
|
|
|
|
|
+ <span class="text-xs text-slate-500 dark:text-slate-400">Reduction from raw capacity. The Excel uses 20%. Week rows derive from the date range and get 5 days/week by default; edit on the sprint page.</span>
|
|
|
|
|
+ </label>
|
|
|
|
|
|
|
|
<div class="flex gap-3 pt-2">
|
|
<div class="flex gap-3 pt-2">
|
|
|
<button type="submit"
|
|
<button type="submit"
|