minor usability enhancements

This commit is contained in:
garrettmills 2020-02-08 23:33:35 -06:00
parent 3852d6aab7
commit dc4f8fe7ed
2 changed files with 36 additions and 18 deletions

View File

@ -2,7 +2,7 @@ import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} f
import HostRecord from '../../../structures/HostRecord';
import {ApiService} from '../../../service/api.service';
import {Observable} from 'rxjs';
import {AlertController, ModalController} from '@ionic/angular';
import {AlertController, LoadingController, ModalController} from '@ionic/angular';
import {ColumnsComponent} from './columns/columns.component';
import {AgGridAngular} from 'ag-grid-angular';
@ -27,6 +27,7 @@ export class DatabaseComponent implements OnInit {
protected api: ApiService,
protected modals: ModalController,
protected alerts: AlertController,
protected loader: LoadingController,
) { }
title = 'app';
@ -34,10 +35,14 @@ export class DatabaseComponent implements OnInit {
rowData = [];
ngOnInit() {
this.getInitObservable().subscribe(() => {
this.getColumnLoadObservable().subscribe(() => {
this.getDataLoadObservable().subscribe(() => {
this.loader.create({message: 'Loading database...'}).then(loader => {
loader.present().then(() => {
this.getInitObservable().subscribe(() => {
this.getColumnLoadObservable().subscribe(() => {
this.getDataLoadObservable().subscribe(() => {
loader.dismiss();
});
});
});
});
});
@ -86,6 +91,7 @@ export class DatabaseComponent implements OnInit {
onInsertRow() {
this.rowData.push({});
this.agGridElement.api.setRowData(this.rowData);
this.dirty = true;
}
async onRemoveRow() {
@ -107,6 +113,7 @@ export class DatabaseComponent implements OnInit {
this.rowData = newRows;
this.agGridElement.api.setRowData(this.rowData);
this.lastClickRow = -1;
this.dirty = true;
},
}
],
@ -153,11 +160,16 @@ export class DatabaseComponent implements OnInit {
}
onSyncRecords() {
this.api.post(`/db/${this.hostRecord.PageId}/${this.hostRecord.UUID}/set/${this.hostRecord.Value.Value}/data`, this.rowData)
.subscribe(res => {
this.rowData = res.data.map(x => x.RowData);
this.agGridElement.api.setRowData(this.rowData);
this.dirty = false;
this.loader.create({message: 'Syncing the database...'}).then(loader => {
loader.present().then(() => {
this.api.post(`/db/${this.hostRecord.PageId}/${this.hostRecord.UUID}/set/${this.hostRecord.Value.Value}/data`, this.rowData)
.subscribe(res => {
this.rowData = res.data.map(x => x.RowData);
this.agGridElement.api.setRowData(this.rowData);
this.dirty = false;
loader.dismiss();
});
});
});
}

View File

@ -3,7 +3,7 @@ import HostRecord from '../../structures/HostRecord';
import PageRecord from '../../structures/PageRecord';
import {PageService} from '../../service/page.service';
import {ActivatedRoute, Router} from '@angular/router';
import {PopoverController} from '@ionic/angular';
import {LoadingController, PopoverController} from '@ionic/angular';
import {NodePickerComponent} from '../../components/editor/node-picker/node-picker.component';
@Component({
@ -24,6 +24,7 @@ export class EditorPage implements OnInit {
protected route: ActivatedRoute,
protected router: Router,
protected popover: PopoverController,
protected loader: LoadingController,
) {
this.route.params.subscribe(params => {
this.pageId = params.id;
@ -174,15 +175,20 @@ export class EditorPage implements OnInit {
}
onSaveClick() {
this.pageRecord.Name = this.titleBar.el.innerText.trim();
this.loader.create({message: 'Saving changes...'}).then(loader => {
loader.present().then(() => {
this.pageRecord.Name = this.titleBar.el.innerText.trim();
// First, save the page record itself
this.pages.save(this.pageRecord).subscribe(pageRecord => {
this.pageRecord = pageRecord;
// First, save the page record itself
this.pages.save(this.pageRecord).subscribe(pageRecord => {
this.pageRecord = pageRecord;
// Now, save the nodes
this.pages.save_nodes(pageRecord, this.hostRecords).subscribe(result => {
this.hostRecords = result;
// Now, save the nodes
this.pages.save_nodes(pageRecord, this.hostRecords).subscribe(result => {
this.hostRecords = result;
loader.dismiss();
});
});
});
});
}