diff --git a/ngapp/src/app/activities/activities-cards/activities-cards.component.spec.ts b/ngapp/src/app/activities/activities-cards/activities-cards.component.spec.ts index 4b099a3e..4f7928f2 100644 --- a/ngapp/src/app/activities/activities-cards/activities-cards.component.spec.ts +++ b/ngapp/src/app/activities/activities-cards/activities-cards.component.spec.ts @@ -23,6 +23,7 @@ describe("ActivitiesCardsComponent", () => { }); it("should be created", () => { + console.log("========== [ActivitiesCardsComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/activities/activities-list/activities-list.component.spec.ts b/ngapp/src/app/activities/activities-list/activities-list.component.spec.ts index b0b4f442..882b41ce 100644 --- a/ngapp/src/app/activities/activities-list/activities-list.component.spec.ts +++ b/ngapp/src/app/activities/activities-list/activities-list.component.spec.ts @@ -23,6 +23,7 @@ describe("ActivitiesListComponent", () => { }); it("should be created", () => { + console.log("========== [ActivitiesListComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/activities/activities.component.spec.ts b/ngapp/src/app/activities/activities.component.spec.ts index 9059e043..55ef0e4e 100644 --- a/ngapp/src/app/activities/activities.component.spec.ts +++ b/ngapp/src/app/activities/activities.component.spec.ts @@ -38,10 +38,12 @@ describe("ActivitiesComponent", () => { })); it("should be created", () => { + console.log("========== [ActivitiesComponent] should be created"); expect(component).toBeTruthy(); }); it("should have Activities Title", () => { + console.log("========== [ActivitiesComponent] should have Activities Title"); // query for the title

by CSS element selector const de = fixture.debugElement.query(By.css("h2")); const el = de.nativeElement; @@ -49,12 +51,14 @@ describe("ActivitiesComponent", () => { }); it("should have Toolbar", () => { + console.log("========== [ActivitiesComponent] should have Toolbar"); // query for the toolbar by css classname const de = fixture.debugElement.query(By.css(".toolbar-pf")); expect(de).toBeDefined(); }); it("should have Activities", () => { + console.log("========== [ActivitiesComponent] should have Activities"); // Check component object const activities = component.allActivities; expect(activities.length).toEqual(3); @@ -66,6 +70,7 @@ describe("ActivitiesComponent", () => { }); it("should have initial card layout", () => { + console.log("========== [ActivitiesComponent] should have initial card layout"); // app-activities-cards should be present let debugEl = fixture.debugElement.query(By.css("app-activities-cards")); const element = debugEl.nativeElement; @@ -77,6 +82,7 @@ describe("ActivitiesComponent", () => { }); it("should toggle layout", () => { + console.log("========== [ActivitiesComponent] should toggle layout"); // Initial layout should be Card Layout let cardDebugElem = fixture.debugElement.query(By.css("app-activities-cards")); let listDebugElem = fixture.debugElement.query(By.css("app-activities-list")); @@ -99,6 +105,7 @@ describe("ActivitiesComponent", () => { }); it("should filter activities", () => { + console.log("========== [ActivitiesComponent] should filter activities"); // Expect 3 activities initially. let activities = component.filteredActivities; expect(activities.length).toEqual(3); diff --git a/ngapp/src/app/activities/add-activity-wizard/add-activity-wizard.component.spec.ts b/ngapp/src/app/activities/add-activity-wizard/add-activity-wizard.component.spec.ts index f17ce2de..cc473270 100644 --- a/ngapp/src/app/activities/add-activity-wizard/add-activity-wizard.component.spec.ts +++ b/ngapp/src/app/activities/add-activity-wizard/add-activity-wizard.component.spec.ts @@ -37,6 +37,7 @@ describe("AddActivityWizardComponent", () => { }); it("should be created", () => { + console.log("========== [AddActivityWizardComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/activities/add-activity/add-activity.component.spec.ts b/ngapp/src/app/activities/add-activity/add-activity.component.spec.ts index 841dfa9b..80c8d413 100644 --- a/ngapp/src/app/activities/add-activity/add-activity.component.spec.ts +++ b/ngapp/src/app/activities/add-activity/add-activity.component.spec.ts @@ -37,6 +37,7 @@ describe("AddActivityComponent", () => { }); it("should be created", () => { + console.log("========== [AddActivityComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/activities/shared/add-activity-form/add-activity-form.component.spec.ts b/ngapp/src/app/activities/shared/add-activity-form/add-activity-form.component.spec.ts index 76123eaa..822ad1ca 100644 --- a/ngapp/src/app/activities/shared/add-activity-form/add-activity-form.component.spec.ts +++ b/ngapp/src/app/activities/shared/add-activity-form/add-activity-form.component.spec.ts @@ -25,6 +25,7 @@ describe("AddActivityFormComponent", () => { }); it("should be created", () => { + console.log("========== [AddActivityFormComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/app.component.spec.ts b/ngapp/src/app/app.component.spec.ts index af5ec11a..ed67d540 100644 --- a/ngapp/src/app/app.component.spec.ts +++ b/ngapp/src/app/app.component.spec.ts @@ -17,6 +17,7 @@ describe("AppComponent", () => { })); it("should create the app", async(() => { + console.log("========== [AppComponent] should be created"); const fixture = TestBed.createComponent(AppComponent); const app = fixture.debugElement.componentInstance; expect(app).toBeTruthy(); diff --git a/ngapp/src/app/connections/add-connection-wizard/add-connection-wizard.component.spec.ts b/ngapp/src/app/connections/add-connection-wizard/add-connection-wizard.component.spec.ts index b6ef21cd..df00a2a5 100644 --- a/ngapp/src/app/connections/add-connection-wizard/add-connection-wizard.component.spec.ts +++ b/ngapp/src/app/connections/add-connection-wizard/add-connection-wizard.component.spec.ts @@ -34,6 +34,7 @@ describe("AddConnectionWizardComponent", () => { }); it("should be created", () => { + console.log("========== [AddConnectionWizardComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/connections/add-connection/add-connection.component.spec.ts b/ngapp/src/app/connections/add-connection/add-connection.component.spec.ts index bed73a77..3d5d3f26 100644 --- a/ngapp/src/app/connections/add-connection/add-connection.component.spec.ts +++ b/ngapp/src/app/connections/add-connection/add-connection.component.spec.ts @@ -34,6 +34,7 @@ describe("AddConnectionComponent", () => { }); it("should be created", () => { + console.log("========== [AddConnectionComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/connections/connections-cards/connections-cards.component.spec.ts b/ngapp/src/app/connections/connections-cards/connections-cards.component.spec.ts index 6d60bc2c..fa4ef834 100644 --- a/ngapp/src/app/connections/connections-cards/connections-cards.component.spec.ts +++ b/ngapp/src/app/connections/connections-cards/connections-cards.component.spec.ts @@ -23,6 +23,7 @@ describe("ConnectionsCardsComponent", () => { }); it("should be created", () => { + console.log("========== [ConnectionCardsComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/connections/connections-list/connections-list.component.spec.ts b/ngapp/src/app/connections/connections-list/connections-list.component.spec.ts index b0bad59a..761ce445 100644 --- a/ngapp/src/app/connections/connections-list/connections-list.component.spec.ts +++ b/ngapp/src/app/connections/connections-list/connections-list.component.spec.ts @@ -23,6 +23,7 @@ describe("ConnectionsListComponent", () => { }); it("should be created", () => { + console.log("========== [ConnectionsListComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/connections/connections.component.spec.ts b/ngapp/src/app/connections/connections.component.spec.ts index 99eb20d0..6584158f 100644 --- a/ngapp/src/app/connections/connections.component.spec.ts +++ b/ngapp/src/app/connections/connections.component.spec.ts @@ -37,10 +37,12 @@ describe("ConnectionsComponent", () => { })); it("should be created", () => { + console.log("========== [ConnectionsComponent] should be created"); expect(component).toBeTruthy(); }); it("should have Connections Title", () => { + console.log("========== [ConnectionsComponent] should have Connections Title"); // query for the title

by CSS element selector const de = fixture.debugElement.query(By.css("h2")); const el = de.nativeElement; @@ -48,12 +50,14 @@ describe("ConnectionsComponent", () => { }); it("should have Toolbar", () => { + console.log("========== [ConnectionsComponent] should have Toolbar"); // query for the toolbar by css classname const de = fixture.debugElement.query(By.css(".toolbar-pf")); expect(de).toBeDefined(); }); it("should have Connections", () => { + console.log("========== [ConnectionsComponent] should have Connections"); // Check component object const connections = component.allConnections; expect(connections.length).toEqual(3); @@ -65,6 +69,7 @@ describe("ConnectionsComponent", () => { }); it("should have initial card layout", () => { + console.log("========== [ConnectionsComponent] should have initial card layout"); // app-connections-cards should be present let debugEl = fixture.debugElement.query(By.css("app-connections-cards")); const element = debugEl.nativeElement; @@ -76,6 +81,7 @@ describe("ConnectionsComponent", () => { }); it("should toggle layout", () => { + console.log("========== [ConnectionsComponent] should toggle layout"); // Initial layout should be Card Layout let cardDebugElem = fixture.debugElement.query(By.css("app-connections-cards")); let listDebugElem = fixture.debugElement.query(By.css("app-connections-list")); @@ -98,6 +104,7 @@ describe("ConnectionsComponent", () => { }); it("should filter connections", () => { + console.log("========== [ConnectionsComponent] should filter connections"); // Expect 3 connections initially. let connections = component.filteredConnections; expect(connections.length).toEqual(3); diff --git a/ngapp/src/app/core/about-dialog/about-dialog.component.spec.ts b/ngapp/src/app/core/about-dialog/about-dialog.component.spec.ts index b089b3e7..6515eaee 100644 --- a/ngapp/src/app/core/about-dialog/about-dialog.component.spec.ts +++ b/ngapp/src/app/core/about-dialog/about-dialog.component.spec.ts @@ -23,6 +23,7 @@ describe("AboutDialogComponent", () => { }); it("should be created", () => { + console.log("========== [AboutDialogComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/core/about-dialog/about.service.spec.ts b/ngapp/src/app/core/about-dialog/about.service.spec.ts index 082cbdc1..1ed0f108 100644 --- a/ngapp/src/app/core/about-dialog/about.service.spec.ts +++ b/ngapp/src/app/core/about-dialog/about.service.spec.ts @@ -15,6 +15,7 @@ describe("AboutService", () => { it("should be created", inject([ AboutService, AppSettingsService, LoggerService ], ( service: AboutService ) => { - expect( service ).toBeTruthy(); + console.log("========== [AboutServiceComponent] should be created"); + expect( service ).toBeTruthy(); })); }); diff --git a/ngapp/src/app/core/api.service.spec.ts b/ngapp/src/app/core/api.service.spec.ts index c4776cb1..522db18e 100644 --- a/ngapp/src/app/core/api.service.spec.ts +++ b/ngapp/src/app/core/api.service.spec.ts @@ -14,6 +14,7 @@ describe("ApiService", () => { it("should be created", inject([LoggerService], (service: MockService ) => { + console.log("========== [ApiServiceComponent] should be created"); expect(service).toBeTruthy(); })); }); diff --git a/ngapp/src/app/core/app-settings.service.spec.ts b/ngapp/src/app/core/app-settings.service.spec.ts index e37b3acb..a495df62 100644 --- a/ngapp/src/app/core/app-settings.service.spec.ts +++ b/ngapp/src/app/core/app-settings.service.spec.ts @@ -10,6 +10,7 @@ describe("AppSettingsService", () => { }); it("should be created", inject([AppSettingsService], (service: AppSettingsService) => { + console.log("========== [AppSettingsServiceComponent] should be created"); expect(service).toBeTruthy(); })); }); diff --git a/ngapp/src/app/core/breadcrumbs/breadcrumb/breadcrumb.component.spec.ts b/ngapp/src/app/core/breadcrumbs/breadcrumb/breadcrumb.component.spec.ts index 5441208a..591b67e8 100644 --- a/ngapp/src/app/core/breadcrumbs/breadcrumb/breadcrumb.component.spec.ts +++ b/ngapp/src/app/core/breadcrumbs/breadcrumb/breadcrumb.component.spec.ts @@ -23,6 +23,7 @@ describe("BreadcrumbComponent", () => { }); it("should be created", () => { + console.log("========== [BreadcrumbComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/core/breadcrumbs/breadcrumbs.component.spec.ts b/ngapp/src/app/core/breadcrumbs/breadcrumbs.component.spec.ts index 2cea6f65..a33ff528 100644 --- a/ngapp/src/app/core/breadcrumbs/breadcrumbs.component.spec.ts +++ b/ngapp/src/app/core/breadcrumbs/breadcrumbs.component.spec.ts @@ -21,6 +21,7 @@ describe("BreadcrumbsComponent", () => { }); it("should be created", () => { + console.log("========== [BreadcrumbsComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/core/nav-header/nav-header.component.spec.ts b/ngapp/src/app/core/nav-header/nav-header.component.spec.ts index 6f78ed0d..ea215c71 100644 --- a/ngapp/src/app/core/nav-header/nav-header.component.spec.ts +++ b/ngapp/src/app/core/nav-header/nav-header.component.spec.ts @@ -41,6 +41,7 @@ describe("NavHeaderComponent", () => { it("should be created", inject([ LoggerService ], (logger: LoggerService ) => { + console.log("========== [NavHeaderComponent] should be created"); expect(component).toBeTruthy(); })); }); diff --git a/ngapp/src/app/core/vertical-nav/vertical-nav.component.spec.ts b/ngapp/src/app/core/vertical-nav/vertical-nav.component.spec.ts index b3029da0..26281cc1 100644 --- a/ngapp/src/app/core/vertical-nav/vertical-nav.component.spec.ts +++ b/ngapp/src/app/core/vertical-nav/vertical-nav.component.spec.ts @@ -26,6 +26,7 @@ describe("VerticalNavComponent", () => { it("should be created", inject([ LoggerService ], (logger: LoggerService ) => { + console.log("========== [VerticalNavComponent] should be created"); expect(component).toBeTruthy(); })); }); diff --git a/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.html b/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.html index 6cb32c34..ecc9b918 100644 --- a/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.html +++ b/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.html @@ -9,7 +9,7 @@

{{ step1InstructionMessage }}


- +
@@ -35,7 +35,11 @@

{{ step2InstructionMessage }}

- +
+
+ +
+
diff --git a/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.spec.ts b/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.spec.ts index fbef22b2..f0acc9b2 100644 --- a/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.spec.ts +++ b/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.spec.ts @@ -47,6 +47,7 @@ describe("AddDataserviceWizardComponent", () => { }); it("should be created", () => { + console.log("========== [AddDataserviceWizardComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.ts b/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.ts index 081b0fb9..c20c5b06 100644 --- a/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.ts +++ b/ngapp/src/app/dataservices/add-dataservice-wizard/add-dataservice-wizard.component.ts @@ -31,6 +31,7 @@ import { DataserviceService } from "@dataservices/shared/dataservice.service"; import { DataservicesConstants } from "@dataservices/shared/dataservices-constants"; import { NewDataservice } from "@dataservices/shared/new-dataservice.model"; import { NotifierService } from "@dataservices/shared/notifier.service"; +import { Table } from "@dataservices/shared/table.model"; import { VdbStatus } from "@dataservices/shared/vdb-status.model"; import { VdbService } from "@dataservices/shared/vdb.service"; import { VdbsConstants } from "@dataservices/shared/vdbs-constants"; @@ -368,18 +369,13 @@ export class AddDataserviceWizardComponent implements OnInit, OnDestroy { /** * @returns {string} the selected source table names in string form */ - public get dataserviceSourceTables(): string { - let tableStr = "None"; - const tables = this.tableSelector.getSelectedTables(); - if (tables.length > 0) { - tableStr = tables[0].getConnection().getId() + " [" + tables[0].getName() + "]"; - } - if (tables.length === 2) { - tableStr = tableStr + ", " + tables[1].getConnection().getId() + " [" + tables[1].getName() + "]"; - } - return tableStr; + public get dataserviceSourceTables(): Table[] { + return this.tableSelector.getSelectedTables(); } + /** + * Updates the page1 status + */ public updatePage1ValidStatus( ): void { this.step1Config.nextEnabled = this.tableSelector.valid(); this.setNavAway(this.step1Config.nextEnabled); diff --git a/ngapp/src/app/dataservices/add-dataservice/add-dataservice.component.spec.ts b/ngapp/src/app/dataservices/add-dataservice/add-dataservice.component.spec.ts index cecda7e4..c616fb1d 100644 --- a/ngapp/src/app/dataservices/add-dataservice/add-dataservice.component.spec.ts +++ b/ngapp/src/app/dataservices/add-dataservice/add-dataservice.component.spec.ts @@ -47,6 +47,7 @@ describe("AddDataserviceComponent", () => { }); it("should be created", () => { + console.log("========== [AddDataserviceComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.css b/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.css index b0ad8ed3..1b182213 100644 --- a/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.css +++ b/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.css @@ -2,3 +2,12 @@ padding-left: 0; padding-right: 0; } + +.jdbc-column-title { + height: 30px; + border:1px solid white; + background-color: #cccccc; + padding-top: 5px; + padding-left: 10px; + padding-right: 0; +} diff --git a/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.html b/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.html index 3c7be0e2..d8095684 100644 --- a/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.html +++ b/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.html @@ -26,7 +26,7 @@ - {{row.name}} + {{ row.name }} @@ -37,19 +37,43 @@ -
- +
+ Table Selection
-
+
+ Current Selections +
+
+ + +
+
Non-JDBC Connections are not supported
-
+
Please select a Connection
+ + + +
+
+ + No tables selected +
+
+
+
+ +
+
diff --git a/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.spec.ts b/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.spec.ts index 04d53dd7..dc9288ba 100644 --- a/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.spec.ts +++ b/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.spec.ts @@ -8,6 +8,11 @@ import { AppSettingsService } from "@core/app-settings.service"; import { LoggerService } from "@core/logger.service"; import { JdbcTableSelectorComponent } from "@dataservices/jdbc-table-selector/jdbc-table-selector.component"; import { SelectedTableComponent } from "@dataservices/selected-table/selected-table.component"; +import { DataserviceService } from "@dataservices/shared/dataservice.service"; +import { MockDataserviceService } from "@dataservices/shared/mock-dataservice.service"; +import { MockVdbService } from "@dataservices/shared/mock-vdb.service"; +import { NotifierService } from "@dataservices/shared/notifier.service"; +import { VdbService } from "@dataservices/shared/vdb.service"; import { NgxDatatableModule } from "@swimlane/ngx-datatable"; import { ConnectionTableSelectorComponent } from "./connection-table-selector.component"; @@ -20,8 +25,10 @@ describe("ConnectionTableSelectorComponent", () => { imports: [ FormsModule, HttpModule, NgxDatatableModule ], declarations: [ ConnectionTableSelectorComponent, JdbcTableSelectorComponent, SelectedTableComponent ], providers: [ - AppSettingsService, LoggerService, + AppSettingsService, LoggerService, NotifierService, { provide: ConnectionService, useClass: MockConnectionService }, + { provide: DataserviceService, useClass: MockDataserviceService }, + { provide: VdbService, useClass: MockVdbService } ] }) .compileComponents().then(() => { @@ -36,6 +43,7 @@ describe("ConnectionTableSelectorComponent", () => { }); it("should be created", () => { + console.log("========== [ConnectionTableSelectorComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.ts b/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.ts index 15eb264d..2e52aa2d 100644 --- a/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.ts +++ b/ngapp/src/app/dataservices/connection-table-selector/connection-table-selector.component.ts @@ -20,6 +20,7 @@ import { Connection } from "@connections/shared/connection.model"; import { ConnectionService } from "@connections/shared/connection.service"; import { LoggerService } from "@core/logger.service"; import { JdbcTableSelectorComponent } from "@dataservices/jdbc-table-selector/jdbc-table-selector.component"; +import { DataserviceService } from "@dataservices/shared/dataservice.service"; import { Table } from "@dataservices/shared/table.model"; import { LoadingState } from "@shared/loading-state.enum"; @@ -31,9 +32,8 @@ import { LoadingState } from "@shared/loading-state.enum"; }) export class ConnectionTableSelectorComponent implements OnInit { - @Output() public tableSelectionChanged: EventEmitter = new EventEmitter(); - @ViewChild(JdbcTableSelectorComponent) public jdbcTableSelector: JdbcTableSelectorComponent; + @Output() public selectedTableListUpdated: EventEmitter = new EventEmitter(); public readonly nameProp = "name"; // must match html template public rows: any[] = []; @@ -48,13 +48,16 @@ export class ConnectionTableSelectorComponent implements OnInit { }; private connectionService: ConnectionService; + private dataserviceService: DataserviceService; private allConnections: Connection[] = []; private selectedConn: Connection; private connectionLoadingState: LoadingState = LoadingState.LOADING; private logger: LoggerService; - constructor( connectionService: ConnectionService, logger: LoggerService ) { + constructor( connectionService: ConnectionService, dataserviceService: DataserviceService, + logger: LoggerService ) { this.connectionService = connectionService; + this.dataserviceService = dataserviceService; this.logger = logger; } @@ -62,6 +65,9 @@ export class ConnectionTableSelectorComponent implements OnInit { * Component initialization */ public ngOnInit(): void { + // clears table selections + this.dataserviceService.clearWizardSelectedTables(); + // Load the connections this.connectionLoadingState = LoadingState.LOADING; const self = this; @@ -87,7 +93,7 @@ export class ConnectionTableSelectorComponent implements OnInit { } // callback from connections table selection - public onSelect( { selected }) { + public onSelect( { selected }): void { // connection is single select so get first element const connectionName = selected[ 0 ][ this.nameProp ]; @@ -180,9 +186,6 @@ export class ConnectionTableSelectorComponent implements OnInit { this.jdbcTableSelector.setConnection(null); } } - - // notify upstream that connection selection has changed - this.tableSelectionChanged.emit(); } /* @@ -193,16 +196,42 @@ export class ConnectionTableSelectorComponent implements OnInit { return this.allConnections; } + /** + * Responds to table added event from the table selector. + * The table is added to the accumulator list. + * @param {Table} addedTable the table to add to the accumulator list + */ + public onTableSelectionAdded(addedTable: Table): void { + this.dataserviceService.addToWizardSelectionTables(addedTable); + this.selectedTableListUpdated.emit(); + } + + /** + * Responds to table remove event from the table selector. + * The table is removed from the accumulator list, if found. + * @param {Table} removedTable the table to remove from the accumulator list + */ + public onTableSelectionRemoved(removedTable: Table): void { + const wasRemoved = this.dataserviceService.removeFromWizardSelectionTables(removedTable); + if (wasRemoved) { + this.selectedTableListUpdated.emit(); + } + } + + /* + * Determine if any tables are currently selected + * @returns {boolean} true if one or more tables are selected + */ + public get hasSelectedTables(): boolean { + return this.getSelectedTables().length > 0; + } + /* * Return all currently selected Tables * @returns {Table[]} the list of selected Tables */ public getSelectedTables(): Table[] { - const selectedTables = []; - if (this.jdbcTableSelector) { - return this.jdbcTableSelector.getSelectedTables(); - } - return selectedTables; + return this.dataserviceService.getWizardSelectedTables(); } // used by table diff --git a/ngapp/src/app/dataservices/dataservices-cards/dataservices-cards.component.spec.ts b/ngapp/src/app/dataservices/dataservices-cards/dataservices-cards.component.spec.ts index c701242b..1a89f696 100644 --- a/ngapp/src/app/dataservices/dataservices-cards/dataservices-cards.component.spec.ts +++ b/ngapp/src/app/dataservices/dataservices-cards/dataservices-cards.component.spec.ts @@ -23,6 +23,7 @@ describe("DataservicesCardsComponent", () => { }); it("should be created", () => { + console.log("========== [DataservicesCardsComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/dataservices/dataservices-list/dataservices-list.component.spec.ts b/ngapp/src/app/dataservices/dataservices-list/dataservices-list.component.spec.ts index 8a5fe78e..f56d021e 100644 --- a/ngapp/src/app/dataservices/dataservices-list/dataservices-list.component.spec.ts +++ b/ngapp/src/app/dataservices/dataservices-list/dataservices-list.component.spec.ts @@ -23,6 +23,7 @@ describe("DataservicesListComponent", () => { }); it("should be created", () => { + console.log("========== [DataservicesListComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/dataservices/dataservices.component.spec.ts b/ngapp/src/app/dataservices/dataservices.component.spec.ts index 22c005d2..82f42894 100644 --- a/ngapp/src/app/dataservices/dataservices.component.spec.ts +++ b/ngapp/src/app/dataservices/dataservices.component.spec.ts @@ -51,10 +51,12 @@ describe("DataservicesComponent", () => { })); it("should be created", () => { + console.log("========== [DataservicesComponent] should be created"); expect(component).toBeTruthy(); }); it("should have Dataservices Title", () => { + console.log("========== [DataservicesComponent] should have Dataservices Title"); // query for the title

by CSS element selector const de = fixture.debugElement.query(By.css("h2")); const el = de.nativeElement; @@ -62,12 +64,14 @@ describe("DataservicesComponent", () => { }); it("should have Toolbar", () => { + console.log("========== [DataservicesComponent] should have Toolbar"); // query for the toolbar by css classname const de = fixture.debugElement.query(By.css(".toolbar-pf")); expect(de).toBeDefined(); }); it("should have Dataservices", () => { + console.log("========== [DataservicesComponent] should have Dataservices"); // Check component object const dataservices = component.allDataservices; expect(dataservices.length).toEqual(3); @@ -79,6 +83,7 @@ describe("DataservicesComponent", () => { }); it("should have initial card layout", () => { + console.log("========== [DataservicesComponent] should have initial card layout"); // app-dataservices-cards should be present let debugEl = fixture.debugElement.query(By.css("app-dataservices-cards")); const element = debugEl.nativeElement; @@ -90,6 +95,7 @@ describe("DataservicesComponent", () => { }); it("should toggle layout", () => { + console.log("========== [DataservicesComponent] should toggle layout"); // Initial layout should be Card Layout let cardDebugElem = fixture.debugElement.query(By.css("app-dataservices-cards")); let listDebugElem = fixture.debugElement.query(By.css("app-dataservices-list")); @@ -112,6 +118,7 @@ describe("DataservicesComponent", () => { }); it("should filter dataservices", () => { + console.log("========== [DataservicesComponent] should filter dataservices"); // Expect 3 dataservices initially. let dataservices = component.filteredDataservices; expect(dataservices.length).toEqual(3); diff --git a/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.css b/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.css index f49ad27c..dbcee4e0 100644 --- a/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.css +++ b/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.css @@ -34,10 +34,10 @@ } .jdbc-column-title { - height: 35px; + height: 20px; border:1px solid white; background-color: #cccccc; - padding-top: 7px; + padding-top: 0; padding-left: 10px; padding-right: 0; } diff --git a/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.html b/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.html index b0d2f42d..1938b242 100644 --- a/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.html +++ b/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.html @@ -1,34 +1,31 @@ -
+
Schemas
-
+
Tables
-
- Selections -
-
+
-
+
Unable to load schema
-
+
No schema available
-
+
-
+
-
+
Unable to load tables
-
+
No tables available
-
+
- +
@@ -84,17 +81,3 @@
- - - -
-
- - No tables selected -
-
-
-
- -
-
diff --git a/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.spec.ts b/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.spec.ts index 18dc91f3..bdd7406c 100644 --- a/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.spec.ts +++ b/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.spec.ts @@ -7,6 +7,11 @@ import { MockConnectionService } from "@connections/shared/mock-connection.servi import { AppSettingsService } from "@core/app-settings.service"; import { LoggerService } from "@core/logger.service"; import { SelectedTableComponent } from "@dataservices/selected-table/selected-table.component"; +import { DataserviceService } from "@dataservices/shared/dataservice.service"; +import { MockDataserviceService } from "@dataservices/shared/mock-dataservice.service"; +import { MockVdbService } from "@dataservices/shared/mock-vdb.service"; +import { NotifierService } from "@dataservices/shared/notifier.service"; +import { VdbService } from "@dataservices/shared/vdb.service"; import { JdbcTableSelectorComponent } from "./jdbc-table-selector.component"; describe("JdbcTableSelectorComponent", () => { @@ -18,8 +23,10 @@ describe("JdbcTableSelectorComponent", () => { imports: [ FormsModule, HttpModule ], declarations: [ JdbcTableSelectorComponent, SelectedTableComponent ], providers: [ - AppSettingsService, LoggerService, + AppSettingsService, LoggerService, NotifierService, { provide: ConnectionService, useClass: MockConnectionService }, + { provide: DataserviceService, useClass: MockDataserviceService }, + { provide: VdbService, useClass: MockVdbService }, ] }) .compileComponents().then(() => { @@ -34,6 +41,7 @@ describe("JdbcTableSelectorComponent", () => { }); it("should be created", () => { + console.log("========== [JdbcTableSelectorComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.ts b/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.ts index 20c20343..1bca40ad 100644 --- a/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.ts +++ b/ngapp/src/app/dataservices/jdbc-table-selector/jdbc-table-selector.component.ts @@ -16,15 +16,16 @@ */ import { Component, OnInit } from "@angular/core"; +import { Input } from "@angular/core"; import { EventEmitter } from "@angular/core"; import { Output } from "@angular/core"; -import { Input } from "@angular/core"; import { Connection } from "@connections/shared/connection.model"; import { ConnectionService } from "@connections/shared/connection.service"; import { JdbcTableFilter } from "@connections/shared/jdbc-table-filter.model"; import { SchemaInfo } from "@connections/shared/schema-info.model"; import { LoggerService } from "@core/logger.service"; import { CatalogSchema } from "@dataservices/shared/catalog-schema.model"; +import { DataserviceService } from "@dataservices/shared/dataservice.service"; import { TableSelector } from "@dataservices/shared/table-selector"; import { Table } from "@dataservices/shared/table.model"; import { LoadingState } from "@shared/loading-state.enum"; @@ -38,18 +39,21 @@ import { LoadingState } from "@shared/loading-state.enum"; export class JdbcTableSelectorComponent implements OnInit, TableSelector { @Input() public connection: Connection; - @Output() public tableSelectionChanged: EventEmitter = new EventEmitter(); + @Output() public tableSelectionAdded: EventEmitter = new EventEmitter
(); + @Output() public tableSelectionRemoved: EventEmitter
= new EventEmitter
(); private connectionService: ConnectionService; + private dataserviceService: DataserviceService; private logger: LoggerService; private schemas: CatalogSchema[] = []; private tables: Table[] = []; - private selectedSchemas: CatalogSchema[] = []; + private currentSchema: CatalogSchema = null; private schemaLoadingState: LoadingState = LoadingState.LOADING; private tableLoadingState: LoadingState = LoadingState.LOADING; - constructor( connectionService: ConnectionService, logger: LoggerService ) { + constructor( connectionService: ConnectionService, dataserviceService: DataserviceService, logger: LoggerService ) { this.connectionService = connectionService; + this.dataserviceService = dataserviceService; this.logger = logger; } @@ -63,10 +67,11 @@ export class JdbcTableSelectorComponent implements OnInit, TableSelector { * @param {Connection} conn the jdbc connection */ public setConnection(conn: Connection): void { + this.clearSchemas(); + this.clearTables(); if (conn && conn.isJdbc()) { this.connection = conn; // Load the schema info for a connection - this.schemas = []; this.schemaLoadingState = LoadingState.LOADING; const self = this; this.connectionService @@ -82,25 +87,31 @@ export class JdbcTableSelectorComponent implements OnInit, TableSelector { } ); } else { - this.schemas = []; this.schemaLoadingState = LoadingState.LOADING; } } + public clearSchemas(): void { + this.schemas = []; + this.currentSchema = null; + } + + public clearTables(): void { + this.tables = []; + this.tableLoadingState = LoadingState.LOADING; + } + /* * Toggle the schema selection * @param {CatalogSchema} schema the schema that has been selected or deselected */ public toggleSchemaSelected(schema: CatalogSchema): void { if (this.isSchemaSelected(schema)) { - this.selectedSchemas.shift(); + this.currentSchema = null; // Deselection of schema clears tables this.tables = []; - this.selectedTablesChanged(); } else { - // Only allow one item to be selected - this.selectedSchemas.shift(); - this.selectedSchemas.push(schema); + this.currentSchema = schema; const filterInfo = new JdbcTableFilter(); filterInfo.setConnectionName(this.connection.getId()); filterInfo.setCatalogFilter(schema.getCatalogName()); @@ -115,7 +126,7 @@ export class JdbcTableSelectorComponent implements OnInit, TableSelector { * @param {CatalogSchema} schema the CatalogSchema to check */ public isSchemaSelected(schema: CatalogSchema): boolean { - return this.selectedSchemas.indexOf(schema) !== -1; + return schema === this.currentSchema; } /* @@ -123,7 +134,7 @@ export class JdbcTableSelectorComponent implements OnInit, TableSelector { * @returns {CatalogSchema} the selected schema */ public get selectedSchema( ): CatalogSchema { - return this.selectedSchemas[0]; + return this.currentSchema; } /* @@ -131,7 +142,7 @@ export class JdbcTableSelectorComponent implements OnInit, TableSelector { * @returns {CatalogSchema} the selected schema */ public get hasSelectedSchema( ): boolean { - return this.selectedSchemas.length > 0; + return this.currentSchema != null; } /** @@ -231,8 +242,12 @@ export class JdbcTableSelectorComponent implements OnInit, TableSelector { /* * Handler for changes in table selection */ - public selectedTablesChanged( ): void { - this.tableSelectionChanged.emit(); + public selectedTablesChanged(table: Table): void { + if (table.selected) { + this.tableSelectionAdded.emit(table); + } else { + this.tableSelectionRemoved.emit(table); + } } /* @@ -290,6 +305,8 @@ export class JdbcTableSelectorComponent implements OnInit, TableSelector { table.setSchemaName(self.selectedSchema.getName()); self.tables.push(table); } + // select any of the tables that are already selected + self.setInitialTableSelections(); self.tableLoadingState = LoadingState.LOADED_VALID; }, (error) => { @@ -299,4 +316,23 @@ export class JdbcTableSelectorComponent implements OnInit, TableSelector { ); } + private setInitialTableSelections(): void { + for ( const table of this.tables ) { + // const catName = table.getCatalogName(); + const schemaName = table.getSchemaName(); + const tableName = table.getName(); + const connName = table.getConnection().getId(); + for ( const initialTable of this.dataserviceService.getWizardSelectedTables() ) { + // const iCatName = initialTable.getCatalogName(); + const iSchemaName = initialTable.getSchemaName(); + const iTableName = initialTable.getName(); + const iConnName = initialTable.getConnection().getId(); + if (iConnName === connName && iTableName === tableName && iSchemaName === schemaName ) { + table.selected = true; + break; + } + } + } + } + } diff --git a/ngapp/src/app/dataservices/selected-table/selected-table.component.spec.ts b/ngapp/src/app/dataservices/selected-table/selected-table.component.spec.ts index c28990f2..be27c518 100644 --- a/ngapp/src/app/dataservices/selected-table/selected-table.component.spec.ts +++ b/ngapp/src/app/dataservices/selected-table/selected-table.component.spec.ts @@ -1,6 +1,6 @@ import { async, ComponentFixture, TestBed } from "@angular/core/testing"; -import { Connection } from "../../connections/shared/connection.model"; +import { Connection } from "@connections/shared/connection.model"; import { Table } from "../shared/table.model"; import { SelectedTableComponent } from "./selected-table.component"; diff --git a/ngapp/src/app/dataservices/selected-table/selected-table.component.ts b/ngapp/src/app/dataservices/selected-table/selected-table.component.ts index 83baf9d3..dba7d5c7 100644 --- a/ngapp/src/app/dataservices/selected-table/selected-table.component.ts +++ b/ngapp/src/app/dataservices/selected-table/selected-table.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from "@angular/core"; +import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; import { Table } from "@dataservices/shared/table.model"; @Component({ @@ -9,6 +9,7 @@ import { Table } from "@dataservices/shared/table.model"; export class SelectedTableComponent implements OnInit { @Input() public table: Table; + @Output() public selectionListTableRemoved: EventEmitter
= new EventEmitter
(); constructor() { // nothing to do @@ -20,5 +21,6 @@ export class SelectedTableComponent implements OnInit { public onRemove(): void { this.table.selected = false; + this.selectionListTableRemoved.emit(this.table); } } diff --git a/ngapp/src/app/dataservices/shared/dataservice.service.ts b/ngapp/src/app/dataservices/shared/dataservice.service.ts index a9ea03e6..d73f8950 100644 --- a/ngapp/src/app/dataservices/shared/dataservice.service.ts +++ b/ngapp/src/app/dataservices/shared/dataservice.service.ts @@ -51,10 +51,12 @@ export class DataserviceService extends ApiService { private http: Http; private notifierService: NotifierService; + private appSettingsService: AppSettingsService; private vdbService: VdbService; private selectedDataservice: Dataservice; private cachedDataserviceStates: Map = new Map(); private updatesSubscription: Subscription; + private wizardSelectedTablesArray: Table[] = []; constructor(http: Http, vdbService: VdbService, appSettings: AppSettingsService, notifierService: NotifierService, logger: LoggerService ) { @@ -62,6 +64,7 @@ export class DataserviceService extends ApiService { this.http = http; this.notifierService = notifierService; this.vdbService = vdbService; + this.appSettingsService = appSettings; // Polls to fire Dataservice state updates every minute this.pollDataserviceStatus(60); } @@ -86,7 +89,7 @@ export class DataserviceService extends ApiService { * Validates the specified data service name. If the name contains valid characters and the name is unique, the * service returns 'null'. Otherwise, a 'string' containing an error message is returned. * - * @param {string} dataserviceName + * @param {string} name the dataservice name * @returns {Observable} */ public isValidName( name: string ): Observable< string > { @@ -372,6 +375,77 @@ export class DataserviceService extends ApiService { }); } + /** + * Get the wizard table selections + * @returns {Table[]} the selections + */ + public getWizardSelectedTables( ): Table[] { + return this.wizardSelectedTablesArray; + } + + /** + * Clears the list of wizard table selections + */ + public clearWizardSelectedTables( ): void { + this.wizardSelectedTablesArray = []; + } + + /** + * Determine if the supplied table is one of the current selections in the wizard + * @param {Table} table the table + */ + public isWizardSelectedTable(table: Table): boolean { + return this.getWizardTableIndex(table) > -1; + } + + /** + * Add a table to the current wizard selections + * @param {Table} tableToAdd table to add + */ + public addToWizardSelectionTables(tableToAdd: Table): void { + if (!this.isWizardSelectedTable(tableToAdd)) { + this.wizardSelectedTablesArray.push(tableToAdd); + } + } + + /** + * Remove a table from the current wizard selections + * @param {Table} tableToRemove + * @returns {boolean} + */ + public removeFromWizardSelectionTables(tableToRemove: Table): boolean { + let wasRemoved = false; + + const index = this.getWizardTableIndex(tableToRemove); + if (index > -1) { + this.wizardSelectedTablesArray.splice(index, 1); + wasRemoved = true; + } + + return wasRemoved; + } + + /** + * Find index of the table in the wizard selected tables list. -1 if not found + * @param {Table} table + * @returns {number} + */ + private getWizardTableIndex(table: Table): number { + // supplied table and connection + const connName = table.getConnection().getId(); + const tableName = table.getName(); + let i = 0; + for (const wizTable of this.wizardSelectedTablesArray) { + const wizTableName = wizTable.getName(); + const wizConnName = wizTable.getConnection().getId(); + if (wizTableName === tableName && wizConnName === connName) { + return i; + } + i++; + } + return -1; + } + /* * Get updates for the provided array of Dataservices and broadcast the map of states * @param {Dataservice[]} services the array of Dataservices diff --git a/ngapp/src/app/dataservices/shared/mock-dataservice.service.ts b/ngapp/src/app/dataservices/shared/mock-dataservice.service.ts index 794991ec..431e1d86 100644 --- a/ngapp/src/app/dataservices/shared/mock-dataservice.service.ts +++ b/ngapp/src/app/dataservices/shared/mock-dataservice.service.ts @@ -16,7 +16,7 @@ */ import { Injectable } from "@angular/core"; -import { Http } from "@angular/http"; +import { Http, Response } from "@angular/http"; import { AppSettingsService } from "@core/app-settings.service"; import { LoggerService } from "@core/logger.service"; import { Dataservice } from "@dataservices/shared/dataservice.model"; @@ -29,6 +29,7 @@ import "rxjs/add/observable/throw"; import "rxjs/add/operator/catch"; import "rxjs/add/operator/map"; import { Observable } from "rxjs/Observable"; +import { ErrorObservable } from "rxjs/observable/ErrorObservable"; @Injectable() export class MockDataserviceService extends DataserviceService { @@ -104,4 +105,20 @@ export class MockDataserviceService extends DataserviceService { // Nothing to do } + /** + * Query a Dataservice via the komodo rest interface + * @param {string} query the SQL query + * @param {string} dataserviceName the dataservice name + * @param {number} limit the limit for the number of result rows + * @param {number} offset the offset for the result rows + * @returns {Observable} + */ + public queryDataservice(query: string, dataserviceName: string, limit: number, offset: number): Observable { + return Observable.of(); + } + + protected handleError(error: Response): ErrorObservable { + return Observable.throw(error); + } + } diff --git a/ngapp/src/app/dataservices/sql-control/sql-control.component.spec.ts b/ngapp/src/app/dataservices/sql-control/sql-control.component.spec.ts index 53d58283..e7d74c3c 100644 --- a/ngapp/src/app/dataservices/sql-control/sql-control.component.spec.ts +++ b/ngapp/src/app/dataservices/sql-control/sql-control.component.spec.ts @@ -41,6 +41,7 @@ describe("SqlControlComponent", () => { }); it("should be created", () => { + console.log("========== [SqlControlComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/dataservices/test-dataservice/test-dataservice.component.spec.ts b/ngapp/src/app/dataservices/test-dataservice/test-dataservice.component.spec.ts index 79f38acc..455c3104 100644 --- a/ngapp/src/app/dataservices/test-dataservice/test-dataservice.component.spec.ts +++ b/ngapp/src/app/dataservices/test-dataservice/test-dataservice.component.spec.ts @@ -39,6 +39,7 @@ describe("TestDataserviceComponent", () => { }); it("should be created", () => { + console.log("========== [TestDataserviceComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/shared/confirm-delete/confirm-delete.component.spec.ts b/ngapp/src/app/shared/confirm-delete/confirm-delete.component.spec.ts index 932c770b..9d7dedeb 100644 --- a/ngapp/src/app/shared/confirm-delete/confirm-delete.component.spec.ts +++ b/ngapp/src/app/shared/confirm-delete/confirm-delete.component.spec.ts @@ -23,6 +23,7 @@ describe("ConfirmDeleteComponent", () => { }); it("should be created", () => { + console.log("========== [ConfirmDeleteComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/shared/page-error/page-error.component.spec.ts b/ngapp/src/app/shared/page-error/page-error.component.spec.ts index a086b02c..9938b625 100644 --- a/ngapp/src/app/shared/page-error/page-error.component.spec.ts +++ b/ngapp/src/app/shared/page-error/page-error.component.spec.ts @@ -24,6 +24,7 @@ describe("PageErrorComponent", () => { }); it("should be created", () => { + console.log("========== [PageErrorComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/shared/page-not-found/page-not-found.component.spec.ts b/ngapp/src/app/shared/page-not-found/page-not-found.component.spec.ts index 078092d5..f2c135f3 100644 --- a/ngapp/src/app/shared/page-not-found/page-not-found.component.spec.ts +++ b/ngapp/src/app/shared/page-not-found/page-not-found.component.spec.ts @@ -21,6 +21,7 @@ describe("PageNotFoundComponent", () => { }); it("should be created", () => { + console.log("========== [PageNotFoundComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/app/shared/property-form/property-form.component.spec.ts b/ngapp/src/app/shared/property-form/property-form.component.spec.ts index 821dc23a..80233727 100644 --- a/ngapp/src/app/shared/property-form/property-form.component.spec.ts +++ b/ngapp/src/app/shared/property-form/property-form.component.spec.ts @@ -41,6 +41,7 @@ describe("PropertyFormComponent", () => { }); it("should be created", () => { + console.log("========== [PropertyFormComponent] should be created"); expect(component).toBeTruthy(); }); }); diff --git a/ngapp/src/styles.css b/ngapp/src/styles.css index 47262e20..bedc1662 100644 --- a/ngapp/src/styles.css +++ b/ngapp/src/styles.css @@ -57,5 +57,6 @@ } .datatable-body-row.active .datatable-row-group { - background-color: #39a5dc !important; + background-color: darkblue !important; + color: white; }