diff --git a/Jakefile.js b/Jakefile.js index 77aad19..8ee93fe 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -15,7 +15,7 @@ var fs = require('fs') task('build', function (version,destination) { var destinationDir = 'build'; switch(destination) { - case 'dist'; + case 'dist': destinationDir = 'dist'; break; } diff --git a/README.md b/README.md index 633066b..d993ae0 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Conversion d'un tableau HTML en fichier ODS disponible en téléchargement. Le principe de cette bibliothèque est de pouvoir écrire un lien proposant une version ODS (en fait au format .fods) d'un tableau HTML existant. L'exportation est opérationnelle sans aucune modification du tableau mais l'aspect du fichier résultant peut être substantiellement amélioré en ajoutant des attributs spéciaux (`data-od-*`) aux éléments du tableau et en proposant des styles suivant la syntaxe CSS. +Cette bibliothèque est testée sous Firefox ou Chromium pour des tableaux de petite taille. + ## Développement et compilation Le code Javascript est décomposé en plusieurs fichiers contenus dans *src/js/*, l'exemple *dev.html* du répertoire *demos/* charge ces fichiers séparément. @@ -35,7 +37,7 @@ Il est à noter que les attributs `colspan` et `rowspan` sont reconnus et appliq ### Élément `` -- `data-od-style` : style de la ligne +- `data-od-style` : style de la ligne (en cas d'absence de valeur, un élément `` a comme style *Header* s'il appartient à un élément ``, *Standard* sinon) ### Éléments `` ou `` @@ -86,21 +88,24 @@ Le nombre de propriétés acceptées est limitée et dépend du type d'élément - `font-size` : taille de la police - `font-style` : style de la police (*italic*) - `font-weight` : graisse de la police (*bold*) +- `overflow-wrap` : passage à la ligne si la valeurs est *break-words* ou *anywhere* - `padding` : remplissage (les déclinaisons en `padding-top`, `padding-left`, etc. sont possibles) - `text-align` : alignement horizontal du texte - `vertical-align` : alignement vertical du texte ### Styles prédéfinis -L'exportation propose des styles prédéfinis qui peuvent être directement utilisés dans les attributs `data-od-style` sans besoin de les déclarer dans le CSS : +L'exportation propose des styles prédéfinis qui peuvent être directement utilisés dans les attributs `data-od-style` d'une cellule sans besoin de les déclarer dans le CSS : - `Bold` : Texte en gras - `BoldItalic` : Texte en gras et italique -- `Header` : Entête de colonne, appliqué par défaut aux éléments `` +- `Header` : Entête de colonne, appliqué par défaut aux éléments `` et `` - `Italic` : Texte en italique - `Standard` : Style appliqué par défaut aux éléments ``, sans indication particulière -Ces styles peuvent être surchargés par le CSS. +Les lignes ont également comme style par défaut `Header` (si la ligne fait partie d'un ``) ou `Standard`. + +Ces styles peuvent être surchargés par le CSS. Même si le nom est le même, `cell.Standard` et `row.Standard` sont deux styles différents. ### Parenté entre les styles diff --git a/demos/dev.css b/demos/dev.css index f78c28f..eaf9a5b 100644 --- a/demos/dev.css +++ b/demos/dev.css @@ -68,3 +68,12 @@ row.Entete { height: 2cm; background-color: #ff00ff; } + +cell.LongTexte { + vertical-align: top; + overflow-wrap: break-word; +} + +row.HauteurFixe { + height: 0.45cm; +} diff --git a/demos/dev.html b/demos/dev.html index b7704b2..0892653 100644 --- a/demos/dev.html +++ b/demos/dev.html @@ -93,6 +93,10 @@ function fodsContent() { Classe 1 Classe 2 + + +

Exemple de texte long avec plusieurs paragraphes

Et qui ne déborde pas

quelque soit la longueur (la hauteur est réglée au niveau de l'élement <tr> parent

+
 
diff --git a/src/js/opendocument/OpenDocument.OdsConverter.js b/src/js/opendocument/OpenDocument.OdsConverter.js
index 6191102..263073c 100644
--- a/src/js/opendocument/OpenDocument.OdsConverter.js
+++ b/src/js/opendocument/OpenDocument.OdsConverter.js
@@ -326,7 +326,11 @@ OpenDocument.OdsConverter.default_getRowStyleName = function (row, styleManager)
     if (styleName) {
         return styleName;
     }
-    return "";
+    if ((row.parentNode.tagName) && (row.parentNode.tagName.toLowerCase() === "thead")) {
+        return "Header";
+    } else {
+        return "Standard";
+    }
 };
 
 OpenDocument.OdsConverter.default_getCellStyleName = function (cell, styleManager) {
diff --git a/src/js/opendocument/OpenDocument.Style.js b/src/js/opendocument/OpenDocument.Style.js
index 5e8285c..062cdc5 100644
--- a/src/js/opendocument/OpenDocument.Style.js
+++ b/src/js/opendocument/OpenDocument.Style.js
@@ -28,12 +28,25 @@ OpenDocument.Style.prototype.putStyleProperty = function (stylePropertyDef, valu
         case "color":
             value = OpenDocument.Style.formatColor(value);
             break;
+        case "wrap":
+            value = _convertWrap();
+            break;
     }
     var property = {
         name: propertyName,
         value: value
     };
     this.propertiesMaps.get(stylePropertyDef.category).set(propertyName, property);
+    
+    function _convertWrap() {
+        switch(value) {
+            case "anywhere":
+            case "break-word":
+                return "wrap";
+            default:
+                return "no-wrap";
+        }
+    }
 };
 
 OpenDocument.Style.prototype.setParent = function (parentStyleName) {
@@ -132,6 +145,12 @@ OpenDocument.Style.getStylePropertyDef = function (type, name) {
                         return "column-width";
                 }
                 break;
+            case "cell":
+                switch(name) {
+                    case "overflow-wrap":
+                        return "wrap-option";
+                }
+                break;
         }
         return name;
     }
@@ -234,6 +253,11 @@ OpenDocument.Style.STYLEPROPERTYDEFS = {
     "vertical-align": {
         name: "style:vertical-align",
         category: "table-cell"
+    },
+    "wrap-option": {
+        name: "fo:wrap-option",
+        category: "table-cell",
+        format: "wrap"
     }
 };
 
diff --git a/src/js/opendocument/OpenDocument.StyleManager.js b/src/js/opendocument/OpenDocument.StyleManager.js
index 7672980..fcc35f3 100644
--- a/src/js/opendocument/OpenDocument.StyleManager.js
+++ b/src/js/opendocument/OpenDocument.StyleManager.js
@@ -396,5 +396,19 @@ OpenDocument.StyleManager.DEFAULT_STYLES = [
             "text-align": "center",
             "vertical-align": "middle"
         }
+    },
+    {
+        type: "row",
+        name: "Standard",
+        parent: "",
+        properties: {
+        }
+    },
+    {
+        type: "row",
+        name: "Header",
+        parent: "",
+        properties: {
+        }
     }
 ];