Validator
The plugin allows you keep the diagram in a valid state by running a set of callbacks to determine if a command is valid.
To learn more about the plugin, check out the Data validity section.
constructor
constructor(options: Validator.Options);
The Validator constructor takes the following parameters:
commandManager
An instance of the CommandManager the validator listens to.
cancelInvalid
Determine whether to cancel an invalid command or not. If set to false
, only the invalid
event is triggered.
The default is true
.
Methods
validate()
validate(actions: string, ...callbacks: Array<Validator.Callback>): Validator;
The method registers callbacks for a given action.
The Validator listens to commands added to the CommandManager
and runs the set of callbacks registered for the action
.
If the last callback returns an error, the command is canceled (see dia.CommandManager.cancel()).
This behavior can be suppressed by setting the cancelInvalid to false
.
Callbacks are invoked in try catch block. If an error is thrown, it is passed to the next callback in line.
action
action: string
The action
is the name of the event triggered on the graph (see List of triggered events).
validator.validate('add', () => { /* ... */ });
Multiple actions may be given separated by whitespace.
validator.validate('change:source change:target', () => { /* ... */ });
callbacks
...callbacks: Array<Validator.Callback>
The validation functions.
Any number of validation functions can be passed to the validate()
method.
const callback1 = (err, command, next) => { /* ... */ };
const callback2 = (err, command, next) => { /* ... */ };
validator.validate(action, callback1, callback2);
Every callback has the following signature:
-
The
err
is an error from the previous callback. -
The
command
parameter is a command from the CommandManager stack. -
The
next
parameter is a function accepting one argument - an error passed to the next callback in line.Calling the
next()
function means going to the next callback. The order of the callbacks is the same as the order they were passed to thevalidate()
method.If a call to the
next()
function is omitted, the validation for the specified action stops.
Events
The plugin fires the following events:
invalid
Triggered when an invalid command is detected.
validator.on('invalid', (command: CommandManager.CommandData) => {
console.warn('Invalid command:', command);
});
Types
The plugin uses the following types:
Callback
type Callback = (
err: any,
command: CommandManager.CommandData,
next: (err?: any) => void
) => any;
Options
interface Options {
commandManager: CommandManager;
cancelInvalid?: boolean;
}