Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
douban-api-proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
douban-api-proxy
Commits
2a78a02e
Commit
2a78a02e
authored
Sep 17, 2017
by
OzzieIsaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code cosmetics
parent
34e9ef35
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
171 additions
and
175 deletions
+171
-175
archive.js
cps/static/js/archive.js
+48
-40
io.js
cps/static/js/io.js
+4
-4
kthoom.js
cps/static/js/kthoom.js
+109
-121
untar.js
cps/static/js/untar.js
+10
-10
No files found.
cps/static/js/archive.js
View file @
2a78a02e
...
...
@@ -15,7 +15,7 @@ bitjs.archive = bitjs.archive || {};
// ===========================================================================
// Stolen from Closure because it's the best way to do Java-like inheritance.
bitjs
.
base
=
function
(
me
,
opt
_m
ethodName
,
var_args
)
{
bitjs
.
base
=
function
(
me
,
opt
M
ethodName
,
var_args
)
{
var
caller
=
arguments
.
callee
.
caller
;
if
(
caller
.
superClass_
)
{
// This is a constructor. Call the superclass constructor.
...
...
@@ -27,10 +27,10 @@ bitjs.archive = bitjs.archive || {};
var
foundCaller
=
false
;
for
(
var
ctor
=
me
.
constructor
;
ctor
;
ctor
=
ctor
.
superClass_
&&
ctor
.
superClass_
.
constructor
)
{
if
(
ctor
.
prototype
[
opt
_m
ethodName
]
===
caller
)
{
if
(
ctor
.
prototype
[
opt
M
ethodName
]
===
caller
)
{
foundCaller
=
true
;
}
else
if
(
foundCaller
)
{
return
ctor
.
prototype
[
opt
_m
ethodName
].
apply
(
me
,
args
);
return
ctor
.
prototype
[
opt
M
ethodName
].
apply
(
me
,
args
);
}
}
...
...
@@ -38,12 +38,12 @@ bitjs.archive = bitjs.archive || {};
// then one of two things happened:
// 1) The caller is an instance method.
// 2) This method was not called by the right caller.
if
(
me
[
opt
_m
ethodName
]
===
caller
)
{
return
me
.
constructor
.
prototype
[
opt
_m
ethodName
].
apply
(
me
,
args
);
if
(
me
[
opt
M
ethodName
]
===
caller
)
{
return
me
.
constructor
.
prototype
[
opt
M
ethodName
].
apply
(
me
,
args
);
}
else
{
throw
Error
(
'goog.base called from a method of one name '
+
'to a method of a different name'
);
"goog.base called from a method of one name "
+
"to a method of a different name"
);
}
};
bitjs
.
inherits
=
function
(
childCtor
,
parentCtor
)
{
...
...
@@ -75,12 +75,12 @@ bitjs.archive = bitjs.archive || {};
* The UnarchiveEvent types.
*/
bitjs
.
archive
.
UnarchiveEvent
.
Type
=
{
START
:
'start'
,
PROGRESS
:
'progress'
,
EXTRACT
:
'extract'
,
FINISH
:
'finish'
,
INFO
:
'info'
,
ERROR
:
'error'
START
:
"start"
,
PROGRESS
:
"progress"
,
EXTRACT
:
"extract"
,
FINISH
:
"finish"
,
INFO
:
"info"
,
ERROR
:
"error"
};
/**
...
...
@@ -188,10 +188,10 @@ bitjs.archive = bitjs.archive || {};
* Base class for all Unarchivers.
*
* @param {ArrayBuffer} arrayBuffer The Array Buffer.
* @param {string} opt
_p
athToBitJS Optional string for where the BitJS files are located.
* @param {string} opt
P
athToBitJS Optional string for where the BitJS files are located.
* @constructor
*/
bitjs
.
archive
.
Unarchiver
=
function
(
arrayBuffer
,
opt
_p
athToBitJS
)
{
bitjs
.
archive
.
Unarchiver
=
function
(
arrayBuffer
,
opt
P
athToBitJS
)
{
/**
* The ArrayBuffer object.
* @type {ArrayBuffer}
...
...
@@ -204,7 +204,7 @@ bitjs.archive = bitjs.archive || {};
* @type {string}
* @private
*/
this
.
pathToBitJS_
=
opt
_pathToBitJS
||
''
;
this
.
pathToBitJS_
=
opt
PathToBitJS
||
""
;
/**
* A map from event type to an array of listeners.
...
...
@@ -229,7 +229,7 @@ bitjs.archive = bitjs.archive || {};
* @protected.
*/
bitjs
.
archive
.
Unarchiver
.
prototype
.
getScriptFileName
=
function
()
{
throw
'Subclasses of AbstractUnarchiver must overload getScriptFileName()'
;
throw
"Subclasses of AbstractUnarchiver must overload getScriptFileName()"
;
};
/**
...
...
@@ -240,7 +240,7 @@ bitjs.archive = bitjs.archive || {};
*/
bitjs
.
archive
.
Unarchiver
.
prototype
.
addEventListener
=
function
(
type
,
listener
)
{
if
(
type
in
this
.
listeners_
)
{
if
(
this
.
listeners_
[
type
].
indexOf
(
listener
)
==
-
1
)
{
if
(
this
.
listeners_
[
type
].
indexOf
(
listener
)
==
=
-
1
)
{
this
.
listeners_
[
type
].
push
(
listener
);
}
}
...
...
@@ -255,7 +255,7 @@ bitjs.archive = bitjs.archive || {};
bitjs
.
archive
.
Unarchiver
.
prototype
.
removeEventListener
=
function
(
type
,
listener
)
{
if
(
type
in
this
.
listeners_
)
{
var
index
=
this
.
listeners_
[
type
].
indexOf
(
listener
);
if
(
index
!=
-
1
)
{
if
(
index
!=
=
-
1
)
{
this
.
listeners_
[
type
].
splice
(
index
,
1
);
}
}
...
...
@@ -270,8 +270,10 @@ bitjs.archive = bitjs.archive || {};
bitjs
.
archive
.
Unarchiver
.
prototype
.
handleWorkerEvent_
=
function
(
e
)
{
if
((
e
instanceof
bitjs
.
archive
.
UnarchiveEvent
||
e
.
type
)
&&
this
.
listeners_
[
e
.
type
]
instanceof
Array
)
{
this
.
listeners_
[
e
.
type
].
forEach
(
function
(
listener
)
{
listener
(
e
)
});
if
(
e
.
type
==
bitjs
.
archive
.
UnarchiveEvent
.
Type
.
FINISH
)
{
this
.
listeners_
[
e
.
type
].
forEach
(
function
(
listener
)
{
listener
(
e
);
});
if
(
e
.
type
===
bitjs
.
archive
.
UnarchiveEvent
.
Type
.
FINISH
)
{
this
.
worker_
.
terminate
();
}
}
else
{
...
...
@@ -289,12 +291,12 @@ bitjs.archive = bitjs.archive || {};
this
.
worker_
=
new
Worker
(
scriptFileName
);
this
.
worker_
.
onerror
=
function
(
e
)
{
console
.
log
(
'Worker error: message = '
+
e
.
message
);
console
.
log
(
"Worker error: message = "
+
e
.
message
);
throw
e
;
};
this
.
worker_
.
onmessage
=
function
(
e
)
{
if
(
typeof
e
.
data
==
'string'
)
{
if
(
typeof
e
.
data
==
"string"
)
{
// Just log any strings the workers pump our way.
console
.
log
(
e
.
data
);
}
else
{
...
...
@@ -323,32 +325,38 @@ bitjs.archive = bitjs.archive || {};
* @extends {bitjs.archive.Unarchiver}
* @constructor
*/
bitjs
.
archive
.
Unzipper
=
function
(
arrayBuffer
,
opt
_p
athToBitJS
)
{
bitjs
.
base
(
this
,
arrayBuffer
,
opt
_p
athToBitJS
);
bitjs
.
archive
.
Unzipper
=
function
(
arrayBuffer
,
opt
P
athToBitJS
)
{
bitjs
.
base
(
this
,
arrayBuffer
,
opt
P
athToBitJS
);
};
bitjs
.
inherits
(
bitjs
.
archive
.
Unzipper
,
bitjs
.
archive
.
Unarchiver
);
bitjs
.
archive
.
Unzipper
.
prototype
.
getScriptFileName
=
function
()
{
return
'unzip.js'
};
bitjs
.
archive
.
Unzipper
.
prototype
.
getScriptFileName
=
function
()
{
return
"unzip.js"
;
};
/**
* Unrarrer
* @extends {bitjs.archive.Unarchiver}
* @constructor
*/
bitjs
.
archive
.
Unrarrer
=
function
(
arrayBuffer
,
opt
_p
athToBitJS
)
{
bitjs
.
base
(
this
,
arrayBuffer
,
opt
_p
athToBitJS
);
bitjs
.
archive
.
Unrarrer
=
function
(
arrayBuffer
,
opt
P
athToBitJS
)
{
bitjs
.
base
(
this
,
arrayBuffer
,
opt
P
athToBitJS
);
};
bitjs
.
inherits
(
bitjs
.
archive
.
Unrarrer
,
bitjs
.
archive
.
Unarchiver
);
bitjs
.
archive
.
Unrarrer
.
prototype
.
getScriptFileName
=
function
()
{
return
'unrar.js'
};
bitjs
.
archive
.
Unrarrer
.
prototype
.
getScriptFileName
=
function
()
{
return
"unrar.js"
;
};
/**
* Untarrer
* @extends {bitjs.archive.Unarchiver}
* @constructor
*/
bitjs
.
archive
.
Untarrer
=
function
(
arrayBuffer
,
opt
_p
athToBitJS
)
{
bitjs
.
base
(
this
,
arrayBuffer
,
opt
_p
athToBitJS
);
bitjs
.
archive
.
Untarrer
=
function
(
arrayBuffer
,
opt
P
athToBitJS
)
{
bitjs
.
base
(
this
,
arrayBuffer
,
opt
P
athToBitJS
);
};
bitjs
.
inherits
(
bitjs
.
archive
.
Untarrer
,
bitjs
.
archive
.
Unarchiver
);
bitjs
.
archive
.
Untarrer
.
prototype
.
getScriptFileName
=
function
()
{
return
'untar.js'
};
bitjs
.
archive
.
Untarrer
.
prototype
.
getScriptFileName
=
function
()
{
return
"untar.js"
;
};
})();
cps/static/js/io.js
View file @
2a78a02e
...
...
@@ -417,14 +417,14 @@ bitjs.io = bitjs.io || {};
*/
bitjs
.
io
.
ByteBuffer
.
prototype
.
writeNumber
=
function
(
num
,
numBytes
)
{
if
(
numBytes
<
1
)
{
throw
'Trying to write into too few bytes: '
+
numBytes
;
throw
"Trying to write into too few bytes: "
+
numBytes
;
}
if
(
num
<
0
)
{
throw
'Trying to write a negative number ('
+
num
+
') as an unsigned number to an ArrayBuffer'
;
throw
"Trying to write a negative number ("
+
num
+
") as an unsigned number to an ArrayBuffer"
;
}
if
(
num
>
(
Math
.
pow
(
2
,
numBytes
*
8
)
-
1
))
{
throw
'Trying to write '
+
num
+
' into only '
+
numBytes
+
' bytes'
;
throw
"Trying to write "
+
num
+
" into only "
+
numBytes
+
" bytes"
;
}
// Roll 8-bits at a time into an array of bytes.
...
...
cps/static/js/kthoom.js
View file @
2a78a02e
...
...
@@ -17,9 +17,13 @@
*/
if
(
window
.
opera
)
{
window
.
console
.
log
=
function
(
str
)
{
opera
.
postError
(
str
);};
window
.
console
.
log
=
function
(
str
)
{
opera
.
postError
(
str
);
};
}
var
kthoom
;
// gets the element with the given id
function
getElem
(
id
)
{
if
(
document
.
documentElement
.
querySelector
)
{
...
...
@@ -31,7 +35,7 @@ function getElem(id) {
}
if
(
window
.
kthoom
===
undefined
)
{
var
kthoom
=
{};
kthoom
=
{};
}
// key codes
...
...
@@ -58,27 +62,23 @@ var imageFiles = [];
var
imageFilenames
=
[];
var
totalImages
=
0
;
var
lastCompletion
=
0
;
var
library
=
{
allBooks
:
[],
currentBookNum
:
0
,
};
var
hflip
=
false
,
vflip
=
false
,
fitMode
=
kthoom
.
Key
.
B
;
var
canKeyNext
=
true
,
canKeyPrev
=
true
;
kthoom
.
saveSettings
=
function
()
{
localStorage
.
kthoom
_s
ettings
=
JSON
.
stringify
({
localStorage
.
kthoom
S
ettings
=
JSON
.
stringify
({
rotateTimes
:
kthoom
.
rotateTimes
,
hflip
:
hflip
,
vflip
:
vflip
,
fitMode
:
fitMode
});
}
}
;
kthoom
.
loadSettings
=
function
()
{
try
{
if
(
localStorage
.
kthoom
_s
ettings
.
length
<
10
)
return
;
var
s
=
JSON
.
parse
(
localStorage
.
kthoom
_s
ettings
);
if
(
localStorage
.
kthoom
S
ettings
.
length
<
10
)
return
;
var
s
=
JSON
.
parse
(
localStorage
.
kthoom
S
ettings
);
kthoom
.
rotateTimes
=
s
.
rotateTimes
;
hflip
=
s
.
hflip
;
vflip
=
s
.
vflip
;
...
...
@@ -88,6 +88,36 @@ kthoom.loadSettings = function() {
}
}
var
createURLFromArray
=
function
(
array
,
mimeType
)
{
var
offset
=
array
.
byteOffset
,
len
=
array
.
byteLength
;
var
bb
,
url
;
var
blob
;
// TODO: Move all this browser support testing to a common place
// and do it just once.
// Blob constructor, see http://dev.w3.org/2006/webapi/FileAPI/#dfn-Blob.
if
(
typeof
Blob
==
"function"
)
{
blob
=
new
Blob
([
array
],
{
type
:
mimeType
});
}
else
{
throw
"Browser support for Blobs is missing."
}
if
(
blob
.
slice
)
{
blob
=
blob
.
slice
(
offset
,
offset
+
len
,
mimeType
);
}
else
{
throw
"Browser support for Blobs is missing."
}
if
((
typeof
URL
!=
"function"
&&
typeof
URL
!=
"object"
)
||
typeof
URL
.
createObjectURL
!=
"function"
)
{
throw
"Browser support for Object URLs is missing"
;
}
return
URL
.
createObjectURL
(
blob
);
}
// Stores an image filename and its data: URI.
// TODO: investigate if we really need to store as base64 (leave off ;base64 and just
// non-safe URL characters are encoded as %xx ?)
...
...
@@ -95,9 +125,9 @@ kthoom.loadSettings = function() {
kthoom
.
ImageFile
=
function
(
file
)
{
this
.
filename
=
file
.
filename
;
var
fileExtension
=
file
.
filename
.
split
(
"."
).
pop
().
toLowerCase
();
var
mimeType
=
fileExtension
==
"png"
?
"image/png"
:
var
mimeType
=
fileExtension
==
=
"png"
?
"image/png"
:
(
fileExtension
===
"jpg"
||
fileExtension
===
"jpeg"
)
?
"image/jpeg"
:
fileExtension
===
"gif"
?
"image/gif"
:
undefined
;
fileExtension
===
"gif"
?
"image/gif"
:
null
;
this
.
dataURI
=
createURLFromArray
(
file
.
fileData
,
mimeType
);
this
.
data
=
file
;
};
...
...
@@ -189,26 +219,26 @@ kthoom.initProgressMeter = function() {
pdiv
.
appendChild
(
svg
);
svg
.
onclick
=
function
(
e
)
{
for
(
var
x
=
pdiv
,
l
=
0
;
x
!=
document
.
documentElement
;
x
=
x
.
parentNode
)
l
+=
x
.
offsetLeft
;
var
page
=
Math
.
max
(
1
,
Math
.
ceil
(((
e
.
clientX
-
l
)
/
pdiv
.
offsetWidth
)
*
totalImages
))
-
1
;
for
(
var
x
=
pdiv
,
l
=
0
;
x
!=
=
document
.
documentElement
;
x
=
x
.
parentNode
)
l
+=
x
.
offsetLeft
;
var
page
=
Math
.
max
(
1
,
Math
.
ceil
(((
e
.
clientX
-
l
)
/
pdiv
.
offsetWidth
)
*
totalImages
))
-
1
;
currentImage
=
page
;
updatePage
();
};
}
kthoom
.
setProgressMeter
=
function
(
pct
,
opt
_l
abel
)
{
var
pct
=
(
pct
*
100
);
var
part
=
1
/
totalImages
;
var
remain
=
((
pct
-
lastCompletion
)
/
100
)
/
part
;
kthoom
.
setProgressMeter
=
function
(
pct
,
opt
L
abel
)
{
pct
=
(
pct
*
100
);
var
part
=
1
/
totalImages
;
var
remain
=
((
pct
-
lastCompletion
)
/
100
)
/
part
;
var
fract
=
Math
.
min
(
1
,
remain
);
var
smartpct
=
((
imageFiles
.
length
/
totalImages
)
+
fract
*
part
)
*
100
;
if
(
totalImages
==
0
)
smartpct
=
pct
;
var
smartpct
=
((
imageFiles
.
length
/
totalImages
)
+
(
fract
*
part
)
)
*
100
;
if
(
totalImages
==
=
0
)
smartpct
=
pct
;
// + Math.min((pct - lastCompletion), 100/totalImages * 0.9 + (pct - lastCompletion - 100/totalImages)/2, 100/totalImages);
var
oldval
=
parseFloat
(
getElem
(
"meter"
).
getAttribute
(
"width"
));
if
(
isNaN
(
oldval
))
oldval
=
0
;
var
weight
=
0.5
;
smartpct
=
(
weight
*
smartpct
+
(
1
-
weight
)
*
oldval
);
smartpct
=
((
weight
*
smartpct
)
+
((
1
-
weight
)
*
oldval
)
);
if
(
pct
==
100
)
smartpct
=
100
;
if
(
!
isNaN
(
smartpct
))
{
...
...
@@ -218,19 +248,18 @@ kthoom.setProgressMeter = function(pct, opt_label) {
while
(
title
.
firstChild
)
title
.
removeChild
(
title
.
firstChild
);
var
labelText
=
pct
.
toFixed
(
2
)
+
"% "
+
imageFiles
.
length
+
"/"
+
totalImages
+
""
;
if
(
opt_l
abel
)
{
labelText
=
opt
_l
abel
+
" "
+
labelText
;
if
(
optL
abel
)
{
labelText
=
opt
L
abel
+
" "
+
labelText
;
}
title
.
appendChild
(
document
.
createTextNode
(
labelText
));
getElem
(
"meter2"
).
setAttribute
(
"width"
,
100
*
(
totalImages
==
0
?
0
:
((
currentImage
+
1
)
/
totalImages
))
+
"%"
);
100
*
(
totalImages
==
0
?
0
:
((
currentImage
+
1
)
/
totalImages
))
+
"%"
);
var
title
=
getElem
(
"page"
);
while
(
title
.
firstChild
)
title
.
removeChild
(
title
.
firstChild
);
title
.
appendChild
(
document
.
createTextNode
(
(
currentImage
+
1
)
+
'/'
+
totalImages
));
if
(
pct
>
0
)
{
//getElem('nav').className = '';
getElem
(
"progress"
).
className
=
''
;
...
...
@@ -284,34 +313,6 @@ function loadFromArrayBuffer(ab) {
alert
(
"Some error"
);
}
}
var
createURLFromArray
=
function
(
array
,
mimeType
)
{
var
offset
=
array
.
byteOffset
,
len
=
array
.
byteLength
;
var
bb
,
url
;
var
blob
;
// TODO: Move all this browser support testing to a common place
// and do it just once.
// Blob constructor, see http://dev.w3.org/2006/webapi/FileAPI/#dfn-Blob.
if
(
typeof
Blob
==
"function"
)
{
blob
=
new
Blob
([
array
],
{
type
:
mimeType
});
}
else
{
throw
"Browser support for Blobs is missing."
}
if
(
blob
.
slice
)
{
blob
=
blob
.
slice
(
offset
,
offset
+
len
,
mimeType
);
}
else
{
throw
"Browser support for Blobs is missing."
}
if
((
typeof
URL
!=
"function"
&&
typeof
URL
!=
"object"
)
||
typeof
URL
.
createObjectURL
!=
"function"
)
{
throw
"Browser support for Object URLs is missing"
;
}
return
URL
.
createObjectURL
(
blob
);
}
function
updatePage
()
{
...
...
@@ -319,7 +320,7 @@ function updatePage() {
while
(
title
.
firstChild
)
title
.
removeChild
(
title
.
firstChild
);
title
.
appendChild
(
document
.
createTextNode
(
(
currentImage
+
1
)
+
"/"
+
totalImages
));
getElem
(
"meter2"
).
setAttribute
(
"width"
,
getElem
(
'meter2'
).
setAttribute
(
'width'
,
100
*
(
totalImages
==
0
?
0
:
((
currentImage
+
1
)
/
totalImages
))
+
"%"
);
if
(
imageFiles
[
currentImage
])
{
setImage
(
imageFiles
[
currentImage
].
dataURI
);
...
...
@@ -414,56 +415,42 @@ function setImage(url) {
function
showPrevPage
()
{
currentImage
--
;
if
(
currentImage
<
0
)
{
if
(
library
.
allBooks
.
length
==
1
)
{
currentImage
=
imageFiles
.
length
-
1
;
}
else
if
(
library
.
currentBookNum
>
0
)
{
loadPrevBook
();
}
else
{
// Freeze on the current page.
currentImage
++
;
return
;
}
}
}
else
{
updatePage
();
}
}
function
showNextPage
()
{
currentImage
++
;
if
(
currentImage
>=
Math
.
max
(
totalImages
,
imageFiles
.
length
))
{
if
(
library
.
allBooks
.
length
==
1
)
{
currentImage
=
0
;
}
else
if
(
library
.
currentBookNum
<
library
.
allBooks
.
length
-
1
)
{
loadNextBook
();
}
else
{
// Freeze on the current page.
currentImage
--
;
return
;
}
}
}
else
{
updatePage
();
}
}
function
updateScale
(
clear
)
{
var
mainImageStyle
=
getElem
(
"mainImage"
).
style
;
mainImageStyle
.
width
=
""
;
mainImageStyle
.
height
=
""
;
mainImageStyle
.
maxWidth
=
""
;
mainImageStyle
.
maxHeight
=
""
;
var
mainImageStyle
=
getElem
(
'mainImage'
).
style
;
mainImageStyle
.
width
=
''
;
mainImageStyle
.
height
=
''
;
mainImageStyle
.
maxWidth
=
''
;
mainImageStyle
.
maxHeight
=
''
;
var
maxheight
=
innerHeight
-
15
;
if
(
!
/main/
.
test
(
getElem
(
"titlebar"
).
className
))
{
if
(
!
/main/
.
test
(
getElem
(
'titlebar'
).
className
))
{
maxheight
-=
25
;
}
if
(
clear
||
fitMode
==
kthoom
.
Key
.
N
)
{
}
else
if
(
fitMode
==
kthoom
.
Key
.
B
)
{
mainImageStyle
.
maxWidth
=
"100%"
;
mainImageStyle
.
maxHeight
=
maxheight
+
"px"
;
mainImageStyle
.
maxWidth
=
'100%'
;
mainImageStyle
.
maxHeight
=
maxheight
+
'px'
;
}
else
if
(
fitMode
==
kthoom
.
Key
.
H
)
{
mainImageStyle
.
height
=
maxheight
+
"px"
;
mainImageStyle
.
height
=
maxheight
+
'px'
;
}
else
if
(
fitMode
==
kthoom
.
Key
.
W
)
{
mainImageStyle
.
width
=
"100%"
;
mainImageStyle
.
width
=
'100%'
;
}
kthoom
.
saveSettings
();
}
...
...
@@ -471,8 +458,9 @@ function updateScale(clear) {
function
keyHandler
(
evt
)
{
var
code
=
evt
.
keyCode
;
if
(
getComputedStyle
(
getElem
(
"progress"
)).
display
==
"none"
)
return
;
canKeyNext
=
((
document
.
body
.
offsetWidth
+
document
.
body
.
scrollLeft
)
/
document
.
body
.
scrollWidth
)
>=
1
;
if
(
$
(
"#progress"
).
css
(
'display'
)
==
"none"
)
return
;
canKeyNext
=
((
$
(
"body"
).
css
(
"offsetWidth"
)
+
$
(
"body"
).
css
(
"scrollLeft"
))
/
$
(
"body"
).
css
(
"scrollWidth"
))
>=
1
;
canKeyPrev
=
(
scrollX
<=
0
);
if
(
evt
.
ctrlKey
||
evt
.
shiftKey
||
evt
.
metaKey
)
return
;
...
...
@@ -561,8 +549,8 @@ function init(filename) {
$
(
"#mainImage"
).
click
(
function
(
evt
)
{
// Firefox does not support offsetX/Y so we have to manually calculate
// where the user clicked in the image.
var
mainContentWidth
=
getElem
(
"mainContent"
).
clientWidth
;
var
mainContentHeight
=
getElem
(
"mainContent"
).
clientHeight
;
var
mainContentWidth
=
$
(
"#mainContent"
).
width
()
;
var
mainContentHeight
=
$
(
"#mainContent"
).
height
()
;
var
comicWidth
=
evt
.
target
.
clientWidth
;
var
comicHeight
=
evt
.
target
.
clientHeight
;
var
offsetX
=
(
mainContentWidth
-
comicWidth
)
/
2
;
...
...
cps/static/js/untar.js
View file @
2a78a02e
...
...
@@ -42,7 +42,7 @@ var postProgress = function() {
var
readCleanString
=
function
(
bstr
,
numBytes
)
{
var
str
=
bstr
.
readString
(
numBytes
);
var
zIndex
=
str
.
indexOf
(
String
.
fromCharCode
(
0
));
return
zIndex
!=
-
1
?
str
.
substr
(
0
,
zIndex
)
:
str
;
return
zIndex
!=
=
-
1
?
str
.
substr
(
0
,
zIndex
)
:
str
;
};
// takes a ByteStream and parses out the local file information
...
...
@@ -61,7 +61,7 @@ var TarLocalFile = function(bstream) {
this
.
linkname
=
readCleanString
(
bstream
,
100
);
this
.
maybeMagic
=
readCleanString
(
bstream
,
6
);
if
(
this
.
maybeMagic
==
"ustar"
)
{
if
(
this
.
maybeMagic
==
=
"ustar"
)
{
this
.
version
=
readCleanString
(
bstream
,
2
);
this
.
uname
=
readCleanString
(
bstream
,
32
);
this
.
gname
=
readCleanString
(
bstream
,
32
);
...
...
@@ -86,7 +86,7 @@ var TarLocalFile = function(bstream) {
info
(
" typeflag = "
+
this
.
typeflag
);
// A regular file.
if
(
this
.
typeflag
==
0
)
{
if
(
this
.
typeflag
==
=
0
)
{
info
(
" This is a regular file."
);
var
sizeInBytes
=
parseInt
(
this
.
size
);
this
.
fileData
=
new
Uint8Array
(
bstream
.
bytes
.
buffer
,
bstream
.
ptr
,
this
.
size
);
...
...
@@ -101,8 +101,8 @@ var TarLocalFile = function(bstream) {
if
(
remaining
>
0
&&
remaining
<
512
)
{
bstream
.
readBytes
(
remaining
);
}
}
else
if
(
this
.
typeflag
==
5
)
{
info
(
" This is a directory."
)
}
else
if
(
this
.
typeflag
==
=
5
)
{
info
(
" This is a directory."
)
;
}
};
...
...
@@ -122,7 +122,7 @@ var untar = function(arrayBuffer) {
var
localFiles
=
[];
// While we don't encounter an empty block, keep making TarLocalFiles.
while
(
bstream
.
peekNumber
(
4
)
!=
0
)
{
while
(
bstream
.
peekNumber
(
4
)
!=
=
0
)
{
var
oneLocalFile
=
new
TarLocalFile
(
bstream
);
if
(
oneLocalFile
&&
oneLocalFile
.
isValid
)
{
localFiles
.
push
(
oneLocalFile
);
...
...
@@ -132,7 +132,7 @@ var untar = function(arrayBuffer) {
totalFilesInArchive
=
localFiles
.
length
;
// got all local files, now sort them
localFiles
.
sort
(
function
(
a
,
b
)
{
localFiles
.
sort
(
function
(
a
,
b
)
{
var
aname
=
a
.
filename
.
toLowerCase
();
var
bname
=
b
.
filename
.
toLowerCase
();
return
aname
>
bname
?
1
:
-
1
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment