Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions UPDATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Colabtask

Les changements apport�s requi�rent la mise � jour de l'API pour int�grer les modifications de la branche "add_label_field_to_task_add" du projet api-tasklist
19 changes: 19 additions & 0 deletions tasklist/src/models/labelModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { Project } from './projectModel';
import BaseModel from "./baseModel";

export class Label extends BaseModel {
id:number;
name:string;
color:string;
project:Project;

constructor(data:Object = {}) {
super({
id: data['id']||null,
name: data['name']||'',
color: data['color']||'',
project: new Project(data['project']||{})
});
}

}
4 changes: 3 additions & 1 deletion tasklist/src/models/taskModel.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { User } from './userModel';
import { Project } from './projectModel';
import { Label } from './labelModel';
import BaseModel from "./baseModel";

export class Task extends BaseModel {
id:number;
name:string;
labels:Array<Label>;
description:string;
priority:number;
done:boolean;
Expand All @@ -18,6 +20,7 @@ export class Task extends BaseModel {
super({
id: data['id']||null,
name: data['name']||'',
labels: data['labels']||[],
description: data['description']||'',
priority: data['priority']||0,
done: data['done']||false,
Expand All @@ -28,5 +31,4 @@ export class Task extends BaseModel {
project: new Project(data['project']||{})
});
}

}
2 changes: 1 addition & 1 deletion tasklist/src/pages/detailTask/detailTask.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
<ion-badge item-right>{{task.priority}}</ion-badge>
</ion-item>

<ion-item *ngIf="task.labels?.length > 0">
<ion-item *ngIf="task.labels.length > 0">
<ion-icon name="pricetag" color="main" item-left large ></ion-icon>
<h2>Categories</h2>
<p>
Expand Down
28 changes: 26 additions & 2 deletions tasklist/src/pages/detailTask/detailTask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import { Component } from '@angular/core';
import { ModalController, NavController, NavParams, ToastController, PopoverController } from 'ionic-angular';

import { TaskService } from '../../services/taskService';
import { ProjectService } from '../../services/projectService';
import { ModalAddTask } from '../modalAddTask/modalAddTask';
import { Task } from '../../models/taskModel';
import { Label } from '../../models/labelModel';
import { Project } from '../../models/projectModel';

@Component({
Expand Down Expand Up @@ -34,7 +36,10 @@ export class DetailTaskPopover {
@Component({
selector: 'detail-task',
templateUrl: 'detailTask.html',
providers: [TaskService]
providers: [
TaskService,
ProjectService
]
})
export class DetailTask {
task: Task;
Expand All @@ -45,10 +50,20 @@ export class DetailTask {
public modalCtrl: ModalController,
public toastCtrl: ToastController,
public popoverCtrl: PopoverController,
private taskService: TaskService
private taskService: TaskService,
private projectService: ProjectService
)
{
this.task = new Task(navParams.get("task"));
let labels = this.task.labels;
this.task.labels = [];
for(let label of labels) {
this.projectService.getLabel(label).subscribe(
response => {
this.task.labels.push(response.json());
}
)
}
console.log(this.task);
}

Expand Down Expand Up @@ -115,6 +130,15 @@ export class DetailTask {
this.taskService.getTask(this.task.id).subscribe(
response => {
this.task = new Task(response.json());
let labels = this.task.labels;
this.task.labels = [];
for(let label of labels) {
this.projectService.getLabel(label).subscribe(
response => {
this.task.labels.push(response.json());
}
)
}
}
);
}
Expand Down
7 changes: 7 additions & 0 deletions tasklist/src/pages/modalAddTask/modalAddTask.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@
<ion-label stacked>Name</ion-label>
<ion-input type="text" [(ngModel)]="task.name" name="name"></ion-input>
</ion-item>

<ion-item>
<ion-label stacked>Label</ion-label>
<ion-select [(ngModel)]="task.labels" name="labels" multiple="true">
<ion-option *ngFor="let label of labels" value="{{label.id}}">{{label.name}}</ion-option>
</ion-select>
</ion-item>

<ion-item>
<ion-label stacked>Description</ion-label>
Expand Down
20 changes: 18 additions & 2 deletions tasklist/src/pages/modalAddTask/modalAddTask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {Access} from '../../models/accessModel';
import {User} from '../../models/userModel';
import {Project} from '../../models/projectModel';
import {Task} from '../../models/taskModel';
import {Label} from '../../models/labelModel';

@Component({
templateUrl: 'modalAddTask.html',
Expand All @@ -24,6 +25,7 @@ export class ModalAddTask {
project: Project;
users: Array<User>;
projects: Array<Project>;
labels: Array<Label>;

constructor(
public platform: Platform,
Expand All @@ -38,8 +40,9 @@ export class ModalAddTask {
this.project = params.get('project');
if(this.project)
{
// We populate the list of user
// We populate the list of available users and labels
this.populateListUser();
this.populateListLabel();
}

const task = params.get('task');
Expand Down Expand Up @@ -73,7 +76,7 @@ export class ModalAddTask {
this.users = [];
this.projectService.listProjectUsers(this.project.id).subscribe(
response => {
this.accessList = response.json()
this.accessList = response.json();
for(let access of this.accessList){
this.userService.getUser(access.user).subscribe(
response => {
Expand All @@ -91,6 +94,19 @@ export class ModalAddTask {
}
);
}

populateListLabel(){
// Get list of existing labels for this project
this.labels = [];
this.projectService.listProjectLabels(this.project.id).subscribe(
response => {
this.labels = response.json();
},
err => {
console.log(err);
}
)
}

populateTask() {
// Populate the interface with the task information
Expand Down
14 changes: 13 additions & 1 deletion tasklist/src/services/projectService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,13 @@ export class ProjectService {
.fromPromise(this.buildOptions(null))
.switchMap((options) => this.http.get(this.propertiesURL + "/" + id + "/access", options));
}


listProjectLabels(id) {
return Observable
.fromPromise(this.buildOptions(null))
.switchMap((options) => this.http.get(this.propertiesURL + "/" + id + "/labels", options));
}

createProject(project) {
let data = new URLSearchParams();
data.append('name', project.name);
Expand All @@ -60,4 +66,10 @@ export class ProjectService {
.fromPromise(this.buildOptions(null))
.switchMap((options) => this.http.delete(this.propertiesURL + "/" + id, options));
}

getLabel(id){
return Observable
.fromPromise(this.buildOptions(null))
.switchMap((options) => this.http.get(this.serverURL + "/labels/" + id, options));
}
}
13 changes: 12 additions & 1 deletion tasklist/src/services/taskService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,13 @@ export class TaskService {
if(task.priority){
data.append('priority', task.priority.toString());
}


if(task.labels.length > 0){
for(let label of task.labels) {
data.append('labels', label.toString());
}
}

return Observable
.fromPromise(this.buildOptions(null))
.switchMap((options) => this.http.post(this.propertiesURL, data, options));
Expand All @@ -75,6 +81,11 @@ export class TaskService {
data.append('description', task.description);
data.append('assigned_id', task.assigned.id ? task.assigned.id.toString() : null );
data.append('priority', task.priority ? task.priority.toString() : '0' );
if(task.labels.length > 0){
for(let label of task.labels) {
data.append('labels', label.toString());
}
}

return Observable
.fromPromise(this.buildOptions(null))
Expand Down