// Generated by CoffeeScript 1.12.7
/**
* Volume creation help steps
* @module
*/
'use strict';
var indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
slice = [].slice;
app.directive('volumeMeter', [
'$compile', '$templateCache', 'constantService', 'displayService', 'messageService', '$sce', function($compile, $templateCache, constants, display, messages, $sce) {
return {
restrict: 'E',
templateUrl: 'volume/meter.html',
require: '^wizard',
scope: {
volumeFn: '&volume'
},
link: function($scope, $element, $attrs, wizard) {
var Metric, addCategory, c, i, len, m, metrics, n, ref, results, volume;
$scope.volume = volume = $scope.volumeFn();
if (!volume) {
return;
}
$scope.name = 'meter';
$scope.id = wizard.name + '-meter';
$scope.complete = true;
$scope.tab = $compile($templateCache.get('volume/meterTab.html'))($scope);
$scope.unstyled = true;
wizard.addStep($scope);
Metric = (function() {
function Metric(test) {
this.test = test;
return;
}
Metric.prototype.run = function() {
return this.done = this.test();
};
return Metric;
})();
$scope.metrics = metrics = {
name: new Metric(function() {
return !!volume.name;
}),
description: new Metric(function() {
var ref;
return ((ref = volume.body) != null ? ref.length : void 0) >= 500;
}),
citation: new Metric(function() {
return !!volume.citation;
}),
keywords: new Metric(function() {
var i, len, n, ref, t;
n = 0;
ref = volume.tags;
for (i = 0, len = ref.length; i < len; i++) {
t = ref[i];
if (!t.keyword) {
continue;
}
n++;
if (n >= 3) {
return true;
}
}
}),
excerpts: new Metric(function() {
var e, i, len, n, ref;
n = 0;
ref = volume.excerpts;
for (i = 0, len = ref.length; i < len; i++) {
e = ref[i];
if (!(e.release >= constants.release.SHARED)) {
continue;
}
n++;
if (n >= 3) {
return true;
}
}
}),
thumbnail: new Metric(function() {
var e, i, len, ref;
ref = volume.excerpts;
for (i = 0, len = ref.length; i < len; i++) {
e = ref[i];
if (e.release >= constants.release.PUBLIC && (e.format.type === 'image' || e.format.type === 'video')) {
return true;
}
}
}),
design: new Metric(function() {
var m;
for (m in volume.metrics) {
return true;
}
}),
session: new Metric(function() {
var c, ci, ref;
ref = volume.containers;
for (ci in ref) {
c = ref[ci];
if (!c.top) {
return true;
}
}
}),
record: new Metric(function() {
var r, ref, ri;
ref = volume.records;
for (ri in ref) {
r = ref[ri];
return true;
}
}),
asset: new Metric(function() {
var a, ai, ref;
ref = volume.assets;
for (ai in ref) {
a = ref[ai];
if (a.container) {
return true;
}
}
}),
share: new Metric(function() {
return volume.accessPreset;
})
};
addCategory = function(c) {
var cat, def, m;
cat = constants.categoryName[c];
def = (function() {
var i, len, ref, results;
ref = cat.metrics;
results = [];
for (i = 0, len = ref.length; i < len; i++) {
m = ref[i];
if (m.required != null) {
results.push(m);
}
}
return results;
})();
return metrics[c] = new Metric(function() {
var design;
design = volume.metrics[cat.id] || [];
return !(this.metrics = (function() {
var i, len, ref, results;
results = [];
for (i = 0, len = def.length; i < len; i++) {
m = def[i];
if (!(ref = m.id, indexOf.call(design, ref) >= 0)) {
results.push(m.name);
}
}
return results;
})()).length;
});
};
ref = ['participant', 'context'];
for (i = 0, len = ref.length; i < len; i++) {
c = ref[i];
addCategory(c);
}
$scope.goto = function() {
var message, step, target;
step = arguments[0], target = arguments[1], message = 3 <= arguments.length ? slice.call(arguments, 2) : [];
wizard.activateStep(step);
if (target) {
display.scrollTo(target);
}
if (message.length) {
messages.add({
type: 'tutorial',
persist: true,
body: message.map($sce.trustAsHtml)
});
}
};
results = [];
for (n in metrics) {
m = metrics[n];
results.push(m.run());
}
return results;
}
};
}
]);
//# sourceMappingURL=meter.js.map