Е, дойде денят за бързо съавторство в редакторите на ONLYOFFICE.

денят

Строго срещу бързо

Други аргументи за "строг" режим на редактиране:

Не бяхме комплексирани от липсата на бърз режим на съвместно редактиране, но потребителите го искаха. Като нашия PR отдел, който практикува съвместно създаване в реално време. Като цяло се отказахме и дори намерихме

Плюсове на "бързия" режим:

  • Удобство и бързина при работа с малки документи (няколко страници);
  • развлечения;
  • Удобство за съвместно разработване на идея, например мозъчна атака;
  • Възможност за бързо извършване и проследяване на окончателни редакции, когато работите заедно върху окончателната версия на документа.

Как работи всичко

Оперативно преобразуване

Схемата за затягане се оказа почти идеална за всичко, освен за въвеждане и изтриване на текст. В тези случаи блокирането на абзац, дори и най-краткият, причинява неприятни природни явления: някои букви просто не се въвеждат. Поради това трябваше да се откажем от блокирането на абзаци при въвеждане и изтриване на текст (в други случаи блокирането все още е налице).

Същността на алгоритъма е следната:

Да кажем, че имаме абзац с текст "avbr" и двама потребители - номер едно и номер две, които искат да направят промени в този текст едновременно. Например номер едно вмъква буквата "x" в началото на думата, а номер две премахва буквата "v". При сливане трябва да получите "habr".

дойде

За алгоритъма действията на потребителя могат да бъдат записани като ins("x", 0) (вмъкнете буквата "x" на позиция нула) и del(1) (изтрийте на позиция 1). Нека се опитаме да извършим последователно тези трансформации, като вземем предвид чии промени ще дойдат първо на сървъра:

бързо

Вижда се, че сложносттане е само в самите промени, но и в това кой от потребителите е успял първи да изпрати своите редакции. Решението на този проблем е, че промените на потребителя, които идват на сървъра втори, трябва да бъдат конвертирани чрез промените, които са дошли първи. В първия случай, тъй като изтриването на позиция 1 не променя вмъкването на позиция 0, втората промяна не променя.

Във втория случай вмъкването на позиция 0 засяга последващото изтриване на позиция 1, то се преобразува в изтриване на позиция 2. В резултат на това след трансформацията получаваме следната схема.

дойде

Основна разлика

денят

В нашата схема всичко ще се случи по различен начин. И двамата потребители ще изпратят заявка до сървъра за запазване на промените. Един от тях ще получи отговор "възможно е", а вторият "невъзможно е". Този, който получи „може“, веднага ще изпрати промените си на сървъра, който от своя страна ще ги изпрати на втория потребител. Вторият потребител ще приложи тези промени и (според описаната по-горе схема) ще конвертира своите чрез тях. Само тогава той ще изпрати преобразуваните си промени на сървъра. След това редакциите ще стигнат до първия потребител.

дойде

Основното предимство на нашата схема е, че не натоварваме сървъра - той само съхранява списък с промените, които са направени в документа, и организира опашка за запис.

Отказ/повтаряне

Нека си признаем, все още нямаме отмяна в режим на „бързо“ съвместно редактиране. За съжаление, никой няма такава отмяна, която потребителите биха искали.

Да кажем, че един човек е добавил таблица, а друг е започнал да я променя, да речем, да премества граници, да въвежда текст. Тогава първият реши да отмени добавянето на таблицата. Всъщност таблицата ще изчезне с всичко, което вторият потребител е направил в нея. Ако той, например, завлече в масатачаст от текста от документа, след което ще потъне в забрава заедно с отменената таблица. Освен това е невъзможно да се направи правилно повторение за такъв вариант на отмяна по отношение на промените, направени в документа.

Схемата за отмяна / повторение в Google Документи не връща документа в оригиналната му форма, както би искал потребителят, напротив, може да го направи това, което този документ никога не е бил.

Обаче обмисляме и добавянето на undo, което ще работи подобно на Google. В нашите планове тя мирно съжителства с версията на Microsoft: докато е възможно да направим правилната отмяна / повторение, ние го правим, след което се опитваме да направим отмяна като в Google Docs.

В различни режими

Възможността за превключване на режимите на редактиране е нашата иновация. Потребителите, които работят едновременно с документа, могат да изберат най-удобния метод за редактиране за себе си.

Например номер едно има активиран "строг" режим, докато номер две има активиран "бърз" режим. Първият заключва обекти и сам запазва промените си. Вторият не блокира нищо и запазването му става автоматично. Ако първият редактира обект или част от текст, вторият не може да направи нищо в тях. В същото време първият не вижда какво прави вторият - нека има изненада. След запазване номер едно ще изпрати промените си и ще приеме промените на номер две.

Ако номер три се свърже с „бърз“ режим, тогава те и номер две работят тихо в режим на бързо съвместно редактиране. В същото време те не виждат и не могат да коригират онова, което е блокирал онзи интроверт Номер Едно. За последното, между другото, както undo, така и redo работят.

Можете да опитате бързо съавторство в действие тук.