сообщать об ошибке

This commit is contained in:
2021-09-01 14:49:22 +03:00
parent dc85b0571f
commit c007c2e6ea
5 changed files with 79 additions and 27 deletions

View 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.создать();
}

View File

@@ -1,9 +1,18 @@
function Редактор(имяОбласти) function Редактор(события, имяОбласти)
{ {
this.создать = function() this.создать = function()
{ {
this.установитьAce(); this.установитьAce();
this.улавливатьРедактирование(); this.улавливатьЗавершениеРедактирования();
события.подписать(this);
};
this.обработатьСобытие = function(событие)
{
if (событие == "завершили редактирование")
{
this.проверитьКорректностьКода();
}
}; };
this.установитьAce = function() this.установитьAce = function()
@@ -13,7 +22,7 @@ function Редактор(имяОбласти)
this.ace.session.setMode("ace/mode/javascript"); this.ace.session.setMode("ace/mode/javascript");
} }
this.улавливатьРедактирование = function() this.улавливатьЗавершениеРедактирования = function()
{ {
var тут = this; var тут = this;
this.ace.session.on("change", function(дельта) { this.ace.session.on("change", function(дельта) {
@@ -24,7 +33,7 @@ function Редактор(имяОбласти)
{ {
if (билет == тут.билет) if (билет == тут.билет)
{ {
тут.проверитьКорректностьКода(); события.уведомить("завершили редактирование");
} }
}, },
1000 1000
@@ -37,11 +46,11 @@ function Редактор(имяОбласти)
try try
{ {
eval(this.ace.session.getValue()); eval(this.ace.session.getValue());
/**/console.debug("ИГР Редактор.проверитьКК OK"); события.уведомить("код корректен");
} }
catch (ошибка) catch (ошибка)
{ {
/**/console.debug("ИГР Редактор.проверитьКК ОШИБКА: ", ошибка); события.уведомить("код некорректен");
} }
}; };

View File

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

View File

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

View File

@@ -31,7 +31,8 @@
bottom: 0; bottom: 0;
width: 4em; width: 4em;
display: flex; display: flex;
justify-content: center; flex-direction: column;
/*justify-content: center;*/
border: 1px dashed gainsboro; border: 1px dashed gainsboro;
} }
#воспроизведение #воспроизведение
@@ -44,27 +45,21 @@
} }
</style> </style>
<style> <style>
/* .впульте
.кнопка { {
border-radius: 50%; margin: 0 auto;
width: 3em;
height: 3em;
border: 2px solid lightgrey;
display: flex;
align-items: center;
justify-content: center;
background: white;
} }
*/
</style> </style>
</head> </head>
<body> <body>
<div id="редактор"></div> <div id="редактор"></div>
<div id="пульт"> <div id="пульт">
<a id="пуск" class="uk-icon-button uk-margin-top uk-margin-bottom" uk-icon="play" uk-tooltip="Пуск"></a> <span id="ошибка" class="впульте">&nbsp;</span>
<a id="пуск" class="впульте uk-icon-button uk-margin-top" uk-icon="play" uk-tooltip="Пуск"></a>
</div> </div>
<div id="воспроизведение"></div> <div id="воспроизведение"></div>
<script src="040.события.js"></script>
<script src="100.редактор.js"></script> <script src="100.редактор.js"></script>
<script src="200.пульт.js"></script> <script src="200.пульт.js"></script>
<script src="700.муром.js"></script> <script src="700.муром.js"></script>