summaryrefslogtreecommitdiffstats
path: root/module/web/static
diff options
context:
space:
mode:
Diffstat (limited to 'module/web/static')
-rwxr-xr-xmodule/web/static/css/bootstrap.css458
-rw-r--r--module/web/static/css/default/dashboard.less5
-rw-r--r--module/web/static/css/default/style.less8
-rwxr-xr-x[-rw-r--r--]module/web/static/img/glyphicons-halflings-white.pngbin8777 -> 8777 bytes
-rwxr-xr-x[-rw-r--r--]module/web/static/img/glyphicons-halflings.pngbin12799 -> 12799 bytes
-rw-r--r--module/web/static/js/config.js2
-rwxr-xr-xmodule/web/static/js/libs/bootstrap-2.3.js (renamed from module/web/static/js/libs/bootstrap-2.2.2.js)261
-rw-r--r--module/web/static/js/utils/animations.js11
-rw-r--r--module/web/static/js/views/headerView.js10
9 files changed, 542 insertions, 213 deletions
diff --git a/module/web/static/css/bootstrap.css b/module/web/static/css/bootstrap.css
index 5ff5dff3d..70dfd726b 100755
--- a/module/web/static/css/bootstrap.css
+++ b/module/web/static/css/bootstrap.css
@@ -1,5 +1,5 @@
/*!
- * Bootstrap v2.2.2
+ * Bootstrap v2.3.0
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
@@ -215,7 +215,8 @@ a {
color: #0088cc;
text-decoration: none;
}
-a:hover {
+a:hover,
+a:focus {
color: #005580;
text-decoration: underline;
}
@@ -568,33 +569,47 @@ cite {
.muted {
color: #999999;
}
-a.muted:hover {
+a.muted:hover,
+a.muted:focus {
color: #808080;
}
.text-warning {
color: #c09853;
}
-a.text-warning:hover {
+a.text-warning:hover,
+a.text-warning:focus {
color: #a47e3c;
}
.text-error {
color: #b94a48;
}
-a.text-error:hover {
+a.text-error:hover,
+a.text-error:focus {
color: #953b39;
}
.text-info {
color: #3a87ad;
}
-a.text-info:hover {
+a.text-info:hover,
+a.text-info:focus {
color: #2d6987;
}
.text-success {
color: #468847;
}
-a.text-success:hover {
+a.text-success:hover,
+a.text-success:focus {
color: #356635;
}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+.text-center {
+ text-align: center;
+}
h1,
h2,
h3,
@@ -682,9 +697,13 @@ ol.inline {
margin-left: 0;
list-style: none;
}
-ul.inline > li,
-ol.inline > li {
+ul.inline > li,
+ol.inline > li {
display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
padding-left: 5px;
padding-right: 5px;
}
@@ -747,9 +766,9 @@ blockquote {
}
blockquote p {
margin-bottom: 0;
- font-size: 16px;
+ font-size: 17.5px;
font-weight: 300;
- line-height: 25px;
+ line-height: 1.25;
}
blockquote small {
display: block;
@@ -867,7 +886,9 @@ pre code {
display: none;
}
a.label:hover,
-a.badge:hover {
+a.label:focus,
+a.badge:hover,
+a.badge:focus {
color: #ffffff;
text-decoration: none;
cursor: pointer;
@@ -988,27 +1009,33 @@ table {
border-top: 0;
}
.table-bordered thead:first-child tr:first-child > th:first-child,
-.table-bordered tbody:first-child tr:first-child > td:first-child {
+.table-bordered tbody:first-child tr:first-child > td:first-child,
+.table-bordered tbody:first-child tr:first-child > th:first-child {
-webkit-border-top-left-radius: 4px;
-moz-border-radius-topleft: 4px;
border-top-left-radius: 4px;
}
.table-bordered thead:first-child tr:first-child > th:last-child,
-.table-bordered tbody:first-child tr:first-child > td:last-child {
+.table-bordered tbody:first-child tr:first-child > td:last-child,
+.table-bordered tbody:first-child tr:first-child > th:last-child {
-webkit-border-top-right-radius: 4px;
-moz-border-radius-topright: 4px;
border-top-right-radius: 4px;
}
.table-bordered thead:last-child tr:last-child > th:first-child,
.table-bordered tbody:last-child tr:last-child > td:first-child,
-.table-bordered tfoot:last-child tr:last-child > td:first-child {
+.table-bordered tbody:last-child tr:last-child > th:first-child,
+.table-bordered tfoot:last-child tr:last-child > td:first-child,
+.table-bordered tfoot:last-child tr:last-child > th:first-child {
-webkit-border-bottom-left-radius: 4px;
-moz-border-radius-bottomleft: 4px;
border-bottom-left-radius: 4px;
}
.table-bordered thead:last-child tr:last-child > th:last-child,
.table-bordered tbody:last-child tr:last-child > td:last-child,
-.table-bordered tfoot:last-child tr:last-child > td:last-child {
+.table-bordered tbody:last-child tr:last-child > th:last-child,
+.table-bordered tfoot:last-child tr:last-child > td:last-child,
+.table-bordered tfoot:last-child tr:last-child > th:last-child {
-webkit-border-bottom-right-radius: 4px;
-moz-border-radius-bottomright: 4px;
border-bottom-right-radius: 4px;
@@ -1043,8 +1070,8 @@ table {
.table-striped tbody > tr:nth-child(odd) > th {
background-color: #f9f9f9;
}
-.table-hover tbody tr:hover td,
-.table-hover tbody tr:hover th {
+.table-hover tbody tr:hover > td,
+.table-hover tbody tr:hover > th {
background-color: #f5f5f5;
}
table td[class*="span"],
@@ -1127,28 +1154,28 @@ table th[class*="span"],
width: 924px;
margin-left: 0;
}
-.table tbody tr.success td {
+.table tbody tr.success > td {
background-color: #dff0d8;
}
-.table tbody tr.error td {
+.table tbody tr.error > td {
background-color: #f2dede;
}
-.table tbody tr.warning td {
+.table tbody tr.warning > td {
background-color: #fcf8e3;
}
-.table tbody tr.info td {
+.table tbody tr.info > td {
background-color: #d9edf7;
}
-.table-hover tbody tr.success:hover td {
+.table-hover tbody tr.success:hover > td {
background-color: #d0e9c6;
}
-.table-hover tbody tr.error:hover td {
+.table-hover tbody tr.error:hover > td {
background-color: #ebcccc;
}
-.table-hover tbody tr.warning:hover td {
+.table-hover tbody tr.warning:hover > td {
background-color: #faf2cc;
}
-.table-hover tbody tr.info:hover td {
+.table-hover tbody tr.info:hover > td {
background-color: #c4e3f3;
}
form {
@@ -1432,40 +1459,64 @@ textarea,
.controls-row [class*="span"] + [class*="span"] {
margin-left: 20px;
}
-input.span12, textarea.span12, .uneditable-input.span12 {
+input.span12,
+textarea.span12,
+.uneditable-input.span12 {
width: 926px;
}
-input.span11, textarea.span11, .uneditable-input.span11 {
+input.span11,
+textarea.span11,
+.uneditable-input.span11 {
width: 846px;
}
-input.span10, textarea.span10, .uneditable-input.span10 {
+input.span10,
+textarea.span10,
+.uneditable-input.span10 {
width: 766px;
}
-input.span9, textarea.span9, .uneditable-input.span9 {
+input.span9,
+textarea.span9,
+.uneditable-input.span9 {
width: 686px;
}
-input.span8, textarea.span8, .uneditable-input.span8 {
+input.span8,
+textarea.span8,
+.uneditable-input.span8 {
width: 606px;
}
-input.span7, textarea.span7, .uneditable-input.span7 {
+input.span7,
+textarea.span7,
+.uneditable-input.span7 {
width: 526px;
}
-input.span6, textarea.span6, .uneditable-input.span6 {
+input.span6,
+textarea.span6,
+.uneditable-input.span6 {
width: 446px;
}
-input.span5, textarea.span5, .uneditable-input.span5 {
+input.span5,
+textarea.span5,
+.uneditable-input.span5 {
width: 366px;
}
-input.span4, textarea.span4, .uneditable-input.span4 {
+input.span4,
+textarea.span4,
+.uneditable-input.span4 {
width: 286px;
}
-input.span3, textarea.span3, .uneditable-input.span3 {
+input.span3,
+textarea.span3,
+.uneditable-input.span3 {
width: 206px;
}
-input.span2, textarea.span2, .uneditable-input.span2 {
+input.span2,
+textarea.span2,
+.uneditable-input.span2 {
width: 126px;
}
-input.span1, textarea.span1, .uneditable-input.span1 {
+input.span1,
+textarea.span1,
+.uneditable-input.span1 {
width: 46px;
}
.controls-row {
@@ -1689,7 +1740,9 @@ select:focus:invalid:focus {
}
.input-append,
.input-prepend {
- margin-bottom: 5px;
+ display: inline-block;
+ margin-bottom: 10px;
+ vertical-align: middle;
font-size: 0;
white-space: nowrap;
}
@@ -1700,7 +1753,9 @@ select:focus:invalid:focus {
.input-append .uneditable-input,
.input-prepend .uneditable-input,
.input-append .dropdown-menu,
-.input-prepend .dropdown-menu {
+.input-prepend .dropdown-menu,
+.input-append .popover,
+.input-prepend .popover {
font-size: 14px;
}
.input-append input,
@@ -2002,9 +2057,9 @@ legend + .control-group {
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
- border: 1px solid #bbbbbb;
+ border: 1px solid #cccccc;
*border: 0;
- border-bottom-color: #a2a2a2;
+ border-bottom-color: #b3b3b3;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
@@ -2014,6 +2069,7 @@ legend + .control-group {
box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
}
.btn:hover,
+.btn:focus,
.btn:active,
.btn.active,
.btn.disabled,
@@ -2029,7 +2085,8 @@ legend + .control-group {
.btn:first-child {
*margin-left: 0;
}
-.btn:hover {
+.btn:hover,
+.btn:focus {
color: #333333;
text-decoration: none;
background-position: 0 -15px;
@@ -2119,10 +2176,6 @@ input[type="button"].btn-block {
.btn-inverse.active {
color: rgba(255, 255, 255, 0.75);
}
-.btn {
- border-color: #c5c5c5;
- border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
-}
.btn-primary {
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
@@ -2142,6 +2195,7 @@ input[type="button"].btn-block {
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-primary:hover,
+.btn-primary:focus,
.btn-primary:active,
.btn-primary.active,
.btn-primary.disabled,
@@ -2173,6 +2227,7 @@ input[type="button"].btn-block {
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-warning:hover,
+.btn-warning:focus,
.btn-warning:active,
.btn-warning.active,
.btn-warning.disabled,
@@ -2204,6 +2259,7 @@ input[type="button"].btn-block {
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-danger:hover,
+.btn-danger:focus,
.btn-danger:active,
.btn-danger.active,
.btn-danger.disabled,
@@ -2235,6 +2291,7 @@ input[type="button"].btn-block {
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-success:hover,
+.btn-success:focus,
.btn-success:active,
.btn-success.active,
.btn-success.disabled,
@@ -2266,6 +2323,7 @@ input[type="button"].btn-block {
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-info:hover,
+.btn-info:focus,
.btn-info:active,
.btn-info.active,
.btn-info.disabled,
@@ -2297,6 +2355,7 @@ input[type="button"].btn-block {
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-inverse:hover,
+.btn-inverse:focus,
.btn-inverse:active,
.btn-inverse.active,
.btn-inverse.disabled,
@@ -2351,12 +2410,14 @@ input[type="submit"].btn.btn-mini {
-moz-border-radius: 0;
border-radius: 0;
}
-.btn-link:hover {
+.btn-link:hover,
+.btn-link:focus {
color: #005580;
text-decoration: underline;
background-color: transparent;
}
-.btn-link[disabled]:hover {
+.btn-link[disabled]:hover,
+.btn-link[disabled]:focus {
color: #333333;
text-decoration: none;
}
@@ -2373,7 +2434,7 @@ input[type="submit"].btn.btn-mini {
background-repeat: no-repeat;
margin-top: 1px;
}
-/* White icons with optional class, or on hover/active states of certain elements */
+/* White icons with optional class, or on hover/focus/active states of certain elements */
.icon-white,
.nav-pills > .active > a > [class^="icon-"],
.nav-pills > .active > a > [class*=" icon-"],
@@ -2382,11 +2443,15 @@ input[type="submit"].btn.btn-mini {
.navbar-inverse .nav > .active > a > [class^="icon-"],
.navbar-inverse .nav > .active > a > [class*=" icon-"],
.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:focus > [class^="icon-"],
.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > li > a:focus > [class*=" icon-"],
.dropdown-menu > .active > a > [class^="icon-"],
.dropdown-menu > .active > a > [class*=" icon-"],
.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"] {
+.dropdown-submenu:focus > a > [class^="icon-"],
+.dropdown-submenu:hover > a > [class*=" icon-"],
+.dropdown-submenu:focus > a > [class*=" icon-"] {
background-image: url("../img/glyphicons-halflings-white.png");
}
.icon-glass {
@@ -2740,6 +2805,7 @@ input[type="submit"].btn.btn-mini {
}
.icon-folder-close {
background-position: -384px -120px;
+ width: 16px;
}
.icon-folder-open {
background-position: -408px -120px;
@@ -2964,8 +3030,6 @@ input[type="submit"].btn.btn-mini {
margin-top: 8px;
margin-left: 0;
}
-.btn-mini .caret,
-.btn-small .caret,
.btn-large .caret {
margin-top: 6px;
}
@@ -2974,6 +3038,10 @@ input[type="submit"].btn.btn-mini {
border-right-width: 5px;
border-top-width: 5px;
}
+.btn-mini .caret,
+.btn-small .caret {
+ margin-top: 8px;
+}
.dropup .btn-large .caret {
border-bottom-width: 5px;
}
@@ -3033,7 +3101,8 @@ input[type="submit"].btn.btn-mini {
.nav > li > a {
display: block;
}
-.nav > li > a:hover {
+.nav > li > a:hover,
+.nav > li > a:focus {
text-decoration: none;
background-color: #eeeeee;
}
@@ -3071,7 +3140,8 @@ input[type="submit"].btn.btn-mini {
padding: 3px 15px;
}
.nav-list > .active > a,
-.nav-list > .active > a:hover {
+.nav-list > .active > a:hover,
+.nav-list > .active > a:focus {
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
background-color: #0088cc;
@@ -3131,11 +3201,13 @@ input[type="submit"].btn.btn-mini {
-moz-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
}
-.nav-tabs > li > a:hover {
+.nav-tabs > li > a:hover,
+.nav-tabs > li > a:focus {
border-color: #eeeeee #eeeeee #dddddd;
}
.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover {
+.nav-tabs > .active > a:hover,
+.nav-tabs > .active > a:focus {
color: #555555;
background-color: #ffffff;
border: 1px solid #ddd;
@@ -3152,7 +3224,8 @@ input[type="submit"].btn.btn-mini {
border-radius: 5px;
}
.nav-pills > .active > a,
-.nav-pills > .active > a:hover {
+.nav-pills > .active > a:hover,
+.nav-pills > .active > a:focus {
color: #ffffff;
background-color: #0088cc;
}
@@ -3187,7 +3260,8 @@ input[type="submit"].btn.btn-mini {
-moz-border-radius-bottomleft: 4px;
border-bottom-left-radius: 4px;
}
-.nav-tabs.nav-stacked > li > a:hover {
+.nav-tabs.nav-stacked > li > a:hover,
+.nav-tabs.nav-stacked > li > a:focus {
border-color: #ddd;
z-index: 2;
}
@@ -3212,7 +3286,8 @@ input[type="submit"].btn.btn-mini {
border-bottom-color: #0088cc;
margin-top: 6px;
}
-.nav .dropdown-toggle:hover .caret {
+.nav .dropdown-toggle:hover .caret,
+.nav .dropdown-toggle:focus .caret {
border-top-color: #005580;
border-bottom-color: #005580;
}
@@ -3228,25 +3303,29 @@ input[type="submit"].btn.btn-mini {
border-top-color: #555555;
border-bottom-color: #555555;
}
-.nav > .dropdown.active > a:hover {
+.nav > .dropdown.active > a:hover,
+.nav > .dropdown.active > a:focus {
cursor: pointer;
}
.nav-tabs .open .dropdown-toggle,
.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover {
+.nav > li.dropdown.open.active > a:hover,
+.nav > li.dropdown.open.active > a:focus {
color: #ffffff;
background-color: #999999;
border-color: #999999;
}
.nav li.dropdown.open .caret,
.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret {
+.nav li.dropdown.open a:hover .caret,
+.nav li.dropdown.open a:focus .caret {
border-top-color: #ffffff;
border-bottom-color: #ffffff;
opacity: 1;
filter: alpha(opacity=100);
}
-.tabs-stacked .open > a:hover {
+.tabs-stacked .open > a:hover,
+.tabs-stacked .open > a:focus {
border-color: #999999;
}
.tabbable {
@@ -3289,12 +3368,14 @@ input[type="submit"].btn.btn-mini {
-moz-border-radius: 0 0 4px 4px;
border-radius: 0 0 4px 4px;
}
-.tabs-below > .nav-tabs > li > a:hover {
+.tabs-below > .nav-tabs > li > a:hover,
+.tabs-below > .nav-tabs > li > a:focus {
border-bottom-color: transparent;
border-top-color: #ddd;
}
.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover {
+.tabs-below > .nav-tabs > .active > a:hover,
+.tabs-below > .nav-tabs > .active > a:focus {
border-color: transparent #ddd #ddd #ddd;
}
.tabs-left > .nav-tabs > li,
@@ -3318,11 +3399,13 @@ input[type="submit"].btn.btn-mini {
-moz-border-radius: 4px 0 0 4px;
border-radius: 4px 0 0 4px;
}
-.tabs-left > .nav-tabs > li > a:hover {
+.tabs-left > .nav-tabs > li > a:hover,
+.tabs-left > .nav-tabs > li > a:focus {
border-color: #eeeeee #dddddd #eeeeee #eeeeee;
}
.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover {
+.tabs-left > .nav-tabs .active > a:hover,
+.tabs-left > .nav-tabs .active > a:focus {
border-color: #ddd transparent #ddd #ddd;
*border-right-color: #ffffff;
}
@@ -3337,18 +3420,21 @@ input[type="submit"].btn.btn-mini {
-moz-border-radius: 0 4px 4px 0;
border-radius: 0 4px 4px 0;
}
-.tabs-right > .nav-tabs > li > a:hover {
+.tabs-right > .nav-tabs > li > a:hover,
+.tabs-right > .nav-tabs > li > a:focus {
border-color: #eeeeee #eeeeee #eeeeee #dddddd;
}
.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover {
+.tabs-right > .nav-tabs .active > a:hover,
+.tabs-right > .nav-tabs .active > a:focus {
border-color: #ddd #ddd #ddd transparent;
*border-left-color: #ffffff;
}
.nav > .disabled > a {
color: #999999;
}
-.nav > .disabled > a:hover {
+.nav > .disabled > a:hover,
+.nav > .disabled > a:focus {
text-decoration: none;
background-color: transparent;
cursor: default;
@@ -3406,7 +3492,8 @@ input[type="submit"].btn.btn-mini {
color: #777777;
text-shadow: 0 1px 0 #ffffff;
}
-.navbar .brand:hover {
+.navbar .brand:hover,
+.navbar .brand:focus {
text-decoration: none;
}
.navbar-text {
@@ -3417,7 +3504,8 @@ input[type="submit"].btn.btn-mini {
.navbar-link {
color: #777777;
}
-.navbar-link:hover {
+.navbar-link:hover,
+.navbar-link:focus {
color: #333333;
}
.navbar .divider-vertical {
@@ -3432,7 +3520,9 @@ input[type="submit"].btn.btn-mini {
}
.navbar .btn-group .btn,
.navbar .input-prepend .btn,
-.navbar .input-append .btn {
+.navbar .input-append .btn,
+.navbar .input-prepend .btn-group,
+.navbar .input-append .btn-group {
margin-top: 0;
}
.navbar-form {
@@ -3612,6 +3702,7 @@ input[type="submit"].btn.btn-mini {
box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
}
.navbar .btn-navbar:hover,
+.navbar .btn-navbar:focus,
.navbar .btn-navbar:active,
.navbar .btn-navbar.active,
.navbar .btn-navbar.disabled,
@@ -3673,9 +3764,10 @@ input[type="submit"].btn.btn-mini {
bottom: -6px;
top: auto;
}
-.navbar .nav li.dropdown > a:hover .caret {
- border-top-color: #555555;
- border-bottom-color: #555555;
+.navbar .nav li.dropdown > a:hover .caret,
+.navbar .nav li.dropdown > a:focus .caret {
+ border-top-color: #333333;
+ border-bottom-color: #333333;
}
.navbar .nav li.dropdown.open > .dropdown-toggle,
.navbar .nav li.dropdown.active > .dropdown-toggle,
@@ -3735,7 +3827,9 @@ input[type="submit"].btn.btn-mini {
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover {
+.navbar-inverse .nav > li > a:hover,
+.navbar-inverse .brand:focus,
+.navbar-inverse .nav > li > a:focus {
color: #ffffff;
}
.navbar-inverse .brand {
@@ -3758,7 +3852,8 @@ input[type="submit"].btn.btn-mini {
.navbar-inverse .navbar-link {
color: #999999;
}
-.navbar-inverse .navbar-link:hover {
+.navbar-inverse .navbar-link:hover,
+.navbar-inverse .navbar-link:focus {
color: #ffffff;
}
.navbar-inverse .divider-vertical {
@@ -3771,7 +3866,8 @@ input[type="submit"].btn.btn-mini {
background-color: #111111;
color: #ffffff;
}
-.navbar-inverse .nav li.dropdown > a:hover .caret {
+.navbar-inverse .nav li.dropdown > a:hover .caret,
+.navbar-inverse .nav li.dropdown > a:focus .caret {
border-top-color: #ffffff;
border-bottom-color: #ffffff;
}
@@ -3837,6 +3933,7 @@ input[type="submit"].btn.btn-mini {
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.navbar-inverse .btn-navbar:hover,
+.navbar-inverse .btn-navbar:focus,
.navbar-inverse .btn-navbar:active,
.navbar-inverse .btn-navbar.active,
.navbar-inverse .btn-navbar.disabled,
@@ -3905,6 +4002,7 @@ input[type="submit"].btn.btn-mini {
border-left-width: 0;
}
.pagination ul > li > a:hover,
+.pagination ul > li > a:focus,
.pagination ul > .active > a,
.pagination ul > .active > span {
background-color: #f5f5f5;
@@ -3916,7 +4014,8 @@ input[type="submit"].btn.btn-mini {
}
.pagination ul > .disabled > span,
.pagination ul > .disabled > a,
-.pagination ul > .disabled > a:hover {
+.pagination ul > .disabled > a:hover,
+.pagination ul > .disabled > a:focus {
color: #999999;
background-color: transparent;
cursor: default;
@@ -4029,7 +4128,8 @@ input[type="submit"].btn.btn-mini {
-moz-border-radius: 15px;
border-radius: 15px;
}
-.pager li > a:hover {
+.pager li > a:hover,
+.pager li > a:focus {
text-decoration: none;
background-color: #f5f5f5;
}
@@ -4043,6 +4143,7 @@ input[type="submit"].btn.btn-mini {
}
.pager .disabled > a,
.pager .disabled > a:hover,
+.pager .disabled > a:focus,
.pager .disabled > span {
color: #999999;
background-color: #fff;
@@ -4086,7 +4187,8 @@ input[type="submit"].btn.btn-mini {
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
-a.thumbnail:hover {
+a.thumbnail:hover,
+a.thumbnail:focus {
border-color: #0088cc;
-webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
@@ -4393,10 +4495,10 @@ a.thumbnail:hover {
.media-heading {
margin: 0 0 5px;
}
-.media .pull-left {
+.media > .pull-left {
margin-right: 10px;
}
-.media .pull-right {
+.media > .pull-right {
margin-left: 10px;
}
.media-list {
@@ -4408,8 +4510,8 @@ a.thumbnail:hover {
z-index: 1030;
display: block;
visibility: visible;
- padding: 5px;
font-size: 11px;
+ line-height: 1.4;
opacity: 0;
filter: alpha(opacity=0);
}
@@ -4419,19 +4521,23 @@ a.thumbnail:hover {
}
.tooltip.top {
margin-top: -3px;
+ padding: 5px 0;
}
.tooltip.right {
margin-left: 3px;
+ padding: 0 5px;
}
.tooltip.bottom {
margin-top: 3px;
+ padding: 5px 0;
}
.tooltip.left {
margin-left: -3px;
+ padding: 0 5px;
}
.tooltip-inner {
max-width: 200px;
- padding: 3px 8px;
+ padding: 8px;
color: #ffffff;
text-align: center;
text-decoration: none;
@@ -4481,7 +4587,7 @@ a.thumbnail:hover {
left: 0;
z-index: 1010;
display: none;
- width: 236px;
+ max-width: 276px;
padding: 1px;
text-align: left;
background-color: #ffffff;
@@ -4522,6 +4628,9 @@ a.thumbnail:hover {
-moz-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
}
+.popover-title:empty {
+ display: none;
+}
.popover-content {
padding: 9px 14px;
}
@@ -4765,7 +4874,7 @@ a.thumbnail:hover {
background-color: #e5e5e5;
border-bottom: 1px solid #ffffff;
}
-.dropdown-menu li > a {
+.dropdown-menu > li > a {
display: block;
padding: 3px 20px;
clear: both;
@@ -4774,9 +4883,10 @@ a.thumbnail:hover {
color: #333333;
white-space: nowrap;
}
-.dropdown-menu li > a:hover,
-.dropdown-menu li > a:focus,
-.dropdown-submenu:hover > a {
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus,
+.dropdown-submenu:hover > a,
+.dropdown-submenu:focus > a {
text-decoration: none;
color: #ffffff;
background-color: #0081c2;
@@ -4788,8 +4898,9 @@ a.thumbnail:hover {
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
}
-.dropdown-menu .active > a,
-.dropdown-menu .active > a:hover {
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
color: #ffffff;
text-decoration: none;
outline: 0;
@@ -4802,11 +4913,13 @@ a.thumbnail:hover {
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
}
-.dropdown-menu .disabled > a,
-.dropdown-menu .disabled > a:hover {
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
color: #999999;
}
-.dropdown-menu .disabled > a:hover {
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
text-decoration: none;
background-color: transparent;
background-image: none;
@@ -4816,7 +4929,7 @@ a.thumbnail:hover {
.open {
*z-index: 1000;
}
-.open > .dropdown-menu {
+.open > .dropdown-menu {
display: block;
}
.pull-right > .dropdown-menu {
@@ -4938,7 +5051,8 @@ a.thumbnail:hover {
-o-transition: 0.6s ease-in-out left;
transition: 0.6s ease-in-out left;
}
-.carousel-inner > .item > img {
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
display: block;
line-height: 1;
}
@@ -4996,12 +5110,35 @@ a.thumbnail:hover {
left: auto;
right: 15px;
}
-.carousel-control:hover {
+.carousel-control:hover,
+.carousel-control:focus {
color: #ffffff;
text-decoration: none;
opacity: 0.9;
filter: alpha(opacity=90);
}
+.carousel-indicators {
+ position: absolute;
+ top: 15px;
+ right: 15px;
+ z-index: 5;
+ margin: 0;
+ list-style: none;
+}
+.carousel-indicators li {
+ display: block;
+ float: left;
+ width: 10px;
+ height: 10px;
+ margin-left: 5px;
+ text-indent: -999px;
+ background-color: #ccc;
+ background-color: rgba(255, 255, 255, 0.25);
+ border-radius: 5px;
+}
+.carousel-indicators .active {
+ background-color: #fff;
+}
.carousel-caption {
position: absolute;
left: 0;
@@ -5061,7 +5198,8 @@ a.thumbnail:hover {
opacity: 0.2;
filter: alpha(opacity=20);
}
-.close:hover {
+.close:hover,
+.close:focus {
color: #000000;
text-decoration: none;
cursor: pointer;
@@ -5115,6 +5253,9 @@ button.close {
.collapse.in {
height: auto;
}
+@-ms-viewport {
+ width: device-width;
+}
.hidden {
display: none;
visibility: hidden;
@@ -5159,6 +5300,17 @@ button.close {
display: none !important;
}
}
+.visible-print {
+ display: none !important;
+}
+@media print {
+ .visible-print {
+ display: inherit !important;
+ }
+ .hidden-print {
+ display: none !important;
+ }
+}
@media (max-width: 767px) {
body {
padding-left: 20px;
@@ -5586,40 +5738,64 @@ button.close {
.controls-row [class*="span"] + [class*="span"] {
margin-left: 20px;
}
- input.span12, textarea.span12, .uneditable-input.span12 {
+ input.span12,
+ textarea.span12,
+ .uneditable-input.span12 {
width: 710px;
}
- input.span11, textarea.span11, .uneditable-input.span11 {
+ input.span11,
+ textarea.span11,
+ .uneditable-input.span11 {
width: 648px;
}
- input.span10, textarea.span10, .uneditable-input.span10 {
+ input.span10,
+ textarea.span10,
+ .uneditable-input.span10 {
width: 586px;
}
- input.span9, textarea.span9, .uneditable-input.span9 {
+ input.span9,
+ textarea.span9,
+ .uneditable-input.span9 {
width: 524px;
}
- input.span8, textarea.span8, .uneditable-input.span8 {
+ input.span8,
+ textarea.span8,
+ .uneditable-input.span8 {
width: 462px;
}
- input.span7, textarea.span7, .uneditable-input.span7 {
+ input.span7,
+ textarea.span7,
+ .uneditable-input.span7 {
width: 400px;
}
- input.span6, textarea.span6, .uneditable-input.span6 {
+ input.span6,
+ textarea.span6,
+ .uneditable-input.span6 {
width: 338px;
}
- input.span5, textarea.span5, .uneditable-input.span5 {
+ input.span5,
+ textarea.span5,
+ .uneditable-input.span5 {
width: 276px;
}
- input.span4, textarea.span4, .uneditable-input.span4 {
+ input.span4,
+ textarea.span4,
+ .uneditable-input.span4 {
width: 214px;
}
- input.span3, textarea.span3, .uneditable-input.span3 {
+ input.span3,
+ textarea.span3,
+ .uneditable-input.span3 {
width: 152px;
}
- input.span2, textarea.span2, .uneditable-input.span2 {
+ input.span2,
+ textarea.span2,
+ .uneditable-input.span2 {
width: 90px;
}
- input.span1, textarea.span1, .uneditable-input.span1 {
+ input.span1,
+ textarea.span1,
+ .uneditable-input.span1 {
width: 28px;
}
}
@@ -5902,40 +6078,64 @@ button.close {
.controls-row [class*="span"] + [class*="span"] {
margin-left: 30px;
}
- input.span12, textarea.span12, .uneditable-input.span12 {
+ input.span12,
+ textarea.span12,
+ .uneditable-input.span12 {
width: 1156px;
}
- input.span11, textarea.span11, .uneditable-input.span11 {
+ input.span11,
+ textarea.span11,
+ .uneditable-input.span11 {
width: 1056px;
}
- input.span10, textarea.span10, .uneditable-input.span10 {
+ input.span10,
+ textarea.span10,
+ .uneditable-input.span10 {
width: 956px;
}
- input.span9, textarea.span9, .uneditable-input.span9 {
+ input.span9,
+ textarea.span9,
+ .uneditable-input.span9 {
width: 856px;
}
- input.span8, textarea.span8, .uneditable-input.span8 {
+ input.span8,
+ textarea.span8,
+ .uneditable-input.span8 {
width: 756px;
}
- input.span7, textarea.span7, .uneditable-input.span7 {
+ input.span7,
+ textarea.span7,
+ .uneditable-input.span7 {
width: 656px;
}
- input.span6, textarea.span6, .uneditable-input.span6 {
+ input.span6,
+ textarea.span6,
+ .uneditable-input.span6 {
width: 556px;
}
- input.span5, textarea.span5, .uneditable-input.span5 {
+ input.span5,
+ textarea.span5,
+ .uneditable-input.span5 {
width: 456px;
}
- input.span4, textarea.span4, .uneditable-input.span4 {
+ input.span4,
+ textarea.span4,
+ .uneditable-input.span4 {
width: 356px;
}
- input.span3, textarea.span3, .uneditable-input.span3 {
+ input.span3,
+ textarea.span3,
+ .uneditable-input.span3 {
width: 256px;
}
- input.span2, textarea.span2, .uneditable-input.span2 {
+ input.span2,
+ textarea.span2,
+ .uneditable-input.span2 {
width: 156px;
}
- input.span1, textarea.span1, .uneditable-input.span1 {
+ input.span1,
+ textarea.span1,
+ .uneditable-input.span1 {
width: 56px;
}
.thumbnails {
@@ -6015,7 +6215,9 @@ button.close {
margin-bottom: 2px;
}
.nav-collapse .nav > li > a:hover,
- .nav-collapse .dropdown-menu a:hover {
+ .nav-collapse .nav > li > a:focus,
+ .nav-collapse .dropdown-menu a:hover,
+ .nav-collapse .dropdown-menu a:focus {
background-color: #f2f2f2;
}
.navbar-inverse .nav-collapse .nav > li > a,
@@ -6023,7 +6225,9 @@ button.close {
color: #999999;
}
.navbar-inverse .nav-collapse .nav > li > a:hover,
- .navbar-inverse .nav-collapse .dropdown-menu a:hover {
+ .navbar-inverse .nav-collapse .nav > li > a:focus,
+ .navbar-inverse .nav-collapse .dropdown-menu a:hover,
+ .navbar-inverse .nav-collapse .dropdown-menu a:focus {
background-color: #111111;
}
.nav-collapse.in .btn-group {
diff --git a/module/web/static/css/default/dashboard.less b/module/web/static/css/default/dashboard.less
index 1cd9a1bc5..2677b4035 100644
--- a/module/web/static/css/default/dashboard.less
+++ b/module/web/static/css/default/dashboard.less
@@ -113,6 +113,11 @@
text-shadow: none;
}
+ .tooltip {
+ text-shadow: none;
+ width: 100%;
+ }
+
}
// Tag area with different effect on hover
diff --git a/module/web/static/css/default/style.less b/module/web/static/css/default/style.less
index 3e2a42abf..7c857227f 100644
--- a/module/web/static/css/default/style.less
+++ b/module/web/static/css/default/style.less
@@ -241,6 +241,7 @@ header .logo {
line-height: 16px;
.popover { // display: block;
+ max-width: none;
width: 120%;
left: -60%; // Half of width
margin-left: 50%;
@@ -251,8 +252,12 @@ header .logo {
color: @greyDark;
}
- i.icon-tasks {
+ .iconf-list {
cursor: pointer;
+
+ &:hover {
+ color: @yellow;
+ }
}
.close {
@@ -311,7 +316,6 @@ header .logo {
.header-area {
display: none; // hidden by default
- overflow: hidden;
position: absolute;
line-height: 18px;
top: @header-height;
diff --git a/module/web/static/img/glyphicons-halflings-white.png b/module/web/static/img/glyphicons-halflings-white.png
index 3bf6484a2..3bf6484a2 100644..100755
--- a/module/web/static/img/glyphicons-halflings-white.png
+++ b/module/web/static/img/glyphicons-halflings-white.png
Binary files differ
diff --git a/module/web/static/img/glyphicons-halflings.png b/module/web/static/img/glyphicons-halflings.png
index a99699932..a99699932 100644..100755
--- a/module/web/static/img/glyphicons-halflings.png
+++ b/module/web/static/img/glyphicons-halflings.png
Binary files differ
diff --git a/module/web/static/js/config.js b/module/web/static/js/config.js
index 0c0eac3fc..5bdfcf201 100644
--- a/module/web/static/js/config.js
+++ b/module/web/static/js/config.js
@@ -11,7 +11,7 @@ require.config({
animate: "libs/jquery.animate-enhanced-0.99",
omniwindow: "libs/jquery.omniwindow",
select2: "libs/select2-3.2",
- bootstrap: "libs/bootstrap-2.2.2",
+ bootstrap: "libs/bootstrap-2.3",
underscore: "libs/lodash-1.0.rc3",
backbone: "libs/backbone-0.9.10",
diff --git a/module/web/static/js/libs/bootstrap-2.2.2.js b/module/web/static/js/libs/bootstrap-2.3.js
index 56621401c..09b812c4f 100755
--- a/module/web/static/js/libs/bootstrap-2.2.2.js
+++ b/module/web/static/js/libs/bootstrap-2.3.js
@@ -1,5 +1,5 @@
/* ===================================================
- * bootstrap-transition.js v2.2.2
+ * bootstrap-transition.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#transitions
* ===================================================
* Copyright 2012 Twitter, Inc.
@@ -59,7 +59,7 @@
}(window.jQuery);
/* =========================================================
- * bootstrap-modal.js v2.2.2
+ * bootstrap-modal.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#modals
* =========================================================
* Copyright 2012 Twitter, Inc.
@@ -120,8 +120,7 @@
that.$element.appendTo(document.body) //don't move modals dom position
}
- that.$element
- .show()
+ that.$element.show()
if (transition) {
that.$element[0].offsetWidth // force reflow
@@ -199,12 +198,13 @@
})
}
- , hideModal: function (that) {
- this.$element
- .hide()
- .trigger('hidden')
-
- this.backdrop()
+ , hideModal: function () {
+ var that = this
+ this.$element.hide()
+ this.backdrop(function () {
+ that.removeBackdrop()
+ that.$element.trigger('hidden')
+ })
}
, removeBackdrop: function () {
@@ -232,6 +232,8 @@
this.$backdrop.addClass('in')
+ if (!callback) return
+
doAnimate ?
this.$backdrop.one($.support.transition.end, callback) :
callback()
@@ -240,8 +242,8 @@
this.$backdrop.removeClass('in')
$.support.transition && this.$element.hasClass('fade')?
- this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
- this.removeBackdrop()
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
} else if (callback) {
callback()
@@ -305,7 +307,7 @@
}(window.jQuery);
/* ============================================================
- * bootstrap-dropdown.js v2.2.2
+ * bootstrap-dropdown.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================
* Copyright 2012 Twitter, Inc.
@@ -387,7 +389,10 @@
isActive = $parent.hasClass('open')
- if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
+ if (!isActive || (isActive && e.keyCode == 27)) {
+ if (e.which == 27) $parent.find(toggle).focus()
+ return $this.click()
+ }
$items = $('[role=menu] li:not(.divider):visible a', $parent)
@@ -421,8 +426,9 @@
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}
- $parent = $(selector)
- $parent.length || ($parent = $this.parent())
+ $parent = selector && $(selector)
+
+ if (!$parent || !$parent.length) $parent = $this.parent()
return $parent
}
@@ -458,15 +464,16 @@
* =================================== */
$(document)
- .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
- .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
- .on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() })
- .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
- .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+ .on('click.dropdown.data-api', clearMenus)
+ .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('.dropdown-menu', function (e) { e.stopPropagation() })
+ .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
+ .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
}(window.jQuery);
+
/* =============================================================
- * bootstrap-scrollspy.js v2.2.2
+ * bootstrap-scrollspy.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#scrollspy
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -526,7 +533,7 @@
, $href = /^#\w/.test(href) && $(href)
return ( $href
&& $href.length
- && [[ $href.position().top + self.$scrollElement.scrollTop(), href ]] ) || null
+ && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
})
.sort(function (a, b) { return a[0] - b[0] })
.each(function () {
@@ -628,7 +635,7 @@
}(window.jQuery);
/* ========================================================
- * bootstrap-tab.js v2.2.2
+ * bootstrap-tab.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#tabs
* ========================================================
* Copyright 2012 Twitter, Inc.
@@ -772,7 +779,7 @@
}(window.jQuery);
/* ===========================================================
- * bootstrap-tooltip.js v2.2.2
+ * bootstrap-tooltip.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#tooltips
* Inspired by the original jQuery.tipsy by Jason Frame
* ===========================================================
@@ -811,19 +818,27 @@
, init: function (type, element, options) {
var eventIn
, eventOut
+ , triggers
+ , trigger
+ , i
this.type = type
this.$element = $(element)
this.options = this.getOptions(options)
this.enabled = true
- if (this.options.trigger == 'click') {
- this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
- } else if (this.options.trigger != 'manual') {
- eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
- eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
- this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
- this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+ triggers = this.options.trigger.split(' ')
+
+ for (i = triggers.length; i--;) {
+ trigger = triggers[i]
+ if (trigger == 'click') {
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+ } else if (trigger != 'manual') {
+ eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
+ eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+ }
}
this.options.selector ?
@@ -832,7 +847,7 @@
}
, getOptions: function (options) {
- options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
+ options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
if (options.delay && typeof options.delay == 'number') {
options.delay = {
@@ -870,14 +885,16 @@
, show: function () {
var $tip
- , inside
, pos
, actualWidth
, actualHeight
, placement
, tp
+ , e = $.Event('show')
if (this.hasContent() && this.enabled) {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
$tip = this.tip()
this.setContent()
@@ -889,19 +906,18 @@
this.options.placement.call(this, $tip[0], this.$element[0]) :
this.options.placement
- inside = /in/.test(placement)
-
$tip
.detach()
.css({ top: 0, left: 0, display: 'block' })
- .insertAfter(this.$element)
- pos = this.getPosition(inside)
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+
+ pos = this.getPosition()
actualWidth = $tip[0].offsetWidth
actualHeight = $tip[0].offsetHeight
- switch (inside ? placement.split(' ')[1] : placement) {
+ switch (placement) {
case 'bottom':
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
break
@@ -916,13 +932,58 @@
break
}
- $tip
- .offset(tp)
- .addClass(placement)
- .addClass('in')
+ this.applyPlacement(tp, placement)
+ this.$element.trigger('shown')
}
}
+ , applyPlacement: function(offset, placement){
+ var $tip = this.tip()
+ , width = $tip[0].offsetWidth
+ , height = $tip[0].offsetHeight
+ , actualWidth
+ , actualHeight
+ , delta
+ , replace
+
+ $tip
+ .offset(offset)
+ .addClass(placement)
+ .addClass('in')
+
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+
+ if (placement == 'top' && actualHeight != height) {
+ offset.top = offset.top + height - actualHeight
+ replace = true
+ }
+
+ if (placement == 'bottom' || placement == 'top') {
+ delta = 0
+
+ if (offset.left < 0){
+ delta = offset.left * -2
+ offset.left = 0
+ $tip.offset(offset)
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+ }
+
+ this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
+ } else {
+ this.replaceArrow(actualHeight - height, actualHeight, 'top')
+ }
+
+ if (replace) $tip.offset(offset)
+ }
+
+ , replaceArrow: function(delta, dimension, position){
+ this
+ .arrow()
+ .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
+ }
+
, setContent: function () {
var $tip = this.tip()
, title = this.getTitle()
@@ -934,6 +995,10 @@
, hide: function () {
var that = this
, $tip = this.tip()
+ , e = $.Event('hide')
+
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
$tip.removeClass('in')
@@ -952,13 +1017,15 @@
removeWithAnimation() :
$tip.detach()
+ this.$element.trigger('hidden')
+
return this
}
, fixTitle: function () {
var $e = this.$element
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
- $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
}
}
@@ -966,11 +1033,12 @@
return this.getTitle()
}
- , getPosition: function (inside) {
- return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
- width: this.$element[0].offsetWidth
- , height: this.$element[0].offsetHeight
- })
+ , getPosition: function () {
+ var el = this.$element[0]
+ return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
+ width: el.offsetWidth
+ , height: el.offsetHeight
+ }, this.$element.offset())
}
, getTitle: function () {
@@ -988,6 +1056,10 @@
return this.$tip = this.$tip || $(this.options.template)
}
+ , arrow: function(){
+ return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
+ }
+
, validate: function () {
if (!this.$element[0].parentNode) {
this.hide()
@@ -1009,8 +1081,8 @@
}
, toggle: function (e) {
- var self = $(e.currentTarget)[this.type](this._options).data(this.type)
- self[self.tip().hasClass('in') ? 'hide' : 'show']()
+ var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
+ self.tip().hasClass('in') ? self.hide() : self.show()
}
, destroy: function () {
@@ -1042,10 +1114,11 @@
, placement: 'top'
, selector: false
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
- , trigger: 'hover'
+ , trigger: 'hover focus'
, title: ''
, delay: 0
, html: false
+ , container: false
}
@@ -1058,8 +1131,9 @@
}
}(window.jQuery);
+
/* ===========================================================
- * bootstrap-popover.js v2.2.2
+ * bootstrap-popover.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#popovers
* ===========================================================
* Copyright 2012 Twitter, Inc.
@@ -1118,8 +1192,8 @@
, $e = this.$element
, o = this.options
- content = $e.attr('data-content')
- || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
+ content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
+ || $e.attr('data-content')
return content
}
@@ -1159,7 +1233,7 @@
placement: 'right'
, trigger: 'click'
, content: ''
- , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"></div></div></div>'
+ , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
})
@@ -1172,8 +1246,9 @@
}
}(window.jQuery);
+
/* ==========================================================
- * bootstrap-affix.js v2.2.2
+ * bootstrap-affix.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#affix
* ==========================================================
* Copyright 2012 Twitter, Inc.
@@ -1290,7 +1365,7 @@
}(window.jQuery);
/* ==========================================================
- * bootstrap-alert.js v2.2.2
+ * bootstrap-alert.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#alerts
* ==========================================================
* Copyright 2012 Twitter, Inc.
@@ -1389,7 +1464,7 @@
}(window.jQuery);
/* ============================================================
- * bootstrap-button.js v2.2.2
+ * bootstrap-button.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================
* Copyright 2012 Twitter, Inc.
@@ -1494,7 +1569,7 @@
}(window.jQuery);
/* =============================================================
- * bootstrap-collapse.js v2.2.2
+ * bootstrap-collapse.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#collapse
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -1547,7 +1622,7 @@
, actives
, hasData
- if (this.transitioning) return
+ if (this.transitioning || this.$element.hasClass('in')) return
dimension = this.dimension()
scroll = $.camelCase(['scroll', dimension].join('-'))
@@ -1567,7 +1642,7 @@
, hide: function () {
var dimension
- if (this.transitioning) return
+ if (this.transitioning || !this.$element.hasClass('in')) return
dimension = this.dimension()
this.reset(this.$element[dimension]())
this.transition('removeClass', $.Event('hide'), 'hidden')
@@ -1624,7 +1699,7 @@
return this.each(function () {
var $this = $(this)
, data = $this.data('collapse')
- , options = typeof option == 'object' && option
+ , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]()
})
@@ -1661,7 +1736,7 @@
}(window.jQuery);
/* ==========================================================
- * bootstrap-carousel.js v2.2.2
+ * bootstrap-carousel.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#carousel
* ==========================================================
* Copyright 2012 Twitter, Inc.
@@ -1690,6 +1765,7 @@
var Carousel = function (element, options) {
this.$element = $(element)
+ this.$indicators = this.$element.find('.carousel-indicators')
this.options = options
this.options.pause == 'hover' && this.$element
.on('mouseenter', $.proxy(this.pause, this))
@@ -1700,19 +1776,24 @@
cycle: function (e) {
if (!e) this.paused = false
+ if (this.interval) clearInterval(this.interval);
this.options.interval
&& !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this
}
+ , getActiveIndex: function () {
+ this.$active = this.$element.find('.item.active')
+ this.$items = this.$active.parent().children()
+ return this.$items.index(this.$active)
+ }
+
, to: function (pos) {
- var $active = this.$element.find('.item.active')
- , children = $active.parent().children()
- , activePos = children.index($active)
+ var activeIndex = this.getActiveIndex()
, that = this
- if (pos > (children.length - 1) || pos < 0) return
+ if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) {
return this.$element.one('slid', function () {
@@ -1720,11 +1801,11 @@
})
}
- if (activePos == pos) {
+ if (activeIndex == pos) {
return this.pause().cycle()
}
- return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
+ return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
}
, pause: function (e) {
@@ -1765,10 +1846,19 @@
e = $.Event('slide', {
relatedTarget: $next[0]
+ , direction: direction
})
if ($next.hasClass('active')) return
+ if (this.$indicators.length) {
+ this.$indicators.find('.active').removeClass('active')
+ this.$element.one('slid', function () {
+ var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
+ $nextIndicator && $nextIndicator.addClass('active')
+ })
+ }
+
if ($.support.transition && this.$element.hasClass('slide')) {
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
@@ -1813,7 +1903,7 @@
if (!data) $this.data('carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option)
else if (action) data[action]()
- else if (options.interval) data.cycle()
+ else if (options.interval) data.pause().cycle()
})
}
@@ -1836,17 +1926,24 @@
/* CAROUSEL DATA-API
* ================= */
- $(document).on('click.carousel.data-api', '[data-slide]', function (e) {
+ $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
var $this = $(this), href
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
, options = $.extend({}, $target.data(), $this.data())
+ , slideIndex
+
$target.carousel(options)
+
+ if (slideIndex = $this.attr('data-slide-to')) {
+ $target.data('carousel').pause().to(slideIndex).cycle()
+ }
+
e.preventDefault()
})
}(window.jQuery);
/* =============================================================
- * bootstrap-typeahead.js v2.2.2
+ * bootstrap-typeahead.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#typeahead
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -2019,6 +2116,7 @@
, listen: function () {
this.$element
+ .on('focus', $.proxy(this.focus, this))
.on('blur', $.proxy(this.blur, this))
.on('keypress', $.proxy(this.keypress, this))
.on('keyup', $.proxy(this.keyup, this))
@@ -2030,6 +2128,7 @@
this.$menu
.on('click', $.proxy(this.click, this))
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+ .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
}
, eventSupported: function(eventName) {
@@ -2103,22 +2202,33 @@
e.preventDefault()
}
+ , focus: function (e) {
+ this.focused = true
+ }
+
, blur: function (e) {
- var that = this
- setTimeout(function () { that.hide() }, 150)
+ this.focused = false
+ if (!this.mousedover && this.shown) this.hide()
}
, click: function (e) {
e.stopPropagation()
e.preventDefault()
this.select()
+ this.$element.focus()
}
, mouseenter: function (e) {
+ this.mousedover = true
this.$menu.find('.active').removeClass('active')
$(e.currentTarget).addClass('active')
}
+ , mouseleave: function (e) {
+ this.mousedover = false
+ if (!this.focused && this.shown) this.hide()
+ }
+
}
@@ -2163,7 +2273,6 @@
$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
var $this = $(this)
if ($this.data('typeahead')) return
- e.preventDefault()
$this.typeahead($this.data())
})
diff --git a/module/web/static/js/utils/animations.js b/module/web/static/js/utils/animations.js
index 789359e0c..ea06669b3 100644
--- a/module/web/static/js/utils/animations.js
+++ b/module/web/static/js/utils/animations.js
@@ -44,7 +44,7 @@ define(['jquery', 'underscore', 'transit'], function(jQuery, _) {
};
// calculate the height and write it to data, better used on invisible elements
- jQuery.fn.calculateHeight = function() {
+ jQuery.fn.calculateHeight = function(setHeight) {
var o = jQuery(this[0]);
var height = o.height();
if (!height) {
@@ -57,6 +57,9 @@ define(['jquery', 'underscore', 'transit'], function(jQuery, _) {
o.css('visibility', '');
}
+ if (setHeight)
+ o.css('height', height);
+
o.data('height', height);
return this;
};
@@ -78,7 +81,11 @@ define(['jquery', 'underscore', 'transit'], function(jQuery, _) {
placement || (placement = 'top');
var o = jQuery(this[0]);
- o.find('[data-toggle="tooltip"]').tooltip({delay: {show: 500, hide: 100}, placement: placement});
+ o.find('[data-toggle="tooltip"]').tooltip(
+ {
+ delay: {show: 800, hide: 100},
+ placement: placement
+ });
return this;
};
diff --git a/module/web/static/js/views/headerView.js b/module/web/static/js/views/headerView.js
index 43c66b99f..cfceca6cd 100644
--- a/module/web/static/js/views/headerView.js
+++ b/module/web/static/js/views/headerView.js
@@ -5,7 +5,7 @@ define(['jquery', 'underscore', 'backbone', 'flot'], function($, _, Backbone) {
el: 'header',
events: {
- 'click i.icon-tasks': 'show_taskList',
+ 'click i.iconf-list': 'toggle_taskList',
'click .popover .close': 'hide_taskList',
'click .btn-grabber': 'open_grabber'
},
@@ -17,8 +17,8 @@ define(['jquery', 'underscore', 'backbone', 'flot'], function($, _, Backbone) {
initialize: function() {
- this.notifications = this.$('#notification-area').calculateHeight();
- this.selections = this.$('#selection-area').calculateHeight();
+ this.notifications = this.$('#notification-area').calculateHeight().height(0);
+ this.selections = this.$('#selection-area').calculateHeight().height(0);
var totalPoints = 100;
var data = [];
@@ -81,8 +81,8 @@ define(['jquery', 'underscore', 'backbone', 'flot'], function($, _, Backbone) {
render: function() {
},
- show_taskList: function() {
- this.$('.popover').fadeIn();
+ toggle_taskList: function() {
+ this.$('.popover').animate({opacity: 'toggle'});
},
hide_taskList: function() {