├── .gitignore
├── preview.png
├── www
├── images
│ └── hausautomatisierung_com
│ │ ├── favicon.ico
│ │ ├── power.svg
│ │ ├── tv.svg
│ │ ├── smartphone.svg
│ │ ├── doorhandle.svg
│ │ ├── plug.svg
│ │ ├── off.svg
│ │ ├── on.svg
│ │ ├── heater.svg
│ │ ├── router.svg
│ │ └── weather.svg
├── hausautomatisierung-com
│ └── images
│ │ ├── bg_wrapper.jpg
│ │ └── haus_automatisierung.png
└── pgm2
│ ├── hausautomatisierung_comsvg_defs.svg
│ ├── hausautomatisierung_comsvg_style.css
│ ├── hausautomatisierung_comfloorplanstyle.css
│ ├── hausautomatisierung_com.js
│ └── hausautomatisierung_comstyle.css
├── CHANGED
├── sass
├── hausautomatisierung_comstyle.scss
├── _console.scss
├── _vars.scss
├── _svg.scss
├── _commandref.scss
├── hausautomatisierung_comfloorplanstyle.scss
├── _devicetypes.scss
├── _base.scss
├── _menu.scss
├── _ui.scss
├── hausautomatisierung_comsvg_style.scss
├── unsorted.old
├── _dashboard.scss
└── _content.scss
├── prepare_update.sh
├── config.rb
├── LICENSE
├── controls_ha_theme.txt
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | .sass-cache
2 | .idea
--------------------------------------------------------------------------------
/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klein0r/fhem-style-haus-automatisierung/HEAD/preview.png
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klein0r/fhem-style-haus-automatisierung/HEAD/www/images/hausautomatisierung_com/favicon.ico
--------------------------------------------------------------------------------
/www/hausautomatisierung-com/images/bg_wrapper.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klein0r/fhem-style-haus-automatisierung/HEAD/www/hausautomatisierung-com/images/bg_wrapper.jpg
--------------------------------------------------------------------------------
/www/hausautomatisierung-com/images/haus_automatisierung.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klein0r/fhem-style-haus-automatisierung/HEAD/www/hausautomatisierung-com/images/haus_automatisierung.png
--------------------------------------------------------------------------------
/CHANGED:
--------------------------------------------------------------------------------
1 | FHEM haus-automatisierung.com custom theme last changes:
2 | 2021-03-10
3 | - Compass raus
4 | - Revert "added mobile preview image"
5 | - Revert "Compass is not necessary needed"
6 | - Revert "Not sure about the indention of window scroll event. Lets keep things visible"
7 | - Revert "Responsive design"
8 | - Revert "Compass raus"
9 | - 2.18
10 | - Back to 2.16 style
11 | - Version 2.18
12 | - Removed attribute groups (since fhemweb adopted that feature)
--------------------------------------------------------------------------------
/sass/hausautomatisierung_comstyle.scss:
--------------------------------------------------------------------------------
1 | @import "compass/reset";
2 |
3 | @import url(https://fonts.googleapis.com/css?family=Open+Sans);
4 | @import url(https://fonts.googleapis.com/css?family=Source+Code+Pro);
5 |
6 | /* Author: Matthias Kleine */
7 |
8 | @import 'vars';
9 |
10 | @import 'base';
11 | @import 'content';
12 | @import 'devicetypes';
13 | @import 'console';
14 | @import 'dashboard';
15 | @import 'menu';
16 | @import 'svg';
17 | @import 'ui';
18 | @import 'commandref'
--------------------------------------------------------------------------------
/prepare_update.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #compass compile --force
4 |
5 | rm controls_ha_theme.txt
6 |
7 | echo "MOV ./www/hausautomatisierung-com/custom.js unused" >> controls_ha_theme.txt
8 |
9 | find ./www -type f \( ! -iname ".*" \) -print0 | while IFS= read -r -d '' f;
10 | do
11 | out="UPD "$(stat -f "%Sm" -t "%Y-%m-%d_%T" $f)" "$(stat -f%z $f)" ${f}"
12 | echo ${out//.\//} >> controls_ha_theme.txt
13 | done
14 |
15 | # CHANGED file
16 | echo "FHEM haus-automatisierung.com custom theme last changes:" > CHANGED
17 | echo $(date +"%Y-%m-%d") >> CHANGED
18 | git log -n 10 --reverse --pretty="format:- %s" >> CHANGED
19 |
--------------------------------------------------------------------------------
/sass/_console.scss:
--------------------------------------------------------------------------------
1 | #content {
2 | > button#eventReset,
3 | > button#addRegexpPart {
4 | @include button
5 | }
6 | }
7 |
8 | #console {
9 | bottom: 0;
10 | overflow: auto;
11 | //overflow-x: scroll;
12 | white-space: nowrap;
13 | position: absolute;
14 | top: 2em;
15 | width: 100%;
16 | }
17 |
18 | // Doif-Tools
19 | textarea#console {
20 | white-space: normal;
21 | margin-top: 10px;
22 | margin-bottom: 10px;
23 | border-left: 5px $primary-color solid;
24 | font-size: 100%;
25 | }
26 |
27 | #console, .fhemlog {
28 | color: #fff;
29 | font-family: 'Source Code Pro', monospace;
30 | background: none;
31 | border: none;
32 | }
--------------------------------------------------------------------------------
/sass/_vars.scss:
--------------------------------------------------------------------------------
1 | $version: '2.19';
2 |
3 | $menuWidth: 300px;
4 | $maxWidthContent: 1000px;
5 |
6 | $brightest-background: #fff;
7 |
8 | $primary-color: #e56524;
9 | $primary-color-lt: #676f7a;
10 | $primary-color-dk: #25689e;
11 |
12 | $secondary-color: #676f7a;
13 | $odd-color: #f5f6f9;
14 |
15 | $default-fontsize: 13px;
16 | $large-fontsize: 16px;
17 |
18 | @mixin button {
19 | border: 1px $primary-color solid;
20 | border-radius: 0;
21 | color: $primary-color;
22 | padding: 1px 10px;
23 | background: transparent;
24 | font-size: $large-fontsize;
25 | }
26 |
27 | @mixin button-large {
28 | @include button;
29 | height: 24px;
30 | }
31 |
32 | @mixin textfield {
33 | border: 1px $primary-color solid;
34 | color: #555;
35 | background: transparent;
36 | font-size: $large-fontsize;
37 | height: 20px;
38 | margin-left: 5px;
39 | margin-right: 5px;
40 | }
--------------------------------------------------------------------------------
/config.rb:
--------------------------------------------------------------------------------
1 | require 'compass/import-once/activate'
2 | # Require any additional compass plugins here.
3 |
4 | # Set this to the root of your project when deployed:
5 | http_path = "/"
6 | css_dir = "www/pgm2"
7 | sass_dir = "sass"
8 | images_dir = "www/hausautomatisierung-com/images"
9 | javascripts_dir = "javascripts"
10 |
11 | # You can select your preferred output style here (can be overridden via the command line):
12 | # output_style = :expanded or :nested or :compact or :compressed
13 | output_style = :compact
14 |
15 | # To enable relative paths to assets via compass helper functions. Uncomment:
16 | # relative_assets = true
17 |
18 | # To disable debugging comments that display the original location of your selectors. Uncomment:
19 | line_comments = false
20 |
21 | # If you prefer the indented syntax, you might want to regenerate this
22 | # project again passing --syntax sass, or you can uncomment this:
23 | # preferred_syntax = :sass
24 | # and then run:
25 | # sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
26 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Matthias Kleine
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/sass/_svg.scss:
--------------------------------------------------------------------------------
1 | svg {
2 | width: 32px;
3 | height: 32px;
4 | vertical-align: middle;
5 |
6 | text.title {
7 | text-transform: none !important;
8 | letter-spacing: 2px !important;
9 | }
10 | }
11 |
12 | svg.on, svg.FS20_on {
13 | fill: $primary-color !important;
14 | }
15 |
16 | // Z-Wave Neighbor-Map
17 | #ZWDongleNrSVG {
18 | background: $odd-color;
19 | margin-bottom: 10px;
20 | margin-top: 10px;
21 | border-left: 5px $primary-color solid;
22 | border-right: 5px $primary-color solid;
23 | box-sizing: border-box;
24 | width: 1000px !important;
25 | }
26 |
27 | svg.zw_nr {
28 | fill: transparent !important;
29 |
30 | height: auto;
31 | width: auto;
32 |
33 | text {
34 | fill: $primary-color;
35 | }
36 |
37 | .col_link {
38 | color: $primary-color;
39 | stroke: $primary-color;
40 | }
41 |
42 | .zwMargin {
43 | stroke: transparent;
44 | color: transparent;
45 | }
46 |
47 | .zwLine {
48 | stroke-width: 1px;
49 | }
50 |
51 | .zwBox {
52 | stroke-width: 2px;
53 | }
54 |
55 | .zwDongle {
56 | stroke-width: 3px;
57 | }
58 | }
59 |
60 | svg:not([fill]):not(.jssvg) {
61 | fill: $secondary-color;
62 | }
--------------------------------------------------------------------------------
/controls_ha_theme.txt:
--------------------------------------------------------------------------------
1 | MOV ./www/hausautomatisierung-com/custom.js unused
2 | UPD 2017-08-17_20:17:57 6623 www/images/hausautomatisierung_com/weather.svg
3 | UPD 2017-10-14_09:47:39 15086 www/images/hausautomatisierung_com/favicon.ico
4 | UPD 2017-08-17_20:17:57 2329 www/images/hausautomatisierung_com/smartphone.svg
5 | UPD 2017-08-17_20:17:57 1802 www/images/hausautomatisierung_com/power.svg
6 | UPD 2017-08-17_20:17:57 3199 www/images/hausautomatisierung_com/off.svg
7 | UPD 2017-08-17_20:17:57 2274 www/images/hausautomatisierung_com/tv.svg
8 | UPD 2017-08-17_20:17:57 4911 www/images/hausautomatisierung_com/heater.svg
9 | UPD 2017-08-17_20:17:57 2727 www/images/hausautomatisierung_com/plug.svg
10 | UPD 2017-08-17_20:17:57 3199 www/images/hausautomatisierung_com/on.svg
11 | UPD 2017-08-17_20:17:57 6250 www/images/hausautomatisierung_com/router.svg
12 | UPD 2017-08-17_20:17:57 2398 www/images/hausautomatisierung_com/doorhandle.svg
13 | UPD 2021-03-10_21:55:46 36573 www/pgm2/hausautomatisierung_comstyle.css
14 | UPD 2021-03-10_21:55:46 6074 www/pgm2/hausautomatisierung_comfloorplanstyle.css
15 | UPD 2019-05-15_08:23:27 2996 www/pgm2/hausautomatisierung_comsvg_defs.svg
16 | UPD 2021-03-10_21:55:51 8504 www/pgm2/hausautomatisierung_com.js
17 | UPD 2021-03-10_21:55:46 5143 www/pgm2/hausautomatisierung_comsvg_style.css
18 | UPD 2017-07-04_22:17:20 20144 www/hausautomatisierung-com/images/haus_automatisierung.png
19 | UPD 2017-07-04_22:17:20 81828 www/hausautomatisierung-com/images/bg_wrapper.jpg
20 |
--------------------------------------------------------------------------------
/sass/_commandref.scss:
--------------------------------------------------------------------------------
1 | #right {
2 |
3 | max-width: 1000px;
4 | width: 100%;
5 |
6 | > h3, > h4 {
7 | font-size: 20px;
8 | text-transform: uppercase;
9 | letter-spacing: 10px;
10 | margin-top: 10px;
11 | }
12 |
13 | > ul, > div, > div > ul, > p {
14 | color: $secondary-color;
15 | background: $brightest-background;
16 | border-collapse: collapse;
17 | border-left: 5px $primary-color solid;
18 | font-family: 'Source Code Pro', monospace !important;
19 | max-width: 995px;
20 | padding: 5px;
21 | width: 100%;
22 |
23 | h3 {
24 | font-size: 16px;
25 | letter-spacing: 10px;
26 | text-transform: uppercase;
27 | font-weight: bold;
28 | }
29 |
30 | dd {
31 | margin-left: 50px;
32 | }
33 |
34 | dt {
35 | margin-left: 25px;
36 | }
37 |
38 | b, strong {
39 | font-weight: bold;
40 | text-transform: uppercase;
41 | }
42 |
43 | p {
44 | margin: 5px 0;
45 | }
46 |
47 | code {
48 | font-family: 'Source Code Pro', monospace;
49 | }
50 |
51 | ul {
52 | list-style-type: square;
53 | margin-left: 20px;
54 |
55 | li {
56 | margin: 10px 0;
57 | }
58 | }
59 |
60 | table {
61 | td {
62 | padding: 5px;
63 | }
64 | }
65 | }
66 |
67 | }
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/power.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/tv.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/smartphone.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/doorhandle.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/plug.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/off.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/on.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/pgm2/hausautomatisierung_comsvg_defs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
55 |
56 |
57 |
58 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/sass/hausautomatisierung_comfloorplanstyle.scss:
--------------------------------------------------------------------------------
1 | @import "compass/reset";
2 |
3 | @import url(https://fonts.googleapis.com/css?family=Open+Sans);
4 | @import url(https://fonts.googleapis.com/css?family=Source+Code+Pro);
5 |
6 | @import 'vars';
7 | @import 'base';
8 |
9 | body {
10 | color: $primary-color;
11 | }
12 |
13 | #logo {
14 | top: 0;
15 | right: 40px;
16 | }
17 |
18 | #menu {
19 | position: absolute;
20 | top: 0;
21 | right: 0;
22 | margin-right: 20px;
23 | margin-top: 140px;
24 | width: 260px;
25 | z-index: 9999;
26 |
27 | table {
28 | border-collapse: collapse;
29 | border-radius: 0;
30 | width: 100%;
31 | }
32 |
33 | a {
34 | background: $brightest-background;
35 | color: $secondary-color;
36 | display: block;
37 | padding: 10px 15px;
38 | position: relative;
39 | z-index: 9999;
40 | line-height: 15px;
41 | }
42 | }
43 |
44 | #backimg {
45 | background: $brightest-background;
46 | position: absolute;
47 | top: 10px;
48 | left: 10px;
49 | width: auto !important;
50 | height: auto !important;
51 | }
52 |
53 | #fpmenu.fp_arrange {
54 | line-height: 35px;
55 | background: $brightest-background;
56 | padding: 10px;
57 | position: absolute;
58 | bottom: 20px;
59 | right: 20px;
60 | z-index: 9999;
61 |
62 | input[type=submit] {
63 | border: 1px $primary-color solid;
64 | border-radius: 0;
65 | color: $primary-color;
66 | padding: 1px 10px;
67 | background: transparent;
68 | font-size: $large-fontsize;
69 | height: 24px;
70 | }
71 |
72 | input[disabled] {
73 | background: #ccc !important;
74 | }
75 |
76 | input[type="text"] {
77 | border: 1px $primary-color solid;
78 | color: #555;
79 | background: transparent;
80 | font-size: $large-fontsize;
81 | height: 20px;
82 | margin-left: 5px;
83 | margin-right: 5px;
84 | }
85 |
86 | select {
87 | background-image: linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%), linear-gradient(to right, #ccc, #ccc);
88 | background-position: calc(100% - 20px) calc(0.5em),calc(100% - 15px) calc(0.5em),calc(100% - 2.5em) 0.2em;
89 | background-size: 5px 5px, 5px 5px, 1px 0.9em;
90 | background-repeat: no-repeat;
91 |
92 | border: 1px $primary-color solid;
93 | border-radius: 0;
94 | color: $primary-color;
95 | font-size: $large-fontsize;
96 | line-height: 20px;
97 | height: 24px;
98 | margin-left: 5px;
99 | margin-right: 5px;
100 | padding: 0 20px 0 10px;
101 | min-width: 200px;
102 | }
103 | }
104 |
105 | .devicename {
106 | > td {
107 | font-weight: bold;
108 | }
109 | }
110 |
111 | .devicestate {
112 | > td {
113 | text-align: center;
114 | }
115 | }
116 |
117 | .devicecommands {
118 | font-size: 14px;
119 | text-align: center;
120 | }
121 |
122 | .devicetimestamp {
123 | font-size: 10px;
124 | text-align: center;
125 | }
126 |
127 | svg {
128 | height: 32px;
129 | width: 32px;
130 | margin: 5px;
131 | }
--------------------------------------------------------------------------------
/sass/_devicetypes.scss:
--------------------------------------------------------------------------------
1 | #content {
2 |
3 | // abstracttable
4 | .abstract-table {
5 | margin: 10px 0;
6 |
7 | th {
8 | font-weight: bold;
9 | color: $secondary-color;
10 | padding: 10px 2px;
11 | border-bottom: 1px $secondary-color solid;
12 | }
13 | }
14 |
15 | // Zwave
16 | #ZWHelp {
17 | font-size: $default-fontsize !important;
18 | text-transform: none !important;
19 | letter-spacing: normal !important;
20 | background: $brightest-background;
21 | color: $secondary-color;
22 | padding: 5px;
23 | box-sizing: border-box;
24 |
25 | &.makeTable.help:empty {
26 | display: none;
27 | }
28 | }
29 |
30 | // FB_CALLLIST
31 | .fbcalllist.header {
32 | td {
33 | font-weight: bold;
34 | color: $secondary-color;
35 | padding: 10px 2px;
36 | border-bottom: 1px $secondary-color solid;
37 | }
38 | }
39 |
40 | // SONOS
41 | .rc_body {
42 | margin-top: 10px;
43 | }
44 |
45 | // weekdayprofile
46 | div[id^=weekprofile] {
47 | background: $brightest-background;
48 | padding: 5px;
49 |
50 | button {
51 | @include button-large;
52 | }
53 | }
54 |
55 | // ToDoist
56 | .todoist_container {
57 | .col_header {
58 | background: $brightest-background;
59 | }
60 | }
61 |
62 | // calendar
63 | table.calendar {
64 | background: $brightest-background;
65 |
66 | td {
67 | color: $primary-color-lt;
68 | padding: 10px 10px;
69 | }
70 |
71 | tr:nth-child(2n) {
72 | background: $odd-color;
73 | }
74 | }
75 |
76 | // SVG
77 | a#pdisp {
78 | background: #00000061;
79 | color: $primary-color;
80 | border: 1px $primary-color solid;
81 | padding: 2px 10px;
82 | display: inline-block;
83 | margin-top: 10px;
84 | line-height: 20px;
85 | margin-right: 10px;
86 | margin-bottom: 10px;
87 | vertical-align: top;
88 | }
89 |
90 | // search command
91 | #fhemsearch {
92 | color: $primary-color-lt;
93 | margin-top: 10px;
94 | background: $brightest-background;
95 | border-left: 5px $primary-color solid;
96 | border-right: 5px $primary-color solid;
97 | box-sizing: border-box;
98 | padding: 5px;
99 |
100 | > input[type="text"] {
101 | @include textfield;
102 | }
103 | }
104 |
105 | // remotecontrol
106 | .remotecontrol {
107 | .rc_body {
108 | border: 1px $primary-color solid;
109 | background: $primary-color-lt;
110 | margin-bottom: 10px;
111 |
112 | .rc_button {
113 | padding: 5px;
114 | }
115 | }
116 | }
117 |
118 | // Dashboard
119 | #dashboardtoolbar {
120 |
121 | // Text: "Helper:"
122 | td {
123 | padding: 5px;
124 | }
125 |
126 | button {
127 | border: 1px $primary-color solid;
128 | border-radius: 0;
129 | color: $primary-color;
130 | font-size: $large-fontsize;
131 | margin: 5px;
132 | background: transparent;
133 | }
134 | }
135 |
136 | // Floorplan
137 | #fpmenu {
138 | input[type=submit] {
139 | @include button;
140 | }
141 |
142 | input[type="text"] {
143 | @include textfield;
144 | }
145 | }
146 | }
--------------------------------------------------------------------------------
/sass/_base.scss:
--------------------------------------------------------------------------------
1 | body {
2 | background: #354d69 url(../hausautomatisierung-com/images/bg_wrapper.jpg) no-repeat center 0 fixed;
3 | background-size: cover;
4 | background-position: top center;
5 | color: #fff;
6 | font-family: 'Open Sans', sans-serif;
7 | font-size: $default-fontsize;
8 | margin: 0 auto;
9 | padding: 0;
10 | tab-size: 4;
11 | }
12 |
13 | div {
14 | font-family: 'Open Sans', sans-serif !important;
15 | font-size: $default-fontsize !important;
16 | }
17 |
18 | body.dashboard_fullsize #content {
19 | border: none !important;
20 | float: none !important;
21 | height: 100% !important;
22 | overflow: visible !important;
23 | padding: 0 !important;
24 | position: inherit !important;
25 | width: 100% !important;
26 | }
27 |
28 | body.dashboard_fullsize #menuScrollArea,
29 | body.dashboard_fullsize #hdr,
30 | div.ui-dialog div.ui-dialog-titlebar {
31 | display: none;
32 | }
33 |
34 | a {
35 | color: $primary-color;
36 | text-decoration: none;
37 | }
38 |
39 | button.dist {
40 | border: 0;
41 | cursor: pointer;
42 | margin: 10px;
43 | }
44 |
45 | #logo {
46 | background: url(../hausautomatisierung-com/images/haus_automatisierung.png) no-repeat;
47 | height: 120px;
48 | margin-left: 40px;
49 | margin-top: 10px;
50 | position: fixed;
51 | width: 220px;
52 |
53 | .theme-version {
54 | opacity: 0.7;
55 | font-weight: bold;
56 | }
57 |
58 | #clock {
59 | opacity: 0.7;
60 | position: absolute;
61 | font-weight: bold;
62 | right: 0;
63 | top: 0;
64 | }
65 | }
66 |
67 | #content, #right {
68 | bottom: 20px;
69 | position: absolute;
70 | right: 10px;
71 | top: 50px;
72 | }
73 |
74 | #content, #hdr, #right {
75 | left: 320px;
76 | }
77 |
78 | input[type="text"] {
79 | border: 1px #e56524 solid;
80 | background: none;
81 | }
82 |
83 | #hdr {
84 | left: 310px;
85 | position: fixed;
86 | top: 0px;
87 | background: #fffffff0;
88 | padding: 10px;
89 | z-index: 99;
90 | border-radius: 0 0 4px 4px;
91 | box-shadow: 0 3px 3px #11111130;
92 |
93 | .header {
94 | display: inline-block;
95 | }
96 |
97 | input.maininput {
98 | color: $primary-color;
99 | font-size: $large-fontsize;
100 | box-sizing: border-box;
101 |
102 | &:focus {
103 | outline: none;
104 | }
105 | }
106 |
107 | .maininputPopupLink {
108 | background-image: url('data:image/svg+xml;utf8,');
109 | cursor: pointer;
110 | width: 22px;
111 | height: 22px;
112 | display: inline-block;
113 | }
114 |
115 | &.header--hidden{
116 | -webkit-transform: translateY(-110%);
117 | -ms-transform: translateY(-110%);
118 | transform: translateY(-110%);
119 | }
120 | }
121 |
122 | #errmsg {
123 | background: $primary-color;
124 | border-bottom: 3px #fff solid;
125 | border-top: 3px #fff solid;
126 | color: #fff;
127 | font-size: $large-fontsize !important;
128 | font-weight: 700;
129 | left: 0;
130 | padding: 20px;
131 | position: fixed;
132 | top: 10px;
133 | width: 100%;
134 | z-index: 99999;
135 | opacity: 0.8;
136 |
137 | &:after {
138 | content: ' !!!!';
139 | }
140 |
141 | &:before {
142 | content: '!!!! ';
143 | }
144 | }
145 |
146 | embed {
147 | margin-bottom: 10px;
148 | }
149 |
150 | select {
151 | -webkit-appearance: none;
152 | -moz-appearance: none;
153 | appearance: none;
154 | background-color: transparent;
155 | }
156 |
--------------------------------------------------------------------------------
/sass/_menu.scss:
--------------------------------------------------------------------------------
1 | #menu {
2 | margin-left: 20px;
3 | margin-top: 140px;
4 | width: $menuWidth - 40px;
5 | z-index: 9999;
6 |
7 | table {
8 | border-collapse: collapse;
9 | border-radius: 0;
10 | width: 100%;
11 | }
12 |
13 | a {
14 | background: $brightest-background;
15 | color: $secondary-color;
16 | display: block;
17 | padding: 10px 15px;
18 | position: relative;
19 | }
20 |
21 | .menuTree {
22 |
23 | position: relative;
24 |
25 | &.level0 {
26 |
27 | &.closed > td > div > a:after {
28 | width: 35px;
29 | height: 35px;
30 | content: ' ';
31 | position: absolute;
32 | top: 0;
33 | right: 0;
34 | background-image: url('data:image/svg+xml;utf8,') !important;
35 | }
36 |
37 | &.open > td > div > a:after {
38 | width: 35px;
39 | height: 35px;
40 | content: ' ';
41 | position: absolute;
42 | top: 0;
43 | right: 0;
44 | background-image: url('data:image/svg+xml;utf8,') !important;
45 | }
46 |
47 | }
48 |
49 | &.level1 > td > div {
50 | margin-left: 0 !important;
51 | border-left: 5px $primary-color solid;
52 | }
53 |
54 | // Original-Element verstecken.
55 | > td > div > div {
56 | display: none;
57 | }
58 |
59 | }
60 |
61 | table.room {
62 | border: none;
63 | border-spacing: 0;
64 | margin-bottom: 10px;
65 |
66 | .menu_Save_config {
67 | font-weight: bold;
68 | }
69 |
70 | .custom-menu-entry {
71 | color: $primary-color;
72 | }
73 |
74 | img.icon,
75 | svg.icon {
76 | width: 20px;
77 | height: 20px;
78 | margin: 0;
79 | position: absolute;
80 | right: 10px;
81 | top: 7px;
82 | }
83 |
84 | #saveCheck {
85 | margin-top: -33px;
86 | background: transparent;
87 | border-right: 5px $primary-color solid;
88 | border-left: 5px $primary-color solid;
89 | text-indent: -9999px;
90 | margin-left: 220px;
91 | }
92 |
93 | tr.sel {
94 | a {
95 | background: $primary-color;
96 | color: #fff;
97 | }
98 |
99 | svg.icon {
100 | fill: #fff;
101 | }
102 |
103 | td a:after {
104 | border-bottom: 17px solid transparent;
105 | border-left: 13px solid $primary-color;
106 | border-top: 17px solid transparent;
107 | content: " ";
108 | height: 0;
109 | margin-top: -17px;
110 | position: absolute;
111 | right: -13px;
112 | top: 50%;
113 | width: 0;
114 | }
115 | }
116 | }
117 | }
118 |
119 | #menuScrollArea {
120 | height: 100%;
121 | top: 0;
122 | left: 0;
123 | overflow: auto;
124 | position: relative;
125 | width: $menuWidth;
126 | }
127 |
128 | #haToolbar {
129 | color: $secondary-color;
130 | font-family: 'Source Code Pro', monospace !important;
131 | background-color: $brightest-background;
132 | position: fixed;
133 | box-sizing: border-box;
134 | padding: 5px 15px;
135 | bottom: 0;
136 | left: 20px;
137 | min-width: $menuWidth - 40px;
138 | border: 1px $primary-color dashed;
139 | border-bottom: none;
140 | line-height: 25px;
141 |
142 | .toHdr {
143 | cursor: pointer;
144 | }
145 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # FHEM Style: haus-automatisierung.com (v2)
2 |
3 | Mit diesem Style wird die FHEM-Oberfläche etwas anschaulicher - "Look and Feel" sind dabei an das Webdesign der Seite [haus-automatisierung.com](https://haus-automatisierung.com/) angelehnt.
4 |
5 | ## Installation
6 |
7 | 1. Hinzufügen des neuen Themes in Version 2
8 |
9 | ```
10 | update add https://raw.githubusercontent.com/klein0r/fhem-style-haus-automatisierung/version-2/controls_ha_theme.txt
11 | update check ha_theme
12 | update all ha_theme
13 | ```
14 |
15 | 2. Select Style -> hausautomatisierung_com
16 |
17 | 3. Ein paar Anpassungen am Web-Device:
18 |
19 | ```
20 | attr WEB JavaScripts codemirror/fhem_codemirror.js
21 | attr WEB codemirrorParam { "theme": "blackboard", "lineNumbers":true, "lineWrapping": true, "height": "auto", "autocomplete": true }
22 | attr WEB roomIcons Save.config:message_attention
23 | ```
24 |
25 | Einmal speichern und neu laden - fertig.
26 |
27 | ## Entwicklungsumgebung aufsetzen
28 |
29 | **Bitte keine Pull-Requests für CSS-Dateien einreichen, diese werden per SASS generiert.**
30 |
31 | Der Style basiert auf [SASS](https://sass-lang.com/) / [Compass](http://compass-style.org/). So können die einzelnen Bereiche unterteilt werden und der Style wird viel übersichtlicher und leichter zu warten / erweitern.
32 |
33 | Du brauchst:
34 |
35 | - git [Doku](https://git-scm.com/book/de/v1/Los-geht%E2%80%99s-Git-installieren)
36 | - SASS [Doku](https://sass-lang.com/install)
37 | - Compass [Doku](http://compass-style.org/install/)
38 |
39 | Dann die aktuellen Dateien von GitHub holen (oder aus einem eigenen Fork):
40 |
41 | ```
42 | cd /opt/fhem/
43 | git clone -b version-2 git@github.com:klein0r/fhem-style-haus-automatisierung.git
44 | ```
45 |
46 | Dann ein paar Symlinks erstellen:
47 |
48 | ```
49 | ln -s /opt/fhem/fhem-style-haus-automatisierung/www/hausautomatisierung-com /opt/fhem/www/hausautomatisierung-com
50 | ln -s /opt/fhem/fhem-style-haus-automatisierung/www/images/hausautomatisierung_com /opt/fhem/www/images/hausautomatisierung_com
51 | ln -s /opt/fhem/fhem-style-haus-automatisierung/www/pgm2/hausautomatisierung_comfloorplanstyle.css /opt/fhem/www/pgm2/hausautomatisierung_comfloorplanstyle.css
52 | ln -s /opt/fhem/fhem-style-haus-automatisierung/www/pgm2/hausautomatisierung_com.js /opt/fhem/www/pgm2/hausautomatisierung_com.js
53 | ln -s /opt/fhem/fhem-style-haus-automatisierung/www/pgm2/hausautomatisierung_comstyle.css /opt/fhem/www/pgm2/hausautomatisierung_comstyle.css
54 | ln -s /opt/fhem/fhem-style-haus-automatisierung/www/pgm2/hausautomatisierung_comsvg_style.css /opt/fhem/www/pgm2/hausautomatisierung_comsvg_style.css
55 | ```
56 |
57 | SASS wartet auf Änderungen und baut bei Bedarf das CSS neu:
58 |
59 | ```
60 | cd /opt/fhem/fhem-style-haus-automatisierung
61 | compass watch
62 | ```
63 |
64 | Dann einfach die SCSS-Dateien bearbeiten.
65 |
66 | ## Fehler melden
67 |
68 | Bitte [hier](https://github.com/klein0r/fhem-style-haus-automatisierung/issues) einen Issue erstellen
69 |
70 | ## Vorschau
71 |
72 | 
73 |
74 | ## Smart-Home-Icons:
75 |
76 | Thanks @ https://dribbble.com/shots/2084609-Smart-House-Icon-Set-Free
77 |
78 | ## License
79 |
80 | MIT License
81 |
82 | Copyright (c) 2021 Matthias Kleine
83 |
84 | Permission is hereby granted, free of charge, to any person obtaining a copy
85 | of this software and associated documentation files (the "Software"), to deal
86 | in the Software without restriction, including without limitation the rights
87 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
88 | copies of the Software, and to permit persons to whom the Software is
89 | furnished to do so, subject to the following conditions:
90 |
91 | The above copyright notice and this permission notice shall be included in all
92 | copies or substantial portions of the Software.
93 |
94 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
95 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
96 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
97 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
98 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
99 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
100 | SOFTWARE.
101 |
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/heater.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sass/_ui.scss:
--------------------------------------------------------------------------------
1 | .ui-dialog {
2 | background: $brightest-background !important;
3 | border: 2px solid $primary-color !important;
4 | padding: .2em !important;
5 | border-radius: 0 !important;
6 | color: $secondary-color !important;
7 | padding: 0 !important;
8 |
9 | .ui-widget-header {
10 | color: $primary-color-lt;
11 | }
12 |
13 | .CodeMirror {
14 | width: auto;
15 | }
16 |
17 | .slider {
18 | width: 350px;
19 | border: 1px $primary-color solid;
20 | height: 22px;
21 |
22 | .handle {
23 | -webkit-user-select: none; /* Safari 3.1+ */
24 | -moz-user-select: none; /* Firefox 2+ */
25 | -ms-user-select: none; /* IE 10+ */
26 | user-select: none; /* Standard syntax */
27 | background: $primary-color;
28 | color: $odd-color;
29 | cursor: pointer;
30 | position: relative;
31 | text-align: center;
32 | width: 40px;
33 | height: 22px;
34 | line-height: 22px;
35 | }
36 | }
37 |
38 | .colorpicker {
39 | line-height: 30px;
40 | }
41 |
42 | .colorpicker_ct .slider {
43 | background: url(../jscolor/ct_background.svg); background-size: 150px;
44 | }
45 | .colorpicker_ct_mired .slider {
46 | background: url(../jscolor/ct_mired_background.svg); background-size: 150px;
47 | }
48 | .colorpicker_hue .slider {
49 | background: url(../jscolor/hue_background.svg); background-size: 150px;
50 | }
51 | }
52 |
53 | .ui-widget-content {
54 | background: $brightest-background !important;
55 |
56 | fwmenu {
57 | background: $brightest-background;
58 | border: 1px $primary-color solid;
59 | font-size: 100%;
60 | font-weight: 400;
61 | max-width: 600px;
62 | position: absolute;
63 | text-align: left;
64 | z-index: 1005;
65 | }
66 |
67 | pre {
68 | font-family: 'Source Code Pro', monospace !important;
69 | }
70 |
71 | a {
72 | color: $primary-color !important;
73 | text-decoration: none;
74 | }
75 |
76 | caption, .mkTitle {
77 | text-transform: uppercase;
78 | font-size: $large-fontsize !important;
79 | letter-spacing: 10px;
80 | margin: 10px 0;
81 | }
82 |
83 | .makeTable {
84 | margin-bottom: 10px;
85 |
86 | table {
87 | width: 100%;
88 | }
89 |
90 | thead th {
91 | font-weight: bold;
92 | color: $secondary-color;
93 | padding: 10px 2px;
94 | border-bottom: 1px $secondary-color solid;
95 | }
96 |
97 | tbody {
98 | th {
99 | padding-top: 5px;
100 | }
101 | }
102 |
103 | tfoot {
104 | color: $primary-color-lt;
105 |
106 | td {
107 | padding-top: 5px;
108 | }
109 | }
110 |
111 | tr.odd > td,
112 | tr.even > td {
113 | padding: 5px;
114 | }
115 |
116 | .block tr.odd {
117 | background: $odd-color;
118 | }
119 | }
120 |
121 | .detLink {
122 | border: 1px $primary-color solid;
123 | padding: 2px 10px;
124 | display: inline-block;
125 | line-height: 20px;
126 | vertical-align: top;
127 | float: initial !important;
128 |
129 | a {
130 | color: $primary-color;
131 | }
132 | }
133 |
134 | input[type="text"] {
135 | border: 1px $primary-color solid;
136 | color: #555;
137 | background: $brightest-background;
138 | font-size: $large-fontsize;
139 | height: 20px;
140 | margin-left: 5px;
141 | margin-right: 5px;
142 | }
143 | }
144 |
145 | .ui-button {
146 | border-radius: 0 !important;
147 | color: $primary-color !important;
148 | }
149 |
150 | .ui-dialog-titlebar {
151 | display: block !important;
152 | border: none !important;
153 | border-radius: 0 !important;
154 | background: $odd-color !important;
155 | }
156 |
157 | #dashboard {
158 | .ui-widget-content a,
159 | .fhemlog,
160 | #fwmenu li a {
161 | color: $primary-color !important;
162 | }
163 |
164 | .ui-corner-all,
165 | .ui-corner-top,
166 | .ui-corner-right,
167 | .ui-corner-left,
168 | .ui-corner-bottom,
169 |
170 | .ui-corner-bl,
171 | .ui-corner-br,
172 | .ui-corner-tl,
173 | .ui-corner-tr {
174 | border-radius: 0 !important;
175 | border-bottom-right-radius: 0 !important;
176 | border-bottom-left-radius: 0 !important;
177 | border-top-right-radius: 0 !important;
178 | border-top-left-radius: 0 !important;
179 | }
180 | }
--------------------------------------------------------------------------------
/sass/hausautomatisierung_comsvg_style.scss:
--------------------------------------------------------------------------------
1 | @import "compass/reset";
2 |
3 | @import url(https://fonts.googleapis.com/css?family=Open+Sans);
4 | @import url(https://fonts.googleapis.com/css?family=Source+Code+Pro);
5 |
6 | @import 'vars';
7 |
8 | $grid-color: gray;
9 | $plotTextColor: $secondary-color;
10 | $backgroundColor: #fff;
11 |
12 | $svg-color-1: rgba(114,147,203,1);
13 | $svg-color-2: rgba(255,151,76,1);
14 | $svg-color-3: rgba(132,186,91,1);
15 | $svg-color-4: rgba(211,94,96,1);
16 | $svg-color-5: rgba(128,133,133,1);
17 | $svg-color-6: rgba(144,103,167,1);
18 | $svg-color-7: rgba(153,89,89,1);
19 | $svg-color-8: rgba(204,194,16,1);
20 | $svg-color-9: rgba(212,60,158,1);
21 |
22 | svg {
23 | font-family: 'Open Sans', sans-serif;
24 |
25 | .background {
26 | fill: #000;
27 | }
28 |
29 | circle#svgmarker {
30 | color: #278727;
31 | opacity: 0.5;
32 | }
33 |
34 | path.SVGplot {
35 | stroke: black;
36 | fill: none;
37 | }
38 |
39 | rect.SVGplot {
40 | stroke: black;
41 | fill: none;
42 | }
43 |
44 | polyline.SVGplot {
45 | stroke: gray;
46 | fill: none;
47 | }
48 |
49 | .border {
50 | stroke: $primary-color;
51 | fill: $backgroundColor;
52 | }
53 |
54 | .vgrid {
55 | stroke: $grid-color;
56 | stroke-dasharray: 2, 6;
57 | }
58 |
59 | .hgrid {
60 | stroke: $grid-color;
61 | stroke-dasharray: 2, 6;
62 | }
63 |
64 | .pasted {
65 | stroke: black;
66 | stroke-dasharray: 1, 1;
67 | }
68 |
69 | text {
70 | stroke: none !important;
71 | fill: $plotTextColor;
72 | font-size: 11px;
73 |
74 | &.title {
75 | fill: $plotTextColor;
76 | font-size: 16px;
77 | text-transform: uppercase;
78 | letter-spacing: 10px;
79 | }
80 |
81 | &.legend {
82 | cursor: pointer;
83 | }
84 | }
85 | }
86 |
87 | .SVGplot.l0 { stroke: $svg-color-1; }
88 | .SVGplot.l1 { stroke: $svg-color-2; }
89 | .SVGplot.l2 { stroke: $svg-color-3; }
90 | .SVGplot.l3 { stroke: $svg-color-4; }
91 | .SVGplot.l4 { stroke: $svg-color-5; }
92 | .SVGplot.l5 { stroke: $svg-color-6; }
93 | .SVGplot.l6 { stroke: $svg-color-7; }
94 | .SVGplot.l7 { stroke: $svg-color-8; }
95 | .SVGplot.l8 { stroke: $svg-color-9; }
96 | .SVGplot.l0fill { stroke: $svg-color-1; fill: rgba(114,147,203,0.3); }
97 | .SVGplot.l1fill { stroke: $svg-color-2; fill: rgba(255,151,76,0.3); }
98 | .SVGplot.l2fill { stroke: $svg-color-3; fill: rgba(132,186,91,0.3); }
99 | .SVGplot.l3fill { stroke: $svg-color-4; fill: rgba(211,94,96,0.3); }
100 | .SVGplot.l4fill { stroke: $svg-color-5; fill: rgba(128,133,133,0.3); }
101 | .SVGplot.l5fill { stroke: $svg-color-6; fill: rgba(144,103,167,0.3); }
102 | .SVGplot.l6fill { stroke: $svg-color-7; fill: rgba(153,89,89,0.3); }
103 | .SVGplot.l7fill { stroke: $svg-color-8; fill: rgba(204,194,16,0.3); }
104 | .SVGplot.l8fill { stroke: $svg-color-9; fill: rgba(212,60,158,0.3); }
105 | .SVGplot.l0dot { stroke: $svg-color-1; stroke-dasharray: 2,4; }
106 | .SVGplot.l1dot { stroke: $svg-color-2; stroke-dasharray: 2,4; }
107 | .SVGplot.l2dot { stroke: $svg-color-3; stroke-dasharray: 2,4; }
108 | .SVGplot.l3dot { stroke: $svg-color-4; stroke-dasharray: 2,4; }
109 | .SVGplot.l4dot { stroke: $svg-color-5; stroke-dasharray: 2,4; }
110 | .SVGplot.l5dot { stroke: $svg-color-6; stroke-dasharray: 2,4; }
111 | .SVGplot.l6dot { stroke: $svg-color-7; stroke-dasharray: 2,4; }
112 | .SVGplot.l7dot { stroke: $svg-color-8; stroke-dasharray: 2,4; }
113 | .SVGplot.l8dot { stroke: $svg-color-9; stroke-dasharray: 2,4; }
114 | .SVGplot.l0fill_stripe { stroke: $svg-color-1; fill: url(#gr0_stripe); }
115 | .SVGplot.l1fill_stripe { stroke: $svg-color-2; fill: url(#gr1_stripe); }
116 | .SVGplot.l0fill_gyr { stroke: $svg-color-1; fill: url(#gr0_gyr); }
117 |
118 | text.SVGplot.l0 { stroke: none; fill: $svg-color-1; }
119 | text.SVGplot.l1 { stroke: none; fill: $svg-color-2; }
120 | text.SVGplot.l2 { stroke: none; fill: $svg-color-3; }
121 | text.SVGplot.l3 { stroke: none; fill: $svg-color-4; }
122 | text.SVGplot.l4 { stroke: none; fill: $svg-color-5; }
123 | text.SVGplot.l5 { stroke: none; fill: $svg-color-6; }
124 | text.SVGplot.l6 { stroke: none; fill: $svg-color-7; }
125 | text.SVGplot.l7 { stroke: none; fill: $svg-color-8; }
126 | text.SVGplot.l8 { stroke: none; fill: $svg-color-9; }
127 | text.SVGplot.l0fill { stroke: none; fill: $svg-color-1; }
128 | text.SVGplot.l1fill { stroke: none; fill: $svg-color-2; }
129 | text.SVGplot.l2fill { stroke: none; fill: $svg-color-3; }
130 | text.SVGplot.l3fill { stroke: none; fill: $svg-color-4; }
131 | text.SVGplot.l4fill { stroke: none; fill: $svg-color-5; }
132 | text.SVGplot.l5fill { stroke: none; fill: $svg-color-6; }
133 | text.SVGplot.l6fill { stroke: none; fill: $svg-color-7; }
134 | text.SVGplot.l7fill { stroke: none; fill: $svg-color-8; }
135 | text.SVGplot.l8fill { stroke: none; fill: $svg-color-9; }
136 | text.SVGplot.l0dot { stroke: none; fill: $svg-color-1; }
137 | text.SVGplot.l1dot { stroke: none; fill: $svg-color-2; }
138 | text.SVGplot.l2dot { stroke: none; fill: $svg-color-3; }
139 | text.SVGplot.l3dot { stroke: none; fill: $svg-color-4; }
140 | text.SVGplot.l4dot { stroke: none; fill: $svg-color-5; }
141 | text.SVGplot.l5dot { stroke: none; fill: $svg-color-6; }
142 | text.SVGplot.l6dot { stroke: none; fill: $svg-color-7; }
143 | text.SVGplot.l7dot { stroke: none; fill: $svg-color-8; }
144 | text.SVGplot.l8dot { stroke: none; fill: $svg-color-9; }
145 | text.SVGplot.l0fill_stripe {stroke: none; fill: $svg-color-1; }
146 | text.SVGplot.l1fill_stripe {stroke: none; fill: $svg-color-2; }
147 | text.SVGplot.l0fill_gyr {stroke: none; fill: $svg-color-1; }
148 |
--------------------------------------------------------------------------------
/www/pgm2/hausautomatisierung_comsvg_style.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=Open+Sans);
2 | @import url(https://fonts.googleapis.com/css?family=Source+Code+Pro);
3 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font: inherit; font-size: 100%; vertical-align: baseline; }
4 |
5 | html { line-height: 1; }
6 |
7 | ol, ul { list-style: none; }
8 |
9 | table { border-collapse: collapse; border-spacing: 0; }
10 |
11 | caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; }
12 |
13 | q, blockquote { quotes: none; }
14 | q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; }
15 |
16 | a img { border: none; }
17 |
18 | article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
19 |
20 | svg { font-family: 'Open Sans', sans-serif; }
21 | svg .background { fill: #000; }
22 | svg circle#svgmarker { color: #278727; opacity: 0.5; }
23 | svg path.SVGplot { stroke: black; fill: none; }
24 | svg rect.SVGplot { stroke: black; fill: none; }
25 | svg polyline.SVGplot { stroke: gray; fill: none; }
26 | svg .border { stroke: #e56524; fill: #fff; }
27 | svg .vgrid { stroke: gray; stroke-dasharray: 2, 6; }
28 | svg .hgrid { stroke: gray; stroke-dasharray: 2, 6; }
29 | svg .pasted { stroke: black; stroke-dasharray: 1, 1; }
30 | svg text { stroke: none !important; fill: #676f7a; font-size: 11px; }
31 | svg text.title { fill: #676f7a; font-size: 16px; text-transform: uppercase; letter-spacing: 10px; }
32 | svg text.legend { cursor: pointer; }
33 |
34 | .SVGplot.l0 { stroke: #7293cb; }
35 |
36 | .SVGplot.l1 { stroke: #ff974c; }
37 |
38 | .SVGplot.l2 { stroke: #84ba5b; }
39 |
40 | .SVGplot.l3 { stroke: #d35e60; }
41 |
42 | .SVGplot.l4 { stroke: #808585; }
43 |
44 | .SVGplot.l5 { stroke: #9067a7; }
45 |
46 | .SVGplot.l6 { stroke: #995959; }
47 |
48 | .SVGplot.l7 { stroke: #ccc210; }
49 |
50 | .SVGplot.l8 { stroke: #d43c9e; }
51 |
52 | .SVGplot.l0fill { stroke: #7293cb; fill: rgba(114, 147, 203, 0.3); }
53 |
54 | .SVGplot.l1fill { stroke: #ff974c; fill: rgba(255, 151, 76, 0.3); }
55 |
56 | .SVGplot.l2fill { stroke: #84ba5b; fill: rgba(132, 186, 91, 0.3); }
57 |
58 | .SVGplot.l3fill { stroke: #d35e60; fill: rgba(211, 94, 96, 0.3); }
59 |
60 | .SVGplot.l4fill { stroke: #808585; fill: rgba(128, 133, 133, 0.3); }
61 |
62 | .SVGplot.l5fill { stroke: #9067a7; fill: rgba(144, 103, 167, 0.3); }
63 |
64 | .SVGplot.l6fill { stroke: #995959; fill: rgba(153, 89, 89, 0.3); }
65 |
66 | .SVGplot.l7fill { stroke: #ccc210; fill: rgba(204, 194, 16, 0.3); }
67 |
68 | .SVGplot.l8fill { stroke: #d43c9e; fill: rgba(212, 60, 158, 0.3); }
69 |
70 | .SVGplot.l0dot { stroke: #7293cb; stroke-dasharray: 2,4; }
71 |
72 | .SVGplot.l1dot { stroke: #ff974c; stroke-dasharray: 2,4; }
73 |
74 | .SVGplot.l2dot { stroke: #84ba5b; stroke-dasharray: 2,4; }
75 |
76 | .SVGplot.l3dot { stroke: #d35e60; stroke-dasharray: 2,4; }
77 |
78 | .SVGplot.l4dot { stroke: #808585; stroke-dasharray: 2,4; }
79 |
80 | .SVGplot.l5dot { stroke: #9067a7; stroke-dasharray: 2,4; }
81 |
82 | .SVGplot.l6dot { stroke: #995959; stroke-dasharray: 2,4; }
83 |
84 | .SVGplot.l7dot { stroke: #ccc210; stroke-dasharray: 2,4; }
85 |
86 | .SVGplot.l8dot { stroke: #d43c9e; stroke-dasharray: 2,4; }
87 |
88 | .SVGplot.l0fill_stripe { stroke: #7293cb; fill: url(#gr0_stripe); }
89 |
90 | .SVGplot.l1fill_stripe { stroke: #ff974c; fill: url(#gr1_stripe); }
91 |
92 | .SVGplot.l0fill_gyr { stroke: #7293cb; fill: url(#gr0_gyr); }
93 |
94 | text.SVGplot.l0 { stroke: none; fill: #7293cb; }
95 |
96 | text.SVGplot.l1 { stroke: none; fill: #ff974c; }
97 |
98 | text.SVGplot.l2 { stroke: none; fill: #84ba5b; }
99 |
100 | text.SVGplot.l3 { stroke: none; fill: #d35e60; }
101 |
102 | text.SVGplot.l4 { stroke: none; fill: #808585; }
103 |
104 | text.SVGplot.l5 { stroke: none; fill: #9067a7; }
105 |
106 | text.SVGplot.l6 { stroke: none; fill: #995959; }
107 |
108 | text.SVGplot.l7 { stroke: none; fill: #ccc210; }
109 |
110 | text.SVGplot.l8 { stroke: none; fill: #d43c9e; }
111 |
112 | text.SVGplot.l0fill { stroke: none; fill: #7293cb; }
113 |
114 | text.SVGplot.l1fill { stroke: none; fill: #ff974c; }
115 |
116 | text.SVGplot.l2fill { stroke: none; fill: #84ba5b; }
117 |
118 | text.SVGplot.l3fill { stroke: none; fill: #d35e60; }
119 |
120 | text.SVGplot.l4fill { stroke: none; fill: #808585; }
121 |
122 | text.SVGplot.l5fill { stroke: none; fill: #9067a7; }
123 |
124 | text.SVGplot.l6fill { stroke: none; fill: #995959; }
125 |
126 | text.SVGplot.l7fill { stroke: none; fill: #ccc210; }
127 |
128 | text.SVGplot.l8fill { stroke: none; fill: #d43c9e; }
129 |
130 | text.SVGplot.l0dot { stroke: none; fill: #7293cb; }
131 |
132 | text.SVGplot.l1dot { stroke: none; fill: #ff974c; }
133 |
134 | text.SVGplot.l2dot { stroke: none; fill: #84ba5b; }
135 |
136 | text.SVGplot.l3dot { stroke: none; fill: #d35e60; }
137 |
138 | text.SVGplot.l4dot { stroke: none; fill: #808585; }
139 |
140 | text.SVGplot.l5dot { stroke: none; fill: #9067a7; }
141 |
142 | text.SVGplot.l6dot { stroke: none; fill: #995959; }
143 |
144 | text.SVGplot.l7dot { stroke: none; fill: #ccc210; }
145 |
146 | text.SVGplot.l8dot { stroke: none; fill: #d43c9e; }
147 |
148 | text.SVGplot.l0fill_stripe { stroke: none; fill: #7293cb; }
149 |
150 | text.SVGplot.l1fill_stripe { stroke: none; fill: #ff974c; }
151 |
152 | text.SVGplot.l0fill_gyr { stroke: none; fill: #7293cb; }
153 |
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/router.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/pgm2/hausautomatisierung_comfloorplanstyle.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=Open+Sans);
2 | @import url(https://fonts.googleapis.com/css?family=Source+Code+Pro);
3 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font: inherit; font-size: 100%; vertical-align: baseline; }
4 |
5 | html { line-height: 1; }
6 |
7 | ol, ul { list-style: none; }
8 |
9 | table { border-collapse: collapse; border-spacing: 0; }
10 |
11 | caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; }
12 |
13 | q, blockquote { quotes: none; }
14 | q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; }
15 |
16 | a img { border: none; }
17 |
18 | article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
19 |
20 | body { background: #354d69 url(../hausautomatisierung-com/images/bg_wrapper.jpg) no-repeat center 0 fixed; background-size: cover; background-position: top center; color: #fff; font-family: 'Open Sans', sans-serif; font-size: 13px; margin: 0 auto; padding: 0; tab-size: 4; }
21 |
22 | div { font-family: 'Open Sans', sans-serif !important; font-size: 13px !important; }
23 |
24 | body.dashboard_fullsize #content { border: none !important; float: none !important; height: 100% !important; overflow: visible !important; padding: 0 !important; position: inherit !important; width: 100% !important; }
25 |
26 | body.dashboard_fullsize #menuScrollArea, body.dashboard_fullsize #hdr, div.ui-dialog div.ui-dialog-titlebar { display: none; }
27 |
28 | a { color: #e56524; text-decoration: none; }
29 |
30 | button.dist { border: 0; cursor: pointer; margin: 10px; }
31 |
32 | #logo { background: url(../hausautomatisierung-com/images/haus_automatisierung.png) no-repeat; height: 120px; margin-left: 40px; margin-top: 10px; position: fixed; width: 220px; }
33 | #logo .theme-version { opacity: 0.7; font-weight: bold; }
34 | #logo #clock { opacity: 0.7; position: absolute; font-weight: bold; right: 0; top: 0; }
35 |
36 | #content, #right { bottom: 20px; position: absolute; right: 10px; top: 50px; }
37 |
38 | #content, #hdr, #right { left: 320px; }
39 |
40 | input[type="text"] { border: 1px #e56524 solid; background: none; }
41 |
42 | #hdr { left: 310px; position: fixed; top: 0px; background: #fffffff0; padding: 10px; z-index: 99; border-radius: 0 0 4px 4px; box-shadow: 0 3px 3px #11111130; }
43 | #hdr .header { display: inline-block; }
44 | #hdr input.maininput { color: #e56524; font-size: 16px; box-sizing: border-box; }
45 | #hdr input.maininput:focus { outline: none; }
46 | #hdr .maininputPopupLink { background-image: url('data:image/svg+xml;utf8,'); cursor: pointer; width: 22px; height: 22px; display: inline-block; }
47 | #hdr.header--hidden { -webkit-transform: translateY(-110%); -ms-transform: translateY(-110%); transform: translateY(-110%); }
48 |
49 | #errmsg { background: #e56524; border-bottom: 3px #fff solid; border-top: 3px #fff solid; color: #fff; font-size: 16px !important; font-weight: 700; left: 0; padding: 20px; position: fixed; top: 10px; width: 100%; z-index: 99999; opacity: 0.8; }
50 | #errmsg:after { content: ' !!!!'; }
51 | #errmsg:before { content: '!!!! '; }
52 |
53 | embed { margin-bottom: 10px; }
54 |
55 | select { -webkit-appearance: none; -moz-appearance: none; appearance: none; background-color: transparent; }
56 |
57 | body { color: #e56524; }
58 |
59 | #logo { top: 0; right: 40px; }
60 |
61 | #menu { position: absolute; top: 0; right: 0; margin-right: 20px; margin-top: 140px; width: 260px; z-index: 9999; }
62 | #menu table { border-collapse: collapse; border-radius: 0; width: 100%; }
63 | #menu a { background: #fff; color: #676f7a; display: block; padding: 10px 15px; position: relative; z-index: 9999; line-height: 15px; }
64 |
65 | #backimg { background: #fff; position: absolute; top: 10px; left: 10px; width: auto !important; height: auto !important; }
66 |
67 | #fpmenu.fp_arrange { line-height: 35px; background: #fff; padding: 10px; position: absolute; bottom: 20px; right: 20px; z-index: 9999; }
68 | #fpmenu.fp_arrange input[type=submit] { border: 1px #e56524 solid; border-radius: 0; color: #e56524; padding: 1px 10px; background: transparent; font-size: 16px; height: 24px; }
69 | #fpmenu.fp_arrange input[disabled] { background: #ccc !important; }
70 | #fpmenu.fp_arrange input[type="text"] { border: 1px #e56524 solid; color: #555; background: transparent; font-size: 16px; height: 20px; margin-left: 5px; margin-right: 5px; }
71 | #fpmenu.fp_arrange select { background-image: linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%), linear-gradient(to right, #ccc, #ccc); background-position: calc(100% - 20px) calc(0.5em), calc(100% - 15px) calc(0.5em), calc(100% - 2.5em) 0.2em; background-size: 5px 5px, 5px 5px, 1px 0.9em; background-repeat: no-repeat; border: 1px #e56524 solid; border-radius: 0; color: #e56524; font-size: 16px; line-height: 20px; height: 24px; margin-left: 5px; margin-right: 5px; padding: 0 20px 0 10px; min-width: 200px; }
72 |
73 | .devicename > td { font-weight: bold; }
74 |
75 | .devicestate > td { text-align: center; }
76 |
77 | .devicecommands { font-size: 14px; text-align: center; }
78 |
79 | .devicetimestamp { font-size: 10px; text-align: center; }
80 |
81 | svg { height: 32px; width: 32px; margin: 5px; }
82 |
--------------------------------------------------------------------------------
/www/images/hausautomatisierung_com/weather.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sass/unsorted.old:
--------------------------------------------------------------------------------
1 |
2 |
3 | #fpmenu input[type="submit"] {
4 | width: 80px;
5 | }
6 |
7 | #fpmenu select {
8 | margin: 5px 10px;
9 | width: 500px;
10 | }
11 |
12 | #fpmenu select:last-child {
13 | margin-bottom: 0;
14 | }
15 |
16 | #right {
17 | bottom: 5px;
18 | left: 180px;
19 | position: absolute;
20 | right: 5px;
21 | top: 20px;
22 | }
23 |
24 | .col2 {
25 | text-align: center;
26 | }
27 |
28 | .colorpicker_ct .slider {
29 | background: url(../jscolor/ct_background.svg);
30 | }
31 |
32 | .colorpicker_ct_mired .slider {
33 | background: url(../jscolor/ct_mired_background.svg);
34 | }
35 |
36 | .colorpicker_hue .slider {
37 | background: url(../jscolor/hue_background.svg);
38 | }
39 |
40 | .dashboard_widgetheader svg {
41 | margin-right: 5px;
42 | }
43 |
44 | .devType {
45 | padding-top: 20px;
46 | }
47 |
48 | .downText {
49 | margin-top: 2px;
50 | }
51 |
52 | .evo-cHist {
53 | padding: 3px;
54 | }
55 |
56 | .evo-cHist div {
57 | border: solid 1px silver;
58 | cursor: pointer;
59 | float: left;
60 | height: 10px;
61 | margin: 5px;
62 | padding: 3px;
63 | width: 10px;
64 | }
65 |
66 | .evo-color {
67 | padding: 1px 3px 0 4px;
68 | width: 94px;
69 | }
70 |
71 | .evo-color div {
72 | border: solid 1px gray;
73 | border-bottom: solid 1px silver;
74 | border-right: solid 1px silver;
75 | float: left;
76 | height: 10px;
77 | margin-bottom: 5px;
78 | padding: 3px;
79 | width: 10px;
80 | }
81 |
82 | .evo-color span {
83 | float: left;
84 | font-size: 15px;
85 | margin: 1px 0 4px 3px;
86 | }
87 |
88 | .evo-colorbox-ie {
89 | font-size: 8px;
90 | padding: 3px 9px !important;
91 | }
92 |
93 | .evo-colorind {
94 | position: relative;
95 | top: 2px;
96 | }
97 |
98 | .evo-colorind, .evo-colorind-ie, .evo-colorind-ff {
99 | border: solid 1px #c3c3c3;
100 | float: right;
101 | height: 20px;
102 | margin-top: 3px;
103 | width: 20px;
104 | }
105 |
106 | .evo-colorind-ie {
107 | position: relative;
108 | top: -23px;
109 | }
110 |
111 | .evo-colortxt-ie {
112 | position: relative;
113 | top: -6px;
114 | }
115 |
116 | .evo-more {
117 | font-size: smaller;
118 | padding: 4px 5px;
119 | }
120 |
121 | .evo-palcenter {
122 | padding: 5px;
123 | text-align: center;
124 | }
125 |
126 | .evo-palette div.sep {
127 | height: 3px;
128 | }
129 |
130 | .evo-palette td, .evo-palette-ie td {
131 | border: solid 1px silver;
132 | cursor: pointer;
133 | font-size: 1px;
134 | padding: 7px;
135 | }
136 |
137 | .evo-palette th, .evo-palette-ie th {
138 | border: 0;
139 | font-weight: 400;
140 | padding: 5px 3px;
141 | text-align: left;
142 | }
143 |
144 | .evo-palette tr.bottom td {
145 | border-top: 0;
146 | }
147 |
148 | .evo-palette tr.in td {
149 | border-bottom: 0;
150 | border-top: 0;
151 | }
152 |
153 | .evo-palette tr.top td {
154 | border-bottom: 0;
155 | }
156 |
157 | .evo-palette, .evo-palette-ie {
158 | border-collapse: expression(separate',cellSpacing='2px);
159 | border-spacing: 4px 0;
160 | }
161 |
162 | .evo-palette2 td {
163 | padding: 6px 7px;
164 | }
165 |
166 | .evo-palette2 td, .evo-palette2-ie td {
167 | cursor: pointer;
168 | font-size: 1px;
169 | }
170 |
171 | .evo-palette2, .evo-palette2-ie {
172 | border-collapse: collapse;
173 | margin: auto;
174 | }
175 |
176 | .evo-palette2-ie td, table.block td > div, table.block td > a {
177 | padding: 5px;
178 | }
179 |
180 | .evo-pointer {
181 | cursor: pointer;
182 | position: absolute;
183 | visibility: hidden;
184 | }
185 |
186 | .evo-pop {
187 | -index: 10000;
188 | border: 1px solid;
189 | padding: 3px 3px 0;
190 | width: 204px;
191 | }
192 |
193 | .evo-pop-ie {
194 | padding: 3px;
195 | width: 212px;
196 | z-index: 10000;
197 | }
198 |
199 | .evo-pop:after, .evo-pop-ie:after, .evo-colorind:after, .evo-colorind-ie:after, .evo-colorind-ff:after, .evo-color span:after, .evo-cHist:after {
200 | clear: both;
201 | content: ".";
202 | display: block;
203 | font-size: 0;
204 | height: 0;
205 | visibility: hidden;
206 | }
207 |
208 | .evo-sep {
209 | font-size: 0;
210 | height: 10px;
211 | }
212 |
213 | .rc_body {
214 | background: #C8C8B0;
215 | border-color: gray;
216 | border-style: solid;
217 | border-width: 2px;
218 | font-size: 6px;
219 | padding: 5px;
220 | }
221 |
222 | .rc_button {
223 | padding: 5px 7px;
224 | }
225 |
226 | .rc_button img {
227 | border-color: transparent;
228 | border-style: solid;
229 | border-width: 1px;
230 | }
231 |
232 | .rc_button img:active {
233 | border-color: gray;
234 | }
235 |
236 | .set .set {
237 | margin-bottom: 2px;
238 | margin-top: 3px;
239 | }
240 |
241 |
242 |
243 | .ui-button-text {
244 | color: #555 !important;
245 | font-weight: 400 !important;
246 | }
247 |
248 | .ui-corner-bottom, .ui-corner-top, .ui-corner-left, .ui-corner-right, .ui-corner-all, #dashboard .block.wide {
249 | border-radius: 0 !important;
250 | }
251 |
252 | .ui-state-highlight {
253 | height: 1.1em;
254 | line-height: 1.1em;
255 | }
256 |
257 | .ui-state-hover {
258 | background: #fff !important;
259 | border: 1px solid $primary-color !important;
260 | cursor: pointer;
261 | }
262 |
263 | .ui-widget {
264 | font-family: Arial, sans-serif !important;
265 | }
266 |
267 | .ui-widget-overlay {
268 | filter: Alpha(Opacity=30);
269 | height: 100%;
270 | left: 0;
271 | opacity: .7;
272 | position: fixed;
273 | top: 0;
274 | width: 100%;
275 | }
276 |
277 | a.evo-hist {
278 | margin-left: 6px;
279 | }
280 |
281 | div#svgmarker {
282 | background: #FFFFE7;
283 | border: 2px solid #278727;
284 | border-radius: 4px;
285 | color: #278727;
286 | max-width: 600px;
287 | padding: 6px 10px;
288 | position: absolute;
289 | text-align: left;
290 | z-index: 1005;
291 | }
292 |
293 | div.block {
294 | background: #F8F8E0;
295 | border: 1px solid gray;
296 | padding: .7em;
297 | }
298 |
299 | div.dist {
300 | padding-top: .3em;
301 | }
302 |
303 | div.ui-widget-content {
304 | background: #fff;
305 | }
306 |
307 | div.ui-widget-content a {
308 | color: #555 !important;
309 | }
310 |
311 | h2, h3, h4 {
312 | color: $primary-color;
313 | font-family: Arial, Sans-serif;
314 | line-height: 1.3;
315 | margin-top: 0;
316 | }
317 |
318 | img {
319 | border-style: none;
320 | }
321 |
322 | input {
323 | font-family: Arial, sans-serif;
324 | font-size: 16px;
325 | }
326 |
327 | pre {
328 | white-space: pre-wrap;
329 | }
330 |
331 | pre.log {
332 | background: #fff;
333 | color: #000;
334 | padding: 10px;
335 | }
336 |
337 | select [value^=l1] {
338 | color: green;
339 | }
340 |
341 | select [value^=l2] {
342 | color: blue;
343 | }
344 |
345 | select [value^=l3] {
346 | color: #FFC0CB;
347 | }
348 |
349 | select [value^=l4] {
350 | color: #A52A2A;
351 | }
352 |
353 | select [value^=l5] {
354 | color: #000;
355 | }
356 |
357 | select [value^=l6] {
358 | color: olive;
359 | }
360 |
361 | select [value^=l7] {
362 | color: gray;
363 | }
364 |
365 | select [value^=l8] {
366 | color: #FF0;
367 | }
368 |
369 | select.svgColumn {
370 | width: 50px;
371 | }
372 |
373 | select.svgRegexp {
374 | width: 120px;
375 | }
376 |
377 | select.svgSrc {
378 | width: 100px;
379 | }
380 |
381 | span.sort-item-delete-link {
382 | float: right;
383 | margin: 0 0 0 3px;
384 | padding: 0;
385 | vertical-align: middle;
386 | }
387 |
388 |
389 | ul.sortable-src li, ul.sortable-dest li {
390 | border-radius: 3px;
391 | color: #000 !important;
392 | font-size: .8em;
393 | line-height: 1.6em;
394 | margin: 3px;
395 | min-width: 120px;
396 | padding: 2px 2px 2px 4px;
397 | text-align: left;
398 | vertical-align: middle;
399 | }
400 |
401 | ul.sortable-src, ul.sortable-dest {
402 | background: #eee;
403 | border: 2px solid #000;
404 | border-radius: 3px;
405 | list-style-type: none;
406 | margin: 3px;
407 | min-height: 1.8em;
408 | min-width: 130px;
409 | padding: 2px;
410 | vertical-align: middle;
411 | }
--------------------------------------------------------------------------------
/www/pgm2/hausautomatisierung_com.js:
--------------------------------------------------------------------------------
1 |
2 | function getClock() {
3 | var d = new Date();
4 | nhour = d.getHours();
5 | nmin = d.getMinutes();
6 |
7 | if (nhour <= 9) {
8 | nhour = '0' + nhour;
9 | }
10 |
11 | if (nmin <= 9) {
12 | nmin = '0' + nmin;
13 | }
14 |
15 | document.getElementById('clock').innerHTML = nhour + ':' + nmin + ' Uhr';
16 |
17 | setTimeout(getClock, 1000);
18 | }
19 |
20 | jQuery(document).ready(function ($) {
21 |
22 | var themeVersion = '2.19';
23 |
24 | // attr WEB hiddenroom input -> Ansicht anpassen
25 | if ($('#hdr .maininput').length == 0) {
26 | $('#hdr').hide();
27 | $('#content').css({top: '10px'});
28 | } else {
29 | // Link mit Popup Button
30 | $('
')
31 | .appendTo("#hdr")
32 | .click(function () {
33 | var hasCodeMirror = typeof AddCodeMirror == 'function';
34 |
35 | var textArea = $('');
36 | if (hasCodeMirror) {
37 | AddCodeMirror(textArea, function(cm) {
38 | cm.on("change", function() { textArea.val(cm.getValue()) } );
39 | });
40 | }
41 |
42 | $('')
43 | .append(textArea)
44 | .dialog({
45 | modal: true,
46 | width: $(window).width() * 0.9,
47 | buttons: [
48 | {
49 | text: "Execute",
50 | click: function() {
51 | FW_execRawDef(textArea.val());
52 | }
53 | }
54 | ],
55 | close: function() {
56 | $(this).remove();
57 | }
58 | });
59 | });
60 | }
61 |
62 | // Add version to logo
63 | $('#logo').append($('' + themeVersion + ''));
64 |
65 | // Add clock
66 | $('#logo').append($(''));
67 | window.addEventListener('load', getClock, false);
68 |
69 | // Clear spaces
70 | $('#content .devType, #menu .room a').each(function() {
71 | $(this).html($(this).html().replace(/ /g, ''));
72 | });
73 |
74 | $('#content > br').remove();
75 | $('.makeSelect').parent().find('br').remove();
76 |
77 | // Add missing classes for elements
78 | $('.SVGplot').prevAll('a').addClass('plot-nav');
79 |
80 | // Icon selection
81 | $('button.dist').wrapAll('');
82 | $('button.dist').css({width: '50px', height: '50px', margin: '5px', padding: '0'});
83 | $('button.dist > *').css({maxWidth: '40px', maxHeight: '40px', display: 'block', margin: '0px auto'});
84 |
85 | // Links in der Navigation hinzufügen
86 | var navElement = jQuery('#menu .room').last().find('tbody');
87 | navElement.append(
88 | $(' |
')
89 | );
90 |
91 | // Automatische Breite für HDR Input
92 | function resizeHeader() {
93 | var baseWidth = $('#content').length ? $('#content').width() : $(window).width() - $('#menuScrollArea').width() - 30;
94 |
95 | $('#hdr').css({width: baseWidth + 'px'});
96 | $('.maininput').css({width: ($('#hdr').width() - $('.maininputPopupLink').outerWidth() - 4) + 'px'});
97 | }
98 | resizeHeader();
99 | $(window).resize(resizeHeader);
100 |
101 | // Klick auf Error-Message blendet diese aus
102 | $('body').on('click', '#errmsg', function() {
103 | $(this).hide();
104 | });
105 |
106 | $('.roomoverview .col1, .makeTable .col1').each(function(index) {
107 | $(this).parent().addClass('first-table-column');
108 | });
109 |
110 | // hide elements by name
111 | if (document.URL.indexOf('showall') != -1) {
112 | // don't hide anything
113 | } else {
114 | $('div.devType:contains("-hidden")').parent('td').hide();
115 | }
116 |
117 | // DevToolTips
118 | // Create Toolbar
119 | var elHaToolbar = $('').attr('id', 'haToolbar').hide();
120 | $('body').append(elHaToolbar);
121 |
122 | $('#haToolbar').on('click', '.toHdr', function() {
123 | $('input.maininput').val($(this).text()).change();
124 | });
125 |
126 | function addToToolbar(val) {
127 | if (val.length > 0) {
128 | elHaToolbar.empty();
129 | jQuery.each(val, function(i, v) {
130 | $('
').addClass('toHdr').text(v).appendTo(elHaToolbar);
131 | $('
').appendTo(elHaToolbar);
132 | });
133 | elHaToolbar.show();
134 | }
135 | }
136 |
137 | $('table.internals .dname').click(function (e) {
138 | var deviceName = $(this).attr('data-name');
139 | var rowVal = $(this).text();
140 |
141 | if ($(this).html() == "TYPE") {
142 | addToToolbar(
143 | [
144 | "GetType('" + deviceName + "');",
145 | "InternalVal('" + deviceName + "', '" + rowVal + "', '');",
146 | "[i:" + deviceName + ":TYPE]"
147 | ]
148 | );
149 | } else if ($(this).html() == "STATE") {
150 | addToToolbar(
151 | [
152 | "Value('" + deviceName + "');",
153 | "InternalVal('" + deviceName + "', '" + rowVal + "', '');",
154 | "[i:" + deviceName + ":STATE]"
155 | ]
156 | );
157 | } else {
158 | addToToolbar(
159 | [
160 | "InternalVal('" + deviceName + "', '" + rowVal + "', '');",
161 | "[i:" + deviceName + ":" + rowVal + "]"
162 | ]
163 | );
164 | }
165 | });
166 |
167 | $('table.readings .dname').click(function (e) {
168 | var deviceName = $(this).attr('data-name');
169 | var rowVal = $(this).text();
170 |
171 | addToToolbar(
172 | [
173 | "ReadingsVal('" + deviceName + "', '" + rowVal + "', '');",
174 | "[" + deviceName + ":" + rowVal + "]",
175 | "[r:" + deviceName + ":" + rowVal + "]",
176 | deviceName + ":" + rowVal + ":.*"
177 | ]
178 | );
179 | });
180 |
181 | $('table.attributes .dname').click(function (e) {
182 | var deviceName = $(this).attr('data-name');
183 | var rowVal = $(this).text();
184 |
185 | addToToolbar(
186 | [
187 | "AttrVal('" + deviceName + "', '" + rowVal + "', '');",
188 | "[a:" + deviceName + ":" + rowVal + "]",
189 | "global:ATTR." + deviceName + "." + rowVal + ".*"
190 | ]
191 | );
192 | });
193 |
194 | (function($, window, document, undefined) {
195 | 'use strict';
196 |
197 | var elSelector = '#hdr, #logo',
198 | elClassHidden = 'header--hidden',
199 | throttleTimeout = 50,
200 | $element = $(elSelector);
201 |
202 | if (!$element.length) return true;
203 |
204 | var $window = $(window),
205 | wHeight = 0,
206 | wScrollCurrent = 0,
207 | wScrollBefore = 0,
208 | wScrollDiff = 0,
209 | $document = $(document),
210 | dHeight = 0,
211 | throttle = function(delay, fn) {
212 | var last, deferTimer;
213 | return function() {
214 | var context = this, args = arguments, now = +new Date;
215 | if (last && now < last + delay) {
216 | clearTimeout(deferTimer);
217 | deferTimer = setTimeout(
218 | function() {
219 | last = now;
220 | fn.apply(context, args);
221 | },
222 | delay
223 | );
224 | } else {
225 | last = now;
226 | fn.apply(context, args);
227 | }
228 | };
229 | };
230 |
231 | $window.on('scroll', throttle(throttleTimeout, function() {
232 | dHeight = $document.height();
233 | wHeight = $window.height();
234 | wScrollCurrent = $window.scrollTop();
235 | wScrollDiff = wScrollBefore - wScrollCurrent;
236 |
237 | if (wScrollCurrent <= 50) {
238 | $element.removeClass(elClassHidden);
239 | } else if (wScrollDiff > 0 && $element.hasClass(elClassHidden)) {
240 | $element.removeClass(elClassHidden);
241 | } else if (wScrollDiff < 0) {
242 | if (wScrollCurrent + wHeight >= dHeight && $element.hasClass(elClassHidden)) {
243 | $element.removeClass(elClassHidden);
244 | } else {
245 | $element.addClass(elClassHidden);
246 | }
247 | }
248 |
249 | wScrollBefore = wScrollCurrent;
250 | }));
251 |
252 | })(jQuery, window, document);
253 | });
254 |
--------------------------------------------------------------------------------
/sass/_dashboard.scss:
--------------------------------------------------------------------------------
1 | #dashboard {
2 |
3 | .dashboard-button {
4 | background: #f5f5f5 no-repeat 7px !important;
5 | border: 1px solid #ddd;
6 | border-radius: 0 !important;
7 | cursor: pointer;
8 | display: inline-block;
9 | height: 1.9em;
10 | margin-top: 2px;
11 | padding: 0 .6em;
12 | position: absolute;
13 | width: 14px;
14 | }
15 |
16 | .dashboard-button-defineDetails {
17 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY4NjYwOTg0NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY4NjYwOTg1NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Rjg2NjA5ODI0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Rjg2NjA5ODM0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7i4cyWAAAAsElEQVR42mJgoCEwA+IPUGxGrKZkIE6AsjOB+D8UZyKJReHTDNOwGoifIPEfAvFGJH4gIQMIYZyuWI3mCm8oRhZfhCvA0pCcvRGLmnVI3klDD9gPaE50gopvRDLMG00NSA8DCw6vcELpX0hifwnFeRrUef+hzsXlhSfYvMCA5GTkQPSAYvTAxQoyyYlGJiQDviOxFwPxCyQ+iL0eh1oUEA7EfniSciySPG0yE8kAIMAAicRYTX3YPyoAAAAASUVORK5CYII=) !important;
18 | background-position: center center;
19 | background-repeat: no-repeat;
20 | right: 10px;
21 | top: .2em;
22 | }
23 |
24 | .dashboard-button-editTab {
25 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABOklEQVR42o3SPUhCURjG8WPR1tBgU23SEEH0AUFDSURDtFU4FOQSQh9LlDgEUdSiU7QUuSq0RCAIYhTl0JCUIEFLRUQ1NLWIEGX9D74XRPJ4XvjB5V7Oc8597nUpuxnDBDbxWfnAZbG4Ce9w4xmzuLINaEALlrGBRnxjCzs2AWF4MA0vYmjHL7pwbwoYRxz9COABJ9jDG0KmE7Qhh0U5chR9mJSQF1MH+j3PcYcIbuFHM3bRjQ9TwLZ8smGcSuP7yMIn91StgFEcYwDzUpy+d4kU1qt3qwxoRR6rqvyzxKTAFfRgBD+mAF3clJxAF7iAEg7Ri9f/2nYCBmXBkjTdiQPcYA7JWt/aCdDveoFHzOAaR7LrmjJMdYCeL1X+baPSRckmYAgZuS4gLTs/qTrjBHQgiATOUKy30Jk/KjtDEXVEBowAAAAASUVORK5CYII=) !important;
26 | background-position: center center;
27 | background-repeat: no-repeat;
28 | right: 115px;
29 | top: .2em;
30 | }
31 |
32 | .dashboard-button-goBack {
33 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAZ0lEQVQ4jd3RMQqDQBBA0YekV0wj3v8QNqZTJBEtPY42K9l2p0s+TDHF/zAMf8kTE4aovOPEp1TucGRyE5XXUhnmJJfMCFUKVMp55EuLzfeENhBUY0mRA30kkr/xHQnckQWvaODHuADAUSEXjMLoMwAAAABJRU5ErkJggg==) !important;
34 | background-position: center center;
35 | background-repeat: no-repeat;
36 | right: 80px;
37 | top: .2em;
38 | }
39 |
40 | .dashboard-button-setPosition {
41 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYUlEQVR4XtWRUQrAMAhDneyg9mT2ptugHRaCY/FnLJAveWKifCW7AS3Avlj2AmzrFUrDIYhgJNwvN4VcBDwiYC5/CyclBpDDoe2poATGEuegs3AswCUIk/8+pl2K8uE/6ATG4BstrVLVgQAAAABJRU5ErkJggg==) !important;
42 | background-position: center center;
43 | background-repeat: no-repeat;
44 | right: 45px;
45 | top: .2em;
46 | }
47 |
48 | .dashboard-button-setPosition:not(.ui-state-disabled) {
49 | background-color: $primary-color !important;
50 | }
51 |
52 | .dashboard_button_icon {
53 | background: url(../images/default/dashboardicons.png) no-repeat;
54 | float: left;
55 | height: 14px;
56 | width: 13px;
57 | }
58 |
59 | .dashboard_button_iconminus {
60 | background-position: -52px 0;
61 | float: right;
62 | margin: .1em .4em;
63 | }
64 |
65 | .dashboard_button_iconplus {
66 | background-position: -65px 0;
67 | float: right;
68 | margin: .1em .4em;
69 | }
70 |
71 | .dashboard_column {
72 | float: left;
73 | }
74 |
75 | .dashboard_columncenter {
76 | height: inherit;
77 | }
78 |
79 | .dashboard_row {
80 | height: inherit;
81 | padding: 0;
82 | width: 100%;
83 |
84 | .dashboard_content {
85 |
86 | td {
87 | width: 100%
88 | }
89 | td.first-table-column {
90 | width: auto;
91 | }
92 |
93 | .col1 a {
94 | white-space: nowrap;
95 | }
96 | }
97 | }
98 |
99 | .dashboard_tabcontent {
100 | margin: 0;
101 | padding: 0;
102 | width: 100%;
103 | }
104 |
105 | .dashboard_tabnav {
106 | background: $brightest-background !important;
107 | border-radius: 0;
108 | }
109 |
110 | .dashboard_widget {
111 | border-radius: 8px;
112 | float: left;
113 | }
114 |
115 | .dashboard_widgetheader {
116 | border: 1px solid gray;
117 | font-weight: 400;
118 | margin: .2em;
119 | padding-bottom: 4px;
120 | padding-left: .7em;
121 | padding-top: 3px;
122 | }
123 |
124 | .dashboard_widgetinner {
125 | padding: .2em;
126 | }
127 |
128 | .dashboard_widgetinner .block .block {
129 | border: none;
130 | box-shadow: none;
131 | }
132 |
133 | .ui-button .ui-button-text, #dashboard-dialog .ui-button .ui-button-text {
134 | display: block;
135 | line-height: normal;
136 | }
137 |
138 | .ui-button, #dashboard .ui-button:active, #dashboard-dialog .ui-button, #dashboard-dialog .ui-button:hover, #dashboard-dialog .ui-button:active {
139 | text-decoration: none;
140 | }
141 |
142 | .ui-button, #dashboard-dialog .ui-button {
143 | cursor: pointer;
144 | display: inline-block;
145 | line-height: normal;
146 | margin-right: .1em;
147 | overflow: visible;
148 | text-align: center;
149 | vertical-align: middle;
150 | }
151 |
152 | .ui-button-text-only .ui-button-text, #dashboard-dialog .ui-button-text-only .ui-button-text {
153 | padding: .4em 1em;
154 | }
155 |
156 | .ui-helper-clearfix, #dashboard-dialog .ui-helper-clearfix {
157 | min-height: 0;
158 | }
159 |
160 | .ui-helper-clearfix:after, #dashboard-dialog .ui-helper-clearfix:after {
161 | clear: both;
162 | }
163 |
164 | .ui-helper-clearfix:before, #dashboard .ui-helper-clearfix:after, #dashboard-dialog .ui-helper-clearfix:before, #dashboard-dialog .ui-helper-clearfix:after {
165 | border-collapse: collapse;
166 | content: "";
167 | display: table;
168 | }
169 |
170 | .ui-helper-reset {
171 | border: 0;
172 | font-size: 100%;
173 | line-height: 1.3;
174 | list-style: none;
175 | margin: 0;
176 | outline: 0;
177 | padding: 0;
178 | text-decoration: none;
179 | }
180 |
181 | .ui-resizable, #dashboard .dashboard_rowcenter {
182 | position: relative;
183 | }
184 |
185 | .ui-resizable-handle {
186 | font-size: .1px;
187 | position: absolute;
188 | }
189 |
190 | .ui-resizable-se {
191 | background: url(data:image/gif;base64,R0lGODlhEAAQAIABAJOnY////yH5BAEAAAEALAAAAAAQABAAAAIZjI+py+0IwDtx2ktlqI1zDCae9mXGGKZgAQA7);
192 | bottom: 5px;
193 | cursor: se-resize;
194 | height: 12px;
195 | right: 5px;
196 | width: 12px;
197 | }
198 |
199 | .ui-sortable-placeholder {
200 | border: 1px dotted #278727;
201 | height: 25px !important;
202 | visibility: visible !important;
203 | width: 150px;
204 | }
205 |
206 | .ui-state-active a, #dashboard .ui-state-hover a, #dashboard .ui-state-focus a:hover, #dashboard-dialog .ui-state-active a, #dashboard-dialog .ui-state-hover a, #dashboard-dialog .ui-state-hover a:hover {
207 | color: #278727;
208 | text-decoration: none;
209 | }
210 |
211 | .ui-state-default a, #dashboard-dialog .ui-state-default a {
212 | color: #F8F8d5;
213 | text-decoration: none;
214 | }
215 |
216 | .ui-state-disabled {
217 | filter: Alpha(Opacity=35);
218 | opacity: .35;
219 | }
220 |
221 | .ui-state-hover, #dashboard-dialog .ui-state-hover {
222 | border: 1px solid #278727;
223 | color: #278727;
224 | font-weight: 400;
225 | }
226 |
227 | .ui-tabs {
228 | padding: 0;
229 | position: relative;
230 | }
231 |
232 | .ui-tabs .ui-tabs-nav {
233 | margin: 0 3px;
234 | padding: .2em;
235 | }
236 |
237 | .ui-tabs .ui-tabs-nav .ui-tabs-anchor {
238 | float: left;
239 | padding: .5em;
240 | text-decoration: none;
241 | }
242 |
243 | .ui-tabs .ui-tabs-nav li a {
244 | float: none;
245 | padding: 0;
246 | }
247 |
248 | .ui-tabs .ui-tabs-nav li, #dashboard-dialog .ui-tabs .ui-tabs-nav li {
249 | float: left;
250 | list-style: none;
251 | margin: 0 .2em 0 0;
252 | padding: 0;
253 | position: relative;
254 | top: 0;
255 | }
256 |
257 | .ui-tabs .ui-tabs-panel, #dashboard-dialog .ui-tabs .ui-tabs-panel {
258 | border-radius: 0;
259 | border-width: 0;
260 | box-shadow: 0 0 0 0;
261 | display: block;
262 | padding: 0;
263 | }
264 |
265 | .ui-tabs-icon {
266 | height: 23px;
267 | margin: -8px 2px -6px -3px;
268 | padding-right: 2px;
269 | width: 23px;
270 | }
271 |
272 | .ui-widget .ui-widget {
273 | font-family: Arial, Helvetica, sans-serif;
274 | font-size: 1em;
275 | }
276 |
277 | .ui-widget-content {
278 | border: none;
279 | color: #278727;
280 | font-family: Arial, Helvetica, sans-serif !important;
281 | font-size: $default-fontsize !important;
282 | }
283 |
284 | .ui-widget-content a, .fhemlog, #fwmenu li a {
285 | color: #278727;
286 | }
287 |
288 | .ui-widget-header {
289 | background: $primary-color;
290 | border: none;
291 | color: #fff;
292 | margin: 0;
293 | }
294 |
295 | .ui-widget-header .ui-state-active, #dashboard-dialog .ui-state-active {
296 | color: #278727;
297 | font-weight: 400;
298 | }
299 |
300 | .ui-widget-header .ui-state-default {
301 | background: $brightest-background;
302 | border: 1px solid #ddd;
303 | color: $secondary-color;
304 | font-weight: 400;
305 | }
306 |
307 | td table, .wide {
308 | width: 100%;
309 | }
310 | }
311 |
312 | #dashboard-dialog {
313 | border: 2px solid $primary-color;
314 | font-family: Arial, Helvetica, sans-serif !important;
315 | font-size: $default-fontsize !important;
316 | left: 0;
317 | outline: 0;
318 | overflow: visible !important;
319 | padding: .2em;
320 | position: absolute;
321 | top: 0;
322 | z-index: 100;
323 |
324 | .ui-dialog-buttonpane {
325 | padding: 5px;
326 | }
327 |
328 | .ui-dialog-buttonpane .ui-dialog-buttonset {
329 | float: right;
330 | }
331 |
332 | .ui-helper-reset {
333 | border: 0;
334 | font-size: 100%;
335 | line-height: 1.3;
336 | list-style: none;
337 | margin: 0;
338 | outline: 0;
339 | text-decoration: none;
340 | }
341 |
342 | .ui-state-default {
343 | border: 1px solid #ddd;
344 | color: #F8F8d5;
345 | font-weight: 400;
346 | }
347 |
348 | .ui-state-disabled {
349 | border: 1px solid #444;
350 | color: #444;
351 | font-weight: 400;
352 | }
353 |
354 | .ui-tabs {
355 | border: none;
356 | padding: .2em;
357 | position: relative;
358 | }
359 |
360 | .ui-tabs .ui-tabs-nav {
361 | margin: 0;
362 | padding: .2em;
363 | }
364 |
365 | .ui-tabs .ui-tabs-nav .ui-tabs-anchor {
366 | float: left;
367 | padding: .5em 1em;
368 | text-decoration: none;
369 | }
370 |
371 | .ui-widget-header {
372 | background: $brightest-background;
373 | color: $secondary-color;
374 | padding: 5px;
375 | }
376 |
377 | }
--------------------------------------------------------------------------------
/sass/_content.scss:
--------------------------------------------------------------------------------
1 | #content {
2 | max-width: $maxWidthContent;
3 |
4 | .motd {
5 | background: $primary-color;
6 | border-bottom: 3px #fff solid;
7 | border-top: 3px #fff solid;
8 | color: #fff;
9 | font-size: $large-fontsize !important;
10 | font-weight: 700;
11 | padding: 10px;
12 | margin-top: 20px;
13 |
14 | &:before {
15 | content: 'MOTD: ';
16 | }
17 |
18 | a {
19 | color: #1d3d5f;
20 | }
21 | }
22 |
23 | .get, .set, .attr {
24 | float: left;
25 | }
26 |
27 | > pre {
28 | background: white;
29 | color: #676f7a;
30 | padding: 5px;
31 | }
32 |
33 | pre {
34 | font-family: 'Source Code Pro', monospace !important;
35 |
36 | &.log {
37 | background: #000;
38 | padding: 10px;
39 | }
40 | }
41 |
42 | // list
43 | > pre {
44 | background: $brightest-background;
45 | padding: 10px;
46 | }
47 |
48 | div.col1 {
49 | line-height: 29px;
50 | }
51 |
52 | .roomoverview {
53 | .icon {
54 | margin-right: 5px;
55 | vertical-align: middle;
56 | }
57 |
58 | td.first-table-column {
59 | width: 25%;
60 | border-right: 2px $primary-color solid;
61 | line-height: 29px;
62 | }
63 | }
64 |
65 | .modCmd {
66 | &input[type="submit"] {
67 | border: 1px $primary-color solid;
68 | border-radius: 0;
69 | color: $primary-color;
70 | padding: 1px 10px;
71 | background: transparent;
72 | font-size: $large-fontsize;
73 | }
74 | }
75 |
76 | .makeTable {
77 | clear: left;
78 | display: inline;
79 | float: left;
80 | width: 100%;
81 | overflow-x: scroll;
82 |
83 | .mkTitle {
84 | font-size: $large-fontsize !important;
85 | text-transform: uppercase;
86 | letter-spacing: 10px;
87 | }
88 |
89 | caption {
90 | text-transform: uppercase;
91 | font-size: $large-fontsize !important;
92 | letter-spacing: 10px;
93 | margin: 10px 0;
94 | }
95 |
96 | .first-table-column {
97 | width: 25%;
98 | border-right: 2px $primary-color solid;
99 |
100 | img.icon {
101 | vertical-align: middle;
102 | width: 32px;
103 | height: 32px;
104 | }
105 | }
106 |
107 | table {
108 | font-size: $default-fontsize;
109 | text-transform: none;
110 | letter-spacing: normal;
111 |
112 | th {
113 | font-weight: bold;
114 | color: $secondary-color;
115 | padding: 10px 2px;
116 | border-bottom: 1px $secondary-color solid;
117 | }
118 | }
119 |
120 | table.block td:nth-child(2) {
121 | width: 60%;
122 | }
123 |
124 | & + .makeTable {
125 | margin-top: 10px;
126 | }
127 |
128 | & + .makeSelect {
129 | margin-top: 10px;
130 | }
131 |
132 | .slider {
133 | height: 16px;
134 |
135 | .handle {
136 | height: 16px;
137 | line-height: 16px;
138 | }
139 | }
140 | }
141 |
142 | .slider {
143 | width: 350px;
144 | border: 1px $primary-color solid;
145 |
146 | .handle {
147 | -webkit-user-select: none; /* Safari 3.1+ */
148 | -moz-user-select: none; /* Firefox 2+ */
149 | -ms-user-select: none; /* IE 10+ */
150 | user-select: none; /* Standard syntax */
151 | background: $primary-color;
152 | color: $odd-color;
153 | cursor: pointer;
154 | position: relative;
155 | text-align: center;
156 | width: 40px;
157 | }
158 | }
159 |
160 | .colorpicker_widget {
161 | line-height: 20px;
162 | }
163 | .colorpicker_ct .slider {
164 | background: url(../jscolor/ct_background.svg); background-size: 150px;
165 | }
166 | .colorpicker_ct_mired .slider {
167 | background: url(../jscolor/ct_mired_background.svg); background-size: 150px;
168 | }
169 | .colorpicker_hue .slider {
170 | background: url(../jscolor/hue_background.svg); background-size: 150px;
171 | }
172 |
173 | // Doif-Tools
174 | .dval {
175 |
176 | > table {
177 | margin-bottom: 10px;
178 |
179 | .downText {
180 | line-height: 24px;
181 | font-family: 'Source Code Pro', monospace !important;
182 | }
183 | }
184 |
185 | input[type=submit] {
186 | @include button;
187 | }
188 | }
189 |
190 | // FileLog
191 | table.FileLog {
192 | div.dval {
193 | a > {
194 | div.dval {
195 | text-align: right;
196 | margin-right: 5px;
197 | }
198 | }
199 | }
200 | }
201 |
202 | .makeSelect {
203 | background: $brightest-background;
204 | border-left: 5px $primary-color solid;
205 | border-right: 5px $primary-color solid;
206 | box-sizing: border-box;
207 | clear: left;
208 | color: $secondary-color;
209 | display: inline;
210 | float: left;
211 | padding: 5px;
212 | width: 100%;
213 |
214 | .downText {
215 | margin-left: 5px;
216 | line-height: 24px;
217 | font-family: 'Source Code Pro', monospace !important;
218 | }
219 |
220 | select {
221 | background-image: linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%), linear-gradient(to right, #ccc, #ccc);
222 | background-position: calc(100% - 20px) calc(0.5em),calc(100% - 15px) calc(0.5em),calc(100% - 2.5em) 0.2em;
223 | background-size: 5px 5px, 5px 5px, 1px 0.9em;
224 | background-repeat: no-repeat;
225 |
226 | border: 1px $primary-color solid;
227 | border-radius: 0;
228 | color: $primary-color;
229 | font-size: $large-fontsize;
230 | line-height: 20px;
231 | height: 24px;
232 | margin-left: 5px;
233 | margin-right: 5px;
234 | padding: 0 20px 0 10px;
235 | min-width: 200px;
236 | }
237 |
238 | input[type="submit"] {
239 | @include button-large;
240 | }
241 |
242 | input[type="text"] {
243 | @include textfield;
244 | }
245 |
246 | &[cmd="attr"] {
247 | select.select_widget,
248 | input[type="text"] {
249 | width: 300px;
250 | }
251 | }
252 |
253 | & + .makeTable {
254 | margin-top: 10px;
255 | }
256 |
257 | .slider {
258 | width: 250px;
259 | height: 22px;
260 | margin-left: 5px;
261 | margin-right: 5px;
262 |
263 | .handle {
264 | height: 22px;
265 | line-height: 22px;
266 | }
267 | }
268 | }
269 |
270 | table {
271 | width: 100%;
272 | border-collapse: collapse;
273 | max-width: $maxWidthContent;
274 |
275 | th {
276 | font-weight: bold;
277 | color: $secondary-color;
278 | padding: 10px 2px;
279 | border-bottom: 1px $secondary-color solid;
280 | }
281 |
282 | &.roomoverview {
283 | margin-bottom: 20px;
284 | }
285 | &.wide,
286 | &.roomoverview {
287 | width: 100%;
288 |
289 | // Columns in Rooms
290 | tr.column {
291 |
292 | table.column {
293 | width: 100%;
294 | }
295 |
296 | > td {
297 | padding: 0 5px;
298 | }
299 |
300 | /* one item */
301 | > td:first-child:nth-last-child(1) {
302 | /* -or- li:only-child { */
303 | width: 100%;
304 | }
305 |
306 | /* two items */
307 | > td:first-child:nth-last-child(2),
308 | > td:first-child:nth-last-child(2) ~ td {
309 | width: 50%;
310 | }
311 |
312 | /* three items */
313 | > td:first-child:nth-last-child(3),
314 | > td:first-child:nth-last-child(3) ~ td {
315 | width: 33.3333%;
316 | }
317 |
318 | /* four items */
319 | > td:first-child:nth-last-child(4),
320 | > td:first-child:nth-last-child(4) ~ td {
321 | width: 25%;
322 | }
323 |
324 | }
325 | }
326 |
327 | select {
328 | background-image: linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%), linear-gradient(to right, #ccc, #ccc);
329 | background-position: calc(100% - 15px) calc(0.5em + 1px),calc(100% - 10px) calc(0.5em + 1px),calc(100% - 2em) 0.4em;
330 | background-size: 5px 5px, 5px 5px, 1px 0.9em;
331 | background-repeat: no-repeat;
332 |
333 | border: 1px $primary-color solid;
334 | border-radius: 0;
335 | color: $primary-color;
336 | font-size: 100%;
337 | line-height: 20px;
338 | padding: 0 20px 0 10px;
339 | min-width: 90px;
340 | max-width: 400px;
341 | }
342 |
343 | .slider {
344 | width: 150px;
345 | }
346 |
347 | &.block {
348 | background: $brightest-background;
349 | border: none;
350 | color: $secondary-color;
351 |
352 | &.readings {
353 | .changed {
354 | color: $primary-color;
355 |
356 | &:after {
357 | content: ' !!!';
358 | }
359 | }
360 | }
361 | }
362 |
363 | .no-background {
364 | background: none !important;
365 | }
366 |
367 | &.block tr.odd {
368 | background: $odd-color;
369 | }
370 |
371 | &.internals td:nth-child(1),
372 | &.attributes td:nth-child(1),
373 | &.readings td:nth-child(1),
374 | &.assoc td:nth-child(1) {
375 | width: 20%;
376 | }
377 |
378 | &.internals td:nth-child(2),
379 | &.attributes td:nth-child(2),
380 | &.readings td:nth-child(2),
381 | &.assoc td:nth-child(2) {
382 | word-break: break-all;
383 | }
384 |
385 | tr.odd > td,
386 | tr.even > td {
387 | padding: 5px;
388 | }
389 |
390 | .ex {
391 | max-width: $maxWidthContent;
392 | white-space: pre;
393 | }
394 |
395 | input + select,
396 | select + select {
397 | margin-left: 10px;
398 | }
399 | }
400 |
401 | #pedit {
402 | margin-bottom: 10px;
403 | text-transform: uppercase;
404 | font-size: $large-fontsize;
405 | letter-spacing: 10px;
406 |
407 | > * {
408 | text-transform: none;
409 | font-size: $default-fontsize;
410 | letter-spacing: normal;
411 | }
412 |
413 | .plotEditor {
414 | select.svgSrc, select.set {
415 | border: 1px $primary-color solid;
416 | border-radius: 0;
417 | color: $primary-color;
418 | }
419 | }
420 | }
421 |
422 | .SVGlabel {
423 | background: $odd-color;
424 | padding: 5px;
425 | }
426 |
427 | .SVGplot {
428 | background: $odd-color;
429 | padding: 10px;
430 | }
431 |
432 | #svgmarker { color: gray; }
433 |
434 | .odd .SVGplot, .even .SVGplot {
435 | background: none !important;
436 | }
437 |
438 | .devType {
439 | font-size: $large-fontsize !important;
440 | text-transform: uppercase;
441 | letter-spacing: 10px;
442 | margin-top: 10px;
443 |
444 | a {
445 | color: #fff;
446 | }
447 | }
448 |
449 | .odd .devType, .even .devType {
450 | color: $secondary-color;
451 | margin-left: 5px;
452 | margin-bottom: 10px;
453 |
454 | a {
455 | color: $secondary-color;
456 | }
457 | }
458 |
459 | .detLink {
460 | background: #00000061;
461 | border: 1px $primary-color solid;
462 | padding: 2px 10px;
463 | display: inline-block;
464 | margin-top: 10px;
465 | line-height: 20px;
466 | margin-right: 10px;
467 | margin-bottom: 20px;
468 | vertical-align: top;
469 |
470 | a {
471 | color: $primary-color;
472 | }
473 | }
474 |
475 | #devSpecHelp {
476 | background: $brightest-background;
477 | border-left: 5px $primary-color solid;
478 | color: $secondary-color;
479 | font-size: $default-fontsize !important;
480 | font-family: 'Source Code Pro', monospace !important;
481 | max-width: 985px;
482 | padding: 5px;
483 | width: 100%;
484 | margin-top: 10px;
485 | text-transform: none;
486 | letter-spacing: normal !important;
487 |
488 | h3 {
489 | font-size: $large-fontsize;
490 | letter-spacing: 10px;
491 | text-transform: uppercase;
492 | font-weight: bold;
493 | }
494 |
495 | dd {
496 | margin-left: 50px;
497 | }
498 |
499 | dt {
500 | margin-left: 25px;
501 | }
502 |
503 | b, strong {
504 | font-weight: bold;
505 | text-transform: uppercase;
506 | }
507 |
508 | p {
509 | margin: 5px 0;
510 | }
511 |
512 | code {
513 | font-family: 'Source Code Pro', monospace;
514 | }
515 |
516 | ul {
517 | list-style-type: square;
518 | margin-left: 20px;
519 |
520 | li {
521 | margin: 10px 0;
522 | }
523 | }
524 |
525 | table {
526 | td {
527 | padding: 5px;
528 | }
529 | }
530 | }
531 |
532 | div.img {
533 | width: 100%;
534 | background: $brightest-background;
535 | padding: 5px;
536 | box-sizing: border-box;
537 | text-align: center;
538 | margin-top: 10px;
539 | margin-bottom: 10px;
540 | }
541 |
542 | .CodeMirror {
543 | max-width: $maxWidthContent;
544 | }
545 |
546 | #edit {
547 | input[type="submit"] {
548 | &.psc {
549 | @include button;
550 | margin: 10px;
551 | min-width: 200px;
552 | }
553 | }
554 | }
555 |
556 | div.fileList {
557 | font-size: $large-fontsize !important;
558 | text-transform: uppercase;
559 | letter-spacing: 10px;
560 | }
561 |
562 | // Edit files
563 | > form {
564 | margin-top: 10px;
565 | background: $brightest-background;
566 | color: $primary-color-lt;
567 | border-left: 5px $primary-color solid;
568 | border-right: 5px $primary-color solid;
569 | box-sizing: border-box;
570 | padding: 5px;
571 |
572 | > .saveName {
573 | @include textfield;
574 | float: right;
575 | }
576 |
577 | > input[name="saveAs"] {
578 | float: right;
579 | }
580 |
581 | > input[name="save"],
582 | > input[name="saveAs"] {
583 | @include button-large
584 | }
585 | }
586 | }
587 |
--------------------------------------------------------------------------------
/www/pgm2/hausautomatisierung_comstyle.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=Open+Sans);
2 | @import url(https://fonts.googleapis.com/css?family=Source+Code+Pro);
3 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font: inherit; font-size: 100%; vertical-align: baseline; }
4 |
5 | html { line-height: 1; }
6 |
7 | ol, ul { list-style: none; }
8 |
9 | table { border-collapse: collapse; border-spacing: 0; }
10 |
11 | caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; }
12 |
13 | q, blockquote { quotes: none; }
14 | q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; }
15 |
16 | a img { border: none; }
17 |
18 | article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
19 |
20 | /* Author: Matthias Kleine */
21 | body { background: #354d69 url(../hausautomatisierung-com/images/bg_wrapper.jpg) no-repeat center 0 fixed; background-size: cover; background-position: top center; color: #fff; font-family: 'Open Sans', sans-serif; font-size: 13px; margin: 0 auto; padding: 0; tab-size: 4; }
22 |
23 | div { font-family: 'Open Sans', sans-serif !important; font-size: 13px !important; }
24 |
25 | body.dashboard_fullsize #content { border: none !important; float: none !important; height: 100% !important; overflow: visible !important; padding: 0 !important; position: inherit !important; width: 100% !important; }
26 |
27 | body.dashboard_fullsize #menuScrollArea, body.dashboard_fullsize #hdr, div.ui-dialog div.ui-dialog-titlebar { display: none; }
28 |
29 | a { color: #e56524; text-decoration: none; }
30 |
31 | button.dist { border: 0; cursor: pointer; margin: 10px; }
32 |
33 | #logo { background: url(../hausautomatisierung-com/images/haus_automatisierung.png) no-repeat; height: 120px; margin-left: 40px; margin-top: 10px; position: fixed; width: 220px; }
34 | #logo .theme-version { opacity: 0.7; font-weight: bold; }
35 | #logo #clock { opacity: 0.7; position: absolute; font-weight: bold; right: 0; top: 0; }
36 |
37 | #content, #right { bottom: 20px; position: absolute; right: 10px; top: 50px; }
38 |
39 | #content, #hdr, #right { left: 320px; }
40 |
41 | input[type="text"] { border: 1px #e56524 solid; background: none; }
42 |
43 | #hdr { left: 310px; position: fixed; top: 0px; background: #fffffff0; padding: 10px; z-index: 99; border-radius: 0 0 4px 4px; box-shadow: 0 3px 3px #11111130; }
44 | #hdr .header { display: inline-block; }
45 | #hdr input.maininput { color: #e56524; font-size: 16px; box-sizing: border-box; }
46 | #hdr input.maininput:focus { outline: none; }
47 | #hdr .maininputPopupLink { background-image: url('data:image/svg+xml;utf8,'); cursor: pointer; width: 22px; height: 22px; display: inline-block; }
48 | #hdr.header--hidden { -webkit-transform: translateY(-110%); -ms-transform: translateY(-110%); transform: translateY(-110%); }
49 |
50 | #errmsg { background: #e56524; border-bottom: 3px #fff solid; border-top: 3px #fff solid; color: #fff; font-size: 16px !important; font-weight: 700; left: 0; padding: 20px; position: fixed; top: 10px; width: 100%; z-index: 99999; opacity: 0.8; }
51 | #errmsg:after { content: ' !!!!'; }
52 | #errmsg:before { content: '!!!! '; }
53 |
54 | embed { margin-bottom: 10px; }
55 |
56 | select { -webkit-appearance: none; -moz-appearance: none; appearance: none; background-color: transparent; }
57 |
58 | #content { max-width: 1000px; }
59 | #content .motd { background: #e56524; border-bottom: 3px #fff solid; border-top: 3px #fff solid; color: #fff; font-size: 16px !important; font-weight: 700; padding: 10px; margin-top: 20px; }
60 | #content .motd:before { content: 'MOTD: '; }
61 | #content .motd a { color: #1d3d5f; }
62 | #content .get, #content .set, #content .attr { float: left; }
63 | #content > pre { background: white; color: #676f7a; padding: 5px; }
64 | #content pre { font-family: 'Source Code Pro', monospace !important; }
65 | #content pre.log { background: #000; padding: 10px; }
66 | #content > pre { background: #fff; padding: 10px; }
67 | #content div.col1 { line-height: 29px; }
68 | #content .roomoverview .icon { margin-right: 5px; vertical-align: middle; }
69 | #content .roomoverview td.first-table-column { width: 25%; border-right: 2px #e56524 solid; line-height: 29px; }
70 | #content .modCmdinput[type="submit"] { border: 1px #e56524 solid; border-radius: 0; color: #e56524; padding: 1px 10px; background: transparent; font-size: 16px; }
71 | #content .makeTable { clear: left; display: inline; float: left; width: 100%; overflow-x: scroll; }
72 | #content .makeTable .mkTitle { font-size: 16px !important; text-transform: uppercase; letter-spacing: 10px; }
73 | #content .makeTable caption { text-transform: uppercase; font-size: 16px !important; letter-spacing: 10px; margin: 10px 0; }
74 | #content .makeTable .first-table-column { width: 25%; border-right: 2px #e56524 solid; }
75 | #content .makeTable .first-table-column img.icon { vertical-align: middle; width: 32px; height: 32px; }
76 | #content .makeTable table { font-size: 13px; text-transform: none; letter-spacing: normal; }
77 | #content .makeTable table th { font-weight: bold; color: #676f7a; padding: 10px 2px; border-bottom: 1px #676f7a solid; }
78 | #content .makeTable table.block td:nth-child(2) { width: 60%; }
79 | #content .makeTable + .makeTable { margin-top: 10px; }
80 | #content .makeTable + .makeSelect { margin-top: 10px; }
81 | #content .makeTable .slider { height: 16px; }
82 | #content .makeTable .slider .handle { height: 16px; line-height: 16px; }
83 | #content .slider { width: 350px; border: 1px #e56524 solid; }
84 | #content .slider .handle { -webkit-user-select: none; /* Safari 3.1+ */ -moz-user-select: none; /* Firefox 2+ */ -ms-user-select: none; /* IE 10+ */ user-select: none; /* Standard syntax */ background: #e56524; color: #f5f6f9; cursor: pointer; position: relative; text-align: center; width: 40px; }
85 | #content .colorpicker_widget { line-height: 20px; }
86 | #content .colorpicker_ct .slider { background: url(../jscolor/ct_background.svg); background-size: 150px; }
87 | #content .colorpicker_ct_mired .slider { background: url(../jscolor/ct_mired_background.svg); background-size: 150px; }
88 | #content .colorpicker_hue .slider { background: url(../jscolor/hue_background.svg); background-size: 150px; }
89 | #content .dval > table { margin-bottom: 10px; }
90 | #content .dval > table .downText { line-height: 24px; font-family: 'Source Code Pro', monospace !important; }
91 | #content .dval input[type=submit] { border: 1px #e56524 solid; border-radius: 0; color: #e56524; padding: 1px 10px; background: transparent; font-size: 16px; }
92 | #content table.FileLog div.dval a > div.dval { text-align: right; margin-right: 5px; }
93 | #content .makeSelect { background: #fff; border-left: 5px #e56524 solid; border-right: 5px #e56524 solid; box-sizing: border-box; clear: left; color: #676f7a; display: inline; float: left; padding: 5px; width: 100%; }
94 | #content .makeSelect .downText { margin-left: 5px; line-height: 24px; font-family: 'Source Code Pro', monospace !important; }
95 | #content .makeSelect select { background-image: linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%), linear-gradient(to right, #ccc, #ccc); background-position: calc(100% - 20px) calc(0.5em), calc(100% - 15px) calc(0.5em), calc(100% - 2.5em) 0.2em; background-size: 5px 5px, 5px 5px, 1px 0.9em; background-repeat: no-repeat; border: 1px #e56524 solid; border-radius: 0; color: #e56524; font-size: 16px; line-height: 20px; height: 24px; margin-left: 5px; margin-right: 5px; padding: 0 20px 0 10px; min-width: 200px; }
96 | #content .makeSelect input[type="submit"] { border: 1px #e56524 solid; border-radius: 0; color: #e56524; padding: 1px 10px; background: transparent; font-size: 16px; height: 24px; }
97 | #content .makeSelect input[type="text"] { border: 1px #e56524 solid; color: #555; background: transparent; font-size: 16px; height: 20px; margin-left: 5px; margin-right: 5px; }
98 | #content .makeSelect[cmd="attr"] select.select_widget, #content .makeSelect[cmd="attr"] input[type="text"] { width: 300px; }
99 | #content .makeSelect + .makeTable { margin-top: 10px; }
100 | #content .makeSelect .slider { width: 250px; height: 22px; margin-left: 5px; margin-right: 5px; }
101 | #content .makeSelect .slider .handle { height: 22px; line-height: 22px; }
102 | #content table { width: 100%; border-collapse: collapse; max-width: 1000px; }
103 | #content table th { font-weight: bold; color: #676f7a; padding: 10px 2px; border-bottom: 1px #676f7a solid; }
104 | #content table.roomoverview { margin-bottom: 20px; }
105 | #content table.wide, #content table.roomoverview { width: 100%; }
106 | #content table.wide tr.column, #content table.roomoverview tr.column { /* one item */ /* two items */ /* three items */ /* four items */ }
107 | #content table.wide tr.column table.column, #content table.roomoverview tr.column table.column { width: 100%; }
108 | #content table.wide tr.column > td, #content table.roomoverview tr.column > td { padding: 0 5px; }
109 | #content table.wide tr.column > td:first-child:nth-last-child(1), #content table.roomoverview tr.column > td:first-child:nth-last-child(1) { /* -or- li:only-child { */ width: 100%; }
110 | #content table.wide tr.column > td:first-child:nth-last-child(2), #content table.wide tr.column > td:first-child:nth-last-child(2) ~ td, #content table.roomoverview tr.column > td:first-child:nth-last-child(2), #content table.roomoverview tr.column > td:first-child:nth-last-child(2) ~ td { width: 50%; }
111 | #content table.wide tr.column > td:first-child:nth-last-child(3), #content table.wide tr.column > td:first-child:nth-last-child(3) ~ td, #content table.roomoverview tr.column > td:first-child:nth-last-child(3), #content table.roomoverview tr.column > td:first-child:nth-last-child(3) ~ td { width: 33.3333%; }
112 | #content table.wide tr.column > td:first-child:nth-last-child(4), #content table.wide tr.column > td:first-child:nth-last-child(4) ~ td, #content table.roomoverview tr.column > td:first-child:nth-last-child(4), #content table.roomoverview tr.column > td:first-child:nth-last-child(4) ~ td { width: 25%; }
113 | #content table select { background-image: linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%), linear-gradient(to right, #ccc, #ccc); background-position: calc(100% - 15px) calc(0.5em + 1px), calc(100% - 10px) calc(0.5em + 1px), calc(100% - 2em) 0.4em; background-size: 5px 5px, 5px 5px, 1px 0.9em; background-repeat: no-repeat; border: 1px #e56524 solid; border-radius: 0; color: #e56524; font-size: 100%; line-height: 20px; padding: 0 20px 0 10px; min-width: 90px; max-width: 400px; }
114 | #content table .slider { width: 150px; }
115 | #content table.block { background: #fff; border: none; color: #676f7a; }
116 | #content table.block.readings .changed { color: #e56524; }
117 | #content table.block.readings .changed:after { content: ' !!!'; }
118 | #content table .no-background { background: none !important; }
119 | #content table.block tr.odd { background: #f5f6f9; }
120 | #content table.internals td:nth-child(1), #content table.attributes td:nth-child(1), #content table.readings td:nth-child(1), #content table.assoc td:nth-child(1) { width: 20%; }
121 | #content table.internals td:nth-child(2), #content table.attributes td:nth-child(2), #content table.readings td:nth-child(2), #content table.assoc td:nth-child(2) { word-break: break-all; }
122 | #content table tr.odd > td, #content table tr.even > td { padding: 5px; }
123 | #content table .ex { max-width: 1000px; white-space: pre; }
124 | #content table input + select, #content table select + select { margin-left: 10px; }
125 | #content #pedit { margin-bottom: 10px; text-transform: uppercase; font-size: 16px; letter-spacing: 10px; }
126 | #content #pedit > * { text-transform: none; font-size: 13px; letter-spacing: normal; }
127 | #content #pedit .plotEditor select.svgSrc, #content #pedit .plotEditor select.set { border: 1px #e56524 solid; border-radius: 0; color: #e56524; }
128 | #content .SVGlabel { background: #f5f6f9; padding: 5px; }
129 | #content .SVGplot { background: #f5f6f9; padding: 10px; }
130 | #content #svgmarker { color: gray; }
131 | #content .odd .SVGplot, #content .even .SVGplot { background: none !important; }
132 | #content .devType { font-size: 16px !important; text-transform: uppercase; letter-spacing: 10px; margin-top: 10px; }
133 | #content .devType a { color: #fff; }
134 | #content .odd .devType, #content .even .devType { color: #676f7a; margin-left: 5px; margin-bottom: 10px; }
135 | #content .odd .devType a, #content .even .devType a { color: #676f7a; }
136 | #content .detLink { background: #00000061; border: 1px #e56524 solid; padding: 2px 10px; display: inline-block; margin-top: 10px; line-height: 20px; margin-right: 10px; margin-bottom: 20px; vertical-align: top; }
137 | #content .detLink a { color: #e56524; }
138 | #content #devSpecHelp { background: #fff; border-left: 5px #e56524 solid; color: #676f7a; font-size: 13px !important; font-family: 'Source Code Pro', monospace !important; max-width: 985px; padding: 5px; width: 100%; margin-top: 10px; text-transform: none; letter-spacing: normal !important; }
139 | #content #devSpecHelp h3 { font-size: 16px; letter-spacing: 10px; text-transform: uppercase; font-weight: bold; }
140 | #content #devSpecHelp dd { margin-left: 50px; }
141 | #content #devSpecHelp dt { margin-left: 25px; }
142 | #content #devSpecHelp b, #content #devSpecHelp strong { font-weight: bold; text-transform: uppercase; }
143 | #content #devSpecHelp p { margin: 5px 0; }
144 | #content #devSpecHelp code { font-family: 'Source Code Pro', monospace; }
145 | #content #devSpecHelp ul { list-style-type: square; margin-left: 20px; }
146 | #content #devSpecHelp ul li { margin: 10px 0; }
147 | #content #devSpecHelp table td { padding: 5px; }
148 | #content div.img { width: 100%; background: #fff; padding: 5px; box-sizing: border-box; text-align: center; margin-top: 10px; margin-bottom: 10px; }
149 | #content .CodeMirror { max-width: 1000px; }
150 | #content #edit input[type="submit"].psc { border: 1px #e56524 solid; border-radius: 0; color: #e56524; padding: 1px 10px; background: transparent; font-size: 16px; margin: 10px; min-width: 200px; }
151 | #content div.fileList { font-size: 16px !important; text-transform: uppercase; letter-spacing: 10px; }
152 | #content > form { margin-top: 10px; background: #fff; color: #676f7a; border-left: 5px #e56524 solid; border-right: 5px #e56524 solid; box-sizing: border-box; padding: 5px; }
153 | #content > form > .saveName { border: 1px #e56524 solid; color: #555; background: transparent; font-size: 16px; height: 20px; margin-left: 5px; margin-right: 5px; float: right; }
154 | #content > form > input[name="saveAs"] { float: right; }
155 | #content > form > input[name="save"], #content > form > input[name="saveAs"] { border: 1px #e56524 solid; border-radius: 0; color: #e56524; padding: 1px 10px; background: transparent; font-size: 16px; height: 24px; }
156 |
157 | #content .abstract-table { margin: 10px 0; }
158 | #content .abstract-table th { font-weight: bold; color: #676f7a; padding: 10px 2px; border-bottom: 1px #676f7a solid; }
159 | #content #ZWHelp { font-size: 13px !important; text-transform: none !important; letter-spacing: normal !important; background: #fff; color: #676f7a; padding: 5px; box-sizing: border-box; }
160 | #content #ZWHelp.makeTable.help:empty { display: none; }
161 | #content .fbcalllist.header td { font-weight: bold; color: #676f7a; padding: 10px 2px; border-bottom: 1px #676f7a solid; }
162 | #content .rc_body { margin-top: 10px; }
163 | #content div[id^=weekprofile] { background: #fff; padding: 5px; }
164 | #content div[id^=weekprofile] button { border: 1px #e56524 solid; border-radius: 0; color: #e56524; padding: 1px 10px; background: transparent; font-size: 16px; height: 24px; }
165 | #content .todoist_container .col_header { background: #fff; }
166 | #content table.calendar { background: #fff; }
167 | #content table.calendar td { color: #676f7a; padding: 10px 10px; }
168 | #content table.calendar tr:nth-child(2n) { background: #f5f6f9; }
169 | #content a#pdisp { background: #00000061; color: #e56524; border: 1px #e56524 solid; padding: 2px 10px; display: inline-block; margin-top: 10px; line-height: 20px; margin-right: 10px; margin-bottom: 10px; vertical-align: top; }
170 | #content #fhemsearch { color: #676f7a; margin-top: 10px; background: #fff; border-left: 5px #e56524 solid; border-right: 5px #e56524 solid; box-sizing: border-box; padding: 5px; }
171 | #content #fhemsearch > input[type="text"] { border: 1px #e56524 solid; color: #555; background: transparent; font-size: 16px; height: 20px; margin-left: 5px; margin-right: 5px; }
172 | #content .remotecontrol .rc_body { border: 1px #e56524 solid; background: #676f7a; margin-bottom: 10px; }
173 | #content .remotecontrol .rc_body .rc_button { padding: 5px; }
174 | #content #dashboardtoolbar td { padding: 5px; }
175 | #content #dashboardtoolbar button { border: 1px #e56524 solid; border-radius: 0; color: #e56524; font-size: 16px; margin: 5px; background: transparent; }
176 | #content #fpmenu input[type=submit] { border: 1px #e56524 solid; border-radius: 0; color: #e56524; padding: 1px 10px; background: transparent; font-size: 16px; }
177 | #content #fpmenu input[type="text"] { border: 1px #e56524 solid; color: #555; background: transparent; font-size: 16px; height: 20px; margin-left: 5px; margin-right: 5px; }
178 |
179 | #content > button#eventReset, #content > button#addRegexpPart { border: 1px #e56524 solid; border-radius: 0; color: #e56524; padding: 1px 10px; background: transparent; font-size: 16px; }
180 |
181 | #console { bottom: 0; overflow: auto; white-space: nowrap; position: absolute; top: 2em; width: 100%; }
182 |
183 | textarea#console { white-space: normal; margin-top: 10px; margin-bottom: 10px; border-left: 5px #e56524 solid; font-size: 100%; }
184 |
185 | #console, .fhemlog { color: #fff; font-family: 'Source Code Pro', monospace; background: none; border: none; }
186 |
187 | #dashboard .dashboard-button { background: #f5f5f5 no-repeat 7px !important; border: 1px solid #ddd; border-radius: 0 !important; cursor: pointer; display: inline-block; height: 1.9em; margin-top: 2px; padding: 0 .6em; position: absolute; width: 14px; }
188 | #dashboard .dashboard-button-defineDetails { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY4NjYwOTg0NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY4NjYwOTg1NEJFQzExRTI4MjI3OTFCOEEyNzY2MzE2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Rjg2NjA5ODI0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Rjg2NjA5ODM0QkVDMTFFMjgyMjc5MUI4QTI3NjYzMTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7i4cyWAAAAsElEQVR42mJgoCEwA+IPUGxGrKZkIE6AsjOB+D8UZyKJReHTDNOwGoifIPEfAvFGJH4gIQMIYZyuWI3mCm8oRhZfhCvA0pCcvRGLmnVI3klDD9gPaE50gopvRDLMG00NSA8DCw6vcELpX0hifwnFeRrUef+hzsXlhSfYvMCA5GTkQPSAYvTAxQoyyYlGJiQDviOxFwPxCyQ+iL0eh1oUEA7EfniSciySPG0yE8kAIMAAicRYTX3YPyoAAAAASUVORK5CYII=) !important; background-position: center center; background-repeat: no-repeat; right: 10px; top: .2em; }
189 | #dashboard .dashboard-button-editTab { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABOklEQVR42o3SPUhCURjG8WPR1tBgU23SEEH0AUFDSURDtFU4FOQSQh9LlDgEUdSiU7QUuSq0RCAIYhTl0JCUIEFLRUQ1NLWIEGX9D74XRPJ4XvjB5V7Oc8597nUpuxnDBDbxWfnAZbG4Ce9w4xmzuLINaEALlrGBRnxjCzs2AWF4MA0vYmjHL7pwbwoYRxz9COABJ9jDG0KmE7Qhh0U5chR9mJSQF1MH+j3PcYcIbuFHM3bRjQ9TwLZ8smGcSuP7yMIn91StgFEcYwDzUpy+d4kU1qt3qwxoRR6rqvyzxKTAFfRgBD+mAF3clJxAF7iAEg7Ri9f/2nYCBmXBkjTdiQPcYA7JWt/aCdDveoFHzOAaR7LrmjJMdYCeL1X+baPSRckmYAgZuS4gLTs/qTrjBHQgiATOUKy30Jk/KjtDEXVEBowAAAAASUVORK5CYII=) !important; background-position: center center; background-repeat: no-repeat; right: 115px; top: .2em; }
190 | #dashboard .dashboard-button-goBack { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAZ0lEQVQ4jd3RMQqDQBBA0YekV0wj3v8QNqZTJBEtPY42K9l2p0s+TDHF/zAMf8kTE4aovOPEp1TucGRyE5XXUhnmJJfMCFUKVMp55EuLzfeENhBUY0mRA30kkr/xHQnckQWvaODHuADAUSEXjMLoMwAAAABJRU5ErkJggg==) !important; background-position: center center; background-repeat: no-repeat; right: 80px; top: .2em; }
191 | #dashboard .dashboard-button-setPosition { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYUlEQVR4XtWRUQrAMAhDneyg9mT2ptugHRaCY/FnLJAveWKifCW7AS3Avlj2AmzrFUrDIYhgJNwvN4VcBDwiYC5/CyclBpDDoe2poATGEuegs3AswCUIk/8+pl2K8uE/6ATG4BstrVLVgQAAAABJRU5ErkJggg==) !important; background-position: center center; background-repeat: no-repeat; right: 45px; top: .2em; }
192 | #dashboard .dashboard-button-setPosition:not(.ui-state-disabled) { background-color: #e56524 !important; }
193 | #dashboard .dashboard_button_icon { background: url(../images/default/dashboardicons.png) no-repeat; float: left; height: 14px; width: 13px; }
194 | #dashboard .dashboard_button_iconminus { background-position: -52px 0; float: right; margin: .1em .4em; }
195 | #dashboard .dashboard_button_iconplus { background-position: -65px 0; float: right; margin: .1em .4em; }
196 | #dashboard .dashboard_column { float: left; }
197 | #dashboard .dashboard_columncenter { height: inherit; }
198 | #dashboard .dashboard_row { height: inherit; padding: 0; width: 100%; }
199 | #dashboard .dashboard_row .dashboard_content td { width: 100%; }
200 | #dashboard .dashboard_row .dashboard_content td.first-table-column { width: auto; }
201 | #dashboard .dashboard_row .dashboard_content .col1 a { white-space: nowrap; }
202 | #dashboard .dashboard_tabcontent { margin: 0; padding: 0; width: 100%; }
203 | #dashboard .dashboard_tabnav { background: #fff !important; border-radius: 0; }
204 | #dashboard .dashboard_widget { border-radius: 8px; float: left; }
205 | #dashboard .dashboard_widgetheader { border: 1px solid gray; font-weight: 400; margin: .2em; padding-bottom: 4px; padding-left: .7em; padding-top: 3px; }
206 | #dashboard .dashboard_widgetinner { padding: .2em; }
207 | #dashboard .dashboard_widgetinner .block .block { border: none; box-shadow: none; }
208 | #dashboard .ui-button .ui-button-text, #dashboard #dashboard-dialog .ui-button .ui-button-text { display: block; line-height: normal; }
209 | #dashboard .ui-button, #dashboard #dashboard .ui-button:active, #dashboard #dashboard-dialog .ui-button, #dashboard #dashboard-dialog .ui-button:hover, #dashboard #dashboard-dialog .ui-button:active { text-decoration: none; }
210 | #dashboard .ui-button, #dashboard #dashboard-dialog .ui-button { cursor: pointer; display: inline-block; line-height: normal; margin-right: .1em; overflow: visible; text-align: center; vertical-align: middle; }
211 | #dashboard .ui-button-text-only .ui-button-text, #dashboard #dashboard-dialog .ui-button-text-only .ui-button-text { padding: .4em 1em; }
212 | #dashboard .ui-helper-clearfix, #dashboard #dashboard-dialog .ui-helper-clearfix { min-height: 0; }
213 | #dashboard .ui-helper-clearfix:after, #dashboard #dashboard-dialog .ui-helper-clearfix:after { clear: both; }
214 | #dashboard .ui-helper-clearfix:before, #dashboard #dashboard .ui-helper-clearfix:after, #dashboard #dashboard-dialog .ui-helper-clearfix:before, #dashboard #dashboard-dialog .ui-helper-clearfix:after { border-collapse: collapse; content: ""; display: table; }
215 | #dashboard .ui-helper-reset { border: 0; font-size: 100%; line-height: 1.3; list-style: none; margin: 0; outline: 0; padding: 0; text-decoration: none; }
216 | #dashboard .ui-resizable, #dashboard #dashboard .dashboard_rowcenter { position: relative; }
217 | #dashboard .ui-resizable-handle { font-size: .1px; position: absolute; }
218 | #dashboard .ui-resizable-se { background: url(data:image/gif;base64,R0lGODlhEAAQAIABAJOnY////yH5BAEAAAEALAAAAAAQABAAAAIZjI+py+0IwDtx2ktlqI1zDCae9mXGGKZgAQA7); bottom: 5px; cursor: se-resize; height: 12px; right: 5px; width: 12px; }
219 | #dashboard .ui-sortable-placeholder { border: 1px dotted #278727; height: 25px !important; visibility: visible !important; width: 150px; }
220 | #dashboard .ui-state-active a, #dashboard #dashboard .ui-state-hover a, #dashboard #dashboard .ui-state-focus a:hover, #dashboard #dashboard-dialog .ui-state-active a, #dashboard #dashboard-dialog .ui-state-hover a, #dashboard #dashboard-dialog .ui-state-hover a:hover { color: #278727; text-decoration: none; }
221 | #dashboard .ui-state-default a, #dashboard #dashboard-dialog .ui-state-default a { color: #F8F8d5; text-decoration: none; }
222 | #dashboard .ui-state-disabled { filter: Alpha(Opacity=35); opacity: .35; }
223 | #dashboard .ui-state-hover, #dashboard #dashboard-dialog .ui-state-hover { border: 1px solid #278727; color: #278727; font-weight: 400; }
224 | #dashboard .ui-tabs { padding: 0; position: relative; }
225 | #dashboard .ui-tabs .ui-tabs-nav { margin: 0 3px; padding: .2em; }
226 | #dashboard .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em; text-decoration: none; }
227 | #dashboard .ui-tabs .ui-tabs-nav li a { float: none; padding: 0; }
228 | #dashboard .ui-tabs .ui-tabs-nav li, #dashboard #dashboard-dialog .ui-tabs .ui-tabs-nav li { float: left; list-style: none; margin: 0 .2em 0 0; padding: 0; position: relative; top: 0; }
229 | #dashboard .ui-tabs .ui-tabs-panel, #dashboard #dashboard-dialog .ui-tabs .ui-tabs-panel { border-radius: 0; border-width: 0; box-shadow: 0 0 0 0; display: block; padding: 0; }
230 | #dashboard .ui-tabs-icon { height: 23px; margin: -8px 2px -6px -3px; padding-right: 2px; width: 23px; }
231 | #dashboard .ui-widget .ui-widget { font-family: Arial, Helvetica, sans-serif; font-size: 1em; }
232 | #dashboard .ui-widget-content { border: none; color: #278727; font-family: Arial, Helvetica, sans-serif !important; font-size: 13px !important; }
233 | #dashboard .ui-widget-content a, #dashboard .fhemlog, #dashboard #fwmenu li a { color: #278727; }
234 | #dashboard .ui-widget-header { background: #e56524; border: none; color: #fff; margin: 0; }
235 | #dashboard .ui-widget-header .ui-state-active, #dashboard #dashboard-dialog .ui-state-active { color: #278727; font-weight: 400; }
236 | #dashboard .ui-widget-header .ui-state-default { background: #fff; border: 1px solid #ddd; color: #676f7a; font-weight: 400; }
237 | #dashboard td table, #dashboard .wide { width: 100%; }
238 |
239 | #dashboard-dialog { border: 2px solid #e56524; font-family: Arial, Helvetica, sans-serif !important; font-size: 13px !important; left: 0; outline: 0; overflow: visible !important; padding: .2em; position: absolute; top: 0; z-index: 100; }
240 | #dashboard-dialog .ui-dialog-buttonpane { padding: 5px; }
241 | #dashboard-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
242 | #dashboard-dialog .ui-helper-reset { border: 0; font-size: 100%; line-height: 1.3; list-style: none; margin: 0; outline: 0; text-decoration: none; }
243 | #dashboard-dialog .ui-state-default { border: 1px solid #ddd; color: #F8F8d5; font-weight: 400; }
244 | #dashboard-dialog .ui-state-disabled { border: 1px solid #444; color: #444; font-weight: 400; }
245 | #dashboard-dialog .ui-tabs { border: none; padding: .2em; position: relative; }
246 | #dashboard-dialog .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em; }
247 | #dashboard-dialog .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em 1em; text-decoration: none; }
248 | #dashboard-dialog .ui-widget-header { background: #fff; color: #676f7a; padding: 5px; }
249 |
250 | #menu { margin-left: 20px; margin-top: 140px; width: 260px; z-index: 9999; }
251 | #menu table { border-collapse: collapse; border-radius: 0; width: 100%; }
252 | #menu a { background: #fff; color: #676f7a; display: block; padding: 10px 15px; position: relative; }
253 | #menu .menuTree { position: relative; }
254 | #menu .menuTree.level0.closed > td > div > a:after { width: 35px; height: 35px; content: ' '; position: absolute; top: 0; right: 0; background-image: url('data:image/svg+xml;utf8,') !important; }
255 | #menu .menuTree.level0.open > td > div > a:after { width: 35px; height: 35px; content: ' '; position: absolute; top: 0; right: 0; background-image: url('data:image/svg+xml;utf8,') !important; }
256 | #menu .menuTree.level1 > td > div { margin-left: 0 !important; border-left: 5px #e56524 solid; }
257 | #menu .menuTree > td > div > div { display: none; }
258 | #menu table.room { border: none; border-spacing: 0; margin-bottom: 10px; }
259 | #menu table.room .menu_Save_config { font-weight: bold; }
260 | #menu table.room .custom-menu-entry { color: #e56524; }
261 | #menu table.room img.icon, #menu table.room svg.icon { width: 20px; height: 20px; margin: 0; position: absolute; right: 10px; top: 7px; }
262 | #menu table.room #saveCheck { margin-top: -33px; background: transparent; border-right: 5px #e56524 solid; border-left: 5px #e56524 solid; text-indent: -9999px; margin-left: 220px; }
263 | #menu table.room tr.sel a { background: #e56524; color: #fff; }
264 | #menu table.room tr.sel svg.icon { fill: #fff; }
265 | #menu table.room tr.sel td a:after { border-bottom: 17px solid transparent; border-left: 13px solid #e56524; border-top: 17px solid transparent; content: " "; height: 0; margin-top: -17px; position: absolute; right: -13px; top: 50%; width: 0; }
266 |
267 | #menuScrollArea { height: 100%; top: 0; left: 0; overflow: auto; position: relative; width: 300px; }
268 |
269 | #haToolbar { color: #676f7a; font-family: 'Source Code Pro', monospace !important; background-color: #fff; position: fixed; box-sizing: border-box; padding: 5px 15px; bottom: 0; left: 20px; min-width: 260px; border: 1px #e56524 dashed; border-bottom: none; line-height: 25px; }
270 | #haToolbar .toHdr { cursor: pointer; }
271 |
272 | svg { width: 32px; height: 32px; vertical-align: middle; }
273 | svg text.title { text-transform: none !important; letter-spacing: 2px !important; }
274 |
275 | svg.on, svg.FS20_on { fill: #e56524 !important; }
276 |
277 | #ZWDongleNrSVG { background: #f5f6f9; margin-bottom: 10px; margin-top: 10px; border-left: 5px #e56524 solid; border-right: 5px #e56524 solid; box-sizing: border-box; width: 1000px !important; }
278 |
279 | svg.zw_nr { fill: transparent !important; height: auto; width: auto; }
280 | svg.zw_nr text { fill: #e56524; }
281 | svg.zw_nr .col_link { color: #e56524; stroke: #e56524; }
282 | svg.zw_nr .zwMargin { stroke: transparent; color: transparent; }
283 | svg.zw_nr .zwLine { stroke-width: 1px; }
284 | svg.zw_nr .zwBox { stroke-width: 2px; }
285 | svg.zw_nr .zwDongle { stroke-width: 3px; }
286 |
287 | svg:not([fill]):not(.jssvg) { fill: #676f7a; }
288 |
289 | .ui-dialog { background: #fff !important; border: 2px solid #e56524 !important; padding: .2em !important; border-radius: 0 !important; color: #676f7a !important; padding: 0 !important; }
290 | .ui-dialog .ui-widget-header { color: #676f7a; }
291 | .ui-dialog .CodeMirror { width: auto; }
292 | .ui-dialog .slider { width: 350px; border: 1px #e56524 solid; height: 22px; }
293 | .ui-dialog .slider .handle { -webkit-user-select: none; /* Safari 3.1+ */ -moz-user-select: none; /* Firefox 2+ */ -ms-user-select: none; /* IE 10+ */ user-select: none; /* Standard syntax */ background: #e56524; color: #f5f6f9; cursor: pointer; position: relative; text-align: center; width: 40px; height: 22px; line-height: 22px; }
294 | .ui-dialog .colorpicker { line-height: 30px; }
295 | .ui-dialog .colorpicker_ct .slider { background: url(../jscolor/ct_background.svg); background-size: 150px; }
296 | .ui-dialog .colorpicker_ct_mired .slider { background: url(../jscolor/ct_mired_background.svg); background-size: 150px; }
297 | .ui-dialog .colorpicker_hue .slider { background: url(../jscolor/hue_background.svg); background-size: 150px; }
298 |
299 | .ui-widget-content { background: #fff !important; }
300 | .ui-widget-content#fwmenu { background: #fff; border: 1px #e56524 solid; font-size: 100%; font-weight: 400; max-width: 600px; position: absolute; text-align: left; z-index: 1005; }
301 | .ui-widget-content pre { font-family: 'Source Code Pro', monospace !important; }
302 | .ui-widget-content a { color: #e56524 !important; text-decoration: none; }
303 | .ui-widget-content caption, .ui-widget-content .mkTitle { text-transform: uppercase; font-size: 16px !important; letter-spacing: 10px; margin: 10px 0; }
304 | .ui-widget-content .makeTable { margin-bottom: 10px; }
305 | .ui-widget-content .makeTable table { width: 100%; }
306 | .ui-widget-content .makeTable thead th { font-weight: bold; color: #676f7a; padding: 10px 2px; border-bottom: 1px #676f7a solid; }
307 | .ui-widget-content .makeTable tbody th { padding-top: 5px; }
308 | .ui-widget-content .makeTable tfoot { color: #676f7a; }
309 | .ui-widget-content .makeTable tfoot td { padding-top: 5px; }
310 | .ui-widget-content .makeTable tr.odd > td, .ui-widget-content .makeTable tr.even > td { padding: 5px; }
311 | .ui-widget-content .makeTable .block tr.odd { background: #f5f6f9; }
312 | .ui-widget-content .detLink { border: 1px #e56524 solid; padding: 2px 10px; display: inline-block; line-height: 20px; vertical-align: top; float: initial !important; }
313 | .ui-widget-content .detLink a { color: #e56524; }
314 | .ui-widget-content input[type="text"] { border: 1px #e56524 solid; color: #555; background: #fff; font-size: 16px; height: 20px; margin-left: 5px; margin-right: 5px; }
315 |
316 | .ui-button { border-radius: 0 !important; color: #e56524 !important; }
317 |
318 | .ui-dialog-titlebar { display: block !important; border: none !important; border-radius: 0 !important; background: #f5f6f9 !important; }
319 |
320 | #dashboard .ui-widget-content a, #dashboard .fhemlog, #dashboard #fwmenu li a { color: #e56524 !important; }
321 | #dashboard .ui-corner-all, #dashboard .ui-corner-top, #dashboard .ui-corner-right, #dashboard .ui-corner-left, #dashboard .ui-corner-bottom, #dashboard .ui-corner-bl, #dashboard .ui-corner-br, #dashboard .ui-corner-tl, #dashboard .ui-corner-tr { border-radius: 0 !important; border-bottom-right-radius: 0 !important; border-bottom-left-radius: 0 !important; border-top-right-radius: 0 !important; border-top-left-radius: 0 !important; }
322 |
323 | #right { max-width: 1000px; width: 100%; }
324 | #right > h3, #right > h4 { font-size: 20px; text-transform: uppercase; letter-spacing: 10px; margin-top: 10px; }
325 | #right > ul, #right > div, #right > div > ul, #right > p { color: #676f7a; background: #fff; border-collapse: collapse; border-left: 5px #e56524 solid; font-family: 'Source Code Pro', monospace !important; max-width: 995px; padding: 5px; width: 100%; }
326 | #right > ul h3, #right > div h3, #right > div > ul h3, #right > p h3 { font-size: 16px; letter-spacing: 10px; text-transform: uppercase; font-weight: bold; }
327 | #right > ul dd, #right > div dd, #right > div > ul dd, #right > p dd { margin-left: 50px; }
328 | #right > ul dt, #right > div dt, #right > div > ul dt, #right > p dt { margin-left: 25px; }
329 | #right > ul b, #right > ul strong, #right > div b, #right > div strong, #right > div > ul b, #right > div > ul strong, #right > p b, #right > p strong { font-weight: bold; text-transform: uppercase; }
330 | #right > ul p, #right > div p, #right > div > ul p, #right > p p { margin: 5px 0; }
331 | #right > ul code, #right > div code, #right > div > ul code, #right > p code { font-family: 'Source Code Pro', monospace; }
332 | #right > ul ul, #right > div ul, #right > div > ul ul, #right > p ul { list-style-type: square; margin-left: 20px; }
333 | #right > ul ul li, #right > div ul li, #right > div > ul ul li, #right > p ul li { margin: 10px 0; }
334 | #right > ul table td, #right > div table td, #right > div > ul table td, #right > p table td { padding: 5px; }
335 |
--------------------------------------------------------------------------------