blob: 08a80d6639f373d201c92d07c732b5dc77acc9a0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Component, EventEmitter, Inject, Input, Output } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
import { FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
import { MatInputModule } from '@angular/material/input';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatButtonModule } from '@angular/material/button';
import { AsyncPipe } from '@angular/common';
import { MatOptionModule } from '@angular/material/core';
import { MatSelectModule } from '@angular/material/select';
import { Observable } from 'rxjs';
import { Client } from '../../../../../../../service/client.service';
import { NifiSpinnerDirective } from '../../../../../../../ui/common/spinner/nifi-spinner.directive';
import { TextTip } from '../../../../../../../ui/common/tooltips/text-tip/text-tip.component';
import { EditComponentDialogRequest } from '../../../../../state/flow';
import { ErrorBanner } from '../../../../../../../ui/common/error-banner/error-banner.component';
import { CanvasUtils } from '../../../../../service/canvas-utils.service';
import { NifiTooltipDirective } from '../../../../../../../ui/common/tooltips/nifi-tooltip.directive';
@Component({
standalone: true,
templateUrl: './edit-remote-process-group.component.html',
imports: [
ReactiveFormsModule,
MatDialogModule,
MatInputModule,
MatCheckboxModule,
MatButtonModule,
MatOptionModule,
MatSelectModule,
AsyncPipe,
NifiSpinnerDirective,
FormsModule,
ErrorBanner,
NifiTooltipDirective
],
styleUrls: ['./edit-remote-process-group.component.scss']
})
export class EditRemoteProcessGroup {
@Input() saving$!: Observable<boolean>;
@Output() editRemoteProcessGroup: EventEmitter<any> = new EventEmitter<any>();
protected readonly TextTip = TextTip;
editRemoteProcessGroupForm: FormGroup;
readonly: boolean;
constructor(
@Inject(MAT_DIALOG_DATA) public request: EditComponentDialogRequest,
private formBuilder: FormBuilder,
private canvasUtils: CanvasUtils,
private client: Client
) {
this.readonly =
!request.entity.permissions.canWrite ||
!this.canvasUtils.remoteProcessGroupSupportsModification(request.entity);
this.editRemoteProcessGroupForm = this.formBuilder.group({
urls: new FormControl(request.entity.component.targetUris, Validators.required),
transportProtocol: new FormControl(request.entity.component.transportProtocol, Validators.required),
localNetworkInterface: new FormControl(request.entity.component.localNetworkInterface),
httpProxyServerHostname: new FormControl(request.entity.component.httpProxyServerHostname),
httpProxyServerPort: new FormControl(request.entity.component.httpProxyServerPort),
httpProxyUser: new FormControl(request.entity.component.httpProxyUser),
httpProxyPassword: new FormControl(request.entity.component.httpProxyPassword),
communicationsTimeout: new FormControl(request.entity.component.communicationsTimeout, Validators.required),
yieldDuration: new FormControl(request.entity.component.yieldDuration, Validators.required)
});
}
submitForm() {
const payload: any = {
revision: this.client.getRevision(this.request.entity),
component: {
id: this.request.entity.id,
targetUris: this.editRemoteProcessGroupForm.get('urls')?.value,
transportProtocol: this.editRemoteProcessGroupForm.get('transportProtocol')?.value,
localNetworkInterface: this.editRemoteProcessGroupForm.get('localNetworkInterface')?.value,
proxyHost: this.editRemoteProcessGroupForm.get('httpProxyServerHostname')?.value,
proxyPort: this.editRemoteProcessGroupForm.get('httpProxyServerPort')?.value,
proxyUser: this.editRemoteProcessGroupForm.get('httpProxyUser')?.value,
proxyPassword: this.editRemoteProcessGroupForm.get('httpProxyPassword')?.value,
communicationsTimeout: this.editRemoteProcessGroupForm.get('communicationsTimeout')?.value,
yieldDuration: this.editRemoteProcessGroupForm.get('yieldDuration')?.value
}
};
this.editRemoteProcessGroup.next(payload);
}
}