@@ -1,7 +1,7 @@ | |||
Архивировать МАОН | |||
0.1.0 | |||
0.2.0 | |||
https://git.opengamestudio.org/kornerr/APXuBuPOBATb-MAOH | |||
x /🔄.js | |||
/🔄.череда | |||
/🏁.js | |||
/🏁.череда | |||
x /🗄️.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"; | |||
}; |
@@ -0,0 +1,11 @@ | |||
надо окончить загрузку приложения | |||
скрыть крутилку | |||
задать список модулей | |||
разобрать список модулей | |||
вывести указатели модулей | |||
загрузить модули | |||
загрузили модули | |||
создать архив из загруженных модулей | |||
сгенерировать архив | |||
сгенерировали архив | |||
выдать архив на скачивание |
@@ -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 | |||
@@ -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() { | |||
мир.уведомить("не загрузили описание всех модулей приложения"); | |||
} | |||
); | |||
}; |
@@ -1,12 +0,0 @@ | |||
надо обновить приложение при наличии обновлений | |||
загрузить описание всех модулей приложения | |||
не загрузили описание всех модулей приложения | |||
уведомить об отсутствии обновлений приложения | |||
загрузили описание всех модулей приложения | |||
составить список модулей приложения для обновления | |||
проверить наличие модулей приложения для обновления | |||
отсутствуют модули приложения для обновления | |||
уведомить об отсутствии обновлений приложения | |||
присутствуют модули приложения для обновления | |||
удалить модули приложения перед обновлением | |||
перезагрузить приложение после обновления |
@@ -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"] = ` | |||
<center> | |||
<p>Маджонг ⚬ 麻将 ⚬ Mahjong</p> | |||
<h1>🀄 МАОН</h1> | |||
<p>${версия}</p> | |||
</center> | |||
`; | |||
// 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 рамка = "<iframe id='экран-загрузки' class='фон-экрана' frameBorder='0'></iframe>"; | |||
document.body.insertAdjacentHTML("afterbegin", рамка); | |||
document.getElementById("экран-загрузки").src = "data:text/html;charset=utf-8," + структура; | |||
}; | |||
// MARK: /🎬.череда | |||
gitjs.мир.разобрать(` | |||
пуск | |||
задать заголовок | |||
отобразить страницу загрузки | |||
`); | |||
// MARK: /📦.js | |||
ОкончитьЗагрузкуПриложения = мир => | |||
{ | |||
мир.уведомить("надо окончить загрузку приложения"); | |||
eval(м.содержимое["/🏁.js"]); | |||
мир.разобрать(м.содержимое["/🏁.череда"]); | |||
}; | |||
@@ -184,6 +97,7 @@ gitjs.мир.разобрать(` | |||
обновления приложения отсутствуют | |||
загрузить библиотеки приложения | |||
загрузили библиотеки приложения | |||
загрузить окончание | |||
окончить загрузку приложения | |||
`); | |||
@@ -0,0 +1,14 @@ | |||
.фон-экрана | |||
{ | |||
background-color: white; | |||
position: fixed; | |||
left: 0; | |||
top: 0; | |||
right: 0; | |||
bottom: 0; | |||
width: 100%; | |||
height: 100%; | |||
} | |||
@@ -0,0 +1,8 @@ | |||
<center> | |||
<p>Маджонг ⚬ 麻将 ⚬ Mahjong</p> | |||
<h1>🀄 МАОН</h1> | |||
<p>0.1.0</p> | |||
</center> | |||