2023-02-25 23:49:59 +01:00
|
|
|
import { CommonModule } from '@angular/common';
|
|
|
|
import { Component, Input, OnInit } from '@angular/core';
|
|
|
|
import { MatIconModule } from '@angular/material/icon';
|
2023-02-26 16:34:34 +01:00
|
|
|
import { IonicModule, LoadingController, ModalController, ToastController } from '@ionic/angular';
|
2023-03-01 12:06:56 +01:00
|
|
|
import { Sorting, SortName, SortType } from '../model/sorting';
|
2023-02-25 23:49:59 +01:00
|
|
|
import { WSItem } from '../model/ws-item';
|
|
|
|
import { StoragehubService } from '../storagehub.service';
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
standalone: true,
|
|
|
|
selector: 'app-ws-viewer',
|
|
|
|
providers: [StoragehubService],
|
|
|
|
templateUrl: './ws-viewer.component.html',
|
|
|
|
styleUrls: ['./ws-viewer.component.scss'],
|
|
|
|
imports: [
|
|
|
|
CommonModule, IonicModule, MatIconModule
|
|
|
|
]
|
|
|
|
})
|
|
|
|
export class WsViewerComponent implements OnInit {
|
|
|
|
|
2023-02-26 13:10:00 +01:00
|
|
|
constructor(private storagehub: StoragehubService, private modalCtrl: ModalController,
|
2023-02-26 16:34:34 +01:00
|
|
|
) { }
|
2023-02-25 23:49:59 +01:00
|
|
|
|
2023-02-26 13:10:00 +01:00
|
|
|
@Input() notClickableIds: string[] = [];
|
|
|
|
@Input() notSelectableIds: string[] = [];
|
2023-02-25 23:49:59 +01:00
|
|
|
@Input() finishLabel: string = "Confirm";
|
|
|
|
@Input() title: string = "Operation";
|
|
|
|
|
2023-02-26 13:10:00 +01:00
|
|
|
@Input() onSelected :Function = () => {};
|
|
|
|
|
2023-02-25 23:49:59 +01:00
|
|
|
currentItem: WSItem | undefined;
|
|
|
|
|
2023-02-26 13:10:00 +01:00
|
|
|
anchestors: WSItem[] | undefined ;
|
|
|
|
|
|
|
|
items: WSItem[] | undefined = undefined;
|
2023-02-25 23:49:59 +01:00
|
|
|
|
2023-02-26 13:10:00 +01:00
|
|
|
|
2023-02-25 23:49:59 +01:00
|
|
|
ngOnInit() {
|
2023-02-26 13:10:00 +01:00
|
|
|
this.loadDocuments();
|
2023-02-25 23:49:59 +01:00
|
|
|
}
|
2023-02-26 13:10:00 +01:00
|
|
|
|
2023-02-25 23:49:59 +01:00
|
|
|
loadDocuments() {
|
|
|
|
if (this.currentItem) {
|
2023-03-08 17:13:03 +01:00
|
|
|
this.storagehub.getChildren(this.currentItem.item.id).then( (obs) => obs.subscribe(
|
2023-02-25 23:49:59 +01:00
|
|
|
(res) => {
|
|
|
|
const tmpItems$: WSItem[] = []
|
|
|
|
res.forEach(i => tmpItems$.push(new WSItem(i)));
|
2023-03-01 12:06:56 +01:00
|
|
|
this.items = tmpItems$.sort(Sorting.getSortFunction(SortName.FolderFirst, SortType.Asc));
|
2023-02-25 23:49:59 +01:00
|
|
|
})
|
2023-03-08 17:13:03 +01:00
|
|
|
);
|
2023-02-25 23:49:59 +01:00
|
|
|
} else
|
2023-03-08 17:13:03 +01:00
|
|
|
this.storagehub.getWsRoot().then( (obs) => obs.subscribe(
|
2023-02-25 23:49:59 +01:00
|
|
|
(res) => this.addVresToWs(new WSItem(res))
|
2023-03-08 17:13:03 +01:00
|
|
|
));
|
2023-02-25 23:49:59 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
addVresToWs(wsRoot: WSItem) {
|
2023-03-08 17:13:03 +01:00
|
|
|
this.storagehub.getVres().then( (obs) => obs.subscribe(
|
2023-02-25 23:49:59 +01:00
|
|
|
(res) => {
|
|
|
|
const tmpItems$: WSItem[] = [wsRoot]
|
|
|
|
res.forEach(i => tmpItems$.push(new WSItem(i)));
|
|
|
|
this.items = tmpItems$;
|
2023-03-08 17:13:03 +01:00
|
|
|
}));
|
2023-02-25 23:49:59 +01:00
|
|
|
}
|
|
|
|
|
2023-02-26 13:10:00 +01:00
|
|
|
isCurrentItemSelectable(){
|
|
|
|
return this.currentItem && !this.notSelectableIds.includes(this.currentItem.item.id);
|
|
|
|
}
|
|
|
|
|
|
|
|
isItemClickable(item: WSItem){
|
|
|
|
return item.isFolder() && !this.notClickableIds.includes(item.item.id);
|
|
|
|
}
|
|
|
|
|
2023-02-25 23:49:59 +01:00
|
|
|
itemClicked(item: WSItem) {
|
2023-02-26 13:10:00 +01:00
|
|
|
this.items = undefined;
|
|
|
|
if (this.currentItem)
|
|
|
|
this.anchestors?.push(this.currentItem);
|
|
|
|
else this.anchestors =[]
|
2023-02-25 23:49:59 +01:00
|
|
|
this.currentItem = item;
|
|
|
|
this.ngOnInit();
|
|
|
|
}
|
|
|
|
|
2023-02-26 13:10:00 +01:00
|
|
|
backClicked() {
|
|
|
|
this.items = undefined;
|
|
|
|
if (this.anchestors?.length == 0){
|
|
|
|
this.anchestors = undefined;
|
|
|
|
this.currentItem = undefined;
|
|
|
|
} else {
|
|
|
|
var tmpitem = this.anchestors?.pop();
|
|
|
|
this.currentItem = tmpitem;
|
|
|
|
}
|
|
|
|
this.ngOnInit();
|
|
|
|
}
|
|
|
|
|
2023-02-25 23:49:59 +01:00
|
|
|
cancel() {
|
|
|
|
return this.modalCtrl.dismiss(null, 'cancel');
|
|
|
|
}
|
|
|
|
|
|
|
|
confirm() {
|
2023-02-26 13:10:00 +01:00
|
|
|
this.onSelected(this.currentItem);
|
2023-02-25 23:49:59 +01:00
|
|
|
return this.modalCtrl.dismiss(null, 'confirm');
|
|
|
|
}
|
|
|
|
|
2023-03-01 12:06:56 +01:00
|
|
|
|
2023-02-25 23:49:59 +01:00
|
|
|
}
|