Browse Source

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

tags/4.1
parent
commit
c007c2e6ea
5 changed files with 79 additions and 27 deletions
  1. +31
    -0
      3.0/редактор/040.события.js
  2. +15
    -6
      3.0/редактор/100.редактор.js
  3. +22
    -5
      3.0/редактор/200.пульт.js
  4. +3
    -3
      3.0/редактор/700.муром.js
  5. +8
    -13
      3.0/редактор/index.html

+ 31
- 0
3.0/редактор/040.события.js 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.создать();
}

+ 15
- 6
3.0/редактор/100.редактор.js 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("ИГР Редактор.проверитьКК ОШИБКА: ", ошибка);
события.уведомить("код некорректен");
} }
}; };




+ 22
- 5
3.0/редактор/200.пульт.js 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 = показать ? "⚠" : " ";
}; };


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


+ 3
- 3
3.0/редактор/700.муром.js View File

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


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


+ 8
- 13
3.0/редактор/index.html 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%;
width: 3em;
height: 3em;
border: 2px solid lightgrey;
display: flex;
align-items: center;
justify-content: center;
background: white;
.впульте
{
margin: 0 auto;
} }
*/
</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>


Loading…
Cancel
Save