RSS Git Download  Clone
Raw Blame History 7kB 119 lines
HTML rendered
<div class="p3xr-console-root" [class.p3xr-console-root-embedded]="embedded" (click)="activate()">

    <!-- Console header toolbar -->
    <mat-toolbar class="p3xr-console-toolbar p3xr-mat-layout-strong" id="p3xr-console-header"
        [class.p3xr-content-border-toolbar]="type === 'quick'">
        <div class="p3xr-console-toolbar-tools">

            @if (type !== 'quick') {
                <span class="p3xr-console-title">{{ strings().label?.console || 'Console' }}</span>
                <span class="p3xr-toolbar-spacer"></span>

                <span class="p3xr-console-toolbar-actions">
                    <span class="p3xr-console-monitor-wrap"
                          (mouseenter)="onMonitorMouseEnter()" (mouseleave)="onMonitorMouseLeave()">
                        <span (click)="toggleMonitor()">
                            <mat-checkbox [(ngModel)]="monitorEnabled" (ngModelChange)="setMonitorState()">
                                <span class="p3xr-console-monitor-label">{{ strings().intention?.pubsubMonitor || 'PubSub Monitor' }}</span>
                            </mat-checkbox>
                        </span>
                        @if (showMonitorPopup) {
                            <div class="p3xr-monitor-input">
                                <div class="p3xr-monitor-input-toolbar p3xr-mat-layout-strong">
                                    <input class="p3xr-input p3xr-monitor-pattern-input"
                                           type="text" maxlength="255"
                                           [ngModel]="monitorPattern"
                                           (ngModelChange)="onMonitorPatternChange($event)"
                                           [style.background]="'var(--p3xr-input-bg)'"
                                           [style.color]="'var(--p3xr-input-color)'"
                                           [style.border-color]="'var(--p3xr-input-border-color, var(--p3xr-border-color))'" />
                                </div>
                            </div>
                        }
                    </span>

                    <p3xr-ng-button [label]="strings().label?.redisCommandsReference || 'Redis Commands'" mdIcon="terminal"
                        (click)="openCommands($event)"></p3xr-ng-button>
                    <p3xr-ng-button [label]="strings().intention?.clear || 'Clear'" mdIcon="backspace"
                        (click)="clearConsole()"></p3xr-ng-button>
                </span>
            } @else {
                <span class="p3xr-console-title">{{ embedded ? (strings().label?.console || 'Console') : (strings().intention?.quickConsole || 'Quick Console') }}</span>
                <span class="p3xr-toolbar-spacer"></span>

                <span class="p3xr-console-toolbar-actions">
                    <span class="p3xr-console-monitor-wrap"
                          (mouseenter)="onMonitorMouseEnter()" (mouseleave)="onMonitorMouseLeave()">
                        <span (click)="toggleMonitor()">
                            <mat-checkbox [(ngModel)]="monitorEnabled" (ngModelChange)="setMonitorState()">
                                <span class="p3xr-console-monitor-label">{{ strings().intention?.pubsubMonitor || 'PubSub Monitor' }}</span>
                            </mat-checkbox>
                        </span>
                        @if (showMonitorPopup) {
                            <div class="p3xr-monitor-input">
                                <div class="p3xr-monitor-input-toolbar p3xr-mat-layout-strong">
                                    <input class="p3xr-input p3xr-monitor-pattern-input"
                                           type="text" maxlength="255"
                                           [ngModel]="monitorPattern"
                                           (ngModelChange)="onMonitorPatternChange($event)"
                                           [style.background]="'var(--p3xr-input-bg)'"
                                           [style.color]="'var(--p3xr-input-color)'"
                                           [style.border-color]="'var(--p3xr-input-border-color, var(--p3xr-border-color))'" />
                                </div>
                            </div>
                        }
                    </span>

                    <p3xr-ng-button [label]="strings().label?.redisCommandsReference || 'Redis Commands'" mdIcon="terminal"
                        (click)="openCommands($event)"></p3xr-ng-button>
                    <p3xr-ng-button [label]="strings().intention?.clear || 'Clear'" mdIcon="backspace"
                        (click)="clearConsole()"></p3xr-ng-button>

                    @if (!embedded) {
                        <p3xr-ng-button [label]="strings().intention?.close || 'Close'" mdIcon="close"
                            (click)="closeConsole()"></p3xr-ng-button>
                    }
                </span>
            }
        </div>
    </mat-toolbar>

    <!-- Console output area -->
    <div id="p3xr-console-content" class="p3xr-content-border-fixed"
         [class.layout-padding]="type !== 'quick'">
        <div style="display: flex; flex-direction: row; align-items: stretch; min-height: 100%">
            @if (type === 'quick' && !embedded) {
                <div id="p3xr-console-content-resizer" (mousedown)="dragStart()" (mouseup)="dragEnd()"></div>
            }
            <div id="p3xr-console-content-output" style="flex-grow: 1;"></div>
        </div>
        @if (type !== 'quick') {
            <div id="p3xr-console-content-output"></div>
        }
    </div>

    <!-- Console input with mat-autocomplete -->
    <div id="p3xr-console-autocomplete"
         [class.p3xr-console-autocomplete-quick]="type === 'quick'"
         [class.p3xr-console-autocomplete-embedded]="embedded">
        <input id="p3xr-console-input" class="p3xr-input"
               type="text"
               [formControl]="searchControl"
               (keydown.enter)="actionEnter()"
               (keydown)="onKeyDown($event)"
               [matAutocomplete]="auto"
               autocomplete="off"
               [style.background]="'var(--p3xr-input-bg)'"
               [style.color]="'var(--p3xr-input-color)'"
               [style.border-color]="'var(--p3xr-input-border-color, var(--p3xr-border-color))'" />
        <mat-autocomplete #auto="matAutocomplete"
                          (optionSelected)="onAutocompleteSelected($event)"
                          class="p3xr-console-autocomplete-panel"
                          position="above">
            @for (cmd of filteredCommands; track cmd) {
                <mat-option [value]="cmd">{{ cmd }}</mat-option>
            }
        </mat-autocomplete>
    </div>
</div>