41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
(function (app) {
|
|
'use strict';
|
|
|
|
const u = app.modules.util;
|
|
|
|
function findByPath(root, path) {
|
|
if (!path || path === '') {
|
|
return root;
|
|
}
|
|
const segs = u.ptrParse(path);
|
|
let cur = root;
|
|
for (let i = 0; i < segs.length; i++) {
|
|
if (!cur || typeof cur.child !== 'function') {
|
|
return null;
|
|
}
|
|
cur = cur.child(segs[i]);
|
|
}
|
|
return cur || null;
|
|
}
|
|
|
|
function apply(errors) {
|
|
if (!errors || !errors.length || !app.rootWidget) {
|
|
return;
|
|
}
|
|
for (let i = 0; i < errors.length; i++) {
|
|
const err = errors[i];
|
|
const widget = findByPath(app.rootWidget, err.path || '');
|
|
if (widget && typeof widget.setError === 'function') {
|
|
widget.setError(err.message || 'Invalid value');
|
|
}
|
|
}
|
|
}
|
|
|
|
function clear() {
|
|
if (app.rootWidget) {
|
|
app.rootWidget.clearErrors();
|
|
}
|
|
}
|
|
|
|
app.modules.errors = { apply: apply, clear: clear };
|
|
})(window.formApp);
|