Sviluppo di un componente basato su Editor in blocco: il componente Elenco prodotti

Questa sezione fornisce una panoramica sull’utilizzo dell’Editor collettivo e fornisce una descrizione del componente Geometrixx esistente basato sull’Editor collettivo: il componente Elenco prodotti.

Il componente Elenco prodotti consente agli utenti di visualizzare e modificare una tabella di dati. Ad esempio, puoi utilizzare il componente Elenco prodotti per rappresentare i prodotti in un catalogo. Le informazioni vengono presentate in una tabella HTML standard e le modifiche vengono eseguite nella finestra di dialogo Modifica, che contiene un widget BulkEditor. Questo Bulk Editor è lo stesso di quello accessibile da /etc/importers/bulkeditor.html o dal menu Strumenti. Il componente Elenco prodotti è stato configurato per funzionalità specifiche e limitate dell’editor in blocco. È possibile configurare ogni parte dell’Editor collettivo (o dei componenti derivati dall’Editor collettivo).

Con l’Editor collettivo, puoi aggiungere, modificare, eliminare, filtrare ed esportare le righe, salvare le modifiche e importare un set di righe. Ogni riga viene memorizzata come nodo sotto l’istanza del componente Elenco prodotti stessa. Ogni cella è una proprietà di ogni nodo. Si tratta di una scelta di progettazione che può essere facilmente modificata. Ad esempio, è possibile memorizzare i nodi altrove nell’archivio. Il ruolo del servlet di query consiste nel restituire l’elenco dei nodi da visualizzare; il percorso di ricerca è definito come istanza dell’elenco di prodotti.

Il codice sorgente del componente Elenco prodotti è disponibile nell’archivio in /apps/geometrixx/components/productlist ed è composto da diverse parti come tutti i componenti di Adobe Experience Manager (AEM):

  • Rendering HTML: il rendering viene eseguito in un file JSP (https://experienceleague.adobe.com/apps/geometrixx/components/productlist/productlist.jsp?lang=it). JSP legge i sottonodi del componente Elenco prodotti corrente e li visualizza come riga di una tabella HTML.
  • Finestra di dialogo per modifica, in cui puoi definire la configurazione dell’editor di massa. Configura la finestra di dialogo in base alle esigenze del componente: colonne disponibili e possibili azioni eseguite sulla griglia o sulla ricerca. Per informazioni su tutte le proprietà di configurazione, vedere Proprietà di configurazione dell'editor in blocco.

Ecco una rappresentazione XML dei sottonodi della finestra di dialogo:

        <editor
            jcr:primaryType="cq:Widget"
            colsSelection="[ProductId,ProductName,Color,CatalogCode,SellingSku]"
            colsValue="[ProductId,ProductName,Color,CatalogCode,SellingSku]"
            contentMode="false"
            exportURL="/etc/importers/bulkeditor/export.tsv"
            extraCols="Selection"
            hideColsSelection="false"
            hideContentMode="true"
            hideDeleteButton="false"
            hideExportButton="false"
            hideExtraCols="true"
            hideImportButton="false"
            hideInsertButton="false"
            hideMoveButtons="false"
            hidePathCol="true"
            hideRootPath="true"
            hideSaveButton="false"
            hideSearchButton="false"
            importURL="/etc/importers/bulkeditor/import"
            initialSearch="true"
            insertedResourceType="geometrixx/components/productlist/sku"
            queryParams=""
            queryURL="/etc/importers/bulkeditor/query.json"
            saveURL="/etc/importers/bulkeditor/save"
            xtype="bulkeditor">
            <saveButton
                jcr:primaryType="nt:unstructured"
                text="Save modifications"/>
            <searchButton
                jcr:primaryType="nt:unstructured"
                text="Apply filter"/>
            <queryParamsInput
                jcr:primaryType="nt:unstructured"
                fieldDescription="Enter here your filters"
                fieldLabel="Filters"/>
            <searchPanel
                jcr:primaryType="nt:unstructured"
                height="200">
                <defaults
                    jcr:primaryType="nt:unstructured"
                    labelWidth="150"/>
            </searchPanel>
            <grid
                jcr:primaryType="nt:unstructured"
                height="275"/>
            <store jcr:primaryType="nt:unstructured">
                <sortInfo
                    jcr:primaryType="nt:unstructured"
                    direction="ASC"
                    field="CatalogCode"/>
            </store>
            <colModel
                jcr:primaryType="nt:unstructured"
                width="150"/>
            <colsMetadata jcr:primaryType="nt:unstructured">
                <Selection
                    jcr:primaryType="nt:unstructured"
                    checkbox="true"
                    forcedPosition="0"
                    headerText=""/>
                <ProductId
                    jcr:primaryType="nt:unstructured"
                    cellCls="productlist-cell-productid"
                    headerText="Product Id"/>
                <ProductName
                    jcr:primaryType="nt:unstructured"
                    cellStyle="background-color: #FFCC99;"
                    headerText="Product Name"/>
                <CatalogCode
                    jcr:primaryType="nt:unstructured"
                    cellStyle="background-color: #EDEDED;"
                    headerText="Catalog Code"/>
                <Color jcr:primaryType="nt:unstructured">
                    <editor
                        jcr:primaryType="nt:unstructured"
                        store="[Blue,Red,Yellow]"
                        triggerAction="all"
                        typeAhead="true"
                        xtype="combo"/>
                </Color>
                <SellingSku
                    jcr:primaryType="nt:unstructured"
                    headerText="Sku Id"/>
            </colsMetadata>
        </editor>

Proprietà di configurazione dell’editor in blocco

È possibile configurare ogni parte dell’editor di massa. Nella tabella seguente sono elencate tutte le proprietà di configurazione per l'editor in blocco.

Nome proprietàDefinizione
rootPathPercorso directory principale ricerca
queryParamsQuery di ricerca
contentModeTrue per attivare la modalità contenuto: le proprietà vengono lette nel nodo jcr:content e non nel nodo dei risultati di ricerca
colsValueProprietà cercate (valori selezionati da colonneCaselle di controllo visualizzate in Selection)
extraColsProprietà ricercate aggiuntive (visualizzate in un campo di testo separato da virgole)
initialSearchTrue per eseguire una query al caricamento della pagina
colsSelectionSelezione delle proprietà cercate (visualizzate come caselle di controllo)
showGridOnlyTrue per visualizzare solo la griglia e non il pannello di ricerca (non dimenticare di impostare initialSearch su true)
searchPanelCollapsedTrue per comprimere il pannello di ricerca per impostazione predefinita
hideRootPathNascondi campo percorso directory principale
hideQueryParamsNascondi campo query
hideContentModeNascondi campo modalità contenuto
hideColsSelectionNascondi campo di selezione colonne
hideExtraColsNascondi campo dei punti aggiuntivi
hideSearchButtonNascondi pulsante di ricerca
hideSaveButtonNascondi pulsante di salvataggio
hideExportButtonNascondi pulsante di esportazione
hideImportButtonNascondi pulsante di importazione
hideResultNumberNascondi testo numero risultati ricerca griglia
hideInsertButtonNascondi pulsante inserimento griglia
hideDeleteButtonNascondi pulsante di eliminazione griglia
hidePathColNascondi colonna "percorso" griglia
queryURLPercorso del servlet di query
exportURLPercorso per esportare il servlet
importURLPercorso del servlet di importazione
insertResourceTypeTipo di risorsa aggiunto al nodo quando viene inserita una riga
saveButtonConfigurazione widget pulsante Salva
searchButtonConfigurazione widget pulsante di ricerca
exportButtonConfigurazione widget pulsante Esporta
importButtonConfigurazione widget pulsante Importa
searchPanelConfigurazione widget pannello di ricerca
grigliaConfigurazione widget griglia
archiviareConfigurazione archivio
colModelConfigurazione modello colonna griglia
rootPathInputconfigurazione widget rootPath
queryParamsInputconfigurazione widget queryParams
contentModeInputconfigurazione widget contentMode
colsSelectionInputconfig widget colsSelection
extraColsInputconfigurazione widget extraCols
colsMetadata

Configurazione metadati colonna. Le proprietà possibili sono (applicate a tutte le celle della colonna):

  • cellStyle: stile html

  • cellCls: classe css

  • readOnly: true per non essere in grado di modificare il valore

  • casella di controllo: true per definire tutte le celle della colonna come caselle di controllo (valori true/false)

  • forcedPosition: valore intero per specificare la posizione della colonna nella griglia (tra 0-numero di colonne-1)