UNPKG

ancient-graph-spreading

Version:

Automatic maintenance spreading of graph according other graphs.

155 lines (123 loc) 8.68 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>spread.js - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav> <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="GraphSpreading.html">GraphSpreading</a><ul class='methods'><li data-type='method'><a href="GraphSpreading.html#_getFromFields">_getFromFields</a></li><li data-type='method'><a href="GraphSpreading.html#_getToFields">_getToFields</a></li><li data-type='method'><a href="GraphSpreading.html#_spreadByPathLink">_spreadByPathLink</a></li><li data-type='method'><a href="GraphSpreading.html#_spreadFromSpreadLinkByPathGraph">_spreadFromSpreadLinkByPathGraph</a></li><li data-type='method'><a href="GraphSpreading.html#_spreadFromSpreadLinkByPathLink">_spreadFromSpreadLinkByPathLink</a></li><li data-type='method'><a href="GraphSpreading.html#_wrapPathQuery">_wrapPathQuery</a></li><li data-type='method'><a href="GraphSpreading.html#_wrapSpreadQuery">_wrapSpreadQuery</a></li><li data-type='method'><a href="GraphSpreading.html#addPathGraph">addPathGraph</a></li><li data-type='method'><a href="GraphSpreading.html#each">each</a></li><li data-type='method'><a href="GraphSpreading.html#spreadByPathLink">spreadByPathLink</a></li><li data-type='method'><a href="GraphSpreading.html#spreadFromSpreadLink">spreadFromSpreadLink</a></li><li data-type='method'><a href="GraphSpreading.html#spreadFromSpreadLinkByPathGraph">spreadFromSpreadLinkByPathGraph</a></li><li data-type='method'><a href="GraphSpreading.html#spreadFromSpreadLinkByPathLink">spreadFromSpreadLinkByPathLink</a></li><li data-type='method'><a href="GraphSpreading.html#spreadNewSpreadLink">spreadNewSpreadLink</a></li><li data-type='method'><a href="GraphSpreading.html#spreadTo">spreadTo</a></li><li data-type='method'><a href="GraphSpreading.html#unspread">unspread</a></li><li data-type='method'><a href="GraphSpreading.html#unspreadByPathId">unspreadByPathId</a></li><li data-type='method'><a href="GraphSpreading.html#unspreadFromRemovedSpreadLinkByPrevId">unspreadFromRemovedSpreadLinkByPrevId</a></li></ul></li><li><a href="PathGraph.html">PathGraph</a></li><li><a href="QueueSpreading.html">QueueSpreading</a><ul class='methods'><li data-type='method'><a href="QueueSpreading.html#_getGraph">_getGraph</a></li><li data-type='method'><a href="QueueSpreading.html#removeFromLaunched">removeFromLaunched</a></li><li data-type='method'><a href="QueueSpreading.html#spreadByPath">spreadByPath</a></li><li data-type='method'><a href="QueueSpreading.html#spreadBySpread">spreadBySpread</a></li><li data-type='method'><a href="QueueSpreading.html#spreadBySpreader">spreadBySpreader</a></li><li data-type='method'><a href="QueueSpreading.html#unspreadByPath">unspreadByPath</a></li><li data-type='method'><a href="QueueSpreading.html#unspreadBySpread">unspreadBySpread</a></li><li data-type='method'><a href="QueueSpreading.html#unspreadBySpreader">unspreadBySpreader</a></li></ul></li><li><a href="SpreaderGraph.html">SpreaderGraph</a></li><li><a href="SpreadGraph.html">SpreadGraph</a><ul class='methods'><li data-type='method'><a href="SpreadGraph.html#_spreadingHandler">_spreadingHandler</a></li><li data-type='method'><a href="SpreadGraph.html#_unspreadingHandler">_unspreadingHandler</a></li><li data-type='method'><a href="SpreadGraph.html#insert">insert</a></li><li data-type='method'><a href="SpreadGraph.html#remove">remove</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#factoryLaunchedGraph">factoryLaunchedGraph</a></li><li><a href="global.html#factoryPathGraph">factoryPathGraph</a></li><li><a href="global.html#factoryRespreadGraph">factoryRespreadGraph</a></li><li><a href="global.html#factorySpreaderGraph">factorySpreaderGraph</a></li><li><a href="global.html#factorySpreadGraph">factorySpreadGraph</a></li></ul> </nav> <div id="main"> <h1 class="page-title">spread.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>/** * This method allows you to use SpreadGraph class to its inheritance chain. * Fields launched, process, prev, path and root is required! * Manage fields launched and process. * * @param {Class} ParentClassGraph * @return {Class} SpreadGraph * @description `import { factorySpreadGraph } from 'ancient-graph-spreading';` */ function factorySpreadGraph(ParentClassGraph) { class SpreadGraph extends ParentClassGraph { /** * @param {} collection - A pointer to the collection dannymineobhodimye daapteru to work with the graph. This may be a connection to the SQL database and table name, for example, or a collection of Mongo. * @param {Object} fields - Comparison of the data in the collection of data in the graph. It is necessary for the adapter. * @param {Object} config - Additional config. * @param {String} config.constantField - Constant field in graph * @param {String} config.variableField - Spreadable field in graph */ constructor(collection, selector, config) { super(...arguments); if (config.constantField) this.constantField = config.constantField; else throw new Error('config.constantField is not defined'); if (config.variableField) this.variableField = config.variableField; else throw new Error('config.variableField is not defined'); } /** * Default spreading handler. If spread specified link allowed, callback it link, else callback undefined. * * @param {Object} [prevSpreadLink] * @param {PathGraph} [pathGraph] * @param {Object} [pathLink] * @param {Object} newSpreadLink * @param {Object} [context] * @param {SpreadGraph~_spreadingHandlerCallback} [callback] */ _spreadingHandler(prevSpreadLink, pathGraph, pathLink, newSpreadLink, context, callback) { callback(newSpreadLink); } /** * Responce from _spreadingHandler method. * * @callback SpreadGraph~_spreadingHandlerCallback * @param {Object} [newSpreadLink] */ /** * Default unspreading handler. If unspread specified link allowed, callback it link, else callback undefined. * It called in cases of dispute. When respread, if this method not replaced, will be respreaded all spread links. * * @param {Object} spreadLink * @param {Object} [context] * @param {SpreadGraph~_unspreadingHandlerCallback} [callback] */ _unspreadingHandler(spreadLink, context, callback) { callback(true); } /** * Responce from _unspreadingHandler method. * * @callback SpreadGraph~_unspreadingHandlerCallback * @param {Boolean} [premission = true] */ /** * Parent insert with parser of context.process. */ insert(modifier, callback, context) { if (context &amp;&amp; context[this.config.aliases.process]) { modifier[this.config.aliases.process] = [context[this.config.aliases.process]]; } return super.insert(modifier, callback, context); } /** * The method is strictly designed so that the class inherits from ExistedGraph. * Adds to process field custom value from context. */ remove(selector, callback, context) { if (context &amp;&amp; context[this.config.aliases.process]) { if (!context.modifier) context.modifier = {}; context.modifier[this.config.aliases.process] = { add: context[this.config.aliases.process] }; } return super.remove(selector, callback, context); } } return SpreadGraph; }; export { factorySpreadGraph };</code></pre> </article> </section> </div> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Sun Dec 04 2016 20:09:10 GMT+0000 (UTC) using the Minami theme. </footer> <script>prettyPrint();</script> <script src="scripts/linenumber.js"></script> </body> </html>