Index: lams_central/web/css/_main_base.scss
===================================================================
diff -u -rf9b834818dc5ef33a5534001481b70975ea7d529 -r6e03312f31e3651711bc99047d26d9e51bac4933
--- lams_central/web/css/_main_base.scss (.../_main_base.scss) (revision f9b834818dc5ef33a5534001481b70975ea7d529)
+++ lams_central/web/css/_main_base.scss (.../_main_base.scss) (revision 6e03312f31e3651711bc99047d26d9e51bac4933)
@@ -16,13 +16,17 @@
color: #8c8a8a;
}
.offcanvas-header {
- padding: 15px 0 10px 25px;
+ padding: 20px 0 5px 15px;
text-transform: uppercase;
- font-size: 1.05rem;
+ font-size: 1.15rem;
}
+.slimScrollDiv, .offcanvas-scroll-area {
+ width: 220px!important;
+}
#page-wrapper {
margin: 0 0 0 220px;
padding: 10px 20px 0px;
+ height: calc(100% - 53px);
}
.offcanvas-hidden #offcanvas {
display: none;
@@ -35,12 +39,12 @@
display: none !important;
}
#org-container {
- padding: 17px 10px;
+ padding: 10px 0px;
}
}
@media (max-width: 768px) {
- #offcanvas {
- width: 100%;
+ #offcanvas, .slimScrollDiv, .offcanvas-scroll-area {
+ width: 100%!important;
}
body:not(.offcanvas-hidden) .navbar-nav2 {
display:none;
@@ -65,7 +69,7 @@
font-size: 75%;
margin-bottom: 10px;
}
-a {
+a, a.page-link {
color: $main_default_link;
text-decoration: none;
}
@@ -118,25 +122,8 @@
}
.offcanvas-search .form-control {
box-shadow: inset 0 1px 0px rgba(208, 206, 206, 0.25);
- border-radius: 25px;
padding: 2px 5px;
- line-height: 1;
- border: 1px solid rgba(221, 226, 232, 0.49);
- background: $main_offcanvas_search_background;
- color: white;
}
-.offcanvas-search .form-control::-webkit-input-placeholder { /* WebKit, Blink, Edge */
- color: $gray-light-mid;
-}
-.offcanvas-search .form-control:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
- color: $gray-light-mid;
-}
-.offcanvas-search .form-control::-moz-placeholder { /* Mozilla Firefox 19+ */
- color: $gray-light-mid;
-}
-.offcanvas-search .form-control:-ms-input-placeholder { /* Internet Explorer 10-11 */
- color: $gray-light-mid;
-}
.ts-pager {
text-align: center;
padding: 0 10px 10px;
@@ -151,7 +138,7 @@
font-size: 11px;
}
.tablesorter tfoot th {
- background-color: #adadad !important;
+ background-color: #eaeaea !important;
padding: 10px 0 !important;
}
@@ -360,7 +347,7 @@
.course-header {
padding-bottom: 5px;
margin-bottom: 12px;
- border-bottom: $border-thin-default;
+ border-bottom: 1px solid #d2d1d1;
}
a.subcourse-title {
@@ -369,7 +356,6 @@
}
.j-course-contents {
- border-bottom: $border-thin-default;
padding-bottom: 15px;
}
Index: lams_central/web/css/defaultHTML_main.scss
===================================================================
diff -u -rf9b834818dc5ef33a5534001481b70975ea7d529 -r6e03312f31e3651711bc99047d26d9e51bac4933
--- lams_central/web/css/defaultHTML_main.scss (.../defaultHTML_main.scss) (revision f9b834818dc5ef33a5534001481b70975ea7d529)
+++ lams_central/web/css/defaultHTML_main.scss (.../defaultHTML_main.scss) (revision 6e03312f31e3651711bc99047d26d9e51bac4933)
@@ -1,4 +1,4 @@
@import "_dialogs.scss";
@import "_lams_variables.scss";
@import "_main_base.scss";
-/*TOP HEADERs*/
\ No newline at end of file
+/*TOP HEADER*/
\ No newline at end of file
Index: lams_central/web/includes/javascript/main.js
===================================================================
diff -u -r3c6cdee7feaf4d150800c775c8571fb61621f211 -r6e03312f31e3651711bc99047d26d9e51bac4933
--- lams_central/web/includes/javascript/main.js (.../main.js) (revision 3c6cdee7feaf4d150800c775c8571fb61621f211)
+++ lams_central/web/includes/javascript/main.js (.../main.js) (revision 6e03312f31e3651711bc99047d26d9e51bac4933)
@@ -150,7 +150,7 @@
function loadOrganisation() {
- $("#page-wrapper").finish().fadeOut(200, function() {
+ $("#org-container").finish().fadeOut(200, function() {
$(this).html('
').show()
.load(
"displayGroup.do",
@@ -164,19 +164,190 @@
return;
}
- initDataTables();
-
// if screen is smaller than 768px (i.e. offcanvas occupies 100%) and offcanvas is shown - then hide it on user selecting an organisation
if (window.matchMedia('(max-width: 768px)').matches && !$("body").hasClass("offcanvas-hidden")) {
//do it with a small delay so it will be understood that the new organisation is selected indeed
$("body").addClass('offcanvas-hidden', 300);
}
+
+ //init DataTables
+ $('.lessons-table').each(function(i, obj) {
+ var lessonsTable = $(this);
+
+ lessonsTable.DataTable({
+ select: false,
+ info: false,
+ paging: $("tbody tr", $(this)).length > 20,//hide pager if there is only one page
+ pageLength: 20,
+ language: {
+ search: "_INPUT_",
+ searchPlaceholder: "Search..."
+ },
+ rowReorder: {
+ selector: 'td.row-reorder'
+ },
+ 'dom':
+ "<'row'<'col-sm-12'<'float-right ml-2'B>f>>" +
+ "<'row'<'col-sm-12'tr>>" +
+ "<'row'<'col-sm-12 text-center'p>>",
+ 'buttons': [
+ {
+ 'text': '
',
+ 'action': function (e, dt, node) {
+ //dt.table().order([1, 'asc']).draw();
+ //console.log("aaa" + e.type);
+ //$(dt.table().node()).data("table-id", dt.table().node().id);
+ },
+ 'className': 'btn-sm btn-light mr-3',
+ 'attr': {
+ 'title': 'Change views',
+ }
+ },
+ {
+ 'text': '
Card viewList view',
+ 'action': function (e, dt, node) {
+ var $table = $(dt.table().node());
+ var isUserMonitor = eval(lessonsTable.data("is-user-monitor"))
+
+ //add "cards" class
+ var toggleClasses = isUserMonitor ? 'cards table-striped table-hover' : 'cards table-hover';
+ $table.toggleClass(toggleClasses);
+ //toggle button's icon
+ $('.fa', node).toggleClass(['fa-table', 'fa-id-badge']);
+ $('.list-view-label,.card-view-label', node).toggle();
+
+ //toggle auxiliary buttons
+ $(".auxiliary-links-menu", $table).toggle();
+
+ //hide charts for smaller devices
+ if (isUserMonitor) {
+ $("td.chart-td", lessonsTable).toggleClass("d-none d-sm-table-cell");
+ }
+
+ dt.draw('page');
+ },
+ 'className': 'btn-sm btn-light',
+ 'attr': {
+ 'title': 'Change views',
+ }
+ }],
+ 'columns': [
+ {"visible": false},
+ {"visible": false},
+ {"visible": false},
+ {"visible": false},
+ //star lesson feature
+ {"visible": true, className: "none"},//we need to mark it as visible:true, but set manually display:none to be able to access it from toggleFavoriteLesson() method
+ //lesson image
+ {
+ 'orderable': false,
+ className: "text-left"
+ },
+ //learners number
+ {
+ 'orderable': false,
+ "visible": lessonsTable.data("is-user-monitor")
+ //className: "d-none d-md-inline"
+ },
+ //chart
+ {
+ 'orderable': false,
+ "visible": lessonsTable.data("is-user-monitor")
+ },
+ //buttons
+ {
+ 'data': 'extn',
+ "visible": lessonsTable.data("is-user-monitor")
+ },
+ //row-reordering feature
+ {"width": "20px", "visible": lessonsTable.data("row-reordering-enabled")},
+ ]
+ })
+ .on( 'row-reorder', function ( e, diff, edit ) {
+ //store new lesson order in DB
+ var orgId = lessonsTable.data("orgid");
+ var lessonIds = $("tbody tr", lessonsTable).map(function() {
+ return $(this).data("lessonid");
+ }).get().join(',');
+ $.ajax({
+ url : "servlet/saveLessonOrder",
+ data : {
+ orgId : orgId,
+ ids : lessonIds
+ },
+ error : function() {
+ alert("There was an error trying to save new lesson order.");
+ }
+ });
+ })
+ .on( 'draw.dt', function ( e, diff, edit ) {
+ $(".chart-area").each(function() {
+ var chart = $(this);
+ new Chart(chart.get(0).getContext('2d'), {
+ type: 'doughnut',
+ data: {
+ datasets: [{
+ data: [
+ chart.data("count-completed-learners"),
+ chart.data("count-attempted-learners"),
+ chart.data("count-not-started-learners")
+ ],
+ backgroundColor: [
+ 'rgb(199, 234, 70)',//green
+ 'rgb(252, 226, 5)',//yellow
+ 'rgb(255, 146, 140)'//red
+ ]
+ }],
+ labels: [
+ 'Completed',
+ 'Attempted',
+ 'Not Started'
+ ]
+ },
+ options: {
+ responsive: true,
+ legend: false
+ }
+ });
+ });
+
+ $("time.timeago").timeago();
+ });
+ //invoke datatables' draw.dt event, to display charts and timeago labels
+ lessonsTable.trigger('draw.dt');
+ });
}
);
});
}
+function orderDatatable(button, tableId){
+ var selectedOrderId = $(button).val();
+
+ //hide row-reorder if non-default order is selected
+ if ( !$("#" + tableId).hasClass("cards")) {
+ if (selectedOrderId == 0) {
+ $("td.row-reorder", $("#" + tableId)).show();
+ } else {
+ $("td.row-reorder", $("#" + tableId)).hide();
+ }
+ }
+
+ var orderDirection = selectedOrderId == 0 ? 'asc':'desc';
+ $("#" + tableId).DataTable().order([selectedOrderId, orderDirection]).draw();
+}
+
+
function toggleFavoriteOrganisation(orgId) {
$("#favorite-organisations-container").load(
"index/toggleFavoriteOrganisation.do",
Index: lams_central/web/main.jsp
===================================================================
diff -u -r3c6cdee7feaf4d150800c775c8571fb61621f211 -r6e03312f31e3651711bc99047d26d9e51bac4933
--- lams_central/web/main.jsp (.../main.jsp) (revision 3c6cdee7feaf4d150800c775c8571fb61621f211)
+++ lams_central/web/main.jsp (.../main.jsp) (revision 6e03312f31e3651711bc99047d26d9e51bac4933)
@@ -45,7 +45,16 @@
.dataTables_filter {
margin-top: 10px;
float: left;
+ font-size: .875rem;
+ padding-left: .5rem;
}
+div.dataTables_wrapper div.dataTables_paginate ul.pagination {
+ justify-content: center!important;
+}
+.page-item.active .page-link {
+ background-color: lightgrey !important;
+ border-color: #dee2e6;
+}
.lesson-image {
background-size: cover;
@@ -220,7 +229,6 @@
font-size: 80%;
font-weight: 400;
}
-
@@ -306,7 +314,8 @@
OUTCOME_COURSE_MANAGE_TITLE : '
'
},
- activeOrgId =
null${activeOrgId};
+ activeOrgId =
null${activeOrgId}
+ isFavouriteLessonEnabled = ${isFavouriteLessonEnabled};
$(document).ready(function(){
<%-- If it's the user's first login, show tour --%>
@@ -342,178 +351,14 @@
}
});
-
- function orderDatatable(button, tableId){
- var selectedOrderId = $(button).val();
-
- //hide row-reorder if non-default order is selected
- if ( !$("#" + tableId).hasClass("cards")) {
- if (selectedOrderId == 0) {
- $("td.row-reorder", $("#" + tableId)).show();
- } else {
- $("td.row-reorder", $("#" + tableId)).hide();
- }
- }
-
- var orderDirection = selectedOrderId == 0 ? 'asc':'desc';
- $("#" + tableId).DataTable().order([selectedOrderId, orderDirection]).draw();
- }
-
- function initDataTables() {
- $('.lessons-table').each(function(i, obj) {
- var lessonsTable = $(this);
-
- lessonsTable.DataTable({
- rowReorder: {
- selector: 'td.row-reorder'
- },
- 'dom':
- "<'row'<'col-sm-12'<'float-right ml-2'B>f>>" +
- "<'row'<'col-sm-12'tr>>" ,
- 'buttons': [
- {
- 'text': '
',
- 'action': function (e, dt, node) {
- //dt.table().order([1, 'asc']).draw();
- //console.log("aaa" + e.type);
- //$(dt.table().node()).data("table-id", dt.table().node().id);
- },
- 'className': 'btn-sm btn-light mr-3',
- 'attr': {
- 'title': 'Change views',
- }
- },
- {
- 'text': '
Card viewList view',
- 'action': function (e, dt, node) {
- var $table = $(dt.table().node());
- var isUserMonitor = eval(lessonsTable.data("is-user-monitor"))
-
- //add "cards" class
- var toggleClasses = isUserMonitor ? 'cards table-striped table-hover' : 'cards table-hover';
- $table.toggleClass(toggleClasses);
- //toggle button's icon
- $('.fa', node).toggleClass(['fa-table', 'fa-id-badge']);
- $('.list-view-label,.card-view-label', node).toggle();
-
- //toggle auxiliary buttons
- $(".auxiliary-links-menu", $table).toggle();
-
- //hide charts for smaller devices
- if (isUserMonitor) {
- $("td.chart-td", lessonsTable).toggleClass("d-none d-sm-table-cell");
- }
-
- dt.draw('page');
- },
- 'className': 'btn-sm btn-light',
- 'attr': {
- 'title': 'Change views',
- }
- }],
- select: false,
- paging: false,
- info: false,
- 'columns': [
- {"visible": false},
- {"visible": false},
- {"visible": false},
- {"visible": false},
- //star lesson feature
- {"visible": true, className: "none"},//we need to mark it as visible:true, but set manually display:none to be able to access it from toggleFavoriteLesson() method
- //lesson image
- {
- 'orderable': false,
- className: "text-left"
- },
- //learners number
- {
- 'orderable': false,
- "visible": lessonsTable.data("is-user-monitor")
- //className: "d-none d-md-inline"
- },
- //chart
- {
- 'orderable': false,
- "visible": lessonsTable.data("is-user-monitor")
- },
- //buttons
- {
- 'data': 'extn',
- "visible": lessonsTable.data("is-user-monitor")
- },
- //row-reordering feature
- {"width": "20px", "visible": lessonsTable.data("row-reordering-enabled")},
- ]
- })
- .on( 'row-reorder', function ( e, diff, edit ) {
- //store new lesson order in DB
- var orgId = lessonsTable.data("orgid");
- var lessonIds = $("tbody tr", lessonsTable).map(function() {
- return $(this).data("lessonid");
- }).get().join(',');
- $.ajax({
- url : "servlet/saveLessonOrder",
- data : {
- orgId : orgId,
- ids : lessonIds
- },
- error : function() {
- alert("There was an error trying to save new lesson order.");
- }
- });
- });
- });
-
- $(".chart-area").each(function() {
- var chart = $(this);
- new Chart(chart.get(0).getContext('2d'), {
- type: 'doughnut',
- data: {
- datasets: [{
- data: [
- chart.data("count-completed-learners"),
- chart.data("count-attempted-learners"),
- chart.data("count-not-started-learners")
- ],
- backgroundColor: [
- 'rgb(199, 234, 70)',//green
- 'rgb(252, 226, 5)',//yellow
- 'rgb(255, 146, 140)'//red
- ]
- }],
- labels: [
- 'Completed',
- 'Attempted',
- 'Not Started'
- ]
- },
- options: {
- responsive: true,
- legend: false
- }
- });
- });
-
- $("time.timeago").timeago();
- }
<%@ include file="mainTour.jsp" %>
-class="offcanvas-hidden">
+offcanvas-hidden">
-
-
+
-
+
-