v5: исправлен доступ к данным — через имена колонок вместо индексов
This commit is contained in:
parent
951defe995
commit
854a459915
39
index.html
39
index.html
@ -183,13 +183,16 @@ function initHierarchy(data) {
|
||||
const obIx = dataColumns.indexOf('oblast');
|
||||
const raIx = dataColumns.indexOf('rayon');
|
||||
const okIx = dataColumns.indexOf('okrug');
|
||||
const obH = obIx !== -1 ? allData.columns[obIx] : null;
|
||||
const raH = raIx !== -1 ? allData.columns[raIx] : null;
|
||||
const okH = okIx !== -1 ? allData.columns[okIx] : null;
|
||||
|
||||
hierarchy = { oblasts: {}, rayons: {}, okrugs: {} };
|
||||
|
||||
data.forEach(row => {
|
||||
const ob = obIx !== -1 && row[obIx] ? String(row[obIx]).trim() : '';
|
||||
const ra = raIx !== -1 && row[raIx] ? String(row[raIx]).trim() : '';
|
||||
const ok = okIx !== -1 && row[okIx] ? String(row[okIx]).trim() : '';
|
||||
const ob = obH ? String(row[obH] || '').trim() : '';
|
||||
const ra = raH ? String(row[raH] || '').trim() : '';
|
||||
const ok = okH ? String(row[okH] || '').trim() : '';
|
||||
|
||||
if (ob && !hierarchy.oblasts[ob]) hierarchy.oblasts[ob] = new Set();
|
||||
if (ob && ra) {
|
||||
@ -242,13 +245,16 @@ function applyFilter() {
|
||||
const obIx = dataColumns.indexOf('oblast');
|
||||
const raIx = dataColumns.indexOf('rayon');
|
||||
const okIx = dataColumns.indexOf('okrug');
|
||||
const obH = obIx !== -1 ? allData.columns[obIx] : null;
|
||||
const raH = raIx !== -1 ? allData.columns[raIx] : null;
|
||||
const okH = okIx !== -1 ? allData.columns[okIx] : null;
|
||||
|
||||
let data = allData;
|
||||
if (ob || ra || ok) {
|
||||
data = allData.filter(row => {
|
||||
const rOb = obIx !== -1 ? String(row[obIx] || '').trim() : '';
|
||||
const rRa = raIx !== -1 ? String(row[raIx] || '').trim() : '';
|
||||
const rOk = okIx !== -1 ? String(row[okIx] || '').trim() : '';
|
||||
const rOb = obH ? String(row[obH] || '').trim() : '';
|
||||
const rRa = raH ? String(row[raH] || '').trim() : '';
|
||||
const rOk = okH ? String(row[okH] || '').trim() : '';
|
||||
if (ob && rOb !== ob) return false;
|
||||
if (ra && rRa !== ra) return false;
|
||||
if (ok && rOk !== ok) return false;
|
||||
@ -287,10 +293,12 @@ function renderTable() {
|
||||
// Group by district
|
||||
const raIx = dataColumns.indexOf('rayon');
|
||||
const okIx = dataColumns.indexOf('okrug');
|
||||
const raH = raIx !== -1 ? allData.columns[raIx] : null;
|
||||
const okH = okIx !== -1 ? allData.columns[okIx] : null;
|
||||
const groups = {};
|
||||
filteredData.forEach(row => {
|
||||
const ra = raIx !== -1 ? String(row[raIx] || '').trim() : '';
|
||||
const ok = okIx !== -1 ? String(row[okIx] || '').trim() : '';
|
||||
const ra = raH ? String(row[raH] || '').trim() : '';
|
||||
const ok = okH ? String(row[okH] || '').trim() : '';
|
||||
const key = ra + ' → ' + ok;
|
||||
if (!groups[key]) groups[key] = [];
|
||||
groups[key].push(row);
|
||||
@ -345,11 +353,13 @@ function renderTable() {
|
||||
function toggleGroup(groupName) {
|
||||
const raIx = dataColumns.indexOf('rayon');
|
||||
const okIx = dataColumns.indexOf('okrug');
|
||||
const raH = raIx !== -1 ? allData.columns[raIx] : null;
|
||||
const okH = okIx !== -1 ? allData.columns[okIx] : null;
|
||||
const parts = groupName.split(' → ');
|
||||
const ra = parts[0], ok = parts[1];
|
||||
const rows = filteredData.filter(r => {
|
||||
const rRa = raIx !== -1 ? String(r[raIx] || '').trim() : '';
|
||||
const rOk = okIx !== -1 ? String(r[okIx] || '').trim() : '';
|
||||
const rRa = raH ? String(r[raH] || '').trim() : '';
|
||||
const rOk = okH ? String(r[okH] || '').trim() : '';
|
||||
return rRa === ra && rOk === ok;
|
||||
});
|
||||
const allMarked = rows.every(r => markedIds.has(r._id));
|
||||
@ -403,12 +413,15 @@ function fillOblast() {
|
||||
if (katoIx === -1) { alert('Не найдена колонка КАТО'); return; }
|
||||
if (obIx === -1) { alert('Не найдена колонка области. Добавьте колонку "Область" в файл.'); return; }
|
||||
|
||||
const katoHeader = allData.columns[katoIx];
|
||||
const obHeader = allData.columns[obIx];
|
||||
|
||||
let filled = 0;
|
||||
allData.forEach(row => {
|
||||
const kato = String(row[dataColumns[katoIx]] || '').trim();
|
||||
const kato = String(row[katoHeader] || '').trim();
|
||||
const code = kato.length >= 2 ? kato.substring(0, 2) : '';
|
||||
if (code && KATO_REGIONS[code] && !String(row[dataColumns[obIx]] || '').trim()) {
|
||||
row[dataColumns[obIx]] = KATO_REGIONS[code];
|
||||
if (code && KATO_REGIONS[code] && !String(row[obHeader] || '').trim()) {
|
||||
row[obHeader] = KATO_REGIONS[code];
|
||||
filled++;
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user