angel_paginate 1.0.0+3

  • README.md
  • Installing
  • Versions
  • 56

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.

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

with Flutter:


$ flutter packages get

Alternatively, your editor might support pub get or packages 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

Analysis

This feature is new.
We welcome feedback.
More details: scoring.

We analyzed this package, and provided a score, details, and suggestions below.

  • completed on Feb 3, 2018
  • Dart: 2.0.0-dev.20.0
  • pana: 0.10.1

Scores

Popularity:
Describes how popular the package is relative to other packages. [more]
22 / 100
Health:
Code health derived from static analysis. [more]
99 / 100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
80 / 100
Overall score:
Weighted score of the above. [more]
56

Platforms

Detected platforms: Flutter, web, other

No platform restriction found in primary library package:angel_paginate/angel_paginate.dart.

Suggestions

  • Maintain CHANGELOG.md.

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

  • Maintain an example.

    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
angel_framework ^1.0.0 1.1.0+3
Transitive dependencies
angel_http_exception 1.0.0
angel_model 1.0.0
angel_route 2.0.5
async 2.0.3
body_parser 1.0.3
charcode 1.1.1
collection 1.14.5
combinator 1.0.0-beta+7
container 0.1.2
http_server 0.9.7
json_god 2.0.0-beta+1
logging 0.11.3+1
matcher 0.12.1+4
merge_map 1.0.0
meta 1.1.2
mime 0.9.6
path 1.5.1
pool 1.3.4
quiver_hashcode 1.0.0
random_string 0.0.1
source_span 1.4.0
stack_trace 1.9.1
string_scanner 1.0.2
tuple 1.0.1
Dev dependencies
angel_diagnostics ^1.0.0
angel_test ^1.0.0
test ^0.12.15