Browse Source

Создать заготовку | Create a stub

master
commit
880e3a4f3d
10 changed files with 606 additions and 0 deletions
  1. +17
    -0
      0000
  2. +0
    -0
      выбор-файла|file-selection.js
  3. +0
    -0
      выбор-файла|file-selection.череда
  4. +10
    -0
      пуск|run.js
  5. +2
    -0
      пуск|run.череда
  6. +0
    -0
      редактирование|editing.js
  7. +0
    -0
      редактирование|editing.череда
  8. +510
    -0
      сохранение|saving.js
  9. +67
    -0
      сохранение|saving.череда
  10. +0
    -0
      функции|functions.js

+ 17
- 0
0000 View File

@@ -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.череда

+ 0
- 0
выбор-файла|file-selection.js View File


+ 0
- 0
выбор-файла|file-selection.череда View File


+ 10
- 0
пуск|run.js View File

@@ -0,0 +1,10 @@


// // // //


ВывестиПриветствиеОтФайловГлавреда = мир =>
{
console.debug("Привет от Файлов Главреда");
};


+ 2
- 0
пуск|run.череда View File

@@ -0,0 +1,2 @@
пуск редактора
вывести приветствие от файлов главреда

+ 0
- 0
редактирование|editing.js View File


+ 0
- 0
редактирование|editing.череда View File


+ 510
- 0
сохранение|saving.js View File

@@ -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(`
<div class="ошибка">
<p>${сообщение}</p>
<p>${мир.указатель}</p>
</div>
`);
};


// // // //


ЗагрузитьСодержимоеРедактируемогоМодуля = 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() {
мир.уведомить("не сохранили изменения");
});
мир.модули.сохранить(мир.редактируемыйМодуль.указатель);
};

*/

+ 67
- 0
сохранение|saving.череда View File

@@ -0,0 +1,67 @@
# ВЫБОР ФАЙЛА

#выбрали файл
# задать указанный файл
# не отслеживать редактирование
# отобразить выбор файла
# отобразить содержимое выбранного файла
# задать параметр файла
# отслеживать редактирование



# ПУСК

#пуск редактора
# разобрать параметры
# вывести разобранные параметры
# задать ведущий модуль
# загрузить макет
# настроить макет
# установить макет
# очистить макет от заглушек
# задать заголовок и версию
# проверить наличие редактируемого модуля
#редактируемый модуль не существует
# назначить редактируемым модуль редактора
# задать параметр модуля редактором
# продолжить загрузку
#редактируемый модуль существует
# загрузить содержимое редактируемого модуля
#не загрузили содержимое
# уведомить об ошибке загрузки содержимого редактируемого модуля
#загрузили содержимое
# настроить Ace
# настроить отслеживание редактирования
# задать кнопку сохранения
# задать временное содержимое
# задать список файлов
# отслеживать выбор файла
# проверить наличие указанного файла
#указанный файл не существует
# выбрать первый файл
#указанный файл существует
# выбрать указанный файл



# РЕДАКТИРОВАНИЕ

#редактирование
## вывести редактирование
# пометить выбранный файл как изменённый
# сохранить временное содержимое редактируемого файла



# СОХРАНЕНИЕ

#выбрали сохранить
# сохранить изменения
#не сохранили изменения
# уведомить о неудачном сохранении изменений
#сохранили изменения
# уведомить об успешном сохранении изменений
# задать список файлов
# отслеживать выбор файла
# выбрать указанный файл

+ 0
- 0
функции|functions.js View File


Loading…
Cancel
Save