Skip to content

Commit 4ebb6bb

Browse files
committed
API+File: a special object for the fileWrappers
1 parent 1fb999a commit 4ebb6bb

8 files changed

Lines changed: 56 additions & 29 deletions

File tree

api/file.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
"use strict";
2+
3+
(function() {
4+
5+
var
6+
extText = "srt-vtt",
7+
extMedia = "mp3-mp4-mpeg-ogg-wav-webm-mpg-weba-ogm"
8+
;
9+
10+
api.file = function( file ) {
11+
var
12+
name = file.name,
13+
ind = name.lastIndexOf( "." ),
14+
ext = name.substr( ind + 1 ).toLowerCase()
15+
;
16+
17+
this.dataFile = file;
18+
this.name = name.substr( 0, ind ),
19+
this.extension = ext;
20+
this.isText = extText.indexOf( ext ) > -1;
21+
this.isMedia = extMedia.indexOf( ext ) > -1;
22+
this.mediaType = file.type.substr( 0, file.type.indexOf( "/" ) );7
23+
};
24+
25+
api.file.prototype = {
26+
createURL: function() {
27+
this.url = URL.createObjectURL( this.dataFile );
28+
return this;
29+
},
30+
revokeURL: function() {
31+
URL.revokeObjectURL( this.url );
32+
return this;
33+
}
34+
};
35+
36+
})();

api/playlist.js

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,34 +22,24 @@ api.playlist = that = {
2222
var
2323
jqFilesAdded,
2424
fMediaWraps = [],
25-
fTextWraps = [],
26-
extText = "srt-vtt",
27-
extMedia = "mp3-mp4-mpeg-ogg-wav-webm-mpg-weba-ogm"
25+
fTextWraps = []
2826
;
2927

3028
$.each( files, function() {
3129
var
32-
name = this.name,
33-
ind = name.lastIndexOf( "." ),
34-
ext = name.substr( ind + 1 ).toLowerCase(),
35-
debug = "[" + this.type + "] [" + ext + "]",
36-
fileWrapper = {
37-
file: this,
38-
extension: ext,
39-
name: name.substr( 0, ind ),
40-
type: this.type.substr( 0, this.type.indexOf( "/" ) )
41-
}
30+
fileWrapper = new api.file( this ),
31+
ext = fileWrapper.extension,
32+
debug = "[" + fileWrapper.dataFile.type + "] [" + ext + "]"
4233
;
43-
44-
if ( extMedia.indexOf( ext ) > -1 ) {
34+
lg(fileWrapper)
35+
if ( fileWrapper.isMedia ) {
4536
fMediaWraps.push( fileWrapper );
46-
} else if ( extText.indexOf( ext ) > -1 ) {
37+
} else if ( fileWrapper.isText ) {
4738
fTextWraps.push( fileWrapper );
4839
} else {
4940
lg( "DROP: not supported: " + debug );
5041
return;
5142
}
52-
5343
lg( "DROP: supported: " + debug );
5444
});
5545

@@ -115,18 +105,18 @@ api.playlist = that = {
115105
} else {
116106
var fWrap = elFile.fileWrapper;
117107

118-
fWrap.url = URL.createObjectURL( fWrap.file );
108+
fWrap.createURL();
119109
if ( jqFileSelected.length && jqFileSelected[ 0 ] !== elFile ) {
120-
URL.revokeObjectURL( jqFileSelected[ 0 ].fileWrapper.url );
110+
jqFileSelected[ 0 ].fileWrapper.revokeURL();
121111
playlistUI.highlight( jqFileSelected, false );
122112
}
123113
playlistUI
124114
.highlight( elFile.jqThis, true )
125115
.updateIndex()
126116
;
127117
api.subtitles.disable();
128-
if ( fWrap.type !== fileWrapper.type ) {
129-
api.visualisations.toggle( fWrap.type === "audio" );
118+
if ( fWrap.mediaType !== fileWrapper.mediaType ) {
119+
api.visualisations.toggle( fWrap.mediaType === "audio" );
130120
fileWrapper = fWrap;
131121
}
132122
if ( !noScroll ) {

api/subtitles.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ api.subtitles = that = {
9393
src: blob.url,
9494
srclang: "en",
9595
label: "Subtitles " + ( tracksLen + 1 ),
96-
name: fileWrapper.file.name,
96+
name: fileWrapper.dataFile.name,
9797
})
9898
.appendTo( dom.screenVideo )
9999
.on( "load", ( function( len ) {
@@ -111,7 +111,7 @@ api.subtitles = that = {
111111

112112
// Add file name in subtitles list
113113
$( "<li>", {
114-
text: fileWrapper.file.name,
114+
text: fileWrapper.dataFile.name,
115115
"class": "selected"
116116
})
117117
.appendTo( jqListSubtitles )
@@ -135,7 +135,7 @@ api.subtitles = that = {
135135
}
136136
};
137137

138-
reader.readAsText( fileWrapper.file );
138+
reader.readAsText( fileWrapper.dataFile );
139139

140140
return that;
141141
},

api/video.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ api.video = that = {
1919
unLoad: function() {
2020
isLoaded = false;
2121
jqVideo.attr( "src", "" );
22-
if ( api.playlist.selectedFile().type === "video" ) {
22+
if ( api.playlist.selectedFile().mediaType === "video" ) {
2323
jqVideoThumb.attr( "src", "" );
2424
}
2525
return that;
2626
},
2727
load: function( url ) {
2828
oldSource = url;
2929
jqVideo.attr( "src", url );
30-
jqVideoThumb.attr( "src", api.playlist.selectedFile().type === "video" ? url : "" );
30+
jqVideoThumb.attr( "src", api.playlist.selectedFile().mediaType === "video" ? url : "" );
3131
isLoading = true;
3232
return that;
3333
},

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@
196196

197197
<!-- API (no DOM treatment here) -->
198198
<script src="api/main.js"></script>
199+
<script src="api/file.js"></script>
199200
<script src="api/fullscreen.js"></script>
200201
<script src="api/keyboard.js"></script>
201202
<script src="api/playlist.js"></script>

player/events/thumbnail.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ jqSliderTime
5252
"data-tooltip-content",
5353
utils.secondsToString( sec )
5454
);
55-
if ( api.playlist.selectedFile().type === "video" ) {
55+
if ( api.playlist.selectedFile().mediaType === "video" ) {
5656
loading( true );
5757
if ( elVideo.paused ) {
5858
elVideo.play();

player/player-ui.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ window.playerUI = that = {
5959
var file = api.playlist.selectedFile();
6060
dom.fileplayer
6161
.removeClass( "audio video" )
62-
.addClass( "playing " + file.type )
62+
.addClass( "playing " + file.mediaType )
6363
;
6464
dom.screenFilenameText
6565
.add( dom.title )

playlist/playlist-ui.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ window.playlistUI = that = {
180180
"<a class='file' href='/' draggable='true'>" +
181181
"<div class='content textOverflow'>"+
182182
"<i class='fa fa-fw fa-" +
183-
( this.type === "audio" ? "music" : "film" ) +
183+
( this.mediaType === "audio" ? "music" : "film" ) +
184184
"'></i>" +
185185
"<span>" + this.name + "</span>" +
186186
"</div>" +

0 commit comments

Comments
 (0)