Viewing File: /usr/local/cpanel/3rdparty/share/angular-ui-scroll/1.6.1/demo/cache/cache.js

angular.module('application', ['ui.scroll']).controller('mainController', [
  '$scope', '$log', '$timeout', function($scope, console, $timeout) {

    var datasource = {};

    datasource.cache = {
      initialize: function() {
        this.isEnabled = true;
        this.items = {};
        this.getPure = datasource.get;
        return datasource.get = this.getCached;
      },

      getCached: function(index, count, successCallback) {
        var self;
        self = datasource.cache;
        if (self.isEnabled) {
          if (self.getItems(index, count, successCallback)) {
            return;
          }
          return self.getPure(index, count, function(result) {
            self.saveItems(index, count, result);
            return successCallback(result);
          });
        }
        return self.getPure(index, count, successCallback);
      },

      toggle: function() {
        this.isEnabled = !this.isEnabled;
        return this.items = {};
      },

      saveItems: function(index, count, resultItems) {
        var i, item, j, len, results;
        results = [];
        for (i = j = 0, len = resultItems.length; j < len; i = ++j) {
          item = resultItems[i];
          if (!this.items.hasOwnProperty(index + i)) {
            results.push(this.items[index + i] = item);
          } else {
            results.push(void 0);
          }
        }
        return results;
      },

      getItems: function(index, count, successCallback) {
        var i, isCached, j, ref, ref1, result;
        result = [];
        isCached = true;
        for (i = j = ref = index, ref1 = index + count - 1; j <= ref1; i = j += 1) {
          if (!this.items.hasOwnProperty(i)) {
            isCached = false;
            return;
          }
          result.push(this.items[i]);
        }
        successCallback(result);
        return true;
      }
    };

    datasource.get = function(index, count, success) {
      return $timeout(function() {
        var i, item, j, ref, ref1, result;
        result = [];
        for (i = j = ref = index, ref1 = index + count - 1; ref <= ref1 ? j <= ref1 : j >= ref1; i = ref <= ref1 ? ++j : --j) {
          item = {};
          item.content = "item #" + i;
          item.data = {
            some: false
          };
          result.push(item);
        }
        return success(result);
      }, 100);
    };

    $scope.datasource = datasource;

		datasource.cache.initialize();
  }
]);
Back to Directory File Manager