2013-04-26 05:30:56 +04:00
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>ImageGrid.Viewer</title>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
2013-05-03 02:27:54 +04:00
|
|
|
/*
|
|
|
|
|
* XXX move the CSS to a separate file...
|
|
|
|
|
* XXX split-off styling/coloring from layout...
|
|
|
|
|
*/
|
|
|
|
|
|
2013-05-14 21:49:05 +04:00
|
|
|
body {
|
|
|
|
|
font-family: sans-serif;
|
|
|
|
|
padding: 0px;
|
|
|
|
|
margin: 0px;
|
|
|
|
|
}
|
|
|
|
|
|
2013-04-26 05:30:56 +04:00
|
|
|
.viewer {
|
|
|
|
|
position: relative;
|
2013-05-17 15:34:45 +04:00
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
2013-04-29 01:59:59 +04:00
|
|
|
overflow: hidden;
|
2013-04-26 05:30:56 +04:00
|
|
|
|
2013-05-17 15:34:45 +04:00
|
|
|
/*border: solid blue 1px;*/
|
|
|
|
|
box-sizing: border-box;
|
2013-05-14 21:49:05 +04:00
|
|
|
|
|
|
|
|
-moz-user-select: none;
|
|
|
|
|
-webkit-user-select: none;
|
|
|
|
|
-o-user-select: none;
|
|
|
|
|
-ms-user-select: none;
|
|
|
|
|
user-select: none;
|
2013-04-26 05:30:56 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.ribbon-set {
|
2013-04-29 01:59:59 +04:00
|
|
|
position: absolute;
|
2013-05-14 16:04:57 +04:00
|
|
|
display: block;
|
|
|
|
|
|
2013-05-14 18:35:09 +04:00
|
|
|
/* NOTE: this needs for scaling/zooming to behave correctly and not
|
|
|
|
|
shift the element, when its dimensions change...
|
|
|
|
|
...this is because .ribbon-set will both be used for scaling
|
|
|
|
|
and aligning... */
|
2013-05-14 16:04:57 +04:00
|
|
|
transform-origin: top left;
|
|
|
|
|
-ms-transform-origin: top left;
|
|
|
|
|
-webkit-transform-origin: top left; /* Safari and Chrome */
|
2013-04-26 05:30:56 +04:00
|
|
|
}
|
|
|
|
|
.ribbon-set:empty:after {
|
|
|
|
|
display: block;
|
|
|
|
|
top: 0px;
|
|
|
|
|
left: 0px;
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
content: "Empty";
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.ribbon {
|
|
|
|
|
position: relative;
|
|
|
|
|
display: block;
|
|
|
|
|
height: auto;
|
|
|
|
|
min-width: 0px;
|
|
|
|
|
overflow: visible;
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
font-size: 0;
|
|
|
|
|
|
|
|
|
|
margin-top: 20px;
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
}
|
2013-04-30 00:28:47 +04:00
|
|
|
.ribbon:empty {
|
|
|
|
|
display: none;
|
|
|
|
|
}
|
2013-04-26 05:30:56 +04:00
|
|
|
.ribbon:first-child {
|
|
|
|
|
margin-top: 0px;
|
|
|
|
|
}
|
|
|
|
|
.ribbon:last-child {
|
|
|
|
|
margin-bottom: 0px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.image {
|
|
|
|
|
position: relative;
|
|
|
|
|
display: inline-block;
|
|
|
|
|
vertical-align: middle;
|
2013-05-17 15:34:45 +04:00
|
|
|
text-align:left;
|
2013-04-29 19:12:19 +04:00
|
|
|
width: 300px;
|
|
|
|
|
height: 300px;
|
2013-04-26 05:30:56 +04:00
|
|
|
font-size: 12pt;
|
2013-04-29 23:07:47 +04:00
|
|
|
overflow: hidden;
|
2013-04-26 05:30:56 +04:00
|
|
|
|
2013-04-29 19:12:19 +04:00
|
|
|
box-sizing: border-box;
|
2013-04-26 05:30:56 +04:00
|
|
|
color: white;
|
2013-05-12 14:31:03 +04:00
|
|
|
|
2013-05-17 15:34:45 +04:00
|
|
|
text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
|
|
|
|
|
|
2013-05-12 14:31:03 +04:00
|
|
|
background: no-repeat 50% black;
|
|
|
|
|
background-size: contain;
|
|
|
|
|
/* XXX do we need this? */
|
|
|
|
|
border: solid black 5px;
|
2013-04-26 05:30:56 +04:00
|
|
|
}
|
|
|
|
|
.current.image {
|
2013-05-12 14:31:03 +04:00
|
|
|
background: no-repeat 50% black;
|
|
|
|
|
background-size: contain;
|
|
|
|
|
|
|
|
|
|
/* XXX remove this... */
|
|
|
|
|
border: solid red 5px;
|
2013-04-26 05:30:56 +04:00
|
|
|
}
|
|
|
|
|
|
2013-05-23 17:17:31 +04:00
|
|
|
/* image turning... */
|
|
|
|
|
/* NOTE: need to account for proportions after turning... */
|
|
|
|
|
.image[orientation="90"] {
|
|
|
|
|
-webkit-transform: rotate(90deg);
|
|
|
|
|
-moz-transform: rotate(90deg);
|
|
|
|
|
-o-transform: rotate(90deg);
|
|
|
|
|
-ms-transform: rotate(90deg);
|
|
|
|
|
transform: rotate(90deg);
|
|
|
|
|
}
|
|
|
|
|
.image[orientation="180"] {
|
|
|
|
|
-webkit-transform: rotate(180deg);
|
|
|
|
|
-moz-transform: rotate(180deg);
|
|
|
|
|
-o-transform: rotate(180deg);
|
|
|
|
|
-ms-transform: rotate(180deg);
|
|
|
|
|
transform: rotate(180deg);
|
|
|
|
|
}
|
|
|
|
|
.image[orientation="270"] {
|
|
|
|
|
-webkit-transform: rotate(270deg);
|
|
|
|
|
-moz-transform: rotate(270deg);
|
|
|
|
|
-o-transform: rotate(270deg);
|
|
|
|
|
-ms-transform: rotate(270deg);
|
|
|
|
|
transform: rotate(270deg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2013-04-29 23:07:47 +04:00
|
|
|
/* dot mark... */
|
2013-05-17 04:52:43 +04:00
|
|
|
.marks-visible.viewer .marked.image:after {
|
2013-04-29 19:12:19 +04:00
|
|
|
display: block;
|
|
|
|
|
position: absolute;
|
|
|
|
|
content: "";
|
|
|
|
|
font-size: 0pt;
|
|
|
|
|
border: none;
|
|
|
|
|
|
2013-04-29 23:07:47 +04:00
|
|
|
width: 15px;
|
|
|
|
|
height: 15px;
|
2013-04-29 19:12:19 +04:00
|
|
|
|
|
|
|
|
bottom: 5px;
|
|
|
|
|
right: 5px;
|
|
|
|
|
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
background: blue;
|
|
|
|
|
}
|
2013-05-23 17:17:31 +04:00
|
|
|
.marks-visible.viewer .marked.image[orientation="90"]:after {
|
|
|
|
|
top: 5px;
|
|
|
|
|
right: 5px;
|
|
|
|
|
}
|
|
|
|
|
.marks-visible.viewer .marked.image[orientation="180"]:after {
|
|
|
|
|
top: 5px;
|
|
|
|
|
left: 5px;
|
|
|
|
|
}
|
|
|
|
|
.marks-visible.viewer .marked.image[orientation="270"]:after {
|
|
|
|
|
bottom: 5px;
|
|
|
|
|
left: 5px;
|
|
|
|
|
}
|
2013-04-29 19:12:19 +04:00
|
|
|
|
2013-04-29 23:07:47 +04:00
|
|
|
/* corner mark... (a-la bookmarks in PortableMag) */
|
|
|
|
|
/*
|
2013-05-23 17:17:31 +04:00
|
|
|
.marks-visible.viewer .marked.image:after {
|
2013-04-29 23:07:47 +04:00
|
|
|
display: block;
|
|
|
|
|
position: absolute;
|
|
|
|
|
content: "";
|
|
|
|
|
font-size: 0pt;
|
|
|
|
|
border: none;
|
|
|
|
|
|
|
|
|
|
width: 30px;
|
|
|
|
|
height: 30px;
|
|
|
|
|
|
|
|
|
|
top: -15px;
|
|
|
|
|
right: -15px;
|
|
|
|
|
|
|
|
|
|
background: blue;
|
|
|
|
|
|
|
|
|
|
-webkit-transform: rotate(45deg);
|
|
|
|
|
-moz-transform: rotate(45deg);
|
|
|
|
|
-o-transform: rotate(45deg);
|
|
|
|
|
-ms-transform: rotate(45deg);
|
|
|
|
|
transform: rotate(45deg);
|
|
|
|
|
}
|
2013-05-23 17:17:31 +04:00
|
|
|
.marks-visible.viewer .marked.image[orientation="90"]:after {
|
|
|
|
|
top: -15px;
|
|
|
|
|
left: -15px;
|
|
|
|
|
}
|
|
|
|
|
.marks-visible.viewer .marked.image[orientation="180"]:after {
|
|
|
|
|
bottom: -15px;
|
|
|
|
|
left: -15px;
|
|
|
|
|
}
|
|
|
|
|
.marks-visible.viewer .marked.image[orientation="270"]:after {
|
|
|
|
|
bottom: -15px;
|
|
|
|
|
right: -15px;
|
|
|
|
|
}
|
2013-04-29 23:07:47 +04:00
|
|
|
*/
|
2013-04-26 05:30:56 +04:00
|
|
|
|
2013-04-30 00:28:47 +04:00
|
|
|
|
2013-05-17 04:52:43 +04:00
|
|
|
.marks-visible.viewer:after {
|
|
|
|
|
display: block;
|
|
|
|
|
position: absolute;
|
2013-05-24 00:09:13 +04:00
|
|
|
content: "";
|
|
|
|
|
font-size: 0pt;
|
2013-05-17 04:52:43 +04:00
|
|
|
|
|
|
|
|
top: 10px;
|
|
|
|
|
right: 10px;
|
2013-05-24 00:09:13 +04:00
|
|
|
width: 10px;
|
|
|
|
|
height: 10px;
|
2013-05-17 04:52:43 +04:00
|
|
|
|
2013-05-24 00:09:13 +04:00
|
|
|
border: solid 2px blue;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
background: blue;
|
2013-05-17 04:52:43 +04:00
|
|
|
}
|
|
|
|
|
.marked-only-view.viewer:after {
|
2013-04-30 00:28:47 +04:00
|
|
|
display: block;
|
|
|
|
|
position: absolute;
|
2013-05-24 00:09:13 +04:00
|
|
|
content: "";
|
|
|
|
|
font-size: 0pt;
|
2013-04-30 00:28:47 +04:00
|
|
|
top: 10px;
|
|
|
|
|
right: 10px;
|
2013-05-24 00:09:13 +04:00
|
|
|
width: 10px;
|
|
|
|
|
height: 10px;
|
2013-04-30 00:28:47 +04:00
|
|
|
|
2013-05-24 00:09:13 +04:00
|
|
|
border: solid 2px blue;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
background: transparent;
|
2013-04-30 00:28:47 +04:00
|
|
|
}
|
2013-05-17 04:52:43 +04:00
|
|
|
.marked-only-view.marks-visible.viewer:after {
|
2013-05-24 00:09:13 +04:00
|
|
|
background: blue;
|
2013-04-30 00:28:47 +04:00
|
|
|
}
|
2013-05-17 04:52:43 +04:00
|
|
|
|
|
|
|
|
/* XXX should we use opacity??? */
|
|
|
|
|
.marked-only-view.viewer:not(.marks-visible) .image:not(.marked) {
|
|
|
|
|
opacity: 0.3;
|
2013-04-30 00:28:47 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2013-04-30 00:54:32 +04:00
|
|
|
.up-indicator,
|
2013-05-03 19:24:06 +04:00
|
|
|
.down-indicator,
|
|
|
|
|
.start-indicator,
|
|
|
|
|
.end-indicator {
|
2013-04-30 00:54:32 +04:00
|
|
|
display: block;
|
|
|
|
|
position: absolute;
|
|
|
|
|
content: "";
|
|
|
|
|
top: 0px;
|
|
|
|
|
left: 50%;
|
|
|
|
|
height: 50px;
|
|
|
|
|
width: 100px;
|
|
|
|
|
margin-left: -50px;
|
|
|
|
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
|
|
|
|
cursor: hand;
|
|
|
|
|
}
|
|
|
|
|
.up-indicator:after,
|
|
|
|
|
.down-indicator:after {
|
|
|
|
|
display: inline-block;
|
|
|
|
|
position: absolute;
|
|
|
|
|
content: "";
|
|
|
|
|
width: 50px;
|
|
|
|
|
height: 50px;
|
|
|
|
|
|
|
|
|
|
bottom: -25px;
|
|
|
|
|
left: 25px;
|
|
|
|
|
|
2013-04-30 01:30:02 +04:00
|
|
|
background: yellow;
|
2013-04-30 00:54:32 +04:00
|
|
|
|
|
|
|
|
-webkit-transform: rotate(45deg);
|
|
|
|
|
-moz-transform: rotate(45deg);
|
|
|
|
|
-o-transform: rotate(45deg);
|
|
|
|
|
-ms-transform: rotate(45deg);
|
|
|
|
|
transform: rotate(45deg);
|
|
|
|
|
}
|
|
|
|
|
.down-indicator {
|
|
|
|
|
top: auto;
|
|
|
|
|
bottom: 0px;
|
|
|
|
|
}
|
|
|
|
|
.down-indicator:after {
|
|
|
|
|
top: -25px;
|
|
|
|
|
bottom: auto;
|
|
|
|
|
}
|
2013-05-03 19:24:06 +04:00
|
|
|
.start-indicator,
|
|
|
|
|
.end-indicator {
|
|
|
|
|
left: 0px;
|
|
|
|
|
width: 10px;
|
|
|
|
|
height: 100%;
|
|
|
|
|
margin: 0px;
|
|
|
|
|
|
|
|
|
|
background: yellow;
|
|
|
|
|
}
|
|
|
|
|
.end-indicator {
|
|
|
|
|
left: auto;
|
|
|
|
|
right: 0px;
|
|
|
|
|
}
|
2013-04-30 00:54:32 +04:00
|
|
|
/* default state */
|
|
|
|
|
.up-indicator,
|
2013-05-03 19:24:06 +04:00
|
|
|
.down-indicator,
|
|
|
|
|
.start-indicator,
|
|
|
|
|
.end-indicator {
|
|
|
|
|
display: none;
|
2013-04-30 00:54:32 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2013-05-17 15:34:45 +04:00
|
|
|
|
|
|
|
|
.single-image-mode.viewer .image {
|
|
|
|
|
background-color: transparent;
|
2013-05-17 16:03:40 +04:00
|
|
|
/* NOTE: need to keep a distance from screen borders... */
|
|
|
|
|
border: solid transparent 2px;
|
2013-05-17 15:34:45 +04:00
|
|
|
}
|
|
|
|
|
.single-image-mode.viewer .image:not(.current) {
|
|
|
|
|
/* XXX for some reason this breaks the alignment on large magnifications...
|
|
|
|
|
display: none;
|
|
|
|
|
*/
|
2013-05-17 15:48:39 +04:00
|
|
|
/* XXX this makes images pass through the :visible filter...
|
2013-05-17 15:34:45 +04:00
|
|
|
opacity: 0;
|
2013-05-17 15:48:39 +04:00
|
|
|
*/
|
2013-05-17 16:03:40 +04:00
|
|
|
visibility: hidden;
|
2013-05-17 15:34:45 +04:00
|
|
|
}
|
|
|
|
|
|
2013-05-17 18:20:38 +04:00
|
|
|
/* XXX this is by no means final... */
|
|
|
|
|
.viewer,
|
2013-05-23 15:22:38 +04:00
|
|
|
.light.viewer,
|
|
|
|
|
.light.viewer .overlay-block .background {
|
2013-05-17 18:20:38 +04:00
|
|
|
background: white;
|
|
|
|
|
}
|
|
|
|
|
|
2013-05-23 15:22:38 +04:00
|
|
|
.gray.viewer,
|
|
|
|
|
.gray.viewer .overlay-block .background {
|
2013-05-17 18:20:38 +04:00
|
|
|
background: #333;
|
|
|
|
|
}
|
|
|
|
|
|
2013-05-23 15:22:38 +04:00
|
|
|
.dark.viewer,
|
|
|
|
|
.dark.viewer .overlay-block .background {
|
2013-05-20 02:49:14 +04:00
|
|
|
background: #0a0a0a;
|
2013-05-17 18:20:38 +04:00
|
|
|
}
|
|
|
|
|
|
2013-05-17 15:34:45 +04:00
|
|
|
|
2013-05-23 15:22:38 +04:00
|
|
|
/* Overlay */
|
|
|
|
|
.overlay-block {
|
|
|
|
|
display: none;
|
|
|
|
|
position: absolute:
|
|
|
|
|
top: 0px;
|
|
|
|
|
left: 0px;
|
|
|
|
|
height: 100%;
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
|
|
|
|
.viewer.overlay .overlay-block {
|
|
|
|
|
display: block;
|
|
|
|
|
}
|
|
|
|
|
.overlay-block .content {
|
|
|
|
|
}
|
|
|
|
|
.overlay-block .background {
|
|
|
|
|
position: absolute:
|
|
|
|
|
top: 0px;
|
|
|
|
|
left: 0px;
|
|
|
|
|
height: 100%;
|
|
|
|
|
width: 100%;
|
|
|
|
|
opacity: 0.7;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* this is for sliding stuff */
|
2013-05-23 16:13:10 +04:00
|
|
|
.viewer.help-mode {
|
2013-05-23 15:22:38 +04:00
|
|
|
box-shadow: 0px 0px 50px 0px silver;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* help */
|
|
|
|
|
.keyboard-help {
|
2013-05-23 16:13:10 +04:00
|
|
|
width: 80%;
|
|
|
|
|
margin-top: 20px;
|
|
|
|
|
margin-left: 15%;
|
|
|
|
|
margin-right: 5%;
|
|
|
|
|
margin-bottom: 100px;
|
2013-05-23 15:22:38 +04:00
|
|
|
}
|
|
|
|
|
.keyboard-help .section-doc {
|
|
|
|
|
font-size: small;
|
|
|
|
|
vertical-align: top;
|
|
|
|
|
font-style: italic;
|
|
|
|
|
}
|
|
|
|
|
.keyboard-help th {
|
|
|
|
|
text-align: left;
|
|
|
|
|
height: 50px;
|
|
|
|
|
vertical-align: bottom;
|
|
|
|
|
border-bottom: solid gray 1px;
|
|
|
|
|
}
|
|
|
|
|
.keyboard-help tr:hover {
|
|
|
|
|
background: #eee;
|
|
|
|
|
vertical-align: top;
|
|
|
|
|
}
|
|
|
|
|
.keyboard-help tr td:first-child {
|
|
|
|
|
color: gray;
|
|
|
|
|
font-style: italic;
|
|
|
|
|
padding-right: 20px;
|
2013-05-23 16:13:10 +04:00
|
|
|
padding-left: 10px;
|
|
|
|
|
}
|
|
|
|
|
.keyboard-help .section-doc td:only-child {
|
|
|
|
|
padding-right: 0px;
|
|
|
|
|
padding-left: 0px;
|
2013-05-23 15:22:38 +04:00
|
|
|
}
|
|
|
|
|
|
2013-04-26 05:30:56 +04:00
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-05-28 15:22:05 +04:00
|
|
|
<script src="ext-lib/jquery.js"></script>
|
2013-04-26 05:30:56 +04:00
|
|
|
|
2013-04-26 23:07:07 +04:00
|
|
|
<script src="lib/jli.js"></script>
|
|
|
|
|
<script src="lib/keyboard.js"></script>
|
|
|
|
|
|
2013-05-14 17:42:17 +04:00
|
|
|
<script src="base.js"></script>
|
2013-05-17 15:34:45 +04:00
|
|
|
<script src="modes.js"></script>
|
2013-05-17 06:57:35 +04:00
|
|
|
<script src="marks.js"></script>
|
2013-05-14 17:42:17 +04:00
|
|
|
<script src="data.js"></script>
|
|
|
|
|
<script src="ui.js"></script>
|
2013-05-28 15:22:05 +04:00
|
|
|
<script src="keybindings.js"></script>
|
2013-04-29 02:31:01 +04:00
|
|
|
|
2013-05-14 21:49:05 +04:00
|
|
|
|
|
|
|
|
<!-- XXX STUB -->
|
|
|
|
|
<script src="images.js"></script>
|
|
|
|
|
|
|
|
|
|
|
2013-05-02 19:47:04 +04:00
|
|
|
<script>
|
2013-04-29 02:31:01 +04:00
|
|
|
|
2013-05-17 18:20:38 +04:00
|
|
|
//DEBUG = true
|
2013-05-14 21:49:05 +04:00
|
|
|
|
2013-05-15 00:24:33 +04:00
|
|
|
|
2013-04-26 05:30:56 +04:00
|
|
|
// setup...
|
|
|
|
|
$(function(){
|
|
|
|
|
|
2013-05-18 01:16:56 +04:00
|
|
|
toggleTheme('gray')
|
2013-05-17 17:58:23 +04:00
|
|
|
|
2013-04-26 05:30:56 +04:00
|
|
|
// NOTE: this is global so as to not to add any extra complexity to
|
|
|
|
|
// the internal workings...
|
2013-05-03 17:08:59 +04:00
|
|
|
$('.viewer')
|
|
|
|
|
.click(clickHandler)
|
2013-05-17 15:34:45 +04:00
|
|
|
// XXX for some reason this messes up alignment on initial view...
|
|
|
|
|
//.dblclick(dblClickHandler)
|
|
|
|
|
|
|
|
|
|
$(window)
|
|
|
|
|
.resize(function() {
|
|
|
|
|
// XXX should this be animated or not?
|
|
|
|
|
centerView()
|
|
|
|
|
})
|
|
|
|
|
|
2013-05-02 23:22:43 +04:00
|
|
|
$(document)
|
|
|
|
|
.keydown(makeKeyboardHandler(
|
|
|
|
|
KEYBOARD_CONFIG,
|
2013-05-15 00:24:33 +04:00
|
|
|
function(k){
|
|
|
|
|
window.DEBUG && console.log(k)
|
|
|
|
|
}))
|
2013-05-03 17:08:59 +04:00
|
|
|
|
2013-05-13 02:24:36 +04:00
|
|
|
setupDataBindings()
|
2013-05-03 17:08:59 +04:00
|
|
|
|
2013-05-22 03:00:38 +04:00
|
|
|
|
|
|
|
|
//setElementOrigin($('.ribbon-set'), 'top', 'left')
|
|
|
|
|
|
2013-05-28 04:41:16 +04:00
|
|
|
|
2013-05-22 03:00:38 +04:00
|
|
|
// we have an image file...
|
2013-05-28 02:17:24 +04:00
|
|
|
if((DATA_ATTR + '_BASE_URL') in localStorage){
|
|
|
|
|
BASE_URL = localStorage[DATA_ATTR + '_BASE_URL']
|
2013-05-28 04:41:16 +04:00
|
|
|
|
|
|
|
|
var loading = loadDir(BASE_URL)
|
2013-05-22 03:00:38 +04:00
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
// everything is in localStorage...
|
|
|
|
|
if('DATA' in localStorage){
|
|
|
|
|
loadLocalStorage()
|
|
|
|
|
|
|
|
|
|
// legacy default data...
|
|
|
|
|
} else {
|
|
|
|
|
DATA = convertDataGen1(image_list)
|
|
|
|
|
DATA = DATA.data
|
|
|
|
|
IMAGES = DATA.images
|
|
|
|
|
loadData()
|
|
|
|
|
}
|
2013-05-22 03:41:51 +04:00
|
|
|
var loading = $.Deferred().resolve()
|
|
|
|
|
}
|
2013-05-22 03:00:38 +04:00
|
|
|
|
2013-05-22 03:41:51 +04:00
|
|
|
loading
|
|
|
|
|
.done(function(){
|
2013-05-28 04:41:16 +04:00
|
|
|
console.log('Loading settings...')
|
|
|
|
|
loadLocalStorageSettings()
|
|
|
|
|
|
2013-05-22 03:41:51 +04:00
|
|
|
// XXX this will reload everything...
|
|
|
|
|
if('MARKED' in localStorage){
|
|
|
|
|
loadLocalStorageMarks()
|
|
|
|
|
}
|
2013-05-22 03:00:38 +04:00
|
|
|
|
2013-05-22 03:41:51 +04:00
|
|
|
updateImages()
|
|
|
|
|
})
|
2013-05-22 03:00:38 +04:00
|
|
|
|
2013-04-26 05:30:56 +04:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<!-- This is the basic viewer structure...
|
|
|
|
|
|
|
|
|
|
Unpopulated
|
|
|
|
|
NOTE: there can be only .ribbon-set element.
|
|
|
|
|
|
|
|
|
|
<div class="viewer">
|
|
|
|
|
<div class="ribbon-set"></div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Populated
|
|
|
|
|
|
|
|
|
|
<div class="viewer">
|
|
|
|
|
<div class="ribbon-set">
|
|
|
|
|
<div class="ribbon">
|
|
|
|
|
<div class="image"></div>
|
|
|
|
|
<div class="image"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="ribbon">
|
|
|
|
|
<div class="image"></div>
|
|
|
|
|
<div class="current image"></div>
|
|
|
|
|
<div class="image"></div>
|
|
|
|
|
<div class="image"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
|
<div class="viewer">
|
2013-04-30 00:54:32 +04:00
|
|
|
|
2013-04-26 05:30:56 +04:00
|
|
|
<div class="ribbon-set"></div>
|
2013-04-30 00:54:32 +04:00
|
|
|
|
|
|
|
|
|
2013-04-30 01:34:26 +04:00
|
|
|
<!-- XXX should these be here??? -->
|
2013-04-30 00:54:32 +04:00
|
|
|
<div class="up-indicator"></div>
|
|
|
|
|
<div class="down-indicator"></div>
|
2013-05-03 19:24:06 +04:00
|
|
|
<div class="start-indicator"></div>
|
|
|
|
|
<div class="end-indicator"></div>
|
2013-05-23 15:22:38 +04:00
|
|
|
<div class="overlay-block">
|
|
|
|
|
<div class="background"></div>
|
|
|
|
|
<div class="content"></div>
|
|
|
|
|
</div>
|
2013-04-26 05:30:56 +04:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- vim:set ts=4 sw=4 spell : -->
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|