Skip to content

Commit

Permalink
优化#标签排序A-Z
Browse files Browse the repository at this point in the history
  • Loading branch information
MuiseDestiny committed Mar 5, 2023
1 parent 2beb484 commit dec1de8
Show file tree
Hide file tree
Showing 9 changed files with 74 additions and 56 deletions.
3 changes: 3 additions & 0 deletions addon/prefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ pref("extensions.zotero.__addonRef__.PublicationTagsColumn.defaultColor", "#86da
pref("extensions.zotero.__addonRef__.PublicationTagsColumn.textColor", 'black');
pref("extensions.zotero.__addonRef__.PublicationTagsColumn.sortBy", 'sci, -sciif');
pref("extensions.zotero.__addonRef__.PublicationTagsColumn.map", "北大中文核心=北核, SCIIF=IF, SCIIF(5)=IF(5)");

pref("extensions.zotero.__addonRef__.PublicationTagsColumn.margin", "0.2");
pref("extensions.zotero.__addonRef__.PublicationTagsColumn.padding", "0.5");
pref("extensions.zotero.__addonRef__.PublicationTagsColumn.opacity", "0.5");
Expand All @@ -68,6 +69,8 @@ pref("extensions.zotero.__addonRef__.annotationColors", '[["general.yellow","#ff
pref("extensions.zotero.__addonRef__.annotationColorsGroups", '[["Untitled",[["general.yellow","#ffd400"],["general.red","#ff6666"],["general.green","#5fb236"],["general.blue","#2ea8e5"],["general.purple","#a28ae5"],["general.magenta","#e56eee"],["general.orange","#f19837"],["general.gray","#aaaaaa"]]]]');

pref("extensions.zotero.__addonRef__.function.itemTypeFilter.enable", true);
pref("extensions.zotero.__addonRef__.function.addNumberToCollectionTree.enable", true);
pref("extensions.zotero.__addonRef__.function.Tags.enable", true);

pref("extensions.zotero.__addonRef__.nestedTags.sortord", "0");

Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "zotero-style",
"version": "2.3.4",
"version": "2.3.5",
"description": "让你的Zotero看起来更有趣",
"config": {
"addonName": "Zotero Style",
Expand Down Expand Up @@ -34,6 +34,8 @@
"dependencies": {
"3d-force-graph": "^1.71.1",
"math": "^0.0.3",
"pdfjs": "^2.4.7",
"pdfjs-dist": "^3.4.120",
"pixi": "^0.3.1",
"raphael": "^2.3.0",
"runes": "^0.4.3",
Expand Down
33 changes: 16 additions & 17 deletions src/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,22 +43,23 @@ async function onStartup() {
const views = new Views(addonItem)
Zotero.ZoteroStyle.data.views = views


views.initTags()
views.createGraphView()
await views.renderTitleProgress()
await views.createTagsColumn()
await views.createTextTagsColumn()
await views.createProgressColumn()
await views.createIFColumn()
await views.createPublicationTagsColumn()
await views.createRatingColumn()
views.registerSwitchColumnsViewUI()
await views.registerCommands()

await views.initItemSelectListener()
await views.addNumberToCollectionTree()
const tasks = [
views.initTags(),
views.createGraphView(),
views.renderTitleProgress(),
views.createTagsColumn(),
views.createTextTagsColumn(),
views.createProgressColumn(),
views.createIFColumn(),
views.createPublicationTagsColumn(),
views.createRatingColumn(),
views.registerCommands(),
views.initItemSelectListener(),
views.addNumberToCollectionTree(),
]

await Promise.all(tasks);
await views.registerSwitchColumnsViewUI();
try {
ZoteroPane.itemsView.tree._columns._updateVirtualizedTable()
ztoolkit.ItemTree.refresh()
Expand All @@ -70,8 +71,6 @@ function onShutdown(): void {
ztoolkit.unregisterAll()
ztoolkit.UI.unregisterAll()
ztoolkit.ItemTree.unregisterAll()

// Remove addon object
addon.data.alive = false;
delete Zotero.ZoteroStyle;
}
Expand Down
25 changes: 7 additions & 18 deletions src/modules/item.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ export default class AddonItem {
if (item) {
this.item = item
ztoolkit.log("From prefKey")
ztoolkit.log("\n\n******")
this.hiddenNotes()
return
}
Expand All @@ -44,7 +43,6 @@ export default class AddonItem {
Zotero.Prefs.set(this.prefKey, item.key)
this.item = item
this.hiddenNotes()
ztoolkit.log("\n\n******")
}

/**
Expand Down Expand Up @@ -131,22 +129,13 @@ export default class AddonItem {
const itemTitle = this.title
Zotero.Search.prototype.search = async function () {
let ids = await search.apply(this, arguments);
// 只有在搜索结果是笔记时才过滤
if (
Zotero.Items.get(ids[0]).itemTypeID == 26 &&
Zotero.Items.get(ids.slice(-1)[0]).itemTypeID == 26
) {
ztoolkit.log("hook ids", ids.length)
return ids.filter((id: number) => {
const parentID = Zotero.Items.get(id).parentID
if (!parentID) { return true }
const parentItem = Zotero.Items.get(parentID)
if (!parentItem) { return true }
return parentItem.key != excludeKey && parentItem.getField("title") != itemTitle
})
} else {
return ids
}
return ids.filter((id: number) => {
const parentID = Zotero.Items.get(id).parentID
if (!parentID) { return true }
const parentItem = Zotero.Items.get(parentID)
if (!parentItem) { return true }
return parentItem.key != excludeKey && parentItem.getField("title") != itemTitle
})
}
}
}
1 change: 0 additions & 1 deletion src/modules/localStorage.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import { config } from "../../package.json";

class LocalStorage {
Expand Down
6 changes: 0 additions & 6 deletions src/modules/tags.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,14 +169,8 @@ export class Tags {
plainTags = plainTags.concat(item.getTags().map(i => i.tag))
})
// TODO: 提供设置,可以不以#开头
// const prefix = Zotero.Prefs.get(`${config.addonRef}.textTagsColumn.prefix`) as string
plainTags = plainTags
.filter((tag: string) => {
// if (prefix.startsWith("~~")) {
// return !tag.startsWith(prefix.slice(2))
// } else {
// return tag.startsWith(prefix)
// }
return Tags.getTagMatch(tag)
})
return plainTags
Expand Down
52 changes: 42 additions & 10 deletions src/modules/views.ts
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ export default class Views {
) => {
let coloredTags = item.getColoredTags()
let tags = item.getTags().filter(tag => coloredTags.map((tag: any) => tag.tag).indexOf(tag.tag) == -1)
tags = [...coloredTags, ...tags.sort()]
tags = [...coloredTags, ...tags.sort((a, b) => a.tag > b.tag ? 1 : -1)]
return tags.length > 0 ? JSON.stringify(tags) : "";
},
{
Expand Down Expand Up @@ -562,13 +562,39 @@ export default class Views {
let fields: any = Zotero.Prefs.get(`${config.addonRef}.${key}Column.fields`) as string
fields = fields.split(/,\s*/g).filter((i: string) => data[i])
let mapString: any = Zotero.Prefs.get(`${config.addonRef}.${key}Column.map`) as string
const textMap = new Map()
mapString.split(/,\s*/g).filter((s: string) => s.indexOf("=") != -1).forEach((s: string) => {
let [k, v] = s.split("=").map((s: string) => s.trim())
k && textMap.set(k, v)
let mapArr: [RegExp | string, string][] = mapString.split(/[,;]\s*/g).filter((s: string)=>s.trim().length).map((ss: string) => {
let [s1, s2] = ss.split("=")
// 如果s1是正则转化为正则
const res = s1.match(/\/(.+)\/(\w*)/)
if (res) {
return [
new RegExp(res[1], res[2]),
s2
]
} else {
return [
s1,
s2
]
}
})
let getMapString = (k: string) => {
return textMap.get(k) ?? k
let getMapString = (s: string) => {
try {
for (let i = 0; i < mapArr.length; i++){
if (typeof mapArr[i][0] == "string") {
if (mapArr[i][0] == s) {
s = mapArr[i][1]
}
} else if ((mapArr[i][0] as RegExp).test(s)) {
s = s.replace(mapArr[i][0], mapArr[i][1])
break
}
}
return s
} catch (e) {
console.log(e)
return s
}
}
for (let i = 0; i < fields.length; i++) {
let field = fields[i]
Expand Down Expand Up @@ -819,10 +845,10 @@ export default class Views {
}) as HTMLSpanElement

let item = ZoteroPane.itemsView.getRow(index).ref
let page: number
let page: number = 0;
try {
page = Number(this.addonItem.get(item, "readingTime").page)
} catch { return span }
} catch { }
let record: Record = { page, data: {} }
let pdfItem
const cacheKey = `${item.key}-getBestAttachment`
Expand All @@ -834,6 +860,8 @@ export default class Views {
const charNum = (anno._annotationText || anno._annotationComment || "").length
try {
let pageIndex = Number(JSON.parse(anno._annotationPosition).pageIndex)
const _page = pageIndex + 1
page = _page > page ? _page : page
if (pageIndex in record.data == false) {
record.data[pageIndex] = charNum
} else {
Expand All @@ -842,6 +870,7 @@ export default class Views {
}
} catch { }
})
record.page = page
let values = []
for (let i = 0; i < record.page; i++) {
values.push(parseFloat(record.data[i] as string) || 0)
Expand Down Expand Up @@ -3421,6 +3450,7 @@ export default class Views {
}

public async initTags() {
if (!Zotero.Prefs.get(`${config.addonRef}.function.Tags.enable`) as boolean) { return }
// 等待加载
while (!ZoteroPane.tagSelector) {
await Zotero.Promise.delay(100)
Expand Down Expand Up @@ -3483,7 +3513,8 @@ export default class Views {
}
}
window.setTimeout(async () => {
// 随着缩放它会一直闪烁,这个bug一直没修复
// 随着缩放它会一直闪烁,这个bug,Zotero官方一直没修复
// 所以将它替换为border形式,即使不消失也不会太影响观感
const win = (
(await ztoolkit.Reader.getReader() as _ZoteroReaderInstance)._iframeWindow as any
).wrappedJSObject
Expand All @@ -3506,6 +3537,7 @@ export default class Views {
}

public async addNumberToCollectionTree() {
if (!Zotero.Prefs.get(`${config.addonRef}.function.addNumberToCollectionTree.enable`) as boolean) { return }
ztoolkit.patch(
ZoteroPane.collectionsView,
"renderItem",
Expand Down
4 changes: 2 additions & 2 deletions update.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"[email protected]": {
"updates": [
{
"version": "2.3.4",
"version": "2.3.5",
"update_link": "https://github.com/muisedestiny/zotero-style/releases/latest/download/zotero-style.xpi",
"applications": {
"gecko": {
Expand All @@ -12,7 +12,7 @@
}
},
{
"version": "2.3.4",
"version": "2.3.5",
"update_link": "https://github.com/muisedestiny/zotero-style/releases/latest/download/zotero-style.xpi",
"applications": {
"zotero": {
Expand Down
2 changes: 1 addition & 1 deletion update.rdf
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<rdf:Seq>
<rdf:li>
<rdf:Description>
<em:version>2.3.4</em:version>
<em:version>2.3.5</em:version>
<em:targetApplication>
<rdf:Description>
<em:id>[email protected]</em:id>
Expand Down

0 comments on commit dec1de8

Please sign in to comment.