Files
pathfinder/sass/layout/_map.scss
2015-08-25 23:04:47 +02:00

515 lines
11 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-element{
max-width: 2515px;
margin: 0 auto;
}
.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;
}
}
}
// map overlay ================================================================
.pf-map-overlay{
position: absolute;
display: none; // triggered by js
z-index: 10000;
height: 36px;
right: 10px;
background: rgba($black, 0.25);
@include border-radius(5px);
&.pf-map-overlay-timer{
width: 36px;
bottom: 23px;
}
&.pf-map-overlay-info{
top: 8px;
color: $gray-darker;
padding: 3px;
line-height: 26px;
min-height: 36px;
min-width: 36px;
i{
display: none;
margin: 2px;
width: 26px;
height: 26px;
opacity: 0.8;
color: $orange-dark;
&.fa{
font-size: 26px;
}
&.glyphicon{
margin-left: 4px;
font-size: 25px;
}
}
}
}
// 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
will-change: opacity;
@include transition( opacity 0.18s ease-out);
}
// system that is currently dragged
.jsPlumb_dragged{
@extend .pf-system-selected;
}
// hover effects ============================================================
._jsPlumb_hover{
// hover effect for connections
&._jsPlumb_overlay{
opacity: 0 !important; // 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;
overflow: hidden; // hide bg on round corners -_-
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 4px;
white-space: nowrap;
display: none; // triggered by JS
will-change: width;
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: $orange-light;
display: none; // hover effect
}
// user status ========================================================
.pf-user-status{
font-size: 7px;
width: 10px;
}
.pf-system-body-item-name{
display: inline-block;
width: 65px;
overflow: hidden;
height: 11px;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
// 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: 90;
svg {
overflow: visible; // this fixes a "half-pixel" bug on SVG circle with border
circle{
@include transition( stroke 0.18s ease-out, fill 0.18s ease-out);
}
*{
stroke: $gray-light;
stroke-width: 2; // border width
fill: $gray;
cursor: pointer;
}
}
// hover (with cursor) effect for Endpoints
&:hover{
circle{
stroke: $orange !important;
}
}
// hover class (e.g. connection is hovered -> endpoints get this class)
&._jsPlumb_hover{
// increase z-index -> prevent overlapping multiple endpoints
z-index: 95;
}
// while dragging
&._jsPlumb_dragging{
circle {
stroke: $orange;
}
}
}
._jsPlumb_endpoint_drop_allowed{
circle {
stroke: $green !important;
fill: $green !important;
}
}
._jsPlumb_endpoint_drop_forbidden{
circle {
stroke: $red-darker !important;
fill: $red-darker !important;
}
}
// Connections ==============================================================
svg._jsPlumb_connector{
cursor: pointer;
stroke-linecap: round; // line endings
@include transition( stroke 0.18s ease-out) ;
will-change: all;
path{
@include transition( stroke 0.18s ease-out) ;
}
path:not(:first-child){
stroke: $gray; // inner line
}
path:first-child{
stroke: $gray-light; // outer line
}
&._jsPlumb_hover{
z-index: 80;
path:first-child{
stroke: $gray-lightest; // hover style
}
}
&._jsPlumb_dragging{
@include transition( opacity 0.18s ease-out) ;
opacity: 0.4;
z-index: 80;
}
}
svg.pf-map-connection-jumpbridge {
z-index: 50;
path:first-child{
stroke: rgba(255,255,255,0); // invisible border color
}
path:not(:first-child){
stroke: $teal-lighter;
}
&:hover{
path:first-child{
stroke: rgba(255,255,255,0); // invisible border color
}
path:not(:first-child){
stroke: $gray-lightest;
}
}
}
svg.pf-map-connection-stargate {
z-index: 60;
path:first-child{
stroke: $gray-light;
}
path:not(:first-child){
stroke: $indigo-darkest;
}
&:hover{
path:first-child{
stroke: $gray-lightest;
}
}
}
svg{
&.pf-map-connection-wh-fresh,
&.pf-map-connection-wh-reduced,
&.pf-map-connection-wh-critical,
&.pf-map-connection-wh-eol{
z-index: 70;
}
}
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(8px);
@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
will-change: opacity, top, left, transform;
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 );
}