Комментарии
Обсуждайте задачи, заказы и другие записи. Комментарии остаются связанными с записью в представлениях «Таблица», «Канбан», «Галерея», «Календарь» и «Гант»: переключение представления не создаёт отдельное обсуждение.
Регистрация плагинов
Добавьте их после основных плагинов Bases и его интерфейса:
pnpm add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-uinpm install @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-uiyarn add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-uibun add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-uiimport { UniverBasesThreadCommentPlugin } from '@univerjs-pro/bases-thread-comment'import { UniverBasesThreadCommentUIPlugin } from '@univerjs-pro/bases-thread-comment-ui'import '@univerjs-pro/bases-thread-comment/facade'import '@univerjs/thread-comment/facade'import '@univerjs-pro/bases-thread-comment-ui/lib/index.css'univer.registerPlugin(UniverBasesThreadCommentPlugin)univer.registerPlugin(UniverBasesThreadCommentUIPlugin)Объедините языковые ресурсы пакетов комментариев и настройте текущего пользователя приложения. Плагин UI добавляет элементы управления комментариями записей; плагин данных связывает комментарии с записями.
Добавление и чтение комментариев
const record = univerAPI.getActiveBase()?.getTables()[0]?.getRecords()[0]if (!record) throw new Error('Create a record first')await record.createCommentAsync('Please confirm the delivery date.')const comments = record.getComments()console.log(comments.map(({ root }) => root.id))getComments() читает локально загруженные комментарии. При удалённом источнике данных await record.listCommentsAsync() синхронизирует известные ветки обсуждений перед возвратом результата. Ответы, обновление и удаление описаны в Facade комментариев.
Сохранение и общие обсуждения
Локальные комментарии можно сохранить как ресурсы Base через base.save(). Перед восстановлением снимка зарегистрируйте плагины комментариев.
Для общих обсуждений также нужны сервис комментариев, источник данных и права доступа. Само совместное редактирование документа не подключает комментарии. Следуйте разделу Модули расширений Office, затем проверьте создание, чтение, права и повторное открытие с двумя учётными записями.
Общие операции
Импортируйте общую Facade комментариев и Facade продукта. Методы продукта создают стабильные привязки, общая API управляет ответами, изменениями, разрешением и удалением. getComments() читает локальное состояние. listCommentsAsync() синхронизирует уже известные обсуждения через настроенный источник, но не обнаруживает все обсуждения на сервере.
import '@univerjs/thread-comment/facade'const [thread] = univerAPI.getComments({ resolved: false })if (thread) { await univerAPI.replyCommentAsync({ unitId: thread.unitId, subUnitId: thread.subUnitId, threadId: thread.threadId, content: 'Reviewed.', })}Общие обсуждения
Интегрируйте Comment Service и Endpoint через Server SDK, затем после настройки совместного редактирования и лицензии зарегистрируйте UniverThreadCommentDataSourcePlugin из @univerjs-pro/thread-comment-datasource. Источник использует /universer-api/comment/unit/{unitId}/... и /universer-api/user/list: предоставьте эти маршруты в приложении. Сервер должен отдельно проверять права на чтение и запись комментариев, не полагаясь на право редактирования документа.
Насколько полезно это руководство?