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 guna menjalankan server web, jalankan perintah berikut:

npm install

Membuat kredensial aplikasi penelusuran

Konektor ini 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 "Buat client ID OAuth" akan muncul.

  4. (Opsional). Jika Anda belum mengonfigurasi layar izin, klik KONFIGURASI LAYAR PERSETUJUAN. Layar "Izin OAuth" akan muncul.

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

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

  5. Klik menu drop-down Jenis aplikasi, lalu pilih Aplikasi web.

  6. Di kolom Name, masukkan "tutorial".

  7. Di kolom Asal JavaScript yang sah, klik TAMBAHKAN URI. Kolom "URI" kosong akan muncul.

  8. Di kolom URI, 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 implementasi ini.

  11. Klik OK.

Membuat aplikasi penelusuran

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

  1. Kembali ke konsol Google Admin.
  2. Klik ikon Apps. Halaman "Administrasi aplikasi" akan muncul.
  3. Klik Google Workspace. Halaman "Administrasi aplikasi Google Workspace" akan muncul.
  4. Scroll ke bawah dan klik Cloud Search. Halaman "Setelan untuk Google Workspace" akan muncul.
  5. Klik Aplikasi Penelusuran. Halaman "Aplikasi Penelusuran" akan muncul.
  6. Klik tanda bulat + berwarna kuning. Dialog "Buat aplikasi penelusuran baru" akan muncul.
  7. Di kolom Nama tampilan, masukkan "tutorial".
  8. Klik CREATE.
  9. Klik ikon pensil di samping aplikasi penelusuran yang baru dibuat ("Edit aplikasi penelusuran"). Halaman "Detail aplikasi penelusuran" akan muncul.
  10. Catat ID Aplikasi.
  11. Di sebelah kanan Sumber data, klik ikon pensil.
  12. Di samping "tutorial", klik tombol Aktifkan. Tombol ini akan mengaktifkan sumber data tutorial untuk aplikasi penelusuran yang baru dibuat.
  13. Di sebelah kanan sumber data "tutorial", klik Opsi tampilan.
  14. Periksa semua {i>facet<i}.
  15. Klik SAVE.
  16. Klik SELESAI.

Mengonfigurasi aplikasi web

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

  1. Dari command line, ubah direktori menjadi `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 tercantum di bagian sebelumnya.
  6. Simpan file.

Menjalankan aplikasi

Mulai aplikasi dengan menjalankan perintah ini:

npm run start

Membuat kueri indeks

Untuk melakukan kueri indeks menggunakan widget penelusuran:

  1. Buka browser Anda dan buka http://localhost:8080.
  2. Klik sign in untuk mengizinkan aplikasi membuat kueri Cloud Search atas nama Anda.
  3. Di kotak penelusuran, masukkan kueri, misalnya kata "test", lalu tekan enter. Halaman harus menampilkan hasil kueri beserta faset dan kontrol penomoran halaman untuk menjelajahi hasil.

Meninjau kode

Bagian lainnya memeriksa bagaimana antarmuka pengguna dibangun.

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, aplikasi akan 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)
}

Sisa inisialisasi aplikasi akan ditangani oleh initializeApp setelah semua library yang diperlukan dimuat.

Menangani otorisasi

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

Untuk antarmuka penelusuran, aplikasi menyajikan dua tampilan yang 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 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 sejumlah kecil markup HTML 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 input dan elemen 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 untuk melihat petunjuk pembersihan.

Sebelumnya Berikutnya