v3 debug panel + more course header variants
This commit is contained in:
parent
4466c3ddb0
commit
0fadb006d7
@ -28,6 +28,13 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="debug" class="debug-section hidden">
|
||||
<div class="debug-box">
|
||||
<h3>Распознанные столбцы:</h3>
|
||||
<p id="debugColumns"></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="dashboard" class="dashboard hidden">
|
||||
<div class="stats-row">
|
||||
<div class="stat-card">
|
||||
|
||||
16
script.js
16
script.js
@ -16,6 +16,20 @@ document.getElementById('excelFile').addEventListener('change', function(e) {
|
||||
return;
|
||||
}
|
||||
|
||||
const sampleRow = jsonData[0] || {};
|
||||
const rawCols = Object.keys(sampleRow);
|
||||
const normalized = normalizeHeaders([sampleRow])[0];
|
||||
const mapping = rawCols.map(k => {
|
||||
const nk = k.toLowerCase().trim();
|
||||
const mapped = headerMap[nk] || nk;
|
||||
const val = normalized[mapped] || '(пусто)';
|
||||
return `<b>${k}</b> → ${mapped} = "${val}"`;
|
||||
}).join('<br>');
|
||||
|
||||
document.getElementById('debug').classList.remove('hidden');
|
||||
document.getElementById('debugColumns').innerHTML =
|
||||
`<strong>Оригинальные столбцы:</strong> ${rawCols.join(', ')}<br><br>${mapping}`;
|
||||
|
||||
processAndRender(jsonData);
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
@ -26,6 +40,8 @@ function normalizeHeaders(rows) {
|
||||
'фио': 'name', 'ф.и.о': 'name', 'сотрудник': 'name', 'employee': 'name', 'имя': 'name',
|
||||
'дивизион': 'division', 'подразделение': 'division', 'отдел': 'division', 'division': 'division', 'department': 'division',
|
||||
'курс': 'course', 'обучение': 'course', 'training': 'course', 'программа': 'course',
|
||||
'тренинг': 'course', 'тренинг/курс': 'course', 'название тренинга': 'course', 'название курса': 'course',
|
||||
'what': 'course', 'название': 'course', 'тема': 'course', 'дисциплина': 'course', 'module': 'course', 'модуль': 'course',
|
||||
'статус': 'status', 'status': 'status', 'состояние': 'status',
|
||||
'оценка': 'score', 'ball': 'score', 'score': 'score', 'рейтинг': 'score', 'балл': 'score',
|
||||
'тренер': 'trainer', 'trainer': 'coach', 'преподаватель': 'trainer', 'coach': 'trainer',
|
||||
|
||||
28
style.css
28
style.css
@ -95,6 +95,34 @@ main {
|
||||
margin-top: 16px !important;
|
||||
}
|
||||
|
||||
.debug-section {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.debug-section.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.debug-box {
|
||||
background: #1a2a3a;
|
||||
border: 1px solid #ff9800;
|
||||
border-radius: 12px;
|
||||
padding: 16px 24px;
|
||||
}
|
||||
|
||||
.debug-box h3 {
|
||||
color: #ff9800;
|
||||
font-size: 14px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.debug-box p {
|
||||
color: #e0e0e0;
|
||||
font-size: 13px;
|
||||
font-family: monospace;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.dashboard.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user