Zpět na domů

Paleta příkazů JMatrixPlatform pro UI-navigaci

V článku je popsána implementace palety příkazů v JMatrixPlatform, inspirovaná VSCode. Byly použity existující JCommand s hashtagy pro vyhledávání a filtrování. Přístup zrychluje navigaci v multimodulových systémech bez změny UI-struktury.

Jak paleta příkazů řeší chaos UI v JMatrixPlatform
Advertisement 728x90

Paleta příkazů v JMatrixPlatform: řešení problému navigace v multimodulárních systémech

Multimodulární systémy jako JMatrixPlatform čelí přetížení uživatelského rozhraní: stovky příkazů, tlačítek a záložek komplikují navigaci i pro administrátory. Inspirováno paletou příkazů VSCode, bylo implementováno univerzální řešení — jednotný vyhledávací řádek pro dostupné příkazy uživatele. To snižuje závislost na hierarchických menu a urychluje přístup k funkcím.

Klasický problém navigace

V systémech s desítkami modulů je hlavní stránka zaplněna zkratkami, kategoriemi a podmenu. Uživatel s přístupem k 10+ procesům tráví čas hledáním: Hlavní -> MojeAkce -> Správa požadavků -> Rozdělení. Instrukce jsou nezbytné: "Rozbalte kategorii A, přejděte do B, klikněte na C."

Administrativní příkazy (aktualizace mezipaměti, synchronizace, reporty) jsou obzvláště problematické — je obtížné je umístit a zapamatovat. Všechna řešení se omezují na skupinování, které skrývá funkčnost.

Google AdInline article slot

Myšlenka z VSCode

Paleta příkazů VSCode je klávesnicový přístup k jakékoli funkci IDE prostřednictvím vyhledávání podle názvu. Odstraňuje spory o umístění UI prvků a umožňuje okamžité volání.

V JMatrixPlatform je architektura již připravena: jakákoli UI akce je JCommand s href, label, popisem a právy přístupu. Příkazy sestavují hlavní stránku, panely nástrojů a lišty.

Příklad příkazu Projekty:

Google AdInline article slot
@JModelPart
public final class ACDProjectsDesk extends JCommand {
  public static ACDProjectsDesk COMMAND = new ACDProjectsDesk();

  @Override
  public JHref getHref(JContext ctx, JRequestParams requestParams) {
    return new JHrefTable(
        ATBProjectsDesk.TABLE,
        JTarget.CONTENT,
        Actions.TOOLBAR,
        null,
        AIQProjectsAll.INQUIRY,
        JHrefTable.RowSelection.MULTI);
  }
}

Lokalizace v messages_ru.properties:

ru.demo.matrix.schema.ui.command.ACDProjectsDesk=Projekty

Implementace s hashtagy

Pro paletu byly přidány hashtagy — filtr přístupu a sémantické vyhledávání podle synonym ("společnosti" -> "organizace").

@Override
public Set<String> getHashTags() {
  return Set.of(
    "dokumentový oběh",
    "demonstrace",
    "projekty",
    "soubory");
}

Kontrolér vrací seznam dostupných příkazů:

Google AdInline article slot
@GetMapping("/navigator/paletteCommands")
public ResponseEntity<List<JDTOCommand>> getCommands(
    @JPathContextVariable JContext ctx,
    @RequestParam Map<String, String> requestParamsMap) {
  
  JRequestParams requestParams = new JRequestParams(requestParamsMap);

  Set<JCommand> commands = JModel.getAdminListByClass(JCommand.class);

  List<JDTOCommand> results = commands
      .stream()
      .filter(cmd -> cmd.getHashTags() != null && !cmd.getHashTags().isEmpty() && cmd.show(ctx, requestParams))
      .map(cmd -> new JDTOCommand(ctx, requestParams, cmd))
      .toList();

  return ResponseEntity.ok(results);
}

Filtrace na UI pro rychlost (až 1000 příkazů). Příklad JSON:

[
   {
      "name":"ACPersonDesk",
      "description":"Rejstřík uživatelů platformy",
      "label":"Uživatelé",
      "icon":null,
      "settings":{},
      "href":{
         "url":"../table/ATBPersonDesk",
         "requestParams":{
            "toolbar":"AMPersonDeskTableActions",
            "rowSelection":"MULTI",
            "inquiry":"AIQPersonsDesk",
            "target":"CONTENT"
         }
      },
      "hashTags":["uživatelé", "struktura podniku"]
   }
]

Vyhledávání podle "projekty" okamžitě otevře správný href, nezávisle na hloubce menu.

Výhody přístupu

  • Rychlý přístup: vyhledávání podle label, popisu, hashtagů.
  • Kontext: hashtagy přidávají synonyma a filtrují relevantní příkazy.
  • Univerzálnost: funguje pro prohlížení komponent a přímé akce.
  • Škálovatelnost: nezávisí na UI struktuře, vhodné pro 100+ modulů.
  • Výkon: server poskytuje seznam, klient filtruje okamžitě.

Paleta doplňuje menu, nenahrazuje ho. Administrátoři získávají rychlý přístup k vzácným funkcím bez instrukcí.

Co je důležité

  • Architektura JCommand umožňuje triviální implementaci palety bez refaktoringu.
  • Hashtagy řeší filtraci a sémantiku vyhledávání současně.
  • Filtrace na klientovi zajišťuje rychlou reakci při 1000+ příkazech.
  • Paleta snižuje kognitivní zátěž v multimodulárních ekosystémech.
  • Vhodné pro inženýrské systémy s konzervativními uživateli.

— Editorial Team

Advertisement 728x90

Číst dál