Browse Source

Improve js function directive validation.

pull/46/head
Igor Kulikov 10 years ago
parent
commit
c860753bc8
  1. 2
      dao/src/main/resources/system-data.cql
  2. 4
      ui/src/app/components/datakey-config.tpl.html
  3. 15
      ui/src/app/components/js-func.directive.js

2
dao/src/main/resources/system-data.cql

File diff suppressed because one or more lines are too long

4
ui/src/app/components/datakey-config.tpl.html

@ -53,7 +53,7 @@
<br/>
<tb-js-func ng-model="model.funcBody"
function-args="{{ ['time', 'prevValue'] }}"
validation-args="{{ [1, 1] }}"
validation-args="{{ [[1, 1],[1, '1']] }}"
result-type="any">
</tb-js-func>
</section>
@ -64,7 +64,7 @@
<tb-js-func ng-if="model.usePostProcessing"
ng-model="model.postFuncBody"
function-args="{{ ['time', 'value', 'prevValue'] }}"
validation-args="{{ [1, 1, 1] }}"
validation-args="{{ [[1, 1, 1],[1, '1', '1']] }}"
result-type="any">
</tb-js-func>
</section>

15
ui/src/app/components/js-func.directive.js

@ -128,7 +128,20 @@ function JsFunc($compile, $templateCache, toast, utils, $translate) {
scope.validate = function () {
try {
var toValidate = new Function(scope.functionArgsString, scope.functionBody);
var res = toValidate.apply(this, scope.validationArgs);
var res;
var validationError;
for (var i=0;i<scope.validationArgs.length;i++) {
try {
res = toValidate.apply(this, scope.validationArgs[i]);
validationError = null;
break;
} catch (e) {
validationError = e;
}
}
if (validationError) {
throw validationError;
}
if (scope.resultType != 'nocheck') {
if (scope.resultType === 'any') {
if (angular.isUndefined(res)) {

Loading…
Cancel
Save