Corrections slides

This commit is contained in:
2015-04-09 20:36:17 +02:00
committed by Benjamin Bohard
parent 3fe0bcd45d
commit 84381980f7
18 changed files with 319 additions and 86 deletions

View File

@ -0,0 +1,58 @@
/*
* Énoncé:
*
* 1. Modifier le template de index.html afin de modifier l'affichage des commits
* dans la table HTML en utilisant les filtres de base d'Angular.
*
* Contraintes d'affichage:
* - La date du commit devra être affiché au format "dd-mm-yyyy"
* - L'afichage du SHA du commit devra être limité à 10 caractères
*
* ! Pas besoin de modifier le code de app.js !
*
* 2. Mettre en place les directives et le filtre nécessaire afin d'implémenter
* un champ de recherche permettant de filtrer la liste des commits.
*
* Indice:
* - Filtre "filter": https://code.angularjs.org/1.3.15/docs/api/ng/filter/filter
*
* ! Pas besoin de modifier le code de app.js !
*
* 3. Implémenter un filtre qui "met en lumière" (change la couleur du fond du texte) les éléments
* correspondants à la recherche dans le message de commit.
*
* Exemple d'usage attendu: {{ 'my text' | highlight:'my' }}
*
* Indices:
* - Le filtre devra rechercher le texte voulu et le remplacer par un fragment de HTML
* - Nécessite l'usage du service $sce dans le filtre et de sa méthode $sce.trustAsHtml() https://docs.angularjs.org/api/ngSanitize
* - Nécessite également l'utilisation de la directive ng-bind-html plutot que l'utilisation des {{ ... }} https://docs.angularjs.org/api/ng/directive/ngBindHtml
*
*/
var Exo = angular.module('Exo', []);
Exo.controller('MainCtrl', ['$scope', '$http', function($scope, $http) {
$scope.commits = [];
$http.get('https://api.github.com/repos/torvalds/linux/commits')
.then(function(res) {
$scope.commits = res.data;
})
;
}]);
Exo.filter('highlight', ['$sce', function($sce) {
return function(input, needle) {
if( !angular.isString(input) ) return input;
var html = '<span style="background: yellow">'+needle+'</span>';
return $sce.trustAsHtml(input.replace(needle, html));
};
}]);

View File

@ -0,0 +1,46 @@
<html>
<head>
<meta charset="utf8">
<title>Exercice: Utilisation des filtres</title>
</head>
<!-- Déclaration de l'application -->
<body ng-app="Exo">
<div ng-controller="MainCtrl">
<h1>Commits du dépôt torvalds/linux sur Github</h1>
<table>
<thead>
<tr>
<th colspan="4">
<input type="text" style="width: 100%" placeholder="Filtrer la liste" ng-model="search" />
</th>
<tr>
<tr>
<th>Date</th>
<th>SHA</th>
<th>Author</th>
<th>Message</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="c in commits | filter:search">
<td>{{c.commit.author.date | date:'dd-mm-yyyy' }}</td>
<td>{{c.sha | limitTo:10 }}</td>
<td>{{c.commit.author.name }}</td>
<td ng-bind-html="c.commit.message | highlight:search"></td>
</tr>
</tbody>
</table>
</div>
<!-- Import de du framework Angular -->
<script src="../../node_modules/angular/angular.js"></script>
<script src="app.js"></script>
</body>
</html>

View File

@ -0,0 +1,46 @@
/*
* Énoncé:
*
* 1. Modifier le template de index.html afin de modifier l'affichage des commits
* dans la table HTML en utilisant les filtres de base d'Angular.
*
* Contraintes d'affichage:
* - La date du commit devra être affiché au format "dd-mm-yyyy"
* - L'afichage du SHA du commit devra être limité à 10 caractères
*
* ! Pas besoin de modifier le code de app.js !
*
* 2. Mettre en place les directives et le filtre nécessaire afin d'implémenter
* un champ de recherche permettant de filtrer la liste des commits.
*
* Indice:
* - Filtre "filter": https://code.angularjs.org/1.3.15/docs/api/ng/filter/filter
*
* ! Pas besoin de modifier le code de app.js !
*
* 3. Implémenter un filtre qui "met en lumière" (change la couleur du fond du texte) les éléments
* correspondants à la recherche dans le message de commit.
*
* Exemple d'usage attendu: {{ 'my text' | highlight:'my' }}
*
* Indices:
* - Le filtre devra rechercher le texte voulu et le remplacer par un fragment de HTML
* - Nécessite l'usage du service $sce dans le filtre et de sa méthode $sce.trustAsHtml(), voir https://docs.angularjs.org/api/ngSanitize
* - Nécessite également l'utilisation de la directive "ng-bind-html" plutot que l'utilisation des {{ ... }} pour l'affichage du message, voir https://docs.angularjs.org/api/ng/directive/ngBindHtml
*
*/
var Exo = angular.module('Exo', []);
Exo.controller('MainCtrl', ['$scope', '$http', function($scope, $http) {
$scope.commits = [];
$http.get('https://api.github.com/repos/torvalds/linux/commits')
.then(function(res) {
$scope.commits = res.data;
})
;
}]);

View File

@ -0,0 +1,46 @@
<html>
<head>
<meta charset="utf8">
<title>Exercice: Utilisation des filtres</title>
</head>
<!-- Déclaration de l'application -->
<body ng-app="Exo">
<div ng-controller="MainCtrl">
<h1>Commits du dépôt torvalds/linux sur Github</h1>
<table>
<thead>
<tr>
<th colspan="4">
<input type="text" style="width: 100%" placeholder="Filtrer la liste" />
</th>
<tr>
<tr>
<th>Date</th>
<th>SHA</th>
<th>Author</th>
<th>Message</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="c in commits">
<td>{{c.commit.author.date }}</td>
<td>{{c.sha }}</td>
<td>{{c.commit.author.name }}</td>
<td>{{c.commit.message}}</td>
</tr>
</tbody>
</table>
</div>
<!-- Import de du framework Angular -->
<script src="../node_modules/angular/angular.js"></script>
<script src="app.js"></script>
</body>
</html>