@markus.hardardt/js_hmi 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/.gitattributes +2 -0
  2. package/.vscode/launch.json +17 -0
  3. package/README.md +2 -0
  4. package/config/db_access.json +8 -0
  5. package/config/db_config.json +44 -0
  6. package/config/icons/export.gif +0 -0
  7. package/config/icons/folder.gif +0 -0
  8. package/config/icons/htm.gif +0 -0
  9. package/config/icons/jso.gif +0 -0
  10. package/config/icons/lab.gif +0 -0
  11. package/config/icons/refresh.gif +0 -0
  12. package/config/icons/txt.gif +0 -0
  13. package/config/js_hmi_config_create.sql +91 -0
  14. package/config.json +19 -0
  15. package/ext/jquery/ajaxblob.js +80 -0
  16. package/ext/jquery/dataTables.pageResize.min.js +8 -0
  17. package/ext/jquery/dataTables.scrollResize.min.js +8 -0
  18. package/ext/jquery/jquery.layout-latest.js +5126 -0
  19. package/ext/jquery/jquery.transform2d.js +551 -0
  20. package/ext/jquery/jquery.ui.touch-punch.js +160 -0
  21. package/ext/jquery/layout-default-latest.css +228 -0
  22. package/images/arrows/arrow-down.png +0 -0
  23. package/images/arrows/arrow-left-right.png +0 -0
  24. package/images/arrows/arrow-left.png +0 -0
  25. package/images/arrows/arrow-right.png +0 -0
  26. package/images/arrows/arrow-up-down.png +0 -0
  27. package/images/arrows/arrow-up.png +0 -0
  28. package/images/favicon.ico +0 -0
  29. package/images/question/question-balloon.png +0 -0
  30. package/images/question/question-button.png +0 -0
  31. package/images/question/question-frame.png +0 -0
  32. package/images/question/question.png +0 -0
  33. package/main.js +307 -0
  34. package/package.json +21 -0
  35. package/src/BrowserMain.js +132 -0
  36. package/ui/arrow-down.png +0 -0
  37. package/ui/arrow-left-right.png +0 -0
  38. package/ui/arrow-left.png +0 -0
  39. package/ui/arrow-right.png +0 -0
  40. package/ui/arrow-up-down.png +0 -0
  41. package/ui/arrow-up.png +0 -0
  42. package/ui/hmi_styles.css +333 -0
  43. package/ui/scrollbar-desktop.css +117 -0
  44. package/ui/scrollbar-touch.css +117 -0
@@ -0,0 +1,132 @@
1
+ (function (root) {
2
+ "use strict";
3
+
4
+ // create 'hmi' environment object
5
+ const hmi = {};
6
+ // debug brakeports
7
+ hmi.debug_breakpoint = window.debug_breakpoint;
8
+ // here we add our libraries
9
+ hmi.lib = {};
10
+ // load Mathematics
11
+ hmi.lib.Mathematics = root.Mathematics;
12
+ hmi.lib.JsonFX = root.JsonFX;
13
+ hmi.lib.exec = root.Executor;
14
+ hmi.lib.regex = root.Regex;
15
+ // here all droppables will be stored
16
+ hmi.droppables = {};
17
+
18
+ hmi.env = {
19
+ isInstance: instance => false, // TODO: Implement isInstance(instance)
20
+ isSimulationEnabled: () => false // TODO: Implement isSimulationEnabled()
21
+ };
22
+
23
+ // add hmi-object-framweork
24
+ hmi.create = (object, element, onSuccess, onError, initData) =>
25
+ ObjectLifecycleManager.create(object, element, onSuccess, onError, hmi, initData);
26
+ hmi.destroy = ObjectLifecycleManager.destroy;
27
+ hmi.showPopup = (config, onSuccess, onError) =>
28
+ ObjectLifecycleManager.showPopup(hmi, config, onSuccess, onError);
29
+ hmi.showDefaultConfirmationPopup = (config, onSuccess, onError) =>
30
+ ObjectLifecycleManager.showDefaultConfirmationPopup(hmi, config, onSuccess, onError);
31
+ // all static files have been loaded and now we create the hmi.
32
+ $(() => {
33
+ const tasks = [];
34
+ tasks.parallel = false;
35
+
36
+ const dataConnector = new DataConnector.ClientConnector();
37
+ hmi.env.data = dataConnector;
38
+
39
+ let webSocketSessionConfig = undefined;
40
+ // Load web socket session config from server
41
+ tasks.push((onSuccess, onError) => Client.fetch('/get_web_socket_session_config', undefined, response => {
42
+ webSocketSessionConfig = JSON.parse(response);
43
+ console.log('Loaded web socket session configuration successfully. Session ID:', webSocketSessionConfig.sessionId);
44
+ onSuccess();
45
+ }, error => {
46
+ console.error(`Error loading web socket session configuration: ${error}`);
47
+ onError(error);
48
+ }));
49
+
50
+ let webSocketConnection = undefined;
51
+ tasks.push((onSuccess, onError) => {
52
+ try {
53
+ webSocketConnection = new WebSocketConnection.ClientConnection(document.location.hostname, webSocketSessionConfig, {
54
+ heartbeatInterval: 2000,
55
+ heartbeatTimeout: 1000,
56
+ reconnectStart: 1000,
57
+ reconnectMax: 32000,
58
+ OnOpen: () => {
59
+ console.log(`web socket client opened (sessionId: '${WebSocketConnection.formatSesionId(webSocketConnection.SessionId)}')`);
60
+ dataConnector.OnOpen();
61
+ },
62
+ OnClose: () => {
63
+ console.log(`web socket client closed (sessionId: '${WebSocketConnection.formatSesionId(webSocketConnection.SessionId)}')`);
64
+ dataConnector.OnClose();
65
+ },
66
+ OnError: error => {
67
+ console.error(`error in connection (sessionId: '${WebSocketConnection.formatSesionId(webSocketConnection.SessionId)}') to server: ${error}`);
68
+ }
69
+ });
70
+ dataConnector.Connection = webSocketConnection;
71
+ onSuccess();
72
+ } catch (error) {
73
+ onError(error);
74
+ }
75
+ });
76
+ // load client config
77
+ let config = false;
78
+ tasks.push((onSuccess, onError) => {
79
+ Client.fetch('/get_client_config', null, response => {
80
+ config = JSON.parse(response);
81
+ onSuccess();
82
+ }, onError);
83
+ });
84
+ // prepare content management system
85
+ tasks.push((onSuccess, onError) => hmi.cms = new ContentManager.Instance(onSuccess, onError));
86
+ tasks.push((onSuccess, onError) => {
87
+ const languages = hmi.cms.GetLanguages();
88
+ if (Array.isArray(languages) && languages.length > 0) {
89
+ hmi.languages = languages;
90
+ hmi.language = languages[0];
91
+ onSuccess();
92
+ } else {
93
+ onError('no languages available');
94
+ }
95
+ });
96
+ let rootObject = null;
97
+ tasks.push((onSuccess, onError) => {
98
+ const params = new URLSearchParams(root.location.search);
99
+ const view = params.get('view');
100
+ const defaultObject = { text: `view: '${view}' is not available` };
101
+ console.log(`view: '${view}'`);
102
+ if (view) {
103
+ hmi.cms.GetObject(view, hmi.language, ContentManager.PARSE, object => {
104
+ if (object !== null && typeof object === 'object' && !Array.isArray(object)) {
105
+ rootObject = object;
106
+ } else {
107
+ rootObject = { text: `view: '${view}' is not a visual object` }; // TODO: Implement 'better' info object
108
+ }
109
+ onSuccess();
110
+ }, error => rootObject = { text: `Failed loading view: '${view}' because of error: ${error}` }); // TODO: Implement 'better' info object
111
+ } else {
112
+ rootObject = ContentEditor.create(hmi);
113
+ onSuccess();
114
+ }
115
+ });
116
+ tasks.push((onSuccess, onError) => {
117
+ Client.startRefreshCycle(config.requestAnimationFrameCycle, () => ObjectLifecycleManager.refresh(new Date()));
118
+ onSuccess();
119
+ });
120
+ // load hmi
121
+ Executor.run(tasks, () => {
122
+ Object.seal(hmi);
123
+ const body = $(document.body);
124
+ body.empty();
125
+ body.addClass('hmi-body');
126
+ hmi.create(rootObject, body, () => console.log('js hmi started'), error => console.error(error));
127
+ body.on('unload', () => {
128
+ hmi.destroy(rootObject, () => console.log('js hmi stopped'), error => console.error(error));
129
+ });
130
+ }, error => console.error(error));
131
+ });
132
+ }(globalThis));
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,333 @@
1
+ .empty {
2
+
3
+ }
4
+
5
+ /*
6
+ We need to set on both - 'html' and 'body'- the dimension to 100%
7
+ to make our hmi fit info the whole window.
8
+ */
9
+ html {
10
+ height: 100%;
11
+ width: 100%;
12
+ }
13
+
14
+ body {
15
+ height: 100%;
16
+ width: 100%;
17
+ box-sizing: border-box;
18
+ margin: 0;
19
+ padding: 0;
20
+ -webkit-user-select: none;
21
+ user-select: none;
22
+ }
23
+
24
+ /* overwrite default in ./node_modules/jquery-ui-dist/jquery-ui.css because of dark background */
25
+ .ui-dialog .ui-dialog-content {
26
+ position: relative;
27
+ border: 0;
28
+ padding: .5em 1em;
29
+ background: #F0F0F0;
30
+ overflow: auto;
31
+ }
32
+
33
+ .hmi-body {
34
+ font-family: 'Verdana';
35
+ font-size: 12px;
36
+ color: #000000;
37
+ background: #eeeeee;
38
+ }
39
+
40
+ .hmi-light {
41
+ background: #F0F0F0;
42
+ }
43
+
44
+ .hmi-dark {
45
+ background: #E1E1E1;
46
+ }
47
+
48
+ .hmi-button-disabled {
49
+ color: #D0D0D0;
50
+ }
51
+
52
+ .hmi-cursor-pointer {
53
+ cursor: pointer;
54
+ }
55
+
56
+ .hmi-border {
57
+ border-style: solid;
58
+ border-width: 2px;
59
+ border-left-color: #b3b3b3;
60
+ border-right-color: #b3b3b3;
61
+ border-top-color: #b3b3b3;
62
+ border-bottom-color: #b3b3b3;
63
+ -webkit-border-radius: 6px;
64
+ }
65
+
66
+ .hmi-border-embossed {
67
+ border-style: solid;
68
+ border-width: 2px;
69
+ border-left-color: #cdcdcd;
70
+ border-right-color: #c0c0c0;
71
+ border-top-color: #dadada;
72
+ border-bottom-color: #b3b3b3;
73
+ -webkit-border-radius: 6px;
74
+ }
75
+
76
+ .hmi-border-engraved {
77
+ border-style: solid;
78
+ border-width: 2px;
79
+ border-left-color: #c0c0c0;
80
+ border-right-color: #cdcdcd;
81
+ border-top-color: #b3b3b3;
82
+ border-bottom-color: #dadada;
83
+ -webkit-border-radius: 6px;
84
+ }
85
+
86
+ .hmi-selected {
87
+ background: -webkit-linear-gradient(top, #aaaaaaaa, #777777);
88
+ background-color: #aaaaaaaa;
89
+ }
90
+
91
+ table.dataTable tbody tr.row_selected {
92
+ background-color: lightgrey !important;
93
+ color: black !important;
94
+ }
95
+
96
+ .border-round {
97
+ -webkit-border-radius: 10px;
98
+ }
99
+
100
+ .cm-matchhighlight {
101
+ /* this must be transparent because otherwise we cannot see selection highlighting on search-and-replace */
102
+ background-color: rgba(0,255,0,0.247)
103
+ }
104
+
105
+ .CodeMirror-selection-highlight-scrollbar {
106
+ background-color: green
107
+ }
108
+
109
+ .cm-s-default .cm-comment {
110
+ color: #67B97B;
111
+ }
112
+
113
+ /*
114
+ .body-export {
115
+ font-family: 'Verdana';
116
+ font-size: 13px;
117
+ color: #000000;
118
+ background: #FFFFFF;
119
+ margin: 0;
120
+ padding: 0;
121
+ -webkit-user-select: none;
122
+ user-select: none;
123
+ }
124
+
125
+ .headerlogo {
126
+ background-image: url('Logo.png');
127
+ background-repeat: no-repeat;
128
+ min-height: 100%;
129
+ -webkit-user-select: none;
130
+ user-select: none;
131
+ }
132
+ */
133
+ .dateImg {
134
+ background-image: url('Kalender.png');
135
+ background-repeat: no-repeat;
136
+ -webkit-user-select: none;
137
+ user-select: none;
138
+ }
139
+ /*
140
+ .diagnosticHeader {
141
+ margin-left: 274px;
142
+ border-spacing: 0px;
143
+ }
144
+ */
145
+ .default-data-field {
146
+ text-align: right;
147
+ padding-right: 2px;
148
+ padding-left: 2px;
149
+ }
150
+
151
+ .default-data-field-value {
152
+ font-size: 22px;
153
+ }
154
+
155
+ .default-border-box {
156
+ box-sizing: border-box;
157
+ }
158
+
159
+ .font-bold {
160
+ font-weight: bold;
161
+ }
162
+
163
+ /*
164
+ .defaultbutton {
165
+ text-align: center;
166
+ text-decoration: none;
167
+ display: inline-block;
168
+ font-weight: bold;
169
+ line-height: 25px;
170
+ cursor: pointer;
171
+ }
172
+ */
173
+
174
+ .defaultcheckbutton {
175
+ text-align: left;
176
+ text-decoration: none;
177
+ display: inline-block;
178
+ font-weight: bold;
179
+ line-height: 25px;
180
+ cursor: pointer;
181
+ }
182
+
183
+ .highlighted-white {
184
+ background: -webkit-linear-gradient(top, rgb(180, 180, 180),
185
+ rgb(255, 255, 255));
186
+ background-color: rgb(180, 180, 180);
187
+ }
188
+
189
+ .highlighted-grey {
190
+ background: -webkit-linear-gradient(top, rgb(85, 85, 85),
191
+ rgb(136, 136, 136));
192
+ background-color: rgb(85, 85, 85);
193
+ }
194
+
195
+ .highlighted-grey-dark {
196
+ background: -webkit-linear-gradient(top, rgb(24, 24, 24),
197
+ rgb(42, 42, 42));
198
+ background-color: rgb(85, 85, 85);
199
+ }
200
+
201
+ .highlighted-green {
202
+ background: -webkit-linear-gradient(top, rgb(0, 98, 0), rgb(0, 242, 0));
203
+ background-color: rgb(0, 170, 0);
204
+ }
205
+
206
+ .highlighted-green-dark {
207
+ background: -webkit-linear-gradient(top, rgb(0, 32, 0), rgb(0, 64, 0));
208
+ background-color: rgb(0, 170, 0);
209
+ }
210
+
211
+ .highlighted-red {
212
+ background: -webkit-linear-gradient(top, rgb(98, 0, 0), rgb(242, 0, 0));
213
+ background-color: rgb(170, 0, 0);
214
+ }
215
+
216
+ .highlighted-red-dark {
217
+ background: -webkit-linear-gradient(top, rgb(32, 0, 0), rgb(64, 0, 0));
218
+ background-color: rgb(170, 0, 0);
219
+ }
220
+
221
+ .highlighted-blue {
222
+ background: -webkit-linear-gradient(top, rgb(0, 0, 98), rgb(0, 0, 242));
223
+ background-color: rgb(0, 0, 170);
224
+ }
225
+
226
+ .highlighted-blue-dark {
227
+ background: -webkit-linear-gradient(top, rgb(0, 0, 32), rgb(0, 0, 64));
228
+ background-color: rgb(0, 0, 170);
229
+ }
230
+
231
+ .highlighted-yellow {
232
+ /*background: -webkit-linear-gradient(top, rgb(117, 87, 0), rgb(245, 153, 0));
233
+ background-color: rgb(235, 143, 0);*/
234
+ background: -webkit-linear-gradient(top, rgb(100, 100, 0),
235
+ rgb(245, 245, 0));
236
+ background-color: rgb(235, 143, 0);
237
+ }
238
+
239
+ .highlighted-yellow-dark {
240
+ background: -webkit-linear-gradient(top, rgb(70, 32, 0), rgb(180, 64, 0));
241
+ background-color: rgb(235, 143, 0);
242
+ }
243
+
244
+ .background-red-light {
245
+ background: rgb(255, 127, 127);
246
+ }
247
+
248
+ .default-background-white {
249
+ background: white;
250
+ color: black;
251
+ }
252
+
253
+ .default-background-hover {
254
+ background: rgb(70, 75, 78) !important;
255
+ }
256
+
257
+ .overflow-hidden {
258
+ /* be carefull with this: draggables might be invisible and - even worse - not droppable on buttons! */
259
+ overflow: hidden !important;
260
+ }
261
+
262
+ .default-scroll-container {
263
+ overflow: auto;
264
+ }
265
+
266
+ .defaultcontainer {
267
+ display: block;
268
+ position: absolute;
269
+ height: auto;
270
+ bottom: 0;
271
+ top: 0;
272
+ left: 0;
273
+ right: 0;
274
+ border-style: solid;
275
+ border-width: 2px;
276
+ border-bottom-color: rgb(76, 76, 76);
277
+ border-right-color: rgb(76, 76, 76);
278
+ border-top-color: rgb(38, 37, 40);
279
+ border-left-color: rgb(38, 37, 40);
280
+ -webkit-border-radius: 6px;
281
+ background: rgb(46, 45, 48);
282
+ padding: 2px;
283
+ }
284
+
285
+ /* TODO remove if realy not used ??? */
286
+ .defaultblock {
287
+ display: block;
288
+ position: absolute;
289
+ height: auto;
290
+ bottom: 0;
291
+ top: 0;
292
+ left: 0;
293
+ right: 0;
294
+ }
295
+
296
+ /* TODO remove if still unused */
297
+ .defaultpanel {
298
+ /*
299
+ display: block;
300
+ position: absolute;
301
+ height: auto;
302
+ bottom: 0;
303
+ top: 0;
304
+ left: 0;
305
+ right: 0;
306
+ margin-top: 2px;
307
+ margin-bottom: 2px;
308
+ margin-right: 2px;
309
+ margin-left: 2px;
310
+ */
311
+ border-style: solid;
312
+ border-width: 2px;
313
+ border-bottom-color: rgb(38, 37, 40);
314
+ border-right-color: rgb(38, 37, 40);
315
+ border-top-color: rgb(76, 76, 76);
316
+ border-left-color: rgb(76, 76, 76);
317
+ }
318
+
319
+ /* TODO remove if still unused */
320
+ .defaultpanelborder {
321
+ border-style: solid;
322
+ border-width: 2px;
323
+ border-bottom-color: rgb(38, 37, 40);
324
+ border-right-color: rgb(38, 37, 40);
325
+ border-top-color: rgb(76, 76, 76);
326
+ border-left-color: rgb(76, 76, 76);
327
+ padding: 2px;
328
+ }
329
+
330
+ .rotate180 {
331
+ -webkit-transform: rotate(180deg);
332
+ transform: rotate(180deg);
333
+ }
@@ -0,0 +1,117 @@
1
+ /* this targets the default scrollbar (compulsory) */
2
+ ::-webkit-scrollbar {
3
+ width: 22px;
4
+ height: 22px;
5
+ }
6
+
7
+ ::-webkit-scrollbar-button:vertical:decrement {
8
+ background: url('arrow-up.png') no-repeat;
9
+ background-size: 18px 18px;
10
+ background-position: center;
11
+ min-height: 22px;
12
+ min-width: 22px;
13
+ background-color: rgb(56,55,58);
14
+ border-style: solid;
15
+ border-width: 2px;
16
+ border-top-color: rgb(76,76,76);
17
+ border-left-color: rgb(76,76,76);
18
+ border-bottom-color: rgb(38,37,40);
19
+ border-right-color: rgb(38,37,40);
20
+ -webkit-border-radius: 6px;
21
+ }
22
+
23
+ ::-webkit-scrollbar-button:vertical:increment {
24
+ background: url('arrow-down.png') no-repeat;
25
+ background-size: 18px 18px;
26
+ background-position: center;
27
+ min-height: 22px;
28
+ min-width: 22px;
29
+ background-color: rgb(56,55,58);
30
+ border-style: solid;
31
+ border-width: 2px;
32
+ border-top-color: rgb(76,76,76);
33
+ border-left-color: rgb(76,76,76);
34
+ border-bottom-color: rgb(38,37,40);
35
+ border-right-color: rgb(38,37,40);
36
+ -webkit-border-radius: 6px;
37
+ }
38
+
39
+ ::-webkit-scrollbar-button:horizontal:decrement {
40
+ background: url('arrow-left.png') no-repeat;
41
+ background-size: 18px 18px;
42
+ background-position: center;
43
+ min-height: 22px;
44
+ min-width: 22px;
45
+ background-color: rgb(56,55,58);
46
+ border-style: solid;
47
+ border-width: 2px;
48
+ border-top-color: rgb(76,76,76);
49
+ border-left-color: rgb(76,76,76);
50
+ border-bottom-color: rgb(38,37,40);
51
+ border-right-color: rgb(38,37,40);
52
+ -webkit-border-radius: 6px;
53
+ }
54
+
55
+ ::-webkit-scrollbar-button:horizontal:increment {
56
+ background: url('arrow-right.png') no-repeat;
57
+ background-size: 18px 18px;
58
+ background-position: center;
59
+ min-height: 22px;
60
+ min-width: 22px;
61
+ background-color: rgb(56,55,58);
62
+ border-style: solid;
63
+ border-width: 2px;
64
+ border-top-color: rgb(76,76,76);
65
+ border-left-color: rgb(76,76,76);
66
+ border-bottom-color: rgb(38,37,40);
67
+ border-right-color: rgb(38,37,40);
68
+ -webkit-border-radius: 6px;
69
+ }
70
+
71
+ ::-webkit-scrollbar-track {
72
+ background-color: rgb(56,55,58);
73
+ }
74
+
75
+ ::-webkit-scrollbar-track-piece {
76
+ background-color: rgb(46,45,48);
77
+ }
78
+
79
+ ::-webkit-scrollbar-thumb:vertical {
80
+ background: url('arrow-up-down.png') no-repeat;
81
+ background-size: 18px 18px;
82
+ background-position: center;
83
+ min-height: 22px;
84
+ min-width: 22px;
85
+ background-color: rgb(56,55,58);
86
+ border-style: solid;
87
+ border-width: 2px;
88
+ border-top-color: rgb(76,76,76);
89
+ border-left-color: rgb(76,76,76);
90
+ border-bottom-color: rgb(38,37,40);
91
+ border-right-color: rgb(38,37,40);
92
+ -webkit-border-radius: 6px;
93
+ }
94
+
95
+ ::-webkit-scrollbar-thumb:horizontal {
96
+ background: url('arrow-left-right.png') no-repeat;
97
+ background-size: 18px 18px;
98
+ background-position: center;
99
+ min-height: 22px;
100
+ min-width: 22px;
101
+ background-color: rgb(56,55,58);
102
+ border-style: solid;
103
+ border-width: 2px;
104
+ border-top-color: rgb(76,76,76);
105
+ border-left-color: rgb(76,76,76);
106
+ border-bottom-color: rgb(38,37,40);
107
+ border-right-color: rgb(38,37,40);
108
+ -webkit-border-radius: 6px;
109
+ }
110
+
111
+ ::-webkit-scrollbar-corner {
112
+ background-color: rgb(56,55,58);
113
+ }
114
+
115
+ .ui-dialog.ui-widget-content {
116
+ background: rgb(42,42,42);
117
+ }
@@ -0,0 +1,117 @@
1
+ /* this targets the default scrollbar (compulsory) */
2
+ ::-webkit-scrollbar {
3
+ width: 42px;
4
+ height: 42px;
5
+ }
6
+
7
+ ::-webkit-scrollbar-button:vertical:decrement {
8
+ background: url('arrow-up.png') no-repeat;
9
+ background-size: 38px 38px;
10
+ background-position: center;
11
+ min-height: 42px;
12
+ min-width: 42px;
13
+ background-color: rgb(56,55,58);
14
+ border-style: solid;
15
+ border-width: 2px;
16
+ border-top-color: rgb(76,76,76);
17
+ border-left-color: rgb(76,76,76);
18
+ border-bottom-color: rgb(38,37,40);
19
+ border-right-color: rgb(38,37,40);
20
+ -webkit-border-radius: 6px;
21
+ }
22
+
23
+ ::-webkit-scrollbar-button:vertical:increment {
24
+ background: url('arrow-down.png') no-repeat;
25
+ background-size: 38px 38px;
26
+ background-position: center;
27
+ min-height: 42px;
28
+ min-width: 42px;
29
+ background-color: rgb(56,55,58);
30
+ border-style: solid;
31
+ border-width: 2px;
32
+ border-top-color: rgb(76,76,76);
33
+ border-left-color: rgb(76,76,76);
34
+ border-bottom-color: rgb(38,37,40);
35
+ border-right-color: rgb(38,37,40);
36
+ -webkit-border-radius: 6px;
37
+ }
38
+
39
+ ::-webkit-scrollbar-button:horizontal:decrement {
40
+ background: url('arrow-left.png') no-repeat;
41
+ background-size: 38px 38px;
42
+ background-position: center;
43
+ min-height: 42px;
44
+ min-width: 42px;
45
+ background-color: rgb(56,55,58);
46
+ border-style: solid;
47
+ border-width: 2px;
48
+ border-top-color: rgb(76,76,76);
49
+ border-left-color: rgb(76,76,76);
50
+ border-bottom-color: rgb(38,37,40);
51
+ border-right-color: rgb(38,37,40);
52
+ -webkit-border-radius: 6px;
53
+ }
54
+
55
+ ::-webkit-scrollbar-button:horizontal:increment {
56
+ background: url('arrow-right.png') no-repeat;
57
+ background-size: 38px 38px;
58
+ background-position: center;
59
+ min-height: 42px;
60
+ min-width: 42px;
61
+ background-color: rgb(56,55,58);
62
+ border-style: solid;
63
+ border-width: 2px;
64
+ border-top-color: rgb(76,76,76);
65
+ border-left-color: rgb(76,76,76);
66
+ border-bottom-color: rgb(38,37,40);
67
+ border-right-color: rgb(38,37,40);
68
+ -webkit-border-radius: 6px;
69
+ }
70
+
71
+ ::-webkit-scrollbar-track {
72
+ background-color: rgb(56,55,58);
73
+ }
74
+
75
+ ::-webkit-scrollbar-track-piece {
76
+ background-color: rgb(46,45,48);
77
+ }
78
+
79
+ ::-webkit-scrollbar-thumb:vertical {
80
+ background: url('arrow-up-down.png') no-repeat;
81
+ background-size: 38px 38px;
82
+ background-position: center;
83
+ min-height: 42px;
84
+ min-width: 42px;
85
+ background-color: rgb(56,55,58);
86
+ border-style: solid;
87
+ border-width: 2px;
88
+ border-top-color: rgb(76,76,76);
89
+ border-left-color: rgb(76,76,76);
90
+ border-bottom-color: rgb(38,37,40);
91
+ border-right-color: rgb(38,37,40);
92
+ -webkit-border-radius: 6px;
93
+ }
94
+
95
+ ::-webkit-scrollbar-thumb:horizontal {
96
+ background: url('arrow-left-right.png') no-repeat;
97
+ background-size: 38px 38px;
98
+ background-position: center;
99
+ min-height: 42px;
100
+ min-width: 42px;
101
+ background-color: rgb(56,55,58);
102
+ border-style: solid;
103
+ border-width: 2px;
104
+ border-top-color: rgb(76,76,76);
105
+ border-left-color: rgb(76,76,76);
106
+ border-bottom-color: rgb(38,37,40);
107
+ border-right-color: rgb(38,37,40);
108
+ -webkit-border-radius: 6px;
109
+ }
110
+
111
+ ::-webkit-scrollbar-corner {
112
+ background-color: rgb(56,55,58);
113
+ }
114
+
115
+ .ui-dialog.ui-widget-content {
116
+ background: rgb(42,42,42);
117
+ }