font-size: 1.2em;
}
-
-.ui-progressbar {
- height: 10px;
- /*webkit rainbow gradient*/
- background-image: -webkit-gradient(linear, left top, right top,
- color-stop(0.00, blue),
- color-stop(25%, green),
- color-stop(50%, yellow),
- color-stop(75%, orange),
- color-stop(1.00, red)
- );
-
- transform:rotate(180deg);
- -ms-transform:rotate(180deg); /* IE 9 */
- -moz-transform:rotate(180deg); /* Firefox */
- -webkit-transform:rotate(180deg); /* Safari and Chrome */
- -o-transform:rotate(180deg); /* Opera */
-
- -moz-border-radius: 8px 0px 8px 8px;
- -webkit-border-radius: 8px 0px 8px 8px;
- border-radius: 8px 0px 8px 8px;
- }
-
.messages {
padding: 0.5em;
}
border: 1px solid #adadad;
color:#080;
}
+
+.progress {
+ background-color: white;
+ -moz-border-radius: 8px 0px 8px 8px;
+ -webkit-border-radius: 8px 0px 8px 8px;
+ border-radius: 8px 0px 8px 8px;
+
+}
+
+.progress ul {
+ -moz-border-radius: 8px 0px 8px 8px;
+ -webkit-border-radius: 8px 0px 8px 8px;
+ border-radius: 8px 0px 8px 8px;
+
+}
+
+.progress li {
+ font-size: 1.2em;
+}
+
+.ui-progressbar {
+ margin-top: 0.5em;
+ height: 10px;
+
+ /*webkit rainbow gradient*/
+ background-color: white;
+ -moz-border-radius: 8px 0px 8px 8px;
+ -webkit-border-radius: 8px 0px 8px 8px;
+ border-radius: 8px 0px 8px 8px;
+ }
+
+#progressbar-general .ui-progressbar-value {
+ background-color: #4f628a;
+}
+
+
+#progressbar-seminar .ui-progressbar-value {
+ background-color: green;
+ }
+
+
+#progressbar-answer .ui-progressbar-value {
+ background-color: #bb0000;
+ }
+
};
var options = $.extend(defaults, options);
-
+
function calculate(obj){
var count = $(obj).val().length;
if(count >= options.necessary){
}
$(obj).next().html(options.counterText + count + ' / ' + options.necessary);
+ var percent = parseInt(count / options.necessary * 100);
+ if ( percent >= 100 ) {
+ percent = 100;
+ }
+ $('#answer-progress').html(percent);
+ $('#progressbar-answer').progressbar({ value: percent });
};
this.each(function() {
- $(this).after('<'+ options.counterElement +' id="counter" class="' + options.css + '">'+ options.counterText +'</'+ options.counterElement +'>');
+ $(this).after('<'+ options.counterElement +' id="counter" class="' + options.css + '">'+ options.counterText +'</'+ options.counterElement +'>');
calculate(this);
$(this).keyup(function(){calculate(this)});
$(this).change(function(){calculate(this)});
<a href="#" class="component_icon button icon_save"
onclick="document.getElementById('_AnswerForm').submit();">{% trans "Save" %}</a>
-<a href="#" id="submit_button" class="component_icon button icon_ok"
-">{% trans "Submit it" %}</a>
+<a href="#" id="submit_button" class="component_icon button icon_ok">{% trans "Submit it" %}</a>
{% endblock course_content %}
+
+{% block progress %}
+<div class="module">
+ <h3><img src="{{STATIC_URL}}teleforma/images/status.png" alt="status" style="vertical-align:middle" /> {% trans "Progress" %}</h3>
+ <div class="progress">
+ <ul>
+ <li>{% trans "General progress" %} : {{ total_progress }}%
+ <div id="progressbar-general"></div>
+ </li>
+ <li>{% trans "Seminar progress" %} : {{ seminar_progress }}%
+ <div id="progressbar-seminar"></div>
+ </li>
+ <li>{% trans "Answer progress" %} : <span id="answer-progress">0</span>%
+ <div id="progressbar-answer"></div>
+ </li>
+
+ </ul>
+
+ </div>
+</div>
+{% endblock progress %}
+
</div>
{% endblock course %}
-{% block local_progress %}
+
+{% block progress %}
<div class="module">
- <h3><img src="{{STATIC_URL}}teleforma/images/status.png" alt="status" style="vertical-align:middle" /> {% trans "Progression" %} : {{ 100|sub:progress }}%</h3>
+ <h3><img src="{{STATIC_URL}}teleforma/images/status.png" alt="status" style="vertical-align:middle" /> {% trans "Progress" %}</h3>
<div style="background: white;">
- <div id="progressbar"></div>
+ <ul>
+ <li>{% trans "General progress" %} : {{ total_progress }}%
+ <div id="progressbar-general"></div>
+ </li>
+ <li>{% trans "Seminar progress" %} : {{ seminar_progress }}%
+ <div id="progressbar-seminar"></div>
+ </li>
+ </ul>
</div>
</div>
-{% endblock local_progress %}
\ No newline at end of file
+{% endblock progress %}
+
</script>
{% endblock extra_javascript %}
+{% block infra_javascript %}
+<script type="text/javascript">
+$(function() {
+ $( "#progressbar-general" ).progressbar({
+ value: {{ total_progress }}
+ });
+ });
+$(function() {
+ $( "#progressbar-seminar" ).progressbar({
+ value: {{ seminar_progress }}
+ });
+ });
+</script>
+{% endblock infra_javascript %}
+
{% block content %}
<div id="module-set-left" style="width: 18%">
<div id="module-set" style="width: 22%">
-{% block local_progress %}
+{% block progress %}
<div class="module">
<h3><img src="{{STATIC_URL}}teleforma/images/status.png" alt="status" style="vertical-align:middle" /> {% trans "Informations" %}</h3>
<div style="background: white;">
- <div id="progressbar"></div>
+ <ul>
+ <li>{% trans "General progress" %} : {{ total_progess }}
+ <div id="progressbar-general"></div>
+ </li>
+ </ul>
</div>
</div>
-{% endblock local_progress %}
+{% endblock progress %}
{% block status %}
{% get_telecaster as telecaster %}
<script src="{{ STATIC_URL }}teleforma/js/jquery-ui.js" type="text/javascript"></script>
<script src="{{ STATIC_URL }}teleforma/js/jquery.expander.min.js" type="text/javascript"></script>
<script src="{{ STATIC_URL }}teleforma/js/messi.min.js" type="text/javascript"></script>
-<script>
-$(function() {
- $( "#progressbar" ).progressbar({
- value: {{ progress }}
- });
- });
-</script>
{% if user.is_authenticated %}
<script type='text/javascript'>var CURRENT_USER_NAME="{{ user.username }}";</script>
{% endblock %}
{% block extra_javascript %}{% endblock %}
+{% block infra_javascript %}{% endblock %}
</head>
def seminar_progress(user, seminar):
"""return the user progress of a seminar in percent
- WARNING! the result is 100-progress so that we can customize the progress bar background.
"""
progress = 0
progress += question.weight
if total != 0:
- return 100-int(progress*100/total)
+ return int(progress*100/total)
else:
- return 100
+ return 0
def total_progress(user):
"""return the user progress of all seminars in percent"""
- revisions = user.seminar_revision.all()
progress = 0
- n = 0
-
- for revision in revisions:
- progress += revision.progress
- n += 1
+ auditor = user.auditor.all()
+ if auditor:
+ seminars = auditor[0].seminars.all()
+ elif user.is_superuser or user.is_staff:
+ seminars = Seminar.objects.all()
+ for seminar in seminars:
+ progress += seminar_progress(user, seminar)
- if n:
- return 100-int(progress/n)
+ if seminars:
+ return int(progress/len(seminars))
else:
- return 100
+ return 0
def seminar_validated(user, seminar):
validated = []
context = super(SeminarView, self).get_context_data(**kwargs)
seminar = self.get_object()
context['all_seminars'] = get_seminars(self.request.user)
- context['progress'] = seminar_progress(self.request.user, seminar)
+ context['seminar_progress'] = seminar_progress(self.request.user, seminar)
context['total_progress'] = total_progress(self.request.user)
context['validated'] = seminar_validated(self.request.user, seminar)
return context
def get_context_data(self, **kwargs):
context = super(SeminarsView, self).get_context_data(**kwargs)
- user = self.request.user
context['all_seminars'] = self.seminars
- context['total_progress'] = total_progress(user)
+ context['total_progress'] = total_progress(self.request.user)
return context
@method_decorator(login_required)
context['all_seminars'] = get_seminars(self.request.user)
context['question'] = self.question
context['seminar'] = self.question.seminar
- context['progress'] = seminar_progress(self.request.user, self.question.seminar)
+ context['seminar_progress'] = seminar_progress(self.request.user, self.question.seminar)
+ context['total_progress'] = total_progress(self.request.user)
return context
def get_success_url(self):
context['all_seminars'] = all_seminars
context['seminar'] = seminar
context['media_package'] = media_package
- context['progress'] = seminar_progress(self.request.user, seminar)
+ context['seminar_progress'] = seminar_progress(self.request.user, seminar)
+ context['total_progress'] = total_progress(self.request.user)
return context
@method_decorator(login_required)