iT邦幫忙

0

【kintone】API 應用範例:顯示或隱藏清單選單的選項

  • 分享至 

  • xImage
  •  

在 kintone 記錄一覽畫面中,可以透過預先建立的清單,設定篩選條件與要顯示的欄位,方便使用者切換查看所需資料,是日常操作中相當實用的功能。

不過,當應用程式的使用情境較為複雜,例如同一個應用程式由不同部門或不同職責的人員共用時,每個人實際上用得到的清單往往只有幾個,卻要在一長串清單選單中找到目標,多少有些不便。

本範例將介紹如何利用 JavaScript API 中的「顯示或隱藏清單選單的選項」功能,針對不同使用者身份,只顯示對應所需的清單選項,讓畫面更加簡潔、操作更有效率。

範例情境

本範例以「案件管理」應用程式為例,其中建立了多個清單,分別對應不同使用者角色的需求:

清單名稱 清單 ID 顯示對象
負責案件一覽 11216847 一般員工
負責案件:進行中 11216852 一般員工
總管案件一覽 11216849 主管
總管案件:簽約手續 11216854 主管
一覽 11216844 Administrator
(全部) 20 Administrator

使用的 API:顯示或隱藏清單選單的選項

本範例使用以下 JavaScript API,切換記錄一覽畫面及圖表畫面中,清單切換下拉選單的顯示或隱藏狀態。

🔗 官方文件:顯示或隱藏清單選單的選項

函式

環境 函式
PC kintone.app.showViewSelectorItems(config)
行動裝置 kintone.mobile.app.showViewSelectorItems(config)

引數

引數名稱 型別 必填 說明
config 物件 必填 設定各清單選項的顯示或隱藏狀態
config.<清單 ID> 字串 必填 以清單 ID 作為鍵值,指定該清單的顯示狀態:VISIBLE(顯示)或 HIDDEN(隱藏)

回傳值

此 API 為非同步函式。
回傳值為 Promise 物件。Promise 解析完成後不回傳任何值。

可使用的畫面

環境 可使用畫面
PC 記錄一覽畫面、圖表畫面
行動裝置 記錄一覽畫面

範例程式碼

(() => {
  'use strict'

  const loginUser = kintone.getLoginUser().code
  const managers = ['manager1', 'manager2']
  const isManager = managers.includes(loginUser)

  const views = {
    // 對一般員工顯示、對主管隱藏的清單
    11216847: isManager ? 'HIDDEN' : 'VISIBLE',
    11216852: isManager ? 'HIDDEN' : 'VISIBLE',
    // 對主管顯示、對一般員工隱藏的清單
    11216849: isManager ? 'VISIBLE' : 'HIDDEN',
    11216854: isManager ? 'VISIBLE' : 'HIDDEN',
    // 只對 Administrator 顯示的清單
    11216844: loginUser === 'Administrator' ? 'VISIBLE' : 'HIDDEN',
    20: loginUser === 'Administrator' ? 'VISIBLE' : 'HIDDEN'
  }

  kintone.events.on('app.record.index.show', async (event) => {
    await kintone.app.showViewSelectorItems(views)
    return event
  })
})()

程式碼解說

1. 取得登入使用者資訊

const loginUser = kintone.getLoginUser().code

透過 kintone.getLoginUser() 取得目前登入的使用者資訊,並取出其登入名稱(code)。這個值將在後續判斷使用者身份時使用。

2. 判斷是否為主管

const managers = ['manager1', 'manager2']
const isManager = managers.includes(loginUser)

將主管的登入名稱事先列成陣列,再用 includes() 判斷目前登入者是否屬於主管群組。若符合則 isManagertrue,反之為 false

3. 設定各清單的顯示狀態

const views = {
  11216847: isManager ? 'HIDDEN' : 'VISIBLE',
  ...
}

以清單 ID 作為鍵值,根據使用者身份設定每個清單的顯示或隱藏狀態。這裡利用三元運算子(? :)讓邏輯保持簡潔。

Administrator 的清單則另外以登入名稱直接比對,與主管/一般員工的判斷邏輯分開處理。

4. 在記錄一覽畫面載入時套用設定

kintone.events.on('app.record.index.show', async (event) => {
  await kintone.app.showViewSelectorItems(views)
  return event
})

監聽 app.record.index.show 事件,在記錄一覽畫面顯示時呼叫 API,套用前面準備好的清單顯示設定。由於此 API 為非同步,使用 await 等待執行完成後,再 return event 結束事件處理。

結語

本範例示範了如何利用 showViewSelectorItems API,依據使用者身份動態控制清單選單的顯示內容。在多人共用同一應用程式的情境下,這個做法能有效減少畫面上不必要的資訊,讓各個角色的使用者都能更快找到自己需要的清單。

實際應用時,可依照組織架構或業務需求調整主管名單的管理方式,例如改為從組織或群組資訊動態取得,會讓程式碼更易於維護。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言