UNPKG

zettapi_client

Version:

Client side CRUD operations in angular to use with zettapi_server rest api to get started quickly in any CMS project

130 lines (110 loc) 2.89 kB
'use strict'; module.exports = function(Chart) { var noop = Chart.helpers.noop; /** * The plugin service singleton * @namespace Chart.plugins * @since 2.1.0 */ Chart.plugins = { _plugins: [], /** * Registers the given plugin(s) if not already registered. * @param {Array|Object} plugins plugin instance(s). */ register: function(plugins) { var p = this._plugins; ([]).concat(plugins).forEach(function(plugin) { if (p.indexOf(plugin) === -1) { p.push(plugin); } }); }, /** * Unregisters the given plugin(s) only if registered. * @param {Array|Object} plugins plugin instance(s). */ unregister: function(plugins) { var p = this._plugins; ([]).concat(plugins).forEach(function(plugin) { var idx = p.indexOf(plugin); if (idx !== -1) { p.splice(idx, 1); } }); }, /** * Remove all registered p^lugins. * @since 2.1.5 */ clear: function() { this._plugins = []; }, /** * Returns the number of registered plugins? * @returns {Number} * @since 2.1.5 */ count: function() { return this._plugins.length; }, /** * Returns all registered plugin intances. * @returns {Array} array of plugin objects. * @since 2.1.5 */ getAll: function() { return this._plugins; }, /** * Calls registered plugins on the specified extension, with the given args. This * method immediately returns as soon as a plugin explicitly returns false. The * returned value can be used, for instance, to interrupt the current action. * @param {String} extension the name of the plugin method to call (e.g. 'beforeUpdate'). * @param {Array} [args] extra arguments to apply to the extension call. * @returns {Boolean} false if any of the plugins return false, else returns true. */ notify: function(extension, args) { var plugins = this._plugins; var ilen = plugins.length; var i, plugin; for (i=0; i<ilen; ++i) { plugin = plugins[i]; if (typeof plugin[extension] === 'function') { if (plugin[extension].apply(plugin, args || []) === false) { return false; } } } return true; } }; /** * Plugin extension methods. * @interface Chart.PluginBase * @since 2.1.0 */ Chart.PluginBase = Chart.Element.extend({ // Called at start of chart init beforeInit: noop, // Called at end of chart init afterInit: noop, // Called at start of update beforeUpdate: noop, // Called at end of update afterUpdate: noop, // Called at start of draw beforeDraw: noop, // Called at end of draw afterDraw: noop, // Called during destroy destroy: noop }); /** * Provided for backward compatibility, use Chart.plugins instead * @namespace Chart.pluginService * @deprecated since version 2.1.5 * @todo remove me at version 3 */ Chart.pluginService = Chart.plugins; };