Skip to content

Commit

Permalink
blog component v1
Browse files Browse the repository at this point in the history
  • Loading branch information
majid noureddine committed May 14, 2020
1 parent 5afb782 commit d31fd5d
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 36 deletions.
14 changes: 6 additions & 8 deletions src/app/app.component.html
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
<div class="container">
<div class="row">
<div class="col-xs-12">
<h2>Mes appareils</h2>
<p>Mis à jour le : {{ lastUpdate | async | date: 'd MMMM y' | uppercase }}</p>
<h2>Posts</h2>
<ul class="list-group">
<app-appareil *ngFor="let appareil of appareils"
[appareilName]="appareil.name"
[appareilStatus]="appareil.status"></app-appareil>
<app-blog *ngFor="let post of posts"
[title]="post.title"
[content]="post.content"
[createdAt]="post.created_at | date"
[loveIts]="post.loveIts | number"></app-blog>
</ul>
<button class="btn btn-success"
[disabled]="!isAuth"
(click)="onAllumer()">Tout allumer</button>
</div>
</div>
</div>
40 changes: 14 additions & 26 deletions src/app/app.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,27 @@ import { Component } from '@angular/core';
})
export class AppComponent {

isAuth = false;
lastUpdate = new Promise((resolve, reject) => {
const date = new Date();
setTimeout(
() => {
resolve(date);
}, 2000
);
});
appareils = [
posts = [
{
name: 'Machine à laver',
status: 'éteint'
title: 'Mon premier post',
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',
loveIts: 2,
created_at: new Date()
},
{
name: 'Frigo',
status: 'allumé'
title: 'Mon deuxième post',
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',
loveIts: 3,
created_at: new Date()
},
{
name: 'Ordinateur',
status: 'éteint'
}
title: 'Encore un post',
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',
loveIts: 5,
created_at: new Date()
},
];

constructor() {
setTimeout(
() => {
this.isAuth = true;
}, 4000
);
}

onAllumer() {
console.log('On allume tout !');
}
}
29 changes: 28 additions & 1 deletion src/app/blog/blog.component.html
Original file line number Diff line number Diff line change
@@ -1 +1,28 @@
<p>blog works!</p>
<li [ngClass]="{'list-group-item': true, 'post_item': true}">
<div [ngClass]="{'row': true}">
<div [ngClass]="{'col-md-6': true}">
<h3>{{ title }}</h3>
</div>
<div [ngClass]="{'col-md-6': true}">
<p [ngClass]="{'created_at_block': true}">{{ createdAt | date: 'd/MM/y, h:mm a' }}</p>
</div>
</div>
<div [ngClass]="{'row': true}">
<p>
{{ content }}
</p>
</div>
<div [ngClass]="{'row': true}">
<div [ngClass]="{'row': true}">
<div [ngClass]="{'col-md-6': true}">
<button (click)="loveIt()" [ngClass]="{'btn': true, 'btn-success': true, 'post_action_btn': true}">Love it</button>
<button (click)="dontLoveIt()" [ngClass]="{'btn': true, 'btn-danger': true, 'post_action_btn': true}">Don't love it</button>
</div>
<div [ngClass]="{'col-md-6': true}">
<p [ngStyle]="{'float': 'right'}">
<span>Loves : {{ loveIts }}</span>
</p>
</div>
</div>
</div>
</li>
10 changes: 10 additions & 0 deletions src/app/blog/blog.component.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.post_item {
padding: 20px;
}
.created_at_block {
float: right;
color: dimgrey;
}
.post_action_btn {
margin-right: 5px;
}
14 changes: 13 additions & 1 deletion src/app/blog/blog.component.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, Input } from '@angular/core';

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

@Input() title: string;
@Input() createdAt: string;
@Input() content: string;
@Input() loveIts: number;

constructor() { }

ngOnInit(): void {
}

loveIt() {
this.loveIts++;
}

dontLoveIt() {
this.loveIts--;
}
}

0 comments on commit d31fd5d

Please sign in to comment.