This commit is contained in:
balazs 2019-05-13 13:57:08 +02:00
parent 1ccd0c35d7
commit 74b921dbfb
8 changed files with 70 additions and 67 deletions

View File

@ -65,11 +65,11 @@ The `console.showLiveLogs` key enables real time output from the standard stream
This component is a simple text editor based on ACE.
It always shows all files in a given folder and allows you to switch between them using the tabs on top.
The IDE automatically saves any stepperChanges made to the files (the interval is configurable).
The IDE automatically saves any changes made to the files (the interval is configurable).
It connects to an `IdeEventHandler` instance on the backend which handles the reading/writing of files and the selection of directories as well.
It is also capable of dynamically displaying any stepperChanges made to these files from the terminal or from another process (this means that you always see a live view of the files).
It is also capable of dynamically displaying any changes made to these files from the terminal or from another process (this means that you always see a live view of the files).
This component provides an optional 'Deploy' button, which can be configured to restart a process in supervisord.
You can enable this button by editig the `ide.showDeployButton` key of `config.ts`.

View File

@ -1,40 +1,40 @@
// Copyright (C) 2018 Avatao.com Innovative Learning Kft.
// All Rights Reserved. See LICENSE file for details.
import {HttpClientModule} from '@angular/common/http';
import {FormsModule} from '@angular/forms';
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
import { HttpClientModule } from '@angular/common/http';
import { FormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import {AppComponent} from './app.component';
import {DashboardComponent} from './dashboard/dashboard.component';
import {HeaderComponent} from './header/header.component';
import {SidebarComponent} from './sidebar/sidebar.component';
import {WebComponent} from './web/web.component';
import {MarkdownService} from './services/markdown.service';
import {TerminadoService} from './services/terminado.service';
import {IdeComponent} from './ide/ide.component';
import {MessagesComponent} from './messages/messages.component';
import {WebSocketService} from './services/websocket.service';
import {TerminalComponent} from './terminal/terminal.component';
import {FSMUpdateService} from './services/fsmupdate.service';
import {ProcessManagerService} from './services/processmanager.service';
import {AppRoutingModule} from './app-routing.module';
import {TestmessengerComponent} from './testmessenger/testmessenger.component';
import {DeploymentNotificationService} from './services/deployment-notification.service';
import {SafePipe} from './pipes/safe.pipe';
import {ConsoleComponent} from './console/console.component';
import {ProcessLogService} from './services/processlog.service';
import {MonacoEditorModule} from 'ngx-monaco-editor';
import {TimelineComponent} from './timeline/timeline.component';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {MatStepperModule} from '@angular/material';
import {TimelineService} from './services/timeline.service';
import {LayoutService} from './services/layout.service';
import {CssInjectorService} from './services/css-injector.service';
import {ResizableModule} from 'angular-resizable-element';
import { AppComponent } from './app.component';
import { DashboardComponent } from './dashboard/dashboard.component';
import { HeaderComponent } from './header/header.component';
import { SidebarComponent } from './sidebar/sidebar.component';
import { WebComponent } from './web/web.component';
import { MarkdownService } from './services/markdown.service';
import { TerminadoService } from './services/terminado.service';
import { IdeComponent } from './ide/ide.component';
import { MessagesComponent } from './messages/messages.component';
import { WebSocketService } from './services/websocket.service';
import { TerminalComponent } from './terminal/terminal.component';
import { FSMUpdateService } from './services/fsmupdate.service';
import { ProcessManagerService } from './services/processmanager.service';
import { AppRoutingModule } from './app-routing.module';
import { TestmessengerComponent } from './testmessenger/testmessenger.component';
import { DeploymentNotificationService } from './services/deployment-notification.service';
import { SafePipe } from './pipes/safe.pipe';
import { ConsoleComponent } from './console/console.component';
import { ProcessLogService } from './services/processlog.service';
import { MonacoEditorModule } from 'ngx-monaco-editor';
import { TimelineComponent } from './timeline/timeline.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MatStepperModule } from '@angular/material';
import { TimelineService } from './services/timeline.service';
import { LayoutService } from './services/layout.service';
import { CssInjectorService } from './services/css-injector.service';
import { ResizableModule } from 'angular-resizable-element';
@NgModule({
@ -79,4 +79,5 @@ import {ResizableModule} from 'angular-resizable-element';
AppComponent
]
})
export class AppModule { }
export class AppModule {
}

View File

@ -1,20 +1,20 @@
// Copyright (C) 2018 Avatao.com Innovative Learning Kft.
// All Rights Reserved. See LICENSE file for details.
import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';
import {DeploymentNotificationService} from '../services/deployment-notification.service';
import {Subscription} from 'rxjs';
import {WebSocketService} from '../services/websocket.service';
import {HideMessagesCommand, LayoutCommand, TerminalMenuItemCommand} from '../message-types/dashboard-commands';
import {config} from '../config';
import {ProcessLogService} from '../services/processlog.service';
import {LogMessage} from '../message-types/log-message';
import {CommandMessage} from '../message-types/command-message';
import {HttpClient} from '@angular/common/http';
import {delay, retryWhen, tap} from 'rxjs/operators';
import {ComponentType, LayoutService, SideType} from '../services/layout.service';
import {Edges, ResizeEvent} from 'angular-resizable-element';
import {CSSInjection, CssInjectorService, CSSProperty, CSSRule} from '../services/css-injector.service';
import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { DeploymentNotificationService } from '../services/deployment-notification.service';
import { Subscription } from 'rxjs';
import { WebSocketService } from '../services/websocket.service';
import { HideMessagesCommand, LayoutCommand, TerminalMenuItemCommand } from '../message-types/dashboard-commands';
import { config } from '../config';
import { ProcessLogService } from '../services/processlog.service';
import { LogMessage } from '../message-types/log-message';
import { CommandMessage } from '../message-types/command-message';
import { HttpClient } from '@angular/common/http';
import { delay, retryWhen, tap } from 'rxjs/operators';
import { ComponentType, LayoutService, SideType } from '../services/layout.service';
import { Edges, ResizeEvent } from 'angular-resizable-element';
import { CSSInjection, CssInjectorService, CSSProperty, CSSRule } from '../services/css-injector.service';
@Component({
selector: 'app-dashboard',

View File

@ -1,4 +1,4 @@
import {Injectable} from '@angular/core';
import { Injectable } from '@angular/core';
export class CSSProperty {
constructor(

View File

@ -1,7 +1,7 @@
import {Injectable} from '@angular/core';
import {CSSInjection, CssInjectorService, CSSRule} from './css-injector.service';
import {Edges} from 'angular-resizable-element';
import {TerminadoService} from './terminado.service';
import { Injectable } from '@angular/core';
import { CSSInjection, CssInjectorService, CSSRule } from './css-injector.service';
import { Edges } from 'angular-resizable-element';
import { TerminadoService } from './terminado.service';
class LayoutBinding {

View File

@ -1,8 +1,8 @@
// Copyright (C) 2018 Avatao.com Innovative Learning Kft.
// All Rights Reserved. See LICENSE file for details.
import {Injectable} from '@angular/core';
import {Terminal} from 'xterm';
import { Injectable } from '@angular/core';
import { Terminal } from 'xterm';
import * as fit from 'xterm/lib/addons/fit/fit';
import * as terminado from 'xterm/lib/addons/terminado/terminado';

View File

@ -1,6 +1,6 @@
import {Injectable} from '@angular/core';
import {Snapshot} from '../message-types/timeline-commands';
import {WebSocketService} from './websocket.service';
import { Injectable } from '@angular/core';
import { Snapshot } from '../message-types/timeline-commands';
import { WebSocketService } from './websocket.service';
@Injectable()
export class TimelineService {

View File

@ -1,10 +1,10 @@
import {ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild} from '@angular/core';
import {Snapshot, TimelineSnapshotCommand, TimelineSnapshotListCommand} from '../message-types/timeline-commands';
import {CommandMessage} from '../message-types/command-message';
import {WebSocketService} from '../services/websocket.service';
import {TimelineService} from '../services/timeline.service';
import {MatStepper} from '@angular/material';
import {Subscription} from 'rxjs';
import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { Snapshot, TimelineSnapshotCommand, TimelineSnapshotListCommand } from '../message-types/timeline-commands';
import { CommandMessage } from '../message-types/command-message';
import { WebSocketService } from '../services/websocket.service';
import { TimelineService } from '../services/timeline.service';
import { MatStepper } from '@angular/material';
import { Subscription } from 'rxjs';
@Component({
selector: 'app-timeline',
@ -46,7 +46,9 @@ export class TimelineComponent implements OnInit, OnDestroy {
loadSnapshots({value}: TimelineSnapshotListCommand) {
this.snapshots = value;
if (this.stepperChanges) { return; }
if (this.stepperChanges) {
return;
}
this.stepperChanges = this.stepper._steps.changes.subscribe(step => {
this.isChangesComing = true;
const index = step.length - 1;