Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bunlang.master #27

Merged
merged 296 commits into from
Jun 24, 2016
Merged

bunlang.master #27

merged 296 commits into from
Jun 24, 2016

Conversation

rguilbault
Copy link
Collaborator

@rguilbault rguilbault commented May 30, 2016

Voici tout plein de modifications sur le projet. Je vais essayer de tout lister.

Dernière mise à jour : 22 juin, 11h30

Amélioration de l'ajout / modification de conférences / communautés

Chaque conf / commu est représenté par 1 fichier, dans une arborescence de type <Nom Ville>/<id>.json. C'est plus simple à modifier qu'un fichier par ville en mode compressé...

Plus d'informations ici.

Ajout des tags

Cela était en partie déjà en place, mais maintenant c'est affiché.
Les tags sont également cliquables pour permettre de lancer une recherche sur ce terme.

Amélioration de l'outil de recherche

La recherche est maintenant paginée (avant seul 10 résultats maximum étaient affichés).

De plus, la création de la requête passe par une classe ElasticSearch permettant de la créer, plutôt que par du JSON (faire une recherche pouvant intégrer une pagination, un filtre, un tri et une requête est plus simple ainsi).

Ajout des chaînes vidéos pour les conférences / communautés

Juste 2 champs à ajouter : youtube (il y a le nom aussi à indiquer, car l'url est un genre de hash) et parleys.

Amélioration des tests

On passe de 10% sur 500 lignes à 83% sur 1550 lignes en couverture.

Ajout des événements à venir, création d'une timeline

Comme pour les conférences / communautés, mais pour les événements. Chaque événement est représenté par un fichier JSON, dans une arborescence de type <année>/<mois>/<id>.json.

Plus d'informations ici.

La timeline remplace l'agenda qui était en place auparavant.

Ces événements sont également intégrés à l'outil de recherche (il y a un choix à faire entre conf / commu et événements sur la page /search).

Plus grande utilisation de Meetup

Meetup est utilisé également pour importer les événements à venir, pour les commus qui ont renseigné le champ meetup.

Il y a en plus un rechargement automatique sur Clever de manière quotidienne. (2h UTC)

Ajout des CFP pour les événements

Juste un champ à ajouter, avec l'affichage du statut du CFP (ouvert ou fermé).

Ajout des localisations et création d'une minimap

Chaque ville possède sa localisation (fichier ressource : cities/cities.json). Cela permet :

  • De créer une mini-carte qui place les liens suivant les coordonnées (service utilisé : OpenStreetMap)
  • Lors de l'affichage d'une ville, d'associer les événements qui s'y dérouleront (ici, 20km autour).

La mini-carte ne s'affiche pas pour les "très petits" écrans selon Bootstrap (taille de l'image fixe à 600px de large...), et affiche les liens classiques.

Et bien sûr, "Partout" n'a pas de coordonnées...

Amélioration de CityLight

Les données par villes ont été découpées plus finement. Maintenant, par ville, il y a :

  • Total de conférences
  • Total de communautés
  • Total d'événements à venir
  • La somme des 3 précédents

Ainsi, le passage sur une ville de la carte permet d'afficher ces informations, et si la ville n'est pas géolocalisée ou sur les petits écrans, ces informations sont affichées lorsqu'on est dessus.

Mise à jour des librairies

Toutes les dépendances sont mises à jour :

  • ReactJS 0.13.3 -> 15.1.0
  • ElasticSearch 1.5.2 -> 1.7.5 (version utilisée par Clever Cloud)
  • et plein d'autres, que ce soit avec npm ou maven...

Changements sur la page d'accueil

Une barre de recherche remplace le lien vers la page /search (cette page reste active, mais l'accès se fait uniquement via URL). Maintenant, la timeline et la mini-carte se mettent à jour suivant le contenu de la recherche (attention, il faut maintenant faire Enter pour lancer la recherche), et chaque lien renvoie vers sa ville, avec le filtrage par le terme recherché.

Les événements ont également un effet collapsible : seuls le nom, la date et le lieu sont affichés par défaut.

Enfin, le layout de la page a été revu.

Ajout des suggestions dans la barre de recherche

La barre de recherche affiche les suggestions par rapport à son contenu. Un clic sur l'item lance une recherche.

Ajout d'un menu sur l'avatar

Maintenant, la connexion / déconnexion, l'aide, et la liste des favoris se trouvent dans un menu s'affichant en cliquant sur l'avatar.

Utilisation de l'authentification

Chaque utilisateur connecté via Github peut maintenant avoir ses favoris. Cela peut être :

  • une ville (avec éventuellement un filtre pour le sujet)
  • un terme de recherche
  • une conférence / une communauté / un événement à venir

Ces favoris sont affichés dans le menu en haut à droite, avec des liens qui

  • lancent une recherche (terme de recherche)
  • affiche la ville, avec éventuellement un filtre sur le sujet (ville)
  • affiche la liste des conférences / communautés / événements favoris sur une nouvelle page

Ainsi, les favoris permettent d'ajouter :

  • Un boost sur les termes de recherche favoris (ce sont les premiers à s'afficher lors d'une recherche, et ils s'affichent aussi si aucune recherche n'est lancée)
  • Un système de notifications (Les percolateurs ElasticSearch ça sert ;) ).

Sur les notifications, à chaque favori est associé une recherche (c'est séparé par utilisateur). pour chaque document créé / modifié, ES regarde les favoris qui correspondent :

  • terme de recherche : si l'Event entre dans la recherche
  • ville : si l'Event se trouve dans la ville (2 recherches : nom de ville [conférence / communauté] et géolocalisation [événements])
  • conférence / communauté / événement : L'identifiant correspond

Dans ces 3 cas, une nouvelle notification est envoyé aux utilisateurs concernés (Une seule par mise à jour, le fait d'avoir un document entrant dans 2 favoris est géré, avec une priorité "terme < ville < identifiant"). Le texte est bien sûr personnalisé dans chaque cas, et un lien vers la donnée en question est fourni.

Travail sur la recherche

J'ai joué avec les requêtes de recherche pour avoir le comportement suivant :

  • Ordre des résultats par propriétés : id >>> name >>> tags > description, url
  • Pour les tags, c'est seulement un boost, (dans un clause should, et non must), car comme je l'ai un peu favorisé par rapport à la description et à l'url, un document qui n'a QUE le tag recherché, et rien dans les autres propriétés, serait devant un qui aurait le mot dans la description...

Ajout d'une routine cron

Tous les jours, à 2h (UTC normalement), Clever lance une routine qui met à jour l'index. Cette routine :

  • Demande à Meetup les événements à venir
  • Enlève les événements passés
  • Enlève les documents qui sont marqués "à supprimer"

Sur ce dernier point, pour tous les fichiers JSON, j'ai ajouté un champ : hidden : ainsi, s'il vaut true, le document sera supprimé par la routine cron. Bien sûr, un document supprimé et marqué hidden ne sera pas importé ensuite, ce qui permet de supprimer dans un second temps le fichier JSON du dépôt, éventuellement. Idem pour les événements passés.


Changements sur les mappings

Il faudrait repartir de zéro au niveau des types (donc oui, ça entraîne une perte des données, surtout le type users, mais il était peu utilisé sur master), car comme pas mal de changement ont été apporté à ce niveau-là, ne pas le faire pourrait entraîner des bugs. Dans ce cas, il faut ajouter à clevercloud/maven.json l'option -DCREATE_MAPPINGS=true (mais sur 1 seul push master, sinon les données seront effacées systématiquement...)

Bugs connus

  • La compilation partie front-end avec npm run build prend beaucoup de temps, à cause de la partie minifier du bundle.js (14x sur mon ordi : 2'45 contre 12"). J'ai rajouté npm run build-dev, qui fait une compilation simple, mais en mode développement. Cependant, Maven utilise toujours le mode production, via scripts/npmbuild.sh. Peut-être que définir 2 profils dans Maven (mode prod [seulement pour Clever] et mode dev [défaut]) serait pas mal...

Je pense n'avoir rien oublié pour le principal.

rguilbault added 30 commits May 16, 2016 12:08
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
WAS - 10% :  50/498 (  0/114       in events package)
NOW - 27% : 136/499 ( 86/115 = 74% in events package)

Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Test file in /calendar/testEvent.json

Signed-off-by: Ronan GUILBAULT <[email protected]>
Add 2 more Calendar Events for test

Signed-off-by: Ronan GUILBAULT <[email protected]>
Allow compare epoch numbers when filter

Signed-off-by: Ronan GUILBAULT <[email protected]>
Not detect meetup ids in Event yet

Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
WAS - 21% : 136/635 (  0/159 -> 00% in jobs)
NOW - 39% : 250/640 (105/160 -> 65% in jobs)

Signed-off-by: Ronan GUILBAULT <[email protected]>
WAS - 39% : 250/640 ( 95/130 in events)
NOW - 40% : 257/640 (102/130 in events)

Signed-off-by: Ronan GUILBAULT <[email protected]>
WAS - 40% : 257/640 (105/160 in jobs)
NOW - 42% : 274/645 (122/161 in jobs)

Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Will be useful with notifications...

Signed-off-by: Ronan GUILBAULT <[email protected]>
id >>> name >>> tags* > description, website/url

*help in boost ONLY (must() clause doesn't use this property)

Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
…up call only

This daily job delete old documents ("date" filed in `calendarevents` type) and hidden documents ("hidden" field)

Signed-off-by: Ronan GUILBAULT <[email protected]>
…s on an existing `dev-conferences` index

Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Move all in 2 classes : DefineOptions and DCSetup

Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
Signed-off-by: Ronan GUILBAULT <[email protected]>
@rguilbault rguilbault merged commit e821d68 into master Jun 24, 2016
@rguilbault rguilbault deleted the bunlang.master branch June 27, 2016 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant