2 * MyPlugin: demonstration plugin
4 * Description: Template for writing new plugins and illustrating the different
5 * possibilities of the plugin API.
6 * This file is part of the Manifold project
7 * Requires: js/plugin.js
8 * URL: http://www.myslice.info
9 * Author: Jordan Augé <jordan.auge@lip6.fr>
10 * Copyright: Copyright 2012-2013 UPMC Sorbonne Universités
16 var SliceStat = Plugin.extend({
19 * @brief Plugin constructor
20 * @param options : an associative array of setting values
22 * @return : a jQuery collection of objects on which the plugin is
23 * applied, which allows to maintain chainability of calls
25 init: function(options, element) {
26 this.classname="slicestat";
27 // Call the parent constructor, see FAQ when forgotten
28 this._super(options, element);
31 /* Member variables */
35 /* Setup query and record handlers */
37 // Explain this will allow query events to be handled
38 // What happens when we don't define some events ?
39 // Some can be less efficient
40 this.listen_query(options.query_uuid);
42 /* GUI setup and event binding */
44 if (typeof options.slicename != 'undefined') {
45 options.slicename = options.slicename.replace("ple.","").replace(".","_");
47 if (typeof options.o == 'undefined') {
51 this.elmt().on('show', options, this.on_show);
55 // on_show like in querytable
60 // a function to bind events here: click change
61 // how to raise manifold events
64 /* GUI MANIPULATION */
66 // We advise you to write function to change behaviour of the GUI
67 // Will use naming helpers to access content _inside_ the plugin
68 // always refer to these functions in the remaining of the code
70 show_hide_button: function()
72 // this.id, this.el, this.cl, this.elts
73 // same output as a jquery selector with some guarantees
78 $('iframe#' + ev.target.id + '-iframe').attr('src','http://plestats.planet-lab.eu/nodes.php?slice='+ev.data.slicename+'&order='+ev.data.o);
82 // see in the html template
83 // How to load a template, use of mustache
87 // How to make sure the plugin is not desynchronized
88 // He should manifest its interest in filters, fields or records
89 // functions triggered only if the proper listen is done
93 on_filter_added: function(filter)
98 // ... be sure to list all events here
100 /* RECORD HANDLERS */
101 on_new_record: function(record)
103 $('iframe#' + this.elmt().attr('id') + '-iframe').attr('src','http://plestats.planet-lab.eu/node.php?node='+record.hostname);
106 /* INTERNAL FUNCTIONS */
108 // only convention, not strictly enforced at the moment
113 /* Plugin registration */
114 $.plugin('SliceStat', SliceStat);
116 // TODO Here use cases for instanciating plugins in different ways like in the pastie.