/*
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();
});