|
|
|
import {Component, Input, OnInit, ViewChild} from '@angular/core';
|
|
|
|
import {AlertController, ModalController} from '@ionic/angular';
|
|
|
|
import {EditorService} from '../../service/editor.service';
|
|
|
|
import {PageVersionRecord} from '../../structures/PageRecord';
|
|
|
|
import {EditorPage} from '../../pages/editor/editor.page';
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'app-version-modal',
|
|
|
|
templateUrl: './version-modal.component.html',
|
|
|
|
styleUrls: ['./version-modal.component.scss'],
|
|
|
|
})
|
|
|
|
export class VersionModalComponent implements OnInit {
|
|
|
|
@Input() pageId: string;
|
|
|
|
@ViewChild('editor') editor: EditorPage;
|
|
|
|
|
|
|
|
public pageVersions: PageVersionRecord[] = [];
|
|
|
|
public selectedVersion?: PageVersionRecord;
|
|
|
|
|
|
|
|
constructor(
|
|
|
|
protected alerts: AlertController,
|
|
|
|
protected modals: ModalController,
|
|
|
|
protected editorService: EditorService,
|
|
|
|
) {
|
|
|
|
console.log('version modal', this);
|
|
|
|
}
|
|
|
|
|
|
|
|
async ngOnInit() {
|
|
|
|
this.pageVersions = await this.editorService.loadPageVersions(this.pageId);
|
|
|
|
this.onVersionClick(this.pageVersions[0]);
|
|
|
|
}
|
|
|
|
|
|
|
|
dismiss(reload = false) {
|
|
|
|
this.modals.dismiss(reload);
|
|
|
|
}
|
|
|
|
|
|
|
|
async revertToVersion() {
|
|
|
|
const alert = await this.alerts.create({
|
|
|
|
header: 'Revert page?',
|
|
|
|
message: `This will revert the current version of the page to version ${this.selectedVersion.versionNum}. Continue?`,
|
|
|
|
buttons: [
|
|
|
|
{
|
|
|
|
text: 'Keep It',
|
|
|
|
role: 'cancel',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
text: 'Revert It',
|
|
|
|
handler: async () => {
|
|
|
|
await this.editorService.revertPageToVersion(this.pageId, this.selectedVersion.versionNum);
|
|
|
|
this.dismiss(true);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
});
|
|
|
|
|
|
|
|
await alert.present();
|
|
|
|
}
|
|
|
|
|
|
|
|
async onVersionClick(version: PageVersionRecord) {
|
|
|
|
this.selectedVersion = version;
|
|
|
|
setTimeout(() => {
|
|
|
|
if ( this.editor ) {
|
|
|
|
this.editor.ionViewDidEnter();
|
|
|
|
}
|
|
|
|
}, 300);
|
|
|
|
}
|
|
|
|
}
|