kibana-sinatra 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/kibana-sinatra.gemspec +1 -0
- data/lib/kibana/assets/app/app.js +8 -3
- data/lib/kibana/assets/app/components/kbn.js +45 -10
- data/lib/kibana/assets/app/components/{underscore.extended.js → lodash.extended.js} +2 -4
- data/lib/kibana/assets/app/components/require.config.js +5 -6
- data/lib/kibana/assets/app/components/settings.js +1 -1
- data/lib/kibana/assets/app/controllers/dash.js +10 -5
- data/lib/kibana/assets/app/controllers/dashLoader.js +1 -1
- data/lib/kibana/assets/app/controllers/pulldown.js +1 -1
- data/lib/kibana/assets/app/controllers/row.js +1 -1
- data/lib/kibana/assets/app/dashboards/default.json +1 -1
- data/lib/kibana/assets/app/dashboards/logstash.js +4 -4
- data/lib/kibana/assets/app/dashboards/logstash.json +1 -1
- data/lib/kibana/assets/app/directives/addPanel.js +1 -1
- data/lib/kibana/assets/app/directives/arrayJoin.js +1 -1
- data/lib/kibana/assets/app/directives/configModal.js +23 -5
- data/lib/kibana/assets/app/directives/kibanaPanel.js +70 -50
- data/lib/kibana/assets/app/directives/kibanaSimplePanel.js +1 -1
- data/lib/kibana/assets/app/factories/store.js +59 -0
- data/lib/kibana/assets/app/filters/all.js +6 -13
- data/lib/kibana/assets/app/panels/bettermap/module.html +5 -0
- data/lib/kibana/assets/app/panels/bettermap/module.js +1 -1
- data/lib/kibana/assets/app/panels/column/editor.html +1 -1
- data/lib/kibana/assets/app/panels/column/module.js +7 -6
- data/lib/kibana/assets/app/panels/dashcontrol/module.js +1 -1
- data/lib/kibana/assets/app/panels/derivequeries/module.js +1 -1
- data/lib/kibana/assets/app/panels/fields/module.js +1 -1
- data/lib/kibana/assets/app/panels/filtering/module.html +10 -17
- data/lib/kibana/assets/app/panels/filtering/module.js +19 -1
- data/lib/kibana/assets/app/panels/histogram/module.html +4 -4
- data/lib/kibana/assets/app/panels/histogram/module.js +62 -12
- data/lib/kibana/assets/app/panels/histogram/timeSeries.js +6 -3
- data/lib/kibana/assets/app/panels/hits/module.js +1 -1
- data/lib/kibana/assets/app/panels/map/module.js +1 -1
- data/lib/kibana/assets/app/panels/pie/editor.html +1 -1
- data/lib/kibana/assets/app/panels/pie/module.js +1 -1
- data/lib/kibana/assets/app/panels/query/meta.html +1 -1
- data/lib/kibana/assets/app/panels/query/module.html +1 -1
- data/lib/kibana/assets/app/panels/query/module.js +2 -7
- data/lib/kibana/assets/app/panels/query/query.css +9 -7
- data/lib/kibana/assets/app/panels/sparklines/module.js +2 -2
- data/lib/kibana/assets/app/panels/sparklines/timeSeries.js +3 -3
- data/lib/kibana/assets/app/panels/stats/editor.html +36 -0
- data/lib/kibana/assets/app/panels/stats/module.html +15 -0
- data/lib/kibana/assets/app/panels/stats/module.js +199 -0
- data/lib/kibana/assets/app/panels/table/editor.html +23 -27
- data/lib/kibana/assets/app/panels/table/micropanel.html +3 -1
- data/lib/kibana/assets/app/panels/table/module.js +7 -1
- data/lib/kibana/assets/app/panels/terms/editor.html +16 -3
- data/lib/kibana/assets/app/panels/terms/module.html +14 -5
- data/lib/kibana/assets/app/panels/terms/module.js +66 -18
- data/lib/kibana/assets/app/panels/text/module.js +1 -1
- data/lib/kibana/assets/app/panels/timepicker/editor.html +14 -12
- data/lib/kibana/assets/app/panels/timepicker/module.html +3 -8
- data/lib/kibana/assets/app/panels/timepicker/module.js +1 -1
- data/lib/kibana/assets/app/panels/trends/module.js +1 -1
- data/lib/kibana/assets/app/partials/dashLoader.html +10 -10
- data/lib/kibana/assets/app/partials/dashboard.html +35 -44
- data/lib/kibana/assets/app/partials/dasheditor.html +7 -5
- data/lib/kibana/assets/app/partials/paneleditor.html +2 -1
- data/lib/kibana/assets/app/partials/panelgeneral.html +1 -1
- data/lib/kibana/assets/app/partials/roweditor.html +11 -9
- data/lib/kibana/assets/app/services/alertSrv.js +1 -1
- data/lib/kibana/assets/app/services/dashboard.js +27 -14
- data/lib/kibana/assets/app/services/esVersion.js +70 -31
- data/lib/kibana/assets/app/services/fields.js +14 -37
- data/lib/kibana/assets/app/services/filterSrv.js +7 -11
- data/lib/kibana/assets/app/services/kbnIndex.js +24 -15
- data/lib/kibana/assets/app/services/panelMove.js +1 -1
- data/lib/kibana/assets/app/services/querySrv.js +20 -6
- data/lib/kibana/assets/app/services/timer.js +1 -1
- data/lib/kibana/assets/css/bootstrap.dark.min.css +1 -1
- data/lib/kibana/assets/css/bootstrap.light.min.css +1 -1
- data/lib/kibana/assets/img/cubes.png +0 -0
- data/lib/kibana/assets/img/light.png +0 -0
- data/lib/kibana/assets/index.html +3 -2
- data/lib/kibana/assets/vendor/LICENSE.json +90 -0
- data/lib/kibana/assets/vendor/angular/angular-cookies.js +185 -0
- data/lib/kibana/assets/vendor/angular/angular-dragdrop.js +33 -4
- data/lib/kibana/assets/vendor/blob.js +178 -0
- data/lib/kibana/assets/vendor/bootstrap/bootstrap.js +6 -1
- data/lib/kibana/assets/vendor/bootstrap/less/bak/bootswatch.dark.less +555 -0
- data/lib/kibana/assets/vendor/bootstrap/less/bak/variables.dark.less +304 -0
- data/lib/kibana/assets/vendor/bootstrap/less/bootswatch.dark.less +349 -327
- data/lib/kibana/assets/vendor/bootstrap/less/bootswatch.light.less +590 -7
- data/lib/kibana/assets/vendor/bootstrap/less/modals.less +1 -1
- data/lib/kibana/assets/vendor/bootstrap/less/overrides.less +191 -75
- data/lib/kibana/assets/vendor/bootstrap/less/variables.dark.less +96 -97
- data/lib/kibana/assets/vendor/bootstrap/less/variables.light.less +84 -81
- data/lib/kibana/assets/vendor/jquery/jquery.flot.events.js +39 -51
- data/lib/kibana/assets/vendor/lodash.js +6785 -0
- data/lib/kibana/assets/vendor/numeral.js +565 -0
- data/lib/kibana/sinatra/version.rb +1 -1
- data/lib/kibana/views/config.erb +1 -0
- data/test/sinatra_test.rb +2 -2
- metadata +30 -4
- data/lib/kibana/assets/vendor/underscore.js +0 -1246
@@ -1,7 +1,36 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
/**
|
2
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
3
|
+
* of this software and associated documentation files (the "Software"), to
|
4
|
+
* deal in the Software without restriction, including without limitation the
|
5
|
+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
6
|
+
* sell copies of the Software, and to permit persons to whom the Software is
|
7
|
+
* furnished to do so, subject to the following conditions:
|
8
|
+
*
|
9
|
+
* The above copyright notice and this permission notice shall be included in
|
10
|
+
* all copies or substantial portions of the Software.
|
11
|
+
*
|
12
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
13
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
14
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
15
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
16
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
17
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
18
|
+
* IN THE SOFTWARE.
|
19
|
+
*/
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Implementing Drag and Drop functionality in AngularJS is easier than ever.
|
23
|
+
* Demo: http://codef0rmer.github.com/angular-dragdrop/
|
24
|
+
*
|
25
|
+
* @version 1.0.4
|
26
|
+
*
|
27
|
+
* (c) 2013 Amit Gharat a.k.a codef0rmer <amit.2006.it@gmail.com> - amitgharat.wordpress.com
|
28
|
+
*/
|
29
|
+
|
30
|
+
/**
|
31
|
+
* This has been modified from the default angular-draganddrop to provide the original
|
32
|
+
* model and some other stuff as the 'data' arguement to callEventCallback
|
33
|
+
*/
|
5
34
|
|
6
35
|
(function (window, angular, undefined) {
|
7
36
|
'use strict';
|
@@ -0,0 +1,178 @@
|
|
1
|
+
/* Blob.js
|
2
|
+
* A Blob implementation.
|
3
|
+
* 2013-06-20
|
4
|
+
*
|
5
|
+
* By Eli Grey, http://eligrey.com
|
6
|
+
* By Devin Samarin, https://github.com/eboyjr
|
7
|
+
* License: X11/MIT
|
8
|
+
* See LICENSE.md
|
9
|
+
*/
|
10
|
+
|
11
|
+
/*global self, unescape */
|
12
|
+
/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
|
13
|
+
plusplus: true */
|
14
|
+
|
15
|
+
/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
|
16
|
+
|
17
|
+
if (typeof Blob !== "function" || typeof URL === "undefined")
|
18
|
+
if (typeof Blob === "function" && typeof webkitURL !== "undefined") var URL = webkitURL;
|
19
|
+
else var Blob = (function (view) {
|
20
|
+
"use strict";
|
21
|
+
|
22
|
+
var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || view.MSBlobBuilder || (function(view) {
|
23
|
+
var
|
24
|
+
get_class = function(object) {
|
25
|
+
return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
|
26
|
+
}
|
27
|
+
, FakeBlobBuilder = function BlobBuilder() {
|
28
|
+
this.data = [];
|
29
|
+
}
|
30
|
+
, FakeBlob = function Blob(data, type, encoding) {
|
31
|
+
this.data = data;
|
32
|
+
this.size = data.length;
|
33
|
+
this.type = type;
|
34
|
+
this.encoding = encoding;
|
35
|
+
}
|
36
|
+
, FBB_proto = FakeBlobBuilder.prototype
|
37
|
+
, FB_proto = FakeBlob.prototype
|
38
|
+
, FileReaderSync = view.FileReaderSync
|
39
|
+
, FileException = function(type) {
|
40
|
+
this.code = this[this.name = type];
|
41
|
+
}
|
42
|
+
, file_ex_codes = (
|
43
|
+
"NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
|
44
|
+
+ "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
|
45
|
+
).split(" ")
|
46
|
+
, file_ex_code = file_ex_codes.length
|
47
|
+
, real_URL = view.URL || view.webkitURL || view
|
48
|
+
, real_create_object_URL = real_URL.createObjectURL
|
49
|
+
, real_revoke_object_URL = real_URL.revokeObjectURL
|
50
|
+
, URL = real_URL
|
51
|
+
, btoa = view.btoa
|
52
|
+
, atob = view.atob
|
53
|
+
, can_apply_typed_arrays = false
|
54
|
+
, can_apply_typed_arrays_test = function(pass) {
|
55
|
+
can_apply_typed_arrays = !pass;
|
56
|
+
}
|
57
|
+
|
58
|
+
, ArrayBuffer = view.ArrayBuffer
|
59
|
+
, Uint8Array = view.Uint8Array
|
60
|
+
;
|
61
|
+
FakeBlob.fake = FB_proto.fake = true;
|
62
|
+
while (file_ex_code--) {
|
63
|
+
FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
|
64
|
+
}
|
65
|
+
try {
|
66
|
+
if (Uint8Array) {
|
67
|
+
can_apply_typed_arrays_test.apply(0, new Uint8Array(1));
|
68
|
+
}
|
69
|
+
} catch (ex) {}
|
70
|
+
if (!real_URL.createObjectURL) {
|
71
|
+
URL = view.URL = {};
|
72
|
+
}
|
73
|
+
URL.createObjectURL = function(blob) {
|
74
|
+
var
|
75
|
+
type = blob.type
|
76
|
+
, data_URI_header
|
77
|
+
;
|
78
|
+
if (type === null) {
|
79
|
+
type = "application/octet-stream";
|
80
|
+
}
|
81
|
+
if (blob instanceof FakeBlob) {
|
82
|
+
data_URI_header = "data:" + type;
|
83
|
+
if (blob.encoding === "base64") {
|
84
|
+
return data_URI_header + ";base64," + blob.data;
|
85
|
+
} else if (blob.encoding === "URI") {
|
86
|
+
return data_URI_header + "," + decodeURIComponent(blob.data);
|
87
|
+
} if (btoa) {
|
88
|
+
return data_URI_header + ";base64," + btoa(blob.data);
|
89
|
+
} else {
|
90
|
+
return data_URI_header + "," + encodeURIComponent(blob.data);
|
91
|
+
}
|
92
|
+
} else if (real_create_object_URL) {
|
93
|
+
return real_create_object_URL.call(real_URL, blob);
|
94
|
+
}
|
95
|
+
};
|
96
|
+
URL.revokeObjectURL = function(object_URL) {
|
97
|
+
if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
|
98
|
+
real_revoke_object_URL.call(real_URL, object_URL);
|
99
|
+
}
|
100
|
+
};
|
101
|
+
FBB_proto.append = function(data/*, endings*/) {
|
102
|
+
var bb = this.data;
|
103
|
+
// decode data to a binary string
|
104
|
+
if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
|
105
|
+
if (can_apply_typed_arrays) {
|
106
|
+
bb.push(String.fromCharCode.apply(String, new Uint8Array(data)));
|
107
|
+
} else {
|
108
|
+
var
|
109
|
+
str = ""
|
110
|
+
, buf = new Uint8Array(data)
|
111
|
+
, i = 0
|
112
|
+
, buf_len = buf.length
|
113
|
+
;
|
114
|
+
for (; i < buf_len; i++) {
|
115
|
+
str += String.fromCharCode(buf[i]);
|
116
|
+
}
|
117
|
+
}
|
118
|
+
} else if (get_class(data) === "Blob" || get_class(data) === "File") {
|
119
|
+
if (FileReaderSync) {
|
120
|
+
var fr = new FileReaderSync;
|
121
|
+
bb.push(fr.readAsBinaryString(data));
|
122
|
+
} else {
|
123
|
+
// async FileReader won't work as BlobBuilder is sync
|
124
|
+
throw new FileException("NOT_READABLE_ERR");
|
125
|
+
}
|
126
|
+
} else if (data instanceof FakeBlob) {
|
127
|
+
if (data.encoding === "base64" && atob) {
|
128
|
+
bb.push(atob(data.data));
|
129
|
+
} else if (data.encoding === "URI") {
|
130
|
+
bb.push(decodeURIComponent(data.data));
|
131
|
+
} else if (data.encoding === "raw") {
|
132
|
+
bb.push(data.data);
|
133
|
+
}
|
134
|
+
} else {
|
135
|
+
if (typeof data !== "string") {
|
136
|
+
data += ""; // convert unsupported types to strings
|
137
|
+
}
|
138
|
+
// decode UTF-16 to binary string
|
139
|
+
bb.push(unescape(encodeURIComponent(data)));
|
140
|
+
}
|
141
|
+
};
|
142
|
+
FBB_proto.getBlob = function(type) {
|
143
|
+
if (!arguments.length) {
|
144
|
+
type = null;
|
145
|
+
}
|
146
|
+
return new FakeBlob(this.data.join(""), type, "raw");
|
147
|
+
};
|
148
|
+
FBB_proto.toString = function() {
|
149
|
+
return "[object BlobBuilder]";
|
150
|
+
};
|
151
|
+
FB_proto.slice = function(start, end, type) {
|
152
|
+
var args = arguments.length;
|
153
|
+
if (args < 3) {
|
154
|
+
type = null;
|
155
|
+
}
|
156
|
+
return new FakeBlob(
|
157
|
+
this.data.slice(start, args > 1 ? end : this.data.length)
|
158
|
+
, type
|
159
|
+
, this.encoding
|
160
|
+
);
|
161
|
+
};
|
162
|
+
FB_proto.toString = function() {
|
163
|
+
return "[object Blob]";
|
164
|
+
};
|
165
|
+
return FakeBlobBuilder;
|
166
|
+
}(view));
|
167
|
+
|
168
|
+
return function Blob(blobParts, options) {
|
169
|
+
var type = options ? (options.type || "") : "";
|
170
|
+
var builder = new BlobBuilder();
|
171
|
+
if (blobParts) {
|
172
|
+
for (var i = 0, len = blobParts.length; i < len; i++) {
|
173
|
+
builder.append(blobParts[i]);
|
174
|
+
}
|
175
|
+
}
|
176
|
+
return builder.getBlob(type);
|
177
|
+
};
|
178
|
+
}(self));
|
@@ -1908,6 +1908,7 @@
|
|
1908
1908
|
, select: function () {
|
1909
1909
|
// CHANGE (rashidkpc) If nothing is selected, use existing value
|
1910
1910
|
var val = this.$menu.find('.active').attr('data-value') || this.$element.val();
|
1911
|
+
val = $('<div />').html(val).text()
|
1911
1912
|
this.$element
|
1912
1913
|
.val(this.updater(val))
|
1913
1914
|
.change()
|
@@ -1968,6 +1969,10 @@
|
|
1968
1969
|
return this.shown ? this.hide() : this
|
1969
1970
|
}
|
1970
1971
|
|
1972
|
+
items = $.map(items,function(v,k){
|
1973
|
+
return $('<div />').text(v).html()
|
1974
|
+
})
|
1975
|
+
|
1971
1976
|
return this.render(items.slice(0, this.options.items)).show()
|
1972
1977
|
}
|
1973
1978
|
|
@@ -1993,7 +1998,7 @@
|
|
1993
1998
|
, highlighter: function (item) {
|
1994
1999
|
var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
|
1995
2000
|
return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
|
1996
|
-
return '<strong>' + match + '</strong>'
|
2001
|
+
return match.length > 0 ? '<strong>' + match + '</strong>' : match
|
1997
2002
|
})
|
1998
2003
|
}
|
1999
2004
|
|
@@ -0,0 +1,555 @@
|
|
1
|
+
// Slate 2.3.2
|
2
|
+
// Bootswatch
|
3
|
+
// -----------------------------------------------------
|
4
|
+
|
5
|
+
// KIBANA
|
6
|
+
.panelCont {
|
7
|
+
outline: 1px solid darken(@bodyBackground, 10%);
|
8
|
+
border-top: 1px solid lighten(@bodyBackground, 10%);
|
9
|
+
padding: 0px 10px 10px 10px;
|
10
|
+
background: darken(@bodyBackground, 3%);
|
11
|
+
margin: 0px;
|
12
|
+
}
|
13
|
+
|
14
|
+
|
15
|
+
// TYPOGRAPHY
|
16
|
+
// -----------------------------------------------------
|
17
|
+
|
18
|
+
h1, h2, h3, h4, h5, h6 {
|
19
|
+
text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
|
20
|
+
}
|
21
|
+
|
22
|
+
code, pre {
|
23
|
+
background-color: #F7F7F7;
|
24
|
+
border: 1px solid darken(@grayDarker, 5%);
|
25
|
+
text-shadow: none;
|
26
|
+
}
|
27
|
+
|
28
|
+
// SCAFFOLDING
|
29
|
+
// -----------------------------------------------------
|
30
|
+
|
31
|
+
legend, .page-header {
|
32
|
+
border-bottom: 1px solid @hrBorder;
|
33
|
+
}
|
34
|
+
|
35
|
+
hr {
|
36
|
+
border-bottom: none;
|
37
|
+
}
|
38
|
+
|
39
|
+
// NAVBAR
|
40
|
+
// -----------------------------------------------------
|
41
|
+
|
42
|
+
.navbar {
|
43
|
+
|
44
|
+
.navbar-inner {
|
45
|
+
#gradient > .vertical-three-colors(@grayDark, darken(@bodyBackground,3%), 70%, darken(@bodyBackground,3%));
|
46
|
+
}
|
47
|
+
|
48
|
+
.brand {
|
49
|
+
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
|
50
|
+
border-right: none;
|
51
|
+
}
|
52
|
+
|
53
|
+
.navbar-text {
|
54
|
+
padding: 0 15px;
|
55
|
+
font-weight: bold;
|
56
|
+
}
|
57
|
+
|
58
|
+
.nav > li > a {
|
59
|
+
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
|
60
|
+
border-right: 1px solid rgba(0, 0, 0, 0.2);
|
61
|
+
border-left: 1px solid rgba(255, 255, 255, 0.1);
|
62
|
+
|
63
|
+
&:hover {
|
64
|
+
#gradient > .directional(@grayDarker, @grayDark, 280deg);
|
65
|
+
border-left: 1px solid transparent;
|
66
|
+
border-right: 1px solid transparent;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
.nav > li.active > a,
|
71
|
+
.nav > li.active > a:hover {
|
72
|
+
color: @grayLighter;
|
73
|
+
background-color: @grayDark;
|
74
|
+
#gradient > .directional(lighten(@grayDarker, 2%), lighten(@grayDark, 2%), 0deg);
|
75
|
+
border-right: 1px solid darken(@gray, 15%);
|
76
|
+
}
|
77
|
+
|
78
|
+
.navbar-search .search-query {
|
79
|
+
border: 1px solid darken(@gray, 15%);
|
80
|
+
}
|
81
|
+
|
82
|
+
.btn,
|
83
|
+
.btn-group {
|
84
|
+
margin: 4px 0;
|
85
|
+
}
|
86
|
+
|
87
|
+
.divider-vertical {
|
88
|
+
background-color: transparent;
|
89
|
+
border-right: none;
|
90
|
+
}
|
91
|
+
|
92
|
+
.dropdown-menu::after {
|
93
|
+
border-bottom: 6px solid @grayDark;
|
94
|
+
}
|
95
|
+
|
96
|
+
&-inverse {
|
97
|
+
|
98
|
+
.navbar-inner {
|
99
|
+
#gradient > .vertical-three-colors(darken(@grayDarker, 3%), darken(@grayDarker, 8%), 70%, darken(@grayDarker, 8%));
|
100
|
+
}
|
101
|
+
|
102
|
+
.nav li > a {
|
103
|
+
background-image: none;
|
104
|
+
background-color: transparent;
|
105
|
+
}
|
106
|
+
|
107
|
+
.nav li > a:hover,
|
108
|
+
.nav li.active > a,
|
109
|
+
.nav li.active > a:hover {
|
110
|
+
#gradient > .directional(darken(@grayDarker, 10%), darken(@grayDarker, 5%), 280deg);
|
111
|
+
}
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
@media (max-width: @navbarCollapseWidth) {
|
116
|
+
|
117
|
+
.navbar .nav-collapse {
|
118
|
+
|
119
|
+
.nav li > a,
|
120
|
+
.nav li > a:hover,
|
121
|
+
.nav .active > a,
|
122
|
+
.nav .active > a:hover {
|
123
|
+
.box-shadow(none);
|
124
|
+
color: @grayLighter;
|
125
|
+
border: 1px solid transparent;
|
126
|
+
background-color: transparent;
|
127
|
+
background-image: none;
|
128
|
+
}
|
129
|
+
|
130
|
+
.nav li > a:hover,
|
131
|
+
.nav .active > a:hover {
|
132
|
+
background-color: @grayDarker;
|
133
|
+
}
|
134
|
+
|
135
|
+
.navbar-form,
|
136
|
+
.navbar-search {
|
137
|
+
border-color: transparent;
|
138
|
+
.box-shadow(none);
|
139
|
+
}
|
140
|
+
|
141
|
+
.nav-header {
|
142
|
+
color: @grayLight;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
.navbar-inverse .nav-collapse {
|
147
|
+
|
148
|
+
.nav li > a:hover,
|
149
|
+
.nav .active > a:hover {
|
150
|
+
background-color: @grayDarker !important;
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
.nav-tabs {
|
156
|
+
.active > a, .active a:hover {
|
157
|
+
border-bottom: 1px solid darken(@grayDark, 5%);;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
div.subnav {
|
162
|
+
|
163
|
+
margin: 0 1px;
|
164
|
+
//#gradient > .vertical-three-colors(@gray, @grayDark, 70%, @grayDark);
|
165
|
+
border: 1px solid transparent;
|
166
|
+
.box-shadow('0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)');
|
167
|
+
|
168
|
+
.nav > li > a {
|
169
|
+
color: @grayLighter;
|
170
|
+
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
|
171
|
+
border-right: 1px solid darken(@gray, 15%);
|
172
|
+
border-left: 1px solid @gray;
|
173
|
+
|
174
|
+
&:hover {
|
175
|
+
color: @grayLighter;
|
176
|
+
background-color: @grayDark;
|
177
|
+
//#gradient > .directional(@grayDarker, @grayDark, 280deg);
|
178
|
+
border-left: 1px solid transparent;
|
179
|
+
border-right: 1px solid transparent;
|
180
|
+
}
|
181
|
+
}
|
182
|
+
|
183
|
+
.nav > li.active > a,
|
184
|
+
.nav > li.active > a:hover {
|
185
|
+
color: @grayLighter;
|
186
|
+
background-color: @grayDark;
|
187
|
+
#gradient > .directional(lighten(@grayDarker, 4%), lighten(@grayDark, 4%), 280deg);
|
188
|
+
border-right: 1px solid darken(@gray, 15%);
|
189
|
+
}
|
190
|
+
|
191
|
+
.nav > li:first-child > a,
|
192
|
+
.nav > li:first-child > a:hover {
|
193
|
+
border-left: 1px solid transparent;
|
194
|
+
}
|
195
|
+
|
196
|
+
.nav > li.active:last-child > a,
|
197
|
+
.nav > li:last-child > a:hover {
|
198
|
+
border-right: 1px solid darken(@gray, 15%);
|
199
|
+
}
|
200
|
+
|
201
|
+
.open .dropdown-toggle {
|
202
|
+
border-right: 1px solid darken(@gray, 15%);
|
203
|
+
border-left: 1px solid @gray;
|
204
|
+
}
|
205
|
+
|
206
|
+
&.subnav-fixed {
|
207
|
+
top: @navbarHeight;
|
208
|
+
margin: 0;
|
209
|
+
.box-shadow(none);
|
210
|
+
|
211
|
+
.nav > li.active:first-child > a,
|
212
|
+
.nav > li:first-child > a:hover {
|
213
|
+
border-left: 1px solid darken(@gray, 15%);
|
214
|
+
}
|
215
|
+
}
|
216
|
+
}
|
217
|
+
|
218
|
+
// NAV
|
219
|
+
// -----------------------------------------------------
|
220
|
+
|
221
|
+
.nav {
|
222
|
+
|
223
|
+
.nav-header {
|
224
|
+
text-shadow: -1px -1px 0 rgba(0,0,0,0.3);
|
225
|
+
}
|
226
|
+
|
227
|
+
& > li > a {
|
228
|
+
//#gradient > .vertical-three-colors(@gray, @grayDark, 70%, @grayDark);
|
229
|
+
.box-shadow('0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)');
|
230
|
+
border: none;
|
231
|
+
color: @grayLight;
|
232
|
+
font-weight: bold;
|
233
|
+
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
|
234
|
+
}
|
235
|
+
|
236
|
+
li.active > a,
|
237
|
+
li.active > a:hover {
|
238
|
+
background-color: transparent;
|
239
|
+
color: @white;
|
240
|
+
}
|
241
|
+
|
242
|
+
& > li.disabled > a,
|
243
|
+
& > li.disabled > a:hover {
|
244
|
+
color: @gray;
|
245
|
+
}
|
246
|
+
|
247
|
+
li > a:hover {
|
248
|
+
background-color: transparent;
|
249
|
+
color: @grayLighter;
|
250
|
+
}
|
251
|
+
|
252
|
+
}
|
253
|
+
|
254
|
+
.breadcrumb {
|
255
|
+
border: 1px solid transparent;
|
256
|
+
#gradient > .vertical-three-colors(@gray, @grayDark, 70%, @grayDark);
|
257
|
+
.box-shadow('0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)');
|
258
|
+
|
259
|
+
a {
|
260
|
+
color: @grayLighter;
|
261
|
+
font-weight: bold;
|
262
|
+
}
|
263
|
+
|
264
|
+
li {
|
265
|
+
color: @grayLight;
|
266
|
+
font-weight: bold;
|
267
|
+
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
|
268
|
+
}
|
269
|
+
}
|
270
|
+
|
271
|
+
.pagination {
|
272
|
+
|
273
|
+
ul {
|
274
|
+
.box-shadow(none);
|
275
|
+
}
|
276
|
+
|
277
|
+
ul > li > a,
|
278
|
+
ul > li > span {
|
279
|
+
border-left: 1px solid @gray;
|
280
|
+
border-right: 1px solid darken(@gray, 15%);
|
281
|
+
border-top: none;
|
282
|
+
border-bottom: none;
|
283
|
+
#gradient > .vertical-three-colors(@gray, @grayDark, 70%, @grayDark);
|
284
|
+
.box-shadow('0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)');
|
285
|
+
color: @grayLighter;
|
286
|
+
font-weight: bold;
|
287
|
+
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
|
288
|
+
|
289
|
+
&:hover {
|
290
|
+
#gradient > .directional(@grayDarker, @grayDark, 280deg);
|
291
|
+
border-left: 1px solid transparent;
|
292
|
+
}
|
293
|
+
}
|
294
|
+
|
295
|
+
ul > .active > a,
|
296
|
+
ul > .active > a:hover,
|
297
|
+
ul > .active > span,
|
298
|
+
ul > .active > span:hover {
|
299
|
+
color: @grayLighter;
|
300
|
+
background-color: @grayDark;
|
301
|
+
#gradient > .directional(lighten(@grayDarker, 4%), lighten(@grayDark, 4%), 280deg);
|
302
|
+
border-left: 1px solid transparent;
|
303
|
+
}
|
304
|
+
|
305
|
+
ul > .disabled > a,
|
306
|
+
ul > .disabled > a:hover,
|
307
|
+
ul > .disabled > span,
|
308
|
+
ul > .disabled > span:hover {
|
309
|
+
border-left: 1px solid @gray;
|
310
|
+
border-right: 1px solid darken(@gray, 15%);
|
311
|
+
border-top: none;
|
312
|
+
border-bottom: none;
|
313
|
+
#gradient > .vertical-three-colors(@grayLight, @gray, 70%, @gray);
|
314
|
+
}
|
315
|
+
}
|
316
|
+
|
317
|
+
.pager {
|
318
|
+
|
319
|
+
li > a,
|
320
|
+
li > span {
|
321
|
+
|
322
|
+
border: 1px solid transparent;
|
323
|
+
.box-shadow('0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)');
|
324
|
+
#gradient > .vertical-three-colors(@gray, @grayDark, 70%, @grayDark);
|
325
|
+
|
326
|
+
&:hover {
|
327
|
+
#gradient > .directional(@grayDarker, @grayDark, 280deg);
|
328
|
+
border: 1px solid transparent;
|
329
|
+
}
|
330
|
+
}
|
331
|
+
|
332
|
+
.disabled a,
|
333
|
+
.disabled a:hover {
|
334
|
+
background-color: transparent;
|
335
|
+
#gradient > .vertical-three-colors(@gray, @grayDark, 70%, @grayDark);
|
336
|
+
}
|
337
|
+
}
|
338
|
+
|
339
|
+
// BUTTONS
|
340
|
+
// -----------------------------------------------------
|
341
|
+
|
342
|
+
.btn {
|
343
|
+
.buttonBackground(@gray, darken(@gray, 10%));
|
344
|
+
.border-radius(3px);
|
345
|
+
border: 1px solid @grayDarker;
|
346
|
+
}
|
347
|
+
|
348
|
+
.btn, .btn:hover {
|
349
|
+
color: @white;
|
350
|
+
font-weight: bold;
|
351
|
+
text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.3);
|
352
|
+
}
|
353
|
+
|
354
|
+
.btn-primary {
|
355
|
+
.buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20));
|
356
|
+
color: @grayDark;
|
357
|
+
text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.3);
|
358
|
+
}
|
359
|
+
|
360
|
+
.btn-warning {
|
361
|
+
.buttonBackground(lighten(@orange, 15%), @orange);
|
362
|
+
}
|
363
|
+
|
364
|
+
.btn-danger {
|
365
|
+
.buttonBackground(@red, #bd362f);
|
366
|
+
}
|
367
|
+
|
368
|
+
.btn-success {
|
369
|
+
.buttonBackground(@green, #51a351);
|
370
|
+
}
|
371
|
+
|
372
|
+
.btn-info {
|
373
|
+
.buttonBackground(@blue, #2f96b4);
|
374
|
+
}
|
375
|
+
|
376
|
+
.btn-inverse {
|
377
|
+
.buttonBackground(@gray, @grayDarker);
|
378
|
+
}
|
379
|
+
|
380
|
+
.caret {
|
381
|
+
border-top-color: @white;
|
382
|
+
}
|
383
|
+
|
384
|
+
// TABLES
|
385
|
+
// -----------------------------------------------------
|
386
|
+
|
387
|
+
.table {
|
388
|
+
|
389
|
+
tbody tr.success td {
|
390
|
+
background-color: @successText;
|
391
|
+
}
|
392
|
+
|
393
|
+
tbody tr.error td {
|
394
|
+
background-color: @errorText;
|
395
|
+
}
|
396
|
+
|
397
|
+
tbody tr.info td {
|
398
|
+
background-color: @infoText;
|
399
|
+
}
|
400
|
+
|
401
|
+
}
|
402
|
+
|
403
|
+
|
404
|
+
// FORMS
|
405
|
+
// -----------------------------------------------------
|
406
|
+
|
407
|
+
label, input, button, select, textarea, legend {
|
408
|
+
color: @textColor;
|
409
|
+
}
|
410
|
+
|
411
|
+
legend, label {
|
412
|
+
text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
|
413
|
+
}
|
414
|
+
|
415
|
+
.input-prepend .add-on,
|
416
|
+
.input-append .add-on {
|
417
|
+
vertical-align: top;
|
418
|
+
background-color: @gray;
|
419
|
+
border-top: 1px solid @grayLight;
|
420
|
+
border-left: 1px solid @grayLight;
|
421
|
+
border-bottom: 1px solid @grayDark;
|
422
|
+
border-right: 1px solid @grayDark;
|
423
|
+
text-shadow: none;
|
424
|
+
}
|
425
|
+
|
426
|
+
.input-append .btn,
|
427
|
+
.input-prepend .btn {
|
428
|
+
margin-top: -1px;
|
429
|
+
padding: 5px 14px;
|
430
|
+
}
|
431
|
+
|
432
|
+
.uneditable-input,
|
433
|
+
input[disabled],
|
434
|
+
select[disabled],
|
435
|
+
textarea[disabled],
|
436
|
+
input[readonly],
|
437
|
+
select[readonly],
|
438
|
+
textarea[readonly] {
|
439
|
+
color: @gray;
|
440
|
+
background: @grayDarker;
|
441
|
+
}
|
442
|
+
|
443
|
+
.form-actions {
|
444
|
+
border-top: none;
|
445
|
+
}
|
446
|
+
|
447
|
+
// DROPDOWNS
|
448
|
+
// -----------------------------------------------------
|
449
|
+
|
450
|
+
.dropdown-menu {
|
451
|
+
.box-shadow(0 5px 5px rgba(0, 0, 0, 0.2));
|
452
|
+
}
|
453
|
+
|
454
|
+
.dropdown.open .dropdown-toggle {
|
455
|
+
background-color: @grayDark;
|
456
|
+
color: @grayLighter;
|
457
|
+
}
|
458
|
+
|
459
|
+
.dropdown-submenu > a::after {
|
460
|
+
border-left-color: @white;
|
461
|
+
}
|
462
|
+
|
463
|
+
// ALERTS, LABELS, BADGES
|
464
|
+
// -----------------------------------------------------
|
465
|
+
|
466
|
+
.label, .alert {
|
467
|
+
color: rgba(255, 255, 255, 0.9);
|
468
|
+
text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
|
469
|
+
.box-shadow(1px 1px 1px rgba(0, 0, 0, 0.3));
|
470
|
+
}
|
471
|
+
|
472
|
+
.alert {
|
473
|
+
background-color: @orange;
|
474
|
+
border-color: @orange;
|
475
|
+
|
476
|
+
.alert-heading {
|
477
|
+
color: rgba(255, 255, 255, 0.9);
|
478
|
+
text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.4);
|
479
|
+
}
|
480
|
+
}
|
481
|
+
|
482
|
+
.alert-success {
|
483
|
+
background-color: @successText;
|
484
|
+
border-color: @successText;
|
485
|
+
}
|
486
|
+
|
487
|
+
.alert-error {
|
488
|
+
background-color: @errorText;
|
489
|
+
border-color: @errorText;
|
490
|
+
}
|
491
|
+
|
492
|
+
.alert-info {
|
493
|
+
background-color: @infoText;
|
494
|
+
border-color: @infoText;
|
495
|
+
}
|
496
|
+
|
497
|
+
// MISC
|
498
|
+
// -----------------------------------------------------
|
499
|
+
|
500
|
+
.well, .hero-unit {
|
501
|
+
.box-shadow(inset 1px 1px 1px rgba(0, 0, 0, 0.5));
|
502
|
+
}
|
503
|
+
|
504
|
+
.thumbnail,
|
505
|
+
a.thumbnail:hover {
|
506
|
+
border: 1px solid darken(@grayDarker, 5%);
|
507
|
+
}
|
508
|
+
|
509
|
+
.progress {
|
510
|
+
background-color: darken(@grayDarker, 3%);
|
511
|
+
#gradient > .vertical(darken(@grayDarker, 3%), darken(@grayDarker, 3%));
|
512
|
+
.box-shadow(inset 1px 1px 1px rgba(0, 0, 0, 0.5));
|
513
|
+
}
|
514
|
+
|
515
|
+
.footer {
|
516
|
+
border-top: 1px solid darken(@grayDarker, 5%);
|
517
|
+
|
518
|
+
p {
|
519
|
+
color: @textColor;
|
520
|
+
}
|
521
|
+
}
|
522
|
+
|
523
|
+
.modal {
|
524
|
+
|
525
|
+
background-color: darken(@grayDark, 5%);
|
526
|
+
|
527
|
+
&-header {
|
528
|
+
border-bottom: none;
|
529
|
+
}
|
530
|
+
|
531
|
+
&-body {
|
532
|
+
border-bottom: 1px solid #1C1E22;
|
533
|
+
}
|
534
|
+
|
535
|
+
&-footer {
|
536
|
+
border-top: none;
|
537
|
+
background-color: @grayDarker;
|
538
|
+
.box-shadow(none);
|
539
|
+
}
|
540
|
+
}
|
541
|
+
|
542
|
+
// MEDIA QUERIES
|
543
|
+
// -----------------------------------------------------
|
544
|
+
|
545
|
+
@media (max-width: 979px) {
|
546
|
+
.navbar .brand {
|
547
|
+
border-right: none;
|
548
|
+
}
|
549
|
+
}
|
550
|
+
|
551
|
+
@media (max-width: 768px) {
|
552
|
+
div.subnav .nav > li + li > a {
|
553
|
+
border-top: 1px solid transparent;
|
554
|
+
}
|
555
|
+
}
|