--- /dev/null
+/* Buffered DOM updates */
+var RecordGenerator = Class.extend({
+
+ init: function(query, generators, number)
+ {
+ this._query = query;
+ this._generators = generators;
+ this._number = number;
+ },
+
+ random_int: function(options)
+ {
+ var default_options = {
+ max: 1000
+ }
+
+ if (typeof options == 'object')
+ options = $.extend(default_options, options);
+ else
+ options = default_options;
+
+ return Math.floor(Math.random()*(options.max+1));
+ },
+
+ random_string: function()
+ {
+ var default_options = {
+ possible: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
+ len: this.random_int({max: 15})
+ }
+
+ if (typeof options == 'object')
+ options = $.extend(default_options, options);
+ else
+ options = default_options;
+
+ var text = "";
+
+ for( var i=0; i < options.len; i++ )
+ text += options.possible.charAt(Math.floor(Math.random() * options.possible.length));
+
+ return text;
+
+ },
+
+ generate_record: function()
+ {
+ var self = this;
+ var record = {};
+
+ $.each(this._query.fields, function(i, field) {
+ record[field] = self[self._generators[field]]();
+ });
+
+ // Publish records
+ manifold.raise_record_event(self._query.query_uuid, NEW_RECORD, record);
+
+ },
+
+ run: function()
+ {
+ var record;
+ manifold.raise_record_event(this._query.query_uuid, CLEAR_RECORDS);
+ for (var i = 0; i < this._number; i++) {
+ record = this.generate_record();
+ /* XXX publish record */
+ }
+ manifold.raise_record_event(this._query.query_uuid, DONE);
+
+ }
+});
from django.conf.urls import patterns, include, url
from sandbox.views import MyPluginView
+from sandbox.views import MadDashView
urlpatterns = patterns('',
- url(r'^myplugin/?$', MyPluginView.as_view(), name='myplugin')
+ url(r'^myplugin/?$', MyPluginView.as_view(), name='myplugin'),
+ url(r'^maddash/?$', MadDashView.as_view(), name='maddash')
)
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render
from django.template.loader import render_to_string
-
-from unfold.loginrequired import FreeAccessView
+from manifold.core.query import Query
+from plugins.myplugin import MyPlugin
+from plugins.maddash import MadDash
from ui.topmenu import topmenu_items, the_user
-
+from unfold.loginrequired import FreeAccessView
from unfold.page import Page
-from plugins.myplugin import MyPlugin
-
# NOTE
# initially all the portal views were defined in this single file
# all the other ones have now migrated into separate classes/files for more convenience
page = Page(self.request)
-# pres_view = PresView(page = page)
- plugin = MyPlugin(page = page, html="<h1>PresView needs to be integrated</h1>")
-
+ plugin = MyPlugin(page = page)
context = super(MyPluginView, self).get_context_data(**kwargs)
-
context['unfold_main'] = plugin.render(self.request)
# more general variables expected in the template
context['title'] = 'Sandbox for MyPlugin plugin'
# the menu items on the top
- context['topmenu_items'] = topmenu_items('PresView', self.request)
+ context['topmenu_items'] = topmenu_items('myplugin', self.request)
# so we can sho who is logged
context['username'] = the_user(self.request)
return context
+
+class MadDashView(FreeAccessView):
+ template_name = "view-unfold1.html"
+
+ def get_context_data(self, **kwargs):
+ page = Page(self.request)
+
+ # This will simulate fake records in order to test the plugin
+ fake_query = Query.get('ping').select('hrn', 'src_hostname', 'dst_hostname', 'delay')
+ fake_query_all = Query.get('ping').select('hrn', 'src_hostname', 'dst_hostname', 'delay')
+
+ generators = {
+ 'hrn': 'random_string',
+ 'src_hostname': 'random_string',
+ 'dst_hostname': 'random_string',
+ 'delay': 'random_int'
+ }
+ page.generate_records(fake_query, generators, 5)
+ page.generate_records(fake_query_all, generators, 20)
+
+ plugin = MadDash(query = fake_query, query_all = fake_query_all, page = page)
+ context = super(MadDashView, self).get_context_data(**kwargs)
+ context['unfold_main'] = plugin.render(self.request)
+ context['title'] = 'Sandbox for MadDash plugin'
+ context['topmenu_items'] = topmenu_items('maddash', self.request)
+ context['username'] = the_user(self.request)
+
+ prelude_env = page.prelude_env()
+ context.update(prelude_env)
+
+ return context
+
# we only do this if run_it is set
if run_it: self._queue.append ( (query.query_uuid,domid) )
+ def generate_records(self, query, generators, number):
+ self.add_js_files('js/record_generator.js');
+ self.add_js_chunks('$(document).ready(function() { new RecordGenerator(' + query.to_json() + ', ' + json.dumps(generators) + ', 10).run(); });')
+
# return the javascript code for exposing queries
# all queries are inserted in the global manifold object
# in addition, the ones enqueued with 'run_it=True' are triggered