Skip to content
6 changes: 4 additions & 2 deletions src/app/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ import { ModalComponent } from './components/shared/modal/modal.component';
import { MonthPickerComponent } from './components/shared/month-picker/month-picker.component';
import { EmptyStateComponent } from './components/shared/empty-state/empty-state.component';
import { GroupByDatePipe } from './components/shared/pipes/group-by-date/group-by-date.pipe';
// tslint:disable-next-line:max-line-length
import { SearchProjectComponent } from './components/shared/search-project/search-project.component';
import { FilterProjectPipe } from './components/shared/pipes/filter-project/filter-project.pipe';
import { ActivitiesManagementComponent } from './components/options-sidebar/activities/activities-management/activities-management.component';


@NgModule({
declarations: [
AppComponent,
Expand All @@ -46,6 +46,8 @@ import { ActivitiesManagementComponent } from './components/options-sidebar/acti
MonthPickerComponent,
EmptyStateComponent,
GroupByDatePipe,
SearchProjectComponent,
FilterProjectPipe,
ActivitiesManagementComponent,
CreateActivityComponent,
ActivityListComponent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,4 @@ describe('CreateActivityComponent', () => {
it('should create the component', () => {
expect(component).toBeTruthy();
});

});
Original file line number Diff line number Diff line change
@@ -1,17 +1,7 @@
<div class="parent">

<app-create-project class="item"
[projectToEdit] = "project"
(savedProject)="updateProject($event)"
(cancelForm) = "cancelForm()"
>
</app-create-project>

<app-project-list class="item"
[projects] = "projects"
(editProject) = "editProject($event)"
(deleteProject) = "deleteProject($event)"
>
</app-project-list>
</div>
<app-create-project class="item" [projectToEdit]="project" (savedProject)="updateProject($event)" (cancelForm)="cancelForm()">
</app-create-project>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please, fix the indentation, remember that we are using an indentation based in 2 spaces.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


<app-project-list class="item" [projects]="projects" (editProject)="editProject($event)" (deleteProject)="deleteProject($event)">
</app-project-list>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { ProjectService } from '../../../services/project.service';
import { of } from 'rxjs';
import { CreateProjectComponent } from '../../../components/shared/create-project/create-project.component';
import { ProjectListComponent } from '../../../components/shared/project-list/project-list.component';
import { FilterProjectPipe } from 'src/app/components/shared/pipes/filter-project/filter-project.pipe';

describe('ProjectManagementComponent', () => {
let component: ProjectManagementComponent;
Expand Down Expand Up @@ -45,7 +46,7 @@ describe('ProjectManagementComponent', () => {

beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ProjectManagementComponent, CreateProjectComponent, ProjectListComponent ],
declarations: [ ProjectManagementComponent, CreateProjectComponent, ProjectListComponent, FilterProjectPipe ],
providers: [ { provide: ProjectService, useValue: projectServiceStub }],
imports: [
FormsModule,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,89 +1,79 @@
<div class="text-center mt-3">

<div *ngIf="showAlertEnterTecnology" class="alert alert-danger" role="alert">
Field technology is requiered. Enter this field for clock out.
</div>

<div class="card">
<div class="card-header">
<div class="row">
<div class="col-2 text-left">
<strong>Time clock</strong>
</div>
<div class="col-10 text-right">
<i class="far fa-question-circle"></i>
<div class="text-center mt-5">
<div class="card">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please, fix the indentation, remember that we are using an indentation based in 2 spaces.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

<div class="card-header">
<div class="row">
<div class="col-2 text-left">
<strong>Time clock</strong>
</div>
<div class="col-10 text-right">
<i class="far fa-question-circle"></i>
</div>
</div>
</div>
</div>
</div>

<div class="card-body">
<p *ngIf="!isClockIn" class="card-title text-left"><strong>{{ username }}</strong> clocked <strong class="text-success">in</strong> at <strong>{{ hour | number: '2.0-2' }}:{{ minute | number: '2.0-2' }}:{{ seconds | number: '2.0-2' }}</strong></p>
<p *ngIf="isClockIn" class="card-title text-left"><strong>{{ username }}</strong> clocked <strong class="text-danger">out</strong> at <strong>{{ hour | number: '2.0-2' }}:{{ minute | number: '2.0-2' }}:{{ seconds | number: '2.0-2' }}</strong></p>
<h6 class="text-left"><strong>Totals</strong></h6>
<hr>
<div class="row">
<div class="col-4">
<h6>Current</h6>
<h3>{{ hour | number: '2.0-2' }}:{{ minute | number: '2.0-2' }}:{{ seconds | number: '2.0-2' }}</h3>
</div>
<div class="col-4">
<h6>Day</h6>
<h3>4:22</h3>
</div>
<div class="col-4">
<h6>Week</h6>
<h3>14:00</h3>
</div>
</div>
<h6 class="text-left"><strong>Projects</strong></h6>
<form>
<div class="form-group">
<input type="text" class="form-control" id="formGroupExampleInput" placeholder="&#xF002; Search project"
style="font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif, FontAwesome">
</div>
</form>
<p class="text-left"><i class="fas fa-folder"></i><strong> Top</strong></p>
<ul class="list-group">
<app-project-list-hover [projects]="projects" (showFields)="setShowFields($event)"></app-project-list-hover>
</ul>
<br>
<form *ngIf="!isClockIn || showFields">
<div class="form-group row">
<label for="inputActivity" class="col-sm-2 col-form-label text-center"><strong>Activity</strong></label>
<div class="col-sm-10">
<input type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="inputJiraTicket" class="col-sm-2 col-form-label text-center"><strong>Jira Ticket</strong></label>
<div class="col-sm-10">
<input type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="inputTechnology" class="col-sm-2 col-form-label text-center"><strong>Technology</strong></label>
<div class="col-sm-10">
<input #data type="text" (keyup)="enterTechnology(data.value)" class="form-control">
</div>
</div>
</form>
<hr>
<div class="container">
<div class="row">
<div class="col text-left">
<button class="btn btn-light btn-sm dropdown-toggle" type="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
Options
</button>
</div>
<div class="col text-right">
<button *ngIf="isClockIn" class="btn btn-success btn-sm" type="button" (click)="employeClockIn()">Clock
In</button>
<button *ngIf="!isClockIn" class="btn btn-danger btn-sm" type="button" (click)="employeClockOut()">Clock
Out</button>
</div>
<div class="card-body">
<p *ngIf="!isClockIn" class="card-title text-left"><strong>{{ username }}</strong> clocked <strong class="text-success">in</strong> at <strong>{{ hour | number: '2.0-2' }}:{{ minute | number: '2.0-2' }}:{{ seconds | number: '2.0-2' }}</strong></p>
<p *ngIf="isClockIn" class="card-title text-left"><strong>{{ username }}</strong> clocked <strong class="text-danger">out</strong> at <strong>{{ hour | number: '2.0-2' }}:{{ minute | number: '2.0-2' }}:{{ seconds | number: '2.0-2' }}</strong></p>
<h6 class="text-left"><strong>Totals</strong></h6>
<hr>
<div class="row">
<div class="col-4">
<h6>Current</h6>
<h3>{{ hourCounterRealTime | number: '2.0-2' }}:{{ minuteCounterRealTime | number: '2.0-2' }}:{{ secondsCounterRealTime | number: '2.0-2' }}</h3>
</div>
<div class="col-4">
<h6>Day</h6>
<h3>00:00</h3>
</div>
<div class="col-4">
<h6>Week</h6>
<h3>00:00</h3>
</div>
</div>
<h6 class="text-left"><strong>Projects</strong></h6>
<p class="text-left"><i class="fas fa-folder"></i><strong> Top</strong></p>
<ul class="list-group">
<app-project-list-hover [projects]="projects" (showFields)="setShowFields($event)"></app-project-list-hover>
</ul>
<br>
<form *ngIf="(!isClockIn || showFields) && !isHidenForm">
<div class="form-group row">
<label for="inputActivity" class="col-sm-2 col-form-label text-center"><strong>Activity</strong></label>
<div class="col-sm-10">
<input type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="inputJiraTicket" class="col-sm-2 col-form-label text-center"><strong>Jira Ticket</strong></label>
<div class="col-sm-10">
<input type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="inputTechnology" class="col-sm-2 col-form-label text-center"><strong>Technology</strong></label>
<div class="col-sm-10">
<input *ngIf="!showAlertEnterTecnology" #data type="text" (keyup)="enterTechnology(data.value)" class="form-control">
<input *ngIf="showAlertEnterTecnology" #data type="text" (keyup)="enterTechnology(data.value)" class="form-control border-danger">
<div>
<h6 *ngIf="showAlertEnterTecnology" class="text-danger text-left">Technology field is required. Enter this field to clock out.</h6>
</div>
</div>
</div>
</form>
<hr>
<div class="container">
<div class="row">
<div class="col text-left" id="optionsContainer">
<button class="btn btn-light btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Options
</button>
</div>
<div class="col text-right" id="clockInOutContainer">
<button *ngIf="isClockIn" class="btn btn-success btn-sm" type="button" (click)="employeClockIn()">Clock In</button>
<button *ngIf="!isClockIn" class="btn btn-danger btn-sm" type="button" (click)="employeClockOut()">Clock Out</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { By } from '@angular/platform-browser';
import { DebugElement, Component } from '@angular/core';
import { TimeClockComponent } from './time-clock.component';
import { ProjectListHoverComponent } from '../../shared/project-list-hover/project-list-hover.component';
import { FilterProjectPipe } from 'src/app/components/shared/pipes/filter-project/filter-project.pipe';

describe('TimeClockComponent', () => {
let component: TimeClockComponent;
Expand All @@ -11,7 +12,7 @@ describe('TimeClockComponent', () => {

beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [TimeClockComponent, ProjectListHoverComponent]
declarations: [TimeClockComponent, ProjectListHoverComponent, FilterProjectPipe]
}).compileComponents();
}));

Expand Down Expand Up @@ -197,6 +198,13 @@ describe('TimeClockComponent', () => {
expect(component.secondsCounterRealTime).not.toEqual(0);
});

it('inside timer first if' , () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand what this test is doing?
Could you please explain what are you testing here?

component.secondsCounterRealTime = component.secondsCounterRealTime + 58;
component.timer();
expect(component.minuteCounterRealTime).toEqual(1);
expect(component.secondsCounterRealTime).toEqual(0);
});

/* ---------------------- ARRIVALS ------------------------------------- */
it('should execute intern methods of arrivals' , () => {
const currentDate = new Date();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,9 @@ export class TimeClockComponent implements OnInit {
timer() {
this.secondsCounterRealTime += 1;
if ( this.secondsCounterRealTime === 59 ) {
this.minuteCounterRealTime += 1;
this.secondsCounterRealTime = 0;
console.log('entroooo');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove console log please.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

this.minuteCounterRealTime += 1; //1
this.secondsCounterRealTime = 0; //0
if ( this.minuteCounterRealTime === 59 ) {
this.hourCounterRealTime += 1;
this.minuteCounterRealTime = 0;
Expand Down
14 changes: 14 additions & 0 deletions src/app/components/shared/clock/clock.component.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,18 @@ describe('ClockComponent', () => {
expect(component.showClock).toHaveBeenCalled();
});

it('should be verify the init state of vars' , () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what are you testing here?

expect(component.hour).toEqual(0);
expect(component.minutes).toEqual(0);
expect(component.seconds).toEqual(0);
expect(component.displayTime).toBeFalsy();
});

it('should enter if and assign the value to vars' , () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what are you testing here?

component.showClock();
expect(component.hour).toEqual(0);
expect(component.minutes).toEqual(0);
expect(component.seconds).toEqual(0);
});

});
3 changes: 3 additions & 0 deletions src/app/components/shared/clock/clock.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ export class ClockComponent implements OnInit {
constructor() {
this.showClock();
this.displayTime = false;
this.hour = 0;
this.minutes = 0;
this.seconds = 0;
setTimeout(() => {
this.displayTime = true;
}, 3000);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { FilterProjectPipe } from './filter-project.pipe';
import { Project } from '../../../../interfaces/project';

describe('FilterProjectPipe', () => {
it('create an instance', () => {
const pipe = new FilterProjectPipe();
expect(pipe).toBeTruthy();
});

it('test method of pipe', () => {
expect(new FilterProjectPipe().transform([] , '')).toEqual([]);
});

});
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { Pipe, PipeTransform } from '@angular/core';
import { Project } from 'src/app/interfaces';

@Pipe({
name: 'filterProject'
})
export class FilterProjectPipe implements PipeTransform {

transform(value: Project[] = [], arg: string): string[] {

const restultProjects = [];
// tslint:disable-next-line: prefer-for-of
for ( let i = 0; i < value.length; i++ ) {
if ( value[i].name.toLowerCase().indexOf(arg.toLowerCase()) > -1 ) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This if statement should be tested since this is the logic we want to make sure it's working.

restultProjects.push(value[i]);
}
}
return restultProjects;
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,9 @@
<app-search-project (changeFilterProject)="filterProjects = $event"></app-search-project>
<ul class="list-group content-projects">
<li
class="list-group-item list-group-item-action d-flex justify-content-between align-items-center"
*ngFor="let item of projects; let i = index"
(mouseenter)="showButton = i"
(mouseleave)="showButton = -1"
(click)="clockIn(item.id)"
[ngClass]="{ active: selectedId === item.id }"
>
{{ item.name }}
<span
*ngIf="showButton === i && selectedId !== item.id"
class="badge badge-light"
>Clock In</span
<li class="list-group-item list-group-item-action d-flex justify-content-between align-items-center" *ngFor="let item of projects | filterProject:filterProjects; let i = index" (mouseenter)="showButton = i" (mouseleave)="showButton = -1" (click)="clockIn(item.id)"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please, fix the indentation, remember that we are using an indentation based in 2 spaces.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

[ngClass]="{ active: selectedId === item.id }">
{{ item.name }}
<span *ngIf="showButton === i && selectedId !== item.id" class="badge badge-light">Clock In</span
>
</li>
</ul>
</ul>
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import { async, ComponentFixture, TestBed } from "@angular/core/testing";

import { ProjectListHoverComponent } from "./project-list-hover.component";
import { FilterProjectPipe } from 'src/app/components/shared/pipes/filter-project/filter-project.pipe';

describe("ProjectListHoverComponent", () => {
let component: ProjectListHoverComponent;
let fixture: ComponentFixture<ProjectListHoverComponent>;

beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ProjectListHoverComponent]
declarations: [ProjectListHoverComponent, FilterProjectPipe]
}).compileComponents();
}));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export class ProjectListHoverComponent implements OnInit {

selectedId: string;
showButton: number;
filterProjects = '';

constructor() {
this.showButton = -1;
Expand Down
Loading