PageSourceSearch

https://nezhno.space/wp-content/themes/my-theme/assets/js/theme-text.js?1790243585

js nezhno.space collected 2026-09-24 09:53:19 UTC 12,444 bytes, 322 lines download raw bytes

1(() => {
2  const list = document.querySelector(".trial_list");
3  const text = document.querySelector(".trial_description");
4
5  if (list) {
6    const dataBase = {};
7    const dataTheme = {};
8
9    function activeElement(array, elem, activeClass) {
10      array.forEach((arr) => {
11        if (arr !== elem) arr.classList.remove(activeClass);
12      });
13      elem.classList.add(activeClass);
14    }
15
16    //скрыть тему, если в ней нет контента
17    function subtitleVisible(arrayTitle, id) {
18      let themeArray = [];
19      dataBase[id].forEach((elem) => {
20        if (elem.text) {
21          themeArray.push(elem.theme);
22        }
23      });
24      arrayTitle.forEach((subtitle) => {
25        if (!themeArray.includes(subtitle.querySelector("p").textContent)) {
26          subtitle.style.display = "none";
27        } else {
28          subtitle.style.display = "";
29        }
30      });
31    }
32
33    //функция на изменение контента
34    function changeContent(elem) {
35      //удаление текущего текста
36      text.querySelector(".trial_description-text").innerHTML = "";
37      text.querySelector(".trial_text-wrap").innerHTML = "";
38
39      let paragraphs = elem.text.split("  ");
40
41      //1 вариант
42      if (elem.audio && elem.text.length > 300 && paragraphs.length > 2) {
43        let firstText, lastText;
44
45        //делим обзацы примерно пополам и рубим его по пробелу
46        half_paragraphs = Math.floor(paragraphs.length / 2);
47        firstText = paragraphs.slice(0, half_paragraphs).join("  ");
48        lastText = paragraphs
49          .slice(half_paragraphs + 1, paragraphs.length)
50          .join("  ");
51
52        let firstArray = firstText.split("  ");
53
54        for (let i = 0; i < firstArray.length; i++) {
55          text.querySelector(".trial_description-text").innerHTML += `
56            <p>${firstArray[i]}</p>
57          `;
58        }
59
60        let lastArray = lastText.split("  ");
61
62        for (let i = 0; i < lastArray.length; i++) {
63          text.querySelector(".trial_text-wrap").innerHTML += `
64            <p class='trial_text ${i === 0 ? "trial_text-show" : ""}'>${lastArray[i]
65            }</p>
66          `;
67        }
68      } else {
69        let arrayText = elem.text.split("  ");
70        if (arrayText) {
71          for (let i = 0; i < arrayText.length; i++) {
72            text.querySelector(".trial_description-text").innerHTML += `
73              <p>${arrayText[i]}</p>
74            `;
75          }
76        } else {
77          text.querySelector(".trial_description-text").innerHTML += `
78          <p>${elem.text}</p>
79        `;
80        }
81      }
82
83      //смена заголовка темы
84      document.querySelector(".trial_description-title").innerText = elem.theme;
85
86      //смена аудиофайла и его остановка
87      document.querySelector("audio").pause();
88      if (document.querySelector(".pause")) {
89        document.querySelector(".pause").classList.replace("pause", "play");
90      }
91
92      //скрывать плеер, если аудиофайла нет
93      // if (elem.audio) {
94      //   document.querySelector(".trial_audio").style.display = "";
95      //   document.querySelector(".player_title_text").innerText =
96      //     elem.audioTitle;
97      //   document.querySelector(
98      //     "audio"
99      //   ).src = `wp-content/themes/my-theme/assets/audio/${elem.audio}.mp3`;
100      //   document.querySelector(".info-tultip").classList.remove('active');
101      // } else {
102      //   document.querySelector(".trial_audio").style.display = "none";
103      // }
104
105      //скрыть плюс если нет скрытого текста
106      if (document.querySelector('.trial_btn-show')) {
107        if (document.querySelectorAll('.trial_text-wrap .trial_text').length <= 1) {
108          document.querySelector('.trial_btn-show').style.display = 'none';
109        } else {
110          document.querySelector('.trial_btn-show').style.display = '';
111        }
112      }
113    }
114
115    $.ajax({
116      url: "processing",
117      type: "POST",
118      dataType: "json",
119      data: { try_free: "try_free" },
120      success: function (data) {
121        //определение количества тем и их названия
122        for (let key in data) {
123          dataBase[data[key].title] = [];
124          dataTheme[data[key].title] = "";
125        }
126        //формирование объекта с данными из полученных
127        for (let id in dataBase) {
128          for (let key in data) {
129            if (data[key].title == id) {
130              if (data[key].theme_title.length > 0) {
131                dataTheme[data[key].title] = data[key].theme_title;
132              }
133              dataBase[data[key].title].push({
134                theme_title: data[key].theme_title,
135                title: data[key].title,
136                text: data[key].text,
137                audio: data[key].audio,
138                audioTitle: data[key].audio_title,
139                theme: data[key].trial_theme,
140              });
141            }
142          }
143        }
144      },
145    })
146      .then(function () {
147        //отрисовываем темы после полной обработки полученных данных
148        for (let key in dataBase) {
149          list.innerHTML += `
150          <li class="trial_item" id=${key}>
151              <p data-key=${key} class="trial_title ${key == 1 ? "active" : ""}">${dataTheme[key] ? dataTheme[key] : key}</p>
152                <ul class="trial_nested-list ${key == 1 ? "active" : ""}">
153                  <li class="show-active">
154                      <p>Общее</p>
155                  </li>
156                  <li>
157                      <p class="trial_list-reference">Рекомендуемая система</p>
158                  </li>
159                  <li>
160                      <p class="trial_list-diary">Дневник питания</p>
161                  </li>
162              </ul>
163          </li>
164        `;
165        }
166        //по умолчанию выставляется первая тема "общее"
167        dataBase[1].forEach((elem) => {
168          if (elem.theme === "Общее") {
169            changeContent(elem);
170          }
171        });
172      })
173      .then(function () {
174        //вешаем обработчики после отрисовки DOM
175        const $window = $(window);
176
177        //desktop
178        if ($window.width() >= 960) {
179          const desktopTitle = document.querySelectorAll(".trial_title");
180          const desktopSubtitle = document.querySelectorAll(
181            ".trial_nested-list li"
182          );
183          subtitleVisible(desktopSubtitle, 1)
184
185          desktopTitle.forEach((li) => {
186            li.addEventListener("click", function () {
187              //выделение активного заголовка
188              li.closest(".trial_item")
189                .querySelector(".trial_nested-list")
190                .classList.toggle("active");
191              li.classList.toggle("active");
192
193              //скрытие неактивного заголовка
194              desktopTitle.forEach((title) => {
195                if (title !== li && title.classList.contains("active")) {
196                  title.classList.remove("active");
197                  title
198                    .closest(".trial_item")
199                    .querySelector(".trial_nested-list")
200                    .classList.remove("active");
201                }
202              });
203
204              subtitleVisible(
205                li
206                  .closest(".trial_item")
207                  .querySelectorAll(".trial_nested-list li"),
208                li.closest(".trial_item").id
209              );
210              //смена контента в зависимости от активного подзаголовка
211              li.closest(".trial_item")
212                .querySelectorAll(".trial_nested-list li")
213                .forEach((item) => {
214                  if (item.classList.contains("show-active")) {
215                    dataBase[li.closest(".trial_item").id].forEach((elem) => {
216                      if (elem.theme === item.querySelector("p").textContent) {
217                        changeContent(elem);
218                      }
219                    });
220                  }
221                });
222            });
223          });
224          desktopSubtitle.forEach((li) => {
225            li.addEventListener("click", function () {
226              //выделение активного подзаголовка
227              activeElement(
228                li
229                  .closest(".trial_item")
230                  .querySelectorAll(".trial_nested-list li"),
231                li,
232                "show-active"
233              );
234              //смена текста при клике на подзаголовок
235              dataBase[li.closest(".trial_item").id].forEach((elem) => {
236                if (elem.theme === li.innerText) {
237                  changeContent(elem);
238                }
239              });
240            });
241          });
242        } else if ($window.width() < 960) {
243          //mobile
244          const mobileTitle = document.querySelectorAll(".trial_title");
245          const mobileSubtitle = document.querySelectorAll(
246            ".trial_nested-list_mobile li"
247          );
248          subtitleVisible(mobileSubtitle, 1)
249
250          mobileTitle.forEach((title) => {
251            title.addEventListener("click", function () {
252              //выделение активного заголовка
253              activeElement(mobileTitle, title, "active");
254
255              subtitleVisible(mobileSubtitle, title.getAttribute("data-key"));
256              let sub;
257              mobileSubtitle.forEach((subtitle) => {
258                //смена контента в зависимости от активного подзаголовка
259                if (subtitle.querySelector("p").classList.contains("active")) {
260                  sub = subtitle.querySelector("p");
261                  if (dataBase[title.getAttribute("data-key")].some((elem) => elem.theme === subtitle.querySelector("p").textContent)) {
262                    dataBase[title.getAttribute("data-key")].forEach((elem) => {
263                      if (elem.theme === subtitle.querySelector("p").textContent) {
264                        changeContent(elem);
265                      } 
266                    });
267                  } 
268                } 
269              });
270
271              if (text.querySelector(".trial_description-text p").textContent.length === 0) {
272                sub.classList.remove('active');
273                mobileSubtitle[0].querySelector('p').classList.add('active');
274                dataBase[title.getAttribute("data-key")].forEach((elem) => {
275                  if (elem.theme === mobileSubtitle[0].querySelector("p").textContent) {
276                    changeContent(elem);
277                  }
278                });
279              }
280            });
281          });
282
283          mobileSubtitle.forEach((sub) => {
284            sub.addEventListener("click", function () {
285              // выделение активного подзаголовка
286              mobileSubtitle.forEach((item) => {
287                if (
288                  item !== sub &&
289                  item.querySelector("p").classList.contains("active")
290                ) {
291                  item.querySelector("p").classList.remove("active");
292                }
293              });
294              sub.querySelector("p").classList.add("active");
295
296              // смена контента в зависимости от активного заголовка
297              mobileTitle.forEach((title) => {
298                if (title.classList.contains("active")) {
299                  dataBase[title.getAttribute("data-key")].forEach((elem) => {
300                    if (elem.theme === sub.querySelector("p").textContent) {
301                      changeContent(elem);
302                    }
303                  });
304                }
305              });
306            });
307          });
308          //слайдер тем в мобильной версии
309          $('.themes_slider').flickity({
310            draggable: true,
311            freeScroll: true,
312            prevNextButtons: false,
313            pageDots: false,
314            contain: true,
315            imagesLoaded: true,
316            watchCSS: true
317          });
318          
319        }
320      });
321  }
322})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.