Source: volume/overview.js

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