Merge maxunbearable/feature/calculated-fields-vc-ui

This commit is contained in:
Andrii Landiak 2025-03-03 15:27:02 +02:00 committed by GitHub
commit 3bdce8bd46
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 56 additions and 8 deletions

View File

@ -84,6 +84,9 @@
<mat-checkbox formControlName="saveRelations">
{{ 'version-control.export-relations' | translate }}
</mat-checkbox>
<mat-checkbox *ngIf="typesWithCalculatedFields.has(entityTypeFormGroup.get('entityType').value)" formControlName="saveCalculatedFields">
{{ 'version-control.export-calculated-fields' | translate }}
</mat-checkbox>
</div>
</div>
</div>

View File

@ -25,7 +25,11 @@ import { TranslateService } from '@ngx-translate/core';
import { DialogService } from '@core/services/dialog.service';
import { catchError, map, mergeMap } from 'rxjs/operators';
import { Observable, of } from 'rxjs';
import { EntityTypeVersionCreateConfig, exportableEntityTypes } from '@shared/models/vc.models';
import {
EntityTypeVersionCreateConfig,
exportableEntityTypes,
typesWithCalculatedFields
} from '@shared/models/vc.models';
import { EntityType, entityTypeTranslations } from '@shared/models/entity-type.models';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
@ -43,6 +47,8 @@ export class AutoCommitSettingsComponent extends PageComponent implements OnInit
isReadOnly: Observable<boolean>;
readonly typesWithCalculatedFields = typesWithCalculatedFields;
constructor(protected store: Store<AppState>,
private adminService: AdminService,
private dialogService: DialogService,
@ -104,7 +110,8 @@ export class AutoCommitSettingsComponent extends PageComponent implements OnInit
branch: null,
saveAttributes: true,
saveRelations: false,
saveCredentials: true
saveCredentials: true,
saveCalculatedFields: true,
};
const allowed = this.allowedEntityTypes();
let entityType: EntityType = null;
@ -206,7 +213,8 @@ export class AutoCommitSettingsComponent extends PageComponent implements OnInit
branch: [config.branch, []],
saveRelations: [config.saveRelations, []],
saveAttributes: [config.saveAttributes, []],
saveCredentials: [config.saveCredentials, []]
saveCredentials: [config.saveCredentials, []],
saveCalculatedFields: [config.saveCalculatedFields, []]
})
}
);

View File

@ -72,6 +72,9 @@
<mat-checkbox *ngIf="!entityTypesWithoutRelatedData.has(entityTypeFormGroup.get('entityType').value)" formControlName="saveRelations">
{{ 'version-control.export-relations' | translate }}
</mat-checkbox>
<mat-checkbox *ngIf="typesWithCalculatedFields.has(entityTypeFormGroup.get('entityType').value)" formControlName="saveCalculatedFields">
{{ 'version-control.export-calculated-fields' | translate }}
</mat-checkbox>
</div>
</div>
</div>

View File

@ -33,7 +33,8 @@ import {
EntityTypeVersionCreateConfig,
exportableEntityTypes,
SyncStrategy,
syncStrategyTranslationMap
syncStrategyTranslationMap,
typesWithCalculatedFields
} from '@shared/models/vc.models';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
@ -79,6 +80,8 @@ export class EntityTypesVersionCreateComponent extends PageComponent implements
loading = true;
readonly typesWithCalculatedFields = typesWithCalculatedFields;
constructor(protected store: Store<AppState>,
private translate: TranslateService,
private fb: UntypedFormBuilder,
@ -150,6 +153,7 @@ export class EntityTypesVersionCreateComponent extends PageComponent implements
saveRelations: [config.saveRelations, []],
saveAttributes: [config.saveAttributes, []],
saveCredentials: [config.saveCredentials, []],
saveCalculatedFields: [config.saveCalculatedFields, []],
allEntities: [config.allEntities, []],
entityIds: [config.entityIds, [Validators.required]]
})
@ -202,6 +206,7 @@ export class EntityTypesVersionCreateComponent extends PageComponent implements
saveAttributes: true,
saveRelations: true,
saveCredentials: true,
saveCalculatedFields: true,
allEntities: true,
entityIds: []
};

View File

@ -72,6 +72,9 @@
<mat-checkbox *ngIf="!entityTypesWithoutRelatedData.has(entityTypeFormGroup.get('entityType').value)" formControlName="loadRelations">
{{ 'version-control.load-relations' | translate }}
</mat-checkbox>
<mat-checkbox *ngIf="typesWithCalculatedFields.has(entityTypeFormGroup.get('entityType').value)" formControlName="loadCalculatedFields">
{{ 'version-control.load-calculated-fields' | translate }}
</mat-checkbox>
</div>
</div>
</div>

View File

@ -31,7 +31,8 @@ import { PageComponent } from '@shared/components/page.component';
import {
entityTypesWithoutRelatedData,
EntityTypeVersionLoadConfig,
exportableEntityTypes
exportableEntityTypes,
typesWithCalculatedFields
} from '@shared/models/vc.models';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
@ -75,6 +76,8 @@ export class EntityTypesVersionLoadComponent extends PageComponent implements On
loading = true;
readonly typesWithCalculatedFields = typesWithCalculatedFields;
constructor(protected store: Store<AppState>,
private translate: TranslateService,
private popoverService: TbPopoverService,
@ -145,6 +148,7 @@ export class EntityTypesVersionLoadComponent extends PageComponent implements On
loadRelations: [config.loadRelations, []],
loadAttributes: [config.loadAttributes, []],
loadCredentials: [config.loadCredentials, []],
loadCalculatedFields: [config.loadCalculatedFields, []],
removeOtherEntities: [config.removeOtherEntities, []],
findExistingEntityByName: [config.findExistingEntityByName, []]
})
@ -180,6 +184,7 @@ export class EntityTypesVersionLoadComponent extends PageComponent implements On
loadAttributes: true,
loadRelations: true,
loadCredentials: true,
loadCalculatedFields: true,
removeOtherEntities: false,
findExistingEntityByName: true
};

View File

@ -47,6 +47,9 @@
<mat-checkbox *ngIf="!entityTypesWithoutRelatedData.has(entityId.entityType)" formControlName="saveRelations" style="margin-bottom: 16px;">
{{ 'version-control.export-relations' | translate }}
</mat-checkbox>
<mat-checkbox *ngIf="typesWithCalculatedFields.has(entityId.entityType)" formControlName="saveCalculatedFields" class="mb-4">
{{ 'version-control.export-calculated-fields' | translate }}
</mat-checkbox>
</div>
</fieldset>
</form>

View File

@ -20,6 +20,7 @@ import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms
import {
entityTypesWithoutRelatedData,
SingleEntityVersionCreateRequest,
typesWithCalculatedFields,
VersionCreateRequestType,
VersionCreationResult
} from '@shared/models/vc.models';
@ -71,6 +72,8 @@ export class EntityVersionCreateComponent extends PageComponent implements OnIni
private versionCreateResultSubscription: Subscription;
readonly typesWithCalculatedFields = typesWithCalculatedFields;
constructor(protected store: Store<AppState>,
private entitiesVersionControlService: EntitiesVersionControlService,
private cd: ChangeDetectorRef,
@ -115,7 +118,8 @@ export class EntityVersionCreateComponent extends PageComponent implements OnIni
? this.createVersionFormGroup.get('saveRelations').value : false,
saveAttributes: !entityTypesWithoutRelatedData.has(this.entityId.entityType)
? this.createVersionFormGroup.get('saveAttributes').value : false,
saveCredentials: this.entityId.entityType === EntityType.DEVICE ? this.createVersionFormGroup.get('saveCredentials').value : false
saveCredentials: this.entityId.entityType === EntityType.DEVICE ? this.createVersionFormGroup.get('saveCredentials').value : false,
saveCalculatedFields: typesWithCalculatedFields.has(this.entityId.entityType) ? this.createVersionFormGroup.get('saveCalculatedFields').value : false,
},
type: VersionCreateRequestType.SINGLE_ENTITY
};

View File

@ -36,6 +36,9 @@
<mat-checkbox *ngIf="entityDataInfo.hasRelations" formControlName="loadRelations" style="margin-bottom: 16px;">
{{ 'version-control.load-relations' | translate }}
</mat-checkbox>
<mat-checkbox *ngIf="entityDataInfo.hasCalculatedFields" formControlName="loadCalculatedFields" class="mb-4">
{{ 'version-control.load-calculated-fields' | translate }}
</mat-checkbox>
</div>
</fieldset>
</form>

View File

@ -79,7 +79,8 @@ export class EntityVersionRestoreComponent extends PageComponent implements OnIn
this.restoreFormGroup = this.fb.group({
loadAttributes: [true, []],
loadRelations: [true, []],
loadCredentials: [true, []]
loadCredentials: [true, []],
loadCalculatedFields: [true, []]
});
this.entitiesVersionControlService.getEntityDataInfo(this.externalEntityId, this.versionId).subscribe((data) => {
this.entityDataInfo = data;
@ -110,7 +111,8 @@ export class EntityVersionRestoreComponent extends PageComponent implements OnIn
config: {
loadRelations: this.entityDataInfo.hasRelations ? this.restoreFormGroup.get('loadRelations').value : false,
loadAttributes: this.entityDataInfo.hasAttributes ? this.restoreFormGroup.get('loadAttributes').value : false,
loadCredentials: this.entityDataInfo.hasCredentials ? this.restoreFormGroup.get('loadCredentials').value : false
loadCredentials: this.entityDataInfo.hasCredentials ? this.restoreFormGroup.get('loadCredentials').value : false,
loadCalculatedFields: this.entityDataInfo.hasCalculatedFields ? this.restoreFormGroup.get('loadCalculatedFields').value : false
},
type: VersionLoadRequestType.SINGLE_ENTITY
};

View File

@ -49,6 +49,7 @@ export interface VersionCreateConfig {
saveRelations: boolean;
saveAttributes: boolean;
saveCredentials: boolean;
saveCalculatedFields: boolean;
}
export enum VersionCreateRequestType {
@ -106,6 +107,7 @@ export function createDefaultEntityTypesVersionCreate(): {[entityType: string]:
syncStrategy: null,
saveAttributes: !entityTypesWithoutRelatedData.has(entityType),
saveRelations: !entityTypesWithoutRelatedData.has(entityType),
saveCalculatedFields: typesWithCalculatedFields.has(entityType),
saveCredentials: true,
allEntities: true,
entityIds: []
@ -118,6 +120,7 @@ export interface VersionLoadConfig {
loadRelations: boolean;
loadAttributes: boolean;
loadCredentials: boolean;
loadCalculatedFields: boolean;
}
export enum VersionLoadRequestType {
@ -154,6 +157,7 @@ export function createDefaultEntityTypesVersionLoad(): {[entityType: string]: En
loadAttributes: !entityTypesWithoutRelatedData.has(entityType),
loadRelations: !entityTypesWithoutRelatedData.has(entityType),
loadCredentials: true,
loadCalculatedFields: typesWithCalculatedFields.has(entityType),
removeOtherEntities: false,
findExistingEntityByName: true
};
@ -254,4 +258,7 @@ export interface EntityDataInfo {
hasRelations: boolean;
hasAttributes: boolean;
hasCredentials: boolean;
hasCalculatedFields: boolean;
}
export const typesWithCalculatedFields = new Set<EntityType | AliasEntityType>([EntityType.DEVICE, EntityType.ASSET, EntityType.ASSET_PROFILE, EntityType.DEVICE_PROFILE]);

View File

@ -6320,6 +6320,7 @@
"export-relations": "Export relations",
"export-attributes": "Export attributes",
"export-credentials": "Export credentials",
"export-calculated-fields": "Export calculated fields",
"entity-versions": "Entity versions",
"versions": "Versions",
"created-time": "Created time",
@ -6336,6 +6337,7 @@
"load-relations": "Load relations",
"load-attributes": "Load attributes",
"load-credentials": "Load credentials",
"load-calculated-fields": "Load calculated fields",
"compare-with-current": "Compare with current",
"diff-entity-with-version": "Diff with entity version '{{versionName}}'",
"previous-difference": "Previous Difference",