This repository has been archived by the owner on Aug 20, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Jan Jaromír Horák
committed
Mar 15, 2018
1 parent
8681050
commit 6c33f8e
Showing
65 changed files
with
21,093 additions
and
1 deletion.
There are no files selected for viewing
Binary file not shown.
Binary file not shown.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Hradla</title><link href="https://fonts.googleapis.com/css?family=Inconsolata|Open+Sans:400,400i,700&subset=latin-ext" rel="stylesheet"><link href="../css/docs.min.css" rel="stylesheet"></head><body><h1 id="program-torsk-dokumentace">Programátorská dokumentace</h1><p>Programátorská část dokumentace k programu Hradla. Můžete si také <a href="user.html">zobrazit uživatelskou dokumentaci</a>.</p><p>Zdrojové kódy jsou k dispozici v <a href="https://github.com/janjaromirhorak/hradla">repozitáři na GitHubu</a>.</p><h2 id="instalace-a-kompilace">Instalace a kompilace</h2><p>Projekt pro instalaci a kompilaci používá balíčkovací nástroj <em>npm</em>, veškerá jeho konfigurace je popsána v konfiguračním souboru <code>package.json</code>.</p><p>Po stažení zdrojových souborů je nutno v kořenové složce spustit příkaz <code>npm install</code>, který doinstaluje potřebné balíky popsané v konfiguračním souboru.</p><p>Po úspěšné instalaci závislostí už lze celý projekt zkompilovat pomocí příkazu <code>npm run build</code>. Tento příkaz vygeneruje soubory <code>css/style.css</code>, <code>css/style.min.css</code>, <code>js/app.js</code> a <code>js/app.min.js</code>.</p><h2 id="npm-skripty"><em>npm</em> skripty</h2><p>Kromě skriptu <code>build</code> lze ještě použít skripty <code>build:css</code> na zkompilování kaskádových stylů a <code>build:js</code> na kompilaci JavaScriptu. (Skript <code>build</code> pouze balí tyto dva příkazy do jednoho.) Skript <code>clean</code> odstraní všechny vygenerované soubory.</p><h2 id="struktura-projektu-pou-it-technologie">Struktura projektu, použitá technologie</h2><p>Uživatel k editoru přistupuje pomocí HTML stránky <code>index.html</code> v kořenovém adresáři.</p><h3 id="javascript">JavaScript</h3><p>Samotný kód aplikace je psán v JavaScriptu podle specifikace EcmaScript 2015 (ES2015, ES6), pomocí kompilátoru <code>traceur</code> je pak převáděn do JavaScriptu odpovídajícímu specifikaci EcmaScript 3.1 (ES5). Ke kódu je následně ještě připojena knihovna <code>traceur-runtime</code> ze souboru <code>js/lib/traceur-runtime.js</code> (ta umožňuje načítání modulů) a kód je pak minifikován pomocí <code>uglifyjs</code>.</p><p>Zdrojové kódy se nacházejí ve složce <code>es6</code>.</p><p>JavaScriptový kód je rozdělen do několika souborů.</p><h4 id="main">main</h4><p>Inicializace aplikace (aplikace je spuštěna jako callback jQuery funkce <code>ready</code>). Zde je specifikován jQuery selektor inline SVG dokumentu, který je používán pro editační plochu, a jemnost mřížky v pixelech. Zavoláním konstruktoru <code>Svg</code> se aplikace inicializuje.</p><h4 id="canvas">canvas</h4><p>Hlavní soubor, obsahuje třídu <code>Svg</code> která spojuje všechnu dílčí funkcionalitu do jednoho celku. Tato třída má na starosti inicializaci samotného SVG dokumentu, zpracovává uživatelské akce (řeší volání callbacků na správných cílech, inicializuje kontextové menu a menu v pravém dolním rohu), má funkce pro přidávání a odebírání elementů na editační ploše. Ve třídě <code>Svg</code> jsou také uloženy všechny objekty, se kterými uživatel v editoru pracuje.</p><h4 id="editorelements">editorElements</h4><p>Definice tříd, které popisují elementy, se kterými pak pracuje hlavní třída <code>Svg</code> (Gate, Connector, Wire), tedy obalující jednotlivé DOM objekty ze SVG dokumentu (definované v <code>svgObjects</code>) do logických celků a přiřazující jim funkcionalitu.</p><h4 id="logic">logic</h4><p>Statická třída <code>Logic</code>, která obsahuje logické funkce pro jednotlivá hradla a konstanty čtyř logických stavů, se kterými aplikace pracuje (<code>on</code>, <code>off</code>, <code>unknown</code>, <code>oscillating</code>).</p><h4 id="smallfunctions">smallFunctions</h4><p>Statická třída pro malé pomocné funkce, zatím obsahuje jen funkci <code>deepCopy</code> (která obaluje volání metody <code>extend</code> z jQuery) vracející hlubokou kopii pole.</p><h4 id="structuresandclasses">structuresAndClasses</h4><p>Třída obsahující různé datové struktury a singleton <code>Id</code> (sloužící ke generování unikátních identifikátorů pro DOM elementy).</p><h4 id="svgobjects">svgObjects</h4><p>Definice SVG objektů, které jsou pak používány v <code>editorElements</code>. Využití dědičnosti pro specializaci jednotlivých elementů. Předchůdcem všech elementů je <code>Tag</code>, z něj jsou pak odvozovány různé specializace (<code>Image</code> pro vložení obrázku, <code>PolyLine</code> pro lomenou čáru, <code>Rectangle</code> pro obdélník atd.). Každý objekt obsahuje jQuery objekt a metody, které ulehčují operace tímto objektem.</p><h4 id="contextmenu">contextMenu</h4><p>Soubor, obsahující třídu <code>contextMenu</code>, která obstarává funkcionalitu kontextového menu (zobrazí se po pravém kliknutí myší).</p><h4 id="floatingmenu">floatingMenu</h4><p>Soubor, obsahující třídu <code>floatingMenu</code>, která obstarává funkcionalitu menu v pravém dolním rohu editoru.</p><h3 id="kask-dov-styly">Kaskádové styly</h3><p>Kaskádové styly jsou psány v jazyce SASS se syntaxí ve stylu SCSS a kompilován pomocí <code>sass</code> do CSS3. Po kompilaci je k němu připojen soubor <code>css/lib/normalize.css</code>, který sjednocuje zobrazování nenastylovaných elementů napříč prohlížeči. Kód je minifikován pomocí <code>uglify-css</code>.</p><p>For technical documentation please visit <a href="./gen/index.html" target="_blank">the docs</a>.</p></body></html> |
Oops, something went wrong.