ancient-funicular
Version:
Just async mounting, updating and unmounting hierarchical carriages.
136 lines (105 loc) • 7.35 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>funicular.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>
<li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Classes</li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html">Carriage</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#disable">disable</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#enable">enable</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#mount">mount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#mountChild">mountChild</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#remount">remount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#shouldRemount">shouldRemount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#tieChild">tieChild</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#unique">unique</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#unmount">unmount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#unmountChilds">unmountChilds</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#untieChild">untieChild</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="ancient-funicular.Funicular.html">Funicular</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Funicular.html#mount">mount</a></span></li><li class="nav-heading">Modules</li><li class="nav-heading"><span class="nav-item-type type-module">M</span><span class="nav-item-name"><a href="module-ancient-funicular.html">ancient-funicular</a></span></li><li class="nav-heading">Interfaces</li><li class="nav-heading"><span class="nav-item-type type-interface">I</span><span class="nav-item-name"><a href="module-ancient-funicular-CarriageListsByNames.html">CarriageListsByNames</a></span></li><li class="nav-heading"><span class="nav-item-type type-interface">I</span><span class="nav-item-name"><a href="module-ancient-funicular-CarriagesByIds.html">CarriagesByIds</a></span></li><li class="nav-heading"><span class="nav-item-type type-interface">I</span><span class="nav-item-name"><a href="module-ancient-funicular-CarriagesByNames.html">CarriagesByNames</a></span></li>
</nav>
<div id="main">
<h1 class="page-title">funicular.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>import each from 'async/each';
import Carriage from './carriage';
/**
* Basic controller of one namespace of carriages.
* @memberof ancient-funicular
*/
class Funicular {
constructor() {
/**
* @type {Number}
* @memberof Funicular
* @private
*/
this.lastCarriageId = 1;
/**
* Must contain only fully assembled, ready-to-operate carriages with name.
* Broken or dismantled carriages should not remain here.
* Attention! A crutch was used. If the carriage is marked as unique, it additionally places itself in id 0. When unmounting or breaking it will also be removed from here.
* @type {CarriageListsByNames}
* @memberof Funicular
* @private
*/
this.namedCarriages = {};
/**
* Must contain only fully assembled, ready-to-operate carriages without name.
* Broken or dismantled carriages should not remain here.
* @type {CarriagesByIds}
* @memberof Funicular
* @private
*/
this.unnamedCarriages = {};
/**
* @type {Function}
* @memberof Funicular
* @private
*/
this.Carriage = Carriage;
}
/**
* Based on name and data, mount new carriage of found already mounted unique carriage in {@link Funicular.namedCarriages} and register callbacks.
* @param {String} name
* @param data
* @param {Carriage~mountCallback} [mountedCallback]
* @param {Carriage~remountCallback} [remountedCallback]
* @param {Carriage~unmountCallback} [unmountedCallback]
* @param {Boolean} [force] - Mount despite the existence of an existing unique carriage.
*/
mount(name, data, mountedCallback, remountedCallback, unmountedCallback, force = false) {
if (!force && this.namedCarriages[name] && this.namedCarriages[name][0]) {
var carriage = this.namedCarriages[name][0];
if (mountedCallback) {
carriage.mountedCallbacks.push(mountedCallback);
mountedCallback(carriage.error, carriage);
}
if (remountedCallback) carriage.remountedCallbacks.push(remountedCallback);
if (unmountedCallback) carriage.unmountedCallbacks.push(unmountedCallback);
} else {
var carriage = new this.Carriage(this, name, data);
if (mountedCallback) carriage.mountedCallbacks.push(mountedCallback);
if (remountedCallback) carriage.remountedCallbacks.push(remountedCallback);
if (unmountedCallback) carriage.unmountedCallbacks.push(unmountedCallback);
carriage.mount();
}
}
}
export default Funicular;</code></pre>
</article>
</section>
</div>
<br class="clear">
<footer>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Thu May 11 2017 11:27:05 GMT+0000 (UTC) using the Minami theme.
</footer>
<script>prettyPrint();</script>
<script src="scripts/linenumber.js"></script>
</body>
</html>