Add video transcript config model flags - EDUCATOR-1224
This commit is contained in:
committed by
muzaffaryousaf
parent
2203de4a85
commit
538a3d7801
@@ -16,6 +16,7 @@ define([
|
||||
videoUploadMaxFileSizeInGB,
|
||||
activeTranscriptPreferences,
|
||||
videoTranscriptSettings,
|
||||
isVideoTranscriptEnabled,
|
||||
videoImageSettings
|
||||
) {
|
||||
var activeView = new ActiveVideoUploadListView({
|
||||
@@ -27,6 +28,7 @@ define([
|
||||
videoImageSettings: videoImageSettings,
|
||||
activeTranscriptPreferences: activeTranscriptPreferences,
|
||||
videoTranscriptSettings: videoTranscriptSettings,
|
||||
isVideoTranscriptEnabled: isVideoTranscriptEnabled,
|
||||
onFileUploadDone: function(activeVideos) {
|
||||
$.ajax({
|
||||
url: videoHandlerUrl,
|
||||
|
||||
@@ -20,6 +20,10 @@ define(
|
||||
fail: 'upload_failed',
|
||||
success: 'upload_completed'
|
||||
},
|
||||
videoUploadMaxFileSizeInGB = 5,
|
||||
videoSupportedFileFormats = ['.mp4', '.mov'],
|
||||
createActiveUploadListView,
|
||||
$courseVideoSettingsButton,
|
||||
makeUploadUrl,
|
||||
getSentRequests,
|
||||
verifyUploadViewInfo,
|
||||
@@ -29,6 +33,22 @@ define(
|
||||
verifyA11YMessage,
|
||||
verifyUploadPostRequest;
|
||||
|
||||
createActiveUploadListView = function(isVideoTranscriptEnabled) {
|
||||
return new ActiveVideoUploadListView({
|
||||
concurrentUploadLimit: concurrentUploadLimit,
|
||||
postUrl: POST_URL,
|
||||
courseVideoSettingsButton: $courseVideoSettingsButton,
|
||||
videoSupportedFileFormats: videoSupportedFileFormats,
|
||||
videoUploadMaxFileSizeInGB: videoUploadMaxFileSizeInGB,
|
||||
activeTranscriptPreferences: {},
|
||||
videoTranscriptSettings: {
|
||||
transcript_preferences_handler_url: '',
|
||||
transcription_plans: {}
|
||||
},
|
||||
isVideoTranscriptEnabled: isVideoTranscriptEnabled
|
||||
});
|
||||
};
|
||||
|
||||
describe('ActiveVideoUploadListView', function() {
|
||||
beforeEach(function() {
|
||||
setFixtures(
|
||||
@@ -40,22 +60,8 @@ define(
|
||||
);
|
||||
TemplateHelpers.installTemplate('active-video-upload');
|
||||
TemplateHelpers.installTemplate('active-video-upload-list');
|
||||
this.postUrl = POST_URL;
|
||||
this.courseVideoSettingsButton = $('.course-video-settings-button');
|
||||
this.videoSupportedFileFormats = ['.mp4', '.mov'];
|
||||
this.videoUploadMaxFileSizeInGB = 5;
|
||||
this.view = new ActiveVideoUploadListView({
|
||||
concurrentUploadLimit: concurrentUploadLimit,
|
||||
postUrl: this.postUrl,
|
||||
courseVideoSettingsButton: this.courseVideoSettingsButton,
|
||||
videoSupportedFileFormats: this.videoSupportedFileFormats,
|
||||
videoUploadMaxFileSizeInGB: this.videoUploadMaxFileSizeInGB,
|
||||
activeTranscriptPreferences: {},
|
||||
videoTranscriptSettings: {
|
||||
transcript_preferences_handler_url: '',
|
||||
transcription_plans: {}
|
||||
}
|
||||
});
|
||||
$courseVideoSettingsButton = $('.course-video-settings-button');
|
||||
this.view = createActiveUploadListView(true);
|
||||
this.view.render();
|
||||
jasmine.Ajax.install();
|
||||
});
|
||||
@@ -94,9 +100,15 @@ define(
|
||||
});
|
||||
|
||||
it('shows course video settings pane when course video settings button is clicked', function() {
|
||||
expect($('.course-video-settings-container')).not.toExist();
|
||||
this.courseVideoSettingsButton.click();
|
||||
expect($('.course-video-settings-container')).toExist();
|
||||
$courseVideoSettingsButton.click();
|
||||
expect(this.view.courseVideoSettingsView).toBeDefined();
|
||||
expect(this.view.courseVideoSettingsView.$el.find('.course-video-settings-container')).toExist();
|
||||
});
|
||||
|
||||
it('should not initiate course video settings view when video transcript is disabled', function() {
|
||||
this.view = createActiveUploadListView(false);
|
||||
$courseVideoSettingsButton.click();
|
||||
expect(this.view.courseVideoSettingsView).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should not show a notification message if there are no active video uploads', function() {
|
||||
@@ -328,7 +340,7 @@ define(
|
||||
'Your file could not be uploaded',
|
||||
StringUtils.interpolate(
|
||||
'{fileName} is not in a supported file format. Supported file formats are {supportedFormats}.', // eslint-disable-line max-len
|
||||
{fileName: files[index].name, supportedFormats: self.videoSupportedFileFormats.join(' and ')} // eslint-disable-line max-len
|
||||
{fileName: files[index].name, supportedFormats: videoSupportedFileFormats.join(' and ')} // eslint-disable-line max-len
|
||||
)
|
||||
);
|
||||
});
|
||||
@@ -361,7 +373,7 @@ define(
|
||||
verifyUploadViewInfo(
|
||||
uploadView,
|
||||
'Your file could not be uploaded',
|
||||
'file.mp4 exceeds maximum size of ' + this.videoUploadMaxFileSizeInGB + ' GB.'
|
||||
'file.mp4 exceeds maximum size of ' + videoUploadMaxFileSizeInGB + ' GB.'
|
||||
);
|
||||
verifyA11YMessage(
|
||||
StringUtils.interpolate(
|
||||
@@ -431,7 +443,7 @@ define(
|
||||
expect(jasmine.Ajax.requests.count()).toEqual(caseInfo.numFiles);
|
||||
_.each(_.range(caseInfo.numFiles), function(index) {
|
||||
request = jasmine.Ajax.requests.at(index);
|
||||
expect(request.url).toEqual(self.postUrl);
|
||||
expect(request.url).toEqual(POST_URL);
|
||||
expect(request.method).toEqual('POST');
|
||||
expect(request.requestHeaders['Content-Type']).toEqual('application/json');
|
||||
expect(request.requestHeaders.Accept).toContain('application/json');
|
||||
|
||||
@@ -43,6 +43,7 @@ define([
|
||||
this.postUrl = options.postUrl;
|
||||
this.activeTranscriptPreferences = options.activeTranscriptPreferences;
|
||||
this.videoTranscriptSettings = options.videoTranscriptSettings;
|
||||
this.isVideoTranscriptEnabled = options.isVideoTranscriptEnabled;
|
||||
this.videoSupportedFileFormats = options.videoSupportedFileFormats;
|
||||
this.videoUploadMaxFileSizeInGB = options.videoUploadMaxFileSizeInGB;
|
||||
this.onFileUploadDone = options.onFileUploadDone;
|
||||
@@ -62,16 +63,18 @@ define([
|
||||
supportedVideoTypes: this.videoSupportedFileFormats.join(', ')
|
||||
}
|
||||
);
|
||||
this.listenTo(
|
||||
Backbone,
|
||||
'coursevideosettings:syncActiveTranscriptPreferences',
|
||||
this.syncActiveTranscriptPreferences
|
||||
);
|
||||
this.listenTo(
|
||||
Backbone,
|
||||
'coursevideosettings:destroyCourseVideoSettingsView',
|
||||
this.destroyCourseVideoSettingsView
|
||||
);
|
||||
if (this.isVideoTranscriptEnabled) {
|
||||
this.listenTo(
|
||||
Backbone,
|
||||
'coursevideosettings:syncActiveTranscriptPreferences',
|
||||
this.syncActiveTranscriptPreferences
|
||||
);
|
||||
this.listenTo(
|
||||
Backbone,
|
||||
'coursevideosettings:destroyCourseVideoSettingsView',
|
||||
this.destroyCourseVideoSettingsView
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
syncActiveTranscriptPreferences: function(activeTranscriptPreferences) {
|
||||
@@ -79,12 +82,14 @@ define([
|
||||
},
|
||||
|
||||
showCourseVideoSettingsView: function(event) {
|
||||
this.courseVideoSettingsView = new CourseVideoSettingsView({
|
||||
activeTranscriptPreferences: this.activeTranscriptPreferences,
|
||||
videoTranscriptSettings: this.videoTranscriptSettings
|
||||
});
|
||||
this.courseVideoSettingsView.render();
|
||||
event.stopPropagation();
|
||||
if (this.isVideoTranscriptEnabled) {
|
||||
this.courseVideoSettingsView = new CourseVideoSettingsView({
|
||||
activeTranscriptPreferences: this.activeTranscriptPreferences,
|
||||
videoTranscriptSettings: this.videoTranscriptSettings
|
||||
});
|
||||
this.courseVideoSettingsView.render();
|
||||
event.stopPropagation();
|
||||
}
|
||||
},
|
||||
|
||||
destroyCourseVideoSettingsView: function() {
|
||||
|
||||
@@ -337,6 +337,22 @@ function($, Backbone, _, gettext, moment, HtmlUtils, StringUtils, TranscriptSett
|
||||
},
|
||||
|
||||
updateSuccessResponseStatus: function(data) {
|
||||
var dateModified = data ? moment.utc(data.modified).format('ll') : '';
|
||||
|
||||
// Update last modified date
|
||||
if (dateModified) {
|
||||
HtmlUtils.setHtml(
|
||||
this.$el.find('.last-updated-text'),
|
||||
HtmlUtils.interpolateHtml(
|
||||
HtmlUtils.HTML('{lastUpdateText} {dateModified}'),
|
||||
{
|
||||
lastUpdateText: gettext('Last updated'),
|
||||
dateModified: dateModified
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
this.renderResponseStatus(gettext('Settings updated'), 'success');
|
||||
// Sync ActiveUploadListView with latest active plan.
|
||||
this.activeTranscriptionPlan = data;
|
||||
@@ -533,6 +549,8 @@ function($, Backbone, _, gettext, moment, HtmlUtils, StringUtils, TranscriptSett
|
||||
},
|
||||
|
||||
closeCourseVideoSettings: function() {
|
||||
// TODO: Slide out when closing settings pane. We may need to hide the view instead of destroying it.
|
||||
|
||||
// Trigger destroy transcript event.
|
||||
Backbone.trigger('coursevideosettings:destroyCourseVideoSettingsView');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user