d3-view
Version:
View-model d3 plugin for building interactive data-driven web interfaces
31 lines (26 loc) • 650 B
JavaScript
import validators from "./validators";
// validator singleton
export default (vm, el) => {
validators.forEach(validator => {
if (validator.set) validator.set(el, vm.props);
});
vm.model.$on("value.validate", validate);
vm.model.$validate = validate;
};
function validate() {
var vm = this.$$view,
value = this.value,
el =
vm.sel.attr("id") === this.props.id
? vm.sel
: vm.sel.select(`
msg;
for (let validator of validators.values()) {
msg = validator.validate(el, value);
if (msg) {
if (msg === true) msg = "";
break;
}
}
this.error = msg || "";
}