1
0
mirror of https://github.com/dkmstr/openuds.git synced 2025-01-08 21:18:00 +03:00

* Added a template folder to work on admin design faster

* Updated Admin CSS (Testing new view)
* Minor fixes (typos)
This commit is contained in:
Adolfo Gómez García 2015-09-22 02:23:27 +02:00
parent 36adbe387c
commit 1187c0aa5e
51 changed files with 1899 additions and 796 deletions

Binary file not shown.

View File

@ -1,250 +0,0 @@
/*
Based on 'SB Admin' from http://startbootstrap.com
'SB Admin' HTML Template by Start Bootstrap.
All Start Bootstrap themes are licensed under Apache 2.0.
For more info and more free Bootstrap 3 HTML themes, visit http://startbootstrap.com!
*/
/* ATTN: This is mobile first CSS - to update 786px and up screen width use the media query near the bottom of the document! */
@-moz-document url-prefix() {
fieldset { display: table-cell; }
}
body {
margin-top: 50px;
}
#wrapper {
padding-left: 0;
}
#page-wrapper {
width: 100%;
padding: 5px 15px;
}
/* Custom */
.btn3d-tables {
margin-top:0px;
margin-botton: 8px;
margin-right: 8px;
}
.btn-group-3d {
margin-bottom:12px;
}
.label-tbl-button {
display: none;
}
/* collapsable && closeable pannels */
.chevron:before {
content: "\f139";
}
.chevron.collapsed:before {
content: "\f13a";
}
.panel-icon {
margin-left: 0.6em !important;
cursor: pointer;
}
.table-icon {
width: 1.2em;
padding-bottom: 3px;
}
.info-img {
width: 5em;
}
.navbar-img {
width: 2em;
margin-top: -8px;
}
.cursor-pointer {
cursor: pointer !important;
}
#minimized {
margin-top: 0.6em;
margin-bottom: 0.3em;
}
/* modal dialogs & related*/
.modal-dialog {
/* new custom width */
width: 90%;
}
/*.modal-backdrop {
background-color: gray;
}*/
.modal {
overflow-y: auto;
}
.tab-pane {
margin-top: 24px;
}
.tooltip {
z-index: 2014;
}
/* Tables */
/* Tables "styling" */
.dataTables_wrapper {
overflow-x: hidden;
min-height: 300px;
}
/* States */
/*
This states displays as default
tr.row-state-A > td, tr.row-state-F > td, tr.row-state-U > td, tr.row-state-W > td {
}
*/
tr.row-state-B:nth-child(2n) > td, tr.row-state-C:nth-child(2n) > td, tr.row-state-E:nth-child(2n) > td, tr.row-state-Y:nth-child(2n) > td {
color: #FF6600 !important;
}
tr.row-state-B:nth-child(2n+1) > td, tr.row-state-C:nth-child(2n+1) > td, tr.row-state-E:nth-child(2n+1) > td, tr.row-state-Y:nth-child(2n+1) > td {
color: #FF6600 !important;
}
tr.row-state-M:nth-child(2n+1) > td, tr.row-state-R:nth-child(2n+1) > td, tr.row-state-I:nth-child(2n+1) > td, tr.row-state-S > td:nth-child(2n+1) {
color: #9A9A9A !important;
}
tr.row-state-M:nth-child(2n) > td, tr.row-state-R:nth-child(2n) > td, tr.row-state-I:nth-child(2n) > td, tr.row-state-S > td:nth-child(2n) {
color: #858585 !important;
}
tr.row-maintenance-true > td {
color: #FF6600 !important;
}
/* Logs */
tr.log-WARN {
color: blue;
}
tr.log-DEBUG {
color: green;
}
tr.log-INFO, tr.log-OTHER {
color: black;
}
tr.log-ERROR, tr.log-FATAL {
color: red;
}
.chart-big {
display: block;
height: 400px;
}
.chart-medium {
display: block;
height: 250px;
}
.chart-small {
display: block;
height: 100px;
}
/* End tables styling */
/* Charts */
.chart-content {
width: 100%;
height: 100%;
}
/* Edit Below to Customize Widths > 768px */
@media (min-width:768px) {
/* Wrappers */
#wrapper {
padding-left: 225px;
}
#page-wrapper {
padding: 15px 25px;
}
/* Side Nav */
.side-nav {
margin-left: -180px;
left: 180px;
width: 180px;
position: fixed;
top: 50px;
height: 100%;
border-radius: 0;
border: none;
background-color: #222222;
overflow-y: auto;
}
/* Bootstrap Default Overrides - Customized Dropdowns for the Side Nav */
.side-nav>li.dropdown>ul.dropdown-menu {
position: relative;
min-width: 225px;
margin: 0;
padding: 0;
border: none;
border-radius: 0;
background-color: transparent;
box-shadow: none;
-webkit-box-shadow: none;
}
.side-nav>li.dropdown>ul.dropdown-menu>li>a {
color: #999999;
padding: 15px 15px 15px 25px;
}
.side-nav>li.dropdown>ul.dropdown-menu>li>a:hover,
.side-nav>li.dropdown>ul.dropdown-menu>li>a.active,
.side-nav>li.dropdown>ul.dropdown-menu>li>a:focus {
color: #fff;
background-color: #080808;
}
.side-nav>li>a {
width: 225px;
}
.navbar-inverse .navbar-nav>li>a:hover,
.navbar-inverse .navbar-nav>li>a:focus {
background-color: #080808;
}
.label-tbl-button {
display: inline-block;
}
.modal-dialog {
/* new custom width */
width: 60%;
}
}

View File

@ -1,143 +0,0 @@
.btn3d{
margin: 4px;
box-shadow: 1px 1px 5px #888888;
}
.btn3d-xs{
font-weight: 300;
}
.btn3d-danger {
color: #fff;
background-color: #db5566;
border-bottom:2px solid #af4451;
}
.btn3d-danger:hover, .btn3d-primary.active:focus, .btn3d-danger:focus, .open>.dropdown-toggle.btn3d-danger {
color: #fff;
background-color: #df6a78;
border-bottom:2px solid #b25560;
outline: none;}
.btn3d-danger:active, .btn3d-danger.active {
color: #fff;
background-color: #c04b59;
border-top:2px solid #9a3c47;
margin-top: 2px;
}
.btn3d-warning {
color: #fff;
background-color: #f4ad49;
border-bottom:2px solid #c38a3a;
}
.btn3d-warning:hover, .btn3d-primary.active:focus, .btn3d-warning:focus, .open>.dropdown-toggle.btn3d-warning {
color: #fff;
background-color: #f5b75f;
border-bottom:2px solid #c4924c;
outline: none;
}
.btn3d-warning:active, .btn3d-warning.active {
color: #fff;
background-color: #d69840;
border-top:2px solid #ab7a33;
margin-top: 2px;
}
.btn3d-success {
color: #fff;
background-color: #51bf87;
border-bottom:2px solid #41996c;
}
.btn3d-success:hover, .btn3d-primary.active:focus, .btn3d-success:focus, .open>.dropdown-toggle.btn3d-success {
color: #fff;
background-color: #66c796;
border-bottom:2px solid #529f78;
outline: none;
}
.btn3d-success:active, .btn3d-success.active {
color: #fff;
background-color: #47a877;
border-top:2px solid #39865f;
outline: none;
outline-offset: none;
margin-top: 2px;
}
.btn3d-primary {
color: #fff;
background-color: #0bacd3;
border-bottom:2px solid #098aa9;
}
.btn3d-primary:hover,.btn3d-primary.active:focus, .btn3d-primary:focus, .open>.dropdown-toggle.btn3d-primary {
color: #fff;
background-color: #29b6d8;
border-bottom:2px solid #2192ad;
outline: none;
}
.btn3d-primary:active, .btn3d-primary.active {
color: #fff;
background-color: #0a97b9;
border-top:2px solid #087994;
outline-offset: none;
margin-top: 2px;
}
.btn3d:focus,
.btn3d:active:focus,
.btn3d.active:focus {
outline: none;
outline-offset: 0px;
}
/*
.btn3d {
transition:all .08s linear;
position:relative;
outline:medium none;
-moz-outline-style:none;
border:0px;
margin-right:10px;
margin-top:15px;
}
.btn3d:focus {
outline:medium none;
-moz-outline-style:none;
}
.btn3d:active {
top:9px;
}
.btn3d-default {
box-shadow:0 0 0 1px #ebebeb inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #adadad, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#fff;
}
.btn3d-primary {
box-shadow:0 0 0 1px #428bca inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #357ebd, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#428bca;
}
.btn3d-success {
box-shadow:0 0 0 1px #5cb85c inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #4cae4c, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#5cb85c;
}
.btn3d-info {
box-shadow:0 0 0 1px #5bc0de inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #46b8da, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#5bc0de;
}
.btn3d-warning {
box-shadow:0 0 0 1px #f0ad4e inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #eea236, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#f0ad4e;
}
.btn3d-danger {
box-shadow:0 0 0 1px #c63702 inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #C24032, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#c63702;
}
*/

View File

@ -1,337 +0,0 @@
.widget
{
background: #fff;
border: 1px solid #c1c1c1;
margin: 0 auto 20px;
position: static;
}
.widget .tab-content
{
padding: 0;
}
.widget .widget-head
{
background-color: #f8f8f8;
background-image: linear-gradient(to bottom, #f8f8f8, #ededed);
background-image: -moz-linear-gradient(top, #f8f8f8, #ededed);
background-image: -o-linear-gradient(top, #f8f8f8, #ededed);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f8f8f8), to(#ededed));
background-image: -webkit-linear-gradient(top, #f8f8f8, #ededed);
background-repeat: repeat-x;
border-bottom: 1px solid #c1c1c1;
color: #000;
height: 40px;
line-height: 40px;
padding: 0 15px 0 0;
position: relative;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
}
.widget .widget-head.progress
{
border-radius: 0 0 0 0;
margin: 0;
moz-border-radius: 0 0 0 0;
padding: 0;
webkit-border-radius: 0 0 0 0;
}
.widget .widget-head .glyphicons
{
height: 40px;
padding: 0;
width: 30px;
}
.widget .widget-head .fai:before
{
color: rgba(255, 255, 255, 0.5);
font-size: 16px;
height: 40px;
line-height: 31px;
text-align: center;
width: 30px;
}
.widget .widget-head .heading
{
color: #45484d;
float: left;
font-size: 14px;
height: 40px;
line-height: 40px;
margin: 0;
padding: 0 15px;
}
.widget .widget-head .heading.glyphicons
{
display: block;
padding: 0 0 0 35px;
width: auto;
}
.widget .widget-head .heading.fai:before
{
color: #45484d;
font-size: 16px;
font-weight: normal;
height: 40px;
left: 0;
line-height: 40px;
margin: 0;
padding: 0;
text-align: center;
text-shadow: none;
top: 0;
width: 35px;
}
.widget .widget-head a
{
text-shadow: none;
}
.widget .widget-head .dropdown-menu li>a:hover,.widget .widget-head .dropdown-menu li>a:focus,.widget .widget-head .dropdown-submenu:hover>a
{
background-color: #47759e;
background-image: linear-gradient(to bottom, #47759e, #d24343);
background-image: -moz-linear-gradient(top, #47759e, #d24343);
background-image: -o-linear-gradient(top, #47759e, #d24343);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#47759e), to(#d24343));
background-image: -webkit-linear-gradient(top, #47759e, #d24343);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffda4c4c', endColorstr='#ffd24343', GradientType=0);
}
.widget .details
{
color: #45484d;
font-size: 8pt;
}
.widget .widget-body
{
padding: 20px 15px;
}
.widget .widget-body form
{
margin: 0;
}
.widget .widget-body .count
{
font-size: 15pt;
font-weight: 400;
}
.widget .widget-body>p:last-child
{
margin: 0;
}
.widget .widget-body.list
{
color: #575655;
padding: 0;
}
.widget .widget-body.list ul
{
list-style: none;
margin: 0;
}
.widget .widget-body.list ul li
{
border-bottom: 1px solid rgba(0, 0, 0, 0.02);
clear: both;
height: 39px;
line-height: 39px;
padding: 0 10px;
text-align: left;
}
.widget .widget-body.list ul li:first-child
{
border-top: none;
}
.widget .widget-body.list ul li:last-child
{
border-bottom: none;
}
.widget .widget-body.list ul li .count
{
color: #47759e;
float: right;
}
.widget .widget-body.list ul li .sparkline
{
margin-left: 5px;
position: relative;
top: 5px;
}
.widget .widget-body.list.products li
{
height: 60px;
line-height: 60px;
}
.widget .widget-body.list.products .img
{
background: #272729;
border-radius: 3px 3px 3px 3px;
color: #818181;
cursor: pointer;
display: inline-block;
float: left;
font-size: 10pt;
font-weight: 600;
height: 44px;
line-height: 44px;
margin: 8px 8px 0 0;
moz-border-radius: 3px 3px 3px 3px;
text-align: center;
webkit-border-radius: 3px 3px 3px 3px;
width: 48px;
}
.widget .widget-body.list.products .title
{
display: inline-block;
font-family: "Raleway",sans-serif;
line-height: normal;
padding: 13px 0 0;
text-transform: uppercase;
}
.widget .widget-body.list.products .title strong
{
font-family: "Open Sans",sans-serif;
text-transform: none;
}
.widget .widget-body.list.fluid ul li
{
height: auto;
line-height: normal;
padding: 10px;
}
.widget .widget-body.list.list-2 ul li
{
background: #f8f8f8;
border-bottom: 1px solid #d8d9da;
border-top: none;
}
.widget .widget-body.list.list-2 ul li.active
{
background: #fff;
border-color: #dddddd;
}
.widget .widget-body.list.list-2 ul li.active i:before
{
background: #47759e;
color: #fff;
font-weight: normal;
text-shadow: none;
}
.widget .widget-body.list.list-2 ul li.active a
{
color: #47759e;
}
.widget .widget-body.list.list-2 ul li:last-child
{
border-bottom: none;
}
.widget .widget-body.list.list-2 ul li a
{
color: #222;
display: block;
padding: 0 0 0 30px;
}
.widget .widget-body.list.list-2 ul li a i:before
{
background: #dddddd;
border: 1px solid #ccc;
color: #555;
font-size: 14px;
height: 17px;
left: 0;
padding-top: 3px;
text-align: center;
text-shadow: 0 1px 0 #fff;
top: 9px;
vertical-align: middle;
width: 20px;
}
.widget .widget-body.list.list-2 ul li.hasSubmenu
{
height: auto;
}
.widget .widget-body.list.list-2 ul li.hasSubmenu ul
{
padding: 0 0 10px;
}
.widget .widget-body.list.list-2 ul li.hasSubmenu ul li
{
background: none;
border: none;
height: auto;
line-height: 20px;
line-height: normal;
}
.widget .widget-body.list.list-2 ul li.hasSubmenu ul li a
{
color: #333;
padding: 0 0 0 20px;
}
.widget .widget-body.list.list-2 ul li.hasSubmenu ul li.active a
{
font-weight: bold;
}
.widget .widget-footer
{
background: #f7f7f7;
border-bottom: 1px solid #ffffff;
border-top: 1px solid #e6e6e6;
height: 25px;
line-height: 25px;
}
.widget .widget-footer .fa
{
float: right;
height: 25px;
line-height: 25px;
padding: 0;
width: 25px;
}
.widget .widget-footer .fa i:before
{
color: #c3c3c3;
font-size: 16px;
height: 25px;
line-height: 25px;
text-align: center;
text-shadow: 0 1px 0 #fff;
width: 20px;
}
.widget .widget-footer .fa:hover i:before
{
color: rgba(0, 0, 0, 0.5);
}
.widget.margin-bottom-none
{
margin-bottom: 0;
}
.widget.widget-gray
{
background: #f5f5f5;
}
.widget.widget-gray .widget-head
{
background: #e9e9e9;
border-color: #d1d2d3;
box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6),inset -1px -1px 1px rgba(0, 0, 0, 0);
moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6),inset -1px -1px 1px rgba(0, 0, 0, 0);
webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6),inset -1px -1px 1px rgba(0, 0, 0, 0);
}
.widget.widget-gray .widget-head .heading
{
color: #555555;
text-shadow: 0 1px 0 #fff;
}
.widget.widget-gray .widget-head .heading.fai:before
{
background: none;
border-color: rgba(0, 0, 0, 0.1);
color: #555;
}
.widget.widget-body-white .widget-body
{
background: #fff;
}
.widget-icon {
margin-left: 0.6em !important;
cursor: pointer;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -14,7 +14,7 @@
<!-- minified css from: bootstrap, font-awesome, bootstrap-select, bootstrap-switch, datatables, tabletools, tabletools.botstrap, uds CSSs -->
{% compress css %}
<!-- Bootstrap -->
<link href="{% get_static_prefix %}adm/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/uds.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/font-awesome.min.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/bootstrap-switch.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/jquery.bootstrap-touchspin.css" rel="stylesheet" media="screen">
@ -27,11 +27,6 @@
<link href="{% get_static_prefix %}adm/css/dataTables.bootstrap.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/jasny-bootstrap.min.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/tables.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/uds-buttons.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/uds-widget.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/uds-admin.css" rel="stylesheet" media="screen">
{% endcompress %}
</head>

View File

@ -14,64 +14,64 @@
</a>
</div>
<!-- Side bar -->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<li><a class="lnk-dashboard" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/dashboard-monitor.png"/> {% trans 'Overview' %}</a></li>
<li><a class="lnk-service_providers" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/providers.png"/> {% trans 'Services' %}</a></li>
<li><a class="lnk-authenticators" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/authenticators.png"/> {% trans 'Authenticators' %}</a></li>
<li><a class="lnk-osmanagers" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/osmanagers.png"/> Os Managers</a></li>
<li><a class="lnk-connectivity" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/transports.png"/> {% trans 'Connectivity' %}</a></li>
<li><a class="lnk-calendars" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/calendars.png"/> {% trans 'Calendars' %}</a></li>
<li><a class="lnk-deployed_services" href=""><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/pools.png"/> {% trans 'Service Pools' %}</a></li>
{% if admin %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/tools.png"/> Tools <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a class="lnk-gallery" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/gallery.png"/> {% trans 'Gallery' %}</a></li>
<li><a class="lnk-reports" href=""><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/reports.png"/> {% trans 'Reports' %}</a></li>
<li><a class="lnk-configuration" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/configuration.png"/> {% trans 'Configuration' %}</a></li>
<li><a class="lnk-clear_cache" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/flush-cache.png"/> {% trans 'Flush cache' %}</a></li>
</ul>
</li>
<!-- Side bar -->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<li><a class="lnk-dashboard" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/dashboard-monitor.png"/> {% trans 'Overview' %}</a></li>
<li><a class="lnk-service_providers" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/providers.png"/> {% trans 'Services' %}</a></li>
<li><a class="lnk-authenticators" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/authenticators.png"/> {% trans 'Authenticators' %}</a></li>
<li><a class="lnk-osmanagers" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/osmanagers.png"/> Os Managers</a></li>
<li><a class="lnk-connectivity" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/transports.png"/> {% trans 'Connectivity' %}</a></li>
<li><a class="lnk-calendars" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/calendars.png"/> {% trans 'Calendars' %}</a></li>
<li><a class="lnk-deployed_services" href=""><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/pools.png"/> {% trans 'Service Pools' %}</a></li>
{% if admin %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/tools.png"/> Tools <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a class="lnk-gallery" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/gallery.png"/> {% trans 'Gallery' %}</a></li>
<li><a class="lnk-reports" href=""><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/reports.png"/> {% trans 'Reports' %}</a></li>
<li><a class="lnk-configuration" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/configuration.png"/> {% trans 'Configuration' %}</a></li>
<li><a class="lnk-clear_cache" href="#"><img class="table-icon" src="{{ STATIC_URL }}/adm/img/icons/flush-cache.png"/> {% trans 'Flush cache' %}</a></li>
</ul>
</li>
{% endif %}
</ul>
<ul class="nav navbar-nav navbar-right navbar-user">
</ul>
<form id="form_language" action="{% url "django.views.i18n.set_language" %}" method="post">
{% csrf_token %}
<input id="id_language" type="hidden" name="language" value=""/>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
{% for lang in LANGUAGES %}
{% if lang.0 == LANGUAGE_CODE %}
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><!--<i class="glyphicon bfh-flag-{{ lang.0|country }}"></i>-->
<i class="fa fa-comments-o"></i> {% trans lang.1|capfirst %}<b class="caret"></b>
</a>
{% endif %}
{% endfor %}
<ul class="dropdown-menu">
{% for lang in LANGUAGES %}
{% if lang.0 != LANGUAGE_CODE %}
<!-- here we force an update of locale of REST api -->
<li><a href="#" onclick='$("#id_language").val("{{ lang.0 }}"); $("#form_language").submit();'>{% trans lang.1|capfirst %}</a></li>
{% endif %}
{% endfor %}
</ul>
<ul class="nav navbar-nav navbar-right navbar-user">
</ul>
<form id="form_language" action="{% url "django.views.i18n.set_language" %}" method="post">
{% csrf_token %}
<input id="id_language" type="hidden" name="language" value=""/>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
{% for lang in LANGUAGES %}
{% if lang.0 == LANGUAGE_CODE %}
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><!--<i class="glyphicon bfh-flag-{{ lang.0|country }}"></i>-->
<i class="fa fa-comments-o"></i> {% trans lang.1|capfirst %}<b class="caret"></b>
</a>
{% endif %}
{% endfor %}
<ul class="dropdown-menu">
{% for lang in LANGUAGES %}
{% if lang.0 != LANGUAGE_CODE %}
<!-- here we force an update of locale of REST api -->
<li><a href="#" onclick='$("#id_language").val("{{ lang.0 }}"); $("#form_language").submit();'>{% trans lang.1|capfirst %}</a></li>
{% endif %}
{% endfor %}
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-dashboard"></i> {{ user.real_name }} <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="{% url 'uds.web.views.index' %}"><span class="fa fa-user"></span> {% trans 'User mode' %}</a></li>
<li><a href="/logout"><span class="fa fa-power-off text-danger"></span> {% trans 'Logout' %}</a></li>
</ul>
</li>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-dashboard"></i> {{ user.real_name }} <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="{% url 'uds.web.views.index' %}"><span class="fa fa-user"></span> {% trans 'User mode' %}</a></li>
<li><a href="/logout"><span class="fa fa-power-off text-danger"></span> {% trans 'Logout' %}</a></li>
</ul>
</li>
</ul>
</form>
</div>
</ul>
</form>
</div>
</nav>

View File

@ -0,0 +1,3 @@
{
"directory": "bower_components"
}

View File

@ -0,0 +1,21 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
# Change these settings to your own preference
indent_style = space
indent_size = 2
# We recommend you to keep these unchanged
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

1
server/templates/admin/.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
* text=auto

4
server/templates/admin/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
node_modules
dist
.tmp
bower_components

View File

@ -0,0 +1,3 @@
{
"generator-mocha": {}
}

View File

@ -0,0 +1,444 @@
// Generated on 2015-09-21 using
// generator-webapp 1.1.0
'use strict';
// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// If you want to recursively match all subfolders, use:
// 'test/spec/**/*.js'
module.exports = function (grunt) {
// Time how long tasks take. Can help when optimizing build times
require('time-grunt')(grunt);
// Automatically load required grunt tasks
require('jit-grunt')(grunt, {
useminPrepare: 'grunt-usemin'
});
// Configurable paths
var config = {
app: 'app',
dist: 'dist'
};
// Define the configuration for all the tasks
grunt.initConfig({
// Project settings
config: config,
// Watches files for changes and runs tasks based on the changed files
watch: {
bower: {
files: ['bower.json'],
tasks: ['wiredep']
},
babel: {
files: ['<%= config.app %>/scripts/{,*/}*.js'],
tasks: ['babel:dist']
},
babelTest: {
files: ['test/spec/{,*/}*.js'],
tasks: ['babel:test', 'test:watch']
},
gruntfile: {
files: ['Gruntfile.js']
},
sass: {
files: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'],
tasks: ['sass', 'postcss']
},
styles: {
files: ['<%= config.app %>/styles/{,*/}*.css'],
tasks: ['newer:copy:styles', 'postcss']
}
},
browserSync: {
options: {
notify: false,
background: true,
watchOptions: {
ignored: ''
}
},
livereload: {
options: {
files: [
'<%= config.app %>/{,*/}*.html',
'.tmp/styles/{,*/}*.css',
'<%= config.app %>/images/{,*/}*',
'.tmp/scripts/{,*/}*.js'
],
port: 9000,
server: {
baseDir: ['.tmp', config.app],
routes: {
'/bower_components': './bower_components'
}
}
}
},
test: {
options: {
port: 9001,
open: false,
logLevel: 'silent',
host: 'localhost',
server: {
baseDir: ['.tmp', './test', config.app],
routes: {
'/bower_components': './bower_components'
}
}
}
},
dist: {
options: {
background: false,
server: '<%= config.dist %>'
}
}
},
// Empties folders to start fresh
clean: {
dist: {
files: [{
dot: true,
src: [
'.tmp',
'<%= config.dist %>/*',
'!<%= config.dist %>/.git*'
]
}]
},
server: '.tmp'
},
// Make sure code styles are up to par and there are no obvious mistakes
eslint: {
target: [
'Gruntfile.js',
'<%= config.app %>/scripts/{,*/}*.js',
'!<%= config.app %>/scripts/vendor/*',
'test/spec/{,*/}*.js'
]
},
// Mocha testing framework configuration options
mocha: {
all: {
options: {
run: true,
urls: ['http://<%= browserSync.test.options.host %>:<%= browserSync.test.options.port %>/index.html']
}
}
},
// Compiles ES6 with Babel
babel: {
options: {
sourceMap: true
},
dist: {
files: [{
expand: true,
cwd: '<%= config.app %>/scripts',
src: '{,*/}*.js',
dest: '.tmp/scripts',
ext: '.js'
}]
},
test: {
files: [{
expand: true,
cwd: 'test/spec',
src: '{,*/}*.js',
dest: '.tmp/spec',
ext: '.js'
}]
}
},
// Compiles Sass to CSS and generates necessary files if requested
sass: {
options: {
sourceMap: true,
sourceMapEmbed: true,
sourceMapContents: true,
includePaths: ['.']
},
dist: {
files: [{
expand: true,
cwd: '<%= config.app %>/styles',
src: ['*.{scss,sass}'],
dest: '.tmp/styles',
ext: '.css'
}]
}
},
postcss: {
options: {
map: true,
processors: [
// Add vendor prefixed styles
require('autoprefixer')({
browsers: ['> 1%', 'last 2 versions', 'Firefox ESR']
})
]
},
dist: {
files: [{
expand: true,
cwd: '.tmp/styles/',
src: '{,*/}*.css',
dest: '.tmp/styles/'
}]
}
},
// Automatically inject Bower components into the HTML file
wiredep: {
app: {
src: ['<%= config.app %>/index.html'],
exclude: ['bootstrap.js'],
ignorePath: /^(\.\.\/)*\.\./
},
sass: {
src: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'],
ignorePath: /^(\.\.\/)+/
}
},
// Renames files for browser caching purposes
filerev: {
dist: {
src: [
'<%= config.dist %>/scripts/{,*/}*.js',
'<%= config.dist %>/styles/{,*/}*.css',
'<%= config.dist %>/images/{,*/}*.*',
'<%= config.dist %>/styles/fonts/{,*/}*.*',
'<%= config.dist %>/*.{ico,png}'
]
}
},
// Reads HTML for usemin blocks to enable smart builds that automatically
// concat, minify and revision files. Creates configurations in memory so
// additional tasks can operate on them
useminPrepare: {
options: {
dest: '<%= config.dist %>'
},
html: '<%= config.app %>/index.html'
},
// Performs rewrites based on rev and the useminPrepare configuration
usemin: {
options: {
assetsDirs: [
'<%= config.dist %>',
'<%= config.dist %>/images',
'<%= config.dist %>/styles'
]
},
html: ['<%= config.dist %>/{,*/}*.html'],
css: ['<%= config.dist %>/styles/{,*/}*.css']
},
// The following *-min tasks produce minified files in the dist folder
imagemin: {
dist: {
files: [{
expand: true,
cwd: '<%= config.app %>/images',
src: '{,*/}*.{gif,jpeg,jpg,png}',
dest: '<%= config.dist %>/images'
}]
}
},
svgmin: {
dist: {
files: [{
expand: true,
cwd: '<%= config.app %>/images',
src: '{,*/}*.svg',
dest: '<%= config.dist %>/images'
}]
}
},
htmlmin: {
dist: {
options: {
collapseBooleanAttributes: true,
collapseWhitespace: true,
conservativeCollapse: true,
removeAttributeQuotes: true,
removeCommentsFromCDATA: true,
removeEmptyAttributes: true,
removeOptionalTags: true,
// true would impact styles with attribute selectors
removeRedundantAttributes: false,
useShortDoctype: true
},
files: [{
expand: true,
cwd: '<%= config.dist %>',
src: '{,*/}*.html',
dest: '<%= config.dist %>'
}]
}
},
// By default, your `index.html`'s <!-- Usemin block --> will take care
// of minification. These next options are pre-configured if you do not
// wish to use the Usemin blocks.
// cssmin: {
// dist: {
// files: {
// '<%= config.dist %>/styles/main.css': [
// '.tmp/styles/{,*/}*.css',
// '<%= config.app %>/styles/{,*/}*.css'
// ]
// }
// }
// },
// uglify: {
// dist: {
// files: {
// '<%= config.dist %>/scripts/scripts.js': [
// '<%= config.dist %>/scripts/scripts.js'
// ]
// }
// }
// },
// concat: {
// dist: {}
// },
// Copies remaining files to places other tasks can use
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: '<%= config.app %>',
dest: '<%= config.dist %>',
src: [
'*.{ico,png,txt}',
'images/{,*/}*.webp',
'{,*/}*.html',
'styles/fonts/{,*/}*.*'
]
}, {
expand: true,
dot: true,
cwd: '.',
src: 'bower_components/bootstrap-sass/assets/fonts/bootstrap/*',
dest: '<%= config.dist %>'
}]
}
},
// Generates a custom Modernizr build that includes only the tests you
// reference in your app
modernizr: {
dist: {
devFile: 'bower_components/modernizr/modernizr.js',
outputFile: '<%= config.dist %>/scripts/vendor/modernizr.js',
files: {
src: [
'<%= config.dist %>/scripts/{,*/}*.js',
'<%= config.dist %>/styles/{,*/}*.css',
'!<%= config.dist %>/scripts/vendor/*'
]
},
uglify: true
}
},
// Run some tasks in parallel to speed up build process
concurrent: {
server: [
'babel:dist',
'sass'
],
test: [
'babel'
],
dist: [
'babel',
'sass',
'imagemin',
'svgmin'
]
}
});
grunt.registerTask('serve', 'start the server and preview your app', function (target) {
if (target === 'dist') {
return grunt.task.run(['build', 'browserSync:dist']);
}
grunt.task.run([
'clean:server',
'wiredep',
'concurrent:server',
'postcss',
'browserSync:livereload',
'watch'
]);
});
grunt.registerTask('server', function (target) {
grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
grunt.task.run([target ? ('serve:' + target) : 'serve']);
});
grunt.registerTask('test', function (target) {
if (target !== 'watch') {
grunt.task.run([
'clean:server',
'concurrent:test',
'postcss'
]);
}
grunt.task.run([
'browserSync:test',
'mocha'
]);
});
grunt.registerTask('build', [
'clean:dist',
'wiredep',
'useminPrepare',
'concurrent:dist',
'postcss',
'concat',
'cssmin',
'uglify',
'copy:dist',
'modernizr',
'filerev',
'usemin'
// 'htmlmin'
]);
grunt.registerTask('default', [
'newer:eslint',
'test',
'build'
]);
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,4 @@
# robotstxt.org/
User-agent: *
Disallow:

View File

@ -0,0 +1 @@
console.log('\'Allo \'Allo!'); // eslint-disable-line no-console

Binary file not shown.

View File

@ -0,0 +1,177 @@
.btn3d {
margin: 4px;
box-shadow: 1px 1px 5px #888888;
}
.btn3d-xs {
font-weight: 300;
}
.btn3d-danger {
color: #fff;
background-color: #db5566;
border-bottom: 2px solid #af4451;
&:hover {
color: #fff;
background-color: #df6a78;
border-bottom: 2px solid #b25560;
outline: none;
}
}
.btn3d-primary.active:focus, .btn3d-danger:focus, .open > .dropdown-toggle.btn3d-danger {
color: #fff;
background-color: #df6a78;
border-bottom: 2px solid #b25560;
outline: none;
}
.btn3d-danger {
&:active, &.active {
color: #fff;
background-color: #c04b59;
border-top: 2px solid #9a3c47;
margin-top: 2px;
}
}
.btn3d-warning {
color: #fff;
background-color: #f4ad49;
border-bottom: 2px solid #c38a3a;
&:hover {
color: #fff;
background-color: #f5b75f;
border-bottom: 2px solid #c4924c;
outline: none;
}
}
.btn3d-primary.active:focus, .btn3d-warning:focus, .open > .dropdown-toggle.btn3d-warning {
color: #fff;
background-color: #f5b75f;
border-bottom: 2px solid #c4924c;
outline: none;
}
.btn3d-warning {
&:active, &.active {
color: #fff;
background-color: #d69840;
border-top: 2px solid #ab7a33;
margin-top: 2px;
}
}
.btn3d-success {
color: #fff;
background-color: #51bf87;
border-bottom: 2px solid #41996c;
&:hover {
color: #fff;
background-color: #66c796;
border-bottom: 2px solid #529f78;
outline: none;
}
}
.btn3d-primary.active:focus, .btn3d-success:focus, .open > .dropdown-toggle.btn3d-success {
color: #fff;
background-color: #66c796;
border-bottom: 2px solid #529f78;
outline: none;
}
.btn3d-success {
&:active, &.active {
color: #fff;
background-color: #47a877;
border-top: 2px solid #39865f;
outline: none;
outline-offset: none;
margin-top: 2px;
}
}
.btn3d-primary {
color: #fff;
background-color: #0bacd3;
border-bottom: 2px solid #098aa9;
&:hover, &.active:focus, &:focus {
color: #fff;
background-color: #29b6d8;
border-bottom: 2px solid #2192ad;
outline: none;
}
}
.open > .dropdown-toggle.btn3d-primary {
color: #fff;
background-color: #29b6d8;
border-bottom: 2px solid #2192ad;
outline: none;
}
.btn3d-primary {
&:active, &.active {
color: #fff;
background-color: #0a97b9;
border-top: 2px solid #087994;
outline-offset: none;
margin-top: 2px;
}
}
.btn3d {
&:focus, &:active:focus, &.active:focus {
outline: none;
outline-offset: 0px;
}
}
/*
.btn3d {
transition:all .08s linear;
position:relative;
outline:medium none;
-moz-outline-style:none;
border:0px;
margin-right:10px;
margin-top:15px;
}
.btn3d:focus {
outline:medium none;
-moz-outline-style:none;
}
.btn3d:active {
top:9px;
}
.btn3d-default {
box-shadow:0 0 0 1px #ebebeb inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #adadad, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#fff;
}
.btn3d-primary {
box-shadow:0 0 0 1px #428bca inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #357ebd, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#428bca;
}
.btn3d-success {
box-shadow:0 0 0 1px #5cb85c inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #4cae4c, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#5cb85c;
}
.btn3d-info {
box-shadow:0 0 0 1px #5bc0de inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #46b8da, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#5bc0de;
}
.btn3d-warning {
box-shadow:0 0 0 1px #f0ad4e inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #eea236, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#f0ad4e;
}
.btn3d-danger {
box-shadow:0 0 0 1px #c63702 inset, 0 0 0 2px rgba(255,255,255,0.15) inset, 0 8px 0 0 #C24032, 0 8px 0 1px rgba(0,0,0,0.4), 0 8px 8px 1px rgba(0,0,0,0.5);
background-color:#c63702;
}
*/

View File

@ -0,0 +1,282 @@
$icon-font-path: "../bower_components/bootstrap-sass/assets/fonts/bootstrap/";
$breadcrumb-separator: ' -> ';
$border-radius-base: 0px !default;
$border-radius-large: 0px !default;
$border-radius-small: 0px !default;
// bower:scss
@import "bower_components/bootstrap-sass/assets/stylesheets/_bootstrap.scss";
// endbower
@font-face {
font-family: 'Droid Sans Mono';
font-style: normal;
font-weight: 400;
src: local('Droid Sans Mono'), local('DroidSansMono'), url(DroidSansMono.woff2) format('woff2');
}
// Fix for firefox for fieldsets
@-moz-document url-prefix() {
fieldset {
display: table-cell;
}
}
body {
font-family: 'Droid Sans Mono', sans-serif;
margin-top: 50px;
}
#wrapper {
padding-left: 0;
}
#page-wrapper {
width: 100%;
padding: 5px 15px;
}
/* Custom */
.btn3d-tables {
margin-top: 0px;
margin-botton: 8px;
margin-right: 8px;
}
.btn-group-3d {
margin-bottom: 12px;
}
.label-tbl-button {
display: none;
}
/* collapsable && closeable pannels */
.chevron {
&:before {
content: "\f139";
}
&.collapsed:before {
content: "\f13a";
}
}
.panel-icon {
margin-left: 0.6em !important;
cursor: pointer;
}
.table-icon {
width: 1.2em;
padding-bottom: 3px;
}
.info-img {
width: 5em;
}
.navbar-img {
width: 2em;
margin-top: -8px;
}
.cursor-pointer {
cursor: pointer !important;
}
#minimized {
margin-top: 0.6em;
margin-bottom: 0.3em;
}
/* modal dialogs & related*/
.modal-dialog {
/* new custom width */
width: 90%;
}
/*.modal-backdrop {
background-color: gray;
}*/
.modal {
overflow-y: auto;
}
.tab-pane {
margin-top: 24px;
}
.tooltip {
z-index: 2014;
}
/* Tables */
/* Tables "styling" */
.dataTables_wrapper {
overflow-x: hidden;
min-height: 300px;
}
/* States */
/*
This states displays as default
tr.row-state-A > td, tr.row-state-F > td, tr.row-state-U > td, tr.row-state-W > td {
}
*/
tr {
&.row-state-B:nth-child(2n) > td, &.row-state-C:nth-child(2n) > td, &.row-state-E:nth-child(2n) > td, &.row-state-Y:nth-child(2n) > td, &.row-state-B:nth-child(2n+1) > td, &.row-state-C:nth-child(2n+1) > td, &.row-state-E:nth-child(2n+1) > td, &.row-state-Y:nth-child(2n+1) > td {
color: #FF6600 !important;
}
&.row-state-M:nth-child(2n+1) > td, &.row-state-R:nth-child(2n+1) > td, &.row-state-I:nth-child(2n+1) > td, &.row-state-S > td:nth-child(2n+1) {
color: #9A9A9A !important;
}
&.row-state-M:nth-child(2n) > td, &.row-state-R:nth-child(2n) > td, &.row-state-I:nth-child(2n) > td, &.row-state-S > td:nth-child(2n) {
color: #858585 !important;
}
&.row-maintenance-true > td {
color: #FF6600 !important;
}
&.log-WARN {
color: blue;
}
&.log-DEBUG {
color: green;
}
&.log-INFO, &.log-OTHER {
color: black;
}
&.log-ERROR, &.log-FATAL {
color: red;
}
}
/* Logs */
.chart-big {
display: block;
height: 400px;
}
.chart-medium {
display: block;
height: 250px;
}
.chart-small {
display: block;
height: 100px;
}
/* End tables styling */
/* Charts */
.chart-content {
width: 100%;
height: 100%;
}
/* Edit Below to Customize Widths > 768px */
@media (min-width: 768px) {
/* Wrappers */
#wrapper {
padding-left: 64px;
}
#page-wrapper {
padding: 15px 25px;
}
/* Side Nav */
.side-nav {
margin-left: -180px;
left: 180px;
width: 40px;
position: fixed;
top: 50px;
height: 100%;
border-radius: 0;
border: none;
background-color: #222222;
overflow-y: auto;
-webkit-transition: width 0.3s; /* For Safari 3.1 to 6.0 */
transition: width 0.3s;
&:hover {
width: 225px;
}
> li {
&.dropdown > ul.dropdown-menu {
position: relative;
min-width: 225px;
margin: 0;
padding: 0;
border: none;
border-radius: 0;
background-color: transparent;
box-shadow: none;
-webkit-box-shadow: none;
> li > a {
color: #999999;
padding: 15px 15px 15px 25px;
&:hover, &.active, &:focus {
color: #fff;
background-color: #080808;
}
}
}
> a {
width: 225px;
}
}
}
/* Bootstrap Default Overrides - Customized Dropdowns for the Side Nav */
.navbar-inverse .navbar-nav > li > a {
&:hover, &:focus {
background-color: #080808;
}
}
.label-tbl-button {
display: inline-block;
}
.modal-dialog {
/* new custom width */
width: 60%;
}
}
/* theme */
@import "theme.scss";
@import "buttons.scss";
@import "widgets.scss";
@import "tables.scss";

View File

@ -0,0 +1,41 @@
@media (max-width: 768px) {
table, thead, tbody, th, td, tr {
display: block;
}
/* Hide table headers (but not display: none;, for accessibility) */
thead tr {
position: absolute;
top: -9999px;
left: -9999px;
}
tr {
border: 1px solid #ccc;
}
td {
/* Behave like a "row" */
border: none;
border-bottom: 1px solid #eee;
position: relative;
padding-left: 50% !important;
white-space: normal;
text-align: left;
&:before {
/* Now like a table header */
position: absolute;
/* Top/left values mimic padding */
top: 6px;
left: 6px;
width: 45%;
padding-right: 10px;
white-space: nowrap;
text-align: left;
font-weight: bold;
}
}
}

View File

@ -0,0 +1,8 @@
// fixes breadcrumb for using
.breadcrumb {
> li {
+ li:before {
content: "/ "; // Unicode space added since inline-block means non-collapsing white-space
}
}
}

View File

@ -0,0 +1,352 @@
// Widgets
.widget {
background: #fff;
border: 1px solid #c1c1c1;
margin: 0 auto 20px;
position: static;
.tab-content {
padding: 0;
}
.widget-head {
background-color: #f8f8f8;
background-image: linear-gradient(to bottom, #f8f8f8, #ededed);
background-image: -moz-linear-gradient(top, #f8f8f8, #ededed);
background-image: -o-linear-gradient(top, #f8f8f8, #ededed);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f8f8f8), to(#ededed));
background-image: -webkit-linear-gradient(top, #f8f8f8, #ededed);
background-repeat: repeat-x;
border-bottom: 1px solid #c1c1c1;
color: #000;
height: 40px;
line-height: 40px;
padding: 0 15px 0 0;
position: relative;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
&.progress {
border-radius: 0 0 0 0;
margin: 0;
moz-border-radius: 0 0 0 0;
padding: 0;
webkit-border-radius: 0 0 0 0;
}
.glyphicons {
height: 40px;
padding: 0;
width: 30px;
}
.fai:before {
color: rgba(255, 255, 255, 0.5);
font-size: 16px;
height: 40px;
line-height: 31px;
text-align: center;
width: 30px;
}
.heading {
color: #45484d;
float: left;
font-size: 14px;
height: 40px;
line-height: 40px;
margin: 0;
padding: 0 15px;
&.glyphicons {
display: block;
padding: 0 0 0 35px;
width: auto;
}
&.fai:before {
color: #45484d;
font-size: 16px;
font-weight: normal;
height: 40px;
left: 0;
line-height: 40px;
margin: 0;
padding: 0;
text-align: center;
text-shadow: none;
top: 0;
width: 35px;
}
}
a {
text-shadow: none;
}
.dropdown-menu li > a {
&:hover, &:focus {
background-color: #47759e;
background-image: linear-gradient(to bottom, #47759e, #d24343);
background-image: -moz-linear-gradient(top, #47759e, #d24343);
background-image: -o-linear-gradient(top, #47759e, #d24343);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#47759e), to(#d24343));
background-image: -webkit-linear-gradient(top, #47759e, #d24343);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffda4c4c', endColorstr='#ffd24343', GradientType=0);
}
}
.dropdown-submenu:hover > a {
background-color: #47759e;
background-image: linear-gradient(to bottom, #47759e, #d24343);
background-image: -moz-linear-gradient(top, #47759e, #d24343);
background-image: -o-linear-gradient(top, #47759e, #d24343);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#47759e), to(#d24343));
background-image: -webkit-linear-gradient(top, #47759e, #d24343);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffda4c4c', endColorstr='#ffd24343', GradientType=0);
}
}
.details {
color: #45484d;
font-size: 8pt;
}
.widget-body {
padding: 20px 15px;
form {
margin: 0;
}
.count {
font-size: 15pt;
font-weight: 400;
}
> p:last-child {
margin: 0;
}
&.list {
color: #575655;
padding: 0;
ul {
list-style: none;
margin: 0;
li {
border-bottom: 1px solid rgba(0, 0, 0, 0.02);
clear: both;
height: 39px;
line-height: 39px;
padding: 0 10px;
text-align: left;
&:first-child {
border-top: none;
}
&:last-child {
border-bottom: none;
}
.count {
color: #47759e;
float: right;
}
.sparkline {
margin-left: 5px;
position: relative;
top: 5px;
}
}
}
&.products {
li {
height: 60px;
line-height: 60px;
}
.img {
background: #272729;
border-radius: 3px 3px 3px 3px;
color: #818181;
cursor: pointer;
display: inline-block;
float: left;
font-size: 10pt;
font-weight: 600;
height: 44px;
line-height: 44px;
margin: 8px 8px 0 0;
moz-border-radius: 3px 3px 3px 3px;
text-align: center;
webkit-border-radius: 3px 3px 3px 3px;
width: 48px;
}
.title {
display: inline-block;
font-family: "Raleway",sans-serif;
line-height: normal;
padding: 13px 0 0;
text-transform: uppercase;
strong {
font-family: "Open Sans",sans-serif;
text-transform: none;
}
}
}
&.fluid ul li {
height: auto;
line-height: normal;
padding: 10px;
}
&.list-2 ul li {
background: #f8f8f8;
border-bottom: 1px solid #d8d9da;
border-top: none;
&.active {
background: #fff;
border-color: #dddddd;
i:before {
background: #47759e;
color: #fff;
font-weight: normal;
text-shadow: none;
}
a {
color: #47759e;
}
}
&:last-child {
border-bottom: none;
}
a {
color: #222;
display: block;
padding: 0 0 0 30px;
i:before {
background: #dddddd;
border: 1px solid #ccc;
color: #555;
font-size: 14px;
height: 17px;
left: 0;
padding-top: 3px;
text-align: center;
text-shadow: 0 1px 0 #fff;
top: 9px;
vertical-align: middle;
width: 20px;
}
}
&.hasSubmenu {
height: auto;
ul {
padding: 0 0 10px;
li {
background: none;
border: none;
height: auto;
line-height: 20px;
line-height: normal;
a {
color: #333;
padding: 0 0 0 20px;
}
&.active a {
font-weight: bold;
}
}
}
}
}
}
}
.widget-footer {
background: #f7f7f7;
border-bottom: 1px solid #ffffff;
border-top: 1px solid #e6e6e6;
height: 25px;
line-height: 25px;
.fa {
float: right;
height: 25px;
line-height: 25px;
padding: 0;
width: 25px;
i:before {
color: #c3c3c3;
font-size: 16px;
height: 25px;
line-height: 25px;
text-align: center;
text-shadow: 0 1px 0 #fff;
width: 20px;
}
&:hover i:before {
color: rgba(0, 0, 0, 0.5);
}
}
}
&.margin-bottom-none {
margin-bottom: 0;
}
&.widget-gray {
background: #f5f5f5;
.widget-head {
background: #e9e9e9;
border-color: #d1d2d3;
box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);
moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);
webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);
.heading {
color: #555555;
text-shadow: 0 1px 0 #fff;
&.fai:before {
background: none;
border-color: rgba(0, 0, 0, 0.1);
color: #555;
}
}
}
}
&.widget-body-white .widget-body {
background: #fff;
}
}
.widget-icon {
margin-left: 0.6em !important;
cursor: pointer;
}

View File

@ -0,0 +1,21 @@
{
"name": "admin",
"private": true,
"dependencies": {
"bootstrap-sass": "~3.3.5",
"modernizr": "~2.8.3"
},
"overrides": {
"bootstrap-sass": {
"main": [
"assets/stylesheets/_bootstrap.scss",
"assets/fonts/bootstrap/*",
"assets/javascripts/bootstrap.js"
]
}
},
"devDependencies": {
"chai": "~3.3.0",
"mocha": "~2.3.3"
}
}

View File

@ -0,0 +1,58 @@
{
"private": true,
"devDependencies": {
"autoprefixer": "^6.0.2",
"grunt": "^0.4.5",
"grunt-babel": "^5.0.0",
"grunt-browser-sync": "^2.1.2",
"grunt-concurrent": "^1.0.0",
"grunt-contrib-clean": "^0.6.0",
"grunt-contrib-concat": "^0.5.1",
"grunt-contrib-copy": "^0.8.0",
"grunt-contrib-cssmin": "^0.12.2",
"grunt-contrib-htmlmin": "^0.4.0",
"grunt-contrib-imagemin": "^0.9.3",
"grunt-contrib-uglify": "^0.8.0",
"grunt-contrib-watch": "^0.6.1",
"grunt-eslint": "^17.0.0",
"grunt-filerev": "^2.2.0",
"grunt-mocha": "^0.4.12",
"grunt-modernizr": "^0.6.0",
"grunt-newer": "^1.1.0",
"grunt-postcss": "^0.6.0",
"grunt-sass": "^1.0.0",
"grunt-svgmin": "^2.0.1",
"grunt-usemin": "^3.0.0",
"grunt-wiredep": "^2.0.0",
"jit-grunt": "^0.9.1",
"time-grunt": "^1.1.0"
},
"engines": {
"node": ">=0.10.0"
},
"scripts": {
"test": "grunt test"
},
"eslintConfig": {
"extends": [
"eslint:recommended"
],
"env": {
"node": true,
"browser": true,
"es6": true,
"jquery": true,
"mocha": true
},
"rules": {
"quotes": [
2,
"single"
],
"indent": [
2,
2
]
}
}
}

View File

@ -0,0 +1,29 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Mocha Spec Runner</title>
<link rel="stylesheet" href="../bower_components/mocha/mocha.css">
</head>
<body>
<div id="mocha"></div>
<script src="../bower_components/mocha/mocha.js"></script>
<script>mocha.setup('bdd');</script>
<script src="../bower_components/chai/chai.js"></script>
<script>
var assert = chai.assert;
var expect = chai.expect;
var should = chai.should();
</script>
<!-- bower:js -->
<!-- endbower -->
<!-- include source files here... -->
<!-- include spec files here... -->
<script src="spec/test.js"></script>
<script>
if (navigator.userAgent.indexOf('PhantomJS') === -1) {
mocha.run();
}
</script>
</body>
</html>

View File

@ -0,0 +1,11 @@
(function () {
'use strict';
describe('Give it some context', function () {
describe('maybe a bit more context here', function () {
it('should run here few assertions', function () {
});
});
});
})();