Creare la vista principale in un'applicazione DOM virtuale di Oracle JET
Introduzione
Questa esercitazione descrive come leggere i dati gerarchici master-detail da un documento JSON (Object Notation) JavaScript locale e visualizzare i dati in un componente List View di un'applicazione DOM virtuale di Oracle JavaScript Extension Toolkit (Oracle JET).
In Oracle JET è possibile utilizzare l'API Oracle JET per creare un oggetto provider di dati. L'oggetto rappresenta un array di dati popolato dagli oggetti padre di un data store di documenti JSON. L'attributo data degli elementi HTML personalizzati di Oracle JET si associa ai dati tramite un'istanza di un oggetto provider di dati MutableArrayDataProvider creato dall'utente.
Obiettivi
In questa esercitazione è possibile associare più elementi degli oggetti dati padre in un documento JSON locale e popolare le righe di un componente Vista elenco Oracle JET nel componente Contenitore attività con tali dati.
Prerequisiti
- Ambiente di sviluppo impostato per creare applicazioni DOM virtuali Oracle JET che include un'installazione di Node.js
- Browser web di Google Chrome installato e impostato come browser web predefinito
- Accesso al Oracle JET Developer Cookbook
- (Opzione 1) Completamento dell'esercitazione finale nel percorso di apprendimento precedente di questa serie: Eseguire il test dell'applicazione Oracle JET Virtual DOM su diverse dimensioni dello schermo
- (Opzione 2) Se il percorso di apprendimento precedente non è stato completato in questa serie, scaricare jet-virtual-dom-app-temp.zip
product_images.zipscaricato nella directoryJET-Virtual-DOM-app/src/styles/images
Task 1: Scarica l'app Starter Virtual DOM
Saltare questo task se si continua a lavorare in un'applicazione creata nel percorso di apprendimento precedente.
-
Rinominare
jet-virtual-dom-app-temp.zipcomeJET-Virtual-DOM-app.zip. Estrarre il contenuto nella directoryJET-Virtual-DOM-app. -
Nella finestra del terminale, accedere alla directory
JET-Virtual-DOM-appe ripristinare l'applicazione Oracle JET.npm installL'app è pronta per l'uso.
Task 2: Scarica le immagini del prodotto
Ignora questo task se hai scaricato l'app di avvio in jet-virtual-dom-app-temp.zip.
-
Se il processo batch di Oracle JET Tooling Server è in esecuzione nella finestra del terminale, premere Ctrl+C e, se richiesto, immettere
yper uscire dal processo batch del server.Il processo batch server riconosce solo le revisioni apportate ai file di applicazione esistenti. Dopo aver creato nuovi file, è necessario eseguire di nuovo l'applicazione DOM virtuale.
-
Scaricare il file
product_images.zipnella directoryJET-Virtual-DOM-app/src/styles/images. -
Estrarre il contenuto del file zip in una nuova directory
product_imagesnella directoryimages.Il percorso della nuova directory è
JET-Virtual-DOM-app/src/styles/images/product_imagese la directory contiene le immagini utilizzate dall'applicazione.
Task 3: Creare un provider di dati array modificabile nel contenitore padre 1
-
Aprire Oracle JET Cookbook e accedere alla home page Cookbook. Fare clic su Framework, quindi su Provider dati e infine su Provider dati array modificabili. Nella barra degli strumenti Cookbook, fare clic su Documento API.
-
Nella documentazione dell'API, leggere le informazioni sulla classe MutableArrayDataProvider. Si noti come utilizzare l'argomento facoltativo
keyAttributesper creare un'istanza diMutableArrayDataProviderin base all'attributo chiave dell'oggetto dati passato. -
Se non lo si è già fatto in un percorso di apprendimento precedente, scaricare il file
store_data.jsonnella directoryJET-Virtual-DOM-app/src/components. -
Passare alla directory
JET-Virtual-DOM-app/src/componentse aprire il fileParentContainer1.tsxin un editor. -
Nella parte superiore del file, aggiungere le istruzioni
importper la classeMutableArrayDataProvidere i dati JSON nel filestore_data.json.import MutableArrayDataProvider = require('ojs/ojmutablearraydataprovider'); import * as storeData from 'text!./store_data.json'; -
Creare un alias di tipo
Activity.type Activity = { id: number; name: string; short_desc: string; }; -
Creare un'istanza
activityDataProviderdiMutableArrayDataProvider.const activityDataProvider = new MutableArrayDataProvider<Activity['id'], Activity>( JSON.parse(storeData), { keyAttributes: 'id', } );La proprietà
keyAttributesdella classeMutableArrayDataProviderpopola un array in base all'attributoiddell'oggetto padre. L'attributoidè l'attributo chiave per gli oggetti dati padre e figlio nel documento JSON. -
Nella funzione
ParentContainer1aggiungere un attributodataall'elementoActivityContainerche passa l'oggetto provider dati al componente Contenitore attività utilizzandoprops.return ( <div id="parentContainer1" class="oj-flex oj-flex-init oj-panel oj-bg-warning-20"> <ActivityContainer data={activityDataProvider} /> <ParentContainer2 /> </div> ); };Il codice dovrebbe essere simile a
parent-container1-1-tsx.txt.
Task 4: Creazione del componente vista elenco del contenitore attività
Creare un componente Oracle JET List View nel componente Contenitore attività per visualizzare più elementi dati per ogni riga della lista dall'oggetto provider dati trasmesso tramite props dal componente ParentContainer1. Per creare un'istanza del contenuto degli elementi dati delle righe elenco in fase di esecuzione, il componente Vista elenco utilizza un elemento HTML template con un attributo slot come segnaposto.
-
Passare alla directory
JET-Virtual-DOM-app/src/components/Activitye aprire il fileActivityContainer.tsxin un editor. -
Aggiungere le istruzioni di importazione seguenti per il componente Oracle JET List View e la classe
MutableArrayDataProvidernella parte superiore del file.import 'ojs/ojlistview'; import { ojListView } from 'ojs/ojlistview'; import MutableArrayDataProvider = require('ojs/ojmutablearraydataprovider'); -
Creare alias di tipo
PropseActivity.type Props = { data?: MutableArrayDataProvider<Activity['id'], Activity>; value?: string; }; type Activity = { id: number; name: string; short_desc: string; }; -
Trovare l'elemento
divconid="activitiesContainer"ed eliminare la classe dell'applicazione di supportooj-sm-only-text-align-endper impedire il riallineamento del contenuto del contenitore attività. -
Creare la funzione
listItemRendererche visualizza ogni elemento dell'elenco e include elementispanedivper popolare le righe del componente Vista elenco con un'immagine di sfondo, un nome e una breve descrizione.Inoltre, definire una variabile
imageper assicurarsi che l'applicazione DOM virtuale possa individuare le immagini del prodotto nella directorystylesdell'applicazione.const listItemRenderer = (item: ojListView.ItemTemplateContext) => { let image = item.data.image.replace('css', 'styles'); return ( <div class="oj-flex no-wrap"> <span class="demo-thumbnail oj-flex-item" style={'background-image:url(' + image + ')'}></span> <div class="demo-content oj-flex-item"> <div> <strong>{item.data.name}</strong> </div> <span class="demo-metadata">{item.data.short_desc}</span> </div> </div> ); }; -
Sotto la funzione
listItemRenderer, aggiungere l'alias di tipoListViewPropsseguente e due variabili per definire le proprietà di griglia e scorrimento per il componente Vista elenco.type ListViewProps = ComponentProps<'oj-list-view'>; const gridlinesItemVisible: ListViewProps['gridlines'] = { item: 'visible' }; const scrollPolicyOpts: ListViewProps['scrollPolicyOptions'] = { fetchSize: 5 }; -
Aggiungere
propsalla definizione della funzioneActivityContainer.const ActivityContainer = (props: Props) => { -
All'interno dell'istruzione
returndella funzioneActivityContainer, eliminare l'elementodivin cuiid="activitiesItemse l'elenco al suo interno. Sostituirli con il componente Vista elenco seguente, in cui è possibile accedere all'oggetto provider dati tramitepropsnell'attributodatadella vista elenco.<h3 id="activitiesHeader">Activities</h3> <oj-list-view id="activitiesList" class="item-display" aria-labelledby="activitiesHeader" data={props.data} gridlines={gridlinesItemVisible} selectionMode="single" scrollPolicy="loadMoreOnScroll" scrollPolicyOptions={scrollPolicyOpts}> </oj-list-view> -
Nel componente Vista elenco aggiungere un elemento
templatecon un attributoslotper visualizzare ogni elemento dell'elenco.. . . <template slot="itemTemplate" render={listItemRenderer}></template> </oj-list-view>Salvare il file. Il codice dovrebbe essere simile a
activity-container-tsx-1.txt.
Task 5: Eseguire l'applicazione ed eseguire il debug del foglio di stile a cascata dell'applicazione
-
Nella finestra del terminale, passare alla directory
JET_Virtual_DOM_apped eseguire l'applicazione.npx ojet serveGli strumenti Oracle JET eseguono l'applicazione DOM virtuale nel browser Web locale, in cui è possibile visualizzare le modifiche al componente Contenitore attività. Le immagini visualizzate a sinistra dei nomi delle attività e delle descrizioni brevi vengono visualizzate solo parzialmente perché troppo grandi.
Se si ridimensiona il browser e non viene ancora visualizzata una pagina simile a questo screenshot di esempio, confermare di aver estratto le immagini dell'applicazione nella directory
images/product_images.
-
Nel browser Google Chrome fare clic con il pulsante destro del mouse sull'immagine parziale dell'attività Calcio e selezionare Ispeziona. Il browser visualizza gli strumenti di sviluppo di Chrome (DevTools) in cui è possibile ispezionare l'origine della pagina HTML.
-
Nel pannello Elementi, l'elemento
spanin cui deve essere selezionatoclass="demo-thumbnail oj-flex-item". Nel pannello Stili, individuare lo stileelement.style background-imageevidenziato. Fare clic con il pulsante destro del mouse sull'URL dell'immaginejrsoccerball.jpge selezionare Rivela nel pannello Origini.
-
Il pannello Origini di Chrome DevTools mostra che l'immagine è di 300 x 300 pixel e quindi la dimensione è troppo grande per essere visualizzata nella vista elenco. Per eseguire il rendering di un'immagine di dimensioni ridotte da un'immagine di dimensioni complete, è possibile definire una classe di stile CSS (Cascading Style Sheets).

-
Chiudere la finestra DevTools di Chrome e tornare all'app nel browser.
Task 6: Correggere il CSS e visualizzare le modifiche all'elenco delle attività
-
Passare alla directory
JET-Virtual-DOM-app/src/stylese aprire il fileapp.cssin un editor. -
Definire le proprietà per il selettore di classe
.demo-thumbnail. Nell'elenco delle proprietà, impostare una proprietàbackground-repeatsuno-repeatper mostrare l'immagine una sola volta..demo-thumbnail { border-radius: 5px; background-size: 40px 40px; background-repeat: no-repeat; min-width: 40px; min-height: 40px; max-width: 40px; margin-right: 10px; }Nella funzione
listItemRenderernel fileActivityContainer.tsx, l'elementospanfa riferimento al selettore di classe per formattare le immagini dell'elenco Attività come miniature impostando lo stile CSSdemo-thumbnailsull'attributoclass. -
Salvare e chiudere il file
app.css. Il file deve avere un aspetto simile a app-css.txt. -
Tornare al browser e visualizzare gli aggiornamenti.
L'app visualizza l'elenco Attività con le immagini di anteprima.

-
Chiudere la finestra o la scheda del browser che visualizza l'applicazione DOM virtuale in esecuzione.
-
Nella finestra del terminale, premere Ctrl+C e, se richiesto, immettere
yper uscire dal job batch degli strumenti Oracle JET.
Passo successivo
Passare all'esercitazione successiva in questo modulo.
Questa esercitazione fa parte del modulo Viste dettagli principali in Oracle JET.
- Creare la vista principale in un'applicazione Oracle JET Virtual DOM
- Creare la vista dei dettagli in un'applicazione Oracle JET Virtual DOM
- Gestisci eventi di selezione in un'applicazione Oracle JET Virtual DOM
Puoi tornare alla pagina principale del percorso di apprendimento DOM virtuale per accedere a tutti i moduli sulla creazione di app DOM virtuali.
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Create the master view in an Oracle JET virtual DOM app
F72844-02