wiki:docs/j2slayouttoolbox/reference/sample/archcurseur

Le curseur pour Arch (boxRepeater, visibleIf, appel de script)

Contexte

Le but est de générer un curseur composé de n postes. Chaque poste comporte un numéro et un texte. Les postes peuvent être activés individuellement. Dans la pratique, chez le client, le curseur est composé de quatre postes et un seul d'entre eux peut être activé.

Cet exemple montre l'utilisation du contrôle boxRepeater? et visibleIf.

Exemple de résultat :

Modèle InDesign

Les deux containers indiquant où générer le bandeau de curseurs (containerglobal, le cadre d'un seul poste de curseur inactif (container1) ou actif (containeractif1) :

Le fond gris (fond) et le cadre actif (cadreactif1) :

La zone générée quand le piste n'est pas actif. Le nom (nom1) et le numéro (numero1) :

La zone générée quand le poste est actif. Le nom (nomactif1, le numéro actif (numeroactif1) et le fond du numéro (fondnumeroactif1) :

Module

<?xml version="1.0" encoding="UTF-8" ?>
<canvas piid="containerglobal">

Les tailles des containers enfants vont être ajusté en fonction de ce container racine. Quand on génère ce module, on indique quelle largeur devra être occupée et la taille des enfants sera ajustée.

	<textBox piid="fond" width="T%"/>

Le fond occupe toujours la même taille que le container racine (proportionnellement).

	<hBox piid="container" width="T%">

Le principe est générer autant de postes que de curseurs. Ces poste sont répartis horizontalement et automatiquement grâce à l'usage d'une hBox.

		<boxRepeater dbid="curseurs/curseur">

Le répéteur de boites permet de créer autant de boites que de données spécifiées dans le fichier XML source ("curseurs/curseur").

Pour chaque poste, on génère deux canvas différents suivant qu'il s'agit d'un poste actif ou pas.

			<canvas piid="container1" visibleIf="FieldValue('actif') == 0" width="=">

Ce choix est fait en testant le nœud nommé "actif".

				<textBox piid="numero1" dbid="numero"/>
				<textBox piid="nom1" dbid="nom" width="T%"/>

La taille du numéro est fixe. Par contre, la taille du nom reste proportionnelle au modèle.

			</canvas>
			<canvas piid="containeractif1" visibleIf="FieldValue('actif') == 1" width="=">
				<textBox piid="numeroactif1" dbid="numero">
					<callBack kind="runScript">
						//var arg_doc  = app.scriptArgs.getValue('cb_docref');
						//var arg_piid = app.scriptArgs.getValue('cb_pageitemid');
						
						//var doc  = app.getdocumentfromj2suidref(arg_doc);
						//var piid = doc.pageItems.itemByID(parseInt(arg_piid));
						
						var piid = app.getObjectFromJ2SUIDRef(app.scriptArgs.getValue('cbPageItemRef'));
						piid.bringToFront();
					</callBack>

Si plusieurs postes sont actifs, le zOrder du numéro n'est pas conservé. Grâce à ce script, je force le passage du numéro devant tout le monde après qu'il ait été placé.

				</textBox>
				<textBox piid="nomactif1" dbid="nom" width="T%"/>
				<textBox piid="cadreactif1" width="T%"/>
				<textBox piid="fondnumeroactif1"/>
			</canvas>
		</boxRepeater>
	</hBox>
</canvas>

Données

			<curseurs>
				<curseur>
					<numero>1</numero>
					<nom>Bière</nom>
					<actif>0</actif>
				</curseur>
				<curseur>
					<numero>2</numero>
					<nom>Vin</nom>
					<actif>0</actif>
				</curseur>
				<curseur>
					<numero>3</numero>
					<nom>Vin cuit</nom>
					<actif>1</actif>
				</curseur>
				<curseur>
					<numero>4</numero>
					<nom>Digestif</nom>
					<actif>0</actif>
				</curseur>
			</curseurs>
Last modified 18 months ago Last modified on Jun 14, 2016 5:58:15 PM

Attachments (5)

Download all attachments as: .zip