// 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