Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
MuiseDestiny committed Apr 26, 2023
1 parent 63ba83b commit d9cf893
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 3 deletions.
1 change: 1 addition & 0 deletions addon/chrome/content/preferences.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<checkbox label="Progress" preference="extensions.zotero.__addonRef__.function.progressColumn.enable" />
<checkbox label="Graph View" preference="extensions.zotero.__addonRef__.function.graphView.enable" />
<checkbox label="Nested Tags" preference="extensions.zotero.__addonRef__.function.Tags.enable" />
<checkbox label="Publication" preference="extensions.zotero.__addonRef__.function.publicationColumn.enable" />
<checkbox label="View Groups" preference="extensions.zotero.__addonRef__.function.columnsViews.enable" />
<checkbox label="Item Type Filter" preference="extensions.zotero.__addonRef__.function.itemTypeFilter.enable" />
<checkbox label="Publication Tags" preference="extensions.zotero.__addonRef__.function.PublicationTagsColumn.enable" />
Expand Down
4 changes: 4 additions & 0 deletions addon/prefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,10 @@ pref("extensions.zotero.__addonRef__.creatorColumn.format", "${firstCreator}");
pref("extensions.zotero.__addonRef__.creatorColumn.slices", "0:1");
pref("extensions.zotero.__addonRef__.creatorColumn.join", ", ");

pref("extensions.zotero.__addonRef__.function.publicationColumn.enable", true);
pref("extensions.zotero.__addonRef__.publicationColumn.fields", "publicationTitle, proceedingsTitle, university, publisher");




pref("extensions.zotero.__addonRef__.nestedTags.sortord", "0");
Expand Down
1 change: 1 addition & 0 deletions src/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ async function onStartup() {
views.initItemSelectListener(),
views.addNumberToCollectionTree(),
views.renderCreatorColumn(),
views.renderPublicationColumn()
]
try {
await Promise.all(tasks);
Expand Down
2 changes: 1 addition & 1 deletion src/modules/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import LocalStorage from "./localStorage";
const requests = new Requests()

export function getPublicationTitle(item: Zotero.Item) {
return [item.getField("publicationTitle"), item.getField("proceedingsTitle")].find(i => i.trim().length > 0)
return [item.getField("publicationTitle"), item.getField("proceedingsTitle")].find(i => i.trim().length > 0) || ""
}

/**
Expand Down
39 changes: 37 additions & 2 deletions src/modules/views.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ export default class Views {
* 标题是必定显示的所以奇数偶数显示逻辑写在这里
*/
public async renderTitleColumn() {
// 防止与其他插件冲突
await Zotero.Promise.delay(1000)
ztoolkit.log("renderTitleColumn")
if (!Zotero.Prefs.get(`${config.addonRef}.function.titleColumn.enable`) as boolean) { return }
Expand Down Expand Up @@ -295,6 +296,34 @@ export default class Views {
)
}

public async renderPublicationColumn() {
if (!Zotero.Prefs.get(`${config.addonRef}.function.publicationColumn.enable`) as boolean) { return }
const key = "publicationTitle"
await ztoolkit.ItemTree.addRenderCellHook(
key,
(index: number, data: string, column: any, original: Function) => {
console.log(data)
const cellSpan = original(index, data, column) as HTMLSpanElement;
const fields = Zotero.Prefs.get(`${config.addonRef}.publicationColumn.fields`) as string
const item = ZoteroPane.getSortedItems()[index]
cellSpan.innerText = data || fields.split(/,\x20*/).map((field:string) => {
return item.getField(field)
}).find((i:string)=>i.length>0) || ""
return cellSpan
}
)
this.patchSetting(
key,
[
{
prefKey: "publicationColumn.fields",
name: "Fields",
type: "input"
},
]
)
}

private replaceCellIcon(item: Zotero.Item, cellSpan: HTMLSpanElement) {
const iconSpan = cellSpan.querySelector(".cell-icon") as HTMLSpanElement
let res = item.attachmentPath?.match(/\.(\w+)$/)
Expand Down Expand Up @@ -589,9 +618,15 @@ export default class Views {
) => {
if (!item.isRegularItem()) { return ""}
try {
// 只读取本地,不请求网络,避免卡顿
const data = this.localStorage.get(item, "publication")
if (!data || data == "") { return "" }
if (data == undefined) {
// 自动更新
window.setTimeout(async () => {
await updatePublicationTags(this.localStorage, item)
})
return ""
}
if (data == "") { return data }
// 排序
let sortBy: any = Zotero.Prefs.get(`${config.addonRef}.${key}Column.sortBy`) as string
sortBy = sortBy.split(/,\s*/g)
Expand Down

0 comments on commit d9cf893

Please sign in to comment.