Source: volume/design.js

// Generated by CoffeeScript 1.12.7

/**
 * The volume design tab functionalities
 * @module
 */
'use strict';
app.directive('volumeDesign', [
  '$location', 'constantService', 'routerService', 'messageService', function($location, constants, router, messages) {
    return {
      restrict: 'E',
      templateUrl: 'volume/design.html',
      require: '^wizard',
      link: function($scope, $element, $attrs, wizard) {
        var form, init, volume;
        volume = $scope.volume;
        form = $scope.volumeDesign;
        $element.on('click', function(e) {
          angular.element(e.target).not('input').closest('li.clickable').find('input').trigger('click');
        });
        $scope.select = function(c) {
          var j, k, len, len1, m, ref, ref1;
          form.metric = {};
          if (($scope.selected = constants.category[c]) == null) {
            return;
          }
          $location.replace().search('key', void 0);
          if (volume.metrics[c]) {
            ref = volume.metrics[c];
            for (j = 0, len = ref.length; j < len; j++) {
              m = ref[j];
              form.metric[m] = true;
            }
          } else {
            ref1 = $scope.selected.metrics;
            for (k = 0, len1 = ref1.length; k < len1; k++) {
              m = ref1[k];
              if (m.required != null) {
                form.metric[m.id] = true;
              }
            }
          }
        };
        init = function() {
          var c, ref;
          form.category = {};
          for (c in volume.metrics) {
            form.category[c] = true;
          }
          $scope.select(((ref = $scope.selected) != null ? ref.id : void 0) || $location.search().key);
        };
        init();
        $scope.change = function(c, m) {
          var i, s;
          if (c == null) {
            return;
          }
          messages.clear(form);
          form.$setSubmitted();
          volume.setVolumeMetrics(c, m, m != null ? form.metric[m] : form.category[c]).then(function() {
            init();
            form.$setPristine();
          }, function(res) {
            init();
            form.$setUnsubmitted();
            messages.addError({
              body: 'Error changing volume design',
              report: res,
              owner: form
            });
          });
          if (!((m != null) && (i = $scope.selected.indicator) && m !== i.id)) {
            return;
          }
          if (form.metric[m]) {
            s = false;
          } else if (!_.some(form.metric)) {
            s = true;
          } else {
            return;
          }
          i = i.id;
          if (form.metric[i] !== s) {
            form.metric[i] = s;
            $scope.change(c, i);
          }
        };
        $scope.manage = function() {
          $location.replace().search('key', $scope.selected.id);
          wizard.activateStep('data');
        };
        return $scope.stop = function(e) {
          e.stopPropagation();
          return false;
        };
      }
    };
  }
]);

//# sourceMappingURL=design.js.map