add a grid view in the resources area - turned off by default and uses global insert_grid
[myslice.git] / portal / sliceview.py
index e3e978e..6777d1d 100644 (file)
@@ -12,12 +12,16 @@ from plugins.raw                     import Raw
 from plugins.stack                   import Stack
 from plugins.tabs                    import Tabs
 from plugins.querytable              import QueryTable 
 from plugins.stack                   import Stack
 from plugins.tabs                    import Tabs
 from plugins.querytable              import QueryTable 
+from plugins.querygrid               import QueryGrid
 from plugins.queryupdater            import QueryUpdater
 from plugins.googlemap               import GoogleMap
 from plugins.senslabmap              import SensLabMap
 from plugins.scheduler               import Scheduler
 from plugins.querycode               import QueryCode
 from plugins.queryupdater            import QueryUpdater
 from plugins.googlemap               import GoogleMap
 from plugins.senslabmap              import SensLabMap
 from plugins.scheduler               import Scheduler
 from plugins.querycode               import QueryCode
-from plugins.query_editor            import QueryEditor
+# Thierry
+# stay away from query editor for now as it seems to make things go very slow
+# see https://lists.myslice.info/pipermail/devel-myslice/2013-December/000221.html 
+#from plugins.query_editor            import QueryEditor
 from plugins.active_filters          import ActiveFilters
 from plugins.quickfilter             import QuickFilter
 from plugins.messages                import Messages
 from plugins.active_filters          import ActiveFilters
 from plugins.quickfilter             import QuickFilter
 from plugins.messages                import Messages
@@ -31,6 +35,12 @@ tmp_default_slice='ple.upmc.myslicedemo'
 #do_query_users=True
 do_query_users=False
 
 #do_query_users=True
 do_query_users=False
 
+#do_query_leases=True
+do_query_leases=False
+
+insert_grid=False
+#insert_grid=True
+
 insert_messages=False
 #insert_messages=True
 
 insert_messages=False
 #insert_messages=True
 
@@ -43,6 +53,7 @@ class SliceView (LoginRequiredAutoLogoutView):
         page.add_js_files  ( [ "js/common.functions.js" ] )
         page.add_js_chunks ('$(function() { messages.debug("sliceview: jQuery version " + $.fn.jquery); });')
         page.add_js_chunks ('$(function() { messages.debug("sliceview: users turned %s"); });'%("on" if do_query_users else "off"))
         page.add_js_files  ( [ "js/common.functions.js" ] )
         page.add_js_chunks ('$(function() { messages.debug("sliceview: jQuery version " + $.fn.jquery); });')
         page.add_js_chunks ('$(function() { messages.debug("sliceview: users turned %s"); });'%("on" if do_query_users else "off"))
+        page.add_js_chunks ('$(function() { messages.debug("sliceview: leases turned %s"); });'%("on" if do_query_leases else "off"))
         config=Config()
         page.add_js_chunks ('$(function() { messages.debug("manifold URL %s"); });'%(config.manifold_url()))
         page.expose_js_metadata()
         config=Config()
         page.add_js_chunks ('$(function() { messages.debug("manifold URL %s"); });'%(config.manifold_url()))
         page.expose_js_metadata()
@@ -60,10 +71,13 @@ class SliceView (LoginRequiredAutoLogoutView):
                 'slice_hrn',
                 'resource.hrn', 'resource.hostname', 'resource.type', 
                 'resource.network_hrn',
                 'slice_hrn',
                 'resource.hrn', 'resource.hostname', 'resource.type', 
                 'resource.network_hrn',
-                #'lease.urn',
+                'lease.urn',
                 'user.user_hrn',
                 #'application.measurement_point.counter'
         )
                 'user.user_hrn',
                 #'application.measurement_point.counter'
         )
+        # for internal use in the querytable plugin;
+        # needs to be a unique column present for each returned record
+        main_query_key = 'hrn'
     
         query_resource_all = Query.get('resource').select(resource_fields)
         if do_query_users:
     
         query_resource_all = Query.get('resource').select(resource_fields)
         if do_query_users:
@@ -122,13 +136,14 @@ class SliceView (LoginRequiredAutoLogoutView):
         # --------------------------------------------------------------------------
         # Filter Resources
        
         # --------------------------------------------------------------------------
         # Filter Resources
        
-        filter_query_editor = QueryEditor(
-            page  = page,
-            query = sq_resource, 
-            query_all = query_resource_all,
-            title = "Select Columns",
-            domid = 'select-columns',
-            )
+# turn off for now -- see above
+#        filter_query_editor = QueryEditor(
+#            page  = page,
+#            query = sq_resource, 
+#            query_all = query_resource_all,
+#            title = "Select Columns",
+#            domid = 'select-columns',
+#            )
         filter_active_filters = ActiveFilters(
             page  = page,
             query = sq_resource,
         filter_active_filters = ActiveFilters(
             page  = page,
             query = sq_resource,
@@ -138,7 +153,8 @@ class SliceView (LoginRequiredAutoLogoutView):
             page                = page,
             title               = 'Filter Resources',
             domid               = 'filters',
             page                = page,
             title               = 'Filter Resources',
             domid               = 'filters',
-            sons                = [filter_query_editor, filter_active_filters],
+            sons                = [# filter_query_editor, 
+                                   filter_active_filters],
             togglable           = True,
             toggled             = 'persistent',
             outline_complete    = True, 
             togglable           = True,
             toggled             = 'persistent',
             outline_complete    = True, 
@@ -157,6 +173,7 @@ class SliceView (LoginRequiredAutoLogoutView):
             togglable  = False,
             query      = sq_resource,
             query_all  = query_resource_all,
             togglable  = False,
             query      = sq_resource,
             query_all  = query_resource_all,
+            googlemap_api_key = Config().googlemap_api_key(),
             checkboxes = True,
             # center on Paris
             latitude   = 49.,
             checkboxes = True,
             # center on Paris
             latitude   = 49.,
@@ -179,6 +196,8 @@ class SliceView (LoginRequiredAutoLogoutView):
             # this is the query at the core of the slice list
             query      = sq_resource,
             query_all  = query_resource_all,
             # this is the query at the core of the slice list
             query      = sq_resource,
             query_all  = query_resource_all,
+            # safer to use 'hrn' as the internal unique key for this plugin
+            id_key     = main_query_key,
             checkboxes = True,
             datatables_options = { 
                 'iDisplayLength': 25,
             checkboxes = True,
             datatables_options = { 
                 'iDisplayLength': 25,
@@ -187,27 +206,55 @@ class SliceView (LoginRequiredAutoLogoutView):
                 },
             )
 
                 },
             )
 
-        resources_as_scheduler = Scheduler(
-            page        = page,
-            title       = 'Scheduler',
-            domid       = 'scheduler',
-            query       = sq_resource,
-            query_lease = sq_lease,
-        )
+        if insert_grid:
+            resources_as_grid = QueryGrid( 
+                page       = page,
+                domid      = 'resources-grid',
+                title      = 'Grid view',
+                # this is the query at the core of the slice list
+                query      = sq_resource,
+                query_all  = query_resource_all,
+                # safer to use 'hrn' as the internal unique key for this plugin
+                id_key     = main_query_key,
+                checkboxes = True,
+                )
+
+        if do_query_leases:
+            resources_as_scheduler = Scheduler(
+                page        = page,
+                title       = 'Scheduler',
+                domid       = 'scheduler',
+                query       = sq_resource,
+                query_all_resources = query_resource_all,
+                query_lease = sq_lease,
+                )
 
        # with the new 'Filter' stuff on top, no need for anything but the querytable
         resources_as_list_area = resources_as_list 
 
 
        # with the new 'Filter' stuff on top, no need for anything but the querytable
         resources_as_list_area = resources_as_list 
 
+        resources_sons = [
+            resources_as_gmap, 
+            resources_as_3dmap,
+            resources_as_scheduler,
+            resources_as_list_area,
+            ] if do_query_leases else [
+            resources_as_gmap, 
+            resources_as_3dmap,
+            resources_as_list_area,
+            ]
+        if insert_grid:
+            resources_sons.append(resources_as_grid)
+
+        print 40*'+-',"resources_sons has",len(resources_sons),"son"
+
         resources_area = Tabs ( page=page, 
                                 domid="resources",
                                 togglable=True,
                                 title="Resources",
                                 outline_complete=True,
         resources_area = Tabs ( page=page, 
                                 domid="resources",
                                 togglable=True,
                                 title="Resources",
                                 outline_complete=True,
-                                sons=[ resources_as_gmap, 
-                                       resources_as_3dmap,
-                                       resources_as_scheduler,
-                                       resources_as_list_area, ],
+                                sons= resources_sons,
                                 active_domid = 'resources-map',
                                 active_domid = 'resources-map',
+                                persistent_active=True,
                                 )
         main_stack.insert (resources_area)
 
                                 )
         main_stack.insert (resources_area)