commit 880e3a4f3dcb010fd1194e904c7d5d74a9a23cb2 Author: Михаил Капелько Date: Wed Jul 29 14:49:25 2020 +0300 Создать заготовку | Create a stub diff --git a/0000 b/0000 new file mode 100644 index 0000000..da42a09 --- /dev/null +++ b/0000 @@ -0,0 +1,17 @@ +Файлы Главреда | Glavred Files +1.0.0 +https://git.opengamestudio.org/kornerr/glavred-faily-files + +x /функции|functions.js + +x /пуск|run.js +/пуск|run.череда + +x /выбор-файла|file-selection.js +/выбор-файла|file-selection.череда + +x /редактирование|editing.js +/редактирование|editing.череда + +x /сохранение|saving.js +/сохранение|saving.череда diff --git a/выбор-файла|file-selection.js b/выбор-файла|file-selection.js new file mode 100644 index 0000000..e69de29 diff --git a/выбор-файла|file-selection.череда b/выбор-файла|file-selection.череда new file mode 100644 index 0000000..e69de29 diff --git a/пуск|run.js b/пуск|run.js new file mode 100644 index 0000000..5ec68d3 --- /dev/null +++ b/пуск|run.js @@ -0,0 +1,10 @@ + + +// // // // + + +ВывестиПриветствиеОтФайловГлавреда = мир => +{ + console.debug("Привет от Файлов Главреда"); +}; + diff --git a/пуск|run.череда b/пуск|run.череда new file mode 100644 index 0000000..61744d7 --- /dev/null +++ b/пуск|run.череда @@ -0,0 +1,2 @@ +пуск редактора + вывести приветствие от файлов главреда diff --git a/редактирование|editing.js b/редактирование|editing.js new file mode 100644 index 0000000..e69de29 diff --git a/редактирование|editing.череда b/редактирование|editing.череда new file mode 100644 index 0000000..e69de29 diff --git a/сохранение|saving.js b/сохранение|saving.js new file mode 100644 index 0000000..10ba2c3 --- /dev/null +++ b/сохранение|saving.js @@ -0,0 +1,510 @@ +/* + * ВЫБОР ФАЙЛА + */ + +/* + +ЗадатьУказанныйФайл = function(мир) +{ + мир.файл = мир.файлы[мир.номерВыбранногоФайла]; +}; + + +// // // // + + +НеОтслеживатьРедактирование = function(мир) +{ + мир.отслеживатьРедактирование = false; +}; + + +// // // // + + +ОтслеживатьРедактирование = function(мир) +{ + мир.отслеживатьРедактирование = true; +}; + + +// // // // + + +ЗадатьПараметрФайла = function(мир) +{ + var файл = мир.файлы[мир.номерВыбранногоФайла]; + задатьПараметрВСтрокеПоиска("📁", файл); +}; + + +// // // // + + +ОтобразитьСодержимоеВыбранногоФайла = function(мир) +{ + var файл = мир.файлы[мир.номерВыбранногоФайла]; + var содержимое = мир.временноеСодержимое[файл]; + if (!содержимое) + { + содержимое = мир.редактируемыйМодуль.содержимое[файл]; + }; + мир.редактор.session.setValue(содержимое); +}; + + +// // // // + + +ОтобразитьВыборФайла = function(мир) +{ + var id = мир.макет.константы.файл; + // Очищаем выбор. + for (var номер in мир.файлы) + { + $(`#${id}-${номер}-элемент`).removeClass("uk-active"); + } + // Отображаем выбор. + $(`#${id}-${мир.номерВыбранногоФайла}-элемент`).addClass("uk-active"); +}; + +*/ + +/* + * ПУСК + */ + +/* + +const ИМЯ = "Главред | Glavred"; + + +// // // // + + +ЗадатьВременноеСодержимое = function(мир) +{ + мир.временноеСодержимое = {}; +}; + + +// // // // + + +ЗадатьКнопкуСохранения = function(мир) +{ + var кнопка = мир.макет.элементы.действие + .replace("${название}", "💾") + .replace(/\$\{id\}/g, `${мир.макет.константы.сохранить}`) + ; + $(`#${мир.макет.константы.действия}`).append(кнопка); + $(`#${мир.макет.константы.сохранить}-ссылка`).click(function() { + мир.уведомить("выбрали сохранить"); + }); +}; + + +// // // // + + +НастроитьОтслеживаниеРедактирования = function(мир) +{ + мир.отслеживатьРедактирование = true; + + мир.редактор.session.on("change", function(delta) { + if (мир.отслеживатьРедактирование) + { + мир.уведомить("редактирование"); + } + }); +}; + + +// // // // + + +ВыбратьУказанныйФайл = function(мир) +{ + мир.номерВыбранногоФайла = мир.файлы.indexOf(мир.файл); + мир.уведомить("выбрали файл"); +} + + +// // // // + + +ВыбратьПервыйФайл = function(мир) +{ + мир.номерВыбранногоФайла = 0; + мир.уведомить("выбрали файл"); +} + + +// // // // + + +ПроверитьНаличиеУказанногоФайла = function(мир) +{ + if ( + мир.файл && + мир.файлы.includes(мир.файл) + ) { + мир.уведомить("указанный файл существует"); + } + else + { + мир.уведомить("указанный файл не существует"); + } +}; + + +// // // // + + +НастроитьAce = function(мир) +{ + мир.редактор = window.ace.edit("редактор"); + мир.редактор.session.setMode("ace/mode/javascript"); +}; + + +// // // // + + +ОтслеживатьВыборФайла = function(мир) +{ + var id = мир.макет.константы.файл; + for (var номер in мир.файлы) + { + const номерФайла = номер; + $(`#${id}-${номер}-ссылка`).click(function() { + мир.номерВыбранногоФайла = номерФайла; + мир.уведомить("выбрали файл"); + }); + } +}; + + +// // // // + + +ЗадатьСписокФайлов = function(мир) +{ + var м = мир.редактируемыйМодуль; + мир.файлы = Object.keys(м.структура).sort(); + + var содержимое = ""; + + var заголовок = мир.макет.элементы.заголовокМеню.replace("${название}", "📦 " + м.имя); + содержимое += заголовок; + var id = мир.макет.константы.файл; + for (var номер in мир.файлы) + { + var файл = мир.файлы[номер]; + содержимое += мир.макет.элементы.пунктМеню + .replace("${название}", файл) + .replace(/\$\{id\}/g, `${id}-${номер}`) + ; + } + + $(`#${мир.макет.константы.меню}`).html(содержимое); +}; + + +// // // // + + +УведомитьОбОшибкеЗагрузкиСодержимогоРедактируемогоМодуля = function(мир) +{ + var сообщение = "ОШИБКА Не удалось загрузить редактируемый модуль из хранилища бразуера | ERROR The module to be edited couldn't be loaded from the browser's storage"; + console.error(сообщение); + console.error(мир.указатель); + $(`#${мир.макет.константы.содержимое}`).html(` +
+

${сообщение}

+

${мир.указатель}

+
+ `); +}; + + +// // // // + + +ЗагрузитьСодержимоеРедактируемогоМодуля = function(мир) +{ + // Пропускаем загрузку, если содержимое уже присутствует. + if (мир.редактируемыйМодуль.содержимое) + { + мир.уведомить("загрузили содержимое"); + return; + } + + // Загружаем содержимое. + мир.модули.загрузилиСодержимоеСохранённогоМодуля.подписатьРаз(function() { + мир.уведомить("загрузили содержимое"); + }); + мир.модули.неЗагрузилиСодержимоеСохранённогоМодуля.подписатьРаз(function() { + мир.уведомить("не загрузили содержимое"); + }); + мир.модули.загрузитьСодержимоеСохранённогоМодуля(мир.указатель); +}; + + +// // // // + + +ПродолжитьЗагрузку = мир => +{ + мир.уведомить("загрузили содержимое"); +}; + + +// // // // + + +ЗадатьПараметрМодуляРедактором = function(мир) +{ + задатьПараметрВСтрокеПоиска("📦", мир.редактируемыйМодуль.указатель); +}; + + +// // // // + + +НазначитьРедактируемымМодульРедактора = function(мир) +{ + мир.редактируемыйМодуль = мир.модули.модульПоИмени(ИМЯ); +}; + + +// // // // + + +ПроверитьНаличиеРедактируемогоМодуля = function(мир) +{ + мир.редактируемыйМодуль = мир.модули.модульПоУказателю(мир.указатель); + if (мир.редактируемыйМодуль) + { + мир.уведомить("редактируемый модуль существует"); + } + else + { + мир.уведомить("редактируемый модуль не существует"); + } +}; + + +// // // // + + +ЗадатьЗаголовокИВерсию = function(мир) +{ + var м = мир.ведущийМодуль; + $(`#${мир.макет.константы.заголовок}`).text(м.имя); + $(`#${мир.макет.константы.версия}`).text(м.версия); +}; + + +// // // // + + +ОчиститьМакетОтЗаглушек = function(мир) +{ + $(`#${мир.макет.константы.заголовок}`).text(""); + $(`#${мир.макет.константы.версия}`).text(""); + $(`#${мир.макет.константы.действия}`).text(""); + $(`#${мир.макет.константы.меню}`).text(""); +}; + + +// // // // + + +УстановитьМакет = function(мир) +{ + document.body.innerHTML = мир.макет.структура; + + var вид = document.createElement("style"); + document.head.appendChild(вид); + вид.innerHTML = мир.макет.вид; +}; + + +// // // // + + +НастроитьМакет = function(мир) +{ + // Вырезаем тело из макета. + var html = мир.макет.структура; + var начало = html.indexOf(""); + var конец = html.indexOf(""); + html = html.substring(начало, конец); + + var название = "редактор"; + мир.макет.константы = { + "заголовок": `${название}-макет-шапка-заголовок`, + "версия": `${название}-макет-шапка-версия`, + "действия": `${название}-макет-шапка-действия`, + "меню": `${название}-макет-меню`, + "файл": `${название}-макет-меню-файл`, + "содержимое": "редактор", + "сохранить": `${название}-макет-сохранить`, + }; + // Заменяем константы в макете. + for (var константа in мир.макет.константы) + { + var старое = "${" + константа + "}"; + var новое = мир.макет.константы[константа]; + html = html.replace(старое, новое); + } + + мир.макет.структура = html; +}; + + +// // // // + + +ЗагрузитьМакет = function(мир) +{ + var м = мир.ведущийМодуль; + var json = JSON.parse(м.содержимое["/макет|template.json"]); + мир.макет = { + "структура": м.содержимое["/макет|template.html"], + "вид": м.содержимое["/макет|template.css"], + "элементы": json, + }; +}; + + +// // // // + + +ЗадатьВедущийМодуль = function(мир) +{ + // Редактор является ведущим модулем. + мир.ведущийМодуль = мир.модули.модульПоИмени(ИМЯ); +}; + + +// // // // + + +РазобратьПараметры = function(мир) +{ + мир.указатель = null; + мир.файл = null; + + var параметры = new URLSearchParams(window.location.search); + for (var имя of параметры.keys()) + { + var значение = decodeURI(параметры.get(имя)); + var имя = decodeURI(имя); + if (имя == "📦") + { + мир.указатель = значение; + } + else if (имя == "📁") + { + мир.файл = значение; + } + } +}; + + +// // // // + + +ВывестиРазобранныеПараметры = function(мир) +{ + console.debug(` +Разобранные параметры редактора: + +* 📦: '${мир.указатель}' +* 📁: '${мир.файл}' + `); +}; + +*/ + +/* + * РЕДАКТИРОВАНИЕ + */ + +/* + +СохранитьВременноеСодержимоеРедактируемогоФайла = function(мир) +{ + var файл = мир.файлы[мир.номерВыбранногоФайла]; + var содержимое = мир.редактор.session.getValue(); + мир.временноеСодержимое[файл] = содержимое; +}; + + +// // // // + + +ПометитьВыбранныйФайлКакИзменённый = function(мир) +{ + $(`#${мир.макет.константы.файл}-${мир.номерВыбранногоФайла}-изменение`).removeAttr("hidden"); +}; + + +// // // // + + +ВывестиРедактирование = function(мир) +{ + console.debug("Редактирование"); +}; + +*/ + +/* + * СОХРАНЕНИЕ + */ + +/* + +УведомитьОНеудачномСохраненииИзменений = function(мир) +{ + UIkit.notification("Не удалось сохранить изменения", {status: "danger"}); + UIkit.notification("Could not save changes", {status: "danger"}); +}; + + +// // // // + + +УведомитьОбУспешномСохраненииИзменений = function(мир) +{ + UIkit.notification("Сохранили успешно", {status: "success"}); + UIkit.notification("Saved successfully", {status: "success"}); +}; + + +// // // // + + +СохранитьИзменения = function(мир) +{ + for (var файл in мир.временноеСодержимое) + { + var содержимое = мир.временноеСодержимое[файл]; + мир.редактируемыйМодуль.содержимое[файл] = содержимое; + } + + мир.временноеСодержимое = {}; + + мир.модули.сохранили.подписатьРаз(function() { + мир.уведомить("сохранили изменения"); + }); + мир.модули.неСохранили.подписатьРаз(function() { + мир.уведомить("не сохранили изменения"); + }); + мир.модули.сохранить(мир.редактируемыйМодуль.указатель); +}; + +*/ diff --git a/сохранение|saving.череда b/сохранение|saving.череда new file mode 100644 index 0000000..81a874b --- /dev/null +++ b/сохранение|saving.череда @@ -0,0 +1,67 @@ +# ВЫБОР ФАЙЛА + +#выбрали файл +# задать указанный файл +# не отслеживать редактирование +# отобразить выбор файла +# отобразить содержимое выбранного файла +# задать параметр файла +# отслеживать редактирование + + + +# ПУСК + +#пуск редактора +# разобрать параметры +# вывести разобранные параметры +# задать ведущий модуль +# загрузить макет +# настроить макет +# установить макет +# очистить макет от заглушек +# задать заголовок и версию +# проверить наличие редактируемого модуля +#редактируемый модуль не существует +# назначить редактируемым модуль редактора +# задать параметр модуля редактором +# продолжить загрузку +#редактируемый модуль существует +# загрузить содержимое редактируемого модуля +#не загрузили содержимое +# уведомить об ошибке загрузки содержимого редактируемого модуля +#загрузили содержимое +# настроить Ace +# настроить отслеживание редактирования +# задать кнопку сохранения +# задать временное содержимое +# задать список файлов +# отслеживать выбор файла +# проверить наличие указанного файла +#указанный файл не существует +# выбрать первый файл +#указанный файл существует +# выбрать указанный файл + + + +# РЕДАКТИРОВАНИЕ + +#редактирование +## вывести редактирование +# пометить выбранный файл как изменённый +# сохранить временное содержимое редактируемого файла + + + +# СОХРАНЕНИЕ + +#выбрали сохранить +# сохранить изменения +#не сохранили изменения +# уведомить о неудачном сохранении изменений +#сохранили изменения +# уведомить об успешном сохранении изменений +# задать список файлов +# отслеживать выбор файла +# выбрать указанный файл diff --git a/функции|functions.js b/функции|functions.js new file mode 100644 index 0000000..e69de29