Skip to content

Commit 305964b

Browse files
author
majid noureddine
committed
blog component v1
1 parent 5afb782 commit 305964b

File tree

5 files changed

+71
-36
lines changed

5 files changed

+71
-36
lines changed

src/app/app.component.html

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
<div class="container">
22
<div class="row">
33
<div class="col-xs-12">
4-
<h2>Mes appareils</h2>
5-
<p>Mis à jour le : {{ lastUpdate | async | date: 'd MMMM y' | uppercase }}</p>
4+
<h2>Posts</h2>
65
<ul class="list-group">
7-
<app-appareil *ngFor="let appareil of appareils"
8-
[appareilName]="appareil.name"
9-
[appareilStatus]="appareil.status"></app-appareil>
6+
<app-blog *ngFor="let post of posts"
7+
[title]="post.title"
8+
[content]="post.content"
9+
[createdAt]="post.created_at"
10+
[loveIts]="post.loveIts"></app-blog>
1011
</ul>
11-
<button class="btn btn-success"
12-
[disabled]="!isAuth"
13-
(click)="onAllumer()">Tout allumer</button>
1412
</div>
1513
</div>
1614
</div>

src/app/app.component.ts

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,27 @@ import { Component } from '@angular/core';
77
})
88
export class AppComponent {
99

10-
isAuth = false;
11-
lastUpdate = new Promise((resolve, reject) => {
12-
const date = new Date();
13-
setTimeout(
14-
() => {
15-
resolve(date);
16-
}, 2000
17-
);
18-
});
19-
appareils = [
10+
posts = [
2011
{
21-
name: 'Machine à laver',
22-
status: 'éteint'
12+
title: 'Mon premier post',
13+
content: 'Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l\'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n\'a pas fait que survivre cinq siècles, mais s\'est aussi adapté à la bureautique informatique, sans que son contenu n\'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum',
14+
loveIts: 2,
15+
created_at: new Date()
2316
},
2417
{
25-
name: 'Frigo',
26-
status: 'allumé'
18+
title: 'Mon deuxième post',
19+
content: 'Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l\'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n\'a pas fait que survivre cinq siècles, mais s\'est aussi adapté à la bureautique informatique, sans que son contenu n\'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum',
20+
loveIts: 3,
21+
created_at: new Date()
2722
},
2823
{
29-
name: 'Ordinateur',
30-
status: 'éteint'
31-
}
24+
title: 'Encore un post',
25+
content: 'Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l\'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n\'a pas fait que survivre cinq siècles, mais s\'est aussi adapté à la bureautique informatique, sans que son contenu n\'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum',
26+
loveIts: 5,
27+
created_at: new Date()
28+
},
3229
];
3330

3431
constructor() {
35-
setTimeout(
36-
() => {
37-
this.isAuth = true;
38-
}, 4000
39-
);
40-
}
41-
42-
onAllumer() {
43-
console.log('On allume tout !');
4432
}
4533
}

src/app/blog/blog.component.html

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,28 @@
1-
<p>blog works!</p>
1+
<li [ngClass]="{'list-group-item': true, 'post_item': true}">
2+
<div [ngClass]="{'row': true}">
3+
<div [ngClass]="{'col-md-6': true}">
4+
<h3>{{ title }}</h3>
5+
</div>
6+
<div [ngClass]="{'col-md-6': true}">
7+
<p [ngClass]="{'created_at_block': true}">{{ createdAt | date: 'd/MM/y, h:mm a' }}</p>
8+
</div>
9+
</div>
10+
<div [ngClass]="{'row': true}">
11+
<p>
12+
{{ content }}
13+
</p>
14+
</div>
15+
<div [ngClass]="{'row': true}">
16+
<div [ngClass]="{'row': true}">
17+
<div [ngClass]="{'col-md-6': true}">
18+
<button (click)="loveIt()" [ngClass]="{'btn': true, 'btn-success': true, 'post_action_btn': true}">Love it</button>
19+
<button (click)="dontLoveIt()" [ngClass]="{'btn': true, 'btn-danger': true, 'post_action_btn': true}">Don't love it</button>
20+
</div>
21+
<div [ngClass]="{'col-md-6': true}">
22+
<p [ngStyle]="{'float': 'right'}">
23+
<span>Loves : {{ loveIts }}</span>
24+
</p>
25+
</div>
26+
</div>
27+
</div>
28+
</li>

src/app/blog/blog.component.scss

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.post_item {
2+
padding: 20px;
3+
}
4+
.created_at_block {
5+
float: right;
6+
color: dimgrey;
7+
}
8+
.post_action_btn {
9+
margin-right: 5px;
10+
}

src/app/blog/blog.component.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { Component, OnInit, Input } from '@angular/core';
22

33
@Component({
44
selector: 'app-blog',
@@ -7,9 +7,21 @@ import { Component, OnInit } from '@angular/core';
77
})
88
export class BlogComponent implements OnInit {
99

10+
@Input() title: string;
11+
@Input() createdAt: Date;
12+
@Input() content: string;
13+
@Input() loveIts: number;
14+
1015
constructor() { }
1116

1217
ngOnInit(): void {
1318
}
1419

20+
loveIt() {
21+
this.loveIts++;
22+
}
23+
24+
dontLoveIt() {
25+
this.loveIts--;
26+
}
1527
}

0 commit comments

Comments
 (0)