Files
metki/метки_1.0.0.html

271 lines
9.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<style>
table
{
border-collapse: collapse;
width: 100%;
}
table, th, td
{
border: 1px solid #aaa;
padding: 0.5em;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
</style>
<title>Метки</title>
</head>
<body>
<script>
function краткийАдрес(адрес)
{
const предел = 63;
if (адрес.length > предел)
{
return адрес.substring(0, предел) + ". . .";
}
return адрес;
}
// JavaScript equivalent to printf/String.Format
// https://stackoverflow.com/a/4673436
function форматСтроки() {
// How to shift “arguments”
// https://stackoverflow.com/questions/4775895/how-to-shift-arguments
var args = Array.prototype.slice.call(arguments);
var str = args.shift();
return str.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
}
function взять(адрес, откликУспеха, откликПровала)
{
var запрос = new XMLHttpRequest();
запрос.onreadystatechange = function()
{
if (this.readyState == 4)
{
if (this.status == 200)
{
откликУспеха(this.responseText);
}
else if (откликПровала)
{
откликПровала(this.status);
}
}
}
запрос.open("GET", адрес);
запрос.send();
}
</script>
<script>
var м = {};
м.метки = [];
м.таблица = null;
м.создатьТаблицу = function()
{
const интерфейс = `
<table id="метки">
<tr>
<th>Имя</th>
<th>Описание</th>
<th>Дата</th>
<th>Адрес</th>
</tr>
</table>
`;
document.body.innerHTML = интерфейс;
м.таблица = document.getElementById("метки");
};
м.заполнитьТаблицу = function()
{
for (var номер in м.метки)
{
var метка = м.метки[номер];
var ряд = м.таблица.insertRow(-1);
var ячейки = {
"имя": ряд.insertCell(0),
"описание": ряд.insertCell(1),
"дата": ряд.insertCell(2),
"адрес": ряд.insertCell(3),
};
ячейки.имя.innerHTML = метка.имя;
ячейки.описание.innerHTML = метка.описание;
ячейки.дата.innerHTML = метка.дата;
ячейки.адрес.innerHTML =
форматСтроки(
"<a href='{0}'>{1}</a>",
метка.адрес,
краткийАдрес(метка.адрес)
);
}
};
м.имя = null;
м.разобратьИмяПеренаправления = function()
{
const имя = decodeURIComponent(window.location.search.substring(1));
if (имя.length)
{
м.имя = имя;
}
};
м.адрес = function(имя)
{
if (!имя)
{
return null;
}
for (var номер in м.метки)
{
var метка = м.метки[номер];
if (метка.имя == имя)
{
return метка.адрес;
}
}
return null;
};
м.разобратьМетки = function(текст)
{
var сейчас = "";
var метки = [];
var метка = {
"имя" : "",
"дата" : "",
"адрес" : "",
"описание" : "",
};
function возможноСобратьМетку()
{
if (
метка.имя.length &&
метка.дата.length &&
метка.адрес.length &&
метка.описание.length
) {
метки.push(метка);
// Освободить место для следующей метки.
метка = {
"имя" : "",
"дата" : "",
"адрес" : "",
"описание" : "",
};
}
}
const строки = текст.split(/\n/);
for (var номер in строки)
{
const строка = строки[номер];
// Ключ.
if (строка == "ИМЯ")
{
возможноСобратьМетку();
сейчас = "имя";
}
else if (строка == "ДАТА")
{
возможноСобратьМетку();
сейчас = "дата";
}
else if (строка == "ОПИСАНИЕ")
{
возможноСобратьМетку();
сейчас = "описание";
}
else if (строка == "АДРЕС")
{
возможноСобратьМетку();
сейчас = "адрес";
}
// Значение.
else
{
if (сейчас == "имя")
{
метка.имя += строка;
}
else if (сейчас == "дата")
{
метка.дата += строка;
}
else if (сейчас == "адрес")
{
метка.адрес += строка;
}
else if (сейчас == "описание")
{
метка.описание += строка + "\n";
}
}
}
// Последний раз.
возможноСобратьМетку();
м.метки = метки;
};
м.меткиАдрес = "https://git.opengamestudio.org/kornerr/notes/raw/branch/master/база";
м.загрузитьМетки = function(откликЗавершения)
{
console.log("Загружаем");
взять(
м.меткиАдрес,
function(текст)
{
console.log("Загрузили");
м.разобратьМетки(текст);
откликЗавершения();
}
);
};
м.запустить = function()
{
м.разобратьИмяПеренаправления();
const адр = м.адрес(м.имя)
// Перенаправить.
if (адр)
{
window.location.href = адр;
}
// Показать заметки.
else
{
м.создатьТаблицу();
м.заполнитьТаблицу();
// Уведомить о неверном имени.
if (м.имя)
{
console.log("ВНИМАНИЕ Неверное имя: '" + м.имя + "'");
}
}
};
</script>
<script>
м.загрузитьМетки(
м.запустить
);
</script>
</body>
</html>