[Gère ton équipe ] Pré Cahier des charges mixte fonctionnel /tech.

copie

cloudant

Introduction


Le cahier des charges de ma future application payante n’est pas privé . En effet, ce type d’applications existe déjà et je ne compte pas du tout m’attarder la dessus, mais cela sert à mettre en place des technologies qui vont me servir plus tard, pour des projets confidentiels.

brain.jpeg

Etapes


Approximation du temps de réalisation :
1 Mois 15 jours .

Délégation de la conception de certaines fonctionnalités en Inde / Pays de l’est
Non, pour l’instant, mais pourquoi pas sur certains points ? A évaluer plus tard .

GanttProject

0. Sémantique

  • Etudes des rêgles et différences avec les pays étrangers (Chine …)

1. Communication

  • 1 jour : Envoi d’EMAILS à une équipe avec rappel du match à venir et une copie d’écran des caractéristiques de 2 équipes : besoin d’un serveur.
  • 2 jours : Envoi de SMS avec rappel de la date du match + entrainements : besoin d’un serveur.
  • 1 jour : Envoi de SMS avec rappel de faiblesse sur une catégorie ( Déduction, Vitesse …) : besoin d’un serveur.

2. Technologie avancée

  • 5 jours : Etude de la portée des GPS et de l’intervalle de temps et des tarifs pour déplacements sur le terrain + récupération des datas en noSQL + achat de matériel GPS pour les tests .

3. Publicité

  • 2 Semaines : Démarchage téléphonique + démarchage par tracts + récupération de tous les clients potentiels .

3. Authentification et Timer de démonstration

  • 3 jours : pouchDb et un web worker ( Pour l’instant un simple timer fonctionne déjà bien) .
  • https://github.com/angular-pouchdb/angular-pouchdb
  • https://github.com/willholley/pouchdb-authentication-cloudant

4. Reportings

  • 5 Jours : Envisager plusieurs solutions comme MATLAB, D3.JS …

5. Multilangage

  • 5 jours pour : Chinois, Anglais, Espagnol et peut être roumain.

6. Passage sur tablette

  • 10 jours de CSS et de tests .

7 . Sauvegardes personnelles

  • 6 jours d’études sur la possiblité de sauvegarde personnelle JSON sur tablettes et ordis ( Ou alors Possibilité de transfert par le biais de SQLITE en relationnel etc …) .
  • Sauvegarde en ligne possible également, à concevoir, mais ce n’est pas désiré .
  • https://stackoverflow.com/questions/37229561/how-to-import-export-database-from-pouchdb

8 . Etude de la concurrence

  • Enumération des concurrents
  • Evaluation de leur technologie
  • Trouver une technologie supérieure, ou des idées différentes .

9 . Recherche opérationnelle

  • Est il possible d’intégrer un solveur dans cette APP ?

10. Spécificité POUCHDB

  • Avec la tablette, sur le terrain, sans 3G, PouchDb peut servir, mais est-il réellement nécessaire ?

11. Passage sur le projet suivant

  • date butoir : 01 Mars 2019 Ou alors, probablement, début de programmation du projet suivant simultané.
  • NOTE : Ne pas s’éterniser sur ce projet, car j’ai mieux …

12. Intégrer le RUGBY ou LE HAND, et uniquement, ou alors, mettre le projet en dormance pendant des années.

13. Divers

  • Lazy loading sur le calendrier
  • Obfuscer avancé
  • Rédaction et traduction du manuel d’utilisation
  • Passer tout le code générique au format COMPONENTS REUTILISABLES avec la syntaxe THIS afin de pouvoir capitaliser et aller plus vite à l’avenir

14. CLOUD

  • Contrairement à FIREBASE, Cloudant héberge des bdd couchDb classiques duplicables et opérationelles sur n’importe quel serveur. Au cas ou Cloudant soit discontinué, prévoir un ‘FALLBACK ‘ + mettre en place la réplication COUCHDB en local ou sur un autre hébergeur de tous les comptes clients.

15. Droits

  • Droits simples en fonction de la catégorie du user , paramétrable. (Un component qui sera réutilisable dans les futures APPS .)


OBJECTIF FINAL :

Livrer une application 100 % fonctionnelle, et moins chère que la concurrence.

Publicités

[Labos] Anciens Labos

Introduction


Je conserve ici mes anciens Labos . Comme leurs noms l’indiquent, ce sont des petits labos destinés à tester des fonctionnalités, ils ne respectent pas forcément les design pattern ou les bonnes pratiques,et le design n’est pas forcément bien.

Petits Labos de tests à la journée


 05 mai : Micro App AngularJs Bootstrap avec webRtc, faite en 4h. Compatiblité : Firefox et Firefox Mobile . On peut prendre des photos et on récupère la position GPS, le tout est envoyé au back end

evaluetoncoin

26 Avril  2016 : Note ton candidat : Micro App AngularJs Bootstrap

notetoncandidat2

Exo 60 : Modif de charts en temps réel :
http://nicolash.org/truc50/

04 Avril 2016 : Trouve ton Film : Application AngularJs + Php-Mysql + SbAdmin2

microcrm

24 Mars 2016 : Micro Crm réalisé en 2h30(Pas de back end) (New décembre 2016 : google a rendu payant l’accès au gps par adresse, donc … on ne voit plus les points sur la carte! ) :

microcrm

Février 2016 : MedicSolutions ; Multi-utilisateurs  avec Authentification, en noSql avec AngularJs et Firebase :

Log in : a@a.fr Mot de passe : aaaaaaaa Log-in: b@b.fr Mot de passe: bbbbbbbb

medicsolutions

Anciens Labos variés Firebase (en lecture seule):


Novembre 2015

evalueville2geretaclasse

Exercices standalone en MVC , avec routing de vues en AngularJs:

WISTERIAevalueville

Anciens Labs



Mars 2015

gestevalentretien2monpetitstock sondagilitis  stockvoiture   supervachelogoportic

Mes anciens exercices en JQUERY, back end en Php-Mysql:

Janvier 2015

supercourslogo Gestion de Cours Jquery- RestPhp

COMMANDIS(Jquery UI-RestPhp(Bdd h.s))
Lire la suite

[Exercice 52] Déplacement des points sur click dans le graphique avec HighCharts

Introductionhighcharts21


Dans cet exercice, on peut bouger les points d’un graphique en cliquant dessus, puis le modèle de données JSON est enregistré quand on clique sur Sauvegarder.

Note : je commence à éviter à fond les $scope maintenant, je ne les utiliserais qu’en cas d’absolue nécessité (Par exemple pour les menus déroulants)

Je vais créer une micro App de gestion de ressources humaines utilisant ce système.

Le Code :


Je l’ai stocké sur JsFiddle ici :

http://jsfiddle.net/nicolas1000/efv0vvbp/

Le voici au cas ou :

Index.html


<!-- REF http://jsfiddle.net/highcharts/AyUbx/ draggable REF http://jsfiddle.net/pablojim/Cp73s/ highcharts-ng -->
<html >
	<head>
		<meta charset="utf-8" />
		<title>Statistiques .</title>

		<!-- LIbs -->
		<script src="librairies/angular.min.js"></script>
		<script src="librairies/highcharts.js"></script>
		<script src="librairies/highcharts-ng.js"></script>
		<script src="librairies/draggable-points.js"></script>

		<link rel="stylesheet" type="text/css" href="librairies/bootstrap.min.css">

		<script src="app.js"></script>

	</head>

<body>

<div ng-app="myapp">
    <div ng-controller="myctrl">
        <highchart id="container" config="highchartsNG" style="height: 300px"></highchart>
        <div class="well row">
            <div class="col-xs-3">
                <button ng-click="randomize()" class="btn">Randomizer la série</button>
                <button ng-click="randomize(true)" class="btn">Randomizer l'historique</button>
				<button ng-click="save()" class="btn">Sauvegarder</button>
            </div>
            <div ng-bind="drag" class="col-xs-3"></div>
            <div ng-bind="drop" class="col-xs-3"></div>
			<div id="text"></div>
        </div>
    </div>
</div>

</body>

Le fichier JS app.js :

var myapp = angular.module('myapp', ["highcharts-ng"]);

myapp.controller('myctrl', function ($scope) {
    $scope.drag = 'drag feedback';
    $scope.drop = 'drop feedback';

    $scope.randomize = function (onlyHistory) {
        var seriesArray = $scope.highchartsNG.series
        for (i in seriesArray[0].data) {
            var random = Math.floor(Math.random() * 250);
            seriesArray[0].data[i] = random;
            if (!onlyHistory) seriesArray[1].data[i] = random;
        }
    };

	$scope.save= function(){
		 console.log(test);
		document.getElementById('text').innerHTML = "<br>MODELE DE DONNEE APRES SAUVEGARDE: "+test;
	}

	test  = [45, 200, 150];

    $scope.highchartsNG = {
        options: {
            chart: {
                type: 'spline'
            },
            plotOptions: {
                series: {
                    cursor: 'ns-resize',
                    point: {
                        events: {
                            drag: function (e) {
                                $scope.drag = this.series.name + ' = ' + Highcharts.numberFormat(e.newY, 2);
                                $scope.$apply($scope.test);

                            },
                            drop: function () {
                                $scope.drop = this.series.name + ' = ' + Highcharts.numberFormat(this.y, 2);
                                $scope.$apply();
								var point = Highcharts.numberFormat(this.y, 2);
								test[this.index] = parseInt(point); 

                            }
                        }
                    },
                    stickyTracking: false
                },
                column: {
                    stacking: 'normal'
                }
            },

            tooltip: {
                yDecimals: 2
            },

        },

        xAxis: {
            categories: ['Puissance', 'Diplomes', 'Flexibilité']
        },

        series: [{
            data: [0, 71.5, 106.4],
            name: 'Historique',
            draggableY: false,
            dashStyle: 'dash'
        }, {
            data: test,
            name: 'Draggable',
            draggableY: true
        }],
        title: {
            text: 'Cliquez sur les points pour modifier les valeurs.'
        },
        loading: false
    }

});

Application de base avec identification Firebase et filtrage par utilisateur.

Introduction :


App traduite en Français, basée sur le vieux angularFire 0.0.9, fonctionnelle.

Bonne base pour créer des apps sécurisées  sur la base de données en ligne Firebase avec Angular.Js 1.x

Les utilisateurs ne peuvent pas modifier les articles des autres utilisateurs. Un utilisateur non identifié ne peut pas accéder aux données ni à l’application, en l’apparence, mais la sécurité firebase n’est pas traitée.

Pour tester, cliquer ici. (log-in:a@a.fr pass:aaaaaaaa)

Basée sur ce tuto :

Le Code :


nicolash.org/truc43.zip

 

Exercice 18 : « Classe » de Modification d’objets graphiques Javascripts live + Drag And Drop dans les objets

Introduction.

Aujourd’hui, je vais continuer mes expérimentations en matière de création d’objets Javascript.
J’ai eu une « vision » ah ah, d’un écran, comportant de multiples sous-objets dans des cases de même taille, qui seraient pour chacun modifiables par Drag and Drop, à l’aide de banques de données graphiques A tester ici

exo18-1

Tous les objets sont chargés en Mémoire vive sur une lecture ajax en BDD.