сообщать об ошибке
This commit is contained in:
31
3.0/редактор/040.события.js
Normal file
31
3.0/редактор/040.события.js
Normal file
@@ -0,0 +1,31 @@
|
||||
function События()
|
||||
{
|
||||
this.создать = function()
|
||||
{
|
||||
this.обработчики = [];
|
||||
};
|
||||
|
||||
this.подписать = function(обработчик)
|
||||
{
|
||||
this.обработчики.push(обработчик);
|
||||
};
|
||||
|
||||
this.отписать = function(обработчик) {
|
||||
var номер = this.обработчики.indexOf(обработчик);
|
||||
if (номер != -1)
|
||||
{
|
||||
this.обработчики.splice(номер, 1);
|
||||
}
|
||||
};
|
||||
|
||||
this.уведомить = function(событие) {
|
||||
for (var номер in this.обработчики)
|
||||
{
|
||||
var обработчик = this.обработчики[номер];
|
||||
обработчик.обработатьСобытие(событие);
|
||||
}
|
||||
};
|
||||
|
||||
// Конструктор.
|
||||
this.создать();
|
||||
}
|
||||
@@ -1,9 +1,18 @@
|
||||
function Редактор(имяОбласти)
|
||||
function Редактор(события, имяОбласти)
|
||||
{
|
||||
this.создать = function()
|
||||
{
|
||||
this.установитьAce();
|
||||
this.улавливатьРедактирование();
|
||||
this.улавливатьЗавершениеРедактирования();
|
||||
события.подписать(this);
|
||||
};
|
||||
|
||||
this.обработатьСобытие = function(событие)
|
||||
{
|
||||
if (событие == "завершили редактирование")
|
||||
{
|
||||
this.проверитьКорректностьКода();
|
||||
}
|
||||
};
|
||||
|
||||
this.установитьAce = function()
|
||||
@@ -13,7 +22,7 @@ function Редактор(имяОбласти)
|
||||
this.ace.session.setMode("ace/mode/javascript");
|
||||
}
|
||||
|
||||
this.улавливатьРедактирование = function()
|
||||
this.улавливатьЗавершениеРедактирования = function()
|
||||
{
|
||||
var тут = this;
|
||||
this.ace.session.on("change", function(дельта) {
|
||||
@@ -24,7 +33,7 @@ function Редактор(имяОбласти)
|
||||
{
|
||||
if (билет == тут.билет)
|
||||
{
|
||||
тут.проверитьКорректностьКода();
|
||||
события.уведомить("завершили редактирование");
|
||||
}
|
||||
},
|
||||
1000
|
||||
@@ -37,11 +46,11 @@ function Редактор(имяОбласти)
|
||||
try
|
||||
{
|
||||
eval(this.ace.session.getValue());
|
||||
/**/console.debug("ИГР Редактор.проверитьКК OK");
|
||||
события.уведомить("код корректен");
|
||||
}
|
||||
catch (ошибка)
|
||||
{
|
||||
/**/console.debug("ИГР Редактор.проверитьКК ОШИБКА: ", ошибка);
|
||||
события.уведомить("код некорректен");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,16 +1,33 @@
|
||||
function Пульт(имяОбласти, имяПуска)
|
||||
function Пульт(события, имяОшибки, имяПуска)
|
||||
{
|
||||
this.создать = function()
|
||||
{
|
||||
this.настроитьКнопкуПуска();
|
||||
};
|
||||
var ошибка = document.getElementById(имяОшибки);
|
||||
|
||||
this.настроитьКнопкуПуска = function()
|
||||
{
|
||||
var пуск = document.getElementById(имяПуска);
|
||||
пуск.addEventListener("click", function(событие) {
|
||||
/**/console.debug("НАДО запустить");
|
||||
});
|
||||
|
||||
события.подписать(this);
|
||||
};
|
||||
|
||||
this.обработатьСобытие = function(событие)
|
||||
{
|
||||
if (событие == "код корректен")
|
||||
{
|
||||
this.показатьОшибку(false);
|
||||
}
|
||||
else if (событие == "код некорректен")
|
||||
{
|
||||
this.показатьОшибку(true);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
this.показатьОшибку = function(показать)
|
||||
{
|
||||
ошибка.innerHTML = показать ? "⚠" : " ";
|
||||
};
|
||||
|
||||
// Конструктор.
|
||||
|
||||
@@ -2,9 +2,9 @@ function Муром()
|
||||
{
|
||||
this.создать = function()
|
||||
{
|
||||
this.редактор = new Редактор("редактор");
|
||||
this.пульт = new Пульт("пульт", "пуск");
|
||||
|
||||
this.события = new События();
|
||||
this.редактор = new Редактор(this.события, "редактор");
|
||||
this.пульт = new Пульт(this.события, "ошибка", "пуск");
|
||||
};
|
||||
|
||||
// Конструктор.
|
||||
|
||||
@@ -31,7 +31,8 @@
|
||||
bottom: 0;
|
||||
width: 4em;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
/*justify-content: center;*/
|
||||
border: 1px dashed gainsboro;
|
||||
}
|
||||
#воспроизведение
|
||||
@@ -44,27 +45,21 @@
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
/*
|
||||
.кнопка {
|
||||
border-radius: 50%;
|
||||
width: 3em;
|
||||
height: 3em;
|
||||
border: 2px solid lightgrey;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: white;
|
||||
.впульте
|
||||
{
|
||||
margin: 0 auto;
|
||||
}
|
||||
*/
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="редактор"></div>
|
||||
<div id="пульт">
|
||||
<a id="пуск" class="uk-icon-button uk-margin-top uk-margin-bottom" uk-icon="play" uk-tooltip="Пуск"></a>
|
||||
<span id="ошибка" class="впульте"> </span>
|
||||
<a id="пуск" class="впульте uk-icon-button uk-margin-top" uk-icon="play" uk-tooltip="Пуск"></a>
|
||||
</div>
|
||||
<div id="воспроизведение"></div>
|
||||
|
||||
<script src="040.события.js"></script>
|
||||
<script src="100.редактор.js"></script>
|
||||
<script src="200.пульт.js"></script>
|
||||
<script src="700.муром.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user