Commit bd5e13b0 authored by Curtis Adam's avatar Curtis Adam

Merge branch 'transcript_statistics' into 'staging'

Transcript statistics

See merge request arsnova/cards!649
parents 6c2d3c17 ff6d9a35
......@@ -9,7 +9,7 @@
@import '../imports/ui/wordcloud/wordcloud.scss';
@import '../imports/ui/filter/index/index.scss';
@import '../imports/ui/cardset/cardset.scss';
@import '../imports/ui/cardset/transcript/transcript.scss';
@import '../imports/ui/cardset/index/transcript/transcript.scss';
@import '../imports/ui/filter/index/item/cardset.scss';
@import '../imports/ui/card/card.scss';
@import '../imports/ui/card/cube/cube.scss';
......
......@@ -88,6 +88,12 @@ $themes: (
$card_counter_text: map-get($map, "card_counter_text");
$transcript_counter_background: map-get($map, "transcript_counter_background");
$transcript_counter_text: map-get($map, "transcript_counter_text");
$transcript_rating_label_background: map-get($map, "transcript_rating_label_background");
$transcript_rating_label_text: map-get($map, "transcript_rating_label_text");
$transcript_rating_pending_icon: map-get($map, "transcript_rating_pending_icon");
$transcript_rating_accepted_icon: map-get($map, "transcript_rating_accepted_icon");
$transcript_rating_denied_icon: map-get($map, "transcript_rating_denied_icon");
$transcript_achieved_bonus: map-get($map, "transcript_achieved_bonus");
//barfy stars
$barfy_stars_particles_1: map-get($map, "barfy_stars_particles_1");
$barfy_stars_particles_2: map-get($map, "barfy_stars_particles_2");
......@@ -581,6 +587,10 @@ $themes: (
$transcript_bonus_info_lecture_date_day_hover_background: map-get($map, "transcript_bonus_info_lecture_date_day_hover_background");
$transcript_bonus_submission_count_badge_text: map-get($map, "transcript_bonus_submission_count_badge_text");
$transcript_bonus_submission_count_badge_background: map-get($map, "transcript_bonus_submission_count_badge_background");
//transcript bonus statistics info colors
$transcript_bonus_statistics_info_name_background: map-get($map, "transcript_bonus_statistics_info_name_background");
$transcript_bonus_statistics_info_details_background: map-get($map, "transcript_bonus_statistics_info_details_background");
$transcript_bonus_statistics_info_details_text: map-get($map, "transcript_bonus_statistics_info_details_text");
//markdeep editor colors
$markdeep_help_text: map-get($map, "markdeep_help_text");
$markdeep_help_background: map-get($map, "markdeep_help_background");
......@@ -1702,10 +1712,6 @@ $themes: (
border: 1px solid $primary !important;
}
.bs-callout-info {
border-left-color: $primary !important;
}
.learnLeitner, .learnWozniak, .learnSelect {
cursor: pointer;
color: $primary !important;
......@@ -2546,6 +2552,7 @@ $themes: (
.bs-callout-info {
background-color: $white !important;
border-left-color: $thm_orange !important;
}
#publishKind, #publishKindAdmin {
......@@ -2780,6 +2787,27 @@ $themes: (
}
}
.label-transcript-rating {
background-color: $transcript_rating_label_background !important;
color: $transcript_rating_label_text !important;
}
.transcript-rating-pending::before {
color: $transcript_rating_pending_icon !important;
}
.transcript-rating-accepted::before {
color: $transcript_rating_accepted_icon !important;
}
.transcript-rating-denied::before {
color: $transcript_rating_denied_icon !important;
}
.transcript-achieved-bonus::before {
color: $transcript_achieved_bonus !important;
}
.label-count-cards {
background-color: $card_counter_background !important;
color: $card_counter_text!important;
......@@ -3704,5 +3732,15 @@ $themes: (
.flashcard-3d {
border-color: $cube_border;
}
//transcript bonus user statistics colors
.transcript-bonus-statistics-info {
th {
background-color: $transcript_bonus_statistics_info_name_background !important;
}
td {
background-color: $transcript_bonus_statistics_info_details_background !important;
color: $transcript_bonus_statistics_info_details_text !important;
}
}
}
}
......@@ -123,6 +123,12 @@
"card_counter_text": white,
"transcript_counter_background": $thm_orange,
"transcript_counter_text": white,
"transcript_rating_label_background": white,
"transcript_rating_label_text": black,
"transcript_rating_pending_icon": $thm_orange,
"transcript_rating_accepted_icon": $thm_green,
"transcript_rating_denied_icon": $thm_red,
"transcript_achieved_bonus": $thm_orange,
//barfy stars
"barfy_stars_particles_1": $thm_blue,
"barfy_stars_particles_2": $thm_orange,
......@@ -624,6 +630,10 @@
"transcript_bonus_info_lecture_date_day_hover_background": LightGoldenRodYellow,
"transcript_bonus_submission_count_badge_text": white,
"transcript_bonus_submission_count_badge_background": $thm_orange,
//transcript bonus statistics info colors
"transcript_bonus_statistics_info_name_background": LightGoldenRodYellow,
"transcript_bonus_statistics_info_details_background": white,
"transcript_bonus_statistics_info_details_text": black,
//markdeep editor colors
"markdeep_help_text": $white,
"markdeep_help_background": $thm_orange,
......
......@@ -725,11 +725,31 @@
"cancel": "Zurück zur Kartei",
"cancelRepetitorium": "Zrück zum Repetitorium",
"settings": "Einstellungen",
"list": "Abgaben"
"list": "Abgaben",
"statistics": "Übersicht"
},
"alert": {
"save": "Änderungen wurden erfolgreich gespeichert"
}
},
"statistics": {
"lastSubmission": "Letzte Abgabe",
"pending": "Noch nicht bewertet",
"accepted": "Akzeptiert",
"denied": "Abgelehnt",
"bonus": "Erhaltene Bonuspunkte",
"export": "Statistik exportieren",
"exportName": "Mitschriften_Statistik"
},
"submissions": {
"button": {
"review": "Mitschriften bewerten"
},
"info": {
"nothing": "Es gibt derzeit keine unbewerteten Mitschriften.",
"found": "Es gibt __count__ Mitschriften mit abgelaufener digitaler Nachbearbeitungsfrist, die eine Bewertung benötigen.",
"next": "Die nächsten Mitschriften können am __date__ bewertet werden."
}
}
}
},
......@@ -1192,6 +1212,32 @@
},
"list": {
"back": " Zurück zur Karte"
},
"transcriptBonusRating": {
"long": "Bewertung",
"short": "Bewertung",
"tooltip": {
"pending": "Die Mitschrift wurde noch nicht bewertet",
"accepted": "Die Mitschrift wurde akzeptiert",
"denied": "Die Mitschrift wurde abgelehnt"
},
"navigation": {
"rate": "Mitschrift bewerten",
"skip": "Überspringen",
"accept": "Akzeptieren",
"deny": "Ablehnen",
"notUnlocked": "Die digitale Bearbeitungsfrist ist noch nicht abgelaufen"
},
"notification": {
"accept": "Die Mitschrift wurde akzeptiert",
"deny": "Die Mitschrift wurde abgelehnt"
},
"finished": {
"text": "Alle Mitschriften wurden bewertet",
"button": {
"back": "Zurück zur Übersicht"
}
}
}
},
"rating-field": {
......@@ -1264,6 +1310,17 @@
"cardset": "Nach Autor/in \"__name__\" filtern",
"rep": "Nach Editor/in \"__name__\" filtern"
}
},
"rating": {
"title": "Bewertung",
"all": "Alle",
"notRated": "Nicht bewertet",
"accepted": "Akzeptiert",
"denied": "Abgelehnt"
},
"transcriptLecture": {
"title": "Vorlesungen",
"all": "Alle"
}
},
"infinite-scroll": {
......@@ -1745,7 +1802,11 @@
"leitner": "Noch eine Karte",
"leitner_plural": "Noch __count__ Karten",
"leitnerShort": "1 Karte",
"leitnerShort_plural": "__count__ Karten"
"leitnerShort_plural": "__count__ Karten",
"review": "Noch eine Mitschrift",
"review_plural": "Noch __count__ Mitschriften",
"reviewShort": "1 Mitschrift",
"reviewShort_plural": "__count__ Mitschriften"
},
"permission": "Kein Zugang",
"nocards": "Keine Karten vorhanden",
......
......@@ -727,11 +727,31 @@
"cancel": "Zurück zur Kartei",
"cancelRepetitorium": "Zrück zum Repetitorium",
"settings": "Einstellungen für die Bonusvergabe",
"list": "Gekoppelte Abgaben für die Bonusvergabe"
"list": "Gekoppelte Abgaben für die Bonusvergabe",
"statistics": "Übersicht"
},
"alert": {
"save": "Änderungen wurden erfolgreich gespeichert"
}
},
"statistics": {
"lastSubmission": "Letzte Abgabe",
"pending": "Noch nicht bewertet",
"accepted": "Akzeptiert",
"denied": "Abgelehnt",
"bonus": "Erhaltene Bonuspunkte",
"export": "Statistik exportieren",
"exportName": "Mitschriften_Statistik"
},
"submissions": {
"button": {
"review": "Mitschriften bewerten"
},
"info": {
"nothing": "Es gibt derzeit keine unbewerteten Mitschriften.",
"found": "Es gibt __count__ Mitschriften mit abgelaufener digitaler Nachbearbeitungsfrist, die eine Bewertung benötigen.",
"next": "Die nächsten Mitschriften können am __date__ bewertet werden."
}
}
}
},
......@@ -1194,6 +1214,32 @@
},
"list": {
"back": " Zurück zur Karte"
},
"transcriptBonusRating": {
"long": "Bewertung",
"short": "Bewertung",
"tooltip": {
"pending": "Die Mitschrift wurde noch nicht bewertet",
"accepted": "Die Mitschrift wurde akzeptiert",
"denied": "Die Mitschrift wurde abgelehnt"
},
"navigation": {
"rate": "Mitschrift bewerten",
"skip": "Überspringen",
"accept": "Akzeptieren",
"deny": "Ablehnen",
"notUnlocked": "Die digitale Bearbeitungsfrist ist noch nicht abgelaufen"
},
"notification": {
"accept": "Die Mitschrift wurde akzeptiert",
"deny": "Die Mitschrift wurde abgelehnt"
},
"finished": {
"text": "Alle Mitschriften wurden bewertet",
"button": {
"back": "Zurück zur Übersicht"
}
}
}
},
"rating-field": {
......@@ -1266,6 +1312,17 @@
"cardset": "Nach Autor/in \"__name__\" filtern",
"rep": "Nach Editor/in \"__name__\" filtern"
}
},
"rating": {
"title": "Bewertung",
"all": "Alle",
"notRated": "Nicht bewertet",
"accepted": "Akzeptiert",
"denied": "Abgelehnt"
},
"transcriptLecture": {
"title": "Vorlesungen",
"all": "Alle"
}
},
"infinite-scroll": {
......@@ -1746,7 +1803,11 @@
"leitner": "Noch eine Karte zu lernen",
"leitner_plural": "Noch __count__ Karten zu lernen",
"leitnerShort": "Noch eine Karte",
"leitnerShort_plural": "Noch __count__ Karten"
"leitnerShort_plural": "Noch __count__ Karten",
"review": "Noch eine Mitschrift",
"review_plural": "Noch __count__ Mitschriften",
"reviewShort": "1 Mitschrift",
"reviewShort_plural": "__count__ Mitschriften"
},
"permission": "Kein Zugang",
"nocards": "Keine Karten vorhanden",
......
......@@ -8,6 +8,7 @@ import {CardType} from "./cardTypes";
import {CardNavigation} from "./cardNavigation";
import {CardVisuals} from "./cardVisuals";
import {Utilities} from "./utilities";
import {TranscriptBonus} from "./transcriptBonus";
let cardIndex = [];
......@@ -65,7 +66,15 @@ export let CardIndex = class CardIndex {
let indexCards = [];
let cardset;
if (!Meteor.isServer && Route.isTranscript()) {
return 0;
if (Route.isPresentationTranscriptReview()) {
let indexCards = TranscriptBonus.find({cardset_id: Router.current().params._id, rating: 0},{sort: {date: 1, user_id: 1}, fields: {card_id: 1}}).fetch();
indexCards.forEach(function (indexCard) {
cardIndex.push(indexCard.card_id);
});
return cardIndex;
} else {
return 0;
}
} else {
if (!Meteor.isServer && Route.isDemo()) {
cardset = Cardsets.findOne({kind: 'demo', name: 'DemoCardset', shuffled: true});
......@@ -209,6 +218,13 @@ export let CardIndex = class CardIndex {
let query = "";
if (Route.isPresentationTranscript()) {
return Cards.find(Router.current().params.card_id).fetch();
} else if (Route.isPresentationTranscriptReview()) {
let cardIndexFilter = this.getCardIndexFilter();
query = Cards.find({
_id: {$in: cardIndexFilter},
cardset_id: "-1"
}).fetch();
return this.sortQueryResult(cardIndexFilter, query);
} else {
let cardIndexFilter = this.getCardIndexFilter();
if (Session.get('activeCardset').shuffled) {
......@@ -328,7 +344,7 @@ export let CardIndex = class CardIndex {
}
static getActiveCardIndex (card_id) {
if (Route.isTranscript()) {
if (Route.isTranscript() && !Route.isPresentationTranscriptReview()) {
return 0;
} else {
let cardIndex = this.getCardIndex();
......
......@@ -183,6 +183,8 @@ export let CardNavigation = class CardNavigation {
Meteor.call('updateLeitner', Router.current().params._id, answeredCard, answer);
} else if (updateLearningMode === 2) {
Meteor.call("updateWozniak", Router.current().params._id, answeredCard, answer);
} else if (updateLearningMode === 3) {
Meteor.call("rateTranscript", Router.current().params._id, answeredCard, answer);
}
setTimeout(function () {
CardNavigation.toggleVisibility(true);
......@@ -289,6 +291,8 @@ export let CardNavigation = class CardNavigation {
Meteor.call('updateLeitner', Router.current().params._id, answeredCard, answer);
} else if (updateLearningMode === 2) {
Meteor.call("updateWozniak", Router.current().params._id, answeredCard, answer);
} else if (updateLearningMode === 3) {
Meteor.call("rateTranscript", Router.current().params._id, answeredCard, answer);
}
} else {
this.toggleVisibility(false);
......@@ -300,6 +304,10 @@ export let CardNavigation = class CardNavigation {
this.answerCard(1, answer);
}
static rateTranscript (answer) {
this.answerCard(3, answer);
}
static fullscreenExitEvents () {
if (screenfull.enabled) {
screenfull.on('change', () => {
......@@ -402,8 +410,11 @@ export let CardNavigation = class CardNavigation {
if (CardNavigation.isVisible()) {
if (Route.isCardset() || Route.isPresentationOrDemo()) {
if (CardNavigation.getCardSideNavigationIndex() < CardNavigation.getCardSideNavigationLength()) {
if (Route.isPresentationTranscriptReview() && CardNavigation.getCardSideNavigationIndex() === CardNavigation.getCardSideNavigationLength() - 1) {
Session.set('isQuestionSide', false);
}
CardNavigation.cardSideNavigation();
} else if (!CardNavigation.isLastCard()) {
} else if (!CardNavigation.isLastCard() && !Route.isPresentationTranscriptReview()) {
CardNavigation.skipAnswer();
}
} else if ((Route.isBox() || Route.isMemo()) && Session.get('isQuestionSide')) {
......@@ -481,14 +492,26 @@ export let CardNavigation = class CardNavigation {
break;
case 78:
if (!Session.get('isQuestionSide')) {
$('#notknown').click();
if (Route.isTranscript()) {
$('#denyTranscript').click();
} else {
$('#notknown').click();
}
}
break;
case 89:
if (!Session.get('isQuestionSide')) {
$('#known').click();
if (Route.isTranscript()) {
$('#acceptTranscript').click();
} else {
$('#known').click();
}
} else {
$('#learnShowAnswer').click();
if (Route.isTranscript()) {
$('#rateTranscript').click();
} else {
$('#learnShowAnswer').click();
}
}
break;
case 90:
......
......@@ -131,7 +131,7 @@ export let CardVisuals = class CardVisuals {
flashcardBody.css('height', newHeight - flashcardHeaderHeight);
if (AspectRatio.scaleCardNavigationWidth()) {
let cardNavigation = $('.cardNavigation');
let answerOptions = $('#answerOptions');
let answerOptions = $('.answerOptions');
cardNavigation.css('width', newWidth);
cardNavigation.css('margin-left', leftOffset);
if (answerOptions.length) {
......@@ -183,6 +183,7 @@ export let CardVisuals = class CardVisuals {
static resizeFlashcard3D () {
let offsetBottom = 45;
let cardNavigation = $('.cardNavigation');
let answerOptions = $('.answerOptions');
let availableHeight = $(window).height() - (cardNavigation.outerHeight() + cardNavigation.offset().top) - offsetBottom;
let flashcard = $('.flashcard');
let flashcardHeader = $('.cardHeader');
......@@ -217,6 +218,9 @@ export let CardVisuals = class CardVisuals {
leftMargin -= parseInt($('.cardNavigation').parent().css('padding-left'));
}
$('.cardNavigation').attr('style', 'max-width: ' + flashcard.width() + 'px !important; margin-left: ' + leftMargin + 'px !important;');
if (answerOptions.length) {
answerOptions.attr('style', 'max-width: ' + flashcard.width() + 'px !important; margin-left: ' + leftMargin + 'px !important;');
}
}
}
}
......@@ -312,7 +316,7 @@ export let CardVisuals = class CardVisuals {
flashcardBody.removeAttr('style');
contentEditor.removeAttr('style');
$('.cardNavigation').removeAttr('style');
$('#answerOptions').removeAttr('style');
$('.answerOptions').removeAttr('style');
if (AspectRatio.isEnabled()) {
aspectRatioEnabled = true;
}
......
......@@ -109,6 +109,38 @@ if (Meteor.isServer) {
this.ready();
}
});
Meteor.publish("cardsetTranscriptBonusCardsReview", function (cardset_id, activeFilter) {
if (this.userId) {
let cardset = Cardsets.findOne({_id: cardset_id}, {fields: {_id: 1, owner: 1}});
if (UserPermissions.isAdmin() || UserPermissions.isOwner(cardset.owner)) {
let latestExpiredDeadline = TranscriptBonusList.getLatestExpiredDeadline(cardset._id);
if (latestExpiredDeadline !== undefined) {
let bonusTranscripts = TranscriptBonus.find({cardset_id: cardset._id, date: {$lt: latestExpiredDeadline}, rating: 0}, {fields: {card_id: 1}}).fetch();
let cardFilter = [];
for (let i = 0; i < bonusTranscripts.length; i++) {
cardFilter.push(bonusTranscripts[i].card_id);
}
let query = {};
if (activeFilter !== undefined && activeFilter !== null) {
if (activeFilter.transcriptDate !== undefined) {
query.date = new Date(activeFilter.transcriptDate);
}
if (activeFilter.owner !== undefined) {
query.owner = activeFilter.owner;
}
}
query._id = {$in: cardFilter};
return Cards.find({_id: {$in: cardFilter}, cardType: 2, cardset_id: "-1"});
} else {
this.ready();
}
} else {
this.ready();
}
} else {
this.ready();
}
});
Meteor.publish("transcriptCard", function (card_id) {
if (UserPermissions.isAdmin()) {
return Cards.find({_id: card_id, cardType: 2, cardset_id: "-1"});
......
......@@ -5,6 +5,7 @@ import {Route} from "./route";
import {WordcloudCanvas} from "./wordcloudCanvas";
import {Leitner, Wozniak} from "./learned";
import * as config from "../config/filter.js";
import {TranscriptBonus} from "./transcriptBonus";
Session.setDefault('maxItemsCounter', config.itemStartingValue);
Session.setDefault('poolFilter', undefined);
......@@ -88,11 +89,10 @@ export let Filter = class Filter {
this.setDefaultFilter(FilterNavigation.getRouteId());
}
return Session.get('transcriptsBonusCardsetFilter');
}
}
static setActiveFilter (content, contentType = undefined) {
static setActiveFilter (content, contentType = undefined, maxItemCounter = config.itemStartingValue) {
let filter = content;
if (contentType !== undefined) {
filter = this.getActiveFilter();
......@@ -137,10 +137,26 @@ export let Filter = class Filter {
case "_id":
filter._id = content;
break;
case "cardset_id":
filter.cardset_id = content;
break;
case "user_id":
filter.user_id = content;
break;
case "transcriptBonus":
delete filter.learningActive;
filter['transcriptBonus.enabled'] = true;
break;
case "transcriptLecture":
filter.transcriptDate = content;
break;
case "rating":
if (content === undefined) {
delete filter.rating;
} else {
filter.rating = Number(content);
}
break;
}
}
switch (FilterNavigation.getRouteId()) {
......@@ -178,7 +194,7 @@ export let Filter = class Filter {
Session.set('transcriptsBonusCardsetFilter', filter);
break;
}
this.resetInfiniteBar();
this.setMaxItemCounter(maxItemCounter);
if (FilterNavigation.isDisplayWordcloudActive(FilterNavigation.getRouteId())) {
WordcloudCanvas.draw();
}
......@@ -301,6 +317,29 @@ export let Filter = class Filter {
if (!Route.isWorkload() && activeFilter !== undefined && !Route.isTranscript() && !Route.isTranscriptBonus()) {
query.shuffled = activeFilter.shuffled;
}
if (FilterNavigation.gotRatingFilter(FilterNavigation.getRouteId()) || FilterNavigation.gotTranscriptLectureFilter(FilterNavigation.getRouteId())) {
let ratingQuery = {};
if (activeFilter.rating !== undefined) {
ratingQuery.rating = activeFilter.rating;
}
if (activeFilter.user_id !== undefined) {
ratingQuery.user_id = activeFilter.user_id;
}
if (activeFilter.cardset_id !== undefined) {
ratingQuery.cardset_id = activeFilter.cardset_id;
}
if (activeFilter.transcriptDate !== undefined) {
ratingQuery.date = new Date(activeFilter.transcriptDate);
}
let cardsWithRating = _.uniq(TranscriptBonus.find(ratingQuery, {
fields: {card_id: 1}
}).fetch().map(function (x) {
return x.card_id;
}), true);
if (cardsWithRating.length) {
query._id = {$in: cardsWithRating};
}
}
return query;
}
......@@ -332,6 +371,10 @@ export let Filter = class Filter {
Session.set('maxItemsCounter', config.itemStartingValue);
}
static setMaxItemCounter (size) {
Session.set('maxItemsCounter', size);
}
static incrementMaxItemCounter () {
let newCounter = Session.get('maxItemsCounter');
newCounter += config.itemIncrementValue;
......@@ -390,10 +433,6 @@ export let Filter = class Filter {
this.setActiveFilter(filter);
}
static resetInfiniteBar () {
this.resetMaxItemCounter();
}
static resetFilters () {
Session.set('maxItemsCounter', config.itemStartingValue);
Session.set('poolFilter', undefined);
......
......@@ -48,6 +48,14 @@ export let FilterNavigation = class FilterNavigation {
return config.filtersWithDifficulty.includes(filterType);
}
static gotTranscriptLectureFilter (filterType) {
return config.filtersWithTranscriptLecture.includes(filterType);
}
static gotRatingFilter (filterType) {
return config.filtersWithRating.includes(filterType);
}
static gotBonusFilter (filterType) {
return config.filtersWithBonus.includes(filterType);
}
......
......@@ -66,7 +66,7 @@ Meteor.methods({
if (target === 'lecturer') {
var lecturers = Roles.getUsersInRole('lecturer');
lecturers.forEach(function (lecturer) {
Meteor.call("createNotification", lecturer._id, type, text, link_id, 'user', receiver);
Meteor.call("createNotification", lecturer._id, type, text, link_id, 'stats.js', receiver);
});
} else if (target === 'admin') {
var admins = Roles.getUsersInRole([
......@@ -77,7 +77,7 @@ Meteor.methods({
Meteor.call("createNotification", admin._id, type, text, link_id, 'admin', receiver);
});
} else {
Meteor.call("createNotification", target, type, text, link_id, 'user', receiver);
Meteor.call("createNotification", target, type, text, link_id, 'stats.js', receiver);
}
},
......
......@@ -54,7 +54,7 @@ export let Route = class Route {
}
static isTranscript () {
return this.isMyTranscripts() || this.isMyBonusTranscripts() || this.isNewTranscript() || this.isEditTranscript() || this.isPresentationTranscript() || this.isPresentationTranscriptBonus() || this.isPresentationTranscriptBonusCardset();
return this.isMyTranscripts() || this.isMyBonusTranscripts() || this.isNewTranscript() || this.isEditTranscript() || this.isPresentationTranscript() || this.isPresentationTranscriptBonus() || this.isPresentationTranscriptBonusCardset() || this.isPresentationTranscriptReview();
}
static isPresentationTranscript () {
......@@ -65,6 +65,10 @@ export let Route = class Route {
return Router.current().route.getName() === "presentationTranscriptPersonal";
}
static isPresentationTranscriptReview () {
return Router.current().route.getName() === "presentationTranscriptReview";
}
static isPresentationTranscriptBonus () {
return Router.current().route.getName() === "presentationTranscriptBonus";
}
......@@ -102,7 +106,7 @@ export let Route = class Route {
* @return {Boolean} Return true, when route is a presentation view.
*/
static isPresentation () {
return (this.isDefaultPresentation() || this.isPresentationList() || this.isPresentationTranscript());
return (this.isDefaultPresentation() || this.isPresentationList() || this.isPresentationTranscript() || this.isPresentationTranscriptReview());
}
static isDefaultPresentation ()