src/app/streams/stream-deploy/app-properties/app-properties.component.ts
Component for displaying application properties and capturing their values.
encapsulation | ViewEncapsulation.None |
selector | app-stream-deploy-app-properties |
styleUrls | .../../shared/flo/properties/properties-dialog.component.scss |
templateUrl | ../../../shared/flo/properties/properties-dialog.component.html |
Properties |
|
Methods |
constructor(bsModalRef: BsModalRef, streamService: StreamsService)
|
||||||||||||
Parameters :
|
setData | ||||||||
setData(propertiesSource: StreamAppPropertiesSource)
|
||||||||
Parameters :
Returns :
void
|
Public title |
title:
|
Type : string
|
import { Component, EventEmitter, ViewEncapsulation } from '@angular/core';
import { PropertiesDialogComponent } from '../../../shared/flo/properties/properties-dialog.component';
import { BsModalRef } from 'ngx-bootstrap';
import { StreamsService } from '../../streams.service';
import { StreamAppPropertiesSource, StreamHead } from '../../components/flo/properties/stream-properties-source';
import { StreamPropertiesGroupModel } from '../../components/flo/properties/stream-properties-dialog.component';
import { Properties } from 'spring-flo';
import { of } from 'rxjs';
/**
* Component for displaying application properties and capturing their values.
*
* @author Damien Vitrac
*/
@Component({
selector: 'app-stream-deploy-app-properties',
templateUrl: '../../../shared/flo/properties/properties-dialog.component.html',
styleUrls: ['../../../shared/flo/properties/properties-dialog.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class StreamDeployAppPropertiesComponent extends PropertiesDialogComponent {
public title: string;
constructor(bsModalRef: BsModalRef,
private streamService: StreamsService) {
super(bsModalRef);
}
setData(propertiesSource: StreamAppPropertiesSource) {
this.propertiesGroupModel = new StreamPropertiesGroupModel(
propertiesSource,
this.streamService);
this.propertiesGroupModel.load();
}
}
export class AppPropertiesSource implements StreamAppPropertiesSource {
private options: Array<any>;
public confirm = new EventEmitter();
constructor(options: Array<any>) {
this.options = options;
}
getStreamHead(): StreamHead {
return {presentStreamNames: []};
}
getProperties(): Promise<Properties.Property[]> {
return of(this.options).toPromise();
}
applyChanges(properties: Properties.Property[]): void {
this.confirm.emit(properties);
}
}
<div class="modal-header">
<h4 class="modal-title pull-left">{{ title }}</h4>
<button type="button" class="close pull-right" aria-label="Close" (click)="handleCancel()">
<span aria-hidden="true">×</span>
</button>
</div>
<form name="app-properties" (submit)="handleOk()" class="modal-body app-properties">
<div *ngIf="propertiesGroupModel && !propertiesGroupModel.isLoading">
<div *ngIf="propertiesGroupModel.getControlsModels().length > 50 && !showProperties"
class="dataflow-alert dataflow-alert-info" style="display: block">
<p style="padding-bottom: 5px;">
There are <strong>more than 50 properties</strong> to display, the UI can be slow.<br>Do you want to
<strong>display all the properties</strong> ?
</p>
<button class="btn btn-primary" (click)="showProperties = true">Show all the properties</button>
</div>
<div *ngIf="propertiesGroupModel.getControlsModels().length <= 50 || showProperties">
<properties-group *ngIf="propertiesGroupModel" [propertiesGroupModel]="propertiesGroupModel"
[form]="propertiesFormGroup"></properties-group>
</div>
</div>
<div *ngIf="!propertiesGroupModel || propertiesGroupModel.isLoading"
style="padding-bottom: 20px;padding-left:10px;padding-top: 10px;">
<app-loader></app-loader>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" (click)="handleCancel()">Close</button>
<button type="submit" class="btn btn-primary" [disabled]="okDisabled">OK</button>
</div>
</form>