/* JS-фреймворк Комистат, 2019 год */ // Базовый путь хранилища файлов var basePath = '/storage/folder_page/2018/12-25/vzY9WJ6V/'; // Функция преобразования даты из вида 'mm/dd/yyyy' в вид 'dd.mm.yyy' function GetDate(st) { var pattern = /(\d{2})\.(\d{2})\.(\d{4})/; var dt = new Date(st.substring(0, 10).replace(pattern, '$3-$2-$1')); var day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate(); var m = dt.getMonth() + 1; var month = m < 10 ? '0' + m : m; var result = day + "." + month + "." + dt.getFullYear(); return result; } // Функция возвращает год из даты вида 'mm/dd/yyyy' function GetYear(st) { var pattern = /(\d{2})\.(\d{2})\.(\d{4})/; var dt = new Date(st.substring(0, 10).replace(pattern, '$3-$2-$1')); return dt.getFullYear(); } // Загружает содержимое css-файла в элемент style function LoadCSS(file) { var j = document.createElement("style"); j.async = false; j.type = "text/css"; $.get(file, function (data) { j.innerHTML = data; var head = document.head || document.getElementsByTagName('head')[0]; head.appendChild(j); }); } // Возвращает объект JSON из указанного тектового файла function GetJSON(path) { var result; var request = new XMLHttpRequest(); request.open("GET", path, true); request.onload = function () { if (request.status >= 200 && request.status < 400) { result = eval(request.responseText); } }; request.send(); return result; } // Добавляет документы в блок "Список документов" с указанным заголовком function FillToggleSection(name, search) { var json = GetJSON(basePath + "json/" + name + ".txt"); var div = $("div.toggle-section:contains('" + search + "')")[0]; if (div != null) { var div_ = document.createElement("div"); div_.className = "toggle-section__content"; div_.innerHTML = '
'; div.appendChild(div_); for (var i = 0; i < json.length; i++) { if (i < 2) { var div2 = div.getElementsByClassName("toggle-section__content--open")[0]; } else { var div2 = div_; } var div_card = div2.getElementsByClassName("document-list__items")[0]; var a = '
' + json[i]["title"] + '
' + GetDate(json[i]["date"]) + '
'; div_card.innerHTML += (json[i]["key"] == search || json[i]["cat"] == search) ? a : ''; } } } // Добавляет документы в блок "Разворачивающийся список" с указанным заголовком function FillToggleCard(name, search) { var json = GetJSON(basePath + "json/" + name + ".txt"); var div = $("div.toggle-card:contains('" + search + "')")[0]; if (div != null) { var div_card = div.getElementsByClassName("document-list__items")[0]; for (var i = 0; i < json.length; i++) { var a = '
' + json[i]["title"] + '
' + GetDate(json[i]["date"]) + '
'; div_card.innerHTML += a; } } } // Преобразует элемент div с классом 'km-toggle' в div с заголовком и скрывающимся телом function MakeToggle() { var divs = $('div.km-toggle'); for (var i = 0; i < divs.length; i++) { divs[i].classList.add('toggle-section'); var div2 = $('
', { class: 'toggle-section__content' }); var div22 = $('
', { class: 'toggle-section__title-content' }); $('
').appendTo(div2); div22.appendTo(div2); $(divs[i]).children(':not(:first)').appendTo(div22); var div1 = $('
', { class: 'toggle-section__title' }); var div11 = $('
', { class: 'title-section' }); div11.appendTo(div1); $(divs[i]).children(':first').appendTo(div11); div1.appendTo(divs[i]); div2.appendTo(divs[i]); } } // Меняет элементы e1 и e2 местами function Rearrange(e1, e2){ e2.parentNode.insertBefore(e1.cloneNode(true), e2.nextSibling); e1.remove(); } // Загружает элемент из другой страницы function LoadElement(fromUrl, fromSelector, toSelector) { var j = document.createElement("div"); var to = $(toSelector); j.async = false; j.type = "text/html"; $.get(fromUrl, function ($data) { html = $(fromSelector, $.parseHTML($data))[0]; j.innerHTML = html.innerHTML; to.before(j); }); } function LoadElementIn(fromUrl, fromSelector, toSelector) { var j = document.createElement("div"); var to = $(toSelector); j.async = false; j.type = "text/html"; $.get(fromUrl, function ($data) { html = $(fromSelector, $.parseHTML($data))[0]; j.innerHTML = html.innerHTML; to.append(j); }); } function LoadContent(url, fromSelectors, toSelector, template, converter) { function GetData(html, selectors, converter) { return Promise.all(selectors.map(function (sel) { var data = GetObj(html, sel).then(converter); return data; })); } function GetObj(html, selectors) { return new Promise(function (resolve) { var obj = {}; for (var key in selectors) { obj[key] = $(selectors[key], html)[0].innerHTML.trim(); }; resolve(obj); }); } function GetHtml(url) { return new Promise(function (resolve) { $.get(url, function ($data) { var html = $.parseHTML($data); resolve(html); }); }); } //var compiled = _.template(document.getElementById(templateId).innerHTML); var compiled = _.template(template); return GetHtml(url).then(function(t){return GetData(t, fromSelectors, converter)}).then(function(data) { var html = ""; for (var key in data) { html += compiled(data[key]); }; $(toSelector).append(html); }); } // Действия обрабатывающиеся при загрузке каждой страницы сайта $(document).ready(function () { MakeToggle(); });