Compare commits

...

68 Commits

Author SHA1 Message Date
5651f28bdb Change share list background, minify/optimize SVGs 2020-04-17 14:23:14 -06:00
08ca2f1a86 Adjust image 2020-04-17 14:07:56 -06:00
5a7442e1ca Round delivery coords precision to 5 places, add accuracy note 2020-04-17 14:00:39 -06:00
d2aab08a39 Tracking: bump item to top of history when tracked another time (close #40) 2020-04-16 20:44:52 -06:00
9cc023dd96 Set statusbar and app switcher header color on Android (close #41) 2020-04-16 20:07:47 -06:00
49bddc1b62 Remove automatic animation option because it doesn't work (#49) 2020-04-16 19:22:58 -06:00
3238d1aa35 Hopefully fix battery status detection 2020-04-14 22:06:48 -06:00
362d3ce0ca Add status text to build helper scripts 2020-04-14 13:32:24 -06:00
8fd570ea23 Add animation pref: "auto" (no anim on low battery), "on", and "off". Close #47 2020-04-14 13:23:37 -06:00
3bda61ca89 Add automatic theme detection, change setting "darktheme" to "apptheme", close #48 2020-04-14 11:24:45 -06:00
1763b5d4df Improve map directions button handling on NW.js 2020-04-14 10:53:48 -06:00
6217c08352 Add delivery coordinates to activity log (close #45) 2020-04-14 10:44:14 -06:00
3e55a13bbd Fix map calibration not showing in activity log (hopefully) 2020-04-14 10:40:09 -06:00
91e5b2f928 Fix #44 2020-04-14 10:34:53 -06:00
b3c770bda2 Prevent highlighting/selecting UI elements and mitigate if done anyways 2020-04-05 20:03:04 -06:00
991b49e8a0 Add toolbox backgrounds 2020-04-04 18:53:37 -06:00
a8bc24fa0b Make toolbox menu use tiles too (TODO: add rest of tile backgrounds) 2020-04-04 14:35:47 -06:00
02d926324b Fix item type list cut off on some screen sizes 2020-04-04 13:48:48 -06:00
bf0a4ad716 Show "Loading..." while waiting for account login page to show up 2020-04-03 17:58:32 -06:00
9a86653fda Add event timeline (close #35) 2020-04-03 17:44:52 -06:00
e063875712 Map: Reduce info pane width and don't prevent map interaction when open (#36) 2020-04-03 13:58:28 -06:00
58ff3476bb Settings: Center UI in middle of screen with max width (#36) 2020-04-03 13:49:40 -06:00
861c669772 Toolbox: Center UIs in middle of screen with max width (#36) 2020-04-03 13:44:52 -06:00
c164cd99e4 List: Center list in middle of screen with max width (#36) 2020-04-03 13:32:57 -06:00
8f7251beb2 Set max width of add form, other tablet improvements (#36) 2020-04-03 13:28:45 -06:00
02a1dfa2a1 Add Items: Put add and history tabs side by side on wide screens (#36) 2020-04-03 12:59:29 -06:00
0ff2eec985 Use CSS to detect finger vs mouse and change help text accordingly (#36) 2020-04-03 12:18:47 -06:00
5c86142a94 Add "Display" settings page and move some settings to it (close #42) 2020-04-03 11:49:36 -06:00
69f691caab Get weather source attribution from server (close #43) 2020-04-03 11:43:04 -06:00
304240bf91 Redesign home page to use tiles instead of a list (close #37) 2020-03-22 20:16:13 -06:00
b57bbb8e39 Update dependencies 2020-03-21 12:24:44 -06:00
dca7956c39 Fix geo link not clickable, fix error not stopping lookup 2020-03-20 16:09:36 -06:00
f628455434 Fix typo in script 2020-03-20 15:39:26 -06:00
c629f7ca7b Add POSTNET barcode to address lookup, refine lookup tool 2020-03-19 00:23:08 -06:00
f25a9c6374 Add address lookup tool (close #34) 2020-03-18 23:42:43 -06:00
076c2cf76a Bump version to 1.5.0 2020-03-18 20:41:53 -06:00
89e013d92f Prevent selecting UI text, add icon for NW.js 2020-03-18 20:39:52 -06:00
d702653adf Add NMR option to route notes 2020-03-18 15:52:49 -06:00
6eb2e028e0 Add support for addresses with letters in number (close #32) 2020-03-18 15:43:58 -06:00
5f81dd876e Add map scale control 2020-03-18 15:17:41 -06:00
2736bd3c6e Close searchbar on back 2020-01-18 02:12:22 -07:00
5ac43e4aa3 Emulate Android back button with Esc 2020-01-18 02:00:57 -07:00
a7c41a7577 Save note with Ctrl-S 2020-01-18 01:53:52 -07:00
142349de64 Improve edit and delete buttons 2020-01-18 01:48:53 -07:00
3a362168bd Convert package list to use accordions instead of swipes 2020-01-18 00:37:38 -07:00
c0c9aad049 Improve route notes 2020-01-18 00:02:29 -07:00
61e5296fb9 Clear number and unit fields when focus gained 2020-01-17 23:06:35 -07:00
7763d2a81d Reset lastchange when logging in to prevent clobbering server settings 2020-01-13 21:16:46 -07:00
50321d2bdc Add setting to manually clear the tile and geocode caches 2020-01-13 20:37:05 -07:00
410a410d35 s/manage/add 2020-01-13 19:00:48 -07:00
e1330dfa13 Only cache stuff from maps.netsyms.net in serviceworker 2020-01-13 18:56:01 -07:00
e7f1a9caa0 Use GPS to send correct item locations to server, support multiple location types, close #6 2020-01-13 18:54:46 -07:00
f81c43d053 Adjust styles, fix broken link 2020-01-12 20:52:39 -07:00
62513fd443 Rename manage page to add, adjust css 2020-01-12 20:26:47 -07:00
4e7d2af957 Move ZIP to separate box for more reliable/easier address geocoding 2020-01-10 01:41:11 -07:00
b587281315 Fix padding 2020-01-10 01:20:59 -07:00
c5efd7c3e7 Don't cache app assets on Cordova or NW.js platforms 2020-01-08 14:58:34 -07:00
7f215b850c Warn user when adding an address noted as vacant/on hold/etc, close #22 2020-01-08 14:49:29 -07:00
af5edd83ec Add street autofill to notes page (#22) 2020-01-08 14:23:12 -07:00
2c59b7d82d Fix save button overlapping notes box 2020-01-08 14:00:23 -07:00
53aa20ebf5 Add Roboto font for cross-platform consistency 2020-01-08 13:50:00 -07:00
af783bb415 Improve caching of map tiles and everything else 2020-01-08 02:58:24 -07:00
08d7ff224d Disable service worker on Cordova and NW.js platforms 2020-01-08 01:11:51 -07:00
664d54ae97 Add route notes feature (#22) TODO: street autofill and integration 2020-01-08 01:10:09 -07:00
4117adfe3a Add ServiceWorker to cache resources for offline usage 2020-01-07 21:51:03 -07:00
756e1e327a Fix issue where a new client will overwrite the server-stored settings on first sync 2020-01-07 16:47:14 -07:00
a93d33d18d Bump app version to 1.4.0 2020-01-07 16:09:00 -07:00
68117dda32 Add settings sync/backup feature 2020-01-07 16:06:12 -07:00
112 changed files with 7026 additions and 1598 deletions

View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<widget id="com.netsyms.PackageHelper" version="1.3.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <widget id="com.netsyms.PackageHelper" version="1.5.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>PackageHelper</name> <name>PackageHelper</name>
<description> <description>
Assistant app for door-to-door package delivery. Assistant app for door-to-door package delivery.
@ -19,6 +19,7 @@
<access launch-external="yes" origin="geo:*" /> <access launch-external="yes" origin="geo:*" />
<platform name="android"> <platform name="android">
<allow-intent href="market:*" /> <allow-intent href="market:*" />
<preference name="HeaderColor" value="#2196F3" />
<resource-file src="/res/android/drawable/ic_launcher_background.xml" target="/app/src/main/res/drawable/ic_launcher_background.xml" /> <resource-file src="/res/android/drawable/ic_launcher_background.xml" target="/app/src/main/res/drawable/ic_launcher_background.xml" />
<resource-file src="/res/android/drawable/ic_launcher_foreground.xml" target="/app/src/main/res/drawable/ic_launcher_foreground.xml" /> <resource-file src="/res/android/drawable/ic_launcher_foreground.xml" target="/app/src/main/res/drawable/ic_launcher_foreground.xml" />
<resource-file src="res/android/mipmap-anydpi-v26/ic_launcher.xml" target="app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml" /> <resource-file src="res/android/mipmap-anydpi-v26/ic_launcher.xml" target="app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml" />

View File

@ -314,6 +314,34 @@ SOFTWARE.
----- -----
The following software may be included in this product: bwip-js. A copy of the source code may be downloaded from https://github.com/metafloor/bwip-js.git. This software contains the following license and notice below:
bwip-js : Barcode Writer in Pure JavaScript
Copyright (c) 2011-2019 Mark Warren
The MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: cardinal, redeyed. A copy of the source code may be downloaded from git://github.com/thlorenz/cardinal.git (cardinal), git://github.com/thlorenz/redeyed.git (redeyed). This software contains the following license and notice below: The following software may be included in this product: cardinal, redeyed. A copy of the source code may be downloaded from git://github.com/thlorenz/cardinal.git (cardinal), git://github.com/thlorenz/redeyed.git (redeyed). This software contains the following license and notice below:
Copyright 2012 Thorsten Lorenz. Copyright 2012 Thorsten Lorenz.
@ -441,6 +469,31 @@ THIS SOFTWARE.
----- -----
The following software may be included in this product: framework7. A copy of the source code may be downloaded from https://github.com/framework7io/framework7.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2014 Vladimir Kharlampidi
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----
The following software may be included in this product: geojson-vt. A copy of the source code may be downloaded from git://github.com/mapbox/geojson-vt.git. This software contains the following license and notice below: The following software may be included in this product: geojson-vt. A copy of the source code may be downloaded from git://github.com/mapbox/geojson-vt.git. This software contains the following license and notice below:
ISC License ISC License
@ -463,7 +516,7 @@ THIS SOFTWARE.
The following software may be included in this product: gl-matrix. A copy of the source code may be downloaded from https://github.com/toji/gl-matrix.git. This software contains the following license and notice below: The following software may be included in this product: gl-matrix. A copy of the source code may be downloaded from https://github.com/toji/gl-matrix.git. This software contains the following license and notice below:
Copyright (c) 2015-2019, Brandon Jones, Colin MacKenzie IV. Copyright (c) 2015-2020, Brandon Jones, Colin MacKenzie IV.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@ -2173,7 +2226,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----- -----
The following software may be included in this product: concat-map, defined, minimist, resumer. A copy of the source code may be downloaded from git://github.com/substack/node-concat-map.git (concat-map), git://github.com/substack/defined.git (defined), git://github.com/substack/minimist.git (minimist), git://github.com/substack/resumer.git (resumer). This software contains the following license and notice below: The following software may be included in this product: concat-map. A copy of the source code may be downloaded from git://github.com/substack/node-concat-map.git. This software contains the following license and notice below:
This software is released under the MIT license: This software is released under the MIT license:
@ -2944,7 +2997,7 @@ The Apache Software Foundation (http://www.apache.org/).
----- -----
The following software may be included in this product: cordova-plugin-device, cordova-plugin-inappbrowser, cordova-plugin-whitelist. A copy of the source code may be downloaded from https://github.com/apache/cordova-plugin-device (cordova-plugin-device), https://github.com/apache/cordova-plugin-inappbrowser (cordova-plugin-inappbrowser), https://github.com/apache/cordova-plugin-whitelist (cordova-plugin-whitelist). This software contains the following license and notice below: The following software may be included in this product: cordova-plugin-battery-status, cordova-plugin-device, cordova-plugin-inappbrowser, cordova-plugin-statusbar, cordova-plugin-whitelist. A copy of the source code may be downloaded from https://github.com/apache/cordova-plugin-battery-status (cordova-plugin-battery-status), https://github.com/apache/cordova-plugin-device (cordova-plugin-device), https://github.com/apache/cordova-plugin-inappbrowser (cordova-plugin-inappbrowser), https://github.com/apache/cordova-plugin-statusbar (cordova-plugin-statusbar), https://github.com/apache/cordova-plugin-whitelist (cordova-plugin-whitelist). This software contains the following license and notice below:
Apache License Apache License
Version 2.0, January 2004 Version 2.0, January 2004
@ -3653,58 +3706,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: deep-equal. A copy of the source code may be downloaded from http://github.com/substack/node-deep-equal.git. This software contains the following license and notice below:
MIT License
Copyright (c) 2012, 2013, 2014 James Halliday <mail@substack.net>, 2009 Thomas Robinson <280north.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: define-properties, es-abstract. A copy of the source code may be downloaded from git://github.com/ljharb/define-properties.git (define-properties), git://github.com/ljharb/es-abstract.git (es-abstract). This software contains the following license and notice below:
The MIT License (MIT)
Copyright (C) 2015 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: destroy, ee-first, mime-db. A copy of the source code may be downloaded from https://github.com/stream-utils/destroy.git (destroy), https://github.com/jonathanong/ee-first.git (ee-first), https://github.com/jshttp/mime-db.git (mime-db). This software contains the following license and notice below: The following software may be included in this product: destroy, ee-first, mime-db. A copy of the source code may be downloaded from https://github.com/stream-utils/destroy.git (destroy), https://github.com/jonathanong/ee-first.git (ee-first), https://github.com/jshttp/mime-db.git (mime-db). This software contains the following license and notice below:
The MIT License (MIT) The MIT License (MIT)
@ -4025,32 +4026,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: es-to-primitive, is-callable, is-date-object, is-symbol, string.prototype.trimleft, string.prototype.trimright. A copy of the source code may be downloaded from git://github.com/ljharb/es-to-primitive.git (es-to-primitive), git://github.com/ljharb/is-callable.git (is-callable), git://github.com/ljharb/is-date-object.git (is-date-object), git://github.com/inspect-js/is-symbol.git (is-symbol), git://github.com/es-shims/String.prototype.trimLeft.git (string.prototype.trimleft), git://github.com/es-shims/String.prototype.trimRight.git (string.prototype.trimright). This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2015 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: escape-html. A copy of the source code may be downloaded from https://github.com/component/escape-html.git. This software contains the following license and notice below: The following software may be included in this product: escape-html. A copy of the source code may be downloaded from https://github.com/component/escape-html.git. This software contains the following license and notice below:
(The MIT License) (The MIT License)
@ -4189,32 +4164,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----- -----
The following software may be included in this product: for-each. A copy of the source code may be downloaded from git://github.com/Raynos/for-each.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2012 Raynos.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: fresh. A copy of the source code may be downloaded from https://github.com/jshttp/fresh.git. This software contains the following license and notice below: The following software may be included in this product: fresh. A copy of the source code may be downloaded from https://github.com/jshttp/fresh.git. This software contains the following license and notice below:
(The MIT License) (The MIT License)
@ -4311,30 +4260,6 @@ the licensed code:
----- -----
The following software may be included in this product: function-bind. A copy of the source code may be downloaded from git://github.com/Raynos/function-bind.git. This software contains the following license and notice below:
Copyright (c) 2013 Raynos.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: glob. A copy of the source code may be downloaded from git://github.com/isaacs/node-glob.git. This software contains the following license and notice below: The following software may be included in this product: glob. A copy of the source code may be downloaded from git://github.com/isaacs/node-glob.git. This software contains the following license and notice below:
The ISC License The ISC License
@ -4381,32 +4306,6 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
----- -----
The following software may be included in this product: has-symbols. A copy of the source code may be downloaded from git://github.com/ljharb/has-symbols.git. This software contains the following license and notice below:
MIT License
Copyright (c) 2016 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: http-errors. A copy of the source code may be downloaded from https://github.com/jshttp/http-errors.git. This software contains the following license and notice below: The following software may be included in this product: http-errors. A copy of the source code may be downloaded from https://github.com/jshttp/http-errors.git. This software contains the following license and notice below:
The MIT License (MIT) The MIT License (MIT)
@ -4523,31 +4422,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: is-arguments, is-regex, object-is. A copy of the source code may be downloaded from git://github.com/ljharb/is-arguments.git (is-arguments), git://github.com/ljharb/is-regex.git (is-regex), git://github.com/es-shims/object-is.git (object-is). This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2014 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----
The following software may be included in this product: isexe, minimatch, nopt, once, osenv, semver, which, wrappy. A copy of the source code may be downloaded from git+https://github.com/isaacs/isexe.git (isexe), git://github.com/isaacs/minimatch.git (minimatch), https://github.com/npm/nopt.git (nopt), git://github.com/isaacs/once (once), https://github.com/npm/osenv (osenv), https://github.com/npm/node-semver (semver), git://github.com/isaacs/node-which.git (which), https://github.com/npm/wrappy (wrappy). This software contains the following license and notice below: The following software may be included in this product: isexe, minimatch, nopt, once, osenv, semver, which, wrappy. A copy of the source code may be downloaded from git+https://github.com/isaacs/isexe.git (isexe), git://github.com/isaacs/minimatch.git (minimatch), https://github.com/npm/nopt.git (nopt), git://github.com/isaacs/once (once), https://github.com/npm/osenv (osenv), https://github.com/npm/node-semver (semver), git://github.com/isaacs/node-which.git (which), https://github.com/npm/wrappy (wrappy). This software contains the following license and notice below:
The ISC License The ISC License
@ -4778,84 +4652,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: object-inspect. A copy of the source code may be downloaded from git://github.com/substack/object-inspect.git. This software contains the following license and notice below:
MIT License
Copyright (c) 2013 James Halliday
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: object-keys. A copy of the source code may be downloaded from git://github.com/ljharb/object-keys.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (C) 2013 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: object.assign. A copy of the source code may be downloaded from git://github.com/ljharb/object.assign.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2014 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: on-finished. A copy of the source code may be downloaded from https://github.com/jshttp/on-finished.git. This software contains the following license and notice below: The following software may be included in this product: on-finished. A copy of the source code may be downloaded from https://github.com/jshttp/on-finished.git. This software contains the following license and notice below:
(The MIT License) (The MIT License)
@ -4912,32 +4708,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----- -----
The following software may be included in this product: path-parse. A copy of the source code may be downloaded from https://github.com/jbgutierrez/path-parse.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2015 Javier Blanco
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: plist. A copy of the source code may be downloaded from git://github.com/TooTallNate/node-plist.git. This software contains the following license and notice below: The following software may be included in this product: plist. A copy of the source code may be downloaded from git://github.com/TooTallNate/node-plist.git. This software contains the following license and notice below:
(The MIT License) (The MIT License)
@ -5078,58 +4848,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: regexp.prototype.flags. A copy of the source code may be downloaded from git://github.com/es-shims/RegExp.prototype.flags.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (C) 2014 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: resolve, tape. A copy of the source code may be downloaded from git://github.com/browserify/resolve.git (resolve), git://github.com/substack/tape.git (tape). This software contains the following license and notice below:
MIT License
Copyright (c) 2012 James Halliday
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: safe-buffer. A copy of the source code may be downloaded from git://github.com/feross/safe-buffer.git. This software contains the following license and notice below: The following software may be included in this product: safe-buffer. A copy of the source code may be downloaded from git://github.com/feross/safe-buffer.git. This software contains the following license and notice below:
The MIT License (MIT) The MIT License (MIT)
@ -5388,52 +5106,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: string.prototype.trim. A copy of the source code may be downloaded from git://github.com/es-shims/String.prototype.trim.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2015 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: through. A copy of the source code may be downloaded from https://github.com/dominictarr/through.git. This software contains the following license and notice below:
Apache License, Version 2.0
Copyright (c) 2011 Dominic Tarr
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-----
The following software may be included in this product: toidentifier. A copy of the source code may be downloaded from https://github.com/component/toidentifier.git. This software contains the following license and notice below: The following software may be included in this product: toidentifier. A copy of the source code may be downloaded from https://github.com/component/toidentifier.git. This software contains the following license and notice below:
MIT License MIT License
@ -5462,7 +5134,7 @@ SOFTWARE.
The following software may be included in this product: underscore. A copy of the source code may be downloaded from git://github.com/jashkenas/underscore.git. This software contains the following license and notice below: The following software may be included in this product: underscore. A copy of the source code may be downloaded from git://github.com/jashkenas/underscore.git. This software contains the following license and notice below:
Copyright (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Copyright (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative
Reporters & Editors Reporters & Editors
Permission is hereby granted, free of charge, to any person Permission is hereby granted, free of charge, to any person

View File

@ -1,9 +1,16 @@
{ {
"name": "com.netsyms.packagehelper", "name": "com.netsyms.packagehelper",
"displayName": "PackageHelper", "displayName": "PackageHelper",
"version": "1.3.0", "version": "1.5.0",
"description": "Assistant app for door-to-door package delivery.", "description": "Assistant app for door-to-door package delivery.",
"product_string": "PackageHelper",
"main": "www/index.html", "main": "www/index.html",
"window": {
"icon": "res/logo.png",
"id": "com.netsyms.packagehelper_window_main_00001",
"frame": true
},
"user_agent": "Mozilla/5.0 (%osinfo) %name/%ver NW.js/%nwver WebKit/%webkit_ver Chromium/%chromium_ver",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
@ -19,7 +26,10 @@
"cordova-plugin-powermanagement-netsyms": {}, "cordova-plugin-powermanagement-netsyms": {},
"cordova-plugin-whitelist": {}, "cordova-plugin-whitelist": {},
"phonegap-plugin-barcodescanner": {}, "phonegap-plugin-barcodescanner": {},
"cordova-plugin-device": {} "cordova-plugin-device": {},
"cordova-plugin-battery-status": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-headercolor": {}
}, },
"platforms": [ "platforms": [
"android", "android",
@ -29,9 +39,12 @@
"dependencies": { "dependencies": {
"cordova-android": "^8.1.0", "cordova-android": "^8.1.0",
"cordova-browser": "^6.0.0", "cordova-browser": "^6.0.0",
"cordova-plugin-battery-status": "^2.0.3",
"cordova-plugin-device": "^2.0.3", "cordova-plugin-device": "^2.0.3",
"cordova-plugin-headercolor": "^1.0.0",
"cordova-plugin-inappbrowser": "^3.1.0", "cordova-plugin-inappbrowser": "^3.1.0",
"cordova-plugin-powermanagement-netsyms": "git+https://source.netsyms.com/Netsyms/cordova-plugin-powermanagement", "cordova-plugin-powermanagement-netsyms": "git+https://source.netsyms.com/Netsyms/cordova-plugin-powermanagement",
"cordova-plugin-statusbar": "^2.4.3",
"cordova-plugin-whitelist": "^1.3.4" "cordova-plugin-whitelist": "^1.3.4"
}, },
"devDependencies": {} "devDependencies": {}

BIN
res/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,4 +1,7 @@
#!/bin/bash #!/bin/bash
echo "Generating credits files..."
cd www cd www
yarn licenses generate-disclaimer > ../license-credits.md yarn licenses generate-disclaimer > ../license-credits.md
cd .. cd ..

View File

@ -19,6 +19,11 @@ rm -rf {util-deprecate,vt-pbf,wgs84}
# Make npm stop complaining that these don't exist by actually removing them # Make npm stop complaining that these don't exist by actually removing them
rm -rf .bin/* rm -rf .bin/*
cd bwip-js
rm -rf {bin,examples,src,barcode.ps,demo.html,stb_truetype.h}
rm -rf dist/bwip-js.js
rm -rf dist/node-bwipjs.js
cd ..
cd @fortawesome/fontawesome-free cd @fortawesome/fontawesome-free
rm -rf {js,less,metadata,scss,sprites,svgs} rm -rf {js,less,metadata,scss,sprites,svgs}

View File

@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
echo "Installing node modules in www/..."
cd www cd www
npm install npm install
cd .. cd ..

View File

@ -19,6 +19,21 @@ Framework7 and FontAwesome both have a .fab class
line-height: var(--f7-line-height); line-height: var(--f7-line-height);
} }
.page-content-fab-pad {
padding-bottom: var(--f7-fab-size);
}
.navbar, .item-link .item-title, .item-media, .item-divider, .item-label, .fab, .button, .noselect {
user-select: none;
}
.navbar-inner {
-webkit-app-region: drag;
}
.navbar-inner > * {
-webkit-app-region: no-drag;
}
/* /*
* Material icons are too big and disrupt the flow of text * Material icons are too big and disrupt the flow of text
*/ */
@ -47,3 +62,26 @@ Framework7 and FontAwesome both have a .fab class
#mapbox .mapboxgl-user-location-dot { #mapbox .mapboxgl-user-location-dot {
pointer-events: none; pointer-events: none;
} }
.no-animation * {
-webkit-transition: 10ms !important;
-moz-transition: 10ms !important;
-o-transition: 10ms !important;
-ms-transition: 10ms !important;
transition: 10ms !important;
}
/*
Allow easily changing help text to reflect finger/mouse usage.
*/
.clicktext {
display: none;
}
@media (pointer:fine) {
.taptext {
display: none;
}
.clicktext {
display: initial;
}
}

89
www/assets/css/tablet.css Normal file
View File

@ -0,0 +1,89 @@
/*
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/*
Created on : Apr 3, 2020, 11:55:50 AM
Author : Skylar Ittner
*/
.only-tablet {
display: none;
}
@media all and (min-width: 768px) {
.only-tablet {
display: inherit;
}
.no-tablet {
display: none;
}
.page[data-name="add"] .tabbar {
/* Remove tab switcher at bottom of page */
display: none;
height: 0;
}
.page[data-name="add"] .tabs {
/* Put tabs next to each other */
display: flex;
}
.page[data-name="add"] .tabs .tab {
/* un-hide "non-active" tabs */
display: block;
}
.page[data-name="add"] .tabs #add-tab {
width: 66.67% !important;
position: relative; /* Make the FAB stay where it should */
}
.page[data-name="add"] .tabs #history-tab {
width: 33.33% !important;
}
.page[data-name="add"] #history-empty-swipe-prompt {
display: none;
}
.page[data-name="add"] .page-content {
padding-top: 0;
padding-bottom: 0;
}
.elevation-tablet {
/* .elevation-3 */
box-shadow: var(--f7-elevation-3)!important;
}
.page[data-name="add"] #history-tab {
/*box-shadow: inset 5px 0 9px -5px rgba(0,0,0,0.3);*/
border-left: 1px solid rgba(0,0,0,0.1);
}
.page[data-name="add"] .fab {
margin-bottom: 0;
}
.sheet-backdrop.backdrop-in {
visibility: hidden;
}
#package-info-sheet {
left: 25%;
width: 50%;
}
.padding-bottom-tablet {
padding-bottom: 3rem !important;
}
}
@media all and (min-width: 768px) and (min-height: 700px) {
.margin-top-tablet {
margin-top: 1rem;
}
}
@media all and (min-width: 1024px) {
#package-info-sheet {
left: 33%;
width: 33%;
}
}

View File

@ -0,0 +1,60 @@
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src:
local('Roboto'),
local('Roboto-Regular'),
url('Roboto_400.woff') format('woff'),
url('Roboto_400.woff2') format('woff2');
}
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 400;
src:
local('Roboto Italic'),
local('Roboto-Italic'),
url('Roboto_400i.woff') format('woff'),
url('Roboto_400i.woff2') format('woff2');
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src:
local('Roboto Medium'),
local('Roboto-Medium'),
url('Roboto_500.woff') format('woff'),
url('Roboto_500.woff2') format('woff2');
}
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 500;
src:
local('Roboto Medium Italic'),
local('Roboto-MediumItalic'),
url('Roboto_500i.woff') format('woff'),
url('Roboto_500i.woff2') format('woff2');
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src:
local('Roboto Bold'),
local('Roboto-Bold'),
url('Roboto_700.woff') format('woff'),
url('Roboto_700.woff2') format('woff2');
}
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 700;
src:
local('Roboto Bold Italic'),
local('Roboto-BoldItalic'),
url('Roboto_700i.woff') format('woff'),
url('Roboto_700i.woff2') format('woff2');
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,31 @@
<!DOCTYPE html>
<!--
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<html>
<head>
<title>Loading</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
*,html,body {
background-color: #fff;
font-family: Roboto, Ubuntu, sans-serif;
text-align: center;
}
div {
margin-top: 1rem;
}
</style>
</head>
<body>
<div>Loading...</div>
<script src="../settings.js"></script>
<script>
window.location.href = SETTINGS.loginurl;
</script>
</body>
</html>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="500" height="500" version="1.1" viewBox="0 0 132.29 132.29" xmlns="http://www.w3.org/2000/svg"><g transform="translate(0 -164.71)" fill-opacity=".49804"><rect y="164.71" width="132.29" height="132.29" fill="#4caf50"/><g fill="#43a047" stroke-width=".26458"><path d="m43.103 267.27h-9.4683v-9.4683c0-0.58125-0.47078-1.052-1.052-1.052h-2.1041c-0.58125 0-1.052 0.47079-1.052 1.052v9.4683h-9.4683c-0.58125 0-1.052 0.47079-1.052 1.052v2.1041c0 0.58125 0.47078 1.052 1.052 1.052h9.4683v9.4683c0 0.58125 0.47078 1.052 1.052 1.052h2.1041c0.58125 0 1.052-0.47078 1.052-1.052v-9.4683h9.4683c0.58125 0 1.052-0.47078 1.052-1.052v-2.1041c0-0.58125-0.47078-1.052-1.052-1.052z"/><path d="m113.14 196.62h-8.4761v-8.4761c0-0.52034-0.42145-0.9418-0.94179-0.9418h-1.8836c-0.52034 0-0.94179 0.42146-0.94179 0.9418v8.4761h-8.4761c-0.52034 0-0.94179 0.42145-0.94179 0.94179v1.8836c0 0.52034 0.42145 0.94179 0.94179 0.94179h8.4761v8.4761c0 0.52034 0.42145 0.94179 0.94179 0.94179h1.8836c0.52034 0 0.94179-0.42145 0.94179-0.94179v-8.4761h8.4761c0.52034 0 0.94179-0.42145 0.94179-0.94179v-1.8836c0-0.52034-0.42145-0.94179-0.94179-0.94179z"/><path d="m63.135 223.53h-8.8203v-8.8203c0-1.0823-0.87775-1.9601-1.9601-1.9601h-1.9601c-1.0823 0-1.9601 0.87774-1.9601 1.9601v8.8203h-8.8203c-1.0823 0-1.9601 0.87775-1.9601 1.9601v1.9601c0 1.0823 0.87775 1.9601 1.9601 1.9601h8.8203v8.8203c0 1.0823 0.87775 1.9601 1.9601 1.9601h1.9601c1.0823 0 1.9601-0.87775 1.9601-1.9601v-8.8203h8.8203c1.0823 0 1.9601-0.87776 1.9601-1.9601v-1.9601c0-1.0823-0.87775-1.9601-1.9601-1.9601z"/><path d="m98.241 241.28h-6.4917v-6.4917c0-0.39852-0.32278-0.72131-0.7213-0.72131h-1.4426c-0.39852 0-0.7213 0.32279-0.7213 0.72131v6.4917h-6.4917c-0.39852 0-0.7213 0.32278-0.7213 0.72131v1.4426c0 0.39852 0.32278 0.7213 0.7213 0.7213h6.4917v6.4918c0 0.39852 0.32278 0.7213 0.7213 0.7213h1.4426c0.39852 0 0.7213-0.32278 0.7213-0.7213v-6.4918h6.4917c0.39852 0 0.7213-0.32278 0.7213-0.7213v-1.4426c0-0.39853-0.32278-0.72131-0.7213-0.72131z"/><path d="m115.38 282.24h-6.755v-6.755c0-0.8289-0.67221-1.5011-1.5011-1.5011h-1.5011c-0.82889 0-1.5011 0.67221-1.5011 1.5011v6.755h-6.755c-0.82889 0-1.5011 0.67222-1.5011 1.5011v1.5011c0 0.82889 0.67221 1.5011 1.5011 1.5011h6.755v6.755c0 0.82889 0.67221 1.5011 1.5011 1.5011h1.5011c0.82889 0 1.5011-0.67221 1.5011-1.5011v-6.755h6.755c0.82889 0 1.5011-0.67222 1.5011-1.5011v-1.5011c0-0.82889-0.67221-1.5011-1.5011-1.5011z"/><path d="m38.898 183.83h-6.4917v-6.4917c0-0.39852-0.32278-0.72131-0.7213-0.72131h-1.4426c-0.39852 0-0.7213 0.32279-0.7213 0.72131v6.4917h-6.4917c-0.39852 0-0.7213 0.32278-0.7213 0.72131v1.4426c0 0.39852 0.32278 0.7213 0.7213 0.7213h6.4917v6.4918c0 0.39852 0.32278 0.7213 0.7213 0.7213h1.4426c0.39852 0 0.7213-0.32278 0.7213-0.7213v-6.4918h6.4917c0.39852 0 0.7213-0.32278 0.7213-0.7213v-1.4426c0-0.39853-0.32278-0.72131-0.7213-0.72131z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="add.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="250.07653"
inkscape:cy="321.61508"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
borderlayer="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1680"
inkscape:window-height="1021"
inkscape:window-x="1920"
inkscape:window-y="30"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#4caf50;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<path
id="path926"
d="m 43.103329,267.26948 h -9.468304 v -9.4683 c 0,-0.58125 -0.470785,-1.05204 -1.052033,-1.05204 h -2.104068 c -0.581249,0 -1.052034,0.47079 -1.052034,1.05204 v 9.4683 h -9.468303 c -0.581249,0 -1.052034,0.47079 -1.052034,1.05204 v 2.10406 c 0,0.58125 0.470785,1.05203 1.052034,1.05203 h 9.468303 v 9.46831 c 0,0.58125 0.470785,1.05203 1.052034,1.05203 h 2.104068 c 0.581248,0 1.052033,-0.47078 1.052033,-1.05203 v -9.46831 h 9.468304 c 0.581249,0 1.052033,-0.47078 1.052033,-1.05203 v -2.10406 c 0,-0.58125 -0.470784,-1.05204 -1.052033,-1.05204 z"
inkscape:connector-curvature="0"
style="fill:#43a047;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
style="fill:#43a047;fill-opacity:0.49803922;stroke-width:0.26458332"
inkscape:connector-curvature="0"
d="m 113.13917,196.61941 h -8.47611 v -8.47611 c 0,-0.52034 -0.42145,-0.9418 -0.94179,-0.9418 h -1.88359 c -0.52034,0 -0.94179,0.42146 -0.94179,0.9418 v 8.47611 h -8.476118 c -0.520339,0 -0.94179,0.42145 -0.94179,0.94179 v 1.88358 c 0,0.52034 0.421451,0.94179 0.94179,0.94179 h 8.476118 v 8.47612 c 0,0.52034 0.42145,0.94179 0.94179,0.94179 h 1.88359 c 0.52034,0 0.94179,-0.42145 0.94179,-0.94179 v -8.47612 h 8.47611 c 0.52034,0 0.94179,-0.42145 0.94179,-0.94179 v -1.88358 c 0,-0.52034 -0.42145,-0.94179 -0.94179,-0.94179 z"
id="path937" />
<path
id="path997"
d="m 63.135168,223.53312 h -8.820344 v -8.82034 c 0,-1.08233 -0.877748,-1.96007 -1.960077,-1.96007 h -1.960076 c -1.08233,0 -1.960077,0.87774 -1.960077,1.96007 v 8.82034 h -8.820343 c -1.08233,0 -1.960077,0.87775 -1.960077,1.96008 v 1.96007 c 0,1.08233 0.877747,1.96009 1.960077,1.96009 h 8.820343 v 8.82034 c 0,1.08232 0.877747,1.96007 1.960077,1.96007 h 1.960076 c 1.082329,0 1.960077,-0.87775 1.960077,-1.96007 v -8.82034 h 8.820344 c 1.082329,0 1.960075,-0.87776 1.960075,-1.96009 v -1.96007 c 0,-1.08233 -0.877746,-1.96008 -1.960075,-1.96008 z"
inkscape:connector-curvature="0"
style="fill:#43a047;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
style="fill:#43a047;fill-opacity:0.49803922;stroke-width:0.26458332"
inkscape:connector-curvature="0"
d="m 98.240607,241.28362 h -6.491742 v -6.49174 c 0,-0.39852 -0.322783,-0.72131 -0.721304,-0.72131 h -1.442609 c -0.398521,0 -0.721305,0.32279 -0.721305,0.72131 v 6.49174 h -6.491741 c -0.398521,0 -0.721305,0.32278 -0.721305,0.72131 v 1.4426 c 0,0.39852 0.322784,0.7213 0.721305,0.7213 h 6.491741 v 6.49175 c 0,0.39852 0.322784,0.7213 0.721305,0.7213 h 1.442609 c 0.398521,0 0.721304,-0.32278 0.721304,-0.7213 v -6.49175 h 6.491742 c 0.398521,0 0.721304,-0.32278 0.721304,-0.7213 v -1.4426 c 0,-0.39853 -0.322783,-0.72131 -0.721304,-0.72131 z"
id="path3110" />
<path
style="fill:#43a047;fill-opacity:0.49803922;stroke-width:0.26458332"
inkscape:connector-curvature="0"
d="m 115.37688,282.24092 h -6.75498 v -6.75496 c 0,-0.8289 -0.67221,-1.50111 -1.5011,-1.50111 h -1.50111 c -0.82889,0 -1.5011,0.67221 -1.5011,1.50111 v 6.75496 h -6.754975 c -0.828892,0 -1.501106,0.67222 -1.501106,1.50111 v 1.50111 c 0,0.82889 0.672214,1.50111 1.501106,1.50111 h 6.754975 v 6.75497 c 0,0.82889 0.67221,1.5011 1.5011,1.5011 h 1.50111 c 0.82889,0 1.5011,-0.67221 1.5011,-1.5011 v -6.75497 h 6.75498 c 0.82889,0 1.5011,-0.67222 1.5011,-1.50111 v -1.50111 c 0,-0.82889 -0.67221,-1.50111 -1.5011,-1.50111 z"
id="path3112" />
<path
id="path3114"
d="m 38.898346,183.83124 h -6.491742 v -6.49174 c 0,-0.39852 -0.322783,-0.72131 -0.721304,-0.72131 h -1.442609 c -0.398521,0 -0.721305,0.32279 -0.721305,0.72131 v 6.49174 h -6.491741 c -0.398521,0 -0.721305,0.32278 -0.721305,0.72131 v 1.4426 c 0,0.39852 0.322784,0.7213 0.721305,0.7213 h 6.491741 v 6.49175 c 0,0.39852 0.322784,0.7213 0.721305,0.7213 H 31.6853 c 0.398521,0 0.721304,-0.32278 0.721304,-0.7213 v -6.49175 h 6.491742 c 0.398521,0 0.721304,-0.32278 0.721304,-0.7213 v -1.4426 c 0,-0.39853 -0.322783,-0.72131 -0.721304,-0.72131 z"
inkscape:connector-curvature="0"
style="fill:#43a047;fill-opacity:0.49803922;stroke-width:0.26458332" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="list.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="292.10204"
inkscape:cy="244.36683"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
borderlayer="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1680"
inkscape:window-height="1021"
inkscape:window-x="1920"
inkscape:window-y="30"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#2196f3;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<rect
style="opacity:1;fill:#1976d2;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect1385"
width="73.327377"
height="10.961308"
x="-0.7559486"
y="172.72136"
ry="1.349375"
rx="1.3229166" />
<rect
rx="1.3229166"
ry="1.349375"
y="193.88805"
x="-0.7559486"
height="10.961308"
width="73.327377"
id="rect1387"
style="opacity:1;fill:#1976d2;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
<rect
style="opacity:1;fill:#1976d2;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect1389"
width="73.327377"
height="10.961308"
x="-0.7559486"
y="215.05473"
ry="1.349375"
rx="1.3229166" />
<rect
rx="1.3229166"
ry="1.349375"
y="236.22142"
x="-0.7559486"
height="10.961308"
width="73.327377"
id="rect1391"
style="opacity:1;fill:#1976d2;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
<rect
style="opacity:1;fill:#1976d2;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect1393"
width="73.327377"
height="10.961308"
x="-0.7559486"
y="257.38812"
ry="1.349375"
rx="1.3229166" />
<rect
rx="1.3229166"
ry="1.349375"
y="278.55475"
x="-0.7559486"
height="10.961308"
width="73.327377"
id="rect1395"
style="opacity:1;fill:#1976d2;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 161 KiB

View File

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="notes.svg">
<defs
id="defs2">
<style
id="style1751">.fa-secondary{opacity:.4}</style>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="-56.578959"
inkscape:cy="244.30241"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
borderlayer="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1920"
inkscape:window-height="1013"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#ffc107;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<path
id="path2052"
d="m 53.962878,191.64389 -2.282353,-2.28143 c -1.117763,-1.1178 -2.927083,-1.11798 -4.045098,-4e-5 l -13.448847,13.36096 -1.041616,6.31369 c -0.113353,0.6871 0.481716,1.2823 1.168995,1.16899 l 6.313641,-1.04165 13.361892,-13.44885 c 1.115723,-1.11578 1.126358,-2.91874 -0.02665,-4.07167 z m -15.719584,9.67736 7.214701,-7.16793 3.73962,3.73963 -7.167873,7.2147 v -1.75242 h -2.033993 v -2.03398 z m -1.63194,6.61606 -1.197641,-1.19764 0.51443,-3.11823 0.779697,-0.77471 h 1.762414 v 2.034 h 2.033993 v 1.76237 l -0.774697,0.77974 z m 16.059429,-13.54016 -0.0023,0.002 -0.0023,0.002 -2.035258,2.04857 -3.730258,-3.73026 2.048565,-2.03526 0.0023,-0.002 0.0023,-0.002 c 0.387603,-0.38756 1.016065,-0.39235 1.408372,-4e-5 l 2.282048,2.28205 c 0.418587,0.41854 0.421175,1.04026 0.02664,1.43486 z"
inkscape:connector-curvature="0"
style="fill:#ffa000;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path2161"
d="m 94.157277,212.40451 c -5.201424,0 -9.417004,3.4247 -9.417004,7.65131 0,1.82455 0.787202,3.49459 2.096755,4.80782 -0.459815,1.85397 -1.997436,3.50563 -2.015829,3.52403 -0.08093,0.0846 -0.102998,0.20967 -0.05518,0.32002 0.04782,0.11036 0.15082,0.17657 0.268532,0.17657 2.438857,0 4.26708,-1.16977 5.171996,-1.89075 1.20287,0.45245 2.53818,0.71363 3.95073,0.71363 5.20142,0 9.417003,-3.4247 9.417003,-7.65132 0,-4.22661 -4.215583,-7.65131 -9.417003,-7.65131 z"
inkscape:connector-curvature="0"
style="fill:#ffa000;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path2231"
d="m 88.388848,268.5164 a 4.649108,4.649108 0 0 0 -4.649107,4.64911 v 6.71537 a 1.0331351,1.0331351 0 0 0 1.033136,1.03314 h 8.265081 v -7.74851 a 4.649108,4.649108 0 0 0 -4.64911,-4.64911 z m 2.58284,5.68224 a 0.51656756,0.51656756 0 0 1 -0.516568,0.51657 h -4.132542 a 0.51656756,0.51656756 0 0 1 -0.516567,-0.51657 v -1.03313 a 0.51656756,0.51656756 0 0 1 0.516567,-0.51657 h 4.132542 a 0.51656756,0.51656756 0 0 1 0.516568,0.51657 z m 6.715373,-5.68224 h -6.041578 c 1.46447,1.02894 2.425608,2.72748 2.425608,4.64911 v 7.74851 h 7.231959 a 1.0331351,1.0331351 0 0 0 1.03313,-1.03314 v -6.71537 a 4.649108,4.649108 0 0 0 -4.649119,-4.64911 z m 2.582849,6.71538 a 0.51656756,0.51656756 0 0 1 -0.516575,0.51656 h -1.03313 a 0.51656756,0.51656756 0 0 1 -0.516574,-0.51656 v -1.5497 h -1.80799 a 0.25828377,0.25828377 0 0 1 -0.25828,-0.25829 v -0.51657 a 0.25828377,0.25828377 0 0 1 0.25828,-0.25828 h 3.357694 a 0.51656756,0.51656756 0 0 1 0.516575,0.51657 z"
inkscape:connector-curvature="0"
style="fill:#ffa000;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path4604"
d="m 37.797624,247.63629 c -5.762917,0 -10.432145,4.66922 -10.432145,10.43213 0,5.76292 4.669228,10.43215 10.432145,10.43215 5.762916,0 10.432139,-4.66923 10.432139,-10.43215 0,-5.76291 -4.669223,-10.43213 -10.432139,-10.43213 z m -0.673042,13.79735 c 0,0.37017 -0.302872,0.67303 -0.673042,0.67303 h -2.019121 c -0.370176,0 -0.673048,-0.30286 -0.673048,-0.67303 v -6.73042 c 0,-0.37018 0.302872,-0.67304 0.673048,-0.67304 h 2.019121 c 0.37017,0 0.673042,0.30286 0.673042,0.67304 z m 4.711289,0 c 0,0.37017 -0.302866,0.67303 -0.673042,0.67303 h -2.019121 c -0.370176,0 -0.673042,-0.30286 -0.673042,-0.67303 v -6.73042 c 0,-0.37018 0.302866,-0.67304 0.673042,-0.67304 h 2.019121 c 0.370176,0 0.673042,0.30286 0.673042,0.67304 z"
inkscape:connector-curvature="0"
style="fill:#ffa000;fill-opacity:0.49803922;stroke-width:0.26458332" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="settings.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.9899495"
inkscape:cx="88.990572"
inkscape:cy="234.28819"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
borderlayer="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1680"
inkscape:window-height="1021"
inkscape:window-x="1920"
inkscape:window-y="30"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#607d8b;fill-opacity:0.39215687;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<path
id="path6001"
d="M 93.874723,233.42475 H 84.63513 c -5.101024,0 -9.239587,4.13856 -9.239587,9.23958 0,5.10103 4.138563,9.23959 9.239587,9.23959 h 9.239593 c 5.10101,0 9.239577,-4.13856 9.239577,-9.23959 0,-5.10102 -4.138567,-9.23958 -9.239577,-9.23958 z m 0,16.16928 c -3.83058,0 -6.929693,-3.09912 -6.929693,-6.9297 0,-3.83058 3.099113,-6.92969 6.929693,-6.92969 3.83057,0 6.929677,3.09911 6.929677,6.92969 0,3.83058 -3.099107,6.9297 -6.929677,6.9297 z"
inkscape:connector-curvature="0"
style="fill:#455a64;fill-opacity:0.58823532;stroke-width:0.26458332" />
<path
id="path6091"
d="m 40.688088,212.47296 h -8.705049 c -4.807682,0 -8.705053,3.89737 -8.705053,8.70505 0,4.80768 3.897371,8.70505 8.705053,8.70505 h 8.705049 c 4.807684,0 8.70505,-3.89737 8.70505,-8.70505 0,-4.80768 -3.897366,-8.70505 -8.70505,-8.70505 z m -15.233836,8.70505 c 0,-3.6082 2.919997,-6.52879 6.528787,-6.52879 3.60815,0 6.528788,2.92 6.528788,6.52879 0,3.60815 -2.920002,6.52879 -6.528788,6.52879 -3.608154,0 -6.528787,-2.92 -6.528787,-6.52879 z m 15.233836,6.52879 h -2.947929 c 3.931057,-3.4691 3.930103,-9.58934 0,-13.05758 h 2.947929 c 3.608155,0 6.528789,2.92 6.528789,6.52879 0,3.60815 -2.920002,6.52879 -6.528789,6.52879 z"
inkscape:connector-curvature="0"
style="fill:#455a64;fill-opacity:0.58823532;stroke-width:0.26458332" />
<path
id="path6370"
d="m 33.462414,268.93401 c 2.762578,0 5.001557,-2.23898 5.001557,-5.00156 0,-2.76258 -2.238979,-5.00156 -5.001557,-5.00156 -2.76258,0 -5.001557,2.23898 -5.001557,5.00156 0,2.76258 2.238977,5.00156 5.001557,5.00156 z m 3.50109,1.25039 h -0.652547 c -0.867458,0.39856 -1.832602,0.62519 -2.848543,0.62519 -1.015942,0 -1.977178,-0.22663 -2.848543,-0.62519 h -0.652547 c -2.89934,0 -5.251635,2.35229 -5.251635,5.25163 v 1.62551 c 0,1.03547 0.840105,1.87558 1.875584,1.87558 h 13.754281 c 1.035479,0 1.875584,-0.84011 1.875584,-1.87558 v -1.62551 c 0,-2.89934 -2.352294,-5.25163 -5.251634,-5.25163 z"
inkscape:connector-curvature="0"
style="fill:#455a64;fill-opacity:0.58823532;stroke-width:0.26458332" />
<path
id="path6550"
d="m 87.999192,192.91497 c -1.379188,0.0887 -2.630839,0.61396 -3.341058,2.48543 -0.08078,0.21347 -0.275013,0.34307 -0.501555,0.34307 -0.381923,0 -1.562759,-0.9512 -1.899305,-1.18083 3.9e-4,2.8309 1.304247,5.31908 4.400545,5.31908 2.607806,0 4.400201,-1.50466 4.400201,-4.13172 0,-0.10691 -0.02235,-0.20901 -0.03335,-0.31385 z m 9.999111,-10.63405 c -0.52115,0 -1.00964,0.23067 -1.38228,0.56549 -7.026914,6.27717 -7.758103,6.42464 -7.758103,8.27238 0,0.47096 0.111723,0.91992 0.300107,1.33038 l 2.193912,1.82814 c 0.247856,0.0619 0.503274,0.10416 0.769692,0.10416 2.135128,0 3.372682,-1.5631 7.258952,-8.81621 0.2537,-0.49331 0.47784,-1.02614 0.47784,-1.58098 0,-0.99383 -0.89379,-1.70336 -1.86012,-1.70336 z"
inkscape:connector-curvature="0"
style="fill:#455a64;fill-opacity:0.58823532;stroke-width:0.26458329" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="toolbox.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.9899495"
inkscape:cx="88.990572"
inkscape:cy="234.28819"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
borderlayer="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1680"
inkscape:window-height="1021"
inkscape:window-x="1920"
inkscape:window-y="30"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#f44336;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<path
id="path4703"
d="m 102.53594,267.93476 -2.11907,-2.11907 c -0.28099,-0.28098 -0.662184,-0.4388 -1.059774,-0.4388 h -2.37664 V 261.63 c 0,-1.24146 -1.00638,-2.24785 -2.24785,-2.24785 h -7.492841 c -1.241473,0 -2.247853,1.00639 -2.247853,2.24785 v 3.74643 h -2.376638 c -0.397587,0 -0.77832,0.15781 -1.059771,0.4388 l -2.119067,2.11953 c -0.280984,0.28099 -0.4388,0.66218 -0.4388,1.05977 v 3.87474 h 5.994276 v -0.74928 c 0,-0.41398 0.335302,-0.74929 0.749282,-0.74929 h 1.498571 c 0.41398,0 0.749282,0.33531 0.749282,0.74929 v 0.74928 h 5.994279 v -0.74928 c 0,-0.41398 0.3353,-0.74929 0.74928,-0.74929 h 1.49856 c 0.41398,0 0.74929,0.33531 0.74929,0.74929 v 0.74928 h 5.994274 v -3.87521 c 0,-0.39712 -0.15781,-0.77831 -0.43879,-1.0593 z m -8.552614,-2.55833 h -5.994279 v -2.99714 h 5.994279 z m 2.99713,9.74069 c 0,0.41398 -0.33531,0.74929 -0.74929,0.74929 h -1.49856 c -0.41398,0 -0.74928,-0.33531 -0.74928,-0.74929 v -0.74928 h -5.994279 v 0.74928 c 0,0.41398 -0.335302,0.74929 -0.749282,0.74929 h -1.498571 c -0.41398,0 -0.749282,-0.33531 -0.749282,-0.74929 v -0.74928 h -5.994276 v 4.4957 c 0,0.8275 0.671077,1.49857 1.49857,1.49857 h 20.979964 c 0.82749,0 1.49856,-0.67107 1.49856,-1.49857 v -4.4957 h -5.994274 z"
inkscape:connector-curvature="0"
style="fill:#d32f2f;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path5013"
d="m 30.826992,241.84005 h -1.97581 c -0.181117,0 -0.329302,0.14818 -0.329302,0.3293 v 9.87905 c 0,0.18112 0.148185,0.32931 0.329302,0.32931 h 1.97581 c 0.181115,0 0.3293,-0.14819 0.3293,-0.32931 v -9.87905 c 0,-0.18112 -0.148185,-0.3293 -0.3293,-0.3293 z m -1.646509,13.17207 h -3.293016 v -3.29302 c 0,-0.36223 -0.296372,-0.6586 -0.658605,-0.6586 h -1.317206 c -0.362232,0 -0.658604,0.29637 -0.658604,0.6586 v 5.26883 c 0,0.36223 0.296372,0.6586 0.658604,0.6586 h 5.268827 c 0.362233,0 0.658604,-0.29637 0.658604,-0.6586 v -1.31721 c 0,-0.36223 -0.296371,-0.6586 -0.658604,-0.6586 z m 4.280922,-13.17207 h -0.658603 c -0.181116,0 -0.329302,0.14818 -0.329302,0.3293 v 9.87905 c 0,0.18112 0.148186,0.32931 0.329302,0.32931 h 0.658603 c 0.181116,0 0.329301,-0.14819 0.329301,-0.32931 v -9.87905 c 0,-0.18112 -0.148185,-0.3293 -0.329301,-0.3293 z m -9.549749,1.31721 h 1.317206 c 0.362233,0 0.658605,-0.29637 0.658605,-0.6586 v -3.29302 h 3.293016 c 0.362233,0 0.658604,-0.29637 0.658604,-0.6586 v -1.31721 c 0,-0.36223 -0.296371,-0.65861 -0.658604,-0.65861 h -5.268827 c -0.362232,0 -0.658604,0.29638 -0.658604,0.65861 v 5.26883 c 0,0.36223 0.296372,0.6586 0.658604,0.6586 z m 16.135783,-1.31721 h -1.97581 c -0.181116,0 -0.329302,0.14818 -0.329302,0.3293 v 9.87905 c 0,0.18112 0.148186,0.32931 0.329302,0.32931 h 1.97581 c 0.181116,0 0.329303,-0.14819 0.329303,-0.32931 v -9.87905 c 0,-0.18112 -0.148187,-0.3293 -0.329303,-0.3293 z m -3.951621,0 h -0.658602 c -0.181117,0 -0.329302,0.14818 -0.329302,0.3293 v 9.87905 c 0,0.18112 0.148185,0.32931 0.329302,0.32931 h 0.658602 c 0.181117,0 0.329302,-0.14819 0.329302,-0.32931 v -9.87905 c 0,-0.18112 -0.148185,-0.3293 -0.329302,-0.3293 z m 12.842767,-5.26883 h -5.268827 c -0.362232,0 -0.658603,0.29638 -0.658603,0.65861 v 1.31721 c 0,0.36223 0.296371,0.6586 0.658603,0.6586 h 3.293017 v 3.29302 c 0,0.36223 0.296371,0.6586 0.658603,0.6586 h 1.317207 c 0.362232,0 0.658603,-0.29637 0.658603,-0.6586 v -5.26883 c 0,-0.36223 -0.296371,-0.65861 -0.658603,-0.65861 z m 0,14.48928 h -1.317207 c -0.362232,0 -0.658603,0.29637 -0.658603,0.6586 v 3.29302 h -3.293017 c -0.362232,0 -0.658603,0.29637 -0.658603,0.6586 v 1.31721 c 0,0.36223 0.296371,0.6586 0.658603,0.6586 h 5.268827 c 0.362232,0 0.658603,-0.29637 0.658603,-0.6586 v -5.26883 c 0,-0.36223 -0.296371,-0.6586 -0.658603,-0.6586 z m -4.610225,0.9879 v -9.87905 c 0,-0.18112 -0.148185,-0.3293 -0.3293,-0.3293 h -1.975811 c -0.181116,0 -0.329302,0.14818 -0.329302,0.3293 v 9.87905 c 0,0.18112 0.148186,0.32931 0.329302,0.32931 h 1.975811 c 0.181115,0 0.3293,-0.14819 0.3293,-0.32931 z"
inkscape:connector-curvature="0"
style="fill:#d32f2f;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path5093"
d="m 108.06784,223.13 -4.15639,-4.15555 c -0.18758,-0.18758 -0.44185,-0.29179 -0.70864,-0.29179 h -0.67946 c 1.1505,-1.47147 1.83413,-3.32186 1.83413,-5.33523 0,-4.78916 -3.88126,-8.66959 -8.670838,-8.66959 -4.789575,0 -8.671257,3.88043 -8.671257,8.66959 0,4.78916 3.881265,8.66959 8.671257,8.66959 2.013373,0 3.864589,-0.68363 5.336058,-1.83413 v 0.67946 c 0,0.26679 0.10421,0.52106 0.2918,0.70864 l 4.15638,4.15555 c 0.39184,0.39184 1.02544,0.39184 1.41311,0 l 1.17967,-1.17968 c 0.39184,-0.39183 0.39184,-1.02502 0.004,-1.41686 z m -12.381198,-3.78081 c -3.315603,0 -6.0026,-2.68199 -6.0026,-6.00176 0,-3.31519 2.682412,-6.00177 6.0026,-6.00177 3.315603,0 6.002598,2.682 6.002598,6.00177 0,3.31519 -2.682409,6.00176 -6.002598,6.00176 z m 8.45e-4,-10.00266 c -1.699903,0 -3.078,1.37768 -3.078,3.07758 0,1.37393 2.011705,3.87877 2.782456,4.78791 a 0.38516689,0.38516689 0 0 0 0.591089,0 c 0.770751,-0.90914 2.782455,-3.41357 2.782455,-4.78791 0,-1.6999 -1.378097,-3.07758 -3.078,-3.07758 z m 0,4.00173 c -0.55274,0 -1.000434,-0.44811 -1.000434,-1.00043 0,-0.55274 0.448112,-1.00044 1.000434,-1.00044 0.552323,0 1.000434,0.4477 1.000434,1.00044 0,0.55232 -0.448111,1.00043 -1.000434,1.00043 z"
inkscape:connector-curvature="0"
style="fill:#d32f2f;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path5593"
d="m 56.575279,194.78631 c 0.0079,-0.0753 0.03171,-0.14667 0.03171,-0.22198 0,-1.39932 -1.137686,-2.537 -2.537,-2.537 -0.49947,0 -0.959302,0.15063 -1.351745,0.3964 -0.697674,-1.53806 -2.239693,-2.61628 -4.039376,-2.61628 -2.44979,0 -4.439748,1.98599 -4.439748,4.43975 0,0.11892 0.02775,0.22991 0.03568,0.34487 -1.966173,0.14667 -3.524048,1.77194 -3.524048,3.77775 0,2.10095 1.704545,3.8055 3.805497,3.8055 H 55.33849 c 2.100952,0 3.805498,-1.70455 3.805498,-3.8055 0,-1.66886 -1.078225,-3.06818 -2.568712,-3.58351 z m -17.061317,-0.89587 c -1.732295,-1.7323 -1.732295,-4.54678 0,-6.27512 1.732295,-1.73229 4.546778,-1.73229 6.279072,0 0.384514,0.38452 0.669927,0.82849 0.883986,1.29626 0.388478,-0.14668 0.796776,-0.23785 1.216967,-0.29731 l 1.18129,-3.52405 c 0.158562,-0.47173 -0.289376,-0.9157 -0.7611,-0.7611 l -3.480445,1.16147 -1.645086,-3.28225 c -0.218023,-0.44397 -0.852272,-0.44397 -1.074261,0 l -1.641121,3.28225 -3.484408,-1.16147 c -0.46776,-0.1546 -0.915699,0.29334 -0.7611,0.7611 l 1.16147,3.48044 -3.282243,1.64509 c -0.443975,0.22198 -0.443975,0.85227 0,1.07426 l 3.282243,1.64112 -1.16147,3.48044 c -0.158563,0.47173 0.289377,0.91571 0.7611,0.76111 l 3.01665,-1.00291 c 0.241808,-0.49155 0.554969,-0.93949 0.935518,-1.32796 -0.519292,-0.21406 -1.006871,-0.53119 -1.427062,-0.95137 z m -0.190275,-3.13954 c 0,1.61734 1.16147,2.96512 2.691597,3.26242 0.317125,-0.18631 0.646142,-0.34884 0.998943,-0.46379 0.214059,-1.75609 1.228859,-3.27035 2.671778,-4.16227 -0.523256,-1.15354 -1.684726,-1.96221 -3.032506,-1.96221 -1.835361,0 -3.329812,1.49049 -3.329812,3.32585 z"
inkscape:connector-curvature="0"
style="fill:#d32f2f;fill-opacity:0.49803922;stroke-width:0.26458332" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,842 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="toolbox_addrlookup.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
id="svg8"
version="1.1"
viewBox="0 0 132.29166 132.29167"
height="500"
width="500">
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="1013"
inkscape:window-width="1920"
inkscape:pagecheckerboard="true"
borderlayer="true"
units="px"
showgrid="false"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="342.53041"
inkscape:cx="244.80152"
inkscape:zoom="0.98994949"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base" />
<defs
id="defs2">
<inkscape:path-effect
effect="spiro"
id="path-effect8593"
is_visible="true" />
<inkscape:path-effect
is_visible="true"
id="path-effect8582"
effect="spiro" />
<inkscape:path-effect
effect="spiro"
id="path-effect8578"
is_visible="true" />
<inkscape:path-effect
is_visible="true"
id="path-effect8574"
effect="spiro" />
<inkscape:path-effect
effect="spiro"
id="path-effect8570"
is_visible="true" />
<inkscape:path-effect
is_visible="true"
id="path-effect8566"
effect="spiro" />
<inkscape:path-effect
is_visible="true"
id="path-effect8562"
effect="spiro" />
<inkscape:path-effect
simplifyJustCoalesce="false"
simplifyindividualpaths="false"
simplify_just_coalesce="false"
simplify_individual_paths="false"
helper_size="0"
smooth_angles="360"
threshold="0.00159091"
steps="1"
is_visible="true"
id="path-effect8560"
effect="simplify" />
<inkscape:path-effect
is_visible="true"
id="path-effect8556"
effect="spiro" />
<inkscape:path-effect
effect="lattice2"
gridpoint0="-221.28795,-36.830902"
gridpoint1="62.363609,-36.830902"
gridpoint2="-221.28795,128.83216"
gridpoint3="62.363609,128.83216"
gridpoint4="-150.37506,-36.830902"
gridpoint5="-8.549282,-36.830902"
gridpoint6="-150.37506,128.83216"
gridpoint7="-8.549282,128.83216"
gridpoint8x9="-79.462173,-36.830902"
gridpoint10x11="-79.462173,128.83216"
gridpoint12="-221.28795,4.5848636"
gridpoint13="62.363609,4.5848636"
gridpoint14="-221.28795,87.416395"
gridpoint15="62.363609,87.416395"
gridpoint16="-150.37506,4.5848636"
gridpoint17="-8.549282,4.5848636"
gridpoint18="-150.37506,87.416395"
gridpoint19="-8.549282,87.416395"
gridpoint20x21="-79.462173,4.5848636"
gridpoint22x23="-79.462173,87.416395"
gridpoint24x26="-221.28795,46.000629"
gridpoint25x27="62.363609,46.000629"
gridpoint28x30="-150.37506,46.000629"
gridpoint29x31="-8.549282,46.000629"
gridpoint32x33x34x35="-79.462173,46.000629"
id="path-effect8425"
is_visible="true"
horizontal_mirror="true"
vertical_mirror="false"
live_update="false" />
<inkscape:path-effect
effect="envelope"
id="path-effect8423"
is_visible="true"
yy="true"
xx="true"
bendpath1="M -221.28795,3.2010469 62.363609,-36.830902"
bendpath2="M 13.589051,-36.830902 62.363609,128.83216"
bendpath3="M -221.28795,128.83216 H 62.363609"
bendpath4="M -181.256,-36.830902 -221.28795,128.83216"
bendpath4-nodetypes="cc"
bendpath2-nodetypes="cc"
bendpath1-nodetypes="cc" />
<inkscape:path-effect
effect="bspline"
id="path-effect8421"
is_visible="true"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bend_path"
id="path-effect8419"
is_visible="true"
bendpath="M -221.28795,46.000629 H 62.363609"
prop_scale="1"
scale_y_rel="false"
vertical="false" />
<inkscape:path-effect
effect="transform_2pts"
start="-221.28795,46.000629"
end="62.363609,46.000629"
id="path-effect4714"
is_visible="true"
first_knot="1"
last_knot="2"
helper_size="3"
stretch="1"
offset="0"
elastic="false"
from_original_width="true"
flip_vertical="false"
flip_horizontal="false"
lock_lenght="true"
lock_angle="false" />
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter1558">
<feFlood
flood-opacity="0.717647"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood1548" />
<feComposite
in="SourceGraphic"
in2="flood"
operator="in"
result="composite1"
id="feComposite1550" />
<feGaussianBlur
in="composite1"
stdDeviation="2"
result="blur"
id="feGaussianBlur1552" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset1554" />
<feComposite
in="offset"
in2="offset"
operator="atop"
result="composite2"
id="feComposite1556" />
</filter>
<style
id="style10992">.fa-secondary{opacity:.4}</style>
<style
id="style11044">.fa-secondary{opacity:.4}</style>
</defs>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#ff5252;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<g
id="g10858"
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
transform="matrix(0.6258936,0,0,0.6258936,-26.833537,225.53405)">
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="0"
y="0"
id="rect10694"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="4"
y="6"
id="rect10696"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="8"
y="6"
id="rect10698"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="12"
y="0"
id="rect10700"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="16"
y="0"
id="rect10702"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="20"
y="6"
id="rect10704"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="24"
y="6"
id="rect10706"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="28"
y="0"
id="rect10708"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="32"
y="0"
id="rect10710"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="36"
y="6"
id="rect10712"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="40"
y="6"
id="rect10714"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="44"
y="0"
id="rect10716"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="48"
y="0"
id="rect10718"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="52"
y="6"
id="rect10720"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="56"
y="6"
id="rect10722"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="60"
y="0"
id="rect10724"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="64"
y="0"
id="rect10726"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="68"
y="6"
id="rect10728"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="72"
y="6"
id="rect10730"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="76"
y="0"
id="rect10732"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="80"
y="0"
id="rect10734"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="84"
y="6"
id="rect10736"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="88"
y="0"
id="rect10738"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="92"
y="6"
id="rect10740"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="96"
y="0"
id="rect10742"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="100"
y="6"
id="rect10744"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="104"
y="0"
id="rect10746"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="108"
y="6"
id="rect10748"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="112"
y="0"
id="rect10750"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="116"
y="6"
id="rect10752"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="120"
y="0"
id="rect10754"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="124"
y="6"
id="rect10756"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="128"
y="0"
id="rect10758"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="132"
y="6"
id="rect10760"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="136"
y="0"
id="rect10762"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="140"
y="6"
id="rect10764"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="144"
y="0"
id="rect10766"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="148"
y="6"
id="rect10768"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="152"
y="6"
id="rect10770"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="156"
y="0"
id="rect10772"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="160"
y="0"
id="rect10774"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="164"
y="6"
id="rect10776"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="168"
y="0"
id="rect10778"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="172"
y="6"
id="rect10780"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="176"
y="0"
id="rect10782"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="180"
y="6"
id="rect10784"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="184"
y="0"
id="rect10786"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="188"
y="6"
id="rect10788"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="192"
y="0"
id="rect10790"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="196"
y="6"
id="rect10792"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="200"
y="0"
id="rect10794"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="204"
y="6"
id="rect10796"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="208"
y="0"
id="rect10798"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="212"
y="6"
id="rect10800"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="216"
y="0"
id="rect10802"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="220"
y="6"
id="rect10804"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="224"
y="0"
id="rect10806"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="228"
y="6"
id="rect10808"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="232"
y="6"
id="rect10810"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="236"
y="0"
id="rect10812"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="240"
y="0"
id="rect10814"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="244"
y="6"
id="rect10816"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="248"
y="6"
id="rect10818"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="252"
y="0"
id="rect10820"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="256"
y="0"
id="rect10822"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="260"
y="6"
id="rect10824"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="264"
y="6"
id="rect10826"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="268"
y="0"
id="rect10828"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="272"
y="0"
id="rect10830"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="276"
y="6"
id="rect10832"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="280"
y="6"
id="rect10834"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="284"
y="0"
id="rect10836"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="288"
y="0"
id="rect10838"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="292"
y="6"
id="rect10840"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="296"
y="6"
id="rect10842"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="300"
y="0"
id="rect10844"
width="2"
height="11" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="304"
y="0"
id="rect10846"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="308"
y="6"
id="rect10848"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="312"
y="0"
id="rect10850"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="316"
y="0"
id="rect10852"
width="2"
height="17" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="320"
y="6"
id="rect10854"
width="2"
height="5" />
<rect
style="fill:#d43d3d;fill-opacity:0.78431374;stroke-width:0.42272839"
x="324"
y="0"
id="rect10856"
width="2"
height="17" />
</g>
<g
id="g11061"
transform="matrix(0.0406407,0,0,0.0406407,83.044961,191.62426)"
style="fill:#512da8;fill-opacity:0.49803922;stroke-width:6.51030397">
<path
id="path11048"
class="fa-secondary"
d="M 116,352 H 76 a 12,12 0 0 0 -12,12 v 40 a 12,12 0 0 0 12,12 h 40 a 12,12 0 0 0 12,-12 v -40 a 12,12 0 0 0 -12,-12 z m 0,-96 H 76 a 12,12 0 0 0 -12,12 v 40 a 12,12 0 0 0 12,12 h 40 a 12,12 0 0 0 12,-12 v -40 a 12,12 0 0 0 -12,-12 z m 0,-96 H 76 a 12,12 0 0 0 -12,12 v 40 a 12,12 0 0 0 12,12 h 40 a 12,12 0 0 0 12,-12 v -40 a 12,12 0 0 0 -12,-12 z m 128,192 h -40 a 12,12 0 0 0 -12,12 v 40 a 12,12 0 0 0 12,12 h 40 a 12,12 0 0 0 12,-12 v -40 a 12,12 0 0 0 -12,-12 z m 0,-96 h -40 a 12,12 0 0 0 -12,12 v 40 a 12,12 0 0 0 12,12 h 40 a 12,12 0 0 0 12,-12 v -40 a 12,12 0 0 0 -12,-12 z m 0,-96 h -40 a 12,12 0 0 0 -12,12 v 40 a 12,12 0 0 0 12,12 h 40 a 12,12 0 0 0 12,-12 v -40 a 12,12 0 0 0 -12,-12 z m 320,192 h -40 a 12,12 0 0 0 -12,12 v 40 a 12,12 0 0 0 12,12 h 40 a 12,12 0 0 0 12,-12 v -40 a 12,12 0 0 0 -12,-12 z m 0,-96 h -40 a 12,12 0 0 0 -12,12 v 40 a 12,12 0 0 0 12,12 h 40 a 12,12 0 0 0 12,-12 v -40 a 12,12 0 0 0 -12,-12 z"
inkscape:connector-curvature="0"
style="opacity:0.4;fill:#512da8;fill-opacity:0.49803922;stroke-width:6.51030397" />
<path
id="path11050"
class="fa-primary"
d="M 616,192 H 480 V 24 A 24,24 0 0 0 456,0 H 312 A 24,24 0 0 0 288,24 V 96 H 224 V 16 A 16,16 0 0 0 208,0 H 192 A 16,16 0 0 0 176,16 V 96 H 112 V 16 A 16,16 0 0 0 96,0 H 80 A 16,16 0 0 0 64,16 V 96 H 24 A 24,24 0 0 0 0,120 v 360 a 32,32 0 0 0 32,32 h 576 a 32,32 0 0 0 32,-32 V 216 A 24,24 0 0 0 616,192 Z M 128,404 a 12,12 0 0 1 -12,12 H 76 A 12,12 0 0 1 64,404 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 0,-96 a 12,12 0 0 1 -12,12 H 76 A 12,12 0 0 1 64,308 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 0,-96 a 12,12 0 0 1 -12,12 H 76 A 12,12 0 0 1 64,212 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 128,192 a 12,12 0 0 1 -12,12 h -40 a 12,12 0 0 1 -12,-12 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 0,-96 a 12,12 0 0 1 -12,12 h -40 a 12,12 0 0 1 -12,-12 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 0,-96 a 12,12 0 0 1 -12,12 h -40 a 12,12 0 0 1 -12,-12 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 160,96 a 12,12 0 0 1 -12,12 h -40 a 12,12 0 0 1 -12,-12 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 0,-96 a 12,12 0 0 1 -12,12 h -40 a 12,12 0 0 1 -12,-12 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 0,-96 a 12,12 0 0 1 -12,12 H 364 A 12,12 0 0 1 352,116 V 76 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 160,288 a 12,12 0 0 1 -12,12 h -40 a 12,12 0 0 1 -12,-12 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z m 0,-96 a 12,12 0 0 1 -12,12 h -40 a 12,12 0 0 1 -12,-12 v -40 a 12,12 0 0 1 12,-12 h 40 a 12,12 0 0 1 12,12 z"
inkscape:connector-curvature="0"
style="fill:#512da8;fill-opacity:0.49803922;stroke-width:6.51030397" />
</g>
<g
id="g11133"
class="fa-group"
transform="matrix(0.04487476,0,0,0.04487476,24.384695,247.63731)"
style="fill:#512da8;fill-opacity:0.49803922;stroke-width:5.89603806">
<path
id="path11129"
d="M 288,72 64,269.85 V 480 a 32,32 0 0 0 32,32 h 384 a 32,32 0 0 0 32,-32 V 269.85 Z m 64,258.66 A 21.4,21.4 0 0 1 330.63,352 H 245.34 A 21.4,21.4 0 0 1 224,330.66 V 245.32 A 21.4,21.4 0 0 1 245.34,224 h 85.29 A 21.4,21.4 0 0 1 352,245.32 Z"
class="fa-secondary"
inkscape:connector-curvature="0"
style="opacity:0.4;fill:#512da8;fill-opacity:0.49803922;stroke-width:5.89603806" />
<path
id="path11131"
d="m 571.9,258.87 -21.41,23.81 c -1.8,2 -12.46,10.23 -22.59,1.22 L 288,72 48.12,283.9 c -9.3,8.37 -19.81,1.9 -22.59,-1.2 L 4.12,258.9 c -8.37,-9.3 -1.9,-19.81 1.2,-22.6 l 256,-226 C 267.59,4.61 279.57,0 288,0 c 8.43,0 20.44,4.61 26.72,10.3 L 416,99.67 V 48 a 16,16 0 0 1 16,-16 h 64 a 16,16 0 0 1 16,16 v 136.44 l 58.69,51.83 c 3.1,2.79 9.54,13.27 1.21,22.6 z"
class="fa-primary"
inkscape:connector-curvature="0"
style="fill:#512da8;fill-opacity:0.49803922;stroke-width:5.89603806" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="toolbox_log.svg">
<defs
id="defs2">
<style
id="style12744">.fa-secondary{opacity:.4}</style>
<style
id="style12852">.fa-secondary{opacity:.4}</style>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="-28.494899"
inkscape:cy="321.61508"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
borderlayer="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1920"
inkscape:window-height="1013"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#ffc107;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<g
id="g12761"
transform="matrix(0.0641645,0,0,0.0641645,21.560493,187.40273)"
style="fill:#ff5722;fill-opacity:0.49803922;stroke-width:4.12351561">
<path
id="path12748"
class="fa-secondary"
d="M 256,8 C 119,8 8,119 8,256 8,393 119,504 256,504 393,504 504,393 504,256 504,119 393,8 256,8 Z m 92.49,313 v 0 l -20,25 A 16,16 0 0 1 306,348.5 v 0 L 239,298.78 A 40,40 0 0 1 224,267.55 V 112 a 16,16 0 0 1 16,-16 h 32 a 16,16 0 0 1 16,16 v 144 l 58,42.5 a 16,16 0 0 1 2.49,22.5 z"
inkscape:connector-curvature="0"
style="opacity:0.4;fill:#ff5722;fill-opacity:0.49803922;stroke-width:4.12351561" />
<path
id="path12750"
class="fa-primary"
d="m 348.49,321 v 0 l -20,25 A 16,16 0 0 1 306,348.5 v 0 L 239,298.78 A 40,40 0 0 1 224,267.55 V 112 a 16,16 0 0 1 16,-16 h 32 a 16,16 0 0 1 16,16 v 144 l 58,42.5 a 16,16 0 0 1 2.49,22.5 z"
inkscape:connector-curvature="0"
style="fill:#ff5722;fill-opacity:0.49803922;stroke-width:4.12351561" />
</g>
<g
id="g12869"
transform="matrix(0.05281542,0,0,0.05281542,78.921428,232.26345)"
style="fill:#ff5722;fill-opacity:0.49803922;stroke-width:5.00958443">
<path
id="path12856"
class="fa-secondary"
d="m 512,224 v 64 a 16,16 0 0 1 -16,16 H 80 A 16,16 0 0 1 64,288 v -64 a 16,16 0 0 1 16,-16 h 416 a 16,16 0 0 1 16,16 z"
inkscape:connector-curvature="0"
style="opacity:0.4;fill:#ff5722;fill-opacity:0.49803922;stroke-width:5.00958443" />
<path
id="path12858"
class="fa-primary"
d="M 432,32 H 16 A 16,16 0 0 0 0,48 v 64 a 16,16 0 0 0 16,16 h 416 a 16,16 0 0 0 16,-16 V 48 A 16,16 0 0 0 432,32 Z m 0,352 H 16 A 16,16 0 0 0 0,400 v 64 a 16,16 0 0 0 16,16 h 416 a 16,16 0 0 0 16,-16 v -64 a 16,16 0 0 0 -16,-16 z"
inkscape:connector-curvature="0"
style="fill:#ff5722;fill-opacity:0.49803922;stroke-width:5.00958443" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,236 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="toolbox_scanner.svg">
<defs
id="defs2">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter1558">
<feFlood
flood-opacity="0.717647"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood1548" />
<feComposite
in="SourceGraphic"
in2="flood"
operator="in"
result="composite1"
id="feComposite1550" />
<feGaussianBlur
in="composite1"
stdDeviation="2"
result="blur"
id="feGaussianBlur1552" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset1554" />
<feComposite
in="offset"
in2="offset"
operator="atop"
result="composite2"
id="feComposite1556" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="43.142291"
inkscape:cy="322.6139"
inkscape:document-units="px"
inkscape:current-layer="g1656"
showgrid="false"
units="px"
borderlayer="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1920"
inkscape:window-height="1013"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#e1f5fe;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<g
id="g1590"
transform="matrix(0.41955654,-0.24213739,0.24223108,0.41939426,-42.31954,139.17989)"
style="stroke-width:2.06454396">
<g
transform="matrix(0,1,1,0,-170.07558,170.07557)"
style="stroke-width:2.06454396;filter:url(#filter1558)"
id="g1472">
<circle
style="opacity:1;fill:#0095ff;fill-opacity:0.58823529;stroke:none;stroke-width:2.62197089;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="path1460"
cx="47.813988"
cy="217.81396"
r="7.7485118" />
<circle
r="7.7485118"
cy="217.81396"
cx="70.719345"
id="circle1462"
style="opacity:1;fill:#ff0900;fill-opacity:0.58823529;stroke:none;stroke-width:2.62197089;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
<circle
style="opacity:1;fill:#ffef00;fill-opacity:0.58823529;stroke:none;stroke-width:2.62197089;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="circle1464"
cx="47.813988"
cy="240.87051"
r="7.7485118" />
<circle
r="7.7485118"
cy="240.87051"
cx="70.719345"
id="circle1466"
style="opacity:1;fill:#00ff00;fill-opacity:0.58823529;stroke:none;stroke-width:2.62197089;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
</g>
</g>
<g
transform="matrix(-0.28112418,-0.0754425,0.07519362,-0.28105749,100.63823,258.94479)"
id="g1612"
style="stroke-width:3.43634796">
<g
id="g1600"
style="stroke-width:3.43634796;filter:url(#filter1558)"
transform="matrix(0,1,1,0,-170.07558,170.07557)">
<circle
r="7.7485118"
cy="217.81396"
cx="47.813988"
id="circle1592"
style="opacity:1;fill:#0095ff;fill-opacity:0.58823529;stroke:none;stroke-width:4.36416197;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
<circle
style="opacity:1;fill:#ff0900;fill-opacity:0.58823529;stroke:none;stroke-width:4.36416197;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="circle1594"
cx="70.719345"
cy="217.81396"
r="7.7485118" />
<circle
r="7.7485118"
cy="240.87051"
cx="47.813988"
id="circle1596"
style="opacity:1;fill:#ffef00;fill-opacity:0.58823529;stroke:none;stroke-width:4.36416197;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
<circle
style="opacity:1;fill:#00ff00;fill-opacity:0.58823529;stroke:none;stroke-width:4.36416197;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="circle1598"
cx="70.719345"
cy="240.87051"
r="7.7485118" />
</g>
</g>
<g
style="stroke-width:2.50497127"
transform="matrix(0.12006389,0.38079162,-0.38061594,0.1201877,170.43155,209.05727)"
id="g1634">
<g
id="g1622"
style="stroke-width:2.50497127;filter:url(#filter1558)"
transform="matrix(0,1,1,0,-170.07558,170.07557)">
<circle
r="7.7485118"
cy="217.81396"
cx="47.813988"
id="circle1614"
style="opacity:1;fill:#0095ff;fill-opacity:0.58823529;stroke:none;stroke-width:3.18131375;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
<circle
style="opacity:1;fill:#ff0900;fill-opacity:0.58823529;stroke:none;stroke-width:3.18131375;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="circle1616"
cx="70.719345"
cy="217.81396"
r="7.7485118" />
<circle
r="7.7485118"
cy="240.87051"
cx="47.813988"
id="circle1618"
style="opacity:1;fill:#ffef00;fill-opacity:0.58823529;stroke:none;stroke-width:3.18131375;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
<circle
style="opacity:1;fill:#00ff00;fill-opacity:0.58823529;stroke:none;stroke-width:3.18131375;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="circle1620"
cx="70.719345"
cy="240.87051"
r="7.7485118" />
</g>
</g>
<g
style="stroke-width:3.43634796"
id="g1656"
transform="matrix(0.0754425,0.28112418,0.28105749,-0.07519362,-40.278995,280.17935)">
<g
transform="matrix(0,1,1,0,-170.07558,170.07557)"
style="stroke-width:3.43634796;filter:url(#filter1558)"
id="g1644">
<circle
style="opacity:1;fill:#0095ff;fill-opacity:0.58823529;stroke:none;stroke-width:4.36416197;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="circle1636"
cx="47.813988"
cy="217.81396"
r="7.7485118" />
<circle
r="7.7485118"
cy="217.81396"
cx="70.719345"
id="circle1638"
style="opacity:1;fill:#ff0900;fill-opacity:0.58823529;stroke:none;stroke-width:4.36416197;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
<circle
style="opacity:1;fill:#ffef00;fill-opacity:0.58823529;stroke:none;stroke-width:4.36416197;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="circle1640"
cx="47.813988"
cy="240.87051"
r="7.7485118" />
<circle
r="7.7485118"
cy="240.87051"
cx="70.719345"
id="circle1642"
style="opacity:1;fill:#00ff00;fill-opacity:0.58823529;stroke:none;stroke-width:4.36416197;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="toolbox_sharelist.svg">
<defs
id="defs2">
<style
id="style12744">.fa-secondary{opacity:.4}</style>
<style
id="style12852">.fa-secondary{opacity:.4}</style>
<style
id="style12923">.fa-secondary{opacity:.4}</style>
<style
id="style12975">.fa-secondary{opacity:.4}</style>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="102.47753"
inkscape:cy="263.58076"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
borderlayer="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1920"
inkscape:window-height="1013"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#4caf50;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<path
id="path13255"
d="m -91.210999,206.76137 h -12.898441 c -1.52593,0 -2.76395,1.23802 -2.76395,2.76395 v 23.95425 c 0,1.52593 1.23802,2.76395 2.76395,2.76395 h 12.898441 c 1.52593,0 2.76395,-1.23802 2.76395,-2.76395 v -23.95425 c 0,-1.52593 -1.23802,-2.76395 -2.76395,-2.76395 z m -6.44922,27.63952 c -1.01921,0 -1.84264,-0.82343 -1.84264,-1.84264 0,-1.0192 0.82343,-1.84263 1.84264,-1.84263 1.01921,0 1.84263,0.82343 1.84263,1.84263 0,1.01921 -0.82342,1.84264 -1.84263,1.84264 z"
inkscape:connector-curvature="0"
style="fill:#03a9f4;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path13266"
d="M 45.79673,185.71283 H 32.898286 c -1.525931,0 -2.763951,1.23802 -2.763951,2.76395 v 23.95425 c 0,1.52593 1.23802,2.76395 2.763951,2.76395 H 45.79673 c 1.52592,0 2.76394,-1.23802 2.76394,-2.76395 v -23.95425 c 0,-1.52593 -1.23802,-2.76395 -2.76394,-2.76395 z m -3.685273,26.02721 c 0,0.38004 -0.31095,0.69099 -0.69099,0.69099 h -4.145924 c -0.380043,0 -0.690988,-0.31095 -0.690988,-0.69099 v -0.46066 c 0,-0.38004 0.310945,-0.69098 0.690988,-0.69098 h 4.145924 c 0.38004,0 0.69099,0.31094 0.69099,0.69098 z"
inkscape:connector-curvature="0"
style="fill:#03a9f4;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path13459"
d="m -102.81315,203.08521 c -0.004,0.52005 0.42089,0.94162 0.9409,0.93462 l 7.835581,-0.1224 -18.151221,17.9081 0.22805,-7.83321 c 0.0141,-0.51993 -0.40174,-0.94996 -0.92186,-0.95342 l -2.14741,-0.0145 c -0.51272,-0.003 -0.9312,0.4094 -0.93471,0.9222 l -0.10286,13.60943 c -0.003,0.51272 0.40941,0.9312 0.9222,0.93472 l 13.60958,0.0805 c 0.51273,0.003 0.9312,-0.40942 0.93472,-0.92219 l 0.0145,-2.14741 c 0.004,-0.52005 -0.42089,-0.94163 -0.94091,-0.93463 l -7.83563,0.12247 18.151221,-17.90812 -0.228047,7.83321 c -0.01407,0.51994 0.401743,0.94998 0.921856,0.95343 l 2.147407,0.0145 c 0.512728,0.003 0.931202,-0.40941 0.934715,-0.92218 l 0.102912,-13.60949 c 0.0035,-0.51273 -0.409415,-0.93121 -0.922191,-0.93472 l -13.609643,-0.0805 c -0.51273,-0.003 -0.93121,0.4094 -0.93472,0.9222 z"
inkscape:connector-curvature="0"
style="fill:#00c853;fill-opacity:0.49803922;stroke-width:0.26458332" />
<g
id="g9729"
class="fa-group"
transform="matrix(0.06830728,0,0,0.06830728,78.812948,213.36748)"
style="stroke-width:3.87342834">
<path
id="path9725"
d="M 96,128 A 64,64 0 1 0 32,64 64,64 0 0 0 96,128 Z m 32,32 H 64 A 64,64 0 0 0 0,224 v 96 a 32,32 0 0 0 32,32 v 128 a 32,32 0 0 0 32,32 h 64 a 32,32 0 0 0 32,-32 v -96.39 l -50.36,-47.53 a 44.37,44.37 0 0 1 0,-64 L 181.77,204 c 1.65,-1.55 3.77,-2.31 5.61,-3.57 A 63.91,63.91 0 0 0 128,160 Z m 352,-32 a 64,64 0 1 0 -64,-64 64,64 0 0 0 64,64 z m 32,32 h -64 a 63.91,63.91 0 0 0 -59.38,40.42 c 1.84,1.27 4,2 5.62,3.59 l 72.12,68.06 a 44.37,44.37 0 0 1 0,64 L 416,383.62 V 480 a 32,32 0 0 0 32,32 h 64 a 32,32 0 0 0 32,-32 V 352 a 32,32 0 0 0 32,-32 v -96 a 64,64 0 0 0 -64,-64 z"
class="fa-secondary"
inkscape:connector-curvature="0"
style="opacity:1;fill:#02a9f3;fill-opacity:0.49803922;stroke-width:3.87342834" />
<path
id="path9727"
d="m 444.4,310.44 -72.12,68.07 A 12,12 0 0 1 352,369.77 V 333.63 H 224 v 36.14 a 12,12 0 0 1 -20.28,8.74 L 131.6,310.44 a 12.4,12.4 0 0 1 0,-17.47 l 72.12,-68.07 a 12,12 0 0 1 20.28,8.74 v 36 h 128 v -36 a 12,12 0 0 1 20.28,-8.74 L 444.4,293 a 12.4,12.4 0 0 1 0,17.44 z"
class="fa-primary"
inkscape:connector-curvature="0"
style="fill:#00c752;fill-opacity:0.49803922;stroke-width:3.87342834" />
</g>
<path
id="path9830"
d="m 53.482263,262.48395 h -1.317206 a 0.6586032,0.6586032 0 0 0 -0.658603,0.6586 v 4.61022 H 38.33439 v -13.17206 h 5.927428 a 0.6586032,0.6586032 0 0 0 0.658604,-0.65861 v -1.3172 a 0.6586032,0.6586032 0 0 0 -0.658604,-0.65861 h -6.586032 a 1.9758096,1.9758096 0 0 0 -1.975809,1.97581 v 14.48927 a 1.9758096,1.9758096 0 0 0 1.975809,1.97581 h 14.489271 a 1.9758096,1.9758096 0 0 0 1.975809,-1.97581 v -5.26882 a 0.6586032,0.6586032 0 0 0 -0.658603,-0.6586 z m 2.305113,-13.17207 h -5.268827 c -0.879647,0 -1.319265,1.06652 -0.699766,1.68767 l 1.470742,1.47074 -10.032583,10.02888 a 0.98790477,0.98790477 0 0 0 0,1.39953 l 0.933158,0.93152 a 0.98790477,0.98790477 0 0 0 1.399532,0 l 10.027644,-10.03053 1.470333,1.46869 c 0.617441,0.61743 1.687669,0.18523 1.687669,-0.69977 v -5.26882 a 0.98790477,0.98790477 0 0 0 -0.987902,-0.98791 z"
inkscape:connector-curvature="0"
style="fill:#19bf51;fill-opacity:0.74901961;stroke-width:0.26458332" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1,247 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="toolbox_weather.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
id="svg8"
version="1.1"
viewBox="0 0 132.29166 132.29167"
height="500"
width="500">
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="1013"
inkscape:window-width="1920"
inkscape:pagecheckerboard="true"
borderlayer="true"
units="px"
showgrid="false"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="342.53041"
inkscape:cx="3.3750531"
inkscape:zoom="0.98994949"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base" />
<defs
id="defs2">
<inkscape:path-effect
is_visible="true"
id="path-effect8593"
effect="spiro" />
<inkscape:path-effect
effect="spiro"
id="path-effect8582"
is_visible="true" />
<inkscape:path-effect
is_visible="true"
id="path-effect8578"
effect="spiro" />
<inkscape:path-effect
effect="spiro"
id="path-effect8574"
is_visible="true" />
<inkscape:path-effect
is_visible="true"
id="path-effect8570"
effect="spiro" />
<inkscape:path-effect
effect="spiro"
id="path-effect8566"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect8562"
is_visible="true" />
<inkscape:path-effect
effect="simplify"
id="path-effect8560"
is_visible="true"
steps="1"
threshold="0.00159091"
smooth_angles="360"
helper_size="0"
simplify_individual_paths="false"
simplify_just_coalesce="false"
simplifyindividualpaths="false"
simplifyJustCoalesce="false" />
<inkscape:path-effect
effect="spiro"
id="path-effect8556"
is_visible="true" />
<inkscape:path-effect
live_update="false"
vertical_mirror="false"
horizontal_mirror="true"
is_visible="true"
id="path-effect8425"
gridpoint32x33x34x35="-79.462173,46.000629"
gridpoint29x31="-8.549282,46.000629"
gridpoint28x30="-150.37506,46.000629"
gridpoint25x27="62.363609,46.000629"
gridpoint24x26="-221.28795,46.000629"
gridpoint22x23="-79.462173,87.416395"
gridpoint20x21="-79.462173,4.5848636"
gridpoint19="-8.549282,87.416395"
gridpoint18="-150.37506,87.416395"
gridpoint17="-8.549282,4.5848636"
gridpoint16="-150.37506,4.5848636"
gridpoint15="62.363609,87.416395"
gridpoint14="-221.28795,87.416395"
gridpoint13="62.363609,4.5848636"
gridpoint12="-221.28795,4.5848636"
gridpoint10x11="-79.462173,128.83216"
gridpoint8x9="-79.462173,-36.830902"
gridpoint7="-8.549282,128.83216"
gridpoint6="-150.37506,128.83216"
gridpoint5="-8.549282,-36.830902"
gridpoint4="-150.37506,-36.830902"
gridpoint3="62.363609,128.83216"
gridpoint2="-221.28795,128.83216"
gridpoint1="62.363609,-36.830902"
gridpoint0="-221.28795,-36.830902"
effect="lattice2" />
<inkscape:path-effect
bendpath1-nodetypes="cc"
bendpath2-nodetypes="cc"
bendpath4-nodetypes="cc"
bendpath4="M -181.256,-36.830902 -221.28795,128.83216"
bendpath3="M -221.28795,128.83216 H 62.363609"
bendpath2="M 13.589051,-36.830902 62.363609,128.83216"
bendpath1="M -221.28795,3.2010469 62.363609,-36.830902"
xx="true"
yy="true"
is_visible="true"
id="path-effect8423"
effect="envelope" />
<inkscape:path-effect
only_selected="false"
apply_with_weight="true"
apply_no_weight="true"
helper_size="0"
steps="2"
weight="33.333333"
is_visible="true"
id="path-effect8421"
effect="bspline" />
<inkscape:path-effect
vertical="false"
scale_y_rel="false"
prop_scale="1"
bendpath="M -221.28795,46.000629 H 62.363609"
is_visible="true"
id="path-effect8419"
effect="bend_path" />
<inkscape:path-effect
lock_angle="false"
lock_lenght="true"
flip_horizontal="false"
flip_vertical="false"
from_original_width="true"
elastic="false"
offset="0"
stretch="1"
helper_size="3"
last_knot="2"
first_knot="1"
is_visible="true"
id="path-effect4714"
end="62.363609,46.000629"
start="-221.28795,46.000629"
effect="transform_2pts" />
<filter
id="filter1558"
inkscape:label="Drop Shadow"
style="color-interpolation-filters:sRGB;">
<feFlood
id="feFlood1548"
result="flood"
flood-color="rgb(0,0,0)"
flood-opacity="0.717647" />
<feComposite
id="feComposite1550"
result="composite1"
operator="in"
in2="flood"
in="SourceGraphic" />
<feGaussianBlur
id="feGaussianBlur1552"
result="blur"
stdDeviation="2"
in="composite1" />
<feOffset
id="feOffset1554"
result="offset"
dy="0"
dx="0" />
<feComposite
id="feComposite1556"
result="composite2"
operator="atop"
in2="offset"
in="offset" />
</filter>
</defs>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(0,-164.70831)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<rect
y="164.7083"
x="0"
height="132.29166"
width="132.29167"
id="rect836"
style="opacity:1;fill:#2196f3;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385" />
<g
id="g8662"
class="fa-group"
transform="matrix(-0.05943309,0,0,0.05943309,54.278717,232.07571)"
style="fill:#37474f;fill-opacity:0.49803922;stroke-width:4.45178461">
<path
id="path8658"
d="M 161.6,288 H 96 A 96,96 0 0 1 96,96 c 0.6,0 1.1,0.2 1.6,0.2 C 105.3,41.9 151.6,0 208,0 A 111.61,111.61 0 0 1 312.5,72.7 95.07,95.07 0 0 1 352,64 a 96,96 0 0 1 96,96 93,93 0 0 1 -7,34.7 110.5,110.5 0 0 0 -31.6,11.8 A 142.54,142.54 0 0 0 304,160 c -73.9,0 -134.3,56.2 -142.4,128 z"
class="fa-secondary"
inkscape:connector-curvature="0"
style="opacity:0.4;fill:#37474f;fill-opacity:0.49803922;stroke-width:4.45178461" />
<path
id="path8660"
d="m 640,416 a 96,96 0 0 1 -96,96 H 224 a 96,96 0 0 1 -96,-96 c 0,-42.5 27.8,-78.2 66.1,-90.8 A 113.72,113.72 0 0 1 192,304 111.94,111.94 0 0 1 304,192 c 43.2,0 80.4,24.9 99,60.8 14.7,-17.5 36.4,-28.8 61,-28.8 a 80,80 0 0 1 80,80 78.09,78.09 0 0 1 -1.6,16.2 c 0.5,0 1,-0.2 1.6,-0.2 a 96,96 0 0 1 96,96 z"
class="fa-primary"
inkscape:connector-curvature="0"
style="fill:#37474f;fill-opacity:0.49803922;stroke-width:4.45178461" />
</g>
<path
id="path8838"
d="m 101.85647,203.49637 c -2.702182,0 -4.90377,2.20158 -4.90377,4.90377 0,2.70218 2.201588,4.90377 4.90377,4.90377 2.70218,0 4.90377,-2.20159 4.90377,-4.90377 0,-2.70219 -2.20159,-4.90377 -4.90377,-4.90377 z m 12.58634,4.11201 -4.83736,-2.41612 1.71121,-5.12853 c 0.22987,-0.69469 -0.42908,-1.35364 -1.11867,-1.11867 l -5.12853,1.71121 -2.42124,-4.84247 c -0.32691,-0.65383 -1.25659,-0.65383 -1.5835,0 l -2.41613,4.83737 -5.133634,-1.71122 c -0.694699,-0.22986 -1.353642,0.42909 -1.118671,1.11867 l 1.711211,5.12853 -4.837361,2.42123 c -0.653836,0.32692 -0.653836,1.25659 0,1.58351 l 4.837361,2.41613 -1.711211,5.13364 c -0.229864,0.69469 0.429079,1.35363 1.118671,1.11867 l 5.128527,-1.71122 2.416127,4.83737 c 0.32692,0.65383 1.25659,0.65383 1.58351,0 l 2.41612,-4.83737 5.12853,1.71122 c 0.6947,0.22986 1.35365,-0.42908 1.11868,-1.11867 l -1.71122,-5.12853 4.83737,-2.41613 c 0.66405,-0.33203 0.66405,-1.2617 0.0102,-1.58862 z m -7.96351,5.41458 c -2.54894,2.54894 -6.696717,2.54894 -9.245653,0 -2.548938,-2.54894 -2.548938,-6.69671 0,-9.24564 2.548936,-2.54894 6.696713,-2.54894 9.245653,0 2.54893,2.54893 2.54893,6.6967 0,9.24564 z"
inkscape:connector-curvature="0"
style="fill:#fffde7;fill-opacity:0.49803922;stroke-width:0.26458332" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="500" height="500" version="1.1" viewBox="0 0 132.29 132.29" xmlns="http://www.w3.org/2000/svg"><g transform="translate(0 -164.71)" fill-opacity=".49804"><rect y="164.71" width="132.29" height="132.29" fill="#2196f3"/><g fill="#1976d2"><rect x="-.75595" y="172.72" width="73.327" height="10.961" rx="1.3229" ry="1.3494"/><rect x="-.75595" y="193.89" width="73.327" height="10.961" rx="1.3229" ry="1.3494"/><rect x="-.75595" y="215.05" width="73.327" height="10.961" rx="1.3229" ry="1.3494"/><rect x="-.75595" y="236.22" width="73.327" height="10.961" rx="1.3229" ry="1.3494"/><rect x="-.75595" y="257.39" width="73.327" height="10.961" rx="1.3229" ry="1.3494"/><rect x="-.75595" y="278.55" width="73.327" height="10.961" rx="1.3229" ry="1.3494"/></g></g></svg>

After

Width:  |  Height:  |  Size: 811 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 135 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="500" height="500" version="1.1" viewBox="0 0 132.29 132.29" xmlns="http://www.w3.org/2000/svg"><defs><style>.fa-secondary{opacity:.4}</style></defs><g transform="translate(0 -164.71)" fill-opacity=".49804"><rect y="164.71" width="132.29" height="132.29" fill="#ffc107"/><g fill="#ffa000" stroke-width=".26458"><path d="m53.963 191.64-2.2824-2.2814c-1.1178-1.1178-2.9271-1.118-4.0451-4e-5l-13.449 13.361-1.0416 6.3137c-0.11335 0.6871 0.48172 1.2823 1.169 1.169l6.3136-1.0416 13.362-13.449c1.1157-1.1158 1.1264-2.9187-0.02665-4.0717zm-15.72 9.6774 7.2147-7.1679 3.7396 3.7396-7.1679 7.2147v-1.7524h-2.034v-2.034zm-1.6319 6.6161-1.1976-1.1976 0.51443-3.1182 0.7797-0.77471h1.7624v2.034h2.034v1.7624l-0.7747 0.77974zm16.059-13.54-0.0046 4e-3 -2.0353 2.0486-3.7303-3.7303 2.0486-2.0353 0.0046-4e-3c0.3876-0.38756 1.0161-0.39235 1.4084-4e-5l2.282 2.282c0.41859 0.41854 0.42118 1.0403 0.02664 1.4349z"/><path d="m94.157 212.4c-5.2014 0-9.417 3.4247-9.417 7.6513 0 1.8246 0.7872 3.4946 2.0968 4.8078-0.45982 1.854-1.9974 3.5056-2.0158 3.524-0.08093 0.0846-0.103 0.20967-0.05518 0.32002 0.04782 0.11036 0.15082 0.17657 0.26853 0.17657 2.4389 0 4.2671-1.1698 5.172-1.8908 1.2029 0.45245 2.5382 0.71363 3.9507 0.71363 5.2014 0 9.417-3.4247 9.417-7.6513 0-4.2266-4.2156-7.6513-9.417-7.6513z"/><path d="m88.389 268.52a4.6491 4.6491 0 0 0-4.6491 4.6491v6.7154a1.0331 1.0331 0 0 0 1.0331 1.0331h8.2651v-7.7485a4.6491 4.6491 0 0 0-4.6491-4.6491zm2.5828 5.6822a0.51657 0.51657 0 0 1-0.51657 0.51657h-4.1325a0.51657 0.51657 0 0 1-0.51657-0.51657v-1.0331a0.51657 0.51657 0 0 1 0.51657-0.51657h4.1325a0.51657 0.51657 0 0 1 0.51657 0.51657zm6.7154-5.6822h-6.0416c1.4645 1.0289 2.4256 2.7275 2.4256 4.6491v7.7485h7.232a1.0331 1.0331 0 0 0 1.0331-1.0331v-6.7154a4.6491 4.6491 0 0 0-4.6491-4.6491zm2.5828 6.7154a0.51657 0.51657 0 0 1-0.51658 0.51656h-1.0331a0.51657 0.51657 0 0 1-0.51657-0.51656v-1.5497h-1.808a0.25828 0.25828 0 0 1-0.25828-0.25829v-0.51657a0.25828 0.25828 0 0 1 0.25828-0.25828h3.3577a0.51657 0.51657 0 0 1 0.51658 0.51657z"/><path d="m37.798 247.64c-5.7629 0-10.432 4.6692-10.432 10.432 0 5.7629 4.6692 10.432 10.432 10.432 5.7629 0 10.432-4.6692 10.432-10.432 0-5.7629-4.6692-10.432-10.432-10.432zm-0.67304 13.797c0 0.37017-0.30287 0.67303-0.67304 0.67303h-2.0191c-0.37018 0-0.67305-0.30286-0.67305-0.67303v-6.7304c0-0.37018 0.30287-0.67304 0.67305-0.67304h2.0191c0.37017 0 0.67304 0.30286 0.67304 0.67304zm4.7113 0c0 0.37017-0.30287 0.67303-0.67304 0.67303h-2.0191c-0.37018 0-0.67304-0.30286-0.67304-0.67303v-6.7304c0-0.37018 0.30287-0.67304 0.67304-0.67304h2.0191c0.37018 0 0.67304 0.30286 0.67304 0.67304z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="500" height="500" version="1.1" viewBox="0 0 132.29 132.29" xmlns="http://www.w3.org/2000/svg"><g transform="translate(0 -164.71)"><rect y="164.71" width="132.29" height="132.29" fill="#607d8b" fill-opacity=".39216"/><g fill="#455a64" fill-opacity=".58824"><g stroke-width=".26458"><path d="m93.875 233.42h-9.2396c-5.101 0-9.2396 4.1386-9.2396 9.2396 0 5.101 4.1386 9.2396 9.2396 9.2396h9.2396c5.101 0 9.2396-4.1386 9.2396-9.2396 0-5.101-4.1386-9.2396-9.2396-9.2396zm0 16.169c-3.8306 0-6.9297-3.0991-6.9297-6.9297s3.0991-6.9297 6.9297-6.9297c3.8306 0 6.9297 3.0991 6.9297 6.9297s-3.0991 6.9297-6.9297 6.9297z"/><path d="m40.688 212.47h-8.705c-4.8077 0-8.7051 3.8974-8.7051 8.705s3.8974 8.705 8.7051 8.705h8.705c4.8077 0 8.705-3.8974 8.705-8.705s-3.8974-8.705-8.705-8.705zm-15.234 8.705c0-3.6082 2.92-6.5288 6.5288-6.5288 3.6082 0 6.5288 2.92 6.5288 6.5288 0 3.6082-2.92 6.5288-6.5288 6.5288-3.6082 0-6.5288-2.92-6.5288-6.5288zm15.234 6.5288h-2.9479c3.9311-3.4691 3.9301-9.5893 0-13.058h2.9479c3.6082 0 6.5288 2.92 6.5288 6.5288 0 3.6082-2.92 6.5288-6.5288 6.5288z"/><path d="m33.462 268.93c2.7626 0 5.0016-2.239 5.0016-5.0016s-2.239-5.0016-5.0016-5.0016c-2.7626 0-5.0016 2.239-5.0016 5.0016s2.239 5.0016 5.0016 5.0016zm3.5011 1.2504h-0.65255c-0.86746 0.39856-1.8326 0.62519-2.8485 0.62519-1.0159 0-1.9772-0.22663-2.8485-0.62519h-0.65255c-2.8993 0-5.2516 2.3523-5.2516 5.2516v1.6255c0 1.0355 0.8401 1.8756 1.8756 1.8756h13.754c1.0355 0 1.8756-0.84011 1.8756-1.8756v-1.6255c0-2.8993-2.3523-5.2516-5.2516-5.2516z"/></g><path d="m87.999 192.91c-1.3792 0.0887-2.6308 0.61396-3.3411 2.4854-0.08078 0.21347-0.27501 0.34307-0.50156 0.34307-0.38192 0-1.5628-0.9512-1.8993-1.1808 3.9e-4 2.8309 1.3042 5.3191 4.4005 5.3191 2.6078 0 4.4002-1.5047 4.4002-4.1317 0-0.10691-0.02235-0.20901-0.03335-0.31385zm9.9991-10.634c-0.52115 0-1.0096 0.23067-1.3823 0.56549-7.0269 6.2772-7.7581 6.4246-7.7581 8.2724 0 0.47096 0.11172 0.91992 0.30011 1.3304l2.1939 1.8281c0.24786 0.0619 0.50327 0.10416 0.76969 0.10416 2.1351 0 3.3727-1.5631 7.259-8.8162 0.2537-0.49331 0.47784-1.0261 0.47784-1.581 0-0.99383-0.89379-1.7034-1.8601-1.7034z" stroke-width=".26458"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="500" height="500" version="1.1" viewBox="0 0 132.29 132.29" xmlns="http://www.w3.org/2000/svg"><defs><style>.fa-secondary{opacity:.4}</style><style>.fa-secondary{opacity:.4}</style></defs><g transform="translate(0 -164.71)" fill-opacity=".49804"><rect y="164.71" width="132.29" height="132.29" fill="#ffc107"/><g transform="matrix(.064164 0 0 .064164 21.56 187.4)" fill="#ff5722" stroke-width="4.1235"><path class="fa-secondary" d="m256 8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm92.49 313-20 25a16 16 0 0 1-22.49 2.5l-67-49.72a40 40 0 0 1-15-31.23v-155.55a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v144l58 42.5a16 16 0 0 1 2.49 22.5z" opacity=".4"/><path class="fa-primary" d="m348.49 321-20 25a16 16 0 0 1-22.49 2.5l-67-49.72a40 40 0 0 1-15-31.23v-155.55a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v144l58 42.5a16 16 0 0 1 2.49 22.5z"/></g><g transform="matrix(.052815 0 0 .052815 78.921 232.26)" fill="#ff5722" stroke-width="5.0096"><path class="fa-secondary" d="m512 224v64a16 16 0 0 1-16 16h-416a16 16 0 0 1-16-16v-64a16 16 0 0 1 16-16h416a16 16 0 0 1 16 16z" opacity=".4"/><path class="fa-primary" d="m432 32h-416a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0 352h-416a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="500" height="500" version="1.1" viewBox="0 0 132.29 132.29" xmlns="http://www.w3.org/2000/svg"><defs><filter id="a" color-interpolation-filters="sRGB"><feFlood flood-color="rgb(0,0,0)" flood-opacity=".71765" result="flood"/><feComposite in="SourceGraphic" in2="flood" operator="in" result="composite1"/><feGaussianBlur in="composite1" result="blur" stdDeviation="2"/><feOffset dx="0" dy="0" result="offset"/><feComposite in="offset" in2="offset" operator="atop" result="composite2"/></filter></defs><g transform="translate(0 -164.71)"><rect y="164.71" width="132.29" height="132.29" fill="#e1f5fe" fill-opacity=".49804"/><g transform="matrix(.41956 -.24214 .24223 .41939 -42.32 139.18)" stroke-width="2.0645"><g transform="matrix(0 1 1 0 -170.08 170.08)" fill-opacity=".58824" filter="url(#a)" stroke-width="2.0645"><circle cx="47.814" cy="217.81" r="7.7485" fill="#0095ff"/><circle cx="70.719" cy="217.81" r="7.7485" fill="#ff0900"/><circle cx="47.814" cy="240.87" r="7.7485" fill="#ffef00"/><circle cx="70.719" cy="240.87" r="7.7485" fill="#0f0"/></g></g><g transform="matrix(-.28112 -.075442 .075194 -.28106 100.64 258.94)" stroke-width="3.4363"><g transform="matrix(0 1 1 0 -170.08 170.08)" fill-opacity=".58824" filter="url(#a)" stroke-width="3.4363"><circle cx="47.814" cy="217.81" r="7.7485" fill="#0095ff"/><circle cx="70.719" cy="217.81" r="7.7485" fill="#ff0900"/><circle cx="47.814" cy="240.87" r="7.7485" fill="#ffef00"/><circle cx="70.719" cy="240.87" r="7.7485" fill="#0f0"/></g></g><g transform="matrix(.12006 .38079 -.38062 .12019 170.43 209.06)" stroke-width="2.505"><g transform="matrix(0 1 1 0 -170.08 170.08)" fill-opacity=".58824" filter="url(#a)" stroke-width="2.505"><circle cx="47.814" cy="217.81" r="7.7485" fill="#0095ff"/><circle cx="70.719" cy="217.81" r="7.7485" fill="#ff0900"/><circle cx="47.814" cy="240.87" r="7.7485" fill="#ffef00"/><circle cx="70.719" cy="240.87" r="7.7485" fill="#0f0"/></g></g><g transform="matrix(.075442 .28112 .28106 -.075194 -40.279 280.18)" stroke-width="3.4363"><g transform="matrix(0 1 1 0 -170.08 170.08)" fill-opacity=".58824" filter="url(#a)" stroke-width="3.4363"><circle cx="47.814" cy="217.81" r="7.7485" fill="#0095ff"/><circle cx="70.719" cy="217.81" r="7.7485" fill="#ff0900"/><circle cx="47.814" cy="240.87" r="7.7485" fill="#ffef00"/><circle cx="70.719" cy="240.87" r="7.7485" fill="#0f0"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="toolbox_sharelist.svg">
<defs
id="defs2">
<style
id="style12744">.fa-secondary{opacity:.4}</style>
<style
id="style12852">.fa-secondary{opacity:.4}</style>
<style
id="style12923">.fa-secondary{opacity:.4}</style>
<style
id="style12975">.fa-secondary{opacity:.4}</style>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="102.47753"
inkscape:cy="263.58076"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
borderlayer="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1920"
inkscape:window-height="1013"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-164.70831)">
<rect
style="opacity:1;fill:#4caf50;fill-opacity:0.49803922;stroke:none;stroke-width:1.26999998;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99492385"
id="rect836"
width="132.29167"
height="132.29166"
x="0"
y="164.7083" />
<path
id="path13255"
d="m -91.210999,206.76137 h -12.898441 c -1.52593,0 -2.76395,1.23802 -2.76395,2.76395 v 23.95425 c 0,1.52593 1.23802,2.76395 2.76395,2.76395 h 12.898441 c 1.52593,0 2.76395,-1.23802 2.76395,-2.76395 v -23.95425 c 0,-1.52593 -1.23802,-2.76395 -2.76395,-2.76395 z m -6.44922,27.63952 c -1.01921,0 -1.84264,-0.82343 -1.84264,-1.84264 0,-1.0192 0.82343,-1.84263 1.84264,-1.84263 1.01921,0 1.84263,0.82343 1.84263,1.84263 0,1.01921 -0.82342,1.84264 -1.84263,1.84264 z"
inkscape:connector-curvature="0"
style="fill:#03a9f4;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path13266"
d="M 45.79673,185.71283 H 32.898286 c -1.525931,0 -2.763951,1.23802 -2.763951,2.76395 v 23.95425 c 0,1.52593 1.23802,2.76395 2.763951,2.76395 H 45.79673 c 1.52592,0 2.76394,-1.23802 2.76394,-2.76395 v -23.95425 c 0,-1.52593 -1.23802,-2.76395 -2.76394,-2.76395 z m -3.685273,26.02721 c 0,0.38004 -0.31095,0.69099 -0.69099,0.69099 h -4.145924 c -0.380043,0 -0.690988,-0.31095 -0.690988,-0.69099 v -0.46066 c 0,-0.38004 0.310945,-0.69098 0.690988,-0.69098 h 4.145924 c 0.38004,0 0.69099,0.31094 0.69099,0.69098 z"
inkscape:connector-curvature="0"
style="fill:#03a9f4;fill-opacity:0.49803922;stroke-width:0.26458332" />
<path
id="path13459"
d="m -102.81315,203.08521 c -0.004,0.52005 0.42089,0.94162 0.9409,0.93462 l 7.835581,-0.1224 -18.151221,17.9081 0.22805,-7.83321 c 0.0141,-0.51993 -0.40174,-0.94996 -0.92186,-0.95342 l -2.14741,-0.0145 c -0.51272,-0.003 -0.9312,0.4094 -0.93471,0.9222 l -0.10286,13.60943 c -0.003,0.51272 0.40941,0.9312 0.9222,0.93472 l 13.60958,0.0805 c 0.51273,0.003 0.9312,-0.40942 0.93472,-0.92219 l 0.0145,-2.14741 c 0.004,-0.52005 -0.42089,-0.94163 -0.94091,-0.93463 l -7.83563,0.12247 18.151221,-17.90812 -0.228047,7.83321 c -0.01407,0.51994 0.401743,0.94998 0.921856,0.95343 l 2.147407,0.0145 c 0.512728,0.003 0.931202,-0.40941 0.934715,-0.92218 l 0.102912,-13.60949 c 0.0035,-0.51273 -0.409415,-0.93121 -0.922191,-0.93472 l -13.609643,-0.0805 c -0.51273,-0.003 -0.93121,0.4094 -0.93472,0.9222 z"
inkscape:connector-curvature="0"
style="fill:#00c853;fill-opacity:0.49803922;stroke-width:0.26458332" />
<g
id="g9729"
class="fa-group"
transform="matrix(0.06830728,0,0,0.06830728,78.812948,213.36748)"
style="stroke-width:3.87342834">
<path
id="path9725"
d="M 96,128 A 64,64 0 1 0 32,64 64,64 0 0 0 96,128 Z m 32,32 H 64 A 64,64 0 0 0 0,224 v 96 a 32,32 0 0 0 32,32 v 128 a 32,32 0 0 0 32,32 h 64 a 32,32 0 0 0 32,-32 v -96.39 l -50.36,-47.53 a 44.37,44.37 0 0 1 0,-64 L 181.77,204 c 1.65,-1.55 3.77,-2.31 5.61,-3.57 A 63.91,63.91 0 0 0 128,160 Z m 352,-32 a 64,64 0 1 0 -64,-64 64,64 0 0 0 64,64 z m 32,32 h -64 a 63.91,63.91 0 0 0 -59.38,40.42 c 1.84,1.27 4,2 5.62,3.59 l 72.12,68.06 a 44.37,44.37 0 0 1 0,64 L 416,383.62 V 480 a 32,32 0 0 0 32,32 h 64 a 32,32 0 0 0 32,-32 V 352 a 32,32 0 0 0 32,-32 v -96 a 64,64 0 0 0 -64,-64 z"
class="fa-secondary"
inkscape:connector-curvature="0"
style="opacity:1;fill:#02a9f3;fill-opacity:0.49803922;stroke-width:3.87342834" />
<path
id="path9727"
d="m 444.4,310.44 -72.12,68.07 A 12,12 0 0 1 352,369.77 V 333.63 H 224 v 36.14 a 12,12 0 0 1 -20.28,8.74 L 131.6,310.44 a 12.4,12.4 0 0 1 0,-17.47 l 72.12,-68.07 a 12,12 0 0 1 20.28,8.74 v 36 h 128 v -36 a 12,12 0 0 1 20.28,-8.74 L 444.4,293 a 12.4,12.4 0 0 1 0,17.44 z"
class="fa-primary"
inkscape:connector-curvature="0"
style="fill:#00c752;fill-opacity:0.49803922;stroke-width:3.87342834" />
</g>
<path
id="path9830"
d="m 53.482263,262.48395 h -1.317206 a 0.6586032,0.6586032 0 0 0 -0.658603,0.6586 v 4.61022 H 38.33439 v -13.17206 h 5.927428 a 0.6586032,0.6586032 0 0 0 0.658604,-0.65861 v -1.3172 a 0.6586032,0.6586032 0 0 0 -0.658604,-0.65861 h -6.586032 a 1.9758096,1.9758096 0 0 0 -1.975809,1.97581 v 14.48927 a 1.9758096,1.9758096 0 0 0 1.975809,1.97581 h 14.489271 a 1.9758096,1.9758096 0 0 0 1.975809,-1.97581 v -5.26882 a 0.6586032,0.6586032 0 0 0 -0.658603,-0.6586 z m 2.305113,-13.17207 h -5.268827 c -0.879647,0 -1.319265,1.06652 -0.699766,1.68767 l 1.470742,1.47074 -10.032583,10.02888 a 0.98790477,0.98790477 0 0 0 0,1.39953 l 0.933158,0.93152 a 0.98790477,0.98790477 0 0 0 1.399532,0 l 10.027644,-10.03053 1.470333,1.46869 c 0.617441,0.61743 1.687669,0.18523 1.687669,-0.69977 v -5.26882 a 0.98790477,0.98790477 0 0 0 -0.987902,-0.98791 z"
inkscape:connector-curvature="0"
style="fill:#19bf51;fill-opacity:0.74901961;stroke-width:0.26458332" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="500" height="500" version="1.1" viewBox="0 0 132.29 132.29" xmlns="http://www.w3.org/2000/svg"><g transform="translate(0 -164.71)" fill-opacity=".49804"><rect y="164.71" width="132.29" height="132.29" fill="#2196f3"/><g class="fa-group" transform="matrix(-.059433 0 0 .059433 54.279 232.08)" fill="#37474f" stroke-width="4.4518"><path class="fa-secondary" d="m161.6 288h-65.6a96 96 0 0 1 0-192c0.6 0 1.1 0.2 1.6 0.2 7.7-54.3 54-96.2 110.4-96.2a111.61 111.61 0 0 1 104.5 72.7 95.07 95.07 0 0 1 39.5-8.7 96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8 142.54 142.54 0 0 0-105.4-46.5c-73.9 0-134.3 56.2-142.4 128z" opacity=".4"/><path class="fa-primary" d="m640 416a96 96 0 0 1-96 96h-320a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8a113.72 113.72 0 0 1-2.1-21.2 111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c0.5 0 1-0.2 1.6-0.2a96 96 0 0 1 96 96z"/></g><path d="m101.86 203.5c-2.7022 0-4.9038 2.2016-4.9038 4.9038 0 2.7022 2.2016 4.9038 4.9038 4.9038 2.7022 0 4.9038-2.2016 4.9038-4.9038 0-2.7022-2.2016-4.9038-4.9038-4.9038zm12.586 4.112-4.8374-2.4161 1.7112-5.1285c0.22987-0.69469-0.42908-1.3536-1.1187-1.1187l-5.1285 1.7112-2.4212-4.8425c-0.32691-0.65383-1.2566-0.65383-1.5835 0l-2.4161 4.8374-5.1336-1.7112c-0.6947-0.22986-1.3536 0.42909-1.1187 1.1187l1.7112 5.1285-4.8374 2.4212c-0.65384 0.32692-0.65384 1.2566 0 1.5835l4.8374 2.4161-1.7112 5.1336c-0.22986 0.69469 0.42908 1.3536 1.1187 1.1187l5.1285-1.7112 2.4161 4.8374c0.32692 0.65383 1.2566 0.65383 1.5835 0l2.4161-4.8374 5.1285 1.7112c0.6947 0.22986 1.3536-0.42908 1.1187-1.1187l-1.7112-5.1285 4.8374-2.4161c0.66405-0.33203 0.66405-1.2617 0.0102-1.5886zm-7.9635 5.4146c-2.5489 2.5489-6.6967 2.5489-9.2457 0-2.5489-2.5489-2.5489-6.6967 0-9.2456 2.5489-2.5489 6.6967-2.5489 9.2457 0 2.5489 2.5489 2.5489 6.6967 0 9.2456z" fill="#fffde7" stroke-width=".26458"/></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1 +1,61 @@
<svg class="svg-inline--fa fa-box-open fa-w-19" aria-hidden="true" data-icon="box-open" data-prefix="fal" focusable="false" role="img" version="1.1" viewBox="0 0 608 512" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><path d="M606.4 143.8L557.5 41c-2.7-5.6-8.1-9-13.9-9C543 32 304 64 304 64S65 32 64.4 32c-5.8 0-11.2 3.5-13.9 9L1.6 143.8c-4.4 9.2.3 20.2 9.6 23l49.5 14.9V393c0 14.7 9.5 27.5 23 31l205.4 54.1c13 3.4 23.7 1.5 29.5 0L524.2 424c13.5-3.6 23-16.4 23-31V181.7l49.5-14.9c9.4-2.8 14-13.8 9.7-23zM73 65.3l180.9 24.3-57.1 99.8-159.9-48.1 36.1-76zm18.2 125.6C208.3 226.1 200.5 224 203.6 224c5.4 0 10.5-2.9 13.3-7.9l71.9-125.5V445L91.2 393V190.9zM516.8 393l-197.6 52V90.5L391.1 216c2.9 5 8 7.9 13.3 7.9 3.1 0-5 2.1 112.4-33.1V393zM411.3 189.3l-57.1-99.8L535 65.3l36.1 76-159.8 48z" fill="none" stroke="#9e9e9e" stroke-dasharray="5, 5" stroke-width="10"/></svg> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
class="svg-inline--fa fa-box-open fa-w-19"
aria-hidden="true"
data-icon="box-open"
data-prefix="fal"
focusable="false"
role="img"
version="1.1"
viewBox="0 0 608 512"
id="svg879"
sodipodi:docname="box-open-dashed.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<defs
id="defs883" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1015"
id="namedview881"
showgrid="false"
height="1"
inkscape:zoom="1.3037281"
inkscape:cx="241.86287"
inkscape:cy="228.99761"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg879" />
<metadata
id="metadata875">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 598.3861,153.84429 550.9386,54.115498 c -2.61984,-5.432698 -7.85943,-8.731118 -13.48716,-8.731118 -0.58218,0 -232.4831,31.043977 -232.4831,31.043977 0,0 -231.900991,-31.043977 -232.48317,-31.043977 -5.627722,0 -10.867325,3.395437 -13.487128,8.731118 L 11.550524,153.84429 c -4.2693062,8.92517 0.291089,19.59653 9.314845,22.31285 l 48.029702,14.45485 v 204.98726 c 0,14.26083 9.217821,26.67839 22.31683,30.07381 L 290.51092,478.1568 c 12.61384,3.29842 22.99601,1.45522 28.62375,0 l 199.49302,-52.48374 c 13.09902,-3.49238 22.31682,-15.90999 22.31682,-30.07381 V 190.61199 l 48.0297,-14.45485 c 9.1208,-2.71632 13.58418,-13.38768 9.41189,-22.31285 z M 80.829724,77.68952 256.35645,101.26354 200.95251,198.08199 45.802004,151.41893 Z m 17.659403,121.84763 c 113.621753,34.14839 106.053493,32.11104 109.061403,32.11104 5.23958,0 10.18807,-2.81336 12.90492,-7.66393 l 69.76438,-121.7506 V 446.04572 L 98.489127,395.59925 Z M 511.44748,395.59925 319.71687,446.04572 V 102.13665 l 69.76429,121.75064 c 2.8139,4.85059 7.76242,7.66395 12.90497,7.66395 3.00794,0 -4.85147,2.03721 109.06135,-32.1111 z M 409.08115,197.98489 353.67719,101.16653 529.10691,77.68952 l 35.02771,73.72941 z"
id="path877"
inkscape:connector-curvature="0"
style="fill:none;stroke:#9e9e9e;stroke-width:10.00000095;stroke-dasharray:4.9999999, 4.9999999" />
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg7166"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="logo.svg"
inkscape:export-filename="/home/skylar/Documents/Projects/Assets/PackageHelper/logo.png"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008">
<defs
id="defs7160">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath7298">
<rect
style="fill:#000000;fill-opacity:1;stroke-width:0.49260601"
id="rect7300"
width="252.21428"
height="252.21428"
x="108.23811"
y="62.791664"
rx="14.778181"
ry="14.778181" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="-35.714286"
inkscape:cy="502.85714"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1015"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata7163">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-161.53332)">
<g
id="g7294"
transform="matrix(0.5371094,0,0,0.5371094,-58.135705,127.80733)"
clip-path="url(#clipPath7298)">
<g
inkscape:label="Layer 1"
id="layer1-7"
transform="translate(98.878579,27.365487)">
<rect
style="opacity:1;fill:#2196f3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect930"
width="270.93332"
height="270.93332"
x="2.9541011e-06"
y="26.06665" />
<path
sodipodi:type="star"
style="opacity:1;fill:#1976d2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path932"
sodipodi:sides="3"
sodipodi:cx="37.468803"
sodipodi:cy="275.44373"
sodipodi:r1="43.112488"
sodipodi:r2="21.556244"
sodipodi:arg1="0.52359878"
sodipodi:arg2="1.5707963"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 74.805313,296.99997 -74.67301934,0 37.33651034,-64.66873 z"
inkscape:transform-center-y="-25.330169"
transform="matrix(2.1686357,0,0,2.3501502,1.4459442,-410.066)" />
<path
transform="matrix(1.6940182,0,0,1.3303796,116.31992,-124.58106)"
inkscape:transform-center-y="-14.338981"
d="m 74.805313,296.99997 -74.67301934,0 37.33651034,-64.66873 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.5707963"
sodipodi:arg1="0.52359878"
sodipodi:r2="21.556244"
sodipodi:r1="43.112488"
sodipodi:cy="275.44373"
sodipodi:cx="37.468803"
sodipodi:sides="3"
id="path934"
style="opacity:0.5;fill:#1976d2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:type="star" />
<path
inkscape:connector-curvature="0"
style="fill:#acd6ff;fill-opacity:0.46733668;stroke-width:0.06555524"
d="m 203.06397,109.73197 c 0.26877,-0.70144 0.41955,-1.46844 0.41955,-2.26821 0,-3.47443 -2.81888,-6.29331 -6.2933,-6.29331 -1.29145,0 -2.49766,0.39334 -3.4941,1.062 -1.81588,-3.146647 -5.20509,-5.257527 -9.09252,-5.257527 -5.79508,0 -10.48885,4.693747 -10.48885,10.488837 0,0.177 0.007,0.354 0.0131,0.531 -3.67109,1.29144 -6.30641,4.79209 -6.30641,8.90895 0,5.21164 4.22832,9.43996 9.43996,9.43996 h 24.12433 c 4.63476,0 8.39108,-3.75631 8.39108,-8.39107 0,-4.05787 -2.88443,-7.44708 -6.71286,-8.22063 z"
id="path2" />
</g>
<g
inkscape:label="Layer 1"
id="layer1-3"
transform="matrix(0.82142858,0,0,0.82142858,178.59848,0.5726301)">
<g
transform="matrix(0.26458333,0,0,0.26458333,8.5989574,161.53331)"
class="fa-group"
id="g6">
<path
style="opacity:1;fill:#7ac0f8;fill-opacity:1"
inkscape:connector-curvature="0"
class="fa-secondary"
d="m 256,32 32,128 v 112 a 16,16 0 0 1 -16,16 H 176 A 16,16 0 0 1 160,272 V 160 L 192,32 Z"
id="path2-5" />
<path
style="fill:#f7fbff;fill-opacity:1"
inkscape:connector-curvature="0"
class="fa-primary"
d="m 446.7,160 c 0.4,-0.5 0.5,-0.7 0.9,-1.2 L 391.3,53.9 A 32,32 0 0 0 360.9,32 H 256 l 32,128 z M 160,160 192,32 H 87.1 A 32,32 0 0 0 56.7,53.9 L 0.4,158.8 c 0.4,0.5 0.5,0.7 0.9,1.2 z m 128,32 v 80 a 16,16 0 0 1 -16,16 H 176 A 16,16 0 0 1 160,272 V 192 H 0 v 256 a 32,32 0 0 0 32,32 h 384 a 32,32 0 0 0 32,-32 V 192 Z"
id="path4" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
class="svg-inline--fa fa-box-open fa-w-19"
aria-hidden="true"
data-icon="box-open"
data-prefix="fal"
focusable="false"
role="img"
version="1.1"
viewBox="0 0 608 512"
id="svg879"
sodipodi:docname="note-dashed.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<defs
id="defs883" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1015"
id="namedview881"
showgrid="false"
height="1"
inkscape:zoom="1.3037281"
inkscape:cx="241.86287"
inkscape:cy="228.99761"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg879" />
<metadata
id="metadata875">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 392,320 H 528 V 56.000003 c 0,-13.3 -10.7,-24 -24,-24 H 104 c -13.3,0 -24,10.7 -24,24 V 456 c 0,13.3 10.7,24 24,24 H 368 V 344 c 0,-13.2 10.8,-24 24,-24 z m 129,55 -98,98 c -4.5,4.5 -10.6,7 -17,7 h -6 V 352 h 128 v 6.1 c 0,6.3 -2.5,12.4 -7,16.9 z"
id="path2"
style="fill:none;stroke:#9e9e9e;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,108 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
function appendActivityLog(title, subtitle, content, icon, timestamp) {
if (typeof timestamp == "undefined") {
timestamp = time();
}
let entry = {
title: title,
subtitle: subtitle,
content: content,
icon: icon,
timestamp: timestamp
};
let log = getStorage("activitylog");
if (log == null) {
log = [];
} else {
try {
log = JSON.parse(log);
} catch (ex) {
log = [];
}
}
let pushed = false;
let datestr = formatTimestamp("Y-m-d", timestamp);
for (var i = 0; i < log.length; i++) {
if (formatTimestamp("Y-m-d", log[i].date) == datestr) {
log[i].entries.push(entry);
pushed = true;
break;
}
}
if (!pushed) {
log.push({
date: timestamp,
entries: [
entry
]
});
}
console.log("Added activity log entry", entry);
console.log(log);
setStorage("activitylog", JSON.stringify(log));
// Trim the log soon but don't block for it
setTimeout(trimActivityLog, 100);
}
function clearActivityLog() {
setStorage("activitylog", "[]");
}
function trimActivityLog() {
let log = JSON.parse(getStorage("activitylog"));
log.sort(function (x, y) {
if (x.date < y.date) {
return 1;
} else if (x.date > y.date) {
return -1;
}
return 0;
});
let entries = 0;
let allowed = SETTINGS.activitylog_maxlength;
let newlog = [];
for (var i = 0; i < log.length; i++) {
let logdate = {
date: log[i].date,
entries: []
};
for (var j = 0; j < log[i].entries.length; j++) {
if (entries < allowed) {
logdate.entries.push(log[i].entries[j]);
}
entries++;
}
if (logdate.entries.length > 0) {
newlog.push(logdate);
}
}
if (entries - allowed > 0) {
newlog[newlog.length - 1].entries.push({
title: "Log Trimmed",
subtitle: "",
content: (entries - allowed) + " older " + ((entries - allowed) == 1 ? "entry was" : "entries were") + " removed from the log.",
icon: "fas fa-cut",
timestamp: newlog[newlog.length - 1].date
});
}
console.log(log);
console.log(newlog);
setStorage("activitylog", JSON.stringify(newlog));
}

View File

@ -4,7 +4,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
$("#addpackagebtn").click(function () { $(".addpackagebtn").click(function () {
if ($("input[name=number]").val().trim() == "") { if ($("input[name=number]").val().trim() == "") {
playSound("error"); playSound("error");
app.toast.show({ app.toast.show({
@ -35,18 +35,34 @@ $("#addpackagebtn").click(function () {
}); });
return; return;
} }
if ($("input[name=zipcode]").val().trim() == "") {
playSound("error");
app.toast.show({
text: "Please fill in a ZIP code.",
position: "bottom",
destroyOnClose: true,
closeTimeout: 1000 * 10
});
return;
}
// Save city/state if changed // Save city/state if changed
if (localStorage.getItem("citystate") != $("input[name=citystate]").val().trim()) { if (getStorage("citystate") != $("input[name=citystate]").val().trim()) {
localStorage.setItem("citystate", $("input[name=citystate]").val().trim()); setStorage("citystate", $("input[name=citystate]").val().trim());
}
if (getStorage("zipcode") != $("input[name=zipcode]").val().trim()) {
setStorage("zipcode", $("input[name=zipcode]").val().trim());
} }
var address = ($("input[name=number]").val() + " " + $("input[name=street]").val()).toUpperCase(); var address = ($("input[name=number]").val() + " " + $("input[name=street]").val()).toUpperCase();
$("#no-history").addClass("display-none"); $("#no-history").addClass("display-none");
addPackageByAddress( addPackageByAddress(
$("input[name=number]").val().toUpperCase(), $("input[name=number]").val().toUpperCase(),
$("input[name=unit]").val().toUpperCase(),
$("input[name=street]").val().toUpperCase(), $("input[name=street]").val().toUpperCase(),
$("input[name=citystate]").val().toUpperCase(), $("input[name=citystate]").val().toUpperCase(),
$("input[name=zipcode]").val().toUpperCase(),
$("input[name=itemtype]:checked").val(), $("input[name=itemtype]:checked").val(),
function (ids) { function (ids) {
var packageObj = getPackage(ids.packageID); var packageObj = getPackage(ids.packageID);
@ -62,12 +78,13 @@ $("#addpackagebtn").click(function () {
+ ' </div>' + ' </div>'
+ ' </div>' + ' </div>'
+ '</li>'); + '</li>');
$("#tap-to-remove-history-prompt").removeClass("display-none");
}); });
}); });
// Remove any pre-existing click handlers from the history list, // Remove any pre-existing click handlers from the history list,
// otherwise the user will see a number of confirm prompts equal to the number // otherwise the user will see a number of confirm prompts equal to the number
// of times they've opened the manage page // of times they've opened the add items page
$(".view-main").off("click", "#historylist .history-list-item"); $(".view-main").off("click", "#historylist .history-list-item");
$(".view-main").on("click", "#historylist .history-list-item", function () { $(".view-main").on("click", "#historylist .history-list-item", function () {
@ -77,11 +94,55 @@ $(".view-main").on("click", "#historylist .history-list-item", function () {
$('#historylist .history-list-item[data-package="' + id + '"]').remove(); $('#historylist .history-list-item[data-package="' + id + '"]').remove();
if ($('#historylist .history-list-item').length == 0) { if ($('#historylist .history-list-item').length == 0) {
$("#no-history").removeClass("display-none"); $("#no-history").removeClass("display-none");
$("#tap-to-remove-history-prompt").addClass("display-none");
} }
}); });
}); });
// Restore user's last entered city/state combo document.getElementById("housenumberinput").onfocus = function () {
if (localStorage.getItem("citystate") != null) { document.getElementById("housenumberinput").value = "";
$("input[name=citystate]").val(localStorage.getItem("citystate"));
} }
document.getElementById("unitinput").onfocus = function () {
document.getElementById("unitinput").value = "";
}
// Restore user's last entered city/state combo
if (inStorage("citystate")) {
$("input[name=citystate]").val(getStorage("citystate").replace(/\s*[0-9]{5}$/, ""));
}
if (inStorage("zipcode") && getStorage("zipcode").trim() != "") {
$("input[name=zipcode]").val(getStorage("zipcode"));
} else {
if (inStorage("citystate") && /^.+ [0-9]{5}$/.test(getStorage("citystate"))) {
$("input[name=zipcode]").val(getStorage("citystate").split(" ").pop());
}
}
function toggleLettersInAddressNumber() {
if ($("#address-has-letters-checkbox").prop("checked")) {
// disallow
$("#address-has-letters-checkbox").prop("checked", false);
$("#housenumberinput").attr("type", "number");
$("#housenumberinput").attr("placeholder", "1234");
} else {
// allow
$("#address-has-letters-checkbox").prop("checked", true);
$("#housenumberinput").attr("type", "text");
$("#housenumberinput").attr("placeholder", "1A2B3");
}
}
function setTabSwipable() {
var page = $(".page[data-name=add]");
// If the page has grown larger, refresh to disable swiping tabs
if (page.width() >= 768 && $(".tabs-swipeable-wrap")[0]) {
router.refreshPage();
}
}
$(window).on('resize', setTabSwipable);
setTabSwipable();

View File

@ -7,15 +7,15 @@
var sfx = {}; var sfx = {};
function initSFX() { function initSFX() {
if (localStorage.getItem("alertsound") == null) { if (getStorage("alertsound") == null) {
localStorage.setItem("alertsound", "sonar"); setStorage("alertsound", "sonar");
} }
if (localStorage.getItem("alertvolume") == null) { if (getStorage("alertvolume") == null) {
localStorage.setItem("alertvolume", 100); setStorage("alertvolume", 100);
} }
var alertNoiseFile = SETTINGS.alertsounds[localStorage.getItem("alertsound")].file; var alertNoiseFile = SETTINGS.alertsounds[getStorage("alertsound")].file;
var alertVolume = localStorage.getItem("alertvolume"); var alertVolume = getStorage("alertvolume");
sfx = { sfx = {
"alert": new Audio("assets/audio/" + alertNoiseFile), "alert": new Audio("assets/audio/" + alertNoiseFile),

View File

@ -7,12 +7,12 @@
var autofillDB = {}; var autofillDB = {};
var autofillStreetDB = []; var autofillStreetDB = [];
if (localStorage.getItem("autofill_db") != null) { if (getStorage("autofill_db") != null) {
autofillDB = JSON.parse(localStorage.getItem("autofill_db")); autofillDB = JSON.parse(getStorage("autofill_db"));
} }
if (localStorage.getItem("autofill_streetdb") != null) { if (getStorage("autofill_streetdb") != null) {
autofillStreetDB = JSON.parse(localStorage.getItem("autofill_streetdb")); autofillStreetDB = JSON.parse(getStorage("autofill_streetdb"));
} }
function addressToNumberAndStreet(address) { function addressToNumberAndStreet(address) {
@ -54,7 +54,7 @@ function addAutofillEntry(address) {
} }
} }
localStorage.setItem("autofill_db", JSON.stringify(autofillDB)); setStorage("autofill_db", JSON.stringify(autofillDB));
var found = false; var found = false;
@ -70,7 +70,7 @@ function addAutofillEntry(address) {
autofillStreetDB.push([street, 1]); autofillStreetDB.push([street, 1]);
} }
localStorage.setItem("autofill_streetdb", JSON.stringify(autofillStreetDB)); setStorage("autofill_streetdb", JSON.stringify(autofillStreetDB));
} }
function searchAutofill(q, number) { function searchAutofill(q, number) {
@ -133,3 +133,20 @@ function searchAutofillByStreet(q) {
return streets; return streets;
} }
function setupStreetAutofill(streetBox, numberBox) {
app.autocomplete.create({
inputEl: streetBox,
openIn: 'dropdown',
/* If we set valueProperty to "id" then input value on select will be set according to this property */
valueProperty: 'name', //object's "value" property name
textProperty: 'name', //object's "text" property name
limit: 10, //limit to 10 results
typeahead: true,
dropdownPlaceholderText: '',
source: function (query, render) {
var streets = searchAutofill(query, $(numberBox).val());
render(streets);
}
});
}

View File

@ -10,14 +10,10 @@ $(".view-main").on("click", "#addresslist .package-list-item .deliver-btn", func
loadPackageList(); loadPackageList();
}); });
// Open geo: url $(".view-main").on("click", "#addresslist .package-list-item .delete-btn", function () {
$(".view-main").on("click", "#addresslist .package-list-item .directions-btn", function () { var id = $(this).parents(".package-list-item").data("packageid");
window.open($(this).attr("href"), "_system"); console.log("Info", "Deleting package", id);
}); deletePackage(id);
$(".view-main").on("swipeout:delete", "#addresslist .package-list-item", function () {
console.log("Info", "Deleting package", $(this).data("packageid"));
deletePackage($(this).data("packageid"));
}); });
// Searchbar is setup in routes.js, this is for forcing a wider scope // Searchbar is setup in routes.js, this is for forcing a wider scope
@ -41,13 +37,13 @@ function updateDistances(latitude, longitude) {
function loadPackageList(sortType) { function loadPackageList(sortType) {
// If no sort type is specified, use the saved pref or a default one // If no sort type is specified, use the saved pref or a default one
if (typeof sortType == 'undefined') { if (typeof sortType == 'undefined') {
if (localStorage.getItem("sorttype") == null) { if (getStorage("sorttype") == null) {
localStorage.setItem("sorttype", "distance_asc"); setStorage("sorttype", "distance_asc");
} }
sortType = localStorage.getItem("sorttype"); sortType = getStorage("sorttype");
} else { } else {
// save the current sorting order so it'll stay consistent next time the list is refreshed // save the current sorting order so it'll stay consistent next time the list is refreshed
localStorage.setItem("sorttype", sortType); setStorage("sorttype", sortType);
} }
updateDistances(userPosition.coords.latitude, userPosition.coords.longitude); updateDistances(userPosition.coords.latitude, userPosition.coords.longitude);
@ -92,7 +88,7 @@ function loadPackageList(sortType) {
}); });
$("#addresslist").html(""); $("#addresslist ul").html("");
if (packages.length == 0) { if (packages.length == 0) {
$("#no-packages-display").removeClass("display-none"); $("#no-packages-display").removeClass("display-none");
@ -103,37 +99,39 @@ function loadPackageList(sortType) {
for (var i = 0; i < sortedPackages.length; i++) { for (var i = 0; i < sortedPackages.length; i++) {
for (var j = 0; j < sortedPackages[i].value.items.length; j++) { for (var j = 0; j < sortedPackages[i].value.items.length; j++) {
var item = sortedPackages[i].value.items[j]; var item = sortedPackages[i].value.items[j];
var icon = getIconForType(item.type); var icon1 = getIconForType(item.type);
var icon2 = "";
var classes = ""; var classes = "";
var delivered = false; var delivered = false;
if (item.delivered) { if (item.delivered) {
delivered = true; delivered = true;
icon = "far fa-check-circle"; icon2 = icon1;
icon1 = "far fa-check-circle fa-fw";
classes = "text-color-green"; classes = "text-color-green";
} else if (typeof sortedPackages[i].value.distance != 'undefined' && sortedPackages[i].value.distance * 1 < localStorage.getItem("alertradius") * 1) { } else if (typeof sortedPackages[i].value.distance != 'undefined' && sortedPackages[i].value.distance * 1 < getStorage("alertradius") * 1) {
classes = "text-color-deeporange"; classes = "text-color-deeporange";
} }
$("#addresslist").append( $("#addresslist ul").append(
'<li class="swipeout package-list-item" data-packageid="' + item.id + '" data-coordid=' + sortedPackages[i].value.id + '>' '<li class="package-list-item accordion-item" data-packageid="' + item.id + '" data-coordid=' + sortedPackages[i].value.id + '>'
+ '<div class="item-content swipeout-content ' + classes + '" data-packageid="' + item.id + '" data-latitude="' + sortedPackages[i].value.coords[0] + '" data-longitude="' + sortedPackages[i].value.coords[1] + '">' + '<div class="item-content item-link ' + classes + '" data-packageid="' + item.id + '" data-latitude="' + sortedPackages[i].value.coords[0] + '" data-longitude="' + sortedPackages[i].value.coords[1] + '">'
+ ' <div class="item-media ' + classes + '">'
+ ' <i class="icon ' + icon + '"></i>'
+ ' </div>'
+ ' <div class="item-inner">' + ' <div class="item-inner">'
+ ' <div class="item-title">' + ' <div class="item-title">'
+ ' <i class="' + icon1 + '"></i>'
+ ' ' + item.address + ' ' + item.address
+ ' </div>' + ' </div>'
+ ' <div class="item-footer">' + ' <div class="item-footer">'
+ ' <i class="' + icon2 + '"></i>'
+ ' <span class="distance">' + (typeof sortedPackages[i].value.distance != 'undefined' ? getDisplayDistance(sortedPackages[i].value.distance) : '...') + '</span>' + ' <span class="distance">' + (typeof sortedPackages[i].value.distance != 'undefined' ? getDisplayDistance(sortedPackages[i].value.distance) : '...') + '</span>'
+ ' </div>' + ' </div>'
+ ' </div>' + ' </div>'
+ '</div>' + '</div>'
+ '<div class="swipeout-actions-left">' + '<div class="accordion-item-content">'
+ ' <a href="#" class="color-green deliver-btn" data-packageid="' + item.id + '">' + (delivered ? "<i class='fas fa-undo'></i>&nbsp; Undeliver" : "<i class='fas fa-check'></i>&nbsp; Deliver") + '</a>' + ' <div class="row padding-horizontal">'
+ ' <a href="geo:' + sortedPackages[i].value.coords[0] + ',' + sortedPackages[i].value.coords[1] + '" class="color-blue directions-btn"><i class="material-icons">directions</i></a>' + ' <a href="#" class="col deliver-btn button button-outline color-green" data-packageid="' + item.id + '">' + (delivered ? "<i class='fas fa-undo'></i> Undeliver" : "<i class='fas fa-check'></i>&nbsp; Deliver") + '</a>'
+ '</div>' + ' <a href="geo:' + sortedPackages[i].value.coords[0] + ',' + sortedPackages[i].value.coords[1] + '" class="col geolink directions-btn button button-outline"><i class="fas fa-directions"></i> Directions</a>'
+ '<div class="swipeout-actions-right">' + ' <a href="#" class="col delete-btn color-red button button-outline"><i class="fas fa-trash"></i> Delete</a>'
+ ' <a href="#" class="swipeout-delete"><i class="material-icons">delete</i>&nbsp; Delete</a>' + ' </div>'
+ ' </div>'
+ '</div>' + '</div>'
+ '</li>' + '</li>'
); );
@ -156,8 +154,11 @@ function confirmDeleteAllPackages() {
"Clear Packages", "Clear Packages",
function () { function () {
// clear // clear
let count = countPackages();
let remaining = countRemainingPackages();
packages = []; packages = [];
localStorage.setItem("packages", JSON.stringify(packages)); setStorage("packages", JSON.stringify(packages));
appendActivityLog("Cleared List", count + " " + (count != 1 ? "items" : "item") + " removed.", (remaining > 0 ? remaining + " " + (remaining != 1 ? "were" : "was") + " not delivered." : ""), "fas fa-trash");
loadPackageList(); loadPackageList();
if (map != null) { if (map != null) {
map.updatePackageLayer(packages); map.updatePackageLayer(packages);

View File

@ -11,13 +11,14 @@ var userPosition = {
latitude: 0.0, latitude: 0.0,
longitude: 0.0, longitude: 0.0,
accuracy: 999999 accuracy: 999999
} },
updated: 0
}; };
// Preload last known location while GPS warms up // Preload last known location while GPS warms up
if (localStorage.getItem("user_latitude") != null && localStorage.getItem("user_longitude") != null) { if (getStorage("user_latitude") != null && getStorage("user_longitude") != null) {
userPosition.coords.latitude = localStorage.getItem("user_latitude"); userPosition.coords.latitude = getStorage("user_latitude");
userPosition.coords.longitude = localStorage.getItem("user_longitude"); userPosition.coords.longitude = getStorage("user_longitude");
} }
// Request the user's IP geolocation as a poor substitute for an actual location // Request the user's IP geolocation as a poor substitute for an actual location
@ -31,6 +32,7 @@ $.ajax({
userPosition.coords.latitude = resp.location.latitude; userPosition.coords.latitude = resp.location.latitude;
userPosition.coords.longitude = resp.location.longitude; userPosition.coords.longitude = resp.location.longitude;
userPosition.coords.accuracy = 99999; userPosition.coords.accuracy = 99999;
userPosition.updated = time();
} }
} }
}); });
@ -41,16 +43,17 @@ var mapLocationControlStarted = false;
if ("geolocation" in navigator) { if ("geolocation" in navigator) {
navigator.geolocation.watchPosition(function (position) { navigator.geolocation.watchPosition(function (position) {
userPosition = position; userPosition.coords = position.coords;
localStorage.setItem("user_latitude", userPosition.coords.latitude); userPosition.updated = time();
localStorage.setItem("user_longitude", userPosition.coords.longitude); setStorage("user_latitude", userPosition.coords.latitude);
setStorage("user_longitude", userPosition.coords.longitude);
if (mapLocationControlStarted) { if (mapLocationControlStarted) {
// Don't refresh at an interval less than ten seconds // Don't refresh at an interval less than ten seconds
var currentTimestamp = Math.floor(Date.now() / 1000); var currentTimestamp = Math.floor(Date.now() / 1000);
if (lastGpsUpdateTimestamp < (currentTimestamp - 10)) { if (lastGpsUpdateTimestamp < (currentTimestamp - 10)) {
updateDistances(position.coords.latitude, position.coords.longitude); updateDistances(position.coords.latitude, position.coords.longitude);
var alertinterval = localStorage.getItem("alertinterval"); var alertinterval = getStorage("alertinterval");
if (alertinterval == null) { if (alertinterval == null) {
alertinterval = 30; alertinterval = 30;
} else { } else {
@ -59,7 +62,7 @@ if ("geolocation" in navigator) {
lastGpsUpdateTimestamp = currentTimestamp; lastGpsUpdateTimestamp = currentTimestamp;
for (var i = 0; i < packages.length; i++) { for (var i = 0; i < packages.length; i++) {
if (packages[i].distance * 1 < localStorage.getItem("alertradius") * 1) { if (packages[i].distance * 1 < getStorage("alertradius") * 1) {
if (packages[i].lastAlert > currentTimestamp - alertinterval) { if (packages[i].lastAlert > currentTimestamp - alertinterval) {
continue; continue;
@ -178,7 +181,7 @@ function getDisplayDistance(meters, space) {
if (typeof space == 'undefined') { if (typeof space == 'undefined') {
space = true; space = true;
} }
var units = localStorage.getItem("units"); var units = getStorage("units");
if (units == null) { if (units == null) {
units = "metric"; units = "metric";

37
www/assets/js/login.js Normal file
View File

@ -0,0 +1,37 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
$(window).on("message", function (e) {
var data = e.originalEvent.data;
var parts = data.split("&");
var u = "";
var p = "";
for (var i = 0; i < parts.length; i++) {
if (parts[i].startsWith("user:")) {
u = parts[i].replace("user:", "");
} else if (parts[i].startsWith("password:")) {
p = parts[i].replace("password:", "");
}
}
if (u != "" && p != "") {
setStorage("username", u);
setStorage("password", p);
// Reset last change so we won't overwrite server settings
setStorage("lastchange", 0, true);
app.toast.show({
text: "You are now logged in!",
position: "bottom",
destroyOnClose: true,
closeTimeout: 1000 * 3
});
restartApplication();
} else {
app.dialog.alert("There was a problem. Try again later.", "Error");
}
});

View File

@ -28,7 +28,8 @@ var app = new Framework7({
}); });
var mainView = app.views.create('.view-main', { var mainView = app.views.create('.view-main', {
url: "/" url: "/",
animate: true
}); });
var router = mainView.router; var router = mainView.router;
@ -37,18 +38,6 @@ function restartApplication() {
window.location = "index.html"; window.location = "index.html";
} }
/**
* Generate a UUID.
* From https://stackoverflow.com/a/2117523
* @returns {String}
*/
function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
router.on("pageInit", function (pagedata) { router.on("pageInit", function (pagedata) {
pagedata.$el.find('script').each(function (el) { pagedata.$el.find('script').each(function (el) {
@ -60,6 +49,42 @@ router.on("pageInit", function (pagedata) {
eval($$(this).text()); eval($$(this).text());
} }
}); });
// Stop text selection from popping a system toolbar even after changing pages
if (window.getSelection) {
window.getSelection().removeAllRanges();
} else if (document.selection) {
document.selection.empty();
}
});
/**
* Perform back button behavior.
* Call this function whenever the equivalent to the Android back button is pressed.
* @returns {undefined}
*/
function handleBackButton() {
// Close map sheet if it's open
if ($(".sheet-modal").hasClass("modal-in")) {
app.sheet.close();
} else if ($(".searchbar-enabled")[0]) {
app.searchbar.disable();
} else if (scanningBarcode) {
return;
} else {
router.back({force: true, ignoreCache: true});
}
// Stop text selection from popping a system toolbar even after changing pages
if (window.getSelection) {
window.getSelection().removeAllRanges();
} else if (document.selection) {
document.selection.empty();
}
}
$(document).keyup(function (e) {
if (e.key === "Escape" || e.keyCode == 27) {
handleBackButton();
}
}); });
router.on("routeChange", function (newRoute) { router.on("routeChange", function (newRoute) {
@ -67,19 +92,81 @@ router.on("routeChange", function (newRoute) {
}); });
// Set alert radius to 100 meters by default // Set alert radius to 100 meters by default
if (localStorage.getItem("alertradius") == null) { if (getStorage("alertradius") == null) {
localStorage.setItem("alertradius", 100); setStorage("alertradius", 100);
} }
// Set default alert sound volume // Set default alert sound volume
if (localStorage.getItem("alertvolume") == null) { if (getStorage("alertvolume") == null) {
localStorage.setItem("alertvolume", 100); setStorage("alertvolume", 100);
} }
if (localStorage.getItem("darktheme") == "true") { function setAppTheme(theme) {
$("#app").addClass("theme-dark"); if (theme == "light") {
$("#app").removeClass("theme-dark");
if (platform_type == "cordova" && cordova.platformId == 'android' && typeof StatusBar !== 'undefined') {
StatusBar.styleDefault();
StatusBar.backgroundColorByHexString("#E0E0E0");
}
} else if (theme == "dark") {
$("#app").addClass("theme-dark");
if (platform_type == "cordova" && cordova.platformId == 'android' && typeof StatusBar !== 'undefined') {
StatusBar.styleLightContent();
StatusBar.backgroundColorByHexString("#000000");
}
}
} }
initPlatform(); function applyColorTheme() {
if (getStorage("apptheme") == "dark") {
setAppTheme("dark");
} else if (getStorage("apptheme") == "light") {
setAppTheme("light");
} else {
// automatic theme, default light
if (typeof Framework7.device.prefersColorScheme() !== 'undefined' && Framework7.device.prefersColorScheme() == "dark") {
setAppTheme("dark");
} else {
setAppTheme("light");
}
}
}
/**
* Turn animations on or off.
* @param {boolean} on true for on, false for off.
* @returns {undefined}
*/
function toggleAnimations(on) {
if (on) {
$("#app").removeClass("no-animation");
} else {
$("#app").addClass("no-animation");
}
mainView.params.animate = on;
}
/**
* Turn animations on or off while considering user preferences.
* @param boolean enabled true to enable, false to disable, undefined to use animation=on/off setting.
* @returns {undefined}
*/
function setAnimations(enabled) {
if (getStorage("animation") == null) {
setStorage("animation", "auto");
}
if (typeof enabled !== "undefined") {
toggleAnimations(enabled == true);
return;
}
if (getStorage("animation") == "off") {
toggleAnimations(false);
} else if (getStorage("animation") == "on") {
toggleAnimations(true);
}
}
applyColorTheme();
setAnimations();
router.navigate("/home"); router.navigate("/home");

View File

@ -9,10 +9,10 @@ var map = null;
var maptype = "mapbox"; var maptype = "mapbox";
function createMap() { function createMap() {
if (localStorage.getItem("maptype") == null) { if (getStorage("maptype") == null) {
localStorage.setItem("maptype", "mapbox"); setStorage("maptype", "mapbox");
} }
maptype = localStorage.getItem("maptype"); maptype = getStorage("maptype");
if (maptype == "mapbox") { if (maptype == "mapbox") {
if (mapboxgl.supported()) { if (mapboxgl.supported()) {
map = mapboxMap(); map = mapboxMap();
@ -70,10 +70,6 @@ function reloadMap() {
} }
} }
$("#app").on("click", "#package-info-sheet #package-info-get-directions", function () {
window.open($(this).attr("href"), "_system");
});
$("#app").on("click", "#package-info-sheet #package-info-sheet-inner .list ul li .item-content", function () { $("#app").on("click", "#package-info-sheet #package-info-sheet-inner .list ul li .item-content", function () {
markDelivered($(this).data("id")); markDelivered($(this).data("id"));
map.updatePackageLayer(packages); map.updatePackageLayer(packages);

View File

@ -16,13 +16,13 @@ function leafletMap() {
map.maptype = "leaflet"; map.maptype = "leaflet";
if (localStorage.getItem("mapsource") == null) { if (getStorage("mapsource") == null) {
localStorage.setItem("mapsource", "liberty"); setStorage("mapsource", "liberty");
} }
$("#mapbox").css("background-color", SETTINGS.maptileurls[localStorage.getItem("mapsource")].bgcolor); $("#mapbox").css("background-color", SETTINGS.maptileurls[getStorage("mapsource")].bgcolor);
L.tileLayer(SETTINGS.maptileurls[localStorage.getItem("mapsource")].url, { L.tileLayer(SETTINGS.maptileurls[getStorage("mapsource")].url, {
minZoom: 1, minZoom: 1,
maxZoom: 19 maxZoom: 19
}).addTo(map); }).addTo(map);
@ -32,7 +32,7 @@ function leafletMap() {
showPopup: false, showPopup: false,
locateOptions: { locateOptions: {
enableHighAccuracy: true, enableHighAccuracy: true,
maxZoom: localStorage.getItem("trackzoom") == null ? 16 : localStorage.getItem("trackzoom") * 1 maxZoom: getStorage("trackzoom") == null ? 16 : getStorage("trackzoom") * 1
}, },
setView: "untilPanOrZoom", setView: "untilPanOrZoom",
icon: "far fa-compass", icon: "far fa-compass",

View File

@ -10,16 +10,16 @@ var firstload = true;
function mapboxMap() { function mapboxMap() {
if (localStorage.getItem("mapsource") == null) { if (getStorage("mapsource") == null) {
localStorage.setItem("mapsource", "liberty"); setStorage("mapsource", "liberty");
} }
$("#mapbox").css("background-color", SETTINGS.maptileurls[localStorage.getItem("mapsource")].bgcolor); $("#mapbox").css("background-color", SETTINGS.maptileurls[getStorage("mapsource")].bgcolor);
mapboxgl.accessToken = ''; mapboxgl.accessToken = '';
var map = new mapboxgl.Map({ var map = new mapboxgl.Map({
container: 'mapbox', container: 'mapbox',
style: SETTINGS.maptileurls[localStorage.getItem("mapsource")].json, style: SETTINGS.maptileurls[getStorage("mapsource")].json,
attributionControl: false, attributionControl: false,
dragPan: true, dragPan: true,
pitch: 0, pitch: 0,
@ -40,12 +40,20 @@ function mapboxMap() {
timeout: 10 * 1000 timeout: 10 * 1000
}, },
fitBoundsOptions: { fitBoundsOptions: {
maxZoom: localStorage.getItem("trackzoom") == null ? 16 : localStorage.getItem("trackzoom") * 1 maxZoom: getStorage("trackzoom") == null ? 16 : getStorage("trackzoom") * 1
}, },
trackUserLocation: true trackUserLocation: true
}), 'top-left' }), 'top-left'
); );
if (getStorage("mapscale") !== "false") {
map.addControl(
new mapboxgl.ScaleControl({
unit: getStorage("units") == "imperial" ? "imperial" : "metric"
})
);
}
map.startLocateControl = function () { map.startLocateControl = function () {
// stub // stub
} }

232
www/assets/js/notes.js Normal file
View File

@ -0,0 +1,232 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
if (inStorage("notes")) {
var notes = JSON.parse(getStorage("notes"));
} else {
var notes = [];
setStorage("notes", "[]");
}
function findNote(number, street) {
for (i in notes) {
if (notes[i].number == number && notes[i].street.toUpperCase() == street.toUpperCase()) {
return notes[i];
}
}
return null;
}
function isDeliverable(number, street) {
var note = findNote(number, street);
var ok = true;
var reason = "";
if (note != null) {
for (t in note.toggles) {
if (!note.toggles.hasOwnProperty(t)) {
continue;
}
for (tt in SETTINGS.routenotetoggles) {
if (SETTINGS.routenotetoggles[tt].id == t) {
if (SETTINGS.routenotetoggles[tt].preventsDelivery == true && note.toggles[t] == true) {
ok = false;
reason = SETTINGS.routenotetoggles[tt].reason;
}
}
}
}
}
return {
ok: ok,
reason: reason
};
}
function saveNote(id) {
var exists = false;
var index = -1;
for (var i = 0; i < notes.length; i++) {
if (notes[i].id == id) {
exists = true;
index = i;
}
}
var note = {
id: id,
number: "",
street: "",
zipcode: "",
route: "",
notes: "",
toggles: {}
};
if (exists) {
note = notes[index];
}
note.number = $("input[name=number]").val().trim();
note.street = $("input[name=street]").val().trim();
note.zipcode = $("input[name=zipcode]").val().trim();
note.route = $("input[name=route]").val().trim().toUpperCase();
note.notes = $("textarea#notes").val().trim();
if (note.number == "") {
app.dialog.alert("Fill in an address number.", "Error");
return false;
}
if (note.street == "") {
app.dialog.alert("Fill in a street.", "Error");
return false;
}
if (note.zipcode == "") {
app.dialog.alert("Fill in a zip code.", "Error");
return false;
}
if (note.route == "" || /^[CRHG][0-9]{3}$/.test(note.route) != true) {
app.dialog.alert("Fill in a route (examples: C123, R001, H050).", "Error");
return false;
}
setStorage("lastrouteid", note.route);
setStorage("zipcode", note.zipcode);
for (i in SETTINGS.routenotetoggles) {
var toggle = SETTINGS.routenotetoggles[i];
note.toggles[toggle.id] = $(".note-toggle[data-id=" + toggle.id + "]").is(":checked");
}
if (exists) {
notes[index] = note;
} else {
notes.push(note);
}
setStorage("notes", JSON.stringify(notes));
if (exists) {
appendActivityLog("Edited note", note.number + " " + note.street, "", "fas fa-sticky-note");
} else {
appendActivityLog("Added note", note.number + " " + note.street, "", "fas fa-sticky-note");
}
app.toast.show({
text: "<i class='fas fa-check'></i> Note saved!",
position: "bottom",
destroyOnClose: true,
closeTimeout: 1000 * 3
});
}
function deleteNote(id) {
var note = {};
for (var i = 0; i < notes.length; i++) {
if (notes[i].id == id) {
note = notes[i];
notes.splice(i, 1);
}
}
setStorage("notes", JSON.stringify(notes));
appendActivityLog("Deleted note", note.number + " " + note.street, "", "fas fa-sticky-note");
}
$(".view-main").on("click", "#savenotebtn", function () {
saveNote($(this).data("noteid"));
});
$(".view-main").on("click", ".editnotebtn", function () {
var noteid = $(this).data("noteid");
var note = {};
for (var i = 0; i < notes.length; i++) {
if (notes[i].id == noteid) {
note = notes[i];
}
}
var toggles = [];
for (t in SETTINGS.routenotetoggles) {
var toggle = SETTINGS.routenotetoggles[t];
toggles.push({
id: toggle.id,
name: toggle.name,
checked: note.toggles[toggle.id] == true
});
}
router.navigate("/myroute/editnote", {
context: {
title: "Edit Note",
toggles: toggles,
noteid: noteid,
note: note
}
});
});
$(".view-main").on("click", ".deletenotebtn", function () {
var noteid = $(this).data("noteid");
app.dialog.confirm("Delete note?", "Confirm", function () {
deleteNote(noteid);
router.navigate("/myroute", {
reloadCurrent: true
})
});
});
$(".view-main").on("blur", "#notenumberinput,#notestreetinput", function () {
if (findNote($("#notenumberinput").val(), $("#notestreetinput").val()) != null) {
app.dialog.alert("A note already exists for that address.", "Warning");
}
});
/*
* Save note with Ctrl-S
*/
$(".view-main").on("keydown", ".page[data-name=editnote]", function (event) {
if (event.ctrlKey || event.metaKey) {
switch (String.fromCharCode(event.which).toLowerCase()) {
case 's':
event.preventDefault();
saveNote($("#savenotebtn").data("noteid"));
break;
}
}
});
function getToggleName(id) {
for (i in SETTINGS.routenotetoggles) {
if (SETTINGS.routenotetoggles[i].id == id) {
return SETTINGS.routenotetoggles[i].name;
}
}
return "";
}
function getToggleIcon(id) {
for (i in SETTINGS.routenotetoggles) {
if (SETTINGS.routenotetoggles[i].id == id) {
return SETTINGS.routenotetoggles[i].icon;
}
}
return "";
}
Template7.registerHelper('notetogglename', function (key) {
return getToggleName(key);
});
Template7.registerHelper('notetoggleicon', function (key) {
return getToggleIcon(key);
});
Template7.registerHelper('newlinestobr', function (text) {
return text.replace(/(?:\r\n|\r|\n)/g, '<br>');
});

View File

@ -6,8 +6,8 @@
var packages = []; var packages = [];
if (localStorage.getItem("packages") != null) { if (getStorage("packages") != null) {
packages = JSON.parse(localStorage.getItem("packages")); packages = JSON.parse(getStorage("packages"));
} }
/** /**
@ -91,6 +91,13 @@ function addPackage(address, latitude, longitude, type, callback, deadline) {
deadline = false; deadline = false;
} }
if (typeof address == "object") {
var extendedaddress = address;
address = extendedaddress.address;
} else {
var extendedaddress = false;
}
// Extra precision makes the map stupider, // Extra precision makes the map stupider,
// and doesn't really increase accuracy since four decimal places ~= 11m // and doesn't really increase accuracy since four decimal places ~= 11m
latitude = +(parseFloat("" + latitude).toFixed(4)); latitude = +(parseFloat("" + latitude).toFixed(4));
@ -103,6 +110,7 @@ function addPackage(address, latitude, longitude, type, callback, deadline) {
if (packages[i].coords[0] == latitude && packages[i].coords[1] == longitude) { if (packages[i].coords[0] == latitude && packages[i].coords[1] == longitude) {
coordsID = packages[i].id; coordsID = packages[i].id;
packages[i].items.push({ packages[i].items.push({
extended: extendedaddress,
address: address, address: address,
delivered: false, delivered: false,
type: type, type: type,
@ -124,6 +132,7 @@ function addPackage(address, latitude, longitude, type, callback, deadline) {
address: address, address: address,
items: [ items: [
{ {
extended: extendedaddress,
address: address, address: address,
delivered: false, delivered: false,
type: type, type: type,
@ -133,7 +142,9 @@ function addPackage(address, latitude, longitude, type, callback, deadline) {
] ]
}); });
} }
localStorage.setItem("packages", JSON.stringify(packages)); setStorage("packages", JSON.stringify(packages));
appendActivityLog("Added", SETTINGS.itemtypes[type].name, address, "fas fa-truck-loading");
playSound("ok"); playSound("ok");
@ -165,6 +176,7 @@ function addPackage(address, latitude, longitude, type, callback, deadline) {
*/ */
function importPackageList(newlist) { function importPackageList(newlist) {
skipped = 0; skipped = 0;
let count = 0;
for (latlng in newlist) { for (latlng in newlist) {
var latitude = newlist[latlng].coords[0]; var latitude = newlist[latlng].coords[0];
var longitude = newlist[latlng].coords[1]; var longitude = newlist[latlng].coords[1];
@ -186,6 +198,7 @@ function importPackageList(newlist) {
} }
if (!added) { if (!added) {
packages[i].items.push(package); packages[i].items.push(package);
count++;
added = true; added = true;
} }
break; break;
@ -196,17 +209,106 @@ function importPackageList(newlist) {
} }
} }
} }
localStorage.setItem("packages", JSON.stringify(packages)); setStorage("packages", JSON.stringify(packages));
appendActivityLog("Imported List", count + " items added", "", "fas fa-file-download");
if (map != null) { if (map != null) {
reloadMap(); reloadMap();
} }
return skipped; return skipped;
} }
function mapCalibrate(item, packagesentry) {
// Determine if the delivery location isn't near the map pin
if (userPosition.coords.accuracy < 20 && timeDiff(userPosition.updated) < 10) {
// User location is accurate, check distance
var distance = getDistance(packagesentry.coords[0], packagesentry.coords[1], userPosition.coords.latitude, userPosition.coords.longitude);
var lat = userPosition.coords.latitude;
var lon = userPosition.coords.longitude;
if (distance > 100) { // Over 100 meters distance
if (typeof item.extended == "object") {
// we have all the info we need
var fixmap = function (item, latitude, longitude, locationtype, pkgsentry) {
$.ajax({
type: "POST",
url: SETTINGS.mapfixapi,
data: {
number: item.extended.number,
unit: item.extended.unit,
street: item.extended.street,
citystate: item.extended.citystate,
zip: item.extended.zip,
latitude: latitude,
longitude: longitude,
locationtype: locationtype
},
success: function () {
appendActivityLog("Map Calibrated",
item.address,
"Thanks for improving the map accuracy!<br>"
+ "Old: <a class='geolink' href='geo:" + pkgsentry.coords[0] + "," + pkgsentry.coords[1] + "'>" + pkgsentry.coords[0] + ", " + pkgsentry.coords[1] + "</a><br>"
+ "New: <a class='geolink' href='geo:" + latitude + "," + longitude + "'>" + latitude + ", " + longitude + "</a>",
"fas fa-map-marked-alt"
);
},
error: function () {
// try again in five minutes
setTimeout(function () {
fixmap(item, latitude, longitude, locationtype, pkgsentry);
}, 1000 * 60 * 5);
},
dataType: "json"
});
};
app.dialog.create({
title: 'Map Calibration',
text: "Your actual location doesn't match the map location for the " + SETTINGS.itemtypes[item.type].name + " at " + item.address + ". Where are you?",
buttons: [
{
text: 'Address',
close: true
},
{
text: 'Mailbox/CBU',
close: true
},
{
text: 'Parcel Locker',
close: true
},
{
text: "Other/Cancel",
close: true
}
],
verticalButtons: true,
onClick: function (dialog, index) {
switch (index) {
case 0:
fixmap(item, lat, lon, "address", packagesentry);
break;
case 1:
fixmap(item, lat, lon, "mailbox", packagesentry);
break;
case 2:
fixmap(item, lat, lon, "locker", packagesentry);
break;
default:
return;
}
}
}).open();
}
}
}
}
function markDelivered(id, delivered) { function markDelivered(id, delivered) {
for (var i = 0; i < packages.length; i++) { for (var i = 0; i < packages.length; i++) {
for (var j = 0; j < packages[i].items.length; j++) { for (var j = 0; j < packages[i].items.length; j++) {
if (packages[i].items[j].id == id) { if (packages[i].items[j].id == id) {
if (typeof delivered == 'undefined') { if (typeof delivered == 'undefined') {
if (packages[i].items[j].delivered == false) { if (packages[i].items[j].delivered == false) {
delivered = true; delivered = true;
@ -216,14 +318,25 @@ function markDelivered(id, delivered) {
} }
packages[i].items[j].delivered = delivered; packages[i].items[j].delivered = delivered;
if (delivered) { let gpslink = "";
packages[i].items[j].deliverytimestamp = Date.now(); if (userPosition.coords.accuracy < 40 && timeDiff(userPosition.updated) < 15) {
var lat = parseFloat(userPosition.coords.latitude).toFixed(5);
var lon = parseFloat(userPosition.coords.longitude).toFixed(5);
gpslink = "<br /><a class='geolink' href='geo:" + lat + "," + lon + "'>" + lat + ", " + lon + "</a> (&#177;" + getDisplayDistance(userPosition.coords.accuracy, false) + ")";
} }
if (delivered) {
packages[i].items[j].deliverytimestamp = time();
appendActivityLog("Delivered", SETTINGS.itemtypes[packages[i].items[j].type].name, packages[i].items[j].address + gpslink, "far fa-check-circle");
mapCalibrate(packages[i].items[j], packages[i]);
} else {
packages[i].items[j].deliverytimestamp = null;
appendActivityLog("Undelivered", SETTINGS.itemtypes[packages[i].items[j].type].name, packages[i].items[j].address, "fas fa-undo");
}
setStorage("packages", JSON.stringify(packages));
return; // so we don't keep looping over the rest of the packages
} }
} }
} }
localStorage.setItem("packages", JSON.stringify(packages));
} }
function confirmDeletePackage(package, callback) { function confirmDeletePackage(package, callback) {
@ -244,13 +357,16 @@ function deletePackage(id, callback) {
for (var i = 0; i < packages.length; i++) { for (var i = 0; i < packages.length; i++) {
for (var j = 0; j < packages[i].items.length; j++) { for (var j = 0; j < packages[i].items.length; j++) {
if (packages[i].items[j].id == id) { if (packages[i].items[j].id == id) {
appendActivityLog("Deleted", SETTINGS.itemtypes[packages[i].items[j].type].name, packages[i].items[j].address, "fas fa-trash");
packages[i].items.splice(j, 1); packages[i].items.splice(j, 1);
if (packages[i].items.length == 0) { if (packages[i].items.length == 0) {
packages.splice(i, 1); packages.splice(i, 1);
} }
localStorage.setItem("packages", JSON.stringify(packages)); setStorage("packages", JSON.stringify(packages));
loadPackageList(); loadPackageList();
if (typeof callback == 'function') { if (typeof callback == 'function') {
@ -284,30 +400,40 @@ function countPackages() {
return count; return count;
} }
function addPackageByAddress(number, street, citystate, type, callback) { function addPackageByAddress(number, unit, street, citystate, zip, type, callback) {
var requestfinished = false; var requestfinished = false;
var searchingdialogopen = false; var searchingdialogopen = false;
var deadline = false; var deadline = false;
var ajaxlookup = function () { var ajaxlookup = function () {
var geocodecache = localStorage.getItem("geocode_cache"); var geocodecache = getStorage("geocode_cache");
if (geocodecache == null) { if (geocodecache == null) {
geocodecache = "{}"; geocodecache = "{}";
localStorage.setItem("geocode_cache", "{}"); setStorage("geocode_cache", "{}");
} }
geocodecache = JSON.parse(geocodecache); geocodecache = JSON.parse(geocodecache);
var cachekey = number + " || " + street + " || " + citystate; var cachekey = number + " || " + street + " || " + citystate + " || " + zip + " || " + SETTINGS.itemtypes[type].allowedlocationtypes;
if (unit != '') {
cachekey = number + " || " + unit + " || " + street + " || " + citystate + " || " + zip + " || " + SETTINGS.itemtypes[type].allowedlocationtypes;
}
var cacheitem = geocodecache[cachekey]; var cacheitem = geocodecache[cachekey];
var timestamp = Math.floor(Date.now() / 1000); var timestamp = Math.floor(Date.now() / 1000);
if (typeof cacheitem != 'undefined') { if (typeof cacheitem != 'undefined') {
if (cacheitem.added + SETTINGS.geocodecacheexpiry < timestamp) { if (cacheitem.added + SETTINGS.geocodecacheexpiry < timestamp) {
console.log("Info", "Removing expired geocode cache item " + cachekey); console.log("Info", "Removing expired geocode cache item " + cachekey);
delete geocodecache[cachekey]; delete geocodecache[cachekey];
localStorage.setItem("geocode_cache", JSON.stringify(geocodecache)); setStorage("geocode_cache", JSON.stringify(geocodecache));
} else { } else {
console.log("Info", "Using cached geocode result", cacheitem); console.log("Info", "Using cached geocode result", cacheitem);
addPackage(cacheitem.address, cacheitem.latitude, cacheitem.longitude, type, callback, deadline); addPackage({
address: cacheitem.address,
number: number,
unit: unit,
street: street,
citystate: citystate,
zip: zip
}, cacheitem.latitude, cacheitem.longitude, type, callback, deadline);
return; return;
} }
} }
@ -317,8 +443,11 @@ function addPackageByAddress(number, street, citystate, type, callback) {
dataType: 'json', dataType: 'json',
data: { data: {
number: number, number: number,
unit: unit,
street: street, street: street,
citystate: citystate citystate: citystate,
zip: zip,
type: SETTINGS.itemtypes[type].allowedlocationtypes
}, },
timeout: 15 * 1000, timeout: 15 * 1000,
success: function (resp) { success: function (resp) {
@ -329,14 +458,23 @@ function addPackageByAddress(number, street, citystate, type, callback) {
requestfinished = true; requestfinished = true;
if (resp.status == "OK") { if (resp.status == "OK") {
if (resp.accuracy.ok) { if (resp.accuracy.ok) {
addPackage(resp.address.street, resp.coords[0], resp.coords[1], type, callback, deadline); addPackage({
address: resp.address.street,
number: number,
unit: unit,
street: street,
citystate: citystate,
zip: zip
}, resp.coords[0], resp.coords[1], type, callback, deadline);
geocodecache[cachekey] = { geocodecache[cachekey] = {
number: resp.address.number,
unit: unit,
address: resp.address.street, address: resp.address.street,
latitude: resp.coords[0], latitude: resp.coords[0],
longitude: resp.coords[1], longitude: resp.coords[1],
added: Math.floor(Date.now() / 1000) added: Math.floor(Date.now() / 1000)
}; };
localStorage.setItem("geocode_cache", JSON.stringify(geocodecache)); setStorage("geocode_cache", JSON.stringify(geocodecache));
} else { } else {
playSound("error"); playSound("error");
app.dialog.confirm( app.dialog.confirm(
@ -344,9 +482,23 @@ function addPackageByAddress(number, street, citystate, type, callback) {
"Accuracy Warning", "Accuracy Warning",
function (ok) { function (ok) {
if (resp.address.street == "") { if (resp.address.street == "") {
addPackage(address, resp.coords[0], resp.coords[1], type, callback, deadline); addPackage({
address: address,
number: number,
unit: unit,
street: street,
citystate: citystate,
zip: zip
}, resp.coords[0], resp.coords[1], type, callback, deadline);
} else { } else {
addPackage(resp.address.street, resp.coords[0], resp.coords[1], type, callback, deadline); addPackage({
address: resp.address.street,
number: number,
unit: unit,
street: street,
citystate: citystate,
zip: zip
}, resp.coords[0], resp.coords[1], type, callback, deadline);
} }
} }
); );
@ -376,71 +528,90 @@ function addPackageByAddress(number, street, citystate, type, callback) {
}, 750); }, 750);
} }
if (type == "express") { var prelookup = function () {
if (localStorage.getItem("deadlinealarm_minutes") == null) { if (type == "express") {
localStorage.setItem("deadlinealarm_minutes", 20); if (getStorage("deadlinealarm_minutes") == null) {
} setStorage("deadlinealarm_minutes", 20);
var minutes = localStorage.getItem("deadlinealarm_minutes");
app.dialog.create({
title: 'Express Item',
text: 'Set a reminder for ' + minutes + ' minutes before:',
buttons: [
{
text: '10:30 AM',
close: true
},
{
text: '12:00 PM',
close: true
},
{
text: '3:00 PM',
close: true
},
{
text: "No reminder",
color: "red",
close: true
}
],
verticalButtons: true,
onClick: function (dialog, index) {
deadline = new Date();
switch (index) {
case 0:
deadline.setMinutes(30);
deadline.setHours(10);
break;
case 1:
deadline.setMinutes(00);
deadline.setHours(12);
break;
case 2:
deadline.setMinutes(00);
deadline.setHours(12 + 3);
break;
case 3:
default:
deadline = false;
break;
}
if (deadline != false) {
deadline = deadline.getTime() / 1000;
}
ajaxlookup();
} }
}).open(); var minutes = getStorage("deadlinealarm_minutes");
app.dialog.create({
title: 'Express Item',
text: 'Set a reminder for ' + minutes + ' minutes before:',
buttons: [
{
text: '10:30 AM',
close: true
},
{
text: '12:00 PM',
close: true
},
{
text: '3:00 PM',
close: true
},
{
text: "No reminder",
color: "red",
close: true
}
],
verticalButtons: true,
onClick: function (dialog, index) {
deadline = new Date();
switch (index) {
case 0:
deadline.setMinutes(30);
deadline.setHours(10);
break;
case 1:
deadline.setMinutes(00);
deadline.setHours(12);
break;
case 2:
deadline.setMinutes(00);
deadline.setHours(12 + 3);
break;
case 3:
default:
deadline = false;
break;
}
if (deadline != false) {
deadline = deadline.getTime() / 1000;
}
ajaxlookup();
}
}).open();
} else {
ajaxlookup();
}
}
var deliverable = isDeliverable(number, street);
if (deliverable.ok) {
prelookup();
} else { } else {
ajaxlookup(); app.dialog.confirm(
"A route note says this address " + deliverable.reason + ". Add item anyways?",
"Confirm",
function () {
prelookup();
},
function () {
// cancel
}
);
} }
} }
function checkDeadlines() { function checkDeadlines() {
if (localStorage.getItem("deadlinealarm_minutes") == null) { if (getStorage("deadlinealarm_minutes") == null) {
localStorage.setItem("deadlinealarm_minutes", 20); setStorage("deadlinealarm_minutes", 20);
} }
var minutes = localStorage.getItem("deadlinealarm_minutes"); var minutes = getStorage("deadlinealarm_minutes");
var currentTime = new Date().getTime() / 1000; var currentTime = new Date().getTime() / 1000;
var deadlineTime = currentTime + (minutes * 60); var deadlineTime = currentTime + (minutes * 60);
for (i in packages) { for (i in packages) {
@ -457,7 +628,7 @@ function checkDeadlines() {
} }
); );
packages[i].items[j].deadlinealarmed = true; packages[i].items[j].deadlinealarmed = true;
localStorage.setItem("packages", JSON.stringify(packages)); setStorage("packages", JSON.stringify(packages));
} }
} }
} }

View File

@ -12,6 +12,12 @@ var app_version = "unknown";
var nw_tray = null; var nw_tray = null;
/**
* If true and animations are set to "auto", animations should be disabled.
* @type Boolean
*/
var auto_disable_animations = false;
var openBrowser = function (url) { var openBrowser = function (url) {
window.open(url); window.open(url);
} }
@ -24,6 +30,8 @@ var scanBarcode = function (success, error) {
app.dialog.alert("You can't scan barcodes with this device.", "Sorry!"); app.dialog.alert("You can't scan barcodes with this device.", "Sorry!");
} }
var scanningBarcode = false;
var getLocation = function (success, error) { var getLocation = function (success, error) {
if ("geolocation" in navigator) { if ("geolocation" in navigator) {
navigator.geolocation.getCurrentPosition(function (position) { navigator.geolocation.getCurrentPosition(function (position) {
@ -68,6 +76,7 @@ function setupHTML5BarcodeScanner() {
$("body").append('<script src="node_modules/@zxing/library/umd/index.min.js"></script>'); $("body").append('<script src="node_modules/@zxing/library/umd/index.min.js"></script>');
scanBarcode = function (success, error) { scanBarcode = function (success, error) {
scanningBarcode = true;
$("#web-barcode-ui").removeClass("hidden"); $("#web-barcode-ui").removeClass("hidden");
// Stolen from https://zxing-js.github.io/library/examples/multi-camera/ // Stolen from https://zxing-js.github.io/library/examples/multi-camera/
const codeReader = new ZXing.BrowserMultiFormatReader(); const codeReader = new ZXing.BrowserMultiFormatReader();
@ -83,6 +92,7 @@ function setupHTML5BarcodeScanner() {
selectedDeviceId = videoInputDevices[0].deviceId; selectedDeviceId = videoInputDevices[0].deviceId;
codeReader.decodeFromInputVideoDeviceContinuously(selectedDeviceId, 'barcode-viewer', (result, err) => { codeReader.decodeFromInputVideoDeviceContinuously(selectedDeviceId, 'barcode-viewer', (result, err) => {
scanningBarcode = false;
if (result) { if (result) {
codeReader.reset(); codeReader.reset();
$("#web-barcode-ui").addClass("hidden"); $("#web-barcode-ui").addClass("hidden");
@ -99,10 +109,12 @@ function setupHTML5BarcodeScanner() {
}); });
}) })
.catch((err) => { .catch((err) => {
scanningBarcode = false;
console.error(err); console.error(err);
}); });
$("#web-barcode-ui").on("click", function () { $("#web-barcode-ui").on("click", function () {
codeReader.reset(); codeReader.reset();
scanningBarcode = false;
$("#web-barcode-ui").addClass("hidden"); $("#web-barcode-ui").addClass("hidden");
}); });
}; };
@ -110,17 +122,11 @@ function setupHTML5BarcodeScanner() {
function initCordova() { function initCordova() {
platform_type = "cordova"; platform_type = "cordova";
// Handle back button to close things // Handle back button to close things
document.addEventListener("backbutton", function (event) { document.addEventListener("backbutton", handleBackButton, false);
// Close map sheet if it's open
if ($(".sheet-modal").hasClass("modal-in")) {
app.sheet.close();
} else {
router.back({force: true, ignoreCache: true});
}
}, false);
document.addEventListener("deviceready", function () { document.addEventListener("deviceready", function () {
if (localStorage.getItem("wakelock") == "true") { if (getStorage("wakelock") == "true") {
window.powerManagement.acquire(function () { window.powerManagement.acquire(function () {
console.log("Info", 'Wakelock acquired'); console.log("Info", 'Wakelock acquired');
}, function () { }, function () {
@ -133,6 +139,9 @@ function initCordova() {
console.log("Warn", 'Failed to release wakelock'); console.log("Warn", 'Failed to release wakelock');
}); });
} }
// Make sure the status bar color is set properly
applyColorTheme();
}, false); }, false);
openBrowser = function (url) { openBrowser = function (url) {
cordova.InAppBrowser.open(url, '_blank', 'location=yes'); cordova.InAppBrowser.open(url, '_blank', 'location=yes');
@ -144,13 +153,16 @@ function initCordova() {
if (typeof device != "undefined" && device.platform != "browser") { if (typeof device != "undefined" && device.platform != "browser") {
scanBarcode = function (success, error) { scanBarcode = function (success, error) {
scanningBarcode = true;
cordova.plugins.barcodeScanner.scan( cordova.plugins.barcodeScanner.scan(
function (result) { function (result) {
scanningBarcode = false;
if (!result.cancelled) { if (!result.cancelled) {
success(result.text); success(result.text);
} }
}, },
function (err) { function (err) {
scanningBarcode = false;
if (typeof error == "function") { if (typeof error == "function") {
error(err); error(err);
} }
@ -168,6 +180,25 @@ function initCordova() {
} else { } else {
setupHTML5BarcodeScanner(); setupHTML5BarcodeScanner();
} }
// Handle geo: urls
$("#app").on("click", ".geolink", function (evt) {
window.open($(this).attr("href"), "_system");
evt.preventDefault();
});
window.addEventListener("batterystatus", function (status) {
if (getStorage("animation") == "auto") {
if (status.isPlugged || status.level > 20) {
// Plugged in or above 20%, enable animations
auto_disable_animations = false;
toggleAnimations(true);
} else {
auto_disable_animations = false;
toggleAnimations(true);
}
}
}, false);
} }
function initNW() { function initNW() {
@ -207,6 +238,12 @@ function initNW() {
setupHTML5BarcodeScanner(); setupHTML5BarcodeScanner();
// Handle geo: urls
$("#app").on("click", ".geolink", function (evt) {
require('nw.gui').Shell.openExternal($(this).attr("href"));
evt.preventDefault();
});
} }
function initBrowser() { function initBrowser() {

View File

@ -5,48 +5,85 @@
*/ */
$('.item-content[data-setting=darktheme] .toggle input').on("change", function () { function logout() {
var checked = $(this).prop('checked'); app.dialog.confirm(
localStorage.setItem("darktheme", checked); "Are you sure you want to log out?",
"Log out?",
function () {
localStorage.removeItem('password');
localStorage.removeItem('username');
localStorage.removeItem('lastsync');
restartApplication();
}
);
}
if (localStorage.getItem("darktheme") == "true") { function resyncAndRestart() {
$("#app").addClass("theme-dark"); app.toast.show({
} else { text: "Syncing settings and restarting...",
$("#app").removeClass("theme-dark"); position: "bottom",
destroyOnClose: true,
closeTimeout: 1000 * 10
});
syncNow(function () {
restartApplication();
});
}
function clearCaches() {
app.toast.show({
text: "Clearing caches. You may need to restart the app to see a difference.",
position: "bottom",
destroyOnClose: true,
closeTimeout: 1000 * 10
});
setStorage("geocode_cache", "{}");
if ('caches' in window) {
clearAllCaches();
}
}
$('.item-link[data-setting=apptheme] select').on("change", function () {
setStorage("apptheme", $('.item-link[data-setting=apptheme] select').val());
applyColorTheme();
});
$('.item-link[data-setting=animation] select').on("change", function () {
setStorage("animation", $('.item-link[data-setting=animation] select').val());
if (getStorage("animation") != "auto") {
setAnimations();
}
if (getStorage("animation") == "auto") {
toggleAnimations(auto_disable_animations == false);
} }
}); });
$('.item-content[data-setting=showhelp] .toggle input').on("change", function () { $('.item-content[data-setting=showhelp] .toggle input').on("change", function () {
var checked = $(this).prop('checked'); var checked = $(this).prop('checked');
localStorage.setItem("show_help", checked); setStorage("show_help", checked);
});
$('.item-content[data-setting=oldhomeui] .toggle input').on("change", function () {
var checked = $(this).prop('checked');
setStorage("oldhomeui", checked);
}); });
$('.item-link[data-setting=units] select').on("change", function () { $('.item-link[data-setting=units] select').on("change", function () {
localStorage.setItem("units", $('.item-link[data-setting=units] select').val()); setStorage("units", $('.item-link[data-setting=units] select').val());
}); });
$('.item-link[data-setting=trackzoom] select').on("change", function () { $('.item-link[data-setting=trackzoom] select').on("change", function () {
localStorage.setItem("trackzoom", $('.item-link[data-setting=trackzoom] select').val()); setStorage("trackzoom", $('.item-link[data-setting=trackzoom] select').val());
}); });
$('.item-content[data-setting=wakelock] .toggle input').on("change", function () { $('.item-content[data-setting=wakelock] .toggle input').on("change", function () {
var checked = $(this).prop('checked'); var checked = $(this).prop('checked');
localStorage.setItem("wakelock", checked); setStorage("wakelock", checked);
if (platform_type == "cordova") { if (platform_type == "cordova") {
if (localStorage.getItem("wakelock") == "true") { loadSettings();
window.powerManagement.acquire(function () {
console.log("Info", 'Wakelock acquired');
}, function () {
console.log("Warn", 'Failed to acquire wakelock');
});
} else {
window.powerManagement.release(function () {
console.log("Info", 'Wakelock released');
}, function () {
console.log("Warn", 'Failed to release wakelock');
});
}
} else { } else {
app.toast.show({ app.toast.show({
text: "This setting won't do anything on your device.", text: "This setting won't do anything on your device.",
@ -59,30 +96,37 @@ $('.item-content[data-setting=wakelock] .toggle input').on("change", function ()
$('.item-content[data-setting=alertvolume] .range-slider').on('range:changed', function (e, range) { $('.item-content[data-setting=alertvolume] .range-slider').on('range:changed', function (e, range) {
var val = app.range.get(".item-content[data-setting=alertvolume] .range-slider").getValue(); var val = app.range.get(".item-content[data-setting=alertvolume] .range-slider").getValue();
localStorage.setItem("alertvolume", val); setStorage("alertvolume", val);
setVolume("alert", val); setVolume("alert", val);
playSound("alert"); playSound("alert");
}); });
$('.item-content[data-setting=alertradius] .range-slider').on('range:changed', function (e, range) { $('.item-content[data-setting=alertradius] .range-slider').on('range:changed', function (e, range) {
var val = app.range.get(".item-content[data-setting=alertradius] .range-slider").getValue(); var val = app.range.get(".item-content[data-setting=alertradius] .range-slider").getValue();
localStorage.setItem("alertradius", val); setStorage("alertradius", val);
}); });
$('.item-content[data-setting=alertinterval] .range-slider').on('range:changed', function (e, range) { $('.item-content[data-setting=alertinterval] .range-slider').on('range:changed', function (e, range) {
var val = app.range.get(".item-content[data-setting=alertinterval] .range-slider").getValue(); var val = app.range.get(".item-content[data-setting=alertinterval] .range-slider").getValue();
localStorage.setItem("alertinterval", val); setStorage("alertinterval", val);
}); });
$('.item-link[data-setting=mapsource] select').on("change", function () { $('.item-link[data-setting=mapsource] select').on("change", function () {
localStorage.setItem("mapsource", $('.item-link[data-setting=mapsource] select').val()); setStorage("mapsource", $('.item-link[data-setting=mapsource] select').val());
reloadMap();
});
$('.item-content[data-setting=mapscale] .toggle input').on("change", function () {
var checked = $(this).prop('checked');
setStorage("mapscale", checked ? "true" : "false");
reloadMap(); reloadMap();
}); });
$('.item-content[data-setting=maptype] .toggle input').on("change", function () { $('.item-content[data-setting=maptype] .toggle input').on("change", function () {
var checked = $(this).prop('checked'); var checked = $(this).prop('checked');
localStorage.setItem("maptype", checked ? "leaflet" : "mapbox"); setStorage("maptype", checked ? "leaflet" : "mapbox");
maptype = checked ? "leaflet" : "mapbox"; maptype = checked ? "leaflet" : "mapbox";
@ -90,7 +134,7 @@ $('.item-content[data-setting=maptype] .toggle input').on("change", function ()
}); });
$('.item-link[data-setting=alertsound] select').on("change", function () { $('.item-link[data-setting=alertsound] select').on("change", function () {
localStorage.setItem("alertsound", $('.item-link[data-setting=alertsound] select').val()); setStorage("alertsound", $('.item-link[data-setting=alertsound] select').val());
// Reload sound effect stuff to apply new sound // Reload sound effect stuff to apply new sound
initSFX(); initSFX();
// Play the selected sound // Play the selected sound

58
www/assets/js/storage.js Normal file
View File

@ -0,0 +1,58 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/**
* Save something to persistent storage.
* @param {string} key
* @param {string} value non-string values are converted to strings.
* @param {bool} nochangeupdate If true, the lastchange setting won't be updated.
* @returns {undefined}
*/
function setStorage(key, value, nochangeupdate) {
if (typeof nochangeupdate == 'undefined') {
nochangeupdate = false;
}
localStorage.setItem(key, value);
if (!nochangeupdate && !SETTINGS.synckeyblacklist.includes(key)) {
localStorage.setItem("lastchange", Date.now() / 1000);
}
}
/**
* Get an item from persistent storage.
* @param {type} key
* @returns {DOMString}
*/
function getStorage(key) {
return localStorage.getItem(key);
}
/**
* Check if an item is in the persistent storage.
* @param {string} key
* @returns {Boolean}
*/
function inStorage(key) {
return localStorage.getItem(key) != null;
}
/**
* Get all item from persistent storage.
* @returns {Array} [{key: "", value: ""},...]
*/
function getAllStorage() {
var all = [];
for (var key in localStorage) {
if (localStorage.hasOwnProperty(key)) {
all.push({
key: key,
value: getStorage(key)
});
}
}
return all;
}

111
www/assets/js/sync.js Normal file
View File

@ -0,0 +1,111 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
function gatherSyncData() {
var data = {
localStorage: {},
changed: getStorage("lastchange") == null ? 0 : getStorage("lastchange"),
};
if (!inStorage("lastsync")) {
// first time syncing to the server, let's make sure
// the server settings take precedence
data.changed = 1;
}
var allitems = getAllStorage();
for (var i = 0; i < allitems.length; i++) {
var key = allitems[i].key;
var value = allitems[i].value;
if (SETTINGS.synckeyblacklist.includes(key)) {
continue;
}
data.localStorage[key] = value;
}
return data;
}
function syncDataToLocalStorage(data) {
for (var key in data.localStorage) {
if (data.localStorage.hasOwnProperty(key)) {
setStorage(key, data.localStorage[key], true);
}
}
}
function resolveSync(remotedata) {
var localchangetime = getStorage("lastchange");
if (remotedata.changed == null) {
// The server has nothing, this is the first sync
return true;
}
if (localchangetime == null) {
// No local setting changes but since we've gotten this far,
// the server has stuff for us
syncDataToLocalStorage(remotedata);
return true;
}
if (localchangetime < remotedata.changed) {
// The server has newer stuff for us
syncDataToLocalStorage(remotedata);
return true;
}
if (localchangetime >= remotedata.changed) {
// Our local data is newer or the same as the server copy
return true;
}
return false;
}
function syncNow(callback) {
var username = getStorage("username");
var password = getStorage("password");
if (username == null || password == null) {
return false;
}
var data = gatherSyncData();
$.post(SETTINGS.syncapi, {
username: username,
password: password,
data: JSON.stringify(data)
}, function (resp) {
if (resp.status == "OK") {
resolveSync(resp.data);
setStorage("lastsync", Date.now() / 1000);
if (typeof callback == "function") {
callback();
}
}
}, "json");
return true;
}
function loadSettings() {
applyColorTheme();
if (platform_type == "cordova") {
if (getStorage("wakelock") == "true") {
window.powerManagement.acquire(function () {
console.log("Info", 'Wakelock acquired');
}, function () {
console.log("Warn", 'Failed to acquire wakelock');
});
} else {
window.powerManagement.release(function () {
console.log("Info", 'Wakelock released');
}, function () {
console.log("Warn", 'Failed to release wakelock');
});
}
}
}
syncNow(loadSettings);
// Sync every two minutes
setInterval(function () {
syncNow(loadSettings);
}, 1000 * 60 * 2);

View File

@ -0,0 +1,106 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
// Open geo: url
$(".view-main").on("click", "a #geocoords", function () {
window.open($(this).attr("href"), "_system");
});
function addressLookup() {
if ($("#numberstreetinput").val() == "") {
app.dialog.alert("A street address is required.", "Not enough info");
return;
}
if ($("#cityinput").val() == "" || $("#stateinput").val() == "") {
var ziprequired = true;
}
if ($("#zipcodeinput").val() == "" && ziprequired) {
app.dialog.alert("A ZIP code or city and state are required.", "Not enough info");
return;
}
app.dialog.preloader("Working...");
var addrlookupdialogopen = true;
$.ajax({
url: SETTINGS.addrlookupapi,
dataType: 'json',
method: 'post',
data: {
"street": $("#numberstreetinput").val(),
"city": $("#cityinput").val(),
"state": $("#stateinput").val(),
"zip": $("#zipcodeinput").val()
},
timeout: 15 * 1000,
success: function (resp) {
if (addrlookupdialogopen) {
app.dialog.close();
addrlookupdialogopen = false;
}
if (resp.status == "OK") {
if (resp.address.status == "OK") {
var address = resp.address;
$(".item-text #address").text(address.address);
var zipstr = "";
var postnetstr = "";
var postnetspacedstr = "";
if (address.zip != "") {
zipstr = address.zip;
postnetstr = address.zip;
postnetspacedstr = address.zip;
}
if (address.plus4 != "") {
zipstr += "-" + address.plus4;
postnetstr += "" + address.plus4;
postnetspacedstr += " " + address.plus4;
}
if (address.delivery_point != "") {
postnetstr += "" + address.delivery_point;
postnetspacedstr += " " + address.delivery_point;
}
$(".item-text #citystate").text(address.city + " " + address.state + " " + zipstr);
$(".item-text #dp").text(address.delivery_point);
$(".item-text #route").text(address.route);
$(".item-text #county").text(address.county);
$(".item-text #dpvconfirmed").text(address.dpv_confirmed ? "Yes" : "No");
$(".addrresult").removeClass("display-none");
let canvas = document.createElement('canvas');
bwipjs.toCanvas(canvas, {
bcid: 'postnet', // Barcode type
text: postnetstr, // Text to encode
scale: 2,
height: 3, // Bar height, in millimeters
alttext: postnetspacedstr,
includetext: true, // Show human-readable text
textxalign: 'center', // Always good to set this
});
document.getElementById("postnetbarcode").src = canvas.toDataURL('image/png');
$(".barcoderesult").removeClass("display-none");
} else {
$(".addrresult").addClass("display-none");
$(".barcoderesult").addClass("display-none");
app.dialog.alert(resp.address.message, "Error");
}
if (resp.geocode.status == "OK") {
$(".georesult").removeClass("display-none");
$(".item-text #geocoords").text(resp.geocode.latitude.toFixed(4) + ", " + resp.geocode.longitude.toFixed(4));
$(".item-text #geocoords").attr("href", "geo:" + resp.geocode.latitude.toFixed(4) + "," + resp.geocode.longitude.toFixed(4));
} else {
$(".georesult").addClass("display-none");
}
} else {
app.dialog.alert(resp.message, "Error");
}
},
error: function (jqXHR, status, errorThrown) {
if (addrlookupdialogopen) {
app.dialog.close();
addrlookupdialogopen = false;
}
app.dialog.alert("There was a network or server issue. Please try again.", "Error");
}
});
}

View File

@ -0,0 +1,21 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
function confirmDeleteActivityLog() {
app.dialog.confirm(
"Really delete all log entries?",
"Clear Log",
function () {
// clear
clearActivityLog();
router.refreshPage();
},
function () {
// cancel
}
);
}

View File

@ -101,7 +101,7 @@ function addCodeToScannerList(code) {
} else { } else {
app.dialog.confirm( app.dialog.confirm(
"It looks like this item might require a signature or other special procedures. Add it anyways?", "It looks like this item might require a signature or other special procedures. Add it anyways?",
"Signature Item", "Special Item",
function () { function () {
$("#codelist").append(codeEntryTemplate({ $("#codelist").append(codeEntryTemplate({
code: code code: code
@ -189,12 +189,14 @@ function openEventTypePopup(eventname) {
} }
function saveScanCode(code) { function saveScanCode(code) {
if (localStorage.getItem("scanevents") == null) { if (getStorage("scanevents") == null) {
localStorage.setItem("scanevents", "[]"); setStorage("scanevents", "[]");
} }
var events = JSON.parse(localStorage.getItem("scanevents")); var events = JSON.parse(getStorage("scanevents"));
events.push(code); events.push(code);
localStorage.setItem("scanevents", JSON.stringify(events)); setStorage("scanevents", JSON.stringify(events));
appendActivityLog("Scanned Item", code.event.join(' <i class="fas fa-chevron-right"></i> '), code.code + (code.form3849 == "" ? "" : "<br>Form 3849: " + code.form3849), "fas fa-barcode");
} }
$(".view-main").off("click", "#codelist li.codelist-entry"); $(".view-main").off("click", "#codelist li.codelist-entry");

View File

@ -11,7 +11,7 @@ function confirmDeleteScanEntries() {
"Clear Entries", "Clear Entries",
function () { function () {
// clear // clear
localStorage.setItem("scanevents", "[]"); setStorage("scanevents", "[]");
router.navigate("/toolbox/scanner/entries", { router.navigate("/toolbox/scanner/entries", {
reloadCurrent: true reloadCurrent: true
}); });

View File

@ -33,6 +33,7 @@ function uploadList() {
height: 40 height: 40
}); });
$("#listidbarcodeli").css("display", ""); $("#listidbarcodeli").css("display", "");
appendActivityLog("Shared List", countPackages() + " items sent", "", "fas fa-file-upload");
} else { } else {
app.dialog.alert(resp.message, "Error"); app.dialog.alert(resp.message, "Error");
} }

View File

@ -88,19 +88,26 @@ function openTrackingHistory(code) {
} }
// Keep last five tracking codes in history // Keep last five tracking codes in history
var history = localStorage.getItem("trackingcodehistory"); var history = getStorage("trackingcodehistory");
if (history == null) { if (history == null) {
history = []; history = [];
} else { } else {
history = JSON.parse(history); history = JSON.parse(history);
} }
if (infocontext.code != "" && !history.includes(infocontext.code)) { if (infocontext.code != "") {
// Search the history list and remove the current code if it's there
for (var i = 0; i < history.length; i++) {
if (history[i] == infocontext.code) {
history.splice(i, 1);
}
}
// Add the code back to the list so it's at the top
history.push(infocontext.code); history.push(infocontext.code);
} }
while (history.length > 5) { while (history.length > 5) {
history.shift(); history.shift();
} }
localStorage.setItem("trackingcodehistory", JSON.stringify(history)); setStorage("trackingcodehistory", JSON.stringify(history));
if (refresh) { if (refresh) {
router.navigate("/toolbox/track/info", { router.navigate("/toolbox/track/info", {

View File

@ -40,12 +40,12 @@ function loadWeather(reload) {
} }
requestfinished = true; requestfinished = true;
if (resp.status == "OK") { if (resp.status == "OK") {
var mintemp = (localStorage.getItem("units") == "metric" ? Math.round(ftoc(resp.temp.min)) + " &deg;C" : Math.round(resp.temp.min) + " &deg;F"); var mintemp = (getStorage("units") == "metric" ? Math.round(ftoc(resp.temp.min)) + " &deg;C" : Math.round(resp.temp.min) + " &deg;F");
var maxtemp = (localStorage.getItem("units") == "metric" ? Math.round(ftoc(resp.temp.max)) + " &deg;C" : Math.round(resp.temp.max) + " &deg;F"); var maxtemp = (getStorage("units") == "metric" ? Math.round(ftoc(resp.temp.max)) + " &deg;C" : Math.round(resp.temp.max) + " &deg;F");
$("#lowtemp").html(mintemp); $("#lowtemp").html(mintemp);
$("#hightemp").html(maxtemp); $("#hightemp").html(maxtemp);
$("#precipchance").text(Math.round(resp.precipitation.chance * 100.0) + "% chance"); $("#precipchance").text(Math.round(resp.precipitation.chance * 100.0) + "% chance");
if (localStorage.getItem("units") == "metric") { if (getStorage("units") == "metric") {
$("#windspeed").text(Math.round(resp.windspeed * 1.609344) + " km/h"); $("#windspeed").text(Math.round(resp.windspeed * 1.609344) + " km/h");
} else { } else {
$("#windspeed").text(Math.round(resp.windspeed) + " mph"); $("#windspeed").text(Math.round(resp.windspeed) + " mph");
@ -57,6 +57,8 @@ function loadWeather(reload) {
} }
$("#forecast-location").text(resp.location_name); $("#forecast-location").text(resp.location_name);
$("#forecast-info").text("Forecast covers the next " + resp.forecast_hours + " hours (until " + timestampToTimeString(resp.forecast_until) + ")."); $("#forecast-info").text("Forecast covers the next " + resp.forecast_hours + " hours (until " + timestampToTimeString(resp.forecast_until) + ").");
$("#forecast-creditlink").text(resp.source.text);
$("#forecast-creditlink").attr("onclick", "openExternalBrowser('" + resp.source.url + "')");
} else { } else {
app.dialog.alert(resp.message, "Error"); app.dialog.alert(resp.message, "Error");
} }

View File

@ -4,17 +4,245 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
/**
* Generate a UUID.
* From https://stackoverflow.com/a/2117523
* @returns {String}
*/
function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
function timestampToDateTimeString(timestamp) { /**
* Take a UNIX timestamp (seconds since Jan 1 1970) and format it.
* (Mostly) compatible with PHP's date() function.
* @param {String} date format string, see https://www.php.net/manual/en/function.date.php
* @param {Integer} timestamp UNIX timestamp
* @return {String}
*/
function formatTimestamp(format, timestamp) {
if (typeof timestamp == "undefined") {
timestamp = time();
}
var date = new Date(timestamp * 1000); var date = new Date(timestamp * 1000);
var pm = date.getHours() >= 12; var out = "";
var hours = date.getHours() > 12 ? date.getHours() - 12 : date.getHours();
hours = (hours == 0 ? 12 : hours);
var minutes = date.getMinutes();
var time = hours + ":" + (minutes < 10 ? "0" + minutes : minutes) + " " + (pm ? "PM" : "AM");
return date.toLocaleDateString() + " " + time; var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
for (var i = 0; i < format.length; i++) {
var c = format.charAt(i);
// Handle backslash-escaped characters
if (c == "\\" && i < format.length - 1) {
out += format.charAt(i + 1);
i++;
continue;
}
switch (c) {
case "d":
var d = date.getDate();
if (d < 10) {
out += "0";
}
out += d;
break;
case "D":
out += days[date.getDay()].substring(0, 3);
break;
case "j":
out += date.getDate();
break;
case "l":
out += days[date.getDay()];
break;
case "N":
// TODO
break;
case "S":
// TODO
break;
case "w":
out += date.getDay();
break;
case "z":
// TODO
break;
case "W":
// TODO
break;
case "F":
out += months[date.getMonth()];
break;
case "m":
var m = date.getMonth() + 1;
if (m < 10) {
out += "0";
}
out += m;
break;
case "M":
out += months[date.getMonth()].substring(0, 3);
break;
case "n":
out += date.getMonth() + 1;
break;
case "t":
// TODO
break;
case "L":
// TODO
break;
case "o":
// TODO
break;
case "Y":
out += date.getFullYear();
break;
case "y":
var y = (date.getFullYear() + "");
out += y.substring(y.length - 2);
break;
case "a":
if (date.getHours() < 12) {
out += "am";
} else {
out += "pm";
}
break;
case "A":
if (date.getHours() < 12) {
out += "AM";
} else {
out += "PM";
}
break;
case "B":
// TODO
break;
case "g":
var h = date.getHours() % 12;
if (h == 0) {
h = 12;
}
out += h;
break;
case "G":
out += date.getHours();
break;
case "h":
var h = date.getHours() % 12;
if (h == 0) {
h = 12;
}
if (h < 10) {
out += "0";
}
out += h;
break;
case "H":
var h = date.getHours();
if (h < 10) {
out += "0";
}
out += h;
break;
case "i":
var ii = date.getMinutes();
if (ii < 10) {
out += "0";
}
out += ii;
break;
case "s":
var s = date.getSeconds();
if (s < 10) {
out += "0";
}
out += s;
break;
case "u":
out += date.getMilliseconds() * 1000;
break;
case "v":
out += date.getMilliseconds();
break;
case "e":
// TODO
break;
case "I":
// TODO
break;
case "O":
var off = date.getTimezoneOffset();
var m = off % 60;
var h = (off - m) / 60;
if (off >= 0) {
out += "+";
} else {
out += "-";
}
if (h < 10) {
out += "0";
}
out += h;
if (m < 10) {
out += "0";
}
out += m;
break;
case "P":
var off = date.getTimezoneOffset();
var m = off % 60;
var h = (off - m) / 60;
if (off >= 0) {
out += "+";
} else {
out += "-";
}
if (h < 10) {
out += "0";
}
out += h;
out += ":";
if (m < 10) {
out += "0";
}
out += m;
break;
case "T":
// TODO
break;
case "Z":
out += date.getTimezoneOffset() * 60;
break;
case "c":
out += formatTimestamp(timestamp, "Y-m-d\\TH:i:sP");
break;
case "r":
out += formatTimestamp(timestamp, "D, j M Y G:i:s O");
break;
case "U":
out += Math.round(timestamp);
break;
default:
out += c;
}
}
return out;
}
function timestampToDateTimeString(timestamp) {
return timestampToDateString(timestamp) + " " + timestampToTimeString(timestamp);
}
function timestampToDateString(timestamp) {
var date = new Date(timestamp * 1000);
return date.toLocaleDateString();
} }
function timestampToTimeString(timestamp) { function timestampToTimeString(timestamp) {
@ -28,3 +256,20 @@ function timestampToTimeString(timestamp) {
return time; return time;
} }
/**
* Get the current UNIX timestamp in seconds.
* @returns {Number}
*/
function time() {
return Date.now() / 1000;
}
/**
* Get the number of seconds between now and the given timestamp.
* @param {Number} compareto
* @returns {Number}
*/
function timeDiff(compareto) {
return time() - compareto;
}

167
www/cache.js Normal file
View File

@ -0,0 +1,167 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
var cachedurls = [
'package.json',
'settings.js',
'index.html',
'.',
'routes.js',
'cache.js',
'assets/audio/error.mp3',
'assets/audio/ok.mp3',
'assets/audio/scan.mp3',
'assets/images/icons/logo.svg',
'assets/images/barcode-dashed.svg',
'assets/images/boxes.png',
'assets/images/box-open-dashed.svg',
'assets/images/box.png',
'assets/images/check.png',
'assets/images/envelope.png',
'assets/images/envelopes.png',
'assets/images/express.png',
'assets/images/history-dashed.svg',
'assets/images/largeboxes.png',
'assets/images/largebox.png',
'assets/images/multiple-items.png',
'assets/images/note-dashed.svg',
'assets/images/signature.png',
'assets/images/signatures.png',
'assets/images/smallpackage.png',
'assets/images/smallpackages.png',
'assets/css/app.css',
'assets/css/backdrop.css',
'assets/css/oled.css',
'assets/css/web-barcode.css',
'assets/js/audio.js',
'assets/js/autofill.js',
'assets/js/list.js',
'assets/js/location.js',
'assets/js/login.js',
'assets/js/main.js',
'assets/js/manage.js',
'assets/js/map.js',
'assets/js/map_leaflet.js',
'assets/js/map_mapbox.js',
'assets/js/notes.js',
'assets/js/packages.js',
'assets/js/platform.js',
'assets/js/settings.js',
'assets/js/storage.js',
'assets/js/sync.js',
'assets/js/toolbox_scannerentries.js',
'assets/js/toolbox_scanner.js',
'assets/js/toolbox_sharelist.js',
'assets/js/toolbox_track.js',
'assets/js/toolbox_weather.js',
'assets/js/util.js',
'pages/credits.html',
'pages/home.html',
'pages/list.html',
'pages/login.html',
'pages/manage.html',
'pages/map.html',
'pages/myroute.html',
'pages/settings.html',
'pages/toolbox.html',
'pages/help/list.html',
'pages/help/map.html',
'pages/myroute/editnote.html',
'pages/toolbox/scanner.html',
'pages/toolbox/sharelist.html',
'pages/toolbox/track.html',
'pages/toolbox/trackinginfo.html',
'pages/toolbox/weather.html',
'pages/toolbox/scanner/entries.html',
'pages/toolbox/scanner/scanner.html',
'node_modules/framework7/css/framework7.bundle.min.css',
'node_modules/@fortawesome/fontawesome-free/css/all.min.css',
'node_modules/material-design-icons/iconfont/material-icons.css',
'node_modules/leaflet/dist/leaflet.css',
'node_modules/leaflet.markercluster/dist/MarkerCluster.css',
'node_modules/leaflet.markercluster/dist/MarkerCluster.Default.css',
'node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.css',
'node_modules/mapbox-gl/dist/mapbox-gl.css',
'node_modules/framework7/js/framework7.bundle.min.js',
'node_modules/jquery/dist/jquery.min.js',
'node_modules/leaflet/dist/leaflet.js',
'node_modules/leaflet.markercluster/dist/leaflet.markercluster.js',
'node_modules/mapbox-gl/dist/mapbox-gl.js',
'node_modules/jsbarcode/dist/JsBarcode.all.min.js',
'node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.js',
'node_modules/@zxing/library/umd/index.min.js',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.ttf',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.woff',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.woff2'
];
for (i in SETTINGS.maptileurls) {
cachedurls.push(SETTINGS.maptileurls[i].json);
}
for (i in SETTINGS.alertsounds) {
cachedurls.push("assets/audio/" + SETTINGS.alertsounds[i].file);
}
for (i in SETTINGS.weathericons) {
cachedurls.push("assets/images/weather-" + SETTINGS.weathericons[i] + ".svg");
}
var cacheFilled = false;
function fillCache(cachename) {
if ('caches' in window) {
// delete old caches
caches.keys().then(function (cacheNames) {
return Promise.all(cacheNames.map(function (oldCacheName) {
if (oldCacheName != cachename) {
return caches.delete(oldCacheName);
}
}));
});
cacheFilled = true; // assume good
caches.open(cachename).then(function (cache) {
for (i in cachedurls) {
try {
cache.add(cachedurls[i]);
} catch (ex) {
cacheFilled = false;
}
}
});
// Do it again in a little while
if (!cacheFilled) {
setTimeout(function () {
fillCache(cachename);
}, 1000 * 30);
}
}
}
async function clearAllCaches() {
const keys = await caches.keys();
for (const key of keys) {
caches.delete(key);
}
}

View File

@ -5,6 +5,8 @@
<title>PackageHelper</title> <title>PackageHelper</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="assets/images/icons/logo.svg" />
<link rel="manifest" href="manifest.json">
<link rel="stylesheet" href="node_modules/framework7/css/framework7.bundle.min.css" /> <link rel="stylesheet" href="node_modules/framework7/css/framework7.bundle.min.css" />
<link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" /> <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" />
<link rel="stylesheet" href="node_modules/material-design-icons/iconfont/material-icons.css" /> <link rel="stylesheet" href="node_modules/material-design-icons/iconfont/material-icons.css" />
@ -17,6 +19,8 @@
<link rel="stylesheet" href="assets/css/backdrop.css" /> <link rel="stylesheet" href="assets/css/backdrop.css" />
<link rel="stylesheet" href="assets/css/oled.css" /> <link rel="stylesheet" href="assets/css/oled.css" />
<link rel="stylesheet" href="assets/css/web-barcode.css" /> <link rel="stylesheet" href="assets/css/web-barcode.css" />
<link rel="stylesheet" href="assets/fonts/roboto/Roboto.css" />
<link rel="stylesheet" href="assets/css/tablet.css" />
<script src="cordova.js"></script> <script src="cordova.js"></script>
@ -39,13 +43,17 @@
<script src="node_modules/leaflet.markercluster/dist/leaflet.markercluster.js"></script> <script src="node_modules/leaflet.markercluster/dist/leaflet.markercluster.js"></script>
<script src="node_modules/mapbox-gl/dist/mapbox-gl.js"></script> <script src="node_modules/mapbox-gl/dist/mapbox-gl.js"></script>
<script src="node_modules/jsbarcode/dist/JsBarcode.all.min.js"></script> <script src="node_modules/jsbarcode/dist/JsBarcode.all.min.js"></script>
<script src="node_modules/bwip-js/dist/bwip-js-min.js"></script>
<script src="node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.js"></script> <script src="node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.js"></script>
<script src="settings.js"></script> <script src="settings.js"></script>
<script src="assets/js/storage.js"></script>
<script src="assets/js/platform.js"></script> <script src="assets/js/platform.js"></script>
<script src="assets/js/util.js"></script> <script src="assets/js/util.js"></script>
<script src="assets/js/activitylog.js"></script>
<script src="assets/js/audio.js"></script> <script src="assets/js/audio.js"></script>
<script src="assets/js/autofill.js"></script> <script src="assets/js/autofill.js"></script>
<script src="assets/js/packages.js"></script> <script src="assets/js/packages.js"></script>
@ -54,7 +62,25 @@
<script src="assets/js/map_leaflet.js"></script> <script src="assets/js/map_leaflet.js"></script>
<script src="assets/js/map_mapbox.js"></script> <script src="assets/js/map_mapbox.js"></script>
<script src="assets/js/map.js"></script> <script src="assets/js/map.js"></script>
<script src="assets/js/manage.js"></script> <script src="assets/js/sync.js"></script>
<script src="assets/js/notes.js"></script>
<script src="routes.js"></script> <script src="routes.js"></script>
<script src="assets/js/main.js"></script> <script src="assets/js/main.js"></script>
<script src="cache.js"></script>
<script>
if (platform_type == "browser") {
fillCache(SETTINGS.cacheversion);
}
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js').then(function (registration) {
console.log('Service worker registration succeeded:', registration);
}, /*catch*/ function (error) {
console.log('Service worker registration failed:', error);
});
} else {
console.log('Service workers are not supported.');
}
</script>

57
www/manifest.json Normal file
View File

@ -0,0 +1,57 @@
{
"name": "PackageHelper",
"short_name": "PackageHelper",
"icons": [
{
"src": "assets/images/icons/32x32.png",
"sizes": "32x32",
"type": "image/png"
},
{
"src": "assets/images/icons/128x128.png",
"sizes": "128x128",
"type": "image/png"
},
{
"src": "assets/images/icons/144x144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "assets/images/icons/152x152.png",
"sizes": "152x152",
"type": "image/png"
},
{
"src": "assets/images/icons/192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "assets/images/icons/256x256.png",
"sizes": "256x256",
"type": "image/png"
},
{
"src": "assets/images/icons/512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"scope": "/",
"lang": "en-US",
"categories": ["navigation", "productivity", "utilities", "weather"],
"prefer_related_applications": true,
"related_applications": [
{
"platform": "play",
"url": "https://play.google.com/store/apps/details?id=com.netsyms.PackageHelper",
"id": "com.netsyms.PackageHelper"
}
],
"start_url": "index.html",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#2196f3",
"iarc_rating_id": "0e146f9e-8f83-4981-8d7d-30b857ac8db6"
}

449
www/package-lock.json generated Normal file
View File

@ -0,0 +1,449 @@
{
"name": "PackageHelper",
"version": "1.5.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@fortawesome/fontawesome-free": {
"version": "5.12.1",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.12.1.tgz",
"integrity": "sha512-ZtjIIFplxncqxvogq148C3hBLQE+W3iJ8E4UvJ09zIJUgzwLcROsWwFDErVSXY2Plzao5J9KUYNHKHMEUYDMKw=="
},
"@mapbox/geojson-area": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz",
"integrity": "sha1-GNeBSqNr8j+7zDefjiaiKSfevxA=",
"requires": {
"wgs84": "0.0.0"
}
},
"@mapbox/geojson-rewind": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.4.1.tgz",
"integrity": "sha512-mxo2MEr7izA1uOXcDsw99Kgg6xW3P4H2j4n1lmldsgviIelpssvP+jQDivFKOHrOVJDpTTi5oZJvRcHtU9Uufw==",
"requires": {
"@mapbox/geojson-area": "0.2.2",
"concat-stream": "~1.6.0",
"minimist": "^1.2.5",
"sharkdown": "^0.1.0"
},
"dependencies": {
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
}
}
},
"@mapbox/geojson-types": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz",
"integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw=="
},
"@mapbox/jsonlint-lines-primitives": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz",
"integrity": "sha1-zlblOfg1UrWNENZy6k1vya3HsjQ="
},
"@mapbox/mapbox-gl-supported": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz",
"integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg=="
},
"@mapbox/point-geometry": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
"integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI="
},
"@mapbox/tiny-sdf": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz",
"integrity": "sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg=="
},
"@mapbox/unitbezier": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
"integrity": "sha1-FWUb1VOme4WB+zmIEMmK2Go0Uk4="
},
"@mapbox/vector-tile": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz",
"integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==",
"requires": {
"@mapbox/point-geometry": "~0.1.0"
}
},
"@mapbox/whoots-js": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz",
"integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q=="
},
"@zxing/library": {
"version": "0.15.2",
"resolved": "https://registry.npmjs.org/@zxing/library/-/library-0.15.2.tgz",
"integrity": "sha1-MCYHGsqAqErwlwbf+h04YFPhHvw=",
"requires": {
"text-encoding": "^0.7.0",
"ts-custom-error": "^3.0.0"
}
},
"ansicolors": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz",
"integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"bwip-js": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/bwip-js/-/bwip-js-2.0.6.tgz",
"integrity": "sha512-25zupM+tgx6NGmrg0kFhdkddeQ5+QnUMvHbb7cPNVbBdFDd0SOG3xRZ1ocGDEamhmM+fStglCLEkH21OpD4Y/w=="
},
"cardinal": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.4.tgz",
"integrity": "sha1-ylu2iltRG5D+k7ms6km97lwyv+I=",
"requires": {
"ansicolors": "~0.2.1",
"redeyed": "~0.4.0"
}
},
"concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"csscolorparser": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz",
"integrity": "sha1-s085HupNqPPpgjHizNjfnAQfFxs="
},
"dom7": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/dom7/-/dom7-2.1.3.tgz",
"integrity": "sha512-QTxHHDox+M6ZFz1zHPAHZKI3JOHY5iY4i9BK2uctlggxKQwRhO3q3HHFq1BKsT25Bm/ySSj70K6Wk/G4bs9rMQ==",
"requires": {
"ssr-window": "^1.0.1"
}
},
"earcut": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.2.tgz",
"integrity": "sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ=="
},
"esprima": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
"integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0="
},
"framework7": {
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/framework7/-/framework7-5.5.1.tgz",
"integrity": "sha512-Ei+LYZtBf+6kmz9u5YcgXKEFQAK4CRm4lQiUO2zh2HNsxXBJFh3nJ+usybbDmxDL4FZO6/8xF9tO7c77n2X4/A==",
"requires": {
"dom7": "^2.1.3",
"path-to-regexp": "^6.1.0",
"ssr-window": "^1.0.1",
"template7": "^1.4.2"
}
},
"geojson-vt": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz",
"integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg=="
},
"gl-matrix": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.2.1.tgz",
"integrity": "sha512-YYVO8jUSf6+SakL4AJmx9Jc7zAZhkJQ+WhdtX3VQe5PJdCOX6/ybY4x1vk+h94ePnjRn6uml68+QxTAJneUpvA=="
},
"grid-index": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz",
"integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA=="
},
"ieee754": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
"integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"jquery": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
"integrity": "sha1-cU8fjZ3eS9+lV2S6N+8hRjDYDvI="
},
"jsbarcode": {
"version": "3.11.0",
"resolved": "https://registry.npmjs.org/jsbarcode/-/jsbarcode-3.11.0.tgz",
"integrity": "sha1-IGI+AIsQHvRdDM6cgCLN9JvihUc="
},
"kdbush": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz",
"integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew=="
},
"leaflet": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.6.0.tgz",
"integrity": "sha1-rsuwRLlJ7ClGnusxx3qI4vRI8wg="
},
"leaflet-geometryutil": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/leaflet-geometryutil/-/leaflet-geometryutil-0.9.3.tgz",
"integrity": "sha512-Wi6YvfNx/Xu9q35AEfXpsUXmIFLen/MO+C2qimxHRnjyeyOxBhdcZa6kSiReaOX0cGK7yQInqrzz0dkIqZ8Dpg==",
"requires": {
"leaflet": ">=0.7.0"
}
},
"leaflet.locatecontrol": {
"version": "0.67.0",
"resolved": "https://registry.npmjs.org/leaflet.locatecontrol/-/leaflet.locatecontrol-0.67.0.tgz",
"integrity": "sha1-rf7r/WYvYdY5paX7o2I2hXn4rFU="
},
"leaflet.markercluster": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.4.1.tgz",
"integrity": "sha1-tT8sTyynMG3asdu28YYdXoqmxeU="
},
"mapbox-gl": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.8.1.tgz",
"integrity": "sha512-Q6c8XAFxHxMPnZIfiRsExk5dNN+dCgvbRNHPfX7hHV5LDcX5Ptc1MEVpOJEDyojuriZssAeWMTJob0hir9mpUw==",
"requires": {
"@mapbox/geojson-rewind": "^0.4.0",
"@mapbox/geojson-types": "^1.0.2",
"@mapbox/jsonlint-lines-primitives": "^2.0.2",
"@mapbox/mapbox-gl-supported": "^1.4.0",
"@mapbox/point-geometry": "^0.1.0",
"@mapbox/tiny-sdf": "^1.1.0",
"@mapbox/unitbezier": "^0.0.0",
"@mapbox/vector-tile": "^1.3.1",
"@mapbox/whoots-js": "^3.1.0",
"csscolorparser": "~1.0.2",
"earcut": "^2.2.2",
"geojson-vt": "^3.2.1",
"gl-matrix": "^3.0.0",
"grid-index": "^1.1.0",
"minimist": "0.0.8",
"murmurhash-js": "^1.0.0",
"pbf": "^3.2.1",
"potpack": "^1.0.1",
"quickselect": "^2.0.0",
"rw": "^1.3.3",
"supercluster": "^7.0.0",
"tinyqueue": "^2.0.0",
"vt-pbf": "^3.1.1"
}
},
"material-design-icons": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz",
"integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78="
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"murmurhash-js": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz",
"integrity": "sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E="
},
"path-to-regexp": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.1.0.tgz",
"integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw=="
},
"pbf": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz",
"integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==",
"requires": {
"ieee754": "^1.1.12",
"resolve-protobuf-schema": "^2.1.0"
}
},
"potpack": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.1.tgz",
"integrity": "sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw=="
},
"process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
"protocol-buffers-schema": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz",
"integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA=="
},
"quickselect": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
"integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
},
"readable-stream": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"redeyed": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz",
"integrity": "sha1-N+mQpvKyGyoRwuakj9QTVpjLqX8=",
"requires": {
"esprima": "~1.0.4"
}
},
"resolve-protobuf-schema": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
"integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
"requires": {
"protocol-buffers-schema": "^3.3.1"
}
},
"rw": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
"integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"sharkdown": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/sharkdown/-/sharkdown-0.1.1.tgz",
"integrity": "sha512-exwooSpmo5s45lrexgz6Q0rFQM574wYIX3iDZ7RLLqOb7IAoQZu9nxlZODU972g19sR69OIpKP2cpHTzU+PHIg==",
"requires": {
"cardinal": "~0.4.2",
"minimist": "0.0.5",
"split": "~0.2.10"
},
"dependencies": {
"minimist": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz",
"integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY="
}
}
},
"split": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz",
"integrity": "sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=",
"requires": {
"through": "2"
}
},
"ssr-window": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-1.0.1.tgz",
"integrity": "sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg=="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
},
"supercluster": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.0.0.tgz",
"integrity": "sha512-8VuHI8ynylYQj7Qf6PBMWy1PdgsnBiIxujOgc9Z83QvJ8ualIYWNx2iMKyKeC4DZI5ntD9tz/CIwwZvIelixsA==",
"requires": {
"kdbush": "^3.0.0"
}
},
"template7": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/template7/-/template7-1.4.2.tgz",
"integrity": "sha512-eoKnScBMDk7lyj7+iCzKbxGiSLLlQk0DNvmclyJuMCUKxy9JrFuAB+GD5iplF4WiQPtMdI06CHHks3avL22JXA=="
},
"text-encoding": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.7.0.tgz",
"integrity": "sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==",
"optional": true
},
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"tinyqueue": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz",
"integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA=="
},
"ts-custom-error": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.1.1.tgz",
"integrity": "sha512-f/syoy+pTE4z82qaiRuthEeZtCGNKzlfs0Zc8jpQFcz/CYMaFSwFSdfFt1sSFnPlDLOEm7RCROdIxZ44N8UlwA=="
},
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"vt-pbf": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.1.tgz",
"integrity": "sha512-pHjWdrIoxurpmTcbfBWXaPwSmtPAHS105253P1qyEfSTV2HJddqjM+kIHquaT/L6lVJIk9ltTGc0IxR/G47hYA==",
"requires": {
"@mapbox/point-geometry": "0.1.0",
"@mapbox/vector-tile": "^1.3.1",
"pbf": "^3.0.5"
}
},
"wgs84": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/wgs84/-/wgs84-0.0.0.tgz",
"integrity": "sha1-NP3FVZF7blfPKigu0ENxDASc3HY="
}
}
}

View File

@ -1,19 +1,20 @@
{ {
"name": "PackageHelper", "name": "PackageHelper",
"version": "1.3.0", "version": "1.5.0",
"main": "index.html", "main": "index.html",
"license": "MPL-2.0", "license": "MPL-2.0",
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^5.10.2", "@fortawesome/fontawesome-free": "^5.12.1",
"@zxing/library": "^0.15.2", "@zxing/library": "^0.15.2",
"framework7": "^5.1.3", "bwip-js": "^2.0.6",
"framework7": "^5.5.1",
"jquery": "^3.4.1", "jquery": "^3.4.1",
"jsbarcode": "^3.11.0", "jsbarcode": "^3.11.0",
"leaflet": "^1.5.1", "leaflet": "^1.5.1",
"leaflet-geometryutil": "^0.9.1", "leaflet-geometryutil": "^0.9.1",
"leaflet.locatecontrol": "^0.67.0", "leaflet.locatecontrol": "^0.67.0",
"leaflet.markercluster": "^1.4.1", "leaflet.markercluster": "^1.4.1",
"mapbox-gl": "^1.6.1", "mapbox-gl": "^1.8.1",
"material-design-icons": "^3.0.1" "material-design-icons": "^3.0.1"
}, },
"devDependencies": {} "devDependencies": {}

171
www/pages/add.html Normal file
View File

@ -0,0 +1,171 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<div class="page" data-name="add">
<div class="navbar no-tablet">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="left">
<a class="link" onclick="router.back({force: true, ignoreCache: true})">
<i class="icon icon-back"></i>
<span class="if-not-md">Back</span>
</a>
</div>
<div class="title">Add Items</div>
<div class="right">
<a class="link popover-open" data-popover="#popover-add-options">
<i class="icon material-icons">more_vert</i>
</a>
</div>
</div>
</div>
<div class="popover" id="popover-add-options">
<div class="popover-inner">
<div class="list">
<ul>
<li><a class="list-button item-link popover-close" href="" onclick="toggleLettersInAddressNumber()"><label class="checkbox"><input type="checkbox" id="address-has-letters-checkbox"><i class="icon-checkbox"></i></label> Address contains letters</a></li>
</ul>
</div>
</div>
</div>
<div class="toolbar tabbar toolbar-bottom">
<div class="toolbar-inner">
<a href="#add-tab" class="tab-link tab-link-active">Add</a>
<a href="#history-tab" class="tab-link">Recent</a>
</div>
</div>
{{#if nottablet}}
<div class="tabs-swipeable-wrap">
{{/if}}
<div class="tabs">
<div id="add-tab" class="tab tab-active">
<div class="navbar only-tablet">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="left">
<a class="link" onclick="router.back({force: true, ignoreCache: true})">
<i class="icon icon-back"></i>
<span class="if-not-md">Back</span>
</a>
</div>
<div class="title">Add Items</div>
<div class="right">
<a class="link popover-open" data-popover="#popover-add-options">
<i class="icon material-icons">more_vert</i>
</a>
</div>
</div>
</div>
<div class="page-content row justify-content-center margin-top-tablet padding-bottom-tablet">
<div class="list no-margin-top col-100 medium-80 large-50 elevation-tablet">
<ul>
<li class="item-divider">Address</li>
<li>
<div class="row justify-content-stretch">
<div class="col-70 item-content item-input">
<div class="item-inner">
<div class="item-title item-label">Number</div>
<div class="item-input-wrap">
<input type="number" name="number" id="housenumberinput" placeholder="1234" value="" autocomplete="off" autocorrect="off">
</div>
</div>
</div>
<div class="col-30 item-content item-input no-padding-left">
<div class="item-inner no-padding-right">
<div class="item-title item-label">Unit</div>
<div class="item-input-wrap">
<input type="text" name="unit" id="unitinput" placeholder="" value="" autocomplete="off" autocorrect="off">
</div>
</div>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">Street</div>
<div class="item-input-wrap">
<input type="text" name="street" id="streetInput" placeholder="Road Dr" autocomplete="off" autocorrect="off">
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li>
<div class="row justify-content-stretch">
<div class="col-70 item-content item-input">
<div class="item-inner">
<div class="item-title item-label">City, State</div>
<div class="item-input-wrap">
<input type="text" name="citystate" placeholder="City, ST" value="" autocomplete="off" autocorrect="off">
</div>
</div>
</div>
<div class="col-30 item-content item-input no-padding-left">
<div class="item-inner no-padding-right">
<div class="item-title item-label">ZIP</div>
<div class="item-input-wrap">
<input type="text" name="zipcode" placeholder="12345" value="" autocomplete="off" autocorrect="off">
</div>
</div>
</div>
</div>
</li>
<li class="item-divider">Item Type</li>
{{#each itemtypes}}
<li>
<label class="item-radio item-content">
<input type="radio" name="itemtype" value="{{id}}" {{#if selected}}data-default="1" checked{{/if}} />
<i class="icon icon-radio"></i>
<div class="item-inner">
<div class="item-title"><i class="{{icon}}"></i> {{name}}</div>
</div>
</label>
</li>
{{/each}}
</ul>
</div>
</div>
<div class="fab fab-right-bottom no-tablet">
<a class="addpackagebtn">
<i class="icon material-icons">add</i>
</a>
</div>
<div class="fab fab-extended fab-right-bottom only-tablet">
<a class="addpackagebtn">
<i class="icon material-icons">add</i>
<div class="fab-text">Add Item</div>
</a>
</div>
</div>
<div id="history-tab" class="page-content tab">
<div class="navbar only-tablet">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="title">Recent Items</div>
</div>
</div>
<div class="block text-align-center noselect" id="no-history">
<img style="width: 60%; max-width: 300px; max-height: 40vh;" src="assets/images/history-dashed.svg" class="margin-vertical" />
<div class="margin-top">No recently added items! <span id="history-empty-swipe-prompt">Swipe <i class="fas fa-arrow-left"></i> to add some.</span></div>
</div>
<ul class="list no-hairlines tablet-inset no-margin-top" id="historylist">
<!-- Packages go here -->
</ul>
<div class="block text-align-center display-none noselect" id="tap-to-remove-history-prompt">
<span class="block-header"><span class="taptext">Tap</span><span class="clicktext">Click</span> a recently added item to delete it.</span>
</div>
</div>
</div>
{{#if nottablet}}
</div>
{{/if}}
<script src="assets/js/add.js"></script>
</div>

View File

@ -419,6 +419,34 @@ SOFTWARE.
----- -----
The following software may be included in this product: bwip-js. A copy of the source code may be downloaded from https://github.com/metafloor/bwip-js.git. This software contains the following license and notice below:
bwip-js : Barcode Writer in Pure JavaScript
Copyright (c) 2011-2019 Mark Warren
The MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: cardinal, redeyed. A copy of the source code may be downloaded from git://github.com/thlorenz/cardinal.git (cardinal), git://github.com/thlorenz/redeyed.git (redeyed). This software contains the following license and notice below: The following software may be included in this product: cardinal, redeyed. A copy of the source code may be downloaded from git://github.com/thlorenz/cardinal.git (cardinal), git://github.com/thlorenz/redeyed.git (redeyed). This software contains the following license and notice below:
Copyright 2012 Thorsten Lorenz. Copyright 2012 Thorsten Lorenz.
@ -546,6 +574,31 @@ THIS SOFTWARE.
----- -----
The following software may be included in this product: framework7. A copy of the source code may be downloaded from https://github.com/framework7io/framework7.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2014 Vladimir Kharlampidi
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----
The following software may be included in this product: geojson-vt. A copy of the source code may be downloaded from git://github.com/mapbox/geojson-vt.git. This software contains the following license and notice below: The following software may be included in this product: geojson-vt. A copy of the source code may be downloaded from git://github.com/mapbox/geojson-vt.git. This software contains the following license and notice below:
ISC License ISC License
@ -568,7 +621,7 @@ THIS SOFTWARE.
The following software may be included in this product: gl-matrix. A copy of the source code may be downloaded from https://github.com/toji/gl-matrix.git. This software contains the following license and notice below: The following software may be included in this product: gl-matrix. A copy of the source code may be downloaded from https://github.com/toji/gl-matrix.git. This software contains the following license and notice below:
Copyright (c) 2015-2019, Brandon Jones, Colin MacKenzie IV. Copyright (c) 2015-2020, Brandon Jones, Colin MacKenzie IV.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@ -2278,7 +2331,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----- -----
The following software may be included in this product: concat-map, defined, minimist, resumer. A copy of the source code may be downloaded from git://github.com/substack/node-concat-map.git (concat-map), git://github.com/substack/defined.git (defined), git://github.com/substack/minimist.git (minimist), git://github.com/substack/resumer.git (resumer). This software contains the following license and notice below: The following software may be included in this product: concat-map. A copy of the source code may be downloaded from git://github.com/substack/node-concat-map.git. This software contains the following license and notice below:
This software is released under the MIT license: This software is released under the MIT license:
@ -3049,7 +3102,7 @@ The Apache Software Foundation (http://www.apache.org/).
----- -----
The following software may be included in this product: cordova-plugin-device, cordova-plugin-inappbrowser, cordova-plugin-whitelist. A copy of the source code may be downloaded from https://github.com/apache/cordova-plugin-device (cordova-plugin-device), https://github.com/apache/cordova-plugin-inappbrowser (cordova-plugin-inappbrowser), https://github.com/apache/cordova-plugin-whitelist (cordova-plugin-whitelist). This software contains the following license and notice below: The following software may be included in this product: cordova-plugin-battery-status, cordova-plugin-device, cordova-plugin-inappbrowser, cordova-plugin-statusbar, cordova-plugin-whitelist. A copy of the source code may be downloaded from https://github.com/apache/cordova-plugin-battery-status (cordova-plugin-battery-status), https://github.com/apache/cordova-plugin-device (cordova-plugin-device), https://github.com/apache/cordova-plugin-inappbrowser (cordova-plugin-inappbrowser), https://github.com/apache/cordova-plugin-statusbar (cordova-plugin-statusbar), https://github.com/apache/cordova-plugin-whitelist (cordova-plugin-whitelist). This software contains the following license and notice below:
Apache License Apache License
Version 2.0, January 2004 Version 2.0, January 2004
@ -3758,58 +3811,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: deep-equal. A copy of the source code may be downloaded from http://github.com/substack/node-deep-equal.git. This software contains the following license and notice below:
MIT License
Copyright (c) 2012, 2013, 2014 James Halliday <mail@substack.net>, 2009 Thomas Robinson <280north.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: define-properties, es-abstract. A copy of the source code may be downloaded from git://github.com/ljharb/define-properties.git (define-properties), git://github.com/ljharb/es-abstract.git (es-abstract). This software contains the following license and notice below:
The MIT License (MIT)
Copyright (C) 2015 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: destroy, ee-first, mime-db. A copy of the source code may be downloaded from https://github.com/stream-utils/destroy.git (destroy), https://github.com/jonathanong/ee-first.git (ee-first), https://github.com/jshttp/mime-db.git (mime-db). This software contains the following license and notice below: The following software may be included in this product: destroy, ee-first, mime-db. A copy of the source code may be downloaded from https://github.com/stream-utils/destroy.git (destroy), https://github.com/jonathanong/ee-first.git (ee-first), https://github.com/jshttp/mime-db.git (mime-db). This software contains the following license and notice below:
The MIT License (MIT) The MIT License (MIT)
@ -4130,32 +4131,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: es-to-primitive, is-callable, is-date-object, is-symbol, string.prototype.trimleft, string.prototype.trimright. A copy of the source code may be downloaded from git://github.com/ljharb/es-to-primitive.git (es-to-primitive), git://github.com/ljharb/is-callable.git (is-callable), git://github.com/ljharb/is-date-object.git (is-date-object), git://github.com/inspect-js/is-symbol.git (is-symbol), git://github.com/es-shims/String.prototype.trimLeft.git (string.prototype.trimleft), git://github.com/es-shims/String.prototype.trimRight.git (string.prototype.trimright). This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2015 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: escape-html. A copy of the source code may be downloaded from https://github.com/component/escape-html.git. This software contains the following license and notice below: The following software may be included in this product: escape-html. A copy of the source code may be downloaded from https://github.com/component/escape-html.git. This software contains the following license and notice below:
(The MIT License) (The MIT License)
@ -4294,32 +4269,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----- -----
The following software may be included in this product: for-each. A copy of the source code may be downloaded from git://github.com/Raynos/for-each.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2012 Raynos.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: fresh. A copy of the source code may be downloaded from https://github.com/jshttp/fresh.git. This software contains the following license and notice below: The following software may be included in this product: fresh. A copy of the source code may be downloaded from https://github.com/jshttp/fresh.git. This software contains the following license and notice below:
(The MIT License) (The MIT License)
@ -4416,30 +4365,6 @@ the licensed code:
----- -----
The following software may be included in this product: function-bind. A copy of the source code may be downloaded from git://github.com/Raynos/function-bind.git. This software contains the following license and notice below:
Copyright (c) 2013 Raynos.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: glob. A copy of the source code may be downloaded from git://github.com/isaacs/node-glob.git. This software contains the following license and notice below: The following software may be included in this product: glob. A copy of the source code may be downloaded from git://github.com/isaacs/node-glob.git. This software contains the following license and notice below:
The ISC License The ISC License
@ -4486,32 +4411,6 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
----- -----
The following software may be included in this product: has-symbols. A copy of the source code may be downloaded from git://github.com/ljharb/has-symbols.git. This software contains the following license and notice below:
MIT License
Copyright (c) 2016 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: http-errors. A copy of the source code may be downloaded from https://github.com/jshttp/http-errors.git. This software contains the following license and notice below: The following software may be included in this product: http-errors. A copy of the source code may be downloaded from https://github.com/jshttp/http-errors.git. This software contains the following license and notice below:
The MIT License (MIT) The MIT License (MIT)
@ -4628,31 +4527,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: is-arguments, is-regex, object-is. A copy of the source code may be downloaded from git://github.com/ljharb/is-arguments.git (is-arguments), git://github.com/ljharb/is-regex.git (is-regex), git://github.com/es-shims/object-is.git (object-is). This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2014 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----
The following software may be included in this product: isexe, minimatch, nopt, once, osenv, semver, which, wrappy. A copy of the source code may be downloaded from git+https://github.com/isaacs/isexe.git (isexe), git://github.com/isaacs/minimatch.git (minimatch), https://github.com/npm/nopt.git (nopt), git://github.com/isaacs/once (once), https://github.com/npm/osenv (osenv), https://github.com/npm/node-semver (semver), git://github.com/isaacs/node-which.git (which), https://github.com/npm/wrappy (wrappy). This software contains the following license and notice below: The following software may be included in this product: isexe, minimatch, nopt, once, osenv, semver, which, wrappy. A copy of the source code may be downloaded from git+https://github.com/isaacs/isexe.git (isexe), git://github.com/isaacs/minimatch.git (minimatch), https://github.com/npm/nopt.git (nopt), git://github.com/isaacs/once (once), https://github.com/npm/osenv (osenv), https://github.com/npm/node-semver (semver), git://github.com/isaacs/node-which.git (which), https://github.com/npm/wrappy (wrappy). This software contains the following license and notice below:
The ISC License The ISC License
@ -4883,84 +4757,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: object-inspect. A copy of the source code may be downloaded from git://github.com/substack/object-inspect.git. This software contains the following license and notice below:
MIT License
Copyright (c) 2013 James Halliday
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: object-keys. A copy of the source code may be downloaded from git://github.com/ljharb/object-keys.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (C) 2013 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: object.assign. A copy of the source code may be downloaded from git://github.com/ljharb/object.assign.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2014 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: on-finished. A copy of the source code may be downloaded from https://github.com/jshttp/on-finished.git. This software contains the following license and notice below: The following software may be included in this product: on-finished. A copy of the source code may be downloaded from https://github.com/jshttp/on-finished.git. This software contains the following license and notice below:
(The MIT License) (The MIT License)
@ -5017,32 +4813,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----- -----
The following software may be included in this product: path-parse. A copy of the source code may be downloaded from https://github.com/jbgutierrez/path-parse.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2015 Javier Blanco
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: plist. A copy of the source code may be downloaded from git://github.com/TooTallNate/node-plist.git. This software contains the following license and notice below: The following software may be included in this product: plist. A copy of the source code may be downloaded from git://github.com/TooTallNate/node-plist.git. This software contains the following license and notice below:
(The MIT License) (The MIT License)
@ -5183,58 +4953,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: regexp.prototype.flags. A copy of the source code may be downloaded from git://github.com/es-shims/RegExp.prototype.flags.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (C) 2014 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-----
The following software may be included in this product: resolve, tape. A copy of the source code may be downloaded from git://github.com/browserify/resolve.git (resolve), git://github.com/substack/tape.git (tape). This software contains the following license and notice below:
MIT License
Copyright (c) 2012 James Halliday
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: safe-buffer. A copy of the source code may be downloaded from git://github.com/feross/safe-buffer.git. This software contains the following license and notice below: The following software may be included in this product: safe-buffer. A copy of the source code may be downloaded from git://github.com/feross/safe-buffer.git. This software contains the following license and notice below:
The MIT License (MIT) The MIT License (MIT)
@ -5493,52 +5211,6 @@ THE SOFTWARE.
----- -----
The following software may be included in this product: string.prototype.trim. A copy of the source code may be downloaded from git://github.com/es-shims/String.prototype.trim.git. This software contains the following license and notice below:
The MIT License (MIT)
Copyright (c) 2015 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: through. A copy of the source code may be downloaded from https://github.com/dominictarr/through.git. This software contains the following license and notice below:
Apache License, Version 2.0
Copyright (c) 2011 Dominic Tarr
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-----
The following software may be included in this product: toidentifier. A copy of the source code may be downloaded from https://github.com/component/toidentifier.git. This software contains the following license and notice below: The following software may be included in this product: toidentifier. A copy of the source code may be downloaded from https://github.com/component/toidentifier.git. This software contains the following license and notice below:
MIT License MIT License
@ -5567,7 +5239,7 @@ SOFTWARE.
The following software may be included in this product: underscore. A copy of the source code may be downloaded from git://github.com/jashkenas/underscore.git. This software contains the following license and notice below: The following software may be included in this product: underscore. A copy of the source code may be downloaded from git://github.com/jashkenas/underscore.git. This software contains the following license and notice below:
Copyright (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Copyright (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative
Reporters & Editors Reporters & Editors
Permission is hereby granted, free of charge, to any person Permission is hereby granted, free of charge, to any person

View File

@ -20,19 +20,16 @@
<div class="page-content"> <div class="page-content">
<div class="block-title">Manage Items</div> <div class="block-title">Manage Items</div>
<div class="block"> <div class="block">
Swipe <i class="fas fa-arrow-right"></i> left-to-right on a list entry <span class="taptext">Tap</span><span class="clicktext">Click</span> on a list entry
to show the actions you can take. to show the actions you can take.
These actions are marking the item as delivered/undelivered, or These actions are marking the item as delivered/undelivered,
navigating to its location with your device's default maps app. navigating to its location with your device's default maps app,
<br /> and deleting the item.
Swipe <i class="fas fa-arrow-left"></i> right-to-left on a list entry
and tap
<span class="button button-small display-inline button-fill color-red text-color-white"><i class="material-icons">delete</i> Delete</span> to remove it.
</div> </div>
<div class="block-title">Clear the List</div> <div class="block-title">Clear the List</div>
<div class="block"> <div class="block">
Tap the <span class="color-red text-color-primary"><i class="material-icons">delete</i></span> <span class="taptext">Tap</span><span class="clicktext">Click</span> the <span class="color-red text-color-primary"><i class="material-icons">delete</i></span>
button to remove all items from the list. This cannot be undone, so it's button to remove all items from the list. This cannot be undone, so it's
a good idea to do it at the end of the day or in the morning before you start. a good idea to do it at the end of the day or in the morning before you start.
Note that clearing the list does not affect the address autofill. Note that clearing the list does not affect the address autofill.
@ -40,14 +37,14 @@
<div class="block-title">Search</div> <div class="block-title">Search</div>
<div class="block"> <div class="block">
Tap the <i class="material-icons text-color-primary">search</i> button to open a search <span class="taptext">Tap</span><span class="clicktext">Click</span> the <i class="material-icons text-color-primary">search</i> button to open a search
box. Type in this box to hide any list entries that don't contain your box. Type in this box to hide any list entries that don't contain your
search query. search query.
</div> </div>
<div class="block-title">Sort Items</div> <div class="block-title">Sort Items</div>
<div class="block"> <div class="block">
Tap the <i class="material-icons text-color-primary">sort</i> button to sort <span class="taptext">Tap</span><span class="clicktext">Click</span> the <i class="material-icons text-color-primary">sort</i> button to sort
the list. You can sort by distance from your current the list. You can sort by distance from your current
location, alphabetically by street name, and numerically by location, alphabetically by street name, and numerically by
address number. address number.

View File

@ -20,21 +20,22 @@
<div class="page-content"> <div class="page-content">
<div class="block-title">Manage Items</div> <div class="block-title">Manage Items</div>
<div class="block"> <div class="block">
Tap on an icon to see the item(s) at that location. <span class="taptext">Tap</span><span class="clicktext">Click</span> on an icon to see the item(s) at that location.
Tap on an item to toggle it between delivered and <span class="taptext">Tap</span><span class="clicktext">Click</span> on an item to toggle it between delivered and
undelivered. If two or more addresses are very close undelivered. If two or more addresses are very close
together, their items will be grouped under one icon. together, their items will be grouped under one icon.
</div> </div>
<div class="block-title">Move the Map</div> <div class="block-title">Move the Map</div>
<div class="block"> <div class="block">
Pinch with two fingers or scroll with a mouse to zoom <span class="taptext">Pinch with two fingers</span><span class="clicktext">Scroll with a mouse</span>
in and out. You can also double-tap to zoom in. to zoom
Drag with one finger or a mouse to move (pan) the map. in and out. You can also double-<span class="taptext">tap</span><span class="clicktext">click</span> to zoom in.
Drag with <span class="taptext">one finger</span><span class="clicktext">the mouse</span> to move (pan) the map.
<br /> <br />
If you prefer, tap or click If you prefer, <span class="taptext">tap</span><span class="clicktext">click</span>
<span class="button button-small display-inline button-fill color-white text-color-black"><i class="fas fa-plus"></i></span> <span class="button button-small display-inline button-fill color-white text-color-black"><i class="fas fa-plus"></i></span>
and and
<span class="button button-small display-inline button-fill color-white text-color-black"><i class="fas fa-minus"></i></span> <span class="button button-small display-inline button-fill color-white text-color-black"><i class="fas fa-minus"></i></span>
@ -45,13 +46,13 @@
Drag on Drag on
<span class="button button-small display-inline button-fill color-white text-color-black"><i class="fas fa-sort"></i></span> <span class="button button-small display-inline button-fill color-white text-color-black"><i class="fas fa-sort"></i></span>
to rotate and tilt the map. Dragging left and right rotates, up and down tilts. to rotate and tilt the map. Dragging left and right rotates, up and down tilts.
You can also rotate with two fingers by twisting them around each other, You can also rotate with <span class="taptext">two fingers by twisting them around each other,
or with a keyboard by holding Ctrl and dragging the mouse. or with</span> a keyboard by holding Ctrl and dragging <span class="taptext">your finger</span><span class="clicktext">the mouse</span>.
</div> </div>
<div class="block-title">Follow Location</div> <div class="block-title">Follow Location</div>
<div class="block"> <div class="block">
Tap <span class="taptext">Tap</span><span class="clicktext">Click</span>
<span class="button button-small display-inline button-fill color-white text-color-black"><i class='material-icons'>my_location</i></span> <span class="button button-small display-inline button-fill color-white text-color-black"><i class='material-icons'>my_location</i></span>
or or
<span class="button button-small display-inline button-fill color-white text-color-black"><i class='far fa-compass'></i></span> <span class="button button-small display-inline button-fill color-white text-color-black"><i class='far fa-compass'></i></span>

View File

@ -11,8 +11,8 @@
</div> </div>
</div> </div>
<div class="page-content"> <div class="page-content noselect">
<div class="row margin-top"> <div class="row margin-top noselect">
<div class="col text-align-center"> <div class="col text-align-center">
<div <div
id="delivery-progress-gauge" id="delivery-progress-gauge"
@ -27,49 +27,43 @@
></div> ></div>
</div> </div>
</div> </div>
<div class="list no-hairlines tablet-inset no-margin-top"> {{#if oldui}}
<ul> <div class="row justify-content-center">
<li> <div class="col-100 small-80 medium-60 large-50 xlarge-40">
<a href="/manage" class="item-link item-content"> <div class="list no-hairlines tablet-inset no-margin-top">
<div class="item-media"><i class="icon fas fa-truck-loading"></i></div> <ul>
<div class="item-inner"> {{#each pages}}
<div class="item-title">Add Items</div> <li>
</div> <a href="{{href}}" class="item-link item-content">
</a> <div class="item-media"><i class="icon {{icon}}"></i></div>
</li> <div class="item-inner">
<li> <div class="item-title">{{title}}</div>
<a href="/list" class="item-link item-content"> </div>
<div class="item-media"><i class="icon fas fa-list"></i></div> </a>
<div class="item-inner"> </li>
<div class="item-title">Item List</div> {{/each}}
</div> </ul>
</a> </div>
</li> </div>
<li>
<a href="/map" class="item-link item-content">
<div class="item-media"><i class="icon fas fa-map"></i></div>
<div class="item-inner">
<div class="item-title">Delivery Map</div>
</div>
</a>
</li>
<li>
<a href="/toolbox" class="item-link item-content">
<div class="item-media"><i class="icon fas fa-tools"></i></div>
<div class="item-inner">
<div class="item-title">Toolbox</div>
</div>
</a>
</li>
<li>
<a href="/settings" class="item-link item-content">
<div class="item-media"><i class="icon fas fa-cog"></i></div>
<div class="item-inner">
<div class="item-title">Settings</div>
</div>
</a>
</li>
</ul>
</div> </div>
{{else}}
<div class="row justify-content-center margin-top">
<div class="col-100 medium-90 xlarge-75 margin-horizontal">
<div class="row">
{{#each pages}}
<div class="col-50 small-33 large-15">
<div class="card" onclick="router.navigate('{{href}}');" style="cursor: pointer; background-image: url(assets/images/bgs/{{bg}}); background-repeat: no-repeat; background-position: center; background-size: cover;">
<div class="card-content text-align-center padding-vertical">
<h1 class="no-margin"><i class="{{icon}}"></i></h1>
<br />
<span style="font-weight: 700;">{{title}}</span>
</div>
</div>
</div>
{{/each}}
</div>
</div>
</div>
{{/if}}
</div> </div>
</div> </div>

View File

@ -47,14 +47,19 @@
<div class="page-content"> <div class="page-content">
<div id="no-packages-display" class="block display-none text-align-center"> <div class="row justify-content-center">
<img style="width: 60%; max-width: 300px; max-height: 40vh;" src="assets/images/box-open-dashed.svg" class="margin-vertical" /> <div class="col-100 small-80 medium-60 large-50 xlarge-40">
<div class="margin-top"><a href="/manage" class="button button-round button-fill margin-horizontal">Add a Package</a></div> <div id="no-packages-display" class="block display-none text-align-center noselect">
<img style="width: 60%; max-width: 300px; max-height: 40vh;" src="assets/images/box-open-dashed.svg" class="margin-vertical" />
<div class="margin-top"><a href="/add" class="button button-round button-fill margin-horizontal">Add a Package</a></div>
</div>
<div class="list no-hairlines tablet-inset no-margin-top accordion-list" id="addresslist">
<ul>
<!-- Packages go here -->
</ul>
</div>
</div>
</div> </div>
<ul class="list no-hairlines tablet-inset no-margin-top" id="addresslist">
<!-- Packages go here -->
</ul>
</div> </div>
<div class="popover" id="popover-sort-list"> <div class="popover" id="popover-sort-list">

24
www/pages/login.html Normal file
View File

@ -0,0 +1,24 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<div class="page" data-name="login">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="left">
<a href="#" class="link icon-only back">
<i class="icon icon-back"></i>
</a>
</div>
<div class="title">Log In</div>
</div>
</div>
<div class="page-content" style="overflow-y: hidden;"> <!-- overflow-y:hidden removes an annoying pointless scrollbar that wiggles a few pixels up and down -->
<iframe src="assets/iframeloading.html" id="loginframe" style="border: 0; width: 100%; height: calc(100vh - var(--f7-navbar-height));"></iframe>
</div>
<script src="assets/js/login.js"></script>
</div>

View File

@ -1,103 +0,0 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<div class="page" data-name="manage">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="left">
<a class="link" onclick="router.back({force: true, ignoreCache: true})">
<i class="icon icon-back"></i>
<span class="if-not-md">Back</span>
</a>
</div>
<div class="title">Add Items</div>
<!--<div class="right">
<a class="link" id="addpackagebtn">
<i class="icon fas fa-plus"></i>
<span>Add</span>
</a>
</div>-->
</div>
</div>
<div class="toolbar tabbar toolbar-bottom">
<div class="toolbar-inner">
<a href="#add-tab" class="tab-link tab-link-active">Add</a>
<a href="#history-tab" class="tab-link">Recent</a>
</div>
</div>
<div class="tabs-swipeable-wrap">
<div class="tabs">
<div id="add-tab" class="tab tab-active">
<div class="page-content">
<div class="list no-margin-top">
<ul>
<li class="item-divider">Address</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">Address Number</div>
<div class="item-input-wrap">
<input type="number" name="number" placeholder="1234" autocomplete="off" autocorrect="off" autocapitalize="off">
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">Street</div>
<div class="item-input-wrap">
<input type="text" name="street" id="streetInput" placeholder="Road Drive" autocomplete="off" autocorrect="off">
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">City, State, ZIP</div>
<div class="item-input-wrap">
<input type="text" name="citystate" placeholder="City, ST, 12345" value="" autocomplete="off" autocorrect="off">
</div>
</div>
</li>
<li class="item-divider">Item Type</li>
{{#each itemtypes}}
<li>
<label class="item-radio item-content">
<input type="radio" name="itemtype" value="{{id}}" {{#if selected}}data-default="1" checked{{/if}} />
<i class="icon icon-radio"></i>
<div class="item-inner">
<div class="item-title"><i class="{{icon}}"></i> {{name}}</div>
</div>
</label>
</li>
{{/each}}
</ul>
</div>
</div>
<div class="fab fab-right-bottom">
<a id="addpackagebtn">
<i class="icon material-icons">add</i>
</a>
</div>
</div>
<div id="history-tab" class="page-content tab">
<div class="block text-align-center" id="no-history">
<img style="width: 60%; max-width: 300px; max-height: 40vh;" src="assets/images/history-dashed.svg" class="margin-vertical" />
<div class="margin-top">No recently added items! Swipe <i class="fas fa-arrow-left"></i> to add some.</div>
</div>
<ul class="list no-hairlines tablet-inset no-margin-top" id="historylist">
<!-- Packages go here -->
</ul>
</div>
</div>
</div>
<script src="assets/js/manage.js"></script>
</div>

View File

@ -35,11 +35,11 @@
<div class="sheet-modal" id="package-info-sheet"> <div class="sheet-modal" id="package-info-sheet">
<div class="toolbar"> <div class="toolbar">
<div class="toolbar-inner"> <div class="toolbar-inner">
<a class="link" id="package-info-get-directions"><i class="material-icons">directions</i></a> <a class="link geolink" id="package-info-get-directions"><i class="material-icons">directions</i></a>
<a class="link sheet-close" href="#">Done</a> <a class="link sheet-close" href="#">Done</a>
</div> </div>
</div> </div>
<div class="sheet-modal-inner" id="package-info-sheet-inner" style="overflow-y: scroll;"> <div class="sheet-modal-inner" id="package-info-sheet-inner" style="overflow-y: auto;">
<div class="list no-hairlines no-margin-top"> <div class="list no-hairlines no-margin-top">
<ul> <ul>
<!-- packages go here --> <!-- packages go here -->

81
www/pages/myroute.html Normal file
View File

@ -0,0 +1,81 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<div class="page" data-name="myroute">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="left">
<a href="#" class="link icon-only back">
<i class="icon icon-back"></i>
</a>
</div>
<div class="title">Route Notes</div>
<div class="right">
<a class="link icon-only searchbar-enable" data-searchbar=".notes-list-searchbar">
<i class="icon material-icons">search</i>
</a>
</div>
<form class="searchbar searchbar-expandable notes-list-searchbar">
<div class="searchbar-inner">
<div class="searchbar-input-wrap">
<input type="search" placeholder="Search"/>
<i class="searchbar-icon"></i>
<span class="input-clear-button"></span>
</div>
<span class="searchbar-disable-button">Cancel</span>
</div>
</form>
</div>
</div>
<div class="fab fab-right-bottom">
<a href="/myroute/addnote">
<i class="icon material-icons">add</i>
</a>
</div>
<div class="page-content page-content-fab-pad">
<div class="block-title">Notes</div>
{{#if notes}}
<div class="list accordion-list" id="noteslist">
<ul>
{{#each notes}}
<li class="accordion-item route-note" data-noteid="{{id}}">
<a href="#" class="item-content item-link">
<div class="item-inner">
<div class="item-title">{{number}} {{street}}</div>
</div>
</a>
<div class="accordion-item-content">
<div class="block">
<a class="button button-small button-outline editnotebtn display-inline-block" data-noteid="{{id}}" href="#"><i class="fas fa-pencil-alt fa-fw"></i> Edit</a>
<a class="button button-small button-outline deletenotebtn display-inline-block color-red" data-noteid="{{id}}" href="#"><i class="fas fa-trash fa-fw"></i> Delete</a>
{{#if notes}}
<p>{{newlinestobr notes}}</p>
{{/if}}
<div class="margin-vertical-half">
<ul>
{{#each toggles}}
{{#if this}}
<li><i class="{{notetoggleicon @key}}"></i> {{notetogglename @key}}</li>
{{/if}}
{{/each}}
</ul>
</div>
</div>
</div>
</li>
{{/each}}
</ul>
</div>
{{else}}
<div class="block text-align-center">
<img style="width: 60%; max-width: 300px; max-height: 40vh;" src="assets/images/note-dashed.svg" class="margin-vertical" />
<div class="margin-top">Press <i class="material-icons">add</i> to add a note.</div>
</div>
{{/if}}
</div>
</div>

View File

@ -0,0 +1,99 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<div class="page" data-name="editnote">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="left">
<a href="#" class="link icon-only" onclick="router.back({force: true, ignoreCache: true})">
<i class="icon icon-back"></i>
</a>
</div>
<div class="title">{{title}}</div>
</div>
</div>
<div class="fab fab-extended fab-right-bottom">
<a id="savenotebtn" data-noteid="{{noteid}}">
<i class="icon material-icons">save</i>
<div class="fab-text">Save</div>
</a>
</div>
<div class="page-content page-content-fab-pad">
<div class="list no-margin-top no-hairlines">
<ul>
<li class="item-divider">Address</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">Number</div>
<div class="item-input-wrap">
<input type="number" value="{{note.number}}" name="number" id="notenumberinput" placeholder="1234" autocomplete="off" autocorrect="off" autocapitalize="off">
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">Street</div>
<div class="item-input-wrap">
<input type="text" value="{{note.street}}" name="street" id="notestreetinput" placeholder="Road Dr" autocomplete="off" autocorrect="off">
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li>
<div class="row justify-content-stretch">
<div class="col-50 item-content item-input">
<div class="item-inner">
<div class="item-title item-label">ZIP</div>
<div class="item-input-wrap">
<input type="number" value="{{note.zipcode}}" name="zipcode" id="zipcode" placeholder="12345" value="" autocomplete="off" autocorrect="off">
</div>
</div>
</div>
<div class="col-50 item-content item-input no-padding-left">
<div class="item-inner no-padding-right">
<div class="item-title item-label">Route</div>
<div class="item-input-wrap">
<input type="text" value="{{note.route}}" name="route" id="route" placeholder="C999" value="" autocomplete="off" autocorrect="off" maxlength="4" pattern="^[CRHG][0-9]{3}$" >
</div>
</div>
</div>
</div>
</li>
<li class="item-divider">Options</li>
{{#each toggles}}
<li class="item-content">
<div class="item-inner">
<div class="item-title">
{{name}}
</div>
<div class="item-after">
<label class="toggle toggle-init">
<input class="note-toggle" type="checkbox" data-id="{{id}}" {{#if checked}}checked="checked"{{/if}}>
<span class="toggle-icon"></span>
</label>
</div>
</div>
</li>
{{/each}}
<li class="item-divider">Notes</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<textarea id="notes">{{note.notes}}</textarea>
<span class="input-clear-button"></span>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>

View File

@ -8,7 +8,7 @@
<div class="navbar-bg"></div> <div class="navbar-bg"></div>
<div class="navbar-inner"> <div class="navbar-inner">
<div class="left"> <div class="left">
<a href="#" class="link icon-only back"> <a href="#" class="link icon-only" onclick="router.back({force: true, ignoreCache: true})">
<i class="icon icon-back"></i> <i class="icon icon-back"></i>
</a> </a>
</div> </div>
@ -17,82 +17,94 @@
</div> </div>
<div class="page-content"> <div class="page-content noselect">
<div class="list media-list no-hairlines no-margin-top tablet-inset"> <div class="row justify-content-center">
<ul> <div class="col-100 medium-60 large-50 xlarge-40 elevation-tablet margin-top-tablet">
{{#each settings}} <div class="list media-list no-hairlines no-margin-top no-margin-bottom tablet-inset">
<li> <ul>
{{#if link}} {{#each settings}}
<div class="item-content item-link" data-setting="{{setting}}" onclick="{{onclick}}"> <li>
<div class="item-inner"> {{#if link}}
<div class="item-title-row"> <div class="item-content item-link" data-setting="{{setting}}" onclick="{{onclick}}">
<div class="item-title">{{title}}</div> <div class="item-inner">
</div> <div class="item-title-row">
<div class="item-text">{{text}}</div> <div class="item-title">{{title}}</div>
</div> </div>
</div> <div class="item-text">{{text}}</div>
{{else}}
{{#if toggle}}
<div class="item-content" data-setting="{{setting}}">
<div class="item-inner">
<div style="display: flex; justify-content: between;">
<div class="item-title">
{{title}}
</div>
<div class="item-after" onclick="{{onclick}}">
<label class="toggle toggle-init">
<input type="checkbox" {{#if checked}}checked{{/if}}>
<span class="toggle-icon"></span>
</label>
</div> </div>
</div> </div>
<div class="item-text">{{text}}</div> {{else}}
</div> {{#if toggle}}
</div> <div class="item-content" data-setting="{{setting}}">
{{else}} <div class="item-inner">
{{#if slider}} <div style="display: flex; justify-content: between;">
<div class="item-content" data-setting="{{setting}}"> <div class="item-title">
<div class="item-inner"> {{title}}
<div class="item-title" style="background-color: rgba(0,0,0,0);"> </div>
{{title}} <div class="item-after" onclick="{
</div> {
<div class="item-subtitle padding-horizontal padding-top"> onclick
<div class="range-slider range-slider-init padding-top margin-top" data-label="true"> }
<input type="range" min="{{min}}" max="{{max}}" step="{{step}}" value="{{value}}"> }">
<label class="toggle toggle-init">
<input type="checkbox" {{#if checked}}checked{{/if}}>
<span class="toggle-icon"></span>
</label>
</div>
</div>
<div class="item-text">{{text}}</div>
</div> </div>
</div> </div>
</div> {{else}}
</div> {{#if slider}}
{{else}} <div class="item-content" data-setting="{{setting}}">
{{#if select}} <div class="item-inner">
<a class="item-link smart-select smart-select-init" data-open-in="popover" data-setting="{{setting}}"> <div class="item-title" style="background-color: rgba(0,0,0,0);">
<select> {{title}}
{{#each options}} </div>
<option value="{{value}}"{{#if selected}} selected{{/if}}>{{label}}</option> <div class="item-subtitle padding-horizontal padding-top">
{{/each}} <div class="range-slider range-slider-init padding-top margin-top" data-label="true">
</select> <input type="range" min="{{min}}" max="{{max}}" step="{{step}}" value="{{value}}">
<div class="item-content"> </div>
<div class="item-inner"> </div>
<div class="item-title">{{title}}</div> </div>
</div> </div>
</div> {{else}}
</a> {{#if select}}
{{else}} <a class="item-link smart-select smart-select-init" data-open-in="popover" data-setting="{{setting}}">
<div class="item-content" data-setting="{{setting}}" onclick="{{onclick}}"> <select>
<div class="item-inner"> {{#each options}}
<div class="item-title-row"> <option value="{{value}}"{{#if selected}} selected{{/if}}>{{label}}</option>
<div class="item-title">{{title}}</div> {{/each}}
</select>
<div class="item-content">
<div class="item-inner">
<div class="item-title">{{title}}</div>
</div>
</div>
</a>
{{else}}
<div class="item-content" data-setting="{{setting}}" onclick="{
{
onclick
}
}">
<div class="item-inner">
<div class="item-title-row">
<div class="item-title">{{title}}</div>
</div>
<div class="item-text">{{text}}</div>
</div>
</div> </div>
<div class="item-text">{{text}}</div> {{/if}}
</div> {{/if}}
</div> {{/if}}
{{/if}} {{/if}}
{{/if}} </li>
{{/if}} {{/each}}
{{/if}} </ul>
</li> </div>
{{/each}} </div>
</ul>
</div> </div>
</div> </div>

View File

@ -16,42 +16,44 @@
</div> </div>
</div> </div>
<div class="page-content"> <div class="page-content noselect">
<div class="list no-hairlines tablet-inset" style="margin-top: 0;"> {{#if oldui}}
<ul> <div class="row justify-content-center">
<li> <div class="col-100 small-80 medium-60 large-50 xlarge-40">
<a href="/toolbox/scanner" class="item-link item-content"> <div class="list no-hairlines tablet-inset no-margin-top">
<div class="item-media"><i class="icon fas fa-barcode"></i></div> <ul>
<div class="item-inner"> {{#each pages}}
<div class="item-title">Broken Scanner</div> <li>
</div> <a href="{{href}}" class="item-link item-content">
</a> <div class="item-media"><i class="icon {{icon}}"></i></div>
</li> <div class="item-inner">
<li> <div class="item-title">{{title}}</div>
<a href="/toolbox/track" class="item-link item-content"> </div>
<div class="item-media"><i class="icon fas fa-search-location"></i></div> </a>
<div class="item-inner"> </li>
<div class="item-title">Track Item</div> {{/each}}
</div> </ul>
</a> </div>
</li> </div>
<li>
<a href="/toolbox/weather" class="item-link item-content">
<div class="item-media"><i class="icon fas fa-cloud-sun"></i></div>
<div class="item-inner">
<div class="item-title">Weather Lookahead</div>
</div>
</a>
</li>
<li>
<a href="/toolbox/sharelist" class="item-link item-content">
<div class="item-media"><i class="icon fas fa-share-alt"></i></div>
<div class="item-inner">
<div class="item-title">Share Item List</div>
</div>
</a>
</li>
</ul>
</div> </div>
{{else}}
<div class="row justify-content-center margin-top">
<div class="col-100 medium-90 xlarge-75 margin-horizontal">
<div class="row">
{{#each pages}}
<div class="col-50 small-33 large-15">
<div class="card" onclick="router.navigate('{{href}}');" style="cursor: pointer; background-image: url(assets/images/bgs/{{bg}}); background-repeat: no-repeat; background-position: center; background-size: cover;">
<div class="card-content text-align-center padding-vertical">
<h1 class="no-margin"><i class="{{icon}}"></i></h1>
<br />
<span style="font-weight: 700;">{{title}}</span>
</div>
</div>
</div>
{{/each}}
</div>
</div>
</div>
{{/if}}
</div> </div>
</div> </div>

Some files were not shown because too many files have changed in this diff Show More