Templating

Templating

Les vues standard du studio

Les templates de vue peuvent être utilisés les vues standard du studio en ajoutant dans le XML la balise <template>.

Cette balise a un attribut type qui permet de définir un mode de rendu différent entre “desktop” et “mobile”.

Info

Pour lire les valeurs de la IResource il faut ${iResource.values.xxx} où xxx est le nom système du champ.

Note

Si des CDATA sont utilisées à la sauvegarde, elles seront supprimées et remplacées par le résultat de la fonction xmlencode(CDATA).

Exemple

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definition name="DEFAULT" catalog="PilotageProjet" catalogType="4" class="com.axemble.vdoc.sdk.interfaces.IStorageResource" extensionClasses="com.vdoc.projectsteering.extensions.view.ProjectsViewExtension">
    <filters>
        <fieldgroup operator="AND">
            <field name="sys_ResourceDefinition" value="Projet"/>
            <fieldgroup operator="AND">
                <field name="EtatDuProjet" operator="notEquals" value="termine"/>
            </fieldgroup>
        </fieldgroup>
    </filters>
    <template type="desktop">
	<![CDATA[
      <div class="projectsteering" onclick="window.location.href='${baseUrl}/easysite/production/projectsteering/reservoir-de-donnees/edit-document/${iResource.id}'">
        <div class="detail">
          <img src="/vdoc/easysite-resources/skins/2011/images/${iResource.values.MeteoDuProjet}.png" />
          <span class="icon icon-arrow-${MeteoTendance}"></span>
          <span class="avancement-projet-vue">${iResource.values.avancementProjet}%</span>
          <div class="thumbnail-zone">
            <div class="thumbnail">
             <img class="project-logo" src="${tmp_logo}" title="" class="">
            </div>
          </div>
          <div class="text-zone">
            <a>${sys_Title}</a>
            <p class="project-manager-label">Chef de projet</p>
            <p class="project-manager-value">${iResource.values.ChefDeProjet}</p>
            <p class="last-maj-title"> Mis à jour <span title="${iResource.values.DateDeDerniereMAJ}" >${tmp_LastMAJ}</span></p>
            <div class="indicator-container">
              <p><span class="indicator-label">Coût : </span><span class="icon ${tendanceCoutColor} icon-arrow-${tendanceCout}"></span><span class="percentage textcolor-${indicatorCostColor}">${iResource.values.IndicateurCout} %</span></p>
              <p><span class="indicator-label">Qualité: </span><span class="icon ${tendanceQualiteColor} icon-arrow-${tendanceQualite}"></span><span class="percentage textcolor-${indicatorQualityColor}">${iResource.values.IndicateurQualite} %</span></p>
              <p><span class="indicator-label">Délai: </span><span class="icon ${tendanceDelaiColor} icon-arrow-${tendanceDelai}"></span><span class="percentage textcolor-${indicatorDelayColor}">${iResource.values.IndicateurDelai} %</span></p>
            </div>
          </div>
        </div>
      </div>
	]]>
    </template>
    <view sortBy="sys_Title" sortAscending="true" enableCreateTreatment="true" enableOpenTreatment="true" enableDeleteTreatment="true" enableSecureTreatment="true" itemsPerPage="10" countElements="true">
        <column name="sys_Title"/>
        <column name="ChefDeProjet.fullName"/>
        <column name="MeteoDuProjet"/>
        <column name="TypeDeProjet"/>
        <column name="MeteoTendance"/>
    </view>
</definition>

Les vues de navigation (fichier xml)

Le même système de template peut être utilisé dans les vues custom.

La balise <template> a des attributs :

  • type : qui permet de définir un mode de rendu différent entre “desktop” et “mobile” (il ne peut donc y avoir que 2 templates au maximum)
  • displayMode : si le template est activé c’est son displayMode par defaut
  • diplayModeAvailabe : la liste des modes possibles.

Exemple

<view name="SupplierCommentsView" action="display" label="LG_SUPPLIER_COMMENTS_EXCHANGE_VIEW" provider="com.vdoc.visiativ.ged.supplierfiles.view.providers.SupplierCommentsExchangeViewProvider" sortable="false" selectable="false" filterable="false" paginable="false">
	<template type="desktop" displayMode="table" >
		<![CDATA[
			<div class="comments-exchange-section">
				<div class="section-header">
					<div class="section-header-index">
						<div class="exchange-id">${id}</div>
					</div>
					<div class="section-header-infos">
						<div class="section-title">${title}</div>
						<div class="section-status">
						    ${LG_COMMENTS_EXCHANGE_STATUS} - 
						    <input type="text" value="${lastModificationDate}" style="display:none;"/>
						    <span class="moment-js-date"></span>
						</div>
					</div>
					<div class="section-header-operators"> 
						<div class="section-operators-user1">
							<img src="${image1URI}"/><br>${creatorName}
						</div>
					</div>
					<div class="section-header-actions">${changeStatus} ${addCommentToSection} ${deleteSection}</div>
				</div>
				<div class="comments-exchange-list">
					${commentList}
				</div>
			</div>
		]]>
	</template>
	<column name="id" label="" />
	<column name="creatorName" label="" />
	<column name="supplierName" label="" />
	<column name="title" label="" />
	<column name="LG_COMMENTS_EXCHANGE_STATUS" label="" />
	<column name="lastModificationDate" label="" />
	<column name="commentList" label="" />
	<column name="addCommentToSection" label="" />
	<column name="deleteSection" label="" />
	<column name="changeStatus" label="" />
	<column name="image1URI" label="" />
</view>

Source: https://wiki.myvdoc.net/xwiki/bin/view/Dev+Floor/ScreensWithTemplateRendering partie 3