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