Skip to content

recid/linshare-ui-admin

 
 

Repository files navigation

Linshare UI admin

Installation

Installer les outils

5 outils sont nécessaire pour installer le projet:

  • nodejs
  • npm
  • grunt
  • bower
  • yeoman (yo)

Installer nodejs & npm

curl http://nodejs.org/dist/node-latest.tar.gz -o node-latest.tar.gz
tar xvf node-latest.tar.gz
cd node-v0.XX.XX
./configure
make
make install

Installer les modules grunt, bower, yo

sudo npm install -g yo grunt-cli bower
sudo npm install -g generator-webapp

Checker les modules npm a mettre à jour

sudo npm outdated -g

Mettre a jour nodejs

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

Mettre a jour npm & ses modules

sudo npm update -g

Mettre a jour yeoman

sudo npm cache clean && npm update -g yo

Installer le projet

npm install
bower install

Procedure de mise à jour

Pour vérifier si des mises à jour sont présentes:

bower list

Pour mettre à jour un module via bower:

  • Modifier le fichier bower.json avec la version souhaitée
  • "bower install" va ensuite retelecharger l'ensemble des plugins du fichier bower.json et vérifier les dépendances

Lancer l'application

Pour lancer l'application en mode developpement, la commande est:

grunt serve

Pour lancer l'application en mode production, la commande est:

grunt serve:dist

Pour packager l'application en mode production, la commande est:

grunt build

JavaScript

Quelques cours sur Javascript

AngularJS

Avant de commencer à développer, veuillez lire les pages suivantes pour connaitre AngularJS et les bonnes pratiques:

Guide de style par ordre de preferences:

Autre:

Vos questions existentielles:

Les exemples fournis par angular

La documentation spécifique à un plugin est généralement disponible sur le github associé.

Les pros :

Outils de dev

L'éditeur de texte Vim est conseillé avec un plugin tel que :

Sinon vous pouvez utiliser sublime text avec le plugin suivant

Pour éviter des fichiers avec trop de colonne, la tabulation avec 2 espaces est recommandée. Pour l'API rest, le debugger http://restclient.net/ est conseillé. Pour débugger AngularJS https://github.com/angular/angularjs-batarang ou http://ng-inspector.org/

A suivre http://ternjs.net/

Block de commentaire dans index.html

Ces blocks servent a la minification et au build de l'application. Les blocks et leur contenu ne doivent pas etre modifier manuellement sauf exception de module bower non conforme.

Versioning

Les champs 'name', 'version', 'description', 'license', 'homepage' sont toujours synchronises depuis le fichier package.json. Ce dernier doit donc etre le seul fichier a etre modifie

Utilisation du scaffolding

On utilise https://github.com/yeoman/generator-angular pour effectuer du scaffolding. Ce dernier est capable de generer les differents composant angular tout en generant les tests et en ajoutant la resource dans le fichier index.html. Le scaffolding est operationnel mais a de nombreux desavantages (fichier place au mauvais endroit, nommage simpliste, pas de securite pour la minification etc), il a ete mis en place comme test pour de futur evolution de yeoman genearator.

ATTENTION LE SCAFFOLDING DOIT ETRE FAIT A LA RACINE DU REPERTOIRE GIT

Détails techniques AngularJS

Difference entre link et controller, dans une directive

La fonction link ne s'occupe que de la manipulation de la vue (gestion des clics, des classe css etc ...) La fonction controller s'occupe de la partie métier (récupération des données depuis un service etc ...) http://odetocode.com/blogs/scott/archive/2014/05/28/compile-pre-and-post-linking-in-angularjs.aspx

Utilisation de la syntaxe ['module', function(Module){ }]

Cette syntaxe évite la minification des noms de modules. Le module npm grunt-ngmin la genere automatiquement pour les elements de premier niveau. Pour plus d'information https://github.com/btford/grunt-ngmin Les modules AngularJS sont toujours précédés d'un $. Les modules possèdent une majuscule (en argument de la fonction) lorsqu'il s'agit d'objet et non d'un ensemble de function.

Note cette syntaxe

cf : http://docs.angularjs.org/guide/di

Utilisation de l'internationalization

A la première utilisation de Linshare, la langue par défaut est la langue du navigateur, ou l'anglais si la resource de langue n'existe pas. Puis si l'utilisateur modifie la langue, cette dernière est stockée dans un cookie. Le dictionnaire est chargé au démarrage de l'application puis est stocké dans le rootScope, on peut donc l'utilisé directement ou en passant par le service de localisation.

Utiliser le paquet npm "json-diff" pour comparer les fichiers de langue

Utilisation du logger

Nous avons wrapper le logger AngularJS dans un service pour pouvoir gérer des niveaux de logs. Le niveau de logs est précisé dans les préférences de l'application puis est stocké dans un cookie pour pourvoir à terme modifier le niveau de log à la volée. Niveaux de log:

  • TRACE (defaut)
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • SILENT

Remarques

  • Le rootScope: Il ne doit pas être pollué et est reservé à une utilisation très spécifique (internationalization, userLogged). Son utilisation revient à instancier des variables globales à l'application (comme chacun le sait c'est une mauvaise pratique de programmation)
  • Attention aux appels Restangular dans les directives. Les appels de resource seront dupliqués a chaque duplication de la directive

Notes de controles

Sur le serveur

  • Vérifier les champs obligatoires Missing argument exception
  • Vérifier l'unicité avant création
  • Vérifier que les droits sont respectés

Sur le client

  • Mettre le champs datepicker required dans le userEditForm

Pour la suite

Ce qui peut etre interessant d' integrer

TODO

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • JavaScript 95.7%
  • CSS 4.0%
  • Shell 0.3%