# all files / Github/diagram-js/lib/features/rules/ Rules.js

100% Statements 8/8
75% Branches 3/4
100% Functions 2/2
100% Lines 8/8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46

    1128×

    1×

    1×
    1140×

    1140×

    1140×
    1140×

    1140×
     /**
     * A service that provides rules for certain diagram actions.
     *
     * The default implementation will hook into the {@link CommandStack}
     * to perform the actual rule evaluation. Make sure to provide the
     * `commandStack` service with this module if you plan to use it.
     *
     * Together with this implementation you may use the {@link RuleProvider}
     * to implement your own rule checkers.
     *
     * This module is ment to be easily replaced, thus the tiny foot print.
     *
     * @param {Injector} injector
     */
    export default function Rules(injector) {
      this._commandStack = injector.get('commandStack', false);
    }

    Rules.$inject = [ 'injector' ];

    /**
     * Returns whether or not a given modeling action can be executed
     * in the specified context.
     *
     * This implementation will respond with allow unless anyone
     * objects.
     *
     * @param {String} action the action to be checked
     * @param {Object} [context] the context to check the action in
     *
     * @return {Boolean} returns true, false or null depending on whether the
     *                   operation is allowed, not allowed or should be ignored.
     */
    Rules.prototype.allowed = function(action, context) {
      var allowed = true;

      var commandStack = this._commandStack;

      Eif (commandStack) {
        allowed = commandStack.canExecute(action, context);
      }

      // map undefined to true, i.e. no rules
      return allowed === undefined ? true : allowed;
    };