Skip to content

Commit de4fbd6

Browse files
committed
Merge branch 'master' of https://github.com/ioet/time-tracker-ui into TimeClock-find-project-#3
2 parents f4b586c + 66df92d commit de4fbd6

File tree

55 files changed

+487
-155
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+487
-155
lines changed

angular.json

Lines changed: 132 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,130 +1,138 @@
11
{
2-
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3-
"version": 1,
4-
"newProjectRoot": "projects",
5-
"projects": {
6-
"time-tracker": {
7-
"projectType": "application",
8-
"schematics": {},
9-
"root": "",
10-
"sourceRoot": "src",
11-
"prefix": "app",
12-
"architect": {
13-
"build": {
14-
"builder": "@angular-devkit/build-angular:browser",
15-
"options": {
16-
"outputPath": "dist/time-tracker",
17-
"index": "src/index.html",
18-
"main": "src/main.ts",
19-
"polyfills": "src/polyfills.ts",
20-
"tsConfig": "tsconfig.app.json",
21-
"aot": true,
22-
"assets": [
23-
"src/favicon.ico",
24-
"src/assets"
25-
],
26-
"styles": [
27-
"./node_modules/bootstrap/dist/css/bootstrap.min.css",
28-
"src/styles.css"
29-
],
30-
"scripts": [
31-
"./node_modules/jquery/dist/jquery.min.js",
32-
"./node_modules/bootstrap/dist/js/bootstrap.min.js"
33-
]
34-
},
35-
"configurations": {
36-
"production": {
37-
"fileReplacements": [{
38-
"replace": "src/environments/environment.ts",
39-
"with": "src/environments/environment.prod.ts"
40-
}],
41-
"optimization": true,
42-
"outputHashing": "all",
43-
"sourceMap": false,
44-
"extractCss": true,
45-
"namedChunks": false,
46-
"extractLicenses": true,
47-
"vendorChunk": false,
48-
"buildOptimizer": true,
49-
"budgets": [{
50-
"type": "initial",
51-
"maximumWarning": "2mb",
52-
"maximumError": "5mb"
53-
},
54-
{
55-
"type": "anyComponentStyle",
56-
"maximumWarning": "6kb",
57-
"maximumError": "10kb"
58-
}
59-
]
60-
}
61-
}
62-
},
63-
"serve": {
64-
"builder": "@angular-devkit/build-angular:dev-server",
65-
"options": {
66-
"browserTarget": "time-tracker:build"
67-
},
68-
"configurations": {
69-
"production": {
70-
"browserTarget": "time-tracker:build:production"
71-
}
72-
}
73-
},
74-
"extract-i18n": {
75-
"builder": "@angular-devkit/build-angular:extract-i18n",
76-
"options": {
77-
"browserTarget": "time-tracker:build"
78-
}
79-
},
80-
"test": {
81-
"builder": "@angular-devkit/build-angular:karma",
82-
"options": {
83-
"main": "src/test.ts",
84-
"polyfills": "src/polyfills.ts",
85-
"tsConfig": "tsconfig.spec.json",
86-
"karmaConfig": "karma.conf.js",
87-
"codeCoverage": true,
88-
"assets": [
89-
"src/favicon.ico",
90-
"src/assets"
91-
],
92-
"styles": [
93-
"src/styles.css"
94-
],
95-
"scripts": []
96-
}
97-
},
98-
"lint": {
99-
"builder": "@angular-devkit/build-angular:tslint",
100-
"options": {
101-
"tsConfig": [
102-
"tsconfig.app.json",
103-
"tsconfig.spec.json",
104-
"e2e/tsconfig.json"
105-
],
106-
"exclude": [
107-
"**/node_modules/**"
108-
]
109-
}
2+
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3+
"version": 1,
4+
"newProjectRoot": "projects",
5+
"projects": {
6+
"time-tracker": {
7+
"projectType": "application",
8+
"schematics": {},
9+
"root": "",
10+
"sourceRoot": "src",
11+
"prefix": "app",
12+
"architect": {
13+
"build": {
14+
"builder": "@angular-devkit/build-angular:browser",
15+
"options": {
16+
"outputPath": "dist/time-tracker",
17+
"index": "src/index.html",
18+
"main": "src/main.ts",
19+
"polyfills": "src/polyfills.ts",
20+
"tsConfig": "tsconfig.app.json",
21+
"aot": true,
22+
"assets": [
23+
"src/favicon.ico",
24+
"src/assets"
25+
],
26+
"styles": [
27+
"./node_modules/bootstrap/dist/css/bootstrap.min.css",
28+
"src/styles.scss"
29+
],
30+
"scripts": [
31+
"./node_modules/jquery/dist/jquery.min.js",
32+
"./node_modules/bootstrap/dist/js/bootstrap.min.js"
33+
]
34+
},
35+
"configurations": {
36+
"production": {
37+
"fileReplacements": [
38+
{
39+
"replace": "src/environments/environment.ts",
40+
"with": "src/environments/environment.prod.ts"
41+
}
42+
],
43+
"optimization": true,
44+
"outputHashing": "all",
45+
"sourceMap": false,
46+
"extractCss": true,
47+
"namedChunks": false,
48+
"extractLicenses": true,
49+
"vendorChunk": false,
50+
"buildOptimizer": true,
51+
"budgets": [
52+
{
53+
"type": "initial",
54+
"maximumWarning": "2mb",
55+
"maximumError": "5mb"
11056
},
111-
"e2e": {
112-
"builder": "@angular-devkit/build-angular:protractor",
113-
"options": {
114-
"protractorConfig": "e2e/protractor.conf.js",
115-
"devServerTarget": "time-tracker:serve"
116-
},
117-
"configurations": {
118-
"production": {
119-
"devServerTarget": "time-tracker:serve:production"
120-
}
121-
}
57+
{
58+
"type": "anyComponentStyle",
59+
"maximumWarning": "6kb",
60+
"maximumError": "10kb"
12261
}
62+
]
63+
}
64+
}
65+
},
66+
"serve": {
67+
"builder": "@angular-devkit/build-angular:dev-server",
68+
"options": {
69+
"browserTarget": "time-tracker:build"
70+
},
71+
"configurations": {
72+
"production": {
73+
"browserTarget": "time-tracker:build:production"
12374
}
75+
}
76+
},
77+
"extract-i18n": {
78+
"builder": "@angular-devkit/build-angular:extract-i18n",
79+
"options": {
80+
"browserTarget": "time-tracker:build"
81+
}
82+
},
83+
"test": {
84+
"builder": "@angular-devkit/build-angular:karma",
85+
"options": {
86+
"main": "src/test.ts",
87+
"polyfills": "src/polyfills.ts",
88+
"tsConfig": "tsconfig.spec.json",
89+
"karmaConfig": "karma.conf.js",
90+
"codeCoverage": true,
91+
"assets": [
92+
"src/favicon.ico",
93+
"src/assets"
94+
],
95+
"styles": [
96+
"src/styles.scss"
97+
],
98+
"scripts": []
99+
}
100+
},
101+
"lint": {
102+
"builder": "@angular-devkit/build-angular:tslint",
103+
"options": {
104+
"tsConfig": [
105+
"tsconfig.app.json",
106+
"tsconfig.spec.json",
107+
"e2e/tsconfig.json"
108+
],
109+
"exclude": [
110+
"**/node_modules/**"
111+
]
112+
}
113+
},
114+
"e2e": {
115+
"builder": "@angular-devkit/build-angular:protractor",
116+
"options": {
117+
"protractorConfig": "e2e/protractor.conf.js",
118+
"devServerTarget": "time-tracker:serve"
119+
},
120+
"configurations": {
121+
"production": {
122+
"devServerTarget": "time-tracker:serve:production"
123+
}
124+
}
124125
}
125-
},
126-
"defaultProject": "time-tracker",
127-
"cli": {
128-
"analytics": false
126+
}
127+
}
128+
},
129+
"defaultProject": "time-tracker",
130+
"cli": {
131+
"analytics": false
132+
},
133+
"schematics": {
134+
"@schematics/angular:component": {
135+
"styleext": "scss"
129136
}
130-
}
137+
}
138+
}

src/app/app-routing.module.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// tslint:disable-next-line:max-line-length
2+
import { ActivitiesManagementComponent } from './components/options-sidebar/activities/activities-management/activities-management.component';
13
import { NgModule } from '@angular/core';
24
import { Routes, RouterModule } from '@angular/router';
35
import { ReportsComponent } from './components/options-sidebar/reports/reports.component';
@@ -10,6 +12,7 @@ const routes: Routes = [
1012
{path: 'time-clock', component: TimeClockComponent},
1113
{path: 'time-entries', component: TimeEntriesComponent},
1214
{path: 'project-management', component: ProjectManagementComponent},
15+
{path: 'activities-management', component: ActivitiesManagementComponent},
1316
{path: '', pathMatch: 'full', redirectTo: 'time-clock'},
1417
{path: '**', pathMatch: 'full', redirectTo: 'time-clock'},
1518
];

src/app/app.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Component } from '@angular/core';
33
@Component({
44
selector: 'app-root',
55
templateUrl: './app.component.html',
6-
styleUrls: ['./app.component.css']
6+
styleUrls: ['./app.component.scss']
77
})
88
export class AppComponent {
99
title = 'time-tracker';

src/app/app.module.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { ActivityListComponent } from './components/options-sidebar/activities/activity-list/activity-list.component';
2+
import { CreateActivityComponent } from './components/options-sidebar/activities/create-activity/create-activity.component';
13
import { CommonModule } from '@angular/common';
24
import { BrowserModule } from '@angular/platform-browser';
35
import { NgModule } from '@angular/core';
@@ -23,7 +25,8 @@ import { EmptyStateComponent } from './components/shared/empty-state/empty-state
2325
import { GroupByDatePipe } from './components/shared/pipes/group-by-date/group-by-date.pipe';
2426
import { SearchProjectComponent } from './components/shared/search-project/search-project.component';
2527
import { FilterProjectPipe } from './components/shared/pipes/filter-project/filter-project.pipe';
26-
28+
// tslint:disable-next-line:max-line-length
29+
import { ActivitiesManagementComponent } from './components/options-sidebar/activities/activities-management/activities-management.component';
2730

2831
@NgModule({
2932
declarations: [
@@ -46,6 +49,9 @@ import { FilterProjectPipe } from './components/shared/pipes/filter-project/filt
4649
GroupByDatePipe,
4750
SearchProjectComponent,
4851
FilterProjectPipe
52+
ActivitiesManagementComponent,
53+
CreateActivityComponent,
54+
ActivityListComponent
4955
],
5056
imports: [
5157
CommonModule,
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
.parent {
2+
display: flex;
3+
}
4+
5+
.item {
6+
width: 50%;
7+
margin: 2em;
8+
min-height: 500px;
9+
max-height: 500px;
10+
}
11+
12+
@media screen and (max-width: 600px){
13+
.parent {
14+
flex-direction: column-reverse;
15+
}
16+
17+
.item {
18+
width: auto;
19+
min-height: 200px;
20+
}
21+
}
22+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<div class="parent">
2+
<app-create-activity class="item">
3+
</app-create-activity>
4+
5+
<app-activity-list [activities]="activities" class="item">
6+
</app-activity-list>
7+
</div>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { HttpClient, HttpHandler } from '@angular/common/http';
2+
import { Activity } from './../model/activity';
3+
import { of } from 'rxjs';
4+
import { ActivityService } from './../services/activity.service';
5+
import { async, TestBed } from '@angular/core/testing';
6+
7+
import { ActivitiesManagementComponent } from './activities-management.component';
8+
9+
describe('ActivitiesManagementComponent', () => {
10+
let component: ActivitiesManagementComponent;
11+
let activityService: ActivityService;
12+
const activitiesFromApi: Activity[] = [{id: '123', name: 'aaa', description: 'xxx'}];
13+
14+
beforeEach(async(() => {
15+
TestBed.configureTestingModule({
16+
declarations: [ ActivitiesManagementComponent],
17+
providers: [ ActivityService, HttpClient, HttpHandler ]
18+
});
19+
component = TestBed.createComponent(ActivitiesManagementComponent).componentInstance;
20+
activityService = TestBed.get(ActivityService);
21+
spyOn(activityService, 'getActivities').and.returnValue(of(activitiesFromApi));
22+
}));
23+
24+
it('should create the component', () => {
25+
expect(component).toBeTruthy();
26+
});
27+
28+
it('should load activities', () => {
29+
component.ngOnInit();
30+
expect(component.activities).toBe(activitiesFromApi);
31+
});
32+
});
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { Activity } from './../model/activity';
2+
import { ActivityService } from './../services/activity.service';
3+
import { Component, OnInit } from '@angular/core';
4+
5+
@Component({
6+
selector: 'app-activities-management',
7+
templateUrl: './activities-management.component.html',
8+
styleUrls: ['./activities-management.component.css']
9+
})
10+
export class ActivitiesManagementComponent implements OnInit {
11+
12+
constructor(private activityService: ActivityService) { }
13+
14+
activities: Activity[];
15+
16+
ngOnInit(): void {
17+
this.activityService.getActivities().subscribe( data => this.activities = data );
18+
}
19+
}

src/app/components/options-sidebar/reports/reports.component.css renamed to src/app/components/options-sidebar/activities/activity-list/activity-list.component.css

File renamed without changes.

0 commit comments

Comments
 (0)