Possibilité de faire une correspondance entre un style et plusieurs classes différentes
This commit is contained in:
parent
4494f39a6c
commit
4971a002e9
@ -16,7 +16,7 @@ En mode développement, les fichiers de *src/js/currency*, *src/js/xmlwriter* et
|
|||||||
|
|
||||||
## Attributs spéciaux des éléments HTML
|
## Attributs spéciaux des éléments HTML
|
||||||
|
|
||||||
L'exporation peut être configurée à l'aide d'attributs nommés `data-od-*`. Ils sont tous facultatifs et sont placés au niveau des différents éléments composants le tableau.
|
L'exportation peut être configurée à l'aide d'attributs nommés `data-od-*`. Ils sont tous facultatifs et sont placés au niveau des différents éléments composants le tableau.
|
||||||
|
|
||||||
Il est à noter que les attributs `colspan` et `rowspan` sont reconnus et appliqués ainsi que l'attribut `span` pour les éléments `<col>` ou `<colgroup>`.
|
Il est à noter que les attributs `colspan` et `rowspan` sont reconnus et appliqués ainsi que l'attribut `span` pour les éléments `<col>` ou `<colgroup>`.
|
||||||
|
|
||||||
@ -110,4 +110,6 @@ Le seul lien possible entre les styles est celui de la parenté, le style enfant
|
|||||||
|
|
||||||
Il est fort probable que certaines éléments du tableau disposent déjà de classes CSS pour la mise en forme de la version HTML. Pour éviter d'utiliser l'attribut `data-od-styles` pour ces éléments, il est possible d'établir une correspondance entre un style et une classe CSS. Pour cela, on utilisera l'opérateur CSS `~` (qui est donc détourné de sa signification habituelle en CSS) sous la forme `cell.NomDuStyle ~ .ClasseHtml`.
|
Il est fort probable que certaines éléments du tableau disposent déjà de classes CSS pour la mise en forme de la version HTML. Pour éviter d'utiliser l'attribut `data-od-styles` pour ces éléments, il est possible d'établir une correspondance entre un style et une classe CSS. Pour cela, on utilisera l'opérateur CSS `~` (qui est donc détourné de sa signification habituelle en CSS) sous la forme `cell.NomDuStyle ~ .ClasseHtml`.
|
||||||
|
|
||||||
Pour le moment, la correspondance n'est possible que vers une classe unique, tout autre sélecteur ne fonctionnera pas : les sélecteur d'identifiant (`#Id`) ou de plusieurs classes (`.Classe1.Classe2`), notamment, ne sont pas reconnus.
|
L'opérateur `~` doit être placé à la fin (notamment après l'indication d'une éventuelle parenté avec `+`) car le style peut correspondre à plusieurs classes différentes : `cell.NomDuStyle ~ .Classe1 .Classe2`.
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,6 +47,10 @@ cell.Heritage + cell.Bold {
|
|||||||
border: 0.75pt solid #333;
|
border: 0.75pt solid #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cell.Correspondance ~ .class1 .class2 {
|
||||||
|
color: #ff00ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
column.Longue ~ .longuecolonne {
|
column.Longue ~ .longuecolonne {
|
||||||
width: 12cm;
|
width: 12cm;
|
||||||
|
@ -88,6 +88,11 @@ function fodsContent() {
|
|||||||
<td data-od-type="date" data-od-text="2020-12-01">01/12/2020</td>
|
<td data-od-type="date" data-od-text="2020-12-01">01/12/2020</td>
|
||||||
<td data-od-type="date" data-od-text="2021-01-11">11/01/2021</td>
|
<td data-od-type="date" data-od-text="2021-01-11">11/01/2021</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Exemple de correspondance de plusieurs classes</td>
|
||||||
|
<td class="class1">Classe 1</td>
|
||||||
|
<td class="class2">Classe 2</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<pre id="text"></pre>
|
<pre id="text"></pre>
|
||||||
|
@ -270,11 +270,13 @@ OpenDocument.StyleManager.readStyleSheet = function (styleManager, styleSheet) {
|
|||||||
let operatorToken = tokens[index];
|
let operatorToken = tokens[index];
|
||||||
switch(operatorToken) {
|
switch(operatorToken) {
|
||||||
case '~':
|
case '~':
|
||||||
__addMatchingClass(_parseClass(tokens[index +1]));
|
for(let i = index +1; i <= length; i++) {
|
||||||
index ++;
|
__addMatchingClasses(tokens[i]);
|
||||||
|
}
|
||||||
|
index = length;
|
||||||
break;
|
break;
|
||||||
case '+':
|
case '+':
|
||||||
__setParent(_parseClass(tokens[index +1]));
|
__setParent(tokens[index +1]);
|
||||||
index ++;
|
index ++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -282,31 +284,29 @@ OpenDocument.StyleManager.readStyleSheet = function (styleManager, styleSheet) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function __addMatchingClass(matchingClass) {
|
function __addMatchingClasses(token) {
|
||||||
if (!matchingClass) {
|
if (!token) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let map = styleManager.matchingClassMaps.get(type);
|
let map = styleManager.matchingClassMaps.get(type);
|
||||||
if (map) {
|
if (!map) {
|
||||||
map.set(matchingClass, style.styleName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function __setParent(parentStyleName) {
|
|
||||||
if (!parentStyleName) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
style.setParent(parentStyleName);
|
if (token.startsWith('.')) {
|
||||||
|
map.set(token.substring(1), style.styleName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
function __setParent(token) {
|
||||||
|
if (!token) {
|
||||||
function _parseClass(classToken) {
|
return;
|
||||||
let dotIndex = classToken.indexOf('.');
|
}
|
||||||
if (dotIndex === -1) {
|
let dotIndex = token.indexOf('.');
|
||||||
return false;
|
if (dotIndex !== -1) {
|
||||||
|
style.setParent(token.substring(dotIndex + 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return classToken.substring(dotIndex + 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user