Miss any of our Open RFC calls?Watch the recordings here! »

offline-model

1.2.0 • Public • Published

Offline Model

Your module for Offline operations with Javascript

Build Status Build Windows Status Coverage Status MIT License

Installation

1 - Via NPM

$ npm install offline-model

2 - Via bower

$ bower install offline-model

3 - Clone this repository and access the generated folder

$ git clone git://github.com/willmendesneto/offline-model [project-name]
cd [project-name]

Once you have OfflineModel in your project, just include as a dependency in your application and you’re good to go. It's works!

    var myModule = OfflineModel;

Methods and attributes

attributes

  • primaryKey: Primary Key that will be used for OfflineModel. This value will be unique;
  • fields: Fields for mapp in OfflineModel. Only these chosen fields will be stored for the service;
  • key: Key used for store locally (localStorage and sessionStorage are stored key value based);
  • secret: Secret key for store;

Methods

  • init: service contructor;
  • createValueObject: Create the ValueObject of item for add/edit/list, based in fields attribute;
  • setStorageType: set/update storageType (localStorage/sessionStorage);
  • setKey: Set the storageType key for store in browser, based in key => value;
  • getKey: Return the key used in this moment for OfflineModel instance;
  • setListItems: Add default/first list items for store in storageType selected;
  • getListItems: Return list items stored locally in browser;
  • setFields: Set fields that OfflineModel will be map for store;
  • countTotalItems: Return the count of totalItems, based in Primary Key;
  • create: Create new item in list items stored locally;
  • update: Update item stored locally in list items;
  • delete: Remove item stored locally;
  • clearAll: Clear all items stored locally, based in storageType;

Example

var contactMock = [
  {_id: 1, name: 'Allan Benjamin', address: 'St. Claire Avenue, Nº 101', phone: '557188339933'},
  {_id: 2, name: 'Georgia Smith', address: 'St. Claire Avenue, Nº 102', phone: '557188339933'},
  {_id: 3, name: 'Gregory Levinsky', address: 'St. Claire Avenue, Nº 103', phone: '557188339933'},
  {_id: 4, name: 'Jackeline Macfly', address: 'St. Claire Avenue, Nº 104', phone: '557188339933'},
  {_id: 5, name: 'Joseph Climber', address: 'St. Claire Avenue, Nº 105', phone: '557188339933'},
  {_id: 6, name: 'Joshua Jackson', address: 'St. Claire Avenue, Nº 106', phone: '557188339933'}
];
 
var params = {
  // localStorage/sessionStorage key
  key: 'contactMock',
  // primary field. This field will be increased automatically
  primaryKey: '_id',
  // Fields mapped for store
  fields: ['_id', 'name', 'address', 'phone'],
  // Expiry time in miliseconds
  expiry: 3000,
  // you can add new methods via params too
  myMethod: function() {
    console.log('My method is working!');
  }
};
 
var ContactModel = OfflineModel.setStorageType('localStorage')
                                  .init(contactMock, params);
 
// return contactMock value;
ContactModel.getListItems();
// return 'contactMock';
ContactModel.getKey();
// === contactMock.length;
ContactModel.countTotalItems(contactMock);
 
// Create an item
var contact = {
  name: 'This is a test',
  address: 'Adress test',
  phone: '557188998877'
};
ContactModel.create(contact);
 
// Update the item
contact = {
  phone: '559554138698',
  // This field is verified based in `primaryKey` attribute value
  _id: 7
};
 
ContactModel.update(contact);
 
// Removing the item
ContactModel.delete(7);
 
// Removing all items of storage
ContactModel.clearAll();

Author

Wilson Mendes (willmendesneto)

New features comming soon.

Install

npm i offline-model

DownloadsWeekly Downloads

0

Version

1.2.0

License

MIT

Last publish

Collaborators

  • avatar