Menyiapkan antarmuka pengguna

Halaman tutorial Google Cloud Search ini menunjukkan cara menyiapkan aplikasi penelusuran kustom menggunakan widget penelusuran yang dapat disematkan. Untuk memulai dari awal tutorial ini, lihat tutorial memulai Cloud Search.

Menginstal dependensi

  1. Jika konektor masih mengindeks repositori, buka shell baru dan lanjutkan di sana.

  2. Dari command line, ubah direktori ke cloud-search-samples/end-to-end/search-interface.

  3. Untuk mendownload dependensi yang diperlukan untuk menjalankan server web, jalankan perintah berikut:

npm install

Membuat kredensial aplikasi penelusuran

Konektor memerlukan kredensial akun layanan untuk memanggil Cloud Search API. Untuk membuat kredensial:

  1. Kembali ke Konsol Google Cloud.

  2. Di navigasi sebelah kiri, klik Credentials.

  3. Dari menu drop-down Create credentials, pilih OAuth client ID. Halaman "Create OAuth client ID" akan muncul.

  4. (Opsional). Jika Anda belum mengonfigurasi layar izin, klik CONFIGURE CONSENT SCREEN. Layar "OAuth consent" akan muncul.

    1. Klik Internal , lalu klik CREATE. Layar "OAuth consent" lain akan muncul.

    2. Isi kolom yang wajib diisi. Untuk mengetahui petunjuk lebih lanjut, lihat bagian izin pengguna di Menyiapkan OAuth 2.0.

  5. Klik menu drop-down Application type , lalu pilih aplikasi web.

  6. Di kolom Name, masukkan "tutorial".

  7. Di kolom Authorized JavaScript origins, klik ADD URI. Kolom "URIs" kosong akan muncul.

  8. Di kolom URIs, masukkan http://localhost:8080.

  9. Klik CREATE. Layar "OAuth client created" akan muncul.

  10. Catat client ID. Nilai ini digunakan untuk mengidentifikasi aplikasi saat meminta otorisasi pengguna dengan OAuth2. Rahasia klien tidak diperlukan untuk penerapan ini.

  11. Klik OK.

Membuat aplikasi penelusuran

Selanjutnya, buat aplikasi penelusuran di konsol admin. Aplikasi penelusuran adalah representasi virtual dari antarmuka penelusuran dan konfigurasi default-nya.

  1. Kembali ke konsol Google Admin.
  2. Klik ikon Aplikasi. Halaman "Apps administration" akan muncul.
  3. Klik Google Workspace. Halaman "Apps Google Workspace administration" akan muncul.
  4. Scroll ke bawah, lalu klik Cloud Search. Halaman "Settings for Google Workspace" akan muncul.
  5. Klik Search Applications. Halaman "Search Appplications" akan muncul.
  6. Klik + berwarna kuning bulat. Dialog "Create a new search application" akan muncul.
  7. Di kolom Display name, masukkan "tutorial".
  8. Klik CREATE.
  9. Klik ikon pensil di samping aplikasi penelusuran yang baru dibuat ("Edit search application"). Halaman "Search application details" akan muncul.
  10. Catat ID aplikasi.
  11. Di sebelah kanan Data sources, klik ikon pensil.
  12. Di samping "tutorial", klik tombol Enable. Tombol ini mengaktifkan sumber data tutorial untuk aplikasi penelusuran yang baru dibuat.
  13. Di sebelah kanan sumber data "tutorial", klik Display options.
  14. Centang semua faset.
  15. Klik SAVE.
  16. Klik DONE.

Mengonfigurasi aplikasi web

Setelah membuat kredensial dan aplikasi penelusuran, perbarui konfigurasi aplikasi untuk menyertakan nilai-nilai ini sebagai berikut:

  1. Dari command line, ubah direktori ke `cloud-search-samples/end-to-end/search-interface/public.'
  2. Buka file app.js dengan editor teks.
  3. Temukan variabel searchConfig di bagian atas file.
  4. Ganti [client-id] dengan client ID OAuth yang dibuat sebelumnya.
  5. Ganti [application-id] dengan ID aplikasi penelusuran yang dicatat di bagian sebelumnya.
  6. Simpan file.

Menjalankan aplikasi

Mulai aplikasi dengan menjalankan perintah ini:

npm run start

Membuat kueri indeks

Untuk membuat kueri indeks menggunakan widget penelusuran:

  1. Buka browser, lalu buka http://localhost:8080.
  2. Klik sign in untuk memberi otorisasi kepada aplikasi agar dapat membuat kueri Cloud Search atas nama Anda.
  3. Di kotak penelusuran, masukkan kueri, seperti kata "test", lalu tekan enter. Halaman akan menampilkan hasil kueri beserta faset dan kontrol penomoran halaman untuk menavigasi hasil.

Meninjau kode

Bagian yang tersisa akan membahas cara membuat antarmuka pengguna.

Memuat widget

Widget dan library terkait dimuat dalam dua fase. Pertama, skrip bootstrap dimuat:

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

Kedua, callback onLoad dipanggil setelah skrip siap. Kemudian, callback ini memuat klien Google API, Login dengan Google, dan library widget 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)
}

Inisialisasi aplikasi yang tersisa ditangani oleh initializeApp setelah semua library yang diperlukan dimuat.

Menangani otorisasi

Pengguna harus memberi otorisasi kepada aplikasi untuk membuat kueri atas nama mereka. Meskipun widget dapat meminta pengguna untuk memberikan otorisasi, Anda dapat memberikan pengalaman pengguna yang lebih baik dengan menangani otorisasi sendiri.

Untuk antarmuka penelusuran, aplikasi menampilkan dua tampilan berbeda, bergantung pada status login pengguna.

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>

Selama inisialisasi, tampilan yang benar akan diaktifkan dan pengendali untuk peristiwa login dan logout akan dikonfigurasi:

/**
 * 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();

  // ...

}

Membuat antarmuka penelusuran

Widget penelusuran memerlukan markup HTML dalam jumlah kecil untuk input penelusuran dan untuk menyimpan hasil penelusuran:

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>

Widget diinisialisasi dan terikat ke elemen input dan container selama inisialisasi:

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();

Selamat, Anda berhasil menyelesaikan tutorial ini. Lanjutkan ke petunjuk pembersihan.

Sebelumnya Berikutnya