Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

列表项块转换为文档块 #2610

Closed
88250 opened this issue Aug 9, 2021 · 9 comments
Closed

列表项块转换为文档块 #2610

88250 opened this issue Aug 9, 2021 · 9 comments
Assignees
Labels
Milestone

Comments

@88250
Copy link
Member

88250 commented Aug 9, 2021

No description provided.

@fanglypro
Copy link

列表块转换文档个人认为价值有限,更加重要的应该是列表项转换文档。
列表项父结点对应文档标题,子列表块对应文档内容。
这可以和标题转换文档对应,列表项父结点对应标题,子列表块对应标题下面的内容。

@88250
Copy link
Member Author

88250 commented Aug 29, 2021

@fanglypro 嗯,子列表转文档的时候可以用这个逻辑。

@88250 88250 added this to the backlog milestone Aug 30, 2021
@fanglypro
Copy link

fanglypro commented Aug 30, 2021

@fanglypro 嗯,子列表转文档的时候可以用这个逻辑。

这时候涉及到一个我觉得很关键的逻辑问题,就是转换后的文档id选用原先的哪个id

如果用户是把一个列表项拖拽到文档树中,此时我认为,新文档的id应该是列表项的id,新文档的内容就是子列表块,整个过程和标题转换文档一样非常自然。

而如果用户是把一个列表块拖拽到文档树中,此时新文档的id逻辑上应该是该列表块的id,然后如果有父结点,就选用父结点作为文档标题。此时又有一个问题,该文档中的被转换后的列表块的id是哪个,原id已经被用掉了不能用了,换一个新id又很突兀。而如果换一个逻辑,文档id是一个新id,文档中的列表块id是原id的话,这个转换过程又显得毫无意义,因为我完全可以新建一个文档,然后把这个列表块移动过去就好。我认为,这里面矛盾的本质在于列表块转换文档这个操作本身就是不自然的操作

事实上,与标题转换文档对应,我们是把标题拖拽到文档树中,在列表中与标题对应的应该是列表项而不是列表块,像在大纲笔记中,每一个圆点实际上对应一个page。所以更自然的想法是拖拽列表项而不是子列表块,直接按住列表中的圆点拖到文档树中这应该是是比较自然的动作。

我看您回复的意思好像是觉得列表项转换文档可以用子列表块转换文档替代,这我觉得是一个非常危险的思路,因为有用户会引用列表项,只是使用子列表块转换文档的话,这些对原列表项的引用就全部失效了。

简单来说,我的诉求就是:列表项转换文档后文档id为原列表项的id

在块转换文档这系列功能中,最重要的是id转移问题,因为这是用户没法直接操作的,想修改id只能通过修改源文件进行,有极大的危险性。至于所带来的便利性并不重要,因为这些都是极为低频的操作,节省了低频操作的几十秒钟,没有太大意义。

而对于列表块转换文档,这部分我认为有明显逻辑难点,看D大怎么考虑了,我认为列表块转换文档这个功能意义不大,并不是一个自然的操作,而且完全可以使用新建文档移动列表块来替代。而列表项转换文档是有明确实际意义的,可以和大纲笔记对应。

@fanglypro
Copy link

fanglypro commented Aug 31, 2021

再举个例子,在标题转文档中:

要点一

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

要点二

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. nesciunt.

要点三

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.

比如我要把要点二转文档,我应当拖拽要点二旁边的标题块标识到文档树中

在列表转文档中:

  • 要点一
    • Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  • 要点二
    • Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, > eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. nesciunt.
  • 要点三
    • At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.

此时,和前面标题转文档对应,如果我想要把要点二转文档,应当是拖拽要点二旁边的圆点到文档树中,而不是拖拽要点二下面的内容

@deerainw
Copy link

补充一个小例子,在下面这张图里,如果想转换出一个名字叫 A,正文是 BC 的新文档,这里没有对应的列表块,只有一个列表项块能对应 ABC 这个区域

image

@fanglypro
Copy link

刚刚看到个视频案例,在这里补充下:How to convert block references to page references in Roam Research

可以看到在roam research里面想要把块引用转化为页面引用需要通过复杂的奇淫技巧才能实现,而如果思源能实现列表项(不是列表块)转化文档的话,只需要将列表项的圆点拖拽到文档树中就结束了,完爆视频里的操作

@88250 88250 changed the title 列表块转换文档 列表转换文档 Sep 28, 2021
@88250 88250 modified the milestones: backlog, 1.4.1 Sep 28, 2021
@88250 88250 changed the title 列表转换文档 列表项块转换为文档块 Oct 8, 2021
@88250
Copy link
Member Author

88250 commented Oct 8, 2021

@fanglypro @deerainw 感谢两位帮忙梳理思路,列表块转换确实有点问题,列表项转换比较自然。如果有一种情况是列表项里面包含了行级排版元素(特别是包含块引)时,转换为文档标题后这个信息会丢失,因为文档标题不支持行级元素。这个点两位有空帮忙看看吗?

@fanglypro
Copy link

@fanglypro @deerainw 感谢两位帮忙梳理思路,列表块转换确实有点问题,列表项转换比较自然。如果有一种情况是列表项里面包含了行级排版元素(特别是包含块引)时,转换为文档标题后这个信息会丢失,因为文档标题不支持行级元素。这个点两位有空帮忙看看吗?

之前实现的标题转换文档也同样会遇到这个问题,我觉得列表项转换文档也按照之前标题转换文档的逻辑,目前来看我感觉只能这么做了。

  • 只保留纯文本的内容
  • 对于块引用,没有锚文本使用源内容(标题转换文档目前没有这个),有锚文本使用锚文本
  • 支持撤销,减少风险(标题转换文档目前没有这个,当然这个我觉得没有问题不大,有了更好吧)

剩下的信息丢失的风险只能交给用户承担了。

@deerainw
Copy link

deerainw commented Oct 8, 2021

只保留纯文本就行了,文档标题不支持行级元素只是一方面,就算支持,后面还会遇到嵌套引用的难题

@88250 88250 modified the milestones: 1.4.1, 1.5.0 Oct 8, 2021
@88250 88250 closed this as completed Nov 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants