674da96a59
This connects Xterm.js to a Nomad exec websocket so people can interact on clients via live sessions. There are buttons on job, allocation, task group, and task detail pages that open a popup that lets them edit their shell command and start a session. More is to come, as recorded in issues.
147 lines
2.4 KiB
SCSS
147 lines
2.4 KiB
SCSS
.tree-and-terminal {
|
|
display: flex;
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
top: 3.5rem; // nav.navbar.is-popup height
|
|
bottom: 0;
|
|
|
|
.terminal-container {
|
|
flex-grow: 1;
|
|
background: black;
|
|
padding: 16px;
|
|
height: 100%;
|
|
position: relative;
|
|
|
|
.terminal {
|
|
height: 100%;
|
|
|
|
.xterm .xterm-viewport {
|
|
overflow-y: auto;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.task-group-tree {
|
|
background-color: $ui-gray-900;
|
|
color: white;
|
|
padding: 16px;
|
|
width: 200px;
|
|
flex-shrink: 0;
|
|
overflow-y: auto;
|
|
|
|
.title {
|
|
text-transform: uppercase;
|
|
color: $grey-lighter;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.icon {
|
|
color: $ui-gray-500;
|
|
}
|
|
|
|
.toggle-button {
|
|
position: relative;
|
|
background: transparent;
|
|
border: 0;
|
|
color: white;
|
|
font-size: inherit;
|
|
line-height: 1.5;
|
|
width: 100%;
|
|
text-align: left;
|
|
overflow-wrap: break-word;
|
|
padding: 6px 0 5px 17px;
|
|
|
|
.icon {
|
|
position: absolute;
|
|
left: 0;
|
|
padding: 3px 3px 0 0;
|
|
margin-left: -3px;
|
|
}
|
|
}
|
|
|
|
.task-list {
|
|
.task-item {
|
|
padding: 0 8px 0 19px;
|
|
|
|
color: white;
|
|
text-decoration: none;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
|
|
.border-and-label {
|
|
display: flex;
|
|
align-items: center;
|
|
height: 100%;
|
|
width: 100%;
|
|
position: relative;
|
|
}
|
|
|
|
.border {
|
|
position: absolute;
|
|
border-left: 1px solid $ui-gray-700;
|
|
height: 100%;
|
|
}
|
|
|
|
.is-active {
|
|
position: absolute;
|
|
top: 7.5px;
|
|
left: -9.75px;
|
|
|
|
stroke: $ui-gray-900;
|
|
stroke-width: 5px;
|
|
fill: white;
|
|
}
|
|
|
|
.task-label {
|
|
padding: 6px 0 5px 13px;
|
|
overflow-wrap: break-word;
|
|
width: 100%;
|
|
}
|
|
|
|
.icon {
|
|
visibility: hidden;
|
|
width: 16px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
&:hover .icon.show-on-hover {
|
|
visibility: visible;
|
|
}
|
|
}
|
|
}
|
|
|
|
.toggle-button,
|
|
.task-item {
|
|
font-weight: 500;
|
|
|
|
&:hover {
|
|
background-color: $ui-gray-800;
|
|
border-radius: 4px;
|
|
|
|
.is-active {
|
|
stroke: $ui-gray-800;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.exec-button {
|
|
color: $ui-gray-800;
|
|
border-color: $ui-gray-300;
|
|
|
|
span {
|
|
color: $ui-gray-800;
|
|
}
|
|
|
|
.icon:first-child:not(:last-child) {
|
|
width: 0.9rem;
|
|
height: 0.9rem;
|
|
margin-left: 0;
|
|
margin-right: 0.5em;
|
|
fill: currentColor;
|
|
}
|
|
}
|