Skip to content
This repository has been archived by the owner on Nov 22, 2019. It is now read-only.

Commit

Permalink
Fix merge conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
elvisisking committed Oct 23, 2017
2 parents 5266524 + 328763c commit 07f92f8
Show file tree
Hide file tree
Showing 20 changed files with 366 additions and 112 deletions.
Expand Up @@ -31,7 +31,7 @@
//-ms-transition: background-color 300ms;
-o-transition: background-color 300ms;
transition: background-color 300ms;
height: 220px;
height: 160px;
}
.activity-card:hover {
background-color: rgb(237, 237, 237);
Expand Down
@@ -1,7 +1,7 @@
<div class="container-fluid container-cards-pf">
<div class="row row-cards-pf">

<div class="col-xs-12 col-sm-4 col-md-4" *ngFor="let activity of activities">
<div class="col-xs-12 col-sm-3 col-md-3" *ngFor="let activity of activities">
<div class="card-pf card-pf-accented card-pf-aggregate-status activity-card" [class.active]="isSelected(activity)" (click)="toggleActivitySelected(activity)">
<div class="card-pf-body">
<!-- title -->
Expand Down
@@ -1,4 +1,7 @@

.list-view-pf-main-info {
padding-bottom: 5px;
padding-top: 5px;
}
.list-group-item {
-webkit-transition: background-color 300ms;
-moz-transition: background-color 300ms;
Expand Down
4 changes: 2 additions & 2 deletions ngapp/src/app/activities/activities.component.html
Expand Up @@ -32,8 +32,8 @@ <h2 i18n="@@activities.Activities" >Activities</h2>
</div>
<div class="form-group toolbar-pf-view-selector">
<ul class="list-inline">
<li *ngIf="isListLayout"><a (click)="onCardLayout()"><i class="fa fa-th-list"></i></a></li>
<li *ngIf="isCardLayout"><a (click)="onListLayout()"><i class="fa fa-th"></i></a></li>
<li *ngIf="isListLayout"><a (click)="setCardLayout()"><i class="fa fa-th"></i></a></li>
<li *ngIf="isCardLayout"><a (click)="setListLayout()"><i class="fa fa-th-list"></i></a></li>
</ul>
</div>
</form>
Expand Down
83 changes: 81 additions & 2 deletions ngapp/src/app/activities/activities.component.spec.ts
@@ -1,9 +1,12 @@
import { ActivitiesCardsComponent } from "@activities/activities-cards/activities-cards.component";
import { ActivitiesListComponent } from "@activities/activities-list/activities-list.component";
import { ActivitiesComponent } from "@activities/activities.component";
import { ActivityService } from "@activities/shared/activity.service";
import { MockActivityService } from "@activities/shared/mock-activity.service";
import { async, ComponentFixture, TestBed } from "@angular/core/testing";
import { FormsModule } from "@angular/forms";
import { HttpModule } from "@angular/http";
import { By } from "@angular/platform-browser";
import { RouterTestingModule } from "@angular/router/testing";
import { CoreModule } from "@core/core.module";
import { SharedModule } from "@shared/shared.module";
Expand All @@ -15,8 +18,11 @@ describe("ActivitiesComponent", () => {

beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ CoreModule, FormsModule, HttpModule, ModalModule.forRoot(), RouterTestingModule, SharedModule ],
declarations: [ ActivitiesComponent, ActivitiesListComponent, ActivitiesCardsComponent ]
imports: [CoreModule, FormsModule, HttpModule, ModalModule.forRoot(), RouterTestingModule, SharedModule],
declarations: [ActivitiesComponent, ActivitiesListComponent, ActivitiesCardsComponent],
providers: [
{provide: ActivityService, useClass: MockActivityService}
]
})
.compileComponents().then(() => {
// nothing to do
Expand All @@ -32,4 +38,77 @@ describe("ActivitiesComponent", () => {
it("should be created", () => {
expect(component).toBeTruthy();
});

it("should have Activities Title", () => {
// query for the title <h2> by CSS element selector
const de = fixture.debugElement.query(By.css("h2"));
const el = de.nativeElement;
expect(el.textContent).toEqual("Activities");
});

it("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", () => {
// Check component object
const activities = component.allActivities;
expect(activities.length).toEqual(3);

// Check html has the same number of activity cards
const cardDebugElems = fixture.debugElement.queryAll(By.css(".activity-card-title"));
expect(cardDebugElems).toBeDefined();
expect(cardDebugElems.length).toEqual(3);
});

it("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;
expect(element).toBeDefined();

// app-activities-list should not be present
debugEl = fixture.debugElement.query(By.css("app-activities-list"));
expect(debugEl).toBeNull();
});

it("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"));
expect(cardDebugElem).toBeDefined();
expect(listDebugElem).toBeNull();
const cardElem = cardDebugElem.nativeElement;
expect(cardElem).toBeDefined();

// Change the layout to ListLayout
component.setListLayout();
fixture.detectChanges();

// Verify that the layout has changed
cardDebugElem = fixture.debugElement.query(By.css("app-activities-cards"));
listDebugElem = fixture.debugElement.query(By.css("app-activities-list"));
expect(cardDebugElem).toBeNull();
expect(listDebugElem).toBeDefined();
const listElem = listDebugElem.nativeElement;
expect(listElem).toBeDefined();
});

it("should filter activities", () => {
// Expect 3 activities initially.
let activities = component.filteredActivities;
expect(activities.length).toEqual(3);

// Set a name filter which satisfies none of the activities
component.nameFilter = "g";
component.filterActivities();
fixture.detectChanges();

// Now expect 0 activities match
activities = component.filteredActivities;
expect(activities.length).toEqual(0);
});

});
77 changes: 54 additions & 23 deletions ngapp/src/app/activities/activities.component.ts
Expand Up @@ -42,15 +42,15 @@ export class ActivitiesComponent extends AbstractPageComponent {

public readonly addActivityLink = ActivitiesConstants.addActivityPath;

private allActivities: Activity[] = [];
private filteredActivities: Activity[] = [];
private selectedActivities: Activity[] = [];
private allActs: Activity[] = [];
private filteredActs: Activity[] = [];
private selectedActs: Activity[] = [];
private activityNameForDelete: string;
private router: Router;
private activityService: ActivityService;
private filter: IdFilter = new IdFilter();
private layout: LayoutType = LayoutType.CARD;
private sortDirection: SortDirection;
private sortDirection: SortDirection = SortDirection.ASC;

@ViewChild(ConfirmDeleteComponent) private confirmDeleteDialog: ConfirmDeleteComponent;

Expand All @@ -62,20 +62,20 @@ export class ActivitiesComponent extends AbstractPageComponent {
}

public loadAsyncPageData(): void {
this.allActivities = this.activityService.getAllActivities();
this.filteredActivities = this.filterActivities();
this.allActs = this.activityService.getAllActivities();
this.filteredActs = this.filterActivities();
this.loaded("activities");
}

public onSelected(activity: Activity): void {
// Only allow one item to be selected
this.selectedActivities.shift();
this.selectedActivities.push(activity);
this.selectedActs.shift();
this.selectedActs.push(activity);
}

public onDeselected(activity: Activity): void {
// Only one item is selected at a time
this.selectedActivities.shift();
this.selectedActs.shift();
// this.selectedConnections.splice(this.selectedConnections.indexOf(connection), 1);
}

Expand All @@ -96,7 +96,18 @@ export class ActivitiesComponent extends AbstractPageComponent {
}

public isFiltered(): boolean {
return this.allActivities.length !== this.filteredActivities.length;
return this.allActs.length !== this.filteredActs.length;
}

public get nameFilter(): string {
return this.filter.getPattern();
}

/**
* @param {string} pattern the new pattern for the connection name filter (can be null or empty)
*/
public set nameFilter( pattern: string ) {
this.filter.setFilter( pattern );
}

public toggleSortDirection(): void {
Expand Down Expand Up @@ -142,17 +153,37 @@ export class ActivitiesComponent extends AbstractPageComponent {
}

/**
* @returns {string} the pattern the activity names are being matched to (can be null or empty)
* @returns {Activity[]} the array of all activities
*/
public get nameFilter(): string {
return this.filter.getPattern();
public get allActivities(): Activity[] {
return this.allActs;
}

/**
* @returns {Activity[]} the array of filtered activities
*/
public get filteredActivities(): Activity[] {
return this.filteredActs;
}

public onListLayout(): void {
/**
* @returns {Activity[]} the array of selected activities
*/
public get selectedActivities(): Activity[] {
return this.selectedActs;
}

/**
* Set the layout type to LIST
*/
public setListLayout(): void {
this.layout = LayoutType.LIST;
}

public onCardLayout(): void {
/**
* Set the layout type to CARD
*/
public setCardLayout(): void {
this.layout = LayoutType.CARD;
}

Expand Down Expand Up @@ -185,29 +216,29 @@ export class ActivitiesComponent extends AbstractPageComponent {
/**
* Filters and sorts the list of activities based on the user input
*/
private filterActivities(): Activity[] {
public filterActivities(): Activity[] {
// Clear the array first.
this.filteredActivities.splice(0, this.filteredActivities.length);
for (const activity of this.allActivities) {
this.filteredActs.splice(0, this.filteredActs.length);
for (const activity of this.allActs) {
if (this.filter.accepts(activity)) {
this.filteredActivities.push(activity);
this.filteredActs.push(activity);
}
}
this.filteredActivities.sort( (a1: Activity, a2: Activity) => {
this.filteredActs.sort( (a1: Activity, a2: Activity) => {
let rval: number = a1.getId().localeCompare(a2.getId());
if (this.sortDirection === SortDirection.DESC) {
rval *= -1;
}
return rval;
});

this.selectedActivities = ArrayUtils.intersect(this.selectedActivities, this.filteredActivities);
this.selectedActs = ArrayUtils.intersect(this.selectedActs, this.filteredActs);

return this.filteredActivities;
return this.filteredActs;
}

private removeActivityFromList(activity: Activity): void {
this.allActivities.splice(this.allActivities.indexOf(activity), 1);
this.allActs.splice(this.allActs.indexOf(activity), 1);
this.filterActivities();
}
}
48 changes: 24 additions & 24 deletions ngapp/src/app/activities/shared/mock-activity.service.ts
@@ -1,55 +1,55 @@
import { Activity } from "@activities/shared/activity.model";
import { ActivityService } from "@activities/shared/activity.service";
import { NewActivity } from "@activities/shared/new-activity.model";
import { Injectable } from "@angular/core";
import { Http } from "@angular/http";
import { Connection } from "@connections/shared/connection.model";
import { NewConnection } from "@connections/shared/new-connection.model";
import { LoggerService } from "@core/logger.service";
import "rxjs/add/observable/of";
import "rxjs/add/observable/throw";
import "rxjs/add/operator/catch";
import "rxjs/add/operator/map";

@Injectable()
export class MockActivityService {
export class MockActivityService extends ActivityService {

private activity1 = new Activity();
private activity2 = new Activity();
private activity3 = new Activity();
private activities: Activity[] = [this.activity1, this.activity2, this.activity3];
private newActivity1 = new NewActivity();
private act1 = new Activity();
private act2 = new Activity();
private act3 = new Activity();
private acts: Activity[] = [this.act1, this.act2, this.act3];
private newAct1 = new NewActivity();

private newConnection = new NewConnection();
private conn1 = new Connection();
private conn2 = new Connection();
private conn3 = new Connection();
private conns: Connection[] = [this.conn1, this.conn2, this.conn3];

private http: Http;

constructor( http: Http ) {
this.http = http;
this.activity1.setId("activity1");
this.activity1.setSourceConnection("activity1SrcConn");
this.activity1.setTargetConnection("activity1TgtConn");
this.activity2.setId("activity2");
this.activity2.setSourceConnection("activity2SrcConn");
this.activity2.setTargetConnection("activity2TgtConn");
this.activity3.setId("activity3");
this.activity3.setSourceConnection("activity3SrcConn");
this.activity3.setTargetConnection("activity3TgtConn");
this.newActivity1.setName("newActivity1");
constructor( http: Http, logger: LoggerService ) {
super(http, logger);
this.act1.setId("activity1");
this.act1.setSourceConnection("activity1SrcConn");
this.act1.setTargetConnection("activity1TgtConn");
this.act2.setId("activity2");
this.act2.setSourceConnection("activity2SrcConn");
this.act2.setTargetConnection("activity2TgtConn");
this.act3.setId("activity3");
this.act3.setSourceConnection("activity3SrcConn");
this.act3.setTargetConnection("activity3TgtConn");
this.newAct1.setName("newActivity1");
const srcConn = new NewConnection();
srcConn.setName("new1Src");
srcConn.setJndiName("new1SrcJndi");
srcConn.setDriverName("new1SrcDriver");
srcConn.setJdbc(true);
this.newActivity1.setSourceConnection(srcConn);
this.newAct1.setSourceConnection(srcConn);
const tgtConn = new NewConnection();
tgtConn.setName("new1Tgt");
tgtConn.setJndiName("new1TgtJndi");
tgtConn.setDriverName("new1TgtDriver");
tgtConn.setJdbc(false);
this.newActivity1.setTargetConnection(tgtConn);
this.newAct1.setTargetConnection(tgtConn);

}

Expand All @@ -58,7 +58,7 @@ export class MockActivityService {
* @returns {Activity[]}
*/
public getAllActivities(): Activity[] {
return this.activities;
return this.acts;
}

/**
Expand All @@ -67,7 +67,7 @@ export class MockActivityService {
* @returns {Activity}
*/
public createActivity(activity: NewActivity): NewActivity {
return this.newActivity1;
return this.newAct1;
}

/**
Expand Down

0 comments on commit 07f92f8

Please sign in to comment.