Вставить элементы в другой граф в Rappid? - PullRequest
0 голосов
/ 05 декабря 2018

Я создаю инструмент администрирования, который манипулирует диаграммами, используя JointsJS + Rappid.Я пытаюсь скопировать элементы вставки с одной бумаги A на другую бумагу B (расположенную на разных вкладках браузера), но сталкиваюсь со следующей проблемой:

  • Я могу скопировать и вставить из A в B один наборэлементы (это хорошо)
  • Я могу даже вставить его несколько раз (это все еще хорошо)
  • , но если я скопирую другой набор элементов из A и попытаюсь вставить его в B, первыйнабор вставлен вместо нового
  • Я все еще могу вставлять элементы из A в A, а B в B, но больше не из одного в другой.

Кажется, чтотакое же поведение в демонстрационной версии Kitchen Sink Rappid : если я открою 2 вкладки в демонстрационной версии, я столкнусь с точно такой же проблемой.Вы можете легко воспроизвести его, открыв 2 вкладки в демонстрационном приложении.

Это мой фрагмент кода (непосредственно взят из демонстраций Rappid):

this.clipboard = new joint.ui.Clipboard();
this.selection = new joint.ui.Selection({
    paper: this.paper,
    handles: App.config.selection.handles,
    collection: new Backbone.Collection
});

this.keyboard = new joint.ui.Keyboard();
this.keyboard.on({
    'ctrl+c': function () {
        // Copy all selected elements and their associated links.
        this.clipboard.copyElements(this.selection.collection, this.graph);
    },
    'ctrl+v': function () {
        var pastedCells = this.clipboard.pasteCells(this.graph, {
            translate: {dx: 20, dy: 20},
            useLocalStorage: true
        });
        var elements = _.filter(pastedCells, function (cell) {
            return cell.isElement();
        });
        // Make sure pasted elements get selected immediately. This makes the UX better as
        // the user can immediately manipulate the pasted elements.
        this.selection.collection.reset(elements);
    },
}

В документации по Rappid этозаявил, что:

"Кроме того, буфер обмена также может копировать ячейки с одной бумаги и вставлять их в другую. Однако определение целевой бумаги остается на прикладном уровне."

Я не до конца понял второе предложение («Однако ...» до конца).

Я провел мониторинг локального хранилища и обнаружил, что обе бумаги, вероятно, используют одну и ту же запись хранилища, чтоЗаставьте меня думать, что межграфовая вставка управляется.

На этом этапе я пытаюсь выяснить:

  • мой код должен выполнять копирование между графами вообще,
  • Я делаю что-то не так,
  • есть ошибка в Rappid (учитывая, что такое же поведение в официальной демоверсии).

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 18 декабря 2018

Я получил ответ от команды Rappid, и это ошибка в Rappid, которая исправляется.

Исправление будет включено в следующую версию (возможно, 2.5).

...