Browse Source

Изменения от Издателя ГитЖС | Changes of GitJS Publisher

master
Издатель | Publisher 3 years ago
parent
commit
884352f354
9 changed files with 542 additions and 493 deletions
  1. +0
    -67
      выбор-файла|file-selection.js
  2. +0
    -7
      выбор-файла|file-selection.череда
  3. +3
    -3
      загрузка|load.js
  4. +2
    -345
      пуск|run.js
  5. +1
    -29
      пуск|run.череда
  6. +0
    -28
      редактирование|editing.js
  7. +0
    -4
      редактирование|editing.череда
  8. +469
    -1
      сохранение|saving.js
  9. +67
    -9
      сохранение|saving.череда

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

@@ -1,67 +0,0 @@


ЗадатьУказанныйФайл = 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");
};



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

@@ -1,7 +0,0 @@
выбрали файл
задать указанный файл
не отслеживать редактирование
отобразить выбор файла
отобразить содержимое выбранного файла
задать параметр файла
отслеживать редактирование

+ 3
- 3
загрузка|load.js View File

@@ -10,9 +10,9 @@ const ИМЯ = "Главред | Glavred";
var модуль = мир.модули.модульПоИмени(ИМЯ);
var составляющие = [
"/пуск|run",
"/выбор-файла|file-selection",
"/редактирование|editing",
"/сохранение|saving",
// "/выбор-файла|file-selection",
// "/редактирование|editing",
// "/сохранение|saving",
];
for (var номер in составляющие)
{


+ 2
- 345
пуск|run.js View File

@@ -1,353 +1,10 @@

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");
console.debug("Привет от Главреда");
};


// // // //


ОтслеживатьВыборФайла = 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(`
Разобранные параметры редактора:

* 📦: '${мир.указатель}'
* 📁: '${мир.файл}'
`);
};



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

@@ -1,30 +1,2 @@
пуск редактора
разобрать параметры
вывести разобранные параметры
задать ведущий модуль
загрузить макет
настроить макет
установить макет
очистить макет от заглушек
задать заголовок и версию
проверить наличие редактируемого модуля
редактируемый модуль не существует
назначить редактируемым модуль редактора
задать параметр модуля редактором
продолжить загрузку
редактируемый модуль существует
загрузить содержимое редактируемого модуля
не загрузили содержимое
уведомить об ошибке загрузки содержимого редактируемого модуля
загрузили содержимое
настроить Ace
настроить отслеживание редактирования
задать кнопку сохранения
задать временное содержимое
задать список файлов
отслеживать выбор файла
проверить наличие указанного файла
указанный файл не существует
выбрать первый файл
указанный файл существует
выбрать указанный файл
вывести приветствие от главреда

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

@@ -1,28 +0,0 @@


СохранитьВременноеСодержимоеРедактируемогоФайла = function(мир)
{
var файл = мир.файлы[мир.номерВыбранногоФайла];
var содержимое = мир.редактор.session.getValue();
мир.временноеСодержимое[файл] = содержимое;
};


// // // //


ПометитьВыбранныйФайлКакИзменённый = function(мир)
{
$(`#${мир.макет.константы.файл}-${мир.номерВыбранногоФайла}-изменение`).removeAttr("hidden");
};


// // // //


ВывестиРедактирование = function(мир)
{
console.debug("Редактирование");
};



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

@@ -1,4 +0,0 @@
редактирование
# вывести редактирование
пометить выбранный файл как изменённый
сохранить временное содержимое редактируемого файла

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

@@ -1,4 +1,472 @@
/*
* ВЫБОР ФАЙЛА
*/
/*

ЗадатьУказанныйФайл = 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(мир)
{
@@ -39,4 +507,4 @@
мир.модули.сохранить(мир.редактируемыйМодуль.указатель);
};

*/

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

@@ -1,9 +1,67 @@
выбрали сохранить
сохранить изменения
не сохранили изменения
уведомить о неудачном сохранении изменений
сохранили изменения
уведомить об успешном сохранении изменений
задать список файлов
отслеживать выбор файла
выбрать указанный файл
# ВЫБОР ФАЙЛА

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



# ПУСК

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



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

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



# СОХРАНЕНИЕ

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

Loading…
Cancel
Save