Переглянути джерело

копировать ссылку

tags/4.1
Михаил Капелько 3 роки тому
джерело
коміт
7b8c17cd6b
6 змінених файлів з 65 додано та 40 видалено
  1. +20
    -6
      3.1/общее/200.функции.js
  2. +1
    -1
      3.1/проигрыватель/700.Игра.js
  3. +22
    -22
      3.1/редактор/100.Редактор.js
  4. +20
    -9
      3.1/редактор/200.Пульт.js
  5. +1
    -1
      3.1/редактор/700.Муром.js
  6. +1
    -1
      index.html

+ 20
- 6
3.1/общее/200.функции.js Переглянути файл

@@ -1,18 +1,20 @@
function вZ64(строка)
var мир = {};

мир.вZ64 = function(строка)
{
var байты = new TextEncoder("utf-8").encode(строка);
var архив = pako.deflate(байты, { to: 'string' });
return base64js.fromByteArray(архив);
}
};

function изZ64(строка)
мир.изZ64 = function(строка)
{
var архив = base64js.toByteArray(строка);
var байты = pako.inflate(архив);
return new TextDecoder("utf-8").decode(байты);
}
};

function uuid()
мир.uuid = function()
{
// https://stackoverflow.com/a/2117523
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
@@ -23,4 +25,16 @@ function uuid()
return v.toString(16);
}
);
}
};

мир.назначитьКнопкамСобытия = function(события, список)
{
for (var номер in список)
{
const пара = список[номер];
var кнопка = document.getElementById(пара[0]);
кнопка.addEventListener("click", function(_) {
события.уведомить(пара[1]);
});
}
};

+ 1
- 1
3.1/проигрыватель/700.Игра.js Переглянути файл

@@ -13,7 +13,7 @@ function Игра()
{
if (z64)
{
var код = изZ64(z64);
var код = мир.изZ64(z64);
/**/console.debug("Игра.исполнитьКод:", код);
}
};


+ 22
- 22
3.1/редактор/100.Редактор.js Переглянути файл

@@ -2,6 +2,7 @@ function Редактор(события, имяРедактора)
{
this.создать = function()
{
this.первоначальныйЗаголовок = document.title;
this.установитьAce();
this.улавливатьЗавершениеРедактирования();
this.пз = new ПараметрыЗапуска();
@@ -14,7 +15,7 @@ function Редактор(события, имяРедактора)
var z64 = this.пз.параметры["z64"];
if (z64)
{
var код = изZ64(z64);
var код = мир.изZ64(z64);
this.ace.session.setValue(код);
}
};
@@ -22,10 +23,10 @@ function Редактор(события, имяРедактора)
this.исполнитьКод = function()
{
var содержимое = this.ace.session.getValue();
var z64 = вZ64(содержимое);
var z64 = мир.вZ64(содержимое);
var путь = window.location.pathname + "?z64=" + z64;
history.pushState(null, "", путь);
document.title = `M-3.0 ${z64.length}:${z64.slice(z64.length - 5)}`;
document.title = `${this.первоначальныйЗаголовок} ${z64.length}:${z64.slice(z64.length - 5)}`;

// Исполняем явно код лишь первый раз.
var проигрыватель = document.getElementById("проигрыватель");
@@ -52,20 +53,24 @@ function Редактор(события, имяРедактора)
}
};


this.установитьAce = function()
this.проверитьКорректностьКода = function()
{
var область = document.getElementById(имяРедактора);
this.ace = window.ace.edit(имяРедактора);
this.ace.session.setMode("ace/mode/javascript");
this.ace.session.setUseWrapMode(true);
}
try
{
eval(this.ace.session.getValue());
события.уведомить("код корректен");
}
catch (ошибка)
{
события.уведомить("код некорректен");
}
};

this.улавливатьЗавершениеРедактирования = function()
{
var тут = this;
this.ace.session.on("change", function(дельта) {
const билет = uuid();
const билет = мир.uuid();
тут.билет = билет;
setTimeout(
function()
@@ -75,22 +80,17 @@ function Редактор(события, имяРедактора)
события.уведомить("завершили редактирование");
}
},
1000
300
);
});
};

this.проверитьКорректностьКода = function()
this.установитьAce = function()
{
try
{
eval(this.ace.session.getValue());
события.уведомить("код корректен");
}
catch (ошибка)
{
события.уведомить("код некорректен");
}
var область = document.getElementById(имяРедактора);
this.ace = window.ace.edit(имяРедактора);
this.ace.session.setMode("ace/mode/javascript");
this.ace.session.setUseWrapMode(true);
};

// Конструктор.


+ 20
- 9
3.1/редактор/200.Пульт.js Переглянути файл

@@ -1,16 +1,16 @@
function Пульт(события, имяОшибки, имяПуска)
function Пульт(события, имяОшибки, имяПерезапуска, имяОтдельно, имяСсылки)
{
this.создать = function()
{
var ошибка = document.getElementById(имяОшибки);
/*
var версия = document.getElementById(имяПуска);
пуск.addEventListener("click", function(событие) {
console.debug("НАДО запустить");
});
*/
мир.назначитьКнопкамСобытия(
события,
[
[имяПерезапуска, "перезапустить"],
[имяОтдельно, "запустить отдельно"],
[имяСсылки, "скопировать ссылку"],
]
);
события.подписать(this);
};

@@ -24,6 +24,17 @@ console.debug("НАДО запустить");
{
this.показатьОшибку(true);
}
else if (событие == "скопировать ссылку")
{
navigator.clipboard.writeText(window.location)
.then(() => {
UIkit.notification("Скопировали ссылку", { status: "success", timeout: 1000 });
})
.catch(err => {
UIkit.notification("Не удалось скопировать ссылку :(", { status: "danger", timeout: 5000 });
});
}

};




+ 1
- 1
3.1/редактор/700.Муром.js Переглянути файл

@@ -4,7 +4,7 @@ function Муром()
{
this.события = new События();
this.редактор = new Редактор(this.события, "редактор");
this.пульт = new Пульт(this.события, "ошибка", "пуск");
this.пульт = new Пульт(this.события, "ошибка", "перезапустить", "отдельно", "ссылка");
};

// Конструктор.


+ 1
- 1
index.html Переглянути файл

@@ -1 +1 @@
3.0/редактор/index.html
3.1/редактор/index.html

Завантаження…
Відмінити
Зберегти