forked from espruino/BangleApps
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
249 lines (238 loc) · 14.2 KB
/
Copy pathindex.html
File metadata and controls
249 lines (238 loc) · 14.2 KB
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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=0.8,maximum-scale=0.8, minimum-scale=0.8, shrink-to-fit=no">
<link rel="stylesheet" href="css/spectre.min.css">
<link rel="stylesheet" href="css/spectre-exp.min.css">
<link rel="stylesheet" href="css/spectre-icons.min.css">
<link rel="stylesheet" href="css/pwa.css">
<link rel="stylesheet" href="css/main.css">
<link rel="apple-touch-icon" sizes="180x180" href="img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="img/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="img/favicon-16x16.png">
<link rel="manifest" href="site.webmanifest">
<link rel="mask-icon" href="img/safari-pinned-tab.svg" color="#5755d9">
<meta name="apple-mobile-web-app-title" content="BangleApps">
<meta name="application-name" content="BangleApps">
<meta name="msapplication-TileColor" content="#5755d9">
<meta name="theme-color" content="#5755d9">
<title>Bangle.js App Loader</title>
</head>
<body>
<header class="navbar-primary navbar">
<section class="navbar-section">
<a href="https://banglejs.com" target="_blank" class="navbar-brand mr-2"><img src="img/banglejs-logo-small.svg" alt="Bangle.js">
<div>App Loader</div></a>
</section>
<section class="navbar-section">
<button class="btn" id="connectmydevice">Connect</button>
</section>
</header>
<div class="container" style="padding-top:4px">
<p id="requireHTTPS" class="hidden">
<b>STOP!</b> This page <b>must</b> be served over HTTPS. Please <a>reload this page via HTTPS</a>.
</p>
</div>
<ul class="tab tab-block" id="tab-navigate">
<li class="tab-item active" id="tab-librarycontainer">
<a href="javascript:showTab('librarycontainer')">Library</a>
</li>
<li class="tab-item" id="tab-myappscontainer">
<a href="javascript:showTab('myappscontainer')">My Apps</a>
</li>
<li class="tab-item" id="tab-morecontainer">
<a href="javascript:showTab('morecontainer')">More</a>
</li>
</ul>
<div class="container" id="toastcontainer"></div>
<div class="container apploader-tab" id="librarycontainer">
<div class="dropdown-container">
<div class="dropdowns-pill">
<div class="dropdown devicetype-nav">
<a href="#" class="btn btn-link dropdown-toggle" tabindex="0">
<span>All apps</span><i class="icon icon-caret"></i>
</a>
<!-- menu component -->
<ul class="menu" id="device-dropdown">
<li class="menu-item"><a>All apps</a></li>
</ul>
</div>
<div class="dropdown filter-nav">
<a href="#" class="btn btn-link dropdown-toggle" tabindex="0">
<span>All apps</span><i class="icon icon-caret"></i>
</a>
<ul class="long-dropdown menu">
<li class="menu-item tooltip tooltip-right" data-tooltip="Show all apps"><a dt="">All apps</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Apps you've liked ❤️"><a dt="favourites">Favourites</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="To tell the time!"><a dt="clock">Clocks</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Choose which apps to launch"><a dt="launch">Launchers</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Have fun!"><a dt="game">Games</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Useful applications"><a dt="tool">Tools</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="To allow you to enter text"><a dt="textinput">Keyboards</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Appear in the top bar of Bangle.js apps"><a dt="widget">Widgets</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Using Bluetooth functionality"><a dt="bluetooth">Bluetooth</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="For outdoor use"><a dt="outdoors">Outdoors</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Apps that don't save to flash memory"><a dt="ram">Online</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Info displayed on clocks"><a dt="clkinfo">Clock Info</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Apps for your health"><a dt="health">Health</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Extra fonts for non-latin languages"><a dt="fonts">Fonts</a></li>
</ul>
</div>
<div class="dropdown sort-nav">
<a href="#" class="btn btn-link dropdown-toggle" tabindex="0">
<span>Sort by:</span><i class="icon icon-caret"></i>
</a>
<ul class="menu">
<li class="menu-item"><a sortid="">None</a></li>
<li class="menu-item tooltip tooltip-right hidden" id="newSort" data-tooltip="Newest apps"><a sortid="created">New</a></li>
<li class="menu-item tooltip tooltip-right hidden" id="changedSort" data-tooltip="Most recently changed"><a sortid="modified">Updated</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Most installed apps"><a sortid="installs">Installed</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Most favourited apps"><a sortid="favourites">Favourited</a></li>
<li class="menu-item tooltip tooltip-right" data-tooltip="Find something new!"><a sortid="random">Random</a></li>
</ul>
</div>
</div>
<div class="input-group" id="searchform">
<input class="form-input" type="text" placeholder="Search by app name, ID, author, or description...">
<button class="btn btn-primary input-group-btn">Search</button>
</div>
</div>
<div class="panel" style="clear:both">
<div class="panel-header"></div>
<div class="panel-body columns"><!-- apps go here --></div>
</div>
</div>
<div class="container apploader-tab" id="myappscontainer" style="display:none">
<div class="panel">
<div class="panel-header" style="text-align:right">
<button class="btn refresh">Refresh...</button>
<button class="btn btn-primary updateapps hidden">Update X apps</button>
</div>
<div class="panel-body columns"><!-- apps go here --></div>
</div>
</div>
<div class="container apploader-tab" id="morecontainer" style="display:none">
<div class="hero bg-gray">
<div class="hero-body">
<a href="https://banglejs.com" target="_blank"><img src="img/banglejs-logo-mid.png" alt="Bangle.js"></a>
<h2>App Loader</h2>
<p>A tool for uploading and removing apps from <a href="https://banglejs.com" target="_blank">Bangle.js Smart Watches</a></p>
</div>
</div>
<div class="container" style="padding-top: 8px;">
<p><b>Can't connect?</b> Check out the <a href="https://www.espruino.com/Troubleshooting+Bangle.js" target="_blank">Bangle.js Troubleshooting page</a></p>
<p id="apploaderlinks"></p>
<p>Check out <a href="https://github.com/espruino/BangleApps" target="_blank">the Source on GitHub</a>, or
find out <a href="https://www.espruino.com/Bangle.js+App+Loader" target="_blank">how to add your own app</a></p>
<p>Using <a href="https://espruino.com/" target="_blank">Espruino</a>, Icons from <a href="https://icons8.com/" target="_blank">icons8.com</a></p>
<h3>Utilities</h3>
<p>
<button class="btn tooltip" id="settime" data-tooltip="Set the Bangle's time to your Browser's time">Set Bangle.js Time</button>
<button class="btn tooltip" id="screenshot" data-tooltip="Create screenshot">Screenshot</button>
<button class="btn tooltip" id="downloadallapps" data-tooltip="Download all Bangle.js files to a ZIP file">Backup</button>
<button class="btn tooltip" id="uploadallapps" data-tooltip="Restore Bangle.js from a ZIP file">Restore</button>
</p><p>
<button class="btn tooltip" id="removeall" data-tooltip="Delete everything, leave it blank">Remove all Apps</button>
<button class="btn tooltip" id="reinstallall" data-tooltip="Re-install every app, leave all data">Reinstall apps</button>
<button class="btn tooltip" id="installdefault" data-tooltip="Delete everything, install default apps">Install default apps</button>
<button class="btn tooltip" id="installfavourite" data-tooltip="Delete everything, install your favourites">Install favourite apps</button>
<button class="btn tooltip" id="defaultbanglesettings" data-tooltip="Reset your Bangle's settings to the defaults">Reset Settings</button>
</p><p>
<button class="btn tooltip" id="installappfromfiles" data-tooltip="Install an app by selecting its files">Install App from Files</button>
</p><p>
<button class="btn tooltip" id="newGithubIssue" data-tooltip="Create a new issue on GitHub">New issue on GitHub</button>
</p>
<h3>Settings</h3>
<div class="form-group">
<label class="form-switch">
<input type="checkbox" id="settings-pretokenise">
<i class="form-icon"></i> Pretokenise apps before upload (smaller, faster apps)
</label>
<label class="form-switch">
<input type="checkbox" id="settings-settime">
<i class="form-icon"></i> Always update time when we connect
</label>
<label class="form-switch">
<input type="checkbox" id="settings-ble-compat">
<i class="form-icon"></i> Bluetooth Compatibility mode (limit to 20 byte writes)
</label>
<label class="form-switch">
<input type="checkbox" id="settings-nopacket">
<i class="form-icon"></i> File Upload Compatibility mode (disables binary packet upload)
</label>
<label class="form-switch">
<input type="checkbox" id="settings-usage-stats">
<i class="form-icon"></i> Send app analytics to banglejs.com (apps installed, favourites, firmware version).<br/>
<small>Used for 'Sort by Installed/Favourited' functionality. See the <a href="http://www.espruino.com/Privacy">privacy policy</a></small>.
</label>
<div class="form-group">
<select class="form-select form-inline" id="settings-lang" style="width: 10em">
<option value="">None (English)</option>
</select> <span>Translations (<a href="https://github.com/espruino/BangleApps/issues/1311" target="_blank">BETA - more info</a>). Any apps that are uploaded to Bangle.js after changing this will have any text automatically translated.</span>
</div>
<details>
<summary>Advanced Options</summary>
<label class="form-switch">
<input type="checkbox" id="settings-minify">
<i class="form-icon"></i> Minify apps before upload (⚠️DANGER⚠️: Not recommended. Uploads smaller, faster apps but this <b>will</b> break many apps)
</label>
<label class="form-switch">
<input type="checkbox" id="settings-alwaysAllowUpdate">
<i class="form-icon"></i> Always show "reinstall app" button <i class="icon icon-refresh"></i> regardless of the version
</label>
<label class="form-switch">
<input type="checkbox" id="settings-alwaysAllowEmulator">
<i class="form-icon"></i> Always show "emulator" button <i class="icon icon-emulator"></i> regardless of whether it's supported by the app
</label>
<label class="form-switch">
<input type="checkbox" id="settings-autoReload">
<i class="form-icon"></i> Automatically reload watch after app App Loader actions (removes "Hold button" prompt)
</label>
<button class="btn" id="defaultsettings">Reset App Loader settings to defaults</button>
</details>
</div>
<div id="more-deviceinfo" style="display:none">
<h3>Device info</h3>
<div id="more-deviceinfo-content"></div>
<div class="editor--terminal">
<div class="editor__canvas" style="position:relative;height:20rem;display:none;"></div>
<button class="btn" id="terminalEnable">Enable Terminal</button>
</div>
</div>
</div>
</div>
<footer class="floating hidden">
<!-- PWA Install button, hidden by default -->
<div id="installContainer" class="hidden">
<button id="butInstall" type="button">Install</button>
</div>
</footer>
<script src="webtools/uart.js"></script>
<script src="core/js/utils.js"></script>
<script>
UART.ports = UART.ports.filter(e => e.includes("Bluetooth")); // all watches are Bluetooth
Const.CONNECTION_DEVICE = "Bluetooth"; // force Bluetooth because we know (don't look it up)#
// If "?dev=Bangle.js abcd" specified in URL, filter by that name
if (window.location.search) {
let searchParams = new URLSearchParams(window.location.search);
if (searchParams.has("dev"))
UART.optionsBluetooth.filters=[{name:searchParams.get("dev")}];
}
</script>
<script src="webtools/heatshrink.js"></script>
<script src="core/lib/marked.min.js"></script>
<script src="core/lib/espruinotools.js"></script>
<script src="loader.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.7.1/jszip.min.js"></script> <!-- for backup.js -->
<script src="backup.js"></script>
<script src="install_from_files.js"></script>
<script src="core/js/ui.js"></script>
<script src="core/js/comms.js"></script>
<script src="core/js/appinfo.js"></script>
<script src="core/js/index.js"></script>
<script src="core/js/pwa.js" defer></script>
<script src="gadgetbridge.js"></script>
<script src="emulator.js"></script>
</body>
</html>