added production to fill
This commit is contained in:
@@ -164,6 +164,11 @@
|
|||||||
<i class='bx bx-radio-circle'></i>Line View
|
<i class='bx bx-radio-circle'></i>Line View
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="production_da_compilare.php">
|
||||||
|
<i class='bx bx-radio-circle'></i>Dati Prod
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if (userCan('production.stats.view')) : ?>
|
<?php if (userCan('production.stats.view')) : ?>
|
||||||
|
|||||||
@@ -120,36 +120,47 @@ if (!empty($_GET['ajax'])) {
|
|||||||
$teoKg = number_format((float)($r['kg_sp'] ?? 0), 2, '.', '');
|
$teoKg = number_format((float)($r['kg_sp'] ?? 0), 2, '.', '');
|
||||||
$teoMt = number_format((float)($r['metri'] ?? 0), 2, '.', '');
|
$teoMt = number_format((float)($r['metri'] ?? 0), 2, '.', '');
|
||||||
|
|
||||||
|
$descr = trim($r['note_extra'] ?? '');
|
||||||
|
$descrShow = $descr !== '' ? $descr : '—';
|
||||||
|
|
||||||
echo '<div class="compile-card" data-id="' . (int)$r['id'] . '"
|
echo '<div class="compile-card" data-id="' . (int)$r['id'] . '"
|
||||||
data-teokg="' . htmlspecialchars($teoKg) . '"
|
data-teokg="' . htmlspecialchars($teoKg) . '"
|
||||||
data-teomt="' . htmlspecialchars($teoMt) . '">';
|
data-teomt="' . htmlspecialchars($teoMt) . '">';
|
||||||
|
|
||||||
echo '<div class="compile-head">';
|
// --- RIGA COMPATTA (sempre visibile) ---
|
||||||
echo '<div class="compile-title">' . htmlspecialchars($r['matrice'] ?? '—') . '</div>';
|
echo '<div class="compile-row">';
|
||||||
echo '<div class="compile-badge">Da compilare</div>';
|
echo ' <div class="compile-main">';
|
||||||
|
echo ' <div class="compile-title">' . htmlspecialchars($r['matrice'] ?? '—') . '</div>';
|
||||||
|
echo ' <div class="compile-descr">' . htmlspecialchars($descrShow) . '</div>';
|
||||||
|
echo ' <div class="compile-meta">';
|
||||||
|
echo ' <span><i class="bi bi-person"></i> ' . htmlspecialchars($r['cliente'] ?? '—') . '</span>';
|
||||||
|
echo ' <span><i class="bi bi-clock-history"></i> ' . $endTime . '</span>';
|
||||||
|
echo ' </div>';
|
||||||
|
echo ' </div>';
|
||||||
|
echo ' <div class="compile-right">';
|
||||||
|
echo ' <span class="compile-badge">Compila dati</span>';
|
||||||
|
echo ' <i class="bi bi-chevron-down expand-arrow"></i>';
|
||||||
|
echo ' </div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
|
|
||||||
echo '<div class="compile-grid">';
|
// --- DETTAGLIO (collassato) ---
|
||||||
echo '<div><strong>Linea</strong><span>' . htmlspecialchars($r['linea'] ?? '—') . '</span></div>';
|
echo '<div class="compile-detail">';
|
||||||
echo '<div><strong>Cliente</strong><span>' . htmlspecialchars($r['cliente'] ?? '—') . '</span></div>';
|
echo ' <div class="compile-grid">';
|
||||||
echo '<div><strong>Fine produzione</strong><span>' . $endTime . '</span></div>';
|
echo ' <div><strong>Linea</strong><span>' . htmlspecialchars($r['linea'] ?? '—') . '</span></div>';
|
||||||
echo '<div><strong>Tempo occupato</strong><span>' . $occupato . '</span></div>';
|
echo ' <div><strong>Tempo occupato</strong><span>' . $occupato . '</span></div>';
|
||||||
echo '<div><strong>Tempo pause</strong><span>' . $pause . '</span></div>';
|
echo ' <div><strong>Tempo pause</strong><span>' . $pause . '</span></div>';
|
||||||
echo '<div><strong>Tempo netto</strong><span>' . $netto . '</span></div>';
|
echo ' <div><strong>Tempo netto</strong><span>' . $netto . '</span></div>';
|
||||||
echo '</div>';
|
echo ' </div>';
|
||||||
|
|
||||||
if (!empty($r['mescole_list'])) {
|
if (!empty($r['mescole_list'])) {
|
||||||
echo '<div class="compile-mescole"><strong>Mescole:</strong> '
|
echo ' <div class="compile-mescole"><strong>Mescole:</strong> '
|
||||||
. htmlspecialchars($r['mescole_list']) . '</div>';
|
. htmlspecialchars($r['mescole_list']) . '</div>';
|
||||||
}
|
}
|
||||||
if (!empty($r['note_extra'])) {
|
|
||||||
echo '<div class="compile-mescole"><strong>Descrizione:</strong> '
|
|
||||||
. htmlspecialchars($r['note_extra']) . '</div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '<div class="compile-actions">';
|
echo ' <div class="compile-actions">';
|
||||||
echo '<button class="compile-btn btn-fill" data-id="' . (int)$r['id'] . '">Compila dati</button>';
|
echo ' <button class="compile-btn btn-fill" data-id="' . (int)$r['id'] . '">Compila dati</button>';
|
||||||
echo '</div>';
|
echo ' </div>';
|
||||||
|
echo '</div>'; // .compile-detail
|
||||||
|
|
||||||
echo '</div>'; // .compile-card
|
echo '</div>'; // .compile-card
|
||||||
}
|
}
|
||||||
@@ -209,7 +220,7 @@ if (!empty($_GET['ajax'])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.card-header {
|
.card-header {
|
||||||
background: linear-gradient(135deg, #6d28d9, #7c3aed);
|
background: linear-gradient(135deg, #1d4ed8, #3b82f6);
|
||||||
color: white;
|
color: white;
|
||||||
padding: 1.2rem 1.5rem;
|
padding: 1.2rem 1.5rem;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
@@ -242,95 +253,171 @@ if (!empty($_GET['ajax'])) {
|
|||||||
#recordsContainer {
|
#recordsContainer {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding: 1.2rem 1.5rem 5rem 1.5rem;
|
padding: 1rem 1.5rem 5rem 1.5rem;
|
||||||
background: #f8fafc;
|
background: #f8fafc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* --- CARD COMPATTA --- */
|
||||||
.compile-card {
|
.compile-card {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border-radius: 1rem;
|
border-radius: 0.7rem;
|
||||||
border-left: 6px solid #7c3aed;
|
border: 1px solid #e2e8f0;
|
||||||
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.06);
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
|
||||||
padding: 1.1rem 1.3rem;
|
margin-bottom: 0.6rem;
|
||||||
margin-bottom: 1rem;
|
overflow: hidden;
|
||||||
|
transition: box-shadow 0.2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compile-head {
|
.compile-card:hover {
|
||||||
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.compile-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 0.8rem;
|
justify-content: space-between;
|
||||||
|
gap: 1rem;
|
||||||
|
padding: 0.7rem 1rem;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compile-main {
|
||||||
|
min-width: 0;
|
||||||
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compile-title {
|
.compile-title {
|
||||||
font-size: 1.3rem;
|
font-size: 1.05rem;
|
||||||
font-weight: 800;
|
font-weight: 700;
|
||||||
color: #1e293b;
|
color: #1e293b;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compile-descr {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
color: #64748b;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
margin-top: 0.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compile-meta {
|
||||||
|
display: flex;
|
||||||
|
gap: 1.2rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-top: 0.35rem;
|
||||||
|
font-size: 0.82rem;
|
||||||
|
color: #475569;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compile-meta span {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.35rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compile-meta i {
|
||||||
|
color: #94a3b8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compile-right {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.7rem;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compile-badge {
|
.compile-badge {
|
||||||
background: #ede9fe;
|
background: #dbeafe;
|
||||||
color: #6d28d9;
|
color: #1e40af;
|
||||||
padding: 0.35rem 0.85rem;
|
border: 1px solid #bfdbfe;
|
||||||
|
padding: 0.3rem 0.8rem;
|
||||||
border-radius: 2rem;
|
border-radius: 2rem;
|
||||||
font-size: 0.75rem;
|
font-size: 0.72rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
letter-spacing: 0.5px;
|
letter-spacing: 0.4px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.expand-arrow {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
color: #94a3b8;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compile-card.expanded .expand-arrow {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- DETTAGLIO COLLASSATO --- */
|
||||||
|
.compile-detail {
|
||||||
|
max-height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: max-height 0.35s ease, padding 0.35s ease;
|
||||||
|
padding: 0 1rem;
|
||||||
|
border-top: 0 solid #e2e8f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compile-card.expanded .compile-detail {
|
||||||
|
max-height: 500px;
|
||||||
|
padding: 0.9rem 1rem 1rem 1rem;
|
||||||
|
border-top: 1px solid #e2e8f0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compile-grid {
|
.compile-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
|
||||||
gap: 0.7rem 1rem;
|
gap: 0.6rem 1rem;
|
||||||
margin-bottom: 0.6rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.compile-grid strong {
|
.compile-grid strong {
|
||||||
display: block;
|
display: block;
|
||||||
color: #64748b;
|
color: #64748b;
|
||||||
font-size: 0.7rem;
|
font-size: 0.68rem;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
letter-spacing: 0.5px;
|
letter-spacing: 0.4px;
|
||||||
margin-bottom: 0.15rem;
|
margin-bottom: 0.1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compile-grid span {
|
.compile-grid span {
|
||||||
color: #1e293b;
|
color: #1e293b;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 1.05rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compile-mescole {
|
.compile-mescole {
|
||||||
color: #475569;
|
color: #475569;
|
||||||
font-size: 0.95rem;
|
font-size: 0.9rem;
|
||||||
margin-top: 0.3rem;
|
margin-top: 0.7rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compile-actions {
|
.compile-actions {
|
||||||
margin-top: 1rem;
|
margin-top: 0.9rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.compile-btn {
|
.compile-btn {
|
||||||
padding: 0.9rem 1.6rem;
|
padding: 0.75rem 1.4rem;
|
||||||
font-size: 1.05rem;
|
font-size: 1rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0.8rem;
|
border-radius: 0.7rem;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: white;
|
color: white;
|
||||||
text-transform: uppercase;
|
letter-spacing: 0.5px;
|
||||||
letter-spacing: 0.8px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-fill {
|
.btn-fill {
|
||||||
background: linear-gradient(135deg, #7c3aed, #6d28d9);
|
background: linear-gradient(135deg, #10b981, #059669);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-fill:hover {
|
.btn-fill:hover {
|
||||||
background: linear-gradient(135deg, #6d28d9, #5b21b6);
|
background: linear-gradient(135deg, #059669, #047857);
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-records {
|
.no-records {
|
||||||
@@ -342,7 +429,7 @@ if (!empty($_GET['ajax'])) {
|
|||||||
|
|
||||||
.no-records i {
|
.no-records i {
|
||||||
font-size: 3.5rem;
|
font-size: 3.5rem;
|
||||||
color: #a78bfa;
|
color: #cbd5e1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- MODALE --- */
|
/* --- MODALE --- */
|
||||||
@@ -442,7 +529,7 @@ if (!empty($_GET['ajax'])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modal-confirm {
|
.modal-confirm {
|
||||||
background: #7c3aed;
|
background: #10b981;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -529,7 +616,7 @@ if (!empty($_GET['ajax'])) {
|
|||||||
|
|
||||||
function loadRecords() {
|
function loadRecords() {
|
||||||
$('#recordsContainer').html(
|
$('#recordsContainer').html(
|
||||||
'<div class="text-center p-5"><i class="bi bi-hourglass-split" style="font-size:2.5rem;color:#a78bfa;"></i></div>'
|
'<div class="text-center p-5"><i class="bi bi-hourglass-split" style="font-size:2.5rem;color:#94a3b8;"></i></div>'
|
||||||
);
|
);
|
||||||
$.get('', {
|
$.get('', {
|
||||||
ajax: 1
|
ajax: 1
|
||||||
@@ -540,6 +627,11 @@ if (!empty($_GET['ajax'])) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Collasso/espansione riga (clic sulla riga, non sui bottoni)
|
||||||
|
$(document).on('click', '.compile-row', function() {
|
||||||
|
$(this).closest('.compile-card').toggleClass('expanded');
|
||||||
|
});
|
||||||
|
|
||||||
function recalcScrapPerc() {
|
function recalcScrapPerc() {
|
||||||
const kg = parseFloat($('#kgprod').val()) || 0;
|
const kg = parseFloat($('#kgprod').val()) || 0;
|
||||||
const sc = parseFloat($('#scarto').val()) || 0;
|
const sc = parseFloat($('#scarto').val()) || 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user