/*
 * Copyright 2017-present Open Networking Foundation

 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at

 * http://www.apache.org/licenses/LICENSE-2.0

 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


@import './../../../style/vars.scss';
@import '../../../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/variables';

$svg-size: 600px;

xos-service-graph {
  display: block;
  // background: $color-accent;

  .graph-container {
    position: relative;

    .loader-container {
      position: absolute;
      left: 0;
      top: 0;
      height: $svg-size;
      width: 100%;
    }
  }

  svg {
    height: $svg-size;
    width: 100%;
    background-color: $panel-filled-bg;
    border-radius: 3px;
  }

  .close-btn {
    display: none;
  }

  .fullscreen {
    svg {
      z-index: 1040;
      width: 100%;
      height: 100%;
      position: fixed;
      top: 0;
      left: 0;
      background-color: $background-color;
      transition: all .5s;
    }

    .close-btn {
      cursor: pointer;
      display: block;
      position: fixed;
      top: 10px;
      right: 10px;
      z-index: 1041;
    }
  }

  .node-group {

    .node {
      cursor: pointer;
    }

    .node.service {
      > rect {
        stroke: $color-accent;
        fill: $background-color;
      }
      > .icon {
        fill: $color-accent;
      }
    }

    .node.serviceinstance {
      > rect {
        stroke: green;
        fill: $background-color;
      }
      > .icon {
        fill: green;
      }
    }

    .node {
      >.label {
        >text {
          fill: #fff;
        }
        >rect {
          fill: $background-color;
          stroke: #fff;
        }
      }
    }
  }

  .link-group {
    line {
      stroke: $color-accent;
    }

    line.ownership {
      stroke: green;
      stroke-dasharray: 5;
    }

    line.serviceinstancelink {
      stroke: green;
    }
  }
  .arrow-marker {
    stroke: $color-accent;
    fill: $color-accent;
  }
}