Configurer l'interface utilisateur

Cette page du tutoriel Google Cloud Search explique comment configurer une application de recherche personnalisée à l'aide du widget Recherche intégrable. Pour commencer depuis le début de ce tutoriel, reportez-vous à la section Tutoriel de mise en route de Cloud Search.

Installer des dépendances

  1. Si le connecteur indexe toujours le dépôt, ouvrez une nouvelle interface système et poursuivez la procédure dans celle-ci.

  2. Dans la ligne de commande, remplacez le répertoire par cloud-search-samples/end-to-end/search-interface.

  3. Pour télécharger les dépendances nécessaires à l'exécution du serveur Web, exécutez la commande suivante:

npm install

Créer les identifiants de l'application de recherche

Le connecteur requiert les identifiants du compte de service pour appeler les API Cloud Search. Pour créer les identifiants:

  1. Revenez à la console Google Cloud.

  2. Dans le volet de navigation de gauche, cliquez sur Identifiants.

  3. Dans la liste déroulante Créer des identifiants, sélectionnez ID client OAuth. La page "Créer un ID client OAuth" s'affiche.

  4. (Facultatif) Si vous n'avez pas configuré l'écran d'autorisation, cliquez sur CONFIGURE CONSENT SCREEN (Configurer l'écran d'autorisation). L'écran d'autorisation OAuth s'affiche.

    1. Cliquez sur Interne, puis sur CRÉER. Un autre écran "OAuth consent" (Consentement OAuth) s'affiche.

    2. Renseignez les champs obligatoires. Pour en savoir plus, consultez la section concernant le consentement de l'utilisateur dans Configurer OAuth 2.0.

  5. Cliquez sur la liste déroulante Type d'application, puis sélectionnez Application Web.

  6. Dans le champ Nom, saisissez "tutorial".

  7. Dans le champ Origines JavaScript autorisées, cliquez sur AJOUTER UN URI. Un champ vide "URI" s'affiche.

  8. Dans le champ URI, saisissez http://localhost:8080.

  9. Cliquez sur CRÉER. L'écran "Client OAuth créé" s'affiche.

  10. Notez l'ID client. Cette valeur permet d'identifier l'application lorsque vous demandez l'autorisation de l'utilisateur avec OAuth2. Le code secret du client n'est pas requis pour cette implémentation.

  11. Cliquez sur OK.

Créer l'application de recherche

Ensuite, créez une application de recherche dans la console d'administration. L'application de recherche est une représentation virtuelle de l'interface de recherche et de sa configuration par défaut.

  1. Revenez à la console d'administration Google.
  2. Cliquez sur l'icône Applications. La page "Administration des applications" s'affiche.
  3. Cliquez sur Google Workspace. La page "Apps Google Workspace administration" (Administration des applications Google Workspace) s'affiche.
  4. Faites défiler la page vers le bas et cliquez sur Cloud Search. La page "Paramètres de Google Workspace" s'affiche.
  5. Cliquez sur Applications de recherche. La page "Search Applications" (Applications de recherche) s'affiche.
  6. Cliquez sur le signe + jaune. La boîte de dialogue "Créer une application de recherche" s'affiche.
  7. Dans le champ Nom à afficher, saisissez "tutorial".
  8. Cliquez sur CRÉER.
  9. Cliquez sur l'icône en forme de crayon à côté de l'application de recherche que vous venez de créer ("Modifier l'application de recherche"). La page "Détails de l'application de recherche" s'affiche.
  10. Notez l'ID de l'application.
  11. À droite de Sources de données, cliquez sur l'icône en forme de crayon.
  12. À côté de "Tutoriel", cliquez sur le bouton Activer. Cette option active la source de données du tutoriel pour la nouvelle application de recherche.
  13. À droite de la source de données "tutoriel", cliquez sur Options d'affichage.
  14. Vérifiez tous les attributs.
  15. Cliquez sur ENREGISTRER.
  16. Cliquez sur OK.

Configurer l'application Web

Après avoir créé les identifiants et l'application de recherche, mettez à jour la configuration de l'application pour inclure les valeurs suivantes:

  1. À partir de la ligne de commande, remplacez le répertoire par "cloud-search-samples/end-to-end/search-interface/public".
  2. Ouvrez le fichier app.js dans un éditeur de texte.
  3. Recherchez la variable searchConfig en haut du fichier.
  4. Remplacez [client-id] par l'ID client OAuth créé précédemment.
  5. Remplacez [application-id] par l'ID de l'application de recherche noté dans la section précédente.
  6. Enregistrez le fichier.

Exécuter l'application

Démarrez l'application en exécutant la commande suivante:

npm run start

Interroger l'index

Pour interroger l'index à l'aide du widget Recherche:

  1. Ouvrez votre navigateur et accédez à http://localhost:8080.
  2. Cliquez sur Connexion pour autoriser l'application à interroger Cloud Search en votre nom.
  3. Dans le champ de recherche, saisissez une requête, par exemple "test", puis appuyez sur Entrée. La page doit afficher les résultats de la requête, ainsi que les attributs et les commandes de pagination pour permettre la navigation.

Comprendre le code

Les autres sections examinent la structure de l'interface utilisateur.

Chargement du widget

Le widget et les bibliothèques associées sont chargés en deux phases. Le script d'amorçage est d'abord chargé:

index.html
<script src="https://apis.google.com/js/api.js?mods=enable_cloud_search_widget&onload=onLoad" async defer></script>

Ensuite, le rappel onLoad est appelé une fois que le script est prêt. Il charge ensuite le client API Google, Google Sign-In et les bibliothèques de widgets Cloud Search.

/**
 * Load the cloud search widget & auth libraries. Runs after
 * the initial gapi bootstrap library is ready.
 */
function onLoad() {
  gapi.load('client:auth2:cloudsearch-widget', initializeApp)
}

Le reste de l'initialisation de l'application est géré par initializeApp une fois que toutes les bibliothèques requises sont chargées.

Gérer les autorisations

Les utilisateurs doivent autoriser l'application à effectuer des requêtes en leur nom. Bien que le widget puisse inviter les utilisateurs à donner leur autorisation, vous pouvez améliorer l'expérience utilisateur en gérant vous-même les autorisations.

Pour l'interface de recherche, l'application présente deux vues différentes en fonction de l'état de connexion de l'utilisateur.

index.html
<div class="content">
  <div id="app" hidden>
    <div id="header">
      <button id="sign-out">Sign-out</button>
    </div>
    <!-- Markup for widget...-->
  </div>
  <div id="welcome" hidden>
    <h1>Cloud Search Tutorial</h1>
    <p>Sign in with your Google account to search.</p>
    <button id="sign-in">Sign-in</button>
  </div>
</div>

Lors de l'initialisation, la vue appropriée est activée et les gestionnaires des événements de connexion et de déconnexion sont configurés:

/**
 * Initialize the app after loading the Google API client &
 * Cloud Search widget.
 */
async function initializeApp() {
  await gapi.auth2.init({
      'clientId': searchConfig.clientId,
      'scope': 'https://www.googleapis.com/auth/cloud_search.query'
  });

  let auth = gapi.auth2.getAuthInstance();

  // Watch for sign in status changes to update the UI appropriately
  let onSignInChanged = (isSignedIn) => {
    document.getElementById("app").hidden = !isSignedIn;
    document.getElementById("welcome").hidden = isSignedIn;
    if (resultsContainer) {
      resultsContainer.clear();
    }
  }
  auth.isSignedIn.listen(onSignInChanged);
  onSignInChanged(auth.isSignedIn.get()); // Trigger with current status

  // Connect sign-in/sign-out buttons
  document.getElementById("sign-in").onclick = (e) =>  auth.signIn();
  document.getElementById("sign-out").onclick = (e) => auth.signOut();

  // ...

}

Créer l'interface de recherche

Le widget Recherche nécessite une petite quantité de balisage HTML pour la saisie de la recherche et pour contenir les résultats de recherche:

index.html
<div id="search_bar">
  <div>
    <div id="suggestions_anchor">
      <input type="text" id="search_input" placeholder="Search for...">
    </div>
  </div>
</div>
<div id="facet_results" ></div>
<div id="search_results" ></div>

Le widget est initialisé et lié aux éléments d'entrée et de conteneur lors de l'initialisation:

gapi.config.update('cloudsearch.config/apiVersion', 'v1');
resultsContainer = new gapi.cloudsearch.widget.resultscontainer.Builder()
  .setSearchApplicationId(searchConfig.searchAppId)
  .setSearchResultsContainerElement(document.getElementById('search_results'))
  .setFacetResultsContainerElement(document.getElementById('facet_results'))
  .build();

const searchBox = new gapi.cloudsearch.widget.searchbox.Builder()
  .setSearchApplicationId(searchConfig.searchAppId)
  .setInput(document.getElementById('search_input'))
  .setAnchor(document.getElementById('suggestions_anchor'))
  .setResultsContainer(resultsContainer)
  .build();

Félicitations, vous avez terminé le tutoriel avec succès ! Continuez pour obtenir des instructions de nettoyage.

Précédent Suivant