Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
L
luna
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
luna
Commits
ad077e23
Unverified
Commit
ad077e23
authored
Feb 08, 2018
by
liuzheng712
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: update
parent
be6d2036
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
828 additions
and
126 deletions
+828
-126
.angular-cli.json
.angular-cli.json
+2
-0
leftbar.component.html
src/app/elements/leftbar/leftbar.component.html
+21
-66
leftbar.component.scss
src/app/elements/leftbar/leftbar.component.scss
+43
-0
leftbar.component.ts
src/app/elements/leftbar/leftbar.component.ts
+84
-2
setting-page.component.html
src/app/setting-page/setting-page.component.html
+2
-2
setting-page.component.scss
src/app/setting-page/setting-page.component.scss
+4
-0
test-page.component.html
src/app/test-page/test-page.component.html
+7
-6
inspinia.js
src/assets/inspinia/inspinia.js
+298
-0
style.scss
src/assets/inspinia/style.scss
+1
-1
jquery.slimscroll.js
src/assets/slimscroll/jquery.slimscroll.js
+0
-0
jquery.slimscroll.min.js
src/assets/slimscroll/jquery.slimscroll.min.js
+17
-0
jumpserver.css
src/sass/jumpserver.css
+348
-0
style.scss
src/sass/style.scss
+1
-49
logo-text.png
src/static/imgs/logo-text.png
+0
-0
No files found.
.angular-cli.json
View file @
ad077e23
...
...
@@ -31,6 +31,8 @@
"../node_modules/jquery-sparkline/jquery.sparkline.js"
,
"../node_modules/tether/dist/js/tether.min.js"
,
"../node_modules/bootstrap/dist/js/bootstrap.min.js"
,
"assets/inspinia/inspinia.js"
,
"assets/slimscroll/jquery.slimscroll.min.js"
,
"../node_modules/xterm/dist/xterm.js"
],
"environmentSource"
:
"environments/environment.ts"
,
...
...
src/app/elements/leftbar/leftbar.component.html
View file @
ad077e23
<nav
class=
"navbar-default navbar-static-side"
role=
"navigation"
>
<div
id=
"wrapper"
>
<nav
class=
"navbar-default navbar-static-side"
role=
"navigation"
>
<div
class=
"sidebar-collapse"
>
<ul
class=
"nav"
id=
"side-menu"
>
<li
id=
"index"
>
<a
href=
""
>
<i
class=
"fa fa-dashboard"
style=
"font-size: 13px"
></i>
<span
class=
"nav-label"
>
trans 'Dashboard'
</span><span
class=
"label label-info pull-right"
></span>
</a>
<ul
class=
"nav"
>
<li
class=
"nav-header"
>
<div
class=
"dropdown profile-element"
>
<div
href=
"http://www.jumpserver.org"
target=
"_blank"
>
<img
alt=
"image"
height=
"55"
src=
"/static/imgs/logo-text.png"
style=
"margin-left: 10px"
>
</div>
</div>
<div
class=
"clearfix"
></div>
<div
class=
"logo-element"
>
<img
alt=
"image"
height=
"40"
src=
"/static/imgs/logo.png"
>
</div>
</li>
<li
id=
"users
"
>
<li
*
ngFor=
"let bar of leftbar
"
>
<a
href=
"#"
>
<i
class=
"fa fa-group"
style=
"font-size: 13px"
></i>
<span
class=
"nav-label"
>
trans 'Users'
</span><span
class=
"fa arrow"
></span>
</a>
<ul
class=
"nav nav-second-level active"
>
<li
id=
"user"
><a
href=
""
>
trans 'User'
</a></li>
<li
id=
"user-group"
><a
href=
""
>
trans 'User group'
</a></li>
<li
id=
"login-log"
><a
href=
""
>
trans 'Login logs'
</a></li>
</ul>
</li>
<li
id=
"assets"
>
<a>
<i
class=
"fa fa-inbox"
></i>
<span
class=
"nav-label"
>
trans 'Assets'
</span><span
class=
"fa arrow"
></span>
</a>
<ul
class=
"nav nav-second-level"
>
<li
id=
"asset"
><a
href=
""
>
trans 'Asset'
</a></li>
<li
id=
"asset-group"
><a
href=
""
>
trans 'Asset group'
</a></li>
<li
id=
"cluster"
><a
href=
""
>
trans 'Cluster'
</a></li>
<li
id=
"admin-user"
><a
href=
""
>
trans 'Admin user'
</a></li>
<li
id=
"system-user"
><a
href=
""
>
trans 'System user'
</a></li>
<li
id=
"label"
><a
href=
""
>
trans 'Labels'
</a></li>
</ul>
</li>
<li
id=
"perms"
>
<a
href=
"#"
><i
class=
"fa fa-edit"
></i>
<span
class=
"nav-label"
>
trans 'Perms'
</span><span
class=
"fa arrow"
></span></a>
<ul
class=
"nav nav-second-level"
>
<li
id=
"asset-permission"
>
<a
href=
""
>
trans 'Asset permission'
</a>
</li>
</ul>
</li>
<li
id=
"terminal"
>
<a>
<i
class=
"fa fa-rocket"
></i>
<span
class=
"nav-label"
>
trans 'Sessions'
</span><span
class=
"fa arrow"
></span>
</a>
<ul
class=
"nav nav-second-level"
>
<li
id=
"session-online"
><a
href=
""
>
trans 'Session online'
</a>
</li>
<li
id=
"session-offline"
><a
href=
""
>
trans 'Session offline'
</a>
</li>
<li
id=
"command"
><a
href=
""
>
trans 'Commands'
</a></li>
<li
id=
"terminal"
><a
href=
""
>
trans 'Terminal'
</a></li>
</ul>
</li>
<li
id=
"ops"
>
<a>
<i
class=
"fa fa-coffee"
></i>
<span
class=
"nav-label"
>
trans 'Job Center'
</span><span
class=
"fa arrow"
></span>
<i
class=
"{{bar.class}}"
></i>
<span
class=
"nav-label"
>
{{bar.name|trans}}
</span>
<span
class=
"{{bar.label}}"
></span>
</a>
<ul
class=
"nav nav-second-level
"
>
<li
id=
"task"
><a
href=
""
>
trans 'Task'
</a></li>
<ul
class=
"nav nav-second-level collapse
"
>
<li
*
ngFor=
"let child of bar.child"
><a>
{{child.name|trans}}
</a></li>
</ul>
</li>
<li
id=
"settings"
>
<a
href=
""
>
<i
class=
"fa fa-gears"
></i>
<span
class=
"nav-label"
>
trans 'Settings'
</span><span
class=
"label label-info pull-right"
></span>
</a>
</li>
</ul>
</div>
</nav>
</nav>
</div>
src/app/elements/leftbar/leftbar.component.scss
View file @
ad077e23
nav
{
height
:
100%
;
font-family
:
"open sans"
,
"Helvetica Neue"
,
Helvetica
,
Arial
,
sans-serif
;
background-color
:
#2f4050
;
font-size
:
13px
;
}
.nav-header
{
padding
:
0
;
width
:
100%
;
}
.navbar-default
{
background-color
:
#2f4050
;
border-color
:
#2f4050
;
}
.nav-header
,
body
.mini-navbar
.nav-header
{
padding
:
0
;
background
:
#202c37
;
}
.profile-element
div
:last-child
a
{
line-height
:
60px
;
width
:
150px
;
float
:
left
;
font-size
:
22px
;
color
:
#1ab394
;
}
.logo-element
{
padding
:
10px
0
;
}
.nav.nav-tabs
li
.active
{
background-color
:
#FFF
;
}
.nav.nav-tabs
li
>
a
{
max-height
:
38px
;
}
.nav.nav-tabs
li
.active
a
{
border
:
none
;
}
src/app/elements/leftbar/leftbar.component.ts
View file @
ad077e23
import
{
Component
,
OnInit
}
from
'@angular/core'
;
import
{
Component
,
OnInit
}
from
'@angular/core'
;
@
Component
({
selector
:
'app-element-leftbar'
,
...
...
@@ -6,8 +6,90 @@ import { Component, OnInit } from '@angular/core';
styleUrls
:
[
'./leftbar.component.scss'
]
})
export
class
ElementLeftbarComponent
implements
OnInit
{
leftbar
=
[
{
'name'
:
'Dashboard'
,
'class'
:
'fa fa-dashboard'
,
'label'
:
'label label-info pull-right'
},
{
'name'
:
'Users'
,
'class'
:
'fa fa-group'
,
'label'
:
'fa arrow'
,
'child'
:
[
{
'name'
:
'User'
,
},
{
'name'
:
'User group'
,
},
{
'name'
:
'Login logs'
,
}
]
},
{
'name'
:
'Assets'
,
'class'
:
'fa fa-inbox'
,
'label'
:
'fa arrow'
,
'child'
:
[
{
'name'
:
'Asset'
,
},
{
'name'
:
'Asset group'
,
},
{
'name'
:
'Cluster'
,
},
{
'name'
:
'Admin user'
,
},
{
'name'
:
'System user'
,
},
{
'name'
:
'Labels'
,
}
]
},
{
'name'
:
'Perms'
,
'class'
:
'fa fa-edit'
,
'label'
:
'fa arrow'
,
'child'
:
[{
'name'
:
'Asset permission'
}]
},
{
'name'
:
'Sessions'
,
'class'
:
'fa fa-rocket'
,
'label'
:
'fa arrow'
,
'child'
:
[
{
'name'
:
'Session online'
},
{
'name'
:
'Session offline'
},
{
'name'
:
'Commands'
},
{
'name'
:
'Terminal'
},
]
},
{
'name'
:
'Job Center'
,
'class'
:
'fa fa-coffee'
,
'label'
:
'fa arrow'
,
'child'
:
[
{
'name'
:
'Task'
},
]
},
{
'name'
:
'Settings'
,
'class'
:
'fa fa-gears'
,
'label'
:
'label label-info pull-right'
},
];
constructor
()
{
}
constructor
()
{
}
ngOnInit
()
{
}
...
...
src/app/setting-page/setting-page.component.html
View file @
ad077e23
<div
class=
"
wrapper
"
>
<div
class=
"
pace-done
"
>
<app-element-leftbar></app-element-leftbar>
<
app-sp-basic></app-sp-basic
>
<
!--<app-sp-basic></app-sp-basic>--
>
<app-element-ofooter></app-element-ofooter>
</div>
src/app/setting-page/setting-page.component.scss
View file @
ad077e23
.pace-done
{
width
:
100%
;
padding
:
0
;
}
src/app/test-page/test-page.component.html
View file @
ad077e23
<app-element-table
[
rows
]="
rows
"
[
columns
]="
columns
"
[
config
]="
config
"
></app-element-table>
<button
mat-raised-button
(
click
)="
test
()"
>
Test
</button>
<!--<app-element-table-->
<!--[rows]="rows"-->
<!--[columns]="columns"-->
<!--[config]="config"-->
<!--></app-element-table>-->
<!--<button mat-raised-button (click)="test()">Test</button>-->
<app-element-leftbar></app-element-leftbar>
src/assets/inspinia/inspinia.js
0 → 100755
View file @
ad077e23
/*
*
* INSPINIA - Responsive Admin Theme
* version 2.7.1
*
*/
$
(
document
).
ready
(
function
()
{
// Add body-small class if window less than 768px
if
(
$
(
this
).
width
()
<
769
)
{
$
(
'body'
).
addClass
(
'body-small'
)
}
else
{
$
(
'body'
).
removeClass
(
'body-small'
)
}
// MetisMenu
$
(
'#side-menu'
).
metisMenu
();
// Collapse ibox function
$
(
'.collapse-link'
).
on
(
'click'
,
function
()
{
var
ibox
=
$
(
this
).
closest
(
'div.ibox'
);
var
button
=
$
(
this
).
find
(
'i'
);
var
content
=
ibox
.
children
(
'.ibox-content'
);
content
.
slideToggle
(
200
);
button
.
toggleClass
(
'fa-chevron-up'
).
toggleClass
(
'fa-chevron-down'
);
ibox
.
toggleClass
(
''
).
toggleClass
(
'border-bottom'
);
setTimeout
(
function
()
{
ibox
.
resize
();
ibox
.
find
(
'[id^=map-]'
).
resize
();
},
50
);
});
// Close ibox function
$
(
'.close-link'
).
on
(
'click'
,
function
()
{
var
content
=
$
(
this
).
closest
(
'div.ibox'
);
content
.
remove
();
});
// Fullscreen ibox function
$
(
'.fullscreen-link'
).
on
(
'click'
,
function
()
{
var
ibox
=
$
(
this
).
closest
(
'div.ibox'
);
var
button
=
$
(
this
).
find
(
'i'
);
$
(
'body'
).
toggleClass
(
'fullscreen-ibox-mode'
);
button
.
toggleClass
(
'fa-expand'
).
toggleClass
(
'fa-compress'
);
ibox
.
toggleClass
(
'fullscreen'
);
setTimeout
(
function
()
{
$
(
window
).
trigger
(
'resize'
);
},
100
);
});
// Close menu in canvas mode
$
(
'.close-canvas-menu'
).
on
(
'click'
,
function
()
{
$
(
"body"
).
toggleClass
(
"mini-navbar"
);
SmoothlyMenu
();
});
// Run menu of canvas
$
(
'body.canvas-menu .sidebar-collapse'
).
slimScroll
({
height
:
'100%'
,
railOpacity
:
0.9
});
// Open close right sidebar
$
(
'.right-sidebar-toggle'
).
on
(
'click'
,
function
()
{
$
(
'#right-sidebar'
).
toggleClass
(
'sidebar-open'
);
});
// Initialize slimscroll for right sidebar
$
(
'.sidebar-container'
).
slimScroll
({
height
:
'100%'
,
railOpacity
:
0.4
,
wheelStep
:
10
});
// Open close small chat
$
(
'.open-small-chat'
).
on
(
'click'
,
function
()
{
$
(
this
).
children
().
toggleClass
(
'fa-comments'
).
toggleClass
(
'fa-remove'
);
$
(
'.small-chat-box'
).
toggleClass
(
'active'
);
});
// Initialize slimscroll for small chat
$
(
'.small-chat-box .content'
).
slimScroll
({
height
:
'234px'
,
railOpacity
:
0.4
});
// Small todo handler
$
(
'.check-link'
).
on
(
'click'
,
function
()
{
var
button
=
$
(
this
).
find
(
'i'
);
var
label
=
$
(
this
).
next
(
'span'
);
button
.
toggleClass
(
'fa-check-square'
).
toggleClass
(
'fa-square-o'
);
label
.
toggleClass
(
'todo-completed'
);
return
false
;
});
// Append config box / Only for demo purpose
// Uncomment on server mode to enable XHR calls
//$.get("skin-config.html", function (data) {
// if (!$('body').hasClass('no-skin-config'))
// $('body').append(data);
//});
// Minimalize menu
$
(
'.navbar-minimalize'
).
on
(
'click'
,
function
(
event
)
{
event
.
preventDefault
();
$
(
"body"
).
toggleClass
(
"mini-navbar"
);
SmoothlyMenu
();
});
// Tooltips demo
$
(
'.tooltip-demo'
).
tooltip
({
selector
:
"[data-toggle=tooltip]"
,
container
:
"body"
});
// Full height of sidebar
function
fix_height
()
{
var
heightWithoutNavbar
=
$
(
"body > #wrapper"
).
height
()
-
61
;
$
(
".sidebar-panel"
).
css
(
"min-height"
,
heightWithoutNavbar
+
"px"
);
var
navbarheight
=
$
(
'nav.navbar-default'
).
height
();
var
wrapperHeight
=
$
(
'#page-wrapper'
).
height
();
if
(
navbarheight
>
wrapperHeight
)
{
$
(
'#page-wrapper'
).
css
(
"min-height"
,
navbarheight
+
"px"
);
}
if
(
navbarheight
<
wrapperHeight
)
{
$
(
'#page-wrapper'
).
css
(
"min-height"
,
$
(
window
).
height
()
+
"px"
);
}
if
(
$
(
'body'
).
hasClass
(
'fixed-nav'
))
{
if
(
navbarheight
>
wrapperHeight
)
{
$
(
'#page-wrapper'
).
css
(
"min-height"
,
navbarheight
+
"px"
);
}
else
{
$
(
'#page-wrapper'
).
css
(
"min-height"
,
$
(
window
).
height
()
-
60
+
"px"
);
}
}
}
fix_height
();
// Fixed Sidebar
$
(
window
).
bind
(
"load"
,
function
()
{
if
(
$
(
"body"
).
hasClass
(
'fixed-sidebar'
))
{
$
(
'.sidebar-collapse'
).
slimScroll
({
height
:
'100%'
,
railOpacity
:
0.9
});
}
});
// Move right sidebar top after scroll
$
(
window
).
scroll
(
function
()
{
if
(
$
(
window
).
scrollTop
()
>
0
&&
!
$
(
'body'
).
hasClass
(
'fixed-nav'
))
{
$
(
'#right-sidebar'
).
addClass
(
'sidebar-top'
);
}
else
{
$
(
'#right-sidebar'
).
removeClass
(
'sidebar-top'
);
}
});
$
(
window
).
bind
(
"load resize scroll"
,
function
()
{
if
(
!
$
(
"body"
).
hasClass
(
'body-small'
))
{
fix_height
();
}
});
$
(
"[data-toggle=popover]"
)
.
popover
();
// Add slimscroll to element
$
(
'.full-height-scroll'
).
slimscroll
({
height
:
'100%'
})
});
// Minimalize menu when screen is less than 768px
$
(
window
).
bind
(
"resize"
,
function
()
{
if
(
$
(
this
).
width
()
<
769
)
{
$
(
'body'
).
addClass
(
'body-small'
)
}
else
{
$
(
'body'
).
removeClass
(
'body-small'
)
}
});
// Local Storage functions
// Set proper body class and plugins based on user configuration
$
(
document
).
ready
(
function
()
{
if
(
localStorageSupport
())
{
var
collapse
=
localStorage
.
getItem
(
"collapse_menu"
);
var
fixedsidebar
=
localStorage
.
getItem
(
"fixedsidebar"
);
var
fixednavbar
=
localStorage
.
getItem
(
"fixednavbar"
);
var
boxedlayout
=
localStorage
.
getItem
(
"boxedlayout"
);
var
fixedfooter
=
localStorage
.
getItem
(
"fixedfooter"
);
var
body
=
$
(
'body'
);
if
(
fixedsidebar
==
'on'
)
{
body
.
addClass
(
'fixed-sidebar'
);
$
(
'.sidebar-collapse'
).
slimScroll
({
height
:
'100%'
,
railOpacity
:
0.9
});
}
if
(
collapse
==
'on'
)
{
if
(
body
.
hasClass
(
'fixed-sidebar'
))
{
if
(
!
body
.
hasClass
(
'body-small'
))
{
body
.
addClass
(
'mini-navbar'
);
}
}
else
{
if
(
!
body
.
hasClass
(
'body-small'
))
{
body
.
addClass
(
'mini-navbar'
);
}
}
}
if
(
fixednavbar
==
'on'
)
{
$
(
".navbar-static-top"
).
removeClass
(
'navbar-static-top'
).
addClass
(
'navbar-fixed-top'
);
body
.
addClass
(
'fixed-nav'
);
}
if
(
boxedlayout
==
'on'
)
{
body
.
addClass
(
'boxed-layout'
);
}
if
(
fixedfooter
==
'on'
)
{
$
(
".footer"
).
addClass
(
'fixed'
);
}
}
});
// check if browser support HTML5 local storage
function
localStorageSupport
()
{
return
((
'localStorage'
in
window
)
&&
window
[
'localStorage'
]
!==
null
)
}
// For demo purpose - animation css script
function
animationHover
(
element
,
animation
)
{
element
=
$
(
element
);
element
.
hover
(
function
()
{
element
.
addClass
(
'animated '
+
animation
);
},
function
()
{
//wait for animation to finish before removing classes
window
.
setTimeout
(
function
()
{
element
.
removeClass
(
'animated '
+
animation
);
},
2000
);
});
}
function
SmoothlyMenu
()
{
if
(
!
$
(
'body'
).
hasClass
(
'mini-navbar'
)
||
$
(
'body'
).
hasClass
(
'body-small'
))
{
// Hide menu in order to smoothly turn on when maximize menu
$
(
'#side-menu'
).
hide
();
// For smoothly turn on menu
setTimeout
(
function
()
{
$
(
'#side-menu'
).
fadeIn
(
400
);
},
200
);
}
else
if
(
$
(
'body'
).
hasClass
(
'fixed-sidebar'
))
{
$
(
'#side-menu'
).
hide
();
setTimeout
(
function
()
{
$
(
'#side-menu'
).
fadeIn
(
400
);
},
100
);
}
else
{
// Remove all inline style from jquery fadeIn function to reset menu state
$
(
'#side-menu'
).
removeAttr
(
'style'
);
}
}
// Dragable panels
function
WinMove
()
{
var
element
=
"[class*=col]"
;
var
handle
=
".ibox-title"
;
var
connect
=
"[class*=col]"
;
$
(
element
).
sortable
(
{
handle
:
handle
,
connectWith
:
connect
,
tolerance
:
'pointer'
,
forcePlaceholderSize
:
true
,
opacity
:
0.8
})
.
disableSelection
();
}
src/assets/inspinia/style.scss
View file @
ad077e23
...
...
@@ -25,7 +25,7 @@
@import
"imports/spinners"
;
// Landing page styles
@import
"imports/landing"
;
//
@import "imports/landing";
// RTL Support
@import
"imports/rtl"
;
...
...
src/assets/slimscroll/jquery.slimscroll.js
0 → 100755
View file @
ad077e23
This diff is collapsed.
Click to expand it.
src/assets/slimscroll/jquery.slimscroll.min.js
0 → 100755
View file @
ad077e23
/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* Version: 1.3.6
*
*/
(
function
(
e
){
e
.
fn
.
extend
({
slimScroll
:
function
(
g
){
var
a
=
e
.
extend
({
width
:
"auto"
,
height
:
"250px"
,
size
:
"7px"
,
color
:
"#000"
,
position
:
"right"
,
distance
:
"1px"
,
start
:
"top"
,
opacity
:.
4
,
alwaysVisible
:
!
1
,
disableFadeOut
:
!
1
,
railVisible
:
!
1
,
railColor
:
"#333"
,
railOpacity
:.
2
,
railDraggable
:
!
0
,
railClass
:
"slimScrollRail"
,
barClass
:
"slimScrollBar"
,
wrapperClass
:
"slimScrollDiv"
,
allowPageScroll
:
!
1
,
wheelStep
:
20
,
touchScrollStep
:
200
,
borderRadius
:
"7px"
,
railBorderRadius
:
"7px"
},
g
);
this
.
each
(
function
(){
function
v
(
d
){
if
(
r
){
d
=
d
||
window
.
event
;
var
c
=
0
;
d
.
wheelDelta
&&
(
c
=-
d
.
wheelDelta
/
120
);
d
.
detail
&&
(
c
=
d
.
detail
/
3
);
e
(
d
.
target
||
d
.
srcTarget
||
d
.
srcElement
).
closest
(
"."
+
a
.
wrapperClass
).
is
(
b
.
parent
())
&&
m
(
c
,
!
0
);
d
.
preventDefault
&&!
k
&&
d
.
preventDefault
();
k
||
(
d
.
returnValue
=!
1
)}}
function
m
(
d
,
e
,
g
){
k
=!
1
;
var
f
=
d
,
h
=
b
.
outerHeight
()
-
c
.
outerHeight
();
e
&&
(
f
=
parseInt
(
c
.
css
(
"top"
))
+
d
*
parseInt
(
a
.
wheelStep
)
/
100
*
c
.
outerHeight
(),
f
=
Math
.
min
(
Math
.
max
(
f
,
0
),
h
),
f
=
0
<
d
?
Math
.
ceil
(
f
):
Math
.
floor
(
f
),
c
.
css
({
top
:
f
+
"px"
}));
l
=
parseInt
(
c
.
css
(
"top"
))
/
(
b
.
outerHeight
()
-
c
.
outerHeight
());
f
=
l
*
(
b
[
0
].
scrollHeight
-
b
.
outerHeight
());
g
&&
(
f
=
d
,
d
=
f
/
b
[
0
].
scrollHeight
*
b
.
outerHeight
(),
d
=
Math
.
min
(
Math
.
max
(
d
,
0
),
h
),
c
.
css
({
top
:
d
+
"px"
}));
b
.
scrollTop
(
f
);
b
.
trigger
(
"slimscrolling"
,
~~
f
);
w
();
p
()}
function
x
(){
u
=
Math
.
max
(
b
.
outerHeight
()
/
b
[
0
].
scrollHeight
*
b
.
outerHeight
(),
30
);
c
.
css
({
height
:
u
+
"px"
});
var
a
=
u
==
b
.
outerHeight
()?
"none"
:
"block"
;
c
.
css
({
display
:
a
})}
function
w
(){
x
();
clearTimeout
(
B
);
l
==~~
l
?(
k
=
a
.
allowPageScroll
,
C
!=
l
&&
b
.
trigger
(
"slimscroll"
,
0
==~~
l
?
"top"
:
"bottom"
)):
k
=!
1
;
C
=
l
;
u
>=
b
.
outerHeight
()?
k
=!
0
:(
c
.
stop
(
!
0
,
!
0
).
fadeIn
(
"fast"
),
a
.
railVisible
&&
h
.
stop
(
!
0
,
!
0
).
fadeIn
(
"fast"
))}
function
p
(){
a
.
alwaysVisible
||
(
B
=
setTimeout
(
function
(){
a
.
disableFadeOut
&&
r
||
y
||
z
||
(
c
.
fadeOut
(
"slow"
),
h
.
fadeOut
(
"slow"
))},
1
E3
))}
var
r
,
y
,
z
,
B
,
A
,
u
,
l
,
C
,
k
=!
1
,
b
=
e
(
this
);
if
(
b
.
parent
().
hasClass
(
a
.
wrapperClass
)){
var
n
=
b
.
scrollTop
(),
c
=
b
.
closest
(
"."
+
a
.
barClass
),
h
=
b
.
closest
(
"."
+
a
.
railClass
);
x
();
if
(
e
.
isPlainObject
(
g
)){
if
(
"height"
in
g
&&
"auto"
==
g
.
height
){
b
.
parent
().
css
(
"height"
,
"auto"
);
b
.
css
(
"height"
,
"auto"
);
var
q
=
b
.
parent
().
parent
().
height
();
b
.
parent
().
css
(
"height"
,
q
);
b
.
css
(
"height"
,
q
)}
if
(
"scrollTo"
in
g
)
n
=
parseInt
(
a
.
scrollTo
);
else
if
(
"scrollBy"
in
g
)
n
+=
parseInt
(
a
.
scrollBy
);
else
if
(
"destroy"
in
g
){
c
.
remove
();
h
.
remove
();
b
.
unwrap
();
return
}
m
(
n
,
!
1
,
!
0
)}}
else
if
(
!
(
e
.
isPlainObject
(
g
)
&&
"destroy"
in
g
)){
a
.
height
=
"auto"
==
a
.
height
?
b
.
parent
().
height
():
a
.
height
;
n
=
e
(
"<div></div>"
).
addClass
(
a
.
wrapperClass
).
css
({
position
:
"relative"
,
overflow
:
"hidden"
,
width
:
a
.
width
,
height
:
a
.
height
});
b
.
css
({
overflow
:
"hidden"
,
width
:
a
.
width
,
height
:
a
.
height
});
var
h
=
e
(
"<div></div>"
).
addClass
(
a
.
railClass
).
css
({
width
:
a
.
size
,
height
:
"100%"
,
position
:
"absolute"
,
top
:
0
,
display
:
a
.
alwaysVisible
&&
a
.
railVisible
?
"block"
:
"none"
,
"border-radius"
:
a
.
railBorderRadius
,
background
:
a
.
railColor
,
opacity
:
a
.
railOpacity
,
zIndex
:
90
}),
c
=
e
(
"<div></div>"
).
addClass
(
a
.
barClass
).
css
({
background
:
a
.
color
,
width
:
a
.
size
,
position
:
"absolute"
,
top
:
0
,
opacity
:
a
.
opacity
,
display
:
a
.
alwaysVisible
?
"block"
:
"none"
,
"border-radius"
:
a
.
borderRadius
,
BorderRadius
:
a
.
borderRadius
,
MozBorderRadius
:
a
.
borderRadius
,
WebkitBorderRadius
:
a
.
borderRadius
,
zIndex
:
99
}),
q
=
"right"
==
a
.
position
?
{
right
:
a
.
distance
}:{
left
:
a
.
distance
};
h
.
css
(
q
);
c
.
css
(
q
);
b
.
wrap
(
n
);
b
.
parent
().
append
(
c
);
b
.
parent
().
append
(
h
);
a
.
railDraggable
&&
c
.
bind
(
"mousedown"
,
function
(
a
){
var
b
=
e
(
document
);
z
=!
0
;
t
=
parseFloat
(
c
.
css
(
"top"
));
pageY
=
a
.
pageY
;
b
.
bind
(
"mousemove.slimscroll"
,
function
(
a
){
currTop
=
t
+
a
.
pageY
-
pageY
;
c
.
css
(
"top"
,
currTop
);
m
(
0
,
c
.
position
().
top
,
!
1
)});
b
.
bind
(
"mouseup.slimscroll"
,
function
(
a
){
z
=!
1
;
p
();
b
.
unbind
(
".slimscroll"
)});
return
!
1
}).
bind
(
"selectstart.slimscroll"
,
function
(
a
){
a
.
stopPropagation
();
a
.
preventDefault
();
return
!
1
});
h
.
hover
(
function
(){
w
()},
function
(){
p
()});
c
.
hover
(
function
(){
y
=!
0
},
function
(){
y
=!
1
});
b
.
hover
(
function
(){
r
=!
0
;
w
();
p
()},
function
(){
r
=!
1
;
p
()});
b
.
bind
(
"touchstart"
,
function
(
a
,
b
){
a
.
originalEvent
.
touches
.
length
&&
(
A
=
a
.
originalEvent
.
touches
[
0
].
pageY
)});
b
.
bind
(
"touchmove"
,
function
(
b
){
k
||
b
.
originalEvent
.
preventDefault
();
b
.
originalEvent
.
touches
.
length
&&
(
m
((
A
-
b
.
originalEvent
.
touches
[
0
].
pageY
)
/
a
.
touchScrollStep
,
!
0
),
A
=
b
.
originalEvent
.
touches
[
0
].
pageY
)});
x
();
"bottom"
===
a
.
start
?(
c
.
css
({
top
:
b
.
outerHeight
()
-
c
.
outerHeight
()}),
m
(
0
,
!
0
)):
"top"
!==
a
.
start
&&
(
m
(
e
(
a
.
start
).
position
().
top
,
null
,
!
0
),
a
.
alwaysVisible
||
c
.
hide
());
window
.
addEventListener
?(
this
.
addEventListener
(
"DOMMouseScroll"
,
v
,
!
1
),
this
.
addEventListener
(
"mousewheel"
,
v
,
!
1
)):
document
.
attachEvent
(
"onmousewheel"
,
v
)}});
return
this
}});
e
.
fn
.
extend
({
slimscroll
:
e
.
fn
.
slimScroll
})})(
jQuery
);
\ No newline at end of file
src/sass/jumpserver.css
0 → 100644
View file @
ad077e23
.red-fonts
{
color
:
#ed5565
;
}
.form-group.required
.control-label
:after
{
content
:
" *"
;
color
:
red
;
}
.n-invalid
{
border
:
1px
solid
#f00
;}
.primary-panel
.ibox-title
{
color
:
#ffffff
;
background-color
:
#1AB394
;
}
.primary-panel
.ibox-content
{
border
:
1px
solid
#1AB394
;
}
.info-panel
.ibox-title
{
color
:
#ffffff
;
background-color
:
#23c6c8
;
}
.info-panel
.ibox-content
{
border
:
1px
solid
#23c6c8
;
;
}
th
a
{
color
:
#676a6c
;
}
.select2-container--default
.select2-results__option--highlighted
[
aria-selected
]
{
background-color
:
#d2d2d2
!important
;
color
:
#333
!important
;
}
.select2-selection--single
,
.select2-selection--multiple
{
border
:
1px
solid
#e5e6e7
!important
;
cursor
:
text
!important
;
}
.select2-container--forcus
{
border
:
1px
solid
#1AB394
!important
;
}
.select2-selection__choice
,
.chosen-container-multi
.chosen-choices
li
.search-choice
{
background
:
#f1f1f1
!important
;
border
:
1px
solid
#e5e6e7
!important
;
/*border: 1px solid #ededed;*/
border-radius
:
2px
!important
;
box-shadow
:
none
!important
;
color
:
#333333
!important
;
cursor
:
default
!important
;
line-height
:
13px
!important
;
/*margin: 3px 0 3px 5px !important;*/
padding
:
3px
20px
3px
5px
!important
;
position
:
relative
!important
;
}
.select2-container--default.select2-container--focus
.select2-selection--multiple
{
border
:
1px
solid
#1ab394
!important
;
box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
0.3
)
!important
;
}
.passwordBox2
{
max-width
:
660px
;
margin
:
0
auto
;
padding
:
100px
20px
20px
20px
;
}
.no-borders-tr
td
{
border-top
:
none
!important
;
}
table
.dataTable
tbody
>
tr
.selected
,
table
.dataTable
tbody
>
tr
>
.selected
{
background-color
:
#1ab394
!important
;
}
table
.dataTable
tbody
tr
.selected
a
,
table
.dataTable
tbody
th
.selected
a
,
table
.dataTable
tbody
td
.selected
a
,
table
.dataTable
tbody
tr
.selected
td
i
.text-navy
,
table
.dataTable
tbody
th
.selected
td
i
.text-navy
,
table
.dataTable
tbody
td
.selected
td
i
.text-navy
{
color
:
white
!important
;
}
.m-0
{
margin
:
0px
!important
;
}
.m-t-0
{
margin-top
:
0px
!important
;
}
.m-b-0
{
margin-bottom
:
0px
!important
;
}
.m-l-0
{
margin-left
:
0px
!important
;
}
.m-r-0
{
margin-right
:
0px
!important
;
}
.m-5
{
margin
:
5px
!important
;
}
.m-t-5
{
margin-top
:
5px
!important
;
}
.m-b-5
{
margin-bottom
:
5px
!important
;
}
.m-l-5
{
margin-left
:
5px
!important
;
}
.m-r-5
{
margin-right
:
5px
!important
;
}
.m-10
{
margin
:
10px
!important
;
}
.m-t-10
{
margin-top
:
10px
!important
;
}
.m-b-10
{
margin-bottom
:
10px
!important
;
}
.m-l-10
{
margin-left
:
10px
!important
;
}
.m-r-10
{
margin-right
:
10px
!important
;
}
.m-15
{
margin
:
15px
!important
;
}
.m-t-15
{
margin-top
:
15px
!important
;
}
.m-b-15
{
margin-bottom
:
15px
!important
;
}
.m-l-15
{
margin-left
:
15px
!important
;
}
.m-r-15
{
margin-right
:
15px
!important
;
}
.m-20
{
margin
:
20px
!important
;
}
.m-t-20
{
margin-top
:
20px
!important
;
}
.m-b-20
{
margin-bottom
:
20px
!important
;
}
.m-l-20
{
margin-left
:
20px
!important
;
}
.m-r-20
{
margin-right
:
20px
!important
;
}
.m-25
{
margin
:
25px
!important
;
}
.m-t-25
{
margin-top
:
25px
!important
;
}
.m-b-25
{
margin-bottom
:
25px
!important
;
}
.m-l-25
{
margin-left
:
25px
!important
;
}
.m-r-25
{
margin-right
:
25px
!important
;
}
.m-30
{
margin
:
30px
!important
;
}
.m-t-30
{
margin-top
:
30px
!important
;
}
.m-b-30
{
margin-bottom
:
30px
!important
;
}
.m-l-30
{
margin-left
:
30px
!important
;
}
.m-r-30
{
margin-right
:
30px
!important
;
}
.ydxbd
{
font-size
:
12px
;
width
:
100%
;
overflow
:
hidden
;
padding-top
:
15px
;
margin-bottom
:
15px
;
display
:
block
;
background
:
#f4f4f4
;
padding-left
:
10px
;
padding-bottom
:
15px
;
}
.mar
{
margin-left
:
2px
;
line-height
:
0px
;
}
.mar-j
{
margin-left
:
3px
;
margin-right
:
3px
;
}
.form-asset-on
p
{
margin-bottom
:
0px
;
}
.form-asset-on
button
{
background
:
#f1f1f1
;
margin-right
:
2px
;
}
.form-asset-on
{
border
:
1px
solid
#e5e6e7
;
padding-top
:
5px
;
padding-bottom
:
0px
;
padding-left
:
5px
;
padding-right
:
5px
;
min-height
:
34px
;
height
:
100%
;
}
.mgl-5
{
margin-left
:
5px
;
font-size
:
12px
;
}
.c02
{
color
:
#999
;
}
.tagBtnList
{
font-size
:
12px
;
line-height
:
32px
;
margin
:
-5px
0
0
0
;
padding-left
:
0px
;
}
.tagBtn2
{
margin
:
0
5px
5px
0
;
font-size
:
12px
;
vertical-align
:
middle
;
}
div
.dataTables_wrapper
div
.dataTables_filter
,
.dataTables_length
{
float
:
right
!important
;
}
div
.dataTables_wrapper
div
.dataTables_filter
{
margin-left
:
15px
;
}
.simple-tag
{
background-color
:
#f3f3f4
;
border
:
1px
solid
#e7eaec
;
border-radius
:
2px
;
color
:
inherit
;
display
:
inline-block
;
font-size
:
10px
;
margin-right
:
5px
;
margin-top
:
5px
;
padding
:
5px
12px
;
}
#op
.col-md-6
{
padding-left
:
0
;
}
.help-message
{
padding-left
:
10px
;
font-size
:
12px
;
line-height
:
18px
;
margin-bottom
:
0
;
margin-left
:
10px
;
margin-right
:
10px
}
.navbar-default
{
background-color
:
#2f4050
;
border-color
:
#2f4050
;
}
.nav-header
,
body
.mini-navbar
.nav-header
{
padding
:
0
;
background
:
#202c37
;
}
.profile-element
div
:first-child
{
line-height
:
60px
;
/*width: 70px;*/
float
:
left
;
text-align
:
center
;
}
.profile-element
div
:last-child
a
{
line-height
:
60px
;
width
:
150px
;
float
:
left
;
font-size
:
22px
;
color
:
#1ab394
;
}
.logo-element
{
padding
:
10px
0
;
}
.welcome-message
img
{
margin
:
-11px
0
;
}
.nav.nav-tabs
li
.active
{
background-color
:
#FFF
;
}
.ibox-title
{
border-top
:
none
;
}
.nav.nav-tabs
li
>
a
{
max-height
:
38px
;
}
.nav.nav-tabs
li
.active
a
{
border
:
none
;
}
.popover
{
max-width
:
100%
;
/* Max Width of the popover (depending on the container!) */
padding-left
:
20px
;
padding-right
:
20px
;
}
src/sass/style.scss
View file @
ad077e23
...
...
@@ -17,55 +17,7 @@ $roboto-font-path: "~roboto-fontface/fonts";
*
*/
$asset-path
:
'../static/imgs/inspinia'
;
// Variables, Mixins
@import
"../assets/inspinia/imports/variables"
;
@import
"../assets/inspinia/imports/mixins"
;
// INSPINIA Theme Elements
@import
"../assets/inspinia/imports/typography"
;
@import
"../assets/inspinia/imports/navigation"
;
@import
"../assets/inspinia/imports/top_navigation"
;
@import
"../assets/inspinia/imports/buttons"
;
@import
"../assets/inspinia/imports/badges_labels"
;
@import
"../assets/inspinia/imports/elements"
;
@import
"../assets/inspinia/imports/sidebar"
;
@import
"../assets/inspinia/imports/base"
;
@import
"../assets/inspinia/imports/pages"
;
@import
"../assets/inspinia/imports/chat"
;
@import
"../assets/inspinia/imports/metismenu"
;
@import
"../assets/inspinia/imports/spinners"
;
// Landing page styles
//@import "../assets/inspinia/imports/landing";
// RTL Support
@import
"../assets/inspinia/imports/rtl"
;
// For demo only - config box style
@import
"../assets/inspinia/imports/theme-config"
;
// INSPINIA Skins
@import
"../assets/inspinia/imports/skins"
;
@import
"../assets/inspinia/imports/md-skin"
;
// Media query style
@import
"../assets/inspinia/imports/media"
;
// Custom style
// Your custom style to override base style
@import
"../assets/inspinia/imports/custom"
;
// Clear layout on print mode
@media
print
{
nav
.navbar-static-side
{
display
:
none
;
}
body
{
overflow
:
visible
!
important
;
}
#page-wrapper
{
margin
:
0
;
}
}
@import
"../assets/inspinia/style"
;
@import
'~@angular/material/prebuilt-themes/deeppurple-amber.css'
;
...
...
src/static/imgs/logo-text.png
0 → 100644
View file @
ad077e23
12.4 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment