Add deepCopy utility and enforce required fields in particle forms
This commit is contained in:
parent
9b8c4891f4
commit
dc1b29e52c
|
|
@ -7,18 +7,18 @@
|
|||
<div class="form-row">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Particle Name</mat-label>
|
||||
<input matInput [(ngModel)]="particleData.particle_name" placeholder="Enter particle name">
|
||||
<input required matInput [(ngModel)]="particleData.particle_name" placeholder="Enter particle name">
|
||||
</mat-form-field>
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Display Name</mat-label>
|
||||
<input matInput [(ngModel)]="particleData.display_name" placeholder="Enter display name">
|
||||
<input required matInput [(ngModel)]="particleData.display_name" placeholder="Enter display name">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Permission name</mat-label>
|
||||
<input matInput [(ngModel)]="particleData.permission" placeholder="Enter permission">
|
||||
<input required matInput [(ngModel)]="particleData.permission" placeholder="Enter permission">
|
||||
</mat-form-field>
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Package name</mat-label>
|
||||
|
|
@ -37,14 +37,14 @@
|
|||
</mat-form-field>
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Display Item</mat-label>
|
||||
<input matInput [(ngModel)]="particleData.display_item" placeholder="Enter display item">
|
||||
<input required matInput [(ngModel)]="particleData.display_item" placeholder="Enter display item">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<mat-form-field appearance="outline" class="lore-double">
|
||||
<mat-label>Lore</mat-label>
|
||||
<textarea matInput [(ngModel)]="particleData.lore" placeholder="Enter lore"></textarea>
|
||||
<textarea required matInput [(ngModel)]="particleData.lore" placeholder="Enter lore"></textarea>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import * as THREE from 'three';
|
|||
import {RendererService} from './renderer.service';
|
||||
import {Particle, ParticleData, ParticleInfo, ParticleType} from '../models/particle.model';
|
||||
import {IntersectionPlaneService, PlaneOrientation} from './intersection-plane.service';
|
||||
import {deepCopy} from '../../../util/deep-copy.util';
|
||||
|
||||
/**
|
||||
* Service responsible for managing particles in the scene
|
||||
|
|
@ -281,6 +282,13 @@ export class ParticleManagerService {
|
|||
* Generates JSON output of the particle data
|
||||
*/
|
||||
generateJson(): string {
|
||||
const particleData = deepCopy(this.particleData)
|
||||
if (this.particleData.package_permission) {
|
||||
particleData.package_permission = 'apart.set.' + this.particleData.package_permission.toLowerCase().replace(' ', '-');
|
||||
} else {
|
||||
particleData.package_permission = 'apart.set.none';
|
||||
}
|
||||
particleData.permission = 'apart.particle.' + this.particleData.permission.toLowerCase().replace(' ', '-');
|
||||
return JSON.stringify(this.particleData, null, 2);
|
||||
}
|
||||
|
||||
|
|
|
|||
10
frontend/src/app/util/deep-copy.util.ts
Normal file
10
frontend/src/app/util/deep-copy.util.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
export function deepCopy<T>(obj: T): T {
|
||||
// Structured cloning
|
||||
if (typeof globalThis?.structuredClone === 'function') {
|
||||
// @ts-ignore
|
||||
return globalThis.structuredClone(obj) as T;
|
||||
}
|
||||
|
||||
// Normal objects
|
||||
return JSON.parse(JSON.stringify(obj)) as T;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user