diff --git a/frontend/angular.json b/frontend/angular.json
index 740de4c9a..985ac1ccf 100644
--- a/frontend/angular.json
+++ b/frontend/angular.json
@@ -137,8 +137,7 @@
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"buildTarget": "dissendium-v0:build",
- "host": "127.0.0.1",
- "proxyConfig": "src/proxy.conf.json"
+ "host": "127.0.0.1"
},
"configurations": {
"production": {
diff --git a/frontend/src/app/components/dashboard/dashboard.component.ts b/frontend/src/app/components/dashboard/dashboard.component.ts
index d6b7551c6..d9e61e497 100644
--- a/frontend/src/app/components/dashboard/dashboard.component.ts
+++ b/frontend/src/app/components/dashboard/dashboard.component.ts
@@ -1,7 +1,13 @@
+import { Angulartics2, Angulartics2Module } from 'angulartics2';
+import { Component, OnDestroy, OnInit } from '@angular/core';
+import { ConnectionSettingsUI, UiSettings } from 'src/app/models/ui-settings';
+import { CustomEvent, TableProperties } from 'src/app/models/table';
+import { map } from 'rxjs/operators';
+
+import { AlertComponent } from '../ui-components/alert/alert.component';
import { SelectionModel } from '@angular/cdk/collections';
import { CommonModule } from '@angular/common';
import { HttpErrorResponse } from '@angular/common/http';
-import { Component, OnDestroy, OnInit } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { MatIconModule } from '@angular/material/icon';
@@ -9,14 +15,10 @@ import { MatSidenavModule } from '@angular/material/sidenav';
import { Title } from '@angular/platform-browser';
import { ActivatedRoute, ParamMap, Router, RouterModule } from '@angular/router';
import JsonURL from '@jsonurl/jsonurl';
-import { Angulartics2, Angulartics2Module } from 'angulartics2';
import { omitBy } from 'lodash';
-import { first, map } from 'rxjs/operators';
import { getComparatorsFromUrl } from 'src/app/lib/parse-filter-params';
import { ServerError } from 'src/app/models/alert';
import { TableCategory } from 'src/app/models/connection';
-import { CustomEvent, TableProperties } from 'src/app/models/table';
-import { ConnectionSettingsUI, UiSettings } from 'src/app/models/ui-settings';
import { User } from 'src/app/models/user';
import { CompanyService } from 'src/app/services/company.service';
import { ConnectionsService } from 'src/app/services/connections.service';
@@ -27,7 +29,6 @@ import { UiSettingsService } from 'src/app/services/ui-settings.service';
import { environment } from 'src/environments/environment';
import { normalizeTableName } from '../../lib/normalize';
import { PlaceholderTableViewComponent } from '../skeletons/placeholder-table-view/placeholder-table-view.component';
-import { AlertComponent } from '../ui-components/alert/alert.component';
import { BannerComponent } from '../ui-components/banner/banner.component';
import { ContentLoaderComponent } from '../ui-components/content-loader/content-loader.component';
import { DbActionLinkDialogComponent } from './db-table-view/db-action-link-dialog/db-action-link-dialog.component';
@@ -76,14 +77,12 @@ export class DashboardComponent implements OnInit, OnDestroy {
public currentPage: number = 1;
public shownTableTitles: boolean = true;
public connectionID: string;
- // public isTestConnection: boolean = false;
public filters: object = {};
public comparators: object;
public pageIndex: number;
public pageSize: number;
public sortColumn: string;
public sortOrder: 'ASC' | 'DESC';
-
public loading: boolean = true;
public isServerError: boolean = false;
public serverError: ServerError;
@@ -131,10 +130,8 @@ export class DashboardComponent implements OnInit, OnDestroy {
}
ngOnInit() {
- this.connectionID = this._connections.currentConnectionID;
- // this.isTestConnection = this._connections.currentConnection.isTestConnection;
- this.dataSource = new TablesDataSource(this._tables, this._connections, this._uiSettings, this._tableRow);
-
+ this.connectionID = this._connections.currentConnectionID;
+ this.dataSource = new TablesDataSource(this._tables, this._connections, this._tableRow);
this._tableState.cast.subscribe((row) => {
this.selectedRow = row;
});
@@ -384,7 +381,6 @@ export class DashboardComponent implements OnInit, OnDestroy {
this.uiSettings = settings?.connections[this.connectionID];
this.shownTableTitles = settings?.connections[this.connectionID]?.shownTableTitles ?? true;
- const shownColumns = this.uiSettings?.tables[this.selectedTableName]?.shownColumns;
this.dataSource.fetchRows({
connectionID: this.connectionID,
tableName: this.selectedTableName,
@@ -393,8 +389,7 @@ export class DashboardComponent implements OnInit, OnDestroy {
sortColumn: this.sortColumn,
sortOrder: this.sortOrder,
filters: this.filters,
- search,
- shownColumns,
+ search
});
});
}
diff --git a/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.html b/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.html
index 6e3f7e20e..143892f00 100644
--- a/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.html
+++ b/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.html
@@ -62,7 +62,7 @@
General settings
Table view
-
+
-
+
Searchable columns
@@ -115,7 +115,7 @@ Table view
Choose the columns Rocketadmin scans when using the Search bar.
-
+
Sortable columns
@@ -189,7 +189,7 @@ "Edit ro
diff --git a/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.spec.ts b/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.spec.ts
index a0f6de627..504a1135c 100644
--- a/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.spec.ts
+++ b/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.spec.ts
@@ -84,18 +84,14 @@ describe('DbTableSettingsComponent', () => {
icon: "",
search_fields: [],
excluded_fields: [],
- list_fields: [],
// identification_fields: [],
// list_per_page: null,
- ordering: TableOrdering.Ascending,
- ordering_field: "",
identity_column: "",
readonly_fields: [],
sortable_by: [],
autocomplete_columns: [
"FirstName"
],
- columns_view: [],
sensitive_fields: [],
connection_id: "63f804e4-8588-4957-8d7f-655e2309fef7",
allow_csv_export: true,
diff --git a/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.ts b/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.ts
index bb582fbe9..e407d2686 100644
--- a/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.ts
+++ b/frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.ts
@@ -61,7 +61,7 @@ export class DbTableSettingsComponent implements OnInit {
public loading: boolean = true;
public fields: string[];
public fields_to_exclude: string[];
- public orderChanged: boolean = false;
+ // public orderChanged: boolean = false;
public iconChanged: boolean = false;
public listFieldsOrder: string[];
public tableSettingsInitial: TableSettings = {
@@ -73,12 +73,8 @@ export class DbTableSettingsComponent implements OnInit {
identity_column: '',
search_fields: [],
excluded_fields: [],
- list_fields: [],
- ordering: TableOrdering.Ascending,
- ordering_field: '',
readonly_fields: [],
sortable_by: [],
- columns_view: [],
sensitive_fields: [],
allow_csv_export: true,
allow_csv_import: true,
@@ -161,17 +157,17 @@ export class DbTableSettingsComponent implements OnInit {
this.iconChanged = true;
}
- drop(event: CdkDragDrop
) {
- moveItemInArray(this.listFieldsOrder, event.previousIndex, event.currentIndex);
- this.tableSettings.list_fields = [...this.listFieldsOrder];
- this.orderChanged = true;
- }
+ // drop(event: CdkDragDrop) {
+ // // moveItemInArray(this.listFieldsOrder, event.previousIndex, event.currentIndex);
+ // // this.tableSettings.list_fields = [...this.listFieldsOrder];
+ // // this.orderChanged = true;
+ // }
- resetColumnsOrder() {
- this.tableSettings.list_fields = [];
- this.listFieldsOrder = [...this.fields];
- this.orderChanged = true;
- }
+ // resetColumnsOrder() {
+ // // this.tableSettings.list_fields = [];
+ // this.listFieldsOrder = [...this.fields];
+ // // this.orderChanged = true;
+ // }
updateSettings() {
this.submitting = true;
@@ -183,11 +179,7 @@ export class DbTableSettingsComponent implements OnInit {
for (const [key, value] of Object.entries(this.tableSettings)) {
if (key !== 'connection_id' && key !== 'table_name' && key !== 'ordering') {
if (Array.isArray(value)) {
- if (key === 'list_fields') {
- updatedSettings[key] = this.orderChanged;
- } else {
- updatedSettings[key] = value.length > 0;
- }
+ updatedSettings[key] = value.length > 0
} else {
updatedSettings[key] = Boolean(value);
}
diff --git a/frontend/src/app/components/dashboard/db-table-view/db-table-view.component.css b/frontend/src/app/components/dashboard/db-table-view/db-table-view.component.css
index 4a4673591..4df023384 100644
--- a/frontend/src/app/components/dashboard/db-table-view/db-table-view.component.css
+++ b/frontend/src/app/components/dashboard/db-table-view/db-table-view.component.css
@@ -551,3 +551,85 @@ tr.mat-row:hover {
padding: 8px 0;
width: 100%;
}
+
+.hidden {
+ display: none;
+}
+
+/* Columns Menu Drag and Drop Styles */
+.columns-list {
+ max-height: 400px;
+ overflow-y: auto;
+ padding: 8px 0;
+}
+
+.draggable-column-item {
+ cursor: move;
+ display: flex !important;
+ align-items: center;
+ justify-content: flex-start;
+ gap: 0px;
+ padding: 8px 24px 8px 8px !important;
+ min-height: 48px !important;
+ transition: background-color 0.2s ease;
+}
+
+.draggable-column-item .drag-handle {
+ color: #9e9e9e;
+ cursor: grab;
+ font-size: 20px;
+ width: 20px;
+ height: 20px;
+ margin-right: 0px;
+ flex-shrink: 0;
+}
+
+.draggable-column-item ::ng-deep .mat-mdc-checkbox {
+ align-items: center !important;
+}
+
+.draggable-column-item ::ng-deep .mat-mdc-checkbox-label {
+ text-align: left;
+ line-height: 1.5;
+}
+
+.draggable-column-item ::ng-deep .mdc-form-field {
+ align-items: center !important;
+}
+
+.draggable-column-item:active .drag-handle {
+ cursor: grabbing;
+}
+
+.draggable-column-item:hover .drag-handle {
+ color: #616161;
+}
+
+@media (prefers-color-scheme: dark) {
+ .draggable-column-item .drag-handle {
+ color: #757575;
+ }
+
+ .draggable-column-item:hover .drag-handle {
+ color: #bdbdbd;
+ }
+}
+
+.cdk-drag-preview.draggable-column-item {
+ box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2),
+ 0 8px 10px 1px rgba(0, 0, 0, 0.14),
+ 0 3px 14px 2px rgba(0, 0, 0, 0.12);
+ opacity: 0.9;
+}
+
+.cdk-drag-placeholder {
+ opacity: 0.3;
+}
+
+.cdk-drag-animating {
+ transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
+}
+
+.columns-list.cdk-drop-list-dragging .draggable-column-item:not(.cdk-drag-placeholder) {
+ transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
+}
diff --git a/frontend/src/app/components/dashboard/db-table-view/db-table-view.component.html b/frontend/src/app/components/dashboard/db-table-view/db-table-view.component.html
index 48798d9b4..95157da03 100644
--- a/frontend/src/app/components/dashboard/db-table-view/db-table-view.component.html
+++ b/frontend/src/app/components/dashboard/db-table-view/db-table-view.component.html
@@ -104,18 +104,24 @@ {{ displayName }}
{{ tableData.columns.length }})
-
-
+
+
+
+