Comme ses devancières 2.00 et 2.10, cette version marque une évolution majeure de FoxInCloud avec 60 nouveautés dont 40 améliorations et 20 correctifs importants.
Comme toujours, nos utilisateurs ont fortement influencé nos priorités au travers de leurs demandes de support émanent souvent de leurs propres utilisateurs.
Nous avons aussi poursuivi notre stratégie permettant à toute application Visual FoxPro 9, oui nous disons bien TOUTE APPLICATION VFP9 de fonctionner sur le Web avec les technologies HTML/CSS/JS standard, des temps de réponse et un confort d'utilisation qui fait pâlir plus d'un concurrent, y compris parmi les grands éditeurs.
L'axe majeur de cette stratégie est l'élargissement permanent du spectre de support des fonctionnalités de VFP, et les outils pour contourner les obstacles inhérents au Web comme les temps de réponse et la complexité des technologies mises en œuvre.
Braquons donc le projecteur sur deux évolutions majeures de cette version ...
La grille paginée
Comme elle est au centre de bien des applications VFP, la grille est aussi au centre de notre stratégie et nous consacrons beaucoup de temps à en améliorer sans cette le support.
Grâce à la rapidité de VFP, beaucoup d'applications présentent des milliers, voire des dizaines de milliers d'enregistrements dans des grilles. Sur le Web de tels nombres ne sont guère raisonnables non seulement à cause du volume de données à transporter mais aussi parce que, reconnaissons-le, la vitesse du rendu graphique HTML/CSS/JS est bien inférieur aux performances de VFP !
Pour que de telles applications puissent malgré tout être portées sur le Web sans ré-écriture, nous avons ajouté à la bibliothèque de classes FoxInCloud (aw.vcx) un conteneur magique : posez une instance de ce conteneur sur votre écran, réglez-le aux mêmes dimensions et position que votre grille, coupez votre grille (ctrl+x), entrez à l'intérieur du conteneur et collez-y votre grille. C'est absolument tout ce que vous avez à faire pour que votre grille soit automatiquement paginée en mode Web. Et ceci sans changer une ligne de code car le conteneur mime le comportement de la grille en répondant exactement aux mêmes méthodes et propriétés.
Vous pouvez bien entendu garder l'accès à vos milliers d'enregistrements simplement en ajoutant des indexes sur les champs qui sont .controlSource des colonnes de la grille : pour chaque index trouvé, foxInCloud implémente sur l'en-tête de la colonne correspondante :
- sur .Click() le tri ascendant/descendant
- sur .RightClick() une case de filtre apparaît où vous pouvez filtrer les enregistrements visibles dans la grille.
Vous pouvez aussi régler le nombre de lignes par 'page', et naviguer entre pages, aller au début/fin. Enfin vous avez toute liberté pour modifier l'aspect visuel des contrôles de navigation dans votre instance VFP, et/ou dans les classes CSS de votre application (xxx.css)
Le tutoriel de test vivant
Vous vous demandez si FoxInCloud supporte telle ou telle fonctionnalité de VFP ? Vous cherchez un exemple simple et concret d'une adaptation de code pour le Web ? Vous trouverez toutes vos réponses en un seul et unique point : le tutoriel de test vivant FoxInCloud
Vous y verrez notamment fonctionner :
Nous vous invitons à utiliser cette application très régulièrement car nous allons en faire le point focal de notre communication, par exemple en y implémentant systématiquement toutes les nouveautés de FoxInCloud - vous pourrez ainsi, par votre expérience et - nous l'espérons - vos remontées d'informations, contribuer au développement et la fiabilisation continuelle de FoxInCloud (nous implémenterons très prochainement une fenêtre de feed-back pour envoyer un message et/ou poster un commentaire).
Dans les mois qui viennent, notre développement va s'articuler autour de ces grands axes :
Intégrer le 'Responsive Web Design'
Nous constatons que beaucoup de nouveaux développeurs adoptent FoxInCloud pour exposer tout ou partie de leur application sur des terminaux mobiles comme les tablettes et/ou les smartphones.
En général les écrans existants dans l'application ne sont pas adaptés à la taille et aux proportions de ces écrans ; de plus les utilisateurs attendent une 'remise en page' automatique lorsqu'ils basculent l'écran entre portrait et paysage.
Bien entendu, comme dans cette démonstration, FoxInCloud offre déjà des solutions à ce problème. Toutefois, cette solution passe par un processus assez complexe :
- sauver un écran comme classe VFP
- redéfinir l'écran scx d'après cette classe
- créer d'autres scx basés sur la même classe d'écran pour les diverses résolutions et orientations visées
- générer le HTML/CSS (do xxxTest|Prod.css.prg)
- copier-coller le HTML/CSS généré dans xxx.css au sein des directives CSS @media appropriées (CSS 3 media query)
Nous allons donc élaborer un système permettant, grâce à quelques propriétés et/ou méthodes héritées de aw.vcx!aw*, de transfigurer votre application VFP 'rigide' en Application Web Adaptative (Responsive Web Application).
Enrichir l'expérience utilisateur autour du tutoriel de test vivant FoxInCloud
Le tutoriel de test vivant concentre en un lieu facile d'accès toutes les possibilités et nouveautés de FoxInCloud.
Dans les prochaines semaines, nous allons:
(1) Ajouter des possibilités existantes non encore illustrées
- Moderniser l'interface graphique vers Mac OSX Yosemite et Windows 8+ ;
- Contrôles et événements, onglet 'Grille' : autres classes de base supportées dans les colonnes : image, checkbox, editbox, etc. ;
- Mise à jour des données (grille) : pour simuler l'accès aux données distantes par SQL pass through, .RecordSource = curseur (sans cursorAdapter) ;
- Echange de données entre formulaires : autres types de données échangées: dates, objet, etc., et possibilité de personnaliser les données passées à la méthode .Init() de l'écran enfant ;
- et bien d'autres évolutions ...
(2) Ajouter des nouvelles fonctionnalités, des améliorations, des corrections
Chaque évolution de FoxInCloud, qu'il s'agisse de la résolution d'un bug signalé par un utilisateur, d'une amélioration ou d'une nouvelle fonctionnalité, sera implémenté en priorité sur le tutoriel de test vivant FoxInCloud. Les utilisateurs pourront ainsi aisément prendre modèle sur le code source démontré en ligne et inclus dans l'installation FoxInCloud pour adopter ces améliorations dans leur propre application.
(Encore) simplifier l'Assistant d'Adaptation FoxInCloud
Nous identifions 2 voies de progrès principales pour l'Assistant d'Adaptation (FAA) :
(1) structurer les adaptations plus par 'type de travail' que par 'phase de travail'
Aujourd'hui les adaptations sont regroupées par phase dans le processus global du projet : avant / après l'adaptation automatique, après la publication, etc.
En complément ou en remplacement de ces catégories, nous pensons à un regroupement par type de travail tel que:
- ajouter du code en tête de méthode
- déplacer du code dans une autre méthode
- remplacer un appel de procédure ou de méthode native par un appel de méthode FoxInCloud
- etc.
Plus concrète, cette 'nomenclature' devrait faciliter la planification du projet et la répartition du travail entre les membres de l'équipe.
(2) Simplifier certaines adaptations automatiques
En service depuis 2010 (5 ans au moment où ces lignes sont écrites), et grâce aux nombreux retours des utilisateurs, nous disposons d'un large retour d'expérience sur l'Assistant d'Adaptation (FAA) qui nous permet d'envisager les adaptations sous une forme plus simple.
Par exemple, l'ajout de 3 lignes en début de méthode suffit dans de nombreux cas, comme les méthodes .Init() de formulaires :
if m.this.wlInitFirst
return
endif
Cette méthode est beaucoup plus simple que la précédente où nous testions pCount(), et peut s'appliquer à toutes les méthodes form.Init(), avec ou sans paramètre.
'semver' est l'abréviation de 'semantic versioning', en clair le numérotage des versions significatif.
Au lieu de décider arbitrairement d'augmenter le n° de version majeur, mineur ou l'indice d'évolution, chacun de ces chiffres correspond à un type d'évolution bien précis.
La numérotation des versions devient ainsi un peu moins spectaculaire (plus de saut brutal) mais beaucoup plus significative pour ceux qui suivent attentivement la succession des versions.
Aujourd'hui la plupart des frameworks JavaScript ont adopté ce système qui permet entre autre l'utilisation de systèmes de déploiement automatisés comme npm, Bower, Grunt ou Yeoman.
Nous serons amenés à réviser notre roadmap selon cette nouvelle numérotation ; afin de mieux tenir notre calendrier, nous veillerons aussi à mieux prendre en compte le temps nécessaire à répondre aux demandes des utilisateurs (améliorations, évolutions, bug fixes)
Enrichir la documentation
Une fois que toutes les évolutions méthodologiques décrites ci-avant seront stabilisées, nous reprendrons la construction du site de documentation doc.foxincloud.com.
La documentation FoxInCloud reposera sur les principes suivants :
- vivante : tutoriel vivant et videos tiendront une large place
- maillée : les outils FoxInCloud (FAA, FAS) conduiront directement aux items de documentation pertinents
- interactive : les utilisateurs pourront réagir et/ou demander du support sur les différents items de documentation, la documentation et le forum seront liés. |