X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fsenslabmap%2Fstatic%2Fjs%2Fsenslabmap.js;h=1fe7810c2fb0cd7667e7a3aa87d65c53c5431ed1;hb=6a0470f524345a768a9878d3ec5d953208ede5c5;hp=8075be9cf81bd1965201e4fd808d6e6e22d11200;hpb=d384e4b10bf9ba67f610bef72cf0e5b2dd747baf;p=unfold.git diff --git a/plugins/senslabmap/static/js/senslabmap.js b/plugins/senslabmap/static/js/senslabmap.js index 8075be9c..1fe7810c 100644 --- a/plugins/senslabmap/static/js/senslabmap.js +++ b/plugins/senslabmap/static/js/senslabmap.js @@ -1,80 +1,51 @@ -/** - * Description: SensLab display of 3D-geolocated data - * Copyright (c) 2012 UPMC Sorbonne Universite - INRIA - * License: GPLv3 - */ - -// xxx TODO -- this plugin has never been tested -// update_map looks suspiciously empty... -// in addition it could use a bit of cleaning like what was done for the first plugins -// especially wrt using 'instance' and 'data' in such a confusing way - -(function( $ ){ - - $.fn.SensLabMap = function( method ) { - /* Method calling logic */ - if ( methods[method] ) { - return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof method === 'object' || ! method ) { - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + method + ' does not exist on $.SensLabMap' ); - } - }; - - var methods = { - init : function( options ) { - return this.each(function(){ - var $this = $(this), - data = $this.data('SensLabMap'), SensLabMap = $('
', { text : $this.attr('title') }); - // If the plugin hasn't been initialized yet - if ( ! data ) { - /* Plugin initialization */ - //google.load('maps', '3', { other_params: 'sensor=false' }); - //google.setOnLoadCallback(initialize); - init(); - /* End of plugin initialization */ - $(this).data('SensLabMap', { - plugin_uuid: options.plugin_uuid, - query_uuid: options.query_uuid, - target : $this, - SensLabMap : SensLabMap - }); - /* Subscribe to query updates */ - $.subscribe('/results/' + options.query_uuid + '/changed', {instance: $this}, update_map); - } - }); - }, - destroy : function( ) { - return this.each(function(){ - var $this = $(this), data = $this.data('SensLabMap'); - $(window).unbind('SensLabMap'); - data.SensLabMap.remove(); - $this.removeData('SensLabMap'); - }); - }, -/* - reposition : function( ) { // ... }, - show : function( ) { // ... }, - hide : function( ) { // ... }, -*/ - update : function( content ) { - // should be made a private function - set3dsize() - }, - }; - - /* Private methods */ - function update_map(e, rows) { - var $plugindiv = e.data.instance; - $plugindiv.closest('.need-spin').spin(false); - - if(rows) { - /* TODO rendering */ - } else { - alert('error'); - } - +(function($){ + var SensLabMap = Plugin.extend({ + init: function(options, element) { + this._super(options, element); + + this.elmt().on('show', this, this.on_show); + + this.method = query.object; + + /* Setup query and record handlers */ + this.listen_query(options.query_uuid); + this.listen_query(options.query_all_uuid, 'all'); + + /* GUI setup and event binding */ + this.initialize_map(); + }, + + initialize_map: function() { + this.nodes = []; + this.id = 0; + init(); + }, + + refresh: function() { + console.log("refresh"); + myrender(); + }, + + on_show: function(e) { + e.data.refresh(); + }, + + on_all_new_record: function(n) { + // format is : [name, x, y, z, uid, state] + // state = "Busy", "Alive" or "Suspected" + if (n.x == null || n.y == null || n.z == null) { + console.log("Warning: no coord for " + n.hrn); + return; + } + this.id++; + node = [this.id, n.x, n.y, n.z, this.id, n.boot_state]; + this.nodes.push(node); + }, + + on_all_query_done: function() { + drawNodes(this.nodes); + parseNodebox(); } - -})( jQuery ); + }); + $.plugin('SensLabMap', SensLabMap); +})(jQuery);