Abstraktní Wikipedie/První nákresy

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page Abstract Wikipedia/Early mockups and the translation is 100% complete.
Tracked in Phabricator:
Task T258902

Zde je několik velmi raných nákresů pro wiki Wikifunctions.

Funkce

Funkce násobení

Definice funkce

V záhlaví je uvedeno označení a typ objektu (zde funkce). Funkce obsahuje jako svůj typ signaturu. Pod tím vidíme dokumentaci.

Následují argumenty funkce násobení, návratový typ a seznam dostupných implementací. Pod tím vidíme seznam testů s maticí implementací a nakonec na konci formulář, ve kterém může čtenář funkci vyhodnotit na místě.

Implementace v jazyce JavaScript

Jedná se o jednu z implementací výše definované funkce násobení, zde v jazyce JavaScript.

Kompozice

Toto je další implementace funkce násobení, tentokrát složená z jiných funkcí ve wiki.

Test

Zde je příklad testu pro funkci násobení.

Nástupnictví

Všimněte si, že všechny objekty NLG kódují nějaký konkrétní přístup. Cílem není předem rozhodnout o konkrétním přístupu NLG, slouží pouze k ilustraci a vizualizaci myšlenek. O konkrétním přístupu NLG, který zvolíme, zatím není rozhodnuto.

Konstruktor

Toto je konstruktor následnictví. Ukazuje poměrně složitý konstruktor vedoucí k klauzuli.

Anglický renderer

Toto je anglický renderer pro konstruktor následnictví. Je příliš zjednodušený a slouží pouze k přibližnému zobrazení myšlenky.

Konjunkce

Všimněte si, že všechny objekty NLG kódují určitý specifický přístup. Cílem není předem rozhodnout o konkrétním přístupu NLG, ale pouze ilustrovat a vizualizovat myšlenky. O konkrétním přístupu NLG, který zvolíme, zatím není rozhodnuto.

Toto je anglický renderer pro konstruktor konjunkce. Je velmi zjednodušený a slouží pouze k přibližnému zobrazení myšlenky.

Je to v podstatě totéž, ale má možnost volby týkající se oxfordské čárky.

Hlavní stránka

Vytvoření objektu

Vytváří se nový objekt. Nejprve musíme vybrat typ.

Zvolili jsme typ "Test". Automaticky se zobrazí příslušné klíče.

V prvním klíči "volání funkce" (function call) začneme psát a vybereme funkci "násobit" (multiply). Automaticky se zobrazí příslušné parametry pro násobení.

Začneme zadávat první hodnotu. Ta se zpracuje jako literál typu celé kladné číslo.

Nyní do druhého argumentu zadáme "add" (sečíst). To se rozpozná jako funkce. Přidají se pole pro příslušné parametry. Přidáváme literály.

Podmínkou výsledku je druhý klíč testovaného objektu. Začneme psát název funkce a vybereme ji. Výsledná podmínka je typu funkce přebírající objekt a vracející seznam chyb. Napíšeme "rovná se int", vybereme funkci a zobrazí se jeden argument této funkce.

Nyní, když jsme zadali literál, je objekt kompletní a validuje se. Zobrazí se tlačítko publikovat.

Zobrazení objektu

Následuje pohled na nově vytvořený objekt Test. Předpokládá se, že název je vykreslením testu. Opravdu to nevypadá hezky, ale lze to provést automaticky. Všimněte si, že zobrazení objektu je specifické zobrazení pro Testy.

Používá se obecné zobrazení pro objekty ZObjects, přičemž se předpokládá, že pro objekty Test neexistuje žádné specifické zobrazení.

Toto je zobrazení poté, co si někdo dal tu práci a vytvořil hezčí popisek, napsal trochu dokumentace (proč je tento Test relevantní) a přidal Test do funkce multiply.

Editace objektu

Toto je rozhraní, které se nám zobrazí při úpravě objektu Test. Ne že by to neumožňovalo upravovat popisek objektu nebo dokumentaci. Jedná se o obecné rozhraní pro editaci objektů ZObjects. Všimněte si, že je v podstatě stejné jako rozhraní pro tvorbu objektu.

ZObject může být poměrně rozsáhlý. Větve objektu ZObject je možné sbalit. Zde jsme sbalili část provádějící sčítání ve druhém členu násobení.

Magické vstupní pole

Základní součástí výše uvedeného UX je magické vstupní pole. Proč jsou tato vstupní pole magická? Podívejme se blíže na to, co umí: mohou přijímat čtyři typy vstupů. Každé vstupní pole má očekávaný typ (v nejhorším případě je očekávaným typem "libovolný").

  • Reference na ZObject, který má očekávaný typ, tj. ZID vybraný podle svého štítku nebo aliasu (nebo ID) a pomocí rozbalovacího výběru (jako při výběru položky ve Wikidatech).
  • Volání funkce, jehož výsledkem je objekt ZObject očekávaného typu. To se spustí výběrem odkazu na ZObject funkce, jejíž návratový typ má očekávaný typ, a jakmile je tento typ zvolen, uživatelské rozhraní se aktualizuje tak, aby bylo možné zadat argumenty.
  • Literál. Pokud lze očekávaný typ reprezentovat jako literál (např. pro řetězec nebo celé číslo), lze tento literál jednoduše vepsat do vstupního pole. Pokud je literál náhodou také případně odkazem správného typu, je v rozbalovací nabídce uveden jako první možnost. (Zda lze očekávaný typ reprezentovat jako literál, závisí na tom, zda je zadána funkce pro rozbor hodnot, která přebírá řetězec a vrací instanci očekávaného typu).
  • Zkušený uživatel může libovolné z těchto vložených magických vstupních polí přepnout do většího textového pole a provádět hrubé úpravy. To najdete v nákresu za tímto textem.

Protože magie to někdy pochopí špatně (představte si, že máme např. očekávaný typ funkce(any, any), tj. libovolnou funkci, nebude vždy jasné, zda se skutečně odkazujeme na funkci, nebo zda provádíme volání funkce, které má vytvořit funkci, a tím pádem můžeme skončit ve špatném režimu. Kouzelné vstupní pole je vybaveno přepínačem 𝌹, který umožňuje explicitně uzamknout jeden ze čtyř režimů (počet režimů se může mírně lišit v závislosti na očekávaném typu, tj. pokud je očekávaným typem funkce nebo libovolný, neexistuje žádný režim literál atd.) a také změnit očekávaný typ.

Toto ukazuje funkční syntaxi pro úpravy v surovém stavu. Všimněte si, že se jedná pouze o záležitost UX - vstup bude před uložením analyzován a kanonizován. Ale zejména pro kódování se spousta lidí neobejde bez kopírování a vkládání atd. a žádné uživatelské rozhraní to jinak nikdy nezvládlo, takže nabízíme tuto možnost.

Je to stejné jako předchozí nákres, ale místo syntaxe funkcí a označkovaného obsahu je to surové, jak to jen jde, a používá se JSON a ZID. No, nakonec by to mělo být možné.

Alternativy designu

Následující dva nákresy ukazují několik alternativních nápadů na zřetelnější seskupení formulářů, zde pomocí čárkovaného rámečku kolem formulářů, které patří k sobě. Je zde také jasně vidět, co by se sbalením srazilo.

Zde přesuneme ikonu pro sbalení rámečku doleva.

Mobilní nákresy

Jedná se o nákresy pro mobilní UX. Máme mnohem méně horizontálního prostoru, takže seskupení stromu podle odsazení by mohlo být problematické.