Fitex 2.0 : réorganisation du code et améliorations diverse
Réorganisation du code
Le code est réorganisé en 3 fichiers JS :
-
fitex_view.js
defines thefitex_view
object with the display functions, called by the control functions- they define the HTML structure of the dom in
$HTMLcontentLD
- they get their data directly from the XML model
$XMLcodeLD
or by calling a get function of the model :globalLD.model.getXXX()
- they define the HTML structure of the dom in
-
fitex_model.js
defines thefitex_model
object that contains functions for manipulating (compute data, update model, check the coherency, give access to data) the model data inglobal_tab_ld[id_ld]
. The latter is a hybrid object containing XML & json data:- ld_type {string}: "dataset"
- ld_history {array of XML strings}: local versions of LD contents
- ... other usual attributes of LD (ld_initial_name, current_i, etc. - not used by the Fitex functions)
- ld_content {XML object}: LD content
- max_display_rows {int}: number of rows displayed on screen
- columns[] {asociative array of objects}: [col_code => object] only the columns that have a formula
- cfunc {compiled Mathjs-function}
- dependencies[] {array of strings} symbols of constants or column-codes (numline and numrow are excluded)
- graphs[] {array of objects}:
- xmin, xmax, ymin, ymax {float}
- plots[] {array of arrays of floats}: [x,y,ux,uy] (used by flot to draw the plots) May be sorted on x to compute distances
- outliers_plots[] {array of arrays of floats}: [x,y,ux,uy] (used by flot to draw the plots)
- pfuncs[] {array of objects}:
- cfunc {compiled Mathjs-function}
- is_fy {Boolean}
- dependencies[] {array of strings} symbols of constants or parameters, x or y
- data[] {array of arrays of floats}: [x,y] (used by flot to draw the curves) May be sorted on x to compute distances
- view: reference to the js object that encapsulates the display functions
- model: reference to the js object that encapsulates the model functions
-
fitex_control.js
contains the control functions that are initialized at the creation of the LD throughdisplayDataSet()
. All controls are attached to$("#labdoc_content_"+id_ld)
=$HTMLcontentLD
and then filtered by a class. Ex :$HTMLcontentLD.on("click", ".class", function () { })
; a usual control function does the following actions :- check the input values
- update the model with the input values by calling model functions :
[ let updated = ] globalLD.model.updateXXX()
- save a local version of the LD :
saveLocalLDVersion(id_ld)
; - update the view :
refreshDataSet(updated)
orglobalLD.view.xxx
Améliorations diverses
Format global du tableau :
-
@wajemann : ajouter l'indicateur statistique N : nombre de données -
meilleur ajustement de la hauteur de l'affichage du tableau de données en édition ou en view -
Le surlignage des entêtes de lignes ou colonnes grise les cellules de la ligne ou colonne -
@hoffmanc & Ronald : pouvoir afficher les constantes apparaissent même si Fitex n'est pas en mode édition -
@wajemann : ajouter une zone sous le tableau dans laquelle sont listées les constantes et les grandeurs (pour chaque grandeur les infos mentionnées dans les propriétés de la colonne) => affichage du nom de colonne, du type de données et du panneau des constantes au survol -
Enter valide les cadres de propriétés de graphique, de propriétés de colonne et de constantes
Cases :
-
Ronald : indiquer les cases non modifiables calculées par une formule : fond vert -
Highlight de la case en mode hover > clicked > edited -
Place de la case à cocher (CSS) dans les cellules et du = dans les formules -
Copier-coller utilisant la nouvelle implémentation javascript avec possibilité de transférer des données entre LNB et un autre outil -
Actions des touches de clavier (enter, tab, shift-tab, flèches) plus intelligentes : setFXEditableCellBehaviour
Formules :
-
Améliorer la propagation des calculs et des case ignorées avec des formules relatives - Cf. #210 (closed) : en cas de formule avec position relative comme masse(0)-masse(-1)
, le statut "ignoré" et le changement de valeur d'une cellule source devrait modifier des cellules sur d'autres lignes. Ce n'est pas toujours le cas. -
Pouvoir utiliser . et , comme séparateurs décimaux quand on rentre une valeur dans une case mais aussi une formule de colonne ou de fonction paramétrée : -
Accepter la , comme séparateur décimal -
Utiliser le ; comme séparateur de paramètres de fonction (min et max)
-
-
Garder le curseur au point d'insertion d'une fonction dans une formule -
A. Legay : pouvoir augmenter la taille de la propriétés des colonnes pour créer des grandes formules
Graphiques :
-
Pouvoir déplacer les graphiques -
@wajemann : pouvoir choisir les légendes d'axe -
AL Perriollat : pouvoir faire un tracé entre les points : liaisons ou lissage - cf. #701 (closed) -
A. Legay : pouvoir utiliser une constante comme incertitude -
N. Meunier & @hoffmanc : améliorer la gestion des fonctions log - cf. #705 (closed)
Fonctions paramétrées :
-
@hoffmanc : reprendre le calcul des indicateurs d'ajustement - cf. #470 (closed) -
Ronald : dans les fonctions paramétrées, indiquer le nb de points sur lequel est fait l'ajustement
Modifications demandées mais non prises en compte dans la V2
- Ronald : afficher les incertitudes sous forme d'ellipses => Flot ne le permet pas
- @wajemann: Lors de l'import des données et que le format de données change en cours de route dans une colonne, il semble que cela ne se passe pas bien. Typiquement les données passent d'une notation scientifique à une notation (heu ... ) pas scientifique dans une même colonne : 9.00E-1 passe à 1.00 ... => problème non reproduit. Il faudrait le fichier importé. Toute la fonction d'import a été modifiée
- @wajemann: utiliser les indicateurs stats dans les calculs. Ex : min(col) ou max(col) => trop complexe à mettre en place (surtout avec les problèmes d'update en cascade)
- Pouvoir ouvrir les propriétés de colonne par double-click => incompatible avec le menu jquery qui s'affiche au click. Un raccourci d'ouverture a été ajouté quand on clique sur la formule.
- @wajemann: une valeur issue d'un calcul devrait aussi pouvoir être notée aberrante => pas d'accord : c'est la mesure qui est aberrante
- Les formules devraient pouvoir accepter les écritures data(X) ou data[X] pour les lignes relatives => trop compliqué et pas une grosse plus-value