Kenia f26201a7a4
ui: Service Mesh - Topology tab and basic layout (#8788)
* Create Topology Tab with foundational layout and styling

* Create Toplogy Metrics component with dynamic SVG

* Add ember-render-modifiers addon

* Implement Topology Metrics comp and fix up styling

* Create topology endpoint with tests

* Move arrow drawing to index.js file

* Add topology to show controller

* Fix up conditional wrapper, tabs positioning, links, and styling

* Group upstreams by dc and fix up styling

* Create service/health-percentage helper

* Add health check percentages to upstreams and downstreams

* Basic Layout

* Upgrade @hashicorp/consul-api-double to v5.2.3

* Renamed endpoint to be service-topology

* Refactor styling

* Update to only show Topology tab when Connect is enabled

* Fix bug and changes from review notes

* Remove unused functions that are replaced with SVG markers

* Refactor to resuse svg-curve helper

* Use the render-template helper for the metrics link

* Add topology default null to services show route

* Removed unused ID

* Fix up tests broken by redirect to /topology
2020-10-05 13:07:35 -04:00

99 lines
1.7 KiB
SCSS

.topology-container {
display: grid;
height: 100%;
align-items: start;
grid-template-columns: 2fr 20px 1fr 20px 2fr 20px 1fr 20px 2fr;
grid-template-rows: 50px 1fr 50px;
}
// Grid Layout
#downstream-container {
grid-row: 1 / 3;
grid-column: 1 / 3;
}
#downstream-lines {
grid-row: 1 / 3;
grid-column: 2 / 5;
}
#upstream-lines {
grid-row: 1 / 3;
grid-column: 6 / 9;
}
#upstream-column {
grid-row: 1 / 3;
grid-column: 8 / 10;
}
// Columns/Containers & Lines
#downstream-lines,
#upstream-lines {
z-index: 1;
position: relative;
height: 100%;
}
#downstream-container,
#upstream-container {
padding: 12px;
}
#downstream-container div:first-child {
display: inline-flex;
span::before {
@extend %with-info-circle-outline-mask, %as-pseudo;
margin-left: 4px;
}
}
#upstream-column #upstream-container:not(:last-child) {
margin-bottom: 8px;
}
#upstream-container .card:not(:last-child),
#downstream-container .card:not(:last-child) {
margin-bottom: 8px;
}
#upstream-container .card,
#downstream-container .card {
padding: 12px;
p {
font-size: 16px;
font-weight: 600;
margin-bottom: 0 !important;
}
div {
display: inline-flex;
dl {
display: inline-flex;
margin-right: 8px;
}
span {
margin-right: 8px;
}
span::before,
dt::before {
margin-right: 4px;
}
.nspace dt::before,
.health dt::before {
margin-top: 2px;
}
}
}
// Metrics Container
#metrics-container {
grid-row: 2 / 3;
grid-column: 4 / 7;
div:first-child {
padding: 12px;
border: none;
font-size: 16px;
font-weight: bold;
}
div:nth-child(2) {
padding: 18px;
a::before {
margin-right: 4px;
}
}
}