add: prefs table local example

This commit is contained in:
xiangyu 2023-01-10 19:16:47 +08:00
parent 3c5dd0089c
commit a8dcf5e310
3 changed files with 23 additions and 2 deletions

View File

@ -5,5 +5,7 @@ menupopup.label=Addon Template: Menupopup
menuitem.submenulabel=Addon Template menuitem.submenulabel=Addon Template
menuitem.filemenulabel=Addon Template: File Menuitem menuitem.filemenulabel=Addon Template: File Menuitem
prefs.title=Template prefs.title=Template
prefs.table.title=Title
prefs.table.detail=Detail
tabpanel.lib.tab.label=Lib Tab tabpanel.lib.tab.label=Lib Tab
tabpanel.reader.tab.label=Reader Tab tabpanel.reader.tab.label=Reader Tab

View File

@ -5,5 +5,7 @@ menupopup.label=插件模板: 弹出菜单
menuitem.submenulabel=插件模板:子菜单 menuitem.submenulabel=插件模板:子菜单
menuitem.filemenulabel=插件模板: 文件菜单 menuitem.filemenulabel=插件模板: 文件菜单
prefs.title=插件模板 prefs.title=插件模板
prefs.table.title=标题
prefs.table.detail=详情
tabpanel.lib.tab.label=库标签 tabpanel.lib.tab.label=库标签
tabpanel.reader.tab.label=阅读器标签 tabpanel.reader.tab.label=阅读器标签

View File

@ -1,4 +1,5 @@
import { config } from "../../package.json"; import { config } from "../../package.json";
import { getString } from "./locale";
export function registerPrefsScripts(_window: Window) { export function registerPrefsScripts(_window: Window) {
// This function is called when the prefs window is opened // This function is called when the prefs window is opened
@ -9,13 +10,13 @@ export function registerPrefsScripts(_window: Window) {
columns: [ columns: [
{ {
dataKey: "title", dataKey: "title",
label: "Title", label: "prefs.table.title",
fixedWidth: true, fixedWidth: true,
width: 100, width: 100,
}, },
{ {
dataKey: "detail", dataKey: "detail",
label: "Detail", label: "prefs.table.detail",
}, },
], ],
rows: [ rows: [
@ -45,6 +46,18 @@ async function updatePrefsUI() {
const renderLock = ztoolkit.getGlobal("Zotero").Promise.defer(); const renderLock = ztoolkit.getGlobal("Zotero").Promise.defer();
const tableHelper = new ztoolkit.VirtualizedTabel(addon.data.prefs?.window!) const tableHelper = new ztoolkit.VirtualizedTabel(addon.data.prefs?.window!)
.setContainerId(`${config.addonRef}-table-container`) .setContainerId(`${config.addonRef}-table-container`)
// Add locale for table columns
.setLocale(
Object.fromEntries(
new Map(
addon.data.prefs?.columns.map((column) => [
column.label,
getString(column.label),
])
)
)
)
// id and getRowCount are required, others are optional.
.setProp({ .setProp({
id: `${config.addonRef}-prefs-table`, id: `${config.addonRef}-prefs-table`,
columns: addon.data.prefs?.columns, columns: addon.data.prefs?.columns,
@ -62,6 +75,7 @@ async function updatePrefsUI() {
detail: "no data", detail: "no data",
} }
) )
// Show a progress window when selection changes
.setProp("onSelectionChange", (selection) => { .setProp("onSelectionChange", (selection) => {
new ztoolkit.ProgressWindow(config.addonName) new ztoolkit.ProgressWindow(config.addonName)
.createLine({ .createLine({
@ -73,6 +87,8 @@ async function updatePrefsUI() {
}) })
.show(); .show();
}) })
// When pressing delete, delete selected line and refresh table.
// Returning false to prevent default event.
.setProp("onKeyDown", (event: KeyboardEvent) => { .setProp("onKeyDown", (event: KeyboardEvent) => {
if (event.key == "Delete" || (Zotero.isMac && event.key == "Backspace")) { if (event.key == "Delete" || (Zotero.isMac && event.key == "Backspace")) {
addon.data.prefs!.rows = addon.data.prefs!.rows =
@ -89,6 +105,7 @@ async function updatePrefsUI() {
"getRowString", "getRowString",
(index) => addon.data.prefs?.rows[index].title || "" (index) => addon.data.prefs?.rows[index].title || ""
) )
// Render the table.
.render(-1, () => { .render(-1, () => {
renderLock.resolve(); renderLock.resolve();
}); });