2019-08-28 08:19:14 +00:00
|
|
|
<div [attr.class]="layout | async">
|
2018-04-20 07:19:42 +00:00
|
|
|
<div class="tfw-grid-main-components">
|
2019-10-03 11:04:32 +00:00
|
|
|
<div [ngClass]="{'hide-attribute': hideMessages | async}" class="tfw-messages">
|
|
|
|
<app-messages></app-messages>
|
2018-05-27 14:45:52 +00:00
|
|
|
</div>
|
2020-06-12 15:04:29 +00:00
|
|
|
<div class="tfw-header"><app-header></app-header></div>
|
2018-04-20 07:19:42 +00:00
|
|
|
<div class="tfw-web tao-grid-top-left"
|
2019-11-07 15:08:54 +00:00
|
|
|
[ngClass]="{'deploy-blur': deploying || (iframeReloadPoller.isPolling | async)}">
|
2019-08-28 13:28:26 +00:00
|
|
|
<div *ngIf="iframeUrl | async" class="iframe-container">
|
2019-08-28 08:19:14 +00:00
|
|
|
<div *ngIf="showUrlBar | async" class="urlbar-container">
|
|
|
|
<button class="refresh btn btn-sm rounded-circle" (click)="reloadIframe()">↻</button>
|
|
|
|
<input type="text"
|
|
|
|
#urlbar
|
|
|
|
class="urlbar form-control"
|
|
|
|
value="{{actualIframeUrl}}"
|
|
|
|
(keyup.enter)="changeIframeURL()">
|
|
|
|
<button class="go btn btn-sm rounded-circle" (click)="changeIframeURL()">⇨</button>
|
|
|
|
</div>
|
|
|
|
<iframe class="iframe"
|
|
|
|
#webiframe
|
2019-11-08 12:13:39 +00:00
|
|
|
name="webiframe"
|
2019-08-28 08:19:14 +00:00
|
|
|
scrolling="yes"
|
|
|
|
frameborder="0"
|
|
|
|
(load)="iframeLoad()"
|
|
|
|
[src]="iframeUrl | async | safe">
|
|
|
|
</iframe>
|
2018-04-25 09:48:15 +00:00
|
|
|
</div>
|
2018-03-12 15:48:15 +00:00
|
|
|
</div>
|
2018-04-20 07:21:20 +00:00
|
|
|
<div class="tfw-ide">
|
2019-08-15 12:37:55 +00:00
|
|
|
<app-ide></app-ide>
|
2018-04-20 07:21:20 +00:00
|
|
|
</div>
|
2018-04-20 07:19:42 +00:00
|
|
|
<div class="tfw-terminal">
|
2018-05-25 12:27:48 +00:00
|
|
|
<div class="btn-group btn-group-sm flex-wrap tao-grid-center-left tfw-console-terminal-menu">
|
|
|
|
<button class="tfw-console-terminal-menu-button"
|
2018-05-25 13:45:56 +00:00
|
|
|
(click)="selectTerminalMenuItem('terminal')"
|
2019-08-28 08:19:14 +00:00
|
|
|
[class.selected]="(terminalMenuItem | async) === 'terminal'">TERMINAL</button>
|
2018-05-25 12:27:48 +00:00
|
|
|
<button class="tfw-console-terminal-menu-button"
|
2018-05-25 13:45:56 +00:00
|
|
|
(click)="selectTerminalMenuItem('console')"
|
2019-08-28 08:19:14 +00:00
|
|
|
[class.selected]="(terminalMenuItem | async) === 'console'">CONSOLE</button>
|
2018-05-25 12:27:48 +00:00
|
|
|
</div>
|
|
|
|
<hr>
|
2019-08-28 08:19:14 +00:00
|
|
|
<app-terminal [class.hidden]="(terminalMenuItem | async) !== 'terminal'"></app-terminal>
|
|
|
|
<app-console [class.hidden]="(terminalMenuItem | async) !== 'console'"></app-console>
|
2018-04-20 07:19:42 +00:00
|
|
|
</div>
|
|
|
|
<div class="tfw-sidebar">
|
2019-08-28 08:19:14 +00:00
|
|
|
<app-sidebar (layoutChanged)="setLayout($event)" [layout]="layout | async"></app-sidebar>
|
2018-04-20 07:19:42 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="tfw-terminal-footer"></div>
|
2018-03-12 14:03:38 +00:00
|
|
|
</div>
|
2018-02-16 10:19:52 +00:00
|
|
|
</div>
|