Skip to content

Commit a0352cd

Browse files
committed
feat(): update project select
1 parent b94d3de commit a0352cd

24 files changed

+391
-166
lines changed

.prettierignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@
55

66
.angular
77

8-
/.nx/cache
8+
/.nx/cache
9+
10+
*.html

apps/mix-cms/src/app/pages/portal/database-data/database-data.component.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import {
3636
Subject,
3737
debounceTime,
3838
distinctUntilChanged,
39-
filter,
4039
forkJoin,
4140
map,
4241
take,
@@ -45,7 +44,6 @@ import {
4544
} from 'rxjs';
4645
import { CMS_ROUTES } from '../../../app.routes';
4746

48-
import { SuccessFilter } from '@mixcore/share/base';
4947
import { ListPageKit } from '../../../shares/kits/list-page-kit.component';
5048
import { DatabaseDataStore } from '../../../stores/database-data.store';
5149
import { CustomActionCellComponent } from './components/custom-action-cell/custom-action-cell.component';
@@ -149,7 +147,6 @@ export class DatabaseDataComponent
149147
public onGridReady(params: GridReadyEvent) {
150148
this.gridApi = params.api;
151149
this.rowData$ = this.store.vm$.pipe(
152-
filter(SuccessFilter),
153150
tap((s) => {
154151
if (s.db) {
155152
this.allColumnDefs = s.db.columns.map(
@@ -162,7 +159,6 @@ export class DatabaseDataComponent
162159
dataType: x.dataType,
163160
columnType: 'value',
164161
},
165-
editable: true,
166162
}
167163
);
168164
this.columnNames = s.db.columns.map((x) => x.displayName);
@@ -175,7 +171,9 @@ export class DatabaseDataComponent
175171
];
176172
}
177173
}),
178-
map((s) => s.data),
174+
map((s) => {
175+
return s.data;
176+
}),
179177
takeUntil(this.destroy$)
180178
);
181179

@@ -383,10 +381,7 @@ export class DatabaseDataComponent
383381
});
384382

385383
dialogRef.afterClosed$.subscribe((value) => {
386-
if (value) {
387-
this.store.updateData(dataIndex, value);
388-
this.gridApi.refreshCells();
389-
}
384+
if (value) this.store.updateData(dataIndex, value);
390385
});
391386
});
392387
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { CommonModule } from '@angular/common';
2+
import {
3+
ChangeDetectionStrategy,
4+
Component,
5+
Input,
6+
inject,
7+
} from '@angular/core';
8+
import { MixApiFacadeService } from '@mixcore/share/api';
9+
import { BaseComponent } from '@mixcore/share/base';
10+
import { MixButtonComponent } from '@mixcore/ui/button';
11+
12+
@Component({
13+
selector: 'mix-backup-table-btn',
14+
standalone: true,
15+
imports: [CommonModule, MixButtonComponent],
16+
template: `
17+
<mix-button
18+
[loading]="loadingState() === 'Loading'"
19+
(click)="backupSingleTable()"
20+
>Backup table</mix-button
21+
>
22+
23+
<div>
24+
When you activate this button, the system will automatically backup your
25+
data in case you need it in the future.
26+
</div>
27+
`,
28+
changeDetection: ChangeDetectionStrategy.OnPush,
29+
})
30+
export class BackupTableButtonComponent extends BaseComponent {
31+
@Input() public dbSysName?: string;
32+
public mixApi = inject(MixApiFacadeService);
33+
34+
public backupSingleTable() {
35+
this.mixApi.databaseApi
36+
.backupTable(this.dbSysName!)
37+
.pipe(this.observerLoadingStateSignal())
38+
.subscribe();
39+
}
40+
}

apps/mix-cms/src/app/pages/portal/database/components/database-migration/database-migration.component.html

Lines changed: 0 additions & 53 deletions
This file was deleted.

apps/mix-cms/src/app/pages/portal/database/components/database-migration/database-migration.component.scss

Whitespace-only changes.
Lines changed: 37 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,47 @@
11
import { CommonModule } from '@angular/common';
2-
import {
3-
ChangeDetectionStrategy,
4-
Component,
5-
Input,
6-
inject,
7-
} from '@angular/core';
8-
import { MixApiFacadeService } from '@mixcore/share/api';
9-
import { BaseComponent } from '@mixcore/share/base';
2+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
103
import { MixButtonComponent } from '@mixcore/ui/button';
4+
import { BackupTableButtonComponent } from './backup-table-btn.component';
5+
import { MigrateTableButtonComponent } from './migrate-table-btn.component';
6+
import { RestoreTableButtonComponent } from './restore-table-btn.component';
7+
import { UpdateTableButtonComponent } from './update-table-btn.component';
118

129
@Component({
1310
selector: 'mix-database-migration',
1411
standalone: true,
15-
imports: [CommonModule, MixButtonComponent],
16-
templateUrl: './database-migration.component.html',
17-
styleUrl: './database-migration.component.scss',
18-
changeDetection: ChangeDetectionStrategy.OnPush,
19-
})
20-
export class DatabaseMigrationComponent extends BaseComponent {
21-
@Input() public dbSysName?: string;
22-
public mixApi = inject(MixApiFacadeService);
23-
24-
public migrateSingleTable() {
25-
this.mixApi.databaseApi
26-
.migrateToSingleTable(this.dbSysName!)
27-
.pipe(this.observerLoadingStateSignal())
28-
.subscribe();
29-
}
12+
imports: [
13+
CommonModule,
14+
MixButtonComponent,
15+
UpdateTableButtonComponent,
16+
MigrateTableButtonComponent,
17+
BackupTableButtonComponent,
18+
RestoreTableButtonComponent,
19+
],
20+
template: `
21+
@if (!dbSysName) {
22+
<div class="mt-1 mb-2 notification --info">
23+
Create your db first to run some migrations
24+
</div>
25+
} @else {
26+
<div class="mb-3 mt-1">
27+
<mix-migrate-table-btn [dbSysName]="dbSysName"></mix-migrate-table-btn>
28+
</div>
3029
31-
public updateSingleTable() {
32-
this.mixApi.databaseApi
33-
.updateDataTable(this.dbSysName!)
34-
.pipe(this.observerLoadingStateSignal())
35-
.subscribe();
36-
}
30+
<div class="mb-3">
31+
<mix-backup-table-btn [dbSysName]="dbSysName"></mix-backup-table-btn>
32+
</div>
3733
38-
public backupSingleTable() {
39-
this.mixApi.databaseApi
40-
.backupTable(this.dbSysName!)
41-
.pipe(this.observerLoadingStateSignal())
42-
.subscribe();
43-
}
34+
<div class="mb-3">
35+
<mix-restore-table-btn [dbSysName]="dbSysName"></mix-restore-table-btn>
36+
</div>
4437
45-
public restoreSingleTable() {
46-
this.mixApi.databaseApi
47-
.restoreTable(this.dbSysName!)
48-
.pipe(this.observerLoadingStateSignal())
49-
.subscribe();
50-
}
38+
<div class="mb-3">
39+
<mix-update-table-btn [dbSysName]="dbSysName"></mix-update-table-btn>
40+
</div>
41+
}
42+
`,
43+
changeDetection: ChangeDetectionStrategy.OnPush,
44+
})
45+
export class DatabaseMigrationComponent {
46+
@Input() public dbSysName?: string;
5147
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { CommonModule } from '@angular/common';
2+
import {
3+
ChangeDetectionStrategy,
4+
Component,
5+
Input,
6+
inject,
7+
} from '@angular/core';
8+
import { MixApiFacadeService } from '@mixcore/share/api';
9+
import { BaseComponent } from '@mixcore/share/base';
10+
import { MixButtonComponent } from '@mixcore/ui/button';
11+
12+
@Component({
13+
selector: 'mix-migrate-table-btn',
14+
standalone: true,
15+
imports: [CommonModule, MixButtonComponent],
16+
template: `
17+
<mix-button
18+
[loading]="loadingState() === 'Loading'"
19+
(click)="migrateSingleTable()"
20+
>Migrate to single table</mix-button
21+
>
22+
23+
<div>
24+
Before using a database that you have created for the first time, it must
25+
be migrated into a single table.
26+
</div>
27+
`,
28+
changeDetection: ChangeDetectionStrategy.OnPush,
29+
})
30+
export class MigrateTableButtonComponent extends BaseComponent {
31+
@Input() public dbSysName?: string;
32+
public mixApi = inject(MixApiFacadeService);
33+
34+
public migrateSingleTable() {
35+
this.mixApi.databaseApi
36+
.migrateToSingleTable(this.dbSysName!)
37+
.pipe(this.observerLoadingStateSignal())
38+
.subscribe();
39+
}
40+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { CommonModule } from '@angular/common';
2+
import {
3+
ChangeDetectionStrategy,
4+
Component,
5+
Input,
6+
inject,
7+
} from '@angular/core';
8+
import { MixApiFacadeService } from '@mixcore/share/api';
9+
import { BaseComponent } from '@mixcore/share/base';
10+
import { MixButtonComponent } from '@mixcore/ui/button';
11+
12+
@Component({
13+
selector: 'mix-restore-table-btn',
14+
standalone: true,
15+
imports: [CommonModule, MixButtonComponent],
16+
template: `
17+
<mix-button
18+
[type]="'danger'"
19+
[loading]="loadingState() === 'Loading'"
20+
(click)="restoreSingleTable()"
21+
>Restore table</mix-button
22+
>
23+
24+
<div>
25+
Depending on when you last backed up the data, the system will restore it.
26+
</div>
27+
`,
28+
changeDetection: ChangeDetectionStrategy.OnPush,
29+
})
30+
export class RestoreTableButtonComponent extends BaseComponent {
31+
@Input() public dbSysName?: string;
32+
public mixApi = inject(MixApiFacadeService);
33+
34+
public restoreSingleTable() {
35+
this.mixApi.databaseApi
36+
.restoreTable(this.dbSysName!)
37+
.pipe(this.observerLoadingStateSignal())
38+
.subscribe();
39+
}
40+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { CommonModule } from '@angular/common';
2+
import {
3+
ChangeDetectionStrategy,
4+
Component,
5+
Input,
6+
inject,
7+
} from '@angular/core';
8+
import { MixApiFacadeService } from '@mixcore/share/api';
9+
import { BaseComponent } from '@mixcore/share/base';
10+
import { MixButtonComponent } from '@mixcore/ui/button';
11+
12+
@Component({
13+
selector: 'mix-update-table-btn',
14+
standalone: true,
15+
imports: [CommonModule, MixButtonComponent],
16+
template: `
17+
<mix-button
18+
[loading]="loadingState() === 'Loading'"
19+
(click)="updateSingleTable()"
20+
>Update data table</mix-button
21+
>
22+
23+
<div>
24+
When you wish to make changes to your database or add new columns, run
25+
this migration.
26+
</div>
27+
`,
28+
changeDetection: ChangeDetectionStrategy.OnPush,
29+
})
30+
export class UpdateTableButtonComponent extends BaseComponent {
31+
@Input() public dbSysName?: string;
32+
public mixApi = inject(MixApiFacadeService);
33+
34+
public updateSingleTable() {
35+
this.mixApi.databaseApi
36+
.updateDataTable(this.dbSysName!)
37+
.pipe(this.observerLoadingStateSignal())
38+
.subscribe();
39+
}
40+
}

0 commit comments

Comments
 (0)