angel_paginate 1.0.0+3

  • README.md
  • Installing
  • Versions
  • 36

paginate

version 1.0.0+3 build status coverage: 100%

Platform-agnostic pagination library, with custom support for the Angel framework.

Installation

In your pubspec.yaml file:

dependencies:
  angel_paginate: ^1.0.0

Usage

This library exports a Paginator<T>, which can be used to efficiently produce instances of PaginationResult<T>. Pagination results, when serialized to JSON, look like this:

{
  "total" : 75,
  "items_per_page" : 10,
  "previous_page" : 3,
  "current_page" : 4,
  "next_page" : 5,
  "start_index" : 30,
  "end_index" : 39,
  "data" : ["<items...>"]
}

Results can be parsed from Maps using the PaginationResult<T>.fromMap constructor, and serialized via their toJson() method.

To create a paginator:

import 'package:angel_paginate/angel_paginate.dart';

main() {
  var p = new Paginator(iterable);
  
  // Get the current page (default: page 1)
  var page = p.current;
  print(page.total);
  print(page.startIndex);
  print(page.data); // The actual items on this page.
  p.next(); // Advance a page
  p.back(); // Back one page
  p.goToPage(10); // Go to page number (1-based, not a 0-based index)
}

The entire Paginator API is documented, so check out the DartDocs.

Paginators by default cache paginations, to improve performance as you shift through pages. This can be especially helpful in a client-side application where your UX involves a fast response time, i.e. a search page.

Use With Angel

Naturally, a library named angel_paginate has special provisions for the Angel framework.

In package:angel_paginate/server.dart, a function called paginate generates pagination service hooks for you. If the result of a hooked service event is an Iterable, it will be paginated. This is convenient because it works with any data store, whether it be MongoDB, RethinkDB, an in-memory store, or something else entirely.

configureServer(Angel app) {
  var service = app.service('api/foo') as HookedService;
  service.afterIndexed.listen(paginate(itemsPerPage: 10));
}

See test/server_test.dart for examples of usage with Angel.

The pagination hook also allows you to provide a page and/or $limit in the query. If the user provides a page in the query, it will return a pagination of the given page.

Ex. http://mysite.com/api/todos?page=4

A $limit can be used to override the itemsPerPage set in the paginate hook. If you would like to set a maximum on the number of items per page, you can set maxItemsPerPage in the paginate call.

Ex. http://mysite.com/api/todos?$limit=25

You can use these pagination functions to provide powerful search experiences on your websites.

NOTE: If the paginated data is empty, expect start_index and end_index to both be -1.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  angel_paginate: ^1.0.0+3

2. Install it

You can install packages from the command line:

with pub:


$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:angel_paginate/angel_paginate.dart';
  
Version Uploaded Documentation Archive
1.0.0+3 May 28, 2017 Go to the documentation of angel_paginate 1.0.0+3 Download angel_paginate 1.0.0+3 archive
1.0.0+2 May 27, 2017 Go to the documentation of angel_paginate 1.0.0+2 Download angel_paginate 1.0.0+2 archive
1.0.0+1 May 26, 2017 Go to the documentation of angel_paginate 1.0.0+1 Download angel_paginate 1.0.0+1 archive
1.0.0 May 26, 2017 Go to the documentation of angel_paginate 1.0.0 Download angel_paginate 1.0.0 archive
Popularity:
Describes how popular the package is relative to other packages. [more]
72
Health:
Code health derived from static analysis. [more]
0
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
0
Overall:
Weighted score of the above. [more]
36
Learn more about scoring.

The package version is not analyzed, because it does not support Dart 2. Until this is resolved, the package will receive a health and maintenance score of 0.

Analysis issues and suggestions

Fix dependencies in pubspec.yaml.

Running pub upgrade failed with the following output:

ERR: The current Dart SDK version is 2.0.0.
 
 Because angel_framework >=0.0.0-dev.1 <1.1.3 requires SDK version <2.0.0 and angel_framework >=1.1.3 <2.0.0-alpha depends on container ^0.1.2, angel_framework >=0.0.0-dev.1 <2.0.0-alpha requires container ^0.1.2.
 So, because container >=0.1.1 requires SDK version >=1.8.0 <2.0.0 and angel_paginate depends on angel_framework ^1.0.0, version solving failed.

Health suggestions

Format lib/angel_paginate.dart.

Run dartfmt to format lib/angel_paginate.dart.

Format lib/server.dart.

Run dartfmt to format lib/server.dart.

Maintenance issues and suggestions

Fix platform conflicts. (-20 points)

Error(s) prevent platform classification:

Fix dependencies in pubspec.yaml.

Maintain CHANGELOG.md. (-20 points)

Changelog entries help clients to follow the progress in your code.

Package is getting outdated. (-38.36 points)

The package was released 72 weeks ago.

Maintain an example. (-10 points)

Create a short demo in the example/ directory to show how to use this package. Common file name patterns include: main.dart, example.dart or you could also use angel_paginate.dart.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.19.0