Commit cab7b747a3b25ed2db4cd3a97e28cf3ce83b5f98
Exists in
master
and in
2 other branches
Merge branch 'refactoring' of https://github.com/amadeusproject/amadeuslms into refactoring
Showing
2 changed files
with
125 additions
and
21 deletions
Show diff stats
webconference/templates/webconference/relatorios.html
1 | -{% extends "subjects/view.html" %} | 1 | +{% extends "webconference/view.html" %} |
2 | 2 | ||
3 | {% load static i18n pagination permissions_tags subject_counter %} | 3 | {% load static i18n pagination permissions_tags subject_counter %} |
4 | {% load django_bootstrap_breadcrumbs %} | 4 | {% load django_bootstrap_breadcrumbs %} |
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | 11 | ||
12 | var array_history = []; | 12 | var array_history = []; |
13 | {%for data_json in json_history.data %} | 13 | {%for data_json in json_history.data %} |
14 | - array_history.push(["{{data_json.0}}","{{data_json.1}}","{{view}}",{% if data_json.3 is not None %}new Date('{{data_json.3.isoformat}}'){% else%}null{% endif %}]); | 14 | + array_history.push(["{{data_json.0}}","{{data_json.1}}","{% if data_json.2 == 'view' %} {{view}} {% elif data_json.2 == 'initwebconference' %} {{initwebconference}} {% else %} {{participate}} {% endif %}",{% if data_json.3 is not None %}new Date('{{data_json.3.isoformat}}'){% else%}null{% endif %}]); |
15 | {% endfor%} | 15 | {% endfor%} |
16 | var json_history = {"data":array_history}; | 16 | var json_history = {"data":array_history}; |
17 | var column_history = [{"string":'{% trans "User" %}'},{"string":'{% trans "Group" %}'},{"string":'{% trans "Action" %}'},{"date":'{% trans "Date of Action" %}'}]; | 17 | var column_history = [{"string":'{% trans "User" %}'},{"string":'{% trans "Group" %}'},{"string":'{% trans "Action" %}'},{"date":'{% trans "Date of Action" %}'}]; |
@@ -48,7 +48,7 @@ | @@ -48,7 +48,7 @@ | ||
48 | var options = { | 48 | var options = { |
49 | title: '{{title_chart}}', | 49 | title: '{{title_chart}}', |
50 | // legend: {position: 'right', maxLines: 1}, | 50 | // legend: {position: 'right', maxLines: 1}, |
51 | - bar: { groupWidth: '30%' }, | 51 | + bar: { groupWidth: '50%' }, |
52 | chartArea:{width:"50%"}, | 52 | chartArea:{width:"50%"}, |
53 | titlePosition: 'out', | 53 | titlePosition: 'out', |
54 | vAxis: { | 54 | vAxis: { |
@@ -64,9 +64,87 @@ | @@ -64,9 +64,87 @@ | ||
64 | 64 | ||
65 | function selectHandler() { | 65 | function selectHandler() { |
66 | var selectedItem = chart.getSelection()[0]; | 66 | var selectedItem = chart.getSelection()[0]; |
67 | + var col = data.getColumnLabel(selectedItem.column); | ||
67 | if (selectedItem) { | 68 | if (selectedItem) { |
68 | - var col = data.getColumnLabel(selectedItem.column); | ||
69 | - if (col == "{{n_did_table}}"){ | 69 | + if (selectedItem.row == 0 && selectedItem.column == 1){ |
70 | + tabela_atual = true; | ||
71 | + search = []; | ||
72 | + var text = "{{view}}"; | ||
73 | + for (var i in json_history["data"]){ | ||
74 | + if (json_history["data"][i][2].toLowerCase().includes(text.toLowerCase())){ | ||
75 | + search.push([json_history["data"][i][0],json_history["data"][i][1], | ||
76 | + json_history["data"][i][2],json_history["data"][i][3]]); | ||
77 | + } | ||
78 | + } | ||
79 | + drawTable(column_history,pagination(search,1),true,3); | ||
80 | + alterTitleTable(search.length); | ||
81 | + putpagination(search,tabela_atual); | ||
82 | + } else if(selectedItem.row == 0 && selectedItem.column == 2){ | ||
83 | + tabela_atual = false; | ||
84 | + search = []; | ||
85 | + var text = "{{view}}"; | ||
86 | + for (var i in json_n_did["data"]){ | ||
87 | + if (json_n_did["data"][i][3].toLowerCase().includes(text.toLowerCase())){ | ||
88 | + search.push([json_n_did["data"][i][0],json_n_did["data"][i][1], | ||
89 | + json_n_did["data"][i][2],json_n_did["data"][i][3]]); | ||
90 | + } | ||
91 | + } | ||
92 | + drawTable(column_n_did,pagination(search,1),false); | ||
93 | + alterTitleTable(search.length); | ||
94 | + putpagination(search,tabela_atual); | ||
95 | + } else if (selectedItem.row == 1 && selectedItem.column == 1){ | ||
96 | + tabela_atual = true; | ||
97 | + search = []; | ||
98 | + var text = "{{initwebconference}}"; | ||
99 | + for (var i in json_history["data"]){ | ||
100 | + if (json_history["data"][i][2].toLowerCase().includes(text.toLowerCase())){ | ||
101 | + search.push([json_history["data"][i][0],json_history["data"][i][1], | ||
102 | + json_history["data"][i][2],json_history["data"][i][3]]); | ||
103 | + } | ||
104 | + } | ||
105 | + drawTable(column_history,pagination(search,1),true,3); | ||
106 | + alterTitleTable(search.length); | ||
107 | + putpagination(search,tabela_atual); | ||
108 | + } else if(selectedItem.row == 1 && selectedItem.column == 2){ | ||
109 | + tabela_atual = false; | ||
110 | + search = []; | ||
111 | + var text = "{{initwebconference}}"; | ||
112 | + for (var i in json_n_did["data"]){ | ||
113 | + if (json_n_did["data"][i][3].toLowerCase().includes(text.toLowerCase())){ | ||
114 | + search.push([json_n_did["data"][i][0],json_n_did["data"][i][1], | ||
115 | + json_n_did["data"][i][2],json_n_did["data"][i][3]]); | ||
116 | + } | ||
117 | + } | ||
118 | + drawTable(column_n_did,pagination(search,1),false); | ||
119 | + alterTitleTable(search.length); | ||
120 | + putpagination(search,tabela_atual); | ||
121 | + } else if (selectedItem.row == 2 && selectedItem.column == 1){ | ||
122 | + tabela_atual = true; | ||
123 | + search = []; | ||
124 | + var text = "{{participate}}"; | ||
125 | + for (var i in json_history["data"]){ | ||
126 | + if (json_history["data"][i][2].toLowerCase().includes(text.toLowerCase())){ | ||
127 | + search.push([json_history["data"][i][0],json_history["data"][i][1], | ||
128 | + json_history["data"][i][2],json_history["data"][i][3]]); | ||
129 | + } | ||
130 | + } | ||
131 | + drawTable(column_history,pagination(search,1),true,3); | ||
132 | + alterTitleTable(search.length); | ||
133 | + putpagination(search,tabela_atual); | ||
134 | + } else if(selectedItem.row == 2 && selectedItem.column == 2){ | ||
135 | + tabela_atual = false; | ||
136 | + search = []; | ||
137 | + var text = "{{participate}}"; | ||
138 | + for (var i in json_n_did["data"]){ | ||
139 | + if (json_n_did["data"][i][3].toLowerCase().includes(text.toLowerCase())){ | ||
140 | + search.push([json_n_did["data"][i][0],json_n_did["data"][i][1], | ||
141 | + json_n_did["data"][i][2],json_n_did["data"][i][3]]); | ||
142 | + } | ||
143 | + } | ||
144 | + drawTable(column_n_did,pagination(search,1),false); | ||
145 | + alterTitleTable(search.length); | ||
146 | + putpagination(search,tabela_atual); | ||
147 | + } else if (col == "{{n_did_table}}"){ | ||
70 | tabela_atual = false; | 148 | tabela_atual = false; |
71 | search = []; | 149 | search = []; |
72 | for (var i in json_n_did["data"]){ | 150 | for (var i in json_n_did["data"]){ |
@@ -149,9 +227,8 @@ | @@ -149,9 +227,8 @@ | ||
149 | 227 | ||
150 | {% block breadcrumbs %} | 228 | {% block breadcrumbs %} |
151 | {{ block.super }} | 229 | {{ block.super }} |
152 | - {% breadcrumb webconference.topic 'subjects:topic_view' webconference.topic.subject.slug webconference.topic.slug %} | ||
153 | {% trans 'Reports' as bread %} | 230 | {% trans 'Reports' as bread %} |
154 | - {% breadcrumb bread webconference%} | 231 | + {% breadcrumb bread webconference%} |
155 | {% endblock %} | 232 | {% endblock %} |
156 | 233 | ||
157 | {% block content %} | 234 | {% block content %} |
@@ -203,7 +280,7 @@ | @@ -203,7 +280,7 @@ | ||
203 | <ul> | 280 | <ul> |
204 | </div> | 281 | </div> |
205 | </div> | 282 | </div> |
206 | - | 283 | + |
207 | <div class="row"> | 284 | <div class="row"> |
208 | <div class="col-md-10 col-md-offset-1"> | 285 | <div class="col-md-10 col-md-offset-1"> |
209 | <div id="chart_div" style="height: 500px; margin-top: -50px;"></div> | 286 | <div id="chart_div" style="height: 500px; margin-top: -50px;"></div> |
@@ -231,10 +308,10 @@ | @@ -231,10 +308,10 @@ | ||
231 | <div id="table_div"></div> | 308 | <div id="table_div"></div> |
232 | </form> | 309 | </form> |
233 | <div class="col-md-12 col-lg-12 col-sm-12 col-xs-12 text-center"> | 310 | <div class="col-md-12 col-lg-12 col-sm-12 col-xs-12 text-center"> |
234 | - <ul class="pagination"> | 311 | + <ul class="pagination"> |
235 | 312 | ||
236 | - </ul> | ||
237 | - </div> | 313 | + </ul> |
314 | + </div> | ||
238 | </div> | 315 | </div> |
239 | </div> | 316 | </div> |
240 | <div id="modal-message"></div> | 317 | <div id="modal-message"></div> |
@@ -324,7 +401,7 @@ | @@ -324,7 +401,7 @@ | ||
324 | } | 401 | } |
325 | } | 402 | } |
326 | } | 403 | } |
327 | - console.log(search); | 404 | + |
328 | if (!load_histoty){ | 405 | if (!load_histoty){ |
329 | drawTable(column_n_did,pagination(search,1),false); | 406 | drawTable(column_n_did,pagination(search,1),false); |
330 | } else { | 407 | } else { |
@@ -432,5 +509,8 @@ | @@ -432,5 +509,8 @@ | ||
432 | function scroll(to){ | 509 | function scroll(to){ |
433 | $("html, body").animate({ scrollTop: $(to).offset().top }, "slow"); | 510 | $("html, body").animate({ scrollTop: $(to).offset().top }, "slow"); |
434 | } | 511 | } |
512 | + function alterTitleTable (quant){ | ||
513 | + $("#title-table").text(quant + " {% trans 'record(s)' %}"); | ||
514 | + } | ||
435 | </script> | 515 | </script> |
436 | {% endblock %} | 516 | {% endblock %} |
webconference/views.py
@@ -10,6 +10,7 @@ from webpage.forms import FormModalMessage | @@ -10,6 +10,7 @@ from webpage.forms import FormModalMessage | ||
10 | from chat.models import Conversation, TalkMessages, ChatVisualizations | 10 | from chat.models import Conversation, TalkMessages, ChatVisualizations |
11 | import textwrap | 11 | import textwrap |
12 | import json | 12 | import json |
13 | +from django.db.models import Q | ||
13 | from channels import Group | 14 | from channels import Group |
14 | import datetime | 15 | import datetime |
15 | from users.models import User | 16 | from users.models import User |
@@ -545,6 +546,7 @@ class ConferenceSettings(braces_mixins.LoginRequiredMixin, braces_mixins.Staffus | @@ -545,6 +546,7 @@ class ConferenceSettings(braces_mixins.LoginRequiredMixin, braces_mixins.Staffus | ||
545 | context['title'] = _('Web Conference Settings') | 546 | context['title'] = _('Web Conference Settings') |
546 | 547 | ||
547 | return context | 548 | return context |
549 | + | ||
548 | class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | 550 | class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): |
549 | log_component = 'resources' | 551 | log_component = 'resources' |
550 | log_action = 'view_statistics' | 552 | log_action = 'view_statistics' |
@@ -561,7 +563,7 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | @@ -561,7 +563,7 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | ||
561 | webconference = get_object_or_404(Webconference, slug = slug) | 563 | webconference = get_object_or_404(Webconference, slug = slug) |
562 | 564 | ||
563 | if not has_subject_permissions(request.user, webconference.topic.subject): | 565 | if not has_subject_permissions(request.user, webconference.topic.subject): |
564 | - return redirect(reverse_lazy('subjects:home')) | 566 | + return redirect(reverse_lazy('subjects:home')) |
565 | 567 | ||
566 | return super(StatisticsView, self).dispatch(request, *args, **kwargs) | 568 | return super(StatisticsView, self).dispatch(request, *args, **kwargs) |
567 | 569 | ||
@@ -584,7 +586,7 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | @@ -584,7 +586,7 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | ||
584 | super(StatisticsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) | 586 | super(StatisticsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) |
585 | 587 | ||
586 | 588 | ||
587 | - context['title'] = _('Webconference Reports') | 589 | + context['title'] = _('Youtube Video Reports') |
588 | 590 | ||
589 | slug = self.kwargs.get('slug') | 591 | slug = self.kwargs.get('slug') |
590 | webconference = get_object_or_404(Webconference, slug = slug) | 592 | webconference = get_object_or_404(Webconference, slug = slug) |
@@ -602,7 +604,7 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | @@ -602,7 +604,7 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | ||
602 | if webconference.all_students : | 604 | if webconference.all_students : |
603 | alunos = webconference.topic.subject.students.all() | 605 | alunos = webconference.topic.subject.students.all() |
604 | 606 | ||
605 | - vis_ou = Log.objects.filter(context__contains={'webconference_id':webconference.id},resource="webconference",action="view",user_email__in=(aluno.email for aluno in alunos), datetime__range=(start_date,end_date + datetime.timedelta(minutes = 1))) | 607 | + vis_ou = Log.objects.filter(context__contains={'webconference_id':webconference.id},resource="webconference",user_email__in=(aluno.email for aluno in alunos), datetime__range=(start_date,end_date + datetime.timedelta(minutes = 1))).filter(Q(action="view") | Q(action="initwebconference") | Q(action="participating")) |
606 | did,n_did,history = str(_("Realized")),str(_("Unrealized")),str(_("Historic")) | 608 | did,n_did,history = str(_("Realized")),str(_("Unrealized")),str(_("Historic")) |
607 | re = [] | 609 | re = [] |
608 | data_n_did,data_history = [],[] | 610 | data_n_did,data_history = [],[] |
@@ -615,26 +617,48 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | @@ -615,26 +617,48 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | ||
615 | 617 | ||
616 | json_history["data"] = data_history | 618 | json_history["data"] = data_history |
617 | 619 | ||
618 | - not_view = alunos.exclude(email__in=[log.user_email for log in vis_ou.distinct("user_email")]) | 620 | + column_view,column_initwebconference,column_participate = str(_('View')),str(_('Enter')),str(_('Participate')) |
621 | + | ||
622 | + not_view = alunos.exclude(email__in=[log.user_email for log in vis_ou.filter(action="view").distinct("user_email")]) | ||
619 | index = 0 | 623 | index = 0 |
620 | for alun in not_view: | 624 | for alun in not_view: |
621 | - data_n_did.append([index,str(alun),", ".join([str(x) for x in webconference.topic.subject.group_subject.filter(participants__email=alun.email)]),str(_('View')), str(alun.email)]) | 625 | + data_n_did.append([index,str(alun),", ".join([str(x) for x in webconference.topic.subject.group_subject.filter(participants__email=alun.email)]),column_view, str(alun.email)]) |
626 | + index += 1 | ||
627 | + | ||
628 | + not_initwebconference = alunos.exclude(email__in=[log.user_email for log in vis_ou.filter(action="initwebconference").distinct("user_email")]) | ||
629 | + for alun in not_initwebconference: | ||
630 | + data_n_did.append([index,str(alun),", ".join([str(x) for x in webconference.topic.subject.group_subject.filter(participants__email=alun.email)]),column_initwebconference, str(alun.email)]) | ||
631 | + index += 1 | ||
632 | + | ||
633 | + not_participate = alunos.exclude(email__in=[log.user_email for log in vis_ou.filter(action="participating").distinct("user_email")]) | ||
634 | + for alun in not_participate: | ||
635 | + data_n_did.append([index,str(alun),", ".join([str(x) for x in webconference.topic.subject.group_subject.filter(participants__email=alun.email)]),column_participate, str(alun.email)]) | ||
622 | index += 1 | 636 | index += 1 |
637 | + | ||
623 | json_n_did["data"] = data_n_did | 638 | json_n_did["data"] = data_n_did |
624 | 639 | ||
625 | 640 | ||
626 | context["json_n_did"] = json_n_did | 641 | context["json_n_did"] = json_n_did |
627 | context["json_history"] = json_history | 642 | context["json_history"] = json_history |
628 | - c_visualizou = vis_ou.distinct("user_email").count() | ||
629 | - column_view = str(_('View')) | ||
630 | - re.append([str(_('File link')),did,n_did]) | 643 | + c_visualizou = vis_ou.filter(action="view").distinct("user_email").count() |
644 | + c_initwebconference = vis_ou.filter(action="initwebconference").distinct("user_email").count() | ||
645 | + c_participate = vis_ou.filter(action="participating").distinct("user_email").count() | ||
646 | + re.append([str(_('Webconference')),did,n_did]) | ||
647 | + | ||
631 | re.append([column_view,c_visualizou, alunos.count() - c_visualizou]) | 648 | re.append([column_view,c_visualizou, alunos.count() - c_visualizou]) |
649 | + re.append([column_initwebconference,c_initwebconference, alunos.count() - c_initwebconference]) | ||
650 | + re.append([column_participate,c_participate, alunos.count() - c_participate]) | ||
651 | + | ||
652 | + context['view'] = column_view | ||
653 | + context['initwebconference'] = column_initwebconference | ||
654 | + context['participate'] = column_participate | ||
632 | context['topic'] = webconference.topic | 655 | context['topic'] = webconference.topic |
633 | context['subject'] = webconference.topic.subject | 656 | context['subject'] = webconference.topic.subject |
657 | + context['webconference'] = webconference | ||
634 | context['db_data'] = re | 658 | context['db_data'] = re |
635 | context['title_chart'] = _('Actions about resource') | 659 | context['title_chart'] = _('Actions about resource') |
636 | context['title_vAxis'] = _('Quantity') | 660 | context['title_vAxis'] = _('Quantity') |
637 | - context['view'] = column_view | 661 | + |
638 | context["n_did_table"] = n_did | 662 | context["n_did_table"] = n_did |
639 | context["did_table"] = did | 663 | context["did_table"] = did |
640 | context["history_table"] = history | 664 | context["history_table"] = history |