fix scheduler orario start, immagine parcheggio, added more logs function
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 786 KiB After Width: | Height: | Size: 829 KiB |
@@ -17,8 +17,36 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||
|
||||
await loadOffices();
|
||||
setupEventListeners();
|
||||
populateTimeSelects();
|
||||
});
|
||||
|
||||
function populateTimeSelects() {
|
||||
const hoursSelect = document.getElementById('officeCutoffHour');
|
||||
const minutesSelect = document.getElementById('officeCutoffMinute');
|
||||
|
||||
// Clear existing
|
||||
hoursSelect.innerHTML = '';
|
||||
minutesSelect.innerHTML = ''; // Re-creating to allow 0-59 range
|
||||
|
||||
// Populate Hours 0-23
|
||||
for (let i = 0; i < 24; i++) {
|
||||
const val = i.toString().padStart(2, '0');
|
||||
const opt = document.createElement('option');
|
||||
opt.value = i;
|
||||
opt.textContent = val;
|
||||
hoursSelect.appendChild(opt);
|
||||
}
|
||||
|
||||
// Populate Minutes 0-59
|
||||
for (let i = 0; i < 60; i++) {
|
||||
const val = i.toString().padStart(2, '0');
|
||||
const opt = document.createElement('option');
|
||||
opt.value = i;
|
||||
opt.textContent = val;
|
||||
minutesSelect.appendChild(opt);
|
||||
}
|
||||
}
|
||||
|
||||
async function loadOffices() {
|
||||
const response = await api.get('/api/offices');
|
||||
if (response && response.ok) {
|
||||
@@ -70,6 +98,11 @@ async function editOffice(officeId) {
|
||||
document.getElementById('officeName').value = office.name;
|
||||
document.getElementById('officeQuota').value = office.parking_quota;
|
||||
|
||||
// Set booking window settings
|
||||
document.getElementById('officeWindowEnabled').checked = office.booking_window_enabled !== false;
|
||||
document.getElementById('officeCutoffHour').value = office.booking_window_end_hour != null ? office.booking_window_end_hour : 18;
|
||||
document.getElementById('officeCutoffMinute').value = office.booking_window_end_minute != null ? office.booking_window_end_minute : 0;
|
||||
|
||||
openModal('Modifica Ufficio');
|
||||
}
|
||||
|
||||
@@ -123,7 +156,10 @@ async function handleOfficeSubmit(e) {
|
||||
const officeId = document.getElementById('officeId').value;
|
||||
const data = {
|
||||
name: document.getElementById('officeName').value,
|
||||
parking_quota: parseInt(document.getElementById('officeQuota').value) || 0
|
||||
parking_quota: parseInt(document.getElementById('officeQuota').value) || 0,
|
||||
booking_window_enabled: document.getElementById('officeWindowEnabled').checked,
|
||||
booking_window_end_hour: parseInt(document.getElementById('officeCutoffHour').value),
|
||||
booking_window_end_minute: parseInt(document.getElementById('officeCutoffMinute').value)
|
||||
};
|
||||
|
||||
console.log('Payload:', data);
|
||||
|
||||
@@ -72,6 +72,15 @@ function populateHourSelect() {
|
||||
option.textContent = h.toString().padStart(2, '0');
|
||||
select.appendChild(option);
|
||||
}
|
||||
|
||||
const minuteSelect = document.getElementById('bookingWindowMinute');
|
||||
minuteSelect.innerHTML = '';
|
||||
for (let m = 0; m < 60; m++) {
|
||||
const option = document.createElement('option');
|
||||
option.value = m;
|
||||
option.textContent = m.toString().padStart(2, '0');
|
||||
minuteSelect.appendChild(option);
|
||||
}
|
||||
}
|
||||
|
||||
async function loadOfficeSettings(id) {
|
||||
|
||||
@@ -93,6 +93,27 @@
|
||||
<small class="text-muted">Numero totale di posti auto assegnati a questo ufficio</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Orario di Cut-off (Giorno Precedente)</label>
|
||||
<div style="display: flex; gap: 10px; align-items: center;">
|
||||
<select id="officeCutoffHour" class="form-control" style="width: 80px;">
|
||||
<!-- Hours 0-23 generated by JS -->
|
||||
</select>
|
||||
<span>:</span>
|
||||
<select id="officeCutoffMinute" class="form-control" style="width: 80px;">
|
||||
<option value="0">00</option>
|
||||
<option value="15">15</option>
|
||||
<option value="30">30</option>
|
||||
<option value="45">45</option>
|
||||
</select>
|
||||
<label style="margin-left: 10px; display: flex; align-items: center; gap: 5px;">
|
||||
<input type="checkbox" id="officeWindowEnabled">
|
||||
Abilita Assegnazione Automatica
|
||||
</label>
|
||||
</div>
|
||||
<small class="text-muted">Orario limite per la prenotazione del giorno successivo</small>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="form-actions">
|
||||
|
||||
@@ -88,10 +88,7 @@
|
||||
</select>
|
||||
<span>:</span>
|
||||
<select id="bookingWindowMinute" style="width: 80px;">
|
||||
<option value="0">00</option>
|
||||
<option value="15">15</option>
|
||||
<option value="30">30</option>
|
||||
<option value="45">45</option>
|
||||
<!-- Populated by JS -->
|
||||
</select>
|
||||
</div>
|
||||
<small class="text-muted">Le presenze inserite prima di questo orario saranno messe in
|
||||
@@ -159,7 +156,8 @@
|
||||
<button id="testEmailBtn" class="btn btn-secondary">
|
||||
Test (Solo a Me)
|
||||
</button>
|
||||
<button id="bulkEmailBtn" class="btn btn-warning" title="Invia mail reale a tutti gli assegnatari">
|
||||
<button id="bulkEmailBtn" class="btn btn-warning"
|
||||
title="Invia mail reale a tutti gli assegnatari">
|
||||
Test (A Tutti)
|
||||
</button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user