├── .gitignore
├── .htaccess
├── LICENSE
├── README.md
├── dashboard
├── .htaccess
├── css
│ ├── app.css
│ ├── components
│ │ ├── 00.bootstrap-3.3.7.min.css
│ │ ├── 02.angular-loading-bar.min.css
│ │ ├── 03.angular-dialog.min.css
│ │ ├── 04.bootstrap-theme-3.3.7.min.css
│ │ ├── 05.bootstrap-select-1.12.2.css
│ │ ├── 06.angular-dialog-theme.min.css
│ │ ├── 07.material-switch.min.css
│ │ ├── 08.aCKolor.min.css
│ │ ├── 09.angular-sortable.min.css
│ │ ├── 10.angular-bootstrap-toggle.min.css
│ │ ├── 11.angular-smart-area-1.1.0.min.css
│ │ ├── components.min.css
│ │ └── rebuild.sh
│ └── modules
│ │ ├── dashboard.module.css
│ │ ├── fuel.module.css
│ │ ├── fuel.module.css.bak
│ │ ├── piston.module.css
│ │ └── register.module.css
├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
├── html
│ └── modules
│ │ ├── dashboard.module.html
│ │ ├── fuel.module.html
│ │ ├── fuel.module.html.bak
│ │ ├── piston.module.html
│ │ └── register.module.html
├── img
│ ├── altitude.png
│ ├── app-CoRE3x.png
│ ├── favicon
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon.png
│ │ ├── browserconfig.xml
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon.ico
│ │ ├── mstile-150x150.png
│ │ ├── safari-pinned-tab.svg
│ │ └── site.webmanifest
│ ├── piston.png
│ ├── squared_metal.png
│ ├── squared_metal_@2X.png
│ ├── webCoRE-mark.svg
│ └── webCoRE-text.svg
├── index.html
├── js
│ ├── app.js
│ ├── components
│ │ ├── 00.jquery-3.1.1.min.js
│ │ ├── 01.angular-1.6.3.min.js
│ │ ├── 02.angular-route-1.6.3.min.js
│ │ ├── 03.angular-resource-1.6.3.min.js
│ │ ├── 04.angular-sanitize-1.6.3.min.js
│ │ ├── 05.angular-loading-bar.min.js
│ │ ├── 06.angular-dialog.min.js
│ │ ├── 07.angular-animate-1.6.3.min.js
│ │ ├── 08.angular-svg-round-progressbar.min.js
│ │ ├── 09.bootstrap-3.3.7.min.js
│ │ ├── 10.bootstrap-select-1.12.2.min.js
│ │ ├── 11.angular-bootstrap-select.min.js
│ │ ├── 13.angular-drag-and-drop-lists.min.js
│ │ ├── 14.ios-drag-drop.min.js
│ │ ├── 15.angular-bootstrap-toggle.min.js
│ │ ├── 16.md5.min.js
│ │ ├── 17.sjcl.min.js
│ │ ├── 18.sizeof.min.js
│ │ ├── 19.chart.bundle-2.4.0.min.js
│ │ ├── 20.angular-chart-1.1.1.min.js
│ │ ├── 21.html2canvas.min.js
│ │ ├── 22.angular-smart-area-1.1.0.min.js
│ │ ├── 23.hammer-2.0.8.min.js
│ │ ├── 24.chartjs-plugin-zoom-0.4.5.min.js
│ │ ├── 25.angular-swipe.min.js
│ │ ├── 26.masonry-v4.2.0.min.js
│ │ ├── 27.angular-ui.bootstrap.contextMenu.min.js
│ │ ├── 28.localforage-v1.5.0.min.js
│ │ ├── 29.angular-fittext.min.js
│ │ ├── 30.angular-google-chart-1.0.0.b1.min.js
│ │ ├── 32.mutation-summary.js
│ │ ├── 33.tree-mirror.js
│ │ ├── 34.content-script.js
│ │ ├── 35.ng-map.min.js
│ │ ├── 37.dashify.js
│ │ ├── 38.angular-elastic.js
│ │ ├── 39.canvg.js
│ │ ├── components.min.js
│ │ ├── in-progress-22.angular-smart-area-1.5.0.min.js
│ │ ├── rebuild.sh
│ │ ├── removed.06.angular-dialog.min.js
│ │ ├── removed.17.sjcl.min.js
│ │ ├── removed.31.fa5.js
│ │ └── src
│ │ │ └── 21.html2canvas.js
│ └── modules
│ │ ├── dashboard.module.js
│ │ ├── fuel.module.js
│ │ ├── fuel.module.js.bak
│ │ ├── piston.module.js
│ │ └── register.module.js
└── robots.txt
├── devicetypes
└── ady624
│ └── webcore-presence-sensor.src
│ └── webcore-presence-sensor.groovy
├── dist
└── dashboard
│ ├── .htaccess
│ ├── css
│ ├── modules
│ │ ├── dashboard.module.css
│ │ ├── fuel.module.css
│ │ ├── piston.module.css
│ │ └── register.module.css
│ └── webCoRE.min.css
│ ├── fonts
│ ├── FontAwesome.otf
│ ├── fa5-brands-400.eot
│ ├── fa5-brands-400.svg
│ ├── fa5-brands-400.ttf
│ ├── fa5-brands-400.woff
│ ├── fa5-brands-400.woff2
│ ├── fa5-light-300.eot
│ ├── fa5-light-300.svg
│ ├── fa5-light-300.ttf
│ ├── fa5-light-300.woff
│ ├── fa5-light-300.woff2
│ ├── fa5-regular-400.eot
│ ├── fa5-regular-400.svg
│ ├── fa5-regular-400.ttf
│ ├── fa5-regular-400.woff
│ ├── fa5-regular-400.woff2
│ ├── fa5-solid-900.eot
│ ├── fa5-solid-900.svg
│ ├── fa5-solid-900.ttf
│ ├── fa5-solid-900.woff
│ ├── fa5-solid-900.woff2
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ ├── fontawesome-webfont.woff2
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
│ ├── html
│ └── modules
│ │ ├── dashboard.module.html
│ │ ├── fuel.module.html
│ │ ├── fuel.module.html.bak
│ │ ├── piston.module.html
│ │ └── register.module.html
│ ├── img
│ ├── altitude.png
│ ├── app-CoRE3x.png
│ ├── favicon
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon.png
│ │ ├── browserconfig.xml
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon.ico
│ │ ├── legacy
│ │ │ ├── android-icon-144x144.png
│ │ │ ├── android-icon-192x192.png
│ │ │ ├── android-icon-36x36.png
│ │ │ ├── android-icon-48x48.png
│ │ │ ├── android-icon-72x72.png
│ │ │ ├── android-icon-96x96.png
│ │ │ ├── apple-icon-114x114.png
│ │ │ ├── apple-icon-120x120.png
│ │ │ ├── apple-icon-144x144.png
│ │ │ ├── apple-icon-152x152.png
│ │ │ ├── apple-icon-180x180.png
│ │ │ ├── apple-icon-57x57.png
│ │ │ ├── apple-icon-60x60.png
│ │ │ ├── apple-icon-72x72.png
│ │ │ ├── apple-icon-76x76.png
│ │ │ ├── apple-icon-precomposed.png
│ │ │ ├── apple-icon.png
│ │ │ ├── browserconfig.xml
│ │ │ ├── favicon-16x16.png
│ │ │ ├── favicon-32x32.png
│ │ │ ├── favicon-96x96.png
│ │ │ ├── favicon.ico
│ │ │ ├── manifest.json
│ │ │ ├── ms-icon-144x144.png
│ │ │ ├── ms-icon-150x150.png
│ │ │ ├── ms-icon-310x310.png
│ │ │ └── ms-icon-70x70.png
│ │ ├── manifest.json
│ │ ├── mstile-150x150.png
│ │ ├── safari-pinned-tab.svg
│ │ └── site.webmanifest
│ ├── piston.png
│ ├── squared_metal.png
│ ├── squared_metal_@2X.png
│ ├── webCoRE-mark.svg
│ └── webCoRE-text.svg
│ ├── index.html
│ └── js
│ └── webCoRE.min.js
├── index.html
├── installerManifest.json
├── resources
└── icons
│ ├── app-CoRE.png
│ ├── app-CoRE@2x.png
│ ├── app-CoRE@3x.png
│ ├── browser-reg.png
│ ├── dashboard.png
│ ├── logo-text-CoRE.svg
│ ├── read.me
│ └── settings.png
├── smartapps
└── ady624
│ ├── webcore-dashboard.src
│ └── webcore-dashboard.groovy
│ ├── webcore-piston.src
│ └── webcore-piston.groovy
│ ├── webcore-storage.src
│ └── webcore-storage.groovy
│ └── webcore.src
│ └── webcore.groovy
└── superstatic.json
/.gitignore:
--------------------------------------------------------------------------------
1 | ######################
2 | # BASH Script files #
3 | ######################
4 | *.sh
5 |
6 | ######################
7 | # Visor #
8 | ######################
9 | visor*
10 | dist/visor*
11 | dashboard/fa*
12 | dashboard/mp3*
13 | dashboard/js/components/fa*
14 |
15 | ######################
16 | # Mac Hidden Files #
17 | ######################
18 | .DS_Store
--------------------------------------------------------------------------------
/.htaccess:
--------------------------------------------------------------------------------
1 | RewriteEngine On
2 |
3 | RewriteCond %{REQUEST_FILENAME} !-f
4 | RewriteRule ^(.*)$ /index.html [L,NC]
5 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # webCoRE
2 | webCoRE is a web version of CoRE
3 |
--------------------------------------------------------------------------------
/dashboard/.htaccess:
--------------------------------------------------------------------------------
1 | RewriteEngine On
2 |
3 | RewriteCond %{REQUEST_FILENAME} !-f
4 | RewriteCond %{REQUEST_FILENAME} !-d
5 | RewriteRule ^(.*)$ /index.html [L,NC]
6 |
--------------------------------------------------------------------------------
/dashboard/css/components/02.angular-loading-bar.min.css:
--------------------------------------------------------------------------------
1 | #loading-bar,#loading-bar-spinner{pointer-events:none;-webkit-pointer-events:none;-webkit-transition:350ms linear all;-moz-transition:350ms linear all;-o-transition:350ms linear all;transition:350ms linear all}#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active,#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active{opacity:0}#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave,#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave{opacity:1}#loading-bar .bar{-webkit-transition:width 350ms;-moz-transition:width 350ms;-o-transition:width 350ms;transition:width 350ms;background:#29d;position:fixed;z-index:10002;top:0;left:0;width:100%;height:2px;border-bottom-right-radius:1px;border-top-right-radius:1px}#loading-bar .peg{position:absolute;width:70px;right:0;top:0;height:2px;opacity:.45;-moz-box-shadow:#29d 1px 0 6px 1px;-ms-box-shadow:#29d 1px 0 6px 1px;-webkit-box-shadow:#29d 1px 0 6px 1px;box-shadow:#29d 1px 0 6px 1px;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}#loading-bar-spinner{display:block;position:fixed;z-index:10002;top:10px;left:10px}#loading-bar-spinner .spinner-icon{width:14px;height:14px;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:loading-bar-spinner 400ms linear infinite;-moz-animation:loading-bar-spinner 400ms linear infinite;-ms-animation:loading-bar-spinner 400ms linear infinite;-o-animation:loading-bar-spinner 400ms linear infinite;animation:loading-bar-spinner 400ms linear infinite}@-webkit-keyframes loading-bar-spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-bar-spinner{0%{-moz-transform:rotate(0);transform:rotate(0)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes loading-bar-spinner{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes loading-bar-spinner{0%{-ms-transform:rotate(0);transform:rotate(0)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-bar-spinner{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
2 |
--------------------------------------------------------------------------------
/dashboard/css/components/03.angular-dialog.min.css:
--------------------------------------------------------------------------------
1 | .ngdialog,.ngdialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0}@-webkit-keyframes ngdialog-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes ngdialog-fadeout{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes ngdialog-fadein{0%{opacity:0}100%{opacity:1}}@keyframes ngdialog-fadein{0%{opacity:0}100%{opacity:1}}.ngdialog{box-sizing:border-box;overflow:auto;overflow-y:scroll;-webkit-overflow-scrolling:touch;z-index:10000}.ngdialog *,.ngdialog :after,.ngdialog :before{box-sizing:inherit}.ngdialog.ngdialog-disabled-animation,.ngdialog.ngdialog-disabled-animation .ngdialog-content,.ngdialog.ngdialog-disabled-animation .ngdialog-overlay{-webkit-animation:none!important;animation:none!important}.ngdialog-overlay{background:rgba(0,0,0,.4);-webkit-backface-visibility:hidden;-webkit-animation:ngdialog-fadein .5s;animation:ngdialog-fadein .5s}.ngdialog-no-overlay{pointer-events:none}.ngdialog.ngdialog-closing .ngdialog-overlay{-webkit-backface-visibility:hidden;-webkit-animation:ngdialog-fadeout .5s;animation:ngdialog-fadeout .5s}.ngdialog-content{background:#fff;-webkit-backface-visibility:hidden;-webkit-animation:ngdialog-fadein .5s;animation:ngdialog-fadein .5s;pointer-events:all}.ngdialog.ngdialog-closing .ngdialog-content{-webkit-backface-visibility:hidden;-webkit-animation:ngdialog-fadeout .5s;animation:ngdialog-fadeout .5s}.ngdialog-close:before{font-family:Helvetica,Arial,sans-serif;content:'\00D7';cursor:pointer}body.ngdialog-open,html.ngdialog-open{overflow:hidden}
2 |
--------------------------------------------------------------------------------
/dashboard/css/components/05.bootstrap-select-1.12.2.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap-select v1.12.2 (http://silviomoreto.github.io/bootstrap-select)
3 | *
4 | * Copyright 2013-2017 bootstrap-select
5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
6 | */
7 |
8 | select.bs-select-hidden,
9 | select.selectpicker {
10 | display: none !important;
11 | }
12 | .bootstrap-select {
13 | width: 220px \0;
14 | /*IE9 and below*/
15 | }
16 | .bootstrap-select > .dropdown-toggle {
17 | width: 100%;
18 | padding-right: 25px;
19 | z-index: 1;
20 | }
21 | .bootstrap-select > .dropdown-toggle.bs-placeholder,
22 | .bootstrap-select > .dropdown-toggle.bs-placeholder:hover,
23 | .bootstrap-select > .dropdown-toggle.bs-placeholder:focus,
24 | .bootstrap-select > .dropdown-toggle.bs-placeholder:active {
25 | color: #999;
26 | }
27 | .bootstrap-select > select {
28 | position: absolute !important;
29 | bottom: 0;
30 | left: 50%;
31 | display: block !important;
32 | width: 0.5px !important;
33 | height: 100% !important;
34 | padding: 0 !important;
35 | opacity: 0 !important;
36 | border: none;
37 | }
38 | .bootstrap-select > select.mobile-device {
39 | top: 0;
40 | left: 0;
41 | display: block !important;
42 | width: 100% !important;
43 | z-index: 2;
44 | }
45 | .has-error .bootstrap-select .dropdown-toggle,
46 | .error .bootstrap-select .dropdown-toggle {
47 | border-color: #b94a48;
48 | }
49 | .bootstrap-select.fit-width {
50 | width: auto !important;
51 | }
52 | .bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
53 | width: 220px;
54 | }
55 | .bootstrap-select .dropdown-toggle:focus {
56 | outline: thin dotted #333333 !important;
57 | outline: 5px auto -webkit-focus-ring-color !important;
58 | outline-offset: -2px;
59 | }
60 | .bootstrap-select.form-control {
61 | margin-bottom: 0;
62 | padding: 0;
63 | border: none;
64 | }
65 | .bootstrap-select.form-control:not([class*="col-"]) {
66 | width: 100%;
67 | }
68 | .bootstrap-select.form-control.input-group-btn {
69 | z-index: auto;
70 | }
71 | .bootstrap-select.form-control.input-group-btn:not(:first-child):not(:last-child) > .btn {
72 | border-radius: 0;
73 | }
74 | .bootstrap-select.btn-group:not(.input-group-btn),
75 | .bootstrap-select.btn-group[class*="col-"] {
76 | float: none;
77 | display: inline-block;
78 | margin-left: 0;
79 | }
80 | .bootstrap-select.btn-group.dropdown-menu-right,
81 | .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right,
82 | .row .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right {
83 | float: right;
84 | }
85 | .form-inline .bootstrap-select.btn-group,
86 | .form-horizontal .bootstrap-select.btn-group,
87 | .form-group .bootstrap-select.btn-group {
88 | margin-bottom: 0;
89 | }
90 | .form-group-lg .bootstrap-select.btn-group.form-control,
91 | .form-group-sm .bootstrap-select.btn-group.form-control {
92 | padding: 0;
93 | }
94 | .form-group-lg .bootstrap-select.btn-group.form-control .dropdown-toggle,
95 | .form-group-sm .bootstrap-select.btn-group.form-control .dropdown-toggle {
96 | height: 100%;
97 | font-size: inherit;
98 | line-height: inherit;
99 | border-radius: inherit;
100 | }
101 | .form-inline .bootstrap-select.btn-group .form-control {
102 | width: 100%;
103 | }
104 | .bootstrap-select.btn-group.disabled,
105 | .bootstrap-select.btn-group > .disabled {
106 | cursor: not-allowed;
107 | }
108 | .bootstrap-select.btn-group.disabled:focus,
109 | .bootstrap-select.btn-group > .disabled:focus {
110 | outline: none !important;
111 | }
112 | .bootstrap-select.btn-group.bs-container {
113 | position: absolute;
114 | height: 0 !important;
115 | padding: 0 !important;
116 | }
117 | .bootstrap-select.btn-group.bs-container .dropdown-menu {
118 | z-index: 1060;
119 | }
120 | .bootstrap-select.btn-group .dropdown-toggle .filter-option {
121 | display: inline-block;
122 | overflow: hidden;
123 | width: 100%;
124 | text-align: left;
125 | }
126 | .bootstrap-select.btn-group .dropdown-toggle .caret {
127 | position: absolute;
128 | top: 50%;
129 | right: 12px;
130 | margin-top: -2px;
131 | vertical-align: middle;
132 | }
133 | .bootstrap-select.btn-group[class*="col-"] .dropdown-toggle {
134 | width: 100%;
135 | }
136 | .bootstrap-select.btn-group .dropdown-menu {
137 | min-width: 100%;
138 | -webkit-box-sizing: border-box;
139 | -moz-box-sizing: border-box;
140 | box-sizing: border-box;
141 | }
142 | .bootstrap-select.btn-group .dropdown-menu.inner {
143 | position: static;
144 | float: none;
145 | border: 0;
146 | padding: 0;
147 | margin: 0;
148 | border-radius: 0;
149 | -webkit-box-shadow: none;
150 | box-shadow: none;
151 | }
152 | .bootstrap-select.btn-group .dropdown-menu li {
153 | position: relative;
154 | }
155 | .bootstrap-select.btn-group .dropdown-menu li.active small {
156 | color: #fff;
157 | }
158 | .bootstrap-select.btn-group .dropdown-menu li.disabled a {
159 | cursor: not-allowed;
160 | }
161 | .bootstrap-select.btn-group .dropdown-menu li a {
162 | cursor: pointer;
163 | -webkit-user-select: none;
164 | -moz-user-select: none;
165 | -ms-user-select: none;
166 | user-select: none;
167 | }
168 | .bootstrap-select.btn-group .dropdown-menu li a.opt {
169 | position: relative;
170 | padding-left: 2.25em;
171 | }
172 | .bootstrap-select.btn-group .dropdown-menu li a span.check-mark {
173 | display: none;
174 | }
175 | .bootstrap-select.btn-group .dropdown-menu li a span.text {
176 | display: inline-block;
177 | }
178 | .bootstrap-select.btn-group .dropdown-menu li small {
179 | padding-left: 0.5em;
180 | }
181 | .bootstrap-select.btn-group .dropdown-menu .notify {
182 | position: absolute;
183 | bottom: 5px;
184 | width: 96%;
185 | margin: 0 2%;
186 | min-height: 26px;
187 | padding: 3px 5px;
188 | background: #f5f5f5;
189 | border: 1px solid #e3e3e3;
190 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
191 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
192 | pointer-events: none;
193 | opacity: 0.9;
194 | -webkit-box-sizing: border-box;
195 | -moz-box-sizing: border-box;
196 | box-sizing: border-box;
197 | }
198 | .bootstrap-select.btn-group .no-results {
199 | padding: 3px;
200 | background: #f5f5f5;
201 | margin: 0 5px;
202 | white-space: nowrap;
203 | }
204 | .bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {
205 | position: static;
206 | }
207 | .bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {
208 | position: static;
209 | top: auto;
210 | margin-top: -1px;
211 | }
212 | .bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {
213 | position: absolute;
214 | display: inline-block;
215 | right: 15px;
216 | margin-top: 5px;
217 | }
218 | .bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {
219 | margin-right: 34px;
220 | }
221 | .bootstrap-select.show-menu-arrow.open > .dropdown-toggle {
222 | z-index: 1061;
223 | }
224 | .bootstrap-select.show-menu-arrow .dropdown-toggle:before {
225 | content: '';
226 | border-left: 7px solid transparent;
227 | border-right: 7px solid transparent;
228 | border-bottom: 7px solid rgba(204, 204, 204, 0.2);
229 | position: absolute;
230 | bottom: -4px;
231 | left: 9px;
232 | display: none;
233 | }
234 | .bootstrap-select.show-menu-arrow .dropdown-toggle:after {
235 | content: '';
236 | border-left: 6px solid transparent;
237 | border-right: 6px solid transparent;
238 | border-bottom: 6px solid white;
239 | position: absolute;
240 | bottom: -4px;
241 | left: 10px;
242 | display: none;
243 | }
244 | .bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {
245 | bottom: auto;
246 | top: -3px;
247 | border-top: 7px solid rgba(204, 204, 204, 0.2);
248 | border-bottom: 0;
249 | }
250 | .bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {
251 | bottom: auto;
252 | top: -3px;
253 | border-top: 6px solid white;
254 | border-bottom: 0;
255 | }
256 | .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {
257 | right: 12px;
258 | left: auto;
259 | }
260 | .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {
261 | right: 13px;
262 | left: auto;
263 | }
264 | .bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,
265 | .bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {
266 | display: block;
267 | }
268 | .bs-searchbox,
269 | .bs-actionsbox,
270 | .bs-donebutton {
271 | padding: 4px 8px;
272 | }
273 | .bs-actionsbox {
274 | width: 100%;
275 | -webkit-box-sizing: border-box;
276 | -moz-box-sizing: border-box;
277 | box-sizing: border-box;
278 | }
279 | .bs-actionsbox .btn-group button {
280 | width: 50%;
281 | }
282 | .bs-donebutton {
283 | float: left;
284 | width: 100%;
285 | -webkit-box-sizing: border-box;
286 | -moz-box-sizing: border-box;
287 | box-sizing: border-box;
288 | }
289 | .bs-donebutton .btn-group button {
290 | width: 100%;
291 | }
292 | .bs-searchbox + .bs-actionsbox {
293 | padding: 0 8px 4px;
294 | }
295 | .bs-searchbox .form-control {
296 | margin-bottom: 0;
297 | width: 100%;
298 | float: none;
299 | }
300 | /*# sourceMappingURL=bootstrap-select.css.map */
--------------------------------------------------------------------------------
/dashboard/css/components/06.angular-dialog-theme.min.css:
--------------------------------------------------------------------------------
1 | @-webkit-keyframes ngdialog-flyin{0%{opacity:0;-webkit-transform:translateY(-40px);transform:translateY(-40px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes ngdialog-flyin{0%{opacity:0;-webkit-transform:translateY(-40px);transform:translateY(-40px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes ngdialog-flyout{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-40px);transform:translateY(-40px)}}@keyframes ngdialog-flyout{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-40px);transform:translateY(-40px)}}.ngdialog.ngdialog-theme-default{padding-bottom:32px;padding-top:32px}.ngdialog.ngdialog-theme-default.ngdialog-closing .ngdialog-content{-webkit-animation:ngdialog-flyout .5s;animation:ngdialog-flyout .5s}.ngdialog.ngdialog-theme-default .ngdialog-content{-webkit-animation:ngdialog-flyin .5s;animation:ngdialog-flyin .5s;background:#f0f0f0;border-radius:5px;color:#444;font-family:Helvetica,sans-serif;font-size:1.1em;line-height:1.5em;margin:0 auto;max-width:100%;padding:1em;position:relative;width:480px}.ngdialog.ngdialog-theme-default .ngdialog-close{outline:none;border-radius:5px;cursor:pointer;position:absolute;right:0;top:0;width: 36px;height:36px;border:0;background:transparent;box-shadow:none;}.ngdialog.ngdialog-theme-default .ngdialog-close:before{background:0 0;border-radius:3px;color:#bbb;content:'\00D7';font-size:26px;font-weight:400;height:30px;line-height:26px;position:absolute;right:3px;text-align:center;top:3px;width:30px}.ngdialog.ngdialog-theme-default .ngdialog-close:active:before,.ngdialog.ngdialog-theme-default .ngdialog-close:hover:before{color:#777}.ngdialog.ngdialog-theme-default .ngdialog-message{margin-bottom:.5em}.ngdialog.ngdialog-theme-default .ngdialog-input{margin-bottom:1em}.ngdialog.ngdialog-theme-default .ngdialog-input input[type=text],.ngdialog.ngdialog-theme-default .ngdialog-input input[type=password],.ngdialog.ngdialog-theme-default .ngdialog-input input[type=email],.ngdialog.ngdialog-theme-default .ngdialog-input input[type=url],.ngdialog.ngdialog-theme-default .ngdialog-input textarea{background:#fff;border:0;border-radius:3px;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0 0 .25em;min-height:2.5em;padding:.25em .67em;width:100%}.ngdialog.ngdialog-theme-default .ngdialog-input input[type=text]:focus,.ngdialog.ngdialog-theme-default .ngdialog-input input[type=password]:focus,.ngdialog.ngdialog-theme-default .ngdialog-input input[type=email]:focus,.ngdialog.ngdialog-theme-default .ngdialog-input input[type=url]:focus,.ngdialog.ngdialog-theme-default .ngdialog-input textarea:focus{box-shadow:inset 0 0 0 2px #8dbdf1;outline:0}.ngdialog.ngdialog-theme-default .ngdialog-buttons:after{content:'';display:table;clear:both}.ngdialog.ngdialog-theme-default .ngdialog-button{border:0;border-radius:3px;cursor:pointer;float:right;font-family:inherit;font-size:.8em;letter-spacing:.1em;line-height:1em;margin:0 0 0 .5em;padding:.75em 2em;text-transform:uppercase}.ngdialog.ngdialog-theme-default .ngdialog-button:focus{-webkit-animation:ngdialog-pulse 1.1s infinite;animation:ngdialog-pulse 1.1s infinite;outline:0}@media (max-width:568px){.ngdialog.ngdialog-theme-default .ngdialog-button:focus{-webkit-animation:none;animation:none}}.ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-primary{background:#3288e6;color:#fff}.ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-secondary{background:#e0e0e0;color:#777}
2 |
--------------------------------------------------------------------------------
/dashboard/css/components/07.material-switch.min.css:
--------------------------------------------------------------------------------
1 | .material-switch>input[type=checkbox]{display:none}.material-switch>label{cursor:pointer;height:0;position:relative;width:40px}.material-switch>label::after,.material-switch>label::before{content:'';margin-top:-8px;position:absolute}.material-switch>label::before{background:#000;box-shadow:inset 0 0 10px rgba(0,0,0,.5);border-radius:8px;height:16px;opacity:.3;transition:all .4s ease-in-out;width:40px}.material-switch>label::after{background:#fff;border-radius:16px;box-shadow:0 0 5px rgba(0,0,0,.3);height:24px;left:-4px;top:-4px;transition:all .3s ease-in-out;width:24px}.material-switch>input[type=checkbox]:checked+label::before{background:inherit;opacity:.5}.material-switch>input[type=checkbox]:checked+label::after{background:inherit;left:20px}
2 |
--------------------------------------------------------------------------------
/dashboard/css/components/08.aCKolor.min.css:
--------------------------------------------------------------------------------
1 | a-ckolor-wheel{display:block;position:absolute;z-index:9999;-webkit-filter:none!important;filter:none!important}.c-ckolor__input-row{margin:14px 0}.c-ckolor__input-row.center{text-align:center}.c-ckolor__input-wrapper{width:200px;height:21px;line-height:21px;padding:7px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.14),0 3px 10px rgba(0,0,0,.035);border-radius:2px;margin:7px 0;font-size:14px;color:#555;font-family:sans-serif;text-transform:uppercase;cursor:pointer}.c-ckolor__input-wrapper button{outline:0!important;background:0 0;border:none;-webkit-appearance:none;width:21px;font-size:18px;padding:0;color:#fff;opacity:.7;box-shadow:none;margin:-4px 0 0;cursor:pointer;transition:all .2s}.c-ckolor__input-wrapper button:hover{transform:scale(1.05);opacity:1}.c-ckolor__input-wrapper span{display:inline-block;vertical-align:middle}.c-ckolor__overlay{width:100%;height:100%;position:fixed;left:0;top:0;background:radial-gradient(ellipse at 50% 250px,rgba(19,49,63,.91) 0,rgba(0,0,0,.91) 100%);-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:9999}.c-ckolor__overlay input[type=text],.c-ckolor__overlay input[type=number]{color:#aaa;font-size:12px;text-align:center;font-style:normal;text-transform:uppercase;display:inline-block;height:19px;background:rgba(255,255,255,.07);border:none;box-shadow:none;box-sizing:border-box;padding:0 3px;margin:0;width:100%;border-radius:2px;-webkit-appearance:none;outline:0!important;transition:all .2s}.c-ckolor__overlay input[type=text]:focus,.c-ckolor__overlay input[type=text]:hover,.c-ckolor__overlay input[type=number]:focus,.c-ckolor__overlay input[type=number]:hover{background:rgba(255,255,255,.14)}.c-ckolor__overlay input[type=text][type=number],.c-ckolor__overlay input[type=number][type=number]{-moz-appearance:textfield}.c-ckolor__overlay input[type=text][type=number]::-webkit-inner-spin-button,.c-ckolor__overlay input[type=text][type=number]::-webkit-outer-spin-button,.c-ckolor__overlay input[type=number][type=number]::-webkit-inner-spin-button,.c-ckolor__overlay input[type=number][type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.c-ckolor__overlay .c-ckolor__swatch{margin:0 0 0 1px;width:0;height:0;display:inline-block;vertical-align:middle;padding:18px;position:relative}.c-ckolor__overlay .c-ckolor__swatch span{display:block;width:100%;height:100%;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07),0 1px 0 1px rgba(0,0,0,.07);border-radius:50%;position:absolute;top:0;left:0}.c-ckolor__overlay .c-ckolor__input-wrapper{width:30%;overflow:hidden;background:0 0;box-shadow:none;color:#aaa;display:inline-block;padding:0;margin:0 1px;line-height:14px}.c-ckolor__overlay .c-ckolor__input-wrapper.smaller{width:30px}.c-ckolor__overlay .c-ckolor__input-wrapper.button{width:9%;vertical-align:middle;margin:0 0 0 2px}.c-ckolor__overlay .c-ckolor__input-wrapper.dropdown{width:20%;overflow:visible;position:relative;vertical-align:middle;text-align:center;font-size:12px}.c-ckolor__overlay .c-ckolor__input-wrapper.dropdown div{margin-left:3px}.c-ckolor__overlay .c-ckolor__input-wrapper.dropdown div:before{content:"\f0dd";display:inline-block;font:normal normal normal 14px/1 FontAwesome;margin:0 3px 0 0;position:relative;top:-3px}.c-ckolor__overlay .c-ckolor__input-wrapper.dropdown ul{margin:0;padding:0;display:block;position:absolute;height:auto;overflow:hidden;max-height:0;background:rgba(255,255,255,.77);width:100%;color:#333;border-radius:2px;transition:all .2s}.c-ckolor__overlay .c-ckolor__input-wrapper.dropdown ul li{display:block;padding:5px 7px;box-shadow:0 1px 0 rgba(0,0,0,.05)}.c-ckolor__overlay .c-ckolor__input-wrapper.dropdown ul li:hover{background:#fff}.c-ckolor__overlay .c-ckolor__input-wrapper.dropdown:hover ul{max-height:140px}.c-ckolor__overlay .c-ckolor__input-wrapper.hex{width:100%}.c-ckolor__overlay .c-ckolor__input-wrapper.hex input{text-align:left}.c-ckolor_previous-color-container{margin:28px auto 14px;box-sizing:border-box;padding:28px 7px 0;box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 -1px 0 rgba(0,0,0,.2);text-align:center}.c-ckolor_previous-swatch{height:0;display:inline-block;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(255,255,255,.1),0 0 0 1px rgba(0,0,0,.12);padding:3%;margin:1.7%;border-radius:50%;transition:transform .2s}.c-ckolor_previous-swatch:hover{transform:scale(1.1)}.c-ckolor__overlay-blur>*{-webkit-filter:blur(3px);filter:blur(3px);transition:-webkit-filter .2s;transition:filter .2s;transition:filter .2s,-webkit-filter .2s}.c-ckolor__overlay-inner-outer{position:relative;overflow:auto;width:100%;height:100%}.c-ckolor__overlay-inner{width:280px;position:relative;margin:35px auto 20px}.c-ckolor__overlay-inputs{width:40%;display:inline-block;vertical-align:middle;position:relative;top:2px}.c-ckolor__alpha-wrapper{background:linear-gradient(0deg,rgba(138,138,138,.14) 0,rgba(138,138,138,.14) 1px,transparent 1px,transparent 5px),linear-gradient(90deg,rgba(138,138,138,.14) 0,rgba(138,138,138,.14) 1px,transparent 1px,transparent 5px);background-repeat:repeat;background-size:5px 5px;background-position:7px 6px;border-radius:50px}.c-ckolor__alpha,.c-ckolor__saturation{position:relative;width:100%;height:21px;border-radius:50px;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07),0 1px 0 1px rgba(0,0,0,.07)}.c-ckolor__alpha:hover .c-ckolor__alpha-handle,.c-ckolor__saturation:hover .c-ckolor__saturation-handle{transform:scale(1.1);background:rgba(255,255,255,.7);box-shadow:inset 0 0 0 1px #fff,inset 0 2px 14px rgba(0,0,0,.16),0 1px 3px rgba(0,0,0,.25),0 7px 14px rgba(0,0,0,.2)}.c-ckolor__alpha-handle,.c-ckolor__saturation-handle{pointer-events:none;position:absolute;width:14px;height:14px;background:rgba(255,255,255,.4);border-radius:50%;top:3px;left:50%;margin-left:-7px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.79),inset 0 2px 14px rgba(0,0,0,.22),0 1px 3px rgba(0,0,0,.14);transition:transform .2s,background .2s,box-shadow .2s;cursor:pointer;transform:scale(1)}.c-ckolor__swatch{width:14px;height:14px;display:inline-block;vertical-align:middle;border-radius:2px}.c-ckolor__wheel-scoop{pointer-events:none;position:absolute;top:50%;left:50%;width:20px;height:20px;border-radius:50%;background:red;margin:-11px 0 0 -11px;box-shadow:0 0 0 2px #fff;transition:transform .2s}.c-ckolor__wheel{overflow:hidden;width:0;height:0;padding:50%;position:relative;box-shadow:0 0 0 6px #fff;margin-bottom:28px;cursor:pointer;background:#fff;border-radius:50%;z-index:0}.c-ckolor__wheel,.c-ckolor__wheel *{user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}.c-ckolor__wheel-color{display:block}.c-ckolor__wheel-color:nth-child(1){transform:rotate(10deg)}.c-ckolor__wheel-color:nth-child(2){transform:rotate(20deg)}.c-ckolor__wheel-color:nth-child(3){transform:rotate(30deg)}.c-ckolor__wheel-color:nth-child(4){transform:rotate(40deg)}.c-ckolor__wheel-color:nth-child(5){transform:rotate(50deg)}.c-ckolor__wheel-color:nth-child(6){transform:rotate(60deg)}.c-ckolor__wheel-color:nth-child(7){transform:rotate(70deg)}.c-ckolor__wheel-color:nth-child(8){transform:rotate(80deg)}.c-ckolor__wheel-color:nth-child(9){transform:rotate(90deg)}.c-ckolor__wheel-color:nth-child(10){transform:rotate(100deg)}.c-ckolor__wheel-color:nth-child(11){transform:rotate(110deg)}.c-ckolor__wheel-color:nth-child(12){transform:rotate(120deg)}.c-ckolor__wheel-color:nth-child(13){transform:rotate(130deg)}.c-ckolor__wheel-color:nth-child(14){transform:rotate(140deg)}.c-ckolor__wheel-color:nth-child(15){transform:rotate(150deg)}.c-ckolor__wheel-color:nth-child(16){transform:rotate(160deg)}.c-ckolor__wheel-color:nth-child(17){transform:rotate(170deg)}.c-ckolor__wheel-color:nth-child(18){transform:rotate(180deg)}.c-ckolor__wheel-color:nth-child(19){transform:rotate(190deg)}.c-ckolor__wheel-color:nth-child(20){transform:rotate(200deg)}.c-ckolor__wheel-color:nth-child(21){transform:rotate(210deg)}.c-ckolor__wheel-color:nth-child(22){transform:rotate(220deg)}.c-ckolor__wheel-color:nth-child(23){transform:rotate(230deg)}.c-ckolor__wheel-color:nth-child(24){transform:rotate(240deg)}.c-ckolor__wheel-color:nth-child(25){transform:rotate(250deg)}.c-ckolor__wheel-color:nth-child(26){transform:rotate(260deg)}.c-ckolor__wheel-color:nth-child(27){transform:rotate(270deg)}.c-ckolor__wheel-color:nth-child(28){transform:rotate(280deg)}.c-ckolor__wheel-color:nth-child(29){transform:rotate(290deg)}.c-ckolor__wheel-color:nth-child(30){transform:rotate(300deg)}.c-ckolor__wheel-color:nth-child(31){transform:rotate(310deg)}.c-ckolor__wheel-color:nth-child(32){transform:rotate(320deg)}.c-ckolor__wheel-color:nth-child(33){transform:rotate(330deg)}.c-ckolor__wheel-color:nth-child(34){transform:rotate(340deg)}.c-ckolor__wheel-color:nth-child(35){transform:rotate(350deg)}.c-ckolor__wheel-color:nth-child(36){transform:rotate(360deg)}.c-ckolor__wheel-color:nth-child(37){transform:rotate(370deg)}.c-ckolor__wheel-color,.c-ckolor__wheel-color-inner1,.c-ckolor__wheel-color-inner2,.c-ckolor__wheel-color-inner2-2,.c-ckolor__wheel-value{width:100%;height:100%;position:absolute;top:0;left:0;pointer-events:none;overflow:hidden}.c-ckolor__wheel-colors{width:120%;height:120%;margin-left:-10%;margin-top:-10%;-webkit-filter:blur(14px);filter:blur(14px);background:#000;position:absolute;top:0;left:0}.c-ckolor__wheel-color-inner1{transform:rotate(60deg) translate(50%,50%)}.c-ckolor__wheel-color-inner2{transform:rotate(-79deg) translate(49%,26%);transform-origin:0;background-image:linear-gradient(177deg,transparent 30%,rgba(0,0,0,.35) 38%,rgba(0,0,0,.5) 42%,rgba(0,0,0,.9) 55%),linear-gradient(177deg,rgba(255,255,255,.9) 13%,rgba(255,255,255,0) 30%)}.c-ckolor__wheel-value{box-shadow:inset 0 0 3px rgba(255,255,255,.53),inset 0 0 5px 1px rgba(0,0,0,.12),inset 0 0 0 1px rgba(0,0,0,.38),0 0 0 1px #000;background:radial-gradient(ellipse at center,rgba(255,255,255,.2) 0,rgba(255,255,255,0) 18%),radial-gradient(ellipse at center,rgba(255,255,255,.3) 0,rgba(255,255,255,0) 11%),radial-gradient(ellipse at center,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 6%),radial-gradient(ellipse at center,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 3%);pointer-events:all;border-radius:50%;overflow:hidden}.c-ckolor__wheel-value:hover .c-ckolor__wheel-scoop{transform:scale(1.1)}
2 |
--------------------------------------------------------------------------------
/dashboard/css/components/09.angular-sortable.min.css:
--------------------------------------------------------------------------------
1 | /* ng-sortable css file */
2 | .as-sortable-item,.as-sortable-placeholder{display:block}.as-sortable-item{-ms-touch-action:none;touch-action:none;-webkit-touch-callout:none}.as-sortable-item-handle{cursor:move;cursor:-webkit-grab;cursor:-moz-grab}.as-sortable-drag{position:absolute;pointer-events:none;z-index:9999}.as-sortable-hidden{display:none!important}.as-sortable-un-selectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
3 |
4 | /* ng-sortable css file */
5 | .sas-sortable-item,.sas-sortable-placeholder{min-height:20px;margin:1px 2px 5px 1px;border-radius:10px}.sas-sortable-item{border:solid 1px darkgrey;background-color:#fff}.sas-sortable-placeholder{border:1px dashed darkgrey;box-sizing:border-box;background-color:#dbdbdb}.sas-sortable-drag{opacity:.8}
6 |
--------------------------------------------------------------------------------
/dashboard/css/components/10.angular-bootstrap-toggle.min.css:
--------------------------------------------------------------------------------
1 | .checkbox label .toggle,.checkbox-inline .toggle{margin-left:-20px;margin-right:5px}.toggle{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;position:relative;overflow:hidden}.toggle-group,.toggle-off,.toggle-on{position:absolute;top:0;bottom:0}.toggle-group{width:200%;left:0;transition:left .35s;-webkit-transition:left .35s;-moz-user-select:none;-webkit-user-select:none}.toggle.off .toggle-group{left:-100%}.toggle-on{left:0;right:50%;margin:0;border:0;border-radius:0}.toggle-off{left:50%;right:0;margin:0;border:0;border-radius:0}.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px}.toggle.btn{min-width:59px;min-height:34px}.toggle-on.btn{padding-right:24px}.toggle-off.btn{padding-left:24px}.toggle.btn-lg{min-width:79px;min-height:45px}.toggle-on.btn-lg{padding-right:31px}.toggle-off.btn-lg{padding-left:31px}.toggle-handle.btn-lg{width:40px}.toggle.btn-sm{min-width:50px;min-height:30px}.toggle-on.btn-sm{padding-right:20px}.toggle-off.btn-sm{padding-left:20px}.toggle.btn-xs{min-width:35px;min-height:22px}.toggle-on.btn-xs{padding-right:12px}.toggle-off.btn-xs{padding-left:12px}
2 |
--------------------------------------------------------------------------------
/dashboard/css/components/11.angular-smart-area-1.1.0.min.css:
--------------------------------------------------------------------------------
1 | textarea.sa-realArea,textarea.sa-realArea:focus,textarea.sa-realArea:hover{border-color:transparent}.sa-wrapper{width:100%;position:relative}.sa-fakeArea,.sa-realArea{font-size:inherit;color:inherit;resize:none;overflow:hidden;z-index:0}textarea.sa-realArea{-webkit-text-fill-color:transparent;position:absolute;top:0;left:0;background:0 0}.sa-fakeArea{color:#000;height:100%}.sa-dropdown{position:absolute;min-width:100px;text-align:left;z-index:1}.sa-dropdown .dropdown-menu{display:block}.sa-dropdown a{padding:2px 6px;font-size:.9em}.sa-dropdown a.active{background-color:#4497de;color:#fff}
2 |
--------------------------------------------------------------------------------
/dashboard/css/components/rebuild.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm components.min.css
4 | cat 0* >> components.min.css
5 | cat 1* >> components.min.css
6 |
--------------------------------------------------------------------------------
/dashboard/css/modules/fuel.module.css:
--------------------------------------------------------------------------------
1 | viewer,
2 | ng-view {
3 | display: block;
4 | top: 0px;
5 | }
6 |
7 | div.main {
8 | position: fixed;
9 | left: 0px;
10 | top: 0px;
11 | right: 0px;
12 | bottom: 0px;
13 | background: #fcfcfc;
14 | }
15 |
16 |
17 | div.form-group {
18 | padding: 8px;
19 | margin: 0px;
20 | border-bottom: solid 1px #ddd;
21 | background: #eee;
22 | }
23 |
24 | /*
25 | * Main content
26 | */
27 | graph {
28 | position: fixed;
29 | top: 0px;
30 | height: 50%;
31 | left: 320px;
32 | right: 0px;
33 | display: block;
34 | border-left: solid 1px #ddd;
35 | background: #fff;
36 | }
37 |
38 | data {
39 | position: fixed;
40 | top: 50%;
41 | height: 50%;
42 | left: 320px;
43 | right: 0px;
44 | bottom: 0px;
45 | display: block;
46 | border-left: solid 1px #ddd;
47 | border-top: solid 1px #ddd;
48 | background: #fcfcfc;
49 | overflow: hidden;
50 | overflow-y: auto;
51 | }
52 |
53 | graph > canvas,
54 | graph > div.chart {
55 | position: absolute;
56 | left: 0px;
57 | top: 0px;
58 | right: 0px;
59 | bottom: 0px;
60 | width: 100%;
61 | height: 100%;
62 | }
63 |
64 | graph label {
65 | padding: 8px;
66 | }
67 |
68 | li {
69 | display: block;
70 | overflow: hidden;
71 | list-style: none;
72 | padding: 0px;
73 | margin: 0px;
74 | z-index: 1;
75 | }
76 |
77 | li label {
78 | width: 100%;
79 | padding: 0px 0px 0px 8px;
80 | margin: 0px;
81 | line-height: 24px;
82 | cursor: pointer;
83 | display: block;
84 | overflow: hidden;
85 | text-overflow: ellipsis;
86 | white-space: nowrap;
87 | }
88 |
89 | li created {
90 | display: none;
91 | }
92 |
93 | li[selected] {
94 | z-index: 2;
95 | }
96 |
97 |
98 | li[selected] > label {
99 | color: #66c;
100 | cursor: default;
101 | }
102 |
103 | ul[canisters] > li {
104 | border-bottom: solid 1px #eee;
105 | }
106 |
107 | ul[canisters] {
108 | margin: 0px;
109 | padding: 0px;
110 | overflow: hidden;
111 | overflow-y: auto;
112 | width: 320px;
113 | height: 100%;
114 | }
115 |
116 | ul[fuelStreams] {
117 | display: block;
118 | margin: 0px;
119 | padding: 0px;
120 | padding-left: 20px;
121 | }
122 |
123 | ul[fuelStreams] li label {
124 | font-weight: normal;
125 | }
126 |
127 |
128 | @media (max-width: 767px) {
129 |
130 | .li {
131 | height: initial;
132 | sline-height: 44px !important;
133 | }
134 |
135 | div.main {
136 | overflow-y: auto;
137 | }
138 |
139 | ul[canisters] {
140 | position: relative;
141 | left: auto;
142 | top: auto;
143 | right: auto;
144 | display: block;
145 | width: 100%;
146 | height: auto;
147 | }
148 |
149 | graph,
150 | data {
151 | position: relative;
152 | left: auto;
153 | top: auto;
154 | right: auto;
155 | display: block;
156 | width: 100%;
157 | height: 50%;
158 | }
159 | }
160 |
161 | .collapse-control {
162 | padding-top: 3px;
163 | padding-bottom: 3px;
164 | padding-right: 14px;
165 | }
--------------------------------------------------------------------------------
/dashboard/css/modules/fuel.module.css.bak:
--------------------------------------------------------------------------------
1 | viewer,
2 | ng-view {
3 | display: block;
4 | top: 0px;
5 | }
6 |
7 | div.main {
8 | position: fixed;
9 | left: 0px;
10 | top: 0px;
11 | right: 0px;
12 | bottom: 0px;
13 | }
14 |
15 | /*
16 | * Main content
17 | */
18 | graph {
19 | position: fixed;
20 | top: 50%;
21 | height: 50%;
22 | left: 0px;
23 | right: 0px;
24 | bottom: 0px;
25 | display: block;
26 | border-top: solid 1px #ddd;
27 | background: #eee;
28 | }
29 |
30 | graph > label {
31 | height: 44px;
32 | line-height: 44px;
33 | padding: 0px 8px;
34 | display: block;
35 | width: 100%;
36 | overflow: hidden;
37 | text-overflow: ellipsis;
38 | white-space: nowrap;
39 | border-bottom: solid 1px #ddd;
40 | }
41 |
42 | graph > canvas {
43 | position: absolute;
44 | left: 0px;
45 | top: 0px;
46 | right: 0px;
47 | bottom: 0px;
48 | width: 100%;
49 | height: 100%;
50 | }
51 |
52 | li {
53 | list-style: none;
54 | line-height: 32px;
55 | sheight: 32px;
56 | padding: 0px;
57 | margin: 0px;
58 | z-index: 1;
59 | }
60 |
61 | li label {
62 | width: 100%;
63 | padding: 0px 0px 0px 8px;
64 | margin: 0px;
65 | cursor: pointer;
66 | }
67 |
68 | li created {
69 | display: inline;
70 | float: right;
71 | font-size: 0.75em;
72 | padding: 0px 4px;
73 | color: #ccc;
74 | }
75 |
76 | li[selected] {
77 | z-index: 2;
78 | }
79 |
80 | li[selected] > label {
81 | background: rgba(128, 224, 255, 0.2);
82 | cursor: default;
83 | }
84 |
85 | ul[canisters] {
86 | margin: 0px;
87 | padding: 0px;
88 | overflow: hidden;
89 | overflow-y: auto;
90 | width: 100%;
91 | height: 50%;
92 | }
93 |
94 | ul[fuelStreams] {
95 | display: none;
96 | margin: 0px;
97 | padding: 0px;
98 | }
99 |
100 | li[canister][selected] ul[fuelStreams] {
101 | display: block;
102 | }
103 |
104 | @media (min-width: 768px) {
105 | ul[canisters] {
106 | position: fixed;
107 | left: 0px;
108 | top: 0px;
109 | width: 50%;
110 | }
111 |
112 | ul[fuelStreams] {
113 | position: fixed;
114 | left: 50%;
115 | top: 0px;
116 | height: 50%;
117 | width: 50%;
118 | border-left: solid 1px #ccc;
119 | padding: 0px;
120 | }
121 |
122 |
123 | }
124 |
125 |
126 | @media (max-width: 767px) {
127 |
128 | .li {
129 | height: initial;
130 | sline-height: 44px !important;
131 | }
132 |
133 | ul[fuelStreams] label {
134 | border-left: solid 16px #fff;
135 | }
136 |
137 | ul[fuelStreams] > li[selected] {
138 | }
139 |
140 | ul[fuelStreams] > li[selected] > label {
141 | border-left: 0px;
142 | padding-left: 24px;
143 | background: rgba(128, 224, 255, 0.3);
144 | }
145 |
146 | }
147 |
--------------------------------------------------------------------------------
/dashboard/css/modules/register.module.css:
--------------------------------------------------------------------------------
1 | body {
2 | overflow-y: auto;
3 | background-color: #fff;
4 | display: flex;
5 | align-items: center;
6 | justify-content: center;
7 | }
8 |
9 | .loginbox {
10 | max-width: 300px;
11 | margin: 0 auto;
12 | }
13 |
14 | .loginbox-logo {
15 | max-width: 100%;
16 | }
17 |
18 | .loginbox .input-group .form-control,
19 | .loginbox .input-group .btn {
20 | border-radius: 0 !important;
21 | }
22 |
23 | input[name="code"] {
24 | font-size: 26px;
25 | text-transform: lowercase;
26 | }
27 |
28 | ng-view {
29 | position: relative;
30 | }
31 |
32 | #instance,
33 | .loginbox .input-group,
34 | .help-row {
35 | margin-top: 40px;
36 | }
37 |
38 |
39 | .help-row{
40 | text-align: center;
41 | }
42 |
43 | .help-row a{
44 | text-decoration: none;
45 | color: #fff;
46 | }
47 |
48 | .help-row a:hover{
49 | text-decoration: none;
50 | color: #fff;
51 | }
52 |
--------------------------------------------------------------------------------
/dashboard/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/dashboard/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/dashboard/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/dashboard/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/dashboard/html/modules/fuel.module.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | -
13 |
17 |
18 |
19 | -
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | {{name}} |
38 |
39 |
40 | Date |
41 | Value |
42 |
43 |
44 |
45 |
46 | {{utcToString(point.x)}} |
47 | {{point.y}} |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/dashboard/html/modules/fuel.module.html.bak:
--------------------------------------------------------------------------------
1 |
2 | webCoRE
3 |
4 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | -
18 |
19 |
20 | -
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | {{name}} |
37 |
38 |
39 | Date |
40 | Value |
41 |
42 |
43 |
44 |
45 | {{utcToString(point.x)}} |
46 | {{point.y}} |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/dashboard/html/modules/register.module.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |

6 |
19 |
27 |
28 |
29 |
30 |
31 |
32 |
60 |
--------------------------------------------------------------------------------
/dashboard/img/altitude.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/altitude.png
--------------------------------------------------------------------------------
/dashboard/img/app-CoRE3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/app-CoRE3x.png
--------------------------------------------------------------------------------
/dashboard/img/favicon/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/favicon/android-chrome-192x192.png
--------------------------------------------------------------------------------
/dashboard/img/favicon/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/favicon/android-chrome-512x512.png
--------------------------------------------------------------------------------
/dashboard/img/favicon/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/favicon/apple-touch-icon.png
--------------------------------------------------------------------------------
/dashboard/img/favicon/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #603cba
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/dashboard/img/favicon/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/dashboard/img/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/dashboard/img/favicon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/favicon/favicon.ico
--------------------------------------------------------------------------------
/dashboard/img/favicon/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/favicon/mstile-150x150.png
--------------------------------------------------------------------------------
/dashboard/img/favicon/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Dashboard",
3 | "short_name": "Dashboard",
4 | "icons": [
5 | {
6 | "src": "android-chrome-192x192.png",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "android-chrome-512x512.png",
12 | "sizes": "512x512",
13 | "type": "image/png"
14 | }
15 | ],
16 | "theme_color": "#ffffff",
17 | "background_color": "#ffffff",
18 | "display": "standalone"
19 | }
20 |
--------------------------------------------------------------------------------
/dashboard/img/piston.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/piston.png
--------------------------------------------------------------------------------
/dashboard/img/squared_metal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/squared_metal.png
--------------------------------------------------------------------------------
/dashboard/img/squared_metal_@2X.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dashboard/img/squared_metal_@2X.png
--------------------------------------------------------------------------------
/dashboard/img/webCoRE-mark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
39 |
--------------------------------------------------------------------------------
/dashboard/img/webCoRE-text.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/dashboard/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | webCoRE Dashboard
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/dashboard/js/components/02.angular-route-1.6.3.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | AngularJS v1.6.3
3 | (c) 2010-2017 Google, Inc. http://angularjs.org
4 | License: MIT
5 | */
6 | (function(J,d){'use strict';function A(d){k&&d.get("$route")}function B(t,u,g){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,f,b,c,m){function v(){l&&(g.cancel(l),l=null);n&&(n.$destroy(),n=null);p&&(l=g.leave(p),l.done(function(a){!1!==a&&(l=null)}),p=null)}function E(){var b=t.current&&t.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),c=t.current;p=m(b,function(b){g.enter(b,null,p||f).done(function(b){!1===b||!d.isDefined(w)||w&&!a.$eval(w)||u()});
7 | v()});n=c.scope=b;n.$emit("$viewContentLoaded");n.$eval(k)}else v()}var n,p,l,w=b.autoscroll,k=b.onload||"";a.$on("$routeChangeSuccess",E);E()}}}function C(d,k,g){return{restrict:"ECA",priority:-400,link:function(a,f){var b=g.current,c=b.locals;f.html(c.$template);var m=d(f.contents());if(b.controller){c.$scope=a;var v=k(b.controller,c);b.controllerAs&&(a[b.controllerAs]=v);f.data("$ngControllerController",v);f.children().data("$ngControllerController",v)}a[b.resolveAs||"$resolve"]=c;m(a)}}}var x,
8 | y,F,G,z=d.module("ngRoute",[]).info({angularVersion:"1.6.3"}).provider("$route",function(){function t(a,f){return d.extend(Object.create(a),f)}function u(a,d){var b=d.caseInsensitiveMatch,c={originalPath:a,regexp:a},g=c.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)(\*\?|[?*])?/g,function(a,b,d,c){a="?"===c||"*?"===c?"?":null;c="*"===c||"*?"===c?"*":null;g.push({name:d,optional:!!a});b=b||"";return""+(a?"":b)+"(?:"+(a?b:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([/$*])/g,
9 | "\\$1");c.regexp=new RegExp("^"+a+"$",b?"i":"");return c}x=d.isArray;y=d.isObject;F=d.isDefined;G=d.noop;var g={};this.when=function(a,f){var b;b=void 0;if(x(f)){b=b||[];for(var c=0,m=f.length;c/g,">")}function I(a){for(;a;){if(a.nodeType===s.Node.ELEMENT_NODE)for(var c=a.attributes,b=0,d=c.length;b"))},end:function(a){a=q(a);b||!0!==p[a]||!0===e[a]||(d(""),d(a),d(">"));a==b&&(b=!1)},chars:function(a){b||d(H(a))}}};F=s.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)};var L=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,M=/([^#-~ |!])/g,e=h("area,br,col,hr,img,wbr"),y=h("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),m=h("rp,rt"),r=k({},m,y),y=k({},y,h("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),
11 | m=k({},m,h("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),z=h("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),A=h("script,style"),p=k({},e,y,m,r),n=h("background,cite,href,longdesc,src,xlink:href"),r=h("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),
12 | m=h("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",
13 | !0),u=k({},n,m,r),g;(function(a){if(a.document&&a.document.implementation)a=a.document.implementation.createHTMLDocument("inert");else throw w("noinert");var c=(a.documentElement||a.getDocumentElement()).getElementsByTagName("body");1===c.length?g=c[0]:(c=a.createElement("html"),g=a.createElement("body"),c.appendChild(g),a.appendChild(c))})(s)}).info({angularVersion:"1.6.3"});f.module("ngSanitize").filter("linky",["$sanitize",function(h){var k=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
14 | q=/^mailto:/i,s=f.$$minErr("linky"),t=f.isDefined,x=f.isFunction,v=f.isObject,w=f.isString;return function(e,f,m){function r(a){a&&n.push(J(a))}function z(a,c){var b,d=A(a);n.push("');r(c);n.push("")}if(null==e||""===e)return e;if(!w(e))throw s("notstring",e);for(var A=x(m)?m:v(m)?function(){return m}:function(){return{}},p=e,n=[],u,g;e=p.match(k);)u=e[0],e[2]||
15 | e[4]||(u=(e[3]?"http://":"mailto:")+u),g=e.index,r(p.substr(0,g)),z(u,e[0].replace(q,"")),p=p.substring(g+e[0].length);r(p);return h(n.join(""))}}])})(window,window.angular);
16 |
--------------------------------------------------------------------------------
/dashboard/js/components/05.angular-loading-bar.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * angular-loading-bar v0.8.0
3 | * https://chieffancypants.github.io/angular-loading-bar
4 | * Copyright (c) 2015 Wes Cruver
5 | * License: MIT
6 | */
7 | !function(){"use strict";angular.module("angular-loading-bar",["cfp.loadingBarInterceptor"]),angular.module("chieffancypants.loadingBar",["cfp.loadingBarInterceptor"]),angular.module("cfp.loadingBarInterceptor",["cfp.loadingBar"]).config(["$httpProvider",function(a){var b=["$q","$cacheFactory","$timeout","$rootScope","$log","cfpLoadingBar",function(b,c,d,e,f,g){function h(){d.cancel(j),g.complete(),l=0,k=0}function i(b){var d,e=c.get("$http"),f=a.defaults;!b.cache&&!f.cache||b.cache===!1||"GET"!==b.method&&"JSONP"!==b.method||(d=angular.isObject(b.cache)?b.cache:angular.isObject(f.cache)?f.cache:e);var g=void 0!==d?void 0!==d.get(b.url):!1;return void 0!==b.cached&&g!==b.cached?b.cached:(b.cached=g,g)}var j,k=0,l=0,m=g.latencyThreshold;return{request:function(a){return a.ignoreLoadingBar||i(a)||(e.$broadcast("cfpLoadingBar:loading",{url:a.url}),0===k&&(j=d(function(){g.start()},m)),k++,g.set(l/k)),a},response:function(a){return a&&a.config?(a.config.ignoreLoadingBar||i(a.config)||(l++,e.$broadcast("cfpLoadingBar:loaded",{url:a.config.url,result:a}),l>=k?h():g.set(l/k)),a):(f.error("Broken interceptor detected: Config object not supplied in response:\n https://github.com/chieffancypants/angular-loading-bar/pull/50"),a)},responseError:function(a){return a&&a.config?(a.config.ignoreLoadingBar||i(a.config)||(l++,e.$broadcast("cfpLoadingBar:loaded",{url:a.config.url,result:a}),l>=k?h():g.set(l/k)),b.reject(a)):(f.error("Broken interceptor detected: Config object not supplied in rejection:\n https://github.com/chieffancypants/angular-loading-bar/pull/50"),b.reject(a))}}}];a.interceptors.push(b)}]),angular.module("cfp.loadingBar",[]).provider("cfpLoadingBar",function(){this.autoIncrement=!0,this.includeSpinner=!0,this.includeBar=!0,this.latencyThreshold=100,this.startSize=.02,this.parentSelector="body",this.spinnerTemplate='',this.loadingBarTemplate='',this.$get=["$injector","$document","$timeout","$rootScope",function(a,b,c,d){function e(){k||(k=a.get("$animate"));var e=b.find(n).eq(0);c.cancel(m),r||(d.$broadcast("cfpLoadingBar:started"),r=!0,v&&k.enter(o,e,angular.element(e[0].lastChild)),u&&k.enter(q,e,angular.element(e[0].lastChild)),f(w))}function f(a){if(r){var b=100*a+"%";p.css("width",b),s=a,t&&(c.cancel(l),l=c(function(){g()},250))}}function g(){if(!(h()>=1)){var a=0,b=h();a=b>=0&&.25>b?(3*Math.random()+3)/100:b>=.25&&.65>b?3*Math.random()/100:b>=.65&&.9>b?2*Math.random()/100:b>=.9&&.99>b?.005:0;var c=h()+a;f(c)}}function h(){return s}function i(){s=0,r=!1}function j(){k||(k=a.get("$animate")),d.$broadcast("cfpLoadingBar:completed"),f(1),c.cancel(m),m=c(function(){var a=k.leave(o,i);a&&a.then&&a.then(i),k.leave(q)},500)}var k,l,m,n=this.parentSelector,o=angular.element(this.loadingBarTemplate),p=o.find("div").eq(0),q=angular.element(this.spinnerTemplate),r=!1,s=0,t=this.autoIncrement,u=this.includeSpinner,v=this.includeBar,w=this.startSize;return{start:e,set:f,status:h,inc:g,complete:j,autoIncrement:this.autoIncrement,includeSpinner:this.includeSpinner,latencyThreshold:this.latencyThreshold,parentSelector:this.parentSelector,startSize:this.startSize}}]})}();
8 |
--------------------------------------------------------------------------------
/dashboard/js/components/08.angular-svg-round-progressbar.min.js:
--------------------------------------------------------------------------------
1 | /* angular-svg-round-progressbar@0.4.6 2016-07-06 */
2 | (function(){
3 | "use strict";
4 | !function(){for(var a=0,b=["webkit","moz"],c=0;c-1&&a.indexOf("url")>-1?a.slice(0,b)+window.location.href+a.slice(b):a}:function(a){return a},c.toNumber=function(a){return d(a)?a:parseFloat((a+"").replace(",","."))},c.getOffset=function(a,b){var c=+b.offset||0;if("inherit"===b.offset)for(var d=a.$parent;d;){if(d.hasOwnProperty("$$getRoundProgressOptions")){var e=d.$$getRoundProgressOptions();c+=(+e.offset||0)+(+e.stroke||0)}d=d.$parent}return c},c.getTimestamp=a.performance&&a.performance.now&&angular.isNumber(a.performance.now())?function(){return a.performance.now()}:function(){return(new a.Date).getTime()},c.updateState=function(a,c,d,e,f,g){if(!f)return e;var h=a>0?Math.min(a,c):0,i=g?180:359.9999,j=0===c?0:h/c*i,k=b(f,f,d,j),l=b(f,f,d,0),m=j<=180?0:1,n="M "+k+" A "+d+" "+d+" 0 "+m+" 0 "+l;return e.attr("d",n)},c.animations={linearEase:function(a,b,c,d){return c*a/d+b},easeInQuad:function(a,b,c,d){return c*(a/=d)*a+b},easeOutQuad:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},easeInOutQuad:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},easeInCubic:function(a,b,c,d){return c*(a/=d)*a*a+b},easeOutCubic:function(a,b,c,d){return c*((a=a/d-1)*a*a+1)+b},easeInOutCubic:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a*a+b:c/2*((a-=2)*a*a+2)+b},easeInQuart:function(a,b,c,d){return c*(a/=d)*a*a*a+b},easeOutQuart:function(a,b,c,d){return-c*((a=a/d-1)*a*a*a-1)+b},easeInOutQuart:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a*a*a+b:-c/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(a,b,c,d){return c*(a/=d)*a*a*a*a+b},easeOutQuint:function(a,b,c,d){return c*((a=a/d-1)*a*a*a*a+1)+b},easeInOutQuint:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a*a*a*a+b:c/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(a,b,c,d){return-c*Math.cos(a/d*(Math.PI/2))+c+b},easeOutSine:function(a,b,c,d){return c*Math.sin(a/d*(Math.PI/2))+b},easeInOutSine:function(a,b,c,d){return-c/2*(Math.cos(Math.PI*a/d)-1)+b},easeInExpo:function(a,b,c,d){return 0==a?b:c*Math.pow(2,10*(a/d-1))+b},easeOutExpo:function(a,b,c,d){return a==d?b+c:c*(-Math.pow(2,-10*a/d)+1)+b},easeInOutExpo:function(a,b,c,d){return 0==a?b:a==d?b+c:(a/=d/2)<1?c/2*Math.pow(2,10*(a-1))+b:c/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(a,b,c,d){return-c*(Math.sqrt(1-(a/=d)*a)-1)+b},easeOutCirc:function(a,b,c,d){return c*Math.sqrt(1-(a=a/d-1)*a)+b},easeInOutCirc:function(a,b,c,d){return(a/=d/2)<1?-c/2*(Math.sqrt(1-a*a)-1)+b:c/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(a,b,c,d){var e=1.70158,f=0,g=c;return 0==a?b:1==(a/=d)?b+c:(f||(f=.3*d),g=0?i:0}).css({stroke:b.resolveColor(o.bgcolor),strokeWidth:g})},r=function(c,d,g){var h=b.toNumber(o.max||0),j=c>0?a.Math.min(c,h):0,k=d===j||d<0?0:d||0,n=j-k,q=b.animations[o.animation],r=+o.duration||0,s=g||c>h&&d>h||c<0&&d<0||r<25,t=b.toNumber(o.radius),u=t-o.stroke/2-b.getOffset(e,o),v=o.semi;l.attr({"aria-valuemax":h,"aria-valuenow":j});var w=function(){if(s)b.updateState(j,h,u,m,t,v),o.onRender&&o.onRender(j,o,f);else{var c=b.getTimestamp(),d=++p;a.requestAnimationFrame(function e(){var g=a.Math.min(b.getTimestamp()-c,r),i=q(g,k,n,r);b.updateState(i,h,u,m,t,v),o.onRender&&o.onRender(i,o,f),d===p&&g0?(a.clearTimeout(i),a.setTimeout(w,o.animationDelay)):w()},s=Object.keys(d.scope).filter(function(a){return h(a)&&"current"!==a});e.$watchGroup(s,function(a){for(var b=0;b','','',"",""];b.length&&b[0].nodeName.toLowerCase()!==c&&"undefined"==typeof b.attr(c);)b=b.parent();return b&&b.length||(d.unshift(''),d.push("
")),d.join("\n")}}):angular.extend(d,{template:''})}]);
5 | })();
6 |
--------------------------------------------------------------------------------
/dashboard/js/components/11.angular-bootstrap-select.min.js:
--------------------------------------------------------------------------------
1 | "use strict";function dropdownToggleDirective(){return{restrict:"ACE",priority:101,link:function(a,b,c){var d=function(a){var c=angular.element(this).parent();angular.element(".bootstrap-select.open",b).not(c).removeClass("open"),c.toggleClass("open")};b.on("click.bootstrapSelect",".dropdown-toggle",d),a.$on("$destroy",function(){b.off(".bootstrapSelect")})}}}function dropdownCloseDirective(){return{restrict:"ACE",priority:101,link:function(a,b,c){var d=function(a){var c="A"!==a.target.tagName&&angular.element(a.target).parents(".bootstrap-select");angular.element(".bootstrap-select.open",b).not(c).removeClass("open")};angular.element(document).on("click.bootstrapSelect",d),a.$on("$destroy",function(){angular.element(document).off(".bootstrapSelect")})}}}function selectpickerDirective(a,b){return{restrict:"A",priority:1e3,link:function(c,d,e){function f(a){c.$applyAsync(function(){e.ngOptions&&/track by/.test(e.ngOptions)&&d.val(a),d.selectpicker("refresh")})}e.$observe("spTheme",function(a){b(function(){d.data("selectpicker").$button.removeClass(function(a,b){return(b.match(/(^|\s)?btn-\S+/g)||[]).join(" ")}),d.selectpicker("setStyle",a)})}),b(function(){d.selectpicker(a(e.selectpicker)()),d.selectpicker("refresh")}),e.ngModel&&c.$watch(e.ngModel,f,!0),e.ngDisabled&&c.$watch(e.ngDisabled,f,!0),e.ngOptions&&/ in /.test(e.ngOptions)&&c.$watch(e.ngOptions.split(" in ")[1].split(" track ")[0],function(){c.$applyAsync(function(){d.selectpicker("refresh")})},!0),c.$on("$destroy",function(){b(function(){d.selectpicker("destroy")})})}}}angular.module("angular-bootstrap-select.extra",[]).directive("dropdownToggle",[dropdownToggleDirective]).directive("dropdownClose",[dropdownCloseDirective]),angular.module("angular-bootstrap-select",[]).directive("selectpicker",["$parse","$timeout",selectpickerDirective]);
2 |
--------------------------------------------------------------------------------
/dashboard/js/components/13.angular-drag-and-drop-lists.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * angular-drag-and-drop-lists v2.0.0
3 | *
4 | * Copyright (c) 2014 Marcel Juenemann marcel@juenemann.cc
5 | * Copyright (c) 2014-2016 Google Inc.
6 | * https://github.com/marceljuenemann/angular-drag-and-drop-lists
7 | *
8 | * License: MIT
9 | */
10 | !function(e){var n="application/x-dnd",a="application/json",r="Text"
11 | e.directive("dndDraggable",["$parse","$timeout",function(e,d){return function(o,i,l){i.attr("draggable","true"),l.dndDisableIf&&o.$watch(l.dndDisableIf,function(e){i.attr("draggable",!e)}),i.on("dragstart",function(s){if(s=s.originalEvent||s,"false"==i.attr("draggable"))return!0
12 | t.dropEffect="none",t.isDragging=!0,t.itemType=l.dndType&&o.$eval(l.dndType).toLowerCase()
13 | var f=o.$eval(l.dndDraggable),g=n+(t.itemType?"-"+t.itemType:"")
14 | try{s.dataTransfer.setData(g,angular.toJson(f))}catch(c){var u=angular.toJson({item:f,type:t.itemType})
15 | try{s.dataTransfer.setData(a,u)}catch(c){s.dataTransfer.setData(r,u)}}s.dataTransfer.effectAllowed=l.dndEffectAllowed||"move",i.addClass("dndDragging"),d(function(){i.addClass("dndDraggingSource")},0),s._dndHandle&&s.dataTransfer.setDragImage&&s.dataTransfer.setDragImage(i[0],0,0),e(l.dndDragstart)(o,{event:s}),s.stopPropagation()}),i.on("dragend",function(n){n=n.originalEvent||n
16 | var a=t.dropEffect
17 | o.$apply(function(){switch(a){case"move":e(l.dndMoved)(o,{event:n})
18 | break
19 | case"copy":e(l.dndCopied)(o,{event:n})
20 | break
21 | case"none":e(l.dndCanceled)(o,{event:n})}e(l.dndDragend)(o,{event:n,dropEffect:a})}),i.removeClass("dndDragging"),d(function(){i.removeClass("dndDraggingSource")},0),t.isDragging=!1,n.stopPropagation()}),i.on("click",function(n){l.dndSelected&&(n=n.originalEvent||n,o.$apply(function(){e(l.dndSelected)(o,{event:n})}),n.stopPropagation())}),i.on("selectstart",function(){this.dragDrop&&this.dragDrop()})}}]),e.directive("dndList",["$parse","$timeout",function(e,d){return function(o,i,l){function s(e){if(!e)return r
22 | for(var t=0;t")}var D=v()
26 | D.remove()
27 | var y=D[0],T=i[0],m={}
28 | i.on("dragenter",function(e){e=e.originalEvent||e
29 | var n=l.dndAllowedTypes&&o.$eval(l.dndAllowedTypes)
30 | m={allowedTypes:angular.isArray(n)&&n.join("|").toLowerCase().split("|"),disabled:l.dndDisableIf&&o.$eval(l.dndDisableIf),externalSources:l.dndExternalSources&&o.$eval(l.dndExternalSources),horizontal:l.dndHorizontalList&&o.$eval(l.dndHorizontalList)}
31 | var a=s(e.dataTransfer.types)
32 | return a&&g(f(a))?void e.preventDefault():!0}),i.on("dragover",function(e){e=e.originalEvent||e
33 | var n=s(e.dataTransfer.types),a=f(n)
34 | if(!n||!g(a))return!0
35 | if(y.parentNode!=T&&i.append(D),e.target!=T){for(var r=e.target;r.parentNode!=T&&r.parentNode;)r=r.parentNode
36 | if(r.parentNode==T&&r!=y){var t=r.getBoundingClientRect()
37 | if(m.horizontal)var d=e.clientXa?n(t[l])(e.$parent):e.$parent.$eval(t[l]):o[l]}),this.init=function(n){a=n,s.computeStyle(),a.$render=function(){s.toggle()},a.$viewChangeListeners.push(function(){e.$eval(t.ngChange)})},this.computeStyle=function(){var t=s.element.find("label");angular.element(t[0]).html(s.on),angular.element(t[1]).html(s.off);var n=s.element.find("span"),l=s.width||Math.max(t[0].offsetWidth,t[1].offsetWidth)+n[0].offsetWidth/2,o=s.height||Math.max(t[0].offsetHeight,t[1].offsetHeight),a=s.element.find("div"),i=a[0].offsetWidth,r=a[1].offsetHeight;e.wrapperStyle={},e.wrapperStyle.width=l>i?l+"px":i+"px",e.wrapperStyle.height=o>r&&"btn-xs"!==s.size&&"btn-sm"!==s.size?o+"px":r+"px",e.onClass=[s.onstyle,s.size,"toggle-on"],e.offClass=[s.offstyle,s.size,"toggle-off"],e.handleClass=[s.size,"toggle-handle"]},this.toggle=function(){this.isOn=angular.isDefined(a.$viewValue)?a.$viewValue:!1,e.wrapperClass=this.isOn?[s.onstyle,s.size,s.style]:[s.offstyle,"off ",s.size,s.style]},e.onSwitch=function(){a.$setViewValue(!a.$viewValue),a.$render()},angular.forEach(["ngModel"],function(n){var l=e.$parent.$watch(t[n],function(){a.$render()});e.$parent.$on("$destroy",function(){l()})}),angular.forEach(["on","off","size","onstyle","offstyle","style"],function(e){t.$observe(e,function(t){s[e]!==t&&(s[e]=t,s.computeStyle())})})}]).directive("toggle",function(){return{restrict:"E",transclude:!0,template:'',scope:{bindModel:"=ngModel"},require:["toggle","ngModel"],controller:"ToggleController",controllerAs:"toggle",compile:function(){return{pre:function(e,t,n,l){var o=l[0],s=l[1];o.element=t,o.init(s)},post:function(){}}}}})}();
2 |
--------------------------------------------------------------------------------
/dashboard/js/components/16.md5.min.js:
--------------------------------------------------------------------------------
1 | !function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t),e=(n>>16)+(t>>16)+(r>>16);return e<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)+14]=r;var e,i,a,h,d,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="0123456789abcdef",o="";for(r=0;r>>4&15)+e.charAt(15&t);return o}function v(n){return unescape(encodeURIComponent(n))}function m(n){return d(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this);
2 |
--------------------------------------------------------------------------------
/dashboard/js/components/18.sizeof.min.js:
--------------------------------------------------------------------------------
1 | function sizeof(g){var f=[g];var e=0;for(var d=0;d0&&t.length===r.length)}function i(t,r){return t+r}function u(r,e,a){var n={point:void 0,points:void 0};return function(o){var c=r.chart.getElementAtEvent||r.chart.getPointAtEvent,i=r.chart.getElementsAtEvent||r.chart.getPointsAtEvent;if(i){var u=i.call(r.chart,o),l=c?c.call(r.chart,o)[0]:void 0;a!==!1&&(t.equals(n.points,u)||t.equals(n.point,l))||(n.point=l,n.points=u,r[e](u,o,l))}}}function l(a,n){for(var o=t.copy(n.chartColors||e.getOptions(a).chartColors||r.defaults.global.colors),c=o.length>16&255,a=r>>8&255,n=255&r;return[e,a,n]}function v(t){var r=t.match(/^rgba?\(([\d,.]+)\)$/);if(!r)throw new Error("Cannot parse rgb value");return t=r[1].split(","),t.map(Number)}function C(t){return t.chartData&&t.chartData.length}function y(t){return"function"==typeof t.chartGetColor?t.chartGetColor:s}function b(t,r){var e=l(t,r);return Array.isArray(r.chartData[0])?m(r.chartLabels,r.chartData,r.chartSeries||[],e,r.chartDatasetOverride):w(r.chartLabels,r.chartData,e,r.chartDatasetOverride)}function m(r,e,a,n,o){return{labels:r,datasets:e.map(function(r,e){var c=t.extend({},n[e],{label:a[e],data:r});return o&&o.length>=e&&t.merge(c,o[e]),c})}}function w(r,e,a,n){var o={labels:r,datasets:[{data:e,backgroundColor:a.map(function(t){return t.pointBackgroundColor}),hoverBackgroundColor:a.map(function(t){return t.backgroundColor})}]};return n&&t.merge(o.datasets[0],n),o}function D(r,a){return t.extend({},e.getOptions(r),a.chartOptions)}function A(r,e){r.onclick=e.chartClick?u(e,"chartClick",!1):t.noop,r.onmousemove=e.chartHover?u(e,"chartHover",!0):t.noop}function B(t,r){Array.isArray(r.chartData[0])?r.chart.data.datasets.forEach(function(r,e){r.data=t[e]}):r.chart.data.datasets[0].data=t,r.chart.update(),r.$emit("chart-update",r.chart)}function $(t){return!t||Array.isArray(t)&&!t.length||"object"==typeof t&&!Object.keys(t).length}function k(t,r,e,n){return!n.responsive||0!==e[0].clientHeight||(a(function(){o(t,r,e)},50,!1),!1)}function F(t){t.chart&&(t.chart.destroy(),t.$emit("chart-destroy",t.chart))}return function(r){return{restrict:"CA",scope:{chartGetColor:"=?",chartType:"=",chartData:"=?",chartLabels:"=?",chartOptions:"=?",chartSeries:"=?",chartColors:"=?",chartClick:"=?",chartHover:"=?",chartDatasetOverride:"=?"},link:function(e,a){function i(t,n){if(!t||!t.length||Array.isArray(t[0])&&!t[0].length)return void F(e);var i=r||e.chartType;if(i)return e.chart&&c(t,n)?B(t,e):void o(i,e,a)}function u(n,c){if(!$(n)&&!t.equals(n,c)){var i=r||e.chartType;i&&o(i,e,a)}}function l(r,n){$(r)||t.equals(r,n)||o(r,e,a)}n&&window.G_vmlCanvasManager.initElement(a[0]),e.$watch("chartData",i,!0),e.$watch("chartSeries",u,!0),e.$watch("chartLabels",u,!0),e.$watch("chartOptions",u,!0),e.$watch("chartColors",u,!0),e.$watch("chartDatasetOverride",u,!0),e.$watch("chartType",l,!1),e.$on("$destroy",function(){F(e)}),e.$on("$resize",function(){e.chart&&e.chart.resize()})}}}}r.defaults.global.multiTooltipTemplate="<%if (datasetLabel){%><%=datasetLabel%>: <%}%><%= value %>",r.defaults.global.tooltips.mode="label",r.defaults.global.elements.line.borderWidth=2,r.defaults.global.elements.rectangle.borderWidth=2,r.defaults.global.legend.display=!1,r.defaults.global.colors=["#97BBCD","#DCDCDC","#F7464A","#46BFBD","#FDB45C","#949FB1","#4D5360"];var n="object"==typeof window.G_vmlCanvasManager&&null!==window.G_vmlCanvasManager&&"function"==typeof window.G_vmlCanvasManager.initElement;return n&&(r.defaults.global.animation=!1),t.module("chart.js",[]).provider("ChartJs",e).factory("ChartJsFactory",["ChartJs","$timeout",a]).directive("chartBase",["ChartJsFactory",function(t){return new t}]).directive("chartLine",["ChartJsFactory",function(t){return new t("line")}]).directive("chartBar",["ChartJsFactory",function(t){return new t("bar")}]).directive("chartHorizontalBar",["ChartJsFactory",function(t){return new t("horizontalBar")}]).directive("chartRadar",["ChartJsFactory",function(t){return new t("radar")}]).directive("chartDoughnut",["ChartJsFactory",function(t){return new t("doughnut")}]).directive("chartPie",["ChartJsFactory",function(t){return new t("pie")}]).directive("chartPolarArea",["ChartJsFactory",function(t){return new t("polarArea")}]).directive("chartBubble",["ChartJsFactory",function(t){return new t("bubble")}]).name});
11 |
--------------------------------------------------------------------------------
/dashboard/js/components/22.angular-smart-area-1.1.0.min.js:
--------------------------------------------------------------------------------
1 | /*! smart-area 1.1.0 17-12-2015 */
2 | angular.module("smartArea",[]).directive("smartArea",["$compile",function(a){return{restrict:"A",scope:{areaConfig:"=smartArea",areaData:"=ngModel"},replace:!0,link:function(b,c){if("textarea"!==c[0].tagName.toLowerCase())return console.warn("smartArea can only be used on textareas"),!1;var d=["direction","boxSizing","width","overflowX","overflowY","color","height","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderRadius","backgroundColor","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","whiteSpace","wordBreak","wordWrap"],e=angular.element('');!(null===window.mozInnerScreenX);return b.fakeAreaElement=angular.element(a('')(b)).appendTo(e),b.dropdown.element=angular.element(a('')(b)).appendTo(e),b.dropdown.filterElement=b.dropdown.element.find("input"),b.dropdown.filterElement.bind("keydown",b.keyboardEvents),b.fakeAreaElement.css("whiteSpace","pre-wrap"),b.fakeAreaElement.css("wordWrap","break-word"),d.forEach(function(a){b.fakeAreaElement.css(a,c.css(a))}),b.fakeAreaElement.css("width",parseInt(c.outerWidth())+1+"px"),e.insertBefore(c),c.appendTo(e).addClass("sa-realArea").attr("ng-trim",!1),a(c),c.on("keyup",function(){b.fakeAreaElement.height(c.height())}),e},controller:["$scope","$element","$timeout","$sce",function(a,b,c,d){function e(d,e){a.dropdown.showFilter=!1;var f=a.areaData,h=k(),i=f.substr(0,h).split(/[(\s|\+|\-|\*|\/|\&|\||\^|\,|\(|\{|\])\b{}]/),j=i[i.length-1].length;!e&&a.dropdown.match&&(j=a.dropdown.match.length),(e||0>j)&&(j=0),a.areaData=f.substr(0,h-j)+d+f.substr(h),!e&&a.dropdown.match&&(h=h-a.dropdown.match.length+d.toString().length),b[0].selectionStart&&c(function(){b[0].focus(),b[0].setSelectionRange(h-j+d.toString().length,h-j+d.toString().length),g()},100)}function f(){var b=a.areaData;"undefined"!=typeof a.areaConfig.autocomplete&&0!==a.areaConfig.autocomplete.length&&(a.areaConfig.autocomplete.forEach(function(a){for(var c=0;c$2$3'):b.replace(a.words[c],function(b){return''+b+""})}),a.fakeArea=d.trustAsHtml(b))}function g(){j(),h()}function h(){a.dropdown.showFilter=!1,a.dropdown.match=!1,"undefined"!=typeof a.areaConfig.dropdown&&0!==a.areaConfig.dropdown.length&&a.areaConfig.dropdown.forEach(function(b){var e=a.areaData,f=k();if("string"==typeof b.trigger&&b.trigger===e.substr(f-b.trigger.length,b.trigger.length))b.list(function(e){a.dropdown.content=e.map(function(a){return a.display=d.trustAsHtml(a.display),a}),a.dropdown.customSelect=b.onSelect,a.dropdown.mode=b.mode||"append",a.dropdown.match="",a.dropdown.showFilter=b.filter||!1,c(function(){a.dropdown.filterElement.focus()},10)});else if("object"==typeof b.trigger){for(var g,h=e.substr(0,f),i=!1,j=0;null!==(g=b.trigger.exec(h))&&g.index!==j;)if(j=g.index,g.index+g[0].length===f){i=!0;break}i&&b.list(g,function(c){a.dropdown.content=c.map(function(a){return a.display=d.trustAsHtml(a.display),a}),a.dropdown.customSelect=b.onSelect,a.dropdown.mode=b.mode||"append",a.dropdown.match=g[1],a.dropdown.showFilter=b.filter||!1})}})}function i(){c(function(){a.fakeAreaElement.scrollTop(b.scrollTop())},5)}function j(){var b=[],c=[],e=a.areaData,f=k(),g=e.substr(0,f).split(/[(\s|\+|\-|\*|\/|\&|\||\^|\,|\(|\{|\])\b{}]/);g=g[g.length-1],a.areaConfig.autocomplete.forEach(function(a){a.words.forEach(function(c){"string"==typeof c&&b.indexOf(c)<0&&(g.length>0||g.length<1&&a.autocompleteOnSpace)&&b.push(c)})}),void 0!==a.areaConfig.dropdown&&a.areaConfig.dropdown.forEach(function(a){"string"==typeof a.trigger&&b.indexOf(a.trigger)<0&&b.push(a.trigger)}),b.forEach(function(a){g.length'+e.substring(g)),c(function(){var c=a.fakeAreaElement.find("span.sa-tracking");if(c.length>0){var d=c.position();a.dropdown.element.css({top:d.top+parseInt(b.css("fontSize"))+2+"px",left:d.left+"px"})}f()},0)},a.keyboardEvents=function(d){if(a.dropdown.content.length>0){var e=d.keyCode||d.which;13===e?(d.preventDefault(),d.stopPropagation(),c(function(){a.dropdown.selected(a.dropdown.content[a.dropdown.current])},0)):38===e?(d.preventDefault(),d.stopPropagation(),c(function(){a.dropdown.current--,a.dropdown.current<0&&(a.dropdown.current=a.dropdown.content.length-1)},0)):40===e?(d.preventDefault(),d.stopPropagation(),c(function(){a.dropdown.current++,a.dropdown.current>=a.dropdown.content.length&&(a.dropdown.current=0)},0)):27===e?(d.preventDefault(),d.stopPropagation(),c(function(){a.dropdown.content=[],b[0].focus()},0)):a.dropdown.filterElement.focus()}},a.dropdown.selected=function(b){if(null!==a.dropdown.customSelect){var c="append"===a.dropdown.mode;e(a.dropdown.customSelect(b),c)}else e(b.display);a.dropdown.content=[]},b.bind("keyup click focus",function(){c(function(){a.trackCaret()},0)}),b.bind("keydown",function(b){i(),a.keyboardEvents(b)})}]}}]);
3 |
4 |
--------------------------------------------------------------------------------
/dashboard/js/components/24.chartjs-plugin-zoom-0.4.5.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * chartjs-plugin-zoom
3 | * http://chartjs.org/
4 | * Version: 0.4.5
5 | *
6 | * Copyright 2016 Evert Timberg
7 | * Released under the MIT license
8 | * https://github.com/chartjs/chartjs-plugin-zoom/blob/master/LICENSE.md
9 | */
10 | !function e(o,t,n){function a(r,l){if(!t[r]){if(!o[r]){var m="function"==typeof require&&require;if(!l&&m)return m(r,!0);if(i)return i(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var s=t[r]={exports:{}};o[r][0].call(s.exports,function(e){var t=o[r][1][e];return a(t?t:e)},s,s.exports,e,o,t,n)}return t[r].exports}for(var i="function"==typeof require&&require,r=0;r1?x.zoomCumulativeDelta+1:x.zoomCumulativeDelta-1,Math.abs(x.zoomCumulativeDelta)>m&&(x.zoomCumulativeDelta<0?(s<=u?i<=0?l=Math.min(r,l+1):i=Math.max(0,i-1):s>u&&(l>=r?i=Math.max(0,i-1):l=Math.min(r,l+1)),x.zoomCumulativeDelta=0):x.zoomCumulativeDelta>0&&(s<=u?i=iu&&(l=l>i?l=Math.max(i,l-1):l),x.zoomCumulativeDelta=0),e.options.ticks.min=a[i],e.options.ticks.max=a[l])}function i(e,o,t){var n,a,i=e.options;e.isHorizontal()?(n=e.right-e.left,a=(t.x-e.left)/n):(n=e.bottom-e.top,a=(t.y-e.top)/n);var r=1-a,l=n*(o-1),m=l*a,u=l*r;i.time.min=e.getValueForPixel(e.getPixelForValue(e.firstTick)+m),i.time.max=e.getValueForPixel(e.getPixelForValue(e.lastTick)-u)}function r(e,o,t){var n=e.max-e.min,a=n*(o-1),i=e.isHorizontal()?t.x:t.y,r=(e.getValueForPixel(i)-e.min)/n,l=1-r,m=a*r,u=a*l;e.options.ticks.min=e.min+m,e.options.ticks.max=e.max-u}function l(e,o,t,n){var a=z[e.options.type];a&&a(e,o,t,n)}function m(e,o,t){var a=e.chartArea;t||(t={x:(a.left+a.right)/2,y:(a.top+a.bottom)/2});var i=e.options.zoom;if(i&&g.getValueOrDefault(i.enabled,F.zoom.enabled)){var r=g.getValueOrDefault(e.options.zoom.mode,F.zoom.mode);i.sensitivity=g.getValueOrDefault(e.options.zoom.sensitivity,F.zoom.sensitivity),g.each(e.scales,function(e,a){e.isHorizontal()&&n(r,"x")?l(e,o,t,i):!e.isHorizontal()&&n(r,"y")&&l(e,o,t,i)}),e.update(0)}}function u(e,o,t){var n,a=e.chart.data.labels,i=a.length-1,r=Math.max(e.ticks.length-(e.options.gridLines.offsetGridLines?0:1),1),l=t.speed,m=e.minIndex,u=Math.round(e.width/(r*l));x.panCumulativeDelta+=o,m=x.panCumulativeDelta>u?Math.max(0,m-1):x.panCumulativeDelta<-u?Math.min(i-r+1,m+1):m,x.panCumulativeDelta=m!==e.minIndex?0:x.panCumulativeDelta,n=Math.min(i,m+r-1),e.options.ticks.min=a[m],e.options.ticks.max=a[n]}function s(e,o){var t=e.options;t.time.min=e.getValueForPixel(e.getPixelForValue(e.firstTick)-o),t.time.max=e.getValueForPixel(e.getPixelForValue(e.lastTick)-o)}function c(e,o){var t=e.options.ticks,n=e.start,a=e.end;t.reverse?(t.max=e.getValueForPixel(e.getPixelForValue(n)-o),t.min=e.getValueForPixel(e.getPixelForValue(a)-o)):(t.min=e.getValueForPixel(e.getPixelForValue(n)-o),t.max=e.getValueForPixel(e.getPixelForValue(a)-o))}function d(e,o,t){var n=D[e.options.type];n&&n(e,o,t)}function p(e,o,t){var a=e.options.pan;if(a&&g.getValueOrDefault(a.enabled,F.pan.enabled)){var i=g.getValueOrDefault(e.options.pan.mode,F.pan.mode);a.speed=g.getValueOrDefault(e.options.pan.speed,F.pan.speed),g.each(e.scales,function(e,r){e.isHorizontal()&&n(i,"x")&&0!==o?d(e,o,a):!e.isHorizontal()&&n(i,"y")&&0!==t&&d(e,t,a)}),e.update(0)}}function f(e){var o=e.scales;for(var t in o){var n=o[t];if(!n.isHorizontal())return n}}var v=e("hammerjs");v="function"==typeof v?v:window.Hammer;var h=e("chart.js");h="function"==typeof h?h:window.Chart;var g=h.helpers,x=h.Zoom=h.Zoom||{},z=x.zoomFunctions=x.zoomFunctions||{},D=x.panFunctions=x.panFunctions||{},F=x.defaults={pan:{enabled:!0,mode:"xy",speed:20,threshold:10},zoom:{enabled:!0,mode:"xy",sensitivity:3}};x.zoomFunctions.category=a,x.zoomFunctions.time=i,x.zoomFunctions.linear=r,x.zoomFunctions.logarithmic=r,x.panFunctions.category=u,x.panFunctions.time=s,x.panFunctions.linear=c,x.panFunctions.logarithmic=c,x.panCumulativeDelta=0,x.zoomCumulativeDelta=0;var _={afterInit:function(e){g.each(e.scales,function(e){e.originalOptions=JSON.parse(JSON.stringify(e.options))}),e.resetZoom=function(){g.each(e.scales,function(e,o){var t=e.options.time,n=e.options.ticks;t&&(delete t.min,delete t.max),n&&(delete n.min,delete n.max),e.options=g.configMerge(e.options,e.originalOptions)}),g.each(e.data.datasets,function(e,o){e._meta=null}),e.update()}},beforeInit:function(e){e.zoom={};var o=e.zoom.node=e.chart.ctx.canvas,t=e.options,n=g.getValueOrDefault(t.pan?t.pan.threshold:void 0,x.defaults.pan.threshold);if(t.zoom&&t.zoom.drag?(t.zoom.mode="x",e.zoom._mouseDownHandler=function(o){e.zoom._dragZoomStart=o},o.addEventListener("mousedown",e.zoom._mouseDownHandler),e.zoom._mouseMoveHandler=function(o){e.zoom._dragZoomStart&&(e.zoom._dragZoomEnd=o,e.update(0)),e.update(0)},o.addEventListener("mousemove",e.zoom._mouseMoveHandler),e.zoom._mouseUpHandler=function(o){if(e.zoom._dragZoomStart){var t=e.chartArea,n=f(e),a=e.zoom._dragZoomStart,i=a.target.getBoundingClientRect().left,r=Math.min(a.x,o.x)-i,l=Math.max(a.x,o.x)-i,u=l-r,s=t.right-t.left,c=1+(s-u)/s;u>0&&m(e,c,{x:u/2+r,y:(n.bottom-n.top)/2}),e.zoom._dragZoomStart=null,e.zoom._dragZoomEnd=null}},o.addEventListener("mouseup",e.zoom._mouseUpHandler)):(e.zoom._wheelHandler=function(o){var t=o.target.getBoundingClientRect(),n=o.clientX-t.left,a=o.clientY-t.top,i={x:n,y:a};o.deltaY<0?m(e,1.1,i):m(e,.909,i),o.preventDefault()},o.addEventListener("wheel",e.zoom._wheelHandler)),v){var a=new v.Manager(o);a.add(new v.Pinch),a.add(new v.Pan({threshold:n}));var i,r=function(o){var t=1/i*o.scale;m(e,t,o.center),i=o.scale};a.on("pinchstart",function(e){i=1}),a.on("pinch",r),a.on("pinchend",function(e){r(e),i=null,x.zoomCumulativeDelta=0});var l=null,u=null,s=!1,c=function(o){if(null!==l&&null!==u){s=!0;var t=o.deltaX-l,n=o.deltaY-u;l=o.deltaX,u=o.deltaY,p(e,t,n)}};a.on("panstart",function(e){l=0,u=0,c(e)}),a.on("panmove",c),a.on("panend",function(e){l=null,u=null,x.panCumulativeDelta=0,setTimeout(function(){s=!1},500)}),e.zoom._ghostClickHandler=function(e){s&&(e.stopImmediatePropagation(),e.preventDefault())},o.addEventListener("click",e.zoom._ghostClickHandler),e._mc=a}},beforeDatasetsDraw:function(e){var o=e.chart.ctx,t=e.chartArea;if(o.save(),o.beginPath(),e.zoom._dragZoomEnd){var n=f(e),a=e.zoom._dragZoomStart,i=e.zoom._dragZoomEnd,r=a.target.getBoundingClientRect().left,l=Math.min(a.x,i.x)-r,m=Math.max(a.x,i.x)-r,u=m-l;o.fillStyle="rgba(225,225,225,0.3)",o.lineWidth=5,o.fillRect(l,n.top,u,n.bottom-n.top)}o.rect(t.left,t.top,t.right-t.left,t.bottom-t.top),o.clip()},afterDatasetsDraw:function(e){e.chart.ctx.restore()},destroy:function(e){if(e.zoom){var o=e.options,t=e.zoom.node;o.zoom&&o.zoom.drag?(t.removeEventListener("mousedown",e.zoom._mouseDownHandler),t.removeEventListener("mousemove",e.zoom._mouseMoveHandler),t.removeEventListener("mouseup",e.zoom._mouseUpHandler)):t.removeEventListener("wheel",e.zoom._wheelHandler),v&&t.removeEventListener("click",e.zoom._ghostClickHandler),delete e.zoom;var n=e._mc;n&&(n.remove("pinchstart"),n.remove("pinch"),n.remove("pinchend"),n.remove("panstart"),n.remove("pan"),n.remove("panend"))}}};o.exports=_,h.pluginService.register(_)},{"chart.js":1,hammerjs:1}]},{},[2]);
11 |
--------------------------------------------------------------------------------
/dashboard/js/components/25.angular-swipe.min.js:
--------------------------------------------------------------------------------
1 | /*! angular-swipe.min.js 13-03-2017 */
2 | !function(a,b,c){"use strict";function d(a,c,d,f){e.directive(a,["$parse","swipe",function(e,g){var h=75,i=.3,j=30;return function(k,l,m){function n(a,b){do{var c=a.getAttribute("class");if(c&&null!==c.match(b))return!0;a=a.parentElement}while(null!==a);return!1}function o(a){if(!p||!q)return!1;var b=(a.y-p.y)*c,e=(a.x-p.x)*c;return null===d?Math.abs(b)0&&e>j&&Math.abs(b)/e0&&b>j&&Math.abs(e)/bo)){l.pop().remove()}};var h=function(v,x,u,o,q,s,w,r){var p=r("");p.css("padding-right","8px");p.attr({tabindex:"-1",href:"#"});if(typeof x[0]==="string"){u=x[0]}else{if(typeof x[0]==="function"){u=x[0].call(v,v,o,q)}else{if(typeof x.text!=="undefined"){u=x.text}}}var t=i.when(u);s.push(t);t.then(function(y){if(w){p.css("cursor","default");p.append(r('>'))}p.append(y)});return p};var e=function(y,p,q,A,s,v,t,u,r,o){var z=angular.isArray(A[1])||(A[1]&&angular.isFunction(A[1].then))?A[1]:angular.isArray(A[2])||(A[2]&&angular.isFunction(A[2].then))?A[2]:angular.isArray(A[3])||(A[3]&&angular.isFunction(A[3].then))?A[3]:null;var x=d;if(typeof A[0]==="function"||typeof A[0]==="string"||typeof A.text!=="undefined"){x=h(y,A,x,p,q,t,z,r)}else{if(typeof A.html==="function"){x=A.html(y)}else{if(typeof A.html!=="undefined"){x=A.html}}}v.append(x);var w=function(){if(typeof A.enabled!=="undefined"){return A.enabled.call(y,y,p,q,x)}else{if(typeof A[2]==="function"){return A[2].call(y,y,p,q,x)}else{return true}}};b(y,w(),A,s,v,z,q,x,p,r,o)};var k=function(p,r,q,o){i.all(o).then(function(){var s=q.pageY;var u=angular.element(p[0]).prop("offsetHeight");var x=window.scrollY+q.view.innerHeight;if(s>u&&x-s0){s+=q.event.currentTarget.offsetHeight}}else{if(x<=u){angular.element(p[0]).css({height:x-5,"overflow-y":"scroll"});s=0}else{if(x-sy&&v-t-w");t.addClass("dropdown-menu");t.attr({role:"menu"});t.css({display:"block",position:"absolute",left:p.pageX+"px",top:p.pageY+"px","z-index":10000});var u=[];angular.forEach(z,function(A){var B=a("");if(A===null){B.addClass("divider")}else{if(typeof A[0]==="object"){c.initialize(B,A)}else{e(y,p,r,A,t,B,u,i,a,o)}}t.append(B)});var w=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight);a(document).find("body").append(t);k(t,o,p,u);function v(A){q(A)}function s(C){var B=a(C.target);var A=true;while(B.length){if(B.hasClass("dropdown-menu")){A=false;break}else{B=B.parent()}}if(A){q(C)}}function q(A){a(document.body).off("mousedown",s);a(document).off("scroll",v);a(p.originalTarget).removeClass("context");m()}if(o===0){a(document.body).on("mousedown",s);a(document).on("scroll",v)}y.$on("$destroy",function(){m()});l.push(t)};function f(){return"ontouchstart" in window||navigator.maxTouchPoints}return function(o,r,q){var p="contextmenu";if(q.contextMenuOn&&typeof(q.contextMenuOn)==="string"){p=q.contextMenuOn}r.on(p,function(s){if(!q.allowEventPropagation){s.stopPropagation();s.preventDefault()}if(f()&&r.attr("draggable")==="true"){return false}o.$apply(function(){var u=o.$eval(q.contextMenu);var v=q.contextMenuClass;var t=o.$eval(q.model);if(u instanceof Array){if(u.length===0){return}j(o,s,u,t,undefined,v)}else{throw'"'+q.contextMenu+'" not an array'}})})}}])})(window.angular.element);
--------------------------------------------------------------------------------
/dashboard/js/components/29.angular-fittext.min.js:
--------------------------------------------------------------------------------
1 | !function(t,e,i,n){"use strict";i.module("ngFitText",[]).value("fitTextDefaultConfig",{debounce:!1,delay:250,loadDelay:10,compressor:1,min:0,max:Number.POSITIVE_INFINITY}).directive("fittext",["$timeout","fitTextDefaultConfig","fitTextConfig",function(e,n,o){return{restrict:"A",scope:!0,link:function(f,a,l){function r(){var t=I*x/p.offsetWidth/x;return Math.max(Math.min((s[0].offsetWidth-(parseFloat(getComputedStyle(s[0]).paddingLeft)+parseFloat(getComputedStyle(s[0]).paddingRight))-6)*t*y,parseFloat(T)),parseFloat(C))}function u(){p.offsetHeight*p.offsetWidth!==0&&(g.fontSize=I+"px",g.lineHeight="1",g.display="inline-block",g.fontSize=r()+"px",g.lineHeight=z,g.display=F)}function c(){d&&e.cancel(d),d=e(function(){d=null,u()},5)}i.extend(n,o.config);var d,s=a.parent(),p=a[0],g=p.style,h=t.getComputedStyle(a[0],null),x=a.children().length||1,m=l.fittextLoadDelay||n.loadDelay,y=isNaN(parseInt(l.fittext))?n.compressor:l.fittext,v=l.fittextMin||n.min,b=l.fittextMax||n.max,C="inherit"===v?h["font-size"]:v,T="inherit"===b?h["font-size"]:b,z=h["line-height"],F=h.display,I=10;e(function(){c()},m),f.$watch(function(){return[f.$eval(l.ngBind||l.ngBindHtml),s[0].offsetWidth,a[0].offsetWidth].join("_")},function(){c()}),n.debounce?i.element(t).bind("resize",n.debounce(function(){f.$apply(c)},n.delay)):i.element(t).bind("resize",function(){f.$apply(c)})}}}]).provider("fitTextConfig",function(){var t=this;return this.config={},this.$get=function(){var e={};return e.config=t.config,e},this})}(window,document,angular);
--------------------------------------------------------------------------------
/dashboard/js/components/34.content-script.js:
--------------------------------------------------------------------------------
1 | // Copyright 2011 Google Inc.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | var serverURL = 'wss://api.webcore.co:8443/projector';
16 |
17 | var socket;
18 |
19 | function socketSend(msg) {
20 | socket.send(JSON.stringify(msg));
21 | }
22 |
23 | /*
24 | window.addEventListener('load', function() {
25 | chrome.extension.sendMessage({ mirror : true}, function(response) {
26 | if (response.mirror)
27 | startMirroring();
28 | else
29 | stopMirroring();
30 | });
31 | });
32 | */
33 |
34 | function startMirroring() {
35 | if (socket)
36 | return;
37 |
38 | socket = new WebSocket(serverURL);
39 | var mirrorClient;
40 |
41 | socket.onopen = function() {
42 | socketSend({ base: location.href.match(/^(.*\/)[^\/]*$/)[1] });
43 | mirrorClient = new TreeMirrorClient(document, {
44 | initialize: function(rootId, children) {
45 | socketSend({
46 | f: 'initialize',
47 | args: [rootId, children]
48 | });
49 | },
50 |
51 | applyChanged: function(removed, addedOrMoved, attributes, text) {
52 | socketSend({
53 | f: 'applyChanged',
54 | args: [removed, addedOrMoved, attributes, text]
55 | });
56 | }
57 | });
58 | }
59 |
60 | socket.onclose = function() {
61 | mirrorClient.disconnect();
62 | socket = undefined;
63 | }
64 | }
65 |
66 | function stopMirroring() {
67 | if (socket)
68 | socket.close();
69 | socket = undefined;
70 | }
71 |
--------------------------------------------------------------------------------
/dashboard/js/components/37.dashify.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * dashify
3 | *
4 | * Copyright (c) 2015-2017, Jon Schlinkert.
5 | * Released under the MIT License.
6 | */
7 |
8 | function dashify(str, options) {
9 | if (typeof str !== 'string') {
10 | throw new TypeError('expected a string');
11 | }
12 |
13 | return str.trim()
14 | .replace(/([a-z])([A-Z])/g, '$1-$2')
15 | .replace(/\W/g, m => /[À-ž]/.test(m) ? m : '-')
16 | .replace(/^-+|-+$/g, '')
17 | .replace(/-{2,}/g, function(m) { return options && options.condense ? '-' : m })
18 | .toLowerCase();
19 | };
--------------------------------------------------------------------------------
/dashboard/js/components/38.angular-elastic.js:
--------------------------------------------------------------------------------
1 | /*
2 | * angular-elastic v2.5.1
3 | * (c) 2014 Monospaced http://monospaced.com
4 | * License: MIT
5 | */
6 |
7 | if (typeof module !== 'undefined' &&
8 | typeof exports !== 'undefined' &&
9 | module.exports === exports){
10 | module.exports = 'monospaced.elastic';
11 | }
12 |
13 | angular.module('monospaced.elastic', [])
14 |
15 | .constant('msdElasticConfig', {
16 | append: ''
17 | })
18 |
19 | .directive('msdElastic', [
20 | '$timeout', '$window', 'msdElasticConfig',
21 | function($timeout, $window, config) {
22 | 'use strict';
23 |
24 | return {
25 | require: 'ngModel',
26 | restrict: 'A, C',
27 | link: function(scope, element, attrs, ngModel) {
28 |
29 | // cache a reference to the DOM element
30 | var ta = element[0],
31 | $ta = element;
32 |
33 | // ensure the element is a textarea, and browser is capable
34 | if (ta.nodeName !== 'TEXTAREA' || !$window.getComputedStyle) {
35 | return;
36 | }
37 |
38 | // set these properties before measuring dimensions
39 | $ta.css({
40 | 'overflow': 'hidden',
41 | 'overflow-y': 'hidden',
42 | 'word-wrap': 'break-word'
43 | });
44 |
45 | // force text reflow
46 | var text = ta.value;
47 | ta.value = '';
48 | ta.value = text;
49 |
50 | var append = attrs.msdElastic ? attrs.msdElastic.replace(/\\n/g, '\n') : config.append,
51 | $win = angular.element($window),
52 | mirrorInitStyle = 'position: absolute; top: -999px; right: auto; bottom: auto;' +
53 | 'left: 0; overflow: hidden; -webkit-box-sizing: content-box;' +
54 | '-moz-box-sizing: content-box; box-sizing: content-box;' +
55 | 'min-height: 0 !important; height: 0 !important; padding: 0;' +
56 | 'word-wrap: break-word; border: 0;',
57 | $mirror = angular.element('').data('elastic', true),
59 | mirror = $mirror[0],
60 | taStyle = getComputedStyle(ta),
61 | resize = taStyle.getPropertyValue('resize'),
62 | borderBox = taStyle.getPropertyValue('box-sizing') === 'border-box' ||
63 | taStyle.getPropertyValue('-moz-box-sizing') === 'border-box' ||
64 | taStyle.getPropertyValue('-webkit-box-sizing') === 'border-box',
65 | boxOuter = !borderBox ? {width: 0, height: 0} : {
66 | width: parseInt(taStyle.getPropertyValue('border-right-width'), 10) +
67 | parseInt(taStyle.getPropertyValue('padding-right'), 10) +
68 | parseInt(taStyle.getPropertyValue('padding-left'), 10) +
69 | parseInt(taStyle.getPropertyValue('border-left-width'), 10),
70 | height: parseInt(taStyle.getPropertyValue('border-top-width'), 10) +
71 | parseInt(taStyle.getPropertyValue('padding-top'), 10) +
72 | parseInt(taStyle.getPropertyValue('padding-bottom'), 10) +
73 | parseInt(taStyle.getPropertyValue('border-bottom-width'), 10)
74 | },
75 | minHeightValue = parseInt(taStyle.getPropertyValue('min-height'), 10),
76 | heightValue = parseInt(taStyle.getPropertyValue('height'), 10),
77 | minHeight = Math.max(minHeightValue, heightValue) - boxOuter.height,
78 | maxHeight = parseInt(taStyle.getPropertyValue('max-height'), 10),
79 | mirrored,
80 | active,
81 | copyStyle = ['font-family',
82 | 'font-size',
83 | 'font-weight',
84 | 'font-style',
85 | 'letter-spacing',
86 | 'line-height',
87 | 'text-transform',
88 | 'word-spacing',
89 | 'text-indent'];
90 |
91 | // exit if elastic already applied (or is the mirror element)
92 | if ($ta.data('elastic')) {
93 | return;
94 | }
95 |
96 | // Opera returns max-height of -1 if not set
97 | maxHeight = maxHeight && maxHeight > 0 ? maxHeight : 9e4;
98 |
99 | // append mirror to the DOM
100 | if (mirror.parentNode !== document.body) {
101 | angular.element(document.body).append(mirror);
102 | }
103 |
104 | // set resize and apply elastic
105 | $ta.css({
106 | 'resize': (resize === 'none' || resize === 'vertical') ? 'none' : 'horizontal'
107 | }).data('elastic', true);
108 |
109 | /*
110 | * methods
111 | */
112 |
113 | function initMirror() {
114 | var mirrorStyle = mirrorInitStyle;
115 |
116 | mirrored = ta;
117 | // copy the essential styles from the textarea to the mirror
118 | taStyle = getComputedStyle(ta);
119 | angular.forEach(copyStyle, function(val) {
120 | mirrorStyle += val + ':' + taStyle.getPropertyValue(val) + ';';
121 | });
122 | mirror.setAttribute('style', mirrorStyle);
123 | }
124 |
125 | function adjust() {
126 | var taHeight,
127 | taComputedStyleWidth,
128 | mirrorHeight,
129 | width,
130 | overflow;
131 |
132 | if (mirrored !== ta) {
133 | initMirror();
134 | }
135 |
136 | // active flag prevents actions in function from calling adjust again
137 | if (!active) {
138 | active = true;
139 |
140 | mirror.value = ta.value + append; // optional whitespace to improve animation
141 | mirror.style.overflowY = ta.style.overflowY;
142 |
143 | taHeight = ta.style.height === '' ? 'auto' : parseInt(ta.style.height, 10);
144 |
145 | taComputedStyleWidth = getComputedStyle(ta).getPropertyValue('width');
146 |
147 | // ensure getComputedStyle has returned a readable 'used value' pixel width
148 | if (taComputedStyleWidth.substr(taComputedStyleWidth.length - 2, 2) === 'px') {
149 | // update mirror width in case the textarea width has changed
150 | width = parseInt(taComputedStyleWidth, 10) - boxOuter.width;
151 | mirror.style.width = width + 'px';
152 | }
153 |
154 | mirrorHeight = mirror.scrollHeight;
155 |
156 | if (mirrorHeight > maxHeight) {
157 | mirrorHeight = maxHeight;
158 | overflow = 'scroll';
159 | } else if (mirrorHeight < minHeight) {
160 | mirrorHeight = minHeight;
161 | }
162 | mirrorHeight += boxOuter.height;
163 | ta.style.overflowY = overflow || 'hidden';
164 |
165 | if (taHeight !== mirrorHeight) {
166 | scope.$emit('elastic:resize', $ta, taHeight, mirrorHeight);
167 | ta.style.height = mirrorHeight + 'px';
168 | }
169 |
170 | // small delay to prevent an infinite loop
171 | $timeout(function() {
172 | active = false;
173 | }, 1, false);
174 |
175 | }
176 | }
177 |
178 | function forceAdjust() {
179 | active = false;
180 | adjust();
181 | }
182 |
183 | /*
184 | * initialise
185 | */
186 |
187 | // listen
188 | if ('onpropertychange' in ta && 'oninput' in ta) {
189 | // IE9
190 | ta['oninput'] = ta.onkeyup = adjust;
191 | } else {
192 | ta['oninput'] = adjust;
193 | }
194 |
195 | $win.bind('resize', forceAdjust);
196 |
197 | scope.$watch(function() {
198 | return ngModel.$modelValue;
199 | }, function(newValue) {
200 | forceAdjust();
201 | });
202 |
203 | scope.$on('elastic:adjust', function() {
204 | initMirror();
205 | forceAdjust();
206 | });
207 |
208 | $timeout(adjust, 0, false);
209 |
210 | /*
211 | * destroy
212 | */
213 |
214 | scope.$on('$destroy', function() {
215 | $mirror.remove();
216 | $win.unbind('resize', forceAdjust);
217 | });
218 | }
219 | };
220 | }
221 | ]);
--------------------------------------------------------------------------------
/dashboard/js/components/in-progress-22.angular-smart-area-1.5.0.min.js:
--------------------------------------------------------------------------------
1 | /*! smart-area 1.5.0 19-06-2017 */
2 | // with patch presumably by ady624 for regex escaping
3 | angular.module("smartArea",[]).directive("smartArea",["$compile",function(a){return{restrict:"A",scope:{areaConfig:"=smartArea",areaData:"=ngModel"},replace:!0,link:function(b,c){if("textarea"!==c[0].tagName.toLowerCase())return console.warn("smartArea can only be used on textareas"),!1;var d=["direction","boxSizing","width","overflowX","overflowY","color","height","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderRadius","backgroundColor","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","whiteSpace","wordBreak","wordWrap"],e=angular.element('');window.mozInnerScreenX;return b.fakeAreaElement=angular.element(a('')(b)).appendTo(e),b.dropdown.element=angular.element(a('')(b)).appendTo(e),b.dropdown.filterElement=b.dropdown.element.find("input"),b.dropdown.filterElement.bind("keydown",b.keyboardEvents),b.fakeAreaElement.css("whiteSpace","pre-wrap"),b.fakeAreaElement.css("wordWrap","break-word"),d.forEach(function(a){b.fakeAreaElement.css(a,c.css(a))}),b.fakeAreaElement.css("width",parseInt(c.outerWidth())+1+"px"),e.insertBefore(c),c.appendTo(e).addClass("sa-realArea").attr("ng-trim",!1),a(c),c.on("keyup",function(){b.fakeAreaElement.height(c.height())}),e},controller:["$scope","$element","$timeout","$sce",function(a,b,c,d){function e(d,e){a.dropdown.showFilter=!1;var f=a.areaData,h=k(),i=f.substr(0,h).split(/[\s+\-*\/|^,&(\])\b{}]/),j=i[i.length-1].length;!e&&a.dropdown.match&&(j=a.dropdown.match.length),(e||j<0)&&(j=0),a.areaData=f.substr(0,h-j)+d+f.substr(h),b[0].selectionStart&&c(function(){var a=h-j+d.toString().length;b[0].focus(),b[0].setSelectionRange(a,a),g()},100)}function f(){var b=a.areaData,c=l(b);void 0!==a.areaConfig.autocomplete&&0!==a.areaConfig.autocomplete.length&&(a.areaConfig.autocomplete.forEach(function(a){for(var b=0;b$2$3'):c.replace(a.words[b],function(b){return''+b+""})}),a.fakeArea=d.trustAsHtml(c))}function g(){j(),h()}function h(){a.dropdown.showFilter=!1,a.dropdown.match=!1,void 0!==a.areaConfig.dropdown&&0!==a.areaConfig.dropdown.length&&a.areaConfig.dropdown.forEach(function(b){var e=a.areaData,f=k();if("string"==typeof b.trigger&&b.trigger===e.substr(f-b.trigger.length,b.trigger.length))b.list(function(e){a.dropdown.content=e.map(function(a){return a.display=d.trustAsHtml(a.display),a}),a.dropdown.customSelect=b.onSelect,a.dropdown.mode=b.mode||"append",a.dropdown.match="",a.dropdown.showFilter=b.filter||!1,c(function(){a.dropdown.filterElement.focus()},10)});else if("object"==typeof b.trigger){var g,h=e.substr(0,f),i=!1,j=-1;for(b.trigger.lastIndex=0;null!==(g=b.trigger.exec(h))&&g.index!==j;)if(j=g.index,g.index+g[0].length===f){i=!0;break}i&&b.list(g,function(c){a.dropdown.content=c.map(function(a){return a.display=d.trustAsHtml(a.display),a}),a.dropdown.customSelect=b.onSelect,a.dropdown.mode=b.mode||"append",a.dropdown.match=g[1],a.dropdown.showFilter=b.filter||!1})}})}function i(){c(function(){a.fakeAreaElement.scrollTop(b.scrollTop())},5)}function j(){var b=[],c=[],e=a.areaData,f=k(),g=e.substr(0,f).split(/[\s+\-*\/|^,&(\])\b{}]/);g=g[g.length-1],a.areaConfig.autocomplete.forEach(function(a){a.words.forEach(function(c){"string"==typeof c&&b.indexOf(c)<0&&(g.length>0||g.length<1&&a.autocompleteOnSpace)&&b.push(c)})}),void 0!==a.areaConfig.dropdown&&a.areaConfig.dropdown.forEach(function(a){"string"==typeof a.trigger&&b.indexOf(a.trigger)<0&&b.push(a.trigger)}),b.forEach(function(a){g.length'+l(e.substring(g))),c(function(){var c=a.fakeAreaElement.find("span.sa-tracking");if(c.length>0){var d=c.position();a.dropdown.element.css({top:d.top+parseInt(b.css("fontSize"))+2+"px",left:d.left+"px"})}f()},0)},a.keyboardEvents=function(d){if(a.dropdown.content.length>0){var e=d.keyCode||d.which;13===e?(d.preventDefault(),d.stopPropagation(),c(function(){a.dropdown.selected(a.dropdown.content[a.dropdown.current])},0)):38===e?(d.preventDefault(),d.stopPropagation(),c(function(){--a.dropdown.current<0&&(a.dropdown.current=a.dropdown.content.length-1)},0)):40===e?(d.preventDefault(),d.stopPropagation(),c(function(){++a.dropdown.current>=a.dropdown.content.length&&(a.dropdown.current=0)},0)):27===e?(d.preventDefault(),d.stopPropagation(),c(function(){a.dropdown.content=[],b[0].focus()},0)):(a.dropdown.filterElement.focus(),g())}},a.dropdown.selected=function(b){if(null!==a.dropdown.customSelect){var c="append"===a.dropdown.mode;e(a.dropdown.customSelect(b),c)}else e(b.display);a.dropdown.content=[]},b.bind("keyup click focus",function(){c(function(){a.trackCaret()},0)}),b.bind("keydown",function(b){i(),a.keyboardEvents(b)})}]}}]);
4 |
--------------------------------------------------------------------------------
/dashboard/js/components/rebuild.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm components.min.js
4 | cat 0* >> components.min.js
5 | cat 1* >> components.min.js
6 | cat 2* >> components.min.js
7 | cat 3* >> components.min.js
8 |
--------------------------------------------------------------------------------
/dashboard/js/modules/fuel.module.js.bak:
--------------------------------------------------------------------------------
1 | config.controller('fuel', ['$scope', '$rootScope', 'dataService', '$timeout', '$interval', '$location', '$sce', '$routeParams', 'ngDialog', '$window', function($scope, $rootScope, dataService, $timeout, $interval, $location, $sce, $routeParams, ngDialog, $window) {
2 | var tmrStatus = null;
3 | var tmrClock = null;
4 | var tmrActivity = null;
5 | $scope.initialized = false;
6 | $scope.loading = true;
7 | $scope.canisters = [];
8 | $scope.fuelStreams = [];
9 | $scope.selectedCanister = '';
10 | $scope.error = '';
11 | $scope.designer = {};
12 | $scope.locations = null;
13 | $scope.instances = null;
14 | $scope.requestId = 0;
15 | $scope.activePistons = 0;
16 | $scope.pausedPistons = 0;
17 | $scope.dropDownMenu = false;
18 | $scope.view = 'piston';
19 |
20 | $scope.init = function(instance, uri, pin) {
21 | if ($scope.$$destroyed) return;
22 | dataService.setStatusCallback($scope.setStatus);
23 | dataService.listFuelStreams().then(function(data) {
24 | if ($scope.$$destroyed) return;
25 | $scope.loading = false;
26 | $scope.initialized = true;
27 | if (!data || !data.fuelStreams || !(data.fuelStreams instanceof Array)) return;
28 | $scope.fuelStreams = data.fuelStreams;
29 | var canisters = [];
30 | for (i in $scope.fuelStreams) {
31 | var fuelStream = $scope.fuelStreams[i];
32 | canisters.push(fuelStream.c);
33 | }
34 | $scope.canisters = canisters.unique().sort();
35 | });
36 | };
37 |
38 | $scope.selectCanister = function(canister) {
39 | $scope.selectedCanister = canister;
40 | }
41 |
42 | $scope.selectFuelStream = function(fuelStream) {
43 | for(i in $scope.fuelStreams) {
44 | $scope.fuelStreams[i].selected = ($scope.fuelStreams[i] == fuelStream);
45 | }
46 | $scope.prepareFuelStream(fuelStream);
47 | return;
48 | $scope.selectedFuelStream = fuelStream;
49 | var name = ($scope.selectedCanister ? $scope.selectedCanister + ' \\ ' : '') + $scope.selectedFuelStream.n;
50 | dataService.listFuelStreamData($scope.selectedFuelStream.i).then(function(data) {
51 | if (data && data.points && (data.points instanceof Array)) {
52 | for (i in data.points) {
53 | $scope.chart.labels.push(new Date(data.points[i].t));
54 | $scope.chart.data[0].push(data.points[i].d);
55 | }
56 | }
57 | });
58 | }
59 |
60 |
61 | $scope.prepareFuelStream = function(fuelStream) {
62 | if (fuelStream.selected && !fuelStream.data) {
63 | dataService.listFuelStreamData(fuelStream.i).then(function(data) {
64 | if (data && data.points && (data.points instanceof Array)) {
65 | fuelStream.data = data.points;
66 | $scope.populateChart();
67 | }
68 | });
69 | } else {
70 | $scope.populateChart();
71 | }
72 | }
73 |
74 | $scope.populateChart = function() {
75 | var count = 0;
76 | var names = [];
77 | var series = [];
78 | for (i in $scope.fuelStreams) {
79 | if (!!$scope.fuelStreams[i].selected && !!$scope.fuelStreams[i].data) {
80 | var fuelStream = $scope.fuelStreams[i];
81 | names.push((fuelStream.c ? fuelStream.c + ' \\ ' : '') + fuelStream.n);
82 | var s = [];
83 | for (j in fuelStream.data) {
84 | s.push({x: new Date(fuelStream.data[j].t), y: fuelStream.data[j].d});
85 | }
86 | series.push(s);
87 | count++;
88 | }
89 | }
90 | $scope.initChart(names, series);
91 |
92 | }
93 |
94 | $scope.toggleFuelStream = function(fuelStream) {
95 | fuelStream.selected = !fuelStream.selected;
96 | $scope.prepareFuelStream(fuelStream);
97 | }
98 |
99 | $scope.setStatus = function(status) {
100 | if (tmrStatus) $timeout.cancel(tmrStatus);
101 | tmrStatus = null;
102 | $scope.status = status;
103 | if ($scope.status) {
104 | tmrStatus = $timeout(function() { $scope.setStatus(); }, 10000);
105 | }
106 | }
107 |
108 |
109 | $scope.sortByDisplay = function(a,b) {
110 | return (a.d > b.d) ? 1 : ((b.d > a.d) ? -1 : 0);
111 | }
112 |
113 | $scope.sortByName = function(a,b) {
114 | return (a.n > b.n) ? 1 : ((b.n > a.n) ? -1 : 0);
115 | }
116 |
117 |
118 | $scope.home = function() {
119 | $scope.initialized = false;
120 | $location.path('/');
121 | }
122 |
123 |
124 | $scope.initChart = function(names, series) {
125 | $scope.chart = {
126 | series: names,
127 | type: 'line',
128 | data: series,
129 | options: {
130 | elements: {
131 | line: {
132 | fill: true,
133 | tension: 0
134 | }
135 | },
136 | legend: {display: true},
137 | showLines: true,
138 | responsive: true,
139 | maintainAspectRatio: false,
140 | scales: {
141 | xAxes: [{
142 | type: 'time',
143 | }],
144 | yAxes: [
145 | {
146 | id: 'y-axis-1',
147 | type: 'linear',
148 | display: true,
149 | position: 'left',
150 | ticks: {
151 | //beginAtZero: true,
152 | steps: 10,
153 | stepValue: 5
154 | //max: 100
155 | }
156 | }
157 | ]
158 | },
159 | pan: {
160 | // Boolean to enable panning
161 | enabled: true,
162 | // Panning directions. Remove the appropriate direction to disable
163 | // Eg. 'y' would only allow panning in the y direction
164 | mode: 'x'
165 | },
166 | // Container for zoom options
167 | zoom: {
168 | // Boolean to enable zooming
169 | enabled: true,
170 | // Zooming directions. Remove the appropriate direction to disable
171 | // Eg. 'y' would only allow zooming in the y direction
172 | mode: 'x',
173 | }
174 | }
175 |
176 | };
177 | };
178 |
179 |
180 |
181 |
182 | //init
183 | var userAgent = navigator.userAgent || navigator.vendor || window.opera;
184 | if( userAgent.match( /Android/i ) ) {
185 | $scope.android = true;
186 | }
187 | $scope.url = window.location.href;
188 | $scope.mobile = window.mobileCheck();
189 | $scope.tablet = (!$scope.mobile) && (window.mobileOrTabletCheck());
190 | $scope.formatTime = formatTime;
191 | $scope.utcToString = utcToString;
192 | $scope.$$postDigest(function() {$window.FB.XFBML.parse()});
193 | var tmrInit = setInterval(function() {
194 | if (dataService.ready()) {
195 | clearInterval(tmrInit);
196 | $scope.init();
197 | }
198 | }, 1);
199 |
200 | }]);
201 |
--------------------------------------------------------------------------------
/dashboard/js/modules/register.module.js:
--------------------------------------------------------------------------------
1 | config.controller('register', ['$scope', '$rootScope', 'dataService', '$timeout', '$interval', '$location', '$sce', '$routeParams', 'ngDialog', '$window', function($scope, $rootScope, dataService, $timeout, $interval, $location, $sce, $routeParams, ngDialog, $window) {
2 | var tmrStatus = null;
3 | $scope.loading = false;
4 | $scope.code = '';
5 | $scope.hasRegistered = dataService.listLocations().length > 0;
6 |
7 | $scope.init = function() {
8 | };
9 |
10 | $scope.setStatus = function(status) {
11 | if (tmrStatus) $timeout.cancel(tmrStatus);
12 | tmrStatus = null;
13 | $scope.status = status;
14 | if ($scope.status) {
15 | tmrStatus = $timeout(function() { $scope.setStatus(); }, 10000);
16 | }
17 | }
18 |
19 | $scope.$on('$destroy', function() {
20 | if (tmrStatus) $timeout.cancel(tmrStatus);
21 | });
22 |
23 |
24 | $scope.register = function() {
25 | $scope.loading = true;
26 | dataService.registerDashboard($scope.code).then(function(data) {
27 | if (data && (data.length >= 80) && (data.length <= 180)) {
28 | $location.path('/init/' + data);
29 | } else {
30 | $scope.setStatus("Sorry, the registration code you provided did not work...");
31 | }
32 | $scope.loading = false;
33 | });
34 | };
35 |
36 |
37 |
38 | $scope.cancel = function() {
39 | $location.path('/');
40 | };
41 |
42 |
43 | //init
44 | $scope.init();
45 | var userAgent = navigator.userAgent || navigator.vendor || window.opera;
46 | if( userAgent.match( /Android/i ) ) {
47 | $scope.android = true;
48 | }
49 | $scope.url = window.location.href;
50 | $scope.mobile = window.mobileCheck();
51 | $scope.tablet = (!$scope.mobile) && (window.mobileOrTabletCheck());
52 | $scope.formatTime = formatTime;
53 | $scope.utcToString = utcToString;
54 | }]);
55 |
--------------------------------------------------------------------------------
/dashboard/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/dist/dashboard/.htaccess:
--------------------------------------------------------------------------------
1 | RewriteEngine On
2 |
3 | RewriteCond %{REQUEST_FILENAME} !-f
4 | RewriteCond %{REQUEST_FILENAME} !-d
5 | RewriteRule ^(.*)$ /index.html [L,NC]
6 |
--------------------------------------------------------------------------------
/dist/dashboard/css/modules/fuel.module.css:
--------------------------------------------------------------------------------
1 | viewer,ng-view{display:block;top:0}div.main{position:fixed;left:0;top:0;right:0;bottom:0;background:#fcfcfc}div.form-group{padding:8px;margin:0;border-bottom:solid 1px #ddd;background:#eee}graph{position:fixed;top:0;height:50%;left:320px;right:0;display:block;border-left:solid 1px #ddd;background:#fff}data{position:fixed;top:50%;height:50%;left:320px;right:0;bottom:0;display:block;border-left:solid 1px #ddd;border-top:solid 1px #ddd;background:#fcfcfc;overflow:hidden;overflow-y:auto}graph>canvas,graph>div.chart{position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%}graph label{padding:8px}li{display:block;overflow:hidden;list-style:none;padding:0;margin:0;z-index:1}li label{width:100%;padding:0 0 0 8px;margin:0;line-height:24px;cursor:pointer;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}li created{display:none}li[selected]{z-index:2}li[selected]>label{color:#66c;cursor:default}ul[canisters]>li{border-bottom:solid 1px #eee}ul[canisters]{margin:0;padding:0;overflow:hidden;overflow-y:auto;width:320px;height:100%}ul[fuelStreams]{display:block;margin:0;padding:0;padding-left:20px}ul[fuelStreams] li label{font-weight:normal}@media(max-width:767px){.li{height:initial;sline-height:44px !important}div.main{overflow-y:auto}ul[canisters]{position:relative;left:auto;top:auto;right:auto;display:block;width:100%;height:auto}graph,data{position:relative;left:auto;top:auto;right:auto;display:block;width:100%;height:50%}}.collapse-control{padding-top:3px;padding-bottom:3px;padding-right:14px}
--------------------------------------------------------------------------------
/dist/dashboard/css/modules/register.module.css:
--------------------------------------------------------------------------------
1 | body{overflow-y:auto;background-color:#fff;display:flex;align-items:center;justify-content:center}.loginbox{max-width:300px;margin:0 auto}.loginbox-logo{max-width:100%}.loginbox .input-group .form-control,.loginbox .input-group .btn{border-radius:0 !important}input[name="code"]{font-size:26px;text-transform:lowercase}ng-view{position:relative}#instance,.loginbox .input-group,.help-row{margin-top:40px}.help-row{text-align:center}.help-row a{text-decoration:none;color:#fff}.help-row a:hover{text-decoration:none;color:#fff}
--------------------------------------------------------------------------------
/dist/dashboard/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-brands-400.eot
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-brands-400.ttf
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-brands-400.woff
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-brands-400.woff2
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-light-300.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-light-300.eot
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-light-300.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-light-300.ttf
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-light-300.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-light-300.woff
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-light-300.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-light-300.woff2
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-regular-400.eot
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-regular-400.ttf
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-regular-400.woff
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-regular-400.woff2
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-solid-900.eot
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-solid-900.ttf
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-solid-900.woff
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fa5-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fa5-solid-900.woff2
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/dist/dashboard/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/dist/dashboard/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/dist/dashboard/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/dist/dashboard/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/dist/dashboard/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/dist/dashboard/html/modules/fuel.module.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | -
13 |
17 |
18 |
19 | -
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | {{name}} |
38 |
39 |
40 | Date |
41 | Value |
42 |
43 |
44 |
45 |
46 | {{utcToString(point.x)}} |
47 | {{point.y}} |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/dist/dashboard/html/modules/fuel.module.html.bak:
--------------------------------------------------------------------------------
1 |
2 | webCoRE
3 |
4 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | -
18 |
19 |
20 | -
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | {{name}} |
37 |
38 |
39 | Date |
40 | Value |
41 |
42 |
43 |
44 |
45 | {{utcToString(point.x)}} |
46 | {{point.y}} |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/dist/dashboard/html/modules/register.module.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |

6 |
19 |
27 |
28 |
29 |
30 |
31 |
32 |
60 |
--------------------------------------------------------------------------------
/dist/dashboard/img/altitude.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/altitude.png
--------------------------------------------------------------------------------
/dist/dashboard/img/app-CoRE3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/app-CoRE3x.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/android-chrome-192x192.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/android-chrome-512x512.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/apple-touch-icon.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #603cba
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/favicon.ico
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/android-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/android-icon-144x144.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/android-icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/android-icon-192x192.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/android-icon-36x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/android-icon-36x36.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/android-icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/android-icon-48x48.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/android-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/android-icon-72x72.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/android-icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/android-icon-96x96.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-114x114.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-120x120.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-144x144.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-152x152.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-180x180.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-57x57.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-60x60.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-72x72.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-76x76.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon-precomposed.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/apple-icon.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 | #ffffff
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/favicon-16x16.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/favicon-32x32.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/favicon-96x96.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/favicon.ico
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "App",
3 | "icons": [
4 | {
5 | "src": "android-icon-36x36.png",
6 | "sizes": "36x36",
7 | "type": "image\/png",
8 | "density": "0.75"
9 | },
10 | {
11 | "src": "android-icon-48x48.png",
12 | "sizes": "48x48",
13 | "type": "image\/png",
14 | "density": "1.0"
15 | },
16 | {
17 | "src": "android-icon-72x72.png",
18 | "sizes": "72x72",
19 | "type": "image\/png",
20 | "density": "1.5"
21 | },
22 | {
23 | "src": "android-icon-96x96.png",
24 | "sizes": "96x96",
25 | "type": "image\/png",
26 | "density": "2.0"
27 | },
28 | {
29 | "src": "android-icon-144x144.png",
30 | "sizes": "144x144",
31 | "type": "image\/png",
32 | "density": "3.0"
33 | },
34 | {
35 | "src": "android-icon-192x192.png",
36 | "sizes": "192x192",
37 | "type": "image\/png",
38 | "density": "4.0"
39 | }
40 | ]
41 | }
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/ms-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/ms-icon-144x144.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/ms-icon-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/ms-icon-150x150.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/ms-icon-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/ms-icon-310x310.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/legacy/ms-icon-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/legacy/ms-icon-70x70.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "",
3 | "icons": [
4 | {
5 | "src": "/android-chrome-192x192.png",
6 | "sizes": "192x192",
7 | "type": "image/png"
8 | },
9 | {
10 | "src": "/android-chrome-512x512.png",
11 | "sizes": "512x512",
12 | "type": "image/png"
13 | }
14 | ],
15 | "theme_color": "#ffffff",
16 | "background_color": "#ffffff",
17 | "display": "standalone"
18 | }
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/favicon/mstile-150x150.png
--------------------------------------------------------------------------------
/dist/dashboard/img/favicon/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Dashboard",
3 | "short_name": "Dashboard",
4 | "icons": [
5 | {
6 | "src": "android-chrome-192x192.png",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "android-chrome-512x512.png",
12 | "sizes": "512x512",
13 | "type": "image/png"
14 | }
15 | ],
16 | "theme_color": "#ffffff",
17 | "background_color": "#ffffff",
18 | "display": "standalone"
19 | }
20 |
--------------------------------------------------------------------------------
/dist/dashboard/img/piston.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/piston.png
--------------------------------------------------------------------------------
/dist/dashboard/img/squared_metal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/squared_metal.png
--------------------------------------------------------------------------------
/dist/dashboard/img/squared_metal_@2X.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/dist/dashboard/img/squared_metal_@2X.png
--------------------------------------------------------------------------------
/dist/dashboard/img/webCoRE-mark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
39 |
--------------------------------------------------------------------------------
/dist/dashboard/img/webCoRE-text.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/dist/dashboard/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | webCoRE Dashboard
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | webCoRE Dashboard
6 |
7 |
8 |
9 |
10 |
11 | Redirecting, please wait...
12 |
15 |
16 |
--------------------------------------------------------------------------------
/installerManifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "namespace": "ady624",
3 | "repoOwner": "ady624",
4 | "repoName": "webCoRE",
5 | "repoBranch": "master",
6 | "name": "webCoRE",
7 | "author": "Adrian Caramaliu",
8 | "description": "Web enabled Community's own Rule Engine",
9 | "category": "My Apps",
10 | "videoUrl": "",
11 | "photoUrl": "",
12 | "bannerUrl": "",
13 | "smartApps": {
14 | "parent": {
15 | "name": "webCoRE",
16 | "iconUrl": "https://cdn.rawgit.com/ady624/webCoRE/master/resources/icons/app-CoRE.png",
17 | "published": true,
18 | "oAuth": true,
19 | "appSettings": {},
20 | "version": "0.2.102.20180116",
21 | "appUrl": "smartapps/ady624/webcore.src/webcore.groovy"
22 | },
23 | "children": [{
24 | "name": "webCoRE Piston",
25 | "iconUrl": "https://cdn.rawgit.com/ady624/webCoRE/master/resources/icons/app-CoRE.png",
26 | "published": true,
27 | "oAuth": false,
28 | "appUrl": "smartapps/ady624/webcore-piston.src/webcore-piston.groovy",
29 | "appSettings": {},
30 | "version": "0.2.102.20180116",
31 | "optional": false
32 | },
33 | {
34 | "name": "webCoRE Storage",
35 | "iconUrl": "https://cdn.rawgit.com/ady624/webCoRE/master/resources/icons/app-CoRE.png",
36 | "published": true,
37 | "oAuth": false,
38 | "appUrl": "smartapps/ady624/webcore-storage.src/webcore-storage.groovy",
39 | "appSettings": {},
40 | "version": "0.2.102.20180116",
41 | "optional": false
42 | },
43 | {
44 | "name": "webCoRE Dashboard",
45 | "iconUrl": "https://cdn.rawgit.com/ady624/webCoRE/master/resources/icons/app-CoRE.png",
46 | "published": true,
47 | "oAuth": false,
48 | "appUrl": "smartapps/ady624/webcore-dashboard.src/webcore-dashboard.groovy",
49 | "appSettings": {},
50 | "version": "0.2.102.20180116",
51 | "optional": false
52 | }
53 | ]
54 | },
55 | "deviceHandlers": [{
56 | "name": "webCoRE Presence Sensor",
57 | "iconUrl": "https://cdn.rawgit.com/ady624/webCoRE/master/resources/icons/app-CoRE.png",
58 | "published": true,
59 | "oAuth": false,
60 | "appUrl": "devicetypes/ady624/webcore-presence-sensor.src/webcore-presence-sensor.groovy",
61 | "appSettings": {},
62 | "version": "0.2.0fa.20171011",
63 | "optional": false
64 | }]
65 | }
66 |
--------------------------------------------------------------------------------
/resources/icons/app-CoRE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/resources/icons/app-CoRE.png
--------------------------------------------------------------------------------
/resources/icons/app-CoRE@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/resources/icons/app-CoRE@2x.png
--------------------------------------------------------------------------------
/resources/icons/app-CoRE@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/resources/icons/app-CoRE@3x.png
--------------------------------------------------------------------------------
/resources/icons/browser-reg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/resources/icons/browser-reg.png
--------------------------------------------------------------------------------
/resources/icons/dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/resources/icons/dashboard.png
--------------------------------------------------------------------------------
/resources/icons/logo-text-CoRE.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/resources/icons/read.me:
--------------------------------------------------------------------------------
1 | app-CoRE.png
2 | app-CoRE@2x.png
3 | app-CoRE@3x.png
4 |
--------------------------------------------------------------------------------
/resources/icons/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imnotbob/webCoRE/ae1ff1d7863296f02aae2ff9e93f95fd1b4be2bc/resources/icons/settings.png
--------------------------------------------------------------------------------
/smartapps/ady624/webcore-dashboard.src/webcore-dashboard.groovy:
--------------------------------------------------------------------------------
1 | /*
2 | * webCoRE - Community's own Rule Engine - Web Edition
3 | *
4 | * Copyright 2016 Adrian Caramaliu
5 | *
6 | * This program is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * This program is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program. If not, see .
18 | */
19 | public static String version() { return "v0.3.10e.20190628" }
20 | //******************************************************************************/
21 | /*** webCoRE DEFINITION ***/
22 | /******************************************************************************/
23 | private static String handle() { return "webCoRE" }
24 | include 'asynchttp_v1'
25 | definition(
26 | name: "${handle()} Dashboard",
27 | namespace: "ady624",
28 | author: "Adrian Caramaliu",
29 | description: "Do not install this directly, use webCoRE instead",
30 | parent: "ady624:${handle()}",
31 | category: "Convenience",
32 | /* icons courtesy of @chauger - thank you */
33 | iconUrl: "https://cdn.rawgit.com/ady624/${handle()}/master/resources/icons/app-CoRE.png",
34 | iconX2Url: "https://cdn.rawgit.com/ady624/${handle()}/master/resources/icons/app-CoRE@2x.png",
35 | iconX3Url: "https://cdn.rawgit.com/ady624/${handle()}/master/resources/icons/app-CoRE@3x.png"
36 | )
37 |
38 | preferences {
39 | //UI pages
40 | page(name: "pageMain")
41 | }
42 |
43 |
44 | /******************************************************************************/
45 | /*** ***/
46 | /*** CONFIGURATION PAGES ***/
47 | /*** ***/
48 | /******************************************************************************/
49 | def pageMain() {
50 | //clear devices cache
51 | dynamicPage(name: "pageMain", title: "", install: false, uninstall: false) {
52 | if (!parent || !parent.isInstalled()) {
53 | section() {
54 | paragraph "Sorry, you cannot install a piston directly from the Marketplace, please use the webCoRE SmartApp instead."
55 | }
56 | section("Installing webCoRE") {
57 | paragraph "If you are trying to install webCoRE, please go back one step and choose webCoRE, not webCoRE Piston. You can also visit wiki.webcore.co for more information on how to install and use webCoRE"
58 | if (parent) href "", title: "More information", description: parent.getWikiUrl(), style: "external", url: parent.getWikiUrl(), image: "https://cdn.rawgit.com/ady624/webCoRE/master/resources/icons/app-CoRE.png", required: false
59 | }
60 | } else {
61 | section("Status") {
62 | paragraph state.status
63 | }
64 | }
65 | }
66 | }
67 |
68 |
69 |
70 | /******************************************************************************/
71 | /*** ***/
72 | /*** INITIALIZATION ROUTINES ***/
73 | /*** ***/
74 | /******************************************************************************/
75 |
76 |
77 | private installed() {
78 | initialize()
79 | return true
80 | }
81 |
82 | private updated() {
83 | unsubscribe()
84 | initialize()
85 | return true
86 | }
87 |
88 | private initialize() {
89 | }
90 |
91 |
92 | /******************************************************************************/
93 | /*** ***/
94 | /*** PRIVATE METHODS ***/
95 | /*** ***/
96 | /******************************************************************************/
97 |
98 | private subscribeToAttribute(devices, attribute) {
99 | subscribe(devices.findAll{ it.hasAttribute(attribute) }, attribute, dashboardEventHandler)
100 | }
101 |
102 | /******************************************************************************/
103 | /*** ***/
104 | /*** PUBLIC METHODS ***/
105 | /*** ***/
106 | /******************************************************************************/
107 |
108 | public void start(devices, instanceId) {
109 | runIn(30, stop)
110 | if ((state.status?:'Idle') != 'Idle') return
111 | if (instanceId) state.instanceId = instanceId
112 | if (!state.instanceId) return
113 | state.region = apiServerUrl('/').contains('graph-eu') ? 'eu' : 'us';
114 | atomicState.status = 'Subscribing'
115 | unsubscribe()
116 | subscribeToAttribute(devices, 'switch')
117 | subscribeToAttribute(devices, 'level')
118 | subscribeToAttribute(devices, 'temperature')
119 | subscribeToAttribute(devices, 'color')
120 | subscribeToAttribute(devices, 'colorTemperature')
121 | subscribeToAttribute(devices, 'hue')
122 | subscribeToAttribute(devices, 'saturation')
123 | subscribeToAttribute(devices, 'contact')
124 | subscribeToAttribute(devices, 'presence')
125 | subscribeToAttribute(devices, 'lock')
126 | subscribeToAttribute(devices, 'motion')
127 | subscribeToAttribute(devices, 'water')
128 | state.status = 'Listening'
129 | }
130 |
131 | public void stop() {
132 | if (state.status == 'Idle') return
133 | unsubscribe()
134 | unschedule(stop)
135 | state.status = 'Idle'
136 | }
137 |
138 | public dashboardEventHandler(evt) {
139 | broadcastEvent(hashId(evt.device.id), evt.name, evt.value, evt.date.time)
140 | }
141 |
142 | public updatePiston(pistonId, piston) {
143 | broadcastEvent(pistonId, 'piston', piston.s.new, piston.t)
144 | }
145 |
146 | private void broadcastEvent(deviceId, eventName, eventValue, eventTime) {
147 | def iid = state.instanceId
148 | def region = state.region ?: 'us'
149 | if (!iid || !iid.startsWith(':') || !iid.endsWith(':')) return
150 | asynchttp_v1.put(null, [
151 | uri: "https://api-${region}-${iid[32]}.webcore.co:9237",
152 | path: '/event/sink',
153 | headers: ['ST' : state.instanceId],
154 | body: [
155 | d: deviceId,
156 | n: eventName,
157 | v: eventValue,
158 | t: eventTime
159 | ]
160 | ])
161 | }
162 |
163 | /******************************************************************************/
164 | /*** ***/
165 | /*** SECURITY METHODS ***/
166 | /*** ***/
167 | /******************************************************************************/
168 | def String md5(String md5) {
169 | try {
170 | java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5")
171 | byte[] array = md.digest(md5.getBytes())
172 | def result = ""
173 | for (int i = 0; i < array.length; ++i) {
174 | result += Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3)
175 | }
176 | return result
177 | } catch (java.security.NoSuchAlgorithmException e) {
178 | }
179 | return null;
180 | }
181 |
182 | def String hashId(id) {
183 | //enabled hash caching for faster processing
184 | def result = state.hash ? state.hash[id] : null
185 | if (!result) {
186 | result = ":${md5("core." + id)}:"
187 | def hash = state.hash ?: [:]
188 | hash[id] = result
189 | state.hash = hash
190 | }
191 | return result
192 | }
193 |
194 | /******************************************************************************/
195 | /*** ***/
196 | /*** END OF CODE ***/
197 | /*** ***/
198 | /******************************************************************************/
199 |
--------------------------------------------------------------------------------
/superstatic.json:
--------------------------------------------------------------------------------
1 | {
2 | "public": "dashboard",
3 | "rewrites": [
4 | { "source": "**/*", "destination": "/index.html" }
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------