徽章
Ninext 會在某些分頁上加入徽章,藉此凸顯重要資訊,強化 Ninox 的介面。
- 在「Files」分頁上,藍色徽章顯示該記錄所附加的檔案數量。
- 在「Comments」分頁上,紅色徽章表示有新訊息,灰色徽章則表示有較舊的評論。
- 在自訂分頁上,您可以變更外觀(顏色、標題),並加上徽章以吸引注意力,凸顯關鍵資訊。
有了這些徽章,您不必逐一開啟分頁,就能一眼看出哪裡有新資訊。
徽章,以及下文所述的分頁自訂功能,都可以在 Ninext 設定的「介面增強」區段中停用:檔案和評論上的徽章(預設為啟用)。
「Files」與「Comments」分頁上的徽章
Files 分頁
- 藍色徽章:當存在未連結到任何「File」欄位的檔案時出現,也就是可以在附件分頁下找到的那些檔案。顯示的數字對應這些獨立附件的數量。
- 無徽章:未偵測到任何獨立附件。
Comments 分頁
- 紅色徽章:顯示新評論的數量,也就是張貼未滿 24 小時的評論。
- 灰色徽章:當沒有任何評論未滿 24 小時時,顯示評論總數。
- 無徽章:此記錄沒有任何評論。

徽章會在相關圖示下方告訴您已有哪些項目:
在此範例中,藍色的 1 表示此記錄存有一個附件,灰色的 1 表示此記錄有一則評論。
自訂徽章
在每個分頁的「Display field only, if」公式中,您可以宣告一個 onUpdate 函式,回傳一個描述該分頁及其徽章的 JSON 物件。下面的範例取自示範資料庫的「Badges」表格:其中的 Caption、Color、'badge.caption'……都是該表格的欄位。
Ninox
function onUpdate(event : any) do
debug(formatJSON(event));
{
caption: Caption,
color: Color,
backgroundColor: BackgroundColor,
tooltip: Tooltip,
badge: {
caption: 'badge.caption',
color: 'badge.color',
backgroundColor: 'badge.backgroundColor'
}
}
end;
true以 Ninext 自訂分頁

有了 Ninext,您可以在分頁的「Display field only, if」公式中定義一個名為 onUpdate 的函式,藉此變更 Ninox 中使用者自訂分頁的外觀。這個函式會回傳一個物件,告訴 Ninext 要變更哪些視覺元素。您可以:
- 調整分頁標題(caption)與提示文字(tooltip)。
- 變更文字與背景顏色(一般狀態或選取狀態)。
- 設定所屬表單的背景顏色。
- 在分頁上顯示徽章,以凸顯重要資訊。
JSON 屬性速覽
| 屬性 | 說明 | 範例/用法 |
|---|---|---|
| caption | 分頁上顯示的標題。 | "To Invoice" / "View Invoice" |
| tooltip | 滑鼠停留在分頁上時顯示的文字。 | "Click to view details" |
| color | 分頁未被選取時的文字顏色。 | "#333333" |
| backgroundColor | 分頁未被選取時的背景顏色。 | "#ededed" |
| formBackgroundColor | 分頁為使用中時,表單(編輯器)的背景顏色。 | "#fafafa" |
| selected.color | 分頁被選取時的文字顏色。 | "#ffffff" |
| selected.backgroundColor | 分頁被選取時的背景顏色。 | "#4970ff" |
| badge.caption | 徽章中顯示的文字、數字或符號。它一律是文字:請以 text() 轉換數字。空白文字會隱藏徽章。 | "3"(代表 3 位新客戶)或 "!"(警示) |
| badge.color | 徽章的文字顏色(預設為白色)。 | "#ffffff" |
| badge.backgroundColor | 徽章的背景顏色(預設為紅色)。 | "#4970ff" |
一般流程
- 定義 onUpdate 函式
在該分頁的「Display field only, if」公式中,建立一個名為onUpdate的函式。這個函式必須回傳一個物件(類似 JSON 的結構),說明要修改哪些顯示元素。它會收到自己上一次呼叫時回傳的物件作為參數(第一次為空物件)。 - 回傳布林值以控制顯示與否
「Display field only, if」公式必須以回傳true或false作結,用以決定該分頁是否顯示。 - Ninext 套用這些修改
每當使用者開啟或重新整理記錄時,Ninext 會執行onUpdate函式,讀取回傳的物件,並動態地將外觀變更套用到分頁上。
實作範例
完整範例(多項屬性)
Ninox
"Declaration of the onUpdate function";
function onUpdate(tabValues : any) do
let nb := this.NumberTest;
{
caption: if nb > 0 then "To Invoice" else "View Invoice" end,
tooltip: "Click to view details",
color: "#333333",
backgroundColor: "#ededed",
formBackgroundColor: "#fafafa",
selected: {
color: "#ffffff",
backgroundColor: "#4970ff"
},
badge: {
caption: if nb = 3 then "3" else if nb = -1 then "!" else "" end,
color: "#ffffff",
backgroundColor: if nb = 3 then "#4970ff" else if nb = -1 then "#ff0000" else "#cccccc" end
}
}
end;
"Determine whether the tab is displayed: shown if NumberTest > 0";
if this.NumberTest > 0 then
true
else
false
end說明:
- 這個函式不含
return:Ninox 的語言中沒有這個字。它回傳最後一個運算式的值,此處即為該物件。 - caption 會依
NumberTest的值變更分頁標題。 - tooltip 在滑鼠停留時顯示一段文字訊息。
- color 與 backgroundColor 定義未選取狀態下的顏色。
- selected 包含分頁為使用中狀態時的顏色。
- badge 加上一個指示標記(數字或驚嘆號)以加強提示;其他情況下,其標題為空,徽章不會出現。
最簡範例(僅徽章)
Ninox
"Declaration of the onUpdate function";
function onUpdate(tabValues : any) do
let newClients := this.NewClients;
{
badge: {
caption: if newClients > 0 then text(newClients) else "" end,
color: "#ffffff",
backgroundColor: "#4970ff"
}
}
end;
"The tab is always displayed";
true說明:
- 只回傳 badge 這一項屬性。
- 若
NewClients大於 0,就顯示它的值,並以text()轉換為文字;否則標題為空,徽章不會出現。 - 徽章為藍底白字。
重點提醒
- 最後一定要回傳布林值
若結尾未回傳true或false,該分頁將不會顯示。 - 徽章標題一律為文字
只有當badge.caption是非空的文字時,Ninext 才會顯示徽章。數字(3而非"3")會讓徽章保持隱藏:請使用text()。 - 單獨求值的函式
Ninext 只會從公式中取出onUpdate函式,然後在該記錄的上下文中單獨對它求值。因此,它看不到「Display field only, if」中其他地方宣告的變數或其他函式:請在onUpdate內部宣告它所需要的一切。它可以讀取記錄的欄位(this.NumberTest),並呼叫資料庫的全域函式。
