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



+ 22
- 5
3.0/редактор/200.пульт.js View File

@@ -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 = показать ? "⚠" : " ";
};

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


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

@@ -2,9 +2,9 @@ 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;
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="впульте">&nbsp;</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>


Loading…
Cancel
Save