Exemple d'application SharePoint sur le modèle Single Page Application (SPA) utilisant le framework DurandalJS pour afficher un tableau de bord de données Yammer.
1. ERYEM
CAMPS
Dashboard Yammer sous SharePoint
1
Présenté par :
Barbar MITRI bmitri@eryem.com
Philippe SFEIR psfeir@eryem.com
Levallois 15/01/2015
2. Plan
1. Présentation du sujet
1. Concept de Single Page Application
2. Architecture applicative
2. Démo et architecture projet
3. Conclusion
4. Références
2
3. Single Page Application
3
Une nouvelle façon d’envisager la navigation web
Serveur Web
Cloud
navigateur client
Chargement de la
page d’accueil:
charge une fois pour
toutes l’ensemble
des fichiers html, js,
css
Action utilisateur: insertion dynamique de
données dans la page, jamais de
rechargement complet de la page
4. 4
Architecture applicative
4
Un niveau de portabilité inédit !!
1°)
2°)
3°)
6°)
Serveur
SharePoint
Poste client
NodeJS :
Module développé par
Barbar MITRI
12. Conclusion
12
Avec DurandalJS on peut construire des applications
JavaScript dynamiques et simples.
Inclus : JQuery , Knockout et RequireJS
Riche en fonctionnalités et multiplateforme
1 => connexion à l’application Sharepoint
2 => Sharepoint renvoie le contenu Statique au client : html + CSS + JS
3=> avec l’autorisation de Sharepoint on redirige le client vers le serveur Proxy (NodeJS)
4=> proxy solicite le serveur de base de données
5=> reponse de la base
6=> le proxy retourne les données vers le client
Exemple de graphe obtenu: nombre de messages postés par utilisateur du réseau Yammer
Contient:
Un dossier « app » lui-même composé d’un dossier « services » contenant le fichier avec les méthodes de service, d’un dossier « viewmodels », d’un dossier « views »
Un dossier « css » contenant les feuilles de style
Un dossier « lib » contenant les librairies js Durandal et les plugins js
Les autres dossiers natifs à un projet App pour SharePoint
Le code suivant: <script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart']}]}"></script>
référence l’api google utilisée pour dessiner les graphiques.
Le code suivant: <script src="lib/require/require.js" data-main="app/main"></script> charge require.js et l’attribut data-main indique le fichier js servant de point d’entrée, ici main.js
requirejs.config permet d’enregistrer un raccourci pour chaque fichier javascript ou dossier utilisé
define permet de charger les fichiers js référencés de manière asynchrone et d’exécuter le code personnalisé dans le callback, avec un espace de nommage isolé de l’espace de nommage global de javascript.
app.setRoot définit la page d’accueil de l’application, ici shell.html
shell.js est le viewmodel javascript associé à la page d’accueil.
La fonction activate s’exécute à chaque fois que la page est atteinte.
router.map permet de définir des routes pour la navigation côté client. Lorsque le client requête une route, commençant par #, le fichier javascript correspondant est exécuté et la page html chargée. Aucun appel serveur n’est effectué, l’ensemble des fichiers étant déjà chargés dans le navigateur client.
chart.js est le fichier associé à la route #chart.
La fonction activate est exécutée en premier chaque fois que la page est requêtée. Elle construit un tableau avec les données Yammer récupérées par les web services.
La fonction compositionComplete est exécutée après activate, une fois que l’ensemble des éléments HTML du DOM a été chargé dans le navigateur. C’est dans cette fonction que sont réalisées les manipulation sur le DOM permettant d’afficher les graphiques grâce aux APIs de google.
Le fichier chart.html contient le squelette html de la page. Les méthodes google appelées dans le viewmodel vont insérer les graphes dans les deux div.