Open 153264 opened 3 months ago
没啥问题,收藏夹自定义标签也是计划里的。不过有几点需要改下:
题外话,localstorage的setting里可以加个tag表,用来存预设标签和颜色,比如:predefinedKeywords: { id: string, color: 'red'|'blue' }[]
。不过这不影响标签本身实现,等标签做好再说也不迟。
不需要tag表和tag_id,直接用string表示tag
我是想可能会有编辑标签的情况,还有方便查询本地的全部标签 如果没有标签表的话,还得要先循环全部的文章取出标签,再分类展示
翻译批次可以通过单独的“待翻译”收藏夹来操作
我也有设想要做这个,但是前提是要先把标签做出来才能进一步扩展
我是想可能会有编辑标签的情况
编辑标签是个麻烦的问题,但这个操作不常见。另外即使有tag表,在删除tag的时候,还是避免不了扫一遍。
还有方便查询本地的全部标签
关于这点有个前置问题,indexeddb在什么数量级需要分页。如果这个数字足够大,大到超过本地小说的可能大小的话,那么首次进入本地小说统计一次标签也是没问题的。等我睡一觉起来,测测看上限在哪吧。
PS. 找到一张性能图: 来自:https://rxdb.info/slow-indexeddb.html
另外即使有tag表,在删除tag的时候,还是避免不了扫一遍
那也比每次获取分类要先循环全部的文章取出标签要好吧
那么首次进入本地小说统计一次标签也是没问题的
感觉这样有点多此一举了,单独拆分标签表就行
我是觉得小说信息跟标签应该解耦,标签单独存一张表进行管理
这样既方便标签的维护,也方便之后扩展
如果标签名称也存到 metadata
的话,这张表既需要维护小说的信息,还要作为标签表去管理
localstorage的setting里可以加个tag表,用来存预设标签和颜色,比如:predefinedKeywords: { id: string, color: 'red'|'blue' }[]
标签表直接放在localstorage也不是不行,比如:predefinedKeywords: { id: number, name: string, color: 'red'|'blue' }[]
我是觉得小说信息跟标签应该解耦,标签单独存一张表进行管理
我觉得有点过早优化了,但如果你不嫌麻烦的话也行吧。
那我就按着以下调整去初步实现这个功能
浏览器 indexdb volumes 新增 tag 表 表字段 tag_id: number , tag_name: string 修改 metadata 表 新增 tag_ids: number[]
页面优化 我的收藏:本地小说 /favorite/local/default 支持管理标签,批量对文章分类
Sakura工作区 /workspace/sakura 本地小说 支持管理标签,批量对文章分类
ok
有个问题,现在我做了标签管理,但是以前的数据库是没有tag_ids
的
要筛选显示的话就只能这样了,要不然之前的小说查不到了
把 默认收藏夹 当成 全部收藏夹 了
const sortedVolumes = computed(() => {
let _volumes = volumes.value;
if (props.favoredId && props.favoredId != 'default') {
_volumes = _volumes.filter((v) => v.tag_ids?.includes(props.favoredId));
}
return BookshelfLocalUtil.filterAndSortVolumes(_volumes, {
...search,
order: setting.value.localVolumeOrder,
});
});
预计调整如下: 浏览器 indexdb volumes 新增 tag 表 表字段 tag_id: number , tag_name: string 修改 metadata 表 新增 tag_ids: number[]
页面优化 我的收藏:本地小说 /favorite/local/default 支持管理标签,批量对文章分类
Sakura工作区 /workspace/sakura 本地小说 支持管理标签,批量对文章分类 任务记录 批量对文章分类
如果没问题的话,我就开始按这个计划去调整