Source: volume/meter.js

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