first attempt of quickfilter plugin
authorAmine <aminelarabi@vis158d.sophia.inria.fr>
Fri, 21 Dec 2012 13:40:42 +0000 (14:40 +0100)
committerAmine <aminelarabi@vis158d.sophia.inria.fr>
Fri, 21 Dec 2012 13:40:42 +0000 (14:40 +0100)
engine/views.py
myslice/viewutils.py
plugins/quickfilter.py [new file with mode: 0644]
plugins/templates/quickfilter.html [new file with mode: 0644]

index 8f4ea8c..4a26b66 100644 (file)
@@ -11,10 +11,11 @@ from plugins.verticallayout import VerticalLayout
 from plugins.tabs import Tabs
 from plugins.simplelist import SimpleList
 from plugins.slicelist import SliceList
+from plugins.quickfilter import QuickFilter
 from plugins.raw import Raw
 
 from myslice.viewutils import topmenu_items, the_user
-from myslice.viewutils import hard_wired_slice_names, hard_wired_list, lorem_p, lorem
+from myslice.viewutils import hard_wired_slice_names, hard_wired_list, lorem_p, lorem, quickfilter_criterias
 
 @login_required
 def test_plugin_view (request):
@@ -43,7 +44,9 @@ def test_plugin_view (request):
                                      togglable=False,html=lorem) ]),
                  SimpleList (title='SimpleList with slice names', 
                              list=hard_wired_slice_names,
-                             ) ] )
+                             ),
+                 QuickFilter (list=quickfilter_criterias,
+                              title='QuickFilter in main content') ] )
     # define 'content_main' to the template engine
     template_env [ 'content_main' ] = main_plugin.render(request)
 
index 80b4f78..030e0d9 100644 (file)
@@ -57,3 +57,6 @@ hard_wired_list.append("just like a standard plugin can be set as visible or not
 hard_wired_list.append("")    
 hard_wired_list.append("OTOH and IMHO, there should be two separate and explicit subclasses of SimpleList for slices or testbeds")
 
+quickfilter_criterias = [{'key': 'Slice', 'values': ['slice1','slice2']}, \
+                          {'key': 'Type', 'values': ['type1','type2']}, \
+                          {'key': 'Network', 'values': ['net1','net2']}]
diff --git a/plugins/quickfilter.py b/plugins/quickfilter.py
new file mode 100644 (file)
index 0000000..4da314b
--- /dev/null
@@ -0,0 +1,30 @@
+from engine.plugin import Plugin
+
+class QuickFilter (Plugin) :
+
+    def __init__ (self, list=[], with_datatables=False, **settings):
+        Plugin.__init__ (self, **settings)
+        self.list=[{'key': 'Slice', 'values': ['slice1','slice2']}, \
+                          {'key': 'Type', 'values': ['type1','type2']}, \
+                          {'key': 'Network', 'values': ['net1','net2']}]
+        self.add_to_settings ('list')
+        self.with_datatables = with_datatables
+        self.add_to_settings ('with_datatables')
+        self.criterias = [{'key': 'Slice', 'values': ['slice1','slice2']}, \
+                          {'key': 'Type', 'values': ['type1','type2']}, \
+                          {'key': 'Network', 'values': ['net1','net2']}]
+
+    def title (self) : return "Title for Quick "
+
+    def template_file (self): return "quickfilter.html"
+
+    def requirements (self):
+        reqs = { 'js_files' : [ "js/quickfilter.js" ],
+                 'css_files': [ "css/quickfilter.css" ],
+                 }
+        if self.with_datatables:
+            reqs['js_files'].append ("datatables/js/dataTables.js")
+            reqs['js_files'].append ("js/with-datatables.js")
+        print self.classname(),reqs
+        return reqs
+
diff --git a/plugins/templates/quickfilter.html b/plugins/templates/quickfilter.html
new file mode 100644 (file)
index 0000000..736830e
--- /dev/null
@@ -0,0 +1,28 @@
+
+<div id ='quick_filters'>
+<table class='filters'>
+    <tr>
+    {% for criteria in list %}
+        <th class='top'>{{criteria.key}}</th>
+    {% endfor %}
+        <th class="top">Extra fields</th>
+    </tr>
+    <tr>
+    {% for criteria in list %}
+        <td class='top'>
+        <select id='{{uid}}-select_{{criteria.key}}' class='topselect QuickFilter_select'>
+            <option value=''>All</option>
+            {% for item in criteria.values%}
+                <option value=''>{{item}}</option>
+            {% endfor %}
+        </select>
+        </td>
+    {% endfor %}
+        <td class='top'>
+        <select id='{{uid}}-select_extra' class='topselect QuickFilter_select'>
+            <option value=''>All</option>
+        </select>
+        </td>
+    </tr>
+</table>
+</div>
\ No newline at end of file