From b5c3c3e05dd4c775fef822eecb997b35081d5a0a Mon Sep 17 00:00:00 2001 From: Amine <aminelarabi@vis158d.sophia.inria.fr> Date: Fri, 21 Dec 2012 14:40:42 +0100 Subject: [PATCH] first attempt of quickfilter plugin --- engine/views.py | 7 +++++-- myslice/viewutils.py | 3 +++ plugins/quickfilter.py | 30 ++++++++++++++++++++++++++++++ plugins/templates/quickfilter.html | 28 ++++++++++++++++++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 plugins/quickfilter.py create mode 100644 plugins/templates/quickfilter.html diff --git a/engine/views.py b/engine/views.py index 8f4ea8ca..4a26b667 100644 --- a/engine/views.py +++ b/engine/views.py @@ -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) diff --git a/myslice/viewutils.py b/myslice/viewutils.py index 80b4f788..030e0d9d 100644 --- a/myslice/viewutils.py +++ b/myslice/viewutils.py @@ -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 index 00000000..4da314b2 --- /dev/null +++ b/plugins/quickfilter.py @@ -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 index 00000000..736830e9 --- /dev/null +++ b/plugins/templates/quickfilter.html @@ -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 -- 2.47.0