* Added a template folder to work on admin design faster
* Updated Admin CSS (Testing new view) * Minor fixes (typos)
BIN
server/src/uds/static/adm/css/DroidSansMono.woff2
Normal 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%;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
*/
|
@ -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;
|
||||
}
|
5
server/src/uds/static/adm/css/uds.css
Normal 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>
|
||||
|
||||
|
@ -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>
|
||||
|
3
server/templates/admin/.bowerrc
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"directory": "bower_components"
|
||||
}
|
21
server/templates/admin/.editorconfig
Normal 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
@ -0,0 +1 @@
|
||||
* text=auto
|
4
server/templates/admin/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
node_modules
|
||||
dist
|
||||
.tmp
|
||||
bower_components
|
3
server/templates/admin/.yo-rc.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"generator-mocha": {}
|
||||
}
|
444
server/templates/admin/Gruntfile.js
Normal 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'
|
||||
]);
|
||||
};
|
BIN
server/templates/admin/app/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
server/templates/admin/app/favicon.ico
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
server/templates/admin/app/images/icons/assigned.png
Normal file
After Width: | Height: | Size: 456 B |
BIN
server/templates/admin/app/images/icons/authenticators.png
Normal file
After Width: | Height: | Size: 652 B |
BIN
server/templates/admin/app/images/icons/cached.png
Normal file
After Width: | Height: | Size: 497 B |
BIN
server/templates/admin/app/images/icons/calendars.png
Normal file
After Width: | Height: | Size: 712 B |
BIN
server/templates/admin/app/images/icons/configuration.png
Normal file
After Width: | Height: | Size: 826 B |
BIN
server/templates/admin/app/images/icons/dashboard-monitor.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
server/templates/admin/app/images/icons/flush-cache.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
server/templates/admin/app/images/icons/gallery.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
server/templates/admin/app/images/icons/groups.png
Normal file
After Width: | Height: | Size: 343 B |
BIN
server/templates/admin/app/images/icons/logs.png
Normal file
After Width: | Height: | Size: 696 B |
BIN
server/templates/admin/app/images/icons/maleta.png
Normal file
After Width: | Height: | Size: 771 B |
BIN
server/templates/admin/app/images/icons/networks.png
Normal file
After Width: | Height: | Size: 408 B |
BIN
server/templates/admin/app/images/icons/osmanagers.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
server/templates/admin/app/images/icons/pools.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
server/templates/admin/app/images/icons/providers.png
Normal file
After Width: | Height: | Size: 634 B |
BIN
server/templates/admin/app/images/icons/publications.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
server/templates/admin/app/images/icons/reports.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
server/templates/admin/app/images/icons/services.png
Normal file
After Width: | Height: | Size: 805 B |
BIN
server/templates/admin/app/images/icons/tools.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
server/templates/admin/app/images/icons/transports.png
Normal file
After Width: | Height: | Size: 916 B |
BIN
server/templates/admin/app/images/icons/users.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
server/templates/admin/app/images/udsicon.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
373
server/templates/admin/app/index.html
Normal file
4
server/templates/admin/app/robots.txt
Normal file
@ -0,0 +1,4 @@
|
||||
# robotstxt.org/
|
||||
|
||||
User-agent: *
|
||||
Disallow:
|
1
server/templates/admin/app/scripts/main.js
Normal file
@ -0,0 +1 @@
|
||||
console.log('\'Allo \'Allo!'); // eslint-disable-line no-console
|
BIN
server/templates/admin/app/styles/DroidSansMono.woff2
Normal file
177
server/templates/admin/app/styles/buttons.scss
Normal 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;
|
||||
}
|
||||
*/
|
282
server/templates/admin/app/styles/main.scss
Normal 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";
|
41
server/templates/admin/app/styles/tables.scss
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
8
server/templates/admin/app/styles/theme.scss
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
352
server/templates/admin/app/styles/widgets.scss
Normal 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;
|
||||
}
|
21
server/templates/admin/bower.json
Normal 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"
|
||||
}
|
||||
}
|
58
server/templates/admin/package.json
Normal 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
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
29
server/templates/admin/test/index.html
Normal 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>
|
11
server/templates/admin/test/spec/test.js
Normal 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 () {
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|