Skip to content

Commit cdb7b52

Browse files
authored
Merge pull request #3349 from jeedom/fix/expression-test
fix test expression result
2 parents 2867dce + 203d29b commit cdb7b52

2 files changed

Lines changed: 111 additions & 103 deletions

File tree

core/ajax/scenario.ajax.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,12 @@
8989
if (init('action') == 'testExpression') {
9090
$return = array();
9191
$scenario = null;
92-
$expr = jeedom::fromHumanReadable(init('expression'));
92+
$expression = trim(init('expression'));
93+
$expr = jeedom::fromHumanReadable($expression);
9394
$return['evaluate'] = scenarioExpression::setTags($expr, $scenario, true);
9495
$return['result'] = evaluate($return['evaluate']);
9596
$return['correct'] = 'ok';
96-
if (trim($return['result']) == trim($return['evaluate'])) {
97+
if (!is_numeric($expression) && trim($return['result']) == $expression) {
9798
$return['correct'] = 'nok';
9899
}
99100
ajax::success($return);

desktop/modal/expression.test.php

Lines changed: 108 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@
2323
<div id="md_expressionTest" data-modalType="md_expressionTest">
2424
<form class="form-horizontal" onsubmit="return false;">
2525
<div class="input-group input-group-sm" style="width: 100%">
26-
<span class="input-group-addon roundedLeft" style="width: 100px"><i class="fas fa-random"></i> {{Test}}</span>
26+
<span class="input-group-addon roundedLeft" style="width: 100px"><i class="fas fa-random"></i> {{Test}}</span>
2727
<input class="form-control input-sm" id="in_testExpression">
2828
<span class="input-group-btn">
2929
<a class="btn btn-default btn-sm cursor tooltips" id="bt_searchInfoCmd" title="{{Rechercher une commande}}"><i class="fas fa-list-alt"></i>
30-
<a class="btn btn-default btn-sm cursor tooltips" id="bt_selectGenericExpression" title="{{Rechercher un type générique}}"><i class="fas fa-puzzle-piece"></i>
31-
</a><a class="btn btn-default btn-sm cursor tooltips" id="bt_searchScenario" title="{{Rechercher un scénario}}"><i class="fas fa-history"></i>
32-
</a><a class="btn btn-default btn-sm cursor tooltips" id="bt_searchEqLogic" title="{{Rechercher un équipement}}"><i class="fas fa-cube"></i>
33-
</a><a class="btn btn-sm btn-default btn-success roundedRight" id="bt_testExpression"><i class="fas fa-bolt"></i> {{Exécuter}}</a>
30+
<a class="btn btn-default btn-sm cursor tooltips" id="bt_selectGenericExpression" title="{{Rechercher un type générique}}"><i class="fas fa-puzzle-piece"></i>
31+
</a><a class="btn btn-default btn-sm cursor tooltips" id="bt_searchScenario" title="{{Rechercher un scénario}}"><i class="fas fa-history"></i>
32+
</a><a class="btn btn-default btn-sm cursor tooltips" id="bt_searchEqLogic" title="{{Rechercher un équipement}}"><i class="fas fa-cube"></i>
33+
</a><a class="btn btn-sm btn-default btn-success roundedRight" id="bt_testExpression"><i class="fas fa-bolt"></i> {{Exécuter}}</a>
3434
</span>
3535
</div>
3636
</form>
@@ -42,112 +42,119 @@
4242
</div>
4343

4444
<script>
45-
if (!jeeFrontEnd.md_expressionTest) {
46-
jeeFrontEnd.md_expressionTest = {
47-
init: function() {
48-
//Show all IF expression if from scenario page:
49-
if (document.body.getAttribute('data-page') == 'scenario' && document.getElementById('div_editScenario').isVisible()) {
50-
document.querySelectorAll('.subElementIF .expressions input[data-l1key="expression"]').forEach(_expr => {
51-
expression = _expr.value.trim().replace(/"/g, '\'')
52-
newLi = '<li class="cursor list-group-item list-group-item-success bt_expressionHistory" data-command="'+ expression +'"><a>' + expression + '</a></li>'
53-
document.getElementById('ul_expressionHistory').insertAdjacentHTML('beforeend', newLi)
54-
})
55-
}
56-
},
57-
testExpression: function() {
58-
let expression = document.getElementById('in_testExpression').value
59-
if (expression == '') {
60-
jeedomUtils.showAlert({
61-
attachTo: jeeDialog.get('#md_expressionTest', 'dialog'),
62-
message: '{{L\'expression de test ne peut être vide}}',
63-
level: 'danger'
64-
})
65-
return
66-
}
67-
68-
if (!document.querySelector('.bt_expressionHistory[data-command="' + expression.replace(/"/g, '\\"') + '"]')) {
69-
let li = '<li class="cursor list-group-item list-group-item-success bt_expressionHistory" data-command="' + expression.replace(/"/g, '\\"') + '"><a>' + expression + '</a></li>'
70-
document.getElementById('ul_expressionHistory').insertAdjacentHTML('afterbegin', li)
71-
}
72-
jeedom.scenario.testExpression({
73-
expression: expression,
74-
error: function(error) {
45+
if (!jeeFrontEnd.md_expressionTest) {
46+
jeeFrontEnd.md_expressionTest = {
47+
init: function() {
48+
//Show all IF expression if from scenario page:
49+
if (document.body.getAttribute('data-page') == 'scenario' && document.getElementById('div_editScenario').isVisible()) {
50+
document.querySelectorAll('.subElementIF .expressions input[data-l1key="expression"]').forEach(_expr => {
51+
expression = _expr.value.trim().replace(/"/g, '\'')
52+
newLi = '<li class="cursor list-group-item list-group-item-success bt_expressionHistory" data-command="' + expression + '"><a>' + expression + '</a></li>'
53+
document.getElementById('ul_expressionHistory').insertAdjacentHTML('beforeend', newLi)
54+
})
55+
}
56+
},
57+
testExpression: function() {
58+
let expression = document.getElementById('in_testExpression').value.trim()
59+
if (expression == '') {
7560
jeedomUtils.showAlert({
7661
attachTo: jeeDialog.get('#md_expressionTest', 'dialog'),
77-
message: error.message,
62+
message: '{{L\'expression de test ne peut être vide}}',
7863
level: 'danger'
79-
});
80-
},
81-
success: function(data) {
82-
let divResult = document.getElementById('div_expressionTestResult')
83-
divResult.empty()
84-
var html = '<ul><div class="alert alert-info">'
85-
if (data.correct == 'nok') {
86-
html += '<strong>{{Attention : il doit y avoir un souci, car le résultat est le même que l\'expression}}</strong><br\>'
87-
}
88-
html += '{{Je vais évaluer :}} <strong>' + data.evaluate + '</strong><br/>'
89-
html += '{{Résultat :}} <strong>' + data.result + '</strong>'
90-
html += '</div></ul>'
91-
divResult.insertAdjacentHTML('beforeend', html)
64+
})
65+
return
66+
}
67+
68+
if (!document.querySelector('.bt_expressionHistory[data-command="' + expression.replace(/"/g, '\\"') + '"]')) {
69+
let li = '<li class="cursor list-group-item list-group-item-success bt_expressionHistory" data-command="' + expression.replace(/"/g, '\\"') + '"><a>' + expression + '</a></li>'
70+
document.getElementById('ul_expressionHistory').insertAdjacentHTML('afterbegin', li)
9271
}
93-
})
94-
},
72+
jeedom.scenario.testExpression({
73+
expression: expression,
74+
error: function(error) {
75+
jeedomUtils.showAlert({
76+
attachTo: jeeDialog.get('#md_expressionTest', 'dialog'),
77+
message: error.message,
78+
level: 'danger'
79+
});
80+
},
81+
success: function(data) {
82+
let divResult = document.getElementById('div_expressionTestResult')
83+
divResult.empty()
84+
var html = '<ul><div class="alert alert-info">'
85+
if (data.correct == 'nok') {
86+
html += '<strong>{{Attention : il doit y avoir un souci, car le résultat est le même que l\'expression}}</strong><br\>'
87+
}
88+
html += '{{Je vais évaluer :}} <strong>' + data.evaluate + '</strong><br/>'
89+
html += '{{Résultat :}} <strong>' + data.result + '</strong>'
90+
html += '</div></ul>'
91+
divResult.insertAdjacentHTML('beforeend', html)
92+
}
93+
})
94+
},
95+
}
9596
}
96-
}
9797

98-
(function() {// Self Isolation!
99-
var jeeM = jeeFrontEnd.md_expressionTest
100-
jeeM.init()
98+
(function() { // Self Isolation!
99+
var jeeM = jeeFrontEnd.md_expressionTest
100+
jeeM.init()
101101

102-
//Manage events outside parents delegations:
103-
document.getElementById('in_testExpression')?.addEventListener('keypress', function(event) {
104-
if (event.which == 13) {
105-
jeeFrontEnd.md_expressionTest.testExpression()
106-
}
107-
})
102+
//Manage events outside parents delegations:
103+
document.getElementById('in_testExpression')?.addEventListener('keypress', function(event) {
104+
if (event.which == 13) {
105+
jeeFrontEnd.md_expressionTest.testExpression()
106+
}
107+
})
108108

109-
/*Events delegations
110-
*/
111-
document.getElementById('md_expressionTest')?.addEventListener('click', function(event) {
112-
var _target = null
113-
if (_target = event.target.closest('#bt_searchInfoCmd')) {
114-
jeedom.cmd.getSelectModal({cmd: {type: 'info'}}, function(result) {
115-
document.getElementById('in_testExpression').insertAtCursor(result.human)
116-
})
117-
return
118-
}
109+
/*Events delegations
110+
*/
111+
document.getElementById('md_expressionTest')?.addEventListener('click', function(event) {
112+
var _target = null
113+
if (_target = event.target.closest('#bt_searchInfoCmd')) {
114+
jeedom.cmd.getSelectModal({
115+
cmd: {
116+
type: 'info'
117+
}
118+
}, function(result) {
119+
document.getElementById('in_testExpression').insertAtCursor(result.human)
120+
})
121+
return
122+
}
119123

120-
if (_target = event.target.closest('#bt_searchScenario')) {
121-
jeedom.scenario.getSelectModal({}, function(result) {
122-
document.getElementById('in_testExpression').insertAtCursor(result.human)
123-
})
124-
return
125-
}
124+
if (_target = event.target.closest('#bt_searchScenario')) {
125+
jeedom.scenario.getSelectModal({}, function(result) {
126+
document.getElementById('in_testExpression').insertAtCursor(result.human)
127+
})
128+
return
129+
}
126130

127-
if (_target = event.target.closest('#bt_searchEqLogic')) {
128-
jeedom.eqLogic.getSelectModal({}, function(result) {
129-
document.getElementById('in_testExpression').insertAtCursor(result.human)
130-
})
131-
return
132-
}
131+
if (_target = event.target.closest('#bt_searchEqLogic')) {
132+
jeedom.eqLogic.getSelectModal({}, function(result) {
133+
document.getElementById('in_testExpression').insertAtCursor(result.human)
134+
})
135+
return
136+
}
133137

134-
if (_target = event.target.closest('#bt_selectGenericExpression')) {
135-
jeedom.config.getGenericTypeModal({type: 'info', object: true}, function(result) {
136-
document.getElementById('in_testExpression').insertAtCursor(result.human)
137-
})
138-
return
139-
}
138+
if (_target = event.target.closest('#bt_selectGenericExpression')) {
139+
jeedom.config.getGenericTypeModal({
140+
type: 'info',
141+
object: true
142+
}, function(result) {
143+
document.getElementById('in_testExpression').insertAtCursor(result.human)
144+
})
145+
return
146+
}
140147

141-
if (_target = event.target.closest('#bt_testExpression')) {
142-
jeeFrontEnd.md_expressionTest.testExpression()
143-
return
144-
}
148+
if (_target = event.target.closest('#bt_testExpression')) {
149+
jeeFrontEnd.md_expressionTest.testExpression()
150+
return
151+
}
145152

146-
if (_target = event.target.closest('.bt_expressionHistory')) {
147-
document.getElementById('in_testExpression').value = _target.getAttribute('data-command')
148-
jeeFrontEnd.md_expressionTest.testExpression()
149-
return
150-
}
151-
})
152-
})()
153-
</script>
153+
if (_target = event.target.closest('.bt_expressionHistory')) {
154+
document.getElementById('in_testExpression').value = _target.getAttribute('data-command')
155+
jeeFrontEnd.md_expressionTest.testExpression()
156+
return
157+
}
158+
})
159+
})()
160+
</script>

0 commit comments

Comments
 (0)