Files
pathfinder/sass/layout/_map.scss
2015-04-11 18:46:54 +02:00

429 lines
8.6 KiB
SCSS

$mapHeight: 520px;
$mapWidth: 2500px;
// start bounce mixin ==============================================
@mixin bounce-up-down{
@include animation-duration( 1s);
@include animation-delay(0.5s);
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
-webkit-animation-timing-function: linear;
animation-timing-function: linear;
animation-iteration-count:infinite;
-webkit-animation-iteration-count:infinite;
-webkit-animation-name: bounce;
animation-name: bounce;
}
@-webkit-keyframes bounce {
0%, 20%, 50%, 80%, 100% {-webkit-transform: translateY(0);}
40% {-webkit-transform: translateY(-8px);}
60% {-webkit-transform: translateY(-4px);}
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% {transform: translateY(0);}
40% {transform: translateY(-8px);}
60% {transform: translateY(-4px);}
}
// end bounce mixin ================================================
.pf-map-tab-content{
.pf-map-wrapper{
position: relative;
width: 100%;
max-width: $mapWidth + 15px;
height: $mapHeight + 30px;
overflow: auto;
padding: 5px;
background: rgba($gray-darker, 0.93);
box-shadow:inset -3px 3px 10px 0 rgba($black, 0.3);
@include border-bottom-radius(5px);
border: {
width: 1px;
style: solid;
color: $gray-dark;
}
}
}
.pf-map-overlay{
position: absolute;
display: none; // triggered by js
z-index: 10000;
width: 36px;
height: 36px;
bottom: 23px;
right: 10px;
background: rgba($black, 0.2);
@include border-radius(5px);
}
// 20x20px grid background
.pf-grid-small{
background: inline-image("#{$base-url}/grid_40x40.png") !important;
}
.pf-map{
width: $mapWidth;
height: $mapHeight;
position: relative;
font-family: $font-family-bold;
// jsPlumb classes =================================================
._jsPlumb_target, ._jsPlumb_source{
}
._jsPlumb_overlay{
opacity: 1;
pointer-events: none; // click through overlays
//@include transition( opacity 0.1s ease-in);
}
// hover effects ===================================================
._jsPlumb_hover{
// hover effect for connections
&._jsPlumb_overlay{
opacity: 0; // hide opacity on hover
}
&:not(._jsPlumb_overlay){
@include bounce-up-down; // label should not bounce
}
}
// hover effect for systems
._jsPlumb_target_hover, ._jsPlumb_source_hover{
@include bounce-up-down;
@include box-shadow(0 6px 12px rgba(0,0,0,.3));
}
// =================================================================
.pf-system{
position: absolute;
min-width: 60px;
height: auto;
background-color: $gray-dark;
font-family: $font-family-bold;
z-index: 100;
will-change: top, left, opacity, transform;
//opacity: 0; // trigger by js
border: {
width: 2px;
style: solid;
color: $gray-light;
}
@include border-radius(5px);
// change border color with transition
@include transition( border-color 0.5s ease-out, box-shadow 0.2s ease-out );
@include transform( translate3d(0, 0, 0) );
&:hover{
// makes the systems "flying" :)
@include box-shadow(0 6px 12px rgba(0,0,0, 0.3));
@include transform( translate3d(0, -2px, 0) );
}
.pf-system-head{
padding: 0px 3px 0px 3px;
cursor: pointer;
font-family: Arial; // fix for element width on custom font family
font-weight: bold;
.pf-system-head-name{
border: none;
display: inline-block;
min-width: 41px;
color: $gray-lighter;
margin-right: 2px;
}
.fa-lock{
display: none; // triggered by system-lock class
}
.pf-system-head-expand{
margin-left: 2px;
color: $gray-light;
display: none; // triggered by JS
}
}
// ===============================================================
.pf-system-body{
height: 0px;
width: 100%;
overflow: hidden;
cursor: -moz-grab;
cursor: -webkit-grab;
cursor: grab;
padding: 0 2px;
white-space: nowrap;
display: none; // triggered by JS
border: {
top: {
width: 1px;
style: dashed;
color: $gray-light;
}
}
.pf-system-body-item{
color: $gray-light;
font-size: 10px;
.pf-system-body-right{
text-overflow: ellipsis;
float: right;
color: $teal;
display: none; // hover effect
}
// user status ===============================================
.pf-user-status{
font-size: 7px;
}
}
}
// system head specific tooltip style
.tooltip{
&.in{
opacity: 1;
}
.tooltip-inner{
color: $gray-dark;
background-color: $gray-lighter;
padding: 3px 3px;
}
}
}
// active system
.pf-system-active:not(.pf-map-endpoint-source):not(.pf-map-endpoint-target){
@include box-shadow($yellow-lighter 0px 0px 8px 0px);
}
// selected system
.pf-system-selected:not(.pf-map-endpoint-source):not(.pf-map-endpoint-target){
@include box-shadow($red-darkest 0px 0px 8px 0px);
.pf-system-head, .pf-system-body{
background-color: $red-darkest;
}
}
// locked system
.pf-system-locked{
.pf-system-sec{
cursor: default !important;
}
.pf-system-body{
cursor: default !important;
}
.fa-lock{
color: $gray-light !important;
display: inline-block !important;
}
}
// Endpoints =======================================================
.pf-map-endpoint-source, .pf-map-endpoint-target{
z-index: 50;
svg {
width: 10;
height: 10;
circle{
@include transition( stroke 0.2s ease-out);
}
*{
stroke: $gray-light;
stroke-width: 2; // border width
fill: $gray;
cursor: pointer;
&:hover{
stroke: $gray-lightest; // hover style
}
}
}
// hover effect for Endpoints
&:hover{
circle{
stroke: $gray-lightest !important;
}
}
}
// Connections =====================================================
svg._jsPlumb_connector{
cursor: pointer;
stroke-linecap: round; // line endings
will-change: all;
path{
@include transition( stroke 0.2s ease-out) ;
}
path:not(:first-child){
stroke: $gray; // inner line
}
path:first-child{
stroke: $gray-light; // outer line
}
&:hover{
path:first-child{
stroke: $gray-lightest; // hover style
}
}
}
svg.pf-map-connection-stargate {
path:first-child{
stroke: $gray-light;
}
path:not(:first-child){
stroke: $gray-light;
}
&:hover{
path:first-child{
stroke: $gray-lightest;
}
}
}
svg.pf-map-connection-jumpbridge {
path:first-child{
stroke: rgba(255,255,255,0); // invisible border color
}
path:not(:first-child){
stroke: $teal;
}
&:hover{
path:first-child{
stroke: rgba(255,255,255,0); // invisible border color
}
path:not(:first-child){
stroke: $gray-lightest;
}
}
}
svg.pf-map-connection-wh-fresh {
// special wh-connection style (
}
svg.pf-map-connection-wh-eol {
path:first-child{
stroke: $pink-dark;
}
&:hover{
path:first-child{
stroke: $gray-lightest;
}
}
}
svg.pf-map-connection-wh-reduced {
path:not(:first-child){
stroke: $orange;
}
}
svg.pf-map-connection-wh-critical {
path:not(:first-child){
stroke: $red-darker;
}
}
// Connection overlay ==============================================
.pf-map-connection-overlay{
padding: 1px 4px;
font-size: 11px;
z-index: 1020;
@include border-radius(3px);
@include box-shadow(0 6px 12px rgba(0,0,0,.4));
}
.frig{
background-color: $orange-light;
color: $gray-darkest;
}
.mass{
background-color: $red-darker;
color: #eaeaea;
}
}
// dialoges ===========================================================
.ui-dialog-content{
label{
min-width: 60px;
}
}
// context menu ======================================================
.dropdown-menu{
font-family: $font-family-bold;
z-index: 1020; // over tooltips
i{
width: 20px
}
}
// tooltip for a system with active user (they are not positioned within the system element)
.pf-system-tooltip-inner{
color: $gray-lighter;
padding: 2px 4px;
min-width: 25px; // make sure tooltip is not flickering on low numbers -> fix width
@include transition( color 0.2s ease-out );
}