diff --git a/0000 b/0000 index 52d99f7..d0fb51e 100644 --- a/0000 +++ b/0000 @@ -1,7 +1,7 @@ Архивировать МАОН -0.1.0 +0.2.0 https://git.opengamestudio.org/kornerr/APXuBuPOBATb-MAOH -x /🔄.js -/🔄.череда +/🏁.js +/🏁.череда x /🗄️.js \ No newline at end of file diff --git a/🏁.js b/🏁.js new file mode 100644 index 0000000..11de248 --- /dev/null +++ b/🏁.js @@ -0,0 +1,130 @@ + + + +// // // // + + +ВыдатьАрхивНаСкачивание = мир => +{ + // How to create a file in memory for user to download, but not through server? + // https://stackoverflow.com/a/18197341 + var ссыль = document.createElement("a"); + ссыль.setAttribute("href", "data:text/html;charset=utf-8;base64," + мир.содержимоеАрхива); + var имя = "MAOH.zip"; + ссыль.setAttribute("download", имя); + ссыль.style.display = "none"; + document.body.appendChild(ссыль); + ссыль.click(); + document.body.removeChild(ссыль); +}; + + +// // // // + + +СгенерироватьАрхив = мир => +{ + мир.архив.generateAsync({type: "base64"}).then(function(content) { + мир.содержимоеАрхива = content; + console.debug("мир.содержимоеАрхива", мир.содержимоеАрхива); + мир.уведомить("сгенерировали архив"); + }); +}; + + +// // // // + + +СоздатьАрхивИзЗагруженныхМодулей = мир => +{ + var архив = new JSZip(); + for (var н in мир.указателиМодулей) + { + var ук = мир.указателиМодулей[н]; + //var ук64 = мир.база64ИзДвоичногоМассива(new Uint8Array(содержимое)); + + var директория = архив.folder(ук); + директория.file("hello", "yohello"); + } + + мир.архив = архив; +}; + + +// // // // + + +ЗагрузитьМодули = мир => +{ + мир.модули.использовали.подписатьРаз(function() { + мир.уведомить("загрузили модули"); + }); + мир.модули.использовать(мир.указателиМодулей); +}; + + +// // // // + + +ВывестиУказателиМодулей = мир => +{ + console.debug("указатели модулей:", мир.указателиМодулей); +}; + + +// // // // + + +РазобратьСписокМодулей = мир => +{ + var указатели = []; + var строки = мир.списокМодулей.split(/\n/); + for (var номер in строки) + { + var строка = строки[номер].trim(); + if (!строка.startsWith("#") && строка.length) + { + указатели.push(строка); + } + } + мир.указателиМодулей = указатели; +}; + + +// // // // + + +ЗадатьСписокМодулей = мир => +{ + мир.списокМодулей = ` +https://bitbucket.org/gitjs/jquery/raw/3.5.1/0000 +https://bitbucket.org/gitjs/uikit/raw/3.2.0/0000 +https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout/raw/branch/master/0000 +https://git.opengamestudio.org/mahjong/povtorniy-repeating-ui/raw/branch/master/0000 +https://git.opengamestudio.org/PuCOBATEJlb/PuCOBATEJlb/raw/branch/master/0000 +https://git.opengamestudio.org/PuCOBATEJlb/PECYPCbl/raw/branch/master/0000 + +https://git.opengamestudio.org/MAOH/MEXMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/CEHMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/MOPMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/PEEMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/OTMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/CYMA/raw/branch/master/0000 + +https://git.opengamestudio.org/MAOH/TEMA_M1K/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/PACK_M1/raw/branch/master/0000 + +# Убрать после отладки +https://git.opengamestudio.org/MAOH/TEMA_OT/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/PACK_OT/raw/branch/master/0000 + `; +}; + + +// // // // + + +СкрытьКрутилку = мир => +{ + document.getElementById("крутилка").style.display = "none"; +}; \ No newline at end of file diff --git a/🏁.череда b/🏁.череда new file mode 100644 index 0000000..6654e4a --- /dev/null +++ b/🏁.череда @@ -0,0 +1,11 @@ +надо окончить загрузку приложения + скрыть крутилку + задать список модулей + разобрать список модулей + вывести указатели модулей + загрузить модули +загрузили модули + создать архив из загруженных модулей + сгенерировать архив +сгенерировали архив + выдать архив на скачивание \ No newline at end of file diff --git a/📦 b/📦 new file mode 100644 index 0000000..2f5c5fd --- /dev/null +++ b/📦 @@ -0,0 +1,27 @@ + + +# Список указателей на модули для загрузки во время пуска +# 启动时要加载的模块指针列表 +# List of module pointers to load at startup + +https://bitbucket.org/gitjs/jquery/raw/3.5.1/0000 +https://bitbucket.org/gitjs/uikit/raw/3.2.0/0000 +https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout/raw/branch/master/0000 +https://git.opengamestudio.org/mahjong/povtorniy-repeating-ui/raw/branch/master/0000 +https://git.opengamestudio.org/PuCOBATEJlb/PuCOBATEJlb/raw/branch/master/0000 +https://git.opengamestudio.org/PuCOBATEJlb/PECYPCbl/raw/branch/master/0000 + +https://git.opengamestudio.org/MAOH/MEXMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/CEHMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/MOPMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/PEEMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/OTMA/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/CYMA/raw/branch/master/0000 + +https://git.opengamestudio.org/MAOH/TEMA_M1K/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/PACK_M1/raw/branch/master/0000 + +# Убрать после отладки +https://git.opengamestudio.org/MAOH/TEMA_OT/raw/branch/master/0000 +https://git.opengamestudio.org/MAOH/PACK_OT/raw/branch/master/0000 + diff --git a/🔄.js b/🔄.js deleted file mode 100644 index 25dc85b..0000000 --- a/🔄.js +++ /dev/null @@ -1,115 +0,0 @@ -ПерезагрузитьПриложениеПослеОбновления = мир => -{ - window.location.reload(false); -}; - - -// // // // - - -УдалитьМодулиПриложенияПередОбновлением = мир => -{ - var список = мир.списокМодулейПриложенияДляОбновления; - for (var номер in список) - { - var указатель = список[номер]; - localStorage.removeItem(указатель); - } -}; - - -// // // // - - -ПроверитьНаличиеМодулейПриложенияДляОбновления = мир => -{ - if (мир.списокМодулейПриложенияДляОбновления.length) - { - мир.уведомить("присутствуют модули приложения для обновления"); - } - else - { - мир.уведомить("отсутствуют модули приложения для обновления"); - } -} - - -// // // // - - -СоставитьСписокМодулейПриложенияДляОбновления = мир => -{ - var список = []; - var описания = мир.описанияМодулейПриложения; - for (var указатель in описания) - { - var описание = описания[указатель]; - var модуль = мир.модули.модульПоУказателю(указатель); - if ( - модуль && - модуль.версия != описание.версия - ) { - список.push(указатель); - } - } - мир.списокМодулейПриложенияДляОбновления = список; -}; - - -// // // // - - -УведомитьОбОтсутствииОбновленийПриложения = мир => -{ - мир.уведомить("обновления приложения отсутствуют"); -}; - - -// // // // - - -ЗагрузитьОписаниеВсехМодулейПриложения = мир => -{ - var указатели = [УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ]; - var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ); - var содержимое = м.содержимое["/📦"]; - var строки = содержимое.split(/\n/); - for (var номер in строки) - { - var строка = строки[номер]; - if (!строка.startsWith("#") && строка.length) - { - указатели.push(строка); - } - } - - мир.описанияМодулейПриложения = []; - - function загрузитьОписание(мир, список, номер, успех, провал) - { - const указатель = список[номер]; - мир.взять( - указатель, - function(содержимое) { - var описание = мир.разобрать0000(содержимое); - мир.описанияМодулейПриложения[указатель] = описание; - успех(); - }, - function(ошибка) { - провал(); - } - ); - } - - сделатьПараллельно( - мир, - указатели, - загрузитьОписание, - function() { - мир.уведомить("загрузили описание всех модулей приложения"); - }, - function() { - мир.уведомить("не загрузили описание всех модулей приложения"); - } - ); -}; \ No newline at end of file diff --git a/🔄.череда b/🔄.череда deleted file mode 100644 index 7bf8507..0000000 --- a/🔄.череда +++ /dev/null @@ -1,12 +0,0 @@ -надо обновить приложение при наличии обновлений - загрузить описание всех модулей приложения -не загрузили описание всех модулей приложения - уведомить об отсутствии обновлений приложения -загрузили описание всех модулей приложения - составить список модулей приложения для обновления - проверить наличие модулей приложения для обновления -отсутствуют модули приложения для обновления - уведомить об отсутствии обновлений приложения -присутствуют модули приложения для обновления - удалить модули приложения перед обновлением - перезагрузить приложение после обновления \ No newline at end of file diff --git a/🗄️.js b/🗄️.js index eaf2d19..ad5cd73 100644 --- a/🗄️.js +++ b/🗄️.js @@ -1,4 +1,5 @@ var модуль = gitjs.мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ); +document.title = "🀄 Архивировать МАОН"; // MARK: /📦 @@ -6,117 +7,29 @@ var модуль = gitjs.мир.модули.модульПоУказателю( модуль.содержимое["/📦"] = ` -# Список указателей на модули для загрузки во время пуска -# 启动时要加载的模块指针列表 -# List of module pointers to load at startup - -https://bitbucket.org/gitjs/jquery/raw/3.5.1/0000 -https://bitbucket.org/gitjs/uikit/raw/3.2.0/0000 -https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout/raw/branch/master/0000 -https://git.opengamestudio.org/mahjong/povtorniy-repeating-ui/raw/branch/master/0000 +https://git.opengamestudio.org/BCE/jszip/raw/branch/master/0000 +# Из Рисователя берём Base64JS, да, косо-криво, лучше поменять. https://git.opengamestudio.org/PuCOBATEJlb/PuCOBATEJlb/raw/branch/master/0000 -https://git.opengamestudio.org/PuCOBATEJlb/PECYPCbl/raw/branch/master/0000 - -https://git.opengamestudio.org/MAOH/MEXMA/raw/branch/master/0000 -https://git.opengamestudio.org/MAOH/CEHMA/raw/branch/master/0000 -https://git.opengamestudio.org/MAOH/MOPMA/raw/branch/master/0000 -https://git.opengamestudio.org/MAOH/PEEMA/raw/branch/master/0000 -https://git.opengamestudio.org/MAOH/OTMA/raw/branch/master/0000 -https://git.opengamestudio.org/MAOH/CYMA/raw/branch/master/0000 - -https://git.opengamestudio.org/MAOH/TEMA_M1K/raw/branch/master/0000 -https://git.opengamestudio.org/MAOH/PACK_M1/raw/branch/master/0000 - -# Убрать после отладки -https://git.opengamestudio.org/MAOH/TEMA_OT/raw/branch/master/0000 -https://git.opengamestudio.org/MAOH/PACK_OT/raw/branch/master/0000 - -`; - - -// MARK: /🙈.html - - -модуль.содержимое["/🙈.html"] = ` - -
-

Маджонг ⚬ 麻将 ⚬ Mahjong

-

🀄 МАОН

-

${версия}

-
- `; -// MARK: /🙈.css - - -модуль.содержимое["/🙈.css"] = ` - -.фон-экрана -{ - background-color: white; - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; -} - -`; - - -// MARK: /🎬.js +// MARK: /📦.js -ЗадатьЗаголовок = мир => +ОкончитьЗагрузкуПриложения = мир => { - document.title = "🀄 МАОН"; + мир.уведомить("надо окончить загрузку приложения"); }; // // // // -ОтобразитьСтраницуЗагрузки = мир => +ЗагрузитьОкончание = мир => { var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ); - - var вид = document.createElement("style"); - document.head.appendChild(вид); - вид.innerHTML = м.содержимое["/🙈.css"]; - - var структура = м.содержимое["/🙈.html"] - .replace(/\${версия}/g, м.версия); - // Вставляем содержимое в рамку, чтобы применяемые стили UIkit не - // дёргали надписи. - // https://stackoverflow.com/a/8322025 - var рамка = ""; - document.body.insertAdjacentHTML("afterbegin", рамка); - document.getElementById("экран-загрузки").src = "data:text/html;charset=utf-8," + структура; -}; - - -// MARK: /🎬.череда - - -gitjs.мир.разобрать(` - -пуск - задать заголовок - отобразить страницу загрузки - -`); - - -// MARK: /📦.js - - -ОкончитьЗагрузкуПриложения = мир => -{ - мир.уведомить("надо окончить загрузку приложения"); + eval(м.содержимое["/🏁.js"]); + мир.разобрать(м.содержимое["/🏁.череда"]); }; @@ -184,6 +97,7 @@ gitjs.мир.разобрать(` обновления приложения отсутствуют загрузить библиотеки приложения загрузили библиотеки приложения + загрузить окончание окончить загрузку приложения `); diff --git a/🙈.css b/🙈.css new file mode 100644 index 0000000..34c6112 --- /dev/null +++ b/🙈.css @@ -0,0 +1,14 @@ + + +.фон-экрана +{ + background-color: white; + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; +} + diff --git a/🙈.html b/🙈.html new file mode 100644 index 0000000..a17ac8f --- /dev/null +++ b/🙈.html @@ -0,0 +1,8 @@ + + +
+

Маджонг ⚬ 麻将 ⚬ Mahjong

+

🀄 МАОН

+

0.1.0

+
+