// Generated by CoffeeScript 1.12.7
/**
* Volume view overview section
* @module
*/
'use strict';
app.directive('volumeOverview', [
'constantService', function(constants) {
/**
* Generate volume summary
* @interface volume/generateSummary
*/
var generateAssetcount, generateReleasesummary, generateSummary;
generateSummary = function(volume) {
var Gender, Participant, c, ci, g, i, len, r, ref, ref1, ref2, results, ri, summary;
volume.summary = summary = {
sessions: 0,
shared: 0,
agemin: 2e308,
agemax: -2e308,
agesum: 0,
ages: 0,
participants: 0
};
Participant = constants.categoryName.participant;
Gender = Participant.metricName.gender.id;
Participant = Participant.id;
ref = volume.containers;
for (ci in ref) {
c = ref[ci];
if (!(!c.top)) {
continue;
}
summary.sessions++;
if (c.release >= constants.release.SHARED) {
summary.shared++;
}
ref1 = c.records;
for (i = 0, len = ref1.length; i < len; i++) {
r = ref1[i];
if (!('age' in r && volume.records[r.id].category === Participant)) {
continue;
}
if (r.age < summary.agemin) {
summary.agemin = r.age;
}
if (r.age > summary.agemax) {
summary.agemax = r.age;
}
summary.agesum += r.age;
summary.ages++;
}
}
summary.agemean = summary.agesum / summary.ages;
ref2 = volume.records;
results = [];
for (ri in ref2) {
r = ref2[ri];
if (r.category === Participant) {
summary.participants++;
if (g = r.measures[Gender]) {
summary.genders || (summary.genders = {});
if (summary.genders[g]) {
results.push(summary.genders[g]++);
} else {
results.push(summary.genders[g] = 1);
}
} else {
results.push(void 0);
}
} else {
results.push(void 0);
}
}
return results;
};
/**
* Generate volume release table summary
* @interface volume/generateReleasesummary
*/
generateReleasesummary = function(volume) {
var combineArray, fileArrMat, fileArrSess, generateArray, k, key, ref, results, summary, v, value;
volume.releasesummary = summary = {
'sessions': {
unreleased: 0,
"private": 0,
shared: 0,
excerpts: 0,
"public": 0
},
'materials': {
unreleased: 0,
"private": 0,
shared: 0,
excerpts: 0,
"public": 0
}
};
fileArrSess = [];
fileArrMat = [];
generateArray = function(obj, array) {
var k, results, v;
results = [];
for (k in obj) {
v = obj[k];
if (constants.release[v.classification] === void 0) {
if (constants.release[v.container.release] === void 0) {
results.push(array.push('private'));
} else {
results.push(array.push(constants.release[v.container.release].toLowerCase()));
}
} else {
results.push(array.push(constants.release[v.classification].toLowerCase()));
}
}
return results;
};
combineArray = function(array, string) {
var results, x;
results = [];
for (x in array) {
results.push(summary[string][array[x]]++);
}
return results;
};
ref = volume.containers;
for (key in ref) {
value = ref[key];
if (Object.keys(value.assets).length > 0) {
if (value.top === true) {
generateArray(value.assets, fileArrMat);
} else {
generateArray(value.assets, fileArrSess);
}
}
}
combineArray(fileArrMat, 'materials');
combineArray(fileArrSess, 'sessions');
results = [];
for (key in summary) {
value = summary[key];
results.push((function() {
var results1;
results1 = [];
for (k in value) {
v = value[k];
if (v === 0) {
results1.push(delete summary[key][k]);
} else {
results1.push(void 0);
}
}
return results1;
})());
}
return results;
};
generateAssetcount = function(volume) {
volume.assetCount = Object.keys(volume.assets).length;
return volume.assetCount;
};
return {
restrict: 'E',
templateUrl: 'volume/overview.html',
scope: false,
link: {
pre: function($scope) {
if (!$scope.volume.summary) {
generateSummary($scope.volume);
}
generateReleasesummary($scope.volume);
generateAssetcount($scope.volume);
}
}
};
}
]);
app.directive('releaseTable', [
function() {
return {
restrict: 'E',
link: function($scope, $elem) {
var k, key, ref, table, tbody, th, trow, v, value;
table = angular.element($elem[0]);
table.append('<thead><tr><th>File Type</th><th>Release Level</th><th># of Files</th></tr></thead><tbody></tbody>');
tbody = table.find('tbody');
ref = $scope.volume.releasesummary;
for (key in ref) {
value = ref[key];
if (Object.keys(value).length > 0) {
for (k in value) {
v = value[k];
if (k === Object.keys(value)[0]) {
th = '<tr><th rowspan="' + Object.keys(value).length + '">' + key + '</th><th>' + k + '</th><td>' + v + '</td></tr>';
tbody.append(th);
} else if (Object.keys(value).length > 1) {
trow = '<tr><th>' + k + '</th><td>' + v + '</td></tr>';
tbody.append(trow);
} else {
trow = '';
}
}
}
}
}
};
}
]);
//# sourceMappingURL=overview.js.map