Browse Source

Version control Repository settings:

- in Admin service added getRepositorySettingsInfo();
- disabled 'Create version'/'Create entities version' buttons if active Read-only flag;
pull/7483/head
Artem Babak 4 years ago
parent
commit
505404903a
  1. 14
      ui-ngx/src/app/core/http/admin.service.ts
  2. 4
      ui-ngx/src/app/modules/home/components/vc/complex-version-create.component.ts
  3. 4
      ui-ngx/src/app/modules/home/components/vc/entity-versions-table.component.html
  4. 5
      ui-ngx/src/app/modules/home/components/vc/entity-versions-table.component.ts
  5. 6
      ui-ngx/src/app/modules/home/components/vc/repository-settings.component.html
  6. 3
      ui-ngx/src/app/modules/home/components/vc/repository-settings.component.scss
  7. 6
      ui-ngx/src/app/shared/models/settings.models.ts

14
ui-ngx/src/app/core/http/admin.service.ts

@ -15,8 +15,8 @@
/// ///
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { defaultHttpOptions, defaultHttpOptionsFromConfig, RequestConfig } from './http-utils'; import { defaultHttpOptionsFromConfig, RequestConfig } from './http-utils';
import { Observable, of } from 'rxjs'; import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { import {
AdminSettings, AdminSettings,
@ -24,12 +24,12 @@ import {
MailServerSettings, MailServerSettings,
SecuritySettings, SecuritySettings,
TestSmsRequest, TestSmsRequest,
UpdateMessage, AutoCommitSettings UpdateMessage,
AutoCommitSettings,
RepositorySettingsInfo
} from '@shared/models/settings.models'; } from '@shared/models/settings.models';
import { EntitiesVersionControlService } from '@core/http/entities-version-control.service'; import { EntitiesVersionControlService } from '@core/http/entities-version-control.service';
import { tap } from 'rxjs/operators'; import { tap } from 'rxjs/operators';
import { AuthUser } from '@shared/models/user.model';
import { Authority } from '@shared/models/authority.enum';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
@ -97,6 +97,10 @@ export class AdminService {
return this.http.post<void>('/api/admin/repositorySettings/checkAccess', repositorySettings, defaultHttpOptionsFromConfig(config)); return this.http.post<void>('/api/admin/repositorySettings/checkAccess', repositorySettings, defaultHttpOptionsFromConfig(config));
} }
public getRepositorySettingsInfo(config?: RequestConfig): Observable<RepositorySettingsInfo> {
return this.http.get<RepositorySettingsInfo>('/api/admin/repositorySettings/info', defaultHttpOptionsFromConfig(config));
}
public getAutoCommitSettings(config?: RequestConfig): Observable<AutoCommitSettings> { public getAutoCommitSettings(config?: RequestConfig): Observable<AutoCommitSettings> {
return this.http.get<AutoCommitSettings>(`/api/admin/autoCommitSettings`, defaultHttpOptionsFromConfig(config)); return this.http.get<AutoCommitSettings>(`/api/admin/autoCommitSettings`, defaultHttpOptionsFromConfig(config));
} }

4
ui-ngx/src/app/modules/home/components/vc/complex-version-create.component.ts

@ -121,10 +121,10 @@ export class ComplexVersionCreateComponent extends PageComponent implements OnIn
} }
this.versionCreateResultSubscription = this.versionCreateResult$.subscribe((result) => { this.versionCreateResultSubscription = this.versionCreateResult$.subscribe((result) => {
let message; let message: string;
if (!result.error) { if (!result.error) {
if (result.done && !result.added && !result.modified && !result.removed) { if (result.done && !result.added && !result.modified && !result.removed) {
message = this.translate.instant('version-control.nothing-to-commit') message = this.translate.instant('version-control.nothing-to-commit');
} else { } else {
message = this.translate.instant('version-control.version-create-result', message = this.translate.instant('version-control.version-create-result',
{added: result.added, modified: result.modified, removed: result.removed}); {added: result.added, modified: result.modified, removed: result.removed});

4
ui-ngx/src/app/modules/home/components/vc/entity-versions-table.component.html

@ -34,14 +34,14 @@
<div fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center end"> <div fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center end">
<button *ngIf="singleEntityMode" mat-stroked-button color="primary" <button *ngIf="singleEntityMode" mat-stroked-button color="primary"
#createVersionButton #createVersionButton
[disabled]="(isLoading$ | async)" [disabled]="(isLoading$ | async) || (isReadOnly | async)"
(click)="toggleCreateVersion($event, createVersionButton)"> (click)="toggleCreateVersion($event, createVersionButton)">
<mat-icon>update</mat-icon> <mat-icon>update</mat-icon>
{{'version-control.create-version' | translate }} {{'version-control.create-version' | translate }}
</button> </button>
<button *ngIf="!singleEntityMode" mat-stroked-button color="primary" <button *ngIf="!singleEntityMode" mat-stroked-button color="primary"
#complexCreateVersionButton #complexCreateVersionButton
[disabled]="(isLoading$ | async)" [disabled]="(isLoading$ | async) || (isReadOnly | async)"
(click)="toggleComplexCreateVersion($event, complexCreateVersionButton)"> (click)="toggleComplexCreateVersion($event, complexCreateVersionButton)">
<mat-icon>update</mat-icon> <mat-icon>update</mat-icon>
{{'version-control.create-entities-version' | translate }} {{'version-control.create-entities-version' | translate }}

5
ui-ngx/src/app/modules/home/components/vc/entity-versions-table.component.ts

@ -54,6 +54,7 @@ import { EntityVersionDiffComponent } from '@home/components/vc/entity-version-d
import { ComplexVersionCreateComponent } from '@home/components/vc/complex-version-create.component'; import { ComplexVersionCreateComponent } from '@home/components/vc/complex-version-create.component';
import { ComplexVersionLoadComponent } from '@home/components/vc/complex-version-load.component'; import { ComplexVersionLoadComponent } from '@home/components/vc/complex-version-load.component';
import { TbPopoverComponent } from '@shared/components/popover.component'; import { TbPopoverComponent } from '@shared/components/popover.component';
import { AdminService } from "@core/http/admin.service";
@Component({ @Component({
selector: 'tb-entity-versions-table', selector: 'tb-entity-versions-table',
@ -87,6 +88,8 @@ export class EntityVersionsTableComponent extends PageComponent implements OnIni
viewsInited = false; viewsInited = false;
isReadOnly: Observable<boolean>;
private componentResize$: ResizeObserver; private componentResize$: ResizeObserver;
@Input() @Input()
@ -129,6 +132,7 @@ export class EntityVersionsTableComponent extends PageComponent implements OnIni
constructor(protected store: Store<AppState>, constructor(protected store: Store<AppState>,
private entitiesVersionControlService: EntitiesVersionControlService, private entitiesVersionControlService: EntitiesVersionControlService,
private adminService: AdminService,
private popoverService: TbPopoverService, private popoverService: TbPopoverService,
private renderer: Renderer2, private renderer: Renderer2,
private cd: ChangeDetectorRef, private cd: ChangeDetectorRef,
@ -150,6 +154,7 @@ export class EntityVersionsTableComponent extends PageComponent implements OnIni
} }
}); });
this.componentResize$.observe(this.elementRef.nativeElement); this.componentResize$.observe(this.elementRef.nativeElement);
this.isReadOnly = this.adminService.getRepositorySettingsInfo().pipe(map(settings => settings.readOnly));
} }
ngOnDestroy() { ngOnDestroy() {

6
ui-ngx/src/app/modules/home/components/vc/repository-settings.component.html

@ -41,7 +41,7 @@
<mat-label translate>admin.default-branch</mat-label> <mat-label translate>admin.default-branch</mat-label>
<input matInput formControlName="defaultBranch"> <input matInput formControlName="defaultBranch">
</mat-form-field> </mat-form-field>
<mat-checkbox formControlName="readOnly" style="margin-bottom: 16px;"> <mat-checkbox formControlName="readOnly">
{{ 'admin.repository-read-only' | translate }} {{ 'admin.repository-read-only' | translate }}
</mat-checkbox> </mat-checkbox>
<fieldset [disabled]="isLoading$ | async" class="fields-group"> <fieldset [disabled]="isLoading$ | async" class="fields-group">
@ -61,7 +61,7 @@
autocomplete="new-username"/> autocomplete="new-username"/>
</mat-form-field> </mat-form-field>
<mat-checkbox *ngIf="showChangePassword" (change)="changePasswordChanged()" <mat-checkbox *ngIf="showChangePassword" (change)="changePasswordChanged()"
[(ngModel)]="changePassword" [ngModelOptions]="{ standalone: true }" style="padding-bottom: 16px;"> [(ngModel)]="changePassword" [ngModelOptions]="{ standalone: true }">
{{ 'admin.change-password-access-token' | translate }} {{ 'admin.change-password-access-token' | translate }}
</mat-checkbox> </mat-checkbox>
<mat-form-field class="mat-block" *ngIf="changePassword || !showChangePassword"> <mat-form-field class="mat-block" *ngIf="changePassword || !showChangePassword">
@ -81,7 +81,7 @@
(fileNameChanged)="repositorySettingsForm.get('privateKeyFileName').patchValue($event)"> (fileNameChanged)="repositorySettingsForm.get('privateKeyFileName').patchValue($event)">
</tb-file-input> </tb-file-input>
<mat-checkbox *ngIf="showChangePrivateKeyPassword" (change)="changePrivateKeyPasswordChanged()" <mat-checkbox *ngIf="showChangePrivateKeyPassword" (change)="changePrivateKeyPasswordChanged()"
[(ngModel)]="changePrivateKeyPassword" [ngModelOptions]="{ standalone: true }" style="padding-bottom: 16px;"> [(ngModel)]="changePrivateKeyPassword" [ngModelOptions]="{ standalone: true }">
{{ 'admin.change-passphrase' | translate }} {{ 'admin.change-passphrase' | translate }}
</mat-checkbox> </mat-checkbox>
<mat-form-field class="mat-block" *ngIf="changePrivateKeyPassword || !showChangePrivateKeyPassword"> <mat-form-field class="mat-block" *ngIf="changePrivateKeyPassword || !showChangePrivateKeyPassword">

3
ui-ngx/src/app/modules/home/components/vc/repository-settings.component.scss

@ -17,6 +17,9 @@
mat-card.repository-settings { mat-card.repository-settings {
margin: 8px; margin: 8px;
} }
mat-checkbox {
padding-bottom: 16px;
}
.fields-group { .fields-group {
padding: 0 16px 8px; padding: 0 16px 8px;
margin-bottom: 10px; margin-bottom: 10px;

6
ui-ngx/src/app/shared/models/settings.models.ts

@ -411,7 +411,6 @@ export const repositoryAuthMethodTranslationMap = new Map<RepositoryAuthMethod,
export interface RepositorySettings { export interface RepositorySettings {
repositoryUri: string; repositoryUri: string;
defaultBranch: string; defaultBranch: string;
readOnly: boolean;
authMethod: RepositoryAuthMethod; authMethod: RepositoryAuthMethod;
username: string; username: string;
password: string; password: string;
@ -420,6 +419,11 @@ export interface RepositorySettings {
privateKeyPassword: string; privateKeyPassword: string;
} }
export interface RepositorySettingsInfo {
configured: boolean;
readOnly: boolean;
}
export interface AutoVersionCreateConfig extends VersionCreateConfig { export interface AutoVersionCreateConfig extends VersionCreateConfig {
branch: string; branch: string;
} }

Loading…
Cancel
Save