Développer des nouvelles fonctionnalités

Bonjour,

Je suis actuellement en stage de développement informatique au RunFabLab, un fab lab à La Réunion. Ce fab-lab a décidé d’adopter la solution fab-manager mais désire ajouter des nouvelles fonctionnalités à ce logiciel. Ces fonctionnalités sont :

  1. Connexion:
    • Pouvoir se connection via un login ✓
    • Pouvoir se connecter via un identifiant RFID ✓
  2. Dans 'Gérer le calendrier' :
    • Pouvoir créer des plages horaires à une date antérieure à celle d'aujourd'hui ✓
    • Pouvoir créer des plages horaires de 30 minutes
  3. Dans 'Gérer les machines > Réserver' :
    • Afficher les plages horaires de disponibilités machines à une date antérieure à celle d'aujourd'hui afin de pouvoir faire des factures à une date passée ✓
  4. Dans 'Gérer les utilisateurs > Éditer' :
    • Pouvoir supprimer un utilisateur ✓
  5. Créer un module de communication entre les utilisateurs du site
J'aimerais avoir des conseils sur comment m'y prendre c'est à dire comment le faire le plus propre possible tout en respectant votre architecture :slight_smile:.

Salut,

Tu peux regarder dans le dossier doc, il y quelques schémas qui peuvent t’aider mais nous n’avons jamais pris le temps de rédiger une documentation complète d’architecture.

L’idée étant que l’application client est un application web rédigée en angular.js 1.x avec coffeeScript et qu’elle s’appuie sur une API écrite en ruby on rails qui va elle-même chercher ses infos dans postgreSQL et dans elasticSearch.

L’API ruby on rails utilise une architecture basée sur les conventions rails (dossier app). Quant à l’application angular, elle est effectivement conçue sur un principe proche du MVC : le dossier app/assets/javascripts contient les contrôleurs et les services (sortes de modèles qui communiquent avec l’API) et le dossier app/assets/templates contient les vues.

N’hésite pas si tu as d’autres questions.
Bonne journée,

Bonjour,

Merci Sylvain pour la réponse concernant l’architecture, cela ma permis de mieux cibler mes recherches.
Actuellement, j’essaie d’ajouter la possibilité des créer des plages horaires de 30 minutes mais je me heurte à un problème :
Dans le fichier app/assets/javascripts/controller/admin/calendar.coffee.erb, dans la fonction calendarSelectCb j’ai enlevé la vérification que la plage horaire sélectionnée soit un multiple de 60 afin de pouvoir choisir des multiples de 30. Le pop up s’ouvre bien lorsque je clique sur une case mais il comporte des bugs :

Que doit-je modifier afin de pouvoir ajouter cette fonctionnalité sans erreur ? :sob:

Salut,
C’est un peu plus compliqué que ça :slight_smile:
Les créneaux sont bridés pour être des multiples d’une heure car, lors de la récupération via l’API d’une plage de disponibilité, celle-ci sera automatiquement découpée en « slots » d’une heure afin que chacun de ces créneaux soit réservable par un utilisateur.
La constante SLOT_DURATION est définie dans app/helpers/application_helper.rb.
Le point d’entrée pour ce qui t’intéresse se trouve dans app/controllers/api/availabilities_controller.rb mais je ne te garantie pas que ça sera trivial :wink:
Bon courage !

Edit: Au passage, si tu veux proposer tes modifications dans le dépôt principal, il va y avoir pas mal de points techniques à discuter pour assurer la continuité de la production des fablab existants, toutes les fonctionnalités ne sont pas forcément acceptables sans discussion préalable sur les spécs. Évidemment, si c’est pour ton propre fork, tu fais ce que tu veux :slight_smile:

Bonjour,
J’ai réussi à créer des slots de 30 minutes, merci pour l’aiguillage. :thumbsup:

Problème : lorsque je réserve une machine pour 30 minutes, le prix reste le même que pour 1 heure. J’aimerai savoir où est fait le calcul du prix pour les réservations ? :slight_smile:

Je ne suis pas sûr de ce que le dépôt principal est (désolé, tout cela est un peu nouveau pour moi). Si il s’agit de partager ce que je fais, je serais ravi. Comment doit-je m’y prendre ?

Hello,
Désolé j’avais oublié de te répondre. Le calcul du prix est fait dans app/models/price.rb.
Le dépôt principal est le GitHub de la Casemate. Si tu souhaites que ta fonctionnalité soit puisse être intégrée dans le projet principal, il faudra à minima que la durée des plages horaires soit paramétrable via l’interface.
Bonne journée

@RPSebb a tu prévu de partager des modifications sur git, ou l’a tu peut être déjà fait sur la branch dev ?
Je suis fortement intéresser par la connexion via un badge RFID.