summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi@dropbox.com>2014-11-11 00:01:05 -0800
committerLi Haoyi <haoyi@dropbox.com>2014-11-11 00:01:05 -0800
commit43795c30a7295310b47885b3eacca9fd9af33343 (patch)
tree79a4ba4622f353fe45cb9b2084904becd2ebca0e
parentfe5c2d79f6b71da7864b5f5f9ebd095dc68d9343 (diff)
downloadhands-on-scala-js-43795c30a7295310b47885b3eacca9fd9af33343.tar.gz
hands-on-scala-js-43795c30a7295310b47885b3eacca9fd9af33343.tar.bz2
hands-on-scala-js-43795c30a7295310b47885b3eacca9fd9af33343.zip
Added clickable links everywhere, look reasonably pretty
-rwxr-xr-xbook/src/main/resources/css/side-menu.css28
-rw-r--r--book/src/main/scala/book/Book.scala6
-rw-r--r--book/src/main/scala/book/Utils.scala33
3 files changed, 50 insertions, 17 deletions
diff --git a/book/src/main/resources/css/side-menu.css b/book/src/main/resources/css/side-menu.css
index 1807112..ca3a23b 100755
--- a/book/src/main/resources/css/side-menu.css
+++ b/book/src/main/resources/css/side-menu.css
@@ -1,7 +1,12 @@
body {
color: #777;
}
-
+*{
+ position: relative;
+}
+p{
+ text-align: justify;
+}
#main{
position: fixed;
max-width: 100%;
@@ -276,6 +281,27 @@ code{
.half-table th{
width: 50%;
}
+.header-link{
+ position: absolute;
+ right: 0px;
+}
+*:hover > .header-link:hover{
+ opacity: 1.0;
+}
+*:hover > .header-link:active{
+ opacity: 0.75;
+}
+*:hover > .header-link{
+ text-align: right;
+ text-decoration: none;
+ opacity: 0.5;
+}
+.header-link > i{
+ color: #777;
+}
+.header-link{
+ opacity: 0.05;
+}
/*Workaround for bug in highlight.js IDEA theme*/
.hljs-tag, .hljs-symbol{
background: none;
diff --git a/book/src/main/scala/book/Book.scala b/book/src/main/scala/book/Book.scala
index 7553087..c6c9c2e 100644
--- a/book/src/main/scala/book/Book.scala
+++ b/book/src/main/scala/book/Book.scala
@@ -18,6 +18,12 @@ object Book {
"META-INF/resources/webjars/highlightjs/8.2-1/languages/xml.min.js",
"META-INF/resources/webjars/pure/0.5.0/pure-min.css",
"META-INF/resources/webjars/pure/0.5.0/grids-responsive-min.css",
+ "META-INF/resources/webjars/font-awesome/4.2.0/css/font-awesome.min.css",
+ "META-INF/resources/webjars/font-awesome/4.2.0/fonts/FontAwesome.otf",
+ "META-INF/resources/webjars/font-awesome/4.2.0/fonts/fontawesome-webfont.eot",
+ "META-INF/resources/webjars/font-awesome/4.2.0/fonts/fontawesome-webfont.svg",
+ "META-INF/resources/webjars/font-awesome/4.2.0/fonts/fontawesome-webfont.ttf",
+ "META-INF/resources/webjars/font-awesome/4.2.0/fonts/fontawesome-webfont.woff",
"css/side-menu.css",
"js/ui.js",
"example-fastopt.js",
diff --git a/book/src/main/scala/book/Utils.scala b/book/src/main/scala/book/Utils.scala
index 867ed68..ab6005b 100644
--- a/book/src/main/scala/book/Utils.scala
+++ b/book/src/main/scala/book/Utils.scala
@@ -15,21 +15,21 @@ object sect{
var indent = 0
- val headers = Seq[((String, String) => scalatags.Text.Tag, Option[Frag => Frag])](
- ((h, s) => div(cls:="header")(
- h1(h),
+ val headers = Seq[((String, String, Frag) => scalatags.Text.Tag, Option[Frag => Frag])](
+ ((h, s, l) => div(cls:="header")(
+ h1(h, l),
h2(s)
), Some(f => div(cls:="content", f))),
- ((h, s) => div(cls:="header")(
- h1(id:=munge(h), h),
+ ((h, s, l) => div(cls:="header")(
+ h1(id:=munge(h), h, l),
br
), None),
- (h1(_, _), None),
- (h2(_, _), None),
- (h3(_, _), None),
- (h4(_, _), None),
- (h5(_, _), None),
- (h6(_, _), None)
+ (h1(_, _, _), None),
+ (h2(_, _, _), None),
+ (h3(_, _, _), None),
+ (h4(_, _, _), None),
+ (h5(_, _, _), None),
+ (h6(_, _, _), None)
)
var structure = Node("root", mutable.Buffer.empty)
@@ -54,16 +54,17 @@ case class sect(name: String, subname: String = ""){
sect.structure = newNode
def apply(args: Frag*) = {
val wrappedContents = contentWrap.getOrElse((x: Frag) => x)(args)
+
val headingAnchor = a(
+ cls:="header-link",
href:=s"#${sect.munge(name)}",
- cls:="content-link",
- title:="Heading anchor"
+ " ",
+ i(cls:="fa fa-link")
)
val res = Seq[Frag](
- headerWrap(name, subname)(
+ headerWrap(name, subname, headingAnchor)(
cls:="content-subhead",
- id:=sect.munge(name),
- headingAnchor
+ id:=sect.munge(name)
),
wrappedContents
)