445 lines
16 KiB
JavaScript
445 lines
16 KiB
JavaScript
|
||
|
||
// // // //
|
||
|
||
|
||
СоздатьХранилищеПереименованийФайловМодуля = мир =>
|
||
{
|
||
мир.переименования = {}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СохранитьПереименованиеФайловМодуля = мир =>
|
||
{
|
||
for (var было in мир.переименования)
|
||
{
|
||
var стало = мир.переименования[было];
|
||
мир.редактируемыйМодуль.структура[стало] = мир.редактируемыйМодуль.структура[было];
|
||
мир.редактируемыйМодуль.содержимое[стало] = мир.редактируемыйМодуль.содержимое[было];
|
||
delete мир.редактируемыйМодуль.структура[было];
|
||
delete мир.редактируемыйМодуль.содержимое[было];
|
||
}
|
||
|
||
мир.переименования = {};
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ЗапомнитьПереименованиеФайлаМодуля = мир =>
|
||
{
|
||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
|
||
var файл = файлы[мир.номерФайлаМодуля];
|
||
мир.переименования[файл] = мир.имяФайлаМодуля;
|
||
console.debug(`НАДО переименовать '${файл}' в '${мир.имяФайлаМодуля}'`)
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтслеживатьПереименованиеФайловМодуля = мир =>
|
||
{
|
||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
|
||
for (var номер in файлы)
|
||
{
|
||
const idИмя = мир.макет.зав.файлыСписокИмя.replace("%номер%", номер);
|
||
const номерФайла = номер;
|
||
$(`#${idИмя}`).on("input", function() {
|
||
мир.номерФайлаМодуля = номерФайла;
|
||
мир.имяФайлаМодуля = $(`#${idИмя}`).val();
|
||
мир.уведомить("переименовали файл модуля");
|
||
});
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
УдалитьФайлМодуля = мир =>
|
||
{
|
||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
|
||
var файл = файлы[мир.номерФайлаМодуля];
|
||
delete мир.редактируемыйМодуль.структура[файл];
|
||
delete мир.редактируемыйМодуль.содержимое[файл];
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СпроситьПодтверждениеУдаленияФайлаМодуля = мир =>
|
||
{
|
||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
|
||
var файл = файлы[мир.номерФайлаМодуля];
|
||
$(`#${мир.макет.зав.файлыПодтверждениеУдаленияИмя}`).html(файл);
|
||
UIkit.modal($(`#${мир.макет.зав.файлыПодтверждениеУдаления}`)).show();
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СоздатьДиалогПодтвержденияУдаленияФайлаМодуля = мир =>
|
||
{
|
||
$(`#${мир.макет.константы.содержимое}`).append(`
|
||
|
||
<div id="${мир.макет.зав.файлыПодтверждениеУдаления}" uk-modal>
|
||
<div class="uk-modal-dialog">
|
||
<div class="uk-modal-header">
|
||
<h2 class="uk-modal-title">Удалить файл? | Delete the file? </h2>
|
||
</div>
|
||
<div class="uk-modal-body">
|
||
<p id="${мир.макет.зав.файлыПодтверждениеУдаленияИмя}"></p>
|
||
</div>
|
||
<div class="uk-modal-footer uk-text-right">
|
||
<button class="uk-button uk-button-default uk-modal-close" type="button">Отмена | Cancel</button>
|
||
<button id="${мир.макет.зав.файлыПодтверждениеУдаленияУдалить}" class="uk-button uk-button-danger uk-modal-close" type="button">Удалить | Delete</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
`);
|
||
|
||
$(`#${мир.макет.зав.файлыПодтверждениеУдаленияУдалить}`).click(function() {
|
||
мир.уведомить("подтвердили удаление файла модуля");
|
||
});
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтслеживатьУдалениеФайлаМодуля = мир =>
|
||
{
|
||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
|
||
for (var номер in файлы)
|
||
{
|
||
var idУдалить = мир.макет.зав.файлыСписокУдалить.replace("%номер%", номер);
|
||
const номерФайла = номер;
|
||
$(`#${idУдалить}`).click(function() {
|
||
мир.номерФайлаМодуля = номерФайла;
|
||
мир.уведомить("кнопка удаления файла модуля");
|
||
});
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОчиститьИзменениеФайловМодуля = мир =>
|
||
{
|
||
$(`#${мир.макет.зав.файлыИзменение}`).attr("hidden", true);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьИзменениеФайловМодуля = мир =>
|
||
{
|
||
$(`#${мир.макет.зав.файлыИзменение}`).removeAttr("hidden");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ДобавитьФайлМодуля = мир =>
|
||
{
|
||
мир.редактируемыйМодуль.структура[мир.имяФайлаМодуля] = {};
|
||
мир.редактируемыйМодуль.содержимое[мир.имяФайлаМодуля] = "";
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СообщитьОНаличииДубляФайла = мир =>
|
||
{
|
||
var сообщение = "Такое имя файла уже существует | Such file name is already present";
|
||
UIkit.modal.alert(сообщение);
|
||
console.error(сообщение);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПроверитьОтсутствиеДубляФайла = мир =>
|
||
{
|
||
for (var файл in мир.редактируемыйМодуль.структура)
|
||
{
|
||
if (файл == мир.имяФайлаМодуля)
|
||
{
|
||
мир.уведомить("дубль файла присутствует");
|
||
return;
|
||
}
|
||
мир.уведомить("дубль файла отсутствует");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтслеживатьДобавлениеФайлаМодуля = мир =>
|
||
{
|
||
$(`#${мир.макет.зав.добавитьФайлКнопка}`).click(function() {
|
||
мир.имяФайлаМодуля = $(`#${мир.макет.зав.добавитьФайлИмя}`).val();
|
||
мир.уведомить("кнопка добавления файла модуля");
|
||
});
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьСписокФайловМодуля = мир =>
|
||
{
|
||
var список = "";
|
||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
|
||
for (var номер in файлы)
|
||
{
|
||
// Файл.
|
||
var файл = файлы[номер];
|
||
|
||
// Флаги.
|
||
var строкаФлагов = "";
|
||
var флаги = мир.редактируемыйМодуль.структура[файл];
|
||
for (var флаг in флаги)
|
||
{
|
||
if (флаг == "исполнить")
|
||
{
|
||
строкаФлагов += "x";
|
||
}
|
||
else if (флаг == "двоичный")
|
||
{
|
||
строкаФлагов += "2";
|
||
}
|
||
}
|
||
|
||
// id.
|
||
var idИмя = мир.макет.зав.файлыСписокИмя.replace("%номер%", номер);
|
||
var idФлаги = мир.макет.зав.файлыСписокФлаги.replace("%номер%", номер);
|
||
var idУдалить = мир.макет.зав.файлыСписокУдалить.replace("%номер%", номер);
|
||
|
||
|
||
var имяФайла = файл;
|
||
if (мир.переименования[файл]) {
|
||
имяФайла = мир.переименования[файл];
|
||
}
|
||
|
||
список += `
|
||
<tr>
|
||
<td>
|
||
<input id="${idИмя}" value="${имяФайла}" class="uk-input uk-margin-small" type="text" placeholder="Имя | Name">
|
||
</td>
|
||
<td>
|
||
<input id="${idФлаги}" value="${строкаФлагов}" class="uk-input uk-margin-small" type="text" placeholder="Флаги | Flags">
|
||
</td>
|
||
<td>
|
||
<button id="${idУдалить}" class="uk-button uk-button-danger">
|
||
<span uk-icon="minus"></span>
|
||
</button>
|
||
</td>
|
||
</tr>
|
||
`;
|
||
}
|
||
|
||
$(`#${мир.макет.зав.файлыСписок}`).html(список);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьСтруктуруПунктаФайловЗава = мир =>
|
||
{
|
||
$(`#${мир.макет.константы.содержимое}`).html(`
|
||
<div class="зав-отступ">
|
||
|
||
<div uk-grid style="margin-left: 0px">
|
||
<input id="${мир.макет.зав.добавитьФайлИмя}" class="uk-input uk-width-expand" type="text" placeholder="Имя файла | File name">
|
||
<button id="${мир.макет.зав.добавитьФайлКнопка}" class="uk-button uk-button-primary uk-width-auto uk-margin-left">Добавить файл | Add a file</button>
|
||
</div>
|
||
|
||
<hr class="uk-divider-icon">
|
||
|
||
<table class="uk-table uk-table-hover uk-table-divider">
|
||
<thead>
|
||
<tr>
|
||
<th>Файл | File</th>
|
||
<th>Флаги | Flags</th>
|
||
<th>Действия | Actions</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="${мир.макет.зав.файлыСписок}">
|
||
</tbody>
|
||
</table>
|
||
|
||
</div>
|
||
`);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СохранитьВременноеОписание = мир =>
|
||
{
|
||
var м = мир.редактируемыйМодуль;
|
||
м.имя = $(`#${мир.макет.зав.описаниеИмя}`).val()
|
||
м.версия = $(`#${мир.макет.зав.описаниеВерсия}`).val()
|
||
м["🏠"] = $(`#${мир.макет.зав.описаниеХранилище}`).val()
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОчиститьИзменениеОписания = мир =>
|
||
{
|
||
$(`#${мир.макет.зав.описаниеИзменение}`).attr("hidden", true);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьИзменениеОписания = мир =>
|
||
{
|
||
$(`#${мир.макет.зав.описаниеИзменение}`).removeAttr("hidden");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтслеживатьИзменениеОписанияМодуля = мир =>
|
||
{
|
||
$(`#${мир.макет.зав.описаниеИмя}`).on("input", function() {
|
||
мир.уведомить("изменили описание модуля");
|
||
});
|
||
$(`#${мир.макет.зав.описаниеВерсия}`).on("input", function() {
|
||
мир.уведомить("изменили описание модуля");
|
||
});
|
||
$(`#${мир.макет.зав.описаниеХранилище}`).on("input", function() {
|
||
мир.уведомить("изменили описание модуля");
|
||
});
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьОписаниеМодуля = мир =>
|
||
{
|
||
var м = мир.редактируемыйМодуль;
|
||
$(`#${мир.макет.зав.описаниеИмя}`).val(м.имя);
|
||
$(`#${мир.макет.зав.описаниеВерсия}`).val(м.версия);
|
||
$(`#${мир.макет.зав.описаниеХранилище}`).val(м["🏠"]);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьСтруктуруПунктаОписанияЗава = мир =>
|
||
{
|
||
$(`#${мир.макет.константы.содержимое}`).html(`
|
||
<div class="зав-отступ">
|
||
<form>
|
||
<input id="${мир.макет.зав.описаниеИмя}" class="uk-input uk-margin-small" type="text" placeholder="Имя | Name">
|
||
<input id="${мир.макет.зав.описаниеВерсия}" class="uk-input uk-margin-small" type="text" placeholder="Версия | Version">
|
||
<input id="${мир.макет.зав.описаниеХранилище}" class="uk-input uk-margin-small" type="text" placeholder="Хранилище | Repository">
|
||
</form>
|
||
</div>
|
||
`);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ЗадатьВидСодержимогоМенюЗава = мир =>
|
||
{
|
||
задатьВид(`
|
||
.зав-отступ
|
||
{
|
||
padding: 1em;
|
||
}
|
||
`)
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьВыборПунктаФайловЗава = мир =>
|
||
{
|
||
$(`#${мир.макет.зав.файлы}`).addClass("uk-active");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтобразитьВыборПунктаОписанияЗава = мир =>
|
||
{
|
||
$(`#${мир.макет.зав.описание}`).addClass("uk-active");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ЗадатьРазделМенюЗава = мир =>
|
||
{
|
||
мир.макет.зав = {
|
||
"описание": "зав-описание",
|
||
"описаниеСсылка": "зав-описание-ссылка",
|
||
"описаниеИзменение": "зав-описание-изменение",
|
||
"описаниеИмя": "зав-описание-имя",
|
||
"описаниеВерсия": "зав-описание-версия",
|
||
"описаниеХранилище": "зав-описание-хранилище",
|
||
"файлы": "зав-файлы",
|
||
"файлыСсылка": "зав-файлы-ссылка",
|
||
"файлыИзменение": "зав-файлы-изменение",
|
||
"файлыСписок": "зав-файлы-список",
|
||
"файлыСписокИмя": "зав-файлы-список-имя-%номер%",
|
||
"файлыСписокФлаги": "зав-файлы-список-флаги-%номер%",
|
||
"файлыСписокУдалить": "зав-файлы-список-удалить-%номер%",
|
||
"файлыПодтверждениеУдаления": "зав-файлы-подтверждение-удаления",
|
||
"файлыПодтверждениеУдаленияИмя": "зав-файлы-подтверждение-удаления-имя",
|
||
"файлыПодтверждениеУдаленияУдалить": "зав-файлы-подтверждение-удаления-удалить",
|
||
"добавитьФайлИмя": "зав-файлы-добавить-файл-имя",
|
||
"добавитьФайлКнопка": "зав-файлы-добавить-файл-кнопка",
|
||
};
|
||
|
||
$(`#${мир.макет.константы.меню}`).append(`
|
||
<ul class="uk-nav uk-nav-default tm-nav">
|
||
<li class="uk-nav-header">📦 Модуль | Module</li>
|
||
<li id="${мир.макет.зав.описание}">
|
||
<a id="${мир.макет.зав.описаниеСсылка}"><span id="${мир.макет.зав.описаниеИзменение}" hidden>• </span>Описание | Description</a>
|
||
</li>
|
||
<li id="${мир.макет.зав.файлы}">
|
||
<a id="${мир.макет.зав.файлыСсылка}"><span id="${мир.макет.зав.файлыИзменение}" hidden>• </span>Файлы | Files</a>
|
||
</li>
|
||
</ul>
|
||
`);
|
||
|
||
$(`#${мир.макет.зав.описаниеСсылка}`).click(function() {
|
||
мир.уведомить("выбрали пункт описания зава");
|
||
});
|
||
|
||
$(`#${мир.макет.зав.файлыСсылка}`).click(function() {
|
||
мир.уведомить("выбрали пункт файлов зава");
|
||
});
|
||
}; |