var groupsObj = {}, weekClosed=[], weekOpened=[], weekWork=[]; let masDay=['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье']; var flag = 0;//флаг загрузки жсона //var foo = ; //===================================================================== //получение внешнего json async function getJSON(url) { const response = await fetch(url, { //method: "GET", //headers: {'Content-Type': 'text/plain'}, //mode: 'no-cors' }); if (!response.ok) {throw new Error("Выявлена ошибка при выполнении сетевого запроса :(");} else console.log('Получен ответ от '+url); return await response.json(); } //===================================================================== async function getArray() { //console.log('Начало работы скрипта парсинга json групп'); let groups = ''; groupsObj = ''; //обновим массив групп в сайта, если доступен try { groupsObj = await getJSON('https://vps.na-sea.ru/groups.json'); if(typeof(groupsObj)==='object') {flag = 1; //console.log('json загружен с сайта'); } }catch(err){console.log(err);} if(!flag) console.log('json остался пустым'); groups = groupsObj.groups; if(!groups) {console.log('Объект групп пуст!'); return -1;} let towns = Object.keys(groups);//массив городов if(towns.length==0) {console.log('Объект городов пуст!'); return -1;} //соберем массив закрытых по дням недели - время, группа, адрес, карта, фото, город, тема, день weekClosed = new Array(masDay.length); for(let day=0;dayМаршрут'; arr[3] = karta; } else arr[3] = ''; //кладем ссылку фото if(!!groups[towns[num]][name[i]]['Закрытое'][masDay[day]][time[k]].photo) { let photo = groups[towns[num]][name[i]]['Закрытое'][masDay[day]][time[k]].photo; //photo = 'Вход / Фото'; arr[4] = photo;//кладем ссылку фото } else arr[4] = '';//кладем фото //кладем город arr[5] = towns[num]; //тема if(!!groups[towns[num]][name[i]]['Закрытое'][masDay[day]][time[k]].mode) arr[6] = groups[towns[num]][name[i]]['Закрытое'][masDay[day]][time[k]].mode; //день arr[7] = masDay[day]; weekClosed[day].push(arr); } } } } //console.log('В '+masDay[day]+' = '+weekClosed[day].length); } //отдельно соберем открытые и рабочие собрания - время, группа, адрес, карта, фото, город, тема, день for(let num=0;numМаршрут'; arr[3] = karta; } else arr[3] = ''; //кладем ссылку фото if(!!groups[towns[num]][name[i]]['Открытое'][dni[j]][time[k]].photo) { let photo = groups[towns[num]][name[i]]['Открытое'][dni[j]][time[k]].photo; //photo = 'Вход / Фото'; arr[4] = photo;//кладем ссылку фото } else arr[4] = '';//кладем фото //кладем город arr[5] = towns[num]; //тема if(!!groups[towns[num]][name[i]]['Открытое'][dni[j]][time[k]].mode) arr[6] = groups[towns[num]][name[i]]['Открытое'][dni[j]][time[k]].mode; //день arr[7] = dni[j]; weekOpened.push(arr); } } } //просто соберем все группы, у которых есть рабочие собрания if(!!groups[towns[num]][name[i]]['Рабочее']) { let dni = Object.keys(groups[towns[num]][name[i]]['Рабочее']);//дни for(let j=0;jМаршрут'; arr[3] = karta; } else arr[3] = ''; //кладем ссылку фото if(!!groups[towns[num]][name[i]]['Рабочее'][dni[j]][time[k]].photo) { let photo = groups[towns[num]][name[i]]['Рабочее'][dni[j]][time[k]].photo; //photo = 'Вход / Фото'; arr[4] = photo;//кладем ссылку фото } else arr[4] = '';//кладем фото //кладем город arr[5] = towns[num]; //тема if(!!groups[towns[num]][name[i]]['Рабочее'][dni[j]][time[k]].mode) arr[6] = groups[towns[num]][name[i]]['Рабочее'][dni[j]][time[k]].mode; //день arr[7] = dni[j]; weekWork.push(arr); } } } } } //сортируем массив по времени for(let day=0;day '; //имя группы if(!!weekClosed[day][i][1]) str += 'Группа '+weekClosed[day][i][1]+' - '; //адрес if(!!weekClosed[day][i][2]) str += weekClosed[day][i][5]+', '+weekClosed[day][i][2]+'
';//перевод строки //тема //if(!!weekClosed[day][i][6]) str += 'Тема: '+weekClosed[day][i][6]+'
'; if(!!weekClosed[day][i][6]) str += 'Тема: '+weekClosed[day][i][6]+'
'; }catch(err){console.log(err);} } //x[day].innerHTML = '';//чистим старое x[day].innerHTML = str;//вставляем новое } //console.log('Закрытые заполнил'); } //===================================================================== //для Открытых собраний async function CreateNewTableOpened() { //console.log('Начало работы скрипта Открытых'); //найдем элемент группа колоки открытых собраний let x; try{x = document.getElementById('column-id-1580797589575').getElementsByClassName('sppb-panel-group');}catch(err){console.log(err);} if(!x || x.length==0) {console.log('Группа Открытых не найдена!'); return;} x[0].innerHTML = '';//чистим всю группу //теперь пройдемся по всем группам с открытыми собраниями //время, группа, адрес, карта, фото, город, тема, день for(let i=0;i'; str += '
'; //тут ставим время и день str += '

'+weekOpened[i][0]+' '+weekOpened[i][7]+'

'; str += '
'; x[0].innerHTML += str;//добавляем элемент } //console.log('Открытые заполнил'); } //===================================================================== //для Рабочих собраний async function CreateNewTableWork() { //console.log('Начало работы скрипта Рабочих'); //найдем элемент группа колоки рабочих собраний let x; try{x = document.getElementById('column-id-1580797589574').getElementsByClassName('sppb-panel-group');}catch(err){console.log(err);} if(!x || x.length==0) {console.log('Группа Рабочих не найдена!'); return;} x[0].innerHTML = '';//чистим всю группу //теперь пройдемся по всем группам с рабочими собраниями //время, группа, адрес, карта, фото, город, тема, день for(let i=0;i'; str += '
'; //тут ставим время и день str += '

'+weekWork[i][0]+' '+weekWork[i][7]+'

'; str += '
'; x[0].innerHTML += str;//добавляем элемент } //console.log('Рабочие заполнил'); } //===================================================================== //создадим расписание закрытых на стр. города async function setTown(town) { //console.log('Начало работы скрипта setTown'); let x; //соберем имеющиеся секции в массив try{x = document.getElementById('sp-page-builder').getElementsByClassName('sppb-section');}catch(err){} if(!x || x.length==0) {console.error('Секции не найдены'); return;} //скопируем секции заголовка, текста и карты let sectionTitle = x[0].cloneNode(true);//Заголовок let sectionContent = x[1].cloneNode(true);//Текст let sectionKarta = x[x.length-1].cloneNode(true);//Карта //получим объект групп let groups = groupsObj.groups[town]; if(!groups) {console.error('Отсутствует groups'); return;} let name = Object.keys(groups);//соберем список групп в городе if(name.length==0) {console.error('Список групп пуст!'); return;} //return; //удалим старые секции document.getElementById('sp-page-builder').getElementsByClassName('page-content')[0].innerHTML = ''; let table = document.getElementById('sp-page-builder').getElementsByClassName('page-content'); if(!table) {console.error('Отсутствует page-content '); return;} //вставим новые секции let str = ''; for(let i=0;i'+'
';//имя группы for(let j in days) { let time = Object.keys(groups[name[i]]['Закрытое'][days[j]]); for(let k in time) { //день, время, адрес let adr = groups[name[i]]['Закрытое'][days[j]][time[k]].address+' '; adr += groups[name[i]]['Закрытое'][days[j]][time[k]].address_add; str += days[j]+' - '+time[k]+' - '+adr+'
'; } } str += '
'; } //для Альметьевска добавим еще и Нижняя Мактаму if(town == 'г.Альметьевск') { groups = ''; groups = groupsObj.groups['г.Нижняя Мактама']; if(!!groups) name = Object.keys(groups); else name = ''; if(!!groups && !!name) { for(let i=0;i'+'
';//имя группы for(let j in days) { let time = Object.keys(groups[name[i]]['Закрытое'][days[j]]); for(let k in time) { //день, время, адрес let adr = groups[name[i]]['Закрытое'][days[j]][time[k]].address+' '; adr += groups[name[i]]['Закрытое'][days[j]][time[k]].address_add; str += days[j]+' - '+time[k]+' - '+adr+'
'; } } str += '
'; } } town = 'г.Альметьевск и Н.Мактама'; } sectionTitle.getElementsByClassName('sppb-addon-title')[0].innerHTML = town;//меняем заголовок table[0].appendChild(sectionTitle);//ставим на страницу if(town != 'г.Туймазы') sectionContent.getElementsByClassName('sppb-addon-content')[0].innerHTML = str;//меняем текст else sectionContent.getElementsByClassName('sppb-addon-content')[1].innerHTML = str;//меняем текст table[0].appendChild(sectionContent); table[0].appendChild(sectionKarta);//в конце положим карту } //===================================================================== async function Zapusk() { //сначала проверяем страницу на недельную гармошку let x, href; try{x = document.getElementById('sppb-addon-1580631669548').getElementsByClassName('sppb-panel-body');}catch(err){} if(!!x && x.length==7) { let res = await getArray();//загрузим и распарсим json групп if(res>0 && !!weekClosed) { CreateNewTableRaspis();//заполним расписание закрытых CreateNewTableOpened();//заполним расписание открытых CreateNewTableWork();//заполним расписание рабочих } return; } //проверим на страницу города href = ''; href = document.getElementsByTagName("head")[0].getElementsByTagName("base")[0].href; if(!!href && href.indexOf('.html')+1) { let town = ''; if(href.indexOf('almetevsk.html')+1) town = 'г.Альметьевск'; else if(href.indexOf('aznakaevo.html')+1) town = 'г.Азнакаево'; else if(href.indexOf('bavly.html')+1) town = 'г.Бавлы'; else if(href.indexOf('bugulma.html')+1) town = 'г.Бугульма'; else if(href.indexOf('leninogorsk.html')+1) town = 'г.Лениногорск'; else if(href.indexOf('tujmazy.html')+1) town = 'г.Туймазы'; //else if(href.indexOf('oktyabrskij.html')+1) town = 'г.Октябрьский'; if(!!town) { let res = await getArray();//загрузим и распарсим json групп if(res>0 && !!weekClosed) setTown(town);//создадим расписание закрытых на стр. города } return; } //проверим на главную страницу href = ''; href = document.getElementsByTagName("head")[0].getElementsByTagName("base")[0].href; if(!!href && href=='https://na-sea.ru/') { let telnumber = document.getElementsByClassName('header')[0].getElementsByClassName("custom header")[0].getElementsByTagName("h1")[0].innerHTML; if(!!telnumber) { let res = await getArray();//загрузим и распарсим json групп if(res>0 && !!groupsObj.phone) { //меняем номер телефона document.getElementsByClassName('header')[0].getElementsByClassName("custom header")[0].getElementsByTagName("h1")[0].innerHTML = groupsObj.phone; } } return; } console.log('Подходящей страницы не обнаружено'); } //===================================================================== window.onload = Zapusk; // Начать отображение после загрузки документа //window.onload = CreateNewTableClosed; //=====================================================================