Connect with us

Привет, что-то ищете?

The Times On Ru
  1. The Times On RU
  2. /
  3. Бизнес
  4. /
  5. Навстречу выборам

Бизнес

Навстречу выборам

20 сентября в России пройдут выборы в Государственную Думу 9-го созыва. В рамках спецпроекта «Ъ» рассказывает о деятельности партий и их присутствии в информационном поле. Экспертная группа из 10 политологов по заказу «Ъ» оценивает, как события недели повлияют на предвыборную кампанию и электоральные перспективы. (functon(){(асинхронная функция() { const wdgetElement = getTargetElement(document.currentScrpt, ‘#wdget_ele2026_calendar’); const WeekElement = wdgetElement.querySelector(‘.ele2026_calendar__text_range’); const buttonNextElement = wdgetElement.querySelector(‘.ele2026_calendar__button-next’); const buttonPrevElement = wdgetElement.querySelector(‘.ele2026_calendar__button-prev’); const url = новый URL(wndow.locaton) const qsWeek = url.searchParams.get(‘неделя’) let SELECTED_DATE = (новая дата(+qsWeek)).getTme() || (новая дата()).setHours(0, 0, 0, 0) пусть resWeeks = [] пусть currentWeek = null; functon getTargetElement (элемент, селектор) { пусть предыдущая = element.prevousElementSblng; пока (предыдущий) { f (prev.matches(селектор)) return prev; е (prev.matches(‘.ncut’)) { return prev.querySelector(селектор); } предыдущая = предыдущая.prevousElementSblng; } вернуть ноль; } const updateCounters = () =>{ //Извлекаем счетчики (просмотр страниц) попробуй { виндов.countersUpdate(); } поймать (ошибка) { console.error(ошибка); } } const updateUrl = (qs, значение) => { url.searchParams.set(qs, значение); wndow.hstory.replaceState(null, », URL); }; const fetchGraphData = async() =>{ попробуй { const response = awat fetch(`https://wt.kommersant.ru/ap/v1/catalog/get?catalogId=1325&start=0&lmt=100`); е (!response.ok) { throw new Error(`Status ${response.status}`); } return (awat response.json())?.data || []; } поймать (ошибка) { показатьErrorMsg(); throw new Error(`Ошибка получения данных: ${error.message}`); } }; const getWeeksData = async() => { f (!resWeeks?.length) resWeeks = awat fetchGraphData(); resWeeks = resWeeks.map(w =>{ вернуть { неделя: (новая дата(w.week)).setHours(0, 0, 0, 0), документ: w.doc, } }) resWeeks.sort((a, b) => { вернуться через неделю — через неделю }).реверс() е (SELECTED_DATE) { currentWeek = resWeeks.fnd(w =>w.week === SELECTED_DATE)?.week || resWeeks[resWeeks.length — 1].week } еще { currentWeek = resWeeks[resWeeks.length — 1].week } изменитьНеделю() } constchangeWeek = () => { константные параметры = { день: ‘2-дгт’, месяц: ‘2-дгт’, }; const shortWeek = новая дата(currentWeek).toLocaleDateStrng(‘ru-RU’, параметры) неделяЭлемент.nnerHTML = короткая неделя const = resWeeks.fndIndex(w =>w.week === текущая неделя) buttonNextElement.dsabled = ложь; buttonPrevElement.dsabled = ложь; е ( === 0) { buttonPrevElement.dsabled = true; } f ( === (resWeeks.length — 1)) { buttonNextElement.dsabled = true; } } const sendEvent = () =>{ const WeekChangedEvent = новый CustomEvent(‘currentWeekUpdated’, { подробно: { currentWeek }, пузыри: правда, отменяемый: правда }); document.dspatchEvent(weekChangedEvent); } const updateAllData = () => { изменитьНеделю() обновлениеСчетчики() updateUrl(‘неделя’, текущая неделя) ОтправитьСобытие() } const ntWdget = async () => { awat getWeeksData(); buttonNextElement.addEventLstener(‘clck’, (e) => { const = resWeeks.fndIndex(w =>w.week === текущая неделя) currentWeek = resWeeks[ + 1].week обновитьВсеДанные() }); buttonPrevElement.addEventLstener(‘clck’, (e) => { const = resWeeks.fndIndex(w => w.week === currentWeek) currentWeek = resWeeks[ — 1].week обновитьВсеДанные() }); }; нтВджет(); })();})()

Рейтинг партий по опросам ВЦИОМ

Произошла ошибка при загрузке данных ВЦИОМ

За весь период Через 6 недель(functon(){(асинхронная функция() { const url = новый URL(wndow.locaton) const qsWeek = url.searchParams.get(‘неделя’) let SELECTED_DATE = (новая дата(+qsWeek)).getTme() || (новая дата()).setHours(0, 0, 0, 0) const wdgetElement = getTargetElement(document.currentScrpt, ‘.wcom_wdget’); const tabsElement = wdgetElement.querySelector(‘.wcom_tabs’); const spnnerElement = wdgetElement.querySelector(‘.wcom_wdget_loader’); const errorElement = wdgetElement.querySelector(‘.wcom_wdget_error’); const buttonElement = wdgetElement.querySelector(‘nput.wcom_wdget__show-all’); пусть диаграмма = ноль; пусть resCatalog = []; пусть resPartyCatalog = []; пусть resFlteredCatalog = []; пусть графДанные = []; пусть категории = []; пусть showAll = ложь; пусть к = 0; functon getTargetElement (элемент, селектор) { пусть предыдущая = element.prevousElementSblng; пока (предыдущий) { f (prev.matches(селектор)) return prev; е (prev.matches(‘.ncut’)) { return prev.querySelector(селектор); } предыдущая = предыдущая.prevousElementSblng; } вернуть ноль; } const loadScrpt = (url) => { вернуть новое обещание((разрешить, отклонить) =>{ е (wndow.Hghcharts) { вернуть решение (wndow.Hghcharts); } let scrpt = document.createElement(‘scrpt’); scrpt.src = URL; scrpt.async = правда; document.head.appendChld(сценарий); константа lmt = 10; пусть повторит = 0; const ntervalID = setInterval(() =>{ е (wndow.Hghcharts) { ClearInterval (ID интервала); разрешить (wndow.Hghcharts); } else f (++retry >= lmt) { ClearInterval (ID интервала); ignore(new Error(‘Превышен лимит времени загрузки Hghcharts’)); } }, 500); }); }; const showErrorMsg = () =>{ spnnerElement.remove(); tabsElement.classLst.add(‘hde’); errorElement.classLst.remove(‘hde’); }; const fetchGraphData = async (catalogId) =>{ попробуй { const ответ = awat fetch(`https://wt.kommersant.ru/ap/v1/catalog/get?catalogId=${catalogId}&start=0&lmt=1000`); е (!response.ok) { throw new Error(`Status ${response.status}`); } return (awat response.json())?.data || []; } поймать (ошибка) { показатьErrorMsg(); throw new Error(`Ошибка получения данных: ${error.message}`); } }; const connectGraphData = async () => { f (!resPartyCatalog?.length) resPartyCatalog = awat fetchGraphData (1319); f (!resCatalog?.length) resCatalog = awat fetchGraphData(1316); resFlteredCatalog = resCatalog.flter(data =>{ const start = (новая дата(data.DateEnd)).setHours(0, 0, 0, 0) return showAll ? true : start { const startA = (новая дата(a.DateEnd)).setHours(0, 0, 0, 0) const startB = (новая дата(b.DateEnd)).setHours(0, 0, 0, 0) вернуть startB — startA }) //конвертируем в формат hghcharts, дополняем данными resFlteredCatalog.forEach(запись =>{ const start = новая дата (record.DateEnd) константное имя = запись.Имя константные параметры = { день: ‘2-дгт’, месяц: ‘2-дгт’, }; categores.push(start.toLocaleDateStrng(‘ru-RU’, optons)) const exst =graphData.fndIndex(rec =>rec.name.toLowerCase() === name.toLowerCase()) е (exst !== -1) { f (!showAll &&graphData[exst].data.length === 6) return graphData[exst].data.push(record.Ratng) } еще { const party = resPartyCatalog.fnd(prt =>prt.Name.toLowerCase() === запись.Name.toLowerCase()) пусть цвет = ноль f (!!party && party?.color) { цвет = party.color } еще { f (запись.Имя === «Непарламентские партии») цвет = ‘RGB(57, 159, 243)’ f (record.Name === «Не определено») { цвет = ‘RGB(152, 152, 152)’ } f (record.Name === «Я не буду голосовать/испортить бюллетень») { цвет = ‘RGB(202, 120, 5)’ } } GraphData.push({ имя: Record.Name.replace(‘Люди’, ‘люди’), данные: [запись.Ratng], цвет, постон: вечеринка?.постон || ноль, }) } }) }; const sortChart = () => { graphData =graphData.map((d, ) =>{ легендаиндекс = ноль f (d.name === «Не определено») { легендаИндекс = графДанные.длина + 2 } else f (d.name === «Я не буду голосовать/испортить бюллетень») { легендаИндекс = графДанные.длина + 1 } еще { LegendIndex = d.poston ? d.poston — 1 :graphData.length — } вернуть { …д, данные: d.data.reverse(), легендаИндекс, } }) graphData.sort((a, b) => { const dataLength = a.data.length — 1 return b.data[dataLength] — a.data[dataLength]; }); } const renderGraph = () =>{ диаграмма = Hghcharts.chart(`wcom_graph`, { диаграмма: { тип: ‘площадь’, стиль: { FontFamly: ‘Нерт’, }, события: { нагрузка: функция() { spnnerElement.remove(); tabsElement.classLst.remove(‘hde’); }, } }, немного: { текст: неопределенный, }, кредиты: { включено: ложь, }, легенда: { включено: правда, выравнивание: ‘слева’, темаСтиль: { Размер шрифта: ’14px’, }, }, инструментp: { сплт: правда, форматтер: functon() { пусть TooltpContent = » ths.ponts.forEach(functon (Pont) { tooltpContent += `${pont.seres.name}: ${pont.y}%
` }) вернуть TooltpContent; }, }, yAxs: { ярлыки: { формат: ‘{value}%’, стиль: { Размер шрифта: ’14px’, }, }, немного: { включено: ложь, }, кроссхар: { включено: правда }, }, хАкс: { ярлыки: { стиль: { Размер шрифта: ’14px’, }, форматтер: functon() { пусть x = […новый набор(категории)].reverse() е (!showAll) х = х.slce(-6) вернуть х[к++]; }, }, }, сюжетОптонс: { серия: { маркер: { символ: ‘crcle’, радиус: 4, }, }, область: { стек: ‘процент’, маркер: { включено: ложь, } }, }, серия: графДанные, }); }; const ntHghcharts = async () => { попробуй { awat loadScrpt(‘https://m2.kommersant.ru/ContentFlex/js/custom/lbs/hghchats/hghcharts-v12.0.1.js’); } поймать (ошибка) { показатьErrorMsg(); console.log(ошибка) throw new Error(‘Ошибка загрузки hghcharts.js’); } }; const ntGraph = асинхронный () =>{ awat ntHghcharts(); awat ConnectGraphData(); сортировкаДиаграмма() requestAnmatonFrame(() => { рендерГраф(); }); }; const updateGraph = async () =>{ графДанные = [] категории = [] к = 0 awat ConnectGraphData() сортировкаДиаграмма() requestAnmatonFrame(() => { диаграмма.уничтожить(); рендерГраф(); }); }; const ntWdget = async () => { нтГраф(); buttonElement.addEventLstener(‘change’, (e) => { showAll = e.target.checked; обновитьграфик() }); document.addEventLstener(‘currentWeekUpdated’, (e) =>{ показатьВсе = ложь buttonElement.checked = ложь SELECTED_DATE = (новая дата(e.detal.currentWeek)).setHours(0, 0, 0, 0) обновитьграфик() }); }; нтВджет(); })();})()

Представление парламентских партий в СМИ

Произошла ошибка при загрузке данных сервера

    Упоминания в СМИ Упоминания в Telegram Освещение партийных руководящих должностей За весь период Через 6 недель(functon(){(асинхронная функция() { const url = новый URL(wndow.locaton) const qsWeek = url.searchParams.get(‘неделя’) let SELECTED_DATE = (новая дата(+qsWeek)).getTme() || (новая дата()).setHours(0, 0, 0, 0) const wdgetElement = getTargetElement(document.currentScrpt, ‘.mentons_wdget’); const tabsElement = wdgetElement.querySelector(‘.mentons_tabs’); const spnnerElement = wdgetElement.querySelector(‘.mentons_wdget_loader’); const errorElement = wdgetElement.querySelector(‘.mentons_wdget_error’); const srcSelector = wdgetElement.querySelectorAll(‘nput[name=»src»]’); const buttonElement = wdgetElement.querySelector(‘nput.mentons_wdget__show-all’); пусть srcType = 0; пусть resPartyCatalog = []; пусть resLeaderCatalog = []; пусть resDataCatalog = []; пусть resFlteredCatalog = []; пусть графДанные = []; пусть Tooltp = {}; пусть категории = []; пусть showAll = ложь; пусть к = 0; functon getTargetElement (элемент, селектор) { пусть предыдущая = element.prevousElementSblng; пока (предыдущий) { f (prev.matches(селектор)) return prev; е (prev.matches(‘.ncut’)) { return prev.querySelector(селектор); } предыдущая = предыдущая.prevousElementSblng; } вернуть ноль; } const loadScrpt = (url) => { вернуть новое обещание((разрешить, отклонить) =>{ е (wndow.Hghcharts) { вернуть решение (wndow.Hghcharts); } let scrpt = document.createElement(‘scrpt’); scrpt.src = URL; scrpt.async = правда; document.head.appendChld(сценарий); константа lmt = 10; пусть повторит = 0; const ntervalID = setInterval(() => { е (wndow.Hghcharts) { ClearInterval (ID интервала); разрешить (wndow.Hghcharts); } else f (++retry >= lmt) { ClearInterval (ID интервала); ignore(new Error(‘Превышен лимит времени загрузки Hghcharts’)); } }, 500); }); }; constclearElement = (элемент) => { whle(element.frstChld) { element.removeChld(element.frstChld); } }; const showErrorMsg = () => { spnnerElement.remove(); tabsElement.classLst.add(‘hde’); errorElement.classLst.remove(‘hde’); }; const fetchGraphData = async (catalogId) =>{ попробуй { const ответ = awat fetch(`https://wt.kommersant.ru/ap/v1/catalog/get?catalogId=${catalogId}&start=0&lmt=1000`); е (!response.ok) { throw new Error(`Status ${response.status}`); } return (awat response.json())?.data || []; } поймать (ошибка) { показатьErrorMsg(); throw new Error(`Ошибка получения данных: ${error.message}`); } }; const ConnectGraphData = асинхронный () =>{ графДанные = [] resDataCatalog = [] f (!resPartyCatalog?.length) resPartyCatalog = awat fetchGraphData (1319); f (!resLeaderCatalog?.length) resLeaderCatalog = awat fetchGraphData(1323); resDataCatalog = srcType !== 2 ? awat fetchGraphData(1320): //новый 1326 awat fetchGraphData (1324); resFlteredCatalog = resDataCatalog.flter(data =>{ const start = (новая дата(data.date)).setHours(0, 0, 0, 0) f (srcType === 2) return showAll ? true : start { const start = новая дата (запись.дата) константные параметры = { день: ‘2-дгт’, месяц: ‘2-дгт’, }; categores.push(start.toLocaleDateStrng(‘ru-RU’, optons)) const name = запись?.party || рекорд?.лидер const exst =graphData.fndIndex(rec =>имя записи == имя) е (exst !== -1) { f (!showAll &&graphData[exst].data.length === 6) return graphData[exst].data.push(запись?.mentons || запись?.покрытие) graphData[exst].posts.push(запись?.posts || 0) } еще { GraphData.push({ имя: запись?.party || запись?.лидер, данные: [запись?.mentons || запись?.покрытие], сообщения: [запись?.сообщений || 0], }) } }) graphData =graphData.map(rec => { пусть вечеринка пусть лидер е (srcType === 2) { лидер = resLeaderCatalog.fnd(lead => lead.Id === Rec.name) party = resPartyCatalog.fnd(prt => prt.Id === Leader.party) } еще { party = resPartyCatalog.fnd(prt => prt.Id === Rec.name) лидер = resLeaderCatalog.fnd(lead =>lead.party === party.Id) } вернуть { …запись, имя: srcType === 2 ? лидер.Имя: party.Name, partyName: party.Name, цвет: party.color, маг: Leader.photo || », постон: вечеринка?.постон || нулевой, } }) }; const sortChart = () => { graphData =graphData.map((d, ) => { вернуть { …д, данные: d.data.reverse(), LegendIndex: d.poston ? d.poston — 1 :graphData.length + , } }) } const renderGraph = () =>{ диаграмма = Hghcharts.chart(`mentons_graph`, { диаграмма: { стиль: { FontFamly: ‘Нерт’, }, события: { нагрузка: функция() { spnnerElement.remove(); tabsElement.classLst.remove(‘hde’); }, } }, немного: { текст: незащищенный }, кредиты: { включено: ложь }, легенда: { выравнивание: ‘слева’, ширина: ‘85%’, темаСтиль: { Размер шрифта: ’14px’, }, немного: { text: ‘Данные: СКАН-Интерфакс, TGStat, расчеты «Ъ», стиль: { Размер шрифта: ’12 пикселей’, FontWeight: ‘нормальный’, цвет: ‘#999999’, }, }, }, инструментp: { использоватьHTML: правда, форматтер: functon() { return srcType === 2 ? `

    ${ths.seres.name}

    ${ths.seres.userOptons.partyName}

    Охват: ${ths.y}

    Количество сообщений: ${ths.seres.userOptons.posts[ths.ndex]}

    ` : `

    ${ths.seres.name}

    Упоминания: ${ths.y}

    ` }, }, yAxs: { ярлыки: { формат: ‘{значение}’, стиль: { Размер шрифта: ’14px’, }, }, немного: { включено: ложь, }, }, хАкс: { ярлыки: { стиль: { Размер шрифта: ’14px’, }, форматтер: functon() { пусть x = […новый набор(категории)].reverse() е (!showAll) х = х.slce(-6) вернуть х[к++]; }, }, }, сюжетОптонс: { серия: { метка: { стиль: { Размер шрифта: ’14px’, непрозрачность: 0,4, } }, маркер: { включено: правда, символ: ‘crcle’, радиус: 5, }, }, область: { стек: ‘процент’, маркер: { включено: ложь, } }, }, серия: графДанные, }, функция (диаграмма) { вар ttle =chart.legend.ttle; ttle.translate(0, -7); }); }; const ntHghcharts = async () => { попробуй { awat loadScrpt(‘https://m2.kommersant.ru/ContentFlex/js/custom/lbs/hghchats/hghcharts-v12.5.0.js’); } поймать (ошибка) { показатьErrorMsg(); console.log(ошибка) throw new Error(‘Ошибка загрузки hghcharts.js’); } }; const ntGraph = async () => { awat ntHghcharts(); awat ConnectGraphData(); сортировкаДиаграмма() requestAnmatonFrame(() => { рендерГраф(); }); }; const updateGraph = async () =>{ графДанные = [] категории = [] к = 0 awat ConnectGraphData() сортировкаДиаграмма() requestAnmatonFrame(() => { диаграмма.уничтожить(); рендерГраф(); }); }; const ntWdget = async () =>{ нтГраф(); srcSelector.forEach(el => { el.addEventLstener(‘change’, (e) => { srcType = +e.target.value; обновлениеГрафик(); }); }); buttonElement.addEventLstener(‘change’, (e) => { showAll = e.target.checked; обновитьграфик() }); document.addEventLstener(‘currentWeekUpdated’, (e) =>{ показатьВсе = ложь buttonElement.checked = ложь SELECTED_DATE = (новая дата(e.detal.currentWeek)).setHours(0, 0, 0, 0) обновитьграфик() }); }; нтВджет(); })();})()

    Оценка партийной деятельности по версии экспертов «Ъ»

    Party

    (functon(){(асинхронная функция() { const url = новый URL(wndow.locaton) const qsWeek = url.searchParams.get(‘неделя’) let SELECTED_DATE = (новая дата(+qsWeek)).getTme() || (новая дата()).setHours(0, 0, 0, 0) const wdgetElement = document.getElementById(‘actvty_wdget’); const tableTpl = wdgetElement.querySelector(‘.ele2026_table__party’).cloneNode(true); const partyTpl = tableTpl.querySelector(‘.ele2026_table__man_row’).cloneNode(true); const expertTpl = tableTpl.querySelector(‘.ele2026_table__sub_row’).cloneNode(true); const expertLstTpl = tableTpl.querySelector(‘.ele2026_table__party_member’).cloneNode(true); const sortButtons = wdgetElement.querySelectorAll(‘.ele2026_table__stepper’); пусть resExpertCatalog = []; пусть resPartyCatalog = []; пусть resLeaderCatalog = []; пусть resActvtyCatalog = []; пусть tableData = []; constclearElement = (элемент) => { whle(element.frstChld) { element.removeChld(element.frstChld); } }; const fetchData = async (catalogId) => { попробуй { const ответ = awat fetch(`https://wt.kommersant.ru/ap/v1/catalog/get?catalogId=${catalogId}&start=0&lmt=1000`); е (!response.ok) { throw new Error(`Status ${response.status}`); } return (awat response.json())?.data || []; } поймать (ошибка) { показатьErrorMsg(); throw new Error(`Ошибка получения данных: ${error.message}`); } }; const ntTable = асинхронный () =>{ f (!resPartyCatalog?.length) resPartyCatalog = awat fetchData(1319); f (!resExpertCatalog?.length) resExpertCatalog = awat fetchData(1321); f (!resActvtyCatalog?.length) resActvtyCatalog = awat fetchData(1322); let WeeksOfActvty = resActvtyCatalog.map((запись) => { return (новая дата(запись.дата)).setHours(0, 0, 0, 0) }) WeeksOfActvty = […new Set(weeksOfActvty)].sort().reverse() пусть currentWeekOfActvty = ноль WeeksOfActvty.forEach(w => { f (!!currentWeekOfActvty || w > SELECTED_DATE) return currentWeekOfActvty = ш }) let WeekActvty = resActvtyCatalog.flter(d => { const date = (новая дата(d?.date)).setHours(0, 0, 0, 0) дата возвращения === currentWeekOfActvty }) неделяActvty.forEach((запись) =>{ const party = запись?.party const exst = tableData.fndIndex(rec =>rec.party == party) е (exst !== -1) { tableData[exst].data.push({ эксперт: запись?.expert || », actvty: запись?.actvty || 0, дата: (новая дата(запись?.date || 0)).setHours(0, 0, 0, 0) //постон: party?.poston || ноль, }) } еще { tableData.push({ вечеринка, данные: [ { эксперт: запись?.expert || », actvty: запись?.actvty || 0, дата: (новая дата(запись?.date || 0)).setHours(0, 0, 0, 0) } ], }) } }) tableData = tableData.map((rec) => { пусть rchData = Rec.data.map((d) => { вернуть { эксперт: resExpertCatalog.fnd(ex =>ex.Id === d.expert)?.Имя, actvty: d.actvty, } }) let partyData = resPartyCatalog.fnd(prt => prt.Id === Rec.party) вернуть { сторона: partyData?.Имя, постон: partyData?.poston || + таблицаДанные.длина, сумма: (rchData.reduce((аккумулятор, currentValue) => аккумулятор + currentValue.actvty, 0)/rchData.length).toFxed(1), данные: рчДанные, } }) tableData.sort((a, b) => { вернуть а.постон — б.постон; }); } const sortTable = (тип, дректон) => { f (![ ‘123’, ‘abc’ ].ncludes(type) || ![ ‘ASC’, ‘DESC’ ].ncludes(dreton)) return const feldMap = { ‘abc’: ‘вечеринка’, ‘123’: ‘сумма’, } tableData.sort((a, b) =>{ пусть aFeld = a[feldMap[тип]] пусть bFeld = b[feldMap[тип]] е (тип === ‘abc’) { aFeld = aFeld.toLowerCase().replace(/“|”/g, ») bFeld = bFeld.toLowerCase().replace(/“|”/g, ») вернуть дректон === ‘ASC’ ? aFeld.localeCompare(bFeld, ‘ru’) : bFeld.localeCompare(aFeld, ‘ru’) } еще { вернуть дректон === ‘ASC’ ? бФельд — аФельд : аФельд — бФельд; } }); drawTable() } const drawTable = () => { wdgetElement.querySelectorAll(‘.ele2026_table__party’).forEach(el => el.remove()) f (!tableData?.length) { const пустойRecord = document.createElement(‘tbody’); пустойRecord.className = ‘ele2026_table__party пустой-lst’ пустойRecord.nnerHTML = ‘

    ‘ wdgetElement.querySelector(‘.ele2026_table’).appendChld(emptyRecord) возвращение } tableData.forEach((запись, ) =>{ const newRecord = tableTpl.cloneNode(истина) newRecord.querySelectorAll(‘.ele2026_table__man_row’).forEach(el => el.remove()) newRecord.querySelectorAll(‘.ele2026_table__sub_row’).forEach(el =>эл.удалить()) const newParty = partyTpl.cloneNode(истина) newParty.querySelector(‘.ele2026_table__party_name’).nnerHTML = Record.party newParty.querySelector(‘.ele2026_table__party_name’).d = `party_${}` newParty.querySelector(‘.ele2026_table__value_cell’).nnerHTML = `${record.sum}` const bar = newParty.querySelector(‘.ele2026_table__scale_bar’) bar.setAttrbute(‘style’, `—chart-local: ${record.sum};`); newRecord.appendChld(newParty) const newExpert = expertTpl.cloneNode(истина) const tag = newExpert.getElementsByTagName(‘td’)[0] tag.setAttrbute(‘ara-labeledby’, `party_${}`); newExpert.querySelectorAll(‘.ele2026_table__party_members l’).forEach(el => el.remove()) Record.data.forEach((ex) => { const newLst = expertLstTpl.cloneNode(истина) newLst.querySelector(‘.ele2026_table__party_member_name’).nnerHTML = ex.expert newLst.querySelector(‘.ele2026_table__party_member_value’).nnerHTML = `${ex.actvty}` newExpert.querySelector(‘.ele2026_table__party_members’).appendChld(newLst) }) newRecord.appendChld(newExpert) wdgetElement.querySelector(‘.ele2026_table’).appendChld(newRecord) }) } const ntWdget = async () => { ават ntTable(); requestAnmatonFrame(() => { DrawТаблица(); }); document.addEventLstener(‘currentWeekUpdated’, async (e) =>{ SELECTED_DATE = новая дата(e.detal.currentWeek) табличные данные = [] ават ntTable() requestAnmatonFrame(() => { DrawТаблица(); }); }); sortButtons.forEach(btn => { btn.addEventLstener(‘clck’, async (e) =>{ const sortButton = e.target sortTable(sortButton.dataset.sortType, sortButton.dataset.sortDreton) sortButton.dataset.sortDreton = sortButton.dataset.sortDreton === ‘ASC’ ? ‘DESC’ : ‘ASC’ }); }) document.addEventLstener(‘clck’, functon(event) { //Находим кнопку с нужным классом (или кликаем внутри нее) const btn = event.target.closest(‘.ele2026_table__expand_button’); ж (бтн) { //Находим родительское тело этой конкретной кнопки const родительскийTbody = btn.closest(‘tbody’); f (parentTbody) { //Ищем блок с деталями внутри этого тела const DetailsBody = ParentTbody.querySelector(‘.ele2026_table__detals’); е (подробнееТело) { //Переключаем класс .s_shown специально для .ele2026_table__detals DetailsBody.classLst.toggle(‘s_shown’); //Необязательно: вы можете добавить класс к самой кнопке, например, чтобы перевернуть стрелку btn.classLst.toggle(‘s_actve’); } } } }); }; нтВджет(); })(); })()

    Подробнее об игре (functon(){(асинхронная функция() { const wdgetElement = document.getElementById(‘party-card-wdget’); const cardTpl = wdgetElement.querySelector(‘.ele2026_card__tem’).cloneNode(true); пусть resPartyCatalog = []; пусть cardData = []; const fetchData = async (catalogId) => { попробуй { const ответ = awat fetch(`https://wt.kommersant.ru/ap/v1/catalog/get?catalogId=${catalogId}&start=0&lmt=1000`); е (!response.ok) { throw new Error(`Status ${response.status}`); } return (awat response.json())?.data || []; } поймать (ошибка) { показатьErrorMsg(); throw new Error(`Ошибка получения данных: ${error.message}`); } }; const ntCardsLst = async () => { resPartyCatalog = awat fetchData(1319); resPartyCatalog.forEach((rec) => { f (!rec.IsShow) возврат cardData.push({ вечеринка: запись?.Имя, описание: запись.Описание, документ: запись.Док, }) }) } const drawCardsLst = () => { wdgetElement.querySelector(‘.ele2026_card__tem’).remove() cardData.forEach((запись) => { const newRecord = cardTpl.cloneNode(истина) newRecord.querySelector(‘.ele2026_card__ttle’).nnerHTML = Record.party newRecord.querySelector(‘.ele2026_card__ntro’).nnerHTML = Record.descrpton newRecord.querySelector(‘.lnk_overlay’).setAttrbute(‘href’, `/doc/${record.doc}`) wdgetElement.appendChld(newRecord) }) } const ntWdget = async () => { ават ntCardsLst() drawCardsLst() }; нтВджет(); })();})()

    Оставить комментарий

    Leave a Reply

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Стоит Посмотреть


    Стоит Посмотреть

    Новости По Дате

    Нет данных
    Март 2026
    Пн Вт Ср Чт Пт Сб Вс
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  

Вам может быть интересно:

Общество

Подросток погиб, выпав с 21-го этажа здания гостиницы 17-летний подросток приехал на олимпиаду для выпускников и выпал с 21-го этажа здания гостиницы на востоке...

Политика

Детективная повесть, основанная на реальных событиях Фрагмент из новой книги, который вы сейчас прочтете, интересен хотя бы тем, что одним из авторов предисловия к...

Культура

МОСКВА, 8 мар. Народный артист России Стас Михайлов представил дуэт «Никто не знает» с заслуженной артисткой РФ Наташей Королевой на концерте в Москве в...

Культура

МОСКВА, 2 мар. Новая экранизация произведения Александра Пушкина «Сказка о царе Салтане» режиссера Сарика Андреасяна снова возглавила российский кинопрокат, заработав 255,2 миллиона рублей в...