1+ var oldfileList = document . getElementById ( "exercise_oldfileList" ) . value . split ( ' ' )
2+ var oldfilesName = transferData ( "exercise_oldfileList" )
3+ var oldfilesNameBackup = oldfilesName . slice ( )
4+ var oldfilesHashName = transferData ( "exercise_ownerships_res_name" )
5+ var totalList = oldfilesName . slice ( )
6+ var table = document . getElementById ( "tablelist" )
7+ var path = "/uploads/resource_file/"
8+ document . getElementById ( "exercise_fileList" ) . value = totalList . toString ( )
9+
10+ function applyHideAndShow ( ) {
11+ if ( totalList . length == 0 ) {
12+ $ ( filelist ) . addClass ( "hidden" ) ;
13+ }
14+ else {
15+ $ ( function ( ) {
16+ $ ( '#filelist' ) . removeClass ( 'hidden' )
17+ } )
18+ }
19+ }
20+
21+
22+ function transferData ( tag ) {
23+ var data = [ ]
24+ oldfileList = document . getElementById ( tag ) . value . split ( ' ' )
25+ for ( var i = 0 ; i < oldfileList . length ; i ++ ) {
26+ if ( oldfileList [ i ] . replace ( / \s / g, '' ) . length ) {
27+ data . push ( oldfileList [ i ] )
28+ }
29+ }
30+ return data
31+ }
32+
33+
34+ function removeEle ( arr , ele ) {
35+ if ( ! Array . isArray ( arr ) ) {
36+ arr = arr . split ( "," )
37+ }
38+ for ( var i = 0 ; i < arr . length ; i ++ ) {
39+ if ( arr [ i ] == ele . trim ( ) ) {
40+ arr . splice ( i , 1 )
41+ }
42+ }
43+ return arr
44+ }
45+
46+
47+ function deleteTableRow ( row ) {
48+ var count = $ ( '#tablelist tr' ) . length ;
49+ if ( row == - 1 ) {
50+ for ( var i = 1 ; i < count ; i ++ ) {
51+ table . deleteRow ( 1 )
52+ }
53+ }
54+ else {
55+ var entireRow = document . getElementById ( row + "row" )
56+ entireRow . remove ( )
57+ }
58+ }
59+
60+
61+
62+ function isImage ( filename ) {
63+ var filename = / [ ^ . ] + $ / . exec ( filename )
64+ if ( String ( filename ) . match ( / ( j p g | j p e g | p n g | g i f ) / g) )
65+ return true
66+ return false
67+ }
68+
69+
70+ function addButtonListener ( ) {
71+ document . getElementById ( "tablelist" ) . addEventListener ( 'click' , function ( e ) {
72+ if ( e . target && e . target . id != null && e . target . id != "" && e . target . id . length <= 2 ) {
73+ var id = parseInt ( e . target . id . charAt ( 0 ) )
74+ var filename = document . getElementById ( id + "name" ) . innerHTML . trim ( )
75+ totalList = removeEle ( totalList , filename )
76+ if ( oldfilesName . includes ( filename ) ) {
77+ oldfilesName = removeEle ( oldfilesName , filename )
78+ }
79+ deleteTableRow ( id )
80+ document . getElementById ( "exercise_fileList" ) . value = totalList . toString ( )
81+ applyHideAndShow ( )
82+ }
83+ } ) ;
84+ }
85+
86+
87+ function checkRes ( fileName ) {
88+ var a = oldfilesNameBackup . indexOf ( fileName )
89+ if ( a != - 1 ) {
90+ return oldfilesHashName [ a ]
91+ }
92+ return null
93+ }
94+
95+
96+ function createTextAndButton ( fileName , SizeList ) {
97+ deleteTableRow ( - 1 )
98+ for ( var i = 0 ; i < fileName . length ; i ++ ) {
99+ var exist = checkRes ( fileName [ i ] )
100+ var row = table . insertRow ( ) ;
101+ row . setAttribute ( "id" , ( i + 1 ) + "row" )
102+ var imageOrNot = isImage ( fileName [ i ] )
103+ // Type info
104+ var cell0 = row . insertCell ( 0 )
105+ if ( imageOrNot ) {
106+ cell0 . innerHTML = "Image"
107+ }
108+ else {
109+ cell0 . innerHTML = "File"
110+ }
111+ // Thumbnail display
112+ var cell1 = row . insertCell ( 1 )
113+ if ( exist != null && imageOrNot ) {
114+ cell1 . innerHTML = "<img class=\"img\" src=\"" + path + exist + "\">"
115+ }
116+ else if ( exist != null && ! imageOrNot ) {
117+ cell1 . innerHTML = "Not showable"
118+ }
119+ else {
120+ cell1 . innerHTML = "Unknown"
121+ }
122+ //Name text
123+ var cell2 = row . insertCell ( 2 )
124+ cell2 . setAttribute ( "id" , ( i + 1 ) + "name" )
125+ cell2 . innerHTML = fileName [ i ]
126+ //Pixel text
127+ var cell3 = row . insertCell ( 3 )
128+ tempsrc = path + oldfilesHashName [ i ]
129+ if ( exist != null && imageOrNot ) {
130+ var img = new Image ( )
131+ img . src = tempsrc
132+ cell3 . innerHTML = img . width + 'x' + img . height + " pixels"
133+ }
134+ else if ( exist != null && ! imageOrNot ) {
135+ //wait
136+ }
137+ else if ( exist == null && imageOrNot ) {
138+ cell3 . innerHTML = "0x0 pixels"
139+ } else if ( exist == null && ! imageOrNot ) {
140+ var index = i - oldfilesName . length
141+ cell3 . innerHTML = SizeList [ index ] + " bytes"
142+ }
143+ //Mark icon
144+ var cell4 = row . insertCell ( 4 )
145+ if ( exist != null ) {
146+ cell4 . innerHTML = "<a href=\"#\"> <span class=\"glyphicon glyphicon-ok iconpadding fa-lg\"></span> </a>"
147+ } else {
148+ cell4 . innerHTML = "<a > <span class=\"glyphicon glyphicon-remove iconpadding fa-lg\"></span> </a>"
149+ }
150+ //Delete Button
151+ var cell5 = row . insertCell ( 5 )
152+ cell5 . innerHTML = "<button class=\"btn btn-link glyphicon glyphicon-trash fa-lg\" id=" + ( i + 1 ) + " type=\"button\"></button>"
153+ }
154+ addButtonListener ( )
155+ }
156+
157+
158+ // upload button
159+ $ ( "#exercise_files" ) . bind ( "change" , function ( e )
160+ {
161+ totalList = oldfilesName . slice ( )
162+ var SizeList = [ ]
163+ var file = document . getElementById ( "exercise_files" )
164+ for ( var i = 0 ; i < file . files . length ; i ++ ) {
165+ filename = file . files [ i ] . name
166+ if ( totalList . indexOf ( filename ) === - 1 ) {
167+ totalList . push ( filename . trim ( ) )
168+ SizeList . push ( file . files [ i ] . size )
169+ }
170+ }
171+ document . getElementById ( "exercise_fileList" ) . value = totalList . toString ( )
172+ applyHideAndShow ( )
173+ createTextAndButton ( totalList , SizeList )
174+ } ) ;
175+
176+
177+ applyHideAndShow ( )
178+ createTextAndButton ( oldfilesName , "old" )
0 commit comments