Refactor particle management: remove secret key from file operations, add ParticleManagerComponent, update frame naming conventions, and enhance style and functionality.
This commit is contained in:
+86
@@ -0,0 +1,86 @@
|
||||
import {Component, inject} from '@angular/core';
|
||||
import {FormsModule} from '@angular/forms';
|
||||
import {MatInput, MatLabel} from '@angular/material/input';
|
||||
import {MatFormFieldModule} from '@angular/material/form-field';
|
||||
import {MatCard, MatCardContent, MatCardHeader, MatCardTitle} from '@angular/material/card';
|
||||
import {MatIconModule} from '@angular/material/icon';
|
||||
import {MatButtonModule} from '@angular/material/button';
|
||||
import {ParticlesService} from '@api';
|
||||
import {ParticleManagerService} from '@pages/particles/services/particle-manager.service';
|
||||
import {FrameManagerService} from '@pages/particles/services/frame-manager.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-particle-manager',
|
||||
imports: [
|
||||
FormsModule,
|
||||
MatFormFieldModule,
|
||||
MatInput,
|
||||
MatLabel,
|
||||
MatCard,
|
||||
MatCardContent,
|
||||
MatCardHeader,
|
||||
MatCardTitle,
|
||||
MatIconModule,
|
||||
MatButtonModule,
|
||||
],
|
||||
templateUrl: './particle-manager.component.html',
|
||||
styleUrl: './particle-manager.component.scss'
|
||||
})
|
||||
export class ParticleManagerComponent {
|
||||
|
||||
private readonly particlesService = inject(ParticlesService)
|
||||
private readonly particleManagerService = inject(ParticleManagerService)
|
||||
private readonly frameManagerService = inject(FrameManagerService)
|
||||
|
||||
private selectedParticleName: string = '';
|
||||
|
||||
set selectedParticle(particle: string) {
|
||||
this.selectedParticleName = particle;
|
||||
}
|
||||
|
||||
get selectedParticle(): string {
|
||||
return this.selectedParticleName;
|
||||
}
|
||||
|
||||
get createdParticleName(): string {
|
||||
return this.particleManagerService.getParticleData().particle_name;
|
||||
}
|
||||
|
||||
protected downloadParticle() {
|
||||
if (this.selectedParticleName === '') {
|
||||
return;
|
||||
}
|
||||
this.particlesService
|
||||
.downloadFile(this.selectedParticleName)
|
||||
.subscribe({
|
||||
next: data => {
|
||||
data.text().then(text => {
|
||||
if (text.startsWith('<')) {
|
||||
console.error("Failed to download particle: Invalid file format")
|
||||
return;
|
||||
}
|
||||
this.particleManagerService.loadParticleData(text)
|
||||
this.frameManagerService.switchFrame(this.particleManagerService.getCurrentFrame())
|
||||
})
|
||||
},
|
||||
error: () => {
|
||||
console.error("Failed to download particle: Invalid file name")
|
||||
},
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
protected uploadParticle() {
|
||||
this.particlesService
|
||||
.saveFile(this.createdParticleName, new Blob([this.particleManagerService.generateJson()], {type: 'application/json'}))
|
||||
.subscribe({
|
||||
next: () => {
|
||||
console.log("Successfully uploaded particle")
|
||||
},
|
||||
error: () => {
|
||||
console.error("Failed to upload particle")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user