Мне очень любопытно услышать сообщения от других о проблеме, которую я рассматривал в течение некоторого времени.
По сути, я хотел бы представить пользователю текстовый документ и позволить ему сделать выбор текста и аннотировать его. Конкретно для аннотаций я хочу достичь следующего:
- Разрешить пользователям делать выбор текста, аннотировать его, а затем сохранять выделение и аннотацию для ссылки позже
- (UI) Поддержка представления перекрывающихся аннотаций. Например, если строка, где: "Это тестовое предложение для моего примера тестового предложения", user1 может иметь аннотацию на "это тестовое предложение для моего примера", а user2 может содержать аннотацию "для моего примера".
- Учет для ситуаций, когда текст документа изменяется. Аннотации будут обновляться, если это возможно.
Как бы вы справились с этим с технической точки зрения?
Некоторые идеи, которые у меня были, следующие:
- Используйте диапазоны javascript и сохраняйте аннотацию в виде пары целых чисел: (document_start_char, document_end_char). Сохраните эту пару в db.
- В качестве альтернативы, используя JS, вы выбираете текст и фактически сохраняете полный текст в db. (не уверен, как бы я тогда перекрывал аннотации)
- Представляйте перекрывающиеся аннотации, применяя стиль css, чтобы выделить текст, затем затемньте "стек" аннотаций, где они перекрываются. Наименьшая аннотация всегда должна быть на вершине "стека".
Каковы ваши мысли или области улучшения? Как я могу поддержать обновляемый текст документа, не нарушая все аннотации?