Wyświetlający podgląd połączeń

Narzędzie podglądu połączenia tworzy wizualny podgląd oczekującego połączenia. it wskazuje miejsce połączenia bloku przeciągania, gdy jest spadła.

Domyślny podgląd połączeń umieszcza znaczniki wstawiania w których będą się łączyć bloki. Wyróżnia również połączenia i wycisza na bloki, które zostaną zastąpione i odłączone.

Demonstracja wbudowanego podglądu

Rodzaje oczekujących połączeń

Istnieją 2 rodzaje oczekujących połączeń. W jednym przypadku upuszczony blok zastąpi istniejący blok, a istniejący zostanie odłączony. W drugim wsunięta blok, nie odłączaj innych bloków.

Zamiennik

Wymiana ma miejsce, gdy połączenie na przeciągniętym bloku będzie się połączyć w połączeniu, które ma już blokadę i nie ma gdzie dla istniejącej z powrotem. Po upuszczeniu przeciągniętego bloku zostanie odłączony, a przeciągnięty blok zostanie połączony na swoim miejscu.

Domyślnie zaznaczamy to, nadając efekt zanikania do bryły, która jest zastąpiono.

Wbudowany zamiennik
wersja testowa

Wstawienie

Wstawianie danych ma miejsce w 2 przypadkach. Zdarza się, gdy połączenie na przeciąganym blok ma połączenie z pustym połączeniem. Zdarza się, gdy na przeciągniętym bloku trafi do połączenia, które ma już ale można ją wstawić między dwoma istniejącymi bryłami, dzięki czemu urządzenie nie zostaje odłączone.

Informujemy to domyślnie, tworząc znaczniki wstawiania które będą nawiązywane.

Wbudowana funkcja wstawiania
wersja testowa

Tworzenie niestandardowego podglądu

Jeśli chcesz wyświetlić podgląd oczekujących połączeń w inny sposób, możesz utworzyć niestandardową implementację IConnectionPreviewer.

Konstrukcja i utylizacja

Musisz wdrożyć konstruktor i metodę usuwania IConnectionPreviewer

Konstruktor jest wywoływany zawsze, gdy rozpoczyna się przeciąganie bloków, i jest przekazywany przeciągniętym blokiem. Jeśli musisz zainicjować dowolny stan na podstawie możesz to zrobić w konstruktorze.

class MyConnectionPreviewer implements IConnectionPreviewer {
  constructor(draggedBlock: Blockly.BlockSvg) {
    // Initialize state here.
  }
}

Metoda dispose jest wywoływana za każdym razem, gdy kończy się przeciąganie blokiem. W razie potrzeby usuwania dowolnego stanu po wyczyszczeniu instancji IConnectionPreviewer, czy też należy to zrobić tutaj.

dispose() {
  // Dispose of and dereference any state.
}

Tworzenie podglądu

Urządzenie IConnectionPreviewer musi zaimplementować logikę wyświetlania podglądu wizualnego połączeń.

Zamiennik

Aby wyświetlić podgląd zamienników, zaimplementuj previewReplacement .

previewReplacement(draggedConn, staticConn, replacedBlock) {
  // Visually indicate that the replacedBlock will be disconnected, and the
  // draggedConn will be connected to the staticConn.
}

Wstawienie

Aby wyświetlić podgląd wstawienia, wdróż metodę previewConnection.

previewConnection(draggedConn, staticConn) {
  // Visually indicate the draggedConn will be connected to the staticConn.
}

Jeśli chcesz, aby podgląd był inny w zależności od tego, czy przeciągnięty blok jeśli podłączysz je do pustego źródła lub wstawisz między blokami, możesz sprawdzić, czy urządzenie staticConn jest obecnie połączone z innym połączeniem. Jeśli staticConn jest obecnie połączony, oznacza to, że draggedConn jest właśnie połączony zostały wstawione między bryły.

previewConnection(draggedConn, staticConn) {
  if (staticConn.targetConnection) {
    // The dragged block is being inserted between blocks.
  } else {
    // The dragged block is connecting to an empty input.
  }
}

Podglądy CSS

Aby wyświetlić podgląd połączeń, zastosuj do bloku CSS. Na przykład parametr Domyślne zanikanie można włączyć, dodając klasę CSS blocklyReplaceable do bloku.

previewReplacement(draggedConn, staticConn, replacedBlock) {
  Blockly.utils.dom.addClass(replacedblock.getSvgRoot(), 'my-custom-class');
}

Podglądy mechanizmów renderowania

Aby wyświetlić podgląd połączeń, zaimplementuj niestandardowy mechanizm renderowania ze specjalnymi elementami przykuwającymi podgląd.

previewReplacement(draggedConn, staticConn, replacedBlock) {
  const renderer = replacedBlock.workspace.getRenderer()
  if (renderer.addReplacementIndicator) {
    renderer.addReplacementIndicator(replacedBlock);
  }
}

Ukryj podgląd

IConnectionPreviewer musi mieć możliwość ukrywania podglądów. Tak gdy przeciągnięty blok wychodzi poza zasięg wszystkich połączeń, więc podgląd powinno być widoczne. Jest również wywoływana tuż przed usunięciem podglądu.

hidePreview() {
  // Remove CSS classes, toggle renderer methods, etc.
}

Rejestracja i korzystanie

Na koniec, po utworzeniu IConnectionPreviewer możesz musisz go zarejestrować. Powiąże to mechanizm renderowania z ciągiem, dzięki czemu będzie można przekazać go do konfiguracji wstrzykiwania. Możesz też przekazać klasa IConnectionPreviewer (tj. konstruktor) bezpośrednio do wstrzykiwanego elementu konfiguracji.

Blockly.registry.register(
  Blockly.registry.Type.CONNECTION_PREVIEWER,
  'MyConnectionPreviewer',
  MyConnectionPreviewer,
);

// You can use the string.
const myWorkspace = Blockly.inject({
  // options...
  plugins: {
    connectionPreviewer: 'myConnectionPreviewer',
  },
};

// Or you can pass the class / constructor directly.
const myWorkspace = Blockly.inject({
  // options...
  plugins: {
    connectionPreviewer: MyConnectionPreviewer,
  },
};

Więcej informacji na temat rejestracji można znaleźć na stronie Wstrzykiwanie podklas.