add: prefs table local example
This commit is contained in:
		
							parent
							
								
									3c5dd0089c
								
							
						
					
					
						commit
						a8dcf5e310
					
				@ -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
 | 
				
			||||||
@ -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=阅读器标签
 | 
				
			||||||
@ -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();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user