@@ -465,7 +440,6 @@
const tbody = document.getElementById('summaryTableBody');
if (!currentData) return;
tbody.innerHTML = '';
-
(currentData.organizations || []).forEach(org => { appendSummaryRow(tbody, org, 'main'); });
(currentData.additionalOrganizations || []).forEach(org => { appendSummaryRow(tbody, org, 'additional'); });
}
@@ -475,7 +449,31 @@
const statusText = org.status === 'active' ? 'Действует' : 'Требует уточнения';
const priorityText = org.priority === 'high' ? 'Высокий' : (org.priority === 'medium' ? 'Средний' : 'Низкий');
const displayType = type === 'main' ? (org.shortType || 'Основная') : (org.type || 'Дополнительная');
- const members = org.membersCount || (type === 'main' ? (org.summaryMembership || '—') : (org.members || '—'));
+
+ // Получаем количество членов из всех возможных полей
+ let members = '—';
+ if (org.membersCount && org.membersCount !== 'Данные отсутствуют') {
+ members = org.membersCount;
+ } else if (type === 'main' && org.summaryMembership && org.summaryMembership !== 'Данные отсутствуют') {
+ members = org.summaryMembership;
+ } else if (type === 'additional' && org.members && org.members !== 'Данные отсутствуют') {
+ members = org.members;
+ } else if (org.detailed?.membership?.count && org.detailed.membership.count !== 'Нет公开 данных') {
+ members = org.detailed.membership.count;
+ }
+
+ let allLinks = [];
+ if (org.resources?.links && Array.isArray(org.resources.links)) allLinks = [...org.resources.links];
+ if (org.links && Array.isArray(org.links)) allLinks = [...allLinks, ...org.links];
+ if (org.link && org.link !== '—' && !allLinks.includes(org.link)) allLinks.push(org.link);
+ allLinks = allLinks.filter(l => l && l.trim() !== '' && l !== '—');
+
+ let linksHtml = '—';
+ if (allLinks.length > 0) {
+ linksHtml = `
`;
+ }
const row = document.createElement('tr');
row.setAttribute('data-id', org.id);
@@ -486,7 +484,7 @@
${statusText} |
${escapeHtml(members)} |
${priorityText} |
-
${org.link && org.link !== '—' ? `ресурс` : '—'} |
+
${linksHtml} |
${type === 'additional' ?
@@ -499,7 +497,6 @@
tbody.appendChild(row);
}
- // Функции для работы со ссылками
function renderLinkInputs() {
const container = document.getElementById('linksList');
container.innerHTML = '';
@@ -513,7 +510,6 @@
container.appendChild(div);
});
- // Добавляем обработчики удаления
document.querySelectorAll('.remove-link-btn').forEach(btn => {
btn.addEventListener('click', (e) => {
const idx = parseInt(btn.dataset.index);
@@ -522,7 +518,6 @@
});
});
- // Добавляем обработчики изменения
document.querySelectorAll('.link-input').forEach((input, idx) => {
input.addEventListener('change', (e) => {
currentLinks[idx] = e.target.value;
@@ -559,24 +554,152 @@
fields.style.display = show ? 'block' : 'none';
}
+ function populateAdminForm() {
+ let org = null;
+ if (currentEditType === 'main') {
+ org = currentData.organizations?.find(o => o.id === currentEditId);
+ } else {
+ org = currentData.additionalOrganizations?.find(a => a.id === currentEditId);
+ }
+ if (!org) return;
+
+ document.getElementById('orgName').value = org.name || '';
+ document.getElementById('orgPriority').value = org.priority || 'medium';
+ document.getElementById('orgStatus').value = org.status || 'active';
+ document.getElementById('orgType').value = currentEditType === 'main' ? (org.shortType || '') : (org.type || '');
+
+ // Загружаем количество членов из правильного поля
+ let membersValue = '';
+ if (org.membersCount && org.membersCount !== 'Данные отсутствуют') {
+ membersValue = org.membersCount;
+ } else if (currentEditType === 'main' && org.summaryMembership && org.summaryMembership !== 'Данные отсутствуют') {
+ membersValue = org.summaryMembership;
+ } else if (currentEditType === 'additional' && org.members && org.members !== 'Данные отсутствуют') {
+ membersValue = org.members;
+ } else if (org.detailed?.membership?.count) {
+ membersValue = org.detailed.membership.count;
+ }
+ document.getElementById('orgMembersCount').value = membersValue;
+
+ // Загружаем ссылки
+ if (org.resources?.links) currentLinks = [...org.resources.links];
+ else if (org.links) currentLinks = [...org.links];
+ else if (org.link && org.link !== '—') currentLinks = [org.link];
+ else currentLinks = [];
+ renderLinkInputs();
+
+ if (currentEditType === 'main') {
+ const d = org.detailed || {};
+ document.getElementById('orgFullName').value = d.general?.fullName || '';
+ document.getElementById('orgCreated').value = d.general?.created || '';
+ document.getElementById('orgLegalForm').value = d.general?.legalForm || '';
+ document.getElementById('orgAddress').value = d.general?.address || '';
+ document.getElementById('orgKeyPeople').value = d.leadership?.keyPeople || '';
+ document.getElementById('orgSectors').value = d.membership?.sectors || '';
+ document.getElementById('orgCriteria').value = d.membership?.criteria || '';
+ document.getElementById('orgFees').value = d.membership?.fees || '';
+ document.getElementById('orgContacts').value = d.resources?.contacts || '';
+ }
+
+ document.getElementById('orgHead').value = org.detailed?.leadership?.head || '';
+ document.getElementById('orgGoals').value = org.detailed?.goals || '';
+ document.getElementById('orgActivity').value = org.detailed?.activity || '';
+ document.getElementById('orgStrengths').value = org.detailed?.assessment?.strengths || '';
+ document.getElementById('orgWeaknesses').value = org.detailed?.assessment?.weaknesses || '';
+ }
+
+ function updateOrgFromForm() {
+ let org = null;
+ const collectedLinks = collectLinks();
+ const membersValue = document.getElementById('orgMembersCount').value;
+
+ if (currentEditType === 'main') {
+ org = currentData.organizations?.find(o => o.id === currentEditId);
+ if (!org) return;
+
+ org.name = document.getElementById('orgName').value;
+ org.priority = document.getElementById('orgPriority').value;
+ org.status = document.getElementById('orgStatus').value;
+ org.shortType = document.getElementById('orgType').value;
+ org.membersCount = membersValue;
+ org.summaryMembership = membersValue;
+
+ org.resources = org.resources || {};
+ org.resources.links = collectedLinks;
+ org.link = collectedLinks[0] || '';
+
+ if (!org.detailed) org.detailed = {};
+ if (!org.detailed.general) org.detailed.general = {};
+ if (!org.detailed.leadership) org.detailed.leadership = {};
+ if (!org.detailed.membership) org.detailed.membership = {};
+ if (!org.detailed.resources) org.detailed.resources = {};
+ if (!org.detailed.assessment) org.detailed.assessment = {};
+
+ org.detailed.membership.count = membersValue;
+ org.detailed.general.fullName = document.getElementById('orgFullName').value;
+ org.detailed.general.created = document.getElementById('orgCreated').value;
+ org.detailed.general.legalForm = document.getElementById('orgLegalForm').value;
+ org.detailed.general.address = document.getElementById('orgAddress').value;
+ org.detailed.leadership.keyPeople = document.getElementById('orgKeyPeople').value;
+ org.detailed.membership.sectors = document.getElementById('orgSectors').value;
+ org.detailed.membership.criteria = document.getElementById('orgCriteria').value;
+ org.detailed.membership.fees = document.getElementById('orgFees').value;
+ org.detailed.resources.contacts = document.getElementById('orgContacts').value;
+ org.detailed.leadership.head = document.getElementById('orgHead').value;
+ org.detailed.goals = document.getElementById('orgGoals').value;
+ org.detailed.activity = document.getElementById('orgActivity').value;
+ org.detailed.assessment.strengths = document.getElementById('orgStrengths').value;
+ org.detailed.assessment.weaknesses = document.getElementById('orgWeaknesses').value;
+ } else {
+ org = currentData.additionalOrganizations?.find(a => a.id === currentEditId);
+ if (!org) return;
+
+ org.name = document.getElementById('orgName').value;
+ org.priority = document.getElementById('orgPriority').value;
+ org.status = document.getElementById('orgStatus').value;
+ org.type = document.getElementById('orgType').value;
+ org.members = membersValue;
+ org.membersCount = membersValue;
+ org.links = collectedLinks;
+ org.link = collectedLinks[0] || '';
+
+ if (!org.detailed) org.detailed = { leadership: {}, assessment: {} };
+ org.detailed.leadership.head = document.getElementById('orgHead').value;
+ org.detailed.goals = document.getElementById('orgGoals').value;
+ org.detailed.activity = document.getElementById('orgActivity').value;
+ if (!org.detailed.assessment) org.detailed.assessment = {};
+ org.detailed.assessment.strengths = document.getElementById('orgStrengths').value;
+ org.detailed.assessment.weaknesses = document.getElementById('orgWeaknesses').value;
+ }
+
+ saveAndRefresh().then(() => { initAdminSelect(); });
+ }
+
window.moveToMain = async function(id) {
const org = currentData.additionalOrganizations?.find(a => a.id === id);
if (!org) return;
+ let allLinks = [];
+ if (org.links) allLinks = [...org.links];
+ else if (org.link && org.link !== '—') allLinks = [org.link];
+ allLinks = [...new Set(allLinks.filter(l => l && l.trim() !== ''))];
+
+ const membersVal = org.membersCount || org.members || 'Данные отсутствуют';
+
const newMainOrg = {
id: org.id,
name: org.name,
priority: org.priority,
status: org.status,
shortType: org.type || 'Организация',
- membersCount: org.members || org.membersCount || 'Данные отсутствуют',
- link: org.link || '',
- sectors: org.sectors || '',
- resources: { links: org.links || [] },
+ membersCount: membersVal,
+ summaryMembership: membersVal,
+ link: allLinks[0] || '',
+ resources: { links: allLinks },
detailed: {
general: { fullName: org.name, created: '', legalForm: '', address: '', statusText: 'Действует' },
leadership: { head: org.detailed?.leadership?.head || '', keyPeople: '', branches: '' },
- membership: { count: org.members || 'Данные отсутствуют', criteria: '', fees: '', sectors: org.sectors || '' },
+ membership: { count: membersVal, criteria: '', fees: '', sectors: '' },
goals: org.detailed?.goals || '',
activity: org.detailed?.activity || '',
resources: { contacts: '' },
@@ -594,16 +717,23 @@
const org = currentData.organizations?.find(o => o.id === id);
if (!org) return;
+ let allLinks = [];
+ if (org.resources?.links) allLinks = [...org.resources.links];
+ else if (org.link && org.link !== '—') allLinks = [org.link];
+ allLinks = [...new Set(allLinks.filter(l => l && l.trim() !== ''))];
+
+ const membersVal = org.membersCount || org.summaryMembership || 'Данные отсутствуют';
+
const newAdditionalOrg = {
id: org.id,
name: org.name,
priority: org.priority,
status: org.status,
type: org.shortType || 'Основная',
- members: org.membersCount || org.summaryMembership || 'Данные отсутствуют',
- link: org.link || '',
- sectors: org.sectors || '',
- links: org.resources?.links || [],
+ members: membersVal,
+ membersCount: membersVal,
+ link: allLinks[0] || '',
+ links: allLinks,
detailed: {
leadership: { head: org.detailed?.leadership?.head || '' },
goals: org.detailed?.goals || '',
@@ -657,109 +787,6 @@
});
}
- function populateAdminForm() {
- let org = null;
- if (currentEditType === 'main') {
- org = currentData.organizations?.find(o => o.id === currentEditId);
- } else {
- org = currentData.additionalOrganizations?.find(a => a.id === currentEditId);
- }
- if (!org) return;
-
- document.getElementById('orgName').value = org.name || '';
- document.getElementById('orgPriority').value = org.priority || 'medium';
- document.getElementById('orgStatus').value = org.status || 'active';
- document.getElementById('orgType').value = currentEditType === 'main' ? (org.shortType || '') : (org.type || '');
-
- // Количество членов
- const membersCount = org.membersCount || (currentEditType === 'main' ? org.summaryMembership : org.members) || '';
- document.getElementById('orgMembersCount').value = membersCount;
-
- // Ссылки
- currentLinks = org.resources?.links || org.links || [];
- if (currentLinks.length === 0 && org.link) currentLinks = [org.link];
- renderLinkInputs();
-
- if (currentEditType === 'main') {
- const d = org.detailed || {};
- document.getElementById('orgFullName').value = d.general?.fullName || '';
- document.getElementById('orgCreated').value = d.general?.created || '';
- document.getElementById('orgLegalForm').value = d.general?.legalForm || '';
- document.getElementById('orgAddress').value = d.general?.address || '';
- document.getElementById('orgKeyPeople').value = d.leadership?.keyPeople || '';
- document.getElementById('orgSectors').value = d.membership?.sectors || org.sectors || '';
- document.getElementById('orgCriteria').value = d.membership?.criteria || '';
- document.getElementById('orgFees').value = d.membership?.fees || '';
- document.getElementById('orgContacts').value = d.resources?.contacts || '';
- }
-
- document.getElementById('orgHead').value = org.detailed?.leadership?.head || '';
- document.getElementById('orgGoals').value = org.detailed?.goals || '';
- document.getElementById('orgActivity').value = org.detailed?.activity || '';
- document.getElementById('orgStrengths').value = org.detailed?.assessment?.strengths || '';
- document.getElementById('orgWeaknesses').value = org.detailed?.assessment?.weaknesses || '';
- }
-
- function updateOrgFromForm() {
- let org = null;
- if (currentEditType === 'main') {
- org = currentData.organizations?.find(o => o.id === currentEditId);
- if (!org) return;
-
- org.name = document.getElementById('orgName').value;
- org.priority = document.getElementById('orgPriority').value;
- org.status = document.getElementById('orgStatus').value;
- org.shortType = document.getElementById('orgType').value;
- org.membersCount = document.getElementById('orgMembersCount').value;
-
- // Сохраняем ссылки
- org.resources = org.resources || {};
- org.resources.links = collectLinks();
-
- if (!org.detailed) org.detailed = {};
- if (!org.detailed.general) org.detailed.general = {};
- if (!org.detailed.leadership) org.detailed.leadership = {};
- if (!org.detailed.membership) org.detailed.membership = {};
- if (!org.detailed.resources) org.detailed.resources = {};
- if (!org.detailed.assessment) org.detailed.assessment = {};
-
- org.detailed.general.fullName = document.getElementById('orgFullName').value;
- org.detailed.general.created = document.getElementById('orgCreated').value;
- org.detailed.general.legalForm = document.getElementById('orgLegalForm').value;
- org.detailed.general.address = document.getElementById('orgAddress').value;
- org.detailed.leadership.keyPeople = document.getElementById('orgKeyPeople').value;
- org.detailed.membership.sectors = document.getElementById('orgSectors').value;
- org.detailed.membership.criteria = document.getElementById('orgCriteria').value;
- org.detailed.membership.fees = document.getElementById('orgFees').value;
- org.detailed.resources.contacts = document.getElementById('orgContacts').value;
- org.detailed.leadership.head = document.getElementById('orgHead').value;
- org.detailed.goals = document.getElementById('orgGoals').value;
- org.detailed.activity = document.getElementById('orgActivity').value;
- org.detailed.assessment.strengths = document.getElementById('orgStrengths').value;
- org.detailed.assessment.weaknesses = document.getElementById('orgWeaknesses').value;
- } else {
- org = currentData.additionalOrganizations?.find(a => a.id === currentEditId);
- if (!org) return;
-
- org.name = document.getElementById('orgName').value;
- org.priority = document.getElementById('orgPriority').value;
- org.status = document.getElementById('orgStatus').value;
- org.type = document.getElementById('orgType').value;
- org.members = document.getElementById('orgMembersCount').value;
- org.links = collectLinks();
-
- if (!org.detailed) org.detailed = { leadership: {}, assessment: {} };
- org.detailed.leadership.head = document.getElementById('orgHead').value;
- org.detailed.goals = document.getElementById('orgGoals').value;
- org.detailed.activity = document.getElementById('orgActivity').value;
- if (!org.detailed.assessment) org.detailed.assessment = {};
- org.detailed.assessment.strengths = document.getElementById('orgStrengths').value;
- org.detailed.assessment.weaknesses = document.getElementById('orgWeaknesses').value;
- }
-
- saveAndRefresh().then(() => { initAdminSelect(); });
- }
-
async function addNewOrganization() {
const newId = Math.max(
...(currentData.organizations?.map(o => o.id) || [0]),
@@ -839,7 +866,6 @@
function escapeHtml(str) { if (!str) return ''; return str.replace(/[&<>]/g, m => ({ '&': '&', '<': '<', '>': '>' }[m])); }
- // Admin panel controls
const adminPanel = document.getElementById('adminPanel');
const overlay = document.getElementById('overlay');
document.getElementById('adminToggleBtn').addEventListener('click', () => {
@@ -879,7 +905,6 @@
});
});
- // Tabs
const btns = document.querySelectorAll('.tab-btn');
const panels = { detailed: document.getElementById('detailedPanel'), summary: document.getElementById('summaryPanel') };
btns.forEach(btn => {
|