Compare commits
2 Commits
28660eca14
...
5adb24c8c0
| Author | SHA1 | Date | |
|---|---|---|---|
| 5adb24c8c0 | |||
| a4024587a3 |
@@ -45,29 +45,130 @@ function base64Decode(str)
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
var компоненты = {
|
// Create GUID / UUID in JavaScript?
|
||||||
|
// https://stackoverflow.com/a/2117523
|
||||||
|
function generateUUID()
|
||||||
|
{
|
||||||
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
|
||||||
|
/[xy]/g,
|
||||||
|
function(c)
|
||||||
|
{
|
||||||
|
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
|
||||||
|
return v.toString(16);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
"пуск":
|
// ReporterSubscription class.
|
||||||
"Y29uc29sZS5sb2coItCX0LDQv9GD0YHQuiDQvtGB0YPRidC10YHRgtCy0LvRkdC9Iik7",
|
function ReporterSubscription(id, callback, reporter)
|
||||||
|
{
|
||||||
|
this.id = id;
|
||||||
|
this.callback = callback;
|
||||||
|
this.reporter = reporter;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reporter class.
|
||||||
|
function Reporter(name)
|
||||||
|
{
|
||||||
|
this.name =
|
||||||
|
(typeof name !== "undefined") ?
|
||||||
|
name :
|
||||||
|
"";
|
||||||
|
this.subscriptions = [];
|
||||||
|
}
|
||||||
|
Reporter.prototype.report = function()
|
||||||
|
{
|
||||||
|
for (var id in this.subscriptions)
|
||||||
|
{
|
||||||
|
var subscription = this.subscriptions[id];
|
||||||
|
subscription.callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reporter.prototype.subscribe = function(callback)
|
||||||
|
{
|
||||||
|
var id = generateUUID();
|
||||||
|
var subscription = new ReporterSubscription(id, callback, this);
|
||||||
|
this.subscriptions.push(subscription);
|
||||||
|
return subscription;
|
||||||
|
}
|
||||||
|
Reporter.prototype.subscribeMany = function(funcs)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < funcs.length; ++i)
|
||||||
|
{
|
||||||
|
var func = funcs[i];
|
||||||
|
this.subscribe(func);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var Уведомитель = Reporter;
|
||||||
|
Reporter.prototype.уведомить = function()
|
||||||
|
{
|
||||||
|
this.report();
|
||||||
};
|
};
|
||||||
|
Reporter.prototype.подписать = function(функция)
|
||||||
|
{
|
||||||
|
this.subscribe(функция);
|
||||||
|
};
|
||||||
|
Reporter.prototype.подписатьМного = function(funcs)
|
||||||
|
{
|
||||||
|
this.subscribeMany(funcs);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
var муром = {};
|
||||||
|
муром.старт = new Уведомитель();
|
||||||
|
var murom = муром;
|
||||||
|
murom.start = муром.старт;
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
var компоненты = [
|
||||||
|
|
||||||
|
[
|
||||||
|
"пуск",
|
||||||
|
"ZnVuY3Rpb24g0LzRg9GA0L7QvNCh0YLQsNGA0YIoKQp7CiAgICDQvNGD0YDQvtC8LtGB0YLQsNGA0YIuc3Vic2NyaWJlKGZ1bmN0aW9uKCl7CiAgICAgICAgY29uc29sZS5sb2coItCf0KPQodCaINCX0LDQv9GD0YnQtdC9Iik7CiAgICB9KTsKICAgIGNvbnNvbGUubG9nKCLQn9Cj0KHQmiDQl9Cw0LPRgNGD0LbQtdC9Iik7Cn07",
|
||||||
|
],
|
||||||
|
|
||||||
|
[
|
||||||
|
"start",
|
||||||
|
"ZnVuY3Rpb24g0LzRg9GA0L7QvNCh0YLQsNGA0YIoKQp7CiAgICBtdXJvbS5zdGFydC5zdWJzY3JpYmUoZnVuY3Rpb24oKXsKICAgICAgICBjb25zb2xlLmxvZygiU1RBUlQgU3RhcnRlZCIpOwogICAgfSk7CiAgICBjb25zb2xlLmxvZygiU1RBUlQgTG9hZGVkIik7Cn07",
|
||||||
|
],
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
// Загрузка переопределений компонент.
|
||||||
|
|
||||||
localforage.config({ name: "murom" });
|
localforage.config({ name: "murom" });
|
||||||
|
var обработанаКомпонента = new Уведомитель();
|
||||||
|
for (var номер in компоненты)
|
||||||
|
{
|
||||||
|
const компонент = компоненты[номер];
|
||||||
|
const имя = компонент[0];
|
||||||
|
localforage.getItem(имя, function(ошибка, значение) {
|
||||||
|
if (значение)
|
||||||
|
{
|
||||||
|
компонент[1] = значение;
|
||||||
|
}
|
||||||
|
var код = base64Decode(компонент[1]);
|
||||||
|
eval(код);
|
||||||
|
муромСтарт();
|
||||||
|
console.log("обработана компонента");
|
||||||
|
обработанаКомпонента.уведомить();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Уведомление о пуске.
|
||||||
|
|
||||||
|
var обработано = 0;
|
||||||
|
обработанаКомпонента.подписать(function(){
|
||||||
|
if (++обработано == компоненты.length)
|
||||||
|
{
|
||||||
|
console.log("пуск");
|
||||||
|
муром.старт.уведомить();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
//localforage.setItem("пуск", "Y29uc29sZS5sb2coItCf0LXRgNC10L7Qv9GA0LXQtNC10LvRkdC90L3Ri9C5INC30LDQv9GD0YHQuiDQvtGB0YPRidC10YHRgtCy0LvRkdC9Iik7");
|
//localforage.setItem("пуск", "Y29uc29sZS5sb2coItCf0LXRgNC10L7Qv9GA0LXQtNC10LvRkdC90L3Ri9C5INC30LDQv9GD0YHQuiDQvtGB0YPRidC10YHRgtCy0LvRkdC9Iik7");
|
||||||
|
|
||||||
localforage.getItem("пуск", function(ошибка, значение) {
|
|
||||||
var код = "";
|
|
||||||
if (значение)
|
|
||||||
{
|
|
||||||
var код = base64Decode(значение);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var код = base64Decode(компоненты["пуск"]);
|
|
||||||
}
|
|
||||||
eval(код);
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user