diff options
Diffstat (limited to 'addons/survey/static/src/js')
| -rw-r--r-- | addons/survey/static/src/js/survey_result.js | 19 | ||||
| -rw-r--r-- | addons/survey/static/src/js/survey_timer.js | 45 |
2 files changed, 59 insertions, 5 deletions
diff --git a/addons/survey/static/src/js/survey_result.js b/addons/survey/static/src/js/survey_result.js index 1cc571ed78c..f70aefe9a1f 100644 --- a/addons/survey/static/src/js/survey_result.js +++ b/addons/survey/static/src/js/survey_result.js @@ -67,7 +67,7 @@ if(!$('.js_surveyresult').length) { } //load chart to svg element chart:initialized chart, response:AJAX response, quistion_id:if of survey question, tick_limit:text length limit - function load_chart(chart, response, question_id, tick_limit, graph_type){ + function load_chart(chart, response, svgSelector, tick_limit, graph_type){ // Custom Tick fuction for replacing long text with '...' var customtick_function = function(d){ if(! this || d.length <= tick_limit){ @@ -83,7 +83,7 @@ if(!$('.js_surveyresult').length) { chart.yAxis .tickFormat(d3.format('d')); } - d3.select('#graph_question_' + question_id + ' svg') + d3.select(svgSelector) .datum(response) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -95,26 +95,35 @@ if(!$('.js_surveyresult').length) { var question_id = $(graph).attr("data-question_id"); var graph_type = $(graph).attr("data-graph_type"); var graph_data = JSON.parse($(graph).attr("graph-data")); + var svgSelector = '#graph_question_' + question_id + ' svg'; if(graph_type == 'multi_bar'){ nv.addGraph(function(){ var chart = init_multibar_chart(); - return load_chart(chart, graph_data, question_id, 25); + return load_chart(chart, graph_data, svgSelector, 25); }); } else if(graph_type == 'bar'){ nv.addGraph(function() { var chart = init_bar_chart(); - return load_chart(chart, graph_data, question_id, 35); + return load_chart(chart, graph_data, svgSelector, 35); }); } else if(graph_type == 'pie'){ nv.addGraph(function() { var chart = init_pie_chart(); - return load_chart(chart, graph_data, question_id, 25, 'pie'); + return load_chart(chart, graph_data, svgSelector, 25, 'pie'); }); } }); + var $scoringResultsChart = $('#scoring_results_chart'); + if ($scoringResultsChart.length > 0) { + nv.addGraph(function () { + var chart = init_pie_chart(); + return load_chart(chart, $scoringResultsChart.data('graph_data'), '#scoring_results_chart svg', 25, 'pie'); + }); + } + // Script for filter $('td.survey_answer').hover(function(){ $(this).find('i.fa-filter').removeClass('invisible'); diff --git a/addons/survey/static/src/js/survey_timer.js b/addons/survey/static/src/js/survey_timer.js new file mode 100644 index 00000000000..bb7af08104f --- /dev/null +++ b/addons/survey/static/src/js/survey_timer.js @@ -0,0 +1,45 @@ +odoo.define('survey.timer', function (require) { +'use strict'; + +require('web.dom_ready'); + +if (!$('.js_survey_timer').length) { + return $.Deferred().reject("DOM doesn't contain '.js_survey_timer'"); +} + +var $parent = $('.js_survey_timer'); +var timeLimitMinutes = parseInt($parent.data('time_limit_minutes')); + +if (timeLimitMinutes <= 0) { + return $.Deferred().reject("Timer is not positive"); +} + +var countDownDate = moment.utc($parent.data('timer')).add(timeLimitMinutes, 'minutes'); + +if (countDownDate.diff(moment.utc(), 'seconds') < 0) { + return $.Deferred().reject("Timer is already finished"); +} + +var formatTime = function (time) { + return time > 9 ? time : '0' + time; +}; + +var $timer = $parent.find('.timer'); +var interval = null; +var updateTimer = function () { + var timeLeft = countDownDate.diff(moment.utc(), 'seconds'); + + if (timeLeft >= 0) { + var timeLeftMinutes = parseInt(timeLeft / 60); + var timeLeftSeconds = timeLeft - (timeLeftMinutes * 60); + $timer.html(formatTime(timeLeftMinutes) + ':' + formatTime(timeLeftSeconds)); + } else { + clearInterval(interval); + $('.js_surveyform').submit(); + } +}; + +updateTimer(); +interval = setInterval(updateTimer, 1000); + +}); |
