elipce-informatique / parking Goto Github PK
View Code? Open in Web Editor NEWApplication de gestion de parking avec guidage à la place basée sur notre workflow
Application de gestion de parking avec guidage à la place basée sur notre workflow
Très bizarre !
La fonction de test d'intersection de deux polygones déconne complètement sur la carte d'admin !
Pourtant, selon l'historique de github, elle n'a PAS CHANGÉE depuis la dernière fois où ça a marché !
ça ressemble carrément à un bug de la librairie polygon.js depuis le dernier npm update...
Uncaught Error: Invariant Violation: findComponentRoot(..., .1.1.0.0.1.0.0.1.$1.$2access_level.0.$IR20.0): Unable to find element. This probably means the DOM was unexpectedly mutated (e.g., by the browser), usually due to forgetting a <tbody> when using tables, nesting tags like <form>, <p>, or <a>, or using non-SVG elements in an <svg> parent. Try inspecting the child nodes of the element with React ID ``.
Les polygones ne ss'affichent pas comme il faut sur la droite de la map quand on est dans un collapse.
Redimentionner la page permet a la carte de se recaler (ouverture de console / resize fenetre)
/etc/apache2/sites-enabled
npm install gulp -g
curl -sS https://getcomposer.org/installer | php -- --install-dir=/bin
extension=mcrypt.so
dans le php.ini (/etc/php5/apache2/php.ini)service apache2 restart
/etc/mysql/my.ini
commenter à l'aide d'un # la ligne STRICT_TRANS_TABLES puis sauvegarderchmod -R 777 app/storage
'driver' => 'cookie',
🔴'cookie' => 'ID unique',
$env = $app->detectEnvironment(array( 'production' => array('elipce-leaderpark'),// Server hostname ));
vi /etc/bash.bashrc
puis ajouter PRODUCTION=true à la fin du fichierparking_raz.sql
(attention au nom de la BDD à changer dans le fichier). Voir PJphp artisan migrate
)php artisan db:seed
Lancer en fonction du besoin. Attention peut insérer des données déjà existantesnpm install -g forever
Principe de filtre sur les droits d'un parking:
Attention, selon la route (zone, place, calendrier etc...) et le type d'action (get, post, update) les paramètres et moyens de remonter au parking sont différents !!
Si on part sur une solution leaflet, (ce que je préconise par dessus tout...) on a plusieurs choix quand à la manière de gérer les informations affichées.
Il semble que tout soit possible avec l'outil d'Olav, mais on peut aussi le faire en ligne de commande.
TODO, voir avec Olav comment il génère ses dossiers de CA. On se base sur son dossier K0 pour le moment...
OU sous forme de commande:
openssl req -nodes -days 36525 -subj /CN=85.14.137.12/O=Elipce/OU=Elipce Informatique/L=Valence/C=FR/ST=France -text -utf8 -sha256 -newkey rsa:1024 -keyout D:/Mes Documents/Projets/Parking/tech/ssl/SERVER/server.key -out D:/Mes Documents/Projets/Parking/tech/ssl/SERVER/server.csr
OU par ligne de commande:
openssl ca -batch -utf8 -md sha256 -days 36525 -in D:/Mes Documents/Projets/Parking/tech/ssl/SERVER/server.csr -out D:/Mes Documents/Projets/Parking/tech/ssl/SERVER/server.crt
En utilisant le fichier de config du dossier du CA (ici ca/K0/openssl.cnf) et le CAserial fourni dans le dossier aussi.
Normalement le dossier de destination doit contenir 3 fichiers:
Même procédure que pour le certificat serveur mais avec des informations relatives au client dans la fenêtre de génération de la paire de clé:
Puis le signer, toujours avec le dossier du CA identique au serveur:
Normalement le dossier de destination doit contenir 3 fichiers:
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
Il peut être utile d'afficher et de pouvoir gérer les certificats installés sur le poste client. Pour cela, on peut passer par le navigateur (voir ci-dessus pour chrome) ou par un utilitaire Windows:
Gérer le mode visu sur la supervision: pas de menu de commandes forcées.
Attention aux clés event non répétées. Ex: sensor - ID:1 - state: online. Dans 10 chunks si le capteur est toujours 'online', la clé state n'est pas renvoyée .... solution: aller chercher le dernier state dans la table event_capteur pour l'ID concerné.
Hi Vivian,
I see you're downloading the events now.
Every now and then there seems to be some glitch.
The controller debug log says this:
[Log] ACK event number mismatch, his=3993, my=3995
Check that you're sending the right ACK numbers.
Full log below. Shows only messageType because of performance.
Let me know if you need more data logged.
Msg TX: eventData Msg RX: eventQuery Msg RX: eventQuery Msg RX: eventQuery Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery [Log] ACK event number mismatch, his=3993, my=3995 Msg TX: eventData Msg RX: eventQuery Msg RX: eventQuery Msg RX: eventQuery Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery [Log] ACK event number mismatch, his=3997, my=3999 Msg TX: eventData Msg RX: eventQuery Msg RX: eventQuery Msg RX: eventQuery Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery [Log] ACK event number mismatch, his=4003, my=4005 Msg TX: eventData Msg RX: eventQuery Msg RX: eventQuery Msg RX: eventQuery Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery Msg TX: eventData Msg RX: eventQuery
Regards,
Olav
Deux cas à régler:
Description fonctionnelle de l’édition de la topologie d’un parking.
Voir :
Même en utilisant vinyl_source_stream, on a une erreur en appliquant uglify sur le bundle. Il va falloir feinter !
La map est un composant à part entière qui ne peut être géré et piloté directement depuis un composant de type page comme c'est le cas pour les états "classiques".
Elle possède son propre store et une palanqué d'actions associés au fonctionnement Leaflet.
Leaflet n'est instancié qu'une fois lors du premier affichage
La partie Frontend est opérationelle. Les places sont créées dans le store de la carte, associés à leurs informations et prêtes à être envoyées côté serveur pour l'enregistrement.
Avant de les sauvegarder il faudra:
Actions.map.mode_place_auto()
onMode_place_auto
Puis trigger pour changer de mode dans la _MAP_onDraw_created
du _STORE_
createParallelogramme
sur le _STORE_trigger
vers le composant _MAP_ avec le parallélogramme en paramètres_onNewPlaceAuto
pour lancer l'ordre d'ouvrir la modale (Fonctionnement ReactBootstrap)renderOverlay
pour choisir la modale à ouvrir, en l’occurrence, this._modalPlaceMultiple()
Cette modale est un composant à part qui fonctionne avec la validation des formulaires traditionnelle.onSubmit_form
en fonction de l'id du form on sait qu'il s'agit de places multiples donc on appelle :this.handlePlacesMultiples
avec toutes les infos nécessaires. Test si l'espacement des poteaux fourni est cohérent avec le nombre de placesmapHelper.createPlacesFromParallelogramme
pour générer la liste des places puis trigger
vers la _MAP_onStoreTrigger
puis this.onFormesAdded
Pour le moment en l'état de squelette. Pour plus de détails, voir mes commits d'aujourd'hui:
La récupération des informations du parking devra passer par le groupe de routes identifié avec le commentaire GROUPE UTILISATEUR AUTHENTIFIE + DROITS ACCESS + DROIT PARKING
['before' => 'auth|auth.canaccess|auth.parking']
Pas moyen de récupérer les événements lancés par la classe config depuis la procédure d'init...
C'est bizarre, les tests en dur marchent mais quand c'est une requête qui arrive depuis le serveur, on ne reçoit rien...
Bonus track
Depuis ce matin, impossible d'envoyer le message capabilities à Olav en utilisant l'utilitaire messenger.
cela marche apparemment quand on utilise le send directement sur le client.
Quelle est la différence ??
Cela ne semble pas venir d'Olav
Développement d'un composant React pour gérer une sidebar right ou left
Le principe est d'avoir une barre de quelques pixels de large pour montrer l'emplacement de la sidebar et pour pouvoir la déplier.
Organisation du code :
Appel typique :
<Collapse align="right">
<CollapseBody>
*Contenu du body*
</CollapseBody>
<CollapseSide col-md>
*Contenu de la sidebar*
</CollapseSide>
</Collapse>
Message d'erreur quand on édite un profil et qu'on ne le modifie pas et qu'on sauvegarde
Est-il possible de supprimer la fenêtre de chargement.
L'asynchronisme poserait-il problème ?
- changement couleur place affectée
- Affectation du capteur id dans la place sur la carte
- Suppression du capteur de la liste restante
- Modification du message d'info
- Avertissement si on a affecté le dernier capteur
- Notification utilisateur (Place déjà affectée )
La procédure d'init est en partie fonctionnelle (Bus, capteurs et afficheurs)
Pour le moment elle était lancée à chaque connexion de controller.
Recalculer le dernier numéro de place pour l'outil places multiples quand des places sont supprimées
Prendre en compte le champ module_module.ordre.
Reprendre tous les usages de fonctionnalités deprecated et les remplacer par les nouvelles.
De manière générale, les champs rescription doivent être des textarea. Props area de InputFileEditable.
ex: popup de création d'une zone
A lancer depuis la supervision, va récupérer toutes les données du contrôleur et les insert en BDD
Dernier numéro de place sur le parking
Barre de menu:
Tableau de bord:
Plan :
Les events de type sensor doivent remonter au journal équipement plan via le capteur et la place.
https://github.com/purifycss/purifycss
A voir comment on pourra l'intégrer au workflow mais ça a l'air vraiment pas mal !
git clone -b mybranch --single-branch https://github.com/Elipce-Informatique/parking.git .
"git pull --ff-only origin branch
en changeant branch par la bonne branchegit pull --ff-only origin branch
Voilà, normalement tout est prêt pour les mises en prod des updates !
php artisan migrate
php artisan db:seed
Il reste à faire :
Lorsqu'on affiche les modules, il y a un scoll en bas de page.
De plus le bouton retour du bandeau est collé au bord.
Passer un coup de bootlint.
Actuellement, tous les capteurs semblent listés
Quelque chose à changé dans la requête qui va chercher les données du tableau de bord dans la supervision en fonction des préférences de l'utilisateur.
Exemple :
Dans le bloc général, si on ne sélectionne que générique, tout s'affiche !
Message: l'interval => intervalle
onEnter de la modal: valider le formulaire.
Analyser les cas particuliers et en dégager une règle.
Tout est loggé, il faut analyser les logs et réfléchir au moyen de décompresser les evts sans avoir des valeurs résiduelles sur des clés facultatives par exemple.
Actuellement le rayon de clustering est en dur dans la carte supervision.
Il serait bien de l'ajouter à la table plan pour le rendre paramétrable.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.