-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.php
267 lines (248 loc) · 16.6 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<?php //version of resources, to prevent caching of old .js and .html files when a new version is built
$v = 11;
?>
<!DOCTYPE html>
<html ng-app="UUC" ng-controller="ctrl">
<head>
<meta charset="UTF-8">
<meta name="description" content="A useful tool for unit conversion.">
<meta name="robots" content="noimageindex">
<title>Ultimate Unit Converter</title>
<script src="libs/angular.min.js"></script>
<!--these scripts just declare-->
<script src="app/convert.js?v=<?php echo $v;?>" type="text/javascript"></script>
<script src="app/convert_parse.js?v=<?php echo $v;?>" type="text/javascript"></script>
<script src="app/convert_macro.js?v=<?php echo $v;?>" type="text/javascript"></script>
<script src="app/lang.js?v=<?php echo $v;?>" type="text/javascript"></script>
<script src="app/data.js?v=<?php echo $v;?>" type="text/javascript"></script>
<!--these script start doing something-->
<script src="app/misc.js?v=<?php echo $v;?>" type="text/javascript"></script>
<script src="app/controller.js?v=<?php echo $v;?>" type="text/javascript"></script>
<!--utilities-->
<script src="app/tests.js?v=<?php echo $v;?>" type="text/javascript"></script>
<link rel="stylesheet" href="app/style.css?v=<?php echo $v;?>">
</head>
<body ng-mousemove="mouseMove($event)" ng-mouseup="mouseUp()" ng-mouseleave="mouseLeave($event)">
<div id="lang"><img src="res/CZ.png" ng-click="changeLang('cz')"><img src="res/EN.png" ng-click="changeLang('en')"></div>
<div id="centeredContainer">
<div id="contentContainer">
<h1>Ultimate Unit Converter II</h1>
<!-- TOP MENU -->
<div id="tabButtonContainer">
<span ng-click="changeTab('converter')" ng-style="tabButtonStyle('converter')" class="tabButton"><cz>Převodník</cz><en>Converter</en></span>
<span ng-click="changeTab('help')" ng-style="tabButtonStyle('help')" class="tabButton"><cz>Reference</cz><en>Reference</en></span>
<span ng-click="changeTab('intro')" ng-style="tabButtonStyle('intro')" class="tabButton"><cz>Úvod</cz><en>Intro</en></span>
<span ng-click="changeTab('macro')" ng-style="tabButtonStyle('macro')" class="tabButton" ng-show="CS.showMacroTab"><cz>Makro</cz><en>Macro</en></span>
</div>
<div ng-switch="CS.tab">
<!-- INTRO TAB -->
<div ng-switch-when="intro">
<cz>
<p>Ultimate Unit Converter II vás vítá!<br>Pokud jste zde poprvé, <b>klikněte <a ng-click="TF.initTutorial()" class="fakeLink">zde</a> pro spuštění interaktivního tutoriálu</b>, kde se dozvíte o hlavních možnostech použití UUC.</p>
<p><b>Co je na UUC tak zvláštního?</b></p>
<p>Na internetu lze najít mnoho převodníků různých jednotek, avšak žádný, který by byl schopen převádět jednotky ve <i>zcela libovolných</i> rozměrech – tedy jako součin a podíl jednotek v různých mocninách.
S UUC už nebudete muset řešit, kterým číslem násobit či dělit, neboť program pochopí jakýkoliv fyzikální výraz a převede jej na libovolnou jednotku s odpovídajícím rozměrem.</p>
<p>Kromě prostého převodu jednotek nabízí UUC nové též makra, kde je možné provádět i jednoduché výpočty. To má tu výhodu oproti jiným nástrojům, že nezadáváte pouhá čísla, ale přímo fyzikální veličiny, které UUC správně zpracuje, sám převede jednotky a zkontroluje smysluplnost.<br>
Tato funkce zůstává skryta, zde ji můžete povolit: <input type="checkbox" ng-model="CS.showMacroTab"></p>
<p>
<b>Poznámky:</b>
<ol>
<li>UUC je možné přidat do prohlížeče jako vyhledávač a mít jej tak rychle po ruce! <a class="fakeLink" ng-click="changeTab('searchEngine')">Návod</a></li>
<li>Pokud vám zde chybí vaše oblíbená jednotka či konstanta a rádi byste ji zde viděli, <a href="mailto:[email protected]">kontaktujte mě</a></li>
<li>Pokud máte nápad na vylepšení této aplikace, neváhejte <a href="mailto:[email protected]">mě kontaktovat</a></li>
<li>Pokud sami programujete a máte zájem o zdrojový kód, navštivte <a href="https://github.com/Lemonexe/UUC" target="_blank">Github repozitář</a></li>
</ol>
</p>
</cz>
<en>
<p>Ultimate Unit Converter II welcomes you!<br>If you're here for the first time, <b>click <a ng-click="TF.initTutorial()" class="fakeLink">here</a> to open an interactive tutorial</b> that will show you the most useful features of UUC.</p>
<p><b>What is so special about UUC?</b></p>
<p> While you can find lots of different converters for various units, there isn't one that could convert units <i>in any</i> dimension <i>whatsoever</i> – meaning a product of several units in various powers.
With UUC you'll never again have to ponder, which number you're supposed to mulitply or divide with, because this program will understand any physical quantity expression and convert it to a unit of choice with corresponding dimension.</p>
<p>In addition to simple conversion, UUC now also offers macros, where you can code simple calculations. The advantage over other programs is the possibility to actually enter physical quantities instead of just plain numbers, so UUC can automatically process them, convert units and check for consistency.<br>
This feature is initially hidden, here you can enable it: <input type="checkbox" ng-model="CS.showMacroTab"></p>
<p>
<b>Notes:</b>
<ol>
<li>Now you can add UUC to your browser as a search engine so as to quickly access it! <a class="fakeLink" ng-click="changeTab('searchEngine')">Instructions</a></li>
<li>If you are missing your favorite unit or constant and would like to see it here, you can <a href="mailto:[email protected]">contact me</a></li>
<li>If you have an idea how to enhance the application, you can <a href="mailto:[email protected]">contact me</a></li>
<li>If you are a programmer interested in the source code, see the <a href="https://github.com/Lemonexe/UUC" target="_blank">Github repository</a></li>
</ol>
</p>
</en>
</div>
<!-- REFERENCE TAB -->
<div ng-switch-when="help">
<p>
<cz>
V databázi je {{databaseCount}} položek, z toho {{Units.length}} je právě zobrazeno.<br>
Jednotky měn byly aktualizovány v {{currencyTimestamp}}.
</cz>
<en>
There are {{databaseCount}} items in database with {{Units.length}} currently listed.<br>
Currency units have been updated at {{currencyTimestamp}}.
</en>
</p>
<b><cz>Vyhledat jednotky:</cz><en>Search units:</en></b><br>
<input type="text" class="inputBox" ng-model="CS.filter" ng-change="listenForHelp()" style="margin-bottom: 4px"><br>
<div class="subtle" style="margin-bottom: 24px">
<cz>(filtruje jednotky se stejným rozměrem, 1 pro bezrozměrné, _ pro seznam vestavěných konstant)</cz>
<en>(filters units with the same dimension, 1 for dimensionless, _ for list of built-in constants)</en>
</div>
<p ng-repeat="u in Units">
<span class="reference" ng-class="{highlight: $index === 0 && highlightFirst}"><b>{{u.name[CS.lang]}}</b>{{buildUnitEntry(u)}}</span>
</p>
</div>
<!-- MAIN TAB -->
<div ng-switch-when="converter">
<div ng-if="!CS.hideTutorialLink" style="margin-bottom: 10px">
<cz>Jste zde poprvé? Pak doporučuji navštívit záložku Úvod!</cz>
<en>First-time visitor? Then I'll recommend to take a look at the Intro tab!</en>
</div>
<div class="convertContainer">
<!-- left container -->
<div style="min-width: 400px">
<b><cz>Vstup:</cz><en>Input:</en></b><br>
<input type="text" class="inputBox" ng-model="CS.input" ng-keyup="listenForConvert($event)" ng-change="autoforget()" tabindex="1" autofocus><!--comment to suppress whitespace, lol!
--><select ng-if="CS.history.length > 0" ng-model="ctrl.autocomplete" id="inputAutocomplete" ng-change="autocomplete(0)">
<option ng-repeat="opt in CS.history track by $index" ng-value="$index">{{opt.input + (opt.target ? ' > ' + opt.target : '')}}</option>
</select>
<a ng-click="flip()" style="position: absolute; left: 365px; top: 50px; font-size: 18px; cursor: pointer">⇅</a>
<br>
<b><cz>Cílové jednotky:</cz><en>Target units:</en></b><br>
<input type="text" class="inputBox" ng-model="CS.target" ng-keyup="listenForConvert($event)" ng-change="autoforget()" tabindex="2">
<br>
<input type="button" ng-value="'Převést'.trans()" ng-click="fullConversion()" class="bigButton" tabindex="3">
<br><br>
<b><cz>Výstup:</cz><en>Output:</en></b>
<span ng-show="ctrl.copyoutput" ng-class="ctrl.copyclass" class="copyEffStatic"><cz>úspěšně zkopírováno</cz><en>copied successfully</en></span><br>
<span class="inputBox outputBox">{{composeResult()}}</span>
<span ng-show="availableCtrlC && result && result.output && result.status < 2" ng-click="copyOutput()" style="cursor: copy" title="Ctrl+C">📋</span><br>
</div>
<!-- right container -->
<div style="padding: 8px">
<a ng-click="TF.showExamplesOnly()" style="cursor: pointer"><span class="expandable">?</span><cz>Příklady</cz><en>Examples</en></a><br>
<a ng-click="CS.showParams = !CS.showParams" style="cursor: pointer"><span class="expandable">{{CS.showParams ? '–' : '+'}}</span><cz>Formát výstupu</cz><en>Output format</en></a>
<div ng-show="CS.showParams">
<label><input type="radio" ng-model="CS.params.spec" value="auto" ng-change="updateFormat()"> <cz>automatický</cz><en>automatic</en></label><br>
<label><input type="radio" ng-model="CS.params.spec" value="digits" ng-change="updateFormat()"> <cz>počet platných cifer</cz><en>significant digits</en>: </label>
<input type="number" class="numSelector" ng-model="CS.params.digits" min="1" max="20" ng-change="updateFormat()"><br>
<label><input type="radio" ng-model="CS.params.spec" value="fixed" ng-change="updateFormat()"> <cz>počet desetinných míst</cz><en>number of decimals</en>: </label>
<input type="number" class="numSelector" ng-model="CS.params.fixed" min="0" max="20" ng-change="updateFormat()"><br>
<br>
<label><input type="checkbox" ng-model="CS.params.exp" ng-change="updateFormat()"> <cz>vždy vědecký zápis</cz><en>always scientific notation</en></label>
</div>
<br>
<a ng-click="ctrl.sharelink = !ctrl.sharelink" style="cursor: pointer"><span class="expandable">≫</span><cz>Sdílet odkaz</cz><en>Share link</en></a>
<span ng-show="ctrl.copylink" ng-class="ctrl.copyclass" class="copyEffStatic"><cz>úspěšně zkopírováno</cz><en>copied successfully</en></span><br>
<div id="sharelinkBox" ng-show="ctrl.sharelink">
<div ng-show="availableCtrlC">
<cz>Kliknutím zkopírujete do schránky odkaz na tuto konverzi</cz>
<en>Click to copy the link with this conversion to clipboard</en><br>
<span ng-click="copySharelink()" style="cursor: copy" title="Ctrl+C">📋 <span class="fakeLink" style="cursor: copy">{{getSharelink()}}</span></span>
</div>
<div ng-show="!availableCtrlC">
<cz>❗ Schránka není dostupná, protože spojení je nezabezpečené. Zkuste otevřít v</cz>
<en>❗ Clipboard is not available due to unsecured connection. Try opening in</en>
<a ng-href="{{currentWebAddress.replace('http', 'https')}}">https</a>
</div>
</div>
</div>
</div>
<!-- below containers -->
<div ng-if="result" ng-class="statusAppear">
<br><b><cz>Stav:</cz><en>Status:</en></b><br>
<span ng-repeat="m in result.messages track by $index" ng-class="statusClass">{{m}}<br></span>
</div>
</div>
<!-- MACRO TAB (hidden from top menu until activated) -->
<div ng-switch-when="macro">
<p>
<cz>Zde můžete sestavit vlastní UUC "skript". Je to experimentální funkce, která je vlastně asi docela k ničemu.<br>Tlačítko Dokumentace vám vysvětlí podrobnosti.</cz>
<en>Here you can assemble your own UUC "script". It's an experimental feature, that imho proved to be quite useless.<br>The Documentation button will tell you more.</en>
</p>
<b><cz>Kód:</cz><en>Code:</en></b><br>
<textarea ng-model="CS.inputCode" ng-keyup="listenForRun($event)" ng-style="textareaStyle()" resize-observer autofocus spellcheck="false"></textarea><br>
<input type="button" ng-value="'Spustit (F2)'.trans()" ng-click="runCode()" class="bigButton">
<a target="_blank" ng-href="{{documentation}}"><input type="button" ng-value="'Dokumentace'.trans()" class="bigButton"></a><br><br>
<b><cz>Výstup:</cz><en>Output:</en></b><br>
<div ng-if="resultCode"><span ng-repeat="m in resultCode track by $index">{{m}}<br></span></div>
</div>
<!-- SEARCHENGINE TAB (hidden from topmenu) -->
<div ng-switch-when="searchEngine">
<p><b>Chrome <cz>nebo</cz><en>or</en> Edge</p></b>
<p><cz>Není třeba nic instalovat, jen provést jednoduché nastavení:</cz>
<en>No need to install anything, it can be done in the settings:</en></p>
<ol>
<li><cz>Otevřete jednu z těchto adres dle prohlížece:</cz><en>Open one of these addresses depending in browser:</en><br>
<span class="code">chrome://settings/searchEngines</span><br>
<span class="code">edge://settings/searchEngines</span></li>
<li><cz>Klepněte na tlačítko Přidat</cz><en>Click the Add button</en></li>
<li>
<cz>Do pole URL vložte</cz><en>Insert</en>
<span class="code">{{currentWebAddress + '/#%s'}}</span>
<cz>, do zbývajících vložte</cz><en> into the URL field, into the other fields insert</en>
<span class="code">uuc</span>
</li>
<li><cz>Dialog potvrďte tlačítkem Přidat</cz><en>Click the Add button to confirm the dialog</en></li>
</ol>
<cz>
<p>
Hotovo – právě jste definovali klíčové slovo <i>uuc</i> :-)<br>
Nyní stačí otevřít nový panel, napsat uuc, mezeru, pokračovat psaním zadání a stisknutím Enter.<br>
Cílové jednotky se zde specifikují znakem > nebo slovy <i>to</i> či <i>into</i><br>
např. 3.7 kPa > Torr
</p>
</cz><en>
<p>
Done – you have defined <i>uuc</i> as a keyword :-)<br>
Now you can simply open a new tab, write uuc, space, and continue by writing the input and pressing Enter.<br>
Target units are specified by character > or by words <i>to</i> or <i>into</i><br>
e.g. 3.7 kPa > Torr
</p>
</en>
<p><b>Firefox</p></b>
<p>
<cz>Přidání vlastního vyhledávače je analogické ke Chrome, avšak nejprve je musíte povolit:</cz>
<en>Adding a custom search is analogical to Chrome, but you have to enable it first:</en>
<br>
<cz>Otevřete</cz><en>Open</en>
<span class="code">about:config</span>,
<cz>vyhledejte</cz><en>search for</en>
<span class="code">browser.urlbar.update2.engineAliasRefresh</span>
<cz>a přepněte jej na</cz><en>and toggle it to</en>
<span class="code">true</span>.
</p>
<p>
<cz>Nyní přejděte na</cz><en>Now navigate to</en>
<span class="code">about:preferences#search</span>
<cz>a viz kroky 2–4 pro Chrome</cz><en>and see steps 2–4 for Chrome</en>.
</p>
<p>
⚠
<cz>ve Firefoxu musíte psát vyhledávací výraz <u>bez mezer!</u></cz>
<en>in Firefox, the search input must be written <u>without spaces!</u></en>
</p>
<cz>
<p><b>Ostatní prohlížeče</p></b>
<p>Bohužel, tyto prohlížeče neumožňují uživatelům definovat vlastní vyhledávač, avšak možná toho lze dosáhnout pomocí určitých doplňků.</p>
<p>Pokud takové doplňky využíváte, budete muset sami zjistit, jak definovat klíčové slovo uuc. Promiňte!</p>
</cz><en>
<p><b>Other browsers</p></b>
<p>Unfortunately, these browsers don't allow users to define a custom search engine, although you can probably achieve it using certain addons.</p>
<p>If you do use such an addon, you will have to figure out by yourself how to define the uuc keyword. Sorry about that!</p>
</en>
</div>
</div>
<!-- OTHER ELEMENTS (such as floating tutorial window)-->
<div id="tutorial" ng-if="CS.tutorial" ng-style="tutorialStyle()" ng-include="'res/tutorial.html?v=<?php echo $v;?>'"></div>
</div>
</div>
<div id="footer">
<cz>Vytvořil <a href="http://jira.zby.cz/">Jiří Zbytovský</a> v letech 2017-2023 pod <a href="https://github.com/Lemonexe/UUC/blob/master/LICENSE">licencí MIT</a></cz>
<en>Made by <a href="http://jira.zby.cz/">Jiří Zbytovský</a> in years 2017-2023 under <a href="https://github.com/Lemonexe/UUC/blob/master/LICENSE">MIT License</a></en>
</div>
<a id="githubLogo" href="https://github.com/Lemonexe/UUC" target="_blank" title="github"><img src="res/GitHub-Mark-32px.png"></a>
</body>
</html>