Uttori View Model Enrichment - Popular Documents
A plugin to expose and add popular documents to a view-model or other object.
Install
npm install --save uttori-plugin-vm-popular-documents
Dependencies
There must be a plugin registered with the hooks to listen for a popular-documents
event and respond with an array of the slugs of the popular documents.
Config
// Registration Events events: callback: 'view-model-home' // Key to use in the view model key: 'popularDocuments' // Number of documents to return. limit: 10 // A list of slugs to ignore when considering popularity. ignore_slugs:
API Reference
ViewModelPopularDocuments
Uttori View Model Enrichment - Popular Documents
Kind: global class
- ViewModelPopularDocuments
- .configKey ⇒
String
- .defaultConfig() ⇒
Object
- .validateConfig(config, _context)
- .register(context)
- .callback(viewModel, context) ⇒
Object
- .configKey ⇒
String
ViewModelPopularDocuments.configKey ⇒ The configuration key for plugin to look for in the provided configuration.
Kind: static property of ViewModelPopularDocuments
Returns: String
- The configuration key.
Example (ViewModelPopularDocuments.configKey)
const config = ...ViewModelPopularDocuments ...contextconfigViewModelPopularDocumentsconfigKey ;
Object
ViewModelPopularDocuments.defaultConfig() ⇒ The default configuration.
Kind: static method of ViewModelPopularDocuments
Returns: Object
- The configuration.
Example (ViewModelPopularDocuments.defaultConfig())
const config = ...ViewModelPopularDocuments ...contextconfigViewModelPopularDocumentsconfigKey ;
ViewModelPopularDocuments.validateConfig(config, _context)
Validates the provided configuration for required entries.
Kind: static method of ViewModelPopularDocuments
Param | Type | Description |
---|---|---|
config | Object |
A configuration object. |
config[ViewModelPopularDocuments.configKey | Object |
A configuration object specifically for this plugin. |
config[ViewModelPopularDocuments.configKey].key | String |
The that will be added to the passed in object and returned with the popular documents. |
config[ViewModelPopularDocuments.configKey].limit | String |
The maximum number of documents to be returned. |
_context | Object |
A Uttori-like context (unused). |
Example (ViewModelPopularDocuments.validateConfig(config, _context))
ViewModelPopularDocuments;
ViewModelPopularDocuments.register(context)
Register the plugin with a provided set of events on a provided Hook system.
Kind: static method of ViewModelPopularDocuments
Param | Type | Description |
---|---|---|
context | Object |
A Uttori-like context. |
context.hooks | Object |
An event system / hook system to use. |
context.hooks.on | function |
An event registration function. |
context.config | Object |
A provided configuration to use. |
context.config.events | Object |
An object whose keys correspong to methods, and contents are events to listen for. |
Example (ViewModelPopularDocuments.register(context))
const context = hooks: { ... } config: ViewModelPopularDocumentsconfigKey: ... events: callback: 'document-save' 'document-delete' validateConfig: 'validate-config' ;ViewModelPopularDocuments;
Object
ViewModelPopularDocuments.callback(viewModel, context) ⇒ Queries the hooks for popular documents and searches the storage provider.
Kind: static method of ViewModelPopularDocuments
Returns: Object
- The provided view-model document.
Param | Type | Description |
---|---|---|
viewModel | Object |
A Uttori view-model object. |
context | Object |
A Uttori-like context. |
context.config | Object |
A provided configuration to use. |
context.config.key | String |
The key to add the array of documents to on the view-model. |
context.config.limit | Number |
The maximum number of documents to return. |
context.config.ignore_slugs | Array.<String> |
A list of slugs to not consider when fetching popular documents. |
context.hooks | Object |
An event system / hook system to use. |
context.hooks.fetch | function |
An event execution function. |
context.storageProvider | Object |
A provided Uttori StorageProvider instance. |
context.storageProvider.getQuery | function |
Access method for getting documents. |
Example (ViewModelPopularDocuments.callback(viewModel, context))
const context = config: ViewModelPopularDocumentsconfigKey: ... hooks: { ... } storageProvider: { ... } ;ViewModelPopularDocuments;
Tests
To run the test suite, first install the dependencies, then run npm test
:
npm installnpm testDEBUG=Uttori* npm test