@@ -0,0 +1,9 @@ | |||
Редактор Главреда | Glavred Editor | |||
1.0.0 | |||
https://git.opengamestudio.org/kornerr/glavred-redaktor-editor | |||
x /пуск|run.js | |||
/пуск|run.череда | |||
/сохранение|saving.js | |||
/сохранение|saving.череда |
@@ -0,0 +1,152 @@ | |||
const ИМЯ = "Редактор Главреда | Glavred Editor" | |||
// // // // | |||
СоздатьКнопкиПроверкиИзмененийФайла = мир => | |||
{ | |||
$(`#${мир.макет.константы.заголовокПраво}`).append(` | |||
<ul class="uk-navbar-nav"> | |||
<li><a id="проверитьОтображениеИзменения">Отобразить</a></li> | |||
<li><a id="проверитьОчисткуИзменения">Очистить</a></li> | |||
<li><a id="проверитьОчисткуВсехИзменений">Всё</a></li> | |||
</ul> | |||
`); | |||
$(`#проверитьОтображениеИзменения`).click(function() { | |||
мир.уведомить("проверить отображение изменения файла"); | |||
}); | |||
$(`#проверитьОчисткуИзменения`).click(function() { | |||
мир.уведомить("проверить очистку изменения файла"); | |||
}); | |||
$(`#проверитьОчисткуВсехИзменений`).click(function() { | |||
мир.уведомить("проверить очистку изменений всех файлов"); | |||
}); | |||
}; | |||
// // // // | |||
ОчиститьИзмененияВсехФайлов = мир => | |||
{ | |||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort(); | |||
// Очищаем выбор. | |||
for (var номер in файлы) | |||
{ | |||
$(`#${мир.макет.списокФайлов.раздел}-${номер}-изменение`).attr("hidden", true); | |||
} | |||
}; | |||
// // // // | |||
ОчиститьИзменениеФайла = мир => | |||
{ | |||
$(`#${мир.макет.списокФайлов.раздел}-${мир.номерВыбранногоФайла}-изменение`).attr("hidden", true); | |||
}; | |||
// // // // | |||
ОтобразитьИзменениеФайла = мир => | |||
{ | |||
$(`#${мир.макет.списокФайлов.раздел}-${мир.номерВыбранногоФайла}-изменение`).removeAttr("hidden"); | |||
}; | |||
// // // // | |||
ОтобразитьВыборФайла = мир => | |||
{ | |||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort(); | |||
// Очищаем выбор. | |||
for (var номер in файлы) | |||
{ | |||
$(`#${мир.макет.списокФайлов.раздел}-${номер}`).removeClass("uk-active"); | |||
} | |||
// Отображаем выбор. | |||
$(`#${мир.макет.списокФайлов.раздел}-${мир.номерВыбранногоФайла}`).addClass("uk-active"); | |||
}; | |||
// // // // | |||
ОтслеживатьВыборФайла = мир => | |||
{ | |||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort(); | |||
for (var номер in файлы) | |||
{ | |||
const номерФайла = номер; | |||
$(`#${мир.макет.списокФайлов.раздел}-${номер}-ссылка`).click(function() { | |||
мир.номерВыбранногоФайла = номерФайла; | |||
мир.уведомить("выбрали файл"); | |||
}); | |||
} | |||
}; | |||
// // // // | |||
ЗадатьРазделМенюСоСпискомФайлов = мир => | |||
{ | |||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort(); | |||
var содержимое = ""; | |||
for (var номер in файлы) | |||
{ | |||
var название = файлы[номер]; | |||
var id = `${мир.макет.списокФайлов.раздел}-${номер}`; | |||
var пункт = мир.макет.списокФайлов.пунктМеню | |||
.replace(/%название%/g, название) | |||
.replace(/%id%/g, id) | |||
; | |||
содержимое += пункт; | |||
} | |||
var заголовок = "📦 " + мир.редактируемыйМодуль.имя; | |||
var раздел = мир.макет.списокФайлов.разделМеню | |||
.replace("%название%", заголовок) | |||
.replace("%содержимое%", содержимое) | |||
; | |||
$(`#${мир.макет.константы.меню}`).append(раздел); | |||
}; | |||
// // // // | |||
ЗадатьЭлементыМакетаСпискаФайлов = мир => | |||
{ | |||
мир.макет.списокФайлов = { | |||
"раздел": "списокФайлов", | |||
"разделМеню": ` | |||
<ul class="uk-nav uk-nav-default tm-nav"> | |||
<li class="uk-nav-header">%название%</li> | |||
%содержимое% | |||
</ul> | |||
`, | |||
"пунктМеню": ` | |||
<li id="%id%"> | |||
<a id="%id%-ссылка"> | |||
<span id="%id%-изменение" hidden>• </span>%название% | |||
</a> | |||
</li> | |||
`, | |||
}; | |||
}; | |||
// // // // | |||
ВывестиПриветствиеОтФайловГлавреда = мир => | |||
{ | |||
console.debug("Привет от Файлов Главреда"); | |||
}; | |||
@@ -0,0 +1,18 @@ | |||
#пуск модулей главреда | |||
# вывести приветствие от файлов главреда | |||
# задать элементы макета списка файлов | |||
# задать раздел меню со списком файлов | |||
# отслеживать выбор файла | |||
## создать кнопки проверки изменений файла | |||
#выбрали файл | |||
# отобразить выбор файла | |||
# | |||
# | |||
## ПРОВЕРКА | |||
#проверить отображение изменения файла | |||
# отобразить изменение файла | |||
#проверить очистку изменения файла | |||
# очистить изменение файла | |||
#проверить очистку изменений всех файлов | |||
# очистить изменения всех файлов | |||
# |
@@ -0,0 +1,248 @@ | |||
/* | |||
* ВЫБОР ФАЙЛА | |||
*/ | |||
/* | |||
ЗадатьУказанныйФайл = function(мир) | |||
{ | |||
мир.файл = мир.файлы[мир.номерВыбранногоФайла]; | |||
}; | |||
// // // // | |||
НеОтслеживатьРедактирование = function(мир) | |||
{ | |||
мир.отслеживатьРедактирование = false; | |||
}; | |||
// // // // | |||
ОтслеживатьРедактирование = function(мир) | |||
{ | |||
мир.отслеживатьРедактирование = true; | |||
}; | |||
// // // // | |||
ЗадатьПараметрФайла = function(мир) | |||
{ | |||
var файл = мир.файлы[мир.номерВыбранногоФайла]; | |||
задатьПараметрВСтрокеПоиска("📁", файл); | |||
}; | |||
// // // // | |||
ОтобразитьСодержимоеВыбранногоФайла = function(мир) | |||
{ | |||
var файл = мир.файлы[мир.номерВыбранногоФайла]; | |||
var содержимое = мир.временноеСодержимое[файл]; | |||
if (!содержимое) | |||
{ | |||
содержимое = мир.редактируемыйМодуль.содержимое[файл]; | |||
}; | |||
мир.редактор.session.setValue(содержимое); | |||
}; | |||
*/ | |||
/* | |||
* ПУСК | |||
*/ | |||
/* | |||
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(мир) | |||
{ | |||
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() { | |||
мир.уведомить("не сохранили изменения"); | |||
}); | |||
мир.модули.сохранить(мир.редактируемыйМодуль.указатель); | |||
}; | |||
*/ |
@@ -0,0 +1,67 @@ | |||
# ВЫБОР ФАЙЛА | |||
#выбрали файл | |||
# задать указанный файл | |||
# не отслеживать редактирование | |||
# отобразить выбор файла | |||
# отобразить содержимое выбранного файла | |||
# задать параметр файла | |||
# отслеживать редактирование | |||
# ПУСК | |||
#пуск редактора | |||
# разобрать параметры | |||
# вывести разобранные параметры | |||
# задать ведущий модуль | |||
# загрузить макет | |||
# настроить макет | |||
# установить макет | |||
# очистить макет от заглушек | |||
# задать заголовок и версию | |||
# проверить наличие редактируемого модуля | |||
#редактируемый модуль не существует | |||
# назначить редактируемым модуль редактора | |||
# задать параметр модуля редактором | |||
# продолжить загрузку | |||
#редактируемый модуль существует | |||
# загрузить содержимое редактируемого модуля | |||
#не загрузили содержимое | |||
# уведомить об ошибке загрузки содержимого редактируемого модуля | |||
#загрузили содержимое | |||
# настроить Ace | |||
# настроить отслеживание редактирования | |||
# задать кнопку сохранения | |||
# задать временное содержимое | |||
# задать список файлов | |||
# отслеживать выбор файла | |||
# проверить наличие указанного файла | |||
#указанный файл не существует | |||
# выбрать первый файл | |||
#указанный файл существует | |||
# выбрать указанный файл | |||
# РЕДАКТИРОВАНИЕ | |||
#редактирование | |||
## вывести редактирование | |||
# пометить выбранный файл как изменённый | |||
# сохранить временное содержимое редактируемого файла | |||
# СОХРАНЕНИЕ | |||
#выбрали сохранить | |||
# сохранить изменения | |||
#не сохранили изменения | |||
# уведомить о неудачном сохранении изменений | |||
#сохранили изменения | |||
# уведомить об успешном сохранении изменений | |||
# задать список файлов | |||
# отслеживать выбор файла | |||
# выбрать указанный файл |