dotledger/dotledger

View on GitHub
app/assets/javascripts/dot_ledger/collections/index.js

Summary

Maintainability
C
1 day
Test Coverage
// = require_self
// = require ./account_groups
// = require ./accounts
// = require ./balances
// = require ./categories
// = require ./goals
// = require ./index
// = require ./payments
// = require ./projected_balances
// = require ./saved_searches
// = require ./sorting_rules
// = require ./statements
// = require ./tags
// = require ./transactions

DotLedger.module('Collections', function () {
  this.Base = Backbone.Collection.extend({
    pagination: {},

    metadata: {},

    parse: function (response, options) {
      this._fetch_options_data = options.data || {};
      this.pagination = JSON.parse(options.xhr.getResponseHeader('X-Pagination'));
      this.metadata = JSON.parse(options.xhr.getResponseHeader('X-Metadata'));
      return response;
    },

    nextPage: function () {
      var data;
      this.trigger('page:change', this.pagination.next_page);

      if (this.pagination && (this.pagination.next_page != null)) {
        data = _.extend(this._fetch_options_data, {
          page: this.pagination.next_page
        });

        this.fetch({
          reset: true,
          data: data
        });
      }
    },

    previousPage: function () {
      var data;
      this.trigger('page:change', this.pagination.previous_page);

      if (this.pagination && (this.pagination.previous_page != null)) {
        data = _.extend(this._fetch_options_data, {
          page: this.pagination.previous_page
        });

        this.fetch({
          reset: true,
          data: data
        });
      }
    }
  });
});