From 72700a2cf97243da609fffcbc6c9e8fa834701cc Mon Sep 17 00:00:00 2001 From: "Dharmraj Jhala (OpenERP)" Date: Thu, 27 Mar 2014 12:13:05 +0530 Subject: [PATCH] [IMP] Added preset All vs Finished Filter bzr revid: dizzy.zala@gmail.com-20140327064305-tlw358e0u9wu9jnd --- addons/survey/controllers/main.py | 21 +++++++++++++++++--- addons/survey/static/src/js/survey_result.js | 15 ++++++++++++++ addons/survey/views/survey_result.xml | 12 +++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/addons/survey/controllers/main.py b/addons/survey/controllers/main.py index 985ad9e175b..0ac9f8c7a01 100644 --- a/addons/survey/controllers/main.py +++ b/addons/survey/controllers/main.py @@ -285,16 +285,22 @@ class WebsiteSurvey(http.Controller): type='http', auth='user', multilang=True, website=True) def survey_reporting(self, survey, token=None, **post): '''Display survey Results & Statistics for given survey.''' - result_template, current_filters, filter_display_data = 'survey.result', [], [] + result_template, current_filters, filter_display_data, filter_finish = 'survey.result', [], [], False if not survey.user_input_ids or not [input_id.id for input_id in survey.user_input_ids if input_id.state != 'new']: result_template = 'survey.no_result' + if post.get('finished'): + post.pop('finished') + filter_finish = True if post: current_filters, filter_display_data = self.filter_input_ids(post) + if filter_finish: + current_filters = self.get_finished_list(current_filters) return request.website.render(result_template, {'survey_dict': self.prepare_result_dict(survey, current_filters), 'page_range': self.page_range, 'current_filters': current_filters, - 'filter_display_data': filter_display_data + 'filter_display_data': filter_display_data, + 'filter_finish': filter_finish }) def prepare_result_dict(self,survey, current_filters=[]): @@ -307,6 +313,15 @@ class WebsiteSurvey(http.Controller): result['page_ids'].append(page_dict) return result + def get_finished_list(self, current_filters): + user_input,filtered_list = request.registry['survey.user_input'],[] + if not current_filters: + current_filters = user_input.search(request.cr, request.uid, [], context=request.context) + user_input_objs = user_input.browse(request.cr, request.uid, current_filters, context=request.context) + print 'user_input_objs',user_input_objs + filtered_list = [input.id for input in user_input_objs if input.state == 'done'] + return filtered_list + def filter_input_ids(self, filters): '''If user applies any filters, then this function returns list of filtered user_input_id and label's strings for display data in web''' @@ -396,8 +411,8 @@ class WebsiteSurvey(http.Controller): @http.route(['/survey/results/graph/'], type='http', auth='user', multilang=True, website=True) def get_graph_data(self, question, **post): - question = request.registry.get('survey.question').browse(request.cr, request.uid, question) '''Returns appropriate formated data required by graph library on basis of filter''' + question = request.registry.get('survey.question').browse(request.cr, request.uid, question) current_filters = safe_eval(post.get('current_filters', '[]')) result = [] if question.type == 'multiple_choice': diff --git a/addons/survey/static/src/js/survey_result.js b/addons/survey/static/src/js/survey_result.js index 30f2ee7bde8..dc110734c89 100644 --- a/addons/survey/static/src/js/survey_result.js +++ b/addons/survey/static/src/js/survey_result.js @@ -154,6 +154,21 @@ $(document).ready(function () { $('.clear_survey_filter').click(function(){ window.location.href = document.URL.substring(0,document.URL.indexOf("?")); }); + $('li.filter-all').click(function(){ + event.preventDefault(); + if(document.URL.indexOf("finished") != -1){ + window.location.href = document.URL.replace('?finished=1&','?').replace('&finished=1&','&').replace('?finished=1','').replace('&finished=1',''); + } + }); + $('.filter-finished').click(function(){ + event.preventDefault(); + if(document.URL.indexOf("?") == -1 && document.URL.indexOf("filter") == -1){ + window.location.href = document.URL+'?'+encodeURI('finished=1'); + } + else if (document.URL.indexOf("finished") == -1){ + window.location.href = document.URL+'&'+encodeURI('finished=1'); + } + }); console.debug("[survey] Survey Result JS loaded!"); }); \ No newline at end of file diff --git a/addons/survey/views/survey_result.xml b/addons/survey/views/survey_result.xml index 97ee3eb36a8..55dc4c08e8b 100644 --- a/addons/survey/views/survey_result.xml +++ b/addons/survey/views/survey_result.xml @@ -17,6 +17,18 @@

+
+ +

Filters Clear All Filters