diff --git a/gulpfile.js b/gulpfile.js index 403edb5..9fa832e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -126,9 +126,6 @@ function writeWordJs(data, src) { } text += '};\n'; - console.error(text); - - if (src.indexOf('admin') === -1) { fs.writeFileSync(src + 'js/' + fileName, text); } else { diff --git a/src/js/words.js b/src/js/words.js index c96a6b3..996d908 100644 --- a/src/js/words.js +++ b/src/js/words.js @@ -21,7 +21,7 @@ systemDictionary = { "Active repository:": { "cn": "Active repository", "en": "Active repository"}, "Adapter configuration": { "cn": "Adapter configuration", "en": "Adapter configuration"}, "Adapter settings for %s states": { "cn": "Adapter settings for %s states", "en": "Adapter settings for %s states"}, - "Adapters": { "cn": "Adapters", "en": "Adapters"}, + "Adapters": { "cn": "适配器", "en": "Adapters"}, "Adapters from this Group installed": { "cn": "Adapters from this group installed", "en": "Adapters from this group installed"}, "Add": { "cn": "Add", "en": "Add"}, "Add Objecttree from JSON File": { "cn": "Add objects tree from JSON file", "en": "Add objects tree from JSON file"}, diff --git a/www/css/admin.css.map b/www/css/admin.css.map index e801fed..2e5c31b 100644 --- a/www/css/admin.css.map +++ b/www/css/admin.css.map @@ -1 +1 @@ -{"version":3,"sources":["../lib/css/iob/selectID.less","commons.less","admin.less"],"names":[],"mappings":"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","sourcesContent":["@import \"../../../less/commons\";\n\n.dialog-select-object-ids {\n .true {\n color: #06960E;\n font-weight: bold;\n }\n .false {\n color: #D92626;\n font-weight: normal;\n }\n .error {\n color: #D92626;\n font-weight: normal;\n }\n\n .highlight {\n animation: highlight 2s;\n }\n .grid-main-div {\n height: calc(~'100% - 50px');\n }\n .grid-main-wh-div { // with header\n height: calc(~'100% - '@grid-offset-wh);\n }\n .grid-main-wob-div { // without buttons\n height: calc(~'100% - '@grid-offset - @main-toolbar-full-height);\n }\n .grid-main-wh-div,\n .grid-main-wob-div {\n overflow-x: hidden;\n width: 100%;\n padding:0;\n overflow-y: scroll;\n &>table {\n width: calc(~\"100% - 5px\");\n }\n }\n @-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }\n @-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }\n @keyframes spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } }\n\n .objects-folder {\n height: 0.8em;\n width: 0.8em;\n margin: 0.3em;\n }\n\n .objects-name-coll-table-td {\n border-spacing: 0;\n padding: 0;\n margin: 0;\n border: 0;\n }\n\n .objects-name-coll-icon {\n /*position: relative;*/\n /*top: 3px;*/\n vertical-align: sub;\n }\n\n .objects-name-coll-title {\n border-spacing: 0;\n padding: 0;\n margin: 0;\n border: 0;\n display: inline-block;\n padding-left: @line-indent;\n vertical-align: middle;\n }\n\n .objects-inline-edit {\n width: 100%;\n height: 24px;\n border:0;\n padding:0;\n margin:0;\n padding-left:4px;\n }\n\n\n table.objects-list-table td {\n border: @td-border;\n }\n\n .objects-list-table {\n //.new-iob-list-table;\n //.iob-min-table;\n background: @iob-background;\n white-space: nowrap;\n table-layout: fixed;\n border-collapse: collapse;\n border-spacing: 0;\n padding: 0;\n overflow: auto;\n\n //.iob-font\n font-family: @iob-font;\n font-weight: normal;\n //.iob-list-font\n font-size: @list-font-size !important;\n\n border-top: 0; // objects\n\n width: calc(~'100% - 10px');\n margin: 0 5px 0 1px; /* for mouse over rahmen */\n\n outline: 5px;\n outline-offset: -1px;\n }\n\n .objects-list-table>tbody>tr>td {\n padding-left: @line-indent;\n }\n\n .objects-list-table .fancytree-title {\n font-weight: normal !important;\n }\n\n /** inline edit **/\n /**/\n .select-id-quick-edit {\n height: 17px;\n }\n .select-id-quick-edit-buttons {\n position: absolute;\n z-index: 3;\n top: 2px;\n right: 5px;\n &.text {\n top: 23px;\n .select-id-quick-edit-ok,\n .select-id-quick-edit-cancel {\n border: 1px solid gray;\n background-color: white;\n }\n }\n .select-id-quick-edit-ok,\n .select-id-quick-edit-cancel {\n cursor: pointer;\n width: 16px;\n height: 16px;\n border-radius: 0;\n display: inline-block;\n }\n }\n\n\n /*select ~ .select-id-quick-edit-ok, // only if type = combobx\n select ~ .select-id-quick-edit-cancel { // only if type = combobx\n top:1px;\n }*/\n\n @quick-edit-padding: 4px;\n .objects-inline-edit {\n position: relative;\n left: -@quick-edit-padding;\n padding-left: @quick-edit-padding;\n padding-right: @quick-edit-padding;\n width: calc(~'100% - 0px');\n //max-width: calc(~'100px - 10px');\n z-index: 2;\n font-family: @iob-font;\n font-size: @list-font-size;\n vertical-align: middle;\n text-overflow-mode: clip;\n }\n .objects-name-coll-title .objects-inline-edit { // only for object name\n //background:#f00;\n width: calc(~'100% + '@quick-edit-padding - 1);\n\n }\n input.objects-inline-edit {\n width: calc(~'100% - 2px');\n z-index: 2;\n }\n .objects-name-coll-title {\n }\n\n .objects-list-table>colgroup>col:nth-child(8) {\n width: 80px !important;\n min-width: 80px !important;\n }\n .filter-btn {\n width: 18px;\n height: 18px;\n border: 0;\n background: #fff;\n }\n .main-header-table {\n tr {\n background: #ffffff;\n }\n td.input {\n width: 100%\n }\n select.filter {\n option {\n line-height: 0.5em; background: #fff\n }\n }\n }\n\n .objects-list-running {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 5rem;\n padding: 12px;\n background: rgba(185, 185, 185, 0.5);\n text-align:center;\n color: white;\n font-weight: bold;\n border-radius: 5px;\n font-size: 10px; // old style has text, new style has cycle\n }\n\n .ui-state-active.fancytree-active {\n color: black !important;\n .ui-icon {\n background-image: url(../lib/css/themes/jquery-ui/redmond/images/ui-icons_777777_256x240.png) !important;\n }\n }\n\n // scrollbar\n *::-webkit-scrollbar-track {\n background-color: @admin-sidemenu-background;\n }\n *::-webkit-scrollbar {\n width: 10px;\n background-color: @admin-sidemenu-background;\n }\n *::-webkit-scrollbar-thumb {\n background-color: @admin-sidemenu-scrollbar-thumb-color;\n }\n\n .select-button-push,\n .select-button-edit,\n .select-button-ok,\n .select-button-cancel {\n width: 26px;\n height: 20px;\n }\n\n .main-toolbar-table {\n position: relative;\n .select-id-custom-buttons {\n display: inline-block;\n }\n .iob-toolbar-sep {\n display: inline-block;\n margin-left: 0.5rem;\n }\n .panel-button {\n display: inline-block;\n line-height: @toolbar-size;\n height: @toolbar-size;\n width: @toolbar-size;\n color: #fff;\n position: relative;\n overflow: hidden;\n z-index: 1;\n padding: 0;\n border-radius: 50%;\n transition: background-color .3s;\n cursor: pointer;\n vertical-align: middle;\n &:hover {\n border: 0;\n }\n i {\n margin-left: -.5px;\n font-size: 1.1rem;\n line-height: 28px;\n margin-top: -1px;\n }\n }\n .btn-expert {\n margin-right: 3px;\n }\n .btn-history {\n float: right;\n margin-right: 20px;\n }\n .objects-info {\n display: inline-block;\n float: right;\n padding-right: 1rem;\n margin-top: 5px;\n }\n }\n\n .old-style {\n .main-header-table {\n width: 100%;\n th span {\n font-size: 11px;\n font-weight: normal;\n }\n }\n .grid-main-wob-div {\n height: calc(100% - 50px);\n }\n .iob-list-icon {\n height: 16px;\n }\n .clippy-button {\n height: 16px;\n }\n .ui-state-active, .ui-widget-content .ui-state-active {\n background: inherit !important;\n }\n }\n\n .material {\n .objects-list-running {\n height: 5rem;\n }\n .filter-btn {\n i {\n font-size: 12px;\n }\n }\n .td-button-placeholder {\n width: 21px;\n }\n .custom-obj-btn {\n cursor: pointer;\n color: #4c4c4c;\n background: white;\n border: 0;\n padding-left: 4px;\n margin-right: 1px;\n margin-top: 3px;\n &:hover {\n background: @admin-buttons-color;\n }\n\n i {\n font-size: 12px;\n }\n }\n .iob-list-icon, .instance-image {\n width: 18px;\n height: 18px;\n }\n .main-toolbar-table {\n .panel-button {\n background-color: #2196f3;\n }\n }\n }\n\n .main-header-table {\n th {\n border-right: 1px solid #b9b9b9;\n color: gray;\n }\n .filter {\n display: inline-block;\n border: 0;\n height: 24px;\n width: calc(~\"100% - 5px\");\n padding: 0 0 0 5px;;\n background: transparent;\n color: gray;\n font-family: @iob-font;\n font-size: @list-font-size !important;\n margin-bottom: 0;\n }\n .filter-btn {\n display: none;\n }\n .filter-active {\n .filter {\n color: black;\n width: calc(~\"100% - 24px\");\n }\n .filter-btn {\n padding: 0;\n display: inline-block;\n width: 19px;\n height: 16px;\n background: transparent;\n border: 0;\n margin-top: 3px;\n i {\n font-size: 12px;\n }\n }\n }\n }\n\n .clippy-button, .edit-dialog-button {\n position: absolute;\n top: 1px;\n z-index: 1;\n margin-top: 1px;\n .tiny {\n font-size: 10px;\n }\n }\n .clippy-button {\n right: 0;\n }\n .edit-dialog-button {\n right: 22px;\n }\n\n .edit-enum {\n .edit-dialog-button {\n right: 0;\n }\n }\n\n .select-value {\n display: inline-block;\n width: 100%;\n padding-left: 5px;\n position: relative;\n }\n\n @keyframes highlight {\n 0% {\n color: #00f900\n }\n 80% {\n color: green\n }\n 100% {\n color: black;\n }\n }\n .highlight {\n animation: highlight 2s;\n }\n .select-button-push {\n i {\n font-size: 16px;\n margin-left: -1px;\n }\n background: white;\n border: none;\n }\n}\n\n#select-id-dialog {\n &>span {\n float:left;\n margin:0 7px 50px 0;\n }\n}\n.m {\n #dialog-select-member {\n width: calc(~\"100% - 2rem\");\n height: calc(~\"100% - 2rem\") !important;\n border: 3px solid #2196f3;\n box-sizing: border-box;\n\n td,\n th {\n padding: 1px 4px;\n }\n .modal-content {\n padding: 0.5rem 0.2rem !important;\n width: 100% !important;\n overflow: hidden;\n\n .title {\n padding: 3px 10px;\n }\n\n .grid-main-wob-div {\n height: calc(~\"100% - 103px\");\n }\n }\n }\n #dialog-enum-edit {\n top: 1rem !important;\n height: calc(~\"100% - 2rem\");\n max-height: calc(~\"100% - 2rem\");\n .dialog-enum-list-row {\n\n }\n .dialog-enum-list-col {\n height: calc(100% - 81px);\n overflow-y: auto;\n overflow-x: hidden;\n\n .dialog-enum-list-id {\n margin-left: 10px;\n font-size: 10px;\n }\n .iob-list-icon {\n height: 24px;\n width: 24px;\n }\n .title {\n padding-left: 10px;\n font-size: 18px;\n }\n }\n .btn-close {\n background-color: #b5b5b5\n }\n .name {\n margin-left: 10px\n }\n }\n}\n","@main-font: \"Segoe UI\", Tahoma, Arial, \"Courier New\", sans-serif;\n@main-background-color: #64b5f6;\n@main-second-background-color: #066594;\n@main-active-color: #2196f3;\n\n@main-frame-distance: 7px;\n\n@tiles-background: #fff;\n@tiles-tile-background: #fff;\n@tiles-tile-color: rgba(0, 0, 0, 0.87);\n\n@admin-buttons-background: #FFF;\n@admin-buttons-color: @main-background-color;\n\n@admin-sidemenu-user-view-background:#1d598c; //#575757;\n@admin-sidemenu-background: #ccc;\n@admin-sidemenu-scrollbar-thumb-color: #575757;\n@admin-sidemenu-background-hover: #066594;\n@admin-sidemenu-color: #FFF;\n@admin-sidemenu-font: @main-font;\n@admin-sidemenu-transition: 0.3s;\n@admin-sidemenu-width: 180px;\n@admin-sidemenu-main-header-background: @main-background-color;\n@admin-sidemenu-main-background: #efefef;\n@admin-sidemenu-main-footer-background: #066694;\n@admin-sidemenu-main-items-color: #0e2e4a;\n@admin-filter-placeholder-color: #666666;\n\n@admin-adapters-updatable-background: #adffad;\n@admin-adapters-installed-background: #B4DEFF;\n@admin-adapters-updatable-color: #449c44;\n@admin-adapters-tiles-background: #f5f5f5;\n\n@admin-sidemenu-main-header-height: 64px;\n@admin-sidemenu-main-footer-height: 0;\n\n@admin-small-buttons-size: 28px;\n\n@admin-toolbar-height: 64px;\n@admin-table-header-background: #FFF;\n@admin-table-row-even-background: #eee;\n\n// Common loader\n@offset: 187;\n@duration: 1.4s;\n\n@iob-background: #efefef;\n@td-border: 1px solid #e0e0e0;\n//1px solid #c8c8c8;\n\n@iob-font: \"Segoe UI\", Tahoma, Arial, \"Courier New\" !important;\n//@list-font-size: 12px; // .86em;\n//@list-font-size: .86rem;\n\n//@list-font-size: .78rem;\n@list-font-size: .82rem;\n@toolbar-font-size: .75rem; //.82rem;\n//@list-font-size: .9rem;\n\n@main-frame-distance: 7px;\n\n@line-indent: 5px;\n@header-table-distance: 0;\n@even-bg-color: #e9e9e9;\n@icon-size: 12px;\n@td-button-size: 20px;\n\n@toolbar-size: 24px;\n@toolbar-button-distance: 2px; // + 2 from td's border\n@toolbar-button-full-distance: @toolbar-button-distance + 2; // including the 2 from td's border\n@toolbar-background: #fff;\n@td-toolbar-border-size: 1px;\n@td-toolbar-border: @td-toolbar-border-size solid #c0c0c0;\n@toolbar-filter-active-background: #ffbfb6;\n\n//@toolbar-y-margin: 2px;\n@toolbar-y-margin: 0px;\n@toolbar-image-size: 16px;\n@toolbar-outer-hover: 1px solid #d0d0d0;\n//@main-toolbar-height: 30px;\n//@main-toolbar-full-height: 30px + 5px; // 5px margin-bottom\n//@main-toolbar-height: 26px; // incl. 2px border from td\n//@main-toolbar-full-height: @toolbar-size + @td-toolbar-border-size * 2 + @toolbar-y-margin * 2 - @tabs-padding-top;\n@main-toolbar-full-height: @toolbar-size + @td-toolbar-border-size * 2 + @toolbar-y-margin * 2;\n@toolbar-btn-clear-size: 18px;\n\n@list-header-background: #fff;\n\n@tabs-padding-top: 5px;\n@tabs-padding: 7px;\n//@tabs-height: 32px;\n@tabs-height: 34px;\n\n@header-height: 24px;\n\n@grid-offset: @tabs-padding-top + @tabs-padding + @main-toolbar-full-height;\n@grid-offset-wh: (@grid-offset) + @header-height - 40px;","@import \"../lib/css/iob/selectID\";\n@import \"commons\";\n\nbody {\n font-size: 12px;\n margin: 0;\n padding: 0;\n height: 100%;\n //.iob-font\n font-family: @iob-font;\n font-weight: normal;\n overflow: hidden;\n background: #fff;\n}\n\n/* Load material icons */\n@font-face {\n font-family: 'Material Icons';\n font-style: normal;\n font-weight: 400;\n src: url(./../lib/fonts/material.woff2) format('woff2'), url(./../lib/fonts/material.woff) format('woff');\n}\n\n.material-icons {\n font-family: 'Material Icons';\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n}\n\n#tabs {\n padding: 0;\n margin: 0;\n border: none;\n border-radius: 0;\n}\n\n// loader\n#connecting {\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n position: fixed;\n background: rgba(0,0,0,0.3);\n z-index: 20000;\n\n .connecting-div {\n left: 40%;\n top: 40%;\n width: 20%;\n height: 20%;\n position: absolute;\n\n .spinner {\n animation: rotator @duration linear infinite;\n }\n\n .path {\n stroke-dasharray: @offset;\n stroke-dashoffset: 0;\n transform-origin: center;\n animation:\n dash @duration ease-in-out infinite,\n colors (@duration*4) ease-in-out infinite;\n }\n }\n}\n\n/* -------------------------- LEDS ------------------------------------ */\n\n.led-all, .led-green, .led-yellow, .led-gray, .led-red, .led-orange, .led-blue {\n border-radius: 50%;\n box-shadow: #555D0D 0 0 1px 1px, rgb(68, 111, 68) 0 0 0, inset #e44949 0 0 0;\n height: 0.9em;\n width: 0.9em;\n margin-left: 0.6em;\n}\n\n.led-red {\n background-color: #FF9999;\n}\n\n.led-green {\n background-color: rgb(134, 214, 134);\n}\n\n.led-yellow {\n background-color: #A90;\n}\n\n.led-orange {\n background-color: #F7E43B;\n}\n.led-blue {\n background-color: #4AB;\n}\n.led-gray {\n background-color: #bababa;\n}\n\n// admin icon\n.user-view #current-user-icon img {\n height: 96px;\n width: auto;\n border-radius: 96px;\n}\n/****/\n\n.main-admin-buttons {\n border-spacing: @toolbar-button-full-distance;\n width: auto;\n position: relative;\n height: 27px;\n //margin-left: 2px;\n margin-top: 1px;\n padding-left: 0.5rem;\n #host-adapters {\n .imgHost {\n max-height: 30px;\n margin-top: -3px;\n padding-right: 1rem;\n }\n a {\n margin-left: 0;\n white-space: nowrap;\n }\n min-width: 200px;\n }\n .dropdown-button {\n padding-left: 5px;\n .imgHost {\n max-height: 30px;\n padding-top: 3px;\n margin-right: 5px;\n }\n }\n\n a {\n margin-left: 1.5rem;\n }\n .safari #host-adapters-btn,\n .ie #host-adapters-btn {\n margin-top: 10px !important; // for safari. Safari does not support line-height\n }\n\n .button-version {\n color: @admin-sidemenu-color;\n position: absolute;\n top: 0;\n right: 4rem;\n }\n .button-icon {\n position: absolute;\n top: 1rem;\n right: 1rem;\n img {\n width: 32px;\n }\n }\n @media screen and (min-width: 600px) and (max-width: 700px) {\n .button-version {\n display: none;\n }\n }\n @media screen and (max-width: 600px) {\n .button-icon, .button-version {\n display: none;\n }\n }\n .button-current-user {\n padding-left: 1rem;\n div {\n position: relative;\n height: @admin-sidemenu-main-header-height;\n span {\n position: absolute;\n top: 0;\n left: 2rem;\n }\n }\n }\n .safari li,\n .ie li {\n vertical-align: middle; // for safari. Safari does not support line-height\n }\n}\n\n.ram-info-td {\n white-space: nowrap;\n font-size: 14px;\n //.iob-font\n font-family: @iob-font;\n font-weight: normal;\n}\n\n.ram-font-weight {\n font-weight: 600;\n}\n\n.choose-tabs-config-button {\n //height: 35px;\n height: @tabs-height;\n width: 18px;\n background: #fff;\n //top: -3px;\n position: relative;\n text-align: center;\n font-size: 10px;\n color: #a0a0a0;\n cursor: pointer;\n}\n\n.events-grid-div {\n //height: calc(~'100% - 50px') !important;\n height: calc(~'100% - 24px') !important;\n}\n\n@grid-tables: states, groups, users, enums;\n\n.grid-table-classes(@index) when (@index > 0) {\n .grid-table-classes((@index - 1));\n @view: extract(@grid-tables, @index);\n\n table#grid-@{view} {\n //display: inline-block;\n //border-left: @td-border;\n border-collapse: collapse;\n }\n\n table#grid-@{view} {\n &:extend(.iob-list-font);\n position: relative;\n top: @header-table-distance - 1px;\n }\n\n table#grid-@{view} > tbody > tr {\n //.iob-list-table;\n font-family: @iob-font;\n font-weight: normal;\n font-size: @list-font-size !important;\n border: @td-border !important;\n white-space: nowrap;\n border: 0;\n\n height: 25px !important;\n padding: 0;\n padding-left: @line-indent;\n }\n\n //table#grid-@{view} > tbody > tr.jqgfirstrow {\n table#grid-@{view} > tbody > tr:first-child {\n height: 0 !important;\n visibility: hidden !important;\n }\n}\n.grid-table-classes(length(@grid-tables));\n\n.admin-tab { // äußerster div eines Tabs\n height: calc(~'100% - 47px');\n}\n.grid-main-div {\n height: calc(~'100% - 50px');\n}\n\n#grid-instances-head>tr {\n height: @header-height;\n}\n\n#grid-hosts-head>tr:first-child {\n height: @header-height;\n}\n\n#iob-body .ui-button-text-only, #iob-body .ui-button-text {\n //.iob-font-12;\n font-size: @list-font-size !important;\n //.iob-font\n font-family: @iob-font;\n font-weight: normal;\n}\n\n// modals\n.dialog-icon {\n float: right;\n}\n.dialog-text {\n font-size: 1.2rem;\n}\n#dialog-host-update {\n p {\n font-size: 1rem;\n }\n textarea {\n font-family: monospace;\n width: 100%;\n height: 7rem;\n resize: none;\n }\n}\n\n// License dialog\n#dialog-license-main {\n h5 {\n background: @main-background-color;\n color: @admin-buttons-background;\n padding: 0.5rem;\n }\n .license-text {\n margin-bottom: 0;\n }\n .license_text {\n width: 100%;\n height: calc(~\"100% - 190px\");\n margin-bottom: 0;\n overflow: auto;\n }\n input[type=\"checkbox\"].filled-in:not(:checked) + span:not(.lever):after {\n -webkit-animation: colorBlink 3s ease-out infinite;\n -moz-animation: colorBlink 3s ease-out infinite;\n -o-animation: colorBlink 3s ease-out infinite;\n animation: colorBlink 3s ease-out infinite;\n }\n .license-checkbox-box {\n color: #ff636e;\n }\n}\n\n@-webkit-keyframes colorBlink {\n 0% {\n border-color: #5a5a5a;\n }\n 50% {\n border-color: #ff636e;\n }\n 100% {\n border-color: #5a5a5a;\n }\n}\n\n@-moz-keyframes colorBlink {\n 0% {\n border-color: #5a5a5a;\n }\n 50% {\n border-color: #ff636e;\n }\n 100% {\n border-color: #5a5a5a;\n }\n}\n\n@-o-keyframes colorBlink {\n 0% {\n border-color: #5a5a5a;\n }\n 50% {\n border-color: #ff636e;\n }\n 100% {\n border-color: #5a5a5a;\n }\n}\n\n@keyframes colorBlink {\n 0% {\n border-color: #5a5a5a;\n }\n 50% {\n border-color: #ff636e;\n }\n 100% {\n border-color: #5a5a5a;\n }\n}\n\n.modal-overlay {\n background: gray;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n// Command dialog\n#dialog-command {\n .title {\n background: @main-background-color;\n color: @admin-buttons-background;\n padding: 0.5rem;\n }\n .textarea .ack{\n margin-bottom: 0;\n }\n textarea {\n background: #e9e9e9;\n font-family: courier, monospace;\n font-size: 11px;\n resize: none;\n width: 100%;\n height: calc(~\"100% - 185px\");\n margin-bottom: 0;\n }\n .progress-dont-close {\n float: left;\n padding-left: 1rem;\n padding-top: 1rem;\n /*&.disabled {\n opacity: 0.5;\n pointer-events: none;\n }*/\n }\n .switch {\n text-align: right;\n }\n .command {\n font-style: italic;\n }\n .btn {\n margin-right: 1.5rem;\n }\n .progress-text {\n font-size: 14px;\n &.error {\n color: #ff636e;\n }\n }\n}\n.button-command {\n right: 12rem;\n position: absolute;\n top: 0;\n cursor: pointer;\n &.error::after {\n content: \"\";\n background: #ff636e;\n position: absolute;\n opacity: 0.5;\n top: 1.4rem;\n bottom: 1.4rem;\n left: 0;\n right: 0;\n }\n &.in-progress {\n animation-name: in-progress;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n }\n}\n@keyframes in-progress {\n 0% {opacity: 1;}\n 50% {opacity: 0.3;}\n 100% {opacity: 1;}\n}\n.text-overflow{\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dialog-system-buttons{\n a{\n margin: 0.5em;\n }\n}\n"],"file":"admin.css"} \ No newline at end of file +{"version":3,"sources":["../lib/css/iob/selectID.less","commons.less","admin.less"],"names":[],"mappings":"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","sourcesContent":["@import \"../../../less/commons\";\n\n.dialog-select-object-ids {\n .true {\n color: #06960E;\n font-weight: bold;\n }\n .false {\n color: #D92626;\n font-weight: normal;\n }\n .error {\n color: #D92626;\n font-weight: normal;\n }\n\n .highlight {\n animation: highlight 2s;\n }\n .grid-main-div {\n height: calc(~'100% - 50px');\n }\n .grid-main-wh-div { // with header\n height: calc(~'100% - '@grid-offset-wh);\n }\n .grid-main-wob-div { // without buttons\n height: calc(~'100% - '@grid-offset - @main-toolbar-full-height);\n }\n .grid-main-wh-div,\n .grid-main-wob-div {\n overflow-x: hidden;\n width: 100%;\n padding:0;\n overflow-y: scroll;\n &>table {\n width: calc(~\"100% - 5px\");\n }\n }\n @-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }\n @-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }\n @keyframes spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } }\n\n .objects-folder {\n height: 0.8em;\n width: 0.8em;\n margin: 0.3em;\n }\n\n .objects-name-coll-table-td {\n border-spacing: 0;\n padding: 0;\n margin: 0;\n border: 0;\n }\n\n .objects-name-coll-icon {\n /*position: relative;*/\n /*top: 3px;*/\n vertical-align: sub;\n }\n\n .objects-name-coll-title {\n border-spacing: 0;\n padding: 0;\n margin: 0;\n border: 0;\n display: inline-block;\n padding-left: @line-indent;\n vertical-align: middle;\n }\n\n .objects-inline-edit {\n width: 100%;\n height: 24px;\n border:0;\n padding:0;\n margin:0;\n padding-left:4px;\n }\n\n\n table.objects-list-table td {\n border: @td-border;\n }\n\n .objects-list-table {\n //.new-iob-list-table;\n //.iob-min-table;\n background: @iob-background;\n white-space: nowrap;\n table-layout: fixed;\n border-collapse: collapse;\n border-spacing: 0;\n padding: 0;\n overflow: auto;\n\n //.iob-font\n font-family: @iob-font;\n font-weight: normal;\n //.iob-list-font\n font-size: @list-font-size !important;\n\n border-top: 0; // objects\n\n width: calc(~'100% - 10px');\n margin: 0 5px 0 1px; /* for mouse over rahmen */\n\n outline: 5px;\n outline-offset: -1px;\n }\n\n .objects-list-table>tbody>tr>td {\n padding-left: @line-indent;\n }\n\n .objects-list-table .fancytree-title {\n font-weight: normal !important;\n }\n\n /** inline edit **/\n /**/\n .select-id-quick-edit {\n height: 17px;\n }\n .select-id-quick-edit-buttons {\n position: absolute;\n z-index: 3;\n top: 2px;\n right: 5px;\n &.text {\n top: 23px;\n .select-id-quick-edit-ok,\n .select-id-quick-edit-cancel {\n border: 1px solid gray;\n background-color: white;\n }\n }\n .select-id-quick-edit-ok,\n .select-id-quick-edit-cancel {\n cursor: pointer;\n width: 16px;\n height: 16px;\n border-radius: 0;\n display: inline-block;\n }\n }\n\n\n /*select ~ .select-id-quick-edit-ok, // only if type = combobx\n select ~ .select-id-quick-edit-cancel { // only if type = combobx\n top:1px;\n }*/\n\n @quick-edit-padding: 4px;\n .objects-inline-edit {\n position: relative;\n left: -@quick-edit-padding;\n padding-left: @quick-edit-padding;\n padding-right: @quick-edit-padding;\n width: calc(~'100% - 0px');\n //max-width: calc(~'100px - 10px');\n z-index: 2;\n font-family: @iob-font;\n font-size: @list-font-size;\n vertical-align: middle;\n text-overflow-mode: clip;\n }\n .objects-name-coll-title .objects-inline-edit { // only for object name\n //background:#f00;\n width: calc(~'100% + '@quick-edit-padding - 1);\n\n }\n input.objects-inline-edit {\n width: calc(~'100% - 2px');\n z-index: 2;\n }\n .objects-name-coll-title {\n }\n\n .objects-list-table>colgroup>col:nth-child(8) {\n width: 80px !important;\n min-width: 80px !important;\n }\n .filter-btn {\n width: 18px;\n height: 18px;\n border: 0;\n background: #fff;\n }\n .main-header-table {\n tr {\n background: #ffffff;\n }\n td.input {\n width: 100%\n }\n select.filter {\n option {\n line-height: 0.5em; background: #fff\n }\n }\n }\n\n .objects-list-running {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 5rem;\n padding: 12px;\n background: rgba(185, 185, 185, 0.5);\n text-align:center;\n color: white;\n font-weight: bold;\n border-radius: 5px;\n font-size: 10px; // old style has text, new style has cycle\n }\n\n .ui-state-active.fancytree-active {\n color: black !important;\n .ui-icon {\n background-image: url(../lib/css/themes/jquery-ui/redmond/images/ui-icons_777777_256x240.png) !important;\n }\n }\n\n // scrollbar\n *::-webkit-scrollbar-track {\n background-color: @admin-sidemenu-background;\n }\n *::-webkit-scrollbar {\n width: 10px;\n background-color: @admin-sidemenu-background;\n }\n *::-webkit-scrollbar-thumb {\n background-color: @admin-sidemenu-scrollbar-thumb-color;\n }\n\n .select-button-push,\n .select-button-edit,\n .select-button-ok,\n .select-button-cancel {\n width: 26px;\n height: 20px;\n }\n\n .main-toolbar-table {\n position: relative;\n .select-id-custom-buttons {\n display: inline-block;\n }\n .iob-toolbar-sep {\n display: inline-block;\n margin-left: 0.5rem;\n }\n .panel-button {\n display: inline-block;\n line-height: @toolbar-size;\n height: @toolbar-size;\n width: @toolbar-size;\n color: #fff;\n position: relative;\n overflow: hidden;\n z-index: 1;\n padding: 0;\n border-radius: 50%;\n transition: background-color .3s;\n cursor: pointer;\n vertical-align: middle;\n &:hover {\n border: 0;\n }\n i {\n margin-left: -.5px;\n font-size: 1.1rem;\n line-height: 28px;\n margin-top: -1px;\n }\n }\n .btn-expert {\n margin-right: 3px;\n }\n .btn-history {\n float: right;\n margin-right: 20px;\n }\n .objects-info {\n display: inline-block;\n float: right;\n padding-right: 1rem;\n margin-top: 5px;\n }\n }\n\n .old-style {\n .main-header-table {\n width: 100%;\n th span {\n font-size: 11px;\n font-weight: normal;\n }\n }\n .grid-main-wob-div {\n height: calc(100% - 50px);\n }\n .iob-list-icon {\n height: 16px;\n }\n .clippy-button {\n height: 16px;\n }\n .ui-state-active, .ui-widget-content .ui-state-active {\n background: inherit !important;\n }\n }\n\n .material {\n .objects-list-running {\n height: 5rem;\n }\n .filter-btn {\n i {\n font-size: 12px;\n }\n }\n .td-button-placeholder {\n width: 21px;\n }\n .custom-obj-btn {\n cursor: pointer;\n color: #4c4c4c;\n background: white;\n border: 0;\n padding-left: 4px;\n margin-right: 1px;\n margin-top: 3px;\n &:hover {\n background: @admin-buttons-color;\n }\n\n i {\n font-size: 12px;\n }\n }\n .iob-list-icon, .instance-image {\n width: 18px;\n height: 18px;\n }\n .main-toolbar-table {\n .panel-button {\n background-color: #2196f3;\n }\n }\n }\n\n .main-header-table {\n th {\n border-right: 1px solid #b9b9b9;\n color: gray;\n }\n .filter {\n display: inline-block;\n border: 0;\n height: 24px;\n width: calc(~\"100% - 5px\");\n padding: 0 0 0 5px;;\n background: transparent;\n color: gray;\n font-family: @iob-font;\n font-size: @list-font-size !important;\n margin-bottom: 0;\n }\n .filter-btn {\n display: none;\n }\n .filter-active {\n .filter {\n color: black;\n width: calc(~\"100% - 24px\");\n }\n .filter-btn {\n padding: 0;\n display: inline-block;\n width: 19px;\n height: 16px;\n background: transparent;\n border: 0;\n margin-top: 3px;\n i {\n font-size: 12px;\n }\n }\n }\n }\n\n .clippy-button, .edit-dialog-button {\n position: absolute;\n top: 1px;\n z-index: 1;\n margin-top: 1px;\n .tiny {\n font-size: 10px;\n }\n }\n .clippy-button {\n right: 0;\n }\n .edit-dialog-button {\n right: 22px;\n }\n\n .edit-enum {\n .edit-dialog-button {\n right: 0;\n }\n }\n\n .select-value {\n display: inline-block;\n width: 100%;\n padding-left: 5px;\n position: relative;\n }\n\n @keyframes highlight {\n 0% {\n color: #00f900\n }\n 80% {\n color: green\n }\n 100% {\n color: black;\n }\n }\n .highlight {\n animation: highlight 2s;\n }\n .select-button-push {\n i {\n font-size: 16px;\n margin-left: -1px;\n }\n background: white;\n border: none;\n }\n}\n\n#select-id-dialog {\n &>span {\n float:left;\n margin:0 7px 50px 0;\n }\n}\n.m {\n #dialog-select-member {\n width: calc(~\"100% - 2rem\");\n height: calc(~\"100% - 2rem\") !important;\n border: 3px solid #2196f3;\n box-sizing: border-box;\n\n td,\n th {\n padding: 1px 4px;\n }\n .modal-content {\n padding: 0.5rem 0.2rem !important;\n width: 100% !important;\n overflow: hidden;\n\n .title {\n padding: 3px 10px;\n }\n\n .grid-main-wob-div {\n height: calc(~\"100% - 103px\");\n }\n }\n }\n #dialog-enum-edit {\n top: 1rem !important;\n height: calc(~\"100% - 2rem\");\n max-height: calc(~\"100% - 2rem\");\n .dialog-enum-list-row {\n\n }\n .dialog-enum-list-col {\n height: calc(100% - 81px);\n overflow-y: auto;\n overflow-x: hidden;\n\n .dialog-enum-list-id {\n margin-left: 10px;\n font-size: 10px;\n }\n .iob-list-icon {\n height: 24px;\n width: 24px;\n }\n .title {\n padding-left: 10px;\n font-size: 18px;\n }\n }\n .btn-close {\n background-color: #b5b5b5\n }\n .name {\n margin-left: 10px\n }\n }\n}\n","@main-font: \"Segoe UI\", Tahoma, Arial, \"Courier New\", sans-serif;\n@main-background-color: #64b5f6;\n@main-second-background-color: #066594;\n@main-active-color: #2196f3;\n\n@main-frame-distance: 7px;\n\n@tiles-background: #fff;\n@tiles-tile-background: #fff;\n@tiles-tile-color: rgba(0, 0, 0, 0.87);\n\n@admin-buttons-background: #FFF;\n@admin-buttons-color: @main-background-color;\n\n@admin-sidemenu-user-view-background:#1d598c; //#575757;\n@admin-sidemenu-background: #ccc;\n@admin-sidemenu-scrollbar-thumb-color: #575757;\n@admin-sidemenu-background-hover: #066594;\n@admin-sidemenu-color: #FFF;\n@admin-sidemenu-font: @main-font;\n@admin-sidemenu-transition: 0.3s;\n@admin-sidemenu-width: 180px;\n@admin-sidemenu-main-header-background: @main-background-color;\n@admin-sidemenu-main-background: #efefef;\n@admin-sidemenu-main-footer-background: #066694;\n@admin-sidemenu-main-items-color: #0e2e4a;\n@admin-filter-placeholder-color: #666666;\n\n@admin-adapters-updatable-background: #adffad;\n@admin-adapters-installed-background: #B4DEFF;\n@admin-adapters-updatable-color: #449c44;\n@admin-adapters-tiles-background: #f5f5f5;\n\n@admin-sidemenu-main-header-height: 64px;\n@admin-sidemenu-main-footer-height: 0;\n\n@admin-small-buttons-size: 28px;\n\n@admin-toolbar-height: 64px;\n@admin-table-header-background: #FFF;\n@admin-table-row-even-background: #eee;\n\n// Common loader\n@offset: 187;\n@duration: 1.4s;\n\n@iob-background: #efefef;\n@td-border: 1px solid #e0e0e0;\n//1px solid #c8c8c8;\n\n@iob-font: \"Segoe UI\", Tahoma, Arial, \"Courier New\" !important;\n//@list-font-size: 12px; // .86em;\n//@list-font-size: .86rem;\n\n//@list-font-size: .78rem;\n@list-font-size: .82rem;\n@toolbar-font-size: .75rem; //.82rem;\n//@list-font-size: .9rem;\n\n@main-frame-distance: 7px;\n\n@line-indent: 5px;\n@header-table-distance: 0;\n@even-bg-color: #e9e9e9;\n@icon-size: 12px;\n@td-button-size: 20px;\n\n@toolbar-size: 24px;\n@toolbar-button-distance: 2px; // + 2 from td's border\n@toolbar-button-full-distance: @toolbar-button-distance + 2; // including the 2 from td's border\n@toolbar-background: #fff;\n@td-toolbar-border-size: 1px;\n@td-toolbar-border: @td-toolbar-border-size solid #c0c0c0;\n@toolbar-filter-active-background: #ffbfb6;\n\n//@toolbar-y-margin: 2px;\n@toolbar-y-margin: 0px;\n@toolbar-image-size: 16px;\n@toolbar-outer-hover: 1px solid #d0d0d0;\n//@main-toolbar-height: 30px;\n//@main-toolbar-full-height: 30px + 5px; // 5px margin-bottom\n//@main-toolbar-height: 26px; // incl. 2px border from td\n//@main-toolbar-full-height: @toolbar-size + @td-toolbar-border-size * 2 + @toolbar-y-margin * 2 - @tabs-padding-top;\n@main-toolbar-full-height: @toolbar-size + @td-toolbar-border-size * 2 + @toolbar-y-margin * 2;\n@toolbar-btn-clear-size: 18px;\n\n@list-header-background: #fff;\n\n@tabs-padding-top: 5px;\n@tabs-padding: 7px;\n//@tabs-height: 32px;\n@tabs-height: 34px;\n\n@header-height: 24px;\n\n@grid-offset: @tabs-padding-top + @tabs-padding + @main-toolbar-full-height;\n@grid-offset-wh: (@grid-offset) + @header-height - 40px;","@import \"../lib/css/iob/selectID\";\n@import \"commons\";\n\nbody {\n font-size: 12px;\n margin: 0;\n padding: 0;\n height: 100%;\n //.iob-font\n font-family: @iob-font;\n font-weight: normal;\n overflow: hidden;\n background: #fff;\n}\n\n/* Load material icons */\n@font-face {\n font-family: 'Material Icons';\n font-style: normal;\n font-weight: 400;\n src: url(./../lib/fonts/material.woff2) format('woff2'), url(./../lib/fonts/material.woff) format('woff');\n}\n\n.material-icons {\n font-family: 'Material Icons';\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n}\n\n#tabs {\n padding: 0;\n margin: 0;\n border: none;\n border-radius: 0;\n}\n\n// loader\n#connecting {\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n position: fixed;\n background: rgba(0,0,0,0.3);\n z-index: 20000;\n\n .connecting-div {\n left: 40%;\n top: 40%;\n width: 20%;\n height: 20%;\n position: absolute;\n\n .spinner {\n animation: rotator @duration linear infinite;\n }\n\n .path {\n stroke-dasharray: @offset;\n stroke-dashoffset: 0;\n transform-origin: center;\n animation:\n dash @duration ease-in-out infinite,\n colors (@duration*4) ease-in-out infinite;\n }\n }\n}\n\n/* -------------------------- LEDS ------------------------------------ */\n\n.led-all, .led-green, .led-yellow, .led-gray, .led-red, .led-orange, .led-blue {\n border-radius: 50%;\n box-shadow: #555D0D 0 0 1px 1px, rgb(68, 111, 68) 0 0 0, inset #e44949 0 0 0;\n height: 0.9em;\n width: 0.9em;\n margin-left: 0.6em;\n}\n\n.led-red {\n background-color: #FF9999;\n}\n\n.led-green {\n background-color: rgb(134, 214, 134);\n}\n\n.led-yellow {\n background-color: #A90;\n}\n\n.led-orange {\n background-color: #F7E43B;\n}\n.led-blue {\n background-color: #4AB;\n}\n.led-gray {\n background-color: #bababa;\n}\n\n// admin icon\n.user-view #current-user-icon img {\n height: 96px;\n width: auto;\n border-radius: 96px;\n}\n/****/\n\n.main-admin-buttons {\n border-spacing: @toolbar-button-full-distance;\n width: auto;\n position: relative;\n height: 27px;\n //margin-left: 2px;\n margin-top: 1px;\n padding-left: 0.5rem;\n #host-adapters {\n .imgHost {\n max-height: 30px;\n margin-top: -3px;\n padding-right: 1rem;\n }\n a {\n margin-left: 0;\n white-space: nowrap;\n }\n min-width: 200px;\n }\n .dropdown-button {\n padding-left: 5px;\n .imgHost {\n max-height: 30px;\n padding-top: 3px;\n margin-right: 5px;\n }\n }\n\n a {\n margin-left: 1.5rem;\n }\n .safari #host-adapters-btn,\n .ie #host-adapters-btn {\n margin-top: 10px !important; // for safari. Safari does not support line-height\n }\n\n .button-version {\n color: @admin-sidemenu-color;\n position: absolute;\n top: 0;\n right: 4rem;\n }\n .button-icon {\n position: absolute;\n top: 1rem;\n right: 1rem;\n img {\n width: 32px;\n }\n }\n @media screen and (min-width: 600px) and (max-width: 700px) {\n .button-version {\n display: none;\n }\n }\n @media screen and (max-width: 600px) {\n .button-icon, .button-version {\n display: none;\n }\n }\n .button-current-user {\n padding-left: 1rem;\n div {\n position: relative;\n height: @admin-sidemenu-main-header-height;\n span {\n position: absolute;\n top: 0;\n left: 2rem;\n }\n }\n }\n .safari li,\n .ie li {\n vertical-align: middle; // for safari. Safari does not support line-height\n }\n}\n\n.ram-info-td {\n white-space: nowrap;\n font-size: 14px;\n //.iob-font\n font-family: @iob-font;\n font-weight: normal;\n}\n\n.ram-font-weight {\n font-weight: 600;\n}\n\n.choose-tabs-config-button {\n //height: 35px;\n height: @tabs-height;\n width: 18px;\n background: #fff;\n //top: -3px;\n position: relative;\n text-align: center;\n font-size: 10px;\n color: #a0a0a0;\n cursor: pointer;\n}\n\n.events-grid-div {\n //height: calc(~'100% - 50px') !important;\n height: calc(~'100% - 24px') !important;\n}\n\n@grid-tables: states, groups, users, enums;\n\n.grid-table-classes(@index) when (@index > 0) {\n .grid-table-classes((@index - 1));\n @view: extract(@grid-tables, @index);\n\n table#grid-@{view} {\n //display: inline-block;\n //border-left: @td-border;\n border-collapse: collapse;\n }\n\n table#grid-@{view} {\n &:extend(.iob-list-font);\n position: relative;\n top: @header-table-distance - 1px;\n }\n\n table#grid-@{view} > tbody > tr {\n //.iob-list-table;\n font-family: @iob-font;\n font-weight: normal;\n font-size: @list-font-size !important;\n border: @td-border !important;\n white-space: nowrap;\n border: 0;\n\n height: 25px !important;\n padding: 0;\n padding-left: @line-indent;\n }\n\n //table#grid-@{view} > tbody > tr.jqgfirstrow {\n table#grid-@{view} > tbody > tr:first-child {\n height: 0 !important;\n visibility: hidden !important;\n }\n}\n.grid-table-classes(length(@grid-tables));\n\n.admin-tab { // äußerster div eines Tabs\n height: calc(~'100% - 47px');\n}\n.grid-main-div {\n height: calc(~'100% - 50px');\n}\n\n#grid-instances-head>tr {\n height: @header-height;\n}\n\n#grid-hosts-head>tr:first-child {\n height: @header-height;\n}\n\n#iob-body .ui-button-text-only, #iob-body .ui-button-text {\n //.iob-font-12;\n font-size: @list-font-size !important;\n //.iob-font\n font-family: @iob-font;\n font-weight: normal;\n}\n\n// modals\n.dialog-icon {\n float: right;\n}\n.dialog-text {\n font-size: 1.2rem;\n}\n#dialog-host-update {\n p {\n font-size: 1rem;\n }\n textarea {\n font-family: monospace;\n width: 100%;\n height: 7rem;\n resize: none;\n }\n}\n\n// License dialog\n#dialog-license-main {\n h5 {\n background: @main-background-color;\n color: @admin-buttons-background;\n padding: 0.5rem;\n }\n .license-text {\n margin-bottom: 0;\n }\n .license_text {\n width: 100%;\n height: calc(~\"100% - 190px\");\n margin-bottom: 0;\n overflow: auto;\n }\n input[type=\"checkbox\"].filled-in:not(:checked) + span:not(.lever):after {\n -webkit-animation: colorBlink 3s ease-out infinite;\n -moz-animation: colorBlink 3s ease-out infinite;\n -o-animation: colorBlink 3s ease-out infinite;\n animation: colorBlink 3s ease-out infinite;\n }\n .license-checkbox-box {\n color: #ff636e;\n }\n}\n\n@-webkit-keyframes colorBlink {\n 0% {\n border-color: #5a5a5a;\n }\n 50% {\n border-color: #ff636e;\n }\n 100% {\n border-color: #5a5a5a;\n }\n}\n\n@-moz-keyframes colorBlink {\n 0% {\n border-color: #5a5a5a;\n }\n 50% {\n border-color: #ff636e;\n }\n 100% {\n border-color: #5a5a5a;\n }\n}\n\n@-o-keyframes colorBlink {\n 0% {\n border-color: #5a5a5a;\n }\n 50% {\n border-color: #ff636e;\n }\n 100% {\n border-color: #5a5a5a;\n }\n}\n\n@keyframes colorBlink {\n 0% {\n border-color: #5a5a5a;\n }\n 50% {\n border-color: #ff636e;\n }\n 100% {\n border-color: #5a5a5a;\n }\n}\n\n.modal-overlay {\n background: gray;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n// Command dialog\n#dialog-command {\n .title {\n background: @main-background-color;\n color: @admin-buttons-background;\n padding: 0.5rem;\n }\n .textarea .ack{\n margin-bottom: 0;\n }\n textarea {\n background: #e9e9e9;\n font-family: courier, monospace;\n font-size: 11px;\n resize: none;\n width: 100%;\n height: calc(~\"100% - 185px\");\n margin-bottom: 0;\n }\n .progress-dont-close {\n float: left;\n padding-left: 1rem;\n padding-top: 1rem;\n /*&.disabled {\n opacity: 0.5;\n pointer-events: none;\n }*/\n }\n .switch {\n text-align: right;\n }\n .command {\n font-style: italic;\n }\n .btn {\n margin-right: 1.5rem;\n }\n .progress-text {\n font-size: 14px;\n &.error {\n color: #ff636e;\n }\n }\n}\n.button-command {\n right: 12rem;\n position: absolute;\n top: 0;\n cursor: pointer;\n &.error::after {\n content: \"\";\n background: #ff636e;\n position: absolute;\n opacity: 0.5;\n top: 1.4rem;\n bottom: 1.4rem;\n left: 0;\n right: 0;\n }\n &.in-progress {\n animation-name: in-progress;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n }\n}\n@keyframes in-progress {\n 0% {opacity: 1;}\n 50% {opacity: 0.3;}\n 100% {opacity: 1;}\n}\n.text-overflow{\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dialog-system-buttons{\n a{\n margin: 0.5em;\n }\n}\n"],"file":"admin.css"} \ No newline at end of file diff --git a/www/js/app.js b/www/js/app.js index d33c6a7..18d58d6 100644 --- a/www/js/app.js +++ b/www/js/app.js @@ -1,2 +1,2 @@ -"use strict";Array.prototype.remove=function(){for(var e,t,a=arguments,i=a.length;i&&this.length;)for(e=a[--i];-1!==(t=this.indexOf(e));)this.splice(t,1);return this},console.debug||(console.debug=console.log),"undefined"==typeof Number&&(console.log("define Number"),Number=function(e){return parseFloat(e)}),Object.assign||(Object.assign=$.extend);var $iframeDialog=null,configNotSaved=null,showConfig=null,defaults={},customPostInits={},FORBIDDEN_CHARS=/[\]\[*,;'"`<>\\\s?]/g,adapterRedirect=function(e,t){e&&setTimeout(function(){e+=document.location.pathname,e+=document.location.hash,document.location.href=e},t||5e3)},gMain=null;function detectIE(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(0td"),n=H.data[a.key];function s(e){return'
'+e+"
"}if(n){i.eq(0).css({overflow:"hidden","white-space":"nowrap"});var o=n.desc.indexOf("div>div").css("height: 22px !important"),u(2,n.keywords).attr("title",n.keywords),i.eq(3).html(n.installed),i.eq(4).html(n.version),u(5,n.license),u(6,n.install),H.initButtons(a.key),H.isCollapsed[n.group]&&(H.isCollapsed[n.group]=!1,H.main.saveConfig("adaptersIsCollapsed",JSON.stringify(H.isCollapsed)))}else{i.eq(0).css({"font-weight":"bold"}),i.eq(0).find("img").remove(),i.eq(0).find("span.fancytree-title").attr("style","padding-left: 0px !important");for(var l=0;l'+d+' / '+H.tree[l].children.length+"]",i.eq(1).html(s(''+d+" "+_("of")+' '+H.tree[l].children.length+" "+_("Adapters from this Group installed")));break}}function u(e,t){return i.eq(e).html(s(t))}},gridnav:{autofocusInput:!1,handleCursorKeys:!0},filter:{mode:"hide",autoApply:!0},collapse:function(e,t){H.isCollapsed[t.node.key]||(H.isCollapsed[t.node.key]=!0,H.main.saveConfig("adaptersIsCollapsed",JSON.stringify(H.isCollapsed)))}}),H.$tab.find("#btn_collapse_adapters").show().off("click").on("click",function(){H.$tab.find(".process-adapters").show(),setTimeout(function(){H.$grid.fancytree("getRootNode").visit(function(e){(!H.filterVals.length||e.match||e.subMatch)&&e.setExpanded(!1)}),H.$tab.find(".process-adapters").hide()},100)}),H.$tab.find("#btn_expand_adapters").show().off("click").on("click",function(){H.$tab.find(".process-adapters").show(),setTimeout(function(){H.$grid.fancytree("getRootNode").visit(function(e){(!H.filterVals.length||e.match||e.subMatch)&&e.setExpanded(!0)}),H.$tab.find(".process-adapters").hide()},100)}),H.$tab.find("#btn_list_adapters").show().off("click").on("click",function(){var e=H.$tab.find(".process-adapters");e.show(),H.isList=!H.isList,H.isList?(H.$tab.find("#btn_list_adapters").addClass("red lighten-3"),H.$tab.find("#btn_expand_adapters").hide(),H.$tab.find("#btn_collapse_adapters").hide(),$(this).attr("title",_("list"))):(H.$tab.find("#btn_list_adapters").removeClass("red lighten-3"),H.$tab.find("#btn_expand_adapters").show(),H.$tab.find("#btn_collapse_adapters").show(),$(this).attr("title",_("tree"))),H.main.saveConfig("adaptersIsList",H.isList),e.show(),setTimeout(function(){H._postInit(!0),e.hide()},200)})),H.isList?(H.$tab.find("#btn_list_adapters").addClass("red lighten-3").attr("title",_("tree")),H.$tab.find("#btn_expand_adapters").hide(),H.$tab.find("#btn_collapse_adapters").hide()):(H.$tab.find("#btn_list_adapters").removeClass("red lighten-3").attr("title",_("list")),H.$tab.find("#btn_expand_adapters").show(),H.$tab.find("#btn_collapse_adapters").show()),H.$tab.find(".filter-input").trigger("change")}function a(){H.$grid.hide(),H.$tiles.show(),H.$tab.find("#main-toolbar-table-types-btn").show(),H.$tab.find("#btn_list_adapters").hide(),H.$tab.find("#btn_collapse_adapters").hide(),H.$tab.find("#btn_expand_adapters").hide(),H.$tab.find(".filter-input").trigger("change")}function i(){H.onlyUpdatable?(H.$tab.find("#btn_filter_updates").addClass("red lighten-3"),H.$tab.find("#btn_upgrade_all").show()):(H.$tab.find("#btn_upgrade_all").hide(),H.$tab.find("#btn_filter_updates").removeClass("red lighten-3"))}function n(){H.main.config.expertMode?(H.$tab.find("#btn_adapters_expert_mode").addClass("red lighten-3"),H.$tab.find("#btn_upgrade_all").show()):(H.$tab.find("#btn_adapters_expert_mode").removeClass("red lighten-3"),i())}function Q(){var t=!1;H.currentFilter?H.$tiles.find(".tile").each(function(){var e=$(this);(!H.currentType||e.hasClass("class-"+H.currentType))&&B({key:e.data("id")})?(t=!0,e.show()):e.hide()}):H.currentType?(H.$tiles.find(".tile").hide(),H.$tiles.find(".class-"+H.currentType).show(),H.$tiles.find(".tile").each(function(){if($(this).is(":visible"))return!(t=!0)})):H.$tiles.find(".tile").show().each(function(){if($(this).is(":visible"))return!(t=!0)}),t?H.$tiles.find(".filtered-out").hide():H.$tiles.find(".filtered-out").show()}function B(e){if(H.currentFilter){if(!H.data[e.key])return!1;var t=H.data[e.key].title;t&&"object"==typeof t&&(t=t[systemLang]||t.en);var a=H.data[e.key].desc;return a&&"object"==typeof a&&(a=a[systemLang]||a.en),!!(H.data[e.key].name&&-1!==H.data[e.key].name.toLowerCase().indexOf(H.currentFilter)||t&&-1!==t.toLowerCase().indexOf(H.currentFilter)||H.data[e.key].keywords&&-1!==H.data[e.key].keywords.toLowerCase().indexOf(H.currentFilter)||a&&-1!==a.toLowerCase().indexOf(H.currentFilter))}return!0}function F(e,t){var a="";if(t.news)for(var i in t.news)if(t.news.hasOwnProperty(i)){if(systemLang===i&&(a+=(a?"\n":"")+t.news[i]),"en"===i||"ru"===i||"de"===i)continue;if(i===e)break;a+=(a?"\n":"")+(t.news[i][systemLang]||t.news[i].en)}return a}function Z(e){if(!e)return"";var t;if(e instanceof Array){t={};for(var a=0;a'),i}this.curRepository=null,this.curRepoLastUpdate=null,this.curInstalled=null,this.curRepoLastHost=null,this.list=[],this.$tab=$("#tab-adapters"),this.$grid=this.$tab.find("#grid-adapters"),this.$tiles=this.$tab.find("#grid-adapters-tiles"),this.$installDialog=$("#dialog-install-url"),this.main=e,this.tree=[],this.data={},this.urls={},this.groupImages={"common adapters_group":"img/common.png",general_group:"img/common.png",hardware_group:"img/hardware.png",lighting_group:"img/hardware.png",energy_group:"img/hardware.png",household_group:"img/hardware.png","iot-systems_group":"img/hardware.png","climate-control_group":"img/hardware.png",infrastructure_group:"img/hardware.png",garden_group:"img/hardware.png",alarm_group:"img/hardware.png",script_group:"img/script.png",logic_group:"img/script.png",media_group:"img/media.png",multimedia_group:"img/media.png",communication_group:"img/communication.png",protocols_group:"img/communication.png",network_group:"img/communication.png",messaging_group:"img/communication.png",visualisation_group:"img/visualisation.png",visualization_group:"img/visualisation.png","visualization-icons_group":"img/visualisation.png","visualization-widgets_group":"img/visualisation.png",storage_group:"img/storage.png",weather_group:"img/weather.png",schedule_group:"img/schedule.png",vis_group:"img/vis.png","date-and-time_group":"img/service.png",geoposition_group:"img/service.png",utility_group:"img/service.png","misc-data_group":"img/service.png",service_group:"img/service.png","third-party_group":"img/service.png"},this.inited=!1,this.isList=!1,this.filterVals={length:0},this.onlyInstalled=!1,this.onlyUpdatable=!1,this.currentFilter="",this.currentType="",this.isCollapsed={},this.isTiles=!0,this.types={occ:"schedule"},this.prepare=function(){this.$tab.find("#btn_switch_adapters").off("click").on("click",function(){H.$tab.find(".process-adapters").show(),H.isTiles=!H.isTiles,H.isTiles?(H.$tab.removeClass("view-table").addClass("view-tiles"),$(this).find("i").text("view_list")):($(this).find("i").text("view_module"),H.$tab.removeClass("view-tiles").addClass("view-table")),H.main.saveConfig("adaptersIsTiles",H.isTiles),setTimeout(function(){H.isTiles?a():t(),H._postInit(!0),H.$tab.find(".process-adapters").hide()},50)}),this.$tab.find("#btn_filter_adapters").off("click").on("click",function(){H.$tab.find(".process-adapters").show(),H.onlyInstalled=!H.onlyInstalled,H.onlyInstalled?H.$tab.find("#btn_filter_adapters").addClass("red lighten-3"):H.$tab.find("#btn_filter_adapters").removeClass("red lighten-3"),H.main.saveConfig("adaptersOnlyInstalled",H.onlyInstalled),setTimeout(function(){H._postInit(!0),H.$tab.find(".process-adapters").hide()},50)}),this.$tab.find("#btn_filter_updates").off("click").on("click",function(){H.$tab.find(".process-adapters").show(),H.onlyUpdatable=!H.onlyUpdatable,i(),H.main.saveConfig("adaptersOnlyUpdatable",H.onlyUpdatable),setTimeout(function(){H._postInit(!0),H.$tab.find(".process-adapters").hide()},200)}),this.$tab.find("#btn_filter_custom_url").off("click").on("click",function(){var e,t='",a=[];for(e in H.urls)H.urls.hasOwnProperty(e)&&a.push(e);a.sort();for(var i=0;i'+a[i]+"")}H.$installDialog.find("#install-github-link").html(t).val(H.main.config.adaptersGithub||""),H.$installDialog.modal(),H.$installDialog.find(".btn-install").off("click").on("click",function(){var e,t,a;if(!H.$installDialog.find('a[href="#tabs-install-github"]').hasClass("active"))e=H.$installDialog.find("#install-url-link").val(),t=H.$installDialog.find("#install-url-debug").prop("checked")?" --debug":"",a="";else{var i=H.$installDialog.find("#install-github-link").val().split(" ");e=i[0],t=H.$installDialog.find("#install-github-debug").prop("checked")?" --debug":"",a=" "+i[1]}e?H.main.cmdExec(null,'url "'+e+'"'+a+t,function(e){e||H.init(!0,!0)}):H.main.showError(_("Invalid link"))}),H.$installDialog.find("#install-github-link").select(),H.$installDialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),H.$installDialog.modal("open"),H.$installDialog.find(".tabs").mtabs({nShow:function(e){e&&H.main.saveConfig("adaptersInstallTab",$(e).attr("id"))}}),H.main.config.adaptersInstallTab&&!H.main.noSelect&&H.$installDialog.find(".tabs").mtabs("select",H.main.config.adaptersInstallTab)}),this.$tab.find("#btn_upgrade_all").off("click").on("click",function(){H.main.confirmMessage(_("Do you want to upgrade all adapters?"),_("Please confirm"),"help",function(e){e&&H.main.cmdExec(null,"upgrade",function(e){e||H._postInit(!0)})})}),this.$tab.find("#btn_adapters_expert_mode").on("click",function(){H.main.config.expertMode=!H.main.config.expertMode,H.main.saveConfig("expertMode",H.main.config.expertMode),H.updateExpertMode(),H.main.tabs.instances.updateExpertMode()}),H.main.config.expertMode&&H.$tab.find("#btn_adapters_expert_mode").addClass("red lighten-3"),this.$installDialog.find("#install-github-link").on("change",function(){H.main.saveConfig("adaptersGithub",$(this).val())}),this.$installDialog.find("#install-url-link").on("keyup",function(e){13===e.which&&H.$installDialog.find("#dialog-install-url-button").trigger("click")}),this.isTiles=void 0===this.main.config.adaptersIsTiles||null===this.main.config.adaptersIsTiles||this.main.config.adaptersIsTiles,this.isList=this.main.config.adaptersIsList||!1,this.onlyInstalled=this.main.config.adaptersOnlyInstalled||!1,this.onlyUpdatable=this.main.config.adaptersOnlyUpdatable||!1,this.currentFilter=this.main.config.adaptersCurrentFilter||"",this.currentType=this.main.config.adaptersCurrentType||"",this.currentOrder=this.main.config.adaptersCurrentOrder||"a-z",this.isCollapsed=this.main.config.adaptersIsCollapsed?JSON.parse(this.main.config.adaptersIsCollapsed):{},this.currentFilter?(this.$tab.find(".filter-input").addClass("input-not-empty").val(H.currentFilter),this.$tab.find(".filter-clear").show()):this.$tab.find(".filter-clear").hide(),this.onlyInstalled?this.$tab.find("#btn_filter_adapters").addClass("red lighten-3"):this.$tab.find("#btn_filter_adapters").removeClass("red lighten-3"),this.onlyUpdatable?this.$tab.find("#btn_filter_updates").addClass("red lighten-3"):this.$tab.find("#btn_filter_updates").removeClass("red lighten-3"),"ie"===this.main.browser&&this.main.browserVersion<=10&&(this.isTiles=!1,this.$tab.find("#btn_switch_adapters").hide()),n(),this.$tab.find("#btn_refresh_adapters").on("click",function(){H.init(!0,!0)}),this.$tab.find(".filter-input").on("keyup",function(){$(this).trigger("change")}).on("change",function(e){H.filterTimer&&clearTimeout(H.filterTimer),H.filterTimer=setTimeout(function(){H.filterTimer=null,H.currentFilter=H.$tab.find(".filter-input").val().toLowerCase(),e&&e.target&&$(e.target)[H.currentFilter?"addClass":"removeClass"]("input-not-empty"),H.currentFilter?H.$tab.find(".filter-clear").show():H.$tab.find(".filter-clear").hide(),H.main.saveConfig("adaptersCurrentFilter",H.currentFilter),H.isTiles?Q():H.$grid.fancytree("getTree").filterNodes(B,!1)},400)}),this.$tab.find(".filter-clear").on("click",function(){H.$tab.find(".filter-input").val("").trigger("change")}),this.isTiles?(this.$tab.find("#btn_switch_adapters").find("i").text("view_list"),H.$tab.removeClass("view-table").addClass("view-tiles"),a()):(H.$tab.removeClass("view-tiles").addClass("view-table"),t())},this.updateExpertMode=function(){this.init(!0),n()},this.getAdaptersInfo=function(e,t,a,i){if(e){if(!i)throw"Callback cannot be null or undefined";t&&(!this.curRepoLastUpdate||1e3<(new Date).getTime()-this.curRepoLastUpdate)&&(this.curRepository=null,this.curInstalled=null),this.curRunning?this.curRunning.push(i):(this.curRepository&&this.curRepoLastHost===e||(this.curRepository=null,this.main.socket.emit("sendToHost",e,"getRepository",{repo:this.main.systemConfig.common.activeRepo,update:a},function(e){"permissionError"===e&&(console.error('May not read "getRepository"'),e={}),H.curRepository=e||{},H.curRepository&&H.curInstalled&&H.curRunning&&(H.curRepoLastUpdate=(new Date).getTime(),setTimeout(function(){for(var e=0;e'+e+'',t&&(e+=''),e+=""}l.sort(),H.tree=[],H.data={};for(var p=0;p';for(var w=0;w',b!==h&&(m+=''+h+"",b&&(m+=" ~ ")),b&&(m+=''+b+""),m+=""):m+='',m+=''+a.version+"",g=''+a.version+"",m+="",!M&&H.onlyUpdatable)continue}i=u(n=i,M,y,v);var j=(a.type||H.types[o]||"common adapters")+"_group";C=(C="object"==typeof a.desc?a.desc[systemLang]||a.desc.en:a.desc)||"",C+=V(j,o,H.main.states["system.adapter."+o+".upload"]?H.main.states["system.adapter."+o+".upload"].val:0);var N=a.titleLang||a.title;if(N="object"==typeof N?N[systemLang]||N.en:N,H.data[o]={image:f?'':"",icon:f||"",stat:e[o]?e[o].stat:0,name:o,title:(N||"").replace("yunkong2 Visualisation - ",""),desc:C,news:y,updatableError:v,keywords:a.keywords?a.keywords.join(" "):"",version:i,installed:m,rawVersion:n,instances:h,rawInstalled:g,versionDate:a.versionDate,updatable:M,bold:a.highlight||!1,install:''+(H.main.config.expertMode?'':"")+"'+(H.main.config.expertMode?'':""),group:j,license:a.license||"",licenseUrl:a.licenseUrl||""},a.type||console.log('"'+o+'": "common adapters",'),a.type&&H.types[o]&&console.log('Adapter "'+o+'" has own type. Remove from admin.'),H.isList)H.tree.push({icon:f,title:H.data[o].title||o,key:o});else{for(var L=-1,T=0;T':"",icon:a.extIcon,stat:a.stat,name:o,title:(N||"").replace("yunkong2 Visualisation - ",""),desc:C,keywords:a.keywords?a.keywords.join(" "):"",rawVersion:n,version:i,bold:a.highlight,installed:"",versionDate:a.versionDate,install:''+(H.main.config.expertMode?'':""),license:a.license||"",licenseUrl:a.licenseUrl||"",group:j},a.type||console.log('"'+o+'": "common adapters",'),a.type&&H.types[o]&&console.log('Adapter "'+o+'" has own type. Remove from admin.'),H.isList)H.tree.push({icon:a.extIcon,title:H.data[o].title||o,key:o});else{for(var k=-1,D=0;DH.data[t].stat?-1:H.data[e].statH.data[t].versionDate?-1:H.data[e].versionDate',S+='
',S+='
',S+='
',S+=' ',S+=' '+x.title+"",S+=' more_vert',S+='
    ',S+="
  • "+c["Available version:"]+' "+x.rawVersion+""+(x.updatable?'':"")+"
  • ",x.installed&&(S+="
  • "+c["Installed version"]+': '+x.rawInstalled+"
  • "),x.instances&&(S+="
  • "+_("Installed instances")+': '+x.instances+"
  • "),S+="
",S+="
",S+=' ',S+='
',S+=' close',S+="

"+x.desc+"

",S+='
',S+=x.install,S+="
",S+="
","popular"===H.currentOrder&&x.stat?S+='
'+x.stat+"
":"updated"===H.currentOrder&&x.versionDate&&(S+='
'+W(x.versionDate,c.today,c.yesterday,c["1 %d days ago"],c["2 %d days ago"],c["5 %d days ago"],d)+"
"),S+="
",S+=""}for(var P in S+='
',S+='
',S+='
',S+='
',S+=' '+_("Filtered out")+"",S+="
",S+=' ',S+="
",S+="
",H.$tiles.html(S),H.data)H.data.hasOwnProperty(P)&&H.initButtons(P);for(var R='
  • '+c.all+"
  • \n",U=0;U'+_(E[U])+"\n";var G=H.$tab.find("#main-toolbar-table-types");G.html(R),G.find(".main-toolbar-table-types-item").show().off("click").on("click",function(){H.currentType=$(this).data("type")||"",Q(),H.$tab.find("#main-toolbar-table-types-btn").html(_(H.currentType||"all")),H.main.saveConfig("adaptersCurrentType",H.currentType)}),H.currentType&&!c[H.currentType]&&(c[H.currentType]=_(H.currentType)),H.$tab.find("#main-toolbar-table-types-btn").html(c[H.currentType||"all"]).dropdown({constrainWidth:!1,gutter:0}),(G=H.$tab.find("#main-toolbar-table-order")).find(".main-toolbar-table-order-item").off("click").on("click",function(){H.currentOrder=$(this).data("type")||"",H.$tab.find("#main-toolbar-table-order-btn").html(_(H.currentOrder||"a-z")),H.main.saveConfig("adaptersCurrentOrder",H.currentOrder),H._postInit()}),H.currentOrder&&!c[H.currentOrder]&&(c[H.currentOrder]=_(H.currentOrder)),H.$tab.find("#main-toolbar-table-order-btn").show().html(c[H.currentOrder||"a-z"]).dropdown({constrainWidth:!1,gutter:0}),Q()}else{H.$tab.find("#main-toolbar-table-types-btn").hide(),H.$tab.find("#main-toolbar-table-order-btn").hide(),H.$grid.fancytree("getTree").reload(H.tree),H.$grid.find(".fancytree-icon").each(function(){$(this).attr("src")&&$(this).css({width:18,height:18}),$(this).on("hover",function(){var e='
    ',t=$(e);t.insertAfter($(this)),$(this).data("big",t[0]);var a=parseFloat(t.height()),i=Math.round($(this).position().top-(a-parseFloat($(this).height()))/2);a+i>(window.innerHeight||document.documentElement.clientHeight)&&(i=(window.innerHeight||document.documentElement.clientHeight)-a),t.css({top:i})},function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)})}),H.currentFilter&&H.$grid.fancytree("getTree").filterNodes(B,!1),H.sortTree(),H.enableColResize();var Y=["tab-adapters-table-name","tab-adapters-table-description","tab-adapters-table-keywords","tab-adapters-table-installed","tab-adapters-table-available","tab-adapters-table-license","tab-adapters-table-install"];H.$grid.find("tbody tr").each(function(){var e=0;$(this).find("td").each(function(){$(this).addClass(Y[e]),e++})})}H.$tab.find(".grid-main-div").removeClass("order-a-z order-popular order-updated").addClass(H.currentOrder?"order-"+H.currentOrder:""),H.$tab.find(".process-adapters").hide(),H.updateCounter(s)})):this.enableColResize(),this.restoreScroll()},this.saveScroll=function(){this.scrollTop=this.$tab.find(".grid-main-div").scrollTop()},this.restoreScroll=function(){this.scrollTop&&this.$tab.find(".grid-main-div").scrollTop(this.scrollTop)},this.updateCounter=function(e){if(void 0===e)this.getAdaptersInfo(this.main.currentHost,!1,!1,function(e,t){var a=0;for(var i in t)if(t.hasOwnProperty(i)){var n=t?t[i]:null;if(n&&!n.controller&&"hosts"!==i){var s="";e[i]&&e[i].version&&(s=e[i].version),n.version&&!H.main.upToDate(s,n.version)&&a++}}H.updateCounter(a)});else if(e){var t=$("#updates-for-adapters");t.length?t.text(e):$(''+e+"").appendTo('.admin-sidemenu-items[data-tab="tab-adapters"] a')}else $("#updates-for-adapters").remove()},this.init=function(e,t){this.inited&&!e||(this.main.objectsLoaded?(this.inited||(this.inited=!0,this.main.subscribeObjects("system.host.*"),this.main.subscribeStates("system.host.*")),this.main.tabs.hosts.getHosts(function(){H._postInit(e,t)})):setTimeout(function(){H.init(e,t)},250))},this.destroy=function(){this.inited&&(this.saveScroll(),this.inited=!1,this.main.unsubscribeObjects("system.host.*"),this.main.unsubscribeStates("system.host.*"))},this.initButtons=function(r){this.$tab.find('.adapter-install-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var s=$(this).attr("data-adapter-name"),e=$(this).attr("data-adapter-desc");!function(e,t,a){if(H.main.tabs.hosts.list.length<=1&&!H.main.config.expertMode)return a(!0,H.main.currentHost,"");var i=$("#dialog-add-instance");i.find(".dialog-add-instance-name").html(e),i.find(".dialog-add-description").html(t);for(var n="",s=0;s'+o.name+""}H.main.tabs.hosts.list.length<=1?i.find(".dialog-add-instance-host").addClass("disabled").prop("disabled",!0):i.find(".dialog-add-instance-host").removeClass("disabled").prop("disabled",!1),i.find(".dialog-add-instance-host").html(n).select();for(var r=-1,l=[],d=0;d'+_("auto")+"";for(var p=0;p'+p+"");i.find(".dialog-add-instance-number").html(n).select(),i.find(".dialog-add-install-btn").off("click").on("click",function(e){a&&(a(!0,i.find(".dialog-add-instance-host").val(),i.find(".dialog-add-instance-number").val()),a=null),i.find(".dialog-add-cancel-btn").off("click"),i.find(".dialog-add-instance-number").off("click")}),i.find(".dialog-add-cancel-btn").off("click").on("click",function(e){a&&(a(!1),a=null),i.find(".dialog-add-cancel-btn").off("click"),i.find(".dialog-add-instance-number").off("click")}),i.modal({dismissible:!1,complete:function(){i.find(".dialog-add-instance-name").html("")}}).modal("open")}(s,e,function(e,i,n){e&&H.getAdaptersInfo(i,!1,!1,function(e,t){var a=e[s];a||(a=t[s]),a&&(a.license&&"MIT"!==a.license?function(i,n){var s=$("#dialog-license");if(!H.data[i].installed&&H.data[i].licenseUrl){var o=setTimeout(function(){n(!(o=null))},1e4);H.data[i].licenseUrl||(H.data[i].licenseUrl="https://raw.githubusercontent.com/yunkong2/yunkong2."+(H.data[i].name||i)+"/master/LICENSE"),"object"==typeof H.data[i].licenseUrl&&(H.data[i].licenseUrl=H.data[i].licenseUrl[systemLang]||H.data[i].licenseUrl.en),-1!==H.data[i].licenseUrl.indexOf("github.com")&&(H.data[i].licenseUrl=H.data[i].licenseUrl.replace("github.com","raw.githubusercontent.com").replace("/blob/","/")),H.main.socket.emit("httpGet",H.data[i].licenseUrl,function(e,t,a){o&&(clearTimeout(o),o=null,!e&&a?(s.css({"z-index":200}),a=(a=a.toString().replace(/\r\n/g,"
    ")).replace(/\n/g,"
    "),s.find(".license_text").html(a),s.find(".license_agreement_name").text(_(" for %s",i)),s.modal({dismissible:!1,complete:function(){s.find(".license_text").html("")}}).modal("open"),s.find(".license_agree").off("click").on("click",function(e){n&&(n(!0),n=null),s.find(".license_agree").off("click"),s.find(".license_non_agree").off("click")}),s.find(".license_non_agree").off("click").on("click",function(e){n&&(n(!1),n=null),s.find(".license_agree").off("click"),s.find(".license_non_agree").off("click")})):(n&&n(!0),n=null))})}else n(!0)}(s,function(e){e&&H.main.cmdExec(null,"add "+s+" "+n+" --host "+i,function(e){e||H._postInit(!0)})}):H.main.cmdExec(null,"add "+s+" "+n+" --host "+i,function(e){e||H._postInit(!0)}))})})}),this.$tab.find('.adapter-delete-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var t=$(this).attr("data-adapter-name");H.main.confirmMessage(_("Are you sure you want to delete adapter %s?",t),_("Please confirm"),"help",function(e){e&&H.main.cmdExec(null,"del "+t,function(e){e||H._postInit(!0)})})}),this.$tab.find('.adapter-readme-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){H.main.navigate({tab:"adapters",dialog:"readme",params:$(this).data("adapter-name")})}),this.$tab.find('.adapter-update-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var e=$(this).attr("data-adapter-name");"admin"===e&&(H.main.waitForRestart=!0),H.main.cmdExec(null,"upgrade "+e,function(e){e||H._postInit(!0)})}),this.$tab.find('.adapter-upload-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var e=$(this).attr("data-adapter-name");H.main.cmdExec(null,"upload "+e,function(e){e||H._postInit(!0)})});var e=this.$tab.find('.adapter-update-custom-submit[data-adapter-name="'+r+'"]');e.off("click").on("click",function(){var e=[];if(H.main.objects["system.adapter."+r].common.news){var t=H.main.objects["system.adapter."+r].common.news;for(var a in t)t.hasOwnProperty(a)&&e.push(a)}else e.push(H.main.objects["system.adapter."+r].common.version);for(var i='
    ',n=0;n'+e[n]+' - "}i+="
    ";var o=$("#adapters-menu");o.length||((o=$('")).appendTo($(".materialize-dialogs").first()),o.modal()),o.data("trigger",this),o.find("p").html(i),o.find("h4").html(_("Versions of %s",r)),o.find(".adapters-versions-link").off("click").on("click",function(){o.modal("close");var e=$(this).data("adapter-name"),t=$(this).data("version");t&&e&&H.main.cmdExec(null,"upgrade "+e+"@"+t,function(e){e||H._postInit(!0)})}),o.modal("open")}),H.main.objects["system.adapter."+r]||e.hide()},this.objectChange=function(e,t){if(e.match(/^system\.adapter\.[a-zA-Z0-9-_]+$/)){if(t)-1===this.list.indexOf(e)&&this.list.push(e);else{var a=this.list.indexOf(e);-1!==a&&this.list.splice(a,1)}void 0!==this.$grid&&this.$grid[0]._isInited&&this.init(!0)}},this.stateChange=function(e,t){if(e&&t){var a=e.match(/^system\.adapter\.([\w\d-]+)\.upload$/);if(a){var i=this.$tab.find('.adapter-upload-progress[data-adapter-name="'+a[1]+'"]'),n=V(t.val);i.html(n).css({opacity:t.val?.7:0}),this.$tab.find('.group-upload-progress[data-adapter-group="'+i.data("adapter-group")+'"]').html(n).css({opacity:t.val?.7:0})}}}}function Config(e){var t=this;this.$dialog=$("#dialog-config"),this.$configFrame=this.$dialog.find("#config-iframe"),this.main=e,this.prepare=function(){$iframeDialog=this},this.init=function(){if(!this.inited){this.inited=!0;var e=this.main.navigateGetParams(),t=e.split(".");this.main.objects[e]&&this.main.objects[e].common&&this.main.objects[e].common.materialize?this.$configFrame.attr("src","adapter/"+t[2]+"/index_m.html?"+t[3]):this.$configFrame.attr("src","adapter/"+t[2]+"/?"+t[3]);var a=e.replace(/^system\.adapter\./,"");this.$dialog.data("name",a),this.$dialog.find(".title").html(_("Adapter configuration")+": "+a)}},this.allStored=function(){return!window.frames["config-iframe"].changed},this.close=function(){t.main.navigate()},this.destroy=function(){if(this.inited&&(this.inited=!1,this.$configFrame.attr("src",""),void 0!==showConfig&&showConfig&&showConfig.length)){var e=showConfig.shift();setTimeout(function(){t.main.navigate({tab:"instances",dialog:"config",params:e})},1e3)}}}function Customs(C){var p,m,g,f,T,k,D,z,I,A,S,E,O="__different__",x=this;function P(e){if(e)x.historyTimeout&&clearTimeout(x.historyTimeout);else if(x.historyTimeout)return;x.historyTimeout=setTimeout(function(){x.historyTimeout=null,S&&x.loadHistoryTable(S.data("id"),!0)},e||5e3)}function R(t,a){$.ajax({headers:{Accept:"text/html"},cache:!0,url:"/adapter/"+t+"/custom_m.html",success:function(e){a(null,e)},error:function(e){$.ajax({headers:{Accept:"text/html"},cache:!0,url:"/adapter/"+t+"/custom.html",success:function(e){a(null,e)},error:function(e){a(e.responseText)}})}})}function U(e){e.stopPropagation(),e.preventDefault();var t=x.$dialog.find("#customs-tabs"),l=t.data("ids");x.currentCustoms=null;var d=_(O);if(t.find("input, select").each(function(){var e=$(this).data("instance"),t=$(this).data("field");if(t){var a;if("checkbox"===$(this).attr("type")){if(this.indeterminate)return;a=$(this).prop("checked")}else a=$(this).val();if(a!==d){null===a&&(a=""),void 0===a&&(a=""),"false"===a&&(a=!1),"true"===a&&(a=!0);var i=parseFloat(a);a.toString().replace(/^\+/,"").replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,"$1")===i.toString()&&(a=i);for(var n=0;n
    '+_("Settings for %s",j)+' '+_("active")+'
    '+$('script[data-template-name="'+v+'"]').html()+"
    ",T=$(L);this.defaults[v]={},T.find("input, select").each(function(){var e=$(this);e.attr("data-instance",v+"."+w);var t=e.attr("data-field"),a=e.attr("data-default");"true"===a&&(a=!0),"false"===a&&(a=!1),void 0!==a&&a.toString().replace(/\+/,"")===parseFloat(a).toString()&&(a=parseFloat(a)),x.defaults[v][t]=a,"enabled"===t&&e.on("click",function(e){e.stopPropagation(),$(this).prop("checked")})}),s.append(T),customPostInits.hasOwnProperty(v)&&"function"==typeof customPostInits[v]&&customPostInits[v](T,r[v+"."+w],x.main.objects["system.adapter."+v+"."+w],i,n)}s.find("input, select").each(function(){var e,a=$(this),t=a.data("instance"),i=t.split(".")[0],n=a.data("field");void 0!==r[t][n]?"checkbox"===a.attr("type")?r[t][n]===O?a[0].indeterminate=!0:a.prop("checked",r[t][n]):r[t][n]===O?("number"===a.attr("type")&&a.attr("type","text"),"SELECT"===a.prop("tagName").toUpperCase()?(a.prepend('"),a.val(o)):a.val("").attr("placeholder",o)):a.val(r[t][n]):(x.defaults[i]&&void 0!==x.defaults[i][n]&&(e=x.defaults[i][n]),void 0!==e&&("checkbox"===a.attr("type")?a.prop("checked",e):a.val(e)));"checkbox"===a.attr("type")?a.on("change",function(){if(x.$dialog.find(".dialog-system-buttons .btn-save").removeClass("disabled"),"enabled"===$(this).data("field")){var e=a.data("instance"),t=s.find('.activated[data-adapter="'+e+'"]');$(this).prop("checked")?t.css("opacity",1):t.css("opacity",0)}}):a.on("change",function(){x.$dialog.find(".dialog-system-buttons .btn-save").removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")})}),this.showCustomsData(1'+_("Loading...")+"");var a={aggregate:"none",instance:S.val(),from:!0,ack:!0,q:!0};T||(T=this.$dialog.find("#tab-customs-table .datepicker.date-from"),k=this.$dialog.find("#tab-customs-table .datepicker.date-to"),D=this.$dialog.find("#tab-customs-table .timepicker.time-from"),z=this.$dialog.find("#tab-customs-table .timepicker.time-to"));var c,i=T.val()?M.Datepicker.getInstance(T).toString("yyyy.mm.dd"):"",n=D.val(),s=k.val()?M.Datepicker.getInstance(k).toString("yyyy.mm.dd"):"",o=z.val(),r=!0;if(s?(r=!1,(s=new Date(s)).setHours(23),s.setMinutes(59),s.setSeconds(59),s.setMilliseconds(999)):s=new Date,o){var l=o.split(":");s.setHours(l[0]),s.setMinutes(l[1]),s.setSeconds(59),s.setMilliseconds(999),r=!1}if(s=s.getTime(),r&&(s+=1e4),a.end=s,i||n){if(i=new Date(i||s),n){var u=n.split(":");i.setHours(u[0]),i.setMinutes(u[1])}else i.setHours(0),i.setMinutes(0);i.setSeconds(0),i.setMilliseconds(0),a.start=i.getTime()}else a.count=50;d&&(c=new Date(s).toISOString()+"_"+(a.start?new Date(a.start):a.count+"points")+"_"+e+"__"+a.instance+".csv"),C.socket.emit("getHistory",e,a,function(r,l){setTimeout(function(){var e,t,a,i="value;acknowledged;from;timestamp;lastchanged;\n";if(r)console.error(r),p.html(''+r+"");else{var n="";if(l&&l.length){for(var s=l.length-1;0<=s;s--){var o=(l[s].from||"").replace("system.adapter.","").replace("system.","");n+=' '+l[s].val+" "+l[s].ack+" "+o+" "+C.formatDate(l[s].ts)+" "+C.formatDate(l[s].lc)+"\n",d&&(i+=l[s].val+";"+l[s].ack+";"+(o||"")+";"+(l[s].ts?new Date(l[s].ts).toISOString():"")+";"+(l[s].lc?new Date(l[s].lc).toISOString():"")+";\n")}f=l[l.length-1].ts}else n=''+_("No data")+"";p.html(n)}!function e(){$.fn.colResizable&&(m.is(":visible")?(m.data("inited")||((g=new IobListHeader("grid-history-header",{list:m,colWidthOffset:1,prefix:"log-filter"})).add("text","val"),g.add("text","ack"),g.add("text","from"),g.add("text","ts"),g.add("text","lc")),m.colResizable({liveDrag:!0,partialRefresh:!0,marginLeft:5,postbackSafe:!0,onResize:function(e){return g.syncHeader()}}),g.syncHeader()):setTimeout(function(){e()},200))}(),d&&(e=c,t=i,(a=document.createElement("a")).setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),a.setAttribute("download",e),a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a))},0)})},this.loadHistoryChart=function(e){if(I||(I=this.$dialog.find("#tab-customs-chart .datepicker.date-from"),A=this.$dialog.find("#tab-customs-chart .datepicker.date-to")),e){for(var t=0,a=!1,i=!1,n=0;n"+u[v]+"\n")}if(M){S.data("id",a[0]).html(M).show().off("change").on("change",function(){x.main.saveConfig("object-history-table",S.val()),x.loadHistoryTable($(this).data("id"))}).select(),E.data("id",a[0]).html(M).show().off("change").on("change",function(){x.main.saveConfig("object-history-chart",E.val()),x.loadHistoryChart($(this).data("id"))}).select(),void 0!==this.main.config["object-history-table"]&&S.val(this.main.config["object-history-table"]),void 0!==this.main.config["object-history-chart"]&&E.val(this.main.config["object-history-chart"]),h.data("id",a[0]).show().off("click").on("click",function(){x.$dialog.find("#grid-history-body").html(""),x.loadHistoryTable($(this).data("id"))}),y.data("id",a[0]).show().off("click").on("click",function(){x.loadHistoryChart($(this).data("id"))}),b.data("id",a[0]).show().off("click").on("click",function(){x.loadHistoryTable($(this).data("id"),!1,!0)});var j=new Date;j.setDate(j.getDate()-1);for(var N={today:_("Today"),clear:_("Clear"),done:_("Ok"),months:[_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December")],monthsShort:[_("Jan"),_("Feb"),_("Mar"),_("Apr"),_("May"),_("Jun"),_("Jul"),_("Aug"),_("Sep"),_("Oct"),_("Nov"),_("Dec")],weekdaysShort:[_("Sun"),_("Mon"),_("Tue"),_("Wed"),_("Thu"),_("Fri"),_("Sat")],weekdays:[_("Sunday"),_("Monday"),_("Tuesday"),_("Wednesday"),_("Thursday"),_("Friday"),_("Saturday")],weekdaysAbbrev:["S","M","T","W","T","F","S"]},L=0;L\n
    \n',"state"===i&&"common"===a&&"type"===s?n+='":"string"==typeof t[s]?n+='\n':"number"==typeof t[s]?n+='\n':"boolean"==typeof t[s]?n+='\n":n+='\n";var o=s;"common"===a&&systemDictionary["common_"+s]&&systemDictionary["common_"+s][systemLang]&&(o=_("common_"+s)),"boolean"==typeof t[s]?n+=""+o+"\n":n+="\n",n+='
    \n\n',n+="\n"}l.$dialog.find(e).html(n)}function a(e,t){var a=l.$dialog.find(e);a.find(".object-tab-edit-string").each(function(){t[$(this).data("attr")]=$(this).val()}),a.find(".object-tab-edit-number").each(function(){t[$(this).data("attr")]=parseFloat($(this).val())}),a.find(".object-tab-edit-boolean").each(function(){t[$(this).data("attr")]=$(this).prop("checked")});var i=null;if(a.find(".object-tab-edit-object").each(function(){try{t[$(this).data("attr")]=JSON.parse($(this).val())}catch(e){return i=$(this).data("attr"),!1}}),void 0!==t.write&&("false"!==t.write&&"0"!==t.write&&0!==t.write||(t.write=!1),"true"!==t.write&&"1"!==t.write&&1!==t.write||(t.write=!0)),void 0!==t.read&&("false"!==t.read&&"0"!==t.read&&0!==t.read||(t.read=!1),"true"!==t.read&&"1"!==t.read&&1!==t.read||(t.read=!0)),null===t.min&&delete t.min,void 0!==t.min){var n=parseFloat(t.min);n.toString()===t.min.toString()&&(t.min=n),"false"===t.min&&(t.min=!1),"true"===t.min&&(t.min=!0)}if(null===t.max&&delete t.max,void 0!==t.max){var s=parseFloat(t.max);s.toString()===t.max.toString()&&(t.max=s),"false"===t.max&&(t.max=!1),"true"===t.max&&(t.max=!0)}if(null===t.def&&delete t.def,void 0!==t.def){var o=parseFloat(t.def);o.toString()===t.def.toString()&&(t.def=o),"false"===t.def&&(t.def=!1),"true"===t.def&&(t.def=!0)}if(-1!==e.indexOf("common"))for(var r in t)t.hasOwnProperty(r)&&("true"===t[r]&&(t[r]=!0),"false"===t[r]&&(t[r]=!1),parseFloat(t[r]).toString()===t[r]&&(t[r]=parseFloat(t[r])));return i}function s(e,t,a){"boolean"==typeof t&&(a=t,t=3e3),l.main.showToast(l.$dialog,e,null,t,a)}this.$dialog=$("#dialog-editobject"),this.$dialogNewField=$("#dialog-new-field"),this.main=e,this.prepared=!1,this.inited=!1,this.$dialogSave=this.$dialog.find(".dialog-editobject-buttons .btn-save"),this.iconVal=null,this._prepare=function(){this.prepared||(this.prepared=!0,this.$dialogSave.on("click",function(){l.save()}),this.$dialog.find(".dialog-editobject-buttons .btn-cancel").on("click",function(){l.editor.setValue(""),l.$dialogSave.addClass("disabled"),l.main.navigate()}),this.$dialog.find(".btn-add-common").on("click",function(){l.$dialogNewField.find(".object-tab-new-icon").show(),l.$dialogNewField.modal("open");var e=l.$dialogNewField.find(".object-tab-new-name");e.data("type","common").focus(),e.hasClass("autocomplete")||(e.addClass("autocomplete"),e.mautocomplete({data:{type:null,desc:null,min:null,max:null,def:null,role:null,unit:null,read:null,write:null,states:null},minLength:0})),e.focus()}),this.$dialog.find(".btn-add-native").on("click",function(){l.$dialogNewField.find(".object-tab-new-icon").hide(),l.$dialogNewField.modal("open");var e=l.$dialogNewField.find(".object-tab-new-name");e.hasClass("autocomplete")&&(e.mautocomplete("destroy"),e.removeClass("autocomplete")),M.updateTextFields("#dialog-new-field"),e.data("type","native").focus()}),this.$dialogNewField.find(".object-tab-new-name").keypress(function(e){13===e.which&&l.$dialogNewField.find(".btn-add").trigger("click")}),this.editor||(this.editor=ace.edit("view-object-raw"),this.editor.getSession().setMode("ace/mode/json"),this.editor.$blockScrolling=!0,this.editor.getSession().on("change",function(){l.$dialogSave.removeClass("disabled")})),this.$dialogNewField.modal(),this.$dialog.find(".tabs").mtabs({onShow:function(e){if(e){var t=$(e).attr("id");if("object-tab-common"===t)s(_("Drop the icons here"));else if("object-tab-raw"===t){var a=l.saveFromTabs();if(!a)return!1;l.editor.setValue(JSON.stringify(a,null,2))}else if("object-tab-raw"===t){var i;try{i=JSON.parse(l.editor.getValue())}catch(e){return l.main.showMessage(e,_("Parse error"),"error_outline"),l.main.noSelect||l.$dialog.find(".tabs").mtabs("select","object-tab-raw"),!1}l.load(i)}return l.main.saveConfig("object-edit-active",t),!0}}}),this.$dialogNewField.find(".btn-add").on("click",function(e){e.preventDefault(),e.stopPropagation();var t=l.$dialogNewField.find(".object-tab-new-name"),a=t.data("type")||"common",i=t.val().trim(),n=l.saveFromTabs();i&&-1===i.indexOf(" ")?void 0===n[a][i]?(n[a][i]="",l.load(n),l.$dialogNewField.find(".object-tab-new-name").val(""),l.$dialogNewField.modal("close"),l.$dialogSave.removeClass("disabled")):l.main.showError(_("Field %s yet exists!",i)):l.main.showError(_("Invalid field name: %s",i))}),this.$dialogNewField.find(".btn-cancel").on("click",function(e){l.$dialogNewField.find(".object-tab-new-name").val("")}),this.$dialog.find(".edit-object-name").on("change",function(){l.$dialogSave.removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),this.$dialog.find(".edit-object-type").on("change",function(){l.$dialogSave.removeClass("disabled")}),this.$dialog.find(".object-tab-rights input").on("change",function(){l.$dialogSave.removeClass("disabled")}),installFileUpload(this.$dialog.find("#object-tab-common"),5e4,function(e,t){if(e)s(e,!0);else{if(!t.match(/^data:image\//))return void s(_("Unsupported image format"),!0);l.$dialogSave.removeClass("disabled"),l.iconVal=t;var a=l.$dialog.find(".icon-editor");a.find(".icon").show().html(''),a.find(".icon .treetable-icon").attr("src",t)}}),this.$dialog.find(".icon-editor .icon-upload").off("click").on("click",function(){l.$dialog.find(".drop-file").trigger("click")}),this.$dialog.find(".icon-editor .icon-clear").off("click").on("click",function(){l.iconVal&&(l.iconVal=null,l.$dialog.find(".icon-editor").hide().appendTo(l.$dialog),l.$dialogSave.removeClass("disabled"))}))},this.init=function(){if(this._prepare(),!this.inited){this.inited=!0;var e=l.main.navigateGetParams(),t=!!(e||"").match(/,def$/);e=e.replace(/,def$/,"");var a=this.main.objects[e];if(a){void 0===this.main.config["object-edit-active"]||l.main.noSelect||this.$dialog.find(".tabs").mtabs("select",this.main.config["object-edit-active"]);for(var i,n="",s=0;s'+(i||this.main.tabs.users.list[s])+"";for(this.$dialog.find(".object-tab-acl-owner").html(n),n="",s=0;s'+(i||this.main.tabs.users.groups[s])+"";this.$dialog.find(".object-tab-acl-group").html(n),this.load(a),t?this.$dialog.data("cb",function(a){"state"===a.type&&l.main.socket.emit("getState",a._id,function(e,t){t&&null!==t.val&&void 0!==t.val||l.main.socket.emit("setState",a._id,void 0===a.common.def?null:a.common.def,!0)})}):this.$dialog.data("cb",null),l.$dialogSave.addClass("disabled")}}},this.destroy=function(){this.inited&&(this.inited=!1)},this.load=function(e){if(e){e.common=e.common||{},e.native=e.native||{},e.acl=e.acl||{},this.$dialog.find(".title-id").text(e._id),this.$dialog.find(".edit-object-name").val(e.common?translateName(e.common.name):e._id),this.$dialog.find(".edit-object-type").val(e.type),this.$dialog.find(".object-tab-acl-owner").val(e.acl.owner||"system.user.admin"),this.$dialog.find(".object-tab-acl-group").val(e.acl.ownerGroup||"system.group.administrator"),this.$dialog.find(".icon-editor").hide().appendTo(this.$dialog),n(".object-tab-common-table",e.common||{},"common",e.type),n(".object-tab-native-table",e.native||{},"native",e.type),void 0!==e.common.icon?(this.iconVal=e.common.icon,this.$dialog.find(".object-tab-common-table").prepend(this.$dialog.find(".icon-editor").show()),this.$dialog.find(".icon-editor .icon").html(l.main.getIconFromObj(e))):this.iconVal=null,this.$dialog.find(".object-tab-field-delete").on("click",function(){var a=$(this).data("part"),i=$(this).data("attr");l.main.confirmMessage(_("Delete attribute"),_("Please confirm"),"error_outline",function(e){if(e){var t=l.saveFromTabs();delete t[a][i],l.load(t)}})}),e.acl=e.acl||{},void 0===e.acl.object&&(e.acl.object=1638),this.$dialog.find("#object-tab-acl-obj-owner-read").prop("checked",1024&e.acl.object),this.$dialog.find("#object-tab-acl-obj-owner-write").prop("checked",512&e.acl.object),this.$dialog.find("#object-tab-acl-obj-group-read").prop("checked",64&e.acl.object),this.$dialog.find("#object-tab-acl-obj-group-write").prop("checked",32&e.acl.object),this.$dialog.find("#object-tab-acl-obj-every-read").prop("checked",4&e.acl.object),this.$dialog.find("#object-tab-acl-obj-every-write").prop("checked",2&e.acl.object),"state"!==e.type?this.$dialog.find(".object-tab-acl-state").hide():(this.$dialog.find(".object-tab-acl-state").show(),void 0===e.acl.state&&(e.acl.state=1638),this.$dialog.find("#object-tab-acl-state-owner-read").prop("checked",1024&e.acl.state),this.$dialog.find("#object-tab-acl-state-owner-write").prop("checked",512&e.acl.state),this.$dialog.find("#object-tab-acl-state-group-read").prop("checked",64&e.acl.state),this.$dialog.find("#object-tab-acl-state-group-write").prop("checked",32&e.acl.state),this.$dialog.find("#object-tab-acl-state-every-read").prop("checked",4&e.acl.state),this.$dialog.find("#object-tab-acl-state-every-write").prop("checked",2&e.acl.state));var t=JSON.parse(JSON.stringify(e));if(this.editor.setValue(JSON.stringify(t,null,2)),t._id&&delete t._id,t.common&&delete t.common,t.type&&delete t.type,t.native&&delete t.native,t.acl&&delete t.acl,this.$dialog.find("#view-object-rest").val(JSON.stringify(t,null," ")),this.$dialog.find("select").select(),this.$dialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),this.$dialog.find("input").on("change",function(){l.$dialogSave.removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),this.$dialog.find("select").on("change",function(){l.$dialogSave.removeClass("disabled")}),this.$dialog.find("textarea").on("change",function(){l.$dialogSave.removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),void 0!==e.common.color){var a=Date.now(),i=this.$dialog.find('.object-tab-edit-string[data-attr="color"]').parent();i.prepend('color_lens'+_("Color")+""),i.colorpicker({component:".btn",color:i,container:!0}).colorpicker("setValue",e.common.color||"#fff").on("showPicker.colorpicker",function(){}).on("changeColor.colorpicker",function(e){100'+m.main.getIconFromObj(s[e][t])+h(s[e][t])+"");a&&(a+='
  • '),a+='
  • control_point'+_("custom group")+"
  • ",m.$gridEnum.find("#btn-new-group-"+i).html(a),m.$gridEnum.find('.btn-new-group-btn[data-target="btn-new-group-'+i+'"]').dropdown({constrainWidth:!1}),m.$gridEnum.find("#btn-new-group-"+i).find(".new-group-item").off("click").on("click",function(){var e=$(this).data("id"),t=$(this).data("enum");if(e){var a=t.replace(/[.#\\\/&?]+/g,"-");m.main.saveConfig("enums-active","enum-"+a),m.main.socket.emit("setObject",e,s[t][e],function(e){e&&m.main.showError(e)})}else v(null,t)})}else{for(t in n)n.hasOwnProperty(t)&&-1===m.list.indexOf(t)&&(a+='
  • '+m.main.getIconFromObj(n[t])+h(n[t])+"
  • ");a&&(a+='
  • '),a+='
  • control_point'+_("custom enum")+"
  • ",m.$gridEnum.find("#btn-new-enum").html(a),m.$gridEnum.find(".btn-new-enum-btn").dropdown({constrainWidth:!1}),m.$gridEnum.find(".new-enum-item").off("click").on("click",function(){var e=$(this).data("id");if(e){var t=e.replace(/[.#\\\/&?]+/g,"-");m.main.saveConfig("enums-active","enum-"+t),m.main.socket.emit("setObject",e,n[e],function(e){e&&m.main.showError(e)})}else v(null)})}}function h(e,t){var a;(a=t?e[t]:e)&&a.common&&a.common.name?a=translateName(a.common.name):a=(a=t.split(".").pop())[0].toUpperCase()+a.substring(1).toLowerCase();return a}function r(e,t,a){var i,n,s,o=m.main.objects[e],r=e.replace(/[.#\\\/&?]+/g,"-"),l='';l+='
      ';for(var d=0;d'+m.main.getIcon(m.list[d],null,null,"icon")+''+h(m.main.objects,m.list[d])+"

      "+m.list[d]+"


      ",c&&c.common&&c.common.members&&c.common.members.length)for(var p=0;p'+m.main.getIcon(i)+''+h(m.main.objects,i)+'close
    ');l+='edit',l+='delete',l+=""}l+="
    ",t.html(l),f(e),a&&t.find(".enum-collection").scrollTop(a),function(a){for(var e=m.$gridList.find('.enum-buttons[data-id="'+a+'"] .filter-input'),t={},i=0;i\n view_list\n note_add\n \n \n queue_play_next\n \n ');var t='
    ';t+='",t+="
    ";for(var n=0;n',t+="");var s={};e.find(".enum-collection").each(function(){s[$(this).data("id")]=$(this).scrollTop()});try{var o=m.$gridEnum.find(".tree-table-body .collection").find(".collection-item");try{o.droppable("instance")&&o.droppable("destroy")}catch(a){console.error(a)}}catch(a){}e.html(t),0tr.treetable-enum");e.droppable("instance")&&e.droppable("destroy")}catch(e){console.log(e)}m.$gridList.html("").removeClass("tree-table-tiles").addClass("tree-table-list"),m.$gridList.treeTable({objects:m.main.objects,root:"enum",columns:["title","name"],members:!0,colors:!0,icons:!0,widths:["calc(100% - 250px)","250px"],name:"enums",buttonsWidth:"40px",buttons:[{text:!1,icons:{primary:"ui-icon-trash"},click:function(t,e,a){m.main.objects[t]?"enum"===m.main.objects[t].type?e?m.main.confirmMessage(_("All sub-enums of %s will be deleted too?",t),null,"help",function(e){e&&m.main._delObjects(t,!0,function(e){e?b(_("Error: %s",e),!0):b(_("Deleted"))})}):m.main.confirmMessage(_("Are you sure to delete %s?",t),null,"help",function(e){e&&m.main._delObjects(t,!0,function(e){e?b(_("Error: %s",e),!0):b(_("Deleted"))})}):u(t,a):m.main.objects[a]&&"enum"===m.main.objects[a].type?u(t,a):b(_('Object "%s" does not exists. Update the page.',t))},width:26,height:20},{text:!1,icons:{primary:"ui-icon-pencil"},match:function(e){return m.main.objects[e]&&"enum"===m.main.objects[e].type},click:function(e,t,a){v(e)},width:26,height:20}],panelButtons:[{id:"tab-enums-btn-switch-tiles",title:_("change view mode"),icon:"view_module",click:function(){m.isTiles=!0,m.main.saveConfig("enumIsTiles",m.isTiles),setTimeout(function(){a()},50)}},{id:"tab-enums-list-new-enum",title:_("New enum"),icon:"note_add",click:function(){v(null)}},{id:"tab-enums-list-new-category",title:_("New category"),icon:"library_add",click:function(){v(null,m.enumEdit)}},{id:"tab-enums-list-edit",title:_("Edit"),icon:"edit",click:function(){w(!m.editMode)}}],onChange:function(e,t){if(e!==t){m.enumEdit=e;var a=m.main.objects[e];if(a&&"enum"===a.type)$("#tab-enums-list-new-enum").removeClass("disabled").attr("title",_("Create new enum, like %s","enum.newCategory")),2===e.split(".").length?m.$gridList.find("#tab-enums-list-new-category").removeClass("disabled").attr("title",_("Create new category, like %s",e+".newEnum")):m.$gridList.find("#tab-enums-list-new-category").addClass("disabled");else m.$gridList.find("#tab-enums-list-new-enum").addClass("disabled"),m.$gridList.find("#tab-enums-list-new-category").addClass("disabled")}},onReady:p}),m.$gridList.find(".tree-table-buttons a").addClass("btn-small"),m.$gridList.find("#tab-enums-list-new-enum").addClass("disabled"),m.$gridList.find("#tab-enums-list-new-category").addClass("disabled")}function d(t){if("enum"===m.main.objects[t].type){var e=function(e){for(var t=e.split("."),a=[],i=new RegExp("^"+e.replace(/\./g,"\\.")+"\\."),n=0;ntr.treetable-enum").droppable({accept:".fancytree-type-draggable",over:function(e,t){if($(this).addClass("tab-accept-item"),$(this).hasClass("not-empty")&&!$(this).hasClass("expanded")){var a;$(this).data("tt-id");(a=$(this).data("timer"))&&clearTimeout(a),$(this).data("timer",setTimeout(function(){m.$gridList.treeTable("expand",$(this).data("tt-id"))},1e3))}},out:function(e,t){var a;$(this).removeClass("tab-accept-item"),(a=$(this).data("timer"))&&(clearTimeout(a),$(this).data("timer",null))},tolerance:"pointer",drop:function(e,t){$(this).removeClass("tab-accept-item"),i(t.draggable.data("id"),$(this).data("tt-id"))}}))}function y(e){if(m.editMode){var t=(e=e||m.$gridEnum.find(".tree-table-body .collection")).find(".collection-item");try{t.droppable("instance")&&t.droppable("destroy")}catch(e){console.error(e)}t.droppable({accept:".fancytree-type-draggable",over:function(e,t){$(this).addClass("tab-accept-item")},out:function(e,t){$(this).removeClass("tab-accept-item")},tolerance:"pointer",drop:function(e,t){$(this).removeClass("tab-accept-item"),i(t.draggable.data("id"),$(this).data("id"))}})}}function v(e,n){var i=!1,s=m.$gridEnum.find("#tab-enums-dialog-new"),o="",t="",a="",r="",l="",d="",c=!0;if(installFileUpload(s,5e4,function(e,t){if(e)b(e,!0);else{if(!t.match(/^data:image\//))return void b(_("Unsupported image format"),!0);s.find(".tab-enums-dialog-create").removeClass("disabled"),l=t,s.find(".tab-enums-dialog-new-icon").show().html(''),s.find(".tab-enums-dialog-new-icon img").attr("src",t),s.find(".tab-enums-dialog-new-icon-clear").show()}}),c=e?(m.main.objects[e]&&m.main.objects[e].common&&(t=translateName(m.main.objects[e].common.name),l=m.main.objects[e].common.icon,d=m.main.objects[e].common.color),a=o=e,s.find("#tab-enums-dialog-preserve-id").prop("checked",!0),!1):(s.find("#tab-enums-dialog-preserve-id").prop("checked",!1),!0),s.find(".tab-enums-dialog-new-title").text(_(n?"Create new category":a?"Rename":"Create new enum")),a){var u=a.split(".");u.length<=2&&(e=!0),a=u.pop(),n=u.join("."),r=a}s.find("#tab-enums-dialog-new-name").val(t).off("change").on("change",function(){var e=s.find("#tab-enums-dialog-new-id"),t=e.val(),a=$(this).val();a=a.replace(FORBIDDEN_CHARS,"_").replace(/\./g,"_").trim().toLowerCase(),!c||t&&i||(e.val(a),s.find("#tab-enums-dialog-new-preview").val((n||"enum")+"."+(a||"#")),M.updateTextFields("#tab-enums-dialog-new")),e.val()&&!e.val().match(/[.\s]/)?(s.find(".tab-enums-dialog-create").removeClass("disabled"),e.removeClass("wrong")):(s.find(".tab-enums-dialog-create").addClass("disabled"),e.addClass("wrong"))}).off("keyup").on("keyup",function(){$(this).trigger("change")}),s.find("#tab-enums-dialog-new-id").val(a).off("change").on("change",function(){if(!s.find("#tab-enums-dialog-preserve-id").prop("checked")){i=!0;var e=$(this).val();s.find("#tab-enums-dialog-new-preview").val((n||"enum")+"."+($(this).val()||"#")),M.updateTextFields("#tab-enums-dialog-new"),e&&!e.match(/[.\s]/)?(s.find(".tab-enums-dialog-create").removeClass("disabled"),$(this).removeClass("wrong")):(s.find(".tab-enums-dialog-create").addClass("disabled"),$(this).addClass("wrong"))}}).off("keyup").on("keyup",function(){$(this).trigger("change")}),s.find("#tab-enums-dialog-new-id").prop("disabled",!c),s.find(".tab-enums-dialog-create").addClass("disabled").off("click").text(_(o?"Change":"Create")).on("click",function(){var e,t,a,i;o?(s.find("#tab-enums-dialog-preserve-id").prop("checked")?(e="object"==typeof m.main.objects[o].common.name?m.main.objects[o].common.name:{en:o.split(".").pop()})[systemLang]=s.find("#tab-enums-dialog-new-name").val():e=s.find("#tab-enums-dialog-new-name").val(),g(o,n+"."+s.find("#tab-enums-dialog-new-id").val(),{name:e,icon:l,color:d},function(e){e?b(_("Error: %s",e),!0):b(_("Updated"))})):(t=(n||"enum")+"."+s.find("#tab-enums-dialog-new-id").val(),a={name:s.find("#tab-enums-dialog-new-name").val(),icon:l,color:d},i=function(e){e?b(_("Error: %s",e),!0,5e3):b(_("Updated"))},m.main.objects[t]?b(_("Name yet exists!"),!0):m.main.socket.emit("setObject",t,{_id:t,common:{name:a.name,members:[],icon:a.icon,color:a.color},type:"enum"},i))}),s.find("#tab-enums-dialog-new-preview").val((n||"enum")+"."+(a||"#")),l?(s.find(".tab-enums-dialog-new-icon").show().html(m.main.getIcon(o)),s.find(".tab-enums-dialog-new-icon-clear").show()):(s.find(".tab-enums-dialog-new-icon").hide(),s.find(".tab-enums-dialog-new-icon-clear").hide()),(d=d||!1)?s.find(".tab-enums-dialog-new-color").val(d):s.find(".tab-enums-dialog-new-color").val(),M.updateTextFields("#tab-enums-dialog-new"),m.main.showToast(s,_("Drop the icons here")),s.find(".tab-enums-dialog-new-upload").off("click").on("click",function(){s.find(".drop-file").trigger("click")}),s.find(".tab-enums-dialog-new-icon-clear").off("click").on("click",function(){l&&(l="",s.find(".tab-enums-dialog-new-icon").hide(),s.find(".tab-enums-dialog-create").removeClass("disabled"),s.find(".tab-enums-dialog-new-icon-clear").hide())}),s.find(".tab-enums-dialog-new-color-clear").off("click").on("click",function(){d&&(s.find(".tab-enums-dialog-create").removeClass("disabled"),s.find(".tab-enums-dialog-new-color-clear").hide(),s.find(".tab-enums-dialog-new-colorpicker").colorpicker({component:".btn",color:d,container:s.find(".tab-enums-dialog-new-colorpicker")}).colorpicker("setValue",""),d="")});var p=Date.now();try{s.find(".tab-enums-dialog-new-colorpicker").colorpicker("destroy")}catch(e){}s.find(".tab-enums-dialog-new-colorpicker").colorpicker({component:".btn",color:d,container:s.find(".tab-enums-dialog-new-colorpicker")}).colorpicker("setValue",d).on("showPicker.colorpicker",function(){var e=s.find(".modal-content");e[0].scrollTop=e[0].scrollHeight}).on("changeColor.colorpicker",function(e){100tr.treetable-enum");i.droppable("instance")&&i.droppable("destroy")}catch(e){console.error(e)}t.removeClass("red").addClass("blue"),m.$gridEnum.removeClass("tab-enums-edit")}}this.prepare=function(){this.isTiles=void 0===this.main.config.enumIsTiles||null===this.main.config.enumIsTiles||this.main.config.enumIsTiles},this._initObjectTree=function(){var e={objects:t.objects,noDialog:!0,draggable:["device","channel","state"],name:"enum-objects",expertModeRegEx:/^system\.|^yunkong2\.|^_|^[\w-]+$|^enum\.|^[\w-]+\.admin|^script\./,texts:{select:_("Select"),cancel:_("Cancel"),all:_("All"),id:_("ID"),ID:_("ID"),name:_("Name"),role:_("Role"),room:_("Room"),function:_("Function"),value:_("Value"),type:_("Type"),selectid:_("Select ID"),from:_("From"),lc:_("Last changed"),ts:_("Time stamp"),wait:_("Processing..."),ack:_("Acknowledged"),edit:_("Edit"),push:_("Trigger event"),ok:_("Ok"),with:_("With"),without:_("Without"),copyToClipboard:_("Copy to clipboard"),expertMode:_("Toggle expert mode"),refresh:_("Update"),sort:_("Sort alphabetically"),button:_("Settings"),noData:_("No data")},filter:{type:"state"},columns:["ID","name","type","role"]};o("init",e).selectId("show"),function(){var e=m.$gridEnum.find(".fancytree-container>tbody");try{e.sortable("instance")&&e.sortable("destroy")}catch(e){console.error(e)}m.$gridEnum.find(".fancytree-container>tbody").sortable({connectWith:"#tab-enums .tab-enums-list .tree-table-main.treetable",items:".fancytree-type-draggable",appendTo:m.$gridEnum,refreshPositions:!0,helper:function(e,t){return $('
    '+t.find(".fancytree-title").text()+"
    ")},zIndex:999990,revert:!1,scroll:!1,start:function(e,t){var a=t.item.prev();t.item.data("prev",a),m.$gridEnum.addClass("dragging")},stop:function(e,t){m.$gridEnum.removeClass("dragging")},update:function(e,t){var a=t.item.data("prev");a&&a.length?$(a).after(t.item):$(this).prepend(t.item)}}).disableSelection()}()},this._postInit=function(){void 0!==this.$gridList&&(this.main.objects["enum.rooms"]||(this.main.objects["enum.rooms"]={_id:"enum.rooms",common:{icon:"home",name:{en:"Rooms",de:"Räume",ru:"Комнаты",pt:"Quartos",nl:"Kamers",fr:"Pièces",it:"Camere",es:"Habitaciones",pl:"Pokoje"},desc:{en:"List of the rooms",de:"Liste der Räumen",ru:"Список комнат",pt:"Lista dos quartos",nl:"Lijst met kamers",fr:"Liste des chambres",it:"Elenco delle stanze",es:"Lista de las habitaciones",pl:"Lista pokoi"},members:[],dontDelete:!0},type:"enum",acl:{owner:"system.user.admin",ownerGroup:"system.group.administrator",permissions:1911}},m.main.socket.emit("setObject","enum.rooms",this.main.objects["enum.rooms"]),this.list.unshift("enum.rooms")),this.main.objects["enum.functions"]||(this.main.objects["enum.functions"]={_id:"enum.functions",common:{icon:"lightbulb_outline",name:{en:"Functions",de:"Funktionen",ru:"функции",pt:"Funções",nl:"functies",fr:"Les fonctions",it:"funzioni",es:"Funciones",pl:"Funkcje"},desc:{en:"List of the functions",de:"Liste der Funktionen",ru:"Список функций",pt:"Lista das funções",nl:"Lijst met functies",fr:"Liste des fonctions",it:"Elenco delle funzioni",es:"Lista de las funciones",pl:"Lista funkcji"},members:[],dontDelete:!0},type:"enum",acl:{owner:"system.user.admin",ownerGroup:"system.group.administrator",permissions:1911}},this.list.unshift("enum.functions"),m.main.socket.emit("setObject","enum.functions",this.main.objects["enum.functions"])),this.isTiles?a():l(),this.editMode?this._initObjectTree():o("destroy"))},this.init=function(e){this.inited&&!e||(this.main&&this.main.objectsLoaded?(this._postInit(),this.inited||(this.inited=!0,this.main.subscribeObjects("enum.*"))):setTimeout(function(){m.init(e)},250))},this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("enum.*")),w(!1),this.$gridList.treeTable("destroy")},this.objectChange=function(e,t,a){if(e.match(/^enum\./)){if(t)-1===this.list.indexOf(e)&&this.list.push(e);else{var i=this.list.indexOf(e);-1!==i&&this.list.splice(i,1)}this.updateTimers&&clearTimeout(this.updateTimers),this.updateTimers=setTimeout(function(){m.updateTimers=null,m._postInit()},200)}this.$grid&&o("object",e,t,a)}}function Events(m){var g=this;this.main=m,this.$tab=$("#tab-events");var e,f,h,t,b,y="yunkong2.net"===location.hostname||"yunkong2.pro"===location.hostname,M={count:0,start:0,limit:500},a=null,v={list:[],mode:!1,counter:0,overflow:!1,$counterSpan:null},w={done:!1,timer:null};this.prepare=function(){t=this.$tab.find("#event-outer"),h=this.$tab.find("#event-table"),b=this.$tab.find("#event-pause"),e=this.$tab.find("#events-table-tr"),(f=new IobListHeader(e,{list:t,colWidthOffset:1,prefix:"event-filter"})).doFilter=i,f.add("combobox","type"),f.add("edit","id","ID"),f.add("edit","val","value"),f.add("combobox","ack","ack",[{val:"",name:"all"},{val:"true",name:"ack"},{val:"false",name:"not ack"}]),f.add("combobox","from","from"),f.add("text","ts"),f.add("text","lc"),Object.defineProperty(f,"getValues",{value:function(){f.ID.selectedVal=f.ID.selectedVal.toLocaleLowerCase(),"true"===f.ack.selectedVal&&(f.ack.selectedVal=!0),"false"===f.ack.selectedVal&&(f.ack.selectedVal=!1)},enumerateble:!1}),b.on("click",function(){g.pause()}),this.$tab.find("#event-clear").off("click").on("click",function(){M.count=0,M.start=0,g.$tab.find("#event-table").html("")})},this.init=function(){y?g.$tab.find("#grid-events").html(_("You can't see events via cloud")+'
    cloud_off').addClass("no-cloud-events"):f&&(this.inited||(!function e(){if(!$.fn.colResizable)return;t.is(":visible")?(t.colResizable({liveDrag:!0,partialRefresh:!0,marginLeft:5,postbackSafe:!0,onResize:function(e){return f.syncHeader()}}),f.syncHeader()):setTimeout(function(){e()},200)}(),this.inited=!0,this.main.subscribeObjects("*"),this.main.subscribeStates("*")))};var j=!(this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("*"),this.main.unsubscribeStates("*"))});function N(){w.timer=null,$(window).trigger("resize.JColResizer")}function i(){a&&(clearTimeout(a),a=null),f.getValues&&f.getValues(),h&&h.find(".event-line").each(function(e){var t=!0,a=$(this);f.type.selectedVal&&!a.hasClass("event-type-"+f.type.selectedVal)?t=!1:f.from.selectedVal&&!a.hasClass("event-from-"+f.from.selectedVal)?t=!1:""===f.ack.selectedVal||a.hasClass("event-ack-"+f.ack.selectedVal)?f.ID.selectedVal&&-1===$(this).find("td.event-column-id").text().toLocaleLowerCase().indexOf(f.ID.selectedVal)?t=!1:""!==f.value.selectedVal&&-1===$(this).find("td.event-column-value").text().indexOf(f.value.selectedVal)&&(t=!1):t=!1,t?a.show():a.hide()})}this.add=function(e,t,a,i){if(!y){var n,s,o,r,l=i?"stateChange":a?"message":"objChange",d="";if(f&&(f.getValues&&f.getValues(),f.type.checkAddOption(l)),w.done||(w.timer||(w.timer=setTimeout(N,1e3)),20=g.limit){M.start++;var c=document.getElementById("event_"+M.start);c&&(c.outerHTML="")}else M.count++;a||i?i&&(t?(t.from=t.from||"",t.from=t.from.replace("system.adapter.",""),t.from=t.from.replace("system.",""),f&&f.from.checkAddOption(t.from,function(e){return{val:e.replace(/\./g,"-"),name:e}}),d=t.from,void 0!==(n=JSON.stringify(t.val))&&30'+n.substring(0,30)+"..."),s=t.ack?"true":"false",o=m.formatDate(t.ts),r=m.formatDate(t.lc)):(n="deleted",o=m.formatDate(new Date))):o=t?(void 0!==(n=JSON.stringify(t,"\n",2))&&30'+n.substring(0,30)+"..."),m.formatDate(t.ts)):(n="deleted",m.formatDate(new Date));var u=!0;f&&(f.type.selectedVal&&f.type.selectedVal!==l?u=!1:f.ID.selectedVal&&-1===e.toLocaleLowerCase().indexOf(f.ID.selectedVal)?u=!1:""!==f.value.selectedVal&&null!=n&&-1===n.indexOf(f.value.selectedVal)?u=!1:""!==f.ack.selectedVal&&f.ack.selectedVal!==s?u=!1:f.from.selectedVal&&f.from.selectedVal!==d&&(u=!1));var p='';p+=""+l+"",p+=''+e+"",isNaN(n)?p+=''+(n||"")+"":p+=''+(n||"")+"",p+=""+(s||"")+"",p+=""+(d||"")+"",p+=""+(o||"")+"",p+=""+(r||"")+"",p+="",v.mode?(v.list.push(p),v.counter++,v.counter>M.limit&&(v.overflow||(b.addClass("red lighten3").attr("title",_("Message buffer overflow. Losing oldest")),v.overflow=!0),v.list.shift()),v.$counterSpan.html(v.counter)):h&&(h.prepend(p),j||"#tab-events"!==window.location.hash&&"#events"!==window.location.hash||(f&&f.syncHeader(),j=!0))}},this.pause=function(){if(v.mode){v.mode=!1;for(var e=0;epause')}else b.addClass("yellow btn-pause-button-active"),v.$counterSpan=b,v.$counterSpan.html("0"),v.counter=0,v.mode=!0}}function fileHandler(e){e.preventDefault();var t=e.dataTransfer?e.dataTransfer.files[0]:e.target.files[0],a=$(this).find(".drop-zone"),i=$(this).data("drop-zone-cb"),n=$(this).data("limit");if(t.size>(n||1e4))return i&&i(_("File is too big!")),a.hide(),!1;a.show();var s=new FileReader;s.onload=function(e){a.hide(),i&&i(null,e.target.result)},s.readAsDataURL(t)}function installFileUpload(e,t,a){if(void 0!==window.FileReader&&!e.data("installed")){e.data("installed",!0),e.prepend('');var i=e.find(".drop-zone");e[0].ondragover=function(){return i.off("click"),i.show(),!1},i[0].ondragleave=function(){return i.hide(),!1},i[0].ondrop=fileHandler.bind(e[0])}e.data("drop-zone-cb",a),e.data("limit",t),e.find(".drop-file").on("change",fileHandler.bind(e[0]))}function Hosts(s){var r=this;function a(e){var t=$("#dialog-host-update");if(e){var a=e.path,i=(a=a.replace(/\\/g,"/")).split("/");i.pop(),i.pop(),"linux"===e.platform||"darwin"===e.platform||"freebsd"===e.platform||"lin"===e.platform?t.find("#dialog-host-update-instructions").val("cd "+i.join("/")+"\nsudo yunkong2 stop\nsudo yunkong2 update\nsudo yunkong2 upgrade self\nsudo yunkong2 start"):t.find("#dialog-host-update-instructions").val("cd "+i.join("\\")+"\nyunkong2 stop\nyunkong2 update\nyunkong2 upgrade self\nyunkong2 start")}else t.find("#dialog-host-update-instructions").val("cd /opt/yunkong2\nsudo yunkong2 stop\nsudo yunkong2 update\nsudo yunkong2 upgrade self\nsudo yunkong2 start");t.data("inited")||(t.data("inited",!0),t.modal()),t.modal("open")}function i(e){if(e=(e||"").toLowerCase().trim()){var t=!1;r.$tab.find(".hosts-host").each(function(){-1!==$(this).data("host-filter").toLowerCase().indexOf(e)?($(this).show(),t=!0):$(this).hide()}),t?r.$tab.find(".hosts-host-filtered-out").hide():r.$tab.find(".hosts-host-filtered-out").show()}else r.$tab.find(".hosts-host").show(),r.$tab.find(".hosts-host-filtered-out").hide()}function n(e){var t=r.main.objects[r.list[e].id],a=r.main.states[t._id+".alive"]&&r.main.states[t._id+".alive"].val&&"null"!==r.main.states[t._id+".alive"].val;t.common=t.common||{},t.native=t.native||{};var i='';i+='
    ',i+=''+r.main.getHostIcon(t)+"",i+=''+t.common.hostname+"",i+=''+t.common.type+"";var n=t.common.titleLang||t.common.title;return"object"==typeof n&&(n=n[systemLang]||n.en),i+=''+n+"",i+=''+(t.native.os?t.native.os.platform:_("unknown"))+"",i+='',i+=''+t.common.installedVersion+"",r.main.states[t._id+".inputCount"]?i+='⇥'+r.main.states[t._id+".inputCount"].val+' / ↦'+r.main.states[t._id+".outputCount"].val+"":i+=' / ',i+='',i+=""}function o(e){var t,a=r.main.objects[r.list[e].id],i=r.main.states[a._id+".alive"]&&r.main.states[a._id+".alive"].val&&"null"!==r.main.states[a._id+".alive"].val;a.common=a.common||{},a.native=a.native||{},a.common.color&&(t=r.main.invertColor(a.common.color));var n='
    '+r.main.getHostIcon(a," ")+'
    '+a.common.hostname+'
    • '+r.words.Type+': '+a.common.type+'
    • '+r.words.Title+': '+a.common.title+'
    • '+r.words.OS+': '+(a.native.os?a.native.os.platform:_("unknown"))+'
    • '+r.words.Available+':
    • '+r.words.Installed+': '+a.common.installedVersion+"
    • ";return r.main.states[a._id+".inputCount"]?n+='
    • '+r.words.Events+': ⇥'+r.main.states[a._id+".inputCount"].val+' / ↦'+r.main.states[a._id+".outputCount"].val+"
    • ":n+='
    • '+r.words.Events+': /
    • ',n+='
    edit autorenew',a.common.hostname!==r.main.currentHost&&(n+=' delete'),n+='
    '}this.main=s,this.list=[],this.$tab=$("#tab-hosts"),this.$grid=this.$tab.find("#hosts"),this.$table=this.$tab.find("#grid-hosts"),this.inited=!1,this.isTiles=!0,this.words={},this.prepare=function(){this.isTiles=void 0===this.main.config.hostsIsTiles||null===this.main.config.hostsIsTiles||this.main.config.hostsIsTiles,"ie"===this.main.browser&&this.main.browserVersion<=10&&(this.isTiles=!1,this.$tab.find(".btn-switch-tiles").hide()),this.$tab.find(".btn-reload").attr("title",_("Update")).on("click",function(){r.init(!0)}),this.$tab.find(".btn-switch-tiles").off("click").on("click",function(){r.isTiles=!r.isTiles,r.isTiles?$(this).find("i").text("view_list"):$(this).find("i").text("view_module"),r.main.saveConfig("hostsIsTiles",r.isTiles),setTimeout(function(){r._postInit()},50)}),this.isTiles?this.$tab.find(".btn-switch-tiles").find("i").text("view_list"):this.$tab.find(".btn-switch-tiles").find("i").text("view_module"),this.$tab.find(".filter-clear").on("click",function(){r.$tab.find(".filter-input").val("").trigger("change")});var e=this.$tab.find(".filter-input");e.on("change",function(){var e=$(this).val();e?($(this).addClass("input-not-empty"),r.$tab.find(".filter-clear").show()):(r.$tab.find(".filter-clear").hide(),$(this).removeClass("input-not-empty")),r.main.saveConfig("hostsFilter",e),i(e)}).on("keyup",function(){r.filterTimeout&&clearTimeout(r.filterTimeout),r.filterTimeout=setTimeout(function(){r.$tab.find(".filter-input").trigger("change")},300)}),this.main.config.hostsFilter&&"{"!==this.main.config.hostsFilter[0]?(e.val(r.main.config.hostsFilter).addClass("input-not-empty"),this.$tab.find(".filter-clear").show()):this.$tab.find(".filter-clear").hide(),this.words.Title=_("Title"),this.words.OS=_("OS"),this.words.Available=_("Available"),this.words.Installed=_("Installed"),this.words.Events=_("Events"),this.words.Title=_("Title"),r.words.Type=_("Type")},this.initButtons=function(e){var t=e?'[data-host-id="'+e+'"]':"";this.$tab.find(".host-update-submit"+t).off("click").on("click",function(){r.main.cmdExec($(this).attr("data-host-name"),"upgrade self",function(e){e||r.init(!0)})}),this.$tab.find(".host-restart-submit"+t).off("click").on("click",function(){r.main.waitForRestart=!0,r.main.cmdExec($(this).attr("data-host-name"),"_restart")}),this.$tab.find(".host-delete"+t).off("click").on("click",function(){r.main.cmdExec(r.main.currentHost,"host remove "+$(this).attr("data-host-name"))}),this.$tab.find(".host-edit"+t).off("click").on("click",function(){!function(t){var a=$("#tab-host-dialog-edit"),e="",i="",n="";installFileUpload(a,5e4,function(e,t){if(e)r.main.showToast(a,e);else{if(!t.match(/^data:image\//))return void r.main.showToast(a,_("Unsupported image format"));a.find(".tab-host-dialog-ok").removeClass("disabled"),i=t,a.find(".tab-host-dialog-edit-icon").show().html(''),a.find(".tab-host-dialog-edit-icon img").attr("src",t),a.find(".tab-host-dialog-edit-icon-clear").show()}}),r.main.objects[t]&&r.main.objects[t].common&&("object"==typeof(e=r.main.objects[t].common.title)&&(e=e[systemLang]||e.en),i=r.main.objects[t].common.icon,n=r.main.objects[t].common.color);a.find("#tab-host-dialog-edit-title").val(e).off("change").on("change",function(){a.find(".tab-host-dialog-ok").removeClass("disabled")}).off("keyup").on("keyup",function(){$(this).trigger("change")}),a.find(".tab-host-dialog-ok").addClass("disabled").off("click").on("click",function(){var e=JSON.parse(JSON.stringify(r.main.objects[t]));e.common.title=a.find("#tab-host-dialog-edit-title").val(),e.common.icon=i,e.common.color=n,JSON.stringify(e)!==JSON.stringify(r.main.objects[t])?r.main.socket.emit("setObject",e._id,e,function(e){r.main.showToast(a,_("Updated"))}):r.main.showToast(a,_("Nothing changed"))}),i?(a.find(".tab-host-dialog-edit-icon").show().html(r.main.getIcon(t)),a.find(".tab-host-dialog-edit-icon-clear").show()):(a.find(".tab-host-dialog-edit-icon").hide(),a.find(".tab-host-dialog-edit-icon-clear").hide());(n=n||!1)?a.find(".tab-host-dialog-edit-color").val(n):a.find(".tab-host-dialog-edit-color").val();M.updateTextFields("#tab-host-dialog-edit"),r.main.showToast(a,_("Drop the icons here")),a.find(".tab-host-dialog-edit-upload").off("click").on("click",function(){a.find(".drop-file").trigger("click")}),a.find(".tab-host-dialog-edit-icon-clear").off("click").on("click",function(){i&&(i="",a.find(".tab-host-dialog-edit-icon").hide(),a.find(".tab-host-dialog-ok").removeClass("disabled"),a.find(".tab-host-dialog-edit-icon-clear").hide())}),a.find(".tab-host-dialog-edit-color-clear").off("click").on("click",function(){n&&(a.find(".tab-host-dialog-ok").removeClass("disabled"),a.find(".tab-host-dialog-edit-color-clear").hide(),a.find(".tab-host-dialog-edit-colorpicker").colorpicker({component:".btn",color:n,container:a.find(".tab-host-dialog-edit-colorpicker")}).colorpicker("setValue",""),n="")});var s=Date.now();try{a.find(".tab-host-dialog-edit-colorpicker").colorpicker("destroy")}catch(e){}a.find(".tab-host-dialog-edit-colorpicker").colorpicker({component:".btn",color:n,container:a.find(".tab-host-dialog-edit-colorpicker")}).colorpicker("setValue",n).on("showPicker.colorpicker",function(){var e=a.find(".modal-content");e[0].scrollTop=e[0].scrollHeight}).on("changeColor.colorpicker",function(e){100'+e+"").appendTo('.admin-sidemenu-items[data-tab="tab-hosts"] a')}else $("#updates-for-hosts").remove()},this._postInit=function(){if(void 0!==r.$grid){this.isTiles?function(){for(var e="",t=0;t
    '+_("Filtered out")+"
    ")}():function(){for(var e="",t=0;t'+_("Filtered out")+"")}(),i(this.$tab.find(".filter-input").val());var s=setTimeout(function(){console.warn("Timeout for repository"),s=null,r.initButtons()},2e3),e=r.main.currentHost;if(!e)for(var t=0;t↦'+t.val+"")):e.match(/^system\.host\..+\.inputCount$/)&&(e=e.substring(0,e.length-11),this.$tab.find('.host-in[data-host-id="'+e+'"]').html('↦'+t.val+""))}}function Instances(i){var h=this;function b(e,t,a,i,n){if("protocol"===a&&(a="secure"),"ip"===e)i=i.replace("%"+e+"%",location.hostname);else if("instance"===e)i=i.replace("%"+e+"%",n);else if(t){a.match(/^native_/)&&(a=a.substring(7));var s=t.native[a];"bind"!==e||s&&"0.0.0.0"!==s||(s=location.hostname),i="secure"===a?i.replace("%"+e+"%",s?"https":"http"):-1===i.indexOf("%"+e+"%")?i.replace("%native_"+e+"%",s):i.replace("%"+e+"%",s)}else i="secure"===a?i.replace("%"+e+"%","http"):-1===i.indexOf("%"+e+"%")?i.replace("%native_"+e+"%",""):i.replace("%"+e+"%","");return i}function o(e,t,a){var i,n,s,o=e.match(/%(\w+)%/g);if(o){for(n=o.length-1;0<=n;n--)s=(i=(i=o[n]).replace(/%/g,"")).split("_"),i.match(/^native_/)?(e=b(i,h.main.objects["system.adapter."+t+"."+a],i,e,a),o.splice(n,1)):1===s.length?(e=b(i,h.main.objects["system.adapter."+t+"."+a],s[0],e,a),o.splice(n,1)):s[0].match(/\.[0-9]+$/)&&(e=b(i,h.main.objects["system.adapter."+s[0]],s[1],e,a),o.splice(n,1));var r,l,d={},c=s[0];for(n=0;n',r+=''+_("Connected to host: ")+'',h.main.states[e+".connected"]&&h.main.states[e+".connected"].val?r+=''+_("true")+"":r+=_("false"),r+='',r+=''+_("Heartbeat: ")+'',h.main.states[e+".alive"]&&h.main.states[e+".alive"].val?r+=''+_("true")+"":r+=_("false"),r+="",h.main.states[a+"."+i+".info.connection"]||h.main.objects[a+"."+i+".info.connection"])r+=''+_("Connected to %s: ",a)+"",r+=(l=!!h.main.states[a+"."+i+".info.connection"]&&h.main.states[a+"."+i+".info.connection"].val)?!0===l?''+_("true")+"":''+l+"":_("false"),r+="";r+=""}else{var l;if(r='',r+='",h.main.states[a+"."+i+".info.connection"]||h.main.objects[a+"."+i+".info.connection"])r+='";r+="
    '+_("Connected to host: ")+'',h.main.states[e+".connected"]&&h.main.states[e+".connected"].val?r+=''+_("true")+"":(r+="daemon"===s.mode?''+_("false")+"":_("false"),o="daemon"===s.mode?"red":"blue"),r+='
    '+_("Heartbeat: ")+'',h.main.states[e+".alive"]&&h.main.states[e+".alive"].val?r+=''+_("true")+"":(r+="daemon"===s.mode?''+_("false")+"":_("false"),o="daemon"===s.mode?"red":"blue"),r+="
    '+_("Connected to %s: ",a)+"",(l=!!h.main.states[a+"."+i+".info.connection"]&&h.main.states[a+"."+i+".info.connection"].val)?r+=!0===l?''+_("true")+"":''+l+"":(o="red"===o?"red":"orange",r+=''+_("false")+""),r+="
    "}o="blue"===o?"":o,n.removeClass("led-red led-green led-orange led-blue").addClass("led-"+o).data("title",r),n.data("inited")||"gray"===o||(n.data("inited",!0),n.hover(function(){var e='
    '+$(this).data("title")+"
    ",t=$(e);t.insertAfter($(this)),$(this).data("big",t[0]);var a=parseFloat(t.height()),i=Math.round($(this).position().top-(a-parseFloat($(this).height()))/2);a+i>(window.innerHeight||document.documentElement.clientHeight)&&(i=(window.innerHeight||document.documentElement.clientHeight)-a),i<0&&(i=0),t.css({top:i}).on("click",function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)})},function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)}).on("click",function(){$(this).trigger("hover")}))}function r(){for(var e=h.main.states["system.host."+h.main.currentHost+".memRss"],t=1,a=e?e.val:0,i=0;i'+a+"");var r=_("%s processes",t),l=h.$tab.find("#running_processes");r!==l.text()&&l.html(''+r+"")}function l(){h.main.states["system.host."+h.main.currentHost+".memAvailable"]?h.memState="memAvailable":h.main.states["system.host."+h.main.currentHost+".freemem"]&&(h.memState="freemem");var e=h.main.states["system.host."+h.main.currentHost+"."+h.memState];if(e){h.totalmem=h.totalmem||h.main.objects["system.host."+h.main.currentHost].native.hardware.totalmem/1048576;var t=Math.round(e.val/h.totalmem*100),a=h.$tab.find("#freeMem"),i=tdp(e.val);i!==a.text()&&(a.html(''+i+""),h.$tab.find("#freeMemPercent").html(''+t+"%"))}else h.$tab.find(".free-mem-label").hide()}function d(){var e=h.main.states["system.host."+h.main.currentHost+".diskSize"],t=h.main.states["system.host."+h.main.currentHost+".diskFree"],a=h.main.states["system.host."+h.main.currentHost+".diskWarning"];if(t&&t.val&&e&&e.val){a=a?parseFloat(a.val):5;var i=h.$tab.find("#diskFree"),n=Math.round(t.val/e.val*1e3)/10;i.html(''+n+""),i.parent().attr("title",_("Size: %s, Free: %s",h.main.formatBytes(1024*e.val*1024),h.main.formatBytes(1024*t.val*1024)))}else h.$tab.find(".tab-instances-info-disk").hide()}function y(e){var t,a=h.main.objects[e]&&h.main.objects[e].common||{};return t=a.enabled&&"daemon"===a.mode&&h.main.states[e+".memRss"]?(t=h.main.states[e+".memRss"].val,t=parseFloat(t)||0,a.memoryLimitMB&&a.memoryLimitMB<=t?''+t.toFixed(1)+" MB":t.toFixed(1)+" MB"):""}function c(e,t,a,i){var n,s=h.main.objects[t]&&h.main.objects[t].common||{},o=t.split("."),r=o[2],l=o[3];if("tile"===a)n=i?"":'
    ',n+=i?"":"
    ";else{n=i?"":'';var d=s.localLinks||s.localLink||"",c=d?h.replaceInLink(d,r,l):"";d&&(d="object"==typeof c?'':''),n+='
    ',n+=""+(s.icon?d+'':"")+(d?"
    ":"")+"",n+=''+r+"."+l+"";var u=s.onlyWWW||s.enabled;n+='',n+=''+(c?'':"")+"";var p=s.titleLang||s.title;if("object"==typeof p&&(p=p[systemLang]||p.en),n+=''+(p||"")+"",1'+(s.host||"")+""}n+=''+("schedule"===s.mode&&s.schedule||"")+"",h.main.config.expertMode&&(n+=''+(s.restartSchedule||"")+"",n+=''+(s.loglevel||"")+"",n+=''+(s.memoryLimitMB||"")+"",u&&h.main.states[t+".inputCount"]&&h.main.states[t+".outputCount"]?n+='⇥'+h.main.states[t+".inputCount"].val+' / ↦'+h.main.states[t+".outputCount"].val+"":n+=' / '),n+=''+y(t)+"",n+=i?"":""}i?h.$tab.find('.instance-adapter[data-instance-id="'+t+'"]').html(n):e.append(n),h.initButtons(t,c),f(t),h.$tab.find('.instance-editable[data-instance-id="'+t+'"]').on("click",M).addClass("select-id-quick-edit"),h.$tab.find('.instance-schedule[data-instance-id="'+t+'"]').each(function(){$(this).find("button").length||($(this).append(''),$(this).find("button").on("click",function(){var a=$(this).data("name"),i=$(this).data("instance-id");!function(e,t){e=(e||"").replace(/"/g,"").replace(/'/g,"");try{setupCron(e,t)}catch(e){alert(_("Cannot parse value as cron"))}}(h.main.objects[i].common[a]||"",function(e){if(null!==e){var t={common:{}};t.common[a]=e,h.main.socket.emit("extendObject",i,t,function(e){e&&h.main.showError(e)})}})}))}),h.$tab.find('.instance-name[data-instance-id="'+t+'"]').on("click",function(){var e=h.$tab.find('.instance-settings[data-instance-id="'+$(this).data("instance-id")+'"]');e.hasClass("small-button-empty")||e.trigger("click")}).css("cursor","pointer")}function u(e){void 0===e&&(e=h.$tab.find(".instances-filter").val());var t=[];if(e)for(var a=new RegExp(e),i=0;i';for(var u=0;u'+(p[1]||p[0])+""}l+=""}l=l||'';var m=null;t.html(l+'
    ');var g=a?t.find("select"):t.find("input");t.find(".select-id-quick-edit-cancel").off("click").on("click",function(e){m&&clearTimeout(m),m=null,e.preventDefault(),e.stopPropagation(),t.html(o).off("click").on("click",M).addClass("select-id-quick-edit").css("text-align",r)}),t.find(".select-id-quick-edit-ok").off("click").on("click",function(){t.trigger("blur")}),g.val(s),g.blur(function(){m&&clearTimeout(m),m=setTimeout(function(){m=null;var a=$(this).val();s=JSON.stringify(a)!==JSON.stringify(s)?(h.main.socket.emit("getObject",i,function(e,t){t?(t.common=t.common||{},t.common[n]=a,"title"===n&&t.common.titleLang&&delete t.common.titleLang,h.main.socket.emit("setObject",t._id,t,function(e){e&&h.main.showError(e)})):console.log("Object "+i+" does not exist: "+e)}),''+s+""):o,t.html(s).off("click").on("click",M).addClass("select-id-quick-edit").css("text-align",r)}.bind(this),100)}).on("keyup",function(e){13===e.which&&$(this).trigger("blur"),27===e.which&&(void 0===s&&(s=""),t.html(s).off("click").on("click",M).addClass("select-id-quick-edit").css("text-align",r))}),"object"==typeof e&&(e.preventDefault(),e.stopPropagation()),setTimeout(function(){g.focus()},100)}this.$tab=$("#tab-instances"),this.$grid=$("#grid-instances"),this.$gridHead=$("#grid-instances-head"),this.inited=!1,this.main=i,this.list=[],this.hostsText=null,this.filterHost=!1,this.memState="memAvailable",window.tdp||(window.tdp=function(e,t){return isNaN(e)?"":e.toFixed(t||0).replace(".",",").replace(/\B(?=(\d{3})+(?!\d))/g,".")}),this.replaceInLink=function(e,t,a){if("object"!=typeof e)return o(e,t,a);var i,n=JSON.parse(JSON.stringify(e));for(var s in n)n.hasOwnProperty(s)&&(n[s]=o(n[s],t,a),i||(i=n[s]));return n.__first=i,n},this.prepare=function(){var e=h.$tab.find(".instances-filter"),t=h.$tab.find(".instances-filter-clear");e.on("change",function(){var e=$(this).val();e?($(this).addClass("input-not-empty"),t.show()):($(this).removeClass("input-not-empty"),t.hide()),h.main.saveConfig("instancesFilter",e),u(e)}).on("keyup",function(){h.filterTimeout&&clearTimeout(h.filterTimeout),h.filterTimeout=setTimeout(function(){e.trigger("change")},300)}),h.main.config.instancesFilter&&"{"!==h.main.config.instancesFilter[0]?(e.addClass("input-not-empty").val(h.main.config.instancesFilter),t.show()):t.hide(),h.$tab.find(".btn-instances-expert-mode").on("click",function(){h.main.config.expertMode=!h.main.config.expertMode,h.main.saveConfig("expertMode",h.main.config.expertMode),h.updateExpertMode(),h.main.tabs.adapters.updateExpertMode()}),h.main.config.expertMode&&h.$tab.find(".btn-instances-expert-mode").addClass("red lighten-3"),h.$tab.find(".btn-instances-reload").on("click",function(){h.init(!0,!0)}),t.on("click",function(){e.val("").trigger("change")}),this.$tab.find(".btn-instances-host").off("click").on("click",function(){h.filterHost=!h.filterHost,h.filterHost?h.$tab.find(".btn-instances-host").addClass("red lighten-3"):h.$tab.find(".btn-instances-host").removeClass("red lighten-3"),h.main.saveConfig("instancesFilterHost",h.filterHost),setTimeout(function(){u()},50)}),this.filterHost=this.main.config.instancesFilterHost||!1,this.filterHost?this.$tab.find(".btn-instances-host").addClass("red lighten-3"):this.$tab.find(".btn-instances-host").removeClass("red lighten-3")},this.updateExpertMode=function(){h.init(!0),h.main.config.expertMode?h.$tab.find(".btn-instances-expert-mode").addClass("red lighten-3"):h.$tab.find(".btn-instances-expert-mode").removeClass("red lighten-3")},this.replaceLink=function(a,i,n,s){var o;(a=a.replace(/%/g,"")).match(/^native_/)&&(a=a.substring(7)),-1===a.indexOf("_")?o=[i+"."+n,a]:(o=a.split("_"))[0].match(/\.[0-9]+$/)||(o[0]+=".0"),"protocol"===o[1]&&(o[1]="secure"),"instance"!==a?this.main.socket.emit("getObject","system.adapter."+o[0],function(e,t){t&&setTimeout(function(){var e;(e=s?h.$tab.find("#"+s).data("src"):h.$tab.find("#a_"+i+"_"+n).attr("href"))&&(e="secure"===o[1]?e.replace("%"+a+"%",t.native[o[1]]?"https":"http"):-1===e.indexOf("%"+a+"%")?e.replace("%native_"+a+"%",t.native[o[1]]):e.replace("%"+a+"%",t.native[o[1]]),s?h.$tab.find("#"+s).data("src",e):h.$tab.find("#a_"+i+"_"+n).attr("href",e))},0)}):setTimeout(function(){var e;e=(e=s?h.$tab.find("#"+s).data("src"):h.$tab.find("#a_"+i+"_"+n).attr("href")).replace("%instance%",n),s?h.$tab.find("#"+s).data("src",e):h.$tab.find("#a_"+i+"_"+n).attr("href",e)},0)},this._replaceLink=function(a,i,n,s,o){var r;(i=i.replace(/%/g,"")).match(/^native_/)&&(i=i.substring(7)),-1===i.indexOf("_")?r=[n+"."+s,i]:(r=i.split("_"))[0].match(/\.[0-9]+$/)||(r[0]+=".0"),"protocol"===r[1]&&(r[1]="secure"),this.main.socket.emit("getObject","system.adapter."+r[0],function(e,t){a=t&&a?"secure"===r[1]?a.replace("%"+i+"%",t.native[r[1]]?"https":"http"):-1===a.indexOf("%"+i+"%")?a.replace("%native_"+i+"%",t.native[r[1]]):a.replace("%"+i+"%",t.native[r[1]]):(console.log("Cannot get link "+r[1]),a.replace("%"+i+"%","")),setTimeout(function(){o(a,n,s)},0)})},this._replaceLinks=function(e,t,a,i,n){if(!e)return n(e,t,a,i);var s=e.match(/%(\w+)%/g);return s?"%ip%"===s[0]?(e=e.replace("%ip%",location.hostname),void this._replaceLinks(e,t,a,i,n)):"%instance%"===s[0]?(e=e.replace("%instance%",a),void this._replaceLinks(e,t,a,i,n)):void this._replaceLink(e,s[0],t,a,function(e,t,a){this._replaceLinks(e,t,a,i,n)}.bind(this)):n(e,t,a,i)},this._postInit=function(e,t){if(this.main.currentHost&&void 0!==this.$grid&&(!this.$grid.data("inited")||e)){this.$grid.data("inited",!0),this.list.sort();for(var a=[],i=this.list.length-1;0<=i;i--)this.main.objects[this.list[i]]&&this.main.objects[this.list[i]].common&&!this.main.objects[this.list[i]].common.localLink&&!this.main.objects[this.list[i]].common.localLinks&&this.main.objects[this.list[i]].common.noConfig&&(a.push(this.list[i]),this.list.splice(i,1));for(this.list.sort(),a.sort(),i=0;i",o+=''+_("instance")+"",o+='',o+='',o+=''+_("actions")+"",o+=''+_("title")+"",1'+_("host")+""),o+=''+_("schedule_group")+"",h.main.config.expertMode&&(o+=''+_("restart")+"",o+=''+_("loglevel")+"",o+=''+_("memlimit")+"",o+=''+_("events")+""),o+=''+_("RAM usage")+"",h.$gridHead.html(o),this.$grid.html("");for(var n=Date.now(),s=0;s'+_("Filtered out")+""),h.$tab.find("#currentHost").html(this.main.currentHost),1'+s+"")}else"outputCount"===i?h.$tab.find('.instance-out[data-instance-id="'+e+'"]').html('↦'+t.val+""):"inputCount"===i&&h.$tab.find('.instance-in[data-instance-id="'+e+'"]').html('⇥'+t.val+"");if(-1!==this.list.indexOf(e))return void("alive"!==i&&"connected"!==i||f(e));e="system.adapter."+a[0]+"."+a[1],-1!==this.list.indexOf(e)&&"connection"===i&&f(e)}}},this.objectChange=function(e,t,a){if(e.match(/^system\.adapter\.[-\w]+\.[0-9]+$/))if(t)-1===this.list.indexOf(e)?(this.list.push(e),this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){h.updateTimer=null,h.init(!0)},200),t.common.noConfig||setTimeout(function(){-1===window.location.hash.indexOf("/config/")&&h.main.navigate({tab:"instances",dialog:"config",params:e})},2e3)):-1!==e.indexOf(".web.")?(this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){h.updateTimer=null,h.init(!0)},200)):this.$grid.find('.instance-adapter[data-instance-id="'+e+'"]').html(c(this.$grid,e,this.main.config.instanceForm,!0));else{var i=this.list.indexOf(e);-1!==i&&(this.list.splice(i,1),this.$grid.find('.instance-adapter[data-instance-id="'+e+'"]').remove())}else e.match(/^system\.host\.[-\w]+$/)&&(this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){h.updateTimer=null,h.init(!0)},200))},this.initButtons=function(e,t){e=e?'[data-instance-id="'+e+'"]':"";var a=h.$grid.find(".instance-edit"+e).off("click").on("click",function(){h.onEdit($(this).attr("data-instance-id"))});a.find(".ui-button-icon-primary").length||a.attr("title",_("edit")),(a=h.$grid.find(".instance-settings"+e).off("click").on("click",function(){h.main.navigate({tab:"instances",dialog:"config",params:$(this).data("instance-id")})})).each(function(){var e=$(this).attr("data-instance-id");i.objects[e]&&i.objects[e].common&&i.objects[e].common.noConfig&&$(this).addClass("disabled")}),a=h.$grid.find(".instance-reload"+e).off("click").on("click",function(){h.main.socket.emit("extendObject",$(this).attr("data-instance-id"),{},function(e){e&&h.main.showError(e)})}),a=h.$grid.find(".instance-del"+e).off("click").on("click",function(){var t=$(this).attr("data-instance-id");if(h.main.objects[t]&&h.main.objects[t].common&&h.main.objects[t].common.host){var e=t.replace(/^system\.adapter\./,"");h.main.confirmMessage(_("Are you sure you want to delete the instance %s?",e),null,"help",function(e){e&&h.main.cmdExec(h.main.objects[t].common.host,"del "+t.replace("system.adapter.",""),function(e){e||h.main.tabs.adapters.init(!0)})})}}),a=h.$grid.find(".instance-issue"+e).off("click").on("click",function(){h.main.navigate({tab:"instances",dialog:"issue",params:$(this).data("instance-id")})}),h.$grid.find(".instance-image"+e).each(function(){$(this).data("installed")||($(this).data("installed",!0),$(this).hover(function(){var e='
    ',t=$(e);t.insertAfter($(this)),$(this).data("big",t[0]);var a=parseFloat(t.height()),i=Math.round($(this).position().top-(a-parseFloat($(this).height()))/2);a+i>(window.innerHeight||document.documentElement.clientHeight)&&(i=(window.innerHeight||document.documentElement.clientHeight)-a),i<0&&(i=0),t.css({top:i})},function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)}))}),(a=h.$grid.find(".instance-stop-run"+e).off("click").on("click",function(){var e=$(this).attr("data-instance-id");$(this).addClass("disabled"),h.main.socket.emit("extendObject",e,{common:{enabled:!h.main.objects[e].common.enabled}},function(e){e&&h.main.showError(e)})})).find(".ui-button-icon-primary").length||a.each(function(){var e=$(this).attr("data-instance-id");h.main.objects[e].common.enabled?a.addClass("instance-running").attr("title",_("Activated. Click to stop.")).find("i").html("pause"):a.removeClass("instance-running").attr("title",_("Deactivated. Click to start.")).find("i").html("play_arrow")}),a=h.$grid.find(".instance-web"+e).off("click").on("click",function(){var e=$(this).data("link");if("object"==typeof e){var t="";for(var a in e)if(e.hasOwnProperty(a)&&"__first"!==a){var i=e[a].match(/^https?:\/\/[-.\w]+:(\d+)\/?/),n=e[a].match(/^https:\/\//);t+='"}t+='";var s=$("#instances-menu");s.data("inited")&&s.menu("destroy");var o=$(this).position();s.html(t),s.data("inited")||(s.data("inited",!0),s.mouseleave(function(){$(this).hide()})),s.menu().css({left:o.left,top:o.top}).show(),s.find(".instances-menu-link").off("click").on("click",function(){$(this).data("link")&&window.open($(this).data("link"),$(this).data("instance-id")),$("#instances-menu").hide()})}else window.open($(this).data("link"),$(this).data("instance-id"))}),"object"==typeof t&&a.data("link",t)},this.resize=function(e,t){}}function Intro(e){var T=this;function t(e){var t=Math.floor(e/86400);e%=86400;var a=Math.floor(e/3600);a<10&&(a="0"+a),e%=3600;var i=Math.floor(e/60);i<10&&(i="0"+i),e%=60,(e=Math.floor(e))<10&&(e="0"+e);var n="";return t&&(n+=t+" "+_("daysShortText")+" "),n+=a+":"+i+":"+e}this.$tab=$("#tab-intro"),this.$tiles=this.$tab.find(".tab-intro-cards"),this.main=e,this.inited=!1,this.$template=$("#intro-template");var c={Uptime:t,"System uptime":t,RAM:function(e){var t=Math.floor(e/1073741824*10)/10;e%=1073741824;var a=Math.floor(e/1048576*10)/10,i="";return i+=1");$(this).append(t),t.val($(this).data("clippy")),t.trigger("select"),document.execCommand("copy"),t.remove(),e.preventDefault(),e.stopPropagation(),T.main.showToast(T.$tiles,_("copied"))}function C(e){var t,l=T.$template.clone();if(l.removeAttr("id"),l.addClass("card-system-info"),l.find(".btn-small").addClass("disabled"),l.find(".card-titles").text(e.name),l.find(".btn-card-enabled").data("host",e.id),!1===T.main.systemConfig.common.intro[e.id]){if(!T.$tab.hasClass("edit-active"))return null;l.addClass("card-disabled").find(".btn-card-enabled").removeClass("blue").addClass("gray").find("i").text("close")}T.main.objects[e.id]&&T.main.objects[e.id].common&&(t=T.main.objects[e.id].common.icon),l.find(".card-image-img").attr("src",t||"img/no-image.png"),l.find(".card-content-text").html('
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    ');var d=setTimeout(function(){d&&(d=null,l.find(".btn-small").addClass("disabled"),l.find(".card-content-text").html(_("offline")))},6e3);return c["Disk size"]=c["Disk size"]||T.main.formatBytes,c["Disk free"]=c["Disk size"]||T.main.formatBytes,T.main.socket.emit("sendToHost",e.id,"getHostInfo",null,function(e){clearTimeout(d),d=null,"permissionError"===e?console.error('May not read "getHostInfo"'):e?l.find(".btn-small").removeClass("disabled"):console.error('Cannot read "getHostInfo"');var t=T.main.states["system.host."+T.main.currentHost+".diskWarning"];t=t?parseFloat(t.val):5;var a=0"+_(n)+": ",i+=''+(c[n]?c[n](e[n]):e[n]||" --")+"");a&&(i+="
  • "+_("Disk free")+": ",i+=''+(c["Disk free"]?c["Disk free"](e["Disk free"]):e["Disk free"]||" --")+"
  • ",i+="
  • "+_("Disk size")+": ",i+=''+(c["Disk size"]?c["Disk size"](e["Disk size"]):e["Disk size"]||" --")+"
  • "),i+=""}i+="",l.find(".card-content-text").replaceWith($(i)),i='
    '+_("Info")+'
    content_copyclose';var s=[];if(e){for(var o in i+="
      ",e)if(e.hasOwnProperty(o)){i+="
    • "+_(o)+": ";var r=c[o]?c[o](e[o]):e[o];s.push(o+": "+r),i+="Disk free"===o&&a?''+r+"
    • ":''+r+""}i+="
    "}i+="
    ",l.find(".card-reveal").replaceWith($(i)),T.$tab.hasClass("edit-active")?l.find(".btn-small").hide():l.find(".btn-info").data("clippy",s.join("\r\n")).on("click",u)}),l}function k(e,t,a,i,n,s,o){var r=T.$template.clone();r.removeAttr("id");var l=n.replace(/^https?:\/\//,""),d=l.indexOf("/");if(-1!==d&&(l=l.substring(0,d)),"admin"===e&&l===location.host)return null;if("web"===e)return null;if("vis-web-admin"!==e&&e.match(/^vis-/))return null;if(e.match(/^icons-/))return null;if(i&&i.noIntro)return null;r.find(".btn-card-enabled").data("instance",e+"."+t+(a&&a.name?"."+a.name:"")).data("web",s),o?r.on("click",function(){T.$tab.hasClass("edit-active")||window.open($(this).find(".url").attr("href"))}):r.addClass("card-disabled").find(".btn-card-enabled").removeClass("blue").addClass("gray").find("i").text("close"),r.find(".url").attr("href","object"==typeof n?n._first:n||"").text(l+(s?" ("+s+")":"")),r.find(".card-image-img").attr("src",i.icon?"adapter/"+e+"/"+i.icon:"img/no-image.png"),a&&a.color&&r.find(".card-image").css("background",a.color);var c=a&&a.name||i.titleLang||i.title;"object"==typeof c&&(c=c[systemLang]||c.en),r.find(".card-titles").text(c||e);var u=i.desc;return"object"==typeof u&&(u=u[systemLang]||u.en),r.find(".card-content-text").text(u||""),r}function a(e,i){!function(e,t){var a,i,n,s=JSON.parse(JSON.stringify(e)),o=[];s.sort(function(e,t){return e=T.main.objects[e]&&T.main.objects[e].common,t=(t=T.main.objects[t]&&T.main.objects[t].common)||{},void 0===(e=e||{}).order&&void 0===t.order?e.name.toLowerCase()>t.name.toLowerCase()?1:e.name.toLowerCase()t.order?1:e.ordert.name.toLowerCase()?1:e.name.toLowerCase()\n \n');$.getJSON("https://api.github.com/repos/"+i[3]+"/"+i[4]+"/issues",function(e){var t=!1;for(var a in r.empty(),e)if(e.hasOwnProperty(a)){if("remove"===a)break;var i=e[a];if(!i.hasOwnProperty("pull_request")){t=!0;var n=$("#issueTable").children().clone(!0,!0);n.find(".collapsible-header-title").text(i.title),n.find(".goto").attr("href",i.html_url),n.find(".user").text(i.user.login),n.find(".form-row").html((new showdown.Converter).makeHtml(i.body).replace(/src="/g,'class="responsive-img" src="'));var s=new Date(new Date(i.created_at));if(n.find(".created").text(s.toLocaleDateString(systemLang,{weekday:"short",year:"numeric",month:"long",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})),0'+i.labels[o].name+"")}r.append(n),0}}t||r.append($('
  • '+_("No bug")+"

  • "))}).done(n.$dialogIssue.find(".collapsible").collapsible())}n.$dialogIssue.data("name",t),n.$dialogIssue.find(".title").html(_("Known bugs for")+": "+t),n.$dialogIssue.find(".dialog-system-buttons .btn-add").attr("href","https://github.com/"+i[3]+"/"+i[4]+"/issues/new"),n.$dialogIssue.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(e){e.stopPropagation(),e.preventDefault(),n.main.navigate()})}},this.destroy=function(){this.inited&&(this.$dialogIssue.find(".collapsible").collapsible("destroy"),this.inited=!1)}}function Logs(t){var l=this;this.main=t,this.$tab=$("#tab-logs");var s,d,o,c,r={count:0,start:0,limit:2e3},u={host:"",severity:"",message:""},p={list:[],mode:!1,counter:0,overflow:!1,$counterSpan:null};this.prepare=function(){d=this.$tab.find("#log-outer"),s=this.$tab.find("#log-table"),o=this.$tab.find("#log-pause"),(c=new IobListHeader("log-outer-header",{list:d,colWidthOffset:1,prefix:"log-filter"})).doFilter=l.filter,c.add("combobox","from","host"),c.add("text","Time"),c.add("combobox","","severity",[{val:"",name:"debug"},{val:"silly",name:"silly"},{val:"info",name:"info"},{val:"warn",name:"warn"},{val:"error",name:"error"}]).$filter.attr("title",_("severity")),c.add("edit","Message","message"),this.$tab.find("#log-clear-on-disk").on("click",function(){l.main.confirmMessage(_("Log file will be deleted. Are you sure?"),null,null,function(e){e&&l.main.socket.emit("sendToHost",t.currentHost,"delLogs",null,function(e){e?l.main.showError(e):l.clear()})})}).addClass("ui-state-error"),this.$tab.find("#log-refresh").on("click",function(){l.clear()}),o.attr("title",_("Pause output")).on("click",function(){l.pause()}),p.$counterSpan=o.find("ui-button-text"),this.$tab.find("#log-clear").on("click",function(){l.clear(!1)}),$("#log-copy-text").on("click",function(){$(this).hide().html("")}),this.$tab.find("#log-copy").on("click",function(){var e=''+_("copy note")+"";$("#log-copy-text").show().html(e+'
    '+s.html()+"
    ");for(var t=l.$tab.find("#log-copy-table").find(".log-column-4"),a=0;a'+n+"")}t.sort();for(var s=0;s'+o+"")}l.$tab.find("#log-files-btn").show().dropdown(),l.$tab.find("#log-files").html(a).find("a").on("click",function(){var e=$(this).data("value");e&&($(this).val(""),window.open(e,"_blank").focus())})}else l.$tab.find("#log-files").hide(),l.$tab.find("#log-files-btn").hide()})},0)})}else setTimeout(function(){l.init(e)},100)},this.destroy=function(){this.inited&&(this.inited=!1,this.main.subscribeLogs(!1))},this.add=function(e){if(s){if(e.message.substring(0,e.from.length)===e.from&&(e.message=e.message.substring(e.from.length+1)),p.mode)return p.list.push(e),p.counter++,p.counter>r.limit&&(p.overflow||(o.addClass("ui-state-error").attr("title",_("Message buffer overflow. Losing oldest")),p.overflow=!0),p.list.shift()),void p.$counterSpan.html(tdp(p.counter));if(r.count>=r.limit){var t=document.getElementById("log-line-"+(r.start+1));t&&(t.outerHTML=""),r.start++}else r.count++;e.from&&c&&c.host.checkAddOption(e.from,function(e){return{val:e.replace(/\./g,"-"),name:e}});var a="",i=e.from?e.from.replace(/\./g,"-"):"";u.host&&u.host!==i&&(a="display: none"),!a&&u.severity&&("debug"===u.severity&&"silly"===e.severity?a="display: none":"info"!==u.severity||"debug"!==e.severity&&"silly"!==e.severity?"warn"===u.severity&&"warn"!==e.severity&&"error"!==e.severity?a="display: none":"error"===u.severity&&"error"!==e.severity&&(a="display: none"):a="display: none"),!a&&u.message&&-1===e.message.indexOf(u.message)&&(a="display: none"),"error"===e.severity&&(l.$tabLogs=l.$tabLogs||$('a[href="#tab-logs"]'),l.$tabLogs.addClass("errorLog"));var n='';n+=''+(e.from||"")+"",n+=''+this.main.formatDate(e.ts)+"",n+=''+e.severity+"",n+=''+e.message.substring(0,200).replace(/&/g,"&").replace(//g,">")+"",s.prepend(n)}},this.filter=function(){u.host=c.host.val(),u.message=c.message.val(),u.severity=c.severity.val(),"error"===u.severity?(d.find(".log-severity-silly").hide(),d.find(".log-severity-debug").hide(),d.find(".log-severity-info").hide(),d.find(".log-severity-warn").hide()):("warn"===u.severity?(d.find(".log-severity-silly").hide(),d.find(".log-severity-debug").hide(),d.find(".log-severity-info").hide()):("info"===u.severity?(d.find(".log-severity-silly").hide(),d.find(".log-severity-debug").hide()):("silly"===u.severity?d.find(".log-severity-silly").show():d.find(".log-severity-silly").hide(),d.find(".log-severity-debug").show()),d.find(".log-severity-info").show()),d.find(".log-severity-warn").show()),d.find(".log-severity-error").show(),(u.host||u.message)&&d.find(".log-line").each(function(){u.host&&!$(this).hasClass("log-from-"+u.host)?$(this).hide():u.message&&-1===$(this).html().indexOf(u.message)&&$(this).hide()})},this.clear=function(e){void 0===e&&(e=!0),s.html(""),r.count=0,r.start=0,l.$tabLogs=l.$tabLogs||$('a[href="#tab-logs"]'),l.$tabLogs.removeClass("errorLog"),e&&setTimeout(function(){l.init(e)},0)},this.pause=function(){if(p.mode){p.mode=!1;for(var e=0;epause')}else o.addClass("yellow btn-pause-button-active"),p.$counterSpan=o,p.$counterSpan.html("0"),p.counter=0,p.mode=!0}}function Issue(e){var n=this;this.$dialog=$("#dialog-issue"),this.main=e,this.prepare=function(){},this.init=function(){if(!this.inited){this.inited=!0,showdown.setFlavor("github");var e=this.main.navigateGetParams(),t=e.replace(/^system\.adapter\./,""),a=this.main.objects[e];if(a&&a.common&&a.common.extIcon){var i=a.common.extIcon.split("/"),r=$("#result-issue");r.html('
    \n \n
    ');$.getJSON("https://api.github.com/repos/"+i[3]+"/"+i[4]+"/issues",function(e){var t=!1;for(var a in r.empty(),e)if(e.hasOwnProperty(a)){if("remove"===a)break;var i=e[a];if(!i.hasOwnProperty("pull_request")){t=!0;var n=$("#issueTable").children().clone(!0,!0);n.find(".collapsible-header-title").text(i.title),n.find(".goto").attr("href",i.html_url),n.find(".user").text(i.user.login),n.find(".form-row").html((new showdown.Converter).makeHtml(i.body).replace(/src="/g,'class="responsive-img" src="'));var s=new Date(new Date(i.created_at));if(n.find(".created").text(s.toLocaleDateString(systemLang,{weekday:"short",year:"numeric",month:"long",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})),0'+i.labels[o].name+"")}r.append(n),0}}t||r.append($('
  • '+_("No bug")+"

  • "))}).done(n.$dialog.find(".collapsible").collapsible())}n.$dialog.data("name",t),n.$dialog.find(".title").html(_("Known bugs for")+": "+t),n.$dialog.find(".dialog-system-buttons .btn-add").attr("href","https://github.com/"+i[3]+"/"+i[4]+"/issues/new"),n.$dialog.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(e){e.stopPropagation(),e.preventDefault(),n.main.navigate()})}},this.destroy=function(){this.inited&&(this.$dialog.find(".collapsible").collapsible("destroy"),this.inited=!1)}}function Objects(e){var l=this;this.$grid=$("#grid-objects"),this.subscribes={},this.main=e;var o=function(){if(l.$grid&&l.$grid.selectId)return o=l.$grid.selectId.bind(l.$grid),l.$grid.selectId.apply(l.$grid,arguments)};function r(t,e,a){for(var i=l.main.tabs.enums.list,n=[],s=0;s').show():o.$divLogo.html("").hide(),l(a.readme),l(a.changeLog),l(a.license),a.readme.length?a.readme=r(a.readme.join("\n"),t):a.readme="",a.changeLog.length?a.changeLog=r(a.changeLog.join("\n"),t):delete a.changeLog,a.license.length?(a.license[0]="## "+a.license[0],a.license=r(a.license.join("\n"),t)):delete a.license,a}(e,i.substring(0,i.lastIndexOf("/")+1));o.$divReadme.html(a.readme),a.changeLog?(o.$divChangeLog.html(a.changeLog),o.$tabs.find(".tab-changelog").show()):(o.$divChangeLog.html(""),o.$tabs.find(".tab-changelog").hide()),a.license?(o.$divLicense.html(a.license),o.$tabs.find(".tab-license").show()):(o.$divLicense.html(""),o.$tabs.find(".tab-license").hide())}).done(function(){o.$divReadme.on("click",".md-link",function(e){e.stopPropagation(),e.preventDefault(),o.fillDiv($(this).data("url"))}),o.$divReadme.on("click",".goto-link",function(e){e.stopPropagation(),e.preventDefault();var t=$($(this).data("goto"));t.length&&o.$divReadme.animate({scrollTop:o.$divReadme.scrollTop()-o.$divReadme.offset().top+t.offset().top},2e3)})})},this.destroy=function(){this.inited&&(localStorage.removeItem("original-md-url"),this.inited=!1)}}function initMap(){gMain.dialogs.system.mapLoaded=!0,gMain.dialogs.system.updateMap(!0)}function System(s){var n,o,r,l,d=this;this.$dialog=$("#dialog-system"),this.main=s,this.systemRepos=null,this.systemCerts=null;var c=!(this.mapLoaded=!1);function u(e,t){if(t.length<700&&(-1!==t.indexOf("/")||-1!==t.indexOf("\\")))return t;if(t.length<"-----BEGIN CERTIFICATE-----==-----END CERTIFICATE-----".length)return g(_('Invalid certificate "%s". To short.',e),!0),"";var a=[];if("-----BEGIN RSA PRIVATE KEY-----"===t.substring(0,"-----BEGIN RSA PRIVATE KEY-----".length)){if("-----END RSA PRIVATE KEY-----"!==t.substring(t.length-"-----END RSA PRIVATE KEY-----".length))return g(_('Certificate "%s" must end with "-----END RSA PRIVATE KEY-----".',e),!0),"";for(t=(t=(t=t.substring("-----BEGIN RSA PRIVATE KEY-----".length)).substring(0,t.length-"-----END RSA PRIVATE KEY-----".length)).replace(/\s/g,"");t.length;)a.push(t.substring(0,64)),t=t.substring(64);return"-----BEGIN RSA PRIVATE KEY-----\r\n"+a.join("\r\n")+"\r\n-----END RSA PRIVATE KEY-----\r\n"}if("-----BEGIN PRIVATE KEY-----"===t.substring(0,"-----BEGIN PRIVATE KEY-----".length)){if("-----END PRIVATE KEY-----"!==t.substring(t.length-"-----END PRIVATE KEY-----".length))return g(_('Certificate "%s" must end with "-----BEGIN PRIVATE KEY-----".',e),!0),"";for(t=(t=(t=t.substring("-----BEGIN PRIVATE KEY-----".length)).substring(0,t.length-"-----END PRIVATE KEY-----".length)).replace(/\s/g,"");t.length;)a.push(t.substring(0,64)),t=t.substring(64);return"-----BEGIN PRIVATE KEY-----\r\n"+a.join("\r\n")+"\r\n-----END PRIVATE KEY-----\r\n"}if("-----BEGIN CERTIFICATE-----"!==t.substring(0,"-----BEGIN CERTIFICATE-----".length))return g(_('Certificate "%s" must start with "-----BEGIN CERTIFICATE-----".',e),!0),"";if("-----END CERTIFICATE-----"!==t.substring(t.length-"-----END CERTIFICATE-----".length))return g(_('Certificate "%s" must end with "-----END CERTIFICATE-----".',e),!0),"";for(var i=t.split("-----END CERTIFICATE-----"),n=i.length-1;0<=n;n--)if(i[n].replace(/[\r\n|\r|\n]+/,"").trim()){for(t=(t=(t=i[n]).substring("-----BEGIN CERTIFICATE-----".length)).replace(/\s/g,""),a=[];t.length;)a.push(t.substring(0,64)),t=t.substring(64);i[n]="-----BEGIN CERTIFICATE-----\r\n"+a.join("\r\n")+"\r\n-----END CERTIFICATE-----\r\n"}else i.splice(n,1);return i.join("")}function p(e,t){for(var a,i=table2values("tab-system-certs"),n=[],s=0;s'+i[n].name+""),t===i[n].name&&(a=!0);a&&e.val(t);e.select()}()}}),d.systemRepos.nonEdit&&d.systemRepos.nonEdit.native&&d.systemRepos.nonEdit.native.repositories){var i=d.$dialog.find("#grid-repos");i.find("input").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),i.find("select").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),i.find(".btn-floating").each(function(){$(this).addClass("disabled")}),d.$dialog.find("#tab-system-repo .table-button-add").addClass("disabled")}}else d.$dialog.find("#tab-system-repo").html(_("permissionError"))}function g(e,t,a){d.main.showToast(d.$dialog.find("#tab-system-certs"),e,null,a,t)}function f(){var a=d.main.systemConfig.common,i=!1,n=!1;!function(){d.main.systemConfig.common.defaultNewAcl=d.main.systemConfig.common.defaultNewAcl||{};var e=d.main.systemConfig.common.defaultNewAcl,t=JSON.stringify(e);e.object=0,e.object|=d.$dialog.find("#tab-system-acl-obj-owner-read").prop("checked")?1024:0,e.object|=d.$dialog.find("#tab-system-acl-obj-owner-write").prop("checked")?512:0,e.object|=d.$dialog.find("#tab-system-acl-obj-group-read").prop("checked")?64:0,e.object|=d.$dialog.find("#tab-system-acl-obj-group-write").prop("checked")?32:0,e.object|=d.$dialog.find("#tab-system-acl-obj-every-read").prop("checked")?4:0,e.object|=d.$dialog.find("#tab-system-acl-obj-every-write").prop("checked")?2:0,e.owner=d.$dialog.find("#tab-system-acl-owner").val(),e.ownerGroup=d.$dialog.find("#tab-system-acl-group").val(),e.state=0,e.state|=d.$dialog.find("#tab-system-acl-state-owner-read").prop("checked")?1024:0,e.state|=d.$dialog.find("#tab-system-acl-state-owner-write").prop("checked")?512:0,e.state|=d.$dialog.find("#tab-system-acl-state-group-read").prop("checked")?64:0,e.state|=d.$dialog.find("#tab-system-acl-state-group-write").prop("checked")?32:0,e.state|=d.$dialog.find("#tab-system-acl-state-every-read").prop("checked")?4:0,e.state|=d.$dialog.find("#tab-system-acl-state-every-write").prop("checked")?2:0,e.file=0,e.file|=d.$dialog.find("#tab-system-acl-file-owner-read").prop("checked")?1024:0,e.file|=d.$dialog.find("#tab-system-acl-file-owner-write").prop("checked")?512:0,e.file|=d.$dialog.find("#tab-system-acl-file-group-read").prop("checked")?64:0,e.file|=d.$dialog.find("#tab-system-acl-file-group-write").prop("checked")?32:0,e.file|=d.$dialog.find("#tab-system-acl-file-every-read").prop("checked")?4:0,e.file|=d.$dialog.find("#tab-system-acl-file-every-write").prop("checked")?2:0,JSON.stringify(e)}(),d.$dialog.find(".system-settings.value").each(function(){var e=$(this),t=e.attr("id");t&&(t=t.substring("system_".length),"checkbox"===e.attr("type")?a[t]=e.prop("checked"):("language"===t&&a.language!==e.val()&&(i=!0),"activeRepo"===t&&a.activeRepo!==e.val()&&(n=!0),a[t]=e.val(),"isFloatComma"===t&&(a[t]="true"===a[t]||!0===a[t])))});var e={};if(d.systemRepos){for(var t in d.systemRepos.native.repositories)d.systemRepos.native.repositories.hasOwnProperty(t)&&"object"==typeof d.systemRepos.native.repositories[t]&&d.systemRepos.native.repositories[t].json&&(e[d.systemRepos.native.repositories[t].link]=d.systemRepos.native.repositories[t].json);d.systemRepos.native.repositories={}}var s=table2values("tab-system-repo");if(d.systemRepos){for(var o=null,r=0;r'+a+"");else d.$dialog.find("#tab-system-repo").html(_("permissionError"));d.$dialog.find("#diagMode").val(d.main.systemConfig.common.diag).on("change",function(){d.main.socket.emit("sendToHost",d.main.currentHost,"getDiagData",$(this).val(),function(e){d.$dialog.find("#diagSample").html(JSON.stringify(e,null,2))})}).trigger("change");var i=d.$dialog.find("#system_defaultHistory");i.html('');for(var n=0;n'+s.instances[n].substring("system.adapter.".length)+"");r=d.main.systemConfig.common.longitude,l=d.main.systemConfig.common.latitude,o||(o=!0,c?(d.mapLoaded=!0,$.ajax({url:"lib/js/ol.js",dataType:"script",cache:!0}).done(function(){setTimeout(d.updateMap,500)}),$.ajax({url:"lib/css/ol.css",success:function(e){$("head").append("")}})):$.ajax({url:"https://maps.googleapis.com/maps/api/js?key=AIzaSyCIrBRZfZAE_0C1OplAUy7OXhiWLoZc3eY&signed_in=true&callback=initMap",dataType:"script",cache:!0})),d.$dialog.find(".system-settings.value").each(function(){var e=$(this),t=e.attr("id");t&&(t=t.substring("system_".length),"checkbox"===e.attr("type")?e.prop("checked",d.main.systemConfig.common[t]):"isFloatComma"===t?e.val(d.main.systemConfig.common[t]?"true":"false"):e.val(d.main.systemConfig.common[t]),d.main.systemConfig.nonEdit&&d.main.systemConfig.nonEdit.common&&void 0!==d.main.systemConfig.nonEdit.common[t]&&(e.addClass("disabled"),e.prop("disabled",!0)))}),d.$dialog.find("#system_latitude").off("change").on("change",function(){l=$(this).val(),d.updateMap()}).off("keyup").on("keyup",function(){$(this).trigger("change")}),d.$dialog.find("#system_longitude").off("change").on("change",function(){r=$(this).val(),d.updateMap()}).off("keyup").on("keyup",function(){$(this).trigger("change")}),d.systemCerts.native.letsEncrypt||(d.systemCerts.native.letsEncrypt={path:"letsencrypt"}),d.$dialog.find(".system-le-settings.value").each(function(){var e=$(this),t=e.data("name");d.systemCerts&&d.systemCerts.native.letsEncrypt&&("checkbox"===e.attr("type")?e.prop("checked",d.systemCerts.native.letsEncrypt[t]):e.val(d.systemCerts.native.letsEncrypt[t])),d.systemCerts.nonEdit&&d.systemCerts.nonEdit.native&&d.systemCerts.nonEdit.native.letsEncrypt&&void 0!==d.systemCerts.nonEdit.native.letsEncrypt[t]&&(e.addClass("disabled"),e.prop("disabled",!0))}),d.$dialog.find("#tabs-system").find(".tabs").mtabs({onShow:function(e){e&&h($(e).attr("id"))}}),d.$dialog.find(".dialog-system-buttons .btn-save").off("click").on("click",f),d.$dialog.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(){d.main.navigate()}),m(),function(){d.main.systemConfig.common.defaultNewAcl=d.main.systemConfig.common.defaultNewAcl||{};for(var e,t=d.main.systemConfig.common.defaultNewAcl,a="",i=0;i'+(e||d.main.tabs.users.list[i])+"";for(d.$dialog.find("#tab-system-acl-owner").html(a).val(t.owner||"system.user.admin"),a="",i=0;i'+(e||d.main.tabs.users.groups[i])+"";d.$dialog.find("#tab-system-acl-group").html(a).val(t.ownerGroup||"system.group.administrator"),void 0===t.object&&(t.object=1636),d.$dialog.find("#tab-system-acl-obj-owner-read").prop("checked",1024&t.object),d.$dialog.find("#tab-system-acl-obj-owner-write").prop("checked",512&t.object),d.$dialog.find("#tab-system-acl-obj-group-read").prop("checked",64&t.object),d.$dialog.find("#tab-system-acl-obj-group-write").prop("checked",32&t.object),d.$dialog.find("#tab-system-acl-obj-every-read").prop("checked",4&t.object),d.$dialog.find("#tab-system-acl-obj-every-write").prop("checked",2&t.object),void 0===t.state&&(t.state=1636),d.$dialog.find("#tab-system-acl-state-owner-read").prop("checked",1024&t.state),d.$dialog.find("#tab-system-acl-state-owner-write").prop("checked",512&t.state),d.$dialog.find("#tab-system-acl-state-group-read").prop("checked",64&t.state),d.$dialog.find("#tab-system-acl-state-group-write").prop("checked",32&t.state),d.$dialog.find("#tab-system-acl-state-every-read").prop("checked",4&t.state),d.$dialog.find("#tab-system-acl-state-every-write").prop("checked",2&t.state),void 0===t.file&&(t.file=1636),d.$dialog.find("#tab-system-acl-file-owner-read").prop("checked",1024&t.file),d.$dialog.find("#tab-system-acl-file-owner-write").prop("checked",512&t.file),d.$dialog.find("#tab-system-acl-file-group-read").prop("checked",64&t.file),d.$dialog.find("#tab-system-acl-file-group-write").prop("checked",32&t.file),d.$dialog.find("#tab-system-acl-file-every-read").prop("checked",4&t.file),d.$dialog.find("#tab-system-acl-file-every-write").prop("checked",2&t.file),d.$dialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")})}(),function(){var e,t=d.$dialog.find("#tab-system-certs");if(d.systemCerts&&d.systemCerts.native.certificates){var a=[];for(var i in d.systemCerts.native.certificates)d.systemCerts.native.certificates.hasOwnProperty(i)&&a.push({name:i,certificate:(e=d.systemCerts.native.certificates[i],e.replace(/(?:\\[rn]|[\r\n]+)+/g,""))});if(values2table("tab-system-certs",a,{onChange:function(e){d.$dialog.find(".btn-save").removeClass("disabled")}}),d.systemCerts.nonEdit&&d.systemCerts.nonEdit.native&&d.systemCerts.nonEdit.native.certificates){var n=d.$dialog.find("#grid-certs");n.find("input").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),n.find("select").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),n.find(".btn-floating").each(function(){$(this).addClass("disabled")})}}else t.html(_("permissionError"));installFileUpload(t,1e4,function(e,t){if(e)g(e,!0);else{try{t=atob(t.split(",")[1])}catch(e){return void g(_("Cannot read file!"),!0)}if(-1!==(t=t.replace(/(\r\n|\n|\r)/gm,"")).indexOf("BEGIN RSA PRIVATE KEY"))p("private",t);else if(-1!==t.indexOf("BEGIN PRIVATE KEY"))p("private",t);else if(-1!==t.indexOf("BEGIN CERTIFICATE")){for(var a=t.split("-----END CERTIFICATE-----"),i=0,n=0;n'),l.find(".tab-dialog-new-icon .treetable-icon").attr("src",t),l.find(".tab-dialog-new-icon-clear").show()}}),"string"==typeof e&&(m.main.objects[e]&&m.main.objects[e].common&&(d.name=m.main.objects[e].common.name,d.icon=m.main.objects[e].common.icon,d.color=m.main.objects[e].common.color,d.desc=m.main.objects[e].common.desc,(o="group"===m.main.objects[e].type)&&(d.acl=m.main.objects[e].common.acl)),c=e,d.id=e),l.find(".tab-dialog-new-title").text(!0===e?_("Create new group"):d.id?_("Change"):_("Create new user")),d.id){var t=d.id.split(".");d.id=t.pop(),s=t.join(".")}l.find("#tab-users-dialog-new-name").val(translateName(d.name)).off("change").on("change",function(){var e=m.$grid.find("#tab-users-dialog-new-id"),t=e.val(),a=$(this).val();a=a.trim().replace(FORBIDDEN_CHARS,"_").replace(/\./g,"_").toLowerCase(),t&&n||!(o&&"administrator"!==t&&"user"!==t||!o&&"admin"!==t)||(e.val(a),i=a,l.find("#tab-users-dialog-new-preview").val(s+"."+(a||"#")),M.updateTextFields("#tab-users-dialog-new")),b(l)}).off("keyup").on("keyup",function(){$(this).trigger("change")}),l.find("#tab-users-dialog-new-desc").val(d.desc).off("change").on("change",function(){b(l)}).off("keyup").on("keyup",function(){$(this).trigger("change")}),i=d.id,l.find("#tab-users-dialog-new-id").val(d.id).off("change").on("change",function(){var e=$(this).val();i!==e&&(n=!0,i=e,l.find("#tab-users-dialog-new-preview").val(s+"."+(e||"#")),M.updateTextFields("#tab-users-dialog-new"),b(l))}).off("keyup").on("keyup",function(){$(this).trigger("change")}),l.find(".tab-dialog-create").addClass("disabled").off("click").text(_(c?"Change":"Create")).on("click",function(e){var a;d.name=l.find("#tab-users-dialog-new-name").val(),d.id=l.find("#tab-users-dialog-new-id").val(),d.desc=l.find("#tab-users-dialog-new-desc").val(),o?(a=d.acl,m.$grid.find(".edit-group-permissions").each(function(){var e=$(this).data("type"),t=$(this).data("operation");a[e]=a[e]||{},a[e][t]=$(this).prop("checked")}),function(i,n,s){if("system.group.administrator"===n&&"administrator"!==s.id)return i.stopPropagation(),u(_('Cannot change name of "%s"',"administrator"),!0);if("system.group.user"===n&&"user"!==s.id)return i.stopPropagation(),u(_('Cannot change name of "%s"',"user"),!0);if(!s.id)return i.stopPropagation(),u(_("ID may not be empty"),!0);if(n)if("system.group."+s.id!==n){if(m.main.objects["system.group."+s.id])return i.stopPropagation(),u(_("ID yet exists"),!0);m.main.socket.emit("getObject",n,function(e,t){if(e)g(_("Cannot change group: ")+e,!0);else{var a=s.id;t.common.name=s.name,t.common.color=s.color,t.common.icon=s.icon,t.common.desc=s.desc,delete s.id,m.main.socket.emit("delObject",n,function(e){e?(g(_("Cannot rename group: ")+e,!0),i.stopPropagation()):m.main.socket.emit("setObject",a,t,function(e){e?g(_("Cannot change group: ")+e,!0):g(_("Updated"))})})}})}else delete s.id,m.main.socket.emit("extendObject",n,{common:s},function(e,t){e?g(_("Cannot change group: ")+e,!0):g(_("Updated"))});else{if(!s.id)return i.stopPropagation(),u(_("ID may not be empty"),!0);m.main.socket.emit("addGroup",s.id,s.desc,null,function(e,t){e?g(_("Cannot create group: ")+e,!0):m.main.socket.emit("extendObject",t._id,{common:s},function(e){e?g(_("Cannot add group: ")+e,!0):g(_("Created"))})})}}(e,c,d)):(delete d.acl,r(e,c,d))}),l.find("#tab-users-dialog-new-preview").val(s+"."+(d.id||"#")),d.icon?(l.find(".tab-dialog-new-icon").show().html(m.main.getIcon(c)),l.find(".tab-dialog-new-icon-clear").show()):(l.find(".tab-dialog-new-icon").hide(),l.find(".tab-dialog-new-icon-clear").hide()),d.color=d.color||!1,d.color?l.find(".tab-dialog-new-color").val(d.color):l.find(".tab-dialog-new-color").val(),u(_("Drop the icons here")),l.find(".tab-dialog-new-upload").off("click").on("click",function(){l.find(".drop-file").trigger("click")}),l.find(".tab-dialog-new-icon-clear").off("click").on("click",function(){d.icon&&(d.icon="",l.find(".tab-dialog-new-icon").hide(),l.find(".tab-dialog-new-icon-clear").hide(),b(l))}),l.find(".tab-dialog-new-color-clear").off("click").on("click",function(){d.color&&(b(l),l.find(".tab-dialog-new-color-clear").hide(),l.find(".tab-dialog-new-colorpicker").colorpicker({component:".btn",color:d.color,container:l.find(".tab-dialog-new-colorpicker")}).colorpicker("setValue",""),d.color="")});var a=Date.now();try{l.find(".tab-dialog-new-colorpicker").colorpicker("destroy")}catch(e){}l.find(".tab-dialog-new-colorpicker").colorpicker({component:".btn",color:d.color,container:l.find(".tab-dialog-new-colorpicker")}).colorpicker("setValue",d.color).on("showPicker.colorpicker",function(){var e=l.find(".modal-content");e[0].scrollTop=e[0].scrollHeight}).on("changeColor.colorpicker",function(e){100'+_(n+" permissions")+"",i+='';for(var s=0;s"+t[s]+"":i+="";i+="",i+="";for(var o=0;o'}else i+="";i+=""}i+="",l.find("#tab-users-dialog-new-rights").html(i),l.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),l.find('input[type="checkbox"]').off("change").on("change",function(){b(l)}),p(c,d.acl),M.updateTextFields("#tab-users-dialog-new")}),l.find("ul.tabs .tab-dialog-new-tabs").show()):(l.find("ul.tabs .tab-dialog-new-tabs").each(function(){$(this).find('a[href="#tab-users-dialog-new-rights"]').length&&$(this).hide()}),M.updateTextFields("#tab-users-dialog-new")),l.find("ul.tabs").mtabs(),m.main.noSelect||l.find("ul.tabs").mtabs("select","tab-users-dialog-new-main"),l.modal().modal("open")}function t(){m.list.sort(),m.groups.sort();var e="";e+='
      ';for(var t=function(e,t){for(var a={},i=0;i'+m.main.getIcon(l)+d+'close'}var c="",u=!1;n.color&&(c="background: "+n.color+"; ",m.main.invertColor(n.color)&&(u=!0,c+="color: white;"));var p=n.desc;"object"==typeof p&&(p=p[systemLang]||p.en),e+='
    • ',e+=" "+(m.main.getIcon(m.list[a],null,null,"icon")||''),e+=''+i+"",e+="

      "+m.list[a]+((p?" ("+p+")":"")||"")+"

      ",e+=' '+(n.enabled?"check_box":"check_box_outline_blank")+"",e+=' edit',e+=' delete
      ',e+=s||"",e+="
    • "}e+="
    ",m.$gridUsers.html(e),m.$grid.find("#tab-users-btn-new-user").on("click",function(){y(!1)}),m.$gridUsers.find(".tab-users-enabled-user").on("click",function(){var e=$(this).data("user");if("system.user.admin"===e)return g(_("Cannot disable admin!"),!0),!1;var t=$(this),a=m.main.objects[e]&&m.main.objects[e].common&&m.main.objects[e].common.enabled;a=!a,m.main.socket.emit("extendObject",e,{common:{enabled:a}},function(e){e?g(_("Cannot modify user!")+e,!0):(g(_("Updated")),t.find("i").text(a?"check_box":"check_box_outline_blank"))})}),m.$gridUsers.find(".delete-content").off("click").on("click",function(){var t=$(this).data("user");$(this).hasClass("disabled")||(m.main.objects[t]&&"user"===m.main.objects[t].type?m.main.confirmMessage(_("Are you sure to delete %s?",t),null,"help",function(e){e&&h(t)}):g(_('Object "%s" does not exists. Update the page.',t),!0))}),m.$gridUsers.find(".edit-content").on("click",function(){y($(this).data("user"))}),m.$gridUsers.find(".tab-users-remove-group").on("click",function(){var i=$(this).data("user"),e=$(this).data("group");m.main.socket.emit("getObject",e,function(e,t){if(t&&t.common&&t.common.members){var a=t.common.members.indexOf(i);-1!==a?(t.common.members.splice(a,1),m.main.socket.emit("setObject",t._id,t,function(e){e?g(_("Error: %s",e),!0):g(_("Removed"))})):g(_("%s is not in the list"),!0)}})})}function a(){var e="";e+='
      ';for(var t=0;t'+m.main.getIcon(l)+r+'close'}var d="",c=!1;i.color&&(d="background: "+i.color+"; ",m.main.invertColor(i.color)&&(c=!0,d+="color: white;"));var u=i.desc;"object"==typeof u&&(u=u[systemLang]||u.en),e+='
    • ',e+=" "+(m.main.getIcon(m.groups[t],null,null,"icon")||''),e+=' '+a+"",e+="

      "+m.groups[t]+((u?" ("+u+")":"")||"")+"

      ",e+=' edit',e+=' delete
      ',e+=n||"",e+="
    • "}e+="
    ",m.$gridGroups.html(e),m.$grid.find("#tab-users-btn-new-group").on("click",function(){y(!0)}),m.$gridGroups.find(".delete-content").on("click",function(){var a=$(this).data("group");$(this).hasClass("disabled")||(m.main.objects[a]&&"group"===m.main.objects[a].type?m.main.confirmMessage(_("Are you sure to delete %s?",a),null,"help",function(e){var t;e&&(t=a,m.main.objects[t]&&"group"===m.main.objects[t].type?m.main.objects[t].common&&m.main.objects[t].common.dontDelete?g(_("Object may not be deleted"),!0):m.main.socket.emit("delObject",t,function(e){e?g(_("Group may not be deleted: %s",e),!0):g(_("Group deleted"))}):g(_("Invalid object: %s",t),!0))}):g(_('Object "%s" does not exists. Update the page.',a),!0))}),m.$gridGroups.find(".edit-content").on("click",function(){y($(this).data("group"))}),m.$gridGroups.find(".tab-users-remove-user").on("click",function(){var i=$(this).data("user"),e=$(this).data("group");m.main.socket.emit("getObject",e,function(e,t){if(t&&t.common&&t.common.members){var a=t.common.members.indexOf(i);if(-1!==a){if(t.common.members.splice(a,1),!t._id)return void console.error("INVLAID ID");m.main.socket.emit("setObject",t._id,t,function(e){e?g(_("Error: %s",e),!0):g(_("Removed"))})}else g(_("%s is not in the list"),!0)}})})}this.groups=[],this.list=[],this.$grid=$("#tab-users"),this.$gridUsers=this.$grid.find(".tab-users-list-users .tab-users-body"),this.$gridGroups=this.$grid.find(".tab-users-list-groups .tab-users-body"),this.main=e,this.aclGroups=null,this.prepare=function(){},this._postInit=function(){var e;t(),m.$gridUsers.find("ul").sortable({connectWith:"#tab-users .tab-users-list-groups .treetable",items:".users-type-draggable",appendTo:m.$gridUsers,refreshPositions:!0,helper:function(e,t){return $('
    '+t.find(".treetable-icon-empty+span").text()+"
    ")},zIndex:999990,revert:!1,scroll:!1,start:function(e,t){var a=t.item.prev();t.item.data("prev",a),m.$grid.addClass("dragging")},stop:function(e,t){m.$grid.removeClass("dragging")},update:function(e,t){var a=t.item.data("prev");a&&a.length?$(a).after(t.item):$(this).prepend(t.item)}}).disableSelection(),a(),(e=m.$gridGroups.find("ul>li")).droppable("instance")&&e.droppable("destroy"),e.droppable({accept:".users-type-draggable",over:function(e,t){if($(this).addClass("tab-accept-item"),$(this).hasClass("not-empty")&&!$(this).hasClass("expanded")){var a,i=$(this).data("tt-id");(a=$(this).data("timer"))&&clearTimeout(a),$(this).data("timer",setTimeout(function(){m.$gridGroups.treeTable("expand",i)},1e3))}},out:function(e,t){var a;$(this).removeClass("tab-accept-item"),(a=$(this).data("timer"))&&(clearTimeout(a),$(this).data("timer",null))},tolerance:"pointer",drop:function(e,t){$(this).removeClass("tab-accept-item");var a=t.draggable.data("tt-id"),i=$(this).data("tt-id");m.main.socket.emit("getObject",i,function(e,t){t&&t.common&&(t.common.members=t.common.members||[],-1===t.common.members.indexOf(a)?(t.common.members.push(a),t.common.members.sort(),m.main.socket.emit("setObject",t._id,t,function(e){e?g(_("Error: %s",e),!0):g(_("%s added to %s",a,t._id))})):g(_("Is yet in the list")))})}})},this.init=function(e){this.inited&&!e||(void 0!==this.$gridUsers&&this._postInit(),this.inited||(g(_("You can drag&drop users to groups"),5e3),this.inited=!0,this.main.subscribeObjects("system.user.*"),this.main.subscribeObjects("system.group.*")))},this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("system.user.*"),this.main.unsubscribeObjects("system.group.*"))},this.objectChange=function(e,t,a){if(e.match(/^system\.user\./)){if(t)-1===this.list.indexOf(e)&&this.list.push(e);else{var i=this.list.indexOf(e);-1!==i&&this.list.splice(i,1)}this.timer&&clearTimeout(this.timer),this.timer=setTimeout(function(){m.timer=null,m._postInit()},200)}else if(e.match(/^system\.group\./)){if(t)-1===this.groups.indexOf(e)&&this.groups.push(e);else{var n=this.groups.indexOf(e);-1!==n&&this.groups.splice(n,1)}this.timer&&clearTimeout(this.timer),this.timer=setTimeout(function(){m.timer=null,m._postInit()},200)}}}!function(C){C(document).ready(function(){var e=location.pathname+"socket.io";location.pathname.match(/^\/admin\//)&&(e="/socket.io");var s,y={},v={objects:{},states:{},currentHost:"",currentTab:null,currentDialog:null,currentUser:"",subscribesStates:{},subscribesObjects:{},subscribesLogs:0,socket:io.connect("/",{path:e}),systemConfig:null,instances:null,objectsLoaded:!1,waitForRestart:!1,tabs:null,dialogs:{},selectId:null,config:{},ignoreJSupdate:!1,addEventMessage:function(e,t,a,i){m.events.add(e,t,a,i)},saveConfig:function(e,t){e&&(v.config[e]=t),"undefined"!=typeof storage&&storage.set("adminConfig",JSON.stringify(v.config))},saveTabs:function(){this.socket.emit("setObject","system.config",this.systemConfig,function(e){e&&this.showError(e)})},upToDate:function(e,t){return e=e.split("."),t=t.split("."),e[0]=parseInt(e[0],10),t[0]=parseInt(t[0],10),!(e[0]>t[0])&&(e[0]!==t[0]||(e[1]=parseInt(e[1],10),t[1]=parseInt(t[1],10),!(e[1]>t[1])&&(e[1]!==t[1]||(e[2]=parseInt(e[2],10),t[2]=parseInt(t[2],10),e[2]<=t[2]))))},cmdExec:function(e,t,a){e=e||v.currentHost,l.val(""),d.modal("open"),s="$ ./yunkong2 "+t,d.data("finished",!1).find(".btn").html(_("In background")),d.find(".command").html(s),d.find(".progress-dont-close").removeClass("disabled"),h.find(".button-command").removeClass("error").addClass("in-progress"),d.data("max",null),d.data("error",""),g.addClass("indeterminate").removeClass("determinate"),t.match(/^upload /)?d.find(".progress-text").html(_("Upload started...")).removeClass("error"):t.match(/^del [-_\w\d]+\.[\d]+$/)?d.find(".progress-text").html(_("Removing of instance...")).removeClass("error"):t.match(/^del /)?d.find(".progress-text").html(_("Removing of adapter...")).removeClass("error"):t.match(/^url /)?d.find(".progress-text").html(_("Install or update from URL...")).removeClass("error"):t.match(/^add /)?d.find(".progress-text").html(_("Add instance...")).removeClass("error"):d.find(".progress-text").html(_("Started...")).removeClass("error"),l.val(s),r=Math.floor(268435454*Math.random())+1,o=a,v.socket.emit("cmdExec",e,r,t,function(e){e?(s+="\n"+_(e),l.val(s),o=null,a(e)):a&&a()})},confirmMessage:function(e,t,a,i,n){if("function"==typeof i)n=i,p.find(".modal-footer").html(''+_("Ok")+''+_("Cancel")+""),p.find(".modal-footer .modal-action").on("click",function(){var e=p.data("callback");e&&e(C(this).data("result"))});else if("object"==typeof i){for(var s="",o=i.length-1;0<=o;o--)s+=''+i[o]+"";p.find(".modal-footer").html(s),p.find(".modal-footer .modal-action").on("click",function(){var e=p.data("callback");e&&e(C(this).data("id"))})}p.find(".dialog-title").text(t||_("Please confirm")),a?p.find(".dialog-icon").show().html(a):p.find(".dialog-icon").hide(),p.find(".dialog-text").html(e),p.data("callback",n),p.modal("open")},showMessage:function(e,t,a){u.find(".dialog-title").text(t||_("Message")),a?u.find(".dialog-icon").show().html(a):u.find(".dialog-icon").hide(),u.find(".dialog-text").html(e),u.modal("open")},showError:function(e){v.showMessage(_(e),_("Error"),"error_outline")},showToast:function(e,t,a,i,n,s){e&&e instanceof jQuery&&(e=e[0]),"string"==typeof(s=s||[])&&(s=[s]),n&&s.push("dropZone-error"),M.toast({parentSelector:e||C("body")[0],html:t+(a?''+a+"":""),displayLength:i||3e3,classes:s})},formatDate:function(e,t){if(!e)return"";var a,i=typeof e;return"string"===i?t?e.substring(8):e:("object"!==i&&(e=e<9466812e5?new Date(1e3*e):new Date(e)),t?i=(a=e.getDate())<10?"0"+a:a:(i=e.getFullYear(),i+=(a=e.getMonth()+1)<10?"-0"+a:"-"+a,i+=(a=e.getDate())<10?"-0"+a:"-"+a),i+=(a=e.getHours())<10?" 0"+a:" "+a,i+=(a=e.getMinutes())<10?":0"+a:":"+a,i+=(a=e.getSeconds())<10?":0"+a:":"+a,i+=(a=e.getMilliseconds())<10?".00"+a:a<100?".0"+a:"."+a)},updateWizard:function(){var e=C("#button-wizard");v.objects["system.adapter.discovery.0"]?(e.data("inited")||(e.data("inited",!0),e.on("click",function(){v.navigate({tab:"instances",dialog:"config",params:"system.adapter.discovery.0"})}).attr("title",_("Device discovery"))),e.show(),!v.systemConfig.common.wizard&&v.systemConfig.common.licenseConfirmed&&e.trigger("click")):e.hide()},getUser:function(){if(v.currentUser){if(v.objects[v.currentUser]){var e=v.objects[v.currentUser],t="";if(t=e&&e.common&&e.common.name?translateName(e.common.name):(t=v.currentUser.replace(/^system\.user\./))[0].toUpperCase()+t.substring(1).toLowerCase(),e&&e.common&&e.common.icon){var a={};a[v.currentUser]=e,C("#current-user-icon").html(v.getIcon(v.currentUser,null,a))}else C("#current-user-icon").html('account_circle');C("#current-user").html(t);for(var i=[],n=0;none object or all children of %s too?',t),null,"help_outline",[_("_All"),_("Only one"),_("Cancel")],function(e){0===e?v._delObjects(t,!0,a):1===e&&v._delObjects(t,!1,a)}):v.confirmMessage(_("Are you sure to delete %s?",t),null,"help_outline",function(e){e&&v._delObjects(t,!0,a)}):i&&i.children?v.confirmMessage(_("Are you sure to delete all children of %s?",t),null,"help_outline",function(e){e&&v._delObjects(t,!0,a)}):v.showMessage(_('Object "%s" does not exists. Update the page.',t),_("Error"),"help_outline",function(e){e&&v._delObjects(t,!0,a)})}},m={hosts:new Hosts(gMain=v),objects:new Objects(v),adapters:new Adapters(v),instances:new Instances(v),users:new Users(v),enums:new Enums(v),events:new Events(v),logs:new Logs(v),states:null,intro:new Intro(v)};"undefined"!=typeof States&&(m.states=new States(v)),v.instances=m.instances.list,v.tabs=m,v.dialogs={system:new System(v),customs:new Customs(v),config:new Config(v),editobject:new EditObject(v),issue:new Issue(v),readme:new Readme(v)};var o=null,r=null,l=C("#stdout"),d=C("#dialog-command"),c=C("#dialog-license-main"),u=C("#dialog-message"),p=C("#dialog-confirm"),g=d.find(".progress div"),f=C("#admin_sidemenu_menu"),h=C("#admin_sidemenu_main"),t=!0;if("ontouchstart"in window||navigator.maxTouchPoints||C("body").addClass("desktop-screen"),-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Android")?(C("body").addClass("safari"),v.browser="safari",v.noSelect=!0):detectIE()&&(C("body").addClass("ie"),v.browser="ie",v.browserVersion=detectIE(),v.noSelect=!0,C("#host-adapters-btn").css("margin-top","10px")),"undefined"!=typeof storage)try{v.config=storage.get("adminConfig"),v.config?v.config=JSON.parse(v.config):v.config={}}catch(e){console.log("Cannot load edit config"),v.config={}}function b(e){C("#admin_sidemenu_dialog").html(""),C("html").off("click",b)}function w(){if(function(){var e="",i=[];C(".admin-tab").each(function(){var e=C(this).attr("id");v.systemConfig.common.tabs&&-1===v.systemConfig.common.tabs.indexOf(e)||i.push({line:'
  • '+(T[e]&&T[e].icon?''+T[e].icon+"":'live_help')+_(C(this).data("name"))+"
  • ",id:e})}),C(".tab-custom").each(function(){var e=C(this).attr("id");if(!v.systemConfig.common.tabs||-1!==v.systemConfig.common.tabs.indexOf(e)){var t;if(T[e]&&T[e].icon)t=T[e].icon;else{var a="system.adapter."+e.substring(4);v.objects[a]&&v.objects[a].adminTab&&v.objects[a]["fa-icon"]&&(t=v.objects[a]["fa-icon"])}i.push({line:'
  • '+(t?''+t+"":'live_help')+C(this).data("name")+"
  • ",id:e})}}),i.sort(function(e,t){return T[e.id]||T[t.id]?T[e.id]?T[t.id]?T[e.id].orderT[t.id].order?1:0:-1:1:0});for(var t=0;t
      ';for(var s in y){var o=y[s],r="chk-"+s;n+="
    • '+_(o)+""}n+="
    ",t.append(n),t.find(".chk-tab").off("change").on("change",function(e){var t=C(this).attr("id").substr(4);if(C(this).prop("checked"))v.systemConfig.common.tabs.push(t);else{var a=v.systemConfig.common.tabs.indexOf(t);-1!==t&&v.systemConfig.common.tabs.splice(a,1)}v.saveTabs(),j()}),t.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=C(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")})}),v.updateWizard(),C("#button-logout").on("click",function(){window.location.href="/logout/"}),window.onhashchange=function(){v.navigateDo()},v.navigateDo(),C("#events_threshold").on("click",function(){v.socket.emit("eventsThreshold",!1)})}function j(){var a=[],e=[];y={};for(var t=0;t'+p+"\n",C("#"+c).length)C("#"+c).hide().appendTo(C("body"));else{var f='
    ';C(f).hide().appendTo(C("body")),C("#"+c).find(".iframe-in-tab").on("load",function(){var e=C(this).contents().find("body>header");e&&e.length||(e=C(this).contents().find("head")),e&&e.length&&e.append('')})}}}if(C(".tab-custom").each(function(){-1===a.indexOf(C(this).attr("id"))&&C("#"+C(this).attr("id")).remove()}),v.systemConfig.common.tabs||(v.systemConfig.common.tabs=a),C(".link-replace").length){var h=0,b=setTimeout(function(){b=null,w()},100);C(".link-replace").each(function(){h++,v.tabs.instances._replaceLinks(C(this).data("src"),C(this).data("adapter"),C(this).data("instance"),C(this).attr("id"),function(e,t,a,i){C("#"+i).data("src",e).removeClass("link-replace"),--h||b&&(clearTimeout(b),b=null,w())})})}else w()}function N(n){v.socket.emit("getAllObjects",function(e,i){e?window.alert(_(e)):setTimeout(function(){var e;for(var t in v.objects=i,v.objects)v.objects.hasOwnProperty(t)&&"_design"!==t.slice(0,7)&&("instance"===(e=v.objects[t]).type&&v.instances.push(t),"enum"===e.type&&m.enums.list.push(t),"user"===e.type&&m.users.list.push(t),"group"===e.type&&m.users.groups.push(t),"adapter"===e.type&&m.adapters.list.push(t),"host"===e.type&&m.hosts.addHost(e),e.common&&e.common.history&&(e.common.custom=JSON.parse(JSON.stringify(e.common.history)),delete e.common.history));for(var a in v.objectsLoaded=!0,v.initHostsList(!0),j(),v.dialogs)v.dialogs.hasOwnProperty(a)&&"function"==typeof v.dialogs[a].prepare&&v.dialogs[a].prepare();!function a(i,n){n=n||0,i&&n'+n.icon+"";var s;a="instance"===e.type?"/adapter/"+e.common.name+"/"+e.common.icon:e._id.match(/^system\.adapter\./)?(s=e._id.split(".",3),"/"===n.icon[0]?s[2]+=n.icon:s[2]+="/"+n.icon,"/adapter/"+s[2]):(s=e._id.split(".",2),"/"===n.icon[0]?s[0]+=n.icon:s[0]+="/"+n.icon,"/adapter/"+s[0])}i=e.type}return{icon:a,alt:i}}v.initHostsList=function(e){var t=C("#host-adapters");if(!e||!t.data("inited")){t.data("inited",!0),v.currentHost=v.currentHost||v.config.currentHost||"";for(var a,i=[],n=0;n'+v.getHostIcon(v.objects[v.tabs.hosts.list[n].id],"imgHost left")+v.tabs.hosts.list[n].name+""),v.currentHost||(v.currentHost=v.tabs.hosts.list[n].name),v.currentHost===v.tabs.hosts.list[n].name&&(a=v.tabs.hosts.list[n].id);t.html(i);var s=C("#host-adapters-btn").show();s.text(_("Host:")+" "+v.currentHost).dropdown(),v.objects[a]&&v.objects[a].common&&v.objects[a].common.color,s.append(C(v.getHostIcon(v.objects[a],"imgHost left"))),v.tabs.hosts.list.length<2?s.addClass("disabled"):s.removeClass("disabled"),t.find("a").on("click",function(){var e=C(this).data("value"),t="system.host."+e+".alive";v.states[t]&&v.states[t].val&&"null"!==v.states[t].val?(v.currentHost=e,C("#host-adapters-btn").text(_("Host:")+" "+v.currentHost).append(C(this).find(".imgHost").clone()),console.log(v.currentTab),T["tab-"+v.currentTab]&&T["tab-"+v.currentTab].host&&(v.tabs[v.currentTab]&&"function"==typeof v.tabs[v.currentTab].destroy&&v.tabs[v.currentTab].destroy(),v.tabs[v.currentTab]&&"function"==typeof v.tabs[v.currentTab].init&&v.tabs[v.currentTab].init()),v.saveConfig("currentHost",v.currentHost)):v.showMessage(_("Host %s is offline",C(this).val()))})}},v.resubscribeStates=function(){for(var e in v.subscribesStates)v.subscribesStates.hasOwnProperty(e)&&v.subscribesStates[e]&&(console.debug("Re-Subscribe: "+e),v.socket.emit("subscribe",e))},v.resubscribeObjects=function(){for(var e in v.subscribesObjects)v.subscribesObjects.hasOwnProperty(e)&&v.subscribesObjects[e]&&v.socket.emit("subscribeObjects",e)},v.resubscribeLogs=function(){v.subscribesLogs&&(console.debug("Subscribe LOG"),v.socket.emit("requireLog",!0))},v.subscribeStates=function(e){if(e)if("object"==typeof e)for(var t=0;tiframe");c.attr("src")&&(console.log("clear"),c.attr("src",""))}}if(v.currentTab=a,o.hide().appendTo("body"),i||(r.addClass("admin-sidemenu-body-content").show().appendTo(s),o=r),m[a]&&"function"==typeof m[a].init&&m[a].init(),r.length&&(l=r.data("src")))if(-1===l.indexOf("%")){var u=r.find(">iframe");u.length&&!u.attr("src")&&u.attr("src",l)}else f.data("problem-link","tab-"+a)}var p=f.find('.admin-sidemenu-items[data-tab="tab-'+a+'"]');f.find(".admin-sidemenu-items").not(p).removeClass("admin-sidemenu-active"),p.addClass("admin-sidemenu-active"),T["tab-"+a]&&T["tab-"+a].host?C("#host-adapters-btn").css("opacity",1):C("#host-adapters-btn").css("opacity",.3),document.title=a+" - yunkong2",v.currentDialog!==i&&(v.dialogs[v.currentDialog]&&"function"==typeof v.dialogs[v.currentDialog].destroy&&v.dialogs[v.currentDialog].destroy(),(v.currentDialog=i)&&v.dialogs[i]?("function"==typeof v.dialogs[i].init&&v.dialogs[i].init(n?n.split(","):void 0),m[v.currentTab]&&m[v.currentTab].saveScroll&&m[v.currentTab].saveScroll(),o.hide().appendTo("body"),C("#dialog-"+i).addClass("admin-sidemenu-body-content").show().appendTo(s)):o.attr("id")!==r.attr("id")&&(o.hide().appendTo("body"),r.addClass("admin-sidemenu-body-content").show().appendTo(s),m[v.currentTab]&&m[v.currentTab].restoreScroll&&m[v.currentTab].restoreScroll()))}})},v.getIconFromObj=function(e,t,a){var i="",n="";if(e&&e.common)if(e.common.icon){var s=L(e);i=s.icon,n=s.alt}else t=t||"lib/css/fancytree/","device"===e.type?(i=t+"device.png",n="device"):"channel"===e.type?(i=t+"channel.png",n="channel"):"state"===e.type&&(i=t+"state.png",n="state");return i?''+(n||':""},v.getIcon=function(e,t,a,i){return v.getIconFromObj((a||v.objects)[e],t,i)},v.getHostIcon=function(e,t){var a="",i="";if(e&&e.common&&e.common.icon){var n=L(e);a=n.icon,i=n.alt}return''+(i=i||'},v.formatBytes=function(e){if(Math.abs(e)<1024)return e+" B";for(var t=["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],a=-1;e/=1024,++a,1024<=Math.abs(e)&&a'+t.admin.styles+"")}}if(v.systemConfig&&v.systemConfig.common&&v.systemConfig.common.tabs){var i=v.systemConfig.common.tabs.indexOf("tab-log");-1!==i&&(v.systemConfig.common.tabs[i]="tab-logs")}v.socket.emit("getObject","system.repositories",function(e,t){v.dialogs.system.systemRepos=t,v.socket.emit("getObject","system.certificates",function(e,t){setTimeout(function(){if(v.dialogs.system.systemCerts=t,"permissionError"===n)v.systemConfig={common:{language:systemLang},error:"permissionError"};else if(!n&&v.systemConfig&&v.systemConfig.common){if(systemLang=v.systemConfig.common.language||systemLang,v.systemConfig.common.city=v.systemConfig.common.city||"",v.systemConfig.common.country=v.systemConfig.common.country||"",v.systemConfig.common.longitude=v.systemConfig.common.longitude||"",v.systemConfig.common.latitude=v.systemConfig.common.latitude||"",!v.systemConfig.common.licenseConfirmed){var a=(v.systemConfig.common.language||window.navigator.userLanguage||window.navigator.language||"").substring(0,2);"en"!==a&&"de"!==a&&"ru"!==a&&(a="en"),systemLang=a,c.find(".license_text").html(license[a]||license.en),c.find(".license_checkbox").prop("checked",!1),c.find(".license_language").data("licenseConfirmed",!1).val(a).on("change",function(){a=C(this).val(),c.find(".license_language_label").html(translateWord("Select language",a)),c.find(".license_text").html(license[a]||license.en),c.find(".license_checkbox").html(translateWord("license_checkbox",a)),c.find(".license_agree .translate").html(translateWord("agree",a)),c.find(".license_non_agree .translate").html(translateWord("not agree",a)),c.find(".license_terms").html(translateWord("License terms",a)),c.find(".license_agreement_label").html(translateWord("license agreement",a))}).select(),c.find(".license_diag").on("change",function(){C(this).prop("checked")?c.find(".license_agree").removeClass("disabled"):c.find(".license_agree").addClass("disabled")}),c.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=C(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),c.modal({dismissible:!1,complete:function(){c.find(".license_text").html(""),location.reload()}}).modal("open"),c.find(".license_agree").addClass("disabled").off("click").on("click",function(e){e.preventDefault(),e.stopPropagation(),v.socket.emit("getObject","system.config",function(e,t){!e&&t?(t.common=t.common||{},t.common.licenseConfirmed=!0,t.common.language=a,v.socket.emit("setObject","system.config",t,function(e){e&&v.showError(e),c.modal("close"),c.find(".license_agree").off("click"),c.find(".license_non_agree").off("click")})):v.showError(_("Cannot confirm: "+e))})}),c.find(".license_non_agree").off("click").on("click",function(e){location.reload()})}}else v.systemConfig={type:"config",common:{name:"system.config",city:"",country:"",longitude:"",latitude:"",language:"",tempUnit:"°C",currency:"",dateFormat:"DD.MM.YYYY",isFloatComma:!0,licenseConfirmed:!1,defaultHistory:"",tabs:["tab-intro","tab-adapters","tab-instances","tab-objects","tab-logs","tab-scenes","tab-javascript","tab-text2command-0"]}},v.systemConfig.common.language=window.navigator.userLanguage||window.navigator.language,"en"!==v.systemConfig.common.language&&"de"!==v.systemConfig.common.language&&"ru"!==v.systemConfig.common.language&&(v.systemConfig.common.language="en");for(var e in translateCron(),translateAll(),"function"==typeof initGridLanguage&&initGridLanguage(v.systemConfig.common.language),d.modal({dismissible:!1}),u.modal(),p.modal({dismissible:!1}),d.find(".progress-show-more").off("change").on("change",function(){var e=C(this).prop("checked");v.saveConfig("progressMore",e),e?d.find(".textarea").show():d.find(".textarea").hide()}),void 0===v.config.progressClose&&(v.config.progressClose=!0),d.find(".progress-dont-close input").on("change",function(){v.saveConfig("progressClose",C(this).prop("checked"))}),d.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=C(this).prev();e.parent().parent().hasClass("switch")||e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),d.find(".progress-dont-close input").prop("checked",v.config.progressClose),d.find(".progress-show-more").prop("checked",!!v.config.progressMore).trigger("change"),d.find(".btn").on("click",function(){d.data("finished")?h.find(".button-command").hide():h.find(".button-command").show()}),h.find(".button-command").on("click",function(){d.modal("open")}),m)m.hasOwnProperty(e)&&m[e]&&"function"==typeof m[e].prepare&&m[e].prepare();var i;i=N,m.states&&m.states.clear(),v.socket.emit("getStates",function(e,t){v.states=t,"function"==typeof i&&setTimeout(function(){i()},0)})},0)})})})})):(v.resubscribeStates(),v.resubscribeObjects(),v.resubscribeLogs()),v.waitForRestart&&location.reload()}),v.socket.on("disconnect",function(){C("#connecting").show()}),v.socket.on("reconnect",function(){C("#connecting").hide(),v.waitForRestart&&location.reload()}),v.socket.on("repoUpdated",function(){setTimeout(function(){m.adapters.init(!0)},0)}),v.socket.on("reauthenticate",function(){location.reload()})})}(jQuery);var license={en:'The MIT License (MIT)

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    ',de:'MIT-Lizenz (MIT)

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der zugehörigen Dokumentationen (die "Software") erhält, die Erlaubnis erteilt, sie uneingeschränkt zu benutzen, inklusive und ohne Ausnahme dem Recht, sie zu verwenden, kopieren, ändern, fusionieren, verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und Personen, die diese Software erhalten, diese Rechte zu geben, unter den folgenden Bedingungen:
    Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien der Software beizulegen.
    DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.',ru:"Лицензия MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
    Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.
    ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.",it:'Licenza MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Si concede gratuitamente l\'autorizzazione, a chiunque ottenga una copia di questo software e dei file di documentazione associati (il "Software"), di dare opera al Software senza restrizioni, compresi senza limitazione i diritti di utilizzare, copiare, modificare, unire, pubblicare, distribuire, concedere in sublicenza ovvero vendere copie del Software, e di consentire alle persone a cui il Software è fornito di fare altrettanto, posto che siano rispettate le seguenti condizioni:
    l\'avviso di copyright unitamente a questo avviso di licenza devono essere sempre inclusi in tutte le copie o parti sostanziali del Software.
    IL SOFTWARE VIENE FORNITO "COSÌ COM\'È" SENZA GARANZIE DI ALCUN TIPO, ESPLICITE O IMPLICITE, COMPRESE, MA NON SOLO, LE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ AD UN PARTICOLARE SCOPO E NON VIOLAZIONE DI DIRITTI ALTRUI. IN NESSUN CASO GLI AUTORI DEL SOFTWARE O I TITOLARI DEL COPYRIGHT POTRANNO ESSERE RITENUTI RESPONSABILI DI RECLAMI, DANNI O ALTRE RESPONSABILITÀ, DERIVANTI DA O COLLEGATI A CONTRATTO, ILLECITO CIVILE O IN ALTRA RELAZIONE CON IL SOFTWARE O CON IL SUO UTILIZZO O CON ALTRE OPERAZIONI DEL SOFTWARE.',fr:'Licence MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    ',pt:'Licença MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    ',nl:'MIT-licentie

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    ',es:'Licencia MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el "Software"), para utilizar el Software sin restricción, incluyendo sin limitación los derechos a usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar, y/o vender copias del Software, y a permitir a las personas a las que se les proporcione el Software a hacer lo mismo, sujeto a las siguientes condiciones:
    El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
    EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A GARANTÍAS DE COMERCIALIZACIÓN, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DEL COPYRIGHT SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O CUALQUIER OTRO MOTIVO, QUE SURJA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.',pl:'Licencja MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    '},addAll2FilterCombobox=!1;function IobListHeader(e,g){if(!(this instanceof IobListHeader))return new IobListHeader(e,g);var f,n,h;void 0===g&&(g={}),void 0===g.colWidthOffset&&(g.colWidthOffset=0),"TABLE"===(h="object"==typeof e?$(e):$("#"+e))[0].tagName&&(h=h.find("tr:first")),e=h[0];var a,b=this;b.selectIdOffset=[],h.html(""),this.setList=function(e){var t;(t="string"==typeof e?("#"!==e[0]&&(e="#"+e),$(e)):e)&&t.length&&("TD"!==t[0].tagName&&"TH"!==t[0].tagName&&((t=t.find(">thead>tr:first>th,>thead>tr:first>td")).length||(t=e.find(">tbody>tr:first>th,>tr:first>th,>tbody>tr:first>td, >tr:first>td"))),n=t)},g.list&&this.setList(g.list),this.syncHeader=function(){if("object"==typeof n){var e=function(){n.each(function(e,t){if(!(e>=n.length-1)){var a=$(t).width(),i=b.selectIdOffset[e]||0;a+i&&$(f[e]).width(Math.round(a+i))}}),n.length&&!b.selectIdOffset.length&&(b.selectIdOffset[0]=0,n.each(function(e,t){var a=$(n[e]).offset().left;a&&(b.selectIdOffset[e]=a-$(f[e]).offset().left)}),e())};e()}},$(window).on("resize",function(e,t){a&&clearTimeout(a),a=setTimeout(b.syncHeader.bind(b),100)}),this.doFilter=function(){},b.ids=[],b.add=function(t,p,e,a){void 0===e&&(e=p);var i,n,s=!(i=e)||n&&"#"===i[0]?i:(g.prefix&&i.substr(0,g.prefix.length)!==g.prefix&&(i=g.prefix+"-"+i),(n?"#":"")+i);p=_(p);var o="";switch(t){case"combobox":o=' ';break;case"edit":o=' ';break;case"text":o=''+p+""}h.append(""+o+"");var r="#"+s,m=$(r),l=b[e]={$filter:m,val:m.val.bind(m),selectedVal:m.val()||""};if(b.ids.push(e),"combobox"===t&&(l.options=[],l.checkAddOption=function(e,t,a){if(-1===this.options.indexOf(e)){this.options.push(e),this.options.sort();for(var i,n,s=m.val(),o=a?"":(i=p,n=s,addAll2FilterCombobox&&(i=i?_(i)+" ("+_("all")+")":_("all")),'"),r=0,l=this.options.length;r"+t+""}},a))for(var d=0;dclose'),m.on("change",function(e){c&&clearTimeout(c),l.selectedVal=m.val(),c=setTimeout(b.doFilter,"combobox"!==t?400:0),l.selectedVal?m.parent().addClass("filter-active"):m.parent().removeClass("filter-active")}).on("keyup",function(e){13===e.which?b.doFilter():m.trigger("change")}),f=h.find(">th"),l}}function values2table(r,l,e){"object"==typeof r&&(e=l,l=r,r="");var d=e&&e.maxRaw||null,c=e&&e.onChange||null,u=e&&e.onReady||null;l=l||[];var o,s=[],p=(o=r?$("#"+r):$("body")).find(".table-button-add");if(p.data("raw",l.length),d&&p.data("maxRaw",d),p.data("inited")||(p.data("inited",!0),p.on("click",function(){if(!p.data("maxRaw")||p.data("raw")';for(var n=0;n';else if("select"===s[n].type.substring(0,6)){f+=("multiple"===s[n].type.substring(7,16)?'"}else f+='';if(m[n]){h="text-align: center; "+(m[n].style||"")+(m[n].tdstyle||"");for(var v=0;v':f+='';m[n].class&&(t+=' class="'+m[n].class+'" ')}h.length||b.length?t+=' style="'+h+b+'">'+f+"":t+=">"+f+""}t+=""}var w=g.find(".table-lines");w.length||(g.append(''),w=g.find(".table-lines")),w.html(t),w.find(".values-input").each(function(){var e=$(this),t=e.attr("type"),a=e.data("name"),i=e.data("index");e.data("old-value",l[i][a]),"checkbox"===t?e.prop("checked",l[i][a]):e.val(l[i][a])}),w.find("a[data-command]").each(function(){var e=$(this).data("command");"delete"===e?$(this).on("click",function(){var e=$(this).data("index"),t=l[e];l.splice(e,1),c&&c(),setTimeout(function(){"function"==typeof tableEvents&&tableEvents(e,t,"delete"),values2table(r,l,c,u,d)},100),p.data("maxRaw")&&p.data("raw",p.data("raw")-1)}).addClass("red").find(".material-icons").html("delete"):"up"===e?$(this).on("click",function(){var e=$(this).data("index"),t=l[e];l.splice(e,1),l.splice(e-1,0,t),c&&c(),setTimeout(function(){values2table(e,l,c,u,d)},100)}).find("i").html("arrow_upward"):"down"===e?$(this).on("click",function(){var e=$(this).data("index"),t=l[e];l.splice(e,1),l.splice(e+1,0,t),c&&c(),setTimeout(function(){values2table(e,l,c,u,d)},100)}).find("i").html("arrow_downward"):"pair"===e?$(this).on("click",function(){if("function"==typeof tableEvents){var e=$(this).data("index"),t=l[e];tableEvents(e,t,"pair")}}).attr("title",_("pair")).find("i").html("insert_link"):"unpair"===e&&$(this).on("click",function(){if("function"==typeof tableEvents){var e=$(this).data("index"),t=l[e];tableEvents(e,t,"unpair")}}).attr("title",_("unpair")).find("i").html("not_interested")}),w.find(".values-input").on("change.adaptersettings",function(){var e=$(this).data("index"),t=$(this).data("name");"checkbox"===$(this).attr("type")?($(this).prop("checked").toString()!==$(this).data("old-value")&&c&&c(t,e),l[e][t]=$(this).prop("checked")):($(this).val()!==$(this).data("old-value")&&c&&c(t,e),l[e][t]=$(this).val())}).on("keyup",function(){$(this).trigger("change.adaptersettings")})}"function"==typeof u&&u()}function table2values(e){var t;t=e?$("#"+e):$("body");var a=[];t.find(".table-values th").each(function(){var e=$(this).data("name");e?a.push(e):a.push("___ignore___")});var i=[],n=0;return t.find(".table-lines tr").each(function(){i[n]={},$(this).find("td").each(function(){var e=$(this).find("input");if(e.length){var t=e.data("name");"checkbox"===e.attr("type")?i[n][t]=e.prop("checked"):i[n][t]=e.val()}var a=$(this).find("select");if(a.length){t=a.data("name");i[n][t]=a.val()||""}}),n++}),i}var systemLang="en",systemDictionary={};function translateWord(e,t,a){if(!e)return"";if(t=t||systemLang,(a=a||systemDictionary)[e=e.toString()]){var i=a[e][t];if(i)return i;if("en"!==t&&(i=a[e].en))return i}else"string"!=typeof e||e.match(/_tooltip$/)?"string"!=typeof e&&console.warn("Trying to translate non-text:"+e):console.log('"'+e+'": {"en": "'+e+'", "de": "'+e+'", "ru": "'+e+'", "pt": "'+e+'", "nl": "'+e+'", "fr": "'+e+'", "es": "'+e+'", "pl": "'+e+'", "it": "'+e+'"},');return e}function translateAll(e,i,n){i=i||systemLang,n=n||systemDictionary,e||(e="body");var t=$(e);t.find(".translate").each(function(e){var t=$(this).attr("data-lang");t||(t=$(this).html(),$(this).attr("data-lang",t));var a=translateWord(t,i,n);a&&$(this).html(a)}),t.find(".translateV").each(function(e){var t=$(this).attr("data-lang-value");t||(t=$(this).attr("value"),$(this).attr("data-lang-value",t));var a=translateWord(t,i,n);a&&$(this).attr("value",a)}),t.find(".translateT").each(function(e){var t=$(this).attr("data-lang-title");t||(t=$(this).attr("title"),$(this).attr("data-lang-title",t));var a=translateWord(t,i,n);a&&$(this).attr("title",a)}),t.find(".translateP").each(function(e){var t=$(this).attr("data-lang-placeholder");t||(t=$(this).attr("placeholder"),$(this).attr("data-lang-placeholder",t));var a=translateWord(t,i,n);a&&$(this).attr("placeholder",a)})}function translateName(e){return e&&"object"==typeof e?e[systemLang]||e.en:e}var _=function(e,t,a,i){var n=(e=translateWord(e)).indexOf("%s");return-1===n||-1===(n=(e=e.replace("%s",t)).indexOf("%s"))||-1!==(n=(e=e.replace("%s",a)).indexOf("%s"))&&(e=e.replace("%s",i)),e};!function(q){if(!q.fn.treeTable){var t={init:function(e){e.imgPath=e.imgPath||"lib/css/fancytree/";for(var t=0;t';a+='
      ';for(var i=e.rows,n=0;n'+(c?"":'')+''+d+""}a+="
    ";var u=q(this),p=q(a);u.find(".treetablelist-buttons").remove(),u.find(".treetable-list").remove(),u.find(".tree-table-buttons").remove(),u.find(".tree-table-main").remove(),u.prepend(p);var m=q(p).find(".treetablelist-buttons"),g=q(p).find(".treetable-list");g.sortable({cancel:".treetable-list-folder",axis:"y"}).data("options",e);var f=this;m.find(".treetable-list-btn-ok").button({icons:{primary:"ui-icon-check"},text:!1}).css({width:24,height:24}).on("click",function(){var i="",n=[];g.find("li").each(function(){var e=q(this).data("id");if(q(this).hasClass("treetable-list-folder"))i=e;else{var t=e.split("."),a=t.pop();t.join(".")!==i&&n.push({oldId:e,newId:i+"."+a})}}),function t(a,i,n){if(i&&i.length){var e=i.shift();a.moveId&&a.moveId(e.oldId,e.newId,function(e){setTimeout(function(){t(a,i,n)},50)})}else n&&n()}(e,n,function(){h.call(f,e)})}),m.find(".treetable-list-btn-cancel").button({icons:{primary:"ui-icon-cancel"},text:!1}).css({width:24,height:24}).on("click",function(){h.call(f,e)})}function ae(e,t,a){var i="",n="",s=e&&e.common;if(s)if(s.icon){if(s.icon.match(/^data:image\//))i=s.icon;else{if(-1===s.icon.indexOf("."))return''+s.icon+"";var o;i="instance"===e.type?"/adapter/"+e.common.name+"/"+e.common.icon:e._id.match(/^system\.adapter\./)?(o=e._id.split(".",3),"/"===e.common.icon[0]?o[2]+=e.common.icon:o[2]+="/"+e.common.icon,"/adapter/"+o[2]):(o=e._id.split(".",2),"/"===e.common.icon[0]?o[0]+=e.common.icon:o[0]+="/"+e.common.icon,"/adapter/"+o[0])}n=e.type}else t=t||"lib/css/fancytree/","device"===e.type?(i=t+"device.png",n="device"):"channel"===e.type?(i=t+"channel.png",n="channel"):"state"===e.type&&(i=t+"state.png",n="state");return i?''+n+'':""}function h(i){var e="",t=window.M&&window.M.toast?"a":"button";if(i.panelButtons){e+='
    ';for(var a=0;a",window.M&&window.M.toast&&(e+=''+(i.panelButtons[a].icon||"")+""),e+="";i.moveId&&(e+="<"+t+' class="btn-floating waves-effect waves-light blue treetable-sort" title="'+_("reorder")+'">',window.M&&window.M.toast&&(e+='import_export'),e+=""),e+="
    "}e+='
    ',e+=" ",e+=' ';for(var n=0;n",e+=' ',e+=' ',e+=" "):e+=" "+_(i.columns[n])+"";i.buttons&&(e+=" "),e+=" ",e+="",e+="";var s=[],o=i.root?new RegExp("^"+i.root.replace(/\./g,"\\.")+"\\."):null,r=-1!==i.columns.indexOf("instance")?[]:null;for(var l in i.objects){var d;if(i.objects.hasOwnProperty(l))if(r&&"instance"===i.objects[l].type&&(d=l.match(/^system\.adapter\.javascript\.(\d+)$/))&&r.push(d[1]),!o||o.test(l)){var c=i.objects[l].common,u={id:l,parent:null,_class:"treetable-"+i.objects[l].type};"channel"===i.objects[l].type&&(u.folder=!0);for(var p=0;pt.id?1:e.id',s[I].children&&s[I].children.length&&(e+=''+s[I].children.length+"")):e+='"}if(i.buttons){e+='"}e+=""}e+="";var Y=q(this),H=q(e);Y.find("span:first-child").remove(),Y.find(".treetablelist-buttons").remove(),Y.find(".treetable-list").remove(),Y.find(".tree-table-buttons").remove(),Y.find(".tree-table-main").remove(),Y.prepend(H),i.rows=s;var Q=q(H[1]).find(">table"),B=q(H[0]);Q.data("options",i),Q.treetable({expandable:!0,clickableNodeNames:!0,expanderTemplate:"",indenterTemplate:'',onNodeExpand:X,onNodeCollapse:ee,stringCollapse:_("collapse"),stringExpand:_("expand")});var F=Q.find("tbody");if(F.on("click","tr",function(){q(".selected").not(this).removeClass("selected"),q(this).addClass("selected");var e=q(this).parent().parent().data("options"),t=q(this).data("tt-id");e.onChange&&e.onChange(q(this).data("tt-id"),e.oldId),e.oldId=t}),i.buttons)for(var Z=0;Z"%s"?',de:'Wollen Sie wirklich "%s" löschen?',ru:'Удалить "%s"?',pt:'Tem certeza que quer deletar "%s" ?',nl:'Weet u zeker dat u "%s" wilt verwijderen?',fr:'Êtes-vous sûr de vouloir supprimer "%s"?',it:'Eliminare "%s" ?',es:'¿Está seguro de que desea borrar "%s"?',pl:'Czy na pewno chcesz usunąć " %s" ?'},'Are you sure to delete all children of %s?':{en:'Are you sure to delete all children of %s?',de:'Wollen Sie wirklich alle unterliegende Objekte von "%s" löschen?',ru:'Вы действительно хотите удалить все нижележащие под "%s" объекты?',pt:'Tem certeza que quer deletar todos os objetos subjacentes de %s ?',nl:'Weet u zeker dat u alle onderliggende van %s wilt verwijderen?',fr:'Êtes-vous sûr de vouloir supprimer tous les descendants de %s ?',it:'Eliminare tutti figli di %s ?',es:'¿Es seguro que quiere borrar todos los objetos subyacentes de %s?',pl:'Czy na pewno chcesz usunąć all children z %s ?'},"Are you sure to delete all children of %s?":{en:'Are you sure to delete "%s" and all children?',de:'Wollen Sie wirklich "%s" und alle unterliegende Objekte löschen?',ru:'Вы действительно хотите удалить "%s" и все нижележащие объекты?',pt:'Você tem certeza que quer deletar "%s" e todos os objetos subjacentes?',nl:'Weet u zeker dat u "%s" en alle onderliggende wilt verwijderen?',fr:"Êtes-vous sûr de vouloir supprimer tous les descendants de %s ?",it:'Eliminare "%s" e tutti figli?',es:'¿Usted está seguro de que desea eliminar "%s" y todos los objetos subyacentes?',pl:'Czy na pewno usunąć " %s" i all children?'},"Are you sure to delete script %s?":{en:"Are you sure to delete script '%s'?",de:"Wollen Sie das Skript '%s' wirklich löschen?",ru:"Вы действительно хотите удалить скрипт '%s'?",pt:"Tem certeza que quer deletar o script ' %s'?",nl:"Weet je zeker dat je script ' %s' wilt verwijderen?",fr:"Etes-vous sûr de vouloir supprimer le script '%s'?",it:"Sei sicuro di voler eliminare lo script '%s'?",es:"¿Está seguro de que quiere borrar el script '%s'?",pl:'Czy na pewno chcesz usunąć skrypt " %s"?'},"Are you sure you want to delete adapter %s?":{en:"Are you sure you want to delete adapter %s?",de:"Möchten Sie den Adapter %s wirklich löschen?",ru:"Вы действительно хотите удалить адаптер %s?",pt:"Tem certeza de que deseja excluir o adaptador %s?",nl:"Weet je zeker dat je adapter %s wilt verwijderen?",fr:"Êtes-vous sûr de vouloir supprimer l'adaptateur %s?",it:"Sei sicuro di voler eliminare l'adattatore %s?",es:"¿Está seguro de que desea eliminar el adaptador %s?",pl:"Czy na pewno chcesz usunąć adapter %s?"},"Are you sure you want to delete the instance %s?":{en:"Are you sure you want to delete the instance %s?",de:"Möchten Sie die Instanz %s wirklich löschen?",ru:"Вы действительно хотите удалить экземпляр %s ?",pt:"Tem certeza de que deseja excluir a instância %s ?",nl:"Weet u zeker dat u het exemplaar %s wilt verwijderen?",fr:"Êtes-vous sûr de vouloir supprimer l'instance %s?",it:"Sei sicuro di voler eliminare l'istanza %s ?",es:"¿Seguro que quieres eliminar la instancia %s ?",pl:"Czy na pewno chcesz usunąć instancję %s ?"},"Are you sure?":{en:"Are you sure?",de:"Sind sie sicher?",ru:"Вы уверены?",pt:"Você tem certeza?",nl:"Weet je het zeker?",fr:"Êtes-vous sûr?",it:"Sei sicuro?",es:"¿Estás seguro?",pl:"Jesteś pewny?"},"Are you sure? Changes are not saved.":{en:"Are you sure? Changes are not saved.",de:"Sind Sie sicher? Die Änderungen sind nicht gespeichert.",ru:"Изменения не сохранены. Всё равно закрыть?",pt:"Você tem certeza? As alterações não estão gravadas.",nl:"Weet je het zeker? Wijzigingen worden niet opgeslagen.",fr:"Êtes-vous sûr? Les modifications ne sont pas enregistrées.",it:"Sei sicuro? Le modifiche non vengono salvate.",es:"¿Estás seguro? Los cambios no se guardan.",pl:"Jesteś pewny? Zmiany nie są zapisywane."},Argentina:{en:"Argentina",de:"Argentinien",ru:"Аргентина",pt:"Argentina",nl:"Argentinië",fr:"Argentine",it:"Argentina",es:"Argentina",pl:"Argentyna"},Armenia:{en:"Armenia",de:"Armenien",ru:"Армения",pt:"Armênia",nl:"Armenië",fr:"Arménie",it:"Armenia",es:"Armenia",pl:"Armenia"},Aruba:{en:"Aruba",de:"Aruba",ru:"Аруба",pt:"Aruba",nl:"Aruba",fr:"Aruba",it:"aruba",es:"Aruba",pl:"Aruba"},Aug:{en:"Aug",de:"Aug",ru:"авг",pt:"ago",nl:"augustus",fr:"août",it:"agosto",es:"Ago",pl:"Aug"},August:{en:"August",de:"August",ru:"август",pt:"agosto",nl:"augustus",fr:"août",it:"agosto",es:"Augusto",pl:"sierpień"},Australia:{en:"Australia",de:"Australien",ru:"Австралия",pt:"Austrália",nl:"Australië",fr:"Australie",it:"Australia",es:"Australia",pl:"Australia"},Austria:{en:"Austria",de:"Österreich",ru:"Австрия",pt:"Áustria",nl:"Oostenrijk",fr:"Autriche",it:"Austria",es:"Austria",pl:"Austria"},"Authentication was deactivated":{en:"Authentication was deactivated",de:"Die Authentifizierung wurde deaktiviert",ru:"Аутентификация была отключена",pt:"A autenticação foi desativada",nl:"Verificatie was gedeactiveerd",fr:"L'authentification a été désactivée",it:"L'autenticazione è stata disattivata",es:"La autenticación fue desactivada",pl:"Uwierzytelnianie zostało dezaktywowane"},Available:{en:"Available",de:"Verfügbar",ru:"Доступно",pt:"Acessível",nl:"Beschikbaar",fr:"Disponible",it:"A disposizione",es:"Disponible",pl:"Dostępny"},"Available version:":{en:"Available version",de:"Verfügbare Version:",ru:"доступная версия:",pt:"Versão disponível:",nl:"Beschikbare versie:",fr:"Version disponible:",it:"Versione disponibile:",es:"Versión disponible:",pl:"Dostępna wersja:"},Azerbaijan:{en:"Azerbaijan",de:"Azerbaijan",ru:"Азербайджан",pt:"Azerbaijão",nl:"Azerbeidzjan",fr:"Azerbaïdjan",it:"Azerbaijan",es:"Azerbaiyán",pl:"Azerbejdżan"},Background:{en:"Background",de:"Hintergrund",ru:"Фон",pt:"Fundo",nl:"Achtergrond",fr:"Contexte",it:"Sfondo",es:"Fondo",pl:"Tło"},"Background color of the login screen":{en:"Background color of the login screen",de:"Hintergrundfarbe des Anmeldebildschirms",ru:"Цвет фона экрана входа в систему",pt:"Cor de fundo da tela de login",nl:"Achtergrondkleur van het inlogscherm",fr:"Couleur d'arrière-plan de l'écran de connexion",it:"Colore di sfondo della schermata di accesso",es:"Color de fondo de la pantalla de inicio de sesión",pl:"Kolor tła ekranu logowania"},"Background image":{en:"Background image",de:"Hintergrundbild",ru:"Фоновое изображение",pt:"Imagem de fundo",nl:"Achtergrond afbeelding",fr:"Image de fond",it:"Immagine di sfondo",es:"Imagen de fondo",pl:"Zdjęcie w tle"},Bahamas:{en:"Bahamas",de:"Bahamas",ru:"Багамские о-ва",pt:"Bahamas",nl:"Bahamas",fr:"Bahamas",it:"Bahamas",es:"Bahamas",pl:"Bahamy"},Bahrain:{en:"Bahrain",de:"Bahrain",ru:"Бахрейн",pt:"Bahrein",nl:"Bahrein",fr:"Bahreïn",it:"Bahrain",es:"Bahrein",pl:"Bahrajn"},Bangladesh:{en:"Bangladesh",de:"Bangladesh",ru:"Бангладеш",pt:"Bangladesh",nl:"Bangladesh",fr:"Bangladesh",it:"Bangladesh",es:"Bangladesh",pl:"Bangladesz"},Barbados:{en:"Barbados",de:"Barbados",ru:"Барбадос",pt:"Barbados",nl:"Barbados",fr:"Barbade",it:"Barbados",es:"Barbados",pl:"Barbados"},Belarus:{en:"Belarus",de:"Weissrussland",ru:"Беларуссия",pt:"Bielorrússia",nl:"Wit-Rusland",fr:"Bélarus",it:"Bielorussia",es:"Bielorrusia",pl:"Białoruś"},Belgium:{en:"Belgium",de:"Belgien",ru:"Бельгия",pt:"Bélgica",nl:"België",fr:"Belgique",it:"Belgio",es:"Bélgica",pl:"Belgia"},Belize:{en:"Belize",de:"Belize",ru:"Белиз",pt:"Belize",nl:"Belize",fr:"Belize",it:"Belize",es:"Belize",pl:"Belize"},Benin:{en:"Benin",de:"Benin",ru:"Бенин",pt:"Benin",nl:"Benin",fr:"Bénin",it:"Benin",es:"Benin",pl:"Benin"},Bermuda:{en:"Bermuda",de:"Bermuda",ru:"Бермудские острова",pt:"Bermudas",nl:"Bermuda",fr:"Bermudes",it:"Bermuda",es:"Bermudas",pl:"Bermudy"},Bhutan:{en:"Bhutan",de:"Bhutan",ru:"Бутан",pt:"Butão",nl:"Bhutan",fr:"Bhoutan",it:"Bhutan",es:"Bután",pl:"Bhutan"},Bolivia:{en:"Bolivia",de:"Bolivien",ru:"Боливия",pt:"Bolívia",nl:"Bolivia",fr:"Bolivie",it:"Bolivia",es:"Bolivia",pl:"Boliwia"},"Bosnia and Herzegovina":{en:"Bosnia and Herzegovina",de:"Bosnien und Herzegovina",ru:"Босния и Герцеговина",pt:"Bósnia e Herzegovina",nl:"Bosnië-Herzegovina",fr:"Bosnie Herzégovine",it:"Bosnia Erzegovina",es:"Bosnia y Herzegovina",pl:"Bośnia i Hercegowina"},Botswana:{en:"Botswana",de:"Botswana",ru:"Ботсвана",pt:"Botswana",nl:"Botswana",fr:"Botswana",it:"Botswana",es:"Botswana",pl:"Botswana"},"Bouvet Island":{en:"Bouvet Island",de:"Bouvet Island",ru:"Остров Буве",pt:"Ilha de Bouvet",nl:"Bouvet Island",fr:"Île Bouvet",it:"Isola Bouvet",es:"Isla de Bouvet",pl:"Wyspa Bouvet"},Brazil:{en:"Brazil",de:"Brasilien",ru:"Бразилия",pt:"Brasil",nl:"Brazilië",fr:"Brésil",it:"Brasile",es:"Brasil",pl:"Brazylia"},"British Indian Ocean Territory":{en:"British Indian Ocean Territory",de:"British Indian Ocean Territory",ru:"Британская территория Индийского океана",pt:"Território britânico do Oceano Índico",nl:"Brits-Indisch oceaan gebied",fr:"Territoire britannique de l'océan Indien",it:"Territorio britannico dell'Oceano Indiano",es:"Territorio británico del Océano Índico",pl:"Brytyjskie Terytorium Oceanu Indyjskiego"},"Brunei Darussalam":{en:"Brunei Darussalam",de:"Brunei Darussalam",ru:"Бруней-Даруссалам",pt:"Brunei Darussalam",nl:"Brunei Darussalam",fr:"Brunei Darussalam",it:"Brunei Darussalam",es:"Brunéi Darussalam",pl:"Brunei Darussalam"},Bulgaria:{en:"Bulgaria",de:"Bulgarien",ru:"Болгария",pt:"Bulgária",nl:"Bulgarije",fr:"Bulgarie",it:"Bulgaria",es:"Bulgaria",pl:"Bułgaria"},"Burkina Faso":{en:"Burkina Faso",de:"Burkina Faso",ru:"Буркина-Фасо",pt:"Burkina Faso",nl:"Burkina Faso",fr:"Burkina Faso",it:"Burkina Faso",es:"Burkina Faso",pl:"Burkina Faso"},Burundi:{en:"Burundi",de:"Burundi",ru:"Бурунди",pt:"Burundi",nl:"Boeroendi",fr:"Burundi",it:"Burundi",es:"Burundi",pl:"Burundi"},CPUs:{en:"CPUs",de:"CPUs",ru:"CPUs",pt:"CPUs",nl:"CPUs",fr:"CPUs",it:"CPUs",es:"CPUs",pl:"CPUs"},Calendar:{en:"Calendar",de:"Kalender",ru:"Календарь",pt:"Calendário",nl:"Kalender",fr:"Calendrier",it:"Calendario",es:"Calendario",pl:"Kalendarz"},Cambodia:{en:"Cambodia",de:"Kambodscha",ru:"Камбоджа",pt:"Camboja",nl:"Cambodja",fr:"Cambodge",it:"Cambogia",es:"Camboya",pl:"Kambodża"},Cameroon:{en:"Cameroon",de:"Kamerun",ru:"Камерун",pt:"Camarões",nl:"Kameroen",fr:"Cameroun",it:"Camerun",es:"Camerún",pl:"Kamerun"},Canada:{en:"Canada",de:"Kanada",ru:"Канада",pt:"Canadá",nl:"Canada",fr:"Canada",it:"Canada",es:"Canadá",pl:"Kanada"},Cancel:{en:"Cancel",de:"Abbrechen",ru:"Отмена",pt:"Cancelar",nl:"Annuleren",fr:"Annuler",it:"Annulla",es:"Cancelar",pl:"Anuluj"},"Cannot create user: ":{en:"Cannot create user: ",de:"Benutzer kann nicht erstellt werden: ",ru:"Не могу создать пользователя: ",pt:"Não é possível criar usuário:",nl:"Kan gebruiker niet aanmaken:",fr:"Impossible de créer l'utilisateur:",it:"Impossibile creare un utente:",es:"No se puede crear usuario:",pl:"Nie można utworzyć użytkownika:"},"Cannot delete user: ":{en:"Cannot delete user: ",de:"Benutzer kann nicht gelöscht werden: ",ru:"Не могу удалить пользователя: ",pt:"Não é possível deletar o usuário:",nl:"Kan gebruiker niet verwijderen:",fr:"Impossible de supprimer l'utilisateur:",it:"Impossibile eliminare l'utente:",es:"No se puede suprimir el usuario:",pl:"Nie można usunąć użytkownika:"},"Cannot disable admin!":{en:"Cannot disable admin!",de:"Admin kann nicht deaktiviert werden!",ru:"Нельзя деактивировать админа!",pt:"Não é possível desativar o administrador!",nl:"Kan admin niet uitschakelen!",fr:"Impossible de désactiver l'administrateur!",it:"Impossibile disabilitare l'amministratore!",es:"¡No se puede deshabilitar el administrador!",pl:"Nie można wyłączyć administratora!"},"Cannot read file!":{en:"Cannot read file!",de:"Kann die Datei nicht lesen!",ru:"Невозможно прочитать файл!",pt:"Não é possível ler o arquivo!",nl:"Kan bestand niet lezen!",fr:"Impossible de lire le fichier!",it:"Impossibile leggere il file!",es:"¡No se puede leer el archivo!",pl:"Nie można odczytać pliku!"},"Cannot read version from NPM":{en:"Could not read version from NPM",de:"Die Version aus NPM konnte nicht gelesen werden",ru:"Невозможно было считать версию драйвера с NPM",pt:"Não foi possível ler a versão do NPM",nl:"Kon de versie van NPM niet lezen",fr:"Impossible de lire la version de NPM",it:"Impossibile leggere la versione da NPM",es:"No se pudo leer la versión de NPM",pl:"Nie można odczytać wersji z NPM"},"Cannot set password: ":{en:"Cannot set password: ",de:"Kann Passwort nicht setzen: ",ru:"Не могу изменить пароль: ",pt:"Não é possível configurar a senha:",nl:"Kan het wachtwoord niet instellen:",fr:"Impossible de définir le mot de passe:",it:"Impossibile impostare la password:",es:"No se pudo cambiar la contraseña:",pl:"Nie można ustawić hasła:"},"Cape Verde":{en:"Cape Verde",de:"Cap Verde",ru:"Кабо-Верде",pt:"Cabo Verde",nl:"Kaapverdië",fr:"Cap-Vert",it:"capo Verde",es:"Capo Verde",pl:"Wyspy Zielonego Przylądka"},"Cayman Islands":{en:"Cayman Islands",de:"Cayman Islands",ru:"Каймановы острова",pt:"Ilhas Cayman",nl:"Kaaiman Eilanden",fr:"Îles Caïmans",it:"Isole Cayman",es:"Islas Caimán",pl:"Kajmany"},"Central African Republic":{en:"Central African Republic",de:"Zentralafrikanische Republik",ru:"Центрально-Африканская Республика",pt:"República Centro-Africana",nl:"Centraal Afrikaanse Republiek",fr:"République centrafricaine",it:"Repubblica Centrafricana",es:"República Centroafricana",pl:"Republika Środkowoafrykańska"},Certificates:{en:"Certificates",de:"Zertifikate",ru:"Сертификаты",pt:"Certificados",nl:"certificaten",fr:"Certificats",it:"certificati",es:"Certificados",pl:"Certyfikaty"},Chad:{en:"Chad",de:"Tschad",ru:"Чад",pt:"Chade",nl:"Tsjaad",fr:"Chad",it:"Chad",es:"Chad",pl:"Chad"},Change:{en:"Change",de:"Ändern",ru:"Изменить",pt:"Mudar",nl:"Wijzig",fr:"Changement",it:"Modificare",es:"Cambiar",pl:"Zmiana"},Changelog:{en:"Change log",de:"Änderungsprotokoll",ru:"Журнал изменений",pt:"Registro de mudanças",nl:"Wijzig log",fr:"Modifier le journal",it:"Registro delle modifiche",es:"Cambiar registro",pl:"Zmień dziennik"},Channel:{en:"Channel",de:"Kanal",ru:"Канал",pt:"Canal",nl:"Kanaal",fr:"Canal",it:"Canale",es:"Canal",pl:"Kanał"},Chart:{en:"Chart",de:"Grafik",ru:"График",pt:"Gráfico",nl:"tabel",fr:"Graphique",it:"Grafico",es:"Gráfico",pl:"Wykres"},"Chart for %s":{en:"Chart for %s",de:"Chart für %s",ru:"График для %s",pt:"Gráfico para %s",nl:"Grafiek voor %s",fr:"Graphique pour %s",it:"Grafico per %s",es:"Gráfico para %s",pl:"Wykres dla %s"},"Check all":{en:"Check all",de:"Alle auswählen",ru:"Выбрать все",pt:"Selecionar todos",nl:"Controleer alles",fr:"Vérifie tout",it:"Seleziona tutto",es:"Seleccionar todos",pl:"Zaznacz wszystkie"},Chile:{en:"Chile",de:"Chile",ru:"Чили",pt:"Chile",nl:"Chili",fr:"Chili",it:"Chile",es:"Chile",pl:"Chile"},China:{en:"China",de:"China",ru:"Китай",pt:"China",nl:"China",fr:"Chine",it:"Cina",es:"China",pl:"Chiny"},"Christmas Island":{en:"Christmas Island",de:"Christmas Island",ru:"Остров Рождества",pt:"Ilha do Natal",nl:"Kersteiland",fr:"L'île de noël",it:"Isola di Natale",es:"Isla de Navidad",pl:"Wyspa Bożego Narodzenia"},"City:":{en:"City",de:"Stadt",ru:"Город:",pt:"Cidade:",nl:"Stad:",fr:"Ville",it:"Città:",es:"Ciudad:",pl:"Miasto:"},Clear:{en:"Clear",de:"Löschen",ru:"Сбросить",pt:"Apagar",nl:"Verwijderen",fr:"Effacer",it:"Chiaro",es:"Borrar",pl:"Jasny"},"Clear list":{en:"Clear list",de:"Anzeige löschen",ru:"Сбросить",pt:"Apagar a lista",nl:"Verwijder lijst",fr:"Effacer la liste",it:"Elenco chiaro",es:"Borrar la lista",pl:"Czysta lista"},"Clear log":{en:"Clear log",de:"Log löschen",ru:"Очистить протокол на экране",pt:"Apagar o log",nl:"Logboek opschonen",fr:"Effacer le journal",it:"Pulisci il registro",es:"Borrar el log",pl:"Wyczyść log"},"Clear on disk permanent":{en:"Clear on disk permanent",de:"Lösche Log auf dem Host",ru:"Удалить протокол на сервере",pt:"Delatar o log permanente do disco",nl:"Definitief van schijf wissen",fr:"Effacer sur le disque permanent",it:"Cancella su disco permanente",es:"Delatar el log permanente del disco",pl:"Wyczyść na dysku na stałe"},"Click do activate events again, or just wait one minute":{en:"Click do activate events again, or just wait one minute",de:"Eine Minute warten oder hier klicken, um die Ereignisse erneut zu aktivieren",ru:"Нажмите снова активировать события или просто подождите одну минуту",pt:"Clique em ativar eventos novamente ou espere um minuto",nl:"Klik op activeer gebeurtenissen opnieuw of wacht een minuut",fr:"Cliquez pour activer à nouveau les événements, ou attendez une minute",it:"Fai clic su attiva nuovamente gli eventi o aspetta solo un minuto",es:"Haga clic en activar eventos nuevamente, o simplemente espere un minuto",pl:"Kliknij ponownie, aby aktywować zdarzenia, lub po prostu poczekaj minutę"},"Click on icon":{en:"Click on icon to open a link",de:"Auf das Icon klicken",ru:"Что бы открыть ссылку надо нажать на иконку",pt:"Clique no ícone para abrir um link",nl:"Klik op het pictogram om de ​​link te openen",fr:"Cliquez sur l'icône",it:"Clicca sull'icona per aprire un link",es:"Haga clic en el icono para abrir un link",pl:"Kliknij ikonę, aby otworzyć łącze"},Close:{en:"close",de:"Schließen",ru:"закрыть",pt:"fechar",nl:"sluiten",fr:"Fermer",it:"vicino",es:"cerrar",pl:"blisko"},"Cocos Islands":{en:"Cocos Islands",de:"Kokosinseln",ru:"Кокосовые острова",pt:"Ilhas Cocos",nl:"Cocoseilanden",fr:"Îles Cocos",it:"Isole Cocos",es:"Islas Cocos",pl:"Wyspy Kokosowe"},"Collapse all nodes":{en:"Collapse all nodes",de:"Alle Knoten ausblenden",ru:"Свернуть все узлы",pt:"Recolher todos os nós",nl:"Knip alle knooppunten samen",fr:"Réduire tous les nœuds",it:"Comprimi tutti i nodi",es:"Contraer todos los nodos",pl:"Zwiń wszystkie węzły"},Colombia:{en:"Colombia",de:"Kolumbien",ru:"Колумбия",pt:"Colômbia",nl:"Colombia",fr:"Colombie",it:"Colombia",es:"Colombia",pl:"Kolumbia"},Color:{en:"Color",de:"Farbe",ru:"Цвет",pt:"Cor",nl:"Kleur",fr:"Couleur",it:"Colore",es:"Color",pl:"Kolor"},Comoros:{en:"Comoros",de:"Komoren",ru:"Коморские острова",pt:"Comores",nl:"Comoren",fr:"Comores",it:"Comoros",es:"Comores",pl:"Komory"},"Configuration not saved.":{en:"Configuration not saved.",de:"Die Konfiguration ist nicht gespeichert.",ru:"Настройки не сохранены.",pt:"Configuração não está gravada.",nl:"Configuratie niet opgeslagen.",fr:"Configuration non enregistrée",it:"Configurazione non salvata.",es:"La configuración no está guardada.",pl:"Konfiguracja nie została zapisana."},Congo:{en:"Congo",de:"Congo",ru:"Конго",pt:"Congo",nl:"Congo",fr:"Congo",it:"Congo",es:"Congo",pl:"Kongo"},"Connected to %s: ":{en:"Connected to %s: ",de:"Verbunden mit %s: ",ru:"Соединён с %s: ",pt:"Conectado com %s:",nl:"Verbonden met %s:",fr:"Connecté à %s:",it:"Connesso a %s:",es:"Conectado con %s:",pl:"Połączono z %s:"},"Connected to host: ":{en:"Connected to host: ",de:"Verbunden mit Host: ",ru:"Общается с хостом: ",pt:"Conectado com o host:",nl:"Verbonden met host:",fr:"Connecté à l'hôte:",it:"Connesso all'host:",es:"Conectado con el host:",pl:"Połączony z hostem:"},"Cook Islands":{en:"Cook Islands",de:"Cook Islands",ru:"Острова Кука",pt:"Ilhas Cook",nl:"Cook Eilanden",fr:"Les Îles Cook",it:"Isole Cook",es:"Islas Cook",pl:"Wyspy Cooka"},"Copy log":{en:"Copy log",de:"Log kopieren",ru:"Скопировать протокол",pt:"Cópiar o log",nl:"Log kopiëren",fr:"Copier le journal",it:"Copia registro",es:"Copiar el log",pl:"Skopiuj dziennik"},"Copy to clipboard":{en:"Copy to clipboard",de:"In die Zwischenablage kopieren",ru:"Скопировать в буфер обмена",pt:"Copiar para o clipboard",nl:"Kopieer naar klembord",fr:"Copier dans le presse-papier",it:"Copia negli appunti",es:"Copiar al portapapeles",pl:"Skopiuj do schowka"},"Costa Rica":{en:"Costa Rica",de:"Costa Rica",ru:"Коста Рика",pt:"Costa Rica",nl:"Costa Rica",fr:"Costa Rica",it:"Costa Rica",es:"Costa Rica",pl:"Kostaryka"},"Country:":{en:"Country",de:"Land",ru:"Страна:",pt:"País:",nl:"Land:",fr:"Pays",it:"Nazione:",es:"País:",pl:"Kraj:"},Create:{en:"Create",de:"Erzeugen",ru:"Создать",pt:"Criar",nl:"Aanmaken",fr:"Créer",it:"Creare",es:"Crear",pl:"Stwórz"},"Create new category":{en:"Create new category",de:"Eine neue Kategorie erstellen",ru:"Создать новую под-категорию",pt:"Criar nova categoria",nl:"Maak een nieuwe categorie",fr:"Créer une nouvelle catégorie",it:"Crea una nuova categoria",es:"Crear nueva categoría",pl:"Utwórz nową kategorię"},"Create new category, like %s":{en:"Create new category, like %s",de:"Eine neue Kategorie erstellen, wie %s",ru:"Создайте новую под-категорию, например %s",pt:"Crie nova categoria, como %s",nl:"Maak een nieuwe categorie, zoals %s",fr:"Créer une nouvelle catégorie, comme %s",it:"Crea una nuova categoria, come %s",es:"Crear una nueva categoría, como %s",pl:"Utwórz nową kategorię, np. %s"},"Create new enum":{en:"Create new enum",de:"Eine neue Aufzählung erstellen",ru:"Создать новую категорию",pt:"Criar novo enum",nl:"Maak een nieuwe opsomming",fr:"Créer une nouvelle énumération",it:"Crea nuovo enum",es:"Crear nueva clasificación",pl:"Utwórz nowe wyliczenie"},"Create new enum, like %s":{en:"Create new enum, like %s",de:"Eine neue Aufzählung erstellen, wie %s",ru:"Создайте новую категорию, например %s",pt:"Crie novo enum, como %s",nl:"Maak een nieuwe enum, zoals %s",fr:"Créer une nouvelle énumération, comme %s",it:"Crea nuovo enum, come %s",es:"Crear nueva clasificación, como %s",pl:"Utwórz nowe wyliczenie, np. %s"},"Create new group":{en:"Create new group",de:"Neue Gruppe erstellen",ru:"Создать новую группу",pt:"Criar novo grupo",nl:"Maak een nieuwe groep",fr:"Créer un nouveau groupe",it:"Crea nuovo gruppo",es:"Crear nuevo grupo",pl:"Stwórz Nową Grupę"},"Create new user":{en:"Create new user",de:"Erstelle einen neuen Benutzer",ru:"Создать нового пользователя",pt:"Criar novo usuário",nl:"Maak een nieuwe gebruiker",fr:"Créer un nouvel utilisateur",it:"Crea un nuovo utente",es:"Crear nuevo usuario",pl:"Utwórz nowego użytkownika"},Created:{en:"Created",de:"Erstellt",ru:"Выполнено",pt:"Criado",nl:"Gemaakt",fr:"Créé",it:"Creato",es:"Creado",pl:"Stworzony"},Croatia:{en:"Croatia",de:"Kroatien",ru:"Хорватия",pt:"Croácia",nl:"Kroatië",fr:"Croatie",it:"Croazia",es:"Croacia",pl:"Chorwacja"},"Cron expression":{en:"Cron expression",de:"Cron-Ausdruck",ru:"Cron-Выражение",pt:"Expressão de Cron",nl:"Tijdschema",fr:"Expression Cron",it:"Espressione Cron",es:"Expresión de Cron",pl:"Ekspresja Cron"},Cuba:{en:"Cuba",de:"Kuba",ru:"Куба",pt:"Cuba",nl:"Cuba",fr:"Cuba",it:"Cuba",es:"Cuba",pl:"Kuba"},"Currency:":{en:"Currency",de:"Währung",ru:"Знак валюты:",pt:"Moeda:",nl:"Valuta:",fr:"Devise",it:"Moneta:",es:"Moneda:",pl:"Waluta:"},Custom:{en:"Custom",de:"Beliebig",ru:"Произвольный",pt:"Qualquer",nl:"speciaal",fr:"Au choix",it:"costume",es:"Cualquier",pl:"Zwyczaj"},Cyprus:{en:"Cyprus",de:"Zypern",ru:"Кипр",pt:"Chipre",nl:"Cyprus",fr:"Chypre",it:"Cipro",es:"Chipre",pl:"Cypr"},"Czech Republic":{en:"Czech Republic",de:"Tschechische Republik",ru:"Чехия",pt:"República Checa",nl:"Tsjechische Republiek",fr:"République Tchèque",it:"Repubblica Ceca",es:"República Checa",pl:"Republika Czeska"},D$ecember:{en:"D$ecember",de:"Dezember",ru:"декабрь",pt:"dezembro",nl:"december",fr:"Décembre",it:"dicembre",es:"Diciembre",pl:"grudzień"},"DD.MM.YY":{en:"DD.MM.YY",de:"DD.MM.YY",ru:"ДД.ММ.ГГ",pt:"DD.MM.YY",nl:"DD.MM.YY",fr:"JJ.MM.AA",it:"GG.MM.AA",es:"DD.MM.AA",pl:"DD.MM.YY"},"DD.MM.YYYY":{en:"DD.MM.YYYY",de:"DD.MM.YYYY",ru:"ДД.ММ.ГГГГ",pt:"DD.MM.YYYY",nl:"DD.MM.JJJJ",fr:"JJ.MM.AAAA",it:"GG.MM.AAAA",es:"DD.MM.AAAA",pl:"DD / MM / RRRR"},"DD/MM/YYYY":{en:"DD/MM/YYYY",de:"DD/MM/YYYY",ru:"ДД/ММ/ГГГГ",pt:"DD / MM / AAAA",nl:"DD / MM / YYYY",fr:"JJ/MM/AAAA",it:"GG / MM / AAAA",es:"DD/MM/AAAA",pl:"DD / MM / RRRR"},"Date From":{en:"Date From",de:"Datum von",ru:"Дата от",pt:"Data de",nl:"Datum vanaf",fr:"Dater de",it:"Data da",es:"Fecha de",pl:"Data, od"},"Date To":{en:"Date To",de:"Datum bis",ru:"Дата до",pt:"Data para",nl:"Datum tot",fr:"Date à",it:"Data a",es:"Fecha a",pl:"Data To"},"Date format:":{en:"Date format",de:"Datumsformat",ru:"Формат даты:",pt:"Formato de data:",nl:"Datumnotatie:",fr:"Format des dates",it:"Formato data:",es:"Formato de fecha:",pl:"Format daty:"},"Deactivated. Click to start.":{en:"Deactivated. Click to start.",de:"Deaktiviert. Klicken zum Starten.",ru:"Неактивно. Нажать для старта.",pt:"Desativado. Clique para começar.",nl:"Gedeactiveerd. Klik om te starten.",fr:"Désactivé. Cliquez pour commencer",it:"Disattivato. Clicca per iniziare.",es:"Desactivado. Haga clic para empezar.",pl:"Dezaktywowane. Kliknij, aby rozpocząć."},"Debug outputs:":{en:"Debug outputs",de:"Debug-Ausgabe",ru:"Debug вывод",pt:"Saídas de depuração",nl:"Debug-uitgangen",fr:"Sorties de débogage",it:"Uscite di debug",es:"Salidas de depuración",pl:"Wyjścia debugowania"},Dec:{en:"Dec",de:"Dez",ru:"дек",pt:"Dez",nl:"Dec",fr:"déc.",it:"Dic",es:"Dic",pl:"Gru"},December:{en:"December",de:"Dezember",ru:"December",pt:"Dezembro",nl:"December",fr:"Décembre",it:"Dicembre",es:"Diciembre",pl:"Grudzień"},"Default ACL":{en:"Default ACL",de:"Standard ACL",ru:"Default ACL",pt:"ACL default",nl:"Standaard ACL",fr:"ACL par défaut",it:"ACL predefinito",es:"ACL predeterminado",pl:"Domyślna lista ACL"},"Default history instance:":{en:"Default history instance",de:"Standard Historyinstanz",ru:"Инстанция истории по умолчанию:",pt:"Default instância histórica:",nl:"Standaard geschiedenisinstantie:",fr:"Instance d'historique par défaut",it:"Istanza cronologia predefinita:",es:"Instancia histórica predeterminada:",pl:"Domyślna instancja historii:"},"Delete attribute":{en:"Delete attribute",de:"Attribut löschen",ru:"Удалить атрибут",pt:"Deletar atributo",nl:"Attribuut verwijderen",fr:"Supprimer l'attribut",it:"Elimina attributo",es:"Eliminar atributos",pl:"Usuń atrybut"},"Delete category":{en:"Delete category",de:"Kategorie löschen",ru:"Удалить категорию",pt:"Eliminar categoria",nl:"Verwijder categorie",fr:"Supprimer la catégorie",it:"Elimina categoria",es:"Eliminar categoría",pl:"Usuń kategorię"},"Delete enum":{en:"Delete enum",de:"Aufzählung löschen",ru:"Удалить категорию",pt:"Deletar enumeração",nl:"enum verwijderen",fr:"Supprimer l'énumération",it:"Elimina enum",es:"Eliminar la clasificación",pl:"Usuń wyliczenie"},"Delete member":{en:"Delete member",de:"Mitglied löschen",ru:"Удалить участника",pt:"Deletar membro",nl:"Lid verwijderen",fr:"Supprimer le membre",it:"Elimina membro",es:"Eliminar miembro",pl:"Usuń członka"},"Delete object":{en:"Delete object",de:"Objekt löschen",ru:"Удалить объект",pt:"Deletar objeto",nl:"Object verwijderen",fr:"Supprimer l'objet",it:"Elimina oggetto",es:"Eliminar objeto",pl:"Usuń obiekt"},Denmark:{en:"Denmark",de:"Dänemark",ru:"Дания",pt:"Dinamarca",nl:"Denemarken",fr:"Danemark",it:"Danimarca",es:"Danimarca",pl:"Dania"},Description:{en:"Description",de:"Beschreibung",ru:"Описание",pt:"Descrição",nl:"Beschrijving",fr:"Description",it:"Descrizione",es:"Descripción",pl:"Opis"},Device:{en:"Device",de:"Gerät",ru:"Устройство",pt:"Aparelho",nl:"Apparaat",fr:"Dispositif",it:"Dispositivo",es:"Aparato",pl:"Urządzenie"},"Device discovery":{en:"Device discovery",de:"Gerätesuche",ru:"Поиск устройств",pt:"Descoberta de aparelhos",nl:"Zoek naar apparaten",fr:"Découverte du périphérique",it:"Scoperta del dispositivo",es:"Detección de aparato",pl:"Wykrywanie urządzenia"},"Disable authentication":{en:"Disable authentication",de:"Authentifizierung deaktivieren",ru:"Отключить аутентификацию",pt:"Desativar autenticação",nl:"Schakel verificatie uit",fr:"Désactiver l'authentification",it:"Disabilitare l'autenticazione",es:"Deshabilitar autenticación",pl:"Wyłącz uwierzytelnianie"},"Disk free":{en:"Disk free",de:"Festplatten frei",ru:"Свободно",pt:"Tamanho livre de disco",nl:"Schijfvrije grootte",fr:"Taille sans disque",it:"Dimensione libera del disco",es:"Tamaño libre de disco",pl:"Rozmiar wolnego dysku"},"Disk free:":{en:"Disk free:",de:"Datenträger verfügbar:",ru:"Свободно на диске:",pt:"Disco disponível:",nl:"Schijf beschikbaar:",fr:"Disque disponible:",it:"Disco disponibile:",es:"Disco disponible:",pl:"Dostępny dysk:"},"Disk size":{en:"Disk size",de:"Festplattengröße",ru:"Размер диска",pt:"Tamanho do disco",nl:"Schijfgrootte",fr:"Taille du disque",it:"Dimensione del disco",es:"Tamaño de disco",pl:"Rozmiar dysku"},Djibouti:{en:"Djibouti",de:"Dschibuti",ru:"Джибути",pt:"Djibouti",nl:"Djibouti",fr:"Djibouti",it:"Gibuti",es:"Djibouti",pl:"Dżibuti"},'Do you want to delete just one object or all children of %s too?':{en:'Do you want to delete just one object or all children of %s too?',de:'Wollen Sie nur ein Objekt löschen oder auch alle Unter-Objekte von %s?',ru:'Хотите удалить только один объект или все нижележащие от %s тоже?',pt:'Você deseja deletar apenas um objeto ou todos os objetos subjacentes %s também?',nl:'Wilt u alleen één object of alle onderliggende objecten van %s verwijderen?',fr:'Voulez-vous supprimer seulement un objet ou tous les descendants de %s aussi?',it:'Vuoi eliminare solo un oggetto o tutti figli di %s anche tu?',es:'¿Usted desea borrar sólo un objeto o todos los objetos subyacentes %s también?',pl:'Czy chcesz usunąć tylko jeden obiekt lub all children %s też?'},"Do you want to upgrade all adapters?":{en:"Do you want to upgrade all adapters?",de:"Alle Adapter upgraden?",ru:"Обновить все драйвера и контроллер?",pt:"Deseja atualizar todos os adaptadores?",nl:"Wilt u alle adapters bijwerken ?",fr:"Voulez-vous actualiser tous les adaptateurs?",it:"Vuoi aggiornare tutti gli adattatori?",es:"¿Desea actualizar todos los adaptadores?",pl:"Czy chcesz uaktualnić wszystkie adaptery?"},"Domains:":{en:"Domains",de:"Domäne",ru:"Домены:",pt:"Domínios:",nl:"domeinen:",fr:"Domaines",it:"domini:",es:"Dominios:",pl:"Domeny:"},Dominica:{en:"Dominica",de:"Dominica",ru:"Доминика",pt:"Dominica",nl:"Dominica",fr:"Dominique",it:"Dominica",es:"Dominica",pl:"Dominika"},"Dominican Republic":{en:"Dominican Republic",de:"Dominikanische Republik",ru:"Доминиканская Республика",pt:"República Dominicana",nl:"Dominicaanse Republiek",fr:"République Dominicaine",it:"Repubblica Dominicana",es:"República Dominicana",pl:"Republika Dominikany"},"Done with error: %s":{en:"Done with error: %s",de:"Fertig mit Fehler: %s",ru:"Выполнено с ошибкой: %s",pt:"Feito com erro: %s",nl:"Gedaan met fout: %s",fr:"Terminé avec erreur: %s",it:"Fatto con errore: %s",es:"Terminado con error: %s",pl:"Zrobione z błędem: %s"},"Download log":{en:"Download log",de:"Log herunterladen",ru:"Скачать журнал",pt:"Fazer o download do log",nl:"Log downloaden",fr:"Télécharger le journal",it:"Scarica il registro",es:"Descargar registro",pl:"Pobierz dziennik"},"Drop the files here":{en:"Drop the files here",de:"Die Dateien hier ablegen",ru:"Перетащить файлы сюда",pt:"Solte os arquivos aqui",nl:"Zet de bestanden hier neer",fr:"Déposez les fichiers ici",it:"Rilascia i file qui",es:"Suelte los archivos aquí",pl:"Upuść pliki tutaj"},"Drop the icons here":{en:"Drop the icons here",de:"Die Icons hier ablegen",ru:"Перетащите иконку сюда",pt:"Solte os ícones aqui",nl:"Zet de pictogrammen hier neer",fr:"Déposez les icônes ici",it:"Lascia le icone qui",es:"Suelte los iconos aquí",pl:"Upuść ikony tutaj"},"East Timor":{en:"East Timor",de:"Ost Timor",ru:"Восточный Тимор",pt:"Timor Leste",nl:"Oost Timor",fr:"Timor oriental",it:"Timor Est",es:"Timor Oriental",pl:"Wschodni Timor"},Ecuador:{en:"Ecuador",de:"Equador",ru:"Эквадор",pt:"Equador",nl:"Ecuador",fr:"Equateur",it:"Ecuador",es:"Ecuador",pl:"Ekwador"},Edit:{en:"Edit",de:"Editieren",ru:"Изменить",pt:"Editar",nl:"Bewerken",fr:"Modifier",it:"modificare",es:"Editar",pl:"Edytować"},"Edit category":{en:"Edit category",de:"Kategorie bearbeiten",ru:"Изменить категорию",pt:"Editar categoria",nl:"Bewerk categorie",fr:"Modifier la catégorie",it:"Modifica categoria",es:"Editar categoria",pl:"Edytuj kategorię"},"Edit enum":{en:"Edit enum",de:"Aufzählung bearbeiten",ru:"Редактировать категорию",pt:"Editar enumeração",nl:"Bewerk enum",fr:"Modifier l'énumération",it:"Modifica enum",es:"Editar calificación",pl:"Edytuj wyliczenie"},"Edit in dialog":{en:"Edit in dialog",de:"Im Dialog bearbeiten",ru:"Изменить в окне",pt:"Editar no diálogo",nl:"Bewerken in dialoogvenster",fr:"Modifier dans le dialogue",it:"Modifica nella finestra di dialogo",es:"Editar en diálogo",pl:"Edytuj w oknie dialogowym"},"Edit object":{en:"Edit object",de:"Objekt bearbeiten",ru:"Редактировать объект",pt:"Editar objeto",nl:"Bewerk object",fr:"Modifier l'objet",it:"Modifica oggetto",es:"Editar objeto",pl:"Edytuj obiekt"},Egypt:{en:"Egypt",de:"Ägypten",ru:"Египет",pt:"Egito",nl:"Egypte",fr:"Egypte",it:"Egitto",es:"Egipto",pl:"Egipt"},"El Salvador":{en:"El Salvador",de:"El Salvador",ru:"Сальвадор",pt:"El Salvador",nl:"El Salvador",fr:"Le Salvador",it:"El Salvador",es:"El Salvador",pl:"Salwador"},"Email for account:":{en:"Email for account",de:"Emailadresse des Kontos",ru:"Email для аккаунта:",pt:"Email para conta:",nl:"E-mail voor account:",fr:"Email pour compte",it:"Email per account:",es:"Email para la cuenta:",pl:"E-mail do konta:"},"Enabled:":{en:"Enabled",de:"Aktiviert",ru:"Включено",pt:"Ativado",nl:"Ingeschakeld",fr:"Activée",it:"Abilitato",es:"Habilitado",pl:"Włączone"},Enums:{en:"Enums",de:"Aufzählungen",ru:"Категории",pt:"Enumerações",nl:"enums",fr:"Énumérations",it:"Enums",es:"Clasificaciones",pl:"Wylicza"},"Equatorial Guinea":{en:"Equatorial Guinea",de:"Äquatorial-Guinea",ru:"Экваториальная Гвинея",pt:"Guiné Equatorial",nl:"Equatoriaal-Guinea",fr:"Guinée Équatoriale",it:"Guinea Equatoriale",es:"Guinea Ecuatorial",pl:"Gwinea Równikowa"},Eritrea:{en:"Eritrea",de:"Eriträa",ru:"Эритрея",pt:"Eritréia",nl:"Eritrea",fr:"Érythrée",it:"l'Eritrea",es:"Eritrea",pl:"Erytrea"},Error:{en:"Error",de:"Fehler",ru:"Ошибка",pt:"Erro",nl:"Fout",fr:"Erreur",it:"Errore",es:"Error",pl:"Błąd"},Estonia:{en:"Estonia",de:"Estland",ru:"Эстония",pt:"Estônia",nl:"Estland",fr:"Estonie",it:"Estonia",es:"Estonia",pl:"Estonia"},Ethiopia:{en:"Ethiopia",de:"Äthiopien",ru:"Эфиопия",pt:"Etiópia",nl:"Ethiopië",fr:"Ethiopie",it:"Etiopia",es:"Etiopía",pl:"Etiopia"},Event:{en:"Type",de:"Typ",ru:"Тип",pt:"Tipo",nl:"Type",fr:"Événement",it:"genere",es:"Tipo",pl:"Rodzaj"},Events:{en:"Events",de:"Ereignisse",ru:"События",pt:"Eventos",nl:"Gebeurtenissen",fr:"Événements",it:"eventi",es:"Eventos",pl:"Wydarzenia"},Everyone:{en:"Everyone",de:"Jeder",ru:"Все",pt:"Todos",nl:"Iedereen",fr:"Toutes les personnes",it:"Tutti",es:"Todos",pl:"Każdy"},"Expand all nodes":{en:"Expand all nodes",de:"Erweitern Sie alle Knoten",ru:"Развернуть все узлы",pt:"Expandir todos os nós",nl:"Vouw alle knooppunten uit",fr:"Développer tous les nœuds",it:"Espandi tutti i nodi",es:"Expandir todos los nodos",pl:"Rozwiń wszystkie węzły"},"Failed to open JSON File":{en:"Failed to open JSON file",de:"Diese Datei ist keine gültige JSON-Datei",ru:"Не удалось открыть файл в формате JSON",pt:"Falha ao abrir o arquivo JSON",nl:"Openen van JSON-bestand mislukt",fr:"Échec de l'ouverture du fichier JSON",it:"Impossibile aprire il file JSON",es:"Error al abrir el archivo JSON",pl:"Nie można otworzyć pliku JSON"},"Falkland Islands (Malvinas)":{en:"Falkland Islands (Malvinas)",de:"Falklandinseln (Malvinas)",ru:"Фолклендские (Мальвинские) острова",pt:"Ilhas Falkland (Malvinas)",nl:"Falkland Eilanden (Malvinas)",fr:"Îles Falkland (Malvinas)",it:"Isole Falkland (Malvinas)",es:"Islas Falkland (Malvinas)",pl:"Falkland Islands (Malvinas)"},"Faroe Islands":{en:"Faroe Islands",de:"Faröer Inseln",ru:"Фарерские острова",pt:"ilhas Faroe",nl:"Faeröer",fr:"Îles Féroé",it:"Isole Faroe",es:"Islas Feroe",pl:"Wyspy Owcze"},Feb:{en:"Feb",de:"Feb",ru:"фев",pt:"fev",nl:"februari",fr:"févr.",it:"febbraio",es:"feb",pl:"Lut"},February:{en:"February",de:"Februar",ru:"февраль",pt:"fevereiro",nl:"februari",fr:"février",it:"febbraio",es:"Febrero",pl:"luty"},Fiji:{en:"Fiji",de:"Fidschi",ru:"Фиджи",pt:"Fiji",nl:"Fiji",fr:"Fidji",it:"Fiji",es:"Fiji",pl:"Fidżi"},"File is too big!":{en:"File is too big!",de:"Die Datei ist zu groß!",ru:"Слишком большой файл!",pt:"O arquivo é muito grande!",nl:"Bestand is te groot!",fr:"Le fichier est trop grand!",it:"Il file è troppo grande!",es:"¡El archivo es muy grande!",pl:"Plik jest za duży!"},"File rights":{en:"File rights",de:"Zugriff auf Dateien",ru:"Файл",pt:"Direitos de arquivo",nl:"Bestandsrechten",fr:"Droits du fichier",it:"Diritti di file",es:"Derechos de archivo",pl:"Prawa do plików"},Filter:{en:"Filter",de:"Filter",ru:"Искать",pt:"Filtro",nl:"Filter",fr:"Filtre",it:"Filtro",es:"Filtro",pl:"Filtr"},"Filter:":{en:"Filter",de:"Filter",ru:"Искать",pt:"Filtro",nl:"Filter",fr:"Filtre",it:"Filtro",es:"Filtro",pl:"Filtr"},"Filtered out":{en:"Everything is filtered out",de:"Alles ist herausgefiltert",ru:"Все отфильтровано",pt:"Tudo é filtrado",nl:"Alles is uitgefilterd",fr:"Tout est filtré",it:"Tutto è filtrato",es:"Todo está filtrado",pl:"Wszystko jest odfiltrowane"},"Find coordinates...":{en:"Find coordinates...",de:"Koordinaten suchen...",ru:"Найти координаты...",pt:"Encontre coordenadas ...",nl:"Vind coördinaten ...",fr:"Trouver les coordonnées ...",it:"Trova coordinate ...",es:"Encuentre coordenadas ...",pl:"Znajdź współrzędne ..."},Finland:{en:"Finland",de:"Finnland",ru:"Финляндия",pt:"Finlândia",nl:"Finland",fr:"Finlande",it:"Finlandia",es:"Finlandia",pl:"Finlandia"},"Float divider:":{en:"Float divider",de:"Dezimaltrennzeichen",ru:"Разделитель в числе с плавающей запятой:",pt:"Separador decimal:",nl:"Teken voor decimale waardes:",fr:"Caractère pour point décimal",it:"Separatore galleggiante:",es:"Separador decimal:",pl:"Float divider:"},France:{en:"France",de:"Frankreich",ru:"Франция",pt:"França",nl:"Frankrijk",fr:"France",it:"Francia",es:"Francia",pl:"Francja"},"Free RAM:":{en:"Free:",de:"Frei:",ru:"Свободно:",pt:"Livre:",nl:"Vrij geheugen:",fr:"Mémoire libre:",it:"Gratuito:",es:"RAM libre:",pl:"Darmowy:"},"French Guiana":{en:"French Guiana",de:"Französisch Guiana",ru:"Французская Гвиана",pt:"Guiana Francesa",nl:"Frans Guyana",fr:"Guinée Française",it:"Guiana francese",es:"Guiana Francesa",pl:"Gujana Francuska"},"French Polynesia":{en:"French Polynesia",de:"Französisch Polynesien",ru:"Французская Полинезия",pt:"Polinésia Francesa",nl:"Frans-Polynesië",fr:"Polynésie française",it:"Polinesia francese",es:"Polinesia Francesa",pl:"Polinezja Francuska"},"French Southern Territories":{en:"French Southern Territories",de:"French Southern Territories",ru:"Южные Французские Территории",pt:"Territórios Franceses do Sul",nl:"Franse zuidelijke gebieden",fr:"Terres australes françaises",it:"Territori della Francia del sud",es:"Territorios Franceses del Sur",pl:"Francuskie Terytoria Południowe"},Fri:{en:"Fri",de:"Fr",ru:"пт",pt:"Sex",nl:"vr",fr:"ven",it:"Fri",es:"Vie",pl:"Pt"},From:{en:"From: ",de:"Quelle",ru:"От",pt:"A partir de:",nl:"Oorsprong:",fr:"De:",it:"A partire dal:",es:"Fuente",pl:"Od:"},"From github":{en:"From github",de:"Von GitHub",ru:"С github",pt:"Do Github",nl:"Van github",fr:"Depuis github",it:"Da github",es:"Hacer Github",pl:"Od github"},Function:{en:"Function",de:"Funktion",ru:"Функция",pt:"Função",nl:"Functie",fr:"Fonction",it:"Funzione",es:"Función",pl:"Funkcjonować"},Gabon:{en:"Gabon",de:"Gabun",ru:"Габон",pt:"Gabão",nl:"Gabon",fr:"Gabon",it:"Gabon",es:"Gabón",pl:"Gabon"},Gambia:{en:"Gambia",de:"Gambia",ru:"Гамбия",pt:"Gâmbia",nl:"Gambia",fr:"Gambie",it:"Gambia",es:"Gambia",pl:"Gambia"},"Generated ID:":{en:"Generated ID",de:"Erzeugte ID",ru:"Сгенерированный ID:",pt:"Número de identificação gerada:",nl:"Gegenereerde ID:",fr:"Identifiant généré",it:"Generato & nbsp; ID:",es:"ID generado:",pl:"Wygenerowany identyfikator:"},Georgia:{en:"Georgia",de:"Georgia",ru:"Грузия",pt:"Geórgia",nl:"Georgië",fr:"Géorgie",it:"Georgia",es:"Georgia",pl:"Gruzja"},Germany:{en:"Germany",de:"Deutschland",ru:"Германия",pt:"Alemanha",nl:"Duitsland",fr:"Allemagne",it:"Germania",es:"Alemania",pl:"Niemcy"},Ghana:{en:"Ghana",de:"Ghana",ru:"Гана",pt:"Gana",nl:"Ghana",fr:"Ghana",it:"Ghana",es:"Ghana",pl:"Ghana"},Gibraltar:{en:"Gibraltar",de:"Gibraltar",ru:"Гибралтар",pt:"Gibraltar",nl:"Gibraltar",fr:"Gibraltar",it:"Gibilterra",es:"Gibraltar",pl:"Gibraltar"},"Go to Github...":{en:"Go to Github...",de:"Gehe zu Github...",ru:"Перейти к Github...",pt:"Vá para o Github...",nl:"Ga naar Github...",fr:"Aller à Github...",it:"Vai a Github...",es:"Ve a Github...",pl:"Idź do Github ..."},Greece:{en:"Greece",de:"Griechenland",ru:"Греция",pt:"Grécia",nl:"Griekenland",fr:"Grèce",it:"Grecia",es:"Grecia",pl:"Grecja"},Greenland:{en:"Greenland",de:"Grönland",ru:"Гренландия",pt:"Gronelândia",nl:"Groenland",fr:"Groenland",it:"Groenlandia",es:"Groenlandia",pl:"Grenlandia"},Grenada:{en:"Grenada",de:"Granada",ru:"Гренада",pt:"Grenada",nl:"Grenada",fr:"Grenade",it:"Grenada",es:"Grenada",pl:"Grenada"},Group:{en:"Group",de:"Gruppe",ru:"Группа",pt:"Grupo",nl:"Groep",fr:"Groupe",it:"Gruppo",es:"Grupo",pl:"Grupa"},Groups:{en:"Groups",de:"Gruppen",ru:"Группы",pt:"Grupos",nl:"Groepen",fr:"Groupes",it:"gruppi",es:"Grupos",pl:"Grupy"},Guadeloupe:{en:"Guadeloupe",de:"Guadeloupe",ru:"Гваделупа",pt:"Guadalupe",nl:"Guadeloupe",fr:"Guadeloupe",it:"Guadeloupe",es:"Guadalupe",pl:"Gwadelupa"},Guam:{en:"Guam",de:"Guam",ru:"Гуам",pt:"Guam",nl:"Guam",fr:"Guam",it:"Guam",es:"Guam",pl:"Guam"},Guatemala:{en:"Guatemala",de:"Guatemala",ru:"Гватемала",pt:"Guatemala",nl:"Guatemala",fr:"Guatemala",it:"Guatemala",es:"Guatemala",pl:"Gwatemala"},Guernsey:{en:"Guernsey",de:"Guernsey",ru:"шерстяная фуфайка",pt:"Guernsey",nl:"Guernsey",fr:"Guernesey",it:"maglione",es:"Guernesex",pl:"Guernsey"},Guinea:{en:"Guinea",de:"Guinea",ru:"Гвинея",pt:"Guiné",nl:"Guinea",fr:"Guinée",it:"Guinea",es:"Guiné",pl:"Gwinea"},"Guinea-Bissau":{en:"Guinea-Bissau",de:"Guinea-Bissau",ru:"Гвинея-Бисау",pt:"Guiné-Bissau",nl:"Guinee-Bissau",fr:"Guinée-Bissau",it:"Guinea-Bissau",es:"Guiné-Bissau",pl:"Gwinea Bissau"},Guyana:{en:"Guyana",de:"Guyana",ru:"Гайана",pt:"Guiana",nl:"Guyana",fr:"Guyane",it:"Guyana",es:"Guayana",pl:"Gujana"},Haiti:{en:"Haiti",de:"Haiti",ru:"Гаити",pt:"Haiti",nl:"Haïti",fr:"Haïti",it:"Haiti",es:"Haití",pl:"Haiti"},"Has no permission to %s %s %s":{en:"Has no permission to %s %s %s",de:"Kein Zugriff '%s' für %s %s",ru:"Нет разрешения '%s' для %s %s",pt:"Não tem permissão para %s %s %s",nl:"Heeft geen toestemming voor %s %s %s",fr:"N'a pas d'autorisation pour %s %s %s",it:"Non ha il permesso di %s %s %s",es:"No tiene permiso para %s %s %s",pl:"Nie ma uprawnień do %s %s %s"},"Heard and Mc Donald Islands":{en:"Heard and Mc Donald Islands",de:"Heard and Mc Donald Islands",ru:"Heard and Mc Donald Islands",pt:"Heard e Ilha Mc Donald",nl:"Gehoord en Mc Donald Islands",fr:"Heard et Mc Donald Islands",it:"Heard e Mc Donald Islands",es:"Heard e Islas McDonald",pl:"Wyspy Hearda i Mc Donalda"},"Heartbeat: ":{en:"Heartbeat: ",de:"Lebenszeichen: ",ru:"Heartbeat: ",pt:"Sinal de vida:",nl:"Levensteken:",fr:"Signe de vie",it:"Battito cardiaco:",es:"Señal de vida:",pl:"Bicie serca:"},Honduras:{en:"Honduras",de:"Honduras",ru:"Гондурас",pt:"Honduras",nl:"Honduras",fr:"Honduras",it:"Honduras",es:"Honduras",pl:"Honduras"},"Hong Kong":{en:"Hong Kong",de:"Hong Kong",ru:"Гонконг",pt:"Hong Kong",nl:"Hong Kong",fr:"Hong Kong",it:"Hong Kong",es:"Hong Kong",pl:"Hongkong"},Host:{en:"Host",de:"Host",ru:"Сервер",pt:"Hospedeiro",nl:"Host",fr:"Hôte",it:"Ospite",es:"Host",pl:"Gospodarz"},"Host %s is offline":{en:"Host %s is offline",de:"Host %s ist offline",ru:"Хост %s недоступен",pt:"Host %s está desconectado",nl:"Host %s is offline",fr:"L'hôte %s est déconnecté",it:"L'host %s non è in linea",es:"Host %s está desconectado",pl:"Host %s jest w trybie offline"},"Host:":{en:"Host",de:"Host",ru:"Хост:",pt:"Host:",nl:"Host:",fr:"Hôte:",it:"Ospite:",es:"Host:",pl:"Gospodarz:"},Hosts:{en:"Hosts",de:"Hosts",ru:"Сервера",pt:"Hosts",nl:"Systemen",fr:"Hôtes",it:"host",es:"Hosts",pl:"Zastępy niebieskie"},Hungary:{en:"Hungary",de:"Ungarn",ru:"Венгрия",pt:"Hungria",nl:"Hongarije",fr:"Hongrie",it:"Ungheria",es:"Hungría",pl:"Węgry"},ID:{en:"ID",de:"ID",ru:"ID",pt:"ID",nl:"ID",fr:"ID",it:"ID",es:"ID",pl:"ID"},Iceland:{en:"Iceland",de:"Island",ru:"Исландия",pt:"Islândia",nl:"IJsland",fr:"Islande",it:"Islanda",es:"Islandia",pl:"Islandia"},"Icon upload":{en:"Icon upload",de:"Bild hochladen",ru:"Загрузить картинку",pt:"Upload de imagem",nl:"Icon upload",fr:"Téléchargement d'icône",it:"Caricamento dell'icona",es:"Upload de imagem",pl:"Przesyłanie ikon"},"Ignore warning":{en:"Ignore warning",de:"Warnung ignorieren",ru:"Игнорировать предупреждение",pt:"Ignorar aviso",nl:"Negeer waarschuwing",fr:"Ignorer l'avertissement",it:"Ignora l'avviso",es:"Ignorar advertencia",pl:"Zignoruj ​​ostrzeżenie"},"In background":{en:"In background",de:"Im Hintergrund",ru:"В фоновом режиме",pt:"No fundo",nl:"Op de achtergrond",fr:"En arrière-plan",it:"Sullo sfondo",es:"Atrás",pl:"W tle"},India:{en:"India",de:"Indien",ru:"Индия",pt:"Índia",nl:"Indië",fr:"Inde",it:"India",es:"India",pl:"Indie"},Indonesia:{en:"Indonesia",de:"Indonesien",ru:"Индонезия",pt:"Indonésia",nl:"Indonesië",fr:"Indonésie",it:"Indonesia",es:"Indonesia",pl:"Indonezja"},Info:{en:"Info",de:"Info",ru:"Инфо",pt:"Info",nl:"info",fr:"Info",it:"Informazioni",es:"Información",pl:"Informacje"},Insert:{en:"Insert",de:"Einfügen",ru:"Вставить",pt:"Inserir",nl:"invoegen",fr:"Insérer",it:"Inserire",es:"Colocar",pl:"Wstawić"},Install:{en:"Install",de:"Installieren",ru:"Установить",pt:"Instalar",nl:"Installeren",fr:"Installer",it:"Installare",es:"Instalar",pl:"zainstalować"},"Install adapter from URL":{en:"Install or update the adapter from URL",de:"Adapter aus beliebiger Quelle installieren oder aktualisieren",ru:"Установить или обновить адаптер с URL-адреса",pt:"Instale ou atualize o adaptador a partir do URL",nl:"Installeer of update de adapter via de URL",fr:"Installer ou mettre à jour l'adaptateur depuis l'URL",it:"Installa o aggiorna l'adattatore dall'URL",es:"Instale o atualize el adaptador a un uma URL",pl:"Zainstaluj lub zaktualizuj adapter z adresu URL"},"Install adapter from github":{en:"Install or update the adapter from Github",de:"Adapter von GitHub installieren oder aktualisieren",ru:"Установить или обновить адаптер с github",pt:"Instale ou atualize o adaptador do github",nl:"Installeer of update de adapter vanuit github",fr:"Installer ou mettre à jour l'adaptateur depuis github",it:"Installa o aggiorna l'adattatore da github",es:"Instalar o actualizar el adaptador por Github",pl:"Zainstaluj lub zaktualizuj adapter z Github"},"Install from custom URL":{en:"Install from custom URL",de:"Installieren aus eigener URL",ru:"Установить из собственного источника",pt:"Instalar de uma URL própria",nl:"Installeer vanaf aangepaste URL",fr:"Installer à partir d'une URL personnalisée",it:"Installa dall'URL personalizzato",es:"Instalar desde una URL cualquiera",pl:"Zainstaluj z niestandardowego adresu URL"},"Install or update from URL...":{en:"Install or update from URL...",de:"Installieren oder aktualisieren von URL ...",ru:"Установите или обновите URL-адрес ...",pt:"Instale ou atualize a partir de URL ...",nl:"Installeren of updaten vanaf URL ...",fr:"Installer ou mettre à jour à partir de l'URL ...",it:"Installa o aggiorna dall'URL ...",es:"Instalar o actualizar desde URL ...",pl:"Zainstaluj lub zaktualizuj z adresu URL ..."},"Installation counter":{en:"Installations counter",de:"Installationszähler",ru:"Счетчик установок",pt:"Contador de instalação",nl:"Installatieteller",fr:"Compteur d'installation",it:"Contatore di installazione",es:"Contador de instalación",pl:"Licznik instalacji"},"Installations counter":{en:"Installations counter",de:"Installationszähler",ru:"Счетчик установок",pt:"Contador de instalações",nl:"Installaties teller",fr:"Compteur d'installations",it:"Contatore installazioni",es:"Contador de instalaciones",pl:"Licznik instalacji"},Installed:{en:"Installed",de:"Eingerichtet",ru:"Установлено",pt:"Instalado",nl:"Geïnstalleerd",fr:"Installée",it:"Installato",es:"Instalado",pl:"Zainstalowany"},"Installed from group":{en:"Installed from group",de:"Installiert aus der Gruppe",ru:"Установлено из группы",pt:"Instalado de um grupo",nl:"Installeer uit groep",fr:"Installé à partir du groupe",it:"Installato dal gruppo",es:"Instalado por el grupo",pl:"Zainstalowany z grupy"},"Installed instances":{en:"Installed instances",de:"Installierte Instanzen",ru:"создано инстанций",pt:"Instâncias instaladas",nl:"Geïnstalleerde instanties",fr:"Instances installées",it:"Istanze installate",es:"Instancias instaladas",pl:"Zainstalowane instancje"},"Installed version":{en:"Installed version",de:"Installierte Version",ru:"установленная версия",pt:"Versão instalada",nl:"Geïnstalleerde versie",fr:"Version installée",it:"Versione installata",es:"Versión instalada",pl:"Zainstalowana wersja"},Instances:{en:"Instances",de:"Instanzen",ru:"Настройки",pt:"Instâncias",nl:"Instanties",fr:"Instances",it:"istanze",es:"Instancias",pl:"Instancje"},Instructions:{en:"Instructions",de:"Anleitung",ru:"Инструкции",pt:"Instruções",nl:"Instructies",fr:"Instructions",it:"Istruzioni",es:"Instrucciones",pl:"Instrukcje"},Intro:{en:"Overview",de:"Übersicht",ru:"Страницы",pt:"Começar",nl:"Begin",fr:"Début",it:"Inizio",es:"comienzo",pl:"Początek"},"Invalid version of %s":{en:"Invalid version of %s",de:"Falsche Version von %s",ru:"Неподходящая версия %s",pt:"Versão inválida de %s",nl:"Ongeldige versie van %s",fr:"Version non valide de %s",it:"Versione non valida di %s",es:"Versión no válida de %s",pl:"Nieprawidłowa wersja %s"},"Invalid version of %s. Required %s":{en:"Invalid version of %s. Required %s",de:"Nicht kompatible Version von %s. Es wird %s erwartet",ru:"Требуется другая версия драйвера %s. Требуется %s",pt:"Versão inválida de %s. Precisa ser %s",nl:"Ongeldige versie van %s. Benodigd %s",fr:"Version non valide de %s. Requis %s",it:"Versione non valida di %s. Richiesto %s",es:"Versión no válida de %s. Necesita ser %s",pl:"Nieprawidłowa wersja %s. Wymagane %s"},Iran:{en:"Iran",de:"Iran",ru:"Иран",pt:"Irã",nl:"Ik rende",fr:"Iran",it:"Ho corso",es:"Irán",pl:"Iran"},Iraq:{en:"Iraq",de:"Irak",ru:"Ирак",pt:"Iraque",nl:"Irak",fr:"Irak",it:"Iraq",es:"Irak",pl:"Irak"},Ireland:{en:"Ireland",de:"Irland",ru:"Ирландия",pt:"Irlanda",nl:"Ierland",fr:"Irlande",it:"Irlanda",es:"Irlanda",pl:"Irlandia"},"Is yet in the list":{en:"It's already in the list",de:"Ist schon in der Liste",ru:"Уже в списке",pt:"Já está na lista",nl:"Staat al in de lijst",fr:"Est déjà dans la liste",it:"È già nella lista",es:"Ya está en la lista",pl:"Jest już na liście"},"Isle of Man":{en:"Isle of Man",de:"Isle of Man",ru:"Остров Мэн",pt:"Isle of Man",nl:"Isle of Man",fr:"Île de Man",it:"Isola di Man",es:"Isle of Man",pl:"Wyspa Man"},Israel:{en:"Israel",de:"Israel",ru:"Израиль",pt:"Israel",nl:"Israël",fr:"Israël",it:"Israele",es:"Israel",pl:"Izrael"},Italy:{en:"Italy",de:"Italien",ru:"Италия",pt:"Itália",nl:"Italië",fr:"Italie",it:"Italia",es:"Italia",pl:"Włochy"},"Ivory Coast":{en:"Ivory Coast",de:"Elfenbeinküste",ru:"Кот-д'Ивуар",pt:"Costa do Marfim",nl:"Ivoorkust",fr:"Côte d'Ivoire",it:"Costa d'Avorio",es:"Costa de Marfil",pl:"Wybrzeże Kości Słoniowej"},Jamaica:{en:"Jamaica",de:"Jamaika",ru:"Ямайка",pt:"Jamaica",nl:"Jamaica",fr:"Jamaïque",it:"Giamaica",es:"Jamaica",pl:"Jamajka"},Jan:{en:"Jan",de:"Jan",ru:"янв",pt:"jan",nl:"januari",fr:"janv.",it:"gennaio",es:"Jan",pl:"Jan"},January:{en:"January",de:"Januar",ru:"январь",pt:"janeiro",nl:"januari",fr:"janvier",it:"gennaio",es:"Enero",pl:"styczeń"},Japan:{en:"Japan",de:"Japan",ru:"Япония",pt:"Japão",nl:"Japan",fr:"Japon",it:"Giappone",es:"Japón",pl:"Japonia"},Jersey:{en:"Jersey",de:"Jersey",ru:"Джерси",pt:"Jersey",nl:"Jersey",fr:"Jersey",it:"maglia",es:"Jersey",pl:"Golf"},Jordan:{en:"Jordan",de:"Jordanien",ru:"Иордания",pt:"Jordânia",nl:"Jordanië",fr:"Jordan",it:"Giordania",es:"Jordania",pl:"Jordania"},Jul:{en:"Jul",de:"Jul",ru:"июл",pt:"Jul",nl:"juli",fr:"juill.",it:"luglio",es:"Jul",pl:"Jul"},July:{en:"July",de:"Juli",ru:"июль",pt:"julho",nl:"juli",fr:"juillet",it:"luglio",es:"Julio",pl:"lipiec"},Jun:{en:"Jun",de:"Juni",ru:"июн",pt:"jun",nl:"juni",fr:"juin",it:"giugno",es:"Jun",pl:"Jun"},June:{en:"June",de:"Juni",ru:"июнь",pt:"junho",nl:"juni",fr:"juin",it:"giugno",es:"Junio",pl:"czerwiec"},Kazakhstan:{en:"Kazakhstan",de:"Kasachstan",ru:"Казахстан",pt:"Cazaquistão",nl:"Kazachstan",fr:"Kazakhstan",it:"Kazakistan",es:"Kazajstán",pl:"Kazachstan"},Kenya:{en:"Kenya",de:"Kenia",ru:"Кения",pt:"Quênia",nl:"Kenia",fr:"Kenya",it:"Kenia",es:"Kenia",pl:"Kenia"},Kiribati:{en:"Kiribati",de:"Kiribati",ru:"Кирибати",pt:"Kiribati",nl:"Kiribati",fr:"Kiribati",it:"Kiribati",es:"Kiribati",pl:"Kiribati"},"Known bugs for":{en:"Known bugs for",de:"Bekannte Bugs für",ru:"Известные ошибки для",pt:"Bugs conhecidos para",nl:"Bekende bugs voor",fr:"Bugs connus pour",it:"Bug noti per",es:"Errores conocidos para",pl:"Znane błędy dla"},Korea:{en:"Korea",de:"Korea",ru:"Корея",pt:"Coréia",nl:"Korea",fr:"Corée",it:"Corea",es:"Corea",pl:"Korea"},Kosovo:{en:"Kosovo",de:"Kosovo",ru:"Косово",pt:"Kosovo",nl:"Kosovo",fr:"Kosovo",it:"Kosovo",es:"Kosovo",pl:"Kosowo"},Kuwait:{en:"Kuwait",de:"Kuwait",ru:"Кувейт",pt:"Kuwait",nl:"Koeweit",fr:"Koweit",it:"Kuwait",es:"Kuwait",pl:"Kuwejt"},Kyrgyzstan:{en:"Kyrgyzstan",de:"Kirgisistan",ru:"Киргизия",pt:"Quirguistão",nl:"Kirgizië",fr:"Kirghizistan",it:"Kyrgyzstan",es:"Kirguistán",pl:"Kirgistan"},"Lao People's Democratic Republic":{en:"Lao People's Democratic Republic",de:"Demokratische Volksrepublik Laos",ru:"Лаосская Народно-Демократическая Республика",pt:"República Democrática Popular do Lao",nl:"Lao Democratische Volksrepubliek",fr:"République démocratique populaire lao",it:"Repubblica democratica popolare del Laos",es:"República Democrática Popular Lao",pl:"Laotańska Republika Ludowo-Demokratyczna"},"Last changed":{en:"Last changed",de:"Letzte Änderung",ru:"Изменён",pt:"Última modificação",nl:"Laatst gewijzigd",fr:"Dernière modification",it:"Ultima modifica",es:"Última modificación",pl:"Ostatnia zmiana"},"Last update":{en:"Last update",de:"Letztes Update",ru:"Последнее обновление",pt:"Última atualização",nl:"Laatste update",fr:"Dernière mise à jour",it:"Ultimo aggiornamento",es:"Última actualización",pl:"Ostatnia aktualizacja"},"Latitude:":{en:"Latitude",de:"Breitengrad",ru:"Широта:",pt:"Latitude:",nl:"Breedtegraad:",fr:"Latitude",it:"Latitudine:",es:"Latitud:",pl:"Szerokość:"},Latvia:{en:"Latvia",de:"Lettland",ru:"Латвия",pt:"Letônia",nl:"Letland",fr:"Lettonie",it:"Lettonia",es:"Letonia",pl:"Łotwa"},Lebanon:{en:"Lebanon",de:"Libanon",ru:"Ливан",pt:"Líbano",nl:"Libanon",fr:"Liban",it:"Libano",es:"Líbano",pl:"Liban"},Lesotho:{en:"Lesotho",de:"Lesotho",ru:"Лесото",pt:"Lesoto",nl:"Lesotho",fr:"Lesotho",it:"Lesoto",es:"Lesotho",pl:"Lesotho"},"Let's Encrypt settings":{en:"Let's Encrypt settings",de:"Let's Encrypt Einstellungen",ru:"Настройки Let's Encrypt",pt:"Configurações do Let's Encrypt",nl:"Let's Encrypt instellingen",fr:"Paramètres Let's encrypt",it:"Let's Encrypt settings",es:"Configuración de Let's Encrypt",pl:"Zakodujmy ustawienia"},"Let's encrypt SSL":{en:"Let's encrypt SSL",de:"Let's Encrypt SSL",ru:"Let's encrypt SSL",pt:"Let's Encrypt SSL",nl:"Let's encrypt SSL",fr:"Let's encrypt SSL",it:"Let's encrypt SSL",es:"Let's Encrypt SSL",pl:"Zaszyfruj SSL"},Liberia:{en:"Liberia",de:"Liberia",ru:"Либерия",pt:"Libéria",nl:"Liberia",fr:"Libéria",it:"Liberia",es:"Liberia",pl:"Liberia"},"Libyan Arab Jamahiriya":{en:"Libyan Arab Jamahiriya",de:"Libyan Arab Jamahiriya",ru:"Ливийская арабская джамахирия",pt:"Jamahiriya Árabe da Líbia",nl:"Libië",fr:"Jamahiriya arabe libyenne",it:"Jamahiriya arabo libico",es:"Jamahiriya Árabe Libia",pl:"Libijska Arabska Dżamahirija"},License:{en:"License",de:"Lizenz",ru:"Лицензия",pt:"Licença",nl:"Licentie",fr:"Licence",it:"Licenza",es:"Licencia",pl:"Licencja"},"License terms":{en:"License terms",de:"Lizenzbedingungen",ru:"Содержание лицензии",pt:"Condições de licença",nl:"Licentievoorwaarden",fr:"Termes de la licence",it:"Termini di licenza",es:"Condiciones de licencia",pl:"Warunki licencji"},Liechtenstein:{en:"Liechtenstein",de:"Liechtenstein",ru:"Лихтенштейн",pt:"Liechtenstein",nl:"Liechtenstein",fr:"Liechtenstein",it:"Liechtenstein",es:"Liechtenstein",pl:"Liechtenstein"},"Listen on all IPs":{en:"Listen on all IPs",de:"Auf allen IP Adressen hören",ru:"Слушать на всех адресах",pt:"Ouça todos os IPs",nl:"Luister op alle IP's",fr:"Écouter sur toutes les adresses IP",it:"Ascolta su tutti gli IP",es:"Escucha todos los IPs",pl:"Posłuchaj na wszystkich IP"},Lithuania:{en:"Lithuania",de:"Litauen",ru:"Литва",pt:"Lituânia",nl:"Litouwen",fr:"Lituanie",it:"Lituania",es:"Lituania",pl:"Litwa"},"Loading...":{en:"Loading...",de:"Lade...",ru:"Загрузка...",pt:"Carregando...",nl:"Bezig met laden...",fr:"Chargement...",it:"Caricamento in corso...",es:"Cargando...",pl:"Ładuję..."},Log:{en:"Log",de:"Log",ru:"Лог",pt:"Log",nl:"Log",fr:"Journal",it:"Login",es:"Log",pl:"Log"},"Log file will be deleted. Are you sure?":{en:"Log file will be deleted. Are you sure?",de:"Die Logdatei wird gelöscht. Sind Sie sicher?",ru:"Файл протокола будет удален. Вы уверены?",pt:"O arquivo de log será deletado. Você tem certeza?",nl:"Logbestand wordt verwijderd. Weet je het zeker?",fr:"Le fichier journal sera supprimé. Êtes-vous sûr?",it:"Il file di registro verrà eliminato. Sei sicuro?",es:"Se borrará el archivo log. ¿Estás seguro?",pl:"Plik dziennika zostanie usunięty. Jesteś pewny?"},"Log size:":{en:"Log size",de:"Log-Größe:",ru:"Размер файла протокола:",pt:"Tamanho do log:",nl:"Log bestandsgrootte:",fr:"Taille du journal",it:"Dimensione del registro:",es:"Tamaño del log:",pl:"Rozmiar dziennika:"},"Login timeout(sec):":{en:"Login timeout (sec)",de:"Login Timeout (Sek)",ru:"Логин таймаут(сек):",pt:"Tempo limite de login (seg):",nl:"Time-out bij aanmelding (sec):",fr:"Délai d'attente de connexion (s):",it:"Timeout di accesso (sec):",es:"Límite de tiempo para el acceso (sec):",pl:"Limit czasu logowania (s):"},Logout:{en:"Logout",de:"Abmelden",ru:"Выйти",pt:"Logoff",nl:"Uitloggen",fr:"Déconnection",it:"Disconnettersi",es:"Cerrar sesión",pl:"Wyloguj"},"Longitude:":{en:"Longitude",de:"Längengrad",ru:"Долгота:",pt:"Longitude:",nl:"Lengtegraad:",fr:"Longitude",it:"Longitudine:",es:"Longitud:",pl:"Długość geograficzna:"},Luxembourg:{en:"Luxembourg",de:"Luxemburg",ru:"Люксембург",pt:"Luxemburgo",nl:"Luxemburg",fr:"Luxembourg",it:"Lussemburgo",es:"Luxemburgo",pl:"Luksemburg"},MB:{en:"Mb",de:"MB",ru:"Мб",pt:"MB",nl:"Mb",fr:"MB",it:"mb",es:"MB",pl:"Mb"},Macau:{en:"Macau",de:"Macau",ru:"Макао",pt:"Macau",nl:"Macau",fr:"Macao",it:"Macau",es:"Macau",pl:"Makau"},Macedonia:{en:"Macedonia",de:"Mazedonien",ru:"Македония",pt:"Macedônia",nl:"Macedonië",fr:"Macédoine",it:"Macedonia",es:"Macedonia",pl:"Macedonia"},Madagascar:{en:"Madagascar",de:"Madagaskar",ru:"Мадагаскар",pt:"Madagáscar",nl:"Madagascar",fr:"Madagascar",it:"Madagascar",es:"Madagascar",pl:"Madagaskar"},Mai:{en:"Mai",de:"Mai",ru:"май",pt:"mai",nl:"mei",fr:"mai",it:"maggio",es:"May",pl:"Mai"},Main:{en:"Main",de:"Allgemein",ru:"Основные",pt:"Geral",nl:"Basis",fr:"Principale",it:"Principale",es:"General",pl:"Główny"},"Main settings":{en:"Main settings",de:"Haupteinstellungen",ru:"Основные настройки",pt:"Configurações gerais",nl:"Basisinstellingen",fr:"Réglages principaux",it:"Impostazioni principali",es:"Configuración general",pl:"Ustawienia główne"},Malawi:{en:"Malawi",de:"Malawi",ru:"Малави",pt:"Malawi",nl:"Malawi",fr:"Malawi",it:"Malawi",es:"Malawi",pl:"Malawi"},Malaysia:{en:"Malaysia",de:"Malaysia",ru:"Малайзия",pt:"Malásia",nl:"Maleisië",fr:"Malaisie",it:"Malaysia",es:"Malasia",pl:"Malezja"},Maldives:{en:"Maldives",de:"Malediven",ru:"Мальдивы",pt:"Maldivas",nl:"Maldiven",fr:"Maldives",it:"Maldive",es:"Maldivas",pl:"Malediwy"},Mali:{en:"Mali",de:"Mali",ru:"Мали",pt:"Mali",nl:"Mali",fr:"Mali",it:"Mali",es:"Mali",pl:"Mali"},Malta:{en:"Malta",de:"Malta",ru:"Мальта",pt:"Malta",nl:"Malta",fr:"Malte",it:"Malta",es:"Malta",pl:"Malta"},"Manually created":{en:"Manually created",de:"Manuell erzeugt",ru:"Создан в админ",pt:"Criação manual",nl:"Handmatig aangemaakt",fr:"Créé manuellement",it:"Creato manualmente",es:"Creación manual",pl:"Ręcznie utworzone"},Mar:{en:"Mar",de:"Mär",ru:"мар",pt:"mar",nl:"maart",fr:"mars",it:"marzo",es:"Mar",pl:"Zniszczyć"},March:{en:"March",de:"März",ru:"март",pt:"março",nl:"maart",fr:"mars",it:"marzo",es:"Marzo",pl:"Marsz"},"Marshall Islands":{en:"Marshall Islands",de:"Marshall Inseln",ru:"Маршалловы острова",pt:"Ilhas Marshall",nl:"Marshall eilanden",fr:"Iles Marshall",it:"Isole Marshall",es:"Islas Marshall",pl:"Wyspy Marshalla"},Martinique:{en:"Martinique",de:"Martinique",ru:"Мартиника",pt:"Martinica",nl:"Martinique",fr:"Martinique",it:"Martinique",es:"Martinica",pl:"Martynika"},Mauritania:{en:"Mauritania",de:"Mauritania",ru:"Мавритания",pt:"Mauritânia",nl:"Mauritanië",fr:"Mauritanie",it:"Mauritania",es:"Mauritania",pl:"Mauretania"},Mauritius:{en:"Mauritius",de:"Mauritius",ru:"Маврикий",pt:"Maurícia",nl:"Mauritius",fr:"Maurice",it:"Mauritius",es:"Mauricio",pl:"Mauritius"},Mayotte:{en:"Mayotte",de:"Mayotte",ru:"Майотта",pt:"Mayotte",nl:"Mayotte",fr:"Mayotte",it:"Mayotte",es:"Mayotte",pl:"Majotta"},Members:{en:"Members",de:"Mitglieder",ru:"Объекты",pt:"Membros",nl:"leden",fr:"Membres",it:"Utenti",es:"Miembros",pl:"Członkowie"},Message:{en:"Message",de:"Meldung",ru:"Сообщение",pt:"Mensagem",nl:"Bericht",fr:"Message",it:"Messaggio",es:"Mensaje",pl:"Wiadomość"},"Message buffer overflow. Losing oldest":{en:"Message buffer overflow. Losing oldest.",de:"Zu viele Meldungen. Älteste werden gelöscht.",ru:"Слишком много сообщений. Старые выбрасываются.",pt:"Mensagens de mais. Os mais velhos vão ser deletados.",nl:"Berichtbuffer volgelopen. Oudste worden verwijderd.",fr:"Dépassement de tampon de message. Perdre plus vieux.",it:"Overflow del buffer dei messaggi. Perdere più vecchio.",es:"Mensajes de más. Los más viejos serán borrados.",pl:"Przepełnienie bufora wiadomości. Utrata najstarszych."},Mexico:{en:"Mexico",de:"Mexiko",ru:"Мексика",pt:"México",nl:"Mexico",fr:"Mexique",it:"Messico",es:"México",pl:"Meksyk"},Micronesia:{en:"Micronesia",de:"Mikronesien",ru:"Микронезия",pt:"Micronésia",nl:"Micronesië",fr:"Micronésie",it:"Micronesia",es:"Micronesia",pl:"Mikronezja"},Model:{en:"Model",de:"Modell",ru:"Модель",pt:"Modelo",nl:"Model",fr:"Modèle",it:"Modello",es:"Modelo",pl:"Model"},Moldova:{en:"Moldova",de:"Moldawien",ru:"Молдова",pt:"Moldávia",nl:"Moldavië",fr:"Moldavie",it:"Moldova",es:"Moldavia",pl:"Moldova"},Mon:{en:"Mon",de:"Mo",ru:"пн",pt:"Seg",nl:"ma",fr:"lun",it:"Mon",es:"Lun",pl:"Pon"},Monaco:{en:"Monaco",de:"Monaco",ru:"Монако",pt:"Mônaco",nl:"Monaco",fr:"Monaco",it:"Monaco",es:"Mónaco",pl:"Monaco"},Mongolia:{en:"Mongolia",de:"Mongolei",ru:"Монголия",pt:"Mongólia",nl:"Mongolië",fr:"Mongolie",it:"Mongolia",es:"Mongolia",pl:"Mongolia"},Montenegro:{en:"Montenegro",de:"Montenegro",ru:"Черногория",pt:"Montenegro",nl:"Montenegro",fr:"Monténégro",it:"Montenegro",es:"Montenegro",pl:"Czarnogóra"},Montserrat:{en:"Montserrat",de:"Montserrat",ru:"Монсеррат",pt:"Montserrat",nl:"Montserrat",fr:"Montserrat",it:"Montserrat",es:"Montserrat",pl:"Montserrat"},Morocco:{en:"Morocco",de:"Marokko",ru:"Марокко",pt:"Marrocos",nl:"Marokko",fr:"Maroc",it:"Marocco",es:"Marruecos",pl:"Maroko"},Mozambique:{en:"Mozambique",de:"Mosambik",ru:"Мозамбик",pt:"Moçambique",nl:"Mozambique",fr:"Mozambique",it:"Mozambico",es:"Mozambique",pl:"Mozambik"},Myanmar:{en:"Myanmar",de:"Myanmar",ru:"Мьянма",pt:"Myanmar",nl:"Myanmar",fr:"Myanmar",it:"Myanmar",es:"Myanmar",pl:"Myanmar"},NPM:{en:"NPM",de:"NPM",ru:"NPM",pt:"NPM",nl:"NPM",fr:"NPM",it:"NPM",es:"NPM",pl:"NPM"},Name:{en:"Name",de:"Name",ru:"Имя",pt:"Nome",nl:"Naam",fr:"Nom",it:"Nome",es:"Nombre",pl:"Nazwa"},"Name:":{en:"Name",de:"Name",ru:"Имя:",pt:"Nome:",nl:"Naam:",fr:"Nom",it:"Nome:",es:"Nombre:",pl:"Nazwa:"},Namibia:{en:"Namibia",de:"Namibia",ru:"Намибия",pt:"Namíbia",nl:"Namibië",fr:"Namibie",it:"Namibia",es:"Namibia",pl:"Namibia"},Nauru:{en:"Nauru",de:"Nauru",ru:"Науру",pt:"Nauru",nl:"Nauru",fr:"Nauru",it:"Nauru",es:"Nauru",pl:"Nauru"},Nepal:{en:"Nepal",de:"Nepal",ru:"Непал",pt:"Nepal",nl:"Nepal",fr:"Népal",it:"Nepal",es:"Nepal",pl:"Nepal"},Netherlands:{en:"Netherlands",de:"Niederlande",ru:"Нидерланды",pt:"Holanda",nl:"Nederland",fr:"Pays-Bas",it:"Olanda",es:"Holanda",pl:"Holandia"},"Netherlands Antilles":{en:"Netherlands Antilles",de:"Netherlands Antilles",ru:"Нидерландские Антильские острова",pt:"Antilhas holandesas",nl:"Nederlandse Antillen",fr:"Antilles néerlandaises",it:"Antille Olandesi",es:"Antillas Holandesas",pl:"Antyle Holenderskie"},New:{en:"New",de:"Hinzufügen",ru:"Добавить",pt:"Novo",nl:"nieuwe",fr:"Nouveau",it:"Nuovo",es:"Nuevo",pl:"Nowy"},"New Caledonia":{en:"New Caledonia",de:"Neukaledonien",ru:"Новая Каледония",pt:"Nova Caledônia",nl:"Nieuw-Caledonië",fr:"Nouvelle Calédonie",it:"Nuova Caledonia",es:"Nueva Caledonia",pl:"Nowa Kaledonia"},"New Zealand":{en:"New Zealand",de:"Neuseeland",ru:"Новая Зеландия",pt:"Nova Zelândia",nl:"Nieuw Zeeland",fr:"Nouvelle-Zélande",it:"Nuova Zelanda",es:"Nueva Zelanda",pl:"Nowa Zelandia"},"New category":{en:"New category",de:"Neue Aufzählung",ru:"Новая категория",pt:"Nova categoria",nl:"Nieuwe categorie",fr:"Nouvelle catégorie",it:"Nuova categoria",es:"Nueva categoría",pl:"Nowa kategoria"},"New enum":{en:"New enum",de:"Neue Aufzählung",ru:"Новая категория",pt:"Novo enumeração",nl:"Nieuwe enum",fr:"Nouvelle énumération",it:"Nuovo enum",es:"Nueva clasificación",pl:"Nowe wyliczenie"},"New group":{en:"New group",de:"Neue Gruppe",ru:"Новая группа",pt:"Novo grupo",nl:"Nieuwe groep",fr:"Nouveau groupe",it:"Nuovo gruppo",es:"Nuevo grupo",pl:"Nowa grupa"},"New object":{en:"New object",de:"Neues Objekt",ru:"Новый объект",pt:"Novo objeto",nl:"Nieuwe objekt",fr:"Nouvel object",it:"Nuovo oggetto",es:"Nuevo objeto",pl:"Nowy obiekt"},"New objekt":{en:"New object",de:"Neues Objekt",ru:"Новый объект",pt:"Novo objeto",nl:"Nieuwe objekt",fr:"Nouvel object",it:"Nuovo oggetto",es:"Nuevo objeto",pl:"Nowy obiekt"},"New user":{en:"New user",de:"Neuer Benutzer",ru:"Новый пользователь",pt:"Novo usuário",nl:"Nieuwe gebruiker",fr:"Nouvel utilisateur",it:"Nuovo utente",es:"Nuevo usuario",pl:"Nowy użytkownik"},Nicaragua:{en:"Nicaragua",de:"Nicaragua",ru:"Никарагуа",pt:"Nicarágua",nl:"Nicaragua",fr:"Nicaragua",it:"Nicaragua",es:"Nicaragua",pl:"Nikaragua"},Niger:{en:"Niger",de:"Niger",ru:"Нигер",pt:"Níger",nl:"Niger",fr:"Niger",it:"Niger",es:"Niger",pl:"Niger"},Nigeria:{en:"Nigeria",de:"Nigeria",ru:"Нигерия",pt:"Nigéria",nl:"Nigeria",fr:"Nigeria",it:"Nigeria",es:"Nigeria",pl:"Nigeria"},Niue:{en:"Niue",de:"Niue",ru:"Ниуэ",pt:"Niue",nl:"Niue",fr:"Nioué",it:"Niue",es:"Niue",pl:"Niue"},"No data":{en:"No data",de:"Keine Daten",ru:"Нет данных",pt:"Sem dados",nl:"Geen gegevens",fr:"Pas de données",it:"Nessun dato",es:"Sin datos",pl:"Brak danych"},"No states selected!":{en:"No states selected!",de:"Keine Zustände ausgewählt!",ru:"Нечего настраивать!",pt:"Nenhum estado selecionado!",nl:"Geen gegevens geselecteerd!",fr:"Aucun état sélectionné!",it:"Nessun stato selezionato!",es:"¡Ningún estado seleccionado!",pl:"Nie wybrano stanów!"},"No version of %s":{en:"No version of %s",de:"Keine Versionsinfo für %s",ru:"Нет информации о версии для %s",pt:"Nenhuma informação da versão %s",nl:"Geen versie van %s",fr:"Aucune version de %s",it:"Nessuna versione di %s",es:"No hay información de la versión %s",pl:"Brak wersji %s"},"Node.js":{en:"Node.js",de:"Node.js",ru:"Node.js",pt:"Node.js",nl:"Node.js",fr:"Node.js",it:"Node.js",es:"Node.js",pl:"Node.js"},"Norfolk Island":{en:"Norfolk Island",de:"Norfolk Island",ru:"Остров Норфолк",pt:"Ilha de Norfolk",nl:"Norfolk Island",fr:"L'ile de Norfolk",it:"Isola Norfolk",es:"Isla de Norfolk",pl:"Wyspa Norfolk"},"Northern Mariana Islands":{en:"Northern Mariana Islands",de:"Northern Mariana Islands",ru:"Северные Марианские острова",pt:"Ilhas Marianas do Norte",nl:"noordelijke Mariana eilanden",fr:"Îles Mariannes du Nord",it:"Isole Marianne settentrionali",es:"Islas Marianas del Norte",pl:"Mariany Północne"},Norway:{en:"Norway",de:"Norway",ru:"Норвегия",pt:"Noruega",nl:"Noorwegen",fr:"Norvège",it:"Norvegia",es:"Noruega",pl:"Norwegia"},"Not exists":{en:"Does not exist",de:"Existiert nicht",ru:"Не существует",pt:"Não existe",nl:"Bestaat niet",fr:"N'existe pas",it:"Non esiste",es:"No existe",pl:"Nie istnieje"},"Note:":{en:"Note",de:"Hinweis",ru:"Замечание:",pt:"Nota:",nl:"Notitie:",fr:"Remarque",it:"Nota:",es:"Nota:",pl:"Uwaga:"},Nov:{en:"Nov",de:"Nov",ru:"ноя",pt:"nov",nl:"november",fr:"nov.",it:"novembre",es:"Nov",pl:"Nov"},November:{en:"November",de:"November",ru:"ноябрь",pt:"novembro",nl:"november",fr:"novembre",it:"novembre",es:"Noviembre",pl:"listopad"},OS:{en:"OS",de:"OS",ru:"ОС",pt:"OS",nl:"OS",fr:"OS",it:"OS",es:"OS",pl:"OS"},'Object "%s" does not exists. Update the page.':{en:'Object "%s" does not exist. Update the page.',de:'Das Objekt "%s" existiert nicht. Seite aktualisieren.',ru:'Объект "%s" не существует. Обновите страницу.',pt:'O objeto " %s " não existe. Atualize a página.',nl:'Objekt "%s" bestaat niet. Werk de pagina bij.',fr:"L'objet \"%s\" n'existe pas. Actualisez la page",it:'L\'oggetto "%s" non esiste. Aggiorna la pagina.',es:'El objeto "%s" no existe. Actualice la página.',pl:'Obiekt " %s " nie istnieje. Zaktualizuj stronę.'},"Object may not be deleted":{en:"Object may not be deleted",de:"Das Objekt darf nicht gelöscht werden",ru:"Объект не может быть удален",pt:"O objeto não pode ser excluído",nl:"Object mag niet worden verwijderd",fr:"L'objet ne peut pas être supprimé",it:"L'oggetto non può essere cancellato",es:"El objeto no se puede eliminar",pl:"Obiekt nie może zostać usunięty"},"Object rights":{en:"Object rights",de:"Zugriff auf Objekte",ru:"Для объекта",pt:"Direitos do objeto",nl:"Objektrechten",fr:"Droits d'objet",it:"Diritti dell'oggetto",es:"Derechos del objeto",pl:"Prawa obiektu"},Objects:{en:"Objects",de:"Objekte",ru:"Объекты",pt:"Objetos",nl:"Objekten",fr:"Objets",it:"Oggetti",es:"Objetos",pl:"Obiekty"},Oct:{en:"Oct",de:"Okt",ru:"окт",pt:"out",nl:"oktober",fr:"oct.",it:"ottobre",es:"Oct",pl:"Paź"},October:{en:"October",de:"Oktober",ru:"октября",pt:"outubro",nl:"oktober",fr:"octobre",it:"ottobre",es:"Octubre",pl:"październik"},Ok:{en:"Ok",de:"Ok",ru:"Ok",pt:"Ok",nl:"OK",fr:"D'accord",it:"Ok",es:"Ok",pl:"Ok"},Oman:{en:"Oman",de:"Oman",ru:"Oman",pt:"Omã",nl:"Oman",fr:"Oman",it:"Oman",es:"Omán",pl:"Oman"},"Only one":{en:"Only one",de:"Nur eins",ru:"Только один",pt:"Apenas um",nl:"éénmalig",fr:"Seulement un",it:"Solo uno",es:"Apenas uno",pl:"Tylko jeden"},"Open original":{en:"Open on new tab",de:"In neuem Tab öffnen",ru:"Открыть на новой вкладке",pt:"Abrir na nova guia",nl:"Open op nieuw tabblad",fr:"Ouvrir sur un nouvel onglet",it:"Apri in una nuova scheda",es:"Abrir en una pestaña nueva",pl:"Otwórz na nowej karcie"},Owner:{en:"Owner",de:"Besitzer",ru:"Пользователь",pt:"Proprietário",nl:"Eigenaar",fr:"Propriétaire",it:"Proprietario",es:"Propietario",pl:"Właściciel"},"Owner group":{en:"Owner group",de:"Besitzer-Gruppe",ru:"Группа-Владелец",pt:"Grupo de proprietários",nl:"Eigenaar groep",fr:"Groupe de propriétaires",it:"Gruppo di proprietari",es:"Grupo de propietarios",pl:"Grupa właścicieli"},"Owner user":{en:"Owner user",de:"Besitzer-Anwender",ru:"Пользователь-Владелец",pt:"Usuário proprietário",nl:"Eigenaar gebruiker",fr:"Utilisateur propriétaire",it:"Utente proprietario",es:"Usuario propietario",pl:"Użytkownik właściciela"},Pakistan:{en:"Pakistan",de:"Pakistan",ru:"Пакистан",pt:"Paquistão",nl:"Pakistan",fr:"Pakistan",it:"Pakistan",es:"Pakistán",pl:"Pakistan"},Palau:{en:"Palau",de:"Palau",ru:"Palau",pt:"Palau",nl:"Palau",fr:"Palau",it:"Palau",es:"Palau",pl:"Palau"},Palestine:{en:"Palestine",de:"Palästina",ru:"Палестина",pt:"Palestina",nl:"Palestina",fr:"Palestine",it:"Palestina",es:"Palestina",pl:"Palestyna"},Panama:{en:"Panama",de:"Panama",ru:"Панама",pt:"Panamá",nl:"Panama",fr:"Panama",it:"Panama",es:"Panamá",pl:"Panama"},"Papua New Guinea":{en:"Papua New Guinea",de:"Papua Neuguinea",ru:"Папуа - Новая Гвинея",pt:"Papua Nova Guiné",nl:"Papoea-Nieuw-Guinea",fr:"Papouasie Nouvelle Guinée",it:"Papua Nuova Guinea",es:"Papúa Nueva Guinea",pl:"Papua Nowa Gwinea"},Paraguay:{en:"Paraguay",de:"Paraguay",ru:"Парагвай",pt:"Paraguai",nl:"Paraguay",fr:"Paraguay",it:"Paraguay",es:"Paraguay",pl:"Paragwaj"},Parent:{en:"Parent",de:"Parent",ru:"Родитель",pt:"Pai",nl:"Bovenliggende",fr:"Parent",it:"Genitore",es:"Padre",pl:"Rodzic"},"Parse error":{en:"Parse error",de:"Fehler beim Parsen des JSON-Quelltexts",ru:"Ошибка анализа JSON",pt:"Erro de análise",nl:"Verwerkings fout",fr:"Erreur d'analyse",it:"Errore",es:"Error de análisis",pl:"Błąd przetwarzania"},Password:{en:"Password",de:"Passwort",ru:"Пароль",pt:"Senha",nl:"Wachtwoord",fr:"Mot de passe",it:"Parola d'ordine",es:"Contraseña",pl:"Hasło"},"Password and confirmation are not equal!":{en:"Password and confirmation are not equal!",de:"Passwort und Bestätigung sind unterschiedlich!",ru:"Пароль и подтверждение пароля не совпадают!",pt:"A senha e a confirmação não são iguais!",nl:"Wachtwoord en bevestiging zijn niet hetzelfde!",fr:"Le mot de passe et la confirmation ne sont pas égaux!",it:"Password e conferma non sono uguali!",es:"¡La contraseña y la confirmación no son iguales!",pl:"Hasło i potwierdzenie nie są równe!"},"Password cannot be empty!":{en:"Password cannot be empty!",de:"Passwort darf nicht leer sein!",ru:"Пустой пароль!",pt:"A senha não pode estar vazia!",nl:"Wachtwoord mag niet leeg zijn!",fr:"Le mot de passe ne peut pas être vide!",it:"La password non può essere vuota!",es:"¡La contraseña no puede estar vacía!",pl:"Hasło nie może być puste!"},"Password repeat":{en:"Password repeat",de:"Passwort wiederholen",ru:"Повтор пароля",pt:"Repetição da senha",nl:"Wachtwoord herhalen",fr:"Mot de passe",it:"Ripetizione della password",es:"Repetición de la contraseña",pl:"Powtórz hasło"},"Path to storage:":{en:"Path to storage",de:"Pfad zum speichern",ru:"Путь к папке для сохранения:",pt:"Caminho para gravar:",nl:"Pad naar opslag:",fr:"Chemin d'accès pour le stockage",it:"Percorso di archiviazione:",es:"Ruta para grabar:",pl:"Ścieżka do przechowywania:"},"Pause output":{en:"Pause output",de:"Ausgabe pausieren",ru:"Задержать вывод сообщений",pt:"Pausar o output",nl:"Pauzeer de uitvoer",fr:"Mettre en pause la sortie",it:"Metti in pausa l'output",es:"Pausar la salida",pl:"Wstrzymaj wyjście"},Peru:{en:"Peru",de:"Peru",ru:"Peru",pt:"Peru",nl:"Peru",fr:"Pérou",it:"Perù",es:"Perú",pl:"Peru"},Philippines:{en:"Philippines",de:"Philippinen",ru:"Филиппины",pt:"Filipinas",nl:"Filippijnen",fr:"Philippines",it:"Filippine",es:"Filipinas",pl:"Filipiny"},Pitcairn:{en:"Pitcairn",de:"Pitcairn",ru:"Питкэрн",pt:"Pitcairn",nl:"Pitcairn",fr:"Pitcairn",it:"Pitcairn",es:"Pitcairn",pl:"Pitcairn"},Platform:{en:"Platform",de:"Plattform",ru:"Платформа",pt:"Plataforma",nl:"Platform",fr:"Plate-forme",it:"piattaforma",es:"Plataforma",pl:"Platforma"},"Please confirm":{en:"Please confirm",de:"Bitte bestätigen",ru:"Пожалуйста подтвердите",pt:"Por favor confirme",nl:"Bevestig alstublieft",fr:"Veuillez confirmer",it:"Per favore conferma",es:"Por favor, confirme",pl:"Proszę potwierdzić"},Poland:{en:"Poland",de:"Poland",ru:"Польша",pt:"Polônia",nl:"Polen",fr:"Pologne",it:"Polonia",es:"Polonia",pl:"Polska"},Popular:{en:"Popular",de:"oft benuzt",ru:"часто используемые",pt:"Popular",nl:"Populair",fr:"Populaire",it:"Popolare",es:"Popular",pl:"Popularny"},"Popular first":{en:"Popular first",de:"Beliebte zuerst",ru:"По популярности",pt:"Popular primeiro",nl:"Populair eerst",fr:"Populaire d'abord",it:"Popolare prima",es:"Popular primero",pl:"Najpopularniejszy na początku"},"Port to check the domain:":{en:"Port to check the domain",de:"Port um die Erreichbarkeit der Domäne zu prüfen",ru:"Порт для проверки доступности домена:",pt:"Porta para verificar o domínio:",nl:"Poort om het domein te controleren:",fr:"Port pour vérifier le domaine",it:"Porta per controllare il dominio:",es:"Puerto para comprobar el dominio:",pl:"Port do sprawdzenia domeny:"},Portugal:{en:"Portugal",de:"Portugal",ru:"Португалия",pt:"Portugal",nl:"Portugal",fr:"Portugal",it:"Portogallo",es:"Portugal",pl:"Portugalia"},"Preserve ID":{en:"Preserve ID",de:"ID beibehalten",ru:"ID не изменять",pt:"Preservar ID",nl:"Bewaar ID",fr:"Conserver l'ID",it:"Preservare l'ID",es:"Conservar ID",pl:"Zachowaj ID"},Preview:{en:"Preview",de:"Vorschau",ru:"Предосмотр",pt:"Antevisão",nl:"Voorbeeld",fr:"Aperçu",it:"Anteprima",es:"Vista previa",pl:"Zapowiedź"},"Processing...":{en:"Processing...",de:"Bearbeite...",ru:"Обработка...",pt:"Em processamento...",nl:"Verwerken...",fr:"En traitement...",it:"In lavorazione...",es:"En proceso...",pl:"Przetwarzanie..."},"Puerto Rico":{en:"Puerto Rico",de:"Puerto Rico",ru:"Пуэрто-Рико",pt:"Porto Rico",nl:"Puerto Rico",fr:"Porto Rico",it:"Porto Rico",es:"Puerto Rico",pl:"Portoryko"},Qatar:{en:"Qatar",de:"Qatar",ru:"Катар",pt:"Catar",nl:"Katar",fr:"Qatar",it:"Qatar",es:"Qatar",pl:"Katar"},RAM:{en:"RAM",de:"RAM",ru:"RAM",pt:"RAM",nl:"RAM",fr:"RAM",it:"RAM",es:"RAM",pl:"RAM"},"RAM total usage:":{en:"Total RAM usage:",de:"gesamte RAM-Nutzung:",ru:"Всего RAM - Используется:",pt:"Uso total de RAM:",nl:"Geheugen gebruik totaal:",fr:"Utilisation totale de RAM:",it:"Utilizzo totale della RAM:",es:"Uso total de RAM:",pl:"Całkowite wykorzystanie pamięci RAM:"},"RAM usage":{en:"RAM usage",de:"RAM-Nutzung",ru:"Исп. RAM",pt:"Uso de RAM",nl:"Geheugen-gebruik",fr:"Utilisation de la RAM",it:"Utilizzo della RAM",es:"Uso de RAM",pl:"Wykorzystanie pamięci RAM"},"Rebuild tree":{en:"Rebuild tree",de:"Baum neu erstellen",ru:"Восстановить дерево",pt:"Reconstruir árvore",nl:"Bouw de boom opnieuw op",fr:"Reconstruire l'arbre",it:"Ricostruisci l'albero",es:"Reconstruir el árbol",pl:"Przebuduj drzewo"},"Recently updated":{en:"Recently updated",de:"Kürzlich aktualisiert",ru:"Недавно обновленные",pt:"Atualizado recentemente",nl:"Recent geüpdatet",fr:"Récemment mis à jour",it:"Aggiornato di recente",es:"Recientemente actualizado",pl:"Ostatnio zaktualizowane"},"Refresh log":{en:"Refresh log",de:"Log aktualisieren",ru:"Обновить протокол",pt:"Atualizar o log",nl:"Log vernieuwen",fr:"Actualiser le journal",it:"Aggiorna registro",es:"Actualizar el log",pl:"Odśwież dziennik"},Removed:{en:"Removed",de:"Entfernt",ru:"Удалено",pt:"Removido",nl:"verwijderd",fr:"Supprimé",it:"Rimosso",es:"Removido",pl:"Oddalony"},"Removing of adapter...":{en:"Removing of adapter...",de:"Entfernen des Adapters...",ru:"Удаление драйвера...",pt:"Removendo o adaptador...",nl:"Adapter verwijderen...",fr:"Retrait de l'adaptateur...",it:"Rimozione dell'adattatore...",es:"Quitar el adaptador...",pl:"Usuwanie adaptera ..."},"Removing of instance...":{en:"Removing of instance...",de:"Intanz wird entfernt...",ru:"Удаление экземпляра...",pt:"Removendo a instância...",nl:"Verwijdering van instantie...",fr:"Suppression de l'instance...",it:"Rimozione dell'istanza...",es:"Eliminando de instancia...",pl:"Usuwanie instancji ..."},Rename:{en:"Rename",de:"Umbenennen",ru:"Переименовать",pt:"Renomear",nl:"andere naam geven",fr:"Renommer",it:"Rinominare",es:"Rebautizar",pl:"Przemianować"},Repositories:{en:"Repositories",de:"Verwahrungsorte",ru:"Репозитории",pt:"Repositórios",nl:"Repositories",fr:"Dépôts",it:"repository",es:"Repositorios",pl:"Repozytoria"},Reunion:{en:"Reunion",de:"Reunion",ru:"Reunion",pt:"Reunião",nl:"Bijeenkomst",fr:"Réunion",it:"Riunione",es:"Reunión",pl:"Reunion"},Rights:{en:"Access rights",de:"Zugriffsrechte",ru:"Права доступа",pt:"Direitos de acesso",nl:"Toegangsrechten",fr:"Droits d'accès",it:"Diritti di accesso",es:"Derechos de acceso",pl:"Prawa dostępu"},Role:{en:"Role",de:"Rolle",ru:"Роль",pt:"Função",nl:"Rol",fr:"Rôle",it:"Ruolo",es:"Cargo",pl:"Rola"},Romania:{en:"Romania",de:"Rumänien",ru:"Румыния",pt:"Roménia",nl:"Roemenië",fr:"Roumanie",it:"Romania",es:"Rumania",pl:"Rumunia"},Room:{en:"Room",de:"Raum",ru:"Комната",pt:"Quarto",nl:"Ruimte",fr:"Chambre",it:"Camera",es:"Habitación",pl:"Pokój"},"Running: ":{en:"Running: ",de:"Ausgeführt:",ru:"Рабочая: ",pt:"Concluído:",nl:"Bezig:",fr:"Fonctionnement:",it:"In esecuzione:",es:"Concluido:",pl:"Bieganie:"},"Russian Federation":{en:"Russian Federation",de:"Russland",ru:"Россия",pt:"Federação Russa",nl:"Russische Federatie",fr:"Fédération Russe",it:"Federazione Russa",es:"Federación Rusa",pl:"Federacja Rosyjska"},Rwanda:{en:"Rwanda",de:"Ruanda",ru:"Rwanda",pt:"Ruanda",nl:"Rwanda",fr:"Rwanda",it:"Ruanda",es:"Ruanda",pl:"Rwanda"},"Saint Kitts and Nevis":{en:"Saint Kitts and Nevis",de:"Saint Kitts and Nevis",ru:"Сент-Китс и Невис",pt:"São Cristóvão e Nevis",nl:"Saint Kitts en Nevis",fr:"Saint-Christophe-et-Niévès",it:"Saint Kitts e Nevis",es:"San Cristóbal y Nieves",pl:"Saint Kitts i Nevis"},"Saint Lucia":{en:"Saint Lucia",de:"Saint Lucia",ru:"Санкт-Люсия",pt:"Santa Lúcia",nl:"Saint Lucia",fr:"Sainte-Lucie",it:"Santa Lucia",es:"Santa Lucía",pl:"święta Lucia"},"Saint Vincent and the Grenadines":{en:"Saint Vincent and the Grenadines",de:"Saint Vincent and the Grenadines",ru:"Святой Винсент и Гренадины",pt:"São Vicente e Granadinas",nl:"Saint Vincent en de Grenadines",fr:"Saint-Vincent-et-les-Grenadines",it:"Saint Vincent e Grenadine",es:"San Vicente y las Granadinas",pl:"Saint Vincent i Grenadyny"},Samoa:{en:"Samoa",de:"Samoa",ru:"Самоа",pt:"Samoa",nl:"Samoa",fr:"Samoa",it:"Samoa",es:"Samoa",pl:"Samoa"},"San Marino":{en:"San Marino",de:"San Marino",ru:"Сан-Марино",pt:"São Marinho",nl:"San Marino",fr:"Saint Marin",it:"San Marino",es:"San Marino",pl:"San Marino"},"Sao Tome and Principe":{en:"Sao Tome and Principe",de:"Sao Tome and Principe",ru:"Сан-Томе и Принсипи",pt:"São Tomé e Príncipe",nl:"Sao Tomé en Principe",fr:"Sao Tomé et Principe",it:"Sao Tome e Principe",es:"San Tome y Principe",pl:"Sao Tome and Principe"},Sat:{en:"Sat",de:"Sa",ru:"сб",pt:"Sáb",nl:"Sat.",fr:"sam",it:"Sat.",es:"Sáb",pl:"Sob"},"Saudi Arabia":{en:"Saudi Arabia",de:"Saudi Arabien",ru:"Саудовская Аравия",pt:"Arábia Saudita",nl:"Saoedi-Arabië",fr:"Arabie Saoudite",it:"Arabia Saudita",es:"Arabia Saudita",pl:"Arabia Saudyjska"},Save:{en:"Save",de:"Speichern",ru:"Сохранить",pt:"Gravar",nl:"Opslaan",fr:"sauvegarder",it:"Salvare",es:"Grabar",pl:"Zapisać"},"Save Objecttree as JSON File":{en:"Save objects tree as JSON file",de:"Die ausgewählte Objektstruktur als JSON-Datei speichern",ru:"Сохранить объекты, как JSON файл",pt:"Grave a estrutura de objetos selecionados como um arquivo JSON",nl:"Bewaar objekten-boom als JSON-bestand",fr:"Enregistrer l'arborescence d'objets en tant que fichier JSON",it:"Salva albero degli oggetti come file JSON",es:"Grabe la estructura de objetos seleccionados como un archivo JSON",pl:"Zapisz drzewo obiektów jako plik JSON"},"Save Objecttree is not possible":{en:"Saving the objects tree is not possible",de:"Speichern der Objektstruktur ist nicht möglich",ru:"Сохранить объекты НЕВОЗМОЖНО",pt:"A gravação não é possível",nl:"Objectboom opslaan is niet mogelijk",fr:"Enregistrer l'arborescence d'objets n'est pas possible",it:"Salvare l'albero degli oggetti non è possibile",es:"La grabación no es posible",pl:"Zapisanie drzewa obiektów nie jest możliwe"},"Save configuration":{en:"Save configuration",de:"Konfiguration speichern",ru:"Сохранить конфигурацию",pt:"Salvar configuração",nl:"Configuratie opslaan",fr:"Enregistrer la configuration",it:"Salva configurazione",es:"Grabar la configuración",pl:"Zapisz konfigurację"},Script:{en:"Script",de:"Skript",ru:"Скрипт",pt:"Script",nl:"Script",fr:"Scénario",it:"copione",es:"Script",pl:"Scenariusz"},Scripts:{en:"Scripts",de:"Skripte",ru:"Скрипты",pt:"Scripts",nl:"Scripts",fr:"Scripts",it:"Script",es:"Scripts",pl:"Skrypty"},Select:{en:"Select",de:"Auswählen",ru:"Выбрать",pt:"Selecione",nl:"kiezen",fr:"Sélectionner",it:"Selezionare",es:"Seleccione",pl:"Wybierz"},"Select ID":{en:"Select ID",de:"ID Auswählen",ru:"Выбрать ID",pt:"Selecione ID",nl:"Selecteer ID",fr:"Sélectionner un identifiant",it:"Seleziona ID",es:"Seleccione ID",pl:"Wybierz ID"},"Select adapter:":{en:"Select adapter",de:"Adapter auswählen",ru:"Выбрать драйвер",pt:"Selecione o adaptador",nl:"Selecteer adapter",fr:"Sélectionnez l'adaptateur",it:"Seleziona adattatore",es:"Seleccione el adaptador",pl:"Wybierz adapter"},"Select language":{en:"Select language",de:"Sprache",ru:"Язык",pt:"Selecione o idioma",nl:"Selecteer taal",fr:"Choisir la langue",it:"Seleziona la lingua",es:"Seleccione el idioma",pl:"Wybierz język"},"Select options":{en:"Select options",de:"Optionen auswählen",ru:"Выберите",pt:"Selecione as opções",nl:"selecteer opties",fr:"Sélectionnez les options",it:"Selezionare le opzioni",es:"Seleccione las opciones",pl:"Wybierz opcje"},Senegal:{en:"Senegal",de:"Senegal",ru:"Сенегал",pt:"Senegal",nl:"Senegal",fr:"Sénégal",it:"Senegal",es:"Senegal",pl:"Senegal"},"Sent data:":{en:"Sent data",de:"Gesendete Daten",ru:"Отсылаемые данные:",pt:"Dados enviados:",nl:"Verzonden gegevens:",fr:"Données envoyées",it:"Dati inviati:",es:"Datos enviados:",pl:"Wysłane dane:"},Sep:{en:"Sep",de:"Sep",ru:"сен",pt:"set",nl:"sen",fr:"sept.",it:"sen",es:"Sep",pl:"Sep"},September:{en:"September",de:"September",ru:"сентябрь",pt:"setembro",nl:"september",fr:"septembre",it:"settembre",es:"Septiembre",pl:"wrzesień"},Serbia:{en:"Serbia",de:"Serbien",ru:"Сербия",pt:"Sérvia",nl:"Servië",fr:"Serbie",it:"Serbia",es:"Serbia",pl:"Serbia"},Set:{en:"Set",de:"Setzen",ru:"Задать",pt:"Conjunto",nl:"Set",fr:"Accepter",it:"Impostato",es:"Conjunto",pl:"Zestaw"},"Set CRON":{en:"Set",de:"Zeitplan übernehmen",ru:"Применить",pt:"Usar",nl:"instellen",fr:"Accepter l'horaire",it:"Impostato",es:"Acepta el cronograma",pl:"Zestaw"},"Set CRON schedule for restarts":{en:"Set CRON schedule for restarts",de:"Legen Sie den CRON-Zeitplan für Neustarts fest",ru:"Установить расписание CRON для перезапуска",pt:"Definir cronograma do CRON para reiniciar",nl:"Stel CRON-schema in voor herstarts",fr:"Définir la planification CRON pour les redémarrages",it:"Imposta la pianificazione CRON per il riavvio",es:"Establecer el cronograma CRON para reinicios",pl:"Ustaw harmonogram CRON na ponowne uruchomienie"},Settings:{en:"Settings",de:"Einstellungen",ru:"Настройки",pt:"Configurações",nl:"instellingen",fr:"Paramètres",it:"impostazioni",es:"Configuración",pl:"Ustawienia"},"Settings for %s":{en:"Settings for %s",de:"Einstellungen für %s",ru:"Настройки для %s",pt:"Configurações para %s",nl:"Instellingen voor %s",fr:"Paramètres pour %s",it:"Impostazioni per %s",es:"Configuraciones para %s",pl:"Ustawienia dla %s"},Seychelles:{en:"Seychelles",de:"Seychellen",ru:"Сейшельские острова",pt:"Seychelles",nl:"Seychellen",fr:"les Seychelles",it:"Seychelles",es:"Seychelles",pl:"Seszele"},"Show instances only for current host":{en:"Show instances only for current host",de:"Instanzen nur für den aktuellen Host anzeigen",ru:"Показывать экземпляры только для выбранного сервера",pt:"Mostrar instâncias apenas para o host atual",nl:"Toon alleen instanties voor de huidige host",fr:"Afficher les instances uniquement pour l'hôte actuel",it:"Mostra le istanze solo per l'host corrente",es:"Mostrar instancias solo para el host actual",pl:"Pokaż wystąpienia tylko dla bieżącego hosta"},"Show values of instance":{en:"Show values of instance",de:"Zeige Werte aus",ru:"Показать значения из",pt:"Mostrar valores da instância",nl:"Toon waarden van instantie",fr:"Afficher les valeurs de l'instance",it:"Mostra valori di istanza",es:"Mostrar valores de instancia",pl:"Pokaż wartości instancji"},"Show...":{en:"Show...",de:"Zeige...",ru:"Показать...",pt:"Mostre...",nl:"Weergeven...",fr:"Montrer...",it:"Mostrare...",es:"Muestre...",pl:"Pokazać..."},"Sierra Leone":{en:"Sierra Leone",de:"Sierra Leone",ru:"Сьерра-Леоне",pt:"Serra Leoa",nl:"Sierra Leone",fr:"Sierra Leone",it:"Sierra Leone",es:"Sierra Leona",pl:"Sierra Leone"},Singapore:{en:"Singapore",de:"Singapur",ru:"Сингапур",pt:"Cingapura",nl:"Singapore",fr:"Singapour",it:"Singapore",es:"Singapur",pl:"Singapur"},"Size: %s, Free: %s":{en:"Size: %s, Available: %s",de:"Größe: %s, Verfügbar: %s",ru:"Размер: %s, Доступно: %s",pt:"Tamanho: %s, disponível: %s",nl:"Grootte: %s, beschikbaar: %s",fr:"Taille: %s, Disponible: %s",it:"Dimensione: %s, disponibile: %s",es:"Tamaño: %s, disponible: %s",pl:"Rozmiar: %s, Dostępny: %s"},Slovakia:{en:"Slovakia",de:"Slowakei",ru:"Словакия",pt:"Eslováquia",nl:"Slowakije",fr:"Slovaquie",it:"Slovacchia",es:"Eslovaquia",pl:"Słowacja"},Slovenia:{en:"Slovenia",de:"Slowenien",ru:"Словения",pt:"Eslovênia",nl:"Slovenië",fr:"Slovénie",it:"Slovenia",es:"Eslovenia",pl:"Słowenia"},"Solomon Islands":{en:"Solomon Islands",de:"Solomon Islands",ru:"Соломоновы острова",pt:"Ilhas Salomão",nl:"Solomon eilanden",fr:"Les îles Salomon",it:"Isole Salomone",es:"Islas Salomón",pl:"Wyspy Salomona"},Somalia:{en:"Somalia",de:"Somalia",ru:"Сомали",pt:"Somália",nl:"Somalië",fr:"Somalie",it:"Somalia",es:"Somalia",pl:"Somali"},"Some data are not stored. Discard?":{en:"Some data are not stored. Discard?",de:"Einige Daten sind nicht gespeichert. Verwerfen?",ru:"Некоторые данные не сохраняются. Откажитесь?",pt:"Alguns dados não são armazenados. Descartar?",nl:"Sommige gegevens zijn niet opgeslagen. Wijzigingen verwerpen ?",fr:"Certaines données ne sont pas stockées. Abandonner?",it:"Alcuni dati non sono memorizzati. Scartare?",es:"Algunos datos no se graban. ¿Descartar?",pl:"Niektóre dane nie są przechowywane. Odrzucać?"},"Sort alphabetically":{en:"Sort alphabetically by name",de:"Alphabetisch nach Namen sortieren",ru:"Сортировка в алфавитном порядке",pt:"Classifique alfabeticamente pelo nome",nl:"Sorteer alfabetisch op naam",fr:"Trier par ordre alphabétique",it:"Ordina alfabeticamente per nome",es:"Orden alfabetica",pl:"Sortuj alfabetycznie według nazwy"},"South Africa":{en:"South Africa",de:"Südafrika",ru:"Южная Африка",pt:"África do Sul",nl:"Zuid-Afrika",fr:"Afrique du Sud",it:"Sud Africa",es:"Sudáfrica",pl:"Afryka Południowa"},"South Georgia South Sandwich Islands":{en:"South Georgia South Sandwich Islands",de:"South Georgia South Sandwich Islands",ru:"Южная Георгия Южные Сандвичевы острова",pt:"Ilhas Sandwich do Sul da Geórgia",nl:"South Georgia South Sandwich Islands",fr:"Géorgie du Sud Îles Sandwich du Sud",it:"Isole Sandwich South Georgia South",es:"Islas Sandwich del sur de Georgia",pl:"South Georgia South Sandwich Islands"},Spain:{en:"Spain",de:"Spanien",ru:"Испания",pt:"Espanha",nl:"Spanje",fr:"Espagne",it:"Spagna",es:"España",pl:"Hiszpania"},Speed:{en:"Speed",de:"Geschwindigkeit",ru:"скорость",pt:"Rapidez",nl:"Snelheid",fr:"La vitesse",it:"Velocità",es:"Velocidad",pl:"Prędkość"},"Sri Lanka":{en:"Sri Lanka",de:"Sri Lanka",ru:"Шри-Ланка",pt:"Sri Lanka",nl:"Sri Lanka",fr:"Sri Lanka",it:"Sri Lanka",es:"Sri Lanka",pl:"Sri Lanka"},"St. Helena":{en:"St. Helena",de:"St. Helena",ru:"Остров Св. Елены",pt:"Santa Helena",nl:"St. Helena",fr:"Sainte-Hélène",it:"Sant'Elena",es:"Santa Elena",pl:"St. Helena"},"St. Pierre and Miquelon":{en:"St. Pierre and Miquelon",de:"St. Pierre und Miquelon",ru:"Сен-Пьер и Микелон",pt:"São Pedro e Miquelon",nl:"St. Pierre en Miquelon",fr:"Saint-Pierre et Miquelon",it:"St. Pierre e Miquelon",es:"San Pedro y Miquelón",pl:"St. Pierre i Miquelon"},"Started...":{en:"Started...",de:"Gestartet...",ru:"В процессе...",pt:"Começado...",nl:"Begonnen...",fr:"Commencé...",it:"Iniziato...",es:"Comenzado...",pl:"Rozpoczęty..."},State:{en:"Datapoint",de:"Datenpunkt",ru:"Состояние",pt:"Ponto de dados",nl:"Data punt",fr:"Ètat",it:"datapoint",es:"Punto de datos",pl:"Punkt danych"},"State type":{en:"State type",de:"Datenpunkttyp",ru:"State type",pt:"Tipo de ponto de dados",nl:"Datapunt type",fr:"État type",it:"Stato & nbsp; Tipo",es:"Tipo de punto de datos",pl:"Rodzaj państwa"},States:{en:"States",de:"Zustände",ru:"Состояния",pt:"Estados",nl:"Toestanden",fr:"États",it:"stati",es:"Estados",pl:"Stany Zjednoczone"},"States rights":{en:"States rights",de:"Zugriff auf Zustände",ru:"Состояние",pt:"Direitos dos estados",nl:"Toestandsrechten",fr:"Droits des états",it:"Diritti degli Stati",es:"Derechos de los estados",pl:"Prawa państw"},Statistics:{en:"Statistics",de:"Statistik",ru:"Статистика",pt:"Estatisticas",nl:"Statistieken",fr:"Statistiques",it:"statistica",es:"Estadísticas",pl:"Statystyka"},"Statistics:":{en:"Statistics",de:"Statistik",ru:"Статистика:",pt:"Estatisticas:",nl:"Statistieken:",fr:"Statistiques",it:"Statistiche:",es:"Estadísticas:",pl:"Statystyka:"},"Storage of %s":{en:'Storage of %s',de:'Einstellungen von %s',ru:'Настройки для %s',pt:'História de %s',nl:'Opslag van %s',fr:'Stockage de %s',it:'Memoria di %s',es:'Configuraciones de %s',pl:'Przechowywanie %s '},"Storage of %s states":{en:'Storage of %s states',de:'Einstellungen von %s Zuständen',ru:'Настройки для %s состояний',pt:'História dos estados de %s',nl:'Opslag van %s toestanden',fr:'Stockage des états %s',it:'Memorizzazione di stati %s',es:'Configuración de los estados de %s',pl:'Przechowywanie stanów %s '},"Success!":{en:"Success!",de:"Erfolgreich!",ru:"Успешно закончено!",pt:"Sucesso!",nl:"Succes!",fr:"Succès!",it:"Successo!",es:"¡Éxito!",pl:"Powodzenie!"},Sudan:{en:"Sudan",de:"Sudan",ru:"Судан",pt:"Sudão",nl:"Soedan",fr:"Soudan",it:"Sudan",es:"Sudán",pl:"Sudan"},Suggestion:{en:"Recommendation",de:"Empfehlung",ru:"Совет",pt:"Recomendação",nl:"Suggestie",fr:"Recommandation",it:"Raccomandazione",es:"Recomendaciones",pl:"Zalecenie"},Sun:{en:"Sun",de:"So",ru:"вс",pt:"Sol",nl:"zon",fr:"dim",it:"sole",es:"Sol",pl:"Słońce"},Suriname:{en:"Suriname",de:"Surinam",ru:"Суринам",pt:"Suriname",nl:"Suriname",fr:"Suriname",it:"Suriname",es:"Surinam",pl:"Surinam"},"Svalbard and Jan Mayen Islands":{en:"Svalbard and Jan Mayen Islands",de:"Svalbard and Jan Mayen Islands",ru:"Острова Свальбард и Ян-Майен",pt:"Ilhas Svalbard e Jan Mayen",nl:"Spitsbergen en Jan Mayen-eilanden",fr:"Îles Svalbard et Jan Mayen",it:"Isole Svalbard e Jan Mayen",es:"Islas Svalbard y Jan Mayen",pl:"Wyspy Svalbard i Jan Mayen"},Swaziland:{en:"Swaziland",de:"Swaziland",ru:"Свазиленд",pt:"Suazilândia",nl:"Swaziland",fr:"Swaziland",it:"Swaziland",es:"Suazilandia",pl:"Suazi"},Sweden:{en:"Sweden",de:"Sweden",ru:"Швеция",pt:"Suécia",nl:"Zweden",fr:"Suède",it:"Svezia",es:"Suecia",pl:"Szwecja"},Switzerland:{en:"Switzerland",de:"Schweiz",ru:"Швейцария",pt:"Suíça",nl:"Zwitserland",fr:"Suisse",it:"Svizzera",es:"Suiza",pl:"Szwajcaria"},"Syrian Arab Republic":{en:"Syrian Arab Republic",de:"Syrian Arab Republic",ru:"Сирийская Арабская Республика",pt:"República Árabe da Síria",nl:"Syrische Arabische Republiek",fr:"République arabe syrienne",it:"Repubblica Araba Siriana",es:"República Árabe de Siria",pl:"Republika Syryjsko-Arabska"},System:{en:"System",de:"System",ru:"Система",pt:"Sistema",nl:"Systeem",fr:"Système",it:"Sistema",es:"Sistema",pl:"System"},"System language:":{en:"System language",de:"Systemsprache",ru:"Системный язык:",pt:"Idioma do sistema:",nl:"Systeem taal:",fr:"Langue du système",it:"Linguaggio di sistema:",es:"Idioma del sistema:",pl:"Język systemu:"},"System settings":{en:"System settings",de:"Systemeinstellungen",ru:"Системные настройки",pt:"Configurações do sistema",nl:"Systeem instellingen",fr:"Paramètres du système",it:"Impostazioni di sistema",es:"Configuración del sistema",pl:"Ustawienia systemowe"},"System uptime":{en:"System uptime",de:"System uptime",ru:"System uptime",pt:"System uptime",nl:"System uptime",fr:"System uptime",it:"System uptime",es:"System uptime",pl:"System uptime"},Table:{en:"Table",de:"Tabelle",ru:"Таблица",pt:"Tabela",nl:"Tabel",fr:"Table",it:"tavolo",es:"Tabla",pl:"Stół"},Taiwan:{en:"Taiwan",de:"Taiwan",ru:"Тайвань",pt:"Taiwan",nl:"Taiwan",fr:"Taïwan",it:"Taiwan",es:"Taiwan",pl:"Tajwan"},Tajikistan:{en:"Tajikistan",de:"Tadschikistan",ru:"Таджикистан",pt:"Tajiquistão",nl:"Tadzjikistan",fr:"Tadjikistan",it:"Tajikistan",es:"Tayikistán",pl:"Tadżykistan"},Tanzania:{en:"Tanzania",de:"Tansania",ru:"Танзания",pt:"Tanzânia",nl:"Tanzania",fr:"Tanzanie",it:"Tanzania",es:"Tanzania",pl:"Tanzania"},"Temperature units:":{en:"Temperature units",de:"Temperatureinheit",ru:"Единицы измерения температуры:",pt:"Unidades de temperatura:",nl:"Temperatuur eenheden:",fr:"Unités de température",it:"Unità di temperatura:",es:"Unidades de temperatura:",pl:"Jednostki temperatury:"},Thailand:{en:"Thailand",de:"Thailand",ru:"Таиланд",pt:"Tailândia",nl:"Thailand",fr:"Thaïlande",it:"Tailandia",es:"Tailandia",pl:"Tajlandia"},'This version of node.js "%s" on "%s" is deprecated. Please install node.js 6, 8 or newer':{en:'yunkong2 supports the LTS versions 6, 8, 10 or newer of node.js. Please update your version ("%s") on host "%s" to one of the supported versions. We recommend to use Node.js 6.',de:'yunkong2 unterstützt die LTS Versionen 6, 8, 10 oder neuer von Node.js. Bitte aktualisieren Sie die verwendete Node.js Version ("%s") auf dem Rechner "%s" auf eine unterstützte Version. Wir empfehlen die Verwendung von Node.js 6.',ru:'Эта версия node.js "%s" на "%s" устарела. Установите node.js 6, 8, 10 или новее.',pt:'yunkong2 suporta as versões LTS 6, 8 e 10 do Node.js. Atualize sua versão ("%s") no host "%s" para uma das versões suportadas. Recomendamos usar Node.js 6.',nl:'yunkong2 ondersteunt de LTS-versies 6, 8 en 10 van node.js. Update uw versie ("%s") op host "%s" naar een van de ondersteunde versies. We raden aan om node.js 6 te gebruiken.',fr:'yunkong2 supporte les versions LTS 6, 8 et 10 de node.js. Veuillez mettre à jour votre version ("%s") sur l\'hôte "%s" avec une des versions prises en charge. Nous vous recommandons d\'utiliser node.js 6.',it:'yunkong2 supporta le versioni LTS 6, 8 e 10 di node.js. Aggiorna la tua versione ("%s") sull\'host "%s" a una delle versioni supportate. Si consiglia di utilizzare node.js 6.',es:'yunkong2 soporta las versiones LTS 6, 8 y 10 de Node.js. Actualice su versión ("%s") en el host "%s" para una de las versiones soportadas. Recomendamos usar Node.js 6.',pl:'yunkong2 obsługuje wersje LTS 6, 8 i 10 pliku node.js. Zaktualizuj swoją wersję (" %s") na hoście " %s" do jednej z obsługiwanych wersji. Zalecamy korzystanie z Node.js 6.'},Thu:{en:"Thu",de:"Do",ru:"чт",pt:"Thu",nl:"Don",fr:"jeu",it:"Gio",es:"Jue",pl:"Czw"},Time:{en:"Time",de:"Zeit",ru:"Время",pt:"Tempo",nl:"Tijd",fr:"Temps",it:"Tempo",es:"Tiempo",pl:"Czas"},"Time From":{en:"Time From",de:"Zeit von",ru:"Время от",pt:"Tempo de",nl:"Tijd vanaf",fr:"Temps de",it:"Tempo da",es:"Tiempo desde",pl:"Czas od"},"Time To":{en:"Time To",de:"Zeit zum",ru:"Время до",pt:"Hora de",nl:"Tijd om",fr:"Temps de",it:"Tempo di",es:"Hora de",pl:"Czas na"},"Time stamp":{en:"Time stamp",de:"Zeitstempel",ru:"Время",pt:"Timestamp",nl:"Tijdstempel",fr:"Horodatage",it:"Data e ora",es:"Timestamp",pl:"Znak czasu"},Title:{en:"Title",de:"Titel",ru:"Название",pt:"Título",nl:"Titel",fr:"Titre",it:"Titolo",es:"Título",pl:"Tytuł"},To:{en:"To",de:"Bis",ru:"до",pt:"Para",nl:"Naar",fr:"À",it:"A",es:"Para",pl:"Do"},Today:{en:"Today",de:"heute",ru:"сегодня",pt:"hoje",nl:"vandaag",fr:"aujourd'hui",it:"oggi",es:"hoy",pl:"Dzisiaj"},"Toggle expert mode":{en:"Toggle expert mode",de:"Expertenmodus umschalten",ru:"Показать системные объекты",pt:"Mostrar objetos do sistema",nl:"Expertenmodus",fr:"Basculer en mode expert",it:"Attiva / disattiva la modalità esperto",es:"El modo experto",pl:"Przełącz tryb ekspercki"},"Toggle states view":{en:"Toggle the states view",de:"Wechseln Sie in die Statusansicht",ru:"Переключить вид состояний",pt:"Alternar a exibição de estados",nl:"Wissel de statenweergave",fr:"Basculer la vue des états",it:"Attiva / disattiva la visualizzazione degli stati",es:"Alternar la vista de estados",pl:"Przełącz widok stanów"},Togo:{en:"Togo",de:"Togo",ru:"Того",pt:"Togo",nl:"Togo",fr:"Aller",it:"Andare",es:"Togo",pl:"Iść"},Tokelau:{en:"Tokelau",de:"Tokelau",ru:"Токелау",pt:"Tokelau",nl:"Tokelau",fr:"Tokelau",it:"Tokelau",es:"Tokelau",pl:"Tokelau"},Tonga:{en:"Tonga",de:"Tonga",ru:"Тонга",pt:"Tonga",nl:"Tonga",fr:"Tonga",it:"tonga",es:"Tonga",pl:"Tonga"},"Too many events":{en:"Too many events",de:"Zu viele Ereignisse",ru:"Слишком много событий",pt:"Muitos eventos",nl:"Te veel evenementen",fr:"Trop d'événements",it:"Troppi eventi",es:"Muchos eventos",pl:"Za dużo zdarzeń"},"Total count in group":{en:"Total count in group",de:"Insgesamt in der Gruppe",ru:"Всего в группе",pt:"Contagem total no grupo",nl:"Totaal in groep",fr:"Nombre total dans le groupe",it:"Conteggio totale nel gruppo",es:"Cuenta total del grupo",pl:"Łączna liczba w grupie"},"Trigger event":{en:"Trigger event",de:"Simuliere Tastendruck",ru:"Симулировать нажатие",pt:"Simule um evento",nl:"Evenement simuleren",fr:"Événement déclencheur",it:"Evento scatenante",es:"Simule un evento",pl:"Zdarzenie wyzwalające"},"Trinidad and Tobago":{en:"Trinidad and Tobago",de:"Trinidad und Tobago",ru:"Тринидад и Тобаго",pt:"Trinidad e Tobago",nl:"Trinidad en Tobago",fr:"Trinité-et-Tobago",it:"Trinidad e Tobago",es:"Trinidad y Tobago",pl:"Trynidad i Tobago"},Tue:{en:"Tue",de:"Di",ru:"вт",pt:"Tue",nl:"Din",fr:"mar",it:"mar",es:"Mar",pl:"Wt"},Tunisia:{en:"Tunisia",de:"Tunesien",ru:"Тунис",pt:"Tunísia",nl:"Tunesië",fr:"Tunisie",it:"Tunisia",es:"Túnez",pl:"Tunezja"},Turkey:{en:"Turkey",de:"Türkei",ru:"Турция",pt:"Peru",nl:"Turkije",fr:"Turquie",it:"tacchino",es:"Turquía",pl:"indyk"},Turkmenistan:{en:"Turkmenistan",de:"Turkmenistan",ru:"Туркменистан",pt:"Turquemenistão",nl:"Turkmenistan",fr:"Turkménistan",it:"Turkmenistan",es:"Turkmenistán",pl:"Turkmenia"},"Turks and Caicos Islands":{en:"Turks and Caicos Islands",de:"Turks und Caicos Islands",ru:"Острова Теркс и Кайкос",pt:"Ilhas Turcas e Caicos",nl:"Turks- en Caicoseilanden",fr:"îles Turques-et-Caïques",it:"Isole Turks e Caicos",es:"Islas Turcas y Caicos",pl:"Wyspy Turks i Caicos"},Tuvalu:{en:"Tuvalu",de:"Tuvalu",ru:"Тувалу",pt:"Tuvalu",nl:"Tuvalu",fr:"Tuvalu",it:"Tuvalu",es:"Tuvalu",pl:"Tuvalu"},Type:{en:"Type",de:"Typ",ru:"Тип",pt:"Tipo",nl:"Type",fr:"Type",it:"genere",es:"Tipo",pl:"Rodzaj"},"URL or file path:":{en:"URL or file path",de:"URL oder Dateipfad",ru:"URL или путь к файлу",pt:"URL ou caminho do arquivo",nl:"URL of bestandspad",fr:"URL ou chemin du fichier",it:"URL o percorso del file:",es:"URL o ruta de acceso del archivo",pl:"Adres URL lub ścieżka do pliku"},Uganda:{en:"Uganda",de:"Uganda",ru:"Уганда",pt:"Uganda",nl:"Oeganda",fr:"Ouganda",it:"Uganda",es:"Uganda",pl:"Uganda"},Ukraine:{en:"Ukraine",de:"Ukraine",ru:"Украина",pt:"Ucrânia",nl:"Oekraïne",fr:"Ukraine",it:"Ucraina",es:"Ucrania",pl:"Ukraina"},"Uncheck All":{en:"Uncheck All",de:"Alle abwählen",ru:"Убрать все",pt:"Desmarcar todos",nl:"Deselecteer alles",fr:"Tout décocher",it:"Deseleziona tutto",es:"Desmarcar todos",pl:"Odznacz wszystkie"},"United Arab Emirates":{en:"United Arab Emirates",de:"Vereinigte Arabische Emirate",ru:"Объединенные Арабские Эмираты",pt:"Emirados Árabes Unidos",nl:"Verenigde Arabische Emiraten",fr:"Emirats Arabes Unis",it:"Emirati Arabi Uniti",es:"Emiratos Árabes Unidos",pl:"Zjednoczone Emiraty Arabskie"},"United Kingdom":{en:"United Kingdom",de:"United Kingdom",ru:"Великобритания",pt:"Reino Unido",nl:"Verenigd Koningkrijk",fr:"Royaume-Uni",it:"Regno Unito",es:"Reino Unido",pl:"Zjednoczone Królestwo"},"United States":{en:"United States",de:"United States",ru:"Соединенные Штаты",pt:"Estados Unidos",nl:"Verenigde Staten",fr:"États Unis",it:"stati Uniti",es:"Estados Unidos",pl:"Stany Zjednoczone"},"United States minor outlying islands":{en:"United States minor outlying islands",de:"United States Minor Outlying Islands",ru:"Небольшие морские острова Соединенных Штатов",pt:"Ilhas periféricas menores dos Estados Unidos",nl:"Kleine afgelegen eilanden van de Verenigde Staten",fr:"Îles mineures éloignées des États-Unis",it:"Isole minori periferiche degli Stati Uniti",es:"Islas periféricas menores de los Estados Unidos",pl:"Stany Zjednoczone Dalekie Wyspy Mniejsze"},"Unknown file format!":{en:"Unknown file format!",de:"Unbekanntes Dateiformat!",ru:"Неизвестный формат файла",pt:"Formato de arquivo desconhecido!",nl:"Onbekend bestandsformaat!",fr:"Format de fichier inconnu",it:"Formato di file sconosciuto!",es:"¡Formato de archivo desconocido!",pl:"Nieznany format pliku!"},Unsecure_Auth:{en:"The password will be sent via unsecure connection. To protect your passwords enable the secure connection (HTTPS)!",de:"Das Passwort wird über unsichere Verbindung gesendet. Um Ihre Passwörter zu schützen, aktivieren Sie die sichere Verbindung (HTTPS)!",ru:"Пароль будет отправлен через незащищенное соединение. Для защиты ваших паролей активируйте безопасное соединение (HTTPS)!",pt:"A senha será enviada por meio de conexão não segura. Para proteger suas senhas, ative a conexão segura (HTTPS)!",nl:"Het wachtwoord wordt verzonden via onbeveiligde verbinding. Ter beveiliging van uw wachtwoorden schakelt u de beveiligde verbinding (HTTPS) in!",fr:"Le mot de passe sera envoyé via une connexion non sécurisée. Pour protéger vos mots de passe, activez la connexion sécurisée (HTTPS)!",it:"La password verrà inviata tramite connessione non protetta. Per proteggere le tue password abilita la connessione sicura (HTTPS)!",es:"La contraseña se enviará a través de una conexión no segura. Para proteger sus contraseñas, ¡habilite la conexión segura (HTTPS)!",pl:"Hasło zostanie wysłane przez połączenie bez zabezpieczeń. Aby chronić swoje hasła, włącz bezpieczne połączenie (HTTPS)!"},"Unsupported image format":{en:"Unsupported image format",de:"Nicht unterstütztes Bildformat",ru:"Неподдерживаемый формат изображения",pt:"Formato de imagem não suportado",nl:"Niet-ondersteunde afbeeldingsindeling",fr:"Format d'image non pris en charge",it:"Formato immagine non supportato",es:"Formato de imagen no compatible",pl:"Nieobsługiwany format obrazu"},Update:{en:"Update",de:"Aktualisieren",ru:"Обновить",pt:"Atualizar",nl:"Bijwerken",fr:"Mettre à jour",it:"Aggiornare",es:"Actualización",pl:"Aktualizacja"},"Update objects":{en:"Update objects",de:"Objekte aktualisieren",ru:"Обновить объекты",pt:"Atualizar objetos",nl:"Objecten bijwerken",fr:"Actualiser les objets",it:"Aggiorna oggetti",es:"Actualizar objetos",pl:"Zaktualizuj obiekty"},"Update states":{en:"Update states",de:"Zustände aktualisieren",ru:"Обновить состояния",pt:"Atualizar estados",nl:"Toestanden bijwerken",fr:"Actualiser les états",it:"Stati di aggiornamento",es:"Actualizar estados",pl:"Zaktualizuj stany"},Updated:{en:"Updated",de:"Updated",ru:"Обновлено",pt:"Atualizado",nl:"bijgewerkt",fr:"Actualisé",it:"aggiornato",es:"Actualizado",pl:"Zaktualizowano"},"Upgrade all adapters":{en:"Upgrade all adapters",de:"Alle Adapter upgraden",ru:"Обновить все драйвера",pt:"Atualize todos os adaptadores",nl:"Alle adapters bijwerken",fr:"Actualiser tous les adaptateurs",it:"Aggiorna tutti gli adattatori",es:"Actualice todos los adaptadores",pl:"Uaktualnij wszystkie adaptery"},Upload:{en:"File upload",de:"Dateiupload",ru:"Загрузка файлов",pt:"Upload de arquivo",nl:"Bestand upload",fr:"Téléchargement de fichiers",it:"Upload di file",es:"Upload de arquivo",pl:"Udostępnianie pliku"},"Upload admin started":{en:"Upload of configuration is started",de:"Upload von Konfiguraton wurde gestartet",ru:"Загрузка настроек началась",pt:"Carregar o administrador iniciado",nl:"Upload-beheerder gestart",fr:"Chargement de la configuration commencé",it:"Upload admin avviato",es:"Cargar el administrador iniciado",pl:"Załadowanie konfiguracji jest rozpoczęte"},"Upload started...":{en:"Upload started...",de:"Upload gestartet ...",ru:"Загрузка началась ...",pt:"Upload iniciado ...",nl:"Upload gestart ...",fr:"Chargement commencé ...",it:"Caricamento avviato ...",es:"La carga comenzó ...",pl:"Przesłanie skonte ..."},Uptime:{en:"Uptime",de:"Uptime",ru:"Uptime",pt:"Uptime",nl:"Uptime",fr:"Uptime",it:"Uptime",es:"Uptime",pl:"Uptime"},Uruguay:{en:"Uruguay",de:"Uruguay",ru:"Уругвай",pt:"Uruguai",nl:"Uruguay",fr:"Uruguay",it:"Uruguay",es:"Uruguay",pl:"Urugwaj"},"Use Lets Encrypt certificates:":{en:"Use Let's Encrypt certificates",de:"Let's Encrypt Zertifikate benutzen",ru:"Использовать сертификаты Let's Encrypt:",pt:"Use certificados do Let's Encrypt:",nl:"Gebruik Let's Encrypt-certificaten:",fr:"Utiliser les certificats Let's Encrypt",it:"Utilizza i certificati Let's Encrypt:",es:"Utilice los certificados de Let's Encrypt:",pl:"Użyj szyfrowania Let's Encrypt:"},"Use this instance for automatic update:":{en:"Use this instance for automatic update",de:"Diese Instanz für automatische Zertifikat-Updates benutzen:",ru:"Использовать эту инстанцию, для обновления сертификатов:",pt:"Use esta instância para atualizar os certificados:",nl:"Gebruik deze instantie voor automatische update:",fr:"Utiliser cette instance pour la mise à jour automatique",it:"Utilizza questa istanza per l'aggiornamento automatico:",es:"Utilice esta instancia para actualizar los certificados:",pl:"Użyj tej instancji do automatycznej aktualizacji:"},User:{en:"User",de:"Benutzer",ru:"Пользователь",pt:"Usuário",nl:"Gebruiker",fr:"Utilisateur",it:"Utente",es:"Usuario",pl:"Użytkownik"},"User deleted":{en:"User deleted",de:"Benutzer gelöscht",ru:"Пользователь удален",pt:"Usuário deletado",nl:"Gebruiker verwijderd",fr:"Utilisateur supprimé",it:"Utente eliminato",es:"Usuario eliminado",pl:"Użytkownik został usunięty"},"User does not exist":{en:"User does not exist",de:"Benutzer existiert nicht",ru:"Пользователь не существует",pt:"Usuário não existe",nl:"Gebruiker bestaat niet",fr:"L'utilisateur n'existe pas",it:"l'utente non esiste",es:"Usuario no existe",pl:"użytkownik nie istnieje"},"User yet exists":{en:"User already exists",de:"Benutzer bereits vorhanden",ru:"Имя занято",pt:"O usuário ja existe",nl:"Gebruiker bestaat al",fr:"L'utilisateur existe encore",it:"L'utente esiste già",es:"El usuario ya existe",pl:"Użytkownik już istnieje"},Users:{en:"Users",de:"Benutzer",ru:"Пользователи",pt:"Usuários",nl:"Gebruikers",fr:"Utilisateurs",it:"utenti",es:"Usuarios",pl:"Użytkownicy"},Uzbekistan:{en:"Uzbekistan",de:"Usbekistan",ru:"Узбекистан",pt:"Uzbequistão",nl:"Oezbekistan",fr:"Ouzbékistan",it:"Uzbekistan",es:"Uzbekistán",pl:"Uzbekistan"},Value:{en:"Value",de:"Wert",ru:"Значение",pt:"Valor",nl:"Waarde",fr:"Valeur",it:"Valore",es:"Valor",pl:"Wartość"},"Values of %s":{en:"Values of %s",de:"Werte für %s",ru:"Значения %s",pt:"Valores para %s",nl:"Waarden voor %s",fr:"Valeurs pour %s",it:"Valori per %s",es:"Valores para %s",pl:"Wartości %s"},Vanuatu:{en:"Vanuatu",de:"Vanuatu",ru:"Вануату",pt:"Vanuatu",nl:"Vanuatu",fr:"Vanuatu",it:"Vanuatu",es:"Vanuatu",pl:"Vanuatu"},"Vatican City State":{en:"Vatican City State",de:"Vatikanstaat",ru:"Государство Ватикан",pt:"Estado da Cidade do Vaticano",nl:"Vaticaanstad",fr:"État de la Cité du Vatican",it:"Stato della Città del Vaticano",es:"Estado de la Ciudad del Vaticano",pl:"Państwo Watykańskie"},Venezuela:{en:"Venezuela",de:"Venezuela",ru:"Венесуэла",pt:"Venezuela",nl:"Venezuela",fr:"Venezuela",it:"Venezuela",es:"Venezuela",pl:"Wenezuela"},Vietnam:{en:"Vietnam",de:"Vietnam",ru:"Вьетнам",pt:"Vietnã",nl:"Vietnam",fr:"Vietnam",it:"Vietnam",es:"Vietnam",pl:"Wietnam"},"Virgin Islands (British)":{en:"Virgin Islands (British)",de:"Britische Jungferninseln",ru:"Виргинские острова (англ.)",pt:"Ilhas Virgens (britânicas)",nl:"Maagdeneilanden (Brits)",fr:"Îles Vierges britanniques",it:"Isole Vergini (britanniche)",es:"Islas Vírgenes (Británicas)",pl:"Wyspy Dziewicze (brytyjskie)"},"Virgin Islands (U.S.)":{en:"Virgin Islands (U.S.)",de:"Amerikanische Jungferninseln",ru:"Виргинские острова (США)",pt:"Ilhas Virgens (EUA)",nl:"Amerikaanse Maagdeneilanden",fr:"Îles Vierges (États-Unis)",it:"Isole Vergini (U.S.)",es:"Islas Vírgenes (EE.UU.)",pl:"Wyspy Dziewicze (USA)"},"Wallis and Futuna Islands":{en:"Wallis and Futuna Islands",de:"Wallis and Futuna Islands",ru:"Острова Уоллис и Футуна",pt:"Ilhas Wallis e Futuna",nl:"Wallis en Futuna Eilanden",fr:"Wallis et Futuna",it:"Isole Wallis e Futuna",es:"Islas Wallis y Futuna",pl:"Wyspy Wallis i Futuna"},"Warning!":{en:"Warning!",de:"Warnung!",ru:"Предупреждение!",pt:"Atenção!",nl:"Waarschuwing!",fr:"Attention!",it:"Avvertimento!",es:"¡Advertencia!",pl:"Ostrzeżenie!"},Wed:{en:"Wed",de:"Mi",ru:"ср",pt:"Qua",nl:"cf.",fr:"mer",it:"cf.",es:"Wed",pl:"Poślubić"},"Western Sahara":{en:"Western Sahara",de:"Western Sahara",ru:"Западная Сахара",pt:"Saara Ocidental",nl:"Westelijke Sahara",fr:"Sahara occidental",it:"Sahara occidentale",es:"Sahara Occidental",pl:"Sahara Zachodnia"},With:{en:"With",de:"mit",ru:"с",pt:"com",nl:"met",fr:"avec",it:"Con",es:"con",pl:"Z"},Without:{en:"Without",de:"ohne",ru:"без",pt:"sem",nl:"zonder",fr:"sans",it:"Senza",es:"sin",pl:"Bez"},Yemen:{en:"Yemen",de:"Jemen",ru:"Йемен",pt:"Iémen",nl:"Jemen",fr:"Yémen",it:"yemen",es:"Yemen",pl:"Jemen"},"You are going to add new instance: ":{en:"You are going to add new instance: ",de:"Sie werden eine neue Instanz hinzufügen:",ru:"Вы добавите новый экземпляр:",pt:"Você vai adicionar nova instância:",nl:"U gaat een nieuw exemplaar toevoegen:",fr:"Vous allez ajouter une nouvelle instance:",it:"Stai per aggiungere una nuova istanza:",es:"Vas a agregar una nueva instancia:",pl:"Zamierzasz dodać nową instancję:"},"You can check changelog here":{en:'You can check the changelog here',de:'Änderungen können hier angeschaut werden',ru:'Список изменений можно посмотреть здесь',pt:'Você pode verificar o changelog aqui',nl:'U kunt de wijzigingen hier bekijken',fr:'Vous pouvez vérifier le changelog ici',it:'Puoi controllare il log delle modifiche qui ',es:'Usted puede comprobar el changelog aquí',pl:'Możesz sprawdzić dziennik zmian tutaj '},"You can drag&drop the devices, channels and states to enums":{en:"You can drag&drop the devices, channels and states to enums",de:"Sie können Geräte, Kanäle und Zustände per Drag & Drop in Auflistungen ziehen",ru:"Вы можете перетаскивать устройства, каналы и состояния к категориям",pt:"Você pode usar drag & drop para classificar os aparelhos, canais e estados em uma enumeração.",nl:"U kunt de apparaten, kanalen en toestanden naar enums verslepen",fr:"Vous pouvez faire glisser et déposer les périphériques, les canaux et les états vers les énumérations",it:"È possibile trascinare e rilasciare dispositivi, canali e stati in enumerazioni",es:"Usted puede usar drag & drop para clasificar los aparatos, canales y estados en una clasificación",pl:"Możesz przeciągać i upuszczać urządzenia, kanały i stany do wyliczenia"},"You can drag&drop users to groups":{en:"You can drag&drop users to groups",de:"Sie können Benutzer per Drag & Drop in Gruppen verschieben",ru:"Вы можете перетаскивать пользователей в группы",pt:"Você pode usar drag & drop para classificar usuários em grupos",nl:"U kunt gebruikers naar groepen slepen en neerzetten",fr:"Vous pouvez faire glisser et déposer les utilisateurs vers les groupes",it:"È possibile trascinare e rilasciare gli utenti in gruppi",es:"Puede utilizar drag & drop para clasificar usuarios en grupos",pl:"Możesz przeciągać i upuszczać użytkowników do grup"},"You can't see events via cloud":{en:"You can't see events via cloud",de:"Sie können keine Ereignisse über die Cloud sehen",ru:"Вы не можете видеть события через облако",pt:"Você não pode ver eventos via nuvem",nl:"U kunt gebeurtenissen niet via de cloud bekijken",fr:"Vous ne pouvez pas voir les événements via le cloud",it:"Non puoi vedere eventi tramite cloud",es:"No puedes ver eventos a través de la nube",pl:"Nie możesz zobaczyć wydarzeń za pośrednictwem chmury"},"Your home":{en:"Your home",de:"Dein Haus",ru:"Твой дом",pt:"Sua casa",nl:"Uw huis",fr:"Le chez-soi",it:"La tua casa",es:"Su casa",pl:"Twój dom"},Zaire:{en:"Zaire",de:"Zaire",ru:"Заир",pt:"Zaire",nl:"Zaïre",fr:"Zaïre",it:"Zaire",es:"Zaire",pl:"Zair"},Zambia:{en:"Zambia",de:"Sambia",ru:"Замбия",pt:"Zâmbia",nl:"Zambia",fr:"Zambie",it:"Zambia",es:"Zambia",pl:"Zambia"},Zimbabwe:{en:"Zimbabwe",de:"Simbabwe",ru:"Зимбабве",pt:"Zimbábue",nl:"Zimbabwe",fr:"Zimbabwe",it:"Zimbabwe",es:"Zimbabwe",pl:"Zimbabwe"},_All:{en:"All",de:"Alle",ru:"Все",pt:"Todos",nl:"Alle",fr:"Tout",it:"Tutti",es:"Todos",pl:"Wszystko"},"_Toggle expert mode":{en:"Toggle expert mode",de:"Expertenmodus",ru:"Режим эксперта",pt:"Modo de especialista",nl:"Expertenmodus",fr:"Choisir le mode expert",it:"Attiva / disattiva la modalità esperto",es:"Modo de experto",pl:"Przełącz tryb ekspercki"},__different__:{en:"different",de:"unterschiedlich",ru:"разное",pt:"diferente",nl:"verschillend",fr:"différent",it:"diverso",es:"diferente",pl:"różne"},"a-z":{en:"a-z",de:"a-z",ru:"а-я",pt:"a-z",nl:"a-z",fr:"a-z",it:"a-z",es:"a-z",pl:"a-z"},ack:{en:"ack",de:"Bestätigt",ru:"Подтв.",pt:"confirmado",nl:"bevestigt",fr:"confirmé",it:"confermato",es:"confirmado",pl:"ack"},actions:{en:"actions",de:"Aktionen",ru:"действия",pt:"ações",nl:"Acties",fr:"actes",it:"Azioni",es:"acciones",pl:"działania"},active:{en:"active",de:"aktiv",ru:"активно",pt:"ativo",nl:"actief",fr:"actif",it:"attivo",es:"activo",pl:"aktywny"},"adapter with updates":{en:"adapters with updates",de:"Adapter mit Aktualisierungen",ru:"Драйвера с обновлениями",pt:"adaptador com atualizações",nl:"adapters met updates",fr:"adaptateur avec mises à jour",it:"adattatori con aggiornamenti",es:"adaptador con actualizaciones",pl:"adaptery z aktualizacjami"},"adapters count":{en:"adapters count",de:"Adapter zählen",ru:"количество адаптеров",pt:"contagem de adaptadores",nl:"adapters tellen",fr:"nombre d'adaptateurs",it:"gli adattatori contano",es:"conteo de adaptadores",pl:"liczba adapterów"},add:{en:"Add",de:"Hinzufügen",ru:"Добавить",pt:"Adicionar",nl:"Toevoegen",fr:"Ajouter",it:"Inserisci",es:"Añadir",pl:"Dodaj"},"add children":{en:"add children",de:"Tochterobjekt erzeugen",ru:"Добавить под-категории",pt:"inserir em enumeração",nl:"voeg onderliggende toe",fr:"ajouter des descendants",it:"aggiungi bambini",es:"insertar objeto secundario",pl:"dodaj dzieci"},"add instance":{en:"add instance",de:"Instanz hinzufügen",ru:"Установить драйвер",pt:"adicionar instância",nl:"Instantie toevoegen",fr:"ajouter une instance",it:"aggiungi istanza",es:"añadir instancia",pl:"dodaj instancję"},"add repository":{en:"add repository",de:"Verwahrungsort hinzufügen",ru:"Добавить репозиторий",pt:"adicionar repositório",nl:"repository toevoegen",fr:"ajouter un dépôt",it:"aggiungi repository",es:"añadir repositorio",pl:"dodaj repozytorium"},agree:{en:"agree",de:"Einverstanden",ru:"Согласен(на)",pt:"aceito",nl:"Akkoord",fr:"se mettre d'accord",it:"essere d'accordo",es:"aceptado",pl:"Zgodzić się"},alarm_group:{en:"Alarm",de:"Alarm",ru:"Сигнализация",pt:"Alarme",nl:"Alarm",fr:"Alarme",it:"Allarme",es:"Alarma",pl:"Alarm"},alive:{en:"alive",de:"Läuft",ru:"Активен",pt:"funcionando",nl:"actief",fr:"vivant",it:"vivo",es:"funcionando",pl:"żywy"},all:{en:"all",de:"Alle",ru:"все",pt:"todos",nl:"alle",fr:"tout",it:"tutti",es:"todos",pl:"wszystko"},alpha:{en:"alpha",de:"alpha",ru:"alpha",pt:"alfa",nl:"alpha",fr:"alpha",it:"alfa",es:"alfa",pl:"alfa"},array:{en:"array",de:"Feld",ru:"Массив",pt:"campo",nl:"veld",fr:"tableau",it:"schieramento",es:"campo",pl:"szyk"},auto:{en:"auto",de:"Auto",ru:"авто",pt:"auto",nl:"auto",fr:"auto",it:"auto",es:"auto",pl:"automatyczny"},available:{en:"available",de:"Verfügbar",ru:"Доступен",pt:"acessível",nl:"Beschikbaar",fr:"disponible",it:"a disposizione",es:"disponible",pl:"dostępny"},beta:{en:"beta",de:"beta",ru:"beta",pt:"beta",nl:"beta",fr:"bêta",it:"beta",es:"beta",pl:"beta"},boolean:{en:"boolean",de:"Logikwert",ru:"Логическая переменная",pt:"valor lógico",nl:"boolean",fr:"booléen",it:"booleano",es:"booleano",pl:"boolean"},bug:{en:"bugtracker",de:"Bugtracker",ru:"Баг трекер",pt:"bugtracker",nl:"bugtracker",fr:"bugtracker",it:"bugtracker",es:"bugtracker",pl:"bugtracker"},cancel:{en:"Cancel",de:"Abbrechen",ru:"отменить",pt:"Cancelar",nl:"Annuleer",fr:"Annuler",it:"Annulla",es:"Cancelar",pl:"Anuluj"},cert_path_note:{en:"You can use an absolute path to the certificate, like '/opt/certs/cert.pem', or just upload it per drag&drop",de:"Sie können den absoluten Pfad zum Zertifikat verwenden, wie '/opt/certs/cert.pem', oder einfach hochladen",ru:"вы можете использовать абсолютный путь к сертификату, например '/opt/certs/cert.pem', или просто перетащить файл сюда",pt:"Você pode usar o caminho absoluto para o certificado, como '/opt/certs/cert.pem', ou simplesmente fazer um upload de um arquivo",nl:"U kunt een absoluut pad gebruiken voor de certificaten, zoals '/opt/certs/cert.pem', of u kunt het uploaden door het hierheen te slepen",fr:"Vous pouvez utiliser le chemin absolu du certificat, comme '/opt/certs/cert.pem', ou simplement le télécharger par glisser-déposer",it:'Puoi utilizzare un percorso assoluto per il certificato, come "/opt/certs/cert.pem", o semplicemente caricarlo per drag & drop',es:"Puede utilizar la ruta absoluta para el certificado, como '/opt/certs/cert.pem', o simplemente cargar un archivo",pl:'Możesz użyć bezwzględnej ścieżki do certyfikatu, takiej jak "/opt/certs/cert.pem", lub po prostu przesłać ją na przeciągnij i upuść'},certificate:{en:"certificate",de:"Zertifikate",ru:"сертификат",pt:"certificado",nl:"certificaat",fr:"certificat",it:"certificato",es:"certificado",pl:"certyfikat"},"change view mode":{en:"change view mode",de:"Ansicht ändern",ru:"сменить вид просмотра",pt:"alterar o modo de vista",nl:"verander weergavemodus",fr:"changer le mode d'affichage",it:"cambia modalità di visualizzazione",es:"cambiar el modo de vista",pl:"zmień tryb widoku"},channel:{en:"channel",de:"Kanal",ru:"Канал",pt:"canal",nl:"kanaal",fr:"canal",it:"canale",es:"canal",pl:"kanał"},clear:{en:"clear",de:"löschen",ru:"Очистить",pt:"delatar",nl:"verwijderen",fr:"annuler",it:"chiaro",es:"borrar",pl:"jasny"},"climate-control_group":{en:"Climate Control",de:"Klimakontrolle",ru:"Климат-контроль",pt:"Controle climático",nl:"Klimaatcontrole",fr:"Gestion du climat",it:"Controllo climatico",es:"Controle climático",pl:"Kontrola klimatu"},"close on ready":{en:"close on ready",de:"Schließen wenn fertig",ru:"закрыть по окончании",pt:"feche pronto",nl:"dichtbij klaar",fr:"Fermer lorsque terminé",it:"vicino pronto",es:"Cierre cuando esté listo",pl:"gotowe do użycia"},collapse:{en:"collapse",de:"zuklappen",ru:"свернуть",pt:"colapso",nl:"inklappen",fr:"réduire",it:"crollo",es:"colapso",pl:"zawalić się"},"collapse all":{en:"collapse all",de:"Alle zuklappen",ru:"Свернуть все группы",pt:"colapsar todos",nl:"alles inklappen",fr:"tout réduire",it:"collassa tutto",es:"colapsar todos",pl:"zwinąć wszystkie"},comma:{en:"comma",de:"Komma",ru:"запятая",pt:"vírgula",nl:"komma",fr:"virgule",it:"virgola",es:"coma",pl:"przecinek"},"command execution":{en:"Command execution",de:"Kommando-Ausführung",ru:"Выполнение команды",pt:"Execução do comando",nl:"opdrachtuitvoering",fr:"Exécution de commande",it:"Esecuzione del comando",es:"Ejecución de comandos",pl:"Wykonanie polecenia"},common:{en:"common",de:"Allgemein",ru:"Общие параметры",pt:"geral",nl:"Algemeen",fr:"commun",it:"Comune",es:"general",pl:"pospolity"},"common adapters_group":{en:"Common",de:"Allgemein",ru:"Общие",pt:"Geral",nl:"Algemeen",fr:"Général",it:"Comune",es:"General",pl:"Pospolity"},common_color:{en:"color",de:"Farbe",ru:"цвет",pt:"cor",nl:"kleur",fr:"Couleur",it:"colore",es:"color",pl:"kolor"},common_def:{en:"default value",de:"Standardwert",ru:"значение по умолчанию",pt:"valor padrão",nl:"standaardwaarde",fr:"valeur par défaut",it:"valore di default",es:"valor predeterminado",pl:"domyślna wartość"},common_desc:{en:"description",de:"Beschreibung",ru:"описание",pt:"descrição",nl:"Beschrijving",fr:"la description",it:"descrizione",es:"descripción",pl:"opis"},common_icon:{en:"icon",de:"Symbol",ru:"значок",pt:"ícone",nl:"icoon",fr:"icône",it:"icona",es:"ico",pl:"Ikona"},common_max:{en:"max value",de:"maximaler Wert",ru:"максимальное значение",pt:"valor máximo",nl:"maximum waarde",fr:"Valeur maximale",it:"valore massimo",es:"valor máximo",pl:"maksymalna wartość"},common_min:{en:"minimal value",de:"minimaler Wert",ru:"минимальное значение",pt:"valor mínimo",nl:"minimale waarde",fr:"Valeur minimale",it:"valore minimo",es:"valor mínimo",pl:"minimalna wartość"},common_read:{en:"read allowed",de:"Lesen erlaubt",ru:"читать разрешено",pt:"leitura permitida",nl:"lezen toegestaan",fr:"lecture autorisé",it:"leggere permesso",es:"permitido leer",pl:"odczyt dozwolony"},common_role:{en:"role",de:"Rolle",ru:"роль",pt:"função",nl:"rol",fr:"rôle",it:"ruolo",es:"papel",pl:"rola"},common_states:{en:"predefined values",de:"vordefinierte Werte",ru:"предопределенные значения",pt:"valores predefinidos",nl:"voorgedefinieerde waarden",fr:"valeurs prédéfinies",it:"valori predefiniti",es:"estados",pl:"wstępnie zdefiniowane wartości"},common_type:{en:"type",de:"Art",ru:"тип",pt:"tipo",nl:"type",fr:"type",it:"genere",es:"tipo",pl:"rodzaj"},common_unit:{en:"measure unit",de:"Maßeinheit",ru:"единица измерения",pt:"unidade de medida",nl:"meeteenheid",fr:"unité de mesure",it:"unità di misura",es:"Unidad de medida",pl:"jednostka miary"},common_write:{en:"write allowed",de:"Schreiben erlaubt",ru:"писать разрешено",pt:"escrever permitido",nl:"schrijf toegestaan",fr:"écriture autorisé",it:"scrivere permesso",es:"escribir",pl:"pisz wolno"},communication_group:{en:"Communication",de:"Kommunikation",ru:"Сетевые",pt:"Comunicação",nl:"Communicatie",fr:"Communication",it:"Comunicazione",es:"Comunicación",pl:"Komunikacja"},config:{en:"Settings",de:"Konfiguration",ru:"Настроить",pt:"Configuração",nl:"configuratie",fr:"config",it:"impostazioni",es:"Configuración",pl:"Ustawienia"},"config instance":{en:"config instance",de:"Instanz konfigurieren",ru:"Настройка экземпляра",pt:"configurar a instância",nl:"Instantie configureren",fr:"instance de configuration",it:"istanza di configurazione",es:"configurar la instancia",pl:"instancja konfiguracji"},"confirm password":{en:"Confirm password",de:"Bestätigung",ru:"Подтверждение",pt:"Confirme a senha",nl:"wachtwoord bevestigen",fr:"Confirmez le mot de passe",it:"Conferma password",es:"Confirme la contraseña",pl:"Potwierdź hasło"},connected:{en:"connected",de:"Verbunden",ru:"Соединение",pt:"conectado",nl:"verbonden",fr:"connecté",it:"collegato",es:"conectado",pl:"połączony"},copy:{en:"copy",de:"Kopieren",ru:"Копировать",pt:"copiar",nl:"kopiëren",fr:"copie",it:"copia",es:"copiar",pl:"Kopiuj"},"copy note":{en:"Press Ctrl+A and Ctrl+C to copy the log to the clipboard and click with the mouse anywhere to close.",de:"Strg+A gefolgt von Strg+C drücken, um den Inhalt in die Zwischenablage zu kopieren. Irgendwo klicken, um das Fenster zu schliessen.",ru:"Нажмите Ctrl+A и Ctrl+C, что бы скопировать в буфер обмена и после этого нажмите мышкой в любом месте.",pt:"Pressione Ctrl + A e depois Ctrl + C para copiar o conteúdo para a o clipboard. Clique em algum lugar para fechar a janela.",nl:"Druk op Ctrl + A en vervolgens op Ctrl + C om de inhoud naar het klembord te kopiëren. Klik ergens om het venster te sluiten.",fr:"Appuyez sur Ctrl + A puis sur Ctrl + C pour copier le contenu dans le presse-papiers. Cliquez quelque part pour fermer la fenêtre.",it:"Premi Ctrl + A e Ctrl + C per copiare il registro negli appunti e fai clic con il mouse ovunque per chiuderlo.",es:"Presione Ctrl + A y luego Ctrl + C para copiar el contenido al portapapeles. Haga clic en algún lugar para cerrar la ventana.",pl:"Naciśnij Ctrl + A i Ctrl + C, aby skopiować dziennik do schowka i kliknij myszką w dowolnym miejscu, aby zamknąć."},"create operation":{en:"create",de:"erzeugen",ru:"Создавать",pt:"produzir",nl:"maken",fr:"créer",it:"creare",es:"producir",pl:"Stwórz"},"custom enum":{en:"?ustom enum",de:"Benutzerdefiniert",ru:"Своя группа",pt:"Enum personalizado",nl:"Aangepaste enum",fr:"Enum personnalisé",it:"Enum personalizzato",es:"Enum personalizado",pl:"? ustom enum"},"custom group":{en:"Custom group",de:"Benutzerdefinierte Gruppe",ru:"Пользовательская группа",pt:"Grupo personalizado",nl:"Aangepaste groep",fr:"Groupe personnalisé",it:"Gruppo personalizzato",es:"Grupo personalizado",pl:"Grupa niestandardowa"},daemon:{en:"daemon",de:"daemon",ru:"Демон",pt:"daemon",nl:"demon",fr:"service",it:"demone",es:"daemon",pl:"demon"},"date-and-time_group":{en:"Date and Time",de:"Datum und Uhrzeit",ru:"Дата и время",pt:"Data e hora",nl:"Datum en tijd",fr:"Date et heure",it:"Data e ora",es:"Fecha y hora",pl:"Data i godzina"},daysShortText:{en:"d.",de:"T.",ru:"д.",pt:"d.",nl:"d.",fr:"j.",it:"d.",es:"d.",pl:"d."},debug:{en:"debug",de:"Debug",ru:"отладка",pt:"depurar",nl:"debug",fr:"déboguer",it:"mettere a punto",es:"depurar",pl:"odpluskwić"},delete:{en:"delete",de:"Löschen",ru:"Удалить",pt:"deletar",nl:"verwijderen",fr:"effacer",it:"Elimina",es:"borrar",pl:"kasować"},"delete adapter":{en:"delete adapter",de:"Adapter löschen",ru:"Удалить драйвер",pt:"deletar adaptador",nl:"verwijder adapter",fr:"supprimer l'adaptateur",it:"elimina l'adattatore",es:"borrar adaptador",pl:"usuń adapter"},"delete group":{en:"delete group",de:"Gruppe löschen",ru:"Удалить группу",pt:"deletar grupo",nl:"verwijder groep",fr:"supprimer le groupe",it:"cancella il gruppo",es:"borrar grupo",pl:"usuń grupę"},"delete instance":{en:"delete instance",de:"Instanz löschen",ru:"Удалить экземпляр",pt:"deletar instância",nl:"verwijder instantie",fr:"supprimer l'instance",it:"cancella istanza",es:"borrar instancia",pl:"usuń instancję"},"delete operation":{en:"delete",de:"löschen",ru:"Удалять",pt:"deletar operação",nl:"verwijderen",fr:"supprimer l'opération",it:"Elimina",es:"borrar",pl:"kasować"},"delete script":{en:"delete script",de:"Script löschen",ru:"Удалить скрипт",pt:"deletar o script",nl:"verwijder script",fr:"supprimer le script",it:"cancella script",es:"borrar el script",pl:"usuń skrypt"},"delete user":{en:"delete user",de:"Benutzer löschen",ru:"Удалить пользователя",pt:"deletar usuário",nl:"Verwijder gebruiker",fr:"Supprimer l'utilisateur",it:"cancella utente",es:"borrar usuario",pl:"Usuń użytkownika"},desc:{en:"desc",de:"Beschreibung",ru:"Описание",pt:"desc.",nl:"Beschrijving",fr:"description",it:"disc",es:"desc.",pl:"desc"},description:{en:"Description",de:"Beschreibung",ru:"Описание",pt:"Descrição",nl:"Beschrijving",fr:"description",it:"Descrizione",es:"Descripción",pl:"Opis"},device:{en:"device",de:"Gerät",ru:"Устройство",pt:"aparelho",nl:"apparaat",fr:"dispositif",it:"dispositivo",es:"aparato",pl:"urządzenie"},"diag-note":{en:"We worked hard to create this project. In return we expect from you some usage statistics.
    Every time the adapter list is updated, the anonymized statistics are sent. We respect your privacy, so no private information will be transmitted.
    Thank you!",de:"Wir haben hart daran gearbeitet, dieses Projekt auf die Beine zu stellen. Als Gegenleistung bitten wir Sie, uns die Nutzungs-Statistik zu senden.
    Es werden keine privaten Informationen zu yunkong2.org gesendet. Jedes Mal wenn die Adapterliste aktualisiert wird, wird auch die anonymisierte Statistik verschickt.
    Vielen Dank!",ru:"Мы долго работали над этим проектом. Мы просим вас переслать нам статистику использования, как компенсацию.
    Никакой приватной информации не отсылается в yunkong2.net. Каждый раз, когда список драйверов обновляется, будет отсылаться анонимная статистика.
    Большое спасибо!",pt:"Trabalhamos duro para criar este projeto. Em troca, pedimos que nos envie as estatísticas de uso.
    Nenhuma informação privada será enviada para yunkong2.net. Cada vez que a lista do adaptador é atualizada, as estatísticas anônimas também serão enviadas.
    Obrigado!",nl:"We hebben hard gewerkt om dit project mogelijk te maken. Als equivalent verwachten we van u enkele statistieken over het gebruik.
    Er zal geen persoonlijke informatie naar yunkong2.net worden verzonden. Telkens wanneer u op de update-adapterlijst klikt, worden de geanonimiseerde statistieken verzonden.
    Dankjewel!",fr:"Nous avons travaillé dur pour créer ce projet. A charge de revanche, nous attendons de vous des statistiques sur l'utilisation.
    Aucune information privée ne sera envoyée à yunkong2.net. Chaque fois que vous appuyez sur Mettre à jour la liste des adaptateurs, les statistiques anonymisées seront envoyées.
    Merci!",it:"Abbiamo lavorato sodo per creare questo progetto. In cambio ci aspettiamo da voi alcune statistiche di utilizzo.
    Ogni volta che la lista dell'adattatore viene aggiornata, vengono inviate le statistiche anonime. Rispettiamo la tua privacy, quindi non verranno trasmesse informazioni private.
    Grazie!",es:"Trabajamos duro para crear este proyecto. En cambio, pedimos que nos envíe las estadísticas de uso.
    Ninguna información privada será enviada a yunkong2.net. Cada vez que se actualiza la lista del adaptador, también se enviarán las estadísticas anónimas. -
    ¡Gracias!",pl:"Ciężko pracowaliśmy, aby stworzyć ten projekt. W zamian spodziewamy się pewnych statystyk użytkowania.
    Za każdym razem, gdy lista adapterów jest aktualizowana, wysyłane są anonimowe statystyki. Szanujemy twoją prywatność, więc żadne prywatne informacje nie będą przekazywane.
    Dziękuję!"},edit:{en:"edit",de:"Ändern",ru:"Редактировать",pt:"editar",nl:"bewerken",fr:"modifier",it:"modificare",es:"editar",pl:"edytować"},"edit enum":{en:"edit enum",de:"Aufzählung ändern",ru:"Изменить категорию",pt:"editar enumeração",nl:"bewerk enum",fr:"éditer enum",it:"modifica enum",es:"editar la clasificación",pl:"edytuj wyliczenie"},"edit enums":{en:"Edit enumerations for",de:"Aufzählungen für bearbeiten",ru:"Изменить категории для",pt:"Edite enumerações para",nl:"Bewerk opsommingen voor",fr:"Modifier les énumérations pour",it:"Modifica enumerazioni per",es:"Editar enumeraciones para",pl:"Edytuj wyliczenia dla"},"edit file":{en:"edit file",de:"Datei bearbeiten",ru:"Редактировать",pt:"editar arquivo",nl:"bestand bewerken",fr:"modifier le fichier",it:"modifica file",es:"editar archivo",pl:"edytuj plik"},"edit group":{en:"edit group",de:"Gruppe bearbeiten",ru:"Редактировать группу",pt:"editar grupo",nl:"groep bewerken",fr:"modifier le groupe",it:"modifica gruppo",es:"editar grupo",pl:"edytuj grupę"},"edit instance":{en:"edit instance",de:"Instanz bearbeiten",ru:"Редактировать экземпляр",pt:"editar instância",nl:"bewerk instantie",fr:"instance de modification",it:"modifica istanza",es:"editar instancia",pl:"edytuj instancję"},"edit script":{en:"edit script",de:"Script bearbeiten",ru:"Редактировать скрипт",pt:"editar script",nl:"bewerk script",fr:"modifier le script",it:"modifica script",es:"editar script",pl:"edytuj skrypt"},"edit user":{en:"edit user",de:"Benutzer bearbeiten",ru:"Редактировать пользователя",pt:"editar usuário",nl:"bewerk gebruiker",fr:"Modifier l'utilisateur",it:"modifica utente",es:"editar usuario",pl:"Edytuj użytkownika"},"edit value":{en:"Edit value",de:"Wert bearbeiten",ru:"Изменить значение",pt:"Editar valor",nl:"Waarde bewerken",fr:"Modifier la valeur",it:"Modifica valore",es:"Editar valor",pl:"Edytuj wartość"},enabled:{en:"enabled",de:"Aktiviert",ru:"активно",pt:"ativado",nl:"ingeschakeld",fr:"activée",it:"abilitato",es:"activado",pl:"włączony"},energy_group:{en:"Energy",de:"Energie",ru:"Энергия",pt:"Energia",nl:"Energie",fr:"Énergie",it:"Energia",es:"Energía",pl:"Energia"},engine:{en:"engine",de:"Ausführen mit",ru:"Движок",pt:"executar com",nl:"uitvoeren met",fr:"executer avec",it:"motore",es:"ejecutar con",pl:"silnik"},"engine type":{en:"engine type",de:"Enginetyp",ru:"Тип движка",pt:"Tipo de mecanismo",nl:"Enginetyp",fr:"type d'execution",it:"tipo di motore",es:"tipo de mecanismo",pl:"typ silnika"},error:{en:"error",de:"Fehler",ru:"ошибки",pt:"erro",nl:"fout",fr:"Erreur",it:"errore",es:"error",pl:"błąd"},events:{en:"events",de:"Ereignisse",ru:"Сообщения",pt:"eventos",nl:"Gebeurtenissen",fr:"événements",it:"eventi",es:"eventos",pl:"wydarzenia"},"execute operation":{en:"Execute operation",de:"ausführen",ru:"выполнить",pt:"executar",nl:"uitvoeren",fr:"exécuter l'opération",it:"Esegui operazione",es:"ejecutar",pl:"Wykonaj operację"},expand:{en:"expand",de:"aufklappen",ru:"раскрыть",pt:"expandir",nl:"uitvouwen",fr:"développer",it:"espandere",es:"expandir",pl:"rozszerzać"},"expand all":{en:"expand all",de:"Alle aufklappen",ru:"Развернуть все группы",pt:"expandir todos",nl:"alles uitvouwen",fr:"développer tout",it:"Espandi tutto",es:"expandir todo",pl:"rozwiń wszystkie"},extended:{en:"extended",de:"erweitert",ru:"расширенный",pt:"expandido",nl:"uitgebreid",fr:"élargi",it:"esteso",es:"expandido",pl:"rozszerzony"},false:{en:"false",de:"falsch",ru:"нет",pt:"falso",nl:"fout",fr:"faux",it:"falso",es:"falso",pl:"fałszywy"},"file permissions":{en:"File permissions",de:"Datei-Rechte",ru:"Разрешения для файлов",pt:"Permissões de arquivo",nl:"bestandsrechten",fr:"Autorisations de fichier",it:"Permessi di file",es:"Permisos de archivo",pl:"Uprawnienia do plików"},from:{en:"from",de:"Quelle",ru:"От",pt:"a partir de",nl:"van",fr:"de",it:"a partire dal",es:"fuente",pl:"od"},garden_group:{en:"Garden",de:"Garten",ru:"Сад",pt:"Jardim",nl:"Tuin",fr:"Jardin",it:"Giardino",es:"Jardín",pl:"Ogród"},general_group:{en:"General",de:"Allgemein",ru:"Основные приложения",pt:"Geral",nl:"Algemeen",fr:"Général",it:"Generale",es:"General",pl:"Generał"},geoposition_group:{en:"Geo position",de:"Geoposition",ru:"Геопозиционирование",pt:"Posição geográfica",nl:"Geografische positie",fr:"Position géographique",it:"Posizione geografica",es:"Posición geográfica",pl:"Pozycja geograficzna"},groups:{en:"groups",de:"Gruppen",ru:"Группы",pt:"grupos",nl:"groepen",fr:"groupes",it:"gruppi",es:"grupos",pl:"grupy"},hardware_group:{en:"Hardware",de:"Hardware",ru:"Оборудование",pt:"Equipamento",nl:"Hardware",fr:"Matériel",it:"Hardware",es:"Equipamiento",pl:"Sprzęt komputerowy"},history:{en:"history",de:"Historie",ru:"История",pt:"história",nl:"geschiedenis",fr:"histoire",it:"storia",es:"historia",pl:"historia"},"history data":{en:"history data",de:"Historische Daten",ru:"История данных",pt:"dados históricos",nl:"geschiedenis gegevens",fr:"données historiques",it:"dati storici",es:"datos históricos",pl:"dane historyczne"},host:{en:"host",de:"Server",ru:"Сервер",pt:"host",nl:"Server",fr:"hôte",it:"ospite",es:"host",pl:"gospodarz"},household_group:{en:"Household",de:"Haushalt",ru:"Домашнее хозяйство",pt:"Casa",nl:"Huishouden",fr:"Ménage",it:"Domestico",es:"Casa",pl:"Gospodarstwo domowe"},"http operation":{en:"http",de:"http",ru:"http",pt:"http",nl:"http",fr:"http",it:"http",es:"http",pl:"http"},id:{en:"ID",de:"ID",ru:"ID",pt:"ID",nl:"ID",fr:"ID",it:"ID",es:"ID",pl:"ID"},info:{en:"info",de:"Info",ru:"инфо",pt:"informação",nl:"info",fr:"Info",it:"Informazioni",es:"información",pl:"info"},infrastructure_group:{en:"Infrastructure",de:"Infrastruktur",ru:"Инфраструктура",pt:"Infraestrutura",nl:"Infrastructuur",fr:"Infrastructure",it:"Infrastruttura",es:"Infraestructura",pl:"Infrastruktura"},install:{en:"install",de:"Installieren",ru:"Установить",pt:"instalar",nl:"Installatie",fr:"installer",it:"installare",es:"instalar",pl:"zainstalować"},"install specific version":{en:"Install a specific version",de:"Bestimmte Version installieren",ru:"Установить определённую версию",pt:"instale uma versão específica",nl:"installeer specifieke versie",fr:"installer une version spécifique",it:"Installa una versione specifica",es:"Instale una versión específica",pl:"Zainstaluj konkretną wersję"},installed:{en:"installed",de:"Installiert",ru:"Установлен",pt:"instalado",nl:"Geïnstalleerd",fr:"installée",it:"installato",es:"instalado",pl:"zainstalowany"},"installed adapters":{en:"Filter adapters with existing instances",de:"Adapter mit Instanzen",ru:"Только драйвера, у которых есть инстация",pt:"adaptadores instalados",nl:"geïnstalleerde adapters",fr:"adaptateurs installés",it:"Filtro adattatori con istanze esistenti",es:"Filtro adaptadores con instancias existentes",pl:"Filtruj adaptery z istniejącymi instancjami"},instance:{en:"instance",de:"Instanz",ru:"Экземпляр",pt:"instância",nl:"Instantie",fr:"exemple",it:"esempio",es:"instancia",pl:"instancja"},"instance number":{en:"Desired instance number",de:"Gewünschte Instanznummer",ru:"Номер желаемого экземпляра",pt:"Número da instância desejada",nl:"Gewenst exemplarennummer",fr:"Numéro d'instance souhaité",it:"Numero di istanza desiderato",es:"Número de instancia deseado",pl:"Żądany numer instancji"},"yunkong2 Enums":{en:"yunkong2 enums",de:"yunkong2 Aufzählungen",ru:"yunkong2 категории",pt:"Enumerações do yunkong2",nl:"yunkong2 Enums",fr:"yunkong2 Enums",it:"enumerazioni di yunkong2",es:"Clasificaciones de yunkong2",pl:"yunkong2 wylicza"},"yunkong2 States":{en:"yunkong2 states",de:"yunkong2 Zustände",ru:"yunkong2 состояния",pt:"Estados do yunkong2",nl:"yunkong2 Toestanden",fr:"yunkong2 States",it:"afferma yunkong2",es:"Estados del yunkong2",pl:"stany yunkong2"},"yunkong2 adapter instances":{en:"yunkong2 adapter instances",de:"yunkong2 Adapter-Instanzen",ru:"Экземпляр драйвера yunkong2",pt:"Instâncias de adaptador do yunkong2",nl:"yunkong2-adapterinstanties",fr:"Instances d'adaptateur yunkong2",it:"istanze dell'adattatore yunkong2",es:"Instancias de adaptador de yunkong2",pl:"Instancje adaptera yunkong2"},"yunkong2 adapter scripts":{en:"yunkong2 adapter scripts",de:"yunkong2 Adapter Skripte",ru:"yunkong2 adapter скрипты",pt:"Scripts para adaptador do yunkong2",nl:"yunkong2-adapterscripts",fr:"scripts de l'adaptateur yunkong2",it:"Script dell'adattatore yunkong2",es:"Scripts para el adaptador de yunkong2",pl:"Skrypty adaptera yunkong2"},"yunkong2 adapters":{en:"yunkong2 adapters",de:"yunkong2 Adapter",ru:"yunkong2 драйвера",pt:"Adaptadores do yunkong2",nl:"yunkong2-adapters",fr:"Adaptateurs yunkong2",it:"adattatori yunkong2",es:"Adaptadores del yunkong2",pl:"adaptery yunkong2"},"yunkong2 certificates":{en:"yunkong2 certificates",de:"yunkong2 Zertifikate",ru:"yunkong2 сертификат",pt:"Certificados do yunkong2",nl:"yunkong2-certificaten",fr:"Certificats yunkong2",it:"certificati yunkong2",es:"Certificados del yunkong2",pl:"Certyfikaty yunkong2"},"yunkong2 groups":{en:"yunkong2 groups",de:"yunkong2 Gruppen",ru:"Группы yunkong2",pt:"Grupos do yunkong2",nl:"yunkong2-groepen",fr:"Groupes yunkong2",it:"gruppi di yunkong2",es:"Grupos de yunkong2",pl:"Grupy yunkong2"},"yunkong2 hosts":{en:"yunkong2 hosts",de:"yunkong2 Hosts",ru:"Сервера yunkong2",pt:"Hosts do yunkong2",nl:"yunkong2 servers",fr:"Hôtes yunkong2",it:"host yunkong2",es:"Hosts do yunkong2",pl:"Hosty yunkong2"},"yunkong2 repositories":{en:"yunkong2 repositories",de:"yunkong2 Verwahrungsorte",ru:"Репозитории yunkong2",pt:"Repositórios do yunkong2",nl:"yunkong2-bibliotheken",fr:"Dépôts yunkong2",it:"repository yunkong2",es:"Repositorios de yunkong2",pl:"repozytoria yunkong2"},"yunkong2 users":{en:"yunkong2 users",de:"yunkong2 Benutzer",ru:"Пользователи yunkong2",pt:"Usuários do yunkong2",nl:"yunkong2-gebruikers",fr:"Utilisateurs de yunkong2",it:"utenti di yunkong2",es:"Usuarios de yunkong2",pl:"Użytkownicy yunkong2"},"iot-system_group":{en:"IoT systems",de:"IoT Systeme",ru:"IoT системы",pt:"Sistemas IoT",nl:"IoT-systemen",fr:"Les systèmes IoT",it:"Sistemi IoT",es:"Sistemas IoT",pl:"Systemy IoT"},"iot-systems_group":{en:"IoT Systems",de:"IoT Systeme",ru:"Системы IoT",pt:"Sistemas IoT",nl:"IoT-systemen",fr:"Les systèmes IoT",it:"Sistemi IoT",es:"Sistemas IoT",pl:"Systemy IoT"},keywords:{en:"keywords",de:"Schlüsselworte",ru:"keywords",pt:"palavras-chave",nl:"Trefwoorden",fr:"mots clés",it:"parole chiave",es:"palabras clave",pl:"słowa kluczowe"},lc:{en:"Last change",de:"Geändert",ru:"Изменён",pt:"mod.",nl:"gewijzigd",fr:"mod.",it:"cam.",es:"mod.",pl:"lc"},less:{en:"less",de:"Weniger",ru:"Меньше",pt:"menos",nl:"minder",fr:"moins",it:"Di meno",es:"menos",pl:"mniej"},letsnecrypt_help:{en:'This are settings for Let\'s Encrypt account. To get the free certificates for your domain. You can read more here.',de:'Einstellungen für das Let\'s Encrypt Konto. Um ein gratis Zertifikat für Ihre Domain zu erhalten, folgen sie den Anweisungen hier.',ru:'Настройки для Let\'s Encrypt аккаунта. Это позволит получить бесплатные сертификаты для вашего домена. О Let\'s Encrypt можно почитать здесь.',pt:'Configurações para a conta Let\'s Encrypt. Para obter um certificado gratuito para o seu domínio, siga as instruções aqui.',nl:'Instellingen voor het Let\'s Encrypt-account. Als u een gratis certificaat voor uw domein wilt ontvangen, volgt u deze instructie.',fr:'Paramètres du compte Let\'s Encrypt. Pour obtenir un certificat gratuit pour votre domaine, suivez les instructions ici.',it:'Queste sono le impostazioni per l\'account Let\'s Encrypt. Per ottenere i certificati gratuiti per il tuo dominio. Puoi leggere più qui .',es:'Configuraciones para la cuenta Let\'s Encrypt. Para obtener un certificado gratuito para su dominio, siga las instrucciones aquí.',pl:'To są ustawienia dla konta Let\'s Encrypt. Aby uzyskać bezpłatne certyfikaty dla swojej domeny. Możesz przeczytać więcej tutaj .'},letsnecrypt_help_domains:{en:"E.g: 'example.com, www.example.com'",de:"z.B: 'example.com, www.example.com'",ru:"Например: 'example.com, www.example.com'",pt:"por exemplo: 'example.com, www.example.com'",nl:"bijvoorbeeld: 'example.com, www.example.com'",fr:"par exemple: 'example.com, www.example.com'",it:'E.g: "example.com, www.example.com"',es:"por ejemplo: 'example.com, www.example.com'",pl:'Np .: "example.com, www.example.com"'},letsnecrypt_help_email:{en:"Please use your email address. It will be used for your account.",de:"Bitte immer nur eine Email-Adresse benutzen.",ru:"Почтовый адрес используется для создания аккаунта.",pt:"Use sempre apenas um endereço de e-mail.",nl:"Gebruik altijd slechts één e-mailadres.",fr:"Veuillez toujours utiliser une seule adresse e-mail.",it:"Si prega di utilizzare il tuo indirizzo email. Sarà usato per il tuo account.",es:"Utilice siempre sólo una e-mail.",pl:"Użyj swojego adresu e-mail. Będzie on używany na Twoim koncie."},letsnecrypt_help_path:{en:"Directory name where the certificates will be stored. This is always relative to configuration directory",de:"Verzeichnis, in dem die Zertifikate gespeichert werden. Der Pfad ist relativ zum Konfigurationsverzeichnis",ru:"Путь к папке, где будут хранится сертификаты. Относительно папки с настройками",pt:"Diretório onde os certificados são gravados. O caminho é relativo ao diretório de configuração",nl:"Locatie waar de certificaten worden opgeslagen. Pad is relatief ten opzichte van de configuratiemap",fr:"Répertoire où les certificats sont stockés. Le chemin est relatif au répertoire de configuration",it:"Nome della directory in cui verranno archiviati i certificati. Questo è sempre relativo alla directory di configurazione",es:"Directorio donde se escriben los certificados. La ruta de acceso se refiere al directorio de configuración",pl:"Nazwa katalogu, w którym będą przechowywane certyfikaty. Jest to zawsze zależne od katalogu konfiguracji"},license:{en:"license",de:"Lizenz",ru:"Лицензия",pt:"licença",nl:"Licentie",fr:"Licence",it:"licenza",es:"licencia",pl:"licencja"},"license agreement":{en:"license agreement",de:"Lizenzvertrag",ru:"Лицензионное соглашение",pt:"Contrato de licença",nl:"licentieovereenkomst",fr:"Contrat de licence",it:"Contratto di licenza",es:"Contrato de licencia",pl:"umowa licencyjna"},"license not agree":{en:"Do not agree with the license!",de:"Mit der Lizenz nicht einverstanden!",ru:"Не согласен(на) с лицензией",pt:"Não concordo com a licença!",nl:"Niet akkoord met de licentie!",fr:"En désaccord avec la licence!",it:"Non sono d'accordo con la licenza!",es:"¡No estoy de acuerdo con la licencia!",pl:"Nie zgadzam się z licencją!"},license_checkbox:{en:"I agree with the collection of anonymous statistics.
    (This can be disabled in settings)",de:"Ich bin mit der Sammlung von anonymen Statistiken einverstanden.
    (kann auch später in den Einstellungen deaktiviert werden)",ru:"Я соглашаюсь с анонимным сбором статистики.
    (Можно деактивировать через настройки)",pt:"Eu concordo com a coleção de estatísticas anônimas.
    (também pode ser desativado mais tarde nas configurações)",nl:"Ik ben het eens met het verzamelen van anonieme statistieken.
    (kan worden uitgeschakeld in de instellingen)",fr:"Je suis d'accord avec la collecte de statistiques anonymes.
    (peut être désactivé dans les paramètres)",it:"Sono d'accordo con la raccolta di statistiche anonime.
    (Questo può essere disabilitato nelle impostazioni)",es:"Estoy de acuerdo con la colección de estadísticas anónimas.
    (también se puede desactivar más tarde en la configuración)",pl:"Zgadzam się na zbieranie anonimowych statystyk.
    (Można to wyłączyć w ustawieniach)"},lighting_group:{en:"Lighting",de:"Beleuchtung",ru:"Свет",pt:"Iluminação",nl:"Verlichting",fr:"Éclairage",it:"Illuminazione",es:"Iluminación",pl:"Oświetlenie"},link:{en:"link",de:"Link",ru:"Ссылка",pt:"link",nl:"link",fr:"lien",it:"collegamento",es:"link",pl:"połączyć"},list:{en:"list",de:"Liste",ru:"Список",pt:"lista",nl:"lijst",fr:"liste",it:"elenco",es:"lista",pl:"lista"},"list operation":{en:"list elements",de:"auflisten",ru:"Список",pt:"liste os elementos",nl:"geef weer",fr:"afficher liste",it:"elenca gli elementi",es:"lista",pl:"lista elementów"},logic_group:{en:"Logic",de:"Logik",ru:"Логика",pt:"Lógica",nl:"Logica",fr:"Logique",it:"Logica",es:"Lógica",pl:"Logika"},loglevel:{en:"loglevel",de:"Log-Stufe",ru:"Уровень",pt:"Nível do log",nl:"Log niveau",fr:"loglevel",it:"loglevel",es:"Nivel de log",pl:"loglevel"},media_group:{en:"Media",de:"Medien",ru:"Медиа",pt:"Mídia",nl:"Media",fr:"Media",it:"Media",es:"Medios",pl:"Głoska bezdźwięczna"},members:{en:"members",de:"Mitglieder",ru:"Части",pt:"membros",nl:"leden",fr:"membres",it:"membri",es:"miembros",pl:"członków"},memlimit:{en:"RAM limit",de:"RAM-Limit",ru:"Макс. RAM",pt:"Limite de RAM",nl:"Geheugen limiet",fr:"RAM limit",it:"Limite di RAM",es:"Límite de RAM",pl:"Limit pamięci RAM"},message:{en:"message",de:"Nachricht",ru:"Сообщение",pt:"mensagem",nl:"bericht",fr:"message",it:"Messaggio",es:"mensaje",pl:"wiadomość"},messaging_group:{en:"Messaging",de:"Messaging",ru:"Сообщения",pt:"Mensagens",nl:"Messaging",fr:"Messagerie",it:"messaggistica",es:"Mensajes",pl:"Wiadomości"},"misc-data_group":{en:"Misc. data",de:"Sonstige",ru:"Разное",pt:"Dados variados",nl:"Andere",fr:"Autre",it:"Varie. dati",es:"Datos mezclados",pl:"Różne dane"},mixed:{en:"mixed",de:"gemischt",ru:"смешанный",pt:"misturado",nl:"gemengd",fr:"mixte",it:"misto",es:"misturado",pl:"mieszany"},mode:{en:"mode",de:"Modus",ru:"Режим",pt:"modo",nl:"modus",fr:"mode",it:"modalità",es:"modo",pl:"tryb"},more:{en:"more",de:"Mehr",ru:"Больше",pt:"mais",nl:"meer",fr:"plus",it:"Di Più",es:"más",pl:"jeszcze"},multi:{en:"multistate",de:"Werteliste",ru:"Перечисление",pt:"lista de valores",nl:"waardenlijst",fr:"liste de valeurs",it:"Multistate",es:"lista de valores",pl:"multistate"},multimedia_group:{en:"Multimedia",de:"Multimedia",ru:"Мультимедиа",pt:"Multimídia",nl:"Multimedia",fr:"Multimédia",it:"Multimedia",es:"Multimedia",pl:"Multimedia"},name:{en:"name",de:"Name",ru:"Имя",pt:"nome",nl:"Naam",fr:"prénom",it:"nome",es:"nome",pl:"Nazwa"},native:{en:"native",de:"Nativ",ru:"Уникальные параметры",pt:"nativo",nl:"inheems",fr:"originaire de",it:"nativo",es:"nativo",pl:"ojczysty"},network_group:{en:"Network",de:"Netzwerk",ru:"Сеть",pt:"Rede",nl:"Netwerk",fr:"Réseau",it:"Rete",es:"Red",pl:"Sieć"},"new certificate":{en:"new certificate",de:"neues Zertifikat",ru:"новый сертификат",pt:"novo certificado",nl:"nieuw certificaat",fr:"nouveau certificat",it:"nuovo certificato",es:"nuevo certificado",pl:"nowy certyfikat"},"new group":{en:"new group",de:"Neue Gruppe",ru:"Новая группа",pt:"novo grupo",nl:"nieuwe groep",fr:"nouveau groupe",it:"nuovo gruppo",es:"nuevo grupo",pl:"Nowa grupa"},"new script":{en:"new script",de:"Neues Script",ru:"Новый скрипт",pt:"novo script",nl:"nieuw script",fr:"nouveau script",it:"nuovo script",es:"nuevo script",pl:"nowy skrypt"},"new user":{en:"new user",de:"Neuer Benutzer",ru:"Новый пользователь",pt:"novo usuário",nl:"nieuwe gebruiker",fr:"nouvel utilisateur",it:"nuovo utente",es:"nuevo usuario",pl:"nowy użytkownik"},newObject:{en:"New object",de:"Neues Objekt",ru:"Новый объект",pt:"Novo objeto",nl:"Nieuw objekt",fr:"Nouvel objet",it:"Nuovo oggetto",es:"Nuevo objeto",pl:"Nowy obiekt"},"no-city":{en:"no city",de:"ohne Stadt",ru:"без города",pt:"sem cidade",nl:"zonder stad",fr:"sans ville",it:"nessuna città",es:"sin ciudad",pl:"nie ma miasta"},"node-red":{en:"node-red",de:"node-red",ru:"node-red",pt:"node-red",nl:"node-red",fr:"node-red",it:"node-rosso",es:"node-red",pl:"węzeł-czerwony"},none:{en:"none",de:"nichts",ru:"ничего",pt:"nada",nl:"geen",fr:"aucun",it:"nessuna",es:"ninguno",pl:"Żaden"},normal:{en:"normal",de:"normal",ru:"обычный",pt:"normal",nl:"normaal",fr:"Ordinaire",it:"normale",es:"normal",pl:"normalna"},"not ack":{en:"not ack",de:"Nicht best.",ru:"Не подтв.",pt:"não conf.",nl:"niet bev.",fr:"pas confirmé",it:"non dire",es:"no conf.",pl:"nie potwierdzenia"},"not agree":{en:"not agree",de:"Nicht einverstanden",ru:"Не согласен(на)",pt:"não concordo",nl:"Niet akkoord",fr:"pas d'accord",it:"non sono d'accordo",es:"No estoy de acuerdo",pl:"nie zgadzam się"},"npm error":{en:"npm error",de:"Fehler",ru:"ошибка",pt:"erro no NPM",nl:"npm fout",fr:"erreur npm",it:"errore di npm",es:"error en NPM",pl:"błąd npm"},number:{en:"number",de:"Zahl",ru:"Число",pt:"número",nl:"getal",fr:"nombre",it:"numero",es:"numero",pl:"numer"},object:{en:"object",de:"Objekt",ru:"Объект",pt:"objeto",nl:"Objekt",fr:"objet",it:"oggetto",es:"oggetto",pl:"obiekt"},"object permissions":{en:"Object permissions",de:"Objekt-Rechte",ru:"Разрешения для объектов",pt:"permissões de objeto",nl:"objektrechten",fr:"autorisations d'objet",it:"Permessi sugli oggetti",es:"Permessi sugli oggetti",pl:"Uprawnienia obiektu"},of:{en:"of",de:"von",ru:"из",pt:"do",nl:"van",fr:"de",it:"di",es:"de",pl:"z"},ok:{en:"Ok",de:"Ok",ru:"Ok",pt:"Ok",nl:"OK",fr:"D'accord",it:"Ok",es:"Ok",pl:"Ok"},"open web page":{en:"Open web page of adapter",de:"Adapter-Webseite öffnen",ru:"Открыть приложение",pt:"Abrir a website do adaptador",nl:"Adapter pagina openen",fr:"Accéder à la page Web de l'adaptateur",it:"Apri la pagina web dell'adattatore",es:"Abrir un sitio web do adaptador",pl:"Otwórz stronę adaptera"},os:{en:"operating system",de:"Betriebssystem",ru:"Oперационная система",pt:"sistema operacional",nl:"Bestuuringssysteem",fr:"système d'exploitation",it:"sistema operativo",es:"Sistema operativo",pl:"system operacyjny"},"other permissions":{en:"Other permissions",de:"Andere Rechte",ru:"Разрешения",pt:"outras permissões",nl:"andere rechten",fr:"autres autorisations",it:"Altre autorizzazioni",es:"Otros permisos",pl:"Inne uprawnienia"},"parent name":{en:"parent name",de:"Eltern Name",ru:"Имя родителя",pt:"nome dos pais",nl:"bovenliggende naam",fr:"nom du parent",it:"nome del genitore",es:"nombre de los padres",pl:"imię rodzica"},password:{en:"Password",de:"Passwort",ru:"Пароль",pt:"senha",nl:"wachtwoord",fr:"mot de passe",it:"Parola d'ordine",es:"contraseña",pl:"Hasło"},permissionError:{en:"Permission error",de:"Zugriffsfehler",ru:"Ошибка доступа",pt:"Erro de permissão",nl:"Toegangssfout",fr:"Erreur d'autorisation",it:"Errore di autorizzazione",es:"Error de permiso",pl:"Błąd uprawnień"},"place here":{en:"place the files here",de:"Platziere die Dateien hier",ru:"разместите файлы здесь",pt:"coloque os arquivos aqui",nl:"plaats de bestanden hier",fr:"Placez les fichiers ici",it:"posiziona i file qui",es:"coloca los archivos aquí",pl:"umieść pliki tutaj"},planned:{en:"planned",de:"geplant",ru:"в планах",pt:"planejado",nl:"gepland",fr:"prévu",it:"pianificato",es:"planificado",pl:"zaplanowany"},platform:{en:"platform",de:"Plattform",ru:"Платформа",pt:"plataforma",nl:"Platform",fr:"Plate-forme",it:"piattaforma",es:"plataforma",pl:"Platforma"},point:{en:"point",de:"Punkt",ru:"точка",pt:"ponto",nl:"punt",fr:"point",it:"punto",es:"punto",pl:"punkt"},popular:{en:"popular",de:"Beliebheit",ru:"по популярности",pt:"popular",nl:"populair",fr:"populaire",it:"popolare",es:"popular",pl:"popularny"},process:{en:"process",de:"Prozess",ru:"Процесс",pt:"processo",nl:"Proces",fr:"processus",it:"processi",es:"proceso",pl:"proces"},protocols_group:{en:"Protocols",de:"Protokolle",ru:"Протоколы",pt:"Protocolos",nl:"Protocollen",fr:"Protocoles",it:"Protocolli",es:"Protocolos",pl:"Protokoły"},raw:{en:"Raw (experts only)",de:"Raw (nur Experten)",ru:"Raw (Эксперт)",pt:"Raw (apenas especialistas)",nl:"Ruwe data (alleen Experten)",fr:"Raw (experts seulement)",it:"Raw (solo per esperti)",es:"Raw (sólo expertos)",pl:"Surowy (tylko eksperci)"},read:{en:"read",de:"lesen",ru:"читать",pt:"ler",nl:"lezen",fr:"lire",it:"leggere",es:"leer",pl:"czytać"},"read operation":{en:"read",de:"lesen",ru:"Читать",pt:"ler",nl:"lezen",fr:"lecture",it:"leggere",es:"leer",pl:"czytać"},readme:{en:"readme",de:"Lies mich",ru:"Описание драйвера",pt:"leia-me",nl:"Leesmij",fr:"readme",it:"readme",es:"leerme",pl:"przeczytaj"},reload:{en:"reload",de:"Neu laden",ru:"Перезагрузить",pt:"recarregar",nl:"herladen",fr:"recharger",it:"ricaricare",es:"recargar",pl:"przeładować"},"reload instance":{en:"reload instance",de:"Instanz neu starten",ru:"Перезагрузить экземпляр",pt:"reiniciar a instância",nl:"herlaad instantie",fr:"reload instance",it:"ricarica istanza",es:"reiniciar la instancia",pl:"przeładuj instancję"},rest:{en:"rest (read only)",de:"Weitere (nur lesend)",ru:"Остальные параметры (только для чтения)",pt:"além disso (apenas leitura)",nl:"overige (alleen lezen)",fr:"autres (lecture seulement)",it:"riposo (sola lettura)",es:"además (sólo lectura)",pl:"reszta (tylko do odczytu)"},restart:{en:"auto restart",de:"Neu starten",ru:"Перезапустить",pt:"reiniciar",nl:"herstarten",fr:"redémarrer",it:"riavvio automatico",es:"reiniciar",pl:"auto restart"},"restart script":{en:"restart script",de:"Skript neu starten",ru:"Перезапустить скрипт",pt:"reiniciar o script",nl:"herstart script",fr:"redémarrer le script",it:"riavviare lo script",es:"reiniciar el script",pl:"zrestartuj skrypt"},role:{en:"role",de:"Rolle",ru:"Функция",pt:"função (tipo)",nl:"rol",fr:"rôle",it:"ruolo",es:"función (tipo)",pl:"rola"},save:{en:"save",de:"Speichern",ru:"Сохранить",pt:"gravar",nl:"opslaan",fr:"enregistrer",it:"salvare",es:"guardar",pl:"zapisać"},schedule_group:{en:"Schedule",de:"Zeitplanung",ru:"Расписание",pt:"Programação de tempo",nl:"Tijdplanning",fr:"Planification",it:"Programma",es:"Programación de tiempo",pl:"Harmonogram"},script_group:{en:"Scripts and Logic",de:"Skripte und Logik",ru:"Скрипты и логика",pt:"Scripts e lógica",nl:"Scripts en logica",fr:"Scripts et logique",it:"Script e logica",es:"Scripts y lógica",pl:"Skrypty i logika"},"select member by double click":{en:"select member by double clicking",de:"Mitglied durch Doppelklick auswählen",ru:"Выберите участника двойным щелчком",pt:"selecione o membro clicando duas vezes",nl:"selecteer lid door dubbelklikken",fr:"sélectionner un membre en double-cliquant",it:"seleziona membro facendo doppio clic",es:"seleccione el miembro haciendo doble clic",pl:"wybierz członka, klikając dwukrotnie"},"sendto operation":{en:"Send-to operation",de:"Senden an",ru:"Послать к",pt:"Operação enviar para",nl:"Versturen aan",fr:"opération sendto",it:"Operazione di invio",es:"Operación enviar a",pl:"Wyślij do operacji"},service_group:{en:"Maintenance",de:"Instandhaltung",ru:"Сервисные приложения",pt:"Manutenção",nl:"Onderhoud",fr:"Entretien",it:"Manutenzione",es:"Mantenimiento",pl:"Konserwacja"},severity:{en:"severity",de:"Schweregrad",ru:"важность",pt:"severidade",nl:"Moeilijkheidsgraad",fr:"gravité",it:"gravità",es:"severidad",pl:"surowość"},silly:{en:"silly",de:"Alles",ru:"всё",pt:"tudo",nl:"silly",fr:"silly",it:"sciocco",es:"todo",pl:"głupi"},stable:{en:"stable",de:"stabil",ru:"стабильно",pt:"estável",nl:"stabiel",fr:"stable",it:"stabile",es:"estable",pl:"stabilny"},state:{en:"state",de:"Datenpunkt/Zustand",ru:"Состояние",pt:"estado",nl:"Datapunt/Waarde",fr:"Etat",it:"stato",es:"estado",pl:"stan"},"state permissions":{en:"State permissions",de:"Zustands-Rechte",ru:"Разрешения для состояний",pt:"permissões do estado",nl:"rechten voor waardes",fr:"autorisations d'état",it:"Permessi di stato",es:"Derechos de los estados",pl:"Uprawnienia państwowe"},storage_group:{en:"Storage",de:"Aufbewahrung",ru:"Хранилище",pt:"Armazenamento",nl:"Opslag",fr:"Espace de rangement",it:"Conservazione",es:"Almacenamiento",pl:"Przechowywanie"},string:{en:"string",de:"Zeichenkette",ru:"Строка",pt:"string",nl:"Tekenreeks",fr:"chaîne",it:"stringa",es:"cadena de caracteres",pl:"strunowy"},subscribe:{en:"subscribe",de:"abonnieren",ru:"Подписка",pt:"se inscrever",nl:"abonneren",fr:"souscrire",it:"sottoscrivi",es:"inscribirse",pl:"subskrybować"},switch:{en:"switch",de:"Schalter",ru:"Переключатель",pt:"interruptor",nl:"schakelaar",fr:"commutateur",it:"interruttore",es:"interruptor",pl:"przełącznik"},terminal:{en:"Terminal",de:"Terminal",ru:"Терминал",pt:"Terminal",nl:"Terminal",fr:"Terminal",it:"Terminale",es:"Terminal",pl:"Terminal"},"third-party_group":{en:"Third party",de:"Andere",ru:"Другие",pt:"Outros",nl:"Anders",fr:"Autre",it:"Terzo",es:"Outros",pl:"Strona trzecia"},"this adapter does not allow multiple instances":{en:"This adapter does not allow multiple instances",de:"Dieser Adapter lässt mehrere Instanzen nicht zu",ru:"этот адаптер не разрешает несколько экземпляров",pt:"Este adaptador não permite várias instâncias",nl:"Deze adapter staat meerdere instanties niet toe",fr:"Cet adaptateur ne permet pas plusieurs instances",it:"Questo adattatore non consente più istanze",es:"Este adaptador no permite varias instancias",pl:"Ten adapter nie zezwala na wiele instancji"},title:{en:"title",de:"Titel",ru:"Название",pt:"título",nl:"Titel",fr:"titre",it:"titolo",es:"título",pl:"tytuł"},today:{en:"today",de:"heute",ru:"cегодня",pt:"hoje",nl:"vandaag",fr:"aujourd'hui",it:"oggi",es:"hoy",pl:"dzisiaj"},true:{en:"true",de:"wahr",ru:"да",pt:"verdade",nl:"waar",fr:"vrai",it:"vero",es:"verdade",pl:"prawdziwe"},ts:{en:"Timestamp",de:"Zeit",ru:"Время",pt:"timestamp",nl:"Tijd",fr:"ts",it:"timestamp",es:"marca de tiempo",pl:"Znak czasu"},type:{en:"type",de:"Typ",ru:"Тип",pt:"tipo",nl:"Type",fr:"type",it:"genere",es:"tipo",pl:"rodzaj"},unit:{en:"unit",de:"Einheit",ru:"Единицы измерения",pt:"unidade",nl:"eenheid",fr:"unité",it:"unità",es:"unidad",pl:"jednostka"},update:{en:"update",de:"Aktualisieren",ru:"Обновить",pt:"atualizar",nl:"bijwerken",fr:"mettre à jour",it:"aggiornare",es:"actualizar",pl:"aktualizacja"},"update adapter information":{en:"update adapter information",de:"Adapterinformationen aktualisieren",ru:"Обновить информацию драйвера",pt:"atualizar informações do adaptador",nl:"adapter informatie bijwerken",fr:"mettre à jour les informations d'adaptateur",it:"aggiorna le informazioni dell'adattatore",es:"actualizar la información del adaptador",pl:"aktualizuj informacje o adapterze"},"update-part1":{en:"Because yunkong2 runs on many very different platforms, only manual updating is possible at the moment. To start the manual update, please go to your controller via console and execute the following:",de:"Aufgrund der Vielzahl an Hardware und Plattformen, auf denen yunkong2 läuft, muss der js-controller manuell aktualisiert werden. Dazu auf der Konsole des Hosts folgende Kommandos ausführen:",ru:"Из-за очень разного оборудования на котором может бежать yunkong2 возможно только ручное обновлени. Для ручного обновления нужно открыть командную консоль и ввести следующее:",pt:"Devido ao grande número de plataformas de hardware que o yunkong2 pode ser executado, você precisa atualizar o js-controller manualmente. Para fazer isso, execute os seguintes comandos no console do host:",nl:"Vanwege het veelvoud aan Platformen waarop yunkong2 beschikbaar is kan een systeemupdate alleen handmatig uitgevoerd worden. Ga voor handmatige update naar je systeem via de console en voer het volgende uit:",fr:"En raison des plates-formes très différentes, où yunkong2 peut fonctionner, uniquement la mise à jour manuelle est possible. Pour exécuter la mise à jour manuelle, veuillez exécuter les instructions suivantes via la console de l'hôte:",it:"Poiché yunkong2 funziona su molte piattaforme molto diverse, al momento è possibile solo l'aggiornamento manuale. Per avviare l'aggiornamento manuale, andare al controller tramite console ed eseguire quanto segue:",es:"Debido al gran número de plataformas de hardware que el yunkong2 se puede ejecutar, es necesario actualizar el JS-Controller manualmente. Para ello, ejecute los siguientes comandos en la consola de host:",pl:"Ponieważ yunkong2 działa na wielu bardzo różnych platformach, w tej chwili możliwe jest tylko ręczne aktualizowanie. Aby rozpocząć aktualizację ręczną, przejdź do kontrolera za pomocą konsoli i wykonaj następujące czynności:"},updated:{en:"updated",de:"aktualisiert",ru:"по времени",pt:"Atualizada",nl:"bijgewerkt",fr:"actualisé",it:"aggiornato",es:"actualizado",pl:"zaktualizowany"},updates:{en:"updates",de:"Aktualisierung",ru:"обновления",pt:"atualizações",nl:"updates",fr:"mises à jour",it:"aggiornamenti",es:"actualizaciones",pl:"aktualizacje"},upload:{en:"Upload",de:"Upload",ru:"Обновить файлы в базе данных",pt:"Upload",nl:"uploaden",fr:"télécharger",it:"Caricare",es:"Cargar",pl:"Przekazać plik"},"user permissions":{en:"user permissions",de:"Zugriffsrechte",ru:"права доступа",pt:"permissões de usuários",nl:"gebruikersrechten",fr:"autorisations des utilisateurs",it:"permessi dell'utente",es:"permisos de usuario",pl:"uprawnienia użytkownika"},users:{en:"users",de:"Benutzer",ru:"Пользователи",pt:"usuários",nl:"gebruikers",fr:"utilisateurs",it:"utenti",es:"usuarios",pl:"użytkowników"},"users permissions":{en:"User permissions",de:"Gruppen-Rechte",ru:"Разрешения для групп",pt:"permissões do usuário",nl:"gebruikersrechten",fr:"autorisations d'utilisateur",it:"Permessi utente",es:"permisos del usuario",pl:"Uprawnienia użytkowników"},utility_group:{en:"Utility",de:"Dienstprogramm",ru:"Утилита",pt:"Utilidade",nl:"Utility",fr:"Utilitaire",it:"Utilità",es:"Utilidad",pl:"Użyteczność"},val:{en:"val",de:"Wert",ru:"Значение",pt:"val",nl:"waarde",fr:"val",it:"val",es:"val",pl:"val"},value:{en:"value",de:"Wert",ru:"значение",pt:"valor",nl:"waarde",fr:"valeur",it:"valore",es:"valor",pl:"wartość"},"value.from":{en:"Changed from",de:"Geändert von",ru:"Изменено из",pt:"Mudou de",nl:"Gewijzigd van",fr:"Changé de",it:"Modificato da",es:"Cambiaron desde",pl:"Zmieniony z"},"value.lc":{en:"Last change",de:"Letzte Änderung",ru:"Последние изменения",pt:"Última mudança",nl:"Laatste wijziging",fr:"Dernier changement",it:"Ultima modifica",es:"Ultimo cambio",pl:"Ostatnia zmiana"},"value.q":{en:"Quality code",de:"Qualitätscode",ru:"Код качества",pt:"Código de qualidade",nl:"Kwaliteitscode",fr:"Code de qualité",it:"Codice di qualità",es:"Código de calidad",pl:"Kod jakości"},"value.ts":{en:"Timestamp",de:"Zeitstempel",ru:"Время обновления",pt:"Timestamp",nl:"tijdstempel",fr:"Horodatage",it:"timestamp",es:"Marca de tiempo",pl:"Znak czasu"},"value.val":{en:"value",de:"Wert",ru:"значение",pt:"valor",nl:"waarde",fr:"valeur",it:"valore",es:"valor",pl:"wartość"},version:{en:"version",de:"Version",ru:"Версия",pt:"versão",nl:"versie",fr:"version",it:"versione",es:"versión",pl:"wersja"},vis_group:{en:"yunkong2.vis",de:"yunkong2.vis",ru:"yunkong2.vis",pt:"yunkong2.vis",nl:"yunkong2.vis",fr:"yunkong2.vis",it:"yunkong2.vis",es:"yunkong2.vis",pl:"yunkong2.vis"},visualisation_group:{en:"Visualisation",de:"Visualisierung",ru:"Визуализация",pt:"Visualização",nl:"Visualisatie",fr:"Visualisation",it:"visualizzazione",es:"Visualización",pl:"Wyobrażanie sobie"},"visualization-icons_group":{en:"Visualization Icons",de:"Visualisierungs-Icons",ru:"Иконки визуализации",pt:"Ícones de visualização",nl:"Visualisatie pictogrammen",fr:"Icônes de visualisation",it:"Icone di visualizzazione",es:"Iconos de visualización",pl:"Ikony wizualizacji"},"visualization-widgets_group":{en:"Visualization Widgets",de:"Visualisierung Widgets",ru:"Визуальные виджеты",pt:"Widgets de visualização",nl:"Visualisatie Widgets",fr:"Widgets de visualisation",it:"Widget di visualizzazione",es:"Widgets de visualización",pl:"Widżetowe widżety"},visualization_group:{en:"Visualisation",de:"Visualisierung",ru:"Визуализация",pt:"Visualização",nl:"Visualisatie",fr:"Visualisation",it:"visualizzazione",es:"Visualización",pl:"Wyobrażanie sobie"},warn:{en:"warn",de:"Warnung",ru:"предупреждения",pt:"aviso",nl:"waarschuwing",fr:"prévenir",it:"avvisare",es:"aviso",pl:"ostrzec"},weather_group:{en:"Weather",de:"Wetter",ru:"Погода",pt:"Tempo",nl:"Weer",fr:"Météo",it:"Tempo metereologico",es:"Tiempo",pl:"Pogoda"},wetty:{en:"Wetty",de:"Wetty",ru:"Wetty",pt:"Wetty",nl:"Wetty",fr:"Wetty",it:"Wetty",es:"Wetty",pl:"Wetty"},write:{en:"write",de:"schreiben",ru:"писать",pt:"escrever",nl:"schrijven",fr:"écriture",it:"Scrivi",es:"escribir",pl:"pisać"},"write operation":{en:"write",de:"schreiben",ru:"Писать",pt:"escrever",nl:"schrijven",fr:"écrire",it:"Scrivi",es:"escribir",pl:"pisać"},yesterday:{en:"yesterday",de:"gestern",ru:"вчера",pt:"ontem",nl:"gisteren",fr:"hier",it:"ieri",es:"ayer",pl:"wczoraj"}}; +"use strict";Array.prototype.remove=function(){for(var e,t,n=arguments,i=n.length;i&&this.length;)for(e=n[--i];-1!==(t=this.indexOf(e));)this.splice(t,1);return this},console.debug||(console.debug=console.log),"undefined"==typeof Number&&(console.log("define Number"),Number=function(e){return parseFloat(e)}),Object.assign||(Object.assign=$.extend);var $iframeDialog=null,configNotSaved=null,showConfig=null,defaults={},customPostInits={},FORBIDDEN_CHARS=/[\]\[*,;'"`<>\\\s?]/g,adapterRedirect=function(e,t){e&&setTimeout(function(){e+=document.location.pathname,e+=document.location.hash,document.location.href=e},t||5e3)},gMain=null;function detectIE(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(0td"),a=H.data[n.key];function s(e){return'
    '+e+"
    "}if(a){i.eq(0).css({overflow:"hidden","white-space":"nowrap"});var o=a.desc.indexOf("div>div").css("height: 22px !important"),u(2,a.keywords).attr("title",a.keywords),i.eq(3).html(a.installed),i.eq(4).html(a.version),u(5,a.license),u(6,a.install),H.initButtons(n.key),H.isCollapsed[a.group]&&(H.isCollapsed[a.group]=!1,H.main.saveConfig("adaptersIsCollapsed",JSON.stringify(H.isCollapsed)))}else{i.eq(0).css({"font-weight":"bold"}),i.eq(0).find("img").remove(),i.eq(0).find("span.fancytree-title").attr("style","padding-left: 0px !important");for(var c=0;c'+l+' / '+H.tree[c].children.length+"]",i.eq(1).html(s(''+l+" "+_("of")+' '+H.tree[c].children.length+" "+_("Adapters from this Group installed")));break}}function u(e,t){return i.eq(e).html(s(t))}},gridnav:{autofocusInput:!1,handleCursorKeys:!0},filter:{mode:"hide",autoApply:!0},collapse:function(e,t){H.isCollapsed[t.node.key]||(H.isCollapsed[t.node.key]=!0,H.main.saveConfig("adaptersIsCollapsed",JSON.stringify(H.isCollapsed)))}}),H.$tab.find("#btn_collapse_adapters").show().off("click").on("click",function(){H.$tab.find(".process-adapters").show(),setTimeout(function(){H.$grid.fancytree("getRootNode").visit(function(e){(!H.filterVals.length||e.match||e.subMatch)&&e.setExpanded(!1)}),H.$tab.find(".process-adapters").hide()},100)}),H.$tab.find("#btn_expand_adapters").show().off("click").on("click",function(){H.$tab.find(".process-adapters").show(),setTimeout(function(){H.$grid.fancytree("getRootNode").visit(function(e){(!H.filterVals.length||e.match||e.subMatch)&&e.setExpanded(!0)}),H.$tab.find(".process-adapters").hide()},100)}),H.$tab.find("#btn_list_adapters").show().off("click").on("click",function(){var e=H.$tab.find(".process-adapters");e.show(),H.isList=!H.isList,H.isList?(H.$tab.find("#btn_list_adapters").addClass("red lighten-3"),H.$tab.find("#btn_expand_adapters").hide(),H.$tab.find("#btn_collapse_adapters").hide(),$(this).attr("title",_("list"))):(H.$tab.find("#btn_list_adapters").removeClass("red lighten-3"),H.$tab.find("#btn_expand_adapters").show(),H.$tab.find("#btn_collapse_adapters").show(),$(this).attr("title",_("tree"))),H.main.saveConfig("adaptersIsList",H.isList),e.show(),setTimeout(function(){H._postInit(!0),e.hide()},200)})),H.isList?(H.$tab.find("#btn_list_adapters").addClass("red lighten-3").attr("title",_("tree")),H.$tab.find("#btn_expand_adapters").hide(),H.$tab.find("#btn_collapse_adapters").hide()):(H.$tab.find("#btn_list_adapters").removeClass("red lighten-3").attr("title",_("list")),H.$tab.find("#btn_expand_adapters").show(),H.$tab.find("#btn_collapse_adapters").show()),H.$tab.find(".filter-input").trigger("change")}function n(){H.$grid.hide(),H.$tiles.show(),H.$tab.find("#main-toolbar-table-types-btn").show(),H.$tab.find("#btn_list_adapters").hide(),H.$tab.find("#btn_collapse_adapters").hide(),H.$tab.find("#btn_expand_adapters").hide(),H.$tab.find(".filter-input").trigger("change")}function i(){H.onlyUpdatable?(H.$tab.find("#btn_filter_updates").addClass("red lighten-3"),H.$tab.find("#btn_upgrade_all").show()):(H.$tab.find("#btn_upgrade_all").hide(),H.$tab.find("#btn_filter_updates").removeClass("red lighten-3"))}function a(){H.main.config.expertMode?(H.$tab.find("#btn_adapters_expert_mode").addClass("red lighten-3"),H.$tab.find("#btn_upgrade_all").show()):(H.$tab.find("#btn_adapters_expert_mode").removeClass("red lighten-3"),i())}function G(){var t=!1;H.currentFilter?H.$tiles.find(".tile").each(function(){var e=$(this);(!H.currentType||e.hasClass("class-"+H.currentType))&&B({key:e.data("id")})?(t=!0,e.show()):e.hide()}):H.currentType?(H.$tiles.find(".tile").hide(),H.$tiles.find(".class-"+H.currentType).show(),H.$tiles.find(".tile").each(function(){if($(this).is(":visible"))return!(t=!0)})):H.$tiles.find(".tile").show().each(function(){if($(this).is(":visible"))return!(t=!0)}),t?H.$tiles.find(".filtered-out").hide():H.$tiles.find(".filtered-out").show()}function B(e){if(H.currentFilter){if(!H.data[e.key])return!1;var t=H.data[e.key].title;t&&"object"==typeof t&&(t=t[systemLang]||t.en);var n=H.data[e.key].desc;return n&&"object"==typeof n&&(n=n[systemLang]||n.en),!!(H.data[e.key].name&&-1!==H.data[e.key].name.toLowerCase().indexOf(H.currentFilter)||t&&-1!==t.toLowerCase().indexOf(H.currentFilter)||H.data[e.key].keywords&&-1!==H.data[e.key].keywords.toLowerCase().indexOf(H.currentFilter)||n&&-1!==n.toLowerCase().indexOf(H.currentFilter))}return!0}function F(e,t){var n="";if(t.news)for(var i in t.news)if(t.news.hasOwnProperty(i)){if(systemLang===i&&(n+=(n?"\n":"")+t.news[i]),"en"===i||"ru"===i||"de"===i)continue;if(i===e)break;n+=(n?"\n":"")+(t.news[i][systemLang]||t.news[i].en)}return n}function Z(e){if(!e)return"";var t;if(e instanceof Array){t={};for(var n=0;n
    ',!A&&i.colors&&s[I].color&&(e+='
    '),!A&&i.icons&&(e+=ae(i.objects[s[I].id],i.imgPath)||'
     
    '),"enabled"===S)e+='";else if("groups"===S)for(var x=0;x'+ae(i.objects[$],null,"")+s[I].groups[x].name+""}else if("instance"===S)if(void 0!==s[I].instance&&1';for(var P=0;P"+r[P]+"";e+=z+=""}else e+=""+(void 0===s[I].instance?"":s[I].instance)+"";else if("icon"===S)e+=ae(i.objects[s[I].id],i.imgPath);else{var R=s[I][S]||"";R&&"object"==typeof R&&R.en&&(R=R[systemLang]||R.en),e+=""+R+""}e+="
    ';for(var U="",G=0;G ':(U+="<"+t+' data-id="'+s[I].id+'" class="select-button-'+G+' select-button-custom td-button" style="margin-right: 3px;" data-parent="'+s[I].parent+'" data-children="'+!!s[I].realChildren+'" title="'+(i.buttons[G].title||"")+'">',window.M&&window.M.toast&&(U+=''+(i.buttons[G].icon||"")+""),U+="");e+=U+"
    '),i}this.curRepository=null,this.curRepoLastUpdate=null,this.curInstalled=null,this.curRepoLastHost=null,this.list=[],this.$tab=$("#tab-adapters"),this.$grid=this.$tab.find("#grid-adapters"),this.$tiles=this.$tab.find("#grid-adapters-tiles"),this.$installDialog=$("#dialog-install-url"),this.main=e,this.tree=[],this.data={},this.urls={},this.groupImages={"common adapters_group":"img/common.png",general_group:"img/common.png",hardware_group:"img/hardware.png",lighting_group:"img/hardware.png",energy_group:"img/hardware.png",household_group:"img/hardware.png","iot-systems_group":"img/hardware.png","climate-control_group":"img/hardware.png",infrastructure_group:"img/hardware.png",garden_group:"img/hardware.png",alarm_group:"img/hardware.png",script_group:"img/script.png",logic_group:"img/script.png",media_group:"img/media.png",multimedia_group:"img/media.png",communication_group:"img/communication.png",protocols_group:"img/communication.png",network_group:"img/communication.png",messaging_group:"img/communication.png",visualisation_group:"img/visualisation.png",visualization_group:"img/visualisation.png","visualization-icons_group":"img/visualisation.png","visualization-widgets_group":"img/visualisation.png",storage_group:"img/storage.png",weather_group:"img/weather.png",schedule_group:"img/schedule.png",vis_group:"img/vis.png","date-and-time_group":"img/service.png",geoposition_group:"img/service.png",utility_group:"img/service.png","misc-data_group":"img/service.png",service_group:"img/service.png","third-party_group":"img/service.png"},this.inited=!1,this.isList=!1,this.filterVals={length:0},this.onlyInstalled=!1,this.onlyUpdatable=!1,this.currentFilter="",this.currentType="",this.isCollapsed={},this.isTiles=!0,this.types={occ:"schedule"},this.prepare=function(){this.$tab.find("#btn_switch_adapters").off("click").on("click",function(){H.$tab.find(".process-adapters").show(),H.isTiles=!H.isTiles,H.isTiles?(H.$tab.removeClass("view-table").addClass("view-tiles"),$(this).find("i").text("view_list")):($(this).find("i").text("view_module"),H.$tab.removeClass("view-tiles").addClass("view-table")),H.main.saveConfig("adaptersIsTiles",H.isTiles),setTimeout(function(){H.isTiles?n():t(),H._postInit(!0),H.$tab.find(".process-adapters").hide()},50)}),this.$tab.find("#btn_filter_adapters").off("click").on("click",function(){H.$tab.find(".process-adapters").show(),H.onlyInstalled=!H.onlyInstalled,H.onlyInstalled?H.$tab.find("#btn_filter_adapters").addClass("red lighten-3"):H.$tab.find("#btn_filter_adapters").removeClass("red lighten-3"),H.main.saveConfig("adaptersOnlyInstalled",H.onlyInstalled),setTimeout(function(){H._postInit(!0),H.$tab.find(".process-adapters").hide()},50)}),this.$tab.find("#btn_filter_updates").off("click").on("click",function(){H.$tab.find(".process-adapters").show(),H.onlyUpdatable=!H.onlyUpdatable,i(),H.main.saveConfig("adaptersOnlyUpdatable",H.onlyUpdatable),setTimeout(function(){H._postInit(!0),H.$tab.find(".process-adapters").hide()},200)}),this.$tab.find("#btn_filter_custom_url").off("click").on("click",function(){var e,t='",n=[];for(e in H.urls)H.urls.hasOwnProperty(e)&&n.push(e);n.sort();for(var i=0;i'+n[i]+"")}H.$installDialog.find("#install-github-link").html(t).val(H.main.config.adaptersGithub||""),H.$installDialog.modal(),H.$installDialog.find(".btn-install").off("click").on("click",function(){var e,t,n;if(!H.$installDialog.find('a[href="#tabs-install-github"]').hasClass("active"))e=H.$installDialog.find("#install-url-link").val(),t=H.$installDialog.find("#install-url-debug").prop("checked")?" --debug":"",n="";else{var i=H.$installDialog.find("#install-github-link").val().split(" ");e=i[0],t=H.$installDialog.find("#install-github-debug").prop("checked")?" --debug":"",n=" "+i[1]}e?H.main.cmdExec(null,'url "'+e+'"'+n+t,function(e){e||H.init(!0,!0)}):H.main.showError(_("Invalid link"))}),H.$installDialog.find("#install-github-link").select(),H.$installDialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),H.$installDialog.modal("open"),H.$installDialog.find(".tabs").mtabs({nShow:function(e){e&&H.main.saveConfig("adaptersInstallTab",$(e).attr("id"))}}),H.main.config.adaptersInstallTab&&!H.main.noSelect&&H.$installDialog.find(".tabs").mtabs("select",H.main.config.adaptersInstallTab)}),this.$tab.find("#btn_upgrade_all").off("click").on("click",function(){H.main.confirmMessage(_("Do you want to upgrade all adapters?"),_("Please confirm"),"help",function(e){e&&H.main.cmdExec(null,"upgrade",function(e){e||H._postInit(!0)})})}),this.$tab.find("#btn_adapters_expert_mode").on("click",function(){H.main.config.expertMode=!H.main.config.expertMode,H.main.saveConfig("expertMode",H.main.config.expertMode),H.updateExpertMode(),H.main.tabs.instances.updateExpertMode()}),H.main.config.expertMode&&H.$tab.find("#btn_adapters_expert_mode").addClass("red lighten-3"),this.$installDialog.find("#install-github-link").on("change",function(){H.main.saveConfig("adaptersGithub",$(this).val())}),this.$installDialog.find("#install-url-link").on("keyup",function(e){13===e.which&&H.$installDialog.find("#dialog-install-url-button").trigger("click")}),this.isTiles=void 0===this.main.config.adaptersIsTiles||null===this.main.config.adaptersIsTiles||this.main.config.adaptersIsTiles,this.isList=this.main.config.adaptersIsList||!1,this.onlyInstalled=this.main.config.adaptersOnlyInstalled||!1,this.onlyUpdatable=this.main.config.adaptersOnlyUpdatable||!1,this.currentFilter=this.main.config.adaptersCurrentFilter||"",this.currentType=this.main.config.adaptersCurrentType||"",this.currentOrder=this.main.config.adaptersCurrentOrder||"a-z",this.isCollapsed=this.main.config.adaptersIsCollapsed?JSON.parse(this.main.config.adaptersIsCollapsed):{},this.currentFilter?(this.$tab.find(".filter-input").addClass("input-not-empty").val(H.currentFilter),this.$tab.find(".filter-clear").show()):this.$tab.find(".filter-clear").hide(),this.onlyInstalled?this.$tab.find("#btn_filter_adapters").addClass("red lighten-3"):this.$tab.find("#btn_filter_adapters").removeClass("red lighten-3"),this.onlyUpdatable?this.$tab.find("#btn_filter_updates").addClass("red lighten-3"):this.$tab.find("#btn_filter_updates").removeClass("red lighten-3"),"ie"===this.main.browser&&this.main.browserVersion<=10&&(this.isTiles=!1,this.$tab.find("#btn_switch_adapters").hide()),a(),this.$tab.find("#btn_refresh_adapters").on("click",function(){H.init(!0,!0)}),this.$tab.find(".filter-input").on("keyup",function(){$(this).trigger("change")}).on("change",function(e){H.filterTimer&&clearTimeout(H.filterTimer),H.filterTimer=setTimeout(function(){H.filterTimer=null,H.currentFilter=H.$tab.find(".filter-input").val().toLowerCase(),e&&e.target&&$(e.target)[H.currentFilter?"addClass":"removeClass"]("input-not-empty"),H.currentFilter?H.$tab.find(".filter-clear").show():H.$tab.find(".filter-clear").hide(),H.main.saveConfig("adaptersCurrentFilter",H.currentFilter),H.isTiles?G():H.$grid.fancytree("getTree").filterNodes(B,!1)},400)}),this.$tab.find(".filter-clear").on("click",function(){H.$tab.find(".filter-input").val("").trigger("change")}),this.isTiles?(this.$tab.find("#btn_switch_adapters").find("i").text("view_list"),H.$tab.removeClass("view-table").addClass("view-tiles"),n()):(H.$tab.removeClass("view-tiles").addClass("view-table"),t())},this.updateExpertMode=function(){this.init(!0),a()},this.getAdaptersInfo=function(e,t,n,i){if(e){if(!i)throw"Callback cannot be null or undefined";t&&(!this.curRepoLastUpdate||1e3<(new Date).getTime()-this.curRepoLastUpdate)&&(this.curRepository=null,this.curInstalled=null),this.curRunning?this.curRunning.push(i):(this.curRepository&&this.curRepoLastHost===e||(this.curRepository=null,this.main.socket.emit("sendToHost",e,"getRepository",{repo:this.main.systemConfig.common.activeRepo,update:n},function(e){"permissionError"===e&&(console.error('May not read "getRepository"'),e={}),H.curRepository=e||{},H.curRepository&&H.curInstalled&&H.curRunning&&(H.curRepoLastUpdate=(new Date).getTime(),setTimeout(function(){for(var e=0;e'+e+'',t&&(e+=''),e+=""}c.sort(),H.tree=[],H.data={};for(var m=0;m';for(var w=0;w',b!==p&&(g+=''+p+"",b&&(g+=" ~ ")),b&&(g+=''+b+""),g+=""):g+='',g+=''+n.version+"",h=''+n.version+"",g+="",!y&&H.onlyUpdatable)continue}i=u(a=i,y,M,v);var j=(n.type||H.types[o]||"common adapters")+"_group";C=(C="object"==typeof n.desc?n.desc[systemLang]||n.desc.en:n.desc)||"",C+=W(j,o,H.main.states["system.adapter."+o+".upload"]?H.main.states["system.adapter."+o+".upload"].val:0);var N=n.titleLang||n.title;if(N="object"==typeof N?N[systemLang]||N.en:N,H.data[o]={image:f?'':"",icon:f||"",stat:e[o]?e[o].stat:0,name:o,title:(N||"").replace("yunkong2 Visualisation - ",""),desc:C,news:M,updatableError:v,keywords:n.keywords?n.keywords.join(" "):"",version:i,installed:g,rawVersion:a,instances:p,rawInstalled:h,versionDate:n.versionDate,updatable:y,bold:n.highlight||!1,install:''+(H.main.config.expertMode?'':"")+"'+(H.main.config.expertMode?'':""),group:j,license:n.license||"",licenseUrl:n.licenseUrl||""},n.type||console.log('"'+o+'": "common adapters",'),n.type&&H.types[o]&&console.log('Adapter "'+o+'" has own type. Remove from admin.'),H.isList)H.tree.push({icon:f,title:H.data[o].title||o,key:o});else{for(var L=-1,T=0;T':"",icon:n.extIcon,stat:n.stat,name:o,title:(N||"").replace("yunkong2 Visualisation - ",""),desc:C,keywords:n.keywords?n.keywords.join(" "):"",rawVersion:a,version:i,bold:n.highlight,installed:"",versionDate:n.versionDate,install:''+(H.main.config.expertMode?'':""),license:n.license||"",licenseUrl:n.licenseUrl||"",group:j},n.type||console.log('"'+o+'": "common adapters",'),n.type&&H.types[o]&&console.log('Adapter "'+o+'" has own type. Remove from admin.'),H.isList)H.tree.push({icon:n.extIcon,title:H.data[o].title||o,key:o});else{for(var D=-1,I=0;IH.data[t].stat?-1:H.data[e].statH.data[t].versionDate?-1:H.data[e].versionDate',z+='
    ',z+='
    ',z+='
    ',z+=' ',z+=' '+x.title+"",z+=' more_vert',z+='
      ',z+="
    • "+d["Available version:"]+' "+x.rawVersion+""+(x.updatable?'':"")+"
    • ",x.installed&&(z+="
    • "+d["Installed version"]+': '+x.rawInstalled+"
    • "),x.instances&&(z+="
    • "+_("Installed instances")+': '+x.instances+"
    • "),z+="
    ",z+="
    ",z+=' ',z+='
    ',z+=' close',z+="

    "+x.desc+"

    ",z+='
    ',z+=x.install,z+="
    ",z+="
    ","popular"===H.currentOrder&&x.stat?z+='
    '+x.stat+"
    ":"updated"===H.currentOrder&&x.versionDate&&(z+='
    '+J(x.versionDate,d.today,d.yesterday,d["1 %d days ago"],d["2 %d days ago"],d["5 %d days ago"],l)+"
    "),z+="
    ",z+="
    "}for(var Y in z+='
    ',z+='
    ',z+='
    ',z+='
    ',z+=' '+_("Filtered out")+"",z+="
    ",z+=' ',z+="
    ",z+="
    ",H.$tiles.html(z),H.data)H.data.hasOwnProperty(Y)&&H.initButtons(Y);for(var R='
  • '+d.all+"
  • \n",Q=0;Q'+_(A[Q])+"\n";var U=H.$tab.find("#main-toolbar-table-types");U.html(R),U.find(".main-toolbar-table-types-item").show().off("click").on("click",function(){H.currentType=$(this).data("type")||"",G(),H.$tab.find("#main-toolbar-table-types-btn").html(_(H.currentType||"all")),H.main.saveConfig("adaptersCurrentType",H.currentType)}),H.currentType&&!d[H.currentType]&&(d[H.currentType]=_(H.currentType)),H.$tab.find("#main-toolbar-table-types-btn").html(d[H.currentType||"all"]).dropdown({constrainWidth:!1,gutter:0}),(U=H.$tab.find("#main-toolbar-table-order")).find(".main-toolbar-table-order-item").off("click").on("click",function(){H.currentOrder=$(this).data("type")||"",H.$tab.find("#main-toolbar-table-order-btn").html(_(H.currentOrder||"a-z")),H.main.saveConfig("adaptersCurrentOrder",H.currentOrder),H._postInit()}),H.currentOrder&&!d[H.currentOrder]&&(d[H.currentOrder]=_(H.currentOrder)),H.$tab.find("#main-toolbar-table-order-btn").show().html(d[H.currentOrder||"a-z"]).dropdown({constrainWidth:!1,gutter:0}),G()}else{H.$tab.find("#main-toolbar-table-types-btn").hide(),H.$tab.find("#main-toolbar-table-order-btn").hide(),H.$grid.fancytree("getTree").reload(H.tree),H.$grid.find(".fancytree-icon").each(function(){$(this).attr("src")&&$(this).css({width:18,height:18}),$(this).on("hover",function(){var e='
    ',t=$(e);t.insertAfter($(this)),$(this).data("big",t[0]);var n=parseFloat(t.height()),i=Math.round($(this).position().top-(n-parseFloat($(this).height()))/2);n+i>(window.innerHeight||document.documentElement.clientHeight)&&(i=(window.innerHeight||document.documentElement.clientHeight)-n),t.css({top:i})},function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)})}),H.currentFilter&&H.$grid.fancytree("getTree").filterNodes(B,!1),H.sortTree(),H.enableColResize();var P=["tab-adapters-table-name","tab-adapters-table-description","tab-adapters-table-keywords","tab-adapters-table-installed","tab-adapters-table-available","tab-adapters-table-license","tab-adapters-table-install"];H.$grid.find("tbody tr").each(function(){var e=0;$(this).find("td").each(function(){$(this).addClass(P[e]),e++})})}H.$tab.find(".grid-main-div").removeClass("order-a-z order-popular order-updated").addClass(H.currentOrder?"order-"+H.currentOrder:""),H.$tab.find(".process-adapters").hide(),H.updateCounter(s)})):this.enableColResize(),this.restoreScroll()},this.saveScroll=function(){this.scrollTop=this.$tab.find(".grid-main-div").scrollTop()},this.restoreScroll=function(){this.scrollTop&&this.$tab.find(".grid-main-div").scrollTop(this.scrollTop)},this.updateCounter=function(e){if(void 0===e)this.getAdaptersInfo(this.main.currentHost,!1,!1,function(e,t){var n=0;for(var i in t)if(t.hasOwnProperty(i)){var a=t?t[i]:null;if(a&&!a.controller&&"hosts"!==i){var s="";e[i]&&e[i].version&&(s=e[i].version),a.version&&!H.main.upToDate(s,a.version)&&n++}}H.updateCounter(n)});else if(e){var t=$("#updates-for-adapters");t.length?t.text(e):$(''+e+"").appendTo('.admin-sidemenu-items[data-tab="tab-adapters"] a')}else $("#updates-for-adapters").remove()},this.init=function(e,t){this.inited&&!e||(this.main.objectsLoaded?(this.inited||(this.inited=!0,this.main.subscribeObjects("system.host.*"),this.main.subscribeStates("system.host.*")),this.main.tabs.hosts.getHosts(function(){H._postInit(e,t)})):setTimeout(function(){H.init(e,t)},250))},this.destroy=function(){this.inited&&(this.saveScroll(),this.inited=!1,this.main.unsubscribeObjects("system.host.*"),this.main.unsubscribeStates("system.host.*"))},this.initButtons=function(r){this.$tab.find('.adapter-install-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var s=$(this).attr("data-adapter-name"),e=$(this).attr("data-adapter-desc");!function(e,t,n){if(H.main.tabs.hosts.list.length<=1&&!H.main.config.expertMode)return n(!0,H.main.currentHost,"");var i=$("#dialog-add-instance");i.find(".dialog-add-instance-name").html(e),i.find(".dialog-add-description").html(t);for(var a="",s=0;s'+o.name+""}H.main.tabs.hosts.list.length<=1?i.find(".dialog-add-instance-host").addClass("disabled").prop("disabled",!0):i.find(".dialog-add-instance-host").removeClass("disabled").prop("disabled",!1),i.find(".dialog-add-instance-host").html(a).select();for(var r=-1,c=[],l=0;l'+_("auto")+"";for(var m=0;m'+m+"");i.find(".dialog-add-instance-number").html(a).select(),i.find(".dialog-add-install-btn").off("click").on("click",function(e){n&&(n(!0,i.find(".dialog-add-instance-host").val(),i.find(".dialog-add-instance-number").val()),n=null),i.find(".dialog-add-cancel-btn").off("click"),i.find(".dialog-add-instance-number").off("click")}),i.find(".dialog-add-cancel-btn").off("click").on("click",function(e){n&&(n(!1),n=null),i.find(".dialog-add-cancel-btn").off("click"),i.find(".dialog-add-instance-number").off("click")}),i.modal({dismissible:!1,complete:function(){i.find(".dialog-add-instance-name").html("")}}).modal("open")}(s,e,function(e,i,a){e&&H.getAdaptersInfo(i,!1,!1,function(e,t){var n=e[s];n||(n=t[s]),n&&(n.license&&"MIT"!==n.license?function(i,a){var s=$("#dialog-license");if(!H.data[i].installed&&H.data[i].licenseUrl){var o=setTimeout(function(){a(!(o=null))},1e4);H.data[i].licenseUrl||(H.data[i].licenseUrl="https://raw.githubusercontent.com/yunkong2/yunkong2."+(H.data[i].name||i)+"/master/LICENSE"),"object"==typeof H.data[i].licenseUrl&&(H.data[i].licenseUrl=H.data[i].licenseUrl[systemLang]||H.data[i].licenseUrl.en),-1!==H.data[i].licenseUrl.indexOf("github.com")&&(H.data[i].licenseUrl=H.data[i].licenseUrl.replace("github.com","raw.githubusercontent.com").replace("/blob/","/")),H.main.socket.emit("httpGet",H.data[i].licenseUrl,function(e,t,n){o&&(clearTimeout(o),o=null,!e&&n?(s.css({"z-index":200}),n=(n=n.toString().replace(/\r\n/g,"
    ")).replace(/\n/g,"
    "),s.find(".license_text").html(n),s.find(".license_agreement_name").text(_(" for %s",i)),s.modal({dismissible:!1,complete:function(){s.find(".license_text").html("")}}).modal("open"),s.find(".license_agree").off("click").on("click",function(e){a&&(a(!0),a=null),s.find(".license_agree").off("click"),s.find(".license_non_agree").off("click")}),s.find(".license_non_agree").off("click").on("click",function(e){a&&(a(!1),a=null),s.find(".license_agree").off("click"),s.find(".license_non_agree").off("click")})):(a&&a(!0),a=null))})}else a(!0)}(s,function(e){e&&H.main.cmdExec(null,"add "+s+" "+a+" --host "+i,function(e){e||H._postInit(!0)})}):H.main.cmdExec(null,"add "+s+" "+a+" --host "+i,function(e){e||H._postInit(!0)}))})})}),this.$tab.find('.adapter-delete-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var t=$(this).attr("data-adapter-name");H.main.confirmMessage(_("Are you sure you want to delete adapter %s?",t),_("Please confirm"),"help",function(e){e&&H.main.cmdExec(null,"del "+t,function(e){e||H._postInit(!0)})})}),this.$tab.find('.adapter-readme-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){H.main.navigate({tab:"adapters",dialog:"readme",params:$(this).data("adapter-name")})}),this.$tab.find('.adapter-update-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var e=$(this).attr("data-adapter-name");"admin"===e&&(H.main.waitForRestart=!0),H.main.cmdExec(null,"upgrade "+e,function(e){e||H._postInit(!0)})}),this.$tab.find('.adapter-upload-submit[data-adapter-name="'+r+'"]').off("click").on("click",function(){var e=$(this).attr("data-adapter-name");H.main.cmdExec(null,"upload "+e,function(e){e||H._postInit(!0)})});var e=this.$tab.find('.adapter-update-custom-submit[data-adapter-name="'+r+'"]');e.off("click").on("click",function(){var e=[];if(H.main.objects["system.adapter."+r].common.news){var t=H.main.objects["system.adapter."+r].common.news;for(var n in t)t.hasOwnProperty(n)&&e.push(n)}else e.push(H.main.objects["system.adapter."+r].common.version);for(var i='
    ',a=0;a'+e[a]+' - "}i+="
    ";var o=$("#adapters-menu");o.length||((o=$('")).appendTo($(".materialize-dialogs").first()),o.modal()),o.data("trigger",this),o.find("p").html(i),o.find("h4").html(_("Versions of %s",r)),o.find(".adapters-versions-link").off("click").on("click",function(){o.modal("close");var e=$(this).data("adapter-name"),t=$(this).data("version");t&&e&&H.main.cmdExec(null,"upgrade "+e+"@"+t,function(e){e||H._postInit(!0)})}),o.modal("open")}),H.main.objects["system.adapter."+r]||e.hide()},this.objectChange=function(e,t){if(e.match(/^system\.adapter\.[a-zA-Z0-9-_]+$/)){if(t)-1===this.list.indexOf(e)&&this.list.push(e);else{var n=this.list.indexOf(e);-1!==n&&this.list.splice(n,1)}void 0!==this.$grid&&this.$grid[0]._isInited&&this.init(!0)}},this.stateChange=function(e,t){if(e&&t){var n=e.match(/^system\.adapter\.([\w\d-]+)\.upload$/);if(n){var i=this.$tab.find('.adapter-upload-progress[data-adapter-name="'+n[1]+'"]'),a=W(t.val);i.html(a).css({opacity:t.val?.7:0}),this.$tab.find('.group-upload-progress[data-adapter-group="'+i.data("adapter-group")+'"]').html(a).css({opacity:t.val?.7:0})}}}}function Config(e){var t=this;this.$dialog=$("#dialog-config"),this.$configFrame=this.$dialog.find("#config-iframe"),this.main=e,this.prepare=function(){$iframeDialog=this},this.init=function(){if(!this.inited){this.inited=!0;var e=this.main.navigateGetParams(),t=e.split(".");this.main.objects[e]&&this.main.objects[e].common&&this.main.objects[e].common.materialize?this.$configFrame.attr("src","adapter/"+t[2]+"/index_m.html?"+t[3]):this.$configFrame.attr("src","adapter/"+t[2]+"/?"+t[3]);var n=e.replace(/^system\.adapter\./,"");this.$dialog.data("name",n),this.$dialog.find(".title").html(_("Adapter configuration")+": "+n)}},this.allStored=function(){return!window.frames["config-iframe"].changed},this.close=function(){t.main.navigate()},this.destroy=function(){if(this.inited&&(this.inited=!1,this.$configFrame.attr("src",""),void 0!==showConfig&&showConfig&&showConfig.length)){var e=showConfig.shift();setTimeout(function(){t.main.navigate({tab:"instances",dialog:"config",params:e})},1e3)}}}function Customs(C){var m,g,h,f,T,D,I,k,O,E,z,A,S="__different__",x=this;function Y(e){if(e)x.historyTimeout&&clearTimeout(x.historyTimeout);else if(x.historyTimeout)return;x.historyTimeout=setTimeout(function(){x.historyTimeout=null,z&&x.loadHistoryTable(z.data("id"),!0)},e||5e3)}function R(t,n){$.ajax({headers:{Accept:"text/html"},cache:!0,url:"/adapter/"+t+"/custom_m.html",success:function(e){n(null,e)},error:function(e){$.ajax({headers:{Accept:"text/html"},cache:!0,url:"/adapter/"+t+"/custom.html",success:function(e){n(null,e)},error:function(e){n(e.responseText)}})}})}function Q(e){e.stopPropagation(),e.preventDefault();var t=x.$dialog.find("#customs-tabs"),c=t.data("ids");x.currentCustoms=null;var l=_(S);if(t.find("input, select").each(function(){var e=$(this).data("instance"),t=$(this).data("field");if(t){var n;if("checkbox"===$(this).attr("type")){if(this.indeterminate)return;n=$(this).prop("checked")}else n=$(this).val();if(n!==l){null===n&&(n=""),void 0===n&&(n=""),"false"===n&&(n=!1),"true"===n&&(n=!0);var i=parseFloat(n);n.toString().replace(/^\+/,"").replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,"$1")===i.toString()&&(n=i);for(var a=0;a
    '+_("Settings for %s",j)+' '+_("active")+'
    '+$('script[data-template-name="'+v+'"]').html()+"
    ",T=$(L);this.defaults[v]={},T.find("input, select").each(function(){var e=$(this);e.attr("data-instance",v+"."+w);var t=e.attr("data-field"),n=e.attr("data-default");"true"===n&&(n=!0),"false"===n&&(n=!1),void 0!==n&&n.toString().replace(/\+/,"")===parseFloat(n).toString()&&(n=parseFloat(n)),x.defaults[v][t]=n,"enabled"===t&&e.on("click",function(e){e.stopPropagation(),$(this).prop("checked")})}),s.append(T),customPostInits.hasOwnProperty(v)&&"function"==typeof customPostInits[v]&&customPostInits[v](T,r[v+"."+w],x.main.objects["system.adapter."+v+"."+w],i,a)}s.find("input, select").each(function(){var e,n=$(this),t=n.data("instance"),i=t.split(".")[0],a=n.data("field");void 0!==r[t][a]?"checkbox"===n.attr("type")?r[t][a]===S?n[0].indeterminate=!0:n.prop("checked",r[t][a]):r[t][a]===S?("number"===n.attr("type")&&n.attr("type","text"),"SELECT"===n.prop("tagName").toUpperCase()?(n.prepend('"),n.val(o)):n.val("").attr("placeholder",o)):n.val(r[t][a]):(x.defaults[i]&&void 0!==x.defaults[i][a]&&(e=x.defaults[i][a]),void 0!==e&&("checkbox"===n.attr("type")?n.prop("checked",e):n.val(e)));"checkbox"===n.attr("type")?n.on("change",function(){if(x.$dialog.find(".dialog-system-buttons .btn-save").removeClass("disabled"),"enabled"===$(this).data("field")){var e=n.data("instance"),t=s.find('.activated[data-adapter="'+e+'"]');$(this).prop("checked")?t.css("opacity",1):t.css("opacity",0)}}):n.on("change",function(){x.$dialog.find(".dialog-system-buttons .btn-save").removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")})}),this.showCustomsData(1'+_("Loading...")+"");var n={aggregate:"none",instance:z.val(),from:!0,ack:!0,q:!0};T||(T=this.$dialog.find("#tab-customs-table .datepicker.date-from"),D=this.$dialog.find("#tab-customs-table .datepicker.date-to"),I=this.$dialog.find("#tab-customs-table .timepicker.time-from"),k=this.$dialog.find("#tab-customs-table .timepicker.time-to"));var d,i=T.val()?M.Datepicker.getInstance(T).toString("yyyy.mm.dd"):"",a=I.val(),s=D.val()?M.Datepicker.getInstance(D).toString("yyyy.mm.dd"):"",o=k.val(),r=!0;if(s?(r=!1,(s=new Date(s)).setHours(23),s.setMinutes(59),s.setSeconds(59),s.setMilliseconds(999)):s=new Date,o){var c=o.split(":");s.setHours(c[0]),s.setMinutes(c[1]),s.setSeconds(59),s.setMilliseconds(999),r=!1}if(s=s.getTime(),r&&(s+=1e4),n.end=s,i||a){if(i=new Date(i||s),a){var u=a.split(":");i.setHours(u[0]),i.setMinutes(u[1])}else i.setHours(0),i.setMinutes(0);i.setSeconds(0),i.setMilliseconds(0),n.start=i.getTime()}else n.count=50;l&&(d=new Date(s).toISOString()+"_"+(n.start?new Date(n.start):n.count+"points")+"_"+e+"__"+n.instance+".csv"),C.socket.emit("getHistory",e,n,function(r,c){setTimeout(function(){var e,t,n,i="value;acknowledged;from;timestamp;lastchanged;\n";if(r)console.error(r),m.html(''+r+"");else{var a="";if(c&&c.length){for(var s=c.length-1;0<=s;s--){var o=(c[s].from||"").replace("system.adapter.","").replace("system.","");a+=' '+c[s].val+" "+c[s].ack+" "+o+" "+C.formatDate(c[s].ts)+" "+C.formatDate(c[s].lc)+"\n",l&&(i+=c[s].val+";"+c[s].ack+";"+(o||"")+";"+(c[s].ts?new Date(c[s].ts).toISOString():"")+";"+(c[s].lc?new Date(c[s].lc).toISOString():"")+";\n")}f=c[c.length-1].ts}else a=''+_("No data")+"";m.html(a)}!function e(){$.fn.colResizable&&(g.is(":visible")?(g.data("inited")||((h=new IobListHeader("grid-history-header",{list:g,colWidthOffset:1,prefix:"log-filter"})).add("text","val"),h.add("text","ack"),h.add("text","from"),h.add("text","ts"),h.add("text","lc")),g.colResizable({liveDrag:!0,partialRefresh:!0,marginLeft:5,postbackSafe:!0,onResize:function(e){return h.syncHeader()}}),h.syncHeader()):setTimeout(function(){e()},200))}(),l&&(e=d,t=i,(n=document.createElement("a")).setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n))},0)})},this.loadHistoryChart=function(e){if(O||(O=this.$dialog.find("#tab-customs-chart .datepicker.date-from"),E=this.$dialog.find("#tab-customs-chart .datepicker.date-to")),e){for(var t=0,n=!1,i=!1,a=0;a"+u[v]+"\n")}if(y){z.data("id",n[0]).html(y).show().off("change").on("change",function(){x.main.saveConfig("object-history-table",z.val()),x.loadHistoryTable($(this).data("id"))}).select(),A.data("id",n[0]).html(y).show().off("change").on("change",function(){x.main.saveConfig("object-history-chart",A.val()),x.loadHistoryChart($(this).data("id"))}).select(),void 0!==this.main.config["object-history-table"]&&z.val(this.main.config["object-history-table"]),void 0!==this.main.config["object-history-chart"]&&A.val(this.main.config["object-history-chart"]),p.data("id",n[0]).show().off("click").on("click",function(){x.$dialog.find("#grid-history-body").html(""),x.loadHistoryTable($(this).data("id"))}),M.data("id",n[0]).show().off("click").on("click",function(){x.loadHistoryChart($(this).data("id"))}),b.data("id",n[0]).show().off("click").on("click",function(){x.loadHistoryTable($(this).data("id"),!1,!0)});var j=new Date;j.setDate(j.getDate()-1);for(var N={today:_("Today"),clear:_("Clear"),done:_("Ok"),months:[_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December")],monthsShort:[_("Jan"),_("Feb"),_("Mar"),_("Apr"),_("May"),_("Jun"),_("Jul"),_("Aug"),_("Sep"),_("Oct"),_("Nov"),_("Dec")],weekdaysShort:[_("Sun"),_("Mon"),_("Tue"),_("Wed"),_("Thu"),_("Fri"),_("Sat")],weekdays:[_("Sunday"),_("Monday"),_("Tuesday"),_("Wednesday"),_("Thursday"),_("Friday"),_("Saturday")],weekdaysAbbrev:["S","M","T","W","T","F","S"]},L=0;L\n
    \n',"state"===i&&"common"===n&&"type"===s?a+='":"string"==typeof t[s]?a+='\n':"number"==typeof t[s]?a+='\n':"boolean"==typeof t[s]?a+='\n":a+='\n";var o=s;"common"===n&&systemDictionary["common_"+s]&&systemDictionary["common_"+s][systemLang]&&(o=_("common_"+s)),"boolean"==typeof t[s]?a+=""+o+"\n":a+="\n",a+='
    \n\n',a+="\n"}c.$dialog.find(e).html(a)}function n(e,t){var n=c.$dialog.find(e);n.find(".object-tab-edit-string").each(function(){t[$(this).data("attr")]=$(this).val()}),n.find(".object-tab-edit-number").each(function(){t[$(this).data("attr")]=parseFloat($(this).val())}),n.find(".object-tab-edit-boolean").each(function(){t[$(this).data("attr")]=$(this).prop("checked")});var i=null;if(n.find(".object-tab-edit-object").each(function(){try{t[$(this).data("attr")]=JSON.parse($(this).val())}catch(e){return i=$(this).data("attr"),!1}}),void 0!==t.write&&("false"!==t.write&&"0"!==t.write&&0!==t.write||(t.write=!1),"true"!==t.write&&"1"!==t.write&&1!==t.write||(t.write=!0)),void 0!==t.read&&("false"!==t.read&&"0"!==t.read&&0!==t.read||(t.read=!1),"true"!==t.read&&"1"!==t.read&&1!==t.read||(t.read=!0)),null===t.min&&delete t.min,void 0!==t.min){var a=parseFloat(t.min);a.toString()===t.min.toString()&&(t.min=a),"false"===t.min&&(t.min=!1),"true"===t.min&&(t.min=!0)}if(null===t.max&&delete t.max,void 0!==t.max){var s=parseFloat(t.max);s.toString()===t.max.toString()&&(t.max=s),"false"===t.max&&(t.max=!1),"true"===t.max&&(t.max=!0)}if(null===t.def&&delete t.def,void 0!==t.def){var o=parseFloat(t.def);o.toString()===t.def.toString()&&(t.def=o),"false"===t.def&&(t.def=!1),"true"===t.def&&(t.def=!0)}if(-1!==e.indexOf("common"))for(var r in t)t.hasOwnProperty(r)&&("true"===t[r]&&(t[r]=!0),"false"===t[r]&&(t[r]=!1),parseFloat(t[r]).toString()===t[r]&&(t[r]=parseFloat(t[r])));return i}function s(e,t,n){"boolean"==typeof t&&(n=t,t=3e3),c.main.showToast(c.$dialog,e,null,t,n)}this.$dialog=$("#dialog-editobject"),this.$dialogNewField=$("#dialog-new-field"),this.main=e,this.prepared=!1,this.inited=!1,this.$dialogSave=this.$dialog.find(".dialog-editobject-buttons .btn-save"),this.iconVal=null,this._prepare=function(){this.prepared||(this.prepared=!0,this.$dialogSave.on("click",function(){c.save()}),this.$dialog.find(".dialog-editobject-buttons .btn-cancel").on("click",function(){c.editor.setValue(""),c.$dialogSave.addClass("disabled"),c.main.navigate()}),this.$dialog.find(".btn-add-common").on("click",function(){c.$dialogNewField.find(".object-tab-new-icon").show(),c.$dialogNewField.modal("open");var e=c.$dialogNewField.find(".object-tab-new-name");e.data("type","common").focus(),e.hasClass("autocomplete")||(e.addClass("autocomplete"),e.mautocomplete({data:{type:null,desc:null,min:null,max:null,def:null,role:null,unit:null,read:null,write:null,states:null},minLength:0})),e.focus()}),this.$dialog.find(".btn-add-native").on("click",function(){c.$dialogNewField.find(".object-tab-new-icon").hide(),c.$dialogNewField.modal("open");var e=c.$dialogNewField.find(".object-tab-new-name");e.hasClass("autocomplete")&&(e.mautocomplete("destroy"),e.removeClass("autocomplete")),M.updateTextFields("#dialog-new-field"),e.data("type","native").focus()}),this.$dialogNewField.find(".object-tab-new-name").keypress(function(e){13===e.which&&c.$dialogNewField.find(".btn-add").trigger("click")}),this.editor||(this.editor=ace.edit("view-object-raw"),this.editor.getSession().setMode("ace/mode/json"),this.editor.$blockScrolling=!0,this.editor.getSession().on("change",function(){c.$dialogSave.removeClass("disabled")})),this.$dialogNewField.modal(),this.$dialog.find(".tabs").mtabs({onShow:function(e){if(e){var t=$(e).attr("id");if("object-tab-common"===t)s(_("Drop the icons here"));else if("object-tab-raw"===t){var n=c.saveFromTabs();if(!n)return!1;c.editor.setValue(JSON.stringify(n,null,2))}else if("object-tab-raw"===t){var i;try{i=JSON.parse(c.editor.getValue())}catch(e){return c.main.showMessage(e,_("Parse error"),"error_outline"),c.main.noSelect||c.$dialog.find(".tabs").mtabs("select","object-tab-raw"),!1}c.load(i)}return c.main.saveConfig("object-edit-active",t),!0}}}),this.$dialogNewField.find(".btn-add").on("click",function(e){e.preventDefault(),e.stopPropagation();var t=c.$dialogNewField.find(".object-tab-new-name"),n=t.data("type")||"common",i=t.val().trim(),a=c.saveFromTabs();i&&-1===i.indexOf(" ")?void 0===a[n][i]?(a[n][i]="",c.load(a),c.$dialogNewField.find(".object-tab-new-name").val(""),c.$dialogNewField.modal("close"),c.$dialogSave.removeClass("disabled")):c.main.showError(_("Field %s yet exists!",i)):c.main.showError(_("Invalid field name: %s",i))}),this.$dialogNewField.find(".btn-cancel").on("click",function(e){c.$dialogNewField.find(".object-tab-new-name").val("")}),this.$dialog.find(".edit-object-name").on("change",function(){c.$dialogSave.removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),this.$dialog.find(".edit-object-type").on("change",function(){c.$dialogSave.removeClass("disabled")}),this.$dialog.find(".object-tab-rights input").on("change",function(){c.$dialogSave.removeClass("disabled")}),installFileUpload(this.$dialog.find("#object-tab-common"),5e4,function(e,t){if(e)s(e,!0);else{if(!t.match(/^data:image\//))return void s(_("Unsupported image format"),!0);c.$dialogSave.removeClass("disabled"),c.iconVal=t;var n=c.$dialog.find(".icon-editor");n.find(".icon").show().html(''),n.find(".icon .treetable-icon").attr("src",t)}}),this.$dialog.find(".icon-editor .icon-upload").off("click").on("click",function(){c.$dialog.find(".drop-file").trigger("click")}),this.$dialog.find(".icon-editor .icon-clear").off("click").on("click",function(){c.iconVal&&(c.iconVal=null,c.$dialog.find(".icon-editor").hide().appendTo(c.$dialog),c.$dialogSave.removeClass("disabled"))}))},this.init=function(){if(this._prepare(),!this.inited){this.inited=!0;var e=c.main.navigateGetParams(),t=!!(e||"").match(/,def$/);e=e.replace(/,def$/,"");var n=this.main.objects[e];if(n){void 0===this.main.config["object-edit-active"]||c.main.noSelect||this.$dialog.find(".tabs").mtabs("select",this.main.config["object-edit-active"]);for(var i,a="",s=0;s'+(i||this.main.tabs.users.list[s])+"";for(this.$dialog.find(".object-tab-acl-owner").html(a),a="",s=0;s'+(i||this.main.tabs.users.groups[s])+"";this.$dialog.find(".object-tab-acl-group").html(a),this.load(n),t?this.$dialog.data("cb",function(n){"state"===n.type&&c.main.socket.emit("getState",n._id,function(e,t){t&&null!==t.val&&void 0!==t.val||c.main.socket.emit("setState",n._id,void 0===n.common.def?null:n.common.def,!0)})}):this.$dialog.data("cb",null),c.$dialogSave.addClass("disabled")}}},this.destroy=function(){this.inited&&(this.inited=!1)},this.load=function(e){if(e){e.common=e.common||{},e.native=e.native||{},e.acl=e.acl||{},this.$dialog.find(".title-id").text(e._id),this.$dialog.find(".edit-object-name").val(e.common?translateName(e.common.name):e._id),this.$dialog.find(".edit-object-type").val(e.type),this.$dialog.find(".object-tab-acl-owner").val(e.acl.owner||"system.user.admin"),this.$dialog.find(".object-tab-acl-group").val(e.acl.ownerGroup||"system.group.administrator"),this.$dialog.find(".icon-editor").hide().appendTo(this.$dialog),a(".object-tab-common-table",e.common||{},"common",e.type),a(".object-tab-native-table",e.native||{},"native",e.type),void 0!==e.common.icon?(this.iconVal=e.common.icon,this.$dialog.find(".object-tab-common-table").prepend(this.$dialog.find(".icon-editor").show()),this.$dialog.find(".icon-editor .icon").html(c.main.getIconFromObj(e))):this.iconVal=null,this.$dialog.find(".object-tab-field-delete").on("click",function(){var n=$(this).data("part"),i=$(this).data("attr");c.main.confirmMessage(_("Delete attribute"),_("Please confirm"),"error_outline",function(e){if(e){var t=c.saveFromTabs();delete t[n][i],c.load(t)}})}),e.acl=e.acl||{},void 0===e.acl.object&&(e.acl.object=1638),this.$dialog.find("#object-tab-acl-obj-owner-read").prop("checked",1024&e.acl.object),this.$dialog.find("#object-tab-acl-obj-owner-write").prop("checked",512&e.acl.object),this.$dialog.find("#object-tab-acl-obj-group-read").prop("checked",64&e.acl.object),this.$dialog.find("#object-tab-acl-obj-group-write").prop("checked",32&e.acl.object),this.$dialog.find("#object-tab-acl-obj-every-read").prop("checked",4&e.acl.object),this.$dialog.find("#object-tab-acl-obj-every-write").prop("checked",2&e.acl.object),"state"!==e.type?this.$dialog.find(".object-tab-acl-state").hide():(this.$dialog.find(".object-tab-acl-state").show(),void 0===e.acl.state&&(e.acl.state=1638),this.$dialog.find("#object-tab-acl-state-owner-read").prop("checked",1024&e.acl.state),this.$dialog.find("#object-tab-acl-state-owner-write").prop("checked",512&e.acl.state),this.$dialog.find("#object-tab-acl-state-group-read").prop("checked",64&e.acl.state),this.$dialog.find("#object-tab-acl-state-group-write").prop("checked",32&e.acl.state),this.$dialog.find("#object-tab-acl-state-every-read").prop("checked",4&e.acl.state),this.$dialog.find("#object-tab-acl-state-every-write").prop("checked",2&e.acl.state));var t=JSON.parse(JSON.stringify(e));if(this.editor.setValue(JSON.stringify(t,null,2)),t._id&&delete t._id,t.common&&delete t.common,t.type&&delete t.type,t.native&&delete t.native,t.acl&&delete t.acl,this.$dialog.find("#view-object-rest").val(JSON.stringify(t,null," ")),this.$dialog.find("select").select(),this.$dialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),this.$dialog.find("input").on("change",function(){c.$dialogSave.removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),this.$dialog.find("select").on("change",function(){c.$dialogSave.removeClass("disabled")}),this.$dialog.find("textarea").on("change",function(){c.$dialogSave.removeClass("disabled")}).on("keyup",function(){$(this).trigger("change")}),void 0!==e.common.color){var n=Date.now(),i=this.$dialog.find('.object-tab-edit-string[data-attr="color"]').parent();i.prepend('color_lens'+_("Color")+""),i.colorpicker({component:".btn",color:i,container:!0}).colorpicker("setValue",e.common.color||"#fff").on("showPicker.colorpicker",function(){}).on("changeColor.colorpicker",function(e){100'+g.main.getIconFromObj(s[e][t])+p(s[e][t])+"");n&&(n+='
  • '),n+='
  • control_point'+_("custom group")+"
  • ",g.$gridEnum.find("#btn-new-group-"+i).html(n),g.$gridEnum.find('.btn-new-group-btn[data-target="btn-new-group-'+i+'"]').dropdown({constrainWidth:!1}),g.$gridEnum.find("#btn-new-group-"+i).find(".new-group-item").off("click").on("click",function(){var e=$(this).data("id"),t=$(this).data("enum");if(e){var n=t.replace(/[.#\\\/&?]+/g,"-");g.main.saveConfig("enums-active","enum-"+n),g.main.socket.emit("setObject",e,s[t][e],function(e){e&&g.main.showError(e)})}else v(null,t)})}else{for(t in a)a.hasOwnProperty(t)&&-1===g.list.indexOf(t)&&(n+='
  • '+g.main.getIconFromObj(a[t])+p(a[t])+"
  • ");n&&(n+='
  • '),n+='
  • control_point'+_("custom enum")+"
  • ",g.$gridEnum.find("#btn-new-enum").html(n),g.$gridEnum.find(".btn-new-enum-btn").dropdown({constrainWidth:!1}),g.$gridEnum.find(".new-enum-item").off("click").on("click",function(){var e=$(this).data("id");if(e){var t=e.replace(/[.#\\\/&?]+/g,"-");g.main.saveConfig("enums-active","enum-"+t),g.main.socket.emit("setObject",e,a[e],function(e){e&&g.main.showError(e)})}else v(null)})}}function p(e,t){var n;(n=t?e[t]:e)&&n.common&&n.common.name?n=translateName(n.common.name):n=(n=t.split(".").pop())[0].toUpperCase()+n.substring(1).toLowerCase();return n}function r(e,t,n){var i,a,s,o=g.main.objects[e],r=e.replace(/[.#\\\/&?]+/g,"-"),c='';c+='
      ';for(var l=0;l'+g.main.getIcon(g.list[l],null,null,"icon")+''+p(g.main.objects,g.list[l])+"

      "+g.list[l]+"


      ",d&&d.common&&d.common.members&&d.common.members.length)for(var m=0;m'+g.main.getIcon(i)+''+p(g.main.objects,i)+'close
    ');c+='edit',c+='delete',c+=""}c+="
    ",t.html(c),f(e),n&&t.find(".enum-collection").scrollTop(n),function(n){for(var e=g.$gridList.find('.enum-buttons[data-id="'+n+'"] .filter-input'),t={},i=0;i\n view_list\n note_add\n \n \n queue_play_next\n \n ');var t='
    ';t+='",t+="
    ";for(var a=0;a',t+="");var s={};e.find(".enum-collection").each(function(){s[$(this).data("id")]=$(this).scrollTop()});try{var o=g.$gridEnum.find(".tree-table-body .collection").find(".collection-item");try{o.droppable("instance")&&o.droppable("destroy")}catch(n){console.error(n)}}catch(n){}e.html(t),0tr.treetable-enum");e.droppable("instance")&&e.droppable("destroy")}catch(e){console.log(e)}g.$gridList.html("").removeClass("tree-table-tiles").addClass("tree-table-list"),g.$gridList.treeTable({objects:g.main.objects,root:"enum",columns:["title","name"],members:!0,colors:!0,icons:!0,widths:["calc(100% - 250px)","250px"],name:"enums",buttonsWidth:"40px",buttons:[{text:!1,icons:{primary:"ui-icon-trash"},click:function(t,e,n){g.main.objects[t]?"enum"===g.main.objects[t].type?e?g.main.confirmMessage(_("All sub-enums of %s will be deleted too?",t),null,"help",function(e){e&&g.main._delObjects(t,!0,function(e){e?b(_("Error: %s",e),!0):b(_("Deleted"))})}):g.main.confirmMessage(_("Are you sure to delete %s?",t),null,"help",function(e){e&&g.main._delObjects(t,!0,function(e){e?b(_("Error: %s",e),!0):b(_("Deleted"))})}):u(t,n):g.main.objects[n]&&"enum"===g.main.objects[n].type?u(t,n):b(_('Object "%s" does not exists. Update the page.',t))},width:26,height:20},{text:!1,icons:{primary:"ui-icon-pencil"},match:function(e){return g.main.objects[e]&&"enum"===g.main.objects[e].type},click:function(e,t,n){v(e)},width:26,height:20}],panelButtons:[{id:"tab-enums-btn-switch-tiles",title:_("change view mode"),icon:"view_module",click:function(){g.isTiles=!0,g.main.saveConfig("enumIsTiles",g.isTiles),setTimeout(function(){n()},50)}},{id:"tab-enums-list-new-enum",title:_("New enum"),icon:"note_add",click:function(){v(null)}},{id:"tab-enums-list-new-category",title:_("New category"),icon:"library_add",click:function(){v(null,g.enumEdit)}},{id:"tab-enums-list-edit",title:_("Edit"),icon:"edit",click:function(){w(!g.editMode)}}],onChange:function(e,t){if(e!==t){g.enumEdit=e;var n=g.main.objects[e];if(n&&"enum"===n.type)$("#tab-enums-list-new-enum").removeClass("disabled").attr("title",_("Create new enum, like %s","enum.newCategory")),2===e.split(".").length?g.$gridList.find("#tab-enums-list-new-category").removeClass("disabled").attr("title",_("Create new category, like %s",e+".newEnum")):g.$gridList.find("#tab-enums-list-new-category").addClass("disabled");else g.$gridList.find("#tab-enums-list-new-enum").addClass("disabled"),g.$gridList.find("#tab-enums-list-new-category").addClass("disabled")}},onReady:m}),g.$gridList.find(".tree-table-buttons a").addClass("btn-small"),g.$gridList.find("#tab-enums-list-new-enum").addClass("disabled"),g.$gridList.find("#tab-enums-list-new-category").addClass("disabled")}function l(t){if("enum"===g.main.objects[t].type){var e=function(e){for(var t=e.split("."),n=[],i=new RegExp("^"+e.replace(/\./g,"\\.")+"\\."),a=0;atr.treetable-enum").droppable({accept:".fancytree-type-draggable",over:function(e,t){if($(this).addClass("tab-accept-item"),$(this).hasClass("not-empty")&&!$(this).hasClass("expanded")){var n;$(this).data("tt-id");(n=$(this).data("timer"))&&clearTimeout(n),$(this).data("timer",setTimeout(function(){g.$gridList.treeTable("expand",$(this).data("tt-id"))},1e3))}},out:function(e,t){var n;$(this).removeClass("tab-accept-item"),(n=$(this).data("timer"))&&(clearTimeout(n),$(this).data("timer",null))},tolerance:"pointer",drop:function(e,t){$(this).removeClass("tab-accept-item"),i(t.draggable.data("id"),$(this).data("tt-id"))}}))}function y(e){if(g.editMode){var t=(e=e||g.$gridEnum.find(".tree-table-body .collection")).find(".collection-item");try{t.droppable("instance")&&t.droppable("destroy")}catch(e){console.error(e)}t.droppable({accept:".fancytree-type-draggable",over:function(e,t){$(this).addClass("tab-accept-item")},out:function(e,t){$(this).removeClass("tab-accept-item")},tolerance:"pointer",drop:function(e,t){$(this).removeClass("tab-accept-item"),i(t.draggable.data("id"),$(this).data("id"))}})}}function v(e,a){var i=!1,s=g.$gridEnum.find("#tab-enums-dialog-new"),o="",t="",n="",r="",c="",l="",d=!0;if(installFileUpload(s,5e4,function(e,t){if(e)b(e,!0);else{if(!t.match(/^data:image\//))return void b(_("Unsupported image format"),!0);s.find(".tab-enums-dialog-create").removeClass("disabled"),c=t,s.find(".tab-enums-dialog-new-icon").show().html(''),s.find(".tab-enums-dialog-new-icon img").attr("src",t),s.find(".tab-enums-dialog-new-icon-clear").show()}}),d=e?(g.main.objects[e]&&g.main.objects[e].common&&(t=translateName(g.main.objects[e].common.name),c=g.main.objects[e].common.icon,l=g.main.objects[e].common.color),n=o=e,s.find("#tab-enums-dialog-preserve-id").prop("checked",!0),!1):(s.find("#tab-enums-dialog-preserve-id").prop("checked",!1),!0),s.find(".tab-enums-dialog-new-title").text(_(a?"Create new category":n?"Rename":"Create new enum")),n){var u=n.split(".");u.length<=2&&(e=!0),n=u.pop(),a=u.join("."),r=n}s.find("#tab-enums-dialog-new-name").val(t).off("change").on("change",function(){var e=s.find("#tab-enums-dialog-new-id"),t=e.val(),n=$(this).val();n=n.replace(FORBIDDEN_CHARS,"_").replace(/\./g,"_").trim().toLowerCase(),!d||t&&i||(e.val(n),s.find("#tab-enums-dialog-new-preview").val((a||"enum")+"."+(n||"#")),M.updateTextFields("#tab-enums-dialog-new")),e.val()&&!e.val().match(/[.\s]/)?(s.find(".tab-enums-dialog-create").removeClass("disabled"),e.removeClass("wrong")):(s.find(".tab-enums-dialog-create").addClass("disabled"),e.addClass("wrong"))}).off("keyup").on("keyup",function(){$(this).trigger("change")}),s.find("#tab-enums-dialog-new-id").val(n).off("change").on("change",function(){if(!s.find("#tab-enums-dialog-preserve-id").prop("checked")){i=!0;var e=$(this).val();s.find("#tab-enums-dialog-new-preview").val((a||"enum")+"."+($(this).val()||"#")),M.updateTextFields("#tab-enums-dialog-new"),e&&!e.match(/[.\s]/)?(s.find(".tab-enums-dialog-create").removeClass("disabled"),$(this).removeClass("wrong")):(s.find(".tab-enums-dialog-create").addClass("disabled"),$(this).addClass("wrong"))}}).off("keyup").on("keyup",function(){$(this).trigger("change")}),s.find("#tab-enums-dialog-new-id").prop("disabled",!d),s.find(".tab-enums-dialog-create").addClass("disabled").off("click").text(_(o?"Change":"Create")).on("click",function(){var e,t,n,i;o?(s.find("#tab-enums-dialog-preserve-id").prop("checked")?(e="object"==typeof g.main.objects[o].common.name?g.main.objects[o].common.name:{en:o.split(".").pop()})[systemLang]=s.find("#tab-enums-dialog-new-name").val():e=s.find("#tab-enums-dialog-new-name").val(),h(o,a+"."+s.find("#tab-enums-dialog-new-id").val(),{name:e,icon:c,color:l},function(e){e?b(_("Error: %s",e),!0):b(_("Updated"))})):(t=(a||"enum")+"."+s.find("#tab-enums-dialog-new-id").val(),n={name:s.find("#tab-enums-dialog-new-name").val(),icon:c,color:l},i=function(e){e?b(_("Error: %s",e),!0,5e3):b(_("Updated"))},g.main.objects[t]?b(_("Name yet exists!"),!0):g.main.socket.emit("setObject",t,{_id:t,common:{name:n.name,members:[],icon:n.icon,color:n.color},type:"enum"},i))}),s.find("#tab-enums-dialog-new-preview").val((a||"enum")+"."+(n||"#")),c?(s.find(".tab-enums-dialog-new-icon").show().html(g.main.getIcon(o)),s.find(".tab-enums-dialog-new-icon-clear").show()):(s.find(".tab-enums-dialog-new-icon").hide(),s.find(".tab-enums-dialog-new-icon-clear").hide()),(l=l||!1)?s.find(".tab-enums-dialog-new-color").val(l):s.find(".tab-enums-dialog-new-color").val(),M.updateTextFields("#tab-enums-dialog-new"),g.main.showToast(s,_("Drop the icons here")),s.find(".tab-enums-dialog-new-upload").off("click").on("click",function(){s.find(".drop-file").trigger("click")}),s.find(".tab-enums-dialog-new-icon-clear").off("click").on("click",function(){c&&(c="",s.find(".tab-enums-dialog-new-icon").hide(),s.find(".tab-enums-dialog-create").removeClass("disabled"),s.find(".tab-enums-dialog-new-icon-clear").hide())}),s.find(".tab-enums-dialog-new-color-clear").off("click").on("click",function(){l&&(s.find(".tab-enums-dialog-create").removeClass("disabled"),s.find(".tab-enums-dialog-new-color-clear").hide(),s.find(".tab-enums-dialog-new-colorpicker").colorpicker({component:".btn",color:l,container:s.find(".tab-enums-dialog-new-colorpicker")}).colorpicker("setValue",""),l="")});var m=Date.now();try{s.find(".tab-enums-dialog-new-colorpicker").colorpicker("destroy")}catch(e){}s.find(".tab-enums-dialog-new-colorpicker").colorpicker({component:".btn",color:l,container:s.find(".tab-enums-dialog-new-colorpicker")}).colorpicker("setValue",l).on("showPicker.colorpicker",function(){var e=s.find(".modal-content");e[0].scrollTop=e[0].scrollHeight}).on("changeColor.colorpicker",function(e){100tr.treetable-enum");i.droppable("instance")&&i.droppable("destroy")}catch(e){console.error(e)}t.removeClass("red").addClass("blue"),g.$gridEnum.removeClass("tab-enums-edit")}}this.prepare=function(){this.isTiles=void 0===this.main.config.enumIsTiles||null===this.main.config.enumIsTiles||this.main.config.enumIsTiles},this._initObjectTree=function(){var e={objects:t.objects,noDialog:!0,draggable:["device","channel","state"],name:"enum-objects",expertModeRegEx:/^system\.|^yunkong2\.|^_|^[\w-]+$|^enum\.|^[\w-]+\.admin|^script\./,texts:{select:_("Select"),cancel:_("Cancel"),all:_("All"),id:_("ID"),ID:_("ID"),name:_("Name"),role:_("Role"),room:_("Room"),function:_("Function"),value:_("Value"),type:_("Type"),selectid:_("Select ID"),from:_("From"),lc:_("Last changed"),ts:_("Time stamp"),wait:_("Processing..."),ack:_("Acknowledged"),edit:_("Edit"),push:_("Trigger event"),ok:_("Ok"),with:_("With"),without:_("Without"),copyToClipboard:_("Copy to clipboard"),expertMode:_("Toggle expert mode"),refresh:_("Update"),sort:_("Sort alphabetically"),button:_("Settings"),noData:_("No data")},filter:{type:"state"},columns:["ID","name","type","role"]};o("init",e).selectId("show"),function(){var e=g.$gridEnum.find(".fancytree-container>tbody");try{e.sortable("instance")&&e.sortable("destroy")}catch(e){console.error(e)}g.$gridEnum.find(".fancytree-container>tbody").sortable({connectWith:"#tab-enums .tab-enums-list .tree-table-main.treetable",items:".fancytree-type-draggable",appendTo:g.$gridEnum,refreshPositions:!0,helper:function(e,t){return $('
    '+t.find(".fancytree-title").text()+"
    ")},zIndex:999990,revert:!1,scroll:!1,start:function(e,t){var n=t.item.prev();t.item.data("prev",n),g.$gridEnum.addClass("dragging")},stop:function(e,t){g.$gridEnum.removeClass("dragging")},update:function(e,t){var n=t.item.data("prev");n&&n.length?$(n).after(t.item):$(this).prepend(t.item)}}).disableSelection()}()},this._postInit=function(){void 0!==this.$gridList&&(this.main.objects["enum.rooms"]||(this.main.objects["enum.rooms"]={_id:"enum.rooms",common:{icon:"home",name:{en:"Rooms",de:"Räume",ru:"Комнаты",pt:"Quartos",nl:"Kamers",fr:"Pièces",it:"Camere",es:"Habitaciones",pl:"Pokoje"},desc:{en:"List of the rooms",de:"Liste der Räumen",ru:"Список комнат",pt:"Lista dos quartos",nl:"Lijst met kamers",fr:"Liste des chambres",it:"Elenco delle stanze",es:"Lista de las habitaciones",pl:"Lista pokoi"},members:[],dontDelete:!0},type:"enum",acl:{owner:"system.user.admin",ownerGroup:"system.group.administrator",permissions:1911}},g.main.socket.emit("setObject","enum.rooms",this.main.objects["enum.rooms"]),this.list.unshift("enum.rooms")),this.main.objects["enum.functions"]||(this.main.objects["enum.functions"]={_id:"enum.functions",common:{icon:"lightbulb_outline",name:{en:"Functions",de:"Funktionen",ru:"функции",pt:"Funções",nl:"functies",fr:"Les fonctions",it:"funzioni",es:"Funciones",pl:"Funkcje"},desc:{en:"List of the functions",de:"Liste der Funktionen",ru:"Список функций",pt:"Lista das funções",nl:"Lijst met functies",fr:"Liste des fonctions",it:"Elenco delle funzioni",es:"Lista de las funciones",pl:"Lista funkcji"},members:[],dontDelete:!0},type:"enum",acl:{owner:"system.user.admin",ownerGroup:"system.group.administrator",permissions:1911}},this.list.unshift("enum.functions"),g.main.socket.emit("setObject","enum.functions",this.main.objects["enum.functions"])),this.isTiles?n():c(),this.editMode?this._initObjectTree():o("destroy"))},this.init=function(e){this.inited&&!e||(this.main&&this.main.objectsLoaded?(this._postInit(),this.inited||(this.inited=!0,this.main.subscribeObjects("enum.*"))):setTimeout(function(){g.init(e)},250))},this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("enum.*")),w(!1),this.$gridList.treeTable("destroy")},this.objectChange=function(e,t,n){if(e.match(/^enum\./)){if(t)-1===this.list.indexOf(e)&&this.list.push(e);else{var i=this.list.indexOf(e);-1!==i&&this.list.splice(i,1)}this.updateTimers&&clearTimeout(this.updateTimers),this.updateTimers=setTimeout(function(){g.updateTimers=null,g._postInit()},200)}this.$grid&&o("object",e,t,n)}}function Events(g){var h=this;this.main=g,this.$tab=$("#tab-events");var e,f,p,t,b,M="yunkong2.net"===location.hostname||"yunkong2.pro"===location.hostname,y={count:0,start:0,limit:500},n=null,v={list:[],mode:!1,counter:0,overflow:!1,$counterSpan:null},w={done:!1,timer:null};this.prepare=function(){t=this.$tab.find("#event-outer"),p=this.$tab.find("#event-table"),b=this.$tab.find("#event-pause"),e=this.$tab.find("#events-table-tr"),(f=new IobListHeader(e,{list:t,colWidthOffset:1,prefix:"event-filter"})).doFilter=i,f.add("combobox","type"),f.add("edit","id","ID"),f.add("edit","val","value"),f.add("combobox","ack","ack",[{val:"",name:"all"},{val:"true",name:"ack"},{val:"false",name:"not ack"}]),f.add("combobox","from","from"),f.add("text","ts"),f.add("text","lc"),Object.defineProperty(f,"getValues",{value:function(){f.ID.selectedVal=f.ID.selectedVal.toLocaleLowerCase(),"true"===f.ack.selectedVal&&(f.ack.selectedVal=!0),"false"===f.ack.selectedVal&&(f.ack.selectedVal=!1)},enumerateble:!1}),b.on("click",function(){h.pause()}),this.$tab.find("#event-clear").off("click").on("click",function(){y.count=0,y.start=0,h.$tab.find("#event-table").html("")})},this.init=function(){M?h.$tab.find("#grid-events").html(_("You can't see events via cloud")+'
    cloud_off').addClass("no-cloud-events"):f&&(this.inited||(!function e(){if(!$.fn.colResizable)return;t.is(":visible")?(t.colResizable({liveDrag:!0,partialRefresh:!0,marginLeft:5,postbackSafe:!0,onResize:function(e){return f.syncHeader()}}),f.syncHeader()):setTimeout(function(){e()},200)}(),this.inited=!0,this.main.subscribeObjects("*"),this.main.subscribeStates("*")))};var j=!(this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("*"),this.main.unsubscribeStates("*"))});function N(){w.timer=null,$(window).trigger("resize.JColResizer")}function i(){n&&(clearTimeout(n),n=null),f.getValues&&f.getValues(),p&&p.find(".event-line").each(function(e){var t=!0,n=$(this);f.type.selectedVal&&!n.hasClass("event-type-"+f.type.selectedVal)?t=!1:f.from.selectedVal&&!n.hasClass("event-from-"+f.from.selectedVal)?t=!1:""===f.ack.selectedVal||n.hasClass("event-ack-"+f.ack.selectedVal)?f.ID.selectedVal&&-1===$(this).find("td.event-column-id").text().toLocaleLowerCase().indexOf(f.ID.selectedVal)?t=!1:""!==f.value.selectedVal&&-1===$(this).find("td.event-column-value").text().indexOf(f.value.selectedVal)&&(t=!1):t=!1,t?n.show():n.hide()})}this.add=function(e,t,n,i){if(!M){var a,s,o,r,c=i?"stateChange":n?"message":"objChange",l="";if(f&&(f.getValues&&f.getValues(),f.type.checkAddOption(c)),w.done||(w.timer||(w.timer=setTimeout(N,1e3)),20=h.limit){y.start++;var d=document.getElementById("event_"+y.start);d&&(d.outerHTML="")}else y.count++;n||i?i&&(t?(t.from=t.from||"",t.from=t.from.replace("system.adapter.",""),t.from=t.from.replace("system.",""),f&&f.from.checkAddOption(t.from,function(e){return{val:e.replace(/\./g,"-"),name:e}}),l=t.from,void 0!==(a=JSON.stringify(t.val))&&30'+a.substring(0,30)+"..."),s=t.ack?"true":"false",o=g.formatDate(t.ts),r=g.formatDate(t.lc)):(a="deleted",o=g.formatDate(new Date))):o=t?(void 0!==(a=JSON.stringify(t,"\n",2))&&30'+a.substring(0,30)+"..."),g.formatDate(t.ts)):(a="deleted",g.formatDate(new Date));var u=!0;f&&(f.type.selectedVal&&f.type.selectedVal!==c?u=!1:f.ID.selectedVal&&-1===e.toLocaleLowerCase().indexOf(f.ID.selectedVal)?u=!1:""!==f.value.selectedVal&&null!=a&&-1===a.indexOf(f.value.selectedVal)?u=!1:""!==f.ack.selectedVal&&f.ack.selectedVal!==s?u=!1:f.from.selectedVal&&f.from.selectedVal!==l&&(u=!1));var m='';m+=""+c+"",m+=''+e+"",isNaN(a)?m+=''+(a||"")+"":m+=''+(a||"")+"",m+=""+(s||"")+"",m+=""+(l||"")+"",m+=""+(o||"")+"",m+=""+(r||"")+"",m+="",v.mode?(v.list.push(m),v.counter++,v.counter>y.limit&&(v.overflow||(b.addClass("red lighten3").attr("title",_("Message buffer overflow. Losing oldest")),v.overflow=!0),v.list.shift()),v.$counterSpan.html(v.counter)):p&&(p.prepend(m),j||"#tab-events"!==window.location.hash&&"#events"!==window.location.hash||(f&&f.syncHeader(),j=!0))}},this.pause=function(){if(v.mode){v.mode=!1;for(var e=0;epause')}else b.addClass("yellow btn-pause-button-active"),v.$counterSpan=b,v.$counterSpan.html("0"),v.counter=0,v.mode=!0}}function fileHandler(e){e.preventDefault();var t=e.dataTransfer?e.dataTransfer.files[0]:e.target.files[0],n=$(this).find(".drop-zone"),i=$(this).data("drop-zone-cb"),a=$(this).data("limit");if(t.size>(a||1e4))return i&&i(_("File is too big!")),n.hide(),!1;n.show();var s=new FileReader;s.onload=function(e){n.hide(),i&&i(null,e.target.result)},s.readAsDataURL(t)}function installFileUpload(e,t,n){if(void 0!==window.FileReader&&!e.data("installed")){e.data("installed",!0),e.prepend('');var i=e.find(".drop-zone");e[0].ondragover=function(){return i.off("click"),i.show(),!1},i[0].ondragleave=function(){return i.hide(),!1},i[0].ondrop=fileHandler.bind(e[0])}e.data("drop-zone-cb",n),e.data("limit",t),e.find(".drop-file").on("change",fileHandler.bind(e[0]))}function Hosts(s){var r=this;function n(e){var t=$("#dialog-host-update");if(e){var n=e.path,i=(n=n.replace(/\\/g,"/")).split("/");i.pop(),i.pop(),"linux"===e.platform||"darwin"===e.platform||"freebsd"===e.platform||"lin"===e.platform?t.find("#dialog-host-update-instructions").val("cd "+i.join("/")+"\nsudo yunkong2 stop\nsudo yunkong2 update\nsudo yunkong2 upgrade self\nsudo yunkong2 start"):t.find("#dialog-host-update-instructions").val("cd "+i.join("\\")+"\nyunkong2 stop\nyunkong2 update\nyunkong2 upgrade self\nyunkong2 start")}else t.find("#dialog-host-update-instructions").val("cd /opt/yunkong2\nsudo yunkong2 stop\nsudo yunkong2 update\nsudo yunkong2 upgrade self\nsudo yunkong2 start");t.data("inited")||(t.data("inited",!0),t.modal()),t.modal("open")}function i(e){if(e=(e||"").toLowerCase().trim()){var t=!1;r.$tab.find(".hosts-host").each(function(){-1!==$(this).data("host-filter").toLowerCase().indexOf(e)?($(this).show(),t=!0):$(this).hide()}),t?r.$tab.find(".hosts-host-filtered-out").hide():r.$tab.find(".hosts-host-filtered-out").show()}else r.$tab.find(".hosts-host").show(),r.$tab.find(".hosts-host-filtered-out").hide()}function a(e){var t=r.main.objects[r.list[e].id],n=r.main.states[t._id+".alive"]&&r.main.states[t._id+".alive"].val&&"null"!==r.main.states[t._id+".alive"].val;t.common=t.common||{},t.native=t.native||{};var i='';i+='
    ',i+=''+r.main.getHostIcon(t)+"",i+=''+t.common.hostname+"",i+=''+t.common.type+"";var a=t.common.titleLang||t.common.title;return"object"==typeof a&&(a=a[systemLang]||a.en),i+=''+a+"",i+=''+(t.native.os?t.native.os.platform:_("unknown"))+"",i+='',i+=''+t.common.installedVersion+"",r.main.states[t._id+".inputCount"]?i+='⇥'+r.main.states[t._id+".inputCount"].val+' / ↦'+r.main.states[t._id+".outputCount"].val+"":i+=' / ',i+='',i+=""}function o(e){var t,n=r.main.objects[r.list[e].id],i=r.main.states[n._id+".alive"]&&r.main.states[n._id+".alive"].val&&"null"!==r.main.states[n._id+".alive"].val;n.common=n.common||{},n.native=n.native||{},n.common.color&&(t=r.main.invertColor(n.common.color));var a='
    '+r.main.getHostIcon(n," ")+'
    '+n.common.hostname+'
    • '+r.words.Type+': '+n.common.type+'
    • '+r.words.Title+': '+n.common.title+'
    • '+r.words.OS+': '+(n.native.os?n.native.os.platform:_("unknown"))+'
    • '+r.words.Available+':
    • '+r.words.Installed+': '+n.common.installedVersion+"
    • ";return r.main.states[n._id+".inputCount"]?a+='
    • '+r.words.Events+': ⇥'+r.main.states[n._id+".inputCount"].val+' / ↦'+r.main.states[n._id+".outputCount"].val+"
    • ":a+='
    • '+r.words.Events+': /
    • ',a+='
    edit autorenew',n.common.hostname!==r.main.currentHost&&(a+=' delete'),a+='
    '}this.main=s,this.list=[],this.$tab=$("#tab-hosts"),this.$grid=this.$tab.find("#hosts"),this.$table=this.$tab.find("#grid-hosts"),this.inited=!1,this.isTiles=!0,this.words={},this.prepare=function(){this.isTiles=void 0===this.main.config.hostsIsTiles||null===this.main.config.hostsIsTiles||this.main.config.hostsIsTiles,"ie"===this.main.browser&&this.main.browserVersion<=10&&(this.isTiles=!1,this.$tab.find(".btn-switch-tiles").hide()),this.$tab.find(".btn-reload").attr("title",_("Update")).on("click",function(){r.init(!0)}),this.$tab.find(".btn-switch-tiles").off("click").on("click",function(){r.isTiles=!r.isTiles,r.isTiles?$(this).find("i").text("view_list"):$(this).find("i").text("view_module"),r.main.saveConfig("hostsIsTiles",r.isTiles),setTimeout(function(){r._postInit()},50)}),this.isTiles?this.$tab.find(".btn-switch-tiles").find("i").text("view_list"):this.$tab.find(".btn-switch-tiles").find("i").text("view_module"),this.$tab.find(".filter-clear").on("click",function(){r.$tab.find(".filter-input").val("").trigger("change")});var e=this.$tab.find(".filter-input");e.on("change",function(){var e=$(this).val();e?($(this).addClass("input-not-empty"),r.$tab.find(".filter-clear").show()):(r.$tab.find(".filter-clear").hide(),$(this).removeClass("input-not-empty")),r.main.saveConfig("hostsFilter",e),i(e)}).on("keyup",function(){r.filterTimeout&&clearTimeout(r.filterTimeout),r.filterTimeout=setTimeout(function(){r.$tab.find(".filter-input").trigger("change")},300)}),this.main.config.hostsFilter&&"{"!==this.main.config.hostsFilter[0]?(e.val(r.main.config.hostsFilter).addClass("input-not-empty"),this.$tab.find(".filter-clear").show()):this.$tab.find(".filter-clear").hide(),this.words.Title=_("Title"),this.words.OS=_("OS"),this.words.Available=_("Available"),this.words.Installed=_("Installed"),this.words.Events=_("Events"),this.words.Title=_("Title"),r.words.Type=_("Type")},this.initButtons=function(e){var t=e?'[data-host-id="'+e+'"]':"";this.$tab.find(".host-update-submit"+t).off("click").on("click",function(){r.main.cmdExec($(this).attr("data-host-name"),"upgrade self",function(e){e||r.init(!0)})}),this.$tab.find(".host-restart-submit"+t).off("click").on("click",function(){r.main.waitForRestart=!0,r.main.cmdExec($(this).attr("data-host-name"),"_restart")}),this.$tab.find(".host-delete"+t).off("click").on("click",function(){r.main.cmdExec(r.main.currentHost,"host remove "+$(this).attr("data-host-name"))}),this.$tab.find(".host-edit"+t).off("click").on("click",function(){!function(t){var n=$("#tab-host-dialog-edit"),e="",i="",a="";installFileUpload(n,5e4,function(e,t){if(e)r.main.showToast(n,e);else{if(!t.match(/^data:image\//))return void r.main.showToast(n,_("Unsupported image format"));n.find(".tab-host-dialog-ok").removeClass("disabled"),i=t,n.find(".tab-host-dialog-edit-icon").show().html(''),n.find(".tab-host-dialog-edit-icon img").attr("src",t),n.find(".tab-host-dialog-edit-icon-clear").show()}}),r.main.objects[t]&&r.main.objects[t].common&&("object"==typeof(e=r.main.objects[t].common.title)&&(e=e[systemLang]||e.en),i=r.main.objects[t].common.icon,a=r.main.objects[t].common.color);n.find("#tab-host-dialog-edit-title").val(e).off("change").on("change",function(){n.find(".tab-host-dialog-ok").removeClass("disabled")}).off("keyup").on("keyup",function(){$(this).trigger("change")}),n.find(".tab-host-dialog-ok").addClass("disabled").off("click").on("click",function(){var e=JSON.parse(JSON.stringify(r.main.objects[t]));e.common.title=n.find("#tab-host-dialog-edit-title").val(),e.common.icon=i,e.common.color=a,JSON.stringify(e)!==JSON.stringify(r.main.objects[t])?r.main.socket.emit("setObject",e._id,e,function(e){r.main.showToast(n,_("Updated"))}):r.main.showToast(n,_("Nothing changed"))}),i?(n.find(".tab-host-dialog-edit-icon").show().html(r.main.getIcon(t)),n.find(".tab-host-dialog-edit-icon-clear").show()):(n.find(".tab-host-dialog-edit-icon").hide(),n.find(".tab-host-dialog-edit-icon-clear").hide());(a=a||!1)?n.find(".tab-host-dialog-edit-color").val(a):n.find(".tab-host-dialog-edit-color").val();M.updateTextFields("#tab-host-dialog-edit"),r.main.showToast(n,_("Drop the icons here")),n.find(".tab-host-dialog-edit-upload").off("click").on("click",function(){n.find(".drop-file").trigger("click")}),n.find(".tab-host-dialog-edit-icon-clear").off("click").on("click",function(){i&&(i="",n.find(".tab-host-dialog-edit-icon").hide(),n.find(".tab-host-dialog-ok").removeClass("disabled"),n.find(".tab-host-dialog-edit-icon-clear").hide())}),n.find(".tab-host-dialog-edit-color-clear").off("click").on("click",function(){a&&(n.find(".tab-host-dialog-ok").removeClass("disabled"),n.find(".tab-host-dialog-edit-color-clear").hide(),n.find(".tab-host-dialog-edit-colorpicker").colorpicker({component:".btn",color:a,container:n.find(".tab-host-dialog-edit-colorpicker")}).colorpicker("setValue",""),a="")});var s=Date.now();try{n.find(".tab-host-dialog-edit-colorpicker").colorpicker("destroy")}catch(e){}n.find(".tab-host-dialog-edit-colorpicker").colorpicker({component:".btn",color:a,container:n.find(".tab-host-dialog-edit-colorpicker")}).colorpicker("setValue",a).on("showPicker.colorpicker",function(){var e=n.find(".modal-content");e[0].scrollTop=e[0].scrollHeight}).on("changeColor.colorpicker",function(e){100'+e+"").appendTo('.admin-sidemenu-items[data-tab="tab-hosts"] a')}else $("#updates-for-hosts").remove()},this._postInit=function(){if(void 0!==r.$grid){this.isTiles?function(){for(var e="",t=0;t
    '+_("Filtered out")+"
    ")}():function(){for(var e="",t=0;t'+_("Filtered out")+"")}(),i(this.$tab.find(".filter-input").val());var s=setTimeout(function(){console.warn("Timeout for repository"),s=null,r.initButtons()},2e3),e=r.main.currentHost;if(!e)for(var t=0;t↦'+t.val+"")):e.match(/^system\.host\..+\.inputCount$/)&&(e=e.substring(0,e.length-11),this.$tab.find('.host-in[data-host-id="'+e+'"]').html('↦'+t.val+""))}}function Instances(i){var p=this;function b(e,t,n,i,a){if("protocol"===n&&(n="secure"),"ip"===e)i=i.replace("%"+e+"%",location.hostname);else if("instance"===e)i=i.replace("%"+e+"%",a);else if(t){n.match(/^native_/)&&(n=n.substring(7));var s=t.native[n];"bind"!==e||s&&"0.0.0.0"!==s||(s=location.hostname),i="secure"===n?i.replace("%"+e+"%",s?"https":"http"):-1===i.indexOf("%"+e+"%")?i.replace("%native_"+e+"%",s):i.replace("%"+e+"%",s)}else i="secure"===n?i.replace("%"+e+"%","http"):-1===i.indexOf("%"+e+"%")?i.replace("%native_"+e+"%",""):i.replace("%"+e+"%","");return i}function o(e,t,n){var i,a,s,o=e.match(/%(\w+)%/g);if(o){for(a=o.length-1;0<=a;a--)s=(i=(i=o[a]).replace(/%/g,"")).split("_"),i.match(/^native_/)?(e=b(i,p.main.objects["system.adapter."+t+"."+n],i,e,n),o.splice(a,1)):1===s.length?(e=b(i,p.main.objects["system.adapter."+t+"."+n],s[0],e,n),o.splice(a,1)):s[0].match(/\.[0-9]+$/)&&(e=b(i,p.main.objects["system.adapter."+s[0]],s[1],e,n),o.splice(a,1));var r,c,l={},d=s[0];for(a=0;a',r+=''+_("Connected to host: ")+'',p.main.states[e+".connected"]&&p.main.states[e+".connected"].val?r+=''+_("true")+"":r+=_("false"),r+='',r+=''+_("Heartbeat: ")+'',p.main.states[e+".alive"]&&p.main.states[e+".alive"].val?r+=''+_("true")+"":r+=_("false"),r+="",p.main.states[n+"."+i+".info.connection"]||p.main.objects[n+"."+i+".info.connection"])r+=''+_("Connected to %s: ",n)+"",r+=(c=!!p.main.states[n+"."+i+".info.connection"]&&p.main.states[n+"."+i+".info.connection"].val)?!0===c?''+_("true")+"":''+c+"":_("false"),r+="";r+=""}else{var c;if(r='',r+='",p.main.states[n+"."+i+".info.connection"]||p.main.objects[n+"."+i+".info.connection"])r+='";r+="
    '+_("Connected to host: ")+'',p.main.states[e+".connected"]&&p.main.states[e+".connected"].val?r+=''+_("true")+"":(r+="daemon"===s.mode?''+_("false")+"":_("false"),o="daemon"===s.mode?"red":"blue"),r+='
    '+_("Heartbeat: ")+'',p.main.states[e+".alive"]&&p.main.states[e+".alive"].val?r+=''+_("true")+"":(r+="daemon"===s.mode?''+_("false")+"":_("false"),o="daemon"===s.mode?"red":"blue"),r+="
    '+_("Connected to %s: ",n)+"",(c=!!p.main.states[n+"."+i+".info.connection"]&&p.main.states[n+"."+i+".info.connection"].val)?r+=!0===c?''+_("true")+"":''+c+"":(o="red"===o?"red":"orange",r+=''+_("false")+""),r+="
    "}o="blue"===o?"":o,a.removeClass("led-red led-green led-orange led-blue").addClass("led-"+o).data("title",r),a.data("inited")||"gray"===o||(a.data("inited",!0),a.hover(function(){var e='
    '+$(this).data("title")+"
    ",t=$(e);t.insertAfter($(this)),$(this).data("big",t[0]);var n=parseFloat(t.height()),i=Math.round($(this).position().top-(n-parseFloat($(this).height()))/2);n+i>(window.innerHeight||document.documentElement.clientHeight)&&(i=(window.innerHeight||document.documentElement.clientHeight)-n),i<0&&(i=0),t.css({top:i}).on("click",function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)})},function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)}).on("click",function(){$(this).trigger("hover")}))}function r(){for(var e=p.main.states["system.host."+p.main.currentHost+".memRss"],t=1,n=e?e.val:0,i=0;i'+n+"");var r=_("%s processes",t),c=p.$tab.find("#running_processes");r!==c.text()&&c.html(''+r+"")}function c(){p.main.states["system.host."+p.main.currentHost+".memAvailable"]?p.memState="memAvailable":p.main.states["system.host."+p.main.currentHost+".freemem"]&&(p.memState="freemem");var e=p.main.states["system.host."+p.main.currentHost+"."+p.memState];if(e){p.totalmem=p.totalmem||p.main.objects["system.host."+p.main.currentHost].native.hardware.totalmem/1048576;var t=Math.round(e.val/p.totalmem*100),n=p.$tab.find("#freeMem"),i=tdp(e.val);i!==n.text()&&(n.html(''+i+""),p.$tab.find("#freeMemPercent").html(''+t+"%"))}else p.$tab.find(".free-mem-label").hide()}function l(){var e=p.main.states["system.host."+p.main.currentHost+".diskSize"],t=p.main.states["system.host."+p.main.currentHost+".diskFree"],n=p.main.states["system.host."+p.main.currentHost+".diskWarning"];if(t&&t.val&&e&&e.val){n=n?parseFloat(n.val):5;var i=p.$tab.find("#diskFree"),a=Math.round(t.val/e.val*1e3)/10;i.html(''+a+""),i.parent().attr("title",_("Size: %s, Free: %s",p.main.formatBytes(1024*e.val*1024),p.main.formatBytes(1024*t.val*1024)))}else p.$tab.find(".tab-instances-info-disk").hide()}function M(e){var t,n=p.main.objects[e]&&p.main.objects[e].common||{};return t=n.enabled&&"daemon"===n.mode&&p.main.states[e+".memRss"]?(t=p.main.states[e+".memRss"].val,t=parseFloat(t)||0,n.memoryLimitMB&&n.memoryLimitMB<=t?''+t.toFixed(1)+" MB":t.toFixed(1)+" MB"):""}function d(e,t,n,i){var a,s=p.main.objects[t]&&p.main.objects[t].common||{},o=t.split("."),r=o[2],c=o[3];if("tile"===n)a=i?"":'
    ',a+=i?"":"
    ";else{a=i?"":'';var l=s.localLinks||s.localLink||"",d=l?p.replaceInLink(l,r,c):"";l&&(l="object"==typeof d?'':''),a+='
    ',a+=""+(s.icon?l+'':"")+(l?"
    ":"")+"",a+=''+r+"."+c+"";var u=s.onlyWWW||s.enabled;a+='',a+=''+(d?'':"")+"";var m=s.titleLang||s.title;if("object"==typeof m&&(m=m[systemLang]||m.en),a+=''+(m||"")+"",1'+(s.host||"")+""}a+=''+("schedule"===s.mode&&s.schedule||"")+"",p.main.config.expertMode&&(a+=''+(s.restartSchedule||"")+"",a+=''+(s.loglevel||"")+"",a+=''+(s.memoryLimitMB||"")+"",u&&p.main.states[t+".inputCount"]&&p.main.states[t+".outputCount"]?a+='⇥'+p.main.states[t+".inputCount"].val+' / ↦'+p.main.states[t+".outputCount"].val+"":a+=' / '),a+=''+M(t)+"",a+=i?"":""}i?p.$tab.find('.instance-adapter[data-instance-id="'+t+'"]').html(a):e.append(a),p.initButtons(t,d),f(t),p.$tab.find('.instance-editable[data-instance-id="'+t+'"]').on("click",y).addClass("select-id-quick-edit"),p.$tab.find('.instance-schedule[data-instance-id="'+t+'"]').each(function(){$(this).find("button").length||($(this).append(''),$(this).find("button").on("click",function(){var n=$(this).data("name"),i=$(this).data("instance-id");!function(e,t){e=(e||"").replace(/"/g,"").replace(/'/g,"");try{setupCron(e,t)}catch(e){alert(_("Cannot parse value as cron"))}}(p.main.objects[i].common[n]||"",function(e){if(null!==e){var t={common:{}};t.common[n]=e,p.main.socket.emit("extendObject",i,t,function(e){e&&p.main.showError(e)})}})}))}),p.$tab.find('.instance-name[data-instance-id="'+t+'"]').on("click",function(){var e=p.$tab.find('.instance-settings[data-instance-id="'+$(this).data("instance-id")+'"]');e.hasClass("small-button-empty")||e.trigger("click")}).css("cursor","pointer")}function u(e){void 0===e&&(e=p.$tab.find(".instances-filter").val());var t=[];if(e)for(var n=new RegExp(e),i=0;i';for(var u=0;u'+(m[1]||m[0])+""}c+=""}c=c||'';var g=null;t.html(c+'
    ');var h=n?t.find("select"):t.find("input");t.find(".select-id-quick-edit-cancel").off("click").on("click",function(e){g&&clearTimeout(g),g=null,e.preventDefault(),e.stopPropagation(),t.html(o).off("click").on("click",y).addClass("select-id-quick-edit").css("text-align",r)}),t.find(".select-id-quick-edit-ok").off("click").on("click",function(){t.trigger("blur")}),h.val(s),h.blur(function(){g&&clearTimeout(g),g=setTimeout(function(){g=null;var n=$(this).val();s=JSON.stringify(n)!==JSON.stringify(s)?(p.main.socket.emit("getObject",i,function(e,t){t?(t.common=t.common||{},t.common[a]=n,"title"===a&&t.common.titleLang&&delete t.common.titleLang,p.main.socket.emit("setObject",t._id,t,function(e){e&&p.main.showError(e)})):console.log("Object "+i+" does not exist: "+e)}),''+s+""):o,t.html(s).off("click").on("click",y).addClass("select-id-quick-edit").css("text-align",r)}.bind(this),100)}).on("keyup",function(e){13===e.which&&$(this).trigger("blur"),27===e.which&&(void 0===s&&(s=""),t.html(s).off("click").on("click",y).addClass("select-id-quick-edit").css("text-align",r))}),"object"==typeof e&&(e.preventDefault(),e.stopPropagation()),setTimeout(function(){h.focus()},100)}this.$tab=$("#tab-instances"),this.$grid=$("#grid-instances"),this.$gridHead=$("#grid-instances-head"),this.inited=!1,this.main=i,this.list=[],this.hostsText=null,this.filterHost=!1,this.memState="memAvailable",window.tdp||(window.tdp=function(e,t){return isNaN(e)?"":e.toFixed(t||0).replace(".",",").replace(/\B(?=(\d{3})+(?!\d))/g,".")}),this.replaceInLink=function(e,t,n){if("object"!=typeof e)return o(e,t,n);var i,a=JSON.parse(JSON.stringify(e));for(var s in a)a.hasOwnProperty(s)&&(a[s]=o(a[s],t,n),i||(i=a[s]));return a.__first=i,a},this.prepare=function(){var e=p.$tab.find(".instances-filter"),t=p.$tab.find(".instances-filter-clear");e.on("change",function(){var e=$(this).val();e?($(this).addClass("input-not-empty"),t.show()):($(this).removeClass("input-not-empty"),t.hide()),p.main.saveConfig("instancesFilter",e),u(e)}).on("keyup",function(){p.filterTimeout&&clearTimeout(p.filterTimeout),p.filterTimeout=setTimeout(function(){e.trigger("change")},300)}),p.main.config.instancesFilter&&"{"!==p.main.config.instancesFilter[0]?(e.addClass("input-not-empty").val(p.main.config.instancesFilter),t.show()):t.hide(),p.$tab.find(".btn-instances-expert-mode").on("click",function(){p.main.config.expertMode=!p.main.config.expertMode,p.main.saveConfig("expertMode",p.main.config.expertMode),p.updateExpertMode(),p.main.tabs.adapters.updateExpertMode()}),p.main.config.expertMode&&p.$tab.find(".btn-instances-expert-mode").addClass("red lighten-3"),p.$tab.find(".btn-instances-reload").on("click",function(){p.init(!0,!0)}),t.on("click",function(){e.val("").trigger("change")}),this.$tab.find(".btn-instances-host").off("click").on("click",function(){p.filterHost=!p.filterHost,p.filterHost?p.$tab.find(".btn-instances-host").addClass("red lighten-3"):p.$tab.find(".btn-instances-host").removeClass("red lighten-3"),p.main.saveConfig("instancesFilterHost",p.filterHost),setTimeout(function(){u()},50)}),this.filterHost=this.main.config.instancesFilterHost||!1,this.filterHost?this.$tab.find(".btn-instances-host").addClass("red lighten-3"):this.$tab.find(".btn-instances-host").removeClass("red lighten-3")},this.updateExpertMode=function(){p.init(!0),p.main.config.expertMode?p.$tab.find(".btn-instances-expert-mode").addClass("red lighten-3"):p.$tab.find(".btn-instances-expert-mode").removeClass("red lighten-3")},this.replaceLink=function(n,i,a,s){var o;(n=n.replace(/%/g,"")).match(/^native_/)&&(n=n.substring(7)),-1===n.indexOf("_")?o=[i+"."+a,n]:(o=n.split("_"))[0].match(/\.[0-9]+$/)||(o[0]+=".0"),"protocol"===o[1]&&(o[1]="secure"),"instance"!==n?this.main.socket.emit("getObject","system.adapter."+o[0],function(e,t){t&&setTimeout(function(){var e;(e=s?p.$tab.find("#"+s).data("src"):p.$tab.find("#a_"+i+"_"+a).attr("href"))&&(e="secure"===o[1]?e.replace("%"+n+"%",t.native[o[1]]?"https":"http"):-1===e.indexOf("%"+n+"%")?e.replace("%native_"+n+"%",t.native[o[1]]):e.replace("%"+n+"%",t.native[o[1]]),s?p.$tab.find("#"+s).data("src",e):p.$tab.find("#a_"+i+"_"+a).attr("href",e))},0)}):setTimeout(function(){var e;e=(e=s?p.$tab.find("#"+s).data("src"):p.$tab.find("#a_"+i+"_"+a).attr("href")).replace("%instance%",a),s?p.$tab.find("#"+s).data("src",e):p.$tab.find("#a_"+i+"_"+a).attr("href",e)},0)},this._replaceLink=function(n,i,a,s,o){var r;(i=i.replace(/%/g,"")).match(/^native_/)&&(i=i.substring(7)),-1===i.indexOf("_")?r=[a+"."+s,i]:(r=i.split("_"))[0].match(/\.[0-9]+$/)||(r[0]+=".0"),"protocol"===r[1]&&(r[1]="secure"),this.main.socket.emit("getObject","system.adapter."+r[0],function(e,t){n=t&&n?"secure"===r[1]?n.replace("%"+i+"%",t.native[r[1]]?"https":"http"):-1===n.indexOf("%"+i+"%")?n.replace("%native_"+i+"%",t.native[r[1]]):n.replace("%"+i+"%",t.native[r[1]]):(console.log("Cannot get link "+r[1]),n.replace("%"+i+"%","")),setTimeout(function(){o(n,a,s)},0)})},this._replaceLinks=function(e,t,n,i,a){if(!e)return a(e,t,n,i);var s=e.match(/%(\w+)%/g);return s?"%ip%"===s[0]?(e=e.replace("%ip%",location.hostname),void this._replaceLinks(e,t,n,i,a)):"%instance%"===s[0]?(e=e.replace("%instance%",n),void this._replaceLinks(e,t,n,i,a)):void this._replaceLink(e,s[0],t,n,function(e,t,n){this._replaceLinks(e,t,n,i,a)}.bind(this)):a(e,t,n,i)},this._postInit=function(e,t){if(this.main.currentHost&&void 0!==this.$grid&&(!this.$grid.data("inited")||e)){this.$grid.data("inited",!0),this.list.sort();for(var n=[],i=this.list.length-1;0<=i;i--)this.main.objects[this.list[i]]&&this.main.objects[this.list[i]].common&&!this.main.objects[this.list[i]].common.localLink&&!this.main.objects[this.list[i]].common.localLinks&&this.main.objects[this.list[i]].common.noConfig&&(n.push(this.list[i]),this.list.splice(i,1));for(this.list.sort(),n.sort(),i=0;i",o+=''+_("instance")+"",o+='',o+='',o+=''+_("actions")+"",o+=''+_("title")+"",1'+_("host")+""),o+=''+_("schedule_group")+"",p.main.config.expertMode&&(o+=''+_("restart")+"",o+=''+_("loglevel")+"",o+=''+_("memlimit")+"",o+=''+_("events")+""),o+=''+_("RAM usage")+"",p.$gridHead.html(o),this.$grid.html("");for(var a=Date.now(),s=0;s'+_("Filtered out")+""),p.$tab.find("#currentHost").html(this.main.currentHost),1'+s+"")}else"outputCount"===i?p.$tab.find('.instance-out[data-instance-id="'+e+'"]').html('↦'+t.val+""):"inputCount"===i&&p.$tab.find('.instance-in[data-instance-id="'+e+'"]').html('⇥'+t.val+"");if(-1!==this.list.indexOf(e))return void("alive"!==i&&"connected"!==i||f(e));e="system.adapter."+n[0]+"."+n[1],-1!==this.list.indexOf(e)&&"connection"===i&&f(e)}}},this.objectChange=function(e,t,n){if(e.match(/^system\.adapter\.[-\w]+\.[0-9]+$/))if(t)-1===this.list.indexOf(e)?(this.list.push(e),this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){p.updateTimer=null,p.init(!0)},200),t.common.noConfig||setTimeout(function(){-1===window.location.hash.indexOf("/config/")&&p.main.navigate({tab:"instances",dialog:"config",params:e})},2e3)):-1!==e.indexOf(".web.")?(this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){p.updateTimer=null,p.init(!0)},200)):this.$grid.find('.instance-adapter[data-instance-id="'+e+'"]').html(d(this.$grid,e,this.main.config.instanceForm,!0));else{var i=this.list.indexOf(e);-1!==i&&(this.list.splice(i,1),this.$grid.find('.instance-adapter[data-instance-id="'+e+'"]').remove())}else e.match(/^system\.host\.[-\w]+$/)&&(this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(function(){p.updateTimer=null,p.init(!0)},200))},this.initButtons=function(e,t){e=e?'[data-instance-id="'+e+'"]':"";var n=p.$grid.find(".instance-edit"+e).off("click").on("click",function(){p.onEdit($(this).attr("data-instance-id"))});n.find(".ui-button-icon-primary").length||n.attr("title",_("edit")),(n=p.$grid.find(".instance-settings"+e).off("click").on("click",function(){p.main.navigate({tab:"instances",dialog:"config",params:$(this).data("instance-id")})})).each(function(){var e=$(this).attr("data-instance-id");i.objects[e]&&i.objects[e].common&&i.objects[e].common.noConfig&&$(this).addClass("disabled")}),n=p.$grid.find(".instance-reload"+e).off("click").on("click",function(){p.main.socket.emit("extendObject",$(this).attr("data-instance-id"),{},function(e){e&&p.main.showError(e)})}),n=p.$grid.find(".instance-del"+e).off("click").on("click",function(){var t=$(this).attr("data-instance-id");if(p.main.objects[t]&&p.main.objects[t].common&&p.main.objects[t].common.host){var e=t.replace(/^system\.adapter\./,"");p.main.confirmMessage(_("Are you sure you want to delete the instance %s?",e),null,"help",function(e){e&&p.main.cmdExec(p.main.objects[t].common.host,"del "+t.replace("system.adapter.",""),function(e){e||p.main.tabs.adapters.init(!0)})})}}),n=p.$grid.find(".instance-issue"+e).off("click").on("click",function(){p.main.navigate({tab:"instances",dialog:"issue",params:$(this).data("instance-id")})}),p.$grid.find(".instance-image"+e).each(function(){$(this).data("installed")||($(this).data("installed",!0),$(this).hover(function(){var e='
    ',t=$(e);t.insertAfter($(this)),$(this).data("big",t[0]);var n=parseFloat(t.height()),i=Math.round($(this).position().top-(n-parseFloat($(this).height()))/2);n+i>(window.innerHeight||document.documentElement.clientHeight)&&(i=(window.innerHeight||document.documentElement.clientHeight)-n),i<0&&(i=0),t.css({top:i})},function(){var e=$(this).data("big");$(e).remove(),$(this).data("big",void 0)}))}),(n=p.$grid.find(".instance-stop-run"+e).off("click").on("click",function(){var e=$(this).attr("data-instance-id");$(this).addClass("disabled"),p.main.socket.emit("extendObject",e,{common:{enabled:!p.main.objects[e].common.enabled}},function(e){e&&p.main.showError(e)})})).find(".ui-button-icon-primary").length||n.each(function(){var e=$(this).attr("data-instance-id");p.main.objects[e].common.enabled?n.addClass("instance-running").attr("title",_("Activated. Click to stop.")).find("i").html("pause"):n.removeClass("instance-running").attr("title",_("Deactivated. Click to start.")).find("i").html("play_arrow")}),n=p.$grid.find(".instance-web"+e).off("click").on("click",function(){var e=$(this).data("link");if("object"==typeof e){var t="";for(var n in e)if(e.hasOwnProperty(n)&&"__first"!==n){var i=e[n].match(/^https?:\/\/[-.\w]+:(\d+)\/?/),a=e[n].match(/^https:\/\//);t+='"}t+='";var s=$("#instances-menu");s.data("inited")&&s.menu("destroy");var o=$(this).position();s.html(t),s.data("inited")||(s.data("inited",!0),s.mouseleave(function(){$(this).hide()})),s.menu().css({left:o.left,top:o.top}).show(),s.find(".instances-menu-link").off("click").on("click",function(){$(this).data("link")&&window.open($(this).data("link"),$(this).data("instance-id")),$("#instances-menu").hide()})}else window.open($(this).data("link"),$(this).data("instance-id"))}),"object"==typeof t&&n.data("link",t)},this.resize=function(e,t){}}function Intro(e){var T=this;function t(e){var t=Math.floor(e/86400);e%=86400;var n=Math.floor(e/3600);n<10&&(n="0"+n),e%=3600;var i=Math.floor(e/60);i<10&&(i="0"+i),e%=60,(e=Math.floor(e))<10&&(e="0"+e);var a="";return t&&(a+=t+" "+_("daysShortText")+" "),a+=n+":"+i+":"+e}this.$tab=$("#tab-intro"),this.$tiles=this.$tab.find(".tab-intro-cards"),this.main=e,this.inited=!1,this.$template=$("#intro-template");var d={Uptime:t,"System uptime":t,RAM:function(e){var t=Math.floor(e/1073741824*10)/10;e%=1073741824;var n=Math.floor(e/1048576*10)/10,i="";return i+=1");$(this).append(t),t.val($(this).data("clippy")),t.trigger("select"),document.execCommand("copy"),t.remove(),e.preventDefault(),e.stopPropagation(),T.main.showToast(T.$tiles,_("copied"))}function C(e){var t,c=T.$template.clone();if(c.removeAttr("id"),c.addClass("card-system-info"),c.find(".btn-small").addClass("disabled"),c.find(".card-titles").text(e.name),c.find(".btn-card-enabled").data("host",e.id),!1===T.main.systemConfig.common.intro[e.id]){if(!T.$tab.hasClass("edit-active"))return null;c.addClass("card-disabled").find(".btn-card-enabled").removeClass("blue").addClass("gray").find("i").text("close")}T.main.objects[e.id]&&T.main.objects[e.id].common&&(t=T.main.objects[e.id].common.icon),c.find(".card-image-img").attr("src",t||"img/no-image.png"),c.find(".card-content-text").html('
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    ');var l=setTimeout(function(){l&&(l=null,c.find(".btn-small").addClass("disabled"),c.find(".card-content-text").html(_("offline")))},6e3);return d["Disk size"]=d["Disk size"]||T.main.formatBytes,d["Disk free"]=d["Disk size"]||T.main.formatBytes,T.main.socket.emit("sendToHost",e.id,"getHostInfo",null,function(e){clearTimeout(l),l=null,"permissionError"===e?console.error('May not read "getHostInfo"'):e?c.find(".btn-small").removeClass("disabled"):console.error('Cannot read "getHostInfo"');var t=T.main.states["system.host."+T.main.currentHost+".diskWarning"];t=t?parseFloat(t.val):5;var n=0"+_(a)+": ",i+=''+(d[a]?d[a](e[a]):e[a]||" --")+"");n&&(i+="
  • "+_("Disk free")+": ",i+=''+(d["Disk free"]?d["Disk free"](e["Disk free"]):e["Disk free"]||" --")+"
  • ",i+="
  • "+_("Disk size")+": ",i+=''+(d["Disk size"]?d["Disk size"](e["Disk size"]):e["Disk size"]||" --")+"
  • "),i+=""}i+="",c.find(".card-content-text").replaceWith($(i)),i='
    '+_("Info")+'
    content_copyclose';var s=[];if(e){for(var o in i+="
      ",e)if(e.hasOwnProperty(o)){i+="
    • "+_(o)+": ";var r=d[o]?d[o](e[o]):e[o];s.push(o+": "+r),i+="Disk free"===o&&n?''+r+"
    • ":''+r+""}i+="
    "}i+="
    ",c.find(".card-reveal").replaceWith($(i)),T.$tab.hasClass("edit-active")?c.find(".btn-small").hide():c.find(".btn-info").data("clippy",s.join("\r\n")).on("click",u)}),c}function D(e,t,n,i,a,s,o){var r=T.$template.clone();r.removeAttr("id");var c=a.replace(/^https?:\/\//,""),l=c.indexOf("/");if(-1!==l&&(c=c.substring(0,l)),"admin"===e&&c===location.host)return null;if("web"===e)return null;if("vis-web-admin"!==e&&e.match(/^vis-/))return null;if(e.match(/^icons-/))return null;if(i&&i.noIntro)return null;r.find(".btn-card-enabled").data("instance",e+"."+t+(n&&n.name?"."+n.name:"")).data("web",s),o?r.on("click",function(){T.$tab.hasClass("edit-active")||window.open($(this).find(".url").attr("href"))}):r.addClass("card-disabled").find(".btn-card-enabled").removeClass("blue").addClass("gray").find("i").text("close"),r.find(".url").attr("href","object"==typeof a?a._first:a||"").text(c+(s?" ("+s+")":"")),r.find(".card-image-img").attr("src",i.icon?"adapter/"+e+"/"+i.icon:"img/no-image.png"),n&&n.color&&r.find(".card-image").css("background",n.color);var d=n&&n.name||i.titleLang||i.title;"object"==typeof d&&(d=d[systemLang]||d.en),r.find(".card-titles").text(d||e);var u=i.desc;return"object"==typeof u&&(u=u[systemLang]||u.en),r.find(".card-content-text").text(u||""),r}function n(e,i){!function(e,t){var n,i,a,s=JSON.parse(JSON.stringify(e)),o=[];s.sort(function(e,t){return e=T.main.objects[e]&&T.main.objects[e].common,t=(t=T.main.objects[t]&&T.main.objects[t].common)||{},void 0===(e=e||{}).order&&void 0===t.order?e.name.toLowerCase()>t.name.toLowerCase()?1:e.name.toLowerCase()t.order?1:e.ordert.name.toLowerCase()?1:e.name.toLowerCase()\n \n');$.getJSON("https://api.github.com/repos/"+i[3]+"/"+i[4]+"/issues",function(e){var t=!1;for(var n in r.empty(),e)if(e.hasOwnProperty(n)){if("remove"===n)break;var i=e[n];if(!i.hasOwnProperty("pull_request")){t=!0;var a=$("#issueTable").children().clone(!0,!0);a.find(".collapsible-header-title").text(i.title),a.find(".goto").attr("href",i.html_url),a.find(".user").text(i.user.login),a.find(".form-row").html((new showdown.Converter).makeHtml(i.body).replace(/src="/g,'class="responsive-img" src="'));var s=new Date(new Date(i.created_at));if(a.find(".created").text(s.toLocaleDateString(systemLang,{weekday:"short",year:"numeric",month:"long",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})),0'+i.labels[o].name+"")}r.append(a),0}}t||r.append($('
  • '+_("No bug")+"

  • "))}).done(a.$dialogIssue.find(".collapsible").collapsible())}a.$dialogIssue.data("name",t),a.$dialogIssue.find(".title").html(_("Known bugs for")+": "+t),a.$dialogIssue.find(".dialog-system-buttons .btn-add").attr("href","https://github.com/"+i[3]+"/"+i[4]+"/issues/new"),a.$dialogIssue.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(e){e.stopPropagation(),e.preventDefault(),a.main.navigate()})}},this.destroy=function(){this.inited&&(this.$dialogIssue.find(".collapsible").collapsible("destroy"),this.inited=!1)}}function Logs(t){var c=this;this.main=t,this.$tab=$("#tab-logs");var s,l,o,d,r={count:0,start:0,limit:2e3},u={host:"",severity:"",message:""},m={list:[],mode:!1,counter:0,overflow:!1,$counterSpan:null};this.prepare=function(){l=this.$tab.find("#log-outer"),s=this.$tab.find("#log-table"),o=this.$tab.find("#log-pause"),(d=new IobListHeader("log-outer-header",{list:l,colWidthOffset:1,prefix:"log-filter"})).doFilter=c.filter,d.add("combobox","from","host"),d.add("text","Time"),d.add("combobox","","severity",[{val:"",name:"debug"},{val:"silly",name:"silly"},{val:"info",name:"info"},{val:"warn",name:"warn"},{val:"error",name:"error"}]).$filter.attr("title",_("severity")),d.add("edit","Message","message"),this.$tab.find("#log-clear-on-disk").on("click",function(){c.main.confirmMessage(_("Log file will be deleted. Are you sure?"),null,null,function(e){e&&c.main.socket.emit("sendToHost",t.currentHost,"delLogs",null,function(e){e?c.main.showError(e):c.clear()})})}).addClass("ui-state-error"),this.$tab.find("#log-refresh").on("click",function(){c.clear()}),o.attr("title",_("Pause output")).on("click",function(){c.pause()}),m.$counterSpan=o.find("ui-button-text"),this.$tab.find("#log-clear").on("click",function(){c.clear(!1)}),$("#log-copy-text").on("click",function(){$(this).hide().html("")}),this.$tab.find("#log-copy").on("click",function(){var e=''+_("copy note")+"";$("#log-copy-text").show().html(e+'
    '+s.html()+"
    ");for(var t=c.$tab.find("#log-copy-table").find(".log-column-4"),n=0;n'+a+"")}t.sort();for(var s=0;s'+o+"")}c.$tab.find("#log-files-btn").show().dropdown(),c.$tab.find("#log-files").html(n).find("a").on("click",function(){var e=$(this).data("value");e&&($(this).val(""),window.open(e,"_blank").focus())})}else c.$tab.find("#log-files").hide(),c.$tab.find("#log-files-btn").hide()})},0)})}else setTimeout(function(){c.init(e)},100)},this.destroy=function(){this.inited&&(this.inited=!1,this.main.subscribeLogs(!1))},this.add=function(e){if(s){if(e.message.substring(0,e.from.length)===e.from&&(e.message=e.message.substring(e.from.length+1)),m.mode)return m.list.push(e),m.counter++,m.counter>r.limit&&(m.overflow||(o.addClass("ui-state-error").attr("title",_("Message buffer overflow. Losing oldest")),m.overflow=!0),m.list.shift()),void m.$counterSpan.html(tdp(m.counter));if(r.count>=r.limit){var t=document.getElementById("log-line-"+(r.start+1));t&&(t.outerHTML=""),r.start++}else r.count++;e.from&&d&&d.host.checkAddOption(e.from,function(e){return{val:e.replace(/\./g,"-"),name:e}});var n="",i=e.from?e.from.replace(/\./g,"-"):"";u.host&&u.host!==i&&(n="display: none"),!n&&u.severity&&("debug"===u.severity&&"silly"===e.severity?n="display: none":"info"!==u.severity||"debug"!==e.severity&&"silly"!==e.severity?"warn"===u.severity&&"warn"!==e.severity&&"error"!==e.severity?n="display: none":"error"===u.severity&&"error"!==e.severity&&(n="display: none"):n="display: none"),!n&&u.message&&-1===e.message.indexOf(u.message)&&(n="display: none"),"error"===e.severity&&(c.$tabLogs=c.$tabLogs||$('a[href="#tab-logs"]'),c.$tabLogs.addClass("errorLog"));var a='';a+=''+(e.from||"")+"",a+=''+this.main.formatDate(e.ts)+"",a+=''+e.severity+"",a+=''+e.message.substring(0,200).replace(/&/g,"&").replace(//g,">")+"",s.prepend(a)}},this.filter=function(){u.host=d.host.val(),u.message=d.message.val(),u.severity=d.severity.val(),"error"===u.severity?(l.find(".log-severity-silly").hide(),l.find(".log-severity-debug").hide(),l.find(".log-severity-info").hide(),l.find(".log-severity-warn").hide()):("warn"===u.severity?(l.find(".log-severity-silly").hide(),l.find(".log-severity-debug").hide(),l.find(".log-severity-info").hide()):("info"===u.severity?(l.find(".log-severity-silly").hide(),l.find(".log-severity-debug").hide()):("silly"===u.severity?l.find(".log-severity-silly").show():l.find(".log-severity-silly").hide(),l.find(".log-severity-debug").show()),l.find(".log-severity-info").show()),l.find(".log-severity-warn").show()),l.find(".log-severity-error").show(),(u.host||u.message)&&l.find(".log-line").each(function(){u.host&&!$(this).hasClass("log-from-"+u.host)?$(this).hide():u.message&&-1===$(this).html().indexOf(u.message)&&$(this).hide()})},this.clear=function(e){void 0===e&&(e=!0),s.html(""),r.count=0,r.start=0,c.$tabLogs=c.$tabLogs||$('a[href="#tab-logs"]'),c.$tabLogs.removeClass("errorLog"),e&&setTimeout(function(){c.init(e)},0)},this.pause=function(){if(m.mode){m.mode=!1;for(var e=0;epause')}else o.addClass("yellow btn-pause-button-active"),m.$counterSpan=o,m.$counterSpan.html("0"),m.counter=0,m.mode=!0}}function Issue(e){var a=this;this.$dialog=$("#dialog-issue"),this.main=e,this.prepare=function(){},this.init=function(){if(!this.inited){this.inited=!0,showdown.setFlavor("github");var e=this.main.navigateGetParams(),t=e.replace(/^system\.adapter\./,""),n=this.main.objects[e];if(n&&n.common&&n.common.extIcon){var i=n.common.extIcon.split("/"),r=$("#result-issue");r.html('
    \n \n
    ');$.getJSON("https://api.github.com/repos/"+i[3]+"/"+i[4]+"/issues",function(e){var t=!1;for(var n in r.empty(),e)if(e.hasOwnProperty(n)){if("remove"===n)break;var i=e[n];if(!i.hasOwnProperty("pull_request")){t=!0;var a=$("#issueTable").children().clone(!0,!0);a.find(".collapsible-header-title").text(i.title),a.find(".goto").attr("href",i.html_url),a.find(".user").text(i.user.login),a.find(".form-row").html((new showdown.Converter).makeHtml(i.body).replace(/src="/g,'class="responsive-img" src="'));var s=new Date(new Date(i.created_at));if(a.find(".created").text(s.toLocaleDateString(systemLang,{weekday:"short",year:"numeric",month:"long",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})),0'+i.labels[o].name+"")}r.append(a),0}}t||r.append($('
  • '+_("No bug")+"

  • "))}).done(a.$dialog.find(".collapsible").collapsible())}a.$dialog.data("name",t),a.$dialog.find(".title").html(_("Known bugs for")+": "+t),a.$dialog.find(".dialog-system-buttons .btn-add").attr("href","https://github.com/"+i[3]+"/"+i[4]+"/issues/new"),a.$dialog.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(e){e.stopPropagation(),e.preventDefault(),a.main.navigate()})}},this.destroy=function(){this.inited&&(this.$dialog.find(".collapsible").collapsible("destroy"),this.inited=!1)}}function Objects(e){var c=this;this.$grid=$("#grid-objects"),this.subscribes={},this.main=e;var o=function(){if(c.$grid&&c.$grid.selectId)return o=c.$grid.selectId.bind(c.$grid),c.$grid.selectId.apply(c.$grid,arguments)};function r(t,e,n){for(var i=c.main.tabs.enums.list,a=[],s=0;s').show():o.$divLogo.html("").hide(),c(n.readme),c(n.changeLog),c(n.license),n.readme.length?n.readme=r(n.readme.join("\n"),t):n.readme="",n.changeLog.length?n.changeLog=r(n.changeLog.join("\n"),t):delete n.changeLog,n.license.length?(n.license[0]="## "+n.license[0],n.license=r(n.license.join("\n"),t)):delete n.license,n}(e,i.substring(0,i.lastIndexOf("/")+1));o.$divReadme.html(n.readme),n.changeLog?(o.$divChangeLog.html(n.changeLog),o.$tabs.find(".tab-changelog").show()):(o.$divChangeLog.html(""),o.$tabs.find(".tab-changelog").hide()),n.license?(o.$divLicense.html(n.license),o.$tabs.find(".tab-license").show()):(o.$divLicense.html(""),o.$tabs.find(".tab-license").hide())}).done(function(){o.$divReadme.on("click",".md-link",function(e){e.stopPropagation(),e.preventDefault(),o.fillDiv($(this).data("url"))}),o.$divReadme.on("click",".goto-link",function(e){e.stopPropagation(),e.preventDefault();var t=$($(this).data("goto"));t.length&&o.$divReadme.animate({scrollTop:o.$divReadme.scrollTop()-o.$divReadme.offset().top+t.offset().top},2e3)})})},this.destroy=function(){this.inited&&(localStorage.removeItem("original-md-url"),this.inited=!1)}}function initMap(){gMain.dialogs.system.mapLoaded=!0,gMain.dialogs.system.updateMap(!0)}function System(s){var a,o,r,c,l=this;this.$dialog=$("#dialog-system"),this.main=s,this.systemRepos=null,this.systemCerts=null;var d=!(this.mapLoaded=!1);function u(e,t){if(t.length<700&&(-1!==t.indexOf("/")||-1!==t.indexOf("\\")))return t;if(t.length<"-----BEGIN CERTIFICATE-----==-----END CERTIFICATE-----".length)return h(_('Invalid certificate "%s". To short.',e),!0),"";var n=[];if("-----BEGIN RSA PRIVATE KEY-----"===t.substring(0,"-----BEGIN RSA PRIVATE KEY-----".length)){if("-----END RSA PRIVATE KEY-----"!==t.substring(t.length-"-----END RSA PRIVATE KEY-----".length))return h(_('Certificate "%s" must end with "-----END RSA PRIVATE KEY-----".',e),!0),"";for(t=(t=(t=t.substring("-----BEGIN RSA PRIVATE KEY-----".length)).substring(0,t.length-"-----END RSA PRIVATE KEY-----".length)).replace(/\s/g,"");t.length;)n.push(t.substring(0,64)),t=t.substring(64);return"-----BEGIN RSA PRIVATE KEY-----\r\n"+n.join("\r\n")+"\r\n-----END RSA PRIVATE KEY-----\r\n"}if("-----BEGIN PRIVATE KEY-----"===t.substring(0,"-----BEGIN PRIVATE KEY-----".length)){if("-----END PRIVATE KEY-----"!==t.substring(t.length-"-----END PRIVATE KEY-----".length))return h(_('Certificate "%s" must end with "-----BEGIN PRIVATE KEY-----".',e),!0),"";for(t=(t=(t=t.substring("-----BEGIN PRIVATE KEY-----".length)).substring(0,t.length-"-----END PRIVATE KEY-----".length)).replace(/\s/g,"");t.length;)n.push(t.substring(0,64)),t=t.substring(64);return"-----BEGIN PRIVATE KEY-----\r\n"+n.join("\r\n")+"\r\n-----END PRIVATE KEY-----\r\n"}if("-----BEGIN CERTIFICATE-----"!==t.substring(0,"-----BEGIN CERTIFICATE-----".length))return h(_('Certificate "%s" must start with "-----BEGIN CERTIFICATE-----".',e),!0),"";if("-----END CERTIFICATE-----"!==t.substring(t.length-"-----END CERTIFICATE-----".length))return h(_('Certificate "%s" must end with "-----END CERTIFICATE-----".',e),!0),"";for(var i=t.split("-----END CERTIFICATE-----"),a=i.length-1;0<=a;a--)if(i[a].replace(/[\r\n|\r|\n]+/,"").trim()){for(t=(t=(t=i[a]).substring("-----BEGIN CERTIFICATE-----".length)).replace(/\s/g,""),n=[];t.length;)n.push(t.substring(0,64)),t=t.substring(64);i[a]="-----BEGIN CERTIFICATE-----\r\n"+n.join("\r\n")+"\r\n-----END CERTIFICATE-----\r\n"}else i.splice(a,1);return i.join("")}function m(e,t){for(var n,i=table2values("tab-system-certs"),a=[],s=0;s'+i[a].name+""),t===i[a].name&&(n=!0);n&&e.val(t);e.select()}()}}),l.systemRepos.nonEdit&&l.systemRepos.nonEdit.native&&l.systemRepos.nonEdit.native.repositories){var i=l.$dialog.find("#grid-repos");i.find("input").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),i.find("select").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),i.find(".btn-floating").each(function(){$(this).addClass("disabled")}),l.$dialog.find("#tab-system-repo .table-button-add").addClass("disabled")}}else l.$dialog.find("#tab-system-repo").html(_("permissionError"))}function h(e,t,n){l.main.showToast(l.$dialog.find("#tab-system-certs"),e,null,n,t)}function f(){var n=l.main.systemConfig.common,i=!1,a=!1;!function(){l.main.systemConfig.common.defaultNewAcl=l.main.systemConfig.common.defaultNewAcl||{};var e=l.main.systemConfig.common.defaultNewAcl,t=JSON.stringify(e);e.object=0,e.object|=l.$dialog.find("#tab-system-acl-obj-owner-read").prop("checked")?1024:0,e.object|=l.$dialog.find("#tab-system-acl-obj-owner-write").prop("checked")?512:0,e.object|=l.$dialog.find("#tab-system-acl-obj-group-read").prop("checked")?64:0,e.object|=l.$dialog.find("#tab-system-acl-obj-group-write").prop("checked")?32:0,e.object|=l.$dialog.find("#tab-system-acl-obj-every-read").prop("checked")?4:0,e.object|=l.$dialog.find("#tab-system-acl-obj-every-write").prop("checked")?2:0,e.owner=l.$dialog.find("#tab-system-acl-owner").val(),e.ownerGroup=l.$dialog.find("#tab-system-acl-group").val(),e.state=0,e.state|=l.$dialog.find("#tab-system-acl-state-owner-read").prop("checked")?1024:0,e.state|=l.$dialog.find("#tab-system-acl-state-owner-write").prop("checked")?512:0,e.state|=l.$dialog.find("#tab-system-acl-state-group-read").prop("checked")?64:0,e.state|=l.$dialog.find("#tab-system-acl-state-group-write").prop("checked")?32:0,e.state|=l.$dialog.find("#tab-system-acl-state-every-read").prop("checked")?4:0,e.state|=l.$dialog.find("#tab-system-acl-state-every-write").prop("checked")?2:0,e.file=0,e.file|=l.$dialog.find("#tab-system-acl-file-owner-read").prop("checked")?1024:0,e.file|=l.$dialog.find("#tab-system-acl-file-owner-write").prop("checked")?512:0,e.file|=l.$dialog.find("#tab-system-acl-file-group-read").prop("checked")?64:0,e.file|=l.$dialog.find("#tab-system-acl-file-group-write").prop("checked")?32:0,e.file|=l.$dialog.find("#tab-system-acl-file-every-read").prop("checked")?4:0,e.file|=l.$dialog.find("#tab-system-acl-file-every-write").prop("checked")?2:0,JSON.stringify(e)}(),l.$dialog.find(".system-settings.value").each(function(){var e=$(this),t=e.attr("id");t&&(t=t.substring("system_".length),"checkbox"===e.attr("type")?n[t]=e.prop("checked"):("language"===t&&n.language!==e.val()&&(i=!0),"activeRepo"===t&&n.activeRepo!==e.val()&&(a=!0),n[t]=e.val(),"isFloatComma"===t&&(n[t]="true"===n[t]||!0===n[t])))});var e={};if(l.systemRepos){for(var t in l.systemRepos.native.repositories)l.systemRepos.native.repositories.hasOwnProperty(t)&&"object"==typeof l.systemRepos.native.repositories[t]&&l.systemRepos.native.repositories[t].json&&(e[l.systemRepos.native.repositories[t].link]=l.systemRepos.native.repositories[t].json);l.systemRepos.native.repositories={}}var s=table2values("tab-system-repo");if(l.systemRepos){for(var o=null,r=0;r'+n+"");else l.$dialog.find("#tab-system-repo").html(_("permissionError"));l.$dialog.find("#diagMode").val(l.main.systemConfig.common.diag).on("change",function(){l.main.socket.emit("sendToHost",l.main.currentHost,"getDiagData",$(this).val(),function(e){l.$dialog.find("#diagSample").html(JSON.stringify(e,null,2))})}).trigger("change");var i=l.$dialog.find("#system_defaultHistory");i.html('');for(var a=0;a'+s.instances[a].substring("system.adapter.".length)+"");r=l.main.systemConfig.common.longitude,c=l.main.systemConfig.common.latitude,o||(o=!0,d?(l.mapLoaded=!0,$.ajax({url:"lib/js/ol.js",dataType:"script",cache:!0}).done(function(){setTimeout(l.updateMap,500)}),$.ajax({url:"lib/css/ol.css",success:function(e){$("head").append("")}})):$.ajax({url:"https://maps.googleapis.com/maps/api/js?key=AIzaSyCIrBRZfZAE_0C1OplAUy7OXhiWLoZc3eY&signed_in=true&callback=initMap",dataType:"script",cache:!0})),l.$dialog.find(".system-settings.value").each(function(){var e=$(this),t=e.attr("id");t&&(t=t.substring("system_".length),"checkbox"===e.attr("type")?e.prop("checked",l.main.systemConfig.common[t]):"isFloatComma"===t?e.val(l.main.systemConfig.common[t]?"true":"false"):e.val(l.main.systemConfig.common[t]),l.main.systemConfig.nonEdit&&l.main.systemConfig.nonEdit.common&&void 0!==l.main.systemConfig.nonEdit.common[t]&&(e.addClass("disabled"),e.prop("disabled",!0)))}),l.$dialog.find("#system_latitude").off("change").on("change",function(){c=$(this).val(),l.updateMap()}).off("keyup").on("keyup",function(){$(this).trigger("change")}),l.$dialog.find("#system_longitude").off("change").on("change",function(){r=$(this).val(),l.updateMap()}).off("keyup").on("keyup",function(){$(this).trigger("change")}),l.systemCerts.native.letsEncrypt||(l.systemCerts.native.letsEncrypt={path:"letsencrypt"}),l.$dialog.find(".system-le-settings.value").each(function(){var e=$(this),t=e.data("name");l.systemCerts&&l.systemCerts.native.letsEncrypt&&("checkbox"===e.attr("type")?e.prop("checked",l.systemCerts.native.letsEncrypt[t]):e.val(l.systemCerts.native.letsEncrypt[t])),l.systemCerts.nonEdit&&l.systemCerts.nonEdit.native&&l.systemCerts.nonEdit.native.letsEncrypt&&void 0!==l.systemCerts.nonEdit.native.letsEncrypt[t]&&(e.addClass("disabled"),e.prop("disabled",!0))}),l.$dialog.find("#tabs-system").find(".tabs").mtabs({onShow:function(e){e&&p($(e).attr("id"))}}),l.$dialog.find(".dialog-system-buttons .btn-save").off("click").on("click",f),l.$dialog.find(".dialog-system-buttons .btn-cancel").off("click").on("click",function(){l.main.navigate()}),g(),function(){l.main.systemConfig.common.defaultNewAcl=l.main.systemConfig.common.defaultNewAcl||{};for(var e,t=l.main.systemConfig.common.defaultNewAcl,n="",i=0;i'+(e||l.main.tabs.users.list[i])+"";for(l.$dialog.find("#tab-system-acl-owner").html(n).val(t.owner||"system.user.admin"),n="",i=0;i'+(e||l.main.tabs.users.groups[i])+"";l.$dialog.find("#tab-system-acl-group").html(n).val(t.ownerGroup||"system.group.administrator"),void 0===t.object&&(t.object=1636),l.$dialog.find("#tab-system-acl-obj-owner-read").prop("checked",1024&t.object),l.$dialog.find("#tab-system-acl-obj-owner-write").prop("checked",512&t.object),l.$dialog.find("#tab-system-acl-obj-group-read").prop("checked",64&t.object),l.$dialog.find("#tab-system-acl-obj-group-write").prop("checked",32&t.object),l.$dialog.find("#tab-system-acl-obj-every-read").prop("checked",4&t.object),l.$dialog.find("#tab-system-acl-obj-every-write").prop("checked",2&t.object),void 0===t.state&&(t.state=1636),l.$dialog.find("#tab-system-acl-state-owner-read").prop("checked",1024&t.state),l.$dialog.find("#tab-system-acl-state-owner-write").prop("checked",512&t.state),l.$dialog.find("#tab-system-acl-state-group-read").prop("checked",64&t.state),l.$dialog.find("#tab-system-acl-state-group-write").prop("checked",32&t.state),l.$dialog.find("#tab-system-acl-state-every-read").prop("checked",4&t.state),l.$dialog.find("#tab-system-acl-state-every-write").prop("checked",2&t.state),void 0===t.file&&(t.file=1636),l.$dialog.find("#tab-system-acl-file-owner-read").prop("checked",1024&t.file),l.$dialog.find("#tab-system-acl-file-owner-write").prop("checked",512&t.file),l.$dialog.find("#tab-system-acl-file-group-read").prop("checked",64&t.file),l.$dialog.find("#tab-system-acl-file-group-write").prop("checked",32&t.file),l.$dialog.find("#tab-system-acl-file-every-read").prop("checked",4&t.file),l.$dialog.find("#tab-system-acl-file-every-write").prop("checked",2&t.file),l.$dialog.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")})}(),function(){var e,t=l.$dialog.find("#tab-system-certs");if(l.systemCerts&&l.systemCerts.native.certificates){var n=[];for(var i in l.systemCerts.native.certificates)l.systemCerts.native.certificates.hasOwnProperty(i)&&n.push({name:i,certificate:(e=l.systemCerts.native.certificates[i],e.replace(/(?:\\[rn]|[\r\n]+)+/g,""))});if(values2table("tab-system-certs",n,{onChange:function(e){l.$dialog.find(".btn-save").removeClass("disabled")}}),l.systemCerts.nonEdit&&l.systemCerts.nonEdit.native&&l.systemCerts.nonEdit.native.certificates){var a=l.$dialog.find("#grid-certs");a.find("input").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),a.find("select").each(function(){$(this).prop("disabled",!0).addClass("disabled")}),a.find(".btn-floating").each(function(){$(this).addClass("disabled")})}}else t.html(_("permissionError"));installFileUpload(t,1e4,function(e,t){if(e)h(e,!0);else{try{t=atob(t.split(",")[1])}catch(e){return void h(_("Cannot read file!"),!0)}if(-1!==(t=t.replace(/(\r\n|\n|\r)/gm,"")).indexOf("BEGIN RSA PRIVATE KEY"))m("private",t);else if(-1!==t.indexOf("BEGIN PRIVATE KEY"))m("private",t);else if(-1!==t.indexOf("BEGIN CERTIFICATE")){for(var n=t.split("-----END CERTIFICATE-----"),i=0,a=0;a'),c.find(".tab-dialog-new-icon .treetable-icon").attr("src",t),c.find(".tab-dialog-new-icon-clear").show()}}),"string"==typeof e&&(g.main.objects[e]&&g.main.objects[e].common&&(l.name=g.main.objects[e].common.name,l.icon=g.main.objects[e].common.icon,l.color=g.main.objects[e].common.color,l.desc=g.main.objects[e].common.desc,(o="group"===g.main.objects[e].type)&&(l.acl=g.main.objects[e].common.acl)),d=e,l.id=e),c.find(".tab-dialog-new-title").text(!0===e?_("Create new group"):l.id?_("Change"):_("Create new user")),l.id){var t=l.id.split(".");l.id=t.pop(),s=t.join(".")}c.find("#tab-users-dialog-new-name").val(translateName(l.name)).off("change").on("change",function(){var e=g.$grid.find("#tab-users-dialog-new-id"),t=e.val(),n=$(this).val();n=n.trim().replace(FORBIDDEN_CHARS,"_").replace(/\./g,"_").toLowerCase(),t&&a||!(o&&"administrator"!==t&&"user"!==t||!o&&"admin"!==t)||(e.val(n),i=n,c.find("#tab-users-dialog-new-preview").val(s+"."+(n||"#")),M.updateTextFields("#tab-users-dialog-new")),b(c)}).off("keyup").on("keyup",function(){$(this).trigger("change")}),c.find("#tab-users-dialog-new-desc").val(l.desc).off("change").on("change",function(){b(c)}).off("keyup").on("keyup",function(){$(this).trigger("change")}),i=l.id,c.find("#tab-users-dialog-new-id").val(l.id).off("change").on("change",function(){var e=$(this).val();i!==e&&(a=!0,i=e,c.find("#tab-users-dialog-new-preview").val(s+"."+(e||"#")),M.updateTextFields("#tab-users-dialog-new"),b(c))}).off("keyup").on("keyup",function(){$(this).trigger("change")}),c.find(".tab-dialog-create").addClass("disabled").off("click").text(_(d?"Change":"Create")).on("click",function(e){var n;l.name=c.find("#tab-users-dialog-new-name").val(),l.id=c.find("#tab-users-dialog-new-id").val(),l.desc=c.find("#tab-users-dialog-new-desc").val(),o?(n=l.acl,g.$grid.find(".edit-group-permissions").each(function(){var e=$(this).data("type"),t=$(this).data("operation");n[e]=n[e]||{},n[e][t]=$(this).prop("checked")}),function(i,a,s){if("system.group.administrator"===a&&"administrator"!==s.id)return i.stopPropagation(),u(_('Cannot change name of "%s"',"administrator"),!0);if("system.group.user"===a&&"user"!==s.id)return i.stopPropagation(),u(_('Cannot change name of "%s"',"user"),!0);if(!s.id)return i.stopPropagation(),u(_("ID may not be empty"),!0);if(a)if("system.group."+s.id!==a){if(g.main.objects["system.group."+s.id])return i.stopPropagation(),u(_("ID yet exists"),!0);g.main.socket.emit("getObject",a,function(e,t){if(e)h(_("Cannot change group: ")+e,!0);else{var n=s.id;t.common.name=s.name,t.common.color=s.color,t.common.icon=s.icon,t.common.desc=s.desc,delete s.id,g.main.socket.emit("delObject",a,function(e){e?(h(_("Cannot rename group: ")+e,!0),i.stopPropagation()):g.main.socket.emit("setObject",n,t,function(e){e?h(_("Cannot change group: ")+e,!0):h(_("Updated"))})})}})}else delete s.id,g.main.socket.emit("extendObject",a,{common:s},function(e,t){e?h(_("Cannot change group: ")+e,!0):h(_("Updated"))});else{if(!s.id)return i.stopPropagation(),u(_("ID may not be empty"),!0);g.main.socket.emit("addGroup",s.id,s.desc,null,function(e,t){e?h(_("Cannot create group: ")+e,!0):g.main.socket.emit("extendObject",t._id,{common:s},function(e){e?h(_("Cannot add group: ")+e,!0):h(_("Created"))})})}}(e,d,l)):(delete l.acl,r(e,d,l))}),c.find("#tab-users-dialog-new-preview").val(s+"."+(l.id||"#")),l.icon?(c.find(".tab-dialog-new-icon").show().html(g.main.getIcon(d)),c.find(".tab-dialog-new-icon-clear").show()):(c.find(".tab-dialog-new-icon").hide(),c.find(".tab-dialog-new-icon-clear").hide()),l.color=l.color||!1,l.color?c.find(".tab-dialog-new-color").val(l.color):c.find(".tab-dialog-new-color").val(),u(_("Drop the icons here")),c.find(".tab-dialog-new-upload").off("click").on("click",function(){c.find(".drop-file").trigger("click")}),c.find(".tab-dialog-new-icon-clear").off("click").on("click",function(){l.icon&&(l.icon="",c.find(".tab-dialog-new-icon").hide(),c.find(".tab-dialog-new-icon-clear").hide(),b(c))}),c.find(".tab-dialog-new-color-clear").off("click").on("click",function(){l.color&&(b(c),c.find(".tab-dialog-new-color-clear").hide(),c.find(".tab-dialog-new-colorpicker").colorpicker({component:".btn",color:l.color,container:c.find(".tab-dialog-new-colorpicker")}).colorpicker("setValue",""),l.color="")});var n=Date.now();try{c.find(".tab-dialog-new-colorpicker").colorpicker("destroy")}catch(e){}c.find(".tab-dialog-new-colorpicker").colorpicker({component:".btn",color:l.color,container:c.find(".tab-dialog-new-colorpicker")}).colorpicker("setValue",l.color).on("showPicker.colorpicker",function(){var e=c.find(".modal-content");e[0].scrollTop=e[0].scrollHeight}).on("changeColor.colorpicker",function(e){100'+_(a+" permissions")+"",i+='';for(var s=0;s"+t[s]+"":i+="";i+="",i+="";for(var o=0;o'}else i+="";i+=""}i+="",c.find("#tab-users-dialog-new-rights").html(i),c.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=$(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),c.find('input[type="checkbox"]').off("change").on("change",function(){b(c)}),m(d,l.acl),M.updateTextFields("#tab-users-dialog-new")}),c.find("ul.tabs .tab-dialog-new-tabs").show()):(c.find("ul.tabs .tab-dialog-new-tabs").each(function(){$(this).find('a[href="#tab-users-dialog-new-rights"]').length&&$(this).hide()}),M.updateTextFields("#tab-users-dialog-new")),c.find("ul.tabs").mtabs(),g.main.noSelect||c.find("ul.tabs").mtabs("select","tab-users-dialog-new-main"),c.modal().modal("open")}function t(){g.list.sort(),g.groups.sort();var e="";e+='
      ';for(var t=function(e,t){for(var n={},i=0;i'+g.main.getIcon(c)+l+'close'}var d="",u=!1;a.color&&(d="background: "+a.color+"; ",g.main.invertColor(a.color)&&(u=!0,d+="color: white;"));var m=a.desc;"object"==typeof m&&(m=m[systemLang]||m.en),e+='
    • ',e+=" "+(g.main.getIcon(g.list[n],null,null,"icon")||''),e+=''+i+"",e+="

      "+g.list[n]+((m?" ("+m+")":"")||"")+"

      ",e+=' '+(a.enabled?"check_box":"check_box_outline_blank")+"",e+=' edit',e+=' delete
      ',e+=s||"",e+="
    • "}e+="
    ",g.$gridUsers.html(e),g.$grid.find("#tab-users-btn-new-user").on("click",function(){y(!1)}),g.$gridUsers.find(".tab-users-enabled-user").on("click",function(){var e=$(this).data("user");if("system.user.admin"===e)return h(_("Cannot disable admin!"),!0),!1;var t=$(this),n=g.main.objects[e]&&g.main.objects[e].common&&g.main.objects[e].common.enabled;n=!n,g.main.socket.emit("extendObject",e,{common:{enabled:n}},function(e){e?h(_("Cannot modify user!")+e,!0):(h(_("Updated")),t.find("i").text(n?"check_box":"check_box_outline_blank"))})}),g.$gridUsers.find(".delete-content").off("click").on("click",function(){var t=$(this).data("user");$(this).hasClass("disabled")||(g.main.objects[t]&&"user"===g.main.objects[t].type?g.main.confirmMessage(_("Are you sure to delete %s?",t),null,"help",function(e){e&&p(t)}):h(_('Object "%s" does not exists. Update the page.',t),!0))}),g.$gridUsers.find(".edit-content").on("click",function(){y($(this).data("user"))}),g.$gridUsers.find(".tab-users-remove-group").on("click",function(){var i=$(this).data("user"),e=$(this).data("group");g.main.socket.emit("getObject",e,function(e,t){if(t&&t.common&&t.common.members){var n=t.common.members.indexOf(i);-1!==n?(t.common.members.splice(n,1),g.main.socket.emit("setObject",t._id,t,function(e){e?h(_("Error: %s",e),!0):h(_("Removed"))})):h(_("%s is not in the list"),!0)}})})}function n(){var e="";e+='
      ';for(var t=0;t'+g.main.getIcon(c)+r+'close'}var l="",d=!1;i.color&&(l="background: "+i.color+"; ",g.main.invertColor(i.color)&&(d=!0,l+="color: white;"));var u=i.desc;"object"==typeof u&&(u=u[systemLang]||u.en),e+='
    • ',e+=" "+(g.main.getIcon(g.groups[t],null,null,"icon")||''),e+=' '+n+"",e+="

      "+g.groups[t]+((u?" ("+u+")":"")||"")+"

      ",e+=' edit',e+=' delete
      ',e+=a||"",e+="
    • "}e+="
    ",g.$gridGroups.html(e),g.$grid.find("#tab-users-btn-new-group").on("click",function(){y(!0)}),g.$gridGroups.find(".delete-content").on("click",function(){var n=$(this).data("group");$(this).hasClass("disabled")||(g.main.objects[n]&&"group"===g.main.objects[n].type?g.main.confirmMessage(_("Are you sure to delete %s?",n),null,"help",function(e){var t;e&&(t=n,g.main.objects[t]&&"group"===g.main.objects[t].type?g.main.objects[t].common&&g.main.objects[t].common.dontDelete?h(_("Object may not be deleted"),!0):g.main.socket.emit("delObject",t,function(e){e?h(_("Group may not be deleted: %s",e),!0):h(_("Group deleted"))}):h(_("Invalid object: %s",t),!0))}):h(_('Object "%s" does not exists. Update the page.',n),!0))}),g.$gridGroups.find(".edit-content").on("click",function(){y($(this).data("group"))}),g.$gridGroups.find(".tab-users-remove-user").on("click",function(){var i=$(this).data("user"),e=$(this).data("group");g.main.socket.emit("getObject",e,function(e,t){if(t&&t.common&&t.common.members){var n=t.common.members.indexOf(i);if(-1!==n){if(t.common.members.splice(n,1),!t._id)return void console.error("INVLAID ID");g.main.socket.emit("setObject",t._id,t,function(e){e?h(_("Error: %s",e),!0):h(_("Removed"))})}else h(_("%s is not in the list"),!0)}})})}this.groups=[],this.list=[],this.$grid=$("#tab-users"),this.$gridUsers=this.$grid.find(".tab-users-list-users .tab-users-body"),this.$gridGroups=this.$grid.find(".tab-users-list-groups .tab-users-body"),this.main=e,this.aclGroups=null,this.prepare=function(){},this._postInit=function(){var e;t(),g.$gridUsers.find("ul").sortable({connectWith:"#tab-users .tab-users-list-groups .treetable",items:".users-type-draggable",appendTo:g.$gridUsers,refreshPositions:!0,helper:function(e,t){return $('
    '+t.find(".treetable-icon-empty+span").text()+"
    ")},zIndex:999990,revert:!1,scroll:!1,start:function(e,t){var n=t.item.prev();t.item.data("prev",n),g.$grid.addClass("dragging")},stop:function(e,t){g.$grid.removeClass("dragging")},update:function(e,t){var n=t.item.data("prev");n&&n.length?$(n).after(t.item):$(this).prepend(t.item)}}).disableSelection(),n(),(e=g.$gridGroups.find("ul>li")).droppable("instance")&&e.droppable("destroy"),e.droppable({accept:".users-type-draggable",over:function(e,t){if($(this).addClass("tab-accept-item"),$(this).hasClass("not-empty")&&!$(this).hasClass("expanded")){var n,i=$(this).data("tt-id");(n=$(this).data("timer"))&&clearTimeout(n),$(this).data("timer",setTimeout(function(){g.$gridGroups.treeTable("expand",i)},1e3))}},out:function(e,t){var n;$(this).removeClass("tab-accept-item"),(n=$(this).data("timer"))&&(clearTimeout(n),$(this).data("timer",null))},tolerance:"pointer",drop:function(e,t){$(this).removeClass("tab-accept-item");var n=t.draggable.data("tt-id"),i=$(this).data("tt-id");g.main.socket.emit("getObject",i,function(e,t){t&&t.common&&(t.common.members=t.common.members||[],-1===t.common.members.indexOf(n)?(t.common.members.push(n),t.common.members.sort(),g.main.socket.emit("setObject",t._id,t,function(e){e?h(_("Error: %s",e),!0):h(_("%s added to %s",n,t._id))})):h(_("Is yet in the list")))})}})},this.init=function(e){this.inited&&!e||(void 0!==this.$gridUsers&&this._postInit(),this.inited||(h(_("You can drag&drop users to groups"),5e3),this.inited=!0,this.main.subscribeObjects("system.user.*"),this.main.subscribeObjects("system.group.*")))},this.destroy=function(){this.inited&&(this.inited=!1,this.main.unsubscribeObjects("system.user.*"),this.main.unsubscribeObjects("system.group.*"))},this.objectChange=function(e,t,n){if(e.match(/^system\.user\./)){if(t)-1===this.list.indexOf(e)&&this.list.push(e);else{var i=this.list.indexOf(e);-1!==i&&this.list.splice(i,1)}this.timer&&clearTimeout(this.timer),this.timer=setTimeout(function(){g.timer=null,g._postInit()},200)}else if(e.match(/^system\.group\./)){if(t)-1===this.groups.indexOf(e)&&this.groups.push(e);else{var a=this.groups.indexOf(e);-1!==a&&this.groups.splice(a,1)}this.timer&&clearTimeout(this.timer),this.timer=setTimeout(function(){g.timer=null,g._postInit()},200)}}}!function(C){C(document).ready(function(){var e=location.pathname+"socket.io";location.pathname.match(/^\/admin\//)&&(e="/socket.io");var s,y={},v={objects:{},states:{},currentHost:"",currentTab:null,currentDialog:null,currentUser:"",subscribesStates:{},subscribesObjects:{},subscribesLogs:0,socket:io.connect("/",{path:e}),systemConfig:null,instances:null,objectsLoaded:!1,waitForRestart:!1,tabs:null,dialogs:{},selectId:null,config:{},ignoreJSupdate:!1,addEventMessage:function(e,t,n,i){g.events.add(e,t,n,i)},saveConfig:function(e,t){e&&(v.config[e]=t),"undefined"!=typeof storage&&storage.set("adminConfig",JSON.stringify(v.config))},saveTabs:function(){this.socket.emit("setObject","system.config",this.systemConfig,function(e){e&&this.showError(e)})},upToDate:function(e,t){return e=e.split("."),t=t.split("."),e[0]=parseInt(e[0],10),t[0]=parseInt(t[0],10),!(e[0]>t[0])&&(e[0]!==t[0]||(e[1]=parseInt(e[1],10),t[1]=parseInt(t[1],10),!(e[1]>t[1])&&(e[1]!==t[1]||(e[2]=parseInt(e[2],10),t[2]=parseInt(t[2],10),e[2]<=t[2]))))},cmdExec:function(e,t,n){e=e||v.currentHost,c.val(""),l.modal("open"),s="$ ./yunkong2 "+t,l.data("finished",!1).find(".btn").html(_("In background")),l.find(".command").html(s),l.find(".progress-dont-close").removeClass("disabled"),p.find(".button-command").removeClass("error").addClass("in-progress"),l.data("max",null),l.data("error",""),h.addClass("indeterminate").removeClass("determinate"),t.match(/^upload /)?l.find(".progress-text").html(_("Upload started...")).removeClass("error"):t.match(/^del [-_\w\d]+\.[\d]+$/)?l.find(".progress-text").html(_("Removing of instance...")).removeClass("error"):t.match(/^del /)?l.find(".progress-text").html(_("Removing of adapter...")).removeClass("error"):t.match(/^url /)?l.find(".progress-text").html(_("Install or update from URL...")).removeClass("error"):t.match(/^add /)?l.find(".progress-text").html(_("Add instance...")).removeClass("error"):l.find(".progress-text").html(_("Started...")).removeClass("error"),c.val(s),r=Math.floor(268435454*Math.random())+1,o=n,v.socket.emit("cmdExec",e,r,t,function(e){e?(s+="\n"+_(e),c.val(s),o=null,n(e)):n&&n()})},confirmMessage:function(e,t,n,i,a){if("function"==typeof i)a=i,m.find(".modal-footer").html(''+_("Ok")+''+_("Cancel")+""),m.find(".modal-footer .modal-action").on("click",function(){var e=m.data("callback");e&&e(C(this).data("result"))});else if("object"==typeof i){for(var s="",o=i.length-1;0<=o;o--)s+=''+i[o]+"";m.find(".modal-footer").html(s),m.find(".modal-footer .modal-action").on("click",function(){var e=m.data("callback");e&&e(C(this).data("id"))})}m.find(".dialog-title").text(t||_("Please confirm")),n?m.find(".dialog-icon").show().html(n):m.find(".dialog-icon").hide(),m.find(".dialog-text").html(e),m.data("callback",a),m.modal("open")},showMessage:function(e,t,n){u.find(".dialog-title").text(t||_("Message")),n?u.find(".dialog-icon").show().html(n):u.find(".dialog-icon").hide(),u.find(".dialog-text").html(e),u.modal("open")},showError:function(e){v.showMessage(_(e),_("Error"),"error_outline")},showToast:function(e,t,n,i,a,s){e&&e instanceof jQuery&&(e=e[0]),"string"==typeof(s=s||[])&&(s=[s]),a&&s.push("dropZone-error"),M.toast({parentSelector:e||C("body")[0],html:t+(n?''+n+"":""),displayLength:i||3e3,classes:s})},formatDate:function(e,t){if(!e)return"";var n,i=typeof e;return"string"===i?t?e.substring(8):e:("object"!==i&&(e=e<9466812e5?new Date(1e3*e):new Date(e)),t?i=(n=e.getDate())<10?"0"+n:n:(i=e.getFullYear(),i+=(n=e.getMonth()+1)<10?"-0"+n:"-"+n,i+=(n=e.getDate())<10?"-0"+n:"-"+n),i+=(n=e.getHours())<10?" 0"+n:" "+n,i+=(n=e.getMinutes())<10?":0"+n:":"+n,i+=(n=e.getSeconds())<10?":0"+n:":"+n,i+=(n=e.getMilliseconds())<10?".00"+n:n<100?".0"+n:"."+n)},updateWizard:function(){var e=C("#button-wizard");v.objects["system.adapter.discovery.0"]?(e.data("inited")||(e.data("inited",!0),e.on("click",function(){v.navigate({tab:"instances",dialog:"config",params:"system.adapter.discovery.0"})}).attr("title",_("Device discovery"))),e.show(),!v.systemConfig.common.wizard&&v.systemConfig.common.licenseConfirmed&&e.trigger("click")):e.hide()},getUser:function(){if(v.currentUser){if(v.objects[v.currentUser]){var e=v.objects[v.currentUser],t="";if(t=e&&e.common&&e.common.name?translateName(e.common.name):(t=v.currentUser.replace(/^system\.user\./))[0].toUpperCase()+t.substring(1).toLowerCase(),e&&e.common&&e.common.icon){var n={};n[v.currentUser]=e,C("#current-user-icon").html(v.getIcon(v.currentUser,null,n))}else C("#current-user-icon").html('account_circle');C("#current-user").html(t);for(var i=[],a=0;aone object or all children of %s too?',t),null,"help_outline",[_("_All"),_("Only one"),_("Cancel")],function(e){0===e?v._delObjects(t,!0,n):1===e&&v._delObjects(t,!1,n)}):v.confirmMessage(_("Are you sure to delete %s?",t),null,"help_outline",function(e){e&&v._delObjects(t,!0,n)}):i&&i.children?v.confirmMessage(_("Are you sure to delete all children of %s?",t),null,"help_outline",function(e){e&&v._delObjects(t,!0,n)}):v.showMessage(_('Object "%s" does not exists. Update the page.',t),_("Error"),"help_outline",function(e){e&&v._delObjects(t,!0,n)})}},g={hosts:new Hosts(gMain=v),objects:new Objects(v),adapters:new Adapters(v),instances:new Instances(v),users:new Users(v),enums:new Enums(v),events:new Events(v),logs:new Logs(v),states:null,intro:new Intro(v)};"undefined"!=typeof States&&(g.states=new States(v)),v.instances=g.instances.list,v.tabs=g,v.dialogs={system:new System(v),customs:new Customs(v),config:new Config(v),editobject:new EditObject(v),issue:new Issue(v),readme:new Readme(v)};var o=null,r=null,c=C("#stdout"),l=C("#dialog-command"),d=C("#dialog-license-main"),u=C("#dialog-message"),m=C("#dialog-confirm"),h=l.find(".progress div"),f=C("#admin_sidemenu_menu"),p=C("#admin_sidemenu_main"),t=!0;if("ontouchstart"in window||navigator.maxTouchPoints||C("body").addClass("desktop-screen"),-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Android")?(C("body").addClass("safari"),v.browser="safari",v.noSelect=!0):detectIE()&&(C("body").addClass("ie"),v.browser="ie",v.browserVersion=detectIE(),v.noSelect=!0,C("#host-adapters-btn").css("margin-top","10px")),"undefined"!=typeof storage)try{v.config=storage.get("adminConfig"),v.config?v.config=JSON.parse(v.config):v.config={}}catch(e){console.log("Cannot load edit config"),v.config={}}function b(e){C("#admin_sidemenu_dialog").html(""),C("html").off("click",b)}function w(){if(function(){var e="",i=[];C(".admin-tab").each(function(){var e=C(this).attr("id");v.systemConfig.common.tabs&&-1===v.systemConfig.common.tabs.indexOf(e)||i.push({line:'
  • '+(T[e]&&T[e].icon?''+T[e].icon+"":'live_help')+_(C(this).data("name"))+"
  • ",id:e})}),C(".tab-custom").each(function(){var e=C(this).attr("id");if(!v.systemConfig.common.tabs||-1!==v.systemConfig.common.tabs.indexOf(e)){var t;if(T[e]&&T[e].icon)t=T[e].icon;else{var n="system.adapter."+e.substring(4);v.objects[n]&&v.objects[n].adminTab&&v.objects[n]["fa-icon"]&&(t=v.objects[n]["fa-icon"])}i.push({line:'
  • '+(t?''+t+"":'live_help')+C(this).data("name")+"
  • ",id:e})}}),i.sort(function(e,t){return T[e.id]||T[t.id]?T[e.id]?T[t.id]?T[e.id].orderT[t.id].order?1:0:-1:1:0});for(var t=0;t
      ';for(var s in y){var o=y[s],r="chk-"+s;a+="
    • '+_(o)+""}a+="
    ",t.append(a),t.find(".chk-tab").off("change").on("change",function(e){var t=C(this).attr("id").substr(4);if(C(this).prop("checked"))v.systemConfig.common.tabs.push(t);else{var n=v.systemConfig.common.tabs.indexOf(t);-1!==t&&v.systemConfig.common.tabs.splice(n,1)}v.saveTabs(),j()}),t.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=C(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")})}),v.updateWizard(),C("#button-logout").on("click",function(){window.location.href="/logout/"}),window.onhashchange=function(){v.navigateDo()},v.navigateDo(),C("#events_threshold").on("click",function(){v.socket.emit("eventsThreshold",!1)})}function j(){var n=[],e=[];y={};for(var t=0;t'+m+"\n",C("#"+d).length)C("#"+d).hide().appendTo(C("body"));else{var f='
    ';C(f).hide().appendTo(C("body")),C("#"+d).find(".iframe-in-tab").on("load",function(){var e=C(this).contents().find("body>header");e&&e.length||(e=C(this).contents().find("head")),e&&e.length&&e.append('')})}}}if(C(".tab-custom").each(function(){-1===n.indexOf(C(this).attr("id"))&&C("#"+C(this).attr("id")).remove()}),v.systemConfig.common.tabs||(v.systemConfig.common.tabs=n),C(".link-replace").length){var p=0,b=setTimeout(function(){b=null,w()},100);C(".link-replace").each(function(){p++,v.tabs.instances._replaceLinks(C(this).data("src"),C(this).data("adapter"),C(this).data("instance"),C(this).attr("id"),function(e,t,n,i){C("#"+i).data("src",e).removeClass("link-replace"),--p||b&&(clearTimeout(b),b=null,w())})})}else w()}function N(a){v.socket.emit("getAllObjects",function(e,i){e?window.alert(_(e)):setTimeout(function(){var e;for(var t in v.objects=i,v.objects)v.objects.hasOwnProperty(t)&&"_design"!==t.slice(0,7)&&("instance"===(e=v.objects[t]).type&&v.instances.push(t),"enum"===e.type&&g.enums.list.push(t),"user"===e.type&&g.users.list.push(t),"group"===e.type&&g.users.groups.push(t),"adapter"===e.type&&g.adapters.list.push(t),"host"===e.type&&g.hosts.addHost(e),e.common&&e.common.history&&(e.common.custom=JSON.parse(JSON.stringify(e.common.history)),delete e.common.history));for(var n in v.objectsLoaded=!0,v.initHostsList(!0),j(),v.dialogs)v.dialogs.hasOwnProperty(n)&&"function"==typeof v.dialogs[n].prepare&&v.dialogs[n].prepare();!function n(i,a){a=a||0,i&&a'+a.icon+"";var s;n="instance"===e.type?"/adapter/"+e.common.name+"/"+e.common.icon:e._id.match(/^system\.adapter\./)?(s=e._id.split(".",3),"/"===a.icon[0]?s[2]+=a.icon:s[2]+="/"+a.icon,"/adapter/"+s[2]):(s=e._id.split(".",2),"/"===a.icon[0]?s[0]+=a.icon:s[0]+="/"+a.icon,"/adapter/"+s[0])}i=e.type}return{icon:n,alt:i}}v.initHostsList=function(e){var t=C("#host-adapters");if(!e||!t.data("inited")){t.data("inited",!0),v.currentHost=v.currentHost||v.config.currentHost||"";for(var n,i=[],a=0;a'+v.getHostIcon(v.objects[v.tabs.hosts.list[a].id],"imgHost left")+v.tabs.hosts.list[a].name+""),v.currentHost||(v.currentHost=v.tabs.hosts.list[a].name),v.currentHost===v.tabs.hosts.list[a].name&&(n=v.tabs.hosts.list[a].id);t.html(i);var s=C("#host-adapters-btn").show();s.text(_("Host:")+" "+v.currentHost).dropdown(),v.objects[n]&&v.objects[n].common&&v.objects[n].common.color,s.append(C(v.getHostIcon(v.objects[n],"imgHost left"))),v.tabs.hosts.list.length<2?s.addClass("disabled"):s.removeClass("disabled"),t.find("a").on("click",function(){var e=C(this).data("value"),t="system.host."+e+".alive";v.states[t]&&v.states[t].val&&"null"!==v.states[t].val?(v.currentHost=e,C("#host-adapters-btn").text(_("Host:")+" "+v.currentHost).append(C(this).find(".imgHost").clone()),console.log(v.currentTab),T["tab-"+v.currentTab]&&T["tab-"+v.currentTab].host&&(v.tabs[v.currentTab]&&"function"==typeof v.tabs[v.currentTab].destroy&&v.tabs[v.currentTab].destroy(),v.tabs[v.currentTab]&&"function"==typeof v.tabs[v.currentTab].init&&v.tabs[v.currentTab].init()),v.saveConfig("currentHost",v.currentHost)):v.showMessage(_("Host %s is offline",C(this).val()))})}},v.resubscribeStates=function(){for(var e in v.subscribesStates)v.subscribesStates.hasOwnProperty(e)&&v.subscribesStates[e]&&(console.debug("Re-Subscribe: "+e),v.socket.emit("subscribe",e))},v.resubscribeObjects=function(){for(var e in v.subscribesObjects)v.subscribesObjects.hasOwnProperty(e)&&v.subscribesObjects[e]&&v.socket.emit("subscribeObjects",e)},v.resubscribeLogs=function(){v.subscribesLogs&&(console.debug("Subscribe LOG"),v.socket.emit("requireLog",!0))},v.subscribeStates=function(e){if(e)if("object"==typeof e)for(var t=0;tiframe");d.attr("src")&&(console.log("clear"),d.attr("src",""))}}if(v.currentTab=n,o.hide().appendTo("body"),i||(r.addClass("admin-sidemenu-body-content").show().appendTo(s),o=r),g[n]&&"function"==typeof g[n].init&&g[n].init(),r.length&&(c=r.data("src")))if(-1===c.indexOf("%")){var u=r.find(">iframe");u.length&&!u.attr("src")&&u.attr("src",c)}else f.data("problem-link","tab-"+n)}var m=f.find('.admin-sidemenu-items[data-tab="tab-'+n+'"]');f.find(".admin-sidemenu-items").not(m).removeClass("admin-sidemenu-active"),m.addClass("admin-sidemenu-active"),T["tab-"+n]&&T["tab-"+n].host?C("#host-adapters-btn").css("opacity",1):C("#host-adapters-btn").css("opacity",.3),document.title=n+" - yunkong2",v.currentDialog!==i&&(v.dialogs[v.currentDialog]&&"function"==typeof v.dialogs[v.currentDialog].destroy&&v.dialogs[v.currentDialog].destroy(),(v.currentDialog=i)&&v.dialogs[i]?("function"==typeof v.dialogs[i].init&&v.dialogs[i].init(a?a.split(","):void 0),g[v.currentTab]&&g[v.currentTab].saveScroll&&g[v.currentTab].saveScroll(),o.hide().appendTo("body"),C("#dialog-"+i).addClass("admin-sidemenu-body-content").show().appendTo(s)):o.attr("id")!==r.attr("id")&&(o.hide().appendTo("body"),r.addClass("admin-sidemenu-body-content").show().appendTo(s),g[v.currentTab]&&g[v.currentTab].restoreScroll&&g[v.currentTab].restoreScroll()))}})},v.getIconFromObj=function(e,t,n){var i="",a="";if(e&&e.common)if(e.common.icon){var s=L(e);i=s.icon,a=s.alt}else t=t||"lib/css/fancytree/","device"===e.type?(i=t+"device.png",a="device"):"channel"===e.type?(i=t+"channel.png",a="channel"):"state"===e.type&&(i=t+"state.png",a="state");return i?''+(a||':""},v.getIcon=function(e,t,n,i){return v.getIconFromObj((n||v.objects)[e],t,i)},v.getHostIcon=function(e,t){var n="",i="";if(e&&e.common&&e.common.icon){var a=L(e);n=a.icon,i=a.alt}return''+(i=i||'},v.formatBytes=function(e){if(Math.abs(e)<1024)return e+" B";for(var t=["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],n=-1;e/=1024,++n,1024<=Math.abs(e)&&n'+t.admin.styles+"")}}if(v.systemConfig&&v.systemConfig.common&&v.systemConfig.common.tabs){var i=v.systemConfig.common.tabs.indexOf("tab-log");-1!==i&&(v.systemConfig.common.tabs[i]="tab-logs")}v.socket.emit("getObject","system.repositories",function(e,t){v.dialogs.system.systemRepos=t,v.socket.emit("getObject","system.certificates",function(e,t){setTimeout(function(){if(v.dialogs.system.systemCerts=t,"permissionError"===a)v.systemConfig={common:{language:systemLang},error:"permissionError"};else if(!a&&v.systemConfig&&v.systemConfig.common){if(systemLang=v.systemConfig.common.language||systemLang,v.systemConfig.common.city=v.systemConfig.common.city||"",v.systemConfig.common.country=v.systemConfig.common.country||"",v.systemConfig.common.longitude=v.systemConfig.common.longitude||"",v.systemConfig.common.latitude=v.systemConfig.common.latitude||"",!v.systemConfig.common.licenseConfirmed){var n=(v.systemConfig.common.language||window.navigator.userLanguage||window.navigator.language||"").substring(0,2);"en"!==n&&"de"!==n&&"ru"!==n&&(n="en"),systemLang=n,d.find(".license_text").html(license[n]||license.en),d.find(".license_checkbox").prop("checked",!1),d.find(".license_language").data("licenseConfirmed",!1).val(n).on("change",function(){n=C(this).val(),d.find(".license_language_label").html(translateWord("Select language",n)),d.find(".license_text").html(license[n]||license.en),d.find(".license_checkbox").html(translateWord("license_checkbox",n)),d.find(".license_agree .translate").html(translateWord("agree",n)),d.find(".license_non_agree .translate").html(translateWord("not agree",n)),d.find(".license_terms").html(translateWord("License terms",n)),d.find(".license_agreement_label").html(translateWord("license agreement",n))}).select(),d.find(".license_diag").on("change",function(){C(this).prop("checked")?d.find(".license_agree").removeClass("disabled"):d.find(".license_agree").addClass("disabled")}),d.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=C(this).prev();e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),d.modal({dismissible:!1,complete:function(){d.find(".license_text").html(""),location.reload()}}).modal("open"),d.find(".license_agree").addClass("disabled").off("click").on("click",function(e){e.preventDefault(),e.stopPropagation(),v.socket.emit("getObject","system.config",function(e,t){!e&&t?(t.common=t.common||{},t.common.licenseConfirmed=!0,t.common.language=n,v.socket.emit("setObject","system.config",t,function(e){e&&v.showError(e),d.modal("close"),d.find(".license_agree").off("click"),d.find(".license_non_agree").off("click")})):v.showError(_("Cannot confirm: "+e))})}),d.find(".license_non_agree").off("click").on("click",function(e){location.reload()})}}else v.systemConfig={type:"config",common:{name:"system.config",city:"",country:"",longitude:"",latitude:"",language:"",tempUnit:"°C",currency:"",dateFormat:"DD.MM.YYYY",isFloatComma:!0,licenseConfirmed:!1,defaultHistory:"",tabs:["tab-intro","tab-adapters","tab-instances","tab-objects","tab-logs","tab-scenes","tab-javascript","tab-text2command-0"]}},v.systemConfig.common.language=window.navigator.userLanguage||window.navigator.language,"en"!==v.systemConfig.common.language&&"de"!==v.systemConfig.common.language&&"ru"!==v.systemConfig.common.language&&(v.systemConfig.common.language="en");for(var e in translateCron(),translateAll(),"function"==typeof initGridLanguage&&initGridLanguage(v.systemConfig.common.language),l.modal({dismissible:!1}),u.modal(),m.modal({dismissible:!1}),l.find(".progress-show-more").off("change").on("change",function(){var e=C(this).prop("checked");v.saveConfig("progressMore",e),e?l.find(".textarea").show():l.find(".textarea").hide()}),void 0===v.config.progressClose&&(v.config.progressClose=!0),l.find(".progress-dont-close input").on("change",function(){v.saveConfig("progressClose",C(this).prop("checked"))}),l.find('input[type="checkbox"]+span').off("click").on("click",function(){var e=C(this).prev();e.parent().parent().hasClass("switch")||e.prop("disabled")||e.prop("checked",!e.prop("checked")).trigger("change")}),l.find(".progress-dont-close input").prop("checked",v.config.progressClose),l.find(".progress-show-more").prop("checked",!!v.config.progressMore).trigger("change"),l.find(".btn").on("click",function(){l.data("finished")?p.find(".button-command").hide():p.find(".button-command").show()}),p.find(".button-command").on("click",function(){l.modal("open")}),g)g.hasOwnProperty(e)&&g[e]&&"function"==typeof g[e].prepare&&g[e].prepare();var i;i=N,g.states&&g.states.clear(),v.socket.emit("getStates",function(e,t){v.states=t,"function"==typeof i&&setTimeout(function(){i()},0)})},0)})})})})):(v.resubscribeStates(),v.resubscribeObjects(),v.resubscribeLogs()),v.waitForRestart&&location.reload()}),v.socket.on("disconnect",function(){C("#connecting").show()}),v.socket.on("reconnect",function(){C("#connecting").hide(),v.waitForRestart&&location.reload()}),v.socket.on("repoUpdated",function(){setTimeout(function(){g.adapters.init(!0)},0)}),v.socket.on("reauthenticate",function(){location.reload()})})}(jQuery);var license={en:'The MIT License (MIT)

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    ',de:'MIT-Lizenz (MIT)

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der zugehörigen Dokumentationen (die "Software") erhält, die Erlaubnis erteilt, sie uneingeschränkt zu benutzen, inklusive und ohne Ausnahme dem Recht, sie zu verwenden, kopieren, ändern, fusionieren, verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und Personen, die diese Software erhalten, diese Rechte zu geben, unter den folgenden Bedingungen:
    Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien der Software beizulegen.
    DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.',ru:"Лицензия MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
    Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.
    ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.",it:'Licenza MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Si concede gratuitamente l\'autorizzazione, a chiunque ottenga una copia di questo software e dei file di documentazione associati (il "Software"), di dare opera al Software senza restrizioni, compresi senza limitazione i diritti di utilizzare, copiare, modificare, unire, pubblicare, distribuire, concedere in sublicenza ovvero vendere copie del Software, e di consentire alle persone a cui il Software è fornito di fare altrettanto, posto che siano rispettate le seguenti condizioni:
    l\'avviso di copyright unitamente a questo avviso di licenza devono essere sempre inclusi in tutte le copie o parti sostanziali del Software.
    IL SOFTWARE VIENE FORNITO "COSÌ COM\'È" SENZA GARANZIE DI ALCUN TIPO, ESPLICITE O IMPLICITE, COMPRESE, MA NON SOLO, LE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ AD UN PARTICOLARE SCOPO E NON VIOLAZIONE DI DIRITTI ALTRUI. IN NESSUN CASO GLI AUTORI DEL SOFTWARE O I TITOLARI DEL COPYRIGHT POTRANNO ESSERE RITENUTI RESPONSABILI DI RECLAMI, DANNI O ALTRE RESPONSABILITÀ, DERIVANTI DA O COLLEGATI A CONTRATTO, ILLECITO CIVILE O IN ALTRA RELAZIONE CON IL SOFTWARE O CON IL SUO UTILIZZO O CON ALTRE OPERAZIONI DEL SOFTWARE.',fr:'Licence MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    ',pt:'Licença MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    ',nl:'MIT-licentie

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    ',es:'Licencia MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el "Software"), para utilizar el Software sin restricción, incluyendo sin limitación los derechos a usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar, y/o vender copias del Software, y a permitir a las personas a las que se les proporcione el Software a hacer lo mismo, sujeto a las siguientes condiciones:
    El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
    EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A GARANTÍAS DE COMERCIALIZACIÓN, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DEL COPYRIGHT SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O CUALQUIER OTRO MOTIVO, QUE SURJA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.',pl:'Licencja MIT

    Copyright © 2014-2018 bluefox, 2014 hobbyquaker

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    '},addAll2FilterCombobox=!1;function IobListHeader(e,h){if(!(this instanceof IobListHeader))return new IobListHeader(e,h);var f,a,p;void 0===h&&(h={}),void 0===h.colWidthOffset&&(h.colWidthOffset=0),"TABLE"===(p="object"==typeof e?$(e):$("#"+e))[0].tagName&&(p=p.find("tr:first")),e=p[0];var n,b=this;b.selectIdOffset=[],p.html(""),this.setList=function(e){var t;(t="string"==typeof e?("#"!==e[0]&&(e="#"+e),$(e)):e)&&t.length&&("TD"!==t[0].tagName&&"TH"!==t[0].tagName&&((t=t.find(">thead>tr:first>th,>thead>tr:first>td")).length||(t=e.find(">tbody>tr:first>th,>tr:first>th,>tbody>tr:first>td, >tr:first>td"))),a=t)},h.list&&this.setList(h.list),this.syncHeader=function(){if("object"==typeof a){var e=function(){a.each(function(e,t){if(!(e>=a.length-1)){var n=$(t).width(),i=b.selectIdOffset[e]||0;n+i&&$(f[e]).width(Math.round(n+i))}}),a.length&&!b.selectIdOffset.length&&(b.selectIdOffset[0]=0,a.each(function(e,t){var n=$(a[e]).offset().left;n&&(b.selectIdOffset[e]=n-$(f[e]).offset().left)}),e())};e()}},$(window).on("resize",function(e,t){n&&clearTimeout(n),n=setTimeout(b.syncHeader.bind(b),100)}),this.doFilter=function(){},b.ids=[],b.add=function(t,m,e,n){void 0===e&&(e=m);var i,a,s=!(i=e)||a&&"#"===i[0]?i:(h.prefix&&i.substr(0,h.prefix.length)!==h.prefix&&(i=h.prefix+"-"+i),(a?"#":"")+i);m=_(m);var o="";switch(t){case"combobox":o=' ';break;case"edit":o=' ';break;case"text":o=''+m+""}p.append(""+o+"");var r="#"+s,g=$(r),c=b[e]={$filter:g,val:g.val.bind(g),selectedVal:g.val()||""};if(b.ids.push(e),"combobox"===t&&(c.options=[],c.checkAddOption=function(e,t,n){if(-1===this.options.indexOf(e)){this.options.push(e),this.options.sort();for(var i,a,s=g.val(),o=n?"":(i=m,a=s,addAll2FilterCombobox&&(i=i?_(i)+" ("+_("all")+")":_("all")),'"),r=0,c=this.options.length;r"+t+""}},n))for(var l=0;lclose'),g.on("change",function(e){d&&clearTimeout(d),c.selectedVal=g.val(),d=setTimeout(b.doFilter,"combobox"!==t?400:0),c.selectedVal?g.parent().addClass("filter-active"):g.parent().removeClass("filter-active")}).on("keyup",function(e){13===e.which?b.doFilter():g.trigger("change")}),f=p.find(">th"),c}}function values2table(r,c,e){"object"==typeof r&&(e=c,c=r,r="");var l=e&&e.maxRaw||null,d=e&&e.onChange||null,u=e&&e.onReady||null;c=c||[];var o,s=[],m=(o=r?$("#"+r):$("body")).find(".table-button-add");if(m.data("raw",c.length),l&&m.data("maxRaw",l),m.data("inited")||(m.data("inited",!0),m.on("click",function(){if(!m.data("maxRaw")||m.data("raw")';for(var a=0;a';else if("select"===s[a].type.substring(0,6)){f+=("multiple"===s[a].type.substring(7,16)?'"}else f+='';if(g[a]){p="text-align: center; "+(g[a].style||"")+(g[a].tdstyle||"");for(var v=0;v':f+='';g[a].class&&(t+=' class="'+g[a].class+'" ')}p.length||b.length?t+=' style="'+p+b+'">'+f+"":t+=">"+f+""}t+=""}var w=h.find(".table-lines");w.length||(h.append(''),w=h.find(".table-lines")),w.html(t),w.find(".values-input").each(function(){var e=$(this),t=e.attr("type"),n=e.data("name"),i=e.data("index");e.data("old-value",c[i][n]),"checkbox"===t?e.prop("checked",c[i][n]):e.val(c[i][n])}),w.find("a[data-command]").each(function(){var e=$(this).data("command");"delete"===e?$(this).on("click",function(){var e=$(this).data("index"),t=c[e];c.splice(e,1),d&&d(),setTimeout(function(){"function"==typeof tableEvents&&tableEvents(e,t,"delete"),values2table(r,c,d,u,l)},100),m.data("maxRaw")&&m.data("raw",m.data("raw")-1)}).addClass("red").find(".material-icons").html("delete"):"up"===e?$(this).on("click",function(){var e=$(this).data("index"),t=c[e];c.splice(e,1),c.splice(e-1,0,t),d&&d(),setTimeout(function(){values2table(e,c,d,u,l)},100)}).find("i").html("arrow_upward"):"down"===e?$(this).on("click",function(){var e=$(this).data("index"),t=c[e];c.splice(e,1),c.splice(e+1,0,t),d&&d(),setTimeout(function(){values2table(e,c,d,u,l)},100)}).find("i").html("arrow_downward"):"pair"===e?$(this).on("click",function(){if("function"==typeof tableEvents){var e=$(this).data("index"),t=c[e];tableEvents(e,t,"pair")}}).attr("title",_("pair")).find("i").html("insert_link"):"unpair"===e&&$(this).on("click",function(){if("function"==typeof tableEvents){var e=$(this).data("index"),t=c[e];tableEvents(e,t,"unpair")}}).attr("title",_("unpair")).find("i").html("not_interested")}),w.find(".values-input").on("change.adaptersettings",function(){var e=$(this).data("index"),t=$(this).data("name");"checkbox"===$(this).attr("type")?($(this).prop("checked").toString()!==$(this).data("old-value")&&d&&d(t,e),c[e][t]=$(this).prop("checked")):($(this).val()!==$(this).data("old-value")&&d&&d(t,e),c[e][t]=$(this).val())}).on("keyup",function(){$(this).trigger("change.adaptersettings")})}"function"==typeof u&&u()}function table2values(e){var t;t=e?$("#"+e):$("body");var n=[];t.find(".table-values th").each(function(){var e=$(this).data("name");e?n.push(e):n.push("___ignore___")});var i=[],a=0;return t.find(".table-lines tr").each(function(){i[a]={},$(this).find("td").each(function(){var e=$(this).find("input");if(e.length){var t=e.data("name");"checkbox"===e.attr("type")?i[a][t]=e.prop("checked"):i[a][t]=e.val()}var n=$(this).find("select");if(n.length){t=n.data("name");i[a][t]=n.val()||""}}),a++}),i}var systemLang="en",systemDictionary={};function translateWord(e,t,n){if(!e)return"";if(t=t||systemLang,(n=n||systemDictionary)[e=e.toString()]){var i=n[e][t];if(i)return i;if("en"!==t&&(i=n[e].en))return i}else"string"!=typeof e||e.match(/_tooltip$/)?"string"!=typeof e&&console.warn("Trying to translate non-text:"+e):console.log('"'+e+'": {"en": "'+e+'", "de": "'+e+'", "ru": "'+e+'", "pt": "'+e+'", "nl": "'+e+'", "fr": "'+e+'", "es": "'+e+'", "pl": "'+e+'", "it": "'+e+'"},');return e}function translateAll(e,i,a){i=i||systemLang,a=a||systemDictionary,e||(e="body");var t=$(e);t.find(".translate").each(function(e){var t=$(this).attr("data-lang");t||(t=$(this).html(),$(this).attr("data-lang",t));var n=translateWord(t,i,a);n&&$(this).html(n)}),t.find(".translateV").each(function(e){var t=$(this).attr("data-lang-value");t||(t=$(this).attr("value"),$(this).attr("data-lang-value",t));var n=translateWord(t,i,a);n&&$(this).attr("value",n)}),t.find(".translateT").each(function(e){var t=$(this).attr("data-lang-title");t||(t=$(this).attr("title"),$(this).attr("data-lang-title",t));var n=translateWord(t,i,a);n&&$(this).attr("title",n)}),t.find(".translateP").each(function(e){var t=$(this).attr("data-lang-placeholder");t||(t=$(this).attr("placeholder"),$(this).attr("data-lang-placeholder",t));var n=translateWord(t,i,a);n&&$(this).attr("placeholder",n)})}function translateName(e){return e&&"object"==typeof e?e[systemLang]||e.en:e}var _=function(e,t,n,i){var a=(e=translateWord(e)).indexOf("%s");return-1===a||-1===(a=(e=e.replace("%s",t)).indexOf("%s"))||-1!==(a=(e=e.replace("%s",n)).indexOf("%s"))&&(e=e.replace("%s",i)),e};!function(X){if(!X.fn.treeTable){var t={init:function(e){e.imgPath=e.imgPath||"lib/css/fancytree/";for(var t=0;t';n+='
      ';for(var i=e.rows,a=0;a'+(d?"":'')+''+l+""}n+="
    ";var u=X(this),m=X(n);u.find(".treetablelist-buttons").remove(),u.find(".treetable-list").remove(),u.find(".tree-table-buttons").remove(),u.find(".tree-table-main").remove(),u.prepend(m);var g=X(m).find(".treetablelist-buttons"),h=X(m).find(".treetable-list");h.sortable({cancel:".treetable-list-folder",axis:"y"}).data("options",e);var f=this;g.find(".treetable-list-btn-ok").button({icons:{primary:"ui-icon-check"},text:!1}).css({width:24,height:24}).on("click",function(){var i="",a=[];h.find("li").each(function(){var e=X(this).data("id");if(X(this).hasClass("treetable-list-folder"))i=e;else{var t=e.split("."),n=t.pop();t.join(".")!==i&&a.push({oldId:e,newId:i+"."+n})}}),function t(n,i,a){if(i&&i.length){var e=i.shift();n.moveId&&n.moveId(e.oldId,e.newId,function(e){setTimeout(function(){t(n,i,a)},50)})}else a&&a()}(e,a,function(){p.call(f,e)})}),g.find(".treetable-list-btn-cancel").button({icons:{primary:"ui-icon-cancel"},text:!1}).css({width:24,height:24}).on("click",function(){p.call(f,e)})}function ne(e,t,n){var i="",a="",s=e&&e.common;if(s)if(s.icon){if(s.icon.match(/^data:image\//))i=s.icon;else{if(-1===s.icon.indexOf("."))return''+s.icon+"";var o;i="instance"===e.type?"/adapter/"+e.common.name+"/"+e.common.icon:e._id.match(/^system\.adapter\./)?(o=e._id.split(".",3),"/"===e.common.icon[0]?o[2]+=e.common.icon:o[2]+="/"+e.common.icon,"/adapter/"+o[2]):(o=e._id.split(".",2),"/"===e.common.icon[0]?o[0]+=e.common.icon:o[0]+="/"+e.common.icon,"/adapter/"+o[0])}a=e.type}else t=t||"lib/css/fancytree/","device"===e.type?(i=t+"device.png",a="device"):"channel"===e.type?(i=t+"channel.png",a="channel"):"state"===e.type&&(i=t+"state.png",a="state");return i?''+a+'':""}function p(i){var e="",t=window.M&&window.M.toast?"a":"button";if(i.panelButtons){e+='
    ';for(var n=0;n",window.M&&window.M.toast&&(e+=''+(i.panelButtons[n].icon||"")+""),e+="";i.moveId&&(e+="<"+t+' class="btn-floating waves-effect waves-light blue treetable-sort" title="'+_("reorder")+'">',window.M&&window.M.toast&&(e+='import_export'),e+=""),e+="
    "}e+='
    ',e+=" ",e+=' ';for(var a=0;a",e+=' ',e+=' ',e+=" "):e+=" "+_(i.columns[a])+"";i.buttons&&(e+=" "),e+=" ",e+="",e+="";var s=[],o=i.root?new RegExp("^"+i.root.replace(/\./g,"\\.")+"\\."):null,r=-1!==i.columns.indexOf("instance")?[]:null;for(var c in i.objects){var l;if(i.objects.hasOwnProperty(c))if(r&&"instance"===i.objects[c].type&&(l=c.match(/^system\.adapter\.javascript\.(\d+)$/))&&r.push(l[1]),!o||o.test(c)){var d=i.objects[c].common,u={id:c,parent:null,_class:"treetable-"+i.objects[c].type};"channel"===i.objects[c].type&&(u.folder=!0);for(var m=0;mt.id?1:e.id',s[O].children&&s[O].children.length&&(e+=''+s[O].children.length+"")):e+='"}if(i.buttons){e+='"}e+=""}e+="";var P=X(this),H=X(e);P.find("span:first-child").remove(),P.find(".treetablelist-buttons").remove(),P.find(".treetable-list").remove(),P.find(".tree-table-buttons").remove(),P.find(".tree-table-main").remove(),P.prepend(H),i.rows=s;var G=X(H[1]).find(">table"),B=X(H[0]);G.data("options",i),G.treetable({expandable:!0,clickableNodeNames:!0,expanderTemplate:"",indenterTemplate:'',onNodeExpand:q,onNodeCollapse:ee,stringCollapse:_("collapse"),stringExpand:_("expand")});var F=G.find("tbody");if(F.on("click","tr",function(){X(".selected").not(this).removeClass("selected"),X(this).addClass("selected");var e=X(this).parent().parent().data("options"),t=X(this).data("tt-id");e.onChange&&e.onChange(X(this).data("tt-id"),e.oldId),e.oldId=t}),i.buttons)for(var Z=0;Z"%s"?',en:'Are you sure to delete "%s"?'},'Are you sure to delete all children of %s?':{cn:'Are you sure to delete all children of %s?',en:'Are you sure to delete all children of %s?'},"Are you sure to delete all children of %s?":{cn:'Are you sure to delete "%s" and all children?',en:'Are you sure to delete "%s" and all children?'},"Are you sure to delete script %s?":{cn:"Are you sure to delete script '%s'?",en:"Are you sure to delete script '%s'?"},"Are you sure you want to delete adapter %s?":{cn:"Are you sure you want to delete adapter %s?",en:"Are you sure you want to delete adapter %s?"},"Are you sure you want to delete the instance %s?":{cn:"Are you sure you want to delete the instance %s?",en:"Are you sure you want to delete the instance %s?"},"Are you sure?":{cn:"Are you sure?",en:"Are you sure?"},"Are you sure? Changes are not saved.":{cn:"Are you sure? Changes are not saved.",en:"Are you sure? Changes are not saved."},Argentina:{cn:"Argentina",en:"Argentina"},Armenia:{cn:"Armenia",en:"Armenia"},Aruba:{cn:"Aruba",en:"Aruba"},Aug:{cn:"Aug",en:"Aug"},August:{cn:"August",en:"August"},Australia:{cn:"Australia",en:"Australia"},Austria:{cn:"Austria",en:"Austria"},"Authentication was deactivated":{cn:"Authentication was deactivated",en:"Authentication was deactivated"},Available:{cn:"Available",en:"Available"},"Available version:":{cn:"Available version",en:"Available version"},Azerbaijan:{cn:"Azerbaijan",en:"Azerbaijan"},Background:{cn:"Background",en:"Background"},"Background color of the login screen":{cn:"Background color of the login screen",en:"Background color of the login screen"},"Background image":{cn:"Background image",en:"Background image"},Bahamas:{cn:"Bahamas",en:"Bahamas"},Bahrain:{cn:"Bahrain",en:"Bahrain"},Bangladesh:{cn:"Bangladesh",en:"Bangladesh"},Barbados:{cn:"Barbados",en:"Barbados"},Belarus:{cn:"Belarus",en:"Belarus"},Belgium:{cn:"Belgium",en:"Belgium"},Belize:{cn:"Belize",en:"Belize"},Benin:{cn:"Benin",en:"Benin"},Bermuda:{cn:"Bermuda",en:"Bermuda"},Bhutan:{cn:"Bhutan",en:"Bhutan"},Bolivia:{cn:"Bolivia",en:"Bolivia"},"Bosnia and Herzegovina":{cn:"Bosnia and Herzegovina",en:"Bosnia and Herzegovina"},Botswana:{cn:"Botswana",en:"Botswana"},"Bouvet Island":{cn:"Bouvet Island",en:"Bouvet Island"},Brazil:{cn:"Brazil",en:"Brazil"},"British Indian Ocean Territory":{cn:"British Indian Ocean Territory",en:"British Indian Ocean Territory"},"Brunei Darussalam":{cn:"Brunei Darussalam",en:"Brunei Darussalam"},Bulgaria:{cn:"Bulgaria",en:"Bulgaria"},"Burkina Faso":{cn:"Burkina Faso",en:"Burkina Faso"},Burundi:{cn:"Burundi",en:"Burundi"},CPUs:{cn:"CPUs",en:"CPUs"},Calendar:{cn:"Calendar",en:"Calendar"},Cambodia:{cn:"Cambodia",en:"Cambodia"},Cameroon:{cn:"Cameroon",en:"Cameroon"},Canada:{cn:"Canada",en:"Canada"},Cancel:{cn:"Cancel",en:"Cancel"},"Cannot create user: ":{cn:"Cannot create user: ",en:"Cannot create user: "},"Cannot delete user: ":{cn:"Cannot delete user: ",en:"Cannot delete user: "},"Cannot disable admin!":{cn:"Cannot disable admin!",en:"Cannot disable admin!"},"Cannot read file!":{cn:"Cannot read file!",en:"Cannot read file!"},"Cannot read version from NPM":{cn:"Could not read version from NPM",en:"Could not read version from NPM"},"Cannot set password: ":{cn:"Cannot set password: ",en:"Cannot set password: "},"Cape Verde":{cn:"Cape Verde",en:"Cape Verde"},"Cayman Islands":{cn:"Cayman Islands",en:"Cayman Islands"},"Central African Republic":{cn:"Central African Republic",en:"Central African Republic"},Certificates:{cn:"Certificates",en:"Certificates"},Chad:{cn:"Chad",en:"Chad"},Change:{cn:"Change",en:"Change"},Changelog:{cn:"Change log",en:"Change log"},Channel:{cn:"Channel",en:"Channel"},Chart:{cn:"Chart",en:"Chart"},"Chart for %s":{cn:"Chart for %s",en:"Chart for %s"},"Check all":{cn:"Check all",en:"Check all"},Chile:{cn:"Chile",en:"Chile"},China:{cn:"China",en:"China"},"Christmas Island":{cn:"Christmas Island",en:"Christmas Island"},"City:":{cn:"City",en:"City"},Clear:{cn:"Clear",en:"Clear"},"Clear list":{cn:"Clear list",en:"Clear list"},"Clear log":{cn:"Clear log",en:"Clear log"},"Clear on disk permanent":{cn:"Clear on disk permanent",en:"Clear on disk permanent"},"Click do activate events again, or just wait one minute":{cn:"Click do activate events again, or just wait one minute",en:"Click do activate events again, or just wait one minute"},"Click on icon":{cn:"Click on icon to open a link",en:"Click on icon to open a link"},Close:{cn:"close",en:"close"},"Cocos Islands":{cn:"Cocos Islands",en:"Cocos Islands"},"Collapse all nodes":{cn:"Collapse all nodes",en:"Collapse all nodes"},Colombia:{cn:"Colombia",en:"Colombia"},Color:{cn:"Color",en:"Color"},Comoros:{cn:"Comoros",en:"Comoros"},"Configuration not saved.":{cn:"Configuration not saved.",en:"Configuration not saved."},Congo:{cn:"Congo",en:"Congo"},"Connected to %s: ":{cn:"Connected to %s: ",en:"Connected to %s: "},"Connected to host: ":{cn:"Connected to host: ",en:"Connected to host: "},"Cook Islands":{cn:"Cook Islands",en:"Cook Islands"},"Copy log":{cn:"Copy log",en:"Copy log"},"Copy to clipboard":{cn:"Copy to clipboard",en:"Copy to clipboard"},"Costa Rica":{cn:"Costa Rica",en:"Costa Rica"},"Country:":{cn:"Country",en:"Country"},Create:{cn:"Create",en:"Create"},"Create new category":{cn:"Create new category",en:"Create new category"},"Create new category, like %s":{cn:"Create new category, like %s",en:"Create new category, like %s"},"Create new enum":{cn:"Create new enum",en:"Create new enum"},"Create new enum, like %s":{cn:"Create new enum, like %s",en:"Create new enum, like %s"},"Create new group":{cn:"Create new group",en:"Create new group"},"Create new user":{cn:"Create new user",en:"Create new user"},Created:{cn:"Created",en:"Created"},Croatia:{cn:"Croatia",en:"Croatia"},"Cron expression":{cn:"Cron expression",en:"Cron expression"},Cuba:{cn:"Cuba",en:"Cuba"},"Currency:":{cn:"Currency",en:"Currency"},Custom:{cn:"Custom",en:"Custom"},Cyprus:{cn:"Cyprus",en:"Cyprus"},"Czech Republic":{cn:"Czech Republic",en:"Czech Republic"},D$ecember:{cn:"D$ecember",en:"D$ecember"},"DD.MM.YY":{cn:"DD.MM.YY",en:"DD.MM.YY"},"DD.MM.YYYY":{cn:"DD.MM.YYYY",en:"DD.MM.YYYY"},"DD/MM/YYYY":{cn:"DD/MM/YYYY",en:"DD/MM/YYYY"},"Date From":{cn:"Date From",en:"Date From"},"Date To":{cn:"Date To",en:"Date To"},"Date format:":{cn:"Date format",en:"Date format"},"Deactivated. Click to start.":{cn:"Deactivated. Click to start.",en:"Deactivated. Click to start."},"Debug outputs:":{cn:"Debug outputs",en:"Debug outputs"},Dec:{cn:"Dec",en:"Dec"},December:{cn:"December",en:"December"},"Default ACL":{cn:"Default ACL",en:"Default ACL"},"Default history instance:":{cn:"Default history instance",en:"Default history instance"},"Delete attribute":{cn:"Delete attribute",en:"Delete attribute"},"Delete category":{cn:"Delete category",en:"Delete category"},"Delete enum":{cn:"Delete enum",en:"Delete enum"},"Delete member":{cn:"Delete member",en:"Delete member"},"Delete object":{cn:"Delete object",en:"Delete object"},Denmark:{cn:"Denmark",en:"Denmark"},Description:{cn:"Description",en:"Description"},Device:{cn:"Device",en:"Device"},"Device discovery":{cn:"Device discovery",en:"Device discovery"},"Disable authentication":{cn:"Disable authentication",en:"Disable authentication"},"Disk free":{cn:"Disk free",en:"Disk free"},"Disk free:":{cn:"Disk free:",en:"Disk free:"},"Disk size":{cn:"Disk size",en:"Disk size"},Djibouti:{cn:"Djibouti",en:"Djibouti"},'Do you want to delete just one object or all children of %s too?':{cn:'Do you want to delete just one object or all children of %s too?',en:'Do you want to delete just one object or all children of %s too?'},"Do you want to upgrade all adapters?":{cn:"Do you want to upgrade all adapters?",en:"Do you want to upgrade all adapters?"},"Domains:":{cn:"Domains",en:"Domains"},Dominica:{cn:"Dominica",en:"Dominica"},"Dominican Republic":{cn:"Dominican Republic",en:"Dominican Republic"},"Done with error: %s":{cn:"Done with error: %s",en:"Done with error: %s"},"Download log":{cn:"Download log",en:"Download log"},"Drop the files here":{cn:"Drop the files here",en:"Drop the files here"},"Drop the icons here":{cn:"Drop the icons here",en:"Drop the icons here"},"East Timor":{cn:"East Timor",en:"East Timor"},Ecuador:{cn:"Ecuador",en:"Ecuador"},Edit:{cn:"Edit",en:"Edit"},"Edit category":{cn:"Edit category",en:"Edit category"},"Edit enum":{cn:"Edit enum",en:"Edit enum"},"Edit in dialog":{cn:"Edit in dialog",en:"Edit in dialog"},"Edit object":{cn:"Edit object",en:"Edit object"},Egypt:{cn:"Egypt",en:"Egypt"},"El Salvador":{cn:"El Salvador",en:"El Salvador"},"Email for account:":{cn:"Email for account",en:"Email for account"},"Enabled:":{cn:"Enabled",en:"Enabled"},Enums:{cn:"Enums",en:"Enums"},"Equatorial Guinea":{cn:"Equatorial Guinea",en:"Equatorial Guinea"},Eritrea:{cn:"Eritrea",en:"Eritrea"},Error:{cn:"Error",en:"Error"},Estonia:{cn:"Estonia",en:"Estonia"},Ethiopia:{cn:"Ethiopia",en:"Ethiopia"},Event:{cn:"Type",en:"Type"},Events:{cn:"Events",en:"Events"},Everyone:{cn:"Everyone",en:"Everyone"},"Expand all nodes":{cn:"Expand all nodes",en:"Expand all nodes"},"Failed to open JSON File":{cn:"Failed to open JSON file",en:"Failed to open JSON file"},"Falkland Islands (Malvinas)":{cn:"Falkland Islands (Malvinas)",en:"Falkland Islands (Malvinas)"},"Faroe Islands":{cn:"Faroe Islands",en:"Faroe Islands"},Feb:{cn:"Feb",en:"Feb"},February:{cn:"February",en:"February"},Fiji:{cn:"Fiji",en:"Fiji"},"File is too big!":{cn:"File is too big!",en:"File is too big!"},"File rights":{cn:"File rights",en:"File rights"},Filter:{cn:"Filter",en:"Filter"},"Filter:":{cn:"Filter",en:"Filter"},"Filtered out":{cn:"Everything is filtered out",en:"Everything is filtered out"},"Find coordinates...":{cn:"Find coordinates...",en:"Find coordinates..."},Finland:{cn:"Finland",en:"Finland"},"Float divider:":{cn:"Float divider",en:"Float divider"},France:{cn:"France",en:"France"},"Free RAM:":{cn:"Free:",en:"Free:"},"French Guiana":{cn:"French Guiana",en:"French Guiana"},"French Polynesia":{cn:"French Polynesia",en:"French Polynesia"},"French Southern Territories":{cn:"French Southern Territories",en:"French Southern Territories"},Fri:{cn:"Fri",en:"Fri"},From:{cn:"From: ",en:"From: "},"From github":{cn:"From github",en:"From github"},Function:{cn:"Function",en:"Function"},Gabon:{cn:"Gabon",en:"Gabon"},Gambia:{cn:"Gambia",en:"Gambia"},"Generated ID:":{cn:"Generated ID",en:"Generated ID"},Georgia:{cn:"Georgia",en:"Georgia"},Germany:{cn:"Germany",en:"Germany"},Ghana:{cn:"Ghana",en:"Ghana"},Gibraltar:{cn:"Gibraltar",en:"Gibraltar"},"Go to Github...":{cn:"Go to Github...",en:"Go to Github..."},Greece:{cn:"Greece",en:"Greece"},Greenland:{cn:"Greenland",en:"Greenland"},Grenada:{cn:"Grenada",en:"Grenada"},Group:{cn:"Group",en:"Group"},Groups:{cn:"Groups",en:"Groups"},Guadeloupe:{cn:"Guadeloupe",en:"Guadeloupe"},Guam:{cn:"Guam",en:"Guam"},Guatemala:{cn:"Guatemala",en:"Guatemala"},Guernsey:{cn:"Guernsey",en:"Guernsey"},Guinea:{cn:"Guinea",en:"Guinea"},"Guinea-Bissau":{cn:"Guinea-Bissau",en:"Guinea-Bissau"},Guyana:{cn:"Guyana",en:"Guyana"},Haiti:{cn:"Haiti",en:"Haiti"},"Has no permission to %s %s %s":{cn:"Has no permission to %s %s %s",en:"Has no permission to %s %s %s"},"Heard and Mc Donald Islands":{cn:"Heard and Mc Donald Islands",en:"Heard and Mc Donald Islands"},"Heartbeat: ":{cn:"Heartbeat: ",en:"Heartbeat: "},Honduras:{cn:"Honduras",en:"Honduras"},"Hong Kong":{cn:"Hong Kong",en:"Hong Kong"},Host:{cn:"Host",en:"Host"},"Host %s is offline":{cn:"Host %s is offline",en:"Host %s is offline"},"Host:":{cn:"Host",en:"Host"},Hosts:{cn:"Hosts",en:"Hosts"},Hungary:{cn:"Hungary",en:"Hungary"},ID:{cn:"ID",en:"ID"},Iceland:{cn:"Iceland",en:"Iceland"},"Icon upload":{cn:"Icon upload",en:"Icon upload"},"Ignore warning":{cn:"Ignore warning",en:"Ignore warning"},"In background":{cn:"In background",en:"In background"},India:{cn:"India",en:"India"},Indonesia:{cn:"Indonesia",en:"Indonesia"},Info:{cn:"Info",en:"Info"},Insert:{cn:"Insert",en:"Insert"},Install:{cn:"Install",en:"Install"},"Install adapter from URL":{cn:"Install or update the adapter from URL",en:"Install or update the adapter from URL"},"Install adapter from github":{cn:"Install or update the adapter from Github",en:"Install or update the adapter from Github"},"Install from custom URL":{cn:"Install from custom URL",en:"Install from custom URL"},"Install or update from URL...":{cn:"Install or update from URL...",en:"Install or update from URL..."},"Installation counter":{cn:"Installations counter",en:"Installations counter"},"Installations counter":{cn:"Installations counter",en:"Installations counter"},Installed:{cn:"Installed",en:"Installed"},"Installed from group":{cn:"Installed from group",en:"Installed from group"},"Installed instances":{cn:"Installed instances",en:"Installed instances"},"Installed version":{cn:"Installed version",en:"Installed version"},Instances:{cn:"Instances",en:"Instances"},Instructions:{cn:"Instructions",en:"Instructions"},Intro:{cn:"Overview",en:"Overview"},"Invalid version of %s":{cn:"Invalid version of %s",en:"Invalid version of %s"},"Invalid version of %s. Required %s":{cn:"Invalid version of %s. Required %s",en:"Invalid version of %s. Required %s"},Iran:{cn:"Iran",en:"Iran"},Iraq:{cn:"Iraq",en:"Iraq"},Ireland:{cn:"Ireland",en:"Ireland"},"Is yet in the list":{cn:"It's already in the list",en:"It's already in the list"},"Isle of Man":{cn:"Isle of Man",en:"Isle of Man"},Israel:{cn:"Israel",en:"Israel"},Italy:{cn:"Italy",en:"Italy"},"Ivory Coast":{cn:"Ivory Coast",en:"Ivory Coast"},Jamaica:{cn:"Jamaica",en:"Jamaica"},Jan:{cn:"Jan",en:"Jan"},January:{cn:"January",en:"January"},Japan:{cn:"Japan",en:"Japan"},Jersey:{cn:"Jersey",en:"Jersey"},Jordan:{cn:"Jordan",en:"Jordan"},Jul:{cn:"Jul",en:"Jul"},July:{cn:"July",en:"July"},Jun:{cn:"Jun",en:"Jun"},June:{cn:"June",en:"June"},Kazakhstan:{cn:"Kazakhstan",en:"Kazakhstan"},Kenya:{cn:"Kenya",en:"Kenya"},Kiribati:{cn:"Kiribati",en:"Kiribati"},"Known bugs for":{cn:"Known bugs for",en:"Known bugs for"},Korea:{cn:"Korea",en:"Korea"},Kosovo:{cn:"Kosovo",en:"Kosovo"},Kuwait:{cn:"Kuwait",en:"Kuwait"},Kyrgyzstan:{cn:"Kyrgyzstan",en:"Kyrgyzstan"},"Lao People's Democratic Republic":{cn:"Lao People's Democratic Republic",en:"Lao People's Democratic Republic"},"Last changed":{cn:"Last changed",en:"Last changed"},"Last update":{cn:"Last update",en:"Last update"},"Latitude:":{cn:"Latitude",en:"Latitude"},Latvia:{cn:"Latvia",en:"Latvia"},Lebanon:{cn:"Lebanon",en:"Lebanon"},Lesotho:{cn:"Lesotho",en:"Lesotho"},"Let's Encrypt settings":{cn:"Let's Encrypt settings",en:"Let's Encrypt settings"},"Let's encrypt SSL":{cn:"Let's encrypt SSL",en:"Let's encrypt SSL"},Liberia:{cn:"Liberia",en:"Liberia"},"Libyan Arab Jamahiriya":{cn:"Libyan Arab Jamahiriya",en:"Libyan Arab Jamahiriya"},License:{cn:"License",en:"License"},"License terms":{cn:"License terms",en:"License terms"},Liechtenstein:{cn:"Liechtenstein",en:"Liechtenstein"},"Listen on all IPs":{cn:"Listen on all IPs",en:"Listen on all IPs"},Lithuania:{cn:"Lithuania",en:"Lithuania"},"Loading...":{cn:"Loading...",en:"Loading..."},Log:{cn:"Log",en:"Log"},"Log file will be deleted. Are you sure?":{cn:"Log file will be deleted. Are you sure?",en:"Log file will be deleted. Are you sure?"},"Log size:":{cn:"Log size",en:"Log size"},"Login timeout(sec):":{cn:"Login timeout (sec)",en:"Login timeout (sec)"},Logout:{cn:"Logout",en:"Logout"},"Longitude:":{cn:"Longitude",en:"Longitude"},Luxembourg:{cn:"Luxembourg",en:"Luxembourg"},MB:{cn:"Mb",en:"Mb"},Macau:{cn:"Macau",en:"Macau"},Macedonia:{cn:"Macedonia",en:"Macedonia"},Madagascar:{cn:"Madagascar",en:"Madagascar"},Mai:{cn:"Mai",en:"Mai"},Main:{cn:"Main",en:"Main"},"Main settings":{cn:"Main settings",en:"Main settings"},Malawi:{cn:"Malawi",en:"Malawi"},Malaysia:{cn:"Malaysia",en:"Malaysia"},Maldives:{cn:"Maldives",en:"Maldives"},Mali:{cn:"Mali",en:"Mali"},Malta:{cn:"Malta",en:"Malta"},"Manually created":{cn:"Manually created",en:"Manually created"},Mar:{cn:"Mar",en:"Mar"},March:{cn:"March",en:"March"},"Marshall Islands":{cn:"Marshall Islands",en:"Marshall Islands"},Martinique:{cn:"Martinique",en:"Martinique"},Mauritania:{cn:"Mauritania",en:"Mauritania"},Mauritius:{cn:"Mauritius",en:"Mauritius"},Mayotte:{cn:"Mayotte",en:"Mayotte"},Members:{cn:"Members",en:"Members"},Message:{cn:"Message",en:"Message"},"Message buffer overflow. Losing oldest":{cn:"Message buffer overflow. Losing oldest.",en:"Message buffer overflow. Losing oldest."},Mexico:{cn:"Mexico",en:"Mexico"},Micronesia:{cn:"Micronesia",en:"Micronesia"},Model:{cn:"Model",en:"Model"},Moldova:{cn:"Moldova",en:"Moldova"},Mon:{cn:"Mon",en:"Mon"},Monaco:{cn:"Monaco",en:"Monaco"},Mongolia:{cn:"Mongolia",en:"Mongolia"},Montenegro:{cn:"Montenegro",en:"Montenegro"},Montserrat:{cn:"Montserrat",en:"Montserrat"},Morocco:{cn:"Morocco",en:"Morocco"},Mozambique:{cn:"Mozambique",en:"Mozambique"},Myanmar:{cn:"Myanmar",en:"Myanmar"},NPM:{cn:"NPM",en:"NPM"},Name:{cn:"Name",en:"Name"},"Name:":{cn:"Name",en:"Name"},Namibia:{cn:"Namibia",en:"Namibia"},Nauru:{cn:"Nauru",en:"Nauru"},Nepal:{cn:"Nepal",en:"Nepal"},Netherlands:{cn:"Netherlands",en:"Netherlands"},"Netherlands Antilles":{cn:"Netherlands Antilles",en:"Netherlands Antilles"},New:{cn:"New",en:"New"},"New Caledonia":{cn:"New Caledonia",en:"New Caledonia"},"New Zealand":{cn:"New Zealand",en:"New Zealand"},"New category":{cn:"New category",en:"New category"},"New enum":{cn:"New enum",en:"New enum"},"New group":{cn:"New group",en:"New group"},"New object":{cn:"New object",en:"New object"},"New objekt":{cn:"New object",en:"New object"},"New user":{cn:"New user",en:"New user"},Nicaragua:{cn:"Nicaragua",en:"Nicaragua"},Niger:{cn:"Niger",en:"Niger"},Nigeria:{cn:"Nigeria",en:"Nigeria"},Niue:{cn:"Niue",en:"Niue"},"No data":{cn:"No data",en:"No data"},"No states selected!":{cn:"No states selected!",en:"No states selected!"},"No version of %s":{cn:"No version of %s",en:"No version of %s"},"Node.js":{cn:"Node.js",en:"Node.js"},"Norfolk Island":{cn:"Norfolk Island",en:"Norfolk Island"},"Northern Mariana Islands":{cn:"Northern Mariana Islands",en:"Northern Mariana Islands"},Norway:{cn:"Norway",en:"Norway"},"Not exists":{cn:"Does not exist",en:"Does not exist"},"Note:":{cn:"Note",en:"Note"},Nov:{cn:"Nov",en:"Nov"},November:{cn:"November",en:"November"},OS:{cn:"OS",en:"OS"},'Object "%s" does not exists. Update the page.':{cn:'Object "%s" does not exist. Update the page.',en:'Object "%s" does not exist. Update the page.'},"Object may not be deleted":{cn:"Object may not be deleted",en:"Object may not be deleted"},"Object rights":{cn:"Object rights",en:"Object rights"},Objects:{cn:"Objects",en:"Objects"},Oct:{cn:"Oct",en:"Oct"},October:{cn:"October",en:"October"},Ok:{cn:"Ok",en:"Ok"},Oman:{cn:"Oman",en:"Oman"},"Only one":{cn:"Only one",en:"Only one"},"Open original":{cn:"Open on new tab",en:"Open on new tab"},Owner:{cn:"Owner",en:"Owner"},"Owner group":{cn:"Owner group",en:"Owner group"},"Owner user":{cn:"Owner user",en:"Owner user"},Pakistan:{cn:"Pakistan",en:"Pakistan"},Palau:{cn:"Palau",en:"Palau"},Palestine:{cn:"Palestine",en:"Palestine"},Panama:{cn:"Panama",en:"Panama"},"Papua New Guinea":{cn:"Papua New Guinea",en:"Papua New Guinea"},Paraguay:{cn:"Paraguay",en:"Paraguay"},Parent:{cn:"Parent",en:"Parent"},"Parse error":{cn:"Parse error",en:"Parse error"},Password:{cn:"Password",en:"Password"},"Password and confirmation are not equal!":{cn:"Password and confirmation are not equal!",en:"Password and confirmation are not equal!"},"Password cannot be empty!":{cn:"Password cannot be empty!",en:"Password cannot be empty!"},"Password repeat":{cn:"Password repeat",en:"Password repeat"},"Path to storage:":{cn:"Path to storage",en:"Path to storage"},"Pause output":{cn:"Pause output",en:"Pause output"},Peru:{cn:"Peru",en:"Peru"},Philippines:{cn:"Philippines",en:"Philippines"},Pitcairn:{cn:"Pitcairn",en:"Pitcairn"},Platform:{cn:"Platform",en:"Platform"},"Please confirm":{cn:"Please confirm",en:"Please confirm"},Poland:{cn:"Poland",en:"Poland"},Popular:{cn:"Popular",en:"Popular"},"Popular first":{cn:"Popular first",en:"Popular first"},"Port to check the domain:":{cn:"Port to check the domain",en:"Port to check the domain"},Portugal:{cn:"Portugal",en:"Portugal"},"Preserve ID":{cn:"Preserve ID",en:"Preserve ID"},Preview:{cn:"Preview",en:"Preview"},"Processing...":{cn:"Processing...",en:"Processing..."},"Puerto Rico":{cn:"Puerto Rico",en:"Puerto Rico"},Qatar:{cn:"Qatar",en:"Qatar"},RAM:{cn:"RAM",en:"RAM"},"RAM total usage:":{cn:"Total RAM usage:",en:"Total RAM usage:"},"RAM usage":{cn:"RAM usage",en:"RAM usage"},"Rebuild tree":{cn:"Rebuild tree",en:"Rebuild tree"},"Recently updated":{cn:"Recently updated",en:"Recently updated"},"Refresh log":{cn:"Refresh log",en:"Refresh log"},Removed:{cn:"Removed",en:"Removed"},"Removing of adapter...":{cn:"Removing of adapter...",en:"Removing of adapter..."},"Removing of instance...":{cn:"Removing of instance...",en:"Removing of instance..."},Rename:{cn:"Rename",en:"Rename"},Repositories:{cn:"Repositories",en:"Repositories"},Reunion:{cn:"Reunion",en:"Reunion"},Rights:{cn:"Access rights",en:"Access rights"},Role:{cn:"Role",en:"Role"},Romania:{cn:"Romania",en:"Romania"},Room:{cn:"Room",en:"Room"},"Running: ":{cn:"Running: ",en:"Running: "},"Russian Federation":{cn:"Russian Federation",en:"Russian Federation"},Rwanda:{cn:"Rwanda",en:"Rwanda"},"Saint Kitts and Nevis":{cn:"Saint Kitts and Nevis",en:"Saint Kitts and Nevis"},"Saint Lucia":{cn:"Saint Lucia",en:"Saint Lucia"},"Saint Vincent and the Grenadines":{cn:"Saint Vincent and the Grenadines",en:"Saint Vincent and the Grenadines"},Samoa:{cn:"Samoa",en:"Samoa"},"San Marino":{cn:"San Marino",en:"San Marino"},"Sao Tome and Principe":{cn:"Sao Tome and Principe",en:"Sao Tome and Principe"},Sat:{cn:"Sat",en:"Sat"},"Saudi Arabia":{cn:"Saudi Arabia",en:"Saudi Arabia"},Save:{cn:"Save",en:"Save"},"Save Objecttree as JSON File":{cn:"Save objects tree as JSON file",en:"Save objects tree as JSON file"},"Save Objecttree is not possible":{cn:"Saving the objects tree is not possible",en:"Saving the objects tree is not possible"},"Save configuration":{cn:"Save configuration",en:"Save configuration"},Script:{cn:"Script",en:"Script"},Scripts:{cn:"Scripts",en:"Scripts"},Select:{cn:"Select",en:"Select"},"Select ID":{cn:"Select ID",en:"Select ID"},"Select adapter:":{cn:"Select adapter",en:"Select adapter"},"Select language":{cn:"Select language",en:"Select language"},"Select options":{cn:"Select options",en:"Select options"},Senegal:{cn:"Senegal",en:"Senegal"},"Sent data:":{cn:"Sent data",en:"Sent data"},Sep:{cn:"Sep",en:"Sep"},September:{cn:"September",en:"September"},Serbia:{cn:"Serbia",en:"Serbia"},Set:{cn:"Set",en:"Set"},"Set CRON":{cn:"Set",en:"Set"},"Set CRON schedule for restarts":{cn:"Set CRON schedule for restarts",en:"Set CRON schedule for restarts"},Settings:{cn:"Settings",en:"Settings"},"Settings for %s":{cn:"Settings for %s",en:"Settings for %s"},Seychelles:{cn:"Seychelles",en:"Seychelles"},"Show instances only for current host":{cn:"Show instances only for current host",en:"Show instances only for current host"},"Show values of instance":{cn:"Show values of instance",en:"Show values of instance"},"Show...":{cn:"Show...",en:"Show..."},"Sierra Leone":{cn:"Sierra Leone",en:"Sierra Leone"},Singapore:{cn:"Singapore",en:"Singapore"},"Size: %s, Free: %s":{cn:"Size: %s, Available: %s",en:"Size: %s, Available: %s"},Slovakia:{cn:"Slovakia",en:"Slovakia"},Slovenia:{cn:"Slovenia",en:"Slovenia"},"Solomon Islands":{cn:"Solomon Islands",en:"Solomon Islands"},Somalia:{cn:"Somalia",en:"Somalia"},"Some data are not stored. Discard?":{cn:"Some data are not stored. Discard?",en:"Some data are not stored. Discard?"},"Sort alphabetically":{cn:"Sort alphabetically by name",en:"Sort alphabetically by name"},"South Africa":{cn:"South Africa",en:"South Africa"},"South Georgia South Sandwich Islands":{cn:"South Georgia South Sandwich Islands",en:"South Georgia South Sandwich Islands"},Spain:{cn:"Spain",en:"Spain"},Speed:{cn:"Speed",en:"Speed"},"Sri Lanka":{cn:"Sri Lanka",en:"Sri Lanka"},"St. Helena":{cn:"St. Helena",en:"St. Helena"},"St. Pierre and Miquelon":{cn:"St. Pierre and Miquelon",en:"St. Pierre and Miquelon"},"Started...":{cn:"Started...",en:"Started..."},State:{cn:"Datapoint",en:"Datapoint"},"State type":{cn:"State type",en:"State type"},States:{cn:"States",en:"States"},"States rights":{cn:"States rights",en:"States rights"},Statistics:{cn:"Statistics",en:"Statistics"},"Statistics:":{cn:"Statistics",en:"Statistics"},"Storage of %s":{cn:'Storage of %s',en:'Storage of %s'},"Storage of %s states":{cn:'Storage of %s states',en:'Storage of %s states'},"Success!":{cn:"Success!",en:"Success!"},Sudan:{cn:"Sudan",en:"Sudan"},Suggestion:{cn:"Recommendation",en:"Recommendation"},Sun:{cn:"Sun",en:"Sun"},Suriname:{cn:"Suriname",en:"Suriname"},"Svalbard and Jan Mayen Islands":{cn:"Svalbard and Jan Mayen Islands",en:"Svalbard and Jan Mayen Islands"},Swaziland:{cn:"Swaziland",en:"Swaziland"},Sweden:{cn:"Sweden",en:"Sweden"},Switzerland:{cn:"Switzerland",en:"Switzerland"},"Syrian Arab Republic":{cn:"Syrian Arab Republic",en:"Syrian Arab Republic"},System:{cn:"System",en:"System"},"System language:":{cn:"System language",en:"System language"},"System settings":{cn:"System settings",en:"System settings"},"System uptime":{cn:"System uptime",en:"System uptime"},Table:{cn:"Table",en:"Table"},Taiwan:{cn:"Taiwan",en:"Taiwan"},Tajikistan:{cn:"Tajikistan",en:"Tajikistan"},Tanzania:{cn:"Tanzania",en:"Tanzania"},"Temperature units:":{cn:"Temperature units",en:"Temperature units"},Thailand:{cn:"Thailand",en:"Thailand"},'This version of node.js "%s" on "%s" is deprecated. Please install node.js 6, 8 or newer':{cn:'yunkong2 supports the LTS versions 6, 8, 10 or newer of node.js. Please update your version ("%s") on host "%s" to one of the supported versions. We recommend to use Node.js 6.',en:'yunkong2 supports the LTS versions 6, 8, 10 or newer of node.js. Please update your version ("%s") on host "%s" to one of the supported versions. We recommend to use Node.js 6.'},Thu:{cn:"Thu",en:"Thu"},Time:{cn:"Time",en:"Time"},"Time From":{cn:"Time From",en:"Time From"},"Time To":{cn:"Time To",en:"Time To"},"Time stamp":{cn:"Time stamp",en:"Time stamp"},Title:{cn:"Title",en:"Title"},To:{cn:"To",en:"To"},Today:{cn:"Today",en:"Today"},"Toggle expert mode":{cn:"Toggle expert mode",en:"Toggle expert mode"},"Toggle states view":{cn:"Toggle the states view",en:"Toggle the states view"},Togo:{cn:"Togo",en:"Togo"},Tokelau:{cn:"Tokelau",en:"Tokelau"},Tonga:{cn:"Tonga",en:"Tonga"},"Too many events":{cn:"Too many events",en:"Too many events"},"Total count in group":{cn:"Total count in group",en:"Total count in group"},"Trigger event":{cn:"Trigger event",en:"Trigger event"},"Trinidad and Tobago":{cn:"Trinidad and Tobago",en:"Trinidad and Tobago"},Tue:{cn:"Tue",en:"Tue"},Tunisia:{cn:"Tunisia",en:"Tunisia"},Turkey:{cn:"Turkey",en:"Turkey"},Turkmenistan:{cn:"Turkmenistan",en:"Turkmenistan"},"Turks and Caicos Islands":{cn:"Turks and Caicos Islands",en:"Turks and Caicos Islands"},Tuvalu:{cn:"Tuvalu",en:"Tuvalu"},Type:{cn:"Type",en:"Type"},"URL or file path:":{cn:"URL or file path",en:"URL or file path"},Uganda:{cn:"Uganda",en:"Uganda"},Ukraine:{cn:"Ukraine",en:"Ukraine"},"Uncheck All":{cn:"Uncheck All",en:"Uncheck All"},"United Arab Emirates":{cn:"United Arab Emirates",en:"United Arab Emirates"},"United Kingdom":{cn:"United Kingdom",en:"United Kingdom"},"United States":{cn:"United States",en:"United States"},"United States minor outlying islands":{cn:"United States minor outlying islands",en:"United States minor outlying islands"},"Unknown file format!":{cn:"Unknown file format!",en:"Unknown file format!"},Unsecure_Auth:{cn:"The password will be sent via unsecure connection. To protect your passwords enable the secure connection (HTTPS)!",en:"The password will be sent via unsecure connection. To protect your passwords enable the secure connection (HTTPS)!"},"Unsupported image format":{cn:"Unsupported image format",en:"Unsupported image format"},Update:{cn:"Update",en:"Update"},"Update objects":{cn:"Update objects",en:"Update objects"},"Update states":{cn:"Update states",en:"Update states"},Updated:{cn:"Updated",en:"Updated"},"Upgrade all adapters":{cn:"Upgrade all adapters",en:"Upgrade all adapters"},Upload:{cn:"File upload",en:"File upload"},"Upload admin started":{cn:"Upload of configuration is started",en:"Upload of configuration is started"},"Upload started...":{cn:"Upload started...",en:"Upload started..."},Uptime:{cn:"Uptime",en:"Uptime"},Uruguay:{cn:"Uruguay",en:"Uruguay"},"Use Lets Encrypt certificates:":{cn:"Use Let's Encrypt certificates",en:"Use Let's Encrypt certificates"},"Use this instance for automatic update:":{cn:"Use this instance for automatic update",en:"Use this instance for automatic update"},User:{cn:"User",en:"User"},"User deleted":{cn:"User deleted",en:"User deleted"},"User does not exist":{cn:"User does not exist",en:"User does not exist"},"User yet exists":{cn:"User already exists",en:"User already exists"},Users:{cn:"Users",en:"Users"},Uzbekistan:{cn:"Uzbekistan",en:"Uzbekistan"},Value:{cn:"Value",en:"Value"},"Values of %s":{cn:"Values of %s",en:"Values of %s"},Vanuatu:{cn:"Vanuatu",en:"Vanuatu"},"Vatican City State":{cn:"Vatican City State",en:"Vatican City State"},Venezuela:{cn:"Venezuela",en:"Venezuela"},Vietnam:{cn:"Vietnam",en:"Vietnam"},"Virgin Islands (British)":{cn:"Virgin Islands (British)",en:"Virgin Islands (British)"},"Virgin Islands (U.S.)":{cn:"Virgin Islands (U.S.)",en:"Virgin Islands (U.S.)"},"Wallis and Futuna Islands":{cn:"Wallis and Futuna Islands",en:"Wallis and Futuna Islands"},"Warning!":{cn:"Warning!",en:"Warning!"},Wed:{cn:"Wed",en:"Wed"},"Western Sahara":{cn:"Western Sahara",en:"Western Sahara"},With:{cn:"With",en:"With"},Without:{cn:"Without",en:"Without"},Yemen:{cn:"Yemen",en:"Yemen"},"You are going to add new instance: ":{cn:"You are going to add new instance: ",en:"You are going to add new instance: "},"You can check changelog here":{cn:'You can check the changelog here',en:'You can check the changelog here'},"You can drag&drop the devices, channels and states to enums":{cn:"You can drag&drop the devices, channels and states to enums",en:"You can drag&drop the devices, channels and states to enums"},"You can drag&drop users to groups":{cn:"You can drag&drop users to groups",en:"You can drag&drop users to groups"},"You can't see events via cloud":{cn:"You can't see events via cloud",en:"You can't see events via cloud"},"Your home":{cn:"Your home",en:"Your home"},Zaire:{cn:"Zaire",en:"Zaire"},Zambia:{cn:"Zambia",en:"Zambia"},Zimbabwe:{cn:"Zimbabwe",en:"Zimbabwe"},_All:{cn:"All",en:"All"},"_Toggle expert mode":{cn:"Toggle expert mode",en:"Toggle expert mode"},__different__:{cn:"different",en:"different"},"a-z":{cn:"a-z",en:"a-z"},ack:{cn:"ack",en:"ack"},actions:{cn:"actions",en:"actions"},active:{cn:"active",en:"active"},"adapter with updates":{cn:"adapters with updates",en:"adapters with updates"},"adapters count":{cn:"adapters count",en:"adapters count"},add:{cn:"Add",en:"Add"},"add children":{cn:"add children",en:"add children"},"add instance":{cn:"add instance",en:"add instance"},"add repository":{cn:"add repository",en:"add repository"},agree:{cn:"agree",en:"agree"},alarm_group:{cn:"Alarm",en:"Alarm"},alive:{cn:"alive",en:"alive"},all:{cn:"all",en:"all"},alpha:{cn:"alpha",en:"alpha"},array:{cn:"array",en:"array"},auto:{cn:"auto",en:"auto"},available:{cn:"available",en:"available"},beta:{cn:"beta",en:"beta"},boolean:{cn:"boolean",en:"boolean"},bug:{cn:"bugtracker",en:"bugtracker"},cancel:{cn:"Cancel",en:"Cancel"},cert_path_note:{cn:"You can use an absolute path to the certificate, like '/opt/certs/cert.pem', or just upload it per drag&drop",en:"You can use an absolute path to the certificate, like '/opt/certs/cert.pem', or just upload it per drag&drop"},certificate:{cn:"certificate",en:"certificate"},"change view mode":{cn:"change view mode",en:"change view mode"},channel:{cn:"channel",en:"channel"},clear:{cn:"clear",en:"clear"},"climate-control_group":{cn:"Climate Control",en:"Climate Control"},"close on ready":{cn:"close on ready",en:"close on ready"},collapse:{cn:"collapse",en:"collapse"},"collapse all":{cn:"collapse all",en:"collapse all"},comma:{cn:"comma",en:"comma"},"command execution":{cn:"Command execution",en:"Command execution"},common:{cn:"common",en:"common"},"common adapters_group":{cn:"Common",en:"Common"},common_color:{cn:"color",en:"color"},common_def:{cn:"default value",en:"default value"},common_desc:{cn:"description",en:"description"},common_icon:{cn:"icon",en:"icon"},common_max:{cn:"max value",en:"max value"},common_min:{cn:"minimal value",en:"minimal value"},common_read:{cn:"read allowed",en:"read allowed"},common_role:{cn:"role",en:"role"},common_states:{cn:"predefined values",en:"predefined values"},common_type:{cn:"type",en:"type"},common_unit:{cn:"measure unit",en:"measure unit"},common_write:{cn:"write allowed",en:"write allowed"},communication_group:{cn:"Communication",en:"Communication"},config:{cn:"Settings",en:"Settings"},"config instance":{cn:"config instance",en:"config instance"},"confirm password":{cn:"Confirm password",en:"Confirm password"},connected:{cn:"connected",en:"connected"},copy:{cn:"copy",en:"copy"},"copy note":{cn:"Press Ctrl+A and Ctrl+C to copy the log to the clipboard and click with the mouse anywhere to close.",en:"Press Ctrl+A and Ctrl+C to copy the log to the clipboard and click with the mouse anywhere to close."},"create operation":{cn:"create",en:"create"},"custom enum":{cn:"?ustom enum",en:"?ustom enum"},"custom group":{cn:"Custom group",en:"Custom group"},daemon:{cn:"daemon",en:"daemon"},"date-and-time_group":{cn:"Date and Time",en:"Date and Time"},daysShortText:{cn:"d.",en:"d."},debug:{cn:"debug",en:"debug"},delete:{cn:"delete",en:"delete"},"delete adapter":{cn:"delete adapter",en:"delete adapter"},"delete group":{cn:"delete group",en:"delete group"},"delete instance":{cn:"delete instance",en:"delete instance"},"delete operation":{cn:"delete",en:"delete"},"delete script":{cn:"delete script",en:"delete script"},"delete user":{cn:"delete user",en:"delete user"},desc:{cn:"desc",en:"desc"},description:{cn:"Description",en:"Description"},device:{cn:"device",en:"device"},"diag-note":{cn:"We worked hard to create this project. In return we expect from you some usage statistics.
    Every time the adapter list is updated, the anonymized statistics are sent. We respect your privacy, so no private information will be transmitted.
    Thank you!",en:"We worked hard to create this project. In return we expect from you some usage statistics.
    Every time the adapter list is updated, the anonymized statistics are sent. We respect your privacy, so no private information will be transmitted.
    Thank you!"},edit:{cn:"edit",en:"edit"},"edit enum":{cn:"edit enum",en:"edit enum"},"edit enums":{cn:"Edit enumerations for",en:"Edit enumerations for"},"edit file":{cn:"edit file",en:"edit file"},"edit group":{cn:"edit group",en:"edit group"},"edit instance":{cn:"edit instance",en:"edit instance"},"edit script":{cn:"edit script",en:"edit script"},"edit user":{cn:"edit user",en:"edit user"},"edit value":{cn:"Edit value",en:"Edit value"},enabled:{cn:"enabled",en:"enabled"},energy_group:{cn:"Energy",en:"Energy"},engine:{cn:"engine",en:"engine"},"engine type":{cn:"engine type",en:"engine type"},error:{cn:"error",en:"error"},events:{cn:"events",en:"events"},"execute operation":{cn:"Execute operation",en:"Execute operation"},expand:{cn:"expand",en:"expand"},"expand all":{cn:"expand all",en:"expand all"},extended:{cn:"extended",en:"extended"},false:{cn:"false",en:"false"},"file permissions":{cn:"File permissions",en:"File permissions"},from:{cn:"from",en:"from"},garden_group:{cn:"Garden",en:"Garden"},general_group:{cn:"General",en:"General"},geoposition_group:{cn:"Geo position",en:"Geo position"},groups:{cn:"groups",en:"groups"},hardware_group:{cn:"Hardware",en:"Hardware"},history:{cn:"history",en:"history"},"history data":{cn:"history data",en:"history data"},host:{cn:"host",en:"host"},household_group:{cn:"Household",en:"Household"},"http operation":{cn:"http",en:"http"},id:{cn:"ID",en:"ID"},info:{cn:"info",en:"info"},infrastructure_group:{cn:"Infrastructure",en:"Infrastructure"},install:{cn:"install",en:"install"},"install specific version":{cn:"Install a specific version",en:"Install a specific version"},installed:{cn:"installed",en:"installed"},"installed adapters":{cn:"Filter adapters with existing instances",en:"Filter adapters with existing instances"},instance:{cn:"instance",en:"instance"},"instance number":{cn:"Desired instance number",en:"Desired instance number"},"yunkong2 Enums":{cn:"yunkong2 enums",en:"yunkong2 enums"},"yunkong2 States":{cn:"yunkong2 states",en:"yunkong2 states"},"yunkong2 adapter instances":{cn:"yunkong2 adapter instances",en:"yunkong2 adapter instances"},"yunkong2 adapter scripts":{cn:"yunkong2 adapter scripts",en:"yunkong2 adapter scripts"},"yunkong2 adapters":{cn:"yunkong2 adapters",en:"yunkong2 adapters"},"yunkong2 certificates":{cn:"yunkong2 certificates",en:"yunkong2 certificates"},"yunkong2 groups":{cn:"yunkong2 groups",en:"yunkong2 groups"},"yunkong2 hosts":{cn:"yunkong2 hosts",en:"yunkong2 hosts"},"yunkong2 repositories":{cn:"yunkong2 repositories",en:"yunkong2 repositories"},"yunkong2 users":{cn:"yunkong2 users",en:"yunkong2 users"},"iot-system_group":{cn:"IoT systems",en:"IoT systems"},"iot-systems_group":{cn:"IoT Systems",en:"IoT Systems"},keywords:{cn:"keywords",en:"keywords"},lc:{cn:"Last change",en:"Last change"},less:{cn:"less",en:"less"},letsnecrypt_help:{cn:'This are settings for Let\'s Encrypt account. To get the free certificates for your domain. You can read more here.',en:'This are settings for Let\'s Encrypt account. To get the free certificates for your domain. You can read more here.'},letsnecrypt_help_domains:{cn:"E.g: 'example.com, www.example.com'",en:"E.g: 'example.com, www.example.com'"},letsnecrypt_help_email:{cn:"Please use your email address. It will be used for your account.",en:"Please use your email address. It will be used for your account."},letsnecrypt_help_path:{cn:"Directory name where the certificates will be stored. This is always relative to configuration directory",en:"Directory name where the certificates will be stored. This is always relative to configuration directory"},license:{cn:"license",en:"license"},"license agreement":{cn:"license agreement",en:"license agreement"},"license not agree":{cn:"Do not agree with the license!",en:"Do not agree with the license!"},license_checkbox:{cn:"I agree with the collection of anonymous statistics.
    (This can be disabled in settings)",en:"I agree with the collection of anonymous statistics.
    (This can be disabled in settings)"},lighting_group:{cn:"Lighting",en:"Lighting"},link:{cn:"link",en:"link"},list:{cn:"list",en:"list"},"list operation":{cn:"list elements",en:"list elements"},logic_group:{cn:"Logic",en:"Logic"},loglevel:{cn:"loglevel",en:"loglevel"},media_group:{cn:"Media",en:"Media"},members:{cn:"members",en:"members"},memlimit:{cn:"RAM limit",en:"RAM limit"},message:{cn:"message",en:"message"},messaging_group:{cn:"Messaging",en:"Messaging"},"misc-data_group":{cn:"Misc. data",en:"Misc. data"},mixed:{cn:"mixed",en:"mixed"},mode:{cn:"mode",en:"mode"},more:{cn:"more",en:"more"},multi:{cn:"multistate",en:"multistate"},multimedia_group:{cn:"Multimedia",en:"Multimedia"},name:{cn:"name",en:"name"},native:{cn:"native",en:"native"},network_group:{cn:"Network",en:"Network"},"new certificate":{cn:"new certificate",en:"new certificate"},"new group":{cn:"new group",en:"new group"},"new script":{cn:"new script",en:"new script"},"new user":{cn:"new user",en:"new user"},newObject:{cn:"New object",en:"New object"},"no-city":{cn:"no city",en:"no city"},"node-red":{cn:"node-red",en:"node-red"},none:{cn:"none",en:"none"},normal:{cn:"normal",en:"normal"},"not ack":{cn:"not ack",en:"not ack"},"not agree":{cn:"not agree",en:"not agree"},"npm error":{cn:"npm error",en:"npm error"},number:{cn:"number",en:"number"},object:{cn:"object",en:"object"},"object permissions":{cn:"Object permissions",en:"Object permissions"},of:{cn:"of",en:"of"},ok:{cn:"Ok",en:"Ok"},"open web page":{cn:"Open web page of adapter",en:"Open web page of adapter"},os:{cn:"operating system",en:"operating system"},"other permissions":{cn:"Other permissions",en:"Other permissions"},"parent name":{cn:"parent name",en:"parent name"},password:{cn:"Password",en:"Password"},permissionError:{cn:"Permission error",en:"Permission error"},"place here":{cn:"place the files here",en:"place the files here"},planned:{cn:"planned",en:"planned"},platform:{cn:"platform",en:"platform"},point:{cn:"point",en:"point"},popular:{cn:"popular",en:"popular"},process:{cn:"process",en:"process"},protocols_group:{cn:"Protocols",en:"Protocols"},raw:{cn:"Raw (experts only)",en:"Raw (experts only)"},read:{cn:"read",en:"read"},"read operation":{cn:"read",en:"read"},readme:{cn:"readme",en:"readme"},reload:{cn:"reload",en:"reload"},"reload instance":{cn:"reload instance",en:"reload instance"},rest:{cn:"rest (read only)",en:"rest (read only)"},restart:{cn:"auto restart",en:"auto restart"},"restart script":{cn:"restart script",en:"restart script"},role:{cn:"role",en:"role"},save:{cn:"save",en:"save"},schedule_group:{cn:"Schedule",en:"Schedule"},script_group:{cn:"Scripts and Logic",en:"Scripts and Logic"},"select member by double click":{cn:"select member by double clicking",en:"select member by double clicking"},"sendto operation":{cn:"Send-to operation",en:"Send-to operation"},service_group:{cn:"Maintenance",en:"Maintenance"},severity:{cn:"severity",en:"severity"},silly:{cn:"silly",en:"silly"},stable:{cn:"stable",en:"stable"},state:{cn:"state",en:"state"},"state permissions":{cn:"State permissions",en:"State permissions"},storage_group:{cn:"Storage",en:"Storage"},string:{cn:"string",en:"string"},subscribe:{cn:"subscribe",en:"subscribe"},switch:{cn:"switch",en:"switch"},terminal:{cn:"Terminal",en:"Terminal"},"third-party_group":{cn:"Third party",en:"Third party"},"this adapter does not allow multiple instances":{cn:"This adapter does not allow multiple instances",en:"This adapter does not allow multiple instances"},title:{cn:"title",en:"title"},today:{cn:"today",en:"today"},true:{cn:"true",en:"true"},ts:{cn:"Timestamp",en:"Timestamp"},type:{cn:"type",en:"type"},unit:{cn:"unit",en:"unit"},update:{cn:"update",en:"update"},"update adapter information":{cn:"update adapter information",en:"update adapter information"},"update-part1":{cn:"Because yunkong2 runs on many very different platforms, only manual updating is possible at the moment. To start the manual update, please go to your controller via console and execute the following:",en:"Because yunkong2 runs on many very different platforms, only manual updating is possible at the moment. To start the manual update, please go to your controller via console and execute the following:"},updated:{cn:"updated",en:"updated"},updates:{cn:"updates",en:"updates"},upload:{cn:"Upload",en:"Upload"},"user permissions":{cn:"user permissions",en:"user permissions"},users:{cn:"users",en:"users"},"users permissions":{cn:"User permissions",en:"User permissions"},utility_group:{cn:"Utility",en:"Utility"},val:{cn:"val",en:"val"},value:{cn:"value",en:"value"},"value.from":{cn:"Changed from",en:"Changed from"},"value.lc":{cn:"Last change",en:"Last change"},"value.q":{cn:"Quality code",en:"Quality code"},"value.ts":{cn:"Timestamp",en:"Timestamp"},"value.val":{cn:"value",en:"value"},version:{cn:"version",en:"version"},vis_group:{cn:"yunkong2.vis",en:"yunkong2.vis"},visualisation_group:{cn:"Visualisation",en:"Visualisation"},"visualization-icons_group":{cn:"Visualization Icons",en:"Visualization Icons"},"visualization-widgets_group":{cn:"Visualization Widgets",en:"Visualization Widgets"},visualization_group:{cn:"Visualisation",en:"Visualisation"},warn:{cn:"warn",en:"warn"},weather_group:{cn:"Weather",en:"Weather"},wetty:{cn:"Wetty",en:"Wetty"},write:{cn:"write",en:"write"},"write operation":{cn:"write",en:"write"},yesterday:{cn:"yesterday",en:"yesterday"}}; //# sourceMappingURL=app.js.map diff --git a/www/js/app.js.map b/www/js/app.js.map index b33fd26..108a59a 100644 --- a/www/js/app.js.map +++ b/www/js/app.js.map @@ -1 +1 @@ -{"version":3,"sources":["admin.js","adminAdapters.js","adminConfig.js","adminCustoms.js","adminEditObject.js","adminEnums.js","adminEvents.js","adminFileUtils.js","adminHosts.js","adminInstances.js","adminIntro.js","adminIssue.js","adminLogs.js","adminMenuEdit.js","adminObjects.js","adminReadme.js","adminSystem.js","adminUsers.js","license.js","listHeader.js","tableEditor.js","translate.js","treeTable.js","words.js"],"names":["Array","prototype","remove","what","ax","a","arguments","L","length","this","indexOf","splice","console","debug","log","Number","obj","parseFloat","Object","assign","$","extend","$iframeDialog","configNotSaved","showConfig","defaults","customPostInits","FORBIDDEN_CHARS","adapterRedirect","redirect","timeout","setTimeout","document","location","pathname","hash","href","gMain","detectIE","ua","window","navigator","userAgent","msie","parseInt","substring","rv","edge","Adapters","main","that","prepareTable","$grid","show","$tiles","html","hide","$tab","find","data","fancytree","extensions","checkbox","strings","noData","_","table","indentation","currentId","filter","onSuccess","sortTree","source","tree","renderColumns","event","node","$tdList","tr","key","ellipsis","txt","eq","css","overflow","white-space","idx","desc","substr","attr","position","font-weight","bold","setHtml","keywords","installed","version","license","install","initButtons","isCollapsed","group","saveConfig","JSON","stringify","c","k","children","no","gridnav","autofocusInput","handleCursorKeys","mode","autoApply","collapse","off","on","visit","filterVals","match","subMatch","setExpanded","$processAdapters","isList","addClass","removeClass","_postInit","trigger","prepareTiles","onOnlyUpdatableChanged","onlyUpdatable","onExpertmodeChanged","config","expertMode","filterTiles","anyVisible","currentFilter","each","$this","currentType","hasClass","customFilter","is","title","systemLang","en","name","toLowerCase","getNews","actualVersion","adapter","text","news","v","hasOwnProperty","checkDependencies","dependencies","adapters","b","semver","satisfies","objects","currentHost","common","installedVersion","getInterval","time","todayText","yesterdayText","x1DayAgoText","x2DaysAgoText","x5DaysAgoText","now","Date","interval","getTime","days","Math","floor","getDate","replace","t","tt","showUploadProgress","percent","curRepository","curRepoLastUpdate","curInstalled","curRepoLastHost","list","$installDialog","urls","groupImages","common adapters_group","general_group","hardware_group","lighting_group","energy_group","household_group","iot-systems_group","climate-control_group","infrastructure_group","garden_group","alarm_group","script_group","logic_group","media_group","multimedia_group","communication_group","protocols_group","network_group","messaging_group","visualisation_group","visualization_group","visualization-icons_group","visualization-widgets_group","storage_group","weather_group","schedule_group","vis_group","date-and-time_group","geoposition_group","utility_group","misc-data_group","service_group","third-party_group","inited","onlyInstalled","isTiles","types","occ","prepare","url","order","push","sort","o","user","val","adaptersGithub","modal","prop","parts","split","cmdExec","exitCode","init","showError","select","$input","prev","mtabs","nShow","tab","adaptersInstallTab","noSelect","confirmMessage","result","updateExpertMode","tabs","instances","which","undefined","adaptersIsTiles","adaptersIsList","adaptersOnlyInstalled","adaptersOnlyUpdatable","adaptersCurrentFilter","adaptersCurrentType","currentOrder","adaptersCurrentOrder","adaptersIsCollapsed","parse","browser","browserVersion","filterTimer","clearTimeout","target","filterNodes","getAdaptersInfo","host","update","updateRepo","callback","curRunning","socket","emit","repo","systemConfig","activeRepo","_repository","error","_installed","enableColResize","fn","colResizable","liveDrag","sortChildren","c1","c2","inst1","ret","t1","titleLang","t2","repository","installedList","rawVersion","adaptersToUpdate","listInstalled","listNonInstalled","nowObj","localTexts","add instance","upload","Available version:","Active instances","Installed version","readme","delete adapter","install specific version","all","Last update","Installations counter","today","yesterday","1 %d days ago","2 %d days ago","5 %d days ago","controller","versionDate","nogit","meta","getVersionString","updatable","updatableError","color","tmp","getVersionClass","i","rawInstalled","icon","extIcon","_instances","_enabled","upToDate","z","enabled","type","states","image","stat","join","highlight","licenseUrl","iGroup","jj","folder","expanded","igroup","j","akeys","keys","newData","u","ad","tTypes","g","$types","dropdown","constrainWidth","gutter","reload","width","height","round","left","$big","insertAfter","h","top","innerHeight","documentElement","clientHeight","big","classes","updateCounter","restoreScroll","saveScroll","scrollTop","counter","$updates","appendTo","objectsLoaded","subscribeObjects","subscribeStates","hosts","getHosts","destroy","unsubscribeObjects","unsubscribeStates","$dialogAddInstance","min","used","index","m","e","dismissible","complete","showAddInstanceDialog","$dialogLicense","response","body","z-index","toString","showLicenseDialog","isAgree","navigate","dialog","params","aName","waitForRestart","$button","versions","id","menu","nnews","$adaptersMenu","first","objectChange","_isInited","stateChange","state","$adapter","opacity","Config","$dialog","$configFrame","navigateGetParams","materialize","allStored","frames","changed","close","configId","shift","Customs","$table","$outer","hdr","lastHistoryTimeStamp","$tableDateFrom","$tableDateTo","$tableTimeFrom","$tableTimeTo","$chartDateFrom","$chartDateTo","$historyTableInstance","$historyChartInstance","STR_DIFFERENT","updateTable","delay","historyTimeout","loadHistoryTable","getCustomTemplate","ajax","headers","Accept","cache","success","_data","jqXHR","responseText","onButtonSave","stopPropagation","preventDefault","$tabs","ids","currentCustoms","wordDifferent","instance","field","indeterminate","f","custom","_default","found","custom_","inst","setCustoms","loadHistoryChart","initTab","customEnabled","check","supportCustoms","initCustomsTabs","$customTabs","collapsed","commons","role","sett","_attr","img","def","append","toUpperCase","prepend","$headerActive","showCustomsData","translateAll","collapsible","onOpenEnd","el","_collapsed","pos","onCloseEnd","M","updateTextFields","resizeHistory","isSilent","isDownload","request","aggregate","from","ack","q","fileName","dateFrom","Datepicker","getInstance","timeFrom","dateTo","timeTo","empty","setHours","setMinutes","setSeconds","setMilliseconds","end","part__","start","count","toISOString","err","res","filename","element","csv","ts","formatDate","lc","installColResize","IobListHeader","colWidthOffset","prefix","add","partialRefresh","marginLeft","postbackSafe","onResize","syncHeader","createElement","setAttribute","encodeURIComponent","style","display","appendChild","click","removeChild","port","chart","isSecure","native","secure","$chart","linkTemplate","hostname","encodeURI","isFloatComma","pop","showMessage","$iFrame","_ids","isUpdate","warn","$historyTableInstanceBtn","$historyTableDownloadBtn","$historyChartInstanceBtn","insta","setDate","i18n","clear","done","months","monthsShort","weekdaysShort","weekdays","weekdaysAbbrev","n","datepicker","defaultDate","showDaysInNextAndPreviousMonths","minYear","maxYear","setDefaultDate","firstDay","onSelect","date","timepicker","defaultTime","twelveHour","doneText","clearText","cancelText","autoClose","onShow","EditObject","loadObjectFields","selector","object","part","objectType","systemDictionary","saveObjectFields","$htmlId","write","read","max","d","duration","isError","showToast","$dialogNewField","prepared","$dialogSave","iconVal","_prepare","save","editor","setValue","$name","focus","mautocomplete","unit","minLength","keypress","ace","edit","getSession","setMode","$blockScrolling","saveFromTabs","_obj","getValue","load","trim","installFileUpload","isSetDefaultState","users","translateName","groups","_id","acl","owner","ownerGroup","getIconFromObj","$color","parent","colorpicker","component","container","toHex","saveFromRaw","cb","Enums","$gridEnum","$gridList","updateTimers","editMode","tasks","standardEnums","enum.rooms","de","ru","pt","nl","fr","it","es","members","dontDelete","enum.functions","enum.favorites","standardGroups","enum.rooms.living_room","enum.rooms.sleeping_room","pl","enum.rooms.kitchen","enum.rooms.office","enum.rooms.nursery","enum.rooms.wc","enum.rooms.garage","enum.functions.light","enum.functions.blinds","enum.functions.weather","enum.functions.heating","enum.functions.backlight","enum.functions.household","enum.functions.audio","enum.functions.security","selectId","bind","apply","enumRename","oldId","newId","newCommon","task","_enumRename","nondeletable","len","_rev","prepareNewEnum","getName","createOrEditEnum","drawEnum","$page","se","invertColor","getIcon","$filter","eid","$btn","limit","initFilter","drawEnumsTiles","$tableBody","$items","droppable","deleteEnum","removeMember","switchEditMode","drawEnumsTable","setupDroppableTiles","treeTable","root","columns","colors","icons","widths","buttonsWidth","buttons","primary","_delObjects","panelButtons","enumEdit","onChange","onReady","setupDroppableTable","items","regex","RegExp","test","getEnumsChildren","addMember","$treetable","accept","over","ui","timer","out","tolerance","drop","draggable","$collection","parentId","idChanged","nameVal","idVal","originalIdVal","colorVal","isIdEditable","$id","$modal","scrollHeight","isEnabled","$editButton","_initObjectTree","_$items","$trs","enumIsTiles","settings","noDialog","expertModeRegEx","texts","cancel","ID","room","function","value","selectid","wait","ok","with","without","copyToClipboard","refresh","button","sortable","connectWith","refreshPositions","helper","$target","zIndex","revert","scroll","$prev","item","stop","after","disableSelection","setupDraggable","permissions","unshift","action","Events","$header","$pause","isRemote","pause","$counterSpan","columnResizeInit","doFilter","filterEvents","defineProperty","selectedVal","toLocaleLowerCase","enumerateble","widthSet","updateResizersHeight","getValues","isShow","stateOrObj","isMessage","isState","checkAddOption","getElementById","outerHTML","visible","isNaN","fileHandler","file","dataTransfer","files","$dz","size","reader","FileReader","onload","evt","readAsDataURL","$dropZone","ondragover","ondragleave","ondrop","Hosts","showUpdateInfo","path","platform","applyFilter","someVisible","showOneHostRow","alive","getHostIcon","os","showOneHostTile","words","hostsIsTiles","$hostsFilter","filterTimeout","hostsFilter","titleVal","editHost","infoTimeout","hostsToUpdate","availableVersion","showHostsTile","showHostsTable","runningVersion","addHost","addr","hardware","networkInterfaces","eth","num","internal","address","initHostsList","updateTimer","Instances","getLinkVar","_var","link","resolveLink","vars","links","adptr","firtsLink","updateLed","instanceId","$led","webExtension","webInstance","hover","calculateTotalRam","processes","mem","$totalRam","$running_processes","calculateFreeMem","memState","totalmem","$freeMem","strVal","tdp","calculateDiskMem","diskSize","diskFree","diskWarning","$diskFree","formatBytes","calculateRam","memoryLimitMB","toFixed","showOneAdapter","rootElem","form","justContent","localLinks","localLink","replaceInLink","__first","isRun","onlyWWW","noConfig","hostsText","schedule","restartSchedule","loglevel","onQuickEditField","_instanceId","setupCron","alert","showCronDialog","newValue","invisible","reg","filterHost","_isShow","options","oldVal","innerHTML","textAlign","opt","blur","$gridHead","x","nachkomma","$filterClear","instancesFilter","instancesFilterHost","replaceLink","elem","_replaceLink","_replaceLinks","arg","showTip","l","instanceForm","getInstances","last","$mem","$e","onEdit","_link","https","$instancesMenu","mouseleave","open","resize","Intro","formatSeconds","seconds","hours","minutes","$template","formatInfo","Uptime","System uptime","RAM","bytes","GB","MB","Speed","mhz","Disk size","Disk free","execCommand","buildInfoCard","$card","clone","removeAttr","intro","hasWarning","replaceWith","clippy","item_","formatted","buildOneCard","welcomeScreen","web","urlText","noIntro","_first","showTiles","$cards","editActive","aa","aaa","welcomeUrl","welcomeScreenPro","getCards","values","actual","updateConfig","startkey","endkey","doc","rows","updateTimeout","Issue","$dialogIssue","showdown","setFlavor","getJSON","bug","issue","$issueElement","html_url","login","Converter","makeHtml","issueDate","created_at","toLocaleDateString","weekday","year","month","day","hour","minute","second","labels","Logs","filters","severity","message","lines","doSubscribe","line","charCodeAt","subscribeLogs","reverse","ll","name_","$tabLogs","isReload","Objects","subscribes","syncEnum","enumName","newArray","enums","toCheck","_syncEnum","enumIds","enumId","requestStates","pattern","unsubscribeAll","loadObjects","objs","$dialogNewObject","stype","reinit","dialogs","customs","stats","useValues","useHistory","showButtonsForNotExistingObjects","expand","editDialog","States","toggleValues","expandedCallback","childrenCount","hasStates","subscribe","collapsedCallback","unsubscribe","material-icon","delObject","history.0","input","addEventListener","r","contents","json","readAsText","handleFileSelect","map","search","quickEdit","quickEditCallback","oldValue","newAck","typ","customButtonFilter","subscribeAll","Readme","md2html","mainUrl","trimArr","$divReadme","$divChangeLog","$divLicense","$divLogo","adapterName","localStorage","getItem","setItem","fillDiv","removeItem","get","orgUrl","logo","changeLog","splitReadMe","lastIndexOf","$elemId","animate","offset","initMap","system","mapLoaded","updateMap","System","mapTimer","mapInited","longitude","latitude","systemRepos","systemCerts","useOpenLayers","string2cert","str","p","addCert","table2values","newText","certificate","values2table","initRepoGrid","repositories","$system_activeRepo","selectedRepo","isFound","updateRepoListSelect","nonEdit","$repos","languageChanged","activeRepoChanged","defaultNewAcl","old","finishEditingRights","language","diag","certificates","letsEncrypt","toast","label","immediately","ol","point","proj","fromLonLat","OSM","markerSource","Vector","markerStyle","Style","Icon","anchor","anchorXUnits","anchorYUnits","src","oMap","Map","layers","layer","Tile","view","View","center","zoom","marker","Feature","geometry","geom","Point","addFeature","lonLat","toLonLat","coordinate","getView","getZoom","setGeometry","setView","google","maps","lat","lng","Marker","$system_defaultHistory","dataType","initRights","cert","atob","_m","initCertsGrid","errRepo","errCerts","certs","errConfig","Users","synchronizeUser","userId","userGroups","showMessageInDialog","firstUpper","deleteUser","delUserFromGroups","updateUser","password","passwordRep","oldObj","shortId","getUserGroups","idShort","fillAcl","gg","aclGroups","operation","checkValidId","createOrEdit","isGroupOrId","prevId","isGroup","updateGroup","ops","pp","buildUserList","usersGroups","getUsersGroups","tGroups","gId","gName","inverted","$gridUsers","buildGroupsList","tUsers","uName","uId","$gridGroups","ready","stdout","allTabs","currentTab","currentDialog","currentUser","subscribesStates","subscribesObjects","subscribesLogs","io","connect","ignoreJSupdate","addEventMessage","events","storage","set","saveTabs","_new","cmd","$stdout","$dialogCommand","$adminSideMain","$dialogCommandProgress","activeCmdId","random","cmdCallback","$dialogConfirm","tButtons","$dialogMessage","jQuery","parentSelector","displayLength","dateObj","justTime","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","updateWizard","$wizard","wizard","licenseConfirmed","getUser","auth","_lastTimer","monitor","_timer","_delObject","idOrList","isArray","doIt","rootId","isAll","$tree","leaf","logs","editobject","$adminSideMenu","firstConnect","maxTouchPoints","globalClickHandler","initHtmlTabs","elements","tabsInfo","adminTab","toggleClass","initSideNav","tabsInited","$menu","panelSelector","$panel","$iframe","currentHash","navigateDo","$versionBtn","offs","tid","initTabs","onhashchange","addTabs","instanceObj","singleton","materializeTab","buttonName","isReplace","materilizeTab","div","countLink","loadTimeout","getObjects","slice","history","checkNodeJsVersions","major","ignoreConfigUpdate","getIconHtml","alt","isCommon","isFirstInit","$selHosts","curId","$selBtn","resubscribeStates","resubscribeObjects","resubscribeLogs","patterns","s","isSubscribe","navigateCheckDialog","decodeURI","decodeURIComponent","$adminBody","$actualTab","$oldPanel","$iframe_","not","imgPath","abs","units","hex","tab-intro","tab-adapters","tab-instances","tab-objects","tab-enums","tab-logs","tab-scenes","tab-events","tab-users","tab-javascript","tab-text2command-0","tab-text2command-1","tab-text2command-2","tab-node-red-0","tab-node-red-1","tab-node-red-2","tab-hosts","tab-fullcalendar-0","tab-fullcalendar-1","tab-fullcalendar-2","$backButton","isActive","vendor","admin","noCustomInstall","sideNavUser","sideNavMenu","header","rules","styles","city","country","userLanguage","translateWord","tempUnit","currency","dateFormat","defaultHistory","translateCron","initGridLanguage","progressClose","progressMore","addAll2FilterCombobox","$headerThs","$listTds","tagName","resizeTimer","selectIdOffset","setList","_list","$tds","y","selectOptions","fis","fisId","noAll","option","addOption","eventFilterTimeout","$btnClear","divId","maxRaw","$div","names","$add","getEnums","trRooms","nnames","trFuncs","class","readOnly","tdstyle","vals","btn","idName","$lines","command","tableEvents","$select","lang","dictionary","$selector","transText","arg1","arg2","arg3","methods","buildTable","call","Storage","exIDs","treetable","row","reInit","_elem","_$table","method","nodeExpand","nodeCollapse","buildList","noButtons","parents","current","isNotFolder","$dlg","$buttons","$list","axis","currentFolder","processMoveTasks","moveId","buttonTag","ch","rootEx","_class","engine","ppp","realChildren","mm","ccommon","ccb","vval","instSelect","aattr","ii","vall","buttonsStyle","$treeTable","expandable","clickableNodeNames","expanderTemplate","indenterTemplate","onNodeExpand","onNodeCollapse","stringCollapse","stringExpand","$tbody","zz","$zz","word","branch","isOneVisible","nameFilter"," for %s","%s added to %s","%s object(s) processed","%s processes","%s was imported","(without prefix)","A-Z","Access control","Access control list","Acknowledged","Activated. Click to stop.","Active repository:","Adapter configuration","Adapter settings for %s states","Adapters from this Group installed","Add","Add Objecttree from JSON File","Add certificate from file","Add instance...","Add member","Add new child object to selected parent","Add new field","Add new issue","Add new object: ","Add new object: %s","Address:","Admin is not enabled in cloud settings!","Administrator","Afghanistan","Albania","Algeria","All","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Apr","April","Architecture","Are you sure to delete %s?","Are you sure to delete all children of %s?","Are you sure to delete all children of %s?","Are you sure to delete script %s?","Are you sure you want to delete adapter %s?","Are you sure you want to delete the instance %s?","Are you sure?","Are you sure? Changes are not saved.","Argentina","Armenia","Aruba","Aug","August","Australia","Austria","Authentication was deactivated","Available","Azerbaijan","Background","Background color of the login screen","Background image","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","CPUs","Calendar","Cambodia","Cameroon","Canada","Cancel","Cannot create user: ","Cannot delete user: ","Cannot disable admin!","Cannot read file!","Cannot read version from NPM","Cannot set password: ","Cape Verde","Cayman Islands","Central African Republic","Certificates","Chad","Change","Changelog","Channel","Chart","Chart for %s","Check all","Chile","China","Christmas Island","City:","Clear","Clear list","Clear log","Clear on disk permanent","Click do activate events again, or just wait one minute","Click on icon","Close","Cocos Islands","Collapse all nodes","Colombia","Color","Comoros","Configuration not saved.","Congo","Connected to %s: ","Connected to host: ","Cook Islands","Copy log","Copy to clipboard","Costa Rica","Country:","Create","Create new category","Create new category, like %s","Create new enum","Create new enum, like %s","Create new group","Create new user","Created","Croatia","Cron expression","Cuba","Currency:","Custom","Cyprus","Czech Republic","D$ecember","DD.MM.YY","DD.MM.YYYY","DD/MM/YYYY","Date From","Date To","Date format:","Deactivated. Click to start.","Debug outputs:","Dec","December","Default ACL","Default history instance:","Delete attribute","Delete category","Delete enum","Delete member","Delete object","Denmark","Description","Device","Device discovery","Disable authentication","Disk free:","Djibouti","Do you want to delete just one object or all children of %s too?","Do you want to upgrade all adapters?","Domains:","Dominica","Dominican Republic","Done with error: %s","Download log","Drop the files here","Drop the icons here","East Timor","Ecuador","Edit","Edit category","Edit enum","Edit in dialog","Edit object","Egypt","El Salvador","Email for account:","Enabled:","Equatorial Guinea","Eritrea","Error","Estonia","Ethiopia","Event","Everyone","Expand all nodes","Failed to open JSON File","Falkland Islands (Malvinas)","Faroe Islands","Feb","February","Fiji","File is too big!","File rights","Filter","Filter:","Filtered out","Find coordinates...","Finland","Float divider:","France","Free RAM:","French Guiana","French Polynesia","French Southern Territories","Fri","From","From github","Function","Gabon","Gambia","Generated ID:","Georgia","Germany","Ghana","Gibraltar","Go to Github...","Greece","Greenland","Grenada","Group","Groups","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Has no permission to %s %s %s","Heard and Mc Donald Islands","Heartbeat: ","Honduras","Hong Kong","Host","Host %s is offline","Host:","Hungary","Iceland","Icon upload","Ignore warning","In background","India","Indonesia","Info","Insert","Install","Install adapter from URL","Install adapter from github","Install from custom URL","Install or update from URL...","Installation counter","Installed","Installed from group","Installed instances","Instructions","Invalid version of %s","Invalid version of %s. Required %s","Iran","Iraq","Ireland","Is yet in the list","Isle of Man","Israel","Italy","Ivory Coast","Jamaica","Jan","January","Japan","Jersey","Jordan","Jul","July","Jun","June","Kazakhstan","Kenya","Kiribati","Known bugs for","Korea","Kosovo","Kuwait","Kyrgyzstan","Lao People's Democratic Republic","Last changed","Latitude:","Latvia","Lebanon","Lesotho","Let's Encrypt settings","Let's encrypt SSL","Liberia","Libyan Arab Jamahiriya","License","License terms","Liechtenstein","Listen on all IPs","Lithuania","Loading...","Log","Log file will be deleted. Are you sure?","Log size:","Login timeout(sec):","Logout","Longitude:","Luxembourg","Macau","Macedonia","Madagascar","Mai","Main","Main settings","Malawi","Malaysia","Maldives","Mali","Malta","Manually created","Mar","March","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Members","Message","Message buffer overflow. Losing oldest","Mexico","Micronesia","Model","Moldova","Mon","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","NPM","Name","Name:","Namibia","Nauru","Nepal","Netherlands","Netherlands Antilles","New","New Caledonia","New Zealand","New category","New enum","New group","New object","New objekt","New user","Nicaragua","Niger","Nigeria","Niue","No data","No states selected!","No version of %s","Node.js","Norfolk Island","Northern Mariana Islands","Norway","Not exists","Note:","Nov","November","OS","Object \"%s\" does not exists. Update the page.","Object may not be deleted","Object rights","Oct","October","Ok","Oman","Only one","Open original","Owner","Owner group","Owner user","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Parent","Parse error","Password","Password and confirmation are not equal!","Password cannot be empty!","Password repeat","Path to storage:","Pause output","Peru","Philippines","Pitcairn","Platform","Please confirm","Poland","Popular","Popular first","Port to check the domain:","Portugal","Preserve ID","Preview","Processing...","Puerto Rico","Qatar","RAM total usage:","RAM usage","Rebuild tree","Recently updated","Refresh log","Removed","Removing of adapter...","Removing of instance...","Rename","Repositories","Reunion","Rights","Role","Romania","Room","Running: ","Russian Federation","Rwanda","Saint Kitts and Nevis","Saint Lucia","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Sat","Saudi Arabia","Save","Save Objecttree as JSON File","Save Objecttree is not possible","Save configuration","Script","Scripts","Select","Select ID","Select adapter:","Select language","Select options","Senegal","Sent data:","Sep","September","Serbia","Set","Set CRON","Set CRON schedule for restarts","Settings","Settings for %s","Seychelles","Show instances only for current host","Show values of instance","Show...","Sierra Leone","Singapore","Size: %s, Free: %s","Slovakia","Slovenia","Solomon Islands","Somalia","Some data are not stored. Discard?","Sort alphabetically","South Africa","South Georgia South Sandwich Islands","Spain","Sri Lanka","St. Helena","St. Pierre and Miquelon","Started...","State","State type","States rights","Statistics","Statistics:","Storage of %s","Storage of %s states","Success!","Sudan","Suggestion","Sun","Suriname","Svalbard and Jan Mayen Islands","Swaziland","Sweden","Switzerland","Syrian Arab Republic","System language:","System settings","Table","Taiwan","Tajikistan","Tanzania","Temperature units:","Thailand","This version of node.js \"%s\" on \"%s\" is deprecated. Please install node.js 6, 8 or newer","Thu","Time","Time From","Time To","Time stamp","Title","To","Today","Toggle expert mode","Toggle states view","Togo","Tokelau","Tonga","Too many events","Total count in group","Trigger event","Trinidad and Tobago","Tue","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Type","URL or file path:","Uganda","Ukraine","Uncheck All","United Arab Emirates","United Kingdom","United States","United States minor outlying islands","Unknown file format!","Unsecure_Auth","Unsupported image format","Update","Update objects","Update states","Updated","Upgrade all adapters","Upload","Upload admin started","Upload started...","Uruguay","Use Lets Encrypt certificates:","Use this instance for automatic update:","User","User deleted","User does not exist","User yet exists","Uzbekistan","Value","Values of %s","Vanuatu","Vatican City State","Venezuela","Vietnam","Virgin Islands (British)","Virgin Islands (U.S.)","Wallis and Futuna Islands","Warning!","Wed","Western Sahara","With","Without","Yemen","You are going to add new instance: ","You can check changelog here","You can drag&drop the devices, channels and states to enums","You can drag&drop users to groups","You can't see events via cloud","Your home","Zaire","Zambia","Zimbabwe","_All","_Toggle expert mode","__different__","a-z","actions","active","adapter with updates","adapters count","add children","add repository","agree","alpha","array","auto","available","beta","boolean","cert_path_note","change view mode","channel","close on ready","collapse all","comma","command execution","common_color","common_def","common_desc","common_icon","common_max","common_min","common_read","common_role","common_states","common_type","common_unit","common_write","config instance","confirm password","connected","copy","copy note","create operation","custom enum","custom group","daemon","daysShortText","delete","delete group","delete instance","delete operation","delete script","delete user","description","device","diag-note","edit enum","edit enums","edit file","edit group","edit instance","edit script","edit user","edit value","engine type","execute operation","expand all","extended","false","file permissions","history data","http operation","info","installed adapters","instance number","yunkong2 Enums","yunkong2 States","yunkong2 adapter instances","yunkong2 adapter scripts","yunkong2 adapters","yunkong2 certificates","yunkong2 groups","yunkong2 hosts","yunkong2 repositories","yunkong2 users","iot-system_group","less","letsnecrypt_help","letsnecrypt_help_domains","letsnecrypt_help_email","letsnecrypt_help_path","license agreement","license not agree","license_checkbox","list operation","memlimit","mixed","more","multi","new certificate","new group","new script","new user","newObject","no-city","node-red","none","normal","not ack","not agree","npm error","number","object permissions","of","open web page","other permissions","parent name","permissionError","place here","planned","popular","process","raw","read operation","reload instance","rest","restart","restart script","select member by double click","sendto operation","silly","stable","state permissions","string","switch","terminal","this adapter does not allow multiple instances","true","update adapter information","update-part1","updated","updates","user permissions","users permissions","value.from","value.lc","value.q","value.ts","value.val","wetty","write operation"],"mappings":"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","file":"app.js","sourcesContent":["/* jshint -W097 */\n/* jshint strict:true */\n/* jslint vars: true */\n/* global io:false */\n/* global jQuery:false */\n/* jslint browser:true */\n/* jshint browser:true */\n/* global _ */\n/* global ace */\n/* global console */\n/* global alert */\n/* global confirm */\n/* global systemLang: true */\n/* global license */\n/* global translateAll */\n/* global initGridLanguage */\n'use strict';\n\n//if (typeof Worker === 'undefined') alert('your browser does not support WebWorkers :-(');\n\nArray.prototype.remove = function () {\n var what;\n var a = arguments;\n var L = a.length;\n var ax;\n while (L && this.length) {\n what = a[--L];\n while ((ax = this.indexOf(what)) !== -1) {\n this.splice(ax, 1);\n }\n }\n return this;\n};\n// for IE\nif (!console.debug) {\n console.debug = console.log;\n}\nif (typeof Number === 'undefined') {\n console.log('define Number');\n Number = function (obj) {\n return parseFloat(obj);\n }\n}\nif (!Object.assign) {\n Object.assign = $.extend;\n}\n\n\nvar $iframeDialog = null; // used in adapter settings window\nvar configNotSaved = null; // used in adapter settings window\nvar showConfig = null; // used in adapter settings window\nvar defaults = {};\nvar customPostInits = {};\nvar FORBIDDEN_CHARS = /[\\]\\[*,;'\"`<>\\\\\\s?]/g;\n\n// used in adapter settings window\nvar adapterRedirect = function (redirect, timeout) {\n if (redirect) {\n setTimeout(function () {\n redirect += document.location.pathname;\n redirect += document.location.hash;\n document.location.href = redirect;\n }, timeout || 5000);\n }\n};\nvar gMain = null; // for google maps\n\nfunction detectIE() {\n var ua = window.navigator.userAgent;\n\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n var edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n }\n\n // other browser\n return false;\n}\n\n(function ($) {\n$(document).ready(function () {\n var path = location.pathname + 'socket.io';\n if (location.pathname.match(/^\\/admin\\//)) {\n path = '/socket.io';\n }\n\n var allTabs = {};\n\n var main = {\n objects: {},\n states: {},\n currentHost: '',\n currentTab: null,\n currentDialog: null,\n currentUser: '',\n subscribesStates: {},\n subscribesObjects: {},\n subscribesLogs: 0,\n socket: io.connect('/', {path: path}),\n systemConfig: null,\n instances: null,\n objectsLoaded: false,\n waitForRestart: false,\n tabs: null,\n dialogs: {},\n selectId: null,\n config: {},\n ignoreJSupdate: false, // set to true after some global script updated and till system.adapter.javascript.x updated\n addEventMessage: function (id, stateOrObj, isMessage, isState) {\n // cannot directly use tabs.events.add, because to init time not available.\n tabs.events.add(id, stateOrObj, isMessage, isState);\n },\n saveConfig: function (attr, value) {\n if (attr) main.config[attr] = value;\n\n if (typeof storage !== 'undefined') {\n storage.set('adminConfig', JSON.stringify(main.config));\n }\n },\n saveTabs: function () {\n this.socket.emit ('setObject', 'system.config', this.systemConfig, function (err) {\n if (err) {\n this.showError (err);\n }\n })\n },\n\n // Helper methods\n upToDate: function (_new, old) {\n _new = _new.split('.');\n old = old.split('.');\n _new[0] = parseInt(_new[0], 10);\n old[0] = parseInt(old[0], 10);\n if (_new[0] > old[0]) {\n return false;\n } else if (_new[0] === old[0]) {\n _new[1] = parseInt(_new[1], 10);\n old[1] = parseInt(old[1], 10);\n if (_new[1] > old[1]) {\n return false;\n } else if (_new[1] === old[1]) {\n _new[2] = parseInt(_new[2], 10);\n old[2] = parseInt(old[2], 10);\n return (_new[2] <= old[2]);\n } else {\n return true;\n }\n } else {\n return true;\n }\n },\n\n // Methods\n cmdExec: function (host, cmd, callback) {\n host = host || main.currentHost;\n $stdout.val('');\n\n $dialogCommand.modal('open');\n\n stdout = '$ ./yunkong2 ' + cmd;\n $dialogCommand.data('finished', false).find('.btn').html(_('In background'));\n $dialogCommand.find('.command').html(stdout);\n $dialogCommand.find('.progress-dont-close').removeClass('disabled');\n $adminSideMain.find('.button-command').removeClass('error').addClass('in-progress');\n $dialogCommand.data('max', null);\n $dialogCommand.data('error', '');\n $dialogCommandProgress.addClass('indeterminate').removeClass('determinate');\n\n if (cmd.match(/^upload /)) {\n $dialogCommand.find('.progress-text').html(_('Upload started...')).removeClass('error');\n } else if (cmd.match(/^del [-_\\w\\d]+\\.[\\d]+$/)) {\n $dialogCommand.find('.progress-text').html(_('Removing of instance...')).removeClass('error');\n } else if (cmd.match(/^del /)) {\n $dialogCommand.find('.progress-text').html(_('Removing of adapter...')).removeClass('error');\n } else if (cmd.match(/^url /)) {\n $dialogCommand.find('.progress-text').html(_('Install or update from URL...')).removeClass('error');\n } else if (cmd.match(/^add /)) {\n $dialogCommand.find('.progress-text').html(_('Add instance...')).removeClass('error');\n } else{\n $dialogCommand.find('.progress-text').html(_('Started...')).removeClass('error');\n }\n\n $stdout.val(stdout);\n // generate the unique id to coordinate the outputs\n activeCmdId = Math.floor(Math.random() * 0xFFFFFFE) + 1;\n cmdCallback = callback;\n main.socket.emit('cmdExec', host, activeCmdId, cmd, function (err) {\n if (err) {\n stdout += '\\n' + _(err);\n $stdout.val(stdout);\n cmdCallback = null;\n callback(err);\n } else {\n if (callback) callback();\n }\n });\n },\n confirmMessage: function (message, title, icon, buttons, callback) {\n // if standard buttons\n if (typeof buttons === 'function') {\n callback = buttons;\n $dialogConfirm.find('.modal-footer').html(\n '' + _('Ok') + '' +\n '' + _('Cancel') + '');\n $dialogConfirm.find('.modal-footer .modal-action').on('click', function () {\n var cb = $dialogConfirm.data('callback');\n cb && cb($(this).data('result'));\n });\n } else if (typeof buttons === 'object') {\n var tButtons = '';\n for (var b = buttons.length - 1; b >= 0; b--) {\n tButtons += '' + buttons[b] + '';\n }\n $dialogConfirm.find('.modal-footer').html(tButtons);\n $dialogConfirm.find('.modal-footer .modal-action').on('click', function () {\n var cb = $dialogConfirm.data('callback');\n cb && cb($(this).data('id'));\n });\n }\n\n $dialogConfirm.find('.dialog-title').text(title || _('Please confirm'));\n if (icon) {\n $dialogConfirm.find('.dialog-icon')\n .show()\n .html(icon);\n } else {\n $dialogConfirm.find('.dialog-icon').hide();\n }\n $dialogConfirm.find('.dialog-text').html(message);\n $dialogConfirm.data('callback', callback);\n $dialogConfirm.modal('open');\n },\n showMessage: function (message, title, icon) {\n $dialogMessage.find('.dialog-title').text(title || _('Message'));\n if (icon) {\n $dialogMessage.find('.dialog-icon')\n .show()\n .html(icon);\n } else {\n $dialogMessage.find('.dialog-icon').hide();\n }\n $dialogMessage.find('.dialog-text').html(message);\n $dialogMessage.modal('open');\n },\n showError: function (error) {\n main.showMessage(_(error), _('Error'), 'error_outline');\n },\n showToast: function (parent, message, icon, duration, isError, classes) {\n if (parent && parent instanceof jQuery) {\n parent = parent[0];\n }\n classes = classes || [];\n\n if (typeof classes === 'string') {\n classes = [classes];\n }\n isError && classes.push('dropZone-error');\n\n M.toast({\n parentSelector: parent || $('body')[0],\n html: message + (icon ? '' + icon + '' : ''),\n displayLength: duration || 3000,\n classes: classes\n });\n },\n formatDate: function (dateObj, justTime) {\n //return dateObj.getFullYear() + '-' +\n // (\"0\" + (dateObj.getMonth() + 1).toString(10)).slice(-2) + '-' +\n // (\"0\" + (dateObj.getDate()).toString(10)).slice(-2) + ' ' +\n // (\"0\" + (dateObj.getHours()).toString(10)).slice(-2) + ':' +\n // (\"0\" + (dateObj.getMinutes()).toString(10)).slice(-2) + ':' +\n // (\"0\" + (dateObj.getSeconds()).toString(10)).slice(-2);\n // Following implementation is 5 times faster\n if (!dateObj) return '';\n var text = typeof dateObj;\n if (text === 'string') {\n if (justTime) {\n return dateObj.substring(8);\n } else {\n return dateObj;\n }\n }\n // if less 2000.01.01 00:00:00\n if (text !== 'object') dateObj = dateObj < 946681200000 ? new Date(dateObj * 1000) : new Date(dateObj);\n\n var v;\n if (!justTime) {\n text = dateObj.getFullYear();\n v = dateObj.getMonth() + 1;\n if (v < 10) {\n text += '-0' + v;\n } else {\n text += '-' + v;\n }\n\n v = dateObj.getDate();\n if (v < 10) {\n text += '-0' + v;\n } else {\n text += '-' + v;\n }\n } else {\n v = dateObj.getDate();\n if (v < 10) {\n text = '0' + v;\n } else {\n text = v;\n }\n }\n\n v = dateObj.getHours();\n if (v < 10) {\n text += ' 0' + v;\n } else {\n text += ' ' + v;\n }\n v = dateObj.getMinutes();\n if (v < 10) {\n text += ':0' + v;\n } else {\n text += ':' + v;\n }\n\n v = dateObj.getSeconds();\n if (v < 10) {\n text += ':0' + v;\n } else {\n text += ':' + v;\n }\n\n v = dateObj.getMilliseconds();\n if (v < 10) {\n text += '.00' + v;\n } else if (v < 100) {\n text += '.0' + v;\n } else {\n text += '.' + v;\n }\n\n return text;\n },\n /*initSelectId: function () {\n if (main.selectId) return main.selectId;\n main.selectId = $('#dialog-select-member').selectId('init', {\n objects: main.objects,\n states: main.states,\n filter: {type: 'state'},\n name: 'admin-select-member',\n texts: {\n select: _('Select'),\n cancel: _('Cancel'),\n all: _('All'),\n id: _('ID'),\n name: _('Name'),\n role: _('Role'),\n room: _('Room'),\n value: _('Value'),\n selectid: _('Select ID'),\n from: _('From'),\n lc: _('Last changed'),\n ts: _('Time stamp'),\n wait: _('Processing...'),\n ack: _('Acknowledged')\n },\n columns: ['image', 'name', 'role', 'room', 'value']\n });\n return main.selectId;\n },*/\n updateWizard: function () {\n var $wizard = $('#button-wizard');\n if (main.objects['system.adapter.discovery.0']) {\n if (!$wizard.data('inited')) {\n $wizard.data('inited', true);\n $wizard/*.button({\n icons: {primary: ' ui-icon-search'},\n text: false\n })*/.on('click', function () {\n // open configuration dialog\n main.navigate({\n tab: 'instances',\n dialog: 'config',\n params: 'system.adapter.discovery.0'\n });\n }).attr('title', _('Device discovery'));\n }\n $wizard.show();\n\n // Show wizard dialog\n if (!main.systemConfig.common.wizard && main.systemConfig.common.licenseConfirmed) {\n $wizard.trigger('click');\n }\n } else {\n $wizard.hide();\n }\n },\n getUser: function () {\n if (!main.currentUser) {\n main.socket.emit('authEnabled', function (auth, user) {\n main.currentUser = 'system.user.' + user;\n if (!auth) {\n $('#button-logout').remove();\n } else {\n main._lastTimer = (new Date()).getTime();\n monitor();\n }\n });\n } else if (main.objects[main.currentUser]) {\n var obj = main.objects[main.currentUser];\n var name = '';\n if (!obj || !obj.common || !obj.common.name) {\n name = main.currentUser.replace(/^system\\.user\\./);\n name = name[0].toUpperCase() + name.substring(1).toLowerCase();\n } else {\n name = translateName(obj.common.name);\n }\n if (obj && obj.common && obj.common.icon) {\n var objs = {};\n objs[main.currentUser] = obj;\n $('#current-user-icon').html(main.getIcon(main.currentUser, null, objs));\n } else {\n $('#current-user-icon').html('account_circle');\n }\n $('#current-user').html(name);\n var groups = [];\n for (var i = 0; i < tabs.users.groups.length; i++) {\n var group = main.objects[tabs.users.groups[i]];\n if (group && group.common && group.common.members && group.common.members.indexOf(main.currentUser) !== -1) {\n groups.push(_(translateName(group.common.name)));\n }\n }\n $('#current-group').html(groups.join(', '));\n }\n },\n\n // Delete objects\n _delObject: function (idOrList, callback) {\n var id;\n if (!Array.isArray(idOrList)) {\n if (typeof idOrList !== 'string') return callback && callback('invalid idOrList parameter');\n idOrList = [idOrList];\n }\n\n function doIt() {\n if (idOrList.length === 0) {\n return callback && setTimeout(callback, 0, null, id);\n }\n id = idOrList.pop();\n if (main.objects[id] && main.objects[id].common && (main.objects[id].common['object-non-deletable'] || main.objects[id].common.dontDelete)) {\n main.showMessage (_ ('Cannot delete \"%s\" because not allowed', id), '', 'notifications');\n setTimeout(doIt, 0);\n } else {\n var obj = main.objects[id];\n main.socket.emit('delObject', id, function (err) {\n if (err && err !== 'Not exists') {\n main.showError (err);\n return callback(err);\n }\n if (obj && obj.type === 'state') {\n main.socket.emit ('delState', id, function (err) {\n if (err && err !== 'Not exists') {\n main.showError (err);\n return callback(err);\n }\n setTimeout(doIt, 0);\n });\n } else {\n setTimeout(doIt, 0);\n }\n });\n }\n }\n doIt();\n },\n /*_delObject_old: function (idOrList, callback) {*\n var id;\n if (typeof idOrList === 'object') {\n if (!idOrList || !idOrList.length) {\n if (callback) callback(null);\n return;\n }\n id = idOrList.pop();\n } else {\n id = idOrList;\n }\n\n if (main.objects[id] && main.objects[id].common && (main.objects[id].common['object-non-deletable'] || main.objects[id].common.dontDelete)) {\n main.showMessage(_('Cannot delete \"%s\" because not allowed', id), '', 'notice');\n if (typeof idOrList === 'object') {\n setTimeout(function () {\n this._delObject(idOrList, callback);\n }.bind(this), 0);\n } else {\n if (callback) {\n setTimeout(function () {\n callback(null, idOrList);\n }, 0);\n }\n }\n } else {\n var obj = main.objects[id];\n main.socket.emit('delObject', id, function (err) {\n if (err && err !=='Not exists') {\n main.showError(err);\n return;\n }\n if (obj && obj.type === 'state') {\n main.socket.emit('delState', id, function (err) {\n if (err && err !=='Not exists') {\n main.showError(err);\n return;\n }\n if (typeof idOrList === 'object') {\n setTimeout(function () {\n this._delObject(idOrList, callback);\n }.bind(this), 0);\n } else {\n if (callback) {\n setTimeout(function () {\n callback(null, idOrList);\n }, 0);\n }\n }\n }.bind(this));\n } else {\n if (typeof idOrList === 'object') {\n setTimeout(function () {\n this._delObject(idOrList, callback);\n }.bind(this), 0);\n } else {\n if (callback) {\n setTimeout(function () {\n callback(null, idOrList);\n }, 0);\n }\n }\n }\n }.bind(this));\n }\n },*/\n _delObjects: function (rootId, isAll, callback) {\n if (!isAll) {\n this._delObject(rootId, callback);\n } else {\n var list = [];\n for (var id in main.objects) {\n if (main.objects.hasOwnProperty(id) && id.substring(0, rootId.length + 1) === rootId + '.') {\n list.push(id);\n }\n }\n list.push(rootId);\n list.sort();\n\n this._delObject(list, function () {\n if (callback) callback();\n });\n }\n },\n delObject: function ($tree, id, callback) {\n var leaf = $tree ? $tree.selectId('getTreeInfo', id) : null;\n if (main.objects[id]) {\n if (leaf && leaf.children) {\n // ask if only object must be deleted or just this one\n main.confirmMessage(_('Do you want to delete just one object or all children of %s too?', id), null, 'help_outline', [_('_All'), _('Only one'), _('Cancel')], function (result) {\n // If all\n if (result === 0) {\n main._delObjects(id, true, callback);\n } else\n // if only one object\n if (result === 1) {\n main._delObjects(id, false, callback);\n } // else do nothing\n });\n } else {\n main.confirmMessage(_('Are you sure to delete %s?', id), null, 'help_outline', function (result) {\n // If all\n if (result) main._delObjects(id, true, callback);\n });\n }\n } else if (leaf && leaf.children) {\n main.confirmMessage(_('Are you sure to delete all children of %s?', id), null, 'help_outline', function (result) {\n // If all\n if (result) main._delObjects(id, true, callback);\n });\n } else {\n main.showMessage(_('Object \"%s\" does not exists. Update the page.', id), _('Error'), 'help_outline', function (result) {\n // If all\n if (result) main._delObjects(id, true, callback);\n });\n }\n }\n };\n\n gMain = main; // for google maps\n\n var tabs = {\n hosts: new Hosts(main), // must be first to read the list of hosts\n objects: new Objects(main),\n adapters: new Adapters(main),\n instances: new Instances(main),\n users: new Users(main),\n //groups: new Groups(main),\n enums: new Enums(main),\n events: new Events(main),\n logs: new Logs(main),\n states: null,\n intro: new Intro(main)\n };\n\n if (typeof States !== 'undefined') {\n tabs.states = new States(main);\n }\n\n main.instances = tabs.instances.list;\n main.tabs = tabs;\n main.dialogs = {\n system: new System(main),\n customs: new Customs(main),\n config: new Config(main),\n editobject: new EditObject(main),\n issue: new Issue(main),\n readme: new Readme(main)\n };\n\n var stdout;\n var cmdCallback = null;\n var activeCmdId = null;\n var $stdout = $('#stdout');\n\n var $dialogCommand = $('#dialog-command');\n var $dialogLicense = $('#dialog-license-main');\n var $dialogMessage = $('#dialog-message');\n var $dialogConfirm = $('#dialog-confirm');\n var $dialogCommandProgress = $dialogCommand.find('.progress div');\n\n var $adminSideMenu = $('#admin_sidemenu_menu');\n var $adminSideMain = $('#admin_sidemenu_main');\n\n var firstConnect = true;\n\n // detect touch devices\n if (!('ontouchstart' in window || navigator.maxTouchPoints)) {\n $('body').addClass('desktop-screen');\n }\n if (navigator.userAgent.indexOf('Safari') !== -1 &&\n navigator.userAgent.indexOf('Chrome') === -1 &&\n navigator.userAgent.indexOf('Android') === -1) {\n $('body').addClass('safari');\n main.browser = 'safari';\n main.noSelect = true;\n } else if (detectIE()) {\n $('body').addClass('ie');\n // workaround\n main.browser = 'ie';\n main.browserVersion = detectIE();\n main.noSelect = true;\n $('#host-adapters-btn').css('margin-top', '10px');\n }\n\n // Read all positions, selected widgets for every view,\n // Selected view, selected menu page,\n // Selected widget or view page\n // Selected filter\n if (typeof storage !== 'undefined') {\n try {\n main.config = storage.get('adminConfig');\n if (main.config) {\n main.config = JSON.parse(main.config);\n } else {\n main.config = {};\n }\n } catch (e) {\n console.log('Cannot load edit config');\n main.config = {};\n }\n }\n\n function globalClickHandler(event){\n $('#admin_sidemenu_dialog').html('');\n $('html').off('click', globalClickHandler);\n }\n\n function initHtmlButtons() {\n main.socket.emit('getVersion', function (err, version) {\n\t\t\tvar $versionBtn = $('.button-version');\n\t if (!$versionBtn.hasClass('vendor')) {\n\t $versionBtn.text('yunkong2.admin ' + version);\n\t }\n });\n\n $('.choose-tabs-config-button').off('click').on('click', function(event) {\n var $dialog = $('#admin_sidemenu_dialog');\n var html = $dialog.html();\n if (html) {\n $dialog.html('');\n // disable global handler\n $('html').off('click', globalClickHandler);\n return;\n }\n setTimeout(function () {\n // enable global handler\n $('html').on('click', globalClickHandler);\n }, 100);\n var $e = $(event.target);\n var offs = $e.offset();\n offs.top += $e.height() - 2;\n\n var text =\n '' + // style=\"overflow: visible; z-index: 999; \">'\n '
    ' +\n '
      ';\n\n var $lis = $adminSideMenu;\n for (var tid in allTabs) {\n var name = allTabs[tid];\n var found = $adminSideMenu.find('.admin-sidemenu-items[data-tab=\"' + tid + '\"]').length;\n // TABS\n /*$adminSideMenu.each(function (i, e) {\n if (tid === $(e).attr('aria-controls')) {\n found = $(e);\n return false;\n }\n });*/\n var id = 'chk-' + tid;\n text +=\n '
    • ' +\n '' + _(name) + '';\n }\n text += '' +\n '
    ' +\n '
    ' +\n '
    ';\n $dialog.append(text);\n\n $dialog.find('.chk-tab').off('change').on('change', function (event) {\n var id = $(this).attr('id').substr(4);\n if ($(this).prop('checked')) {\n main.systemConfig.common.tabs.push(id);\n } else {\n var pos = main.systemConfig.common.tabs.indexOf(id);\n if (id !== -1) {\n main.systemConfig.common.tabs.splice(pos, 1);\n }\n }\n main.saveTabs();\n initTabs();\n });\n // workaround for materialize checkbox problem\n $dialog.find('input[type=\"checkbox\"]+span').off('click').on('click', function () {\n var $input = $(this).prev();\n if (!$input.prop('disabled')) {\n $input.prop('checked', !$input.prop('checked')).trigger('change');\n }\n });\n });\n\n main.updateWizard();\n\n $('#button-logout').on('click', function () {\n window.location.href = '/logout/';\n });\n\n window.onhashchange = function () {\n main.navigateDo();\n };\n main.navigateDo();\n }\n\n function initHtmlTabs() {\n // jQuery UI initializations\n initSideNav();\n\n if (!main.tabsInited) {\n main.tabsInited = true;\n\n initHtmlButtons();\n\n $('#events_threshold').on('click', function () {\n main.socket.emit('eventsThreshold', false);\n });\n } else {\n var $menu = $adminSideMenu;\n var panelSelector = $menu.data('problem-link');\n if (panelSelector) {\n var $panel = $(panelSelector);\n // Init source for iframe\n if ($panel.length) {\n var link = $panel.data('src');\n if (link && link.indexOf('%') === -1) {\n var $iframe = $panel.find('iframe');\n if ($iframe.length && !$iframe.attr('src')) {\n $iframe.attr('src', link);\n $menu.data('problem-link', null);\n }\n }\n }\n }\n // show current tab\n main.currentHash = null;\n main.navigateDo();\n }\n }\n\n function initTabs() {\n // extract all additional instances\n var text = '';\n var list = [];\n var addTabs = [];\n\n allTabs = {};\n for (var i = 0; i < main.instances.length; i++) {\n var instance = main.instances[i];\n var instanceObj = main.objects[instance];\n if (!instanceObj.common || !instanceObj.common.adminTab) continue;\n if (instanceObj.common.adminTab.singleton) {\n var isFound = false;\n var inst1 = instance.replace(/\\.(\\d+)$/, '.');\n for (var j = 0; j < addTabs.length; j++) {\n var inst2 = addTabs[j].replace(/\\.(\\d+)$/, '.');\n if (inst1 === inst2) {\n isFound = true;\n break;\n }\n }\n if (!isFound) addTabs.push(instance);\n } else {\n addTabs.push(instance);\n }\n }\n\n // Build the standard tabs together\n $('.admin-tab').each(function () {\n var $this = $(this);\n var id = $this.attr('id');\n list.push(id);\n allTabs[id] = $this.data('name');\n });\n\n // Look for adapter tabs\n for (var a = 0; a < addTabs.length; a++) {\n var tab = main.objects[addTabs[a]];\n var name = 'tab-' + tab.common.name;\n\n var link = tab.common.adminTab.link || '/adapter/' + tab.common.name + '/tab.html';\n if (tab.common.materializeTab) {\n link = tab.common.adminTab.link || '/adapter/' + tab.common.name + '/tab_m.html';\n }\n\n var parts = addTabs[a].split('.');\n var buttonName;\n\n if (tab.common.adminTab.name) {\n if (typeof tab.common.adminTab.name === 'object') {\n if (tab.common.adminTab.name[systemLang]) {\n buttonName = tab.common.adminTab.name[systemLang];\n } else if (tab.common.adminTab.name.en) {\n buttonName = _(tab.common.adminTab.name.en);\n } else {\n buttonName = _(tab.common.name);\n }\n } else {\n buttonName = _(tab.common.adminTab.name);\n }\n } else {\n buttonName = _(tab.common.name);\n }\n\n // if (main.objects[addTabs[a]].common.adminTab.name) {\n // if (typeof main.objects[addTabs[a]].common.adminTab.name === 'object') {\n // if (main.objects[addTabs[a]].common.adminTab.name[systemLang]) {\n // buttonName = main.objects[addTabs[a]].common.adminTab.name[systemLang];\n // } else if (main.objects[addTabs[a]].common.adminTab.name.en) {\n // buttonName = _(main.objects[addTabs[a]].common.adminTab.name.en);\n // } else {\n // buttonName = _(main.objects[addTabs[a]].common.name);\n // }\n // } else {\n // buttonName = _(main.objects[addTabs[a]].common.adminTab.name);\n // }\n // } else {\n // buttonName = _(main.objects[addTabs[a]].common.name);\n // }\n\n if (!tab.common.adminTab.singleton) {\n if (link.indexOf('?') !== -1) {\n link += '&instance=' + parts[3];\n } else {\n link += '?instance=' + parts[3];\n }\n buttonName += '.' + parts[3];\n name += '-' + parts[3];\n } else {\n parts[3] = 0;\n }\n\n list.push(name);\n allTabs[name] = buttonName;\n\n if (!main.systemConfig.common.tabs || main.systemConfig.common.tabs.indexOf(name) !==-1) {\n var isReplace = false;\n if (!link) {\n link = '/adapter/' + parts[2] + '/tab.html';\n if (tab.common.materilizeTab) {\n link = '/adapter/' + parts[2] + '/tab_m.html';\n }\n } else {\n // convert \"http://%ip%:%port%\" to \"http://localhost:1880\"\n /*main.tabs.instances._replaceLinks(link, parts[2], parts[3], name, function (link, adapter, instance, arg) {\n $('#' + arg).data('src', link);\n });*/\n isReplace = link.indexOf('%') !== -1;\n }\n\n text += '
  • ' + buttonName + '
  • \\n';\n\n // noinspection JSJQueryEfficiency\n if (!$('#' + name).length) {\n var div = '
    ' +\n '
    ';\n $(div).hide().appendTo($('body'));\n\n // TODO: temporary, until other tab will be adapted\n $('#' + name).find ('.iframe-in-tab').on('load', function () {\n var elem = $ (this).contents ().find('body>header');\n if (!elem || !elem.length) elem = $(this).contents ().find('head');\n if (elem && elem.length) elem.append('');\n });\n } else {\n $('#' + name).hide().appendTo($('body'));\n }\n } else {\n $('#' + name).hide().appendTo($('body'));\n }\n }\n $('.tab-custom').each(function () {\n if (list.indexOf($(this).attr('id')) === -1) {\n $('#' + $(this).attr('id')).remove();\n }\n });\n\n if (!main.systemConfig.common.tabs) main.systemConfig.common.tabs = list;\n\n if ($('.link-replace').length) {\n var countLink = 0;\n\n // If some objects cannot be read => go by timeout\n var loadTimeout = setTimeout(function() {\n loadTimeout = null;\n initHtmlTabs(/*showTabs*/);\n }, 100);\n\n $('.link-replace').each(function () {\n // convert \"http://%ip%:%port%\" to \"http://localhost:1880\"\n countLink++;\n main.tabs.instances._replaceLinks($(this).data('src'), $(this).data('adapter'), $(this).data('instance'), $(this).attr('id'), function (link, adapter, instance, arg) {\n $('#' + arg).data('src', link).removeClass('link-replace');\n if (!--countLink) {\n if (loadTimeout) {\n clearTimeout(loadTimeout);\n loadTimeout = null;\n initHtmlTabs(/*showTabs*/);\n }\n }\n });\n });\n } else {\n initHtmlTabs();\n }\n }\n\n main.initHostsList = function (isFirstInit) {\n // fill the host list (select) on adapter tab\n var $selHosts = $('#host-adapters');\n if (isFirstInit && $selHosts.data('inited')) {\n return\n }\n\n $selHosts.data('inited', true);\n\n main.currentHost = main.currentHost || main.config.currentHost || '';\n\n var lines = [];\n var color;\n var curId;\n for (var i = 0; i < main.tabs.hosts.list.length; i++) {\n lines.push('
  • ' + main.getHostIcon(main.objects[main.tabs.hosts.list[i].id], 'imgHost left') + main.tabs.hosts.list[i].name + '
  • ');\n if (!main.currentHost) {\n main.currentHost = main.tabs.hosts.list[i].name;\n }\n if (main.currentHost === main.tabs.hosts.list[i].name) {\n curId = main.tabs.hosts.list[i].id;\n }\n }\n $selHosts.html(lines);\n\n var $selBtn = $('#host-adapters-btn').show();\n $selBtn\n .text(_('Host:') + ' ' + main.currentHost)\n .dropdown();\n\n if (main.objects[curId] && main.objects[curId].common) {\n color = main.objects[curId].common.color;\n }\n\n $selBtn.append($(main.getHostIcon(main.objects[curId], 'imgHost left')));\n if (color) {\n // set color of button\n }\n\n if (main.tabs.hosts.list.length < 2) {\n $selBtn.addClass('disabled');\n } else {\n $selBtn.removeClass('disabled');\n }\n\n // host selector\n $selHosts.find('a').on('click', function () {\n var val = $(this).data('value');\n var id = 'system.host.' + val + '.alive';\n if (!main.states[id] || !main.states[id].val || main.states[id].val === 'null') {\n main.showMessage(_('Host %s is offline', $(this).val()));\n return;\n }\n\n main.currentHost = val;\n\n $('#host-adapters-btn')\n .text(_('Host:') + ' ' + main.currentHost)\n .append($(this).find('.imgHost').clone());\n // destroy current view and load anew\n console.log(main.currentTab);\n if (tabsInfo['tab-' + main.currentTab] && tabsInfo['tab-' + main.currentTab].host) {\n // destroy actual tab\n if (main.tabs[main.currentTab] && typeof main.tabs[main.currentTab].destroy === 'function') {\n main.tabs[main.currentTab].destroy();\n }\n\n // init new tab\n if (main.tabs[main.currentTab] && typeof main.tabs[main.currentTab].init === 'function') {\n main.tabs[main.currentTab].init();\n }\n }\n\n main.saveConfig('currentHost', main.currentHost);\n });\n };\n\n // Use the function for this because it must be done after the language was read\n function initAllDialogs() {\n // todo delete it because jqgrid does not used any more\n if (typeof initGridLanguage === 'function') {\n initGridLanguage(main.systemConfig.common.language);\n }\n\n $dialogCommand.modal({\n dismissible: false\n });\n $dialogMessage.modal();\n $dialogConfirm.modal({\n dismissible: false\n });\n\n $dialogCommand.find('.progress-show-more').off('change').on('change', function () {\n var val = $(this).prop('checked');\n main.saveConfig('progressMore', val);\n if (val) {\n $dialogCommand.find('.textarea').show();\n } else {\n $dialogCommand.find('.textarea').hide();\n }\n });\n if (main.config.progressClose === undefined) {\n main.config.progressClose = true;\n }\n $dialogCommand.find('.progress-dont-close input').on('change', function () {\n main.saveConfig('progressClose', $(this).prop('checked'));\n });\n // workaround for materialize checkbox problem\n $dialogCommand.find('input[type=\"checkbox\"]+span').off('click').on('click', function () {\n var $input = $(this).prev();\n // ignore switch\n if ($input.parent().parent().hasClass('switch')) return;\n\n if (!$input.prop('disabled')) {\n $input.prop('checked', !$input.prop('checked')).trigger('change');\n }\n });\n $dialogCommand.find('.progress-dont-close input').prop('checked', main.config.progressClose);\n $dialogCommand.find('.progress-show-more').prop('checked', !!main.config.progressMore).trigger('change');\n $dialogCommand.find('.btn').on('click', function () {\n if ($dialogCommand.data('finished')) {\n $adminSideMain.find('.button-command').hide();\n } else {\n $adminSideMain.find('.button-command').show();\n }\n });\n\n $adminSideMain.find('.button-command').on('click', function () {\n $dialogCommand.modal('open');\n });\n }\n\n function checkNodeJsVersions(hosts, index) {\n index = index || 0;\n if (hosts && index < hosts.length) {\n main.socket.emit('sendToHost', hosts[index].name, 'getHostInfo', null, function (result) {\n if (result && result['Node.js']) {\n var major = parseInt(result['Node.js'].split('.').shift().replace('v', ''), 10);\n if (major < 6 || major === 7 || major === 9 ) { // we allow 6, 8 and 10+\n main.showMessage(_('This version of node.js \"%s\" on \"%s\" is deprecated. Please install node.js 6, 8 or newer', result['Node.js'], hosts[index].name), _('Suggestion'), 'error_outline');\n }\n }\n setTimeout(function () {\n checkNodeJsVersions(hosts, index + 1);\n }, 100);\n });\n }\n }\n\n // ----------------------------- Objects show and Edit ------------------------------------------------\n function getObjects(callback) {\n main.socket.emit('getAllObjects', function (err, res) {\n if (err) {\n // following errors are possible\n // permissionError\n // Admin is not enabled in cloud settings!\n window.alert(_(err));\n return;\n }\n\n setTimeout(function () {\n var obj;\n main.objects = res;\n for (var id in main.objects) {\n if (!main.objects.hasOwnProperty(id) || id.slice(0, 7) === '_design') continue;\n\n obj = main.objects[id];\n\n if (obj.type === 'instance') main.instances.push(id);\n if (obj.type === 'enum') tabs.enums.list.push(id);\n if (obj.type === 'user') tabs.users.list.push(id);\n if (obj.type === 'group') tabs.users.groups.push(id);\n if (obj.type === 'adapter') tabs.adapters.list.push(id);\n if (obj.type === 'host') tabs.hosts.addHost(obj);\n\n // convert obj.history into obj.custom\n if (obj.common && obj.common.history) {\n obj.common.custom = JSON.parse(JSON.stringify(obj.common.history));\n delete obj.common.history;\n }\n }\n main.objectsLoaded = true;\n main.initHostsList(true);\n\n initTabs();\n // init dialogs\n for (var dialog in main.dialogs) {\n if (main.dialogs.hasOwnProperty(dialog) && typeof main.dialogs[dialog].prepare === 'function') {\n main.dialogs[dialog].prepare();\n }\n }\n\n // Detect node.js version\n checkNodeJsVersions(tabs.hosts.list);\n\n main.getUser();\n\n if (typeof callback === 'function') callback();\n }, 0);\n });\n }\n // ----------------------------- States show and Edit ------------------------------------------------\n\n function getStates(callback) {\n if (tabs.states) tabs.states.clear();\n main.socket.emit('getStates', function (err, res) {\n main.states = res;\n if (typeof callback === 'function') {\n setTimeout(function () {\n callback();\n }, 0);\n }\n });\n }\n\n function stateChange(id, state) {\n id = id ? id.replace(/\\s/g, '_') : '';\n\n if (!id || !id.match(/\\.messagebox$/)) {\n if (tabs.states) {\n tabs.states.stateChange(id, state);\n }\n tabs.objects.stateChange(id, state);\n tabs.hosts.stateChange(id, state);\n\n // Update alive and connected of main.instances\n tabs.instances.stateChange(id, state);\n tabs.adapters.stateChange(id, state);\n main.dialogs.customs.stateChange(id, state);\n\n if (main.selectId) {\n main.selectId.selectId('state', id, state);\n }\n main.addEventMessage(id, state, false, true);\n } else {\n main.addEventMessage(id, state, true, true);\n }\n }\n\n function objectChange(id, obj) {\n //var changed = false;\n //var oldObj = null;\n var action = 'update';\n\n // update main.objects cache\n if (obj) {\n if (obj._rev && main.objects[id]) main.objects[id]._rev = obj._rev;\n if (!main.objects[id]) {\n action = 'add';\n }\n if (action === 'add' || JSON.stringify(main.objects[id]) !== JSON.stringify(obj)) {\n main.objects[id] = obj;\n }\n } else if (main.objects[id]) {\n action = 'delete';\n delete main.objects[id];\n }\n\n // update to event table\n main.addEventMessage(id, obj, false, false);\n\n tabs.objects.objectChange(id, obj, action);\n\n main.selectId && main.selectId.selectId('object', id, obj, action);\n\n tabs.enums.objectChange(id, obj, action);\n tabs.intro.objectChange(id, obj, action);\n\n // If system config updated\n if (id === 'system.config') {\n // Check language\n if (main.systemConfig.common.language !== obj.common.language) {\n window.location.reload();\n }\n\n main.systemConfig = obj;\n initTabs();\n }\n\n if (id === 'system.adapter.discovery.0') {\n main.updateWizard();\n }\n\n if (id.match(/^system\\.host\\.[-\\w]+$/)) {\n main.initHostsList();\n }\n\n tabs.instances.objectChange(id, obj, action);\n\n if (id.match(/^script\\.js\\.global\\..*/)) {\n main.ignoreJSupdate = true;\n }\n\n if (obj && id.match(/^system\\.adapter\\.[\\w-]+\\.[0-9]+$/)) {\n if (obj.common &&\n obj.common.adminTab &&\n !obj.common.adminTab.ignoreConfigUpdate\n ) {\n // one exception for javascript. To able work with global scripts normally\n if (!id.match(/^system\\.adapter\\.javascript\\.[0-9]+$/) || !main.ignoreJSupdate) {\n initTabs();\n } else {\n main.ignoreJSupdate = false;\n }\n }\n\n if (obj && obj.type === 'instance' && obj.common.supportCustoms) {\n // Update all states if customs enabled or disabled\n tabs.objects.reinit();\n }\n }\n\n tabs.hosts.objectChange(id, obj, action);\n\n // Update users\n tabs.users.objectChange(id, obj, action);\n\n // update user in side menu\n if (id === main.currentUser) {\n main.getUser();\n }\n }\n\n function monitor() {\n if (main._timer) return;\n var ts = (new Date()).getTime();\n if (ts - main._lastTimer > 30000) {\n // It seems, that PC was in a sleep => Reload page to request authentication anew\n location.reload();\n } else {\n main._lastTimer = ts;\n }\n main._timer = setTimeout(function () {\n main._timer = null;\n monitor();\n }, 10000);\n }\n\n // ---------------------------- Subscribes ---------------------------------------------\n main.resubscribeStates = function () {\n for (var pattern in main.subscribesStates) {\n if (main.subscribesStates.hasOwnProperty(pattern) && main.subscribesStates[pattern]) {\n console.debug('Re-Subscribe: ' + pattern);\n main.socket.emit('subscribe', pattern);\n }\n }\n };\n\n main.resubscribeObjects = function () {\n for (var pattern in main.subscribesObjects) {\n if (main.subscribesObjects.hasOwnProperty(pattern) && main.subscribesObjects[pattern]) {\n main.socket.emit('subscribeObjects', pattern);\n }\n }\n };\n\n main.resubscribeLogs = function () {\n if (main.subscribesLogs) {\n console.debug('Subscribe LOG');\n main.socket.emit('requireLog', true);\n }\n };\n\n main.subscribeStates = function (patterns) {\n if (!patterns) return;\n if (typeof patterns === 'object') {\n for (var s = 0; s < patterns.length; s++) {\n main.subscribesStates[patterns[s]] = main.subscribesStates[patterns[s]] || 0;\n main.subscribesStates[patterns[s]]++;\n if (main.subscribesStates[patterns[s]] === 1) {\n console.debug('Subscribe: ' + patterns[s]);\n main.socket.emit('subscribe', patterns[s]);\n }\n }\n } else {\n main.subscribesStates[patterns] = main.subscribesStates[patterns] || 0;\n main.subscribesStates[patterns]++;\n if (main.subscribesStates[patterns] === 1) {\n console.debug('Subscribe: ' + patterns);\n main.socket.emit('subscribe', patterns);\n }\n }\n };\n\n main.unsubscribeStates = function (patterns) {\n if (!patterns) return;\n if (typeof patterns === 'object') {\n for (var s = 0; s < patterns.length; s++) {\n if (main.subscribesStates[patterns[s]]) {\n main.subscribesStates[patterns[s]]--;\n }\n if (main.subscribesStates[patterns[s]] === 0) {\n console.debug('Unsibscribe: ' + patterns[s]);\n main.socket.emit('unsubscribe', patterns[s]);\n delete main.subscribesStates[patterns[s]];\n }\n }\n } else {\n if (main.subscribesStates[patterns]) {\n main.subscribesStates[patterns]--;\n }\n if (main.subscribesStates[patterns] === 0) {\n console.debug('Unsibscribe: ' + patterns);\n main.socket.emit('unsubscribe', patterns);\n delete main.subscribesStates[patterns];\n }\n }\n };\n\n main.subscribeObjects = function (patterns) {\n if (!patterns) return;\n if (typeof patterns === 'object') {\n for (var s = 0; s < patterns.length; s++) {\n main.subscribesObjects[patterns[s]] = main.subscribesObjects[patterns[s]] || 0;\n main.subscribesObjects[patterns[s]]++;\n if (main.subscribesObjects[patterns[s]] === 1) {\n main.socket.emit('subscribeObjects', patterns[s]);\n }\n }\n } else {\n main.subscribesObjects[patterns] = main.subscribesObjects[patterns] || 0;\n main.subscribesObjects[patterns]++;\n if (main.subscribesObjects[patterns] === 1) {\n main.socket.emit('subscribeObjects', patterns);\n }\n }\n };\n\n main.unsubscribeObjects = function (patterns) {\n if (!patterns) return;\n if (typeof patterns === 'object') {\n for (var s = 0; s < patterns.length; s++) {\n if (main.subscribesObjects[patterns[s]]) {\n main.subscribesObjects[patterns[s]]--;\n }\n if (main.subscribesObjects[patterns[s]] === 0) {\n main.socket.emit('unsubscribeObjects', patterns[s]);\n delete main.subscribesObjects[patterns[s]];\n }\n }\n } else {\n if (main.subscribesObjects[patterns]) {\n main.subscribesObjects[patterns]--;\n }\n if (main.subscribesObjects[patterns] === 0) {\n main.socket.emit('unsubscribeObjects', patterns);\n delete main.subscribesObjects[patterns];\n }\n }\n };\n\n main.subscribeLogs = function (isSubscribe) {\n if (isSubscribe) {\n main.subscribesLogs++;\n if (main.subscribesLogs === 1) {\n console.debug('Subscribe Logs');\n main.socket.emit('requireLog', true);\n }\n } else {\n main.subscribesLogs--;\n if (main.subscribesLogs <= 0) {\n main.subscribesLogs = 0;\n console.debug('Unsubscribe Logs');\n main.socket.emit('requireLog', false);\n }\n }\n };\n\n // ---------------------------- Navigation ---------------------------------------------\n main.navigateCheckDialog = function (callback) {\n if (main.currentDialog && main.dialogs[main.currentDialog] && typeof main.dialogs[main.currentDialog].allStored === 'function') {\n if (main.dialogs[main.currentDialog].allStored() === false) {\n return main.confirmMessage(_('Some data are not stored. Discard?'), _('Please confirm'), null, function (result) {\n callback(!result);\n });\n }\n } else {\n if (configNotSaved) {\n return main.confirmMessage(_('Some data are not stored. Discard?'), _('Please confirm'), null, function (result) {\n callback(!result);\n });\n }\n }\n callback(false);\n };\n\n main.navigateGetParams = function () {\n var parts = decodeURI(window.location.hash).split('/');\n return parts[2] ? decodeURIComponent(parts[2]) : null;\n };\n\n main.navigate = function (options) {\n if (!options) {\n options = {};\n }\n if (typeof options === 'string') {\n options = {\n tab: options,\n dialog: '',\n params: ''\n };\n }\n\n // get actual tab\n if (!options.tab) {\n var parts = decodeURI(window.location.hash).split('/');\n options.tab = parts[0].replace(/^#/, '').replace(/^tab-/, '');\n }\n\n window.location.hash = '#tab-' + encodeURIComponent(options.tab) + (options.dialog ? '/' + options.dialog + (options.params ? '/' + encodeURIComponent(options.params) : '') : '');\n };\n\n // Router\n main.navigateDo = function () {\n // ignore if hash not changed\n if (window.location.hash === main.currentHash) {\n return;\n }\n // if config dialog opened and has some unsaved data\n main.navigateCheckDialog(function (err) {\n if (!err) {\n configNotSaved = null;\n main.currentHash = window.location.hash;\n // hash has following structure => #tabName/dialogName/ids\n var parts = main.currentHash.split('/');\n var tab = parts[0].replace(/^#/, '').replace(/^tab-/, '');\n var dialog = parts[1];\n var params = decodeURIComponent(parts[2]);\n\n // set default page\n if (!tab || tab === '!') {\n if (!main.systemConfig.common.tabs || main.systemConfig.common.tabs.indexOf('tab-intro') !== -1) {\n tab = 'intro';\n } else if (main.systemConfig.common.tabs.indexOf('tab-adapters') !== -1) {\n tab = 'adapters';\n } else {\n tab = main.systemConfig.common.tabs[0].replace(/^#/, '').replace(/^tab-/, '');\n }\n }\n // do tab is not found\n\n var $adminBody = $('.admin-sidemenu-body');\n var $actualTab = $adminBody.find('.admin-sidemenu-body-content');\n var $panel = $('#tab-' + tab);\n\n $adminBody.find('.admin-preloader').remove();\n\n if (!$panel.length) {\n tab = 'intro';\n }\n\n // if tab was changed\n if (main.currentTab !== tab || !$actualTab.length) {\n var link;\n // destroy actual tab\n if (main.currentTab && tabs[main.currentTab] && typeof tabs[main.currentTab].destroy === 'function') {\n tabs[main.currentTab].destroy();\n } else if (main.currentTab) {\n var $oldPanel = $('#tab-' + main.currentTab);\n // destroy current iframe\n if ($oldPanel.length && (link = $oldPanel.data('src'))) {\n var $iframe_ = $oldPanel.find('>iframe');\n if ($iframe_.attr('src')) {\n console.log('clear');\n $iframe_.attr('src', '');\n }\n }\n }\n main.currentTab = tab;\n\n $actualTab.hide().appendTo('body');\n if (!dialog) {\n $panel.addClass('admin-sidemenu-body-content').show().appendTo($adminBody);\n $actualTab = $panel;\n }\n\n // init new tab\n if (tabs[tab] && typeof tabs[tab].init === 'function') {\n tabs[tab].init();\n }\n\n // if iframe like node-red\n if ($panel.length && (link = $panel.data('src'))) {\n if (link.indexOf('%') === -1) {\n var $iframe = $panel.find('>iframe');\n if ($iframe.length && !$iframe.attr('src')) {\n $iframe.attr('src', link);\n }\n } else {\n $adminSideMenu.data('problem-link', 'tab-' + tab);\n }\n }\n }\n\n // select menu element\n var $tab = $adminSideMenu.find('.admin-sidemenu-items[data-tab=\"tab-' + tab + '\"]');\n $adminSideMenu.find('.admin-sidemenu-items').not($tab).removeClass('admin-sidemenu-active');\n $tab.addClass('admin-sidemenu-active');\n\n if (tabsInfo['tab-' + tab] && tabsInfo['tab-' + tab].host) {\n $('#host-adapters-btn').css('opacity', 1);\n } else {\n $('#host-adapters-btn').css('opacity', 0.3);\n }\n document.title = tab + ' - yunkong2';\n // if some dialog opened or must be shown\n if (main.currentDialog !== dialog) {\n // destroy it\n if (main.dialogs[main.currentDialog] && typeof main.dialogs[main.currentDialog].destroy === 'function') {\n main.dialogs[main.currentDialog].destroy();\n }\n main.currentDialog = dialog;\n if (dialog && main.dialogs[dialog]) {\n if (typeof main.dialogs[dialog].init === 'function') {\n main.dialogs[dialog].init(params ? params.split(',') : undefined);\n }\n tabs[main.currentTab] && tabs[main.currentTab].saveScroll && tabs[main.currentTab].saveScroll();\n $actualTab.hide().appendTo('body');\n $('#dialog-' + dialog).addClass('admin-sidemenu-body-content').show().appendTo($adminBody);\n } else if ($actualTab.attr('id') !== $panel.attr('id')) {\n $actualTab.hide().appendTo('body');\n $panel.addClass('admin-sidemenu-body-content').show().appendTo($adminBody);\n tabs[main.currentTab] && tabs[main.currentTab].restoreScroll && tabs[main.currentTab].restoreScroll();\n }\n }\n } else {\n // restore hash link\n window.location.hash = main.currentHash || '';\n }\n });\n };\n\n function getIconHtml(obj, classes) {\n var icon;\n var alt;\n var isCommon = obj && obj.common;\n\n if (isCommon.icon) {\n if (!isCommon.icon.match(/^data:image\\//)) {\n if (isCommon.icon.indexOf('.') !== -1) {\n var instance;\n if (obj.type === 'instance') {\n icon = '/adapter/' + obj.common.name + '/' + obj.common.icon;\n } else if (obj._id.match(/^system\\.adapter\\./)) {\n instance = obj._id.split('.', 3);\n if (isCommon.icon[0] === '/') {\n instance[2] += isCommon.icon;\n } else {\n instance[2] += '/' + isCommon.icon;\n }\n icon = '/adapter/' + instance[2];\n } else {\n instance = obj._id.split('.', 2);\n if (isCommon.icon[0] === '/') {\n instance[0] += isCommon.icon;\n } else {\n instance[0] += '/' + isCommon.icon;\n }\n icon = '/adapter/' + instance[0];\n }\n } else {\n return '' + isCommon.icon + '';\n }\n\n } else {\n icon = isCommon.icon;\n }\n alt = obj.type;\n }\n return {icon: icon, alt: alt}\n }\n\n main.getIconFromObj = function (obj, imgPath, classes) {\n var icon = '';\n var alt = '';\n if (obj && obj.common) {\n if (obj.common.icon) {\n var result = getIconHtml(obj);\n icon = result.icon;\n alt = result.alt;\n } else {\n imgPath = imgPath || 'lib/css/fancytree/';\n if (obj.type === 'device') {\n icon = imgPath + 'device.png';\n alt = 'device';\n } else if (obj.type === 'channel') {\n icon = imgPath + 'channel.png';\n alt = 'channel';\n } else if (obj.type === 'state') {\n icon = imgPath + 'state.png';\n alt = 'state';\n }\n }\n }\n\n if (icon) return '\"'';\n return '';\n };\n\n // static, just used from many places\n main.getIcon = function(id, imgPath, objects, classes) {\n return main.getIconFromObj((objects || main.objects)[id], imgPath, classes);\n };\n\n main.getHostIcon = function (obj, classes) {\n var icon = '';\n var alt = '';\n\n if (obj && obj.common && obj.common.icon) {\n var result = getIconHtml(obj);\n icon = result.icon;\n alt = result.alt;\n }\n icon = icon || 'img/no-image.png';\n alt = alt || '';\n\n return '\"'';\n };\n\n main.formatBytes = function (bytes) {\n if (Math.abs(bytes) < 1024) {\n return bytes + ' B';\n }\n var units = ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];\n var u = -1;\n do {\n bytes /= 1024;\n ++u;\n } while (Math.abs(bytes) >= 1024 && u < units.length - 1);\n return bytes.toFixed(1) + ' ' + units[u];\n };\n\n // https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n main.invertColor = function (hex) {\n if (hex.indexOf('#') === 0) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6) {\n return false;\n }\n var r = parseInt(hex.slice(0, 2), 16),\n g = parseInt(hex.slice(2, 4), 16),\n b = parseInt(hex.slice(4, 6), 16);\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) <= 186;\n };\n\n var tabsInfo = {\n 'tab-intro': {order: 1, icon: 'apps'},\n 'tab-adapters': {order: 2, icon: 'store', host: true},\n 'tab-instances': {order: 3, icon: 'subtitles', host: true},\n 'tab-objects': {order: 4, icon: 'view_list'},\n 'tab-enums': {order: 5, icon: 'art_track'},\n 'tab-logs': {order: 6, icon: 'view_headline', host: true},\n 'tab-scenes': {order: 7, icon: 'subscriptions'},\n 'tab-events': {order: 8, icon: 'flash_on'},\n 'tab-users': {order: 10, icon: 'person_outline'},\n 'tab-javascript': {order: 11, icon: 'code'},\n 'tab-text2command-0': {order: 12, icon: 'ac_unit'},\n 'tab-text2command-1': {order: 12, icon: 'ac_unit'},\n 'tab-text2command-2': {order: 12, icon: 'ac_unit'},\n 'tab-node-red-0': {order: 20, icon: 'device_hub'},\n 'tab-node-red-1': {order: 21, icon: 'device_hub'},\n 'tab-node-red-2': {order: 22, icon: 'device_hub'},\n 'tab-hosts': {order: 100, icon: 'storage'},\n 'tab-fullcalendar-0': {order: 30, icon: 'perm_contact_calendar'},\n 'tab-fullcalendar-1': {order: 31, icon: 'perm_contact_calendar'},\n 'tab-fullcalendar-2': {order: 32, icon: 'perm_contact_calendar'}\n };\n\n function initSideNav() {\n var lines = '';\n\n var elements = [];\n $('.admin-tab').each(function () {\n var id = $(this).attr('id');\n if (!main.systemConfig.common.tabs || main.systemConfig.common.tabs.indexOf(id) !== -1) {\n elements.push({\n line: '
  • ' +\n (tabsInfo[id] && tabsInfo[id].icon ? '' + tabsInfo[id].icon + '' : 'live_help') +\n _($(this).data('name')) + '
  • ',\n id: id\n });\n }\n });\n $('.tab-custom').each(function () {\n var id = $(this).attr('id');\n if (!main.systemConfig.common.tabs || main.systemConfig.common.tabs.indexOf(id) !== -1) {\n var icon;\n if (tabsInfo[id] && tabsInfo[id].icon) {\n icon = tabsInfo[id].icon;\n } else {\n var _id = 'system.adapter.' + id.substring(4);\n if (main.objects[_id] && main.objects[_id].adminTab && main.objects[_id]['fa-icon']) {\n icon = main.objects[_id]['fa-icon'];\n }\n }\n\n elements.push({\n line: '
  • ' +\n (icon ? '' + icon + '' : 'live_help') +\n $(this).data('name') + '
  • ',\n id: id\n });\n }\n });\n\n elements.sort(function (a, b) {\n if (!tabsInfo[a.id] && !tabsInfo[b.id]) return 0;\n if (!tabsInfo[a.id]) return 1;\n if (!tabsInfo[b.id]) return -1;\n if (tabsInfo[a.id].order < tabsInfo[b.id].order) return -1;\n if (tabsInfo[a.id].order > tabsInfo[b.id].order) return 1;\n return 0;\n });\n\n for (var e = 0; e < elements.length; e++) {\n lines += elements[e].line;\n }\n $adminSideMenu.find('.admin-sidemenu-menu').html(lines);\n\n $('.admin-sidemenu-close').off('click').on('click', function () {\n $adminSideMain.toggleClass('admin-sidemenu-closed');\n $adminSideMenu.toggleClass('admin-sidemenu-closed');\n $('.admin-sidemenu-close i').toggleClass('hide');\n\n setTimeout(function () {\n //resizeGrids();\n $(window).trigger('resize');\n }, 400);\n });\n\n $('.admin-sidemenu-items').off('click').on('click', function (e) {\n e.preventDefault();\n e.stopPropagation();\n window.location.hash = '#' + $(this).data('tab');\n });\n $('.admin-sidemenu-items a').off('click').on('click', function (e) {\n e.preventDefault();\n e.stopPropagation();\n window.location.hash = '#' + $(this).parent().data('tab');\n });\n\n // Show if update available\n tabs.hosts.updateCounter();\n tabs.adapters.updateCounter();\n }\n\n // ---------------------------- Socket.io methods ---------------------------------------------\n main.socket.on('log', function (message) {\n tabs.logs.add(message);\n });\n main.socket.on('error', function (error) {\n console.log(error);\n });\n main.socket.on('permissionError', function (err) {\n main.showMessage(_('Has no permission to %s %s %s', err.operation, err.type, (err.id || '')));\n });\n main.socket.on('stateChange', function (id, obj) {\n setTimeout(stateChange, 0, id, obj);\n });\n main.socket.on('objectChange', function (id, obj) {\n setTimeout(objectChange, 0, id, obj);\n });\n main.socket.on('cmdStdout', function (_id, text) {\n if (activeCmdId === _id) {\n var m = text.match(/^upload \\[(\\d+)]/);\n if (m) {\n if ($dialogCommand.data('max') === null) {\n $dialogCommand.data('max', parseInt(m[1], 10));\n $dialogCommandProgress.removeClass('indeterminate').addClass('determinate');\n }\n var max = $dialogCommand.data('max');\n var value = parseInt(m[1], 10);\n $dialogCommandProgress.css('width', (100 - Math.round((value / max) * 100)) + '%');\n } else {\n m = text.match(/^got [-_:\\/\\\\.\\w\\d]+\\/admin$/);\n if (m) {\n // upload of admin\n $dialogCommand.find('.progress-text').html(_('Upload admin started'));\n $dialogCommand.data('max', null);\n } else {\n // got ..../www\n m = text.match(/^got [-_:\\/\\\\.\\w\\d]+\\/www$/);\n if (m) {\n // upload of www\n $dialogCommand.find('.progress-text').html(_('Upload www started'));\n $dialogCommand.data('max', null);\n } else {\n\n }\n }\n }\n\n stdout += '\\n' + text;\n $stdout.val(stdout);\n $stdout.scrollTop($stdout[0].scrollHeight - $stdout.height());\n }\n });\n main.socket.on('cmdStderr', function (_id, text) {\n if (activeCmdId === _id) {\n if (!$dialogCommand.data('error')) {\n $dialogCommand.data('error', text);\n }\n stdout += '\\nERROR: ' + text;\n $stdout.val(stdout);\n $stdout.scrollTop($stdout[0].scrollHeight - $stdout.height());\n }\n });\n main.socket.on('cmdExit', function (_id, exitCode) {\n if (activeCmdId === _id) {\n\n exitCode = parseInt(exitCode, 10);\n stdout += '\\n' + (exitCode !== 0 ? 'ERROR: ' : '') + 'process exited with code ' + exitCode;\n $stdout.val(stdout);\n $stdout.scrollTop($stdout[0].scrollHeight - $stdout.height());\n\n $dialogCommand.find('.progress-dont-close').addClass('disabled');\n $dialogCommandProgress.removeClass('indeterminate').css({'width': '100%'});\n $dialogCommand.find('.btn').html(_('Close'));\n $dialogCommand.data('finished', true);\n $dialogCommand.data('max', true);\n var $backButton = $adminSideMain.find('.button-command');\n $backButton.removeClass('in-progress');\n\n if (!exitCode) {\n $dialogCommand.find('.progress-text').html(_('Success!'));\n $backButton.hide();\n if ($dialogCommand.find('.progress-dont-close input').prop('checked')) {\n setTimeout(function () {\n $dialogCommand.modal('close');\n }, 1500);\n }\n } else {\n var error = $dialogCommand.data('error');\n if (error) {\n var m = error.match(/error: (.*)$/);\n if (m) {\n error = m[1];\n }\n\n $dialogCommand.find('.progress-text').html(_('Done with error: %s', _(error))).addClass('error');\n } else {\n $dialogCommand.find('.progress-text').html(_('Done with error')).addClass('error');\n }\n $backButton.addClass('error');\n $backButton.show();\n }\n if (cmdCallback) {\n cmdCallback(exitCode);\n cmdCallback = null;\n }\n }\n });\n main.socket.on('eventsThreshold', function (isActive) {\n if (isActive) {\n $('#events_threshold').show();\n } else {\n $('#events_threshold').hide();\n }\n });\n main.socket.on('connect', function () {\n $('#connecting').hide();\n if (firstConnect) {\n firstConnect = false;\n\n main.getUser();\n\n main.socket.emit('getUserPermissions', function (err, acl) {\n main.acl = acl;\n // Read system configuration\n main.socket.emit('getObject', 'system.config', function (errConfig, data) {\n main.systemConfig = data;\n\n // set logo and set branding\n if (data && data.native && data.native.vendor) {\n var vendor = data.native.vendor;\n if (vendor.icon) {\n $('.admin-sidemenu-header .button-icon img').attr('src', data.native.vendor.icon);\n }\n if (vendor.name) {\n $('.admin-sidemenu-header .button-version').html(data.native.vendor.name).addClass('vendor');\n }\n if (vendor.admin && vendor.admin.noCustomInstall) {\n $('#btn_filter_custom_url').hide();\n }\n if (vendor.admin && vendor.admin.css) {\n if (vendor.admin.css.sideNavUser) {\n $('.side-nav .user-view').css(vendor.admin.css.sideNavUser);\n }\n if (vendor.admin.css.sideNavMenu) {\n $('.side-nav').css(vendor.admin.css.sideNavMenu);\n }\n if (vendor.admin.css.header) {\n $adminSideMain.find('.admin-sidemenu-header nav').css(vendor.admin.css.header);\n }\n // apply rules\n if (vendor.admin.css.rules) {\n for (var r = 0; r < vendor.admin.css.rules.length; r++) {\n $(vendor.admin.css.rules[r].selector).css(vendor.admin.css.rules[r].css);\n }\n }\n if (vendor.admin.styles) {\n $('head').append('');\n }\n }\n }\n\n // rename log => logs (back compatibility)\n if (main.systemConfig && main.systemConfig.common && main.systemConfig.common.tabs) {\n var pos = main.systemConfig.common.tabs.indexOf('tab-log');\n if (pos !== -1) {\n main.systemConfig.common.tabs[pos] = 'tab-logs';\n }\n }\n\n main.socket.emit('getObject', 'system.repositories', function (errRepo, repo) {\n main.dialogs.system.systemRepos = repo;\n main.socket.emit('getObject', 'system.certificates', function (errCerts, certs) {\n setTimeout(function () {\n main.dialogs.system.systemCerts = certs;\n if (errConfig === 'permissionError') {\n main.systemConfig = {common: {language: systemLang}, error: 'permissionError'};\n } else {\n if (!errConfig && main.systemConfig && main.systemConfig.common) {\n systemLang = main.systemConfig.common.language || systemLang;\n main.systemConfig.common.city = main.systemConfig.common.city || '';\n main.systemConfig.common.country = main.systemConfig.common.country || '';\n main.systemConfig.common.longitude = main.systemConfig.common.longitude || '';\n main.systemConfig.common.latitude = main.systemConfig.common.latitude || '';\n\n if (!main.systemConfig.common.licenseConfirmed) {\n // Show license agreement\n var language = (main.systemConfig.common.language || window.navigator.userLanguage || window.navigator.language || '').substring(0, 2);\n if (language !== 'en' && language !== 'de' && language !== 'ru') language = 'en';\n\n systemLang = language;\n\n $dialogLicense.find('.license_text').html(license[language] || license.en);\n\n $dialogLicense.find('.license_checkbox').prop('checked', false);\n\n // on language change\n $dialogLicense.find('.license_language')\n .data('licenseConfirmed', false)\n .val(language)\n .on('change', function () {\n language = $(this).val();\n $dialogLicense.find('.license_language_label').html(translateWord('Select language', language));\n $dialogLicense.find('.license_text').html(license[language] || license.en);\n $dialogLicense.find('.license_checkbox').html(translateWord('license_checkbox', language));\n $dialogLicense.find('.license_agree .translate').html(translateWord('agree', language));\n $dialogLicense.find('.license_non_agree .translate').html(translateWord('not agree', language));\n $dialogLicense.find('.license_terms').html(translateWord('License terms', language));\n $dialogLicense.find('.license_agreement_label').html(translateWord('license agreement', language));\n }).select();\n\n $dialogLicense.find('.license_diag').on('change', function () {\n if ($(this).prop('checked')) {\n $dialogLicense.find('.license_agree').removeClass('disabled');\n } else {\n $dialogLicense.find('.license_agree').addClass('disabled');\n }\n });\n\n // workaround for materialize checkbox problem\n $dialogLicense.find('input[type=\"checkbox\"]+span').off('click').on('click', function () {\n var $input = $(this).prev();\n if (!$input.prop('disabled')) {\n $input.prop('checked', !$input.prop('checked')).trigger('change');\n }\n });\n\n $dialogLicense.modal({\n dismissible: false,\n complete: function () {\n $dialogLicense.find('.license_text').html('');\n location.reload();\n }\n }).modal('open');\n\n $dialogLicense.find('.license_agree').addClass('disabled').off('click').on('click', function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n main.socket.emit('getObject', 'system.config', function (err, obj) {\n if (err || !obj) {\n main.showError(_('Cannot confirm: ' + err));\n return;\n }\n obj.common = obj.common || {};\n obj.common.licenseConfirmed = true;\n obj.common.language = language;\n main.socket.emit('setObject', 'system.config', obj, function (err) {\n if (err) {\n main.showError(err);\n }\n $dialogLicense.modal('close');\n $dialogLicense.find('.license_agree').off('click');\n $dialogLicense.find('.license_non_agree').off('click');\n });\n });\n });\n $dialogLicense.find('.license_non_agree').off('click').on('click', function (e) {\n location.reload();\n });\n }\n } else {\n main.systemConfig = {\n type: 'config',\n common: {\n name: 'system.config',\n city: '', // City for weather\n country: '', // Country for weather\n longitude: '', // longitude for javascript\n latitude: '', // longitude for javascript\n language: '', // Default language for adapters. Adapters can use different values.\n tempUnit: '°C', // Default temperature units.\n currency: '', // Default currency sign.\n dateFormat: 'DD.MM.YYYY', // Default date format.\n isFloatComma: true, // Default float divider ('.' - false, ',' - true)\n licenseConfirmed: false, // If license agreement confirmed,\n defaultHistory: '', // Default history instance\n tabs: [ // Show by default only these tabs\n 'tab-intro',\n 'tab-adapters',\n 'tab-instances',\n 'tab-objects',\n 'tab-logs',\n 'tab-scenes',\n 'tab-javascript',\n 'tab-text2command-0'\n ]\n }\n };\n main.systemConfig.common.language = window.navigator.userLanguage || window.navigator.language;\n\n if (main.systemConfig.common.language !== 'en' && main.systemConfig.common.language !== 'de' && main.systemConfig.common.language !== 'ru') {\n main.systemConfig.common.language = 'en';\n }\n }\n }\n\n translateCron();\n translateAll();\n\n // Here we go!\n initAllDialogs();\n // call prepare\n for (var t in tabs) {\n if (tabs.hasOwnProperty(t) && tabs[t] && typeof tabs[t].prepare === 'function') {\n tabs[t].prepare();\n }\n }\n // TABS\n // resizeGrids();\n\n getStates(getObjects);\n }, 0);\n });\n });\n });\n });\n } else {\n main.resubscribeStates();\n main.resubscribeObjects();\n main.resubscribeLogs();\n }\n if (main.waitForRestart) {\n location.reload();\n }\n });\n main.socket.on('disconnect', function () {\n $('#connecting').show();\n });\n main.socket.on('reconnect', function () {\n $('#connecting').hide();\n if (main.waitForRestart) {\n location.reload();\n }\n });\n main.socket.on('repoUpdated', function () {\n setTimeout(function () {\n tabs.adapters.init(true);\n }, 0);\n });\n main.socket.on('reauthenticate', function () {\n location.reload();\n });\n\n /*function resizeGrids() {\n var x = $(window).width();\n var y = $(window).height();\n if (x < 720) {\n x = 720;\n }\n if (y < 480) {\n y = 480;\n }\n for (var tab in tabs.events) {\n if (tabs.events.hasOwnProperty(tab) && tabs[tab] && tabs[tab].resize) {\n tabs[tab].resize(x, y);\n }\n }\n }\n\n $(window).resize(resizeGrids);\n */\n});\n})(jQuery);\n","function Adapters(main) {\n 'use strict';\n\n var that = this;\n\n this.curRepository = null;\n this.curRepoLastUpdate = null;\n this.curInstalled = null;\n this.curRepoLastHost = null;\n\n this.list = [];\n this.$tab = $('#tab-adapters');\n this.$grid = this.$tab.find('#grid-adapters');\n this.$tiles = this.$tab.find('#grid-adapters-tiles');\n this.$installDialog = $('#dialog-install-url');\n this.main = main;\n this.tree = [];\n this.data = {};\n this.urls = {};\n this.groupImages = {\n 'common adapters_group': 'img/common.png',\n 'general_group': 'img/common.png',\n 'hardware_group': 'img/hardware.png',\n 'lighting_group': 'img/hardware.png',\n 'energy_group': 'img/hardware.png',\n 'household_group': 'img/hardware.png',\n 'iot-systems_group': 'img/hardware.png',\n 'climate-control_group': 'img/hardware.png',\n 'infrastructure_group': 'img/hardware.png',\n 'garden_group': 'img/hardware.png',\n 'alarm_group': 'img/hardware.png',\n 'script_group': 'img/script.png',\n 'logic_group': 'img/script.png',\n 'media_group': 'img/media.png',\n 'multimedia_group': 'img/media.png',\n 'communication_group': 'img/communication.png',\n 'protocols_group': 'img/communication.png',\n 'network_group': 'img/communication.png',\n 'messaging_group': 'img/communication.png',\n 'visualisation_group': 'img/visualisation.png',\n 'visualization_group': 'img/visualisation.png',\n 'visualization-icons_group': 'img/visualisation.png',\n 'visualization-widgets_group': 'img/visualisation.png',\n 'storage_group': 'img/storage.png',\n 'weather_group': 'img/weather.png',\n 'schedule_group': 'img/schedule.png',\n 'vis_group': 'img/vis.png',\n 'date-and-time_group': 'img/service.png',\n 'geoposition_group': 'img/service.png',\n 'utility_group': 'img/service.png',\n 'misc-data_group': 'img/service.png',\n 'service_group': 'img/service.png',\n 'third-party_group': 'img/service.png'\n };\n this.inited = false;\n\n this.isList = false;\n this.filterVals = {length: 0};\n this.onlyInstalled = false;\n this.onlyUpdatable = false;\n this.currentFilter = '';\n this.currentType = '';\n this.isCollapsed = {};\n this.isTiles = true;\n\n this.types = {\n occ: 'schedule'\n };\n\n function getVersionClass(version) {\n if (version) {\n var tmp = version.split ('.');\n if (tmp[0] === '0' && tmp[1] === '0' && tmp[2] === '0') {\n version = 'planned';\n } else if (tmp[0] === '0' && tmp[1] === '0') {\n version = 'alpha';\n } else if (tmp[0] === '0') {\n version = 'beta'\n } else if (version === 'npm error') {\n version = 'error';\n } else {\n version = 'stable';\n }\n }\n return version;\n }\n\n function prepareTable() {\n that.$grid.show();\n that.$tiles.html('').hide();\n that.$tab.find('#main-toolbar-table-types-btn').hide();\n\n if (!that.$grid.data('inited')) {\n that.$grid.data('inited', true);\n that.$grid.fancytree({\n extensions: ['table', 'gridnav', 'filter', 'themeroller'],\n checkbox: false,\n strings: {\n noData: _('No data')\n },\n table: {\n indentation: 5 // indent 20px per node level\n },\n show: function (currentId, filter, onSuccess) {\n that.sortTree();\n },\n source: that.tree,\n renderColumns: function(event, data) {\n var node = data.node;\n var $tdList = $(node.tr).find('>td');\n var obj = that.data[node.key];\n\n function ellipsis(txt) {\n return '
    ' + txt + '
    ';\n }\n\n if (!obj) {\n $tdList.eq(0).css({'font-weight': 'bold'});\n $tdList.eq(0).find('img').remove();\n $tdList.eq(0).find('span.fancytree-title').attr('style', 'padding-left: 0px !important');\n\n // Calculate total count of adapter and count of installed adapter\n for (var c = 0; c < that.tree.length; c++) {\n if (that.tree[c].key === node.key) {\n $tdList.eq(1).html(that.tree[c].desc || '').css({'overflow': 'hidden', 'white-space': 'nowrap', position: 'relative'});\n var installed = 0;\n for (var k = 0; k < that.tree[c].children.length; k++) {\n if (that.data[that.tree[c].children[k].key].installed) installed++;\n }\n that.tree[c].installed = installed;\n node.data.installed = installed;\n var title;\n //if (!that.onlyInstalled && !that.onlyUpdatable) {\n title = '[' + installed + ' / ' + that.tree[c].children.length + ']';\n $tdList.eq(1).html(ellipsis('' + installed + ' ' + _('of') + ' ' + that.tree[c].children.length + ' ' + _('Adapters from this Group installed')));\n break;\n }\n }\n return;\n }\n\n $tdList.eq(0).css({'overflow': 'hidden', 'white-space': 'nowrap'});\n\n function setHtml(no, html) {\n return $tdList.eq(no).html(ellipsis(html));\n }\n\n var idx = obj.desc.indexOf('= 0 ? obj.desc.substr(0, idx) : obj.desc;\n $tdList.eq(1).html(ellipsis(obj.desc))\n .attr('title', desc)\n .css({'white-space': 'nowrap', position: 'relative', 'font-weight': obj.bold ? 'bold' : null}).find('>div>div')\n .css('height: 22px !important')\n ;\n\n setHtml(2, obj.keywords).attr('title', obj.keywords);\n\n $tdList.eq(3).html(obj.installed);\n $tdList.eq(4).html(obj.version); //.css({ position: 'relative'});\n\n // setHtml(5, obj.platform);// actually there is only one platform\n setHtml(5, obj.license);\n setHtml(6, obj.install);\n\n that.initButtons(node.key);\n // If we render this element, that means it is expanded\n if (that.isCollapsed[obj.group]) {\n that.isCollapsed[obj.group] = false;\n that.main.saveConfig('adaptersIsCollapsed', JSON.stringify(that.isCollapsed));\n }\n },\n gridnav: {\n autofocusInput: false,\n handleCursorKeys: true\n },\n filter: {\n mode: 'hide',\n autoApply: true\n },\n collapse: function(event, data) {\n if (that.isCollapsed[data.node.key]) return;\n that.isCollapsed[data.node.key] = true;\n that.main.saveConfig('adaptersIsCollapsed', JSON.stringify(that.isCollapsed));\n }\n });\n\n that.$tab.find('#btn_collapse_adapters').show().off('click').on('click', function () {\n that.$tab.find('.process-adapters').show();\n setTimeout(function () {\n that.$grid.fancytree('getRootNode').visit(function (node) {\n if (!that.filterVals.length || node.match || node.subMatch) node.setExpanded(false);\n });\n that.$tab.find('.process-adapters').hide();\n }, 100);\n });\n\n that.$tab.find('#btn_expand_adapters').show().off('click').on('click', function () {\n that.$tab.find('.process-adapters').show();\n setTimeout(function () {\n that.$grid.fancytree('getRootNode').visit(function (node) {\n if (!that.filterVals.length || node.match || node.subMatch)\n node.setExpanded(true);\n });\n that.$tab.find('.process-adapters').hide();\n }, 100);\n });\n\n that.$tab.find('#btn_list_adapters').show().off('click').on('click', function () {\n var $processAdapters = that.$tab.find('.process-adapters');\n $processAdapters.show();\n that.isList = !that.isList;\n if (that.isList) {\n that.$tab.find('#btn_list_adapters').addClass('red lighten-3');\n that.$tab.find('#btn_expand_adapters').hide();\n that.$tab.find('#btn_collapse_adapters').hide();\n $(this).attr('title', _('list'));\n } else {\n that.$tab.find('#btn_list_adapters').removeClass('red lighten-3');\n that.$tab.find('#btn_expand_adapters').show();\n that.$tab.find('#btn_collapse_adapters').show();\n $(this).attr('title', _('tree'));\n }\n that.main.saveConfig('adaptersIsList', that.isList);\n $processAdapters.show();\n\n setTimeout(function () {\n that._postInit(true);\n $processAdapters.hide();\n }, 200);\n });\n } else {\n that.$tab.find('#btn_collapse_adapters').show();\n that.$tab.find('#btn_expand_adapters').show();\n that.$tab.find('#btn_list_adapters').show();\n }\n\n if (that.isList) {\n that.$tab.find('#btn_list_adapters').addClass('red lighten-3').attr('title', _('tree'));\n that.$tab.find('#btn_expand_adapters').hide();\n that.$tab.find('#btn_collapse_adapters').hide();\n } else {\n that.$tab.find('#btn_list_adapters').removeClass('red lighten-3').attr('title', _('list'));\n that.$tab.find('#btn_expand_adapters').show();\n that.$tab.find('#btn_collapse_adapters').show();\n }\n\n that.$tab.find('.filter-input').trigger('change');\n }\n\n function prepareTiles() {\n that.$grid.hide();\n that.$tiles.show();\n that.$tab.find('#main-toolbar-table-types-btn').show();\n that.$tab.find('#btn_list_adapters').hide();\n that.$tab.find('#btn_collapse_adapters').hide();\n that.$tab.find('#btn_expand_adapters').hide();\n that.$tab.find('.filter-input').trigger('change');\n }\n\n function onOnlyUpdatableChanged() {\n if (that.onlyUpdatable) {\n that.$tab.find('#btn_filter_updates').addClass('red lighten-3');\n that.$tab.find('#btn_upgrade_all').show();\n } else {\n that.$tab.find('#btn_upgrade_all').hide();\n that.$tab.find('#btn_filter_updates').removeClass('red lighten-3');\n }\n }\n\n function onExpertmodeChanged() {\n if (that.main.config.expertMode) {\n that.$tab.find('#btn_adapters_expert_mode').addClass('red lighten-3');\n that.$tab.find('#btn_upgrade_all').show();\n } else {\n that.$tab.find('#btn_adapters_expert_mode').removeClass('red lighten-3');\n onOnlyUpdatableChanged();\n }\n }\n\n function filterTiles() {\n var anyVisible = false;\n // filter\n if (that.currentFilter) {\n that.$tiles.find('.tile').each(function () {\n var $this = $(this);\n if (that.currentType && !$this.hasClass('class-' + that.currentType)) {\n $this.hide();\n return;\n }\n\n if (customFilter({key: $this.data('id')})) {\n anyVisible = true;\n $this.show();\n } else {\n $this.hide();\n }\n });\n } else {\n if (!that.currentType) {\n that.$tiles.find('.tile')\n .show()\n .each(function () {\n if ($(this).is(':visible')) {\n anyVisible = true;\n return false;\n }\n });\n } else {\n that.$tiles.find('.tile').hide();\n that.$tiles.find('.class-' + that.currentType).show();\n that.$tiles.find('.tile').each(function () {\n if ($(this).is(':visible')) {\n anyVisible = true;\n return false;\n }\n });\n }\n }\n\n if (anyVisible) {\n that.$tiles.find('.filtered-out').hide();\n } else {\n that.$tiles.find('.filtered-out').show();\n }\n }\n\n this.prepare = function () {\n this.$tab.find('#btn_switch_adapters').off('click').on('click', function () {\n that.$tab.find('.process-adapters').show();\n that.isTiles = !that.isTiles;\n\n if (that.isTiles) {\n that.$tab.removeClass('view-table').addClass('view-tiles');\n $(this).find('i').text('view_list');\n } else {\n $(this).find('i').text('view_module');\n that.$tab.removeClass('view-tiles').addClass('view-table');\n }\n\n that.main.saveConfig('adaptersIsTiles', that.isTiles);\n\n setTimeout(function () {\n if (that.isTiles) {\n prepareTiles();\n } else {\n prepareTable();\n }\n that._postInit(true);\n that.$tab.find('.process-adapters').hide();\n }, 50);\n });\n\n this.$tab.find('#btn_filter_adapters').off('click').on('click', function () {\n that.$tab.find('.process-adapters').show();\n that.onlyInstalled = !that.onlyInstalled;\n if (that.onlyInstalled) {\n that.$tab.find('#btn_filter_adapters').addClass('red lighten-3');\n } else {\n that.$tab.find('#btn_filter_adapters').removeClass('red lighten-3');\n }\n that.main.saveConfig('adaptersOnlyInstalled', that.onlyInstalled);\n\n setTimeout(function () {\n that._postInit(true);\n that.$tab.find('.process-adapters').hide();\n }, 50);\n });\n\n this.$tab.find('#btn_filter_updates').off('click').on('click', function () {\n that.$tab.find('.process-adapters').show();\n that.onlyUpdatable = !that.onlyUpdatable;\n onOnlyUpdatableChanged();\n\n that.main.saveConfig('adaptersOnlyUpdatable', that.onlyUpdatable);\n\n setTimeout(function () {\n that._postInit(true);\n that.$tab.find('.process-adapters').hide();\n }, 200);\n });\n\n this.$tab.find('#btn_filter_custom_url')\n .off('click')\n .on('click', function () {\n // prepare adapters\n var text = '';\n var order = [];\n var url;\n for (url in that.urls) {\n if (that.urls.hasOwnProperty(url)) {\n order.push(url);\n }\n }\n order.sort();\n\n for (var o = 0; o < order.length; o++) {\n var user = that.urls[order[o]].match(/\\.com\\/([-_$§A-Za-z0-9]+)\\/([-._$§A-Za-z0-9]+)\\//);\n if (user && user.length >= 2 && (that.main.config.expertMode || order[o].indexOf('js-controller') === -1)) {\n text += '';\n }\n }\n that.$installDialog.find('#install-github-link').html(text).val(that.main.config.adaptersGithub || '');\n\n that.$installDialog.modal();\n\n that.$installDialog.find('.btn-install').off('click').on('click', function () {\n var isCustom = !that.$installDialog.find('a[href=\"#tabs-install-github\"]').hasClass('active');//!!that.$installDialog.find('#tabs-install').tabs('option', 'active');\n var url;\n var debug;\n var adapter;\n if (isCustom) {\n url = that.$installDialog.find('#install-url-link').val();\n debug = that.$installDialog.find('#install-url-debug').prop('checked') ? ' --debug' : '';\n adapter = '';\n } else {\n var parts = that.$installDialog.find('#install-github-link').val().split(' ');\n url = parts[0];\n debug = that.$installDialog.find('#install-github-debug').prop('checked') ? ' --debug' : '';\n adapter = ' ' + parts[1];\n }\n\n if (!url) {\n that.main.showError(_('Invalid link'));\n return;\n }\n\n that.main.cmdExec(null, 'url \"' + url + '\"' + adapter + debug, function (exitCode) {\n if (!exitCode) {\n that.init(true, true);\n }\n });\n });\n that.$installDialog.find('#install-github-link').select();\n // workaround for materialize checkbox problem\n that.$installDialog.find('input[type=\"checkbox\"]+span').off('click').on('click', function () {\n var $input = $(this).prev();\n if (!$input.prop('disabled')) {\n $input.prop('checked', !$input.prop('checked')).trigger('change');\n }\n });\n that.$installDialog.modal('open');\n that.$installDialog.find('.tabs').mtabs({\n nShow: function (tab) {\n if (!tab) return;\n that.main.saveConfig('adaptersInstallTab', $(tab).attr('id'));\n }\n });\n\n if (that.main.config.adaptersInstallTab && !that.main.noSelect) {\n that.$installDialog.find('.tabs').mtabs('select', that.main.config.adaptersInstallTab);\n }\n });\n\n this.$tab.find('#btn_upgrade_all').off('click').on('click', function () {\n that.main.confirmMessage(_('Do you want to upgrade all adapters?'), _('Please confirm'), 'help', function (result) {\n if (result) {\n that.main.cmdExec(null, 'upgrade', function (exitCode) {\n if (!exitCode) that._postInit(true);\n });\n }\n });\n });\n\n this.$tab.find('#btn_adapters_expert_mode').on('click', function () {\n that.main.config.expertMode = !that.main.config.expertMode;\n that.main.saveConfig('expertMode', that.main.config.expertMode);\n that.updateExpertMode();\n that.main.tabs.instances.updateExpertMode();\n });\n\n if (that.main.config.expertMode) {\n that.$tab.find('#btn_adapters_expert_mode').addClass('red lighten-3');\n }\n\n // save last selected adapter\n this.$installDialog.find('#install-github-link').on('change', function () {\n that.main.saveConfig('adaptersGithub', $(this).val());\n });\n this.$installDialog.find('#install-url-link').on('keyup', function (event) {\n if (event.which === 13) {\n that.$installDialog.find('#dialog-install-url-button').trigger('click');\n }\n });\n\n // Load settings\n this.isTiles = (this.main.config.adaptersIsTiles !== undefined && this.main.config.adaptersIsTiles !== null) ? this.main.config.adaptersIsTiles : true;\n this.isList = this.main.config.adaptersIsList || false;\n this.onlyInstalled = this.main.config.adaptersOnlyInstalled || false;\n this.onlyUpdatable = this.main.config.adaptersOnlyUpdatable || false;\n this.currentFilter = this.main.config.adaptersCurrentFilter || '';\n this.currentType = this.main.config.adaptersCurrentType || '';\n this.currentOrder = this.main.config.adaptersCurrentOrder || 'a-z';\n this.isCollapsed = this.main.config.adaptersIsCollapsed ? JSON.parse(this.main.config.adaptersIsCollapsed) : {};\n if (this.currentFilter) {\n this.$tab.find('.filter-input').addClass('input-not-empty').val(that.currentFilter);\n this.$tab.find('.filter-clear').show();\n } else {\n this.$tab.find('.filter-clear').hide();\n }\n\n if (this.onlyInstalled) {\n this.$tab.find('#btn_filter_adapters').addClass('red lighten-3');\n } else {\n this.$tab.find('#btn_filter_adapters').removeClass('red lighten-3');\n }\n\n if (this.onlyUpdatable) {\n this.$tab.find('#btn_filter_updates').addClass('red lighten-3');\n } else {\n this.$tab.find('#btn_filter_updates').removeClass('red lighten-3');\n }\n\n // fix for IE\n if (this.main.browser === 'ie' && this.main.browserVersion <= 10) {\n this.isTiles = false;\n this.$tab.find('#btn_switch_adapters').hide();\n }\n\n onExpertmodeChanged();\n\n this.$tab.find('#btn_refresh_adapters').on('click', function () {\n that.init(true, true);\n });\n\n // add filter processing\n this.$tab.find('.filter-input').on('keyup', function () {\n $(this).trigger('change');\n }).on('change', function (event) {\n if (that.filterTimer) {\n clearTimeout(that.filterTimer);\n }\n that.filterTimer = setTimeout(function () {\n that.filterTimer = null;\n that.currentFilter = that.$tab.find('.filter-input').val().toLowerCase();\n event && event.target && $(event.target)[that.currentFilter ? 'addClass' : 'removeClass']('input-not-empty');\n if (that.currentFilter) {\n that.$tab.find('.filter-clear').show();\n } else {\n that.$tab.find('.filter-clear').hide();\n }\n\n that.main.saveConfig('adaptersCurrentFilter', that.currentFilter);\n if (that.isTiles) {\n filterTiles();\n } else {\n that.$grid.fancytree('getTree').filterNodes(customFilter, false);\n }\n }, 400);\n });\n\n this.$tab.find('.filter-clear').on('click', function () {\n that.$tab.find('.filter-input').val('').trigger('change');\n });\n\n if (this.isTiles) {\n this.$tab.find('#btn_switch_adapters').find('i').text('view_list');\n that.$tab.removeClass('view-table').addClass('view-tiles');\n prepareTiles();\n } else {\n that.$tab.removeClass('view-tiles').addClass('view-table');\n prepareTable();\n }\n };\n\n this.updateExpertMode = function () {\n this.init(true);\n onExpertmodeChanged();\n };\n\n function customFilter(node) {\n //if (node.parent && node.parent.match) return true;\n\n if (that.currentFilter) {\n if (!that.data[node.key]) return false;\n\n var title = that.data[node.key].title;\n if (title && typeof title === 'object') {\n title = title[systemLang] || title.en;\n }\n var desc = that.data[node.key].desc;\n if (desc && typeof desc === 'object') {\n desc = desc[systemLang] || desc.en;\n }\n\n if ((that.data[node.key].name && that.data[node.key].name.toLowerCase().indexOf(that.currentFilter) !== -1) ||\n (title && title.toLowerCase().indexOf(that.currentFilter) !== -1) ||\n (that.data[node.key].keywords && that.data[node.key].keywords.toLowerCase().indexOf(that.currentFilter) !== -1) ||\n (desc && desc.toLowerCase().indexOf(that.currentFilter) !== -1)){\n return true;\n } else {\n return false;\n }\n } else {\n return true;\n }\n }\n\n this.getAdaptersInfo = function (host, update, updateRepo, callback) {\n if (!host) return;\n\n if (!callback) throw 'Callback cannot be null or undefined';\n if (update) {\n // Do not update too often\n if (!this.curRepoLastUpdate || ((new Date()).getTime() - this.curRepoLastUpdate > 1000)) {\n this.curRepository = null;\n this.curInstalled = null;\n }\n }\n\n if (this.curRunning) {\n this.curRunning.push(callback);\n return;\n }\n\n if (!this.curRepository || this.curRepoLastHost !== host) {\n this.curRepository = null;\n this.main.socket.emit('sendToHost', host, 'getRepository', {repo: this.main.systemConfig.common.activeRepo, update: updateRepo}, function (_repository) {\n if (_repository === 'permissionError') {\n console.error('May not read \"getRepository\"');\n _repository = {};\n }\n\n that.curRepository = _repository || {};\n if (that.curRepository && that.curInstalled && that.curRunning) {\n that.curRepoLastUpdate = (new Date()).getTime();\n setTimeout(function () {\n for (var c = 0; c < that.curRunning.length; c++) {\n that.curRunning[c](that.curRepository, that.curInstalled);\n }\n that.curRunning = null;\n }, 0);\n }\n });\n }\n if (!this.curInstalled || this.curRepoLastHost !== host) {\n this.curInstalled = null;\n this.main.socket.emit('sendToHost', host, 'getInstalled', null, function (_installed) {\n if (_installed === 'permissionError') {\n console.error('May not read \"getInstalled\"');\n _installed = {};\n }\n\n that.curInstalled = _installed || {};\n if (that.curRepository && that.curInstalled) {\n that.curRepoLastUpdate = (new Date()).getTime();\n setTimeout(function () {\n for (var c = 0; c < that.curRunning.length; c++) {\n that.curRunning[c](that.curRepository, that.curInstalled);\n }\n that.curRunning = null;\n }, 0);\n }\n });\n }\n\n this.curRepoLastHost = host;\n\n if (this.curInstalled && this.curRepository) {\n setTimeout(function () {\n if (that.curRunning) {\n for (var c = 0; c < that.curRunning.length; c++) {\n that.curRunning[c](that.curRepository, that.curInstalled);\n }\n that.curRunning = null;\n }\n if (callback) callback(that.curRepository, that.curInstalled);\n }, 0);\n } else {\n this.curRunning = [callback];\n }\n };\n\n this.enableColResize = function () {\n if (!$.fn.colResizable) return;\n if (this.$grid.is(':visible')) {\n this.$grid.colResizable({liveDrag: true});\n }\n };\n\n function getNews(actualVersion, adapter) {\n var text = '';\n if (adapter.news) {\n for (var v in adapter.news) {\n if (adapter.news.hasOwnProperty(v)) {\n if (systemLang === v) text += (text ? '\\n' : '') + adapter.news[v];\n if (v === 'en' || v === 'ru' || v === 'de') continue;\n if (v === actualVersion) break;\n text += (text ? '\\n' : '') + (adapter.news[v][systemLang] || adapter.news[v].en);\n }\n }\n }\n return text;\n }\n\n function checkDependencies(dependencies) {\n if (!dependencies) return '';\n // like [{\"js-controller\": \">=0.10.1\"}]\n var adapters;\n if (dependencies instanceof Array) {\n adapters = {};\n for (var a = 0; a < dependencies.length; a++) {\n if (typeof dependencies[a] === 'string') continue;\n for (var b in dependencies[a]) {\n if (dependencies[a].hasOwnProperty(b)) {\n adapters[b] = dependencies[a][b];\n }\n }\n }\n } else {\n adapters = dependencies;\n }\n\n for (var adapter in adapters) {\n if (adapters.hasOwnProperty(adapter)) {\n if (adapter === 'js-controller') {\n if (!semver.satisfies(that.main.objects['system.host.' + that.main.currentHost].common.installedVersion, adapters[adapter])) return _('Invalid version of %s. Required %s', adapter, adapters[adapter]);\n } else {\n if (!that.main.objects['system.adapter.' + adapter] || !that.main.objects['system.adapter.' + adapter].common || !that.main.objects['system.adapter.' + adapter].common.installedVersion) return _('No version of %s', adapter);\n if (!semver.satisfies(that.main.objects['system.adapter.' + adapter].common.installedVersion, adapters[adapter])) return _('Invalid version of %s', adapter);\n }\n }\n }\n return '';\n }\n\n this.sortTree = function() {\n function sort(c1, c2) {\n //var d1 = that.data[c1.key], d2 = that.data[c1.key];\n var inst1 = c1.data.installed || 0, inst2 = c2.data.installed || 0;\n var ret = inst2 - inst1;\n if (ret) return ret;\n var t1 = c1.titleLang || c1.title || '';\n if (typeof t1 === 'object') {\n t1 = t1[systemLang] || t1.en;\n }\n var t2 = c2.titleLang || c2.title || '';\n if (typeof t2 === 'object') {\n t2 = t2[systemLang] || t2.en;\n }\n\n t1 = t1.toLowerCase();\n t2 = t2.toLowerCase();\n if (t1 > t2) return 1;\n if (t1 < t2) return -1;\n return 0;\n }\n that.$grid.fancytree('getRootNode').sortChildren(sort, true);\n };\n\n function getInterval(time, todayText, yesterdayText, x1DayAgoText, x2DaysAgoText, x5DaysAgoText, now) {\n now = now || Date.now();\n if (!time) return '';\n if (typeof time === 'string' || typeof time === 'number') {\n time = new Date(time);\n }\n var interval = now.getTime() - time.getTime();\n var days = Math.floor(interval / (24 * 3600000));\n if (days === 0) {\n if (now.getDate() === time.getDate()) {\n return todayText;\n } else {\n return yesterdayText;\n }\n } else if (days === 1) {\n if (now.getDate() - time.getDate() === 1) {\n return yesterdayText;\n } else {\n return x2DaysAgoText.replace('%d', days + 1);\n }\n } else {\n var t = days % 10;\n var tt = days % 100;\n // 2, 3, 4, 22, 23, 24, 32, 33, 34, 111, ...x2, x3, h4\n if ((tt < 10 || tt > 20) && t >= 2 && t <= 4) {\n return x2DaysAgoText.replace('%d', days);\n } else\n // 1, 21, 31, 41, 121....\n if ((tt < 10 || tt > 20) && t === 1) {\n return x1DayAgoText.replace('%d', days);\n } else {\n return x5DaysAgoText.replace('%d', days);\n }\n }\n }\n\n this._postInit = function (update, updateRepo) {\n if (typeof this.$grid !== 'undefined') {\n\n that.$tab.find('.process-adapters').show();\n\n this.$grid.find('tbody').html('');\n\n this.getAdaptersInfo(this.main.currentHost, update, updateRepo, function (repository, installedList) {\n var obj;\n var version;\n var rawVersion;\n var adapter;\n var adaptersToUpdate = 0;\n\n var listInstalled = [];\n var listNonInstalled = [];\n var nowObj = new Date();\n var localTexts = {\n 'add instance': _('add instance'),\n 'update': _('update'),\n 'upload': _('upload'),\n 'Available version:': _('Available version:'),\n 'Active instances': _('Active instances'),\n 'Installed version': _('Installed version'),\n 'readme': _('readme'),\n 'delete adapter': _('delete adapter'),\n 'install specific version': _('install specific version'),\n 'all': _('all'),\n 'Last update': _('Last update'),\n 'Installations counter': _('Installation counter'),\n 'today': _('today'),\n 'yesterday': _('yesterday'),\n '1 %d days ago': _('1 %d days ago'),\n '2 %d days ago': _('2 %d days ago'),\n '5 %d days ago': _('5 %d days ago')\n };\n\n if (installedList) {\n for (adapter in installedList) {\n if (!installedList.hasOwnProperty(adapter)) continue;\n obj = installedList[adapter];\n if (!obj || obj.controller || adapter === 'hosts') continue;\n listInstalled.push(adapter);\n }\n listInstalled.sort();\n }\n\n that.urls = {};\n // List of adapters for repository\n for (adapter in repository) {\n if (!repository.hasOwnProperty(adapter)) continue;\n if (installedList && installedList[adapter] && !installedList[adapter].versionDate) {\n installedList[adapter].versionDate = repository[adapter].versionDate;\n }\n\n // it is not possible to install this adapter from git\n if (!repository[adapter].nogit) {\n that.urls[adapter] = repository[adapter].meta;\n }\n obj = repository[adapter];\n if (!obj || obj.controller) continue;\n version = '';\n if (installedList && installedList[adapter]) continue;\n listNonInstalled.push(adapter);\n }\n listNonInstalled.sort();\n\n function getVersionString(version, updatable, news, updatableError) {\n //var span = getVersionSpan(version);\n var color = getVersionClass(version);\n var title = color + '\\n\\r' + (news || '');\n //version = '
    ',!E&&i.colors&&s[O].color&&(e+='
    '),!E&&i.icons&&(e+=ne(i.objects[s[O].id],i.imgPath)||'
     
    '),"enabled"===z)e+='";else if("groups"===z)for(var x=0;x'+ne(i.objects[$],null,"")+s[O].groups[x].name+""}else if("instance"===z)if(void 0!==s[O].instance&&1';for(var Y=0;Y"+r[Y]+"";e+=k+=""}else e+=""+(void 0===s[O].instance?"":s[O].instance)+"";else if("icon"===z)e+=ne(i.objects[s[O].id],i.imgPath);else{var R=s[O][z]||"";R&&"object"==typeof R&&R.en&&(R=R[systemLang]||R.en),e+=""+R+""}e+="
    ';for(var Q="",U=0;U ':(Q+="<"+t+' data-id="'+s[O].id+'" class="select-button-'+U+' select-button-custom td-button" style="margin-right: 3px;" data-parent="'+s[O].parent+'" data-children="'+!!s[O].realChildren+'" title="'+(i.buttons[U].title||"")+'">',window.M&&window.M.toast&&(Q+=''+(i.buttons[U].icon||"")+""),Q+="");e+=Q+"
    ' +\n version = //'
    ' +\n '
    ' +\n '' +\n '' +\n '
    ' + version + '';\n if (updatable) { //xxx\n version += '';\n }\n version += '
    ';\n return version;\n }\n\n that.tree = [];\n that.data = {};\n\n // list of the installed adapters\n for (var i = 0; i < listInstalled.length; i++) {\n adapter = listInstalled[i];\n\n obj = installedList ? installedList[adapter] : null;\n\n if (!obj || obj.controller || adapter === 'hosts') continue;\n var installed = '';\n var rawInstalled = '';\n var icon = obj.icon;\n version = '';\n\n if (repository[adapter] && repository[adapter].version) version = repository[adapter].version;\n\n if (repository[adapter] && repository[adapter].extIcon) icon = repository[adapter].extIcon;\n\n var _instances = 0;\n var _enabled = 0;\n if (obj.version) {\n var news = '';\n var updatable = false;\n var updatableError = '';\n if (!that.main.upToDate(version, obj.version)) {\n news = getNews(obj.version, repository[adapter]);\n // check if version is compatible with current adapters and js-controller\n updatable = true;\n updatableError = checkDependencies(repository[adapter].dependencies);\n adaptersToUpdate++;\n }\n // TODO: move style to class\n installed = '' +\n '';\n\n // Show information about installed and enabled instances\n for (var z = 0; z < that.main.instances.length; z++) {\n if (that.main.objects[that.main.instances[z]] &&\n that.main.objects[that.main.instances[z]].common.name === adapter) {\n _instances++;\n if (that.main.objects[that.main.instances[z]].common.enabled) _enabled++;\n }\n }\n\n\n if (_instances) {\n // TODO: move style to class\n installed += '';\n } else {\n // TODO: move style to class\n installed += '';\n }\n // TODO: move style to class\n installed += '';\n rawInstalled = '' + obj.version + '';\n\n //tmp = installed.split('.');\n // if (updatable) { //xxx\n // //TODO\n // // installed += '';\n // // version = version.replace('class=\"', 'class=\"updateReady ');\n // // $('a[href=\"#tab-adapters\"]').addClass('updateReady');\n // } else if (that.onlyUpdatable) {\n // continue;\n // }\n\n installed += '
    ';\n if (_enabled !== _instances) {\n installed += '' + _instances + '';\n if (_enabled) installed += ' ~ ';\n }\n if (_enabled) installed += '' + _enabled + '';\n installed += '' + obj.version + '
    ';\n if (!updatable && that.onlyUpdatable) continue;\n }\n rawVersion = version;\n version = getVersionString(version, updatable, news, updatableError);\n\n var group = (obj.type || that.types[adapter] || 'common adapters') + '_group';\n var desc = (typeof obj.desc === 'object') ? (obj.desc[systemLang] || obj.desc.en) : obj.desc;\n desc = desc || '';\n desc += showUploadProgress(group, adapter, that.main.states['system.adapter.' + adapter + '.upload'] ? that.main.states['system.adapter.' + adapter + '.upload'].val : 0);\n var title = obj.titleLang || obj.title;\n title = (typeof title === 'object') ? (title[systemLang] || title.en) : title;\n\n that.data[adapter] = {\n image: icon ? '' : '',\n icon: icon || '',\n stat: repository[adapter] ? repository[adapter].stat : 0,\n name: adapter,\n title: (title || '').replace('yunkong2 Visualisation - ', ''),\n desc: desc,\n news: news,\n updatableError: updatableError,\n keywords: obj.keywords ? obj.keywords.join(' ') : '',\n version: version,\n installed: installed,\n rawVersion: rawVersion,\n instances: _instances,\n rawInstalled: rawInstalled,\n versionDate: obj.versionDate,\n updatable: updatable,\n bold: obj.highlight || false,\n install: '' +\n '' +\n ((that.main.config.expertMode) ? '' : '') +\n '' +\n ((that.main.config.expertMode) ? '' : ''),\n // platform: obj.platform, actually there is only one platform\n group: group,\n license: obj.license || '',\n licenseUrl: obj.licenseUrl || ''\n };\n\n if (!obj.type) console.log('\"' + adapter + '\": \"common adapters\",');\n if (obj.type && that.types[adapter]) console.log('Adapter \"' + adapter + '\" has own type. Remove from admin.');\n\n if (!that.isList) {\n var iGroup = -1;\n for (var jj = 0; jj < that.tree.length; jj++) {\n if (that.tree[jj].key === that.data[adapter].group) {\n iGroup = jj;\n break;\n }\n }\n if (iGroup < 0) {\n if (!localTexts[that.data[adapter].group]) localTexts[that.data[adapter].group] = _(that.data[adapter].group);\n that.tree.push({\n title: localTexts[that.data[adapter].group],\n desc: showUploadProgress(group),\n key: that.data[adapter].group,\n folder: true,\n expanded: !that.isCollapsed[that.data[adapter].group],\n children: [],\n icon: that.groupImages[that.data[adapter].group]\n });\n iGroup = that.tree.length - 1;\n }\n that.tree[iGroup].children.push({\n icon: icon,\n title: that.data[adapter].title || adapter,\n key: adapter\n });\n } else {\n that.tree.push({\n icon: icon,\n title: that.data[adapter].title || adapter,\n key: adapter\n });\n }\n }\n //that.sortTree();\n\n if (!that.onlyInstalled && !that.onlyUpdatable) {\n for (i = 0; i < listNonInstalled.length; i++) {\n adapter = listNonInstalled[i];\n\n obj = repository[adapter];\n if (!obj || obj.controller) continue;\n version = '';\n if (installedList && installedList[adapter]) continue;\n\n if (obj && obj.version) {\n version = obj.version;\n rawVersion = version;\n version = getVersionString(version);\n }\n\n var group = (obj.type || that.types[adapter] || 'common adapters') + '_group';\n var desc = (typeof obj.desc === 'object') ? (obj.desc[systemLang] || obj.desc.en) : obj.desc;\n desc = desc || '';\n desc += showUploadProgress(group, adapter, that.main.states['system.adapter.' + adapter + '.upload'] ? that.main.states['system.adapter.' + adapter + '.upload'].val : 0);\n\n title = obj.titleLang || obj.title;\n title = (typeof title === 'object') ? (title[systemLang] || title.en) : title;\n\n that.data[adapter] = {\n image: obj.extIcon ? '' : '',\n icon: obj.extIcon,\n stat: obj.stat,\n name: adapter,\n title: (title || '').replace('yunkong2 Visualisation - ', ''),\n desc: desc,\n keywords: obj.keywords ? obj.keywords.join(' ') : '',\n rawVersion: rawVersion,\n version: version,\n bold: obj.highlight,\n installed: '',\n versionDate: obj.versionDate,\n install: '' +\n '' +\n '' +\n ((that.main.config.expertMode) ? '' : ''),\n // TODO do not show adapters not for this platform\n // platform: obj.platform, // actually there is only one platform\n license: obj.license || '',\n licenseUrl: obj.licenseUrl || '',\n group: group\n };\n\n if (!obj.type) console.log('\"' + adapter + '\": \"common adapters\",');\n if (obj.type && that.types[adapter]) console.log('Adapter \"' + adapter + '\" has own type. Remove from admin.');\n\n if (!that.isList) {\n var igroup = -1;\n for (var j = 0; j < that.tree.length; j++){\n if (that.tree[j].key === that.data[adapter].group) {\n igroup = j;\n break;\n }\n }\n if (igroup < 0) {\n if (!localTexts[that.data[adapter].group]) localTexts[that.data[adapter].group] = _(that.data[adapter].group);\n that.tree.push({\n title: localTexts[that.data[adapter].group],\n key: that.data[adapter].group,\n folder: true,\n expanded: !that.isCollapsed[that.data[adapter].group],\n children: [],\n icon: that.groupImages[that.data[adapter].group]\n });\n igroup = that.tree.length - 1;\n }\n that.tree[igroup].children.push({\n title: that.data[adapter].title || adapter,\n icon: obj.extIcon,\n desc: showUploadProgress(group),\n key: adapter\n });\n } else {\n that.tree.push({\n icon: obj.extIcon,\n title: that.data[adapter].title || adapter,\n key: adapter\n });\n }\n }\n }\n\n if (that.currentOrder === 'popular' || that.currentOrder === 'updated') {\n var akeys = Object.keys(that.data);\n\n if (that.currentOrder === 'popular') {\n akeys.sort(function (a, b) {\n if (that.data[a].stat > that.data[b].stat) return -1;\n if (that.data[a].stat < that.data[b].stat) return 1;\n return 0;\n });\n } else if (that.currentOrder === 'updated') {\n akeys.sort(function (a, b) {\n if (that.data[a].versionDate && !that.data[b].versionDate) return -1;\n if (!that.data[a].versionDate && that.data[b].versionDate) return 1;\n if (that.data[a].versionDate > that.data[b].versionDate) return -1;\n if (that.data[a].versionDate < that.data[b].versionDate) return 1;\n if (a > b) return -1;\n if (a < b) return 1;\n return 0;\n });\n }\n var newData = {};\n for (var u = 0; u < akeys.length; u++) {\n newData[akeys[u]] = that.data[akeys[u]];\n }\n that.data = newData;\n }\n\n // build tiles\n if (that.isTiles && (that.main.browser !== 'ie' || that.main.browserVersion > 10)) {\n var text = '';\n var types = [];\n for (var a in that.data) {\n if (!that.data.hasOwnProperty(a)) continue;\n var ad = that.data[a];\n if (types.indexOf(ad.group) === -1) {\n types.push(ad.group);\n }\n// text += '
    ';\n// text += '
    ';\n// text += '
    ' + ad.title + '
    ';\n// if (that.currentOrder === 'popular' && ad.stat) {\n// text += '
    ' + ad.stat + '
    ';\n// } else if (that.currentOrder === 'updated' && ad.versionDate) {\n// text += '
    ' + getInterval(ad.versionDate, localTexts['today'], localTexts['yesterday'], localTexts['1 %d days ago'], localTexts['2 %d days ago'], localTexts['5 %d days ago'], nowObj) + '
    ';\n// }\n// text += '
    ';\n// text += '
    ';\n// text += ' ';\n// text += '
    ' + ad.desc + '
    ';\n// text += '
    ';\n// text += '
    ';\n// text += '
    ' + ad.version + (ad.installed ? '' + ad.rawInstalled : '') + '
    ';\n// text += '
    ' + ad.install + '
    ';\n// text += '
    ';\n// text += '
    ';\n\n text += '
    ';\n text += '
    ';\n text += '
    ';\n text += '
    ';\n text += ' ';\n text += ' ' + ad.title + '';\n text += ' more_vert';\n text += '
      ';\n text += '
    • ' + localTexts['Available version:'] + ' ' + ad.rawVersion + '' +\n (ad.updatable ? '' : '') +\n '
    • ';\n if (ad.installed) {\n text += '
    • ' + localTexts['Installed version'] + ': '+ ad.rawInstalled + '
    • ';\n }\n if (ad.instances) {\n text += '
    • ' + _('Installed instances') + ': ' + ad.instances + '
    • ';\n }\n text += '
    ';\n text += '
    ';\n text += '
    ';\n text += '
    ';\n text += ' close';\n text += '

    ' + ad.desc + '

    ';\n text += '
    ';\n text += ad.install;\n text += '
    ';\n text += '
    ';\n\n if (that.currentOrder === 'popular' && ad.stat) {\n text += '
    ' + ad.stat + '
    ';\n } else if (that.currentOrder === 'updated' && ad.versionDate) {\n text += '
    ' + getInterval(ad.versionDate, localTexts['today'], localTexts['yesterday'], localTexts['1 %d days ago'], localTexts['2 %d days ago'], localTexts['5 %d days ago'], nowObj) + '
    ';\n }\n\n\n text += '
    ';\n text += '
    ';\n }\n\n\n // Add filtered out tile\n text += '
    ';\n text += '
    ';\n text += '
    ';\n text += '
    ';\n //text += ' ';\n text += ' ' + _('Filtered out') + '';\n text += '
    ';\n text += '
    ';\n text += '
    ';\n text += '
    ';\n\n that.$tiles.html(text);\n // init buttons\n for (var b in that.data) {\n if (that.data.hasOwnProperty(b)) {\n that.initButtons(b);\n }\n }\n\n var tTypes = '
  • ' + localTexts['all'] + '
  • \\n';\n for (var g = 0; g < types.length; g++) {\n tTypes += '
  • ' + _(types[g]) + '
  • \\n';\n }\n var $types = that.$tab.find('#main-toolbar-table-types');\n $types.html(tTypes);\n $types.find('.main-toolbar-table-types-item').show().off('click').on('click', function () {\n that.currentType = $(this).data('type') || '';\n filterTiles();\n that.$tab.find('#main-toolbar-table-types-btn').html(_(that.currentType || 'all'));\n that.main.saveConfig('adaptersCurrentType', that.currentType);\n });\n if (that.currentType && !localTexts[that.currentType]) localTexts[that.currentType] = _(that.currentType);\n that.$tab.find('#main-toolbar-table-types-btn').html(localTexts[that.currentType || 'all']).dropdown({\n constrainWidth: false, // Does not change width of dropdown to that of the activator\n // hover: true, // Activate on hover\n gutter: 0\n });\n\n $types = that.$tab.find('#main-toolbar-table-order');\n $types.find('.main-toolbar-table-order-item').off('click').on('click', function () {\n that.currentOrder = $(this).data('type') || '';\n //filterTiles();\n that.$tab.find('#main-toolbar-table-order-btn').html(_(that.currentOrder || 'a-z'));\n that.main.saveConfig('adaptersCurrentOrder', that.currentOrder);\n that._postInit();\n });\n if (that.currentOrder && !localTexts[that.currentOrder]) localTexts[that.currentOrder] = _(that.currentOrder);\n that.$tab.find('#main-toolbar-table-order-btn').show().html(localTexts[that.currentOrder || 'a-z']).dropdown({\n constrainWidth: false, // Does not change width of dropdown to that of the activator\n // hover: true, // Activate on hover\n gutter: 0\n });\n\n filterTiles();\n } else {\n that.$tab.find('#main-toolbar-table-types-btn').hide();\n that.$tab.find('#main-toolbar-table-order-btn').hide();\n // build tree\n that.$grid.fancytree('getTree').reload(that.tree);\n that.$grid.find('.fancytree-icon').each(function () {\n if ($(this).attr('src')) {\n $(this).css({width: 18, height: 18});\n }\n\n $(this).on('hover', function () {\n var text = '
    ';\n var $big = $(text);\n $big.insertAfter($(this));\n $(this).data('big', $big[0]);\n var h = parseFloat($big.height());\n var top = Math.round($(this).position().top - ((h - parseFloat($(this).height())) / 2));\n if (h + top > (window.innerHeight || document.documentElement.clientHeight)) {\n top = (window.innerHeight || document.documentElement.clientHeight) - h;\n }\n $big.css({top: top});\n\n }, function () {\n var big = $(this).data('big');\n $(big).remove();\n $(this).data('big', undefined);\n });\n });\n\n if (that.currentFilter) {\n that.$grid.fancytree('getTree').filterNodes(customFilter, false);\n }\n\n that.sortTree();\n that.enableColResize();\n var classes = [\n 'tab-adapters-table-name',\n 'tab-adapters-table-description',\n 'tab-adapters-table-keywords',\n 'tab-adapters-table-installed',\n 'tab-adapters-table-available',\n 'tab-adapters-table-license',\n 'tab-adapters-table-install'\n ];\n that.$grid.find('tbody tr').each(function () {\n var i = 0;\n $(this).find('td').each(function () {\n $(this).addClass(classes[i]);\n i++;\n });\n })\n }\n that.$tab.find('.grid-main-div').removeClass('order-a-z order-popular order-updated').addClass(that.currentOrder ? 'order-' + that.currentOrder : '');\n that.$tab.find('.process-adapters').hide();\n that.updateCounter(adaptersToUpdate);\n });\n } else {\n this.enableColResize();\n }\n this.restoreScroll();\n };\n this.saveScroll = function () {\n this.scrollTop = this.$tab.find('.grid-main-div').scrollTop();\n };\n this.restoreScroll = function () {\n if (this.scrollTop) {\n this.$tab.find('.grid-main-div').scrollTop(this.scrollTop);\n }\n };\n\n this.updateCounter = function (counter) {\n if (counter === undefined) {\n this.getAdaptersInfo(this.main.currentHost, false, false, function (repository, installedList) {\n var adaptersToUpdate = 0;\n\n for (var adapter in installedList) {\n if (!installedList.hasOwnProperty(adapter)) continue;\n var obj = installedList ? installedList[adapter] : null;\n if (!obj || obj.controller || adapter === 'hosts') continue;\n\n var version = '';\n if (repository[adapter] && repository[adapter].version) version = repository[adapter].version;\n\n if (obj.version && !that.main.upToDate(version, obj.version)) {\n adaptersToUpdate++;\n }\n }\n that.updateCounter(adaptersToUpdate);\n });\n } else if (counter) {\n var $updates = $('#updates-for-adapters');\n if ($updates.length) {\n $updates.text(counter);\n } else {\n $('' + counter + '').appendTo('.admin-sidemenu-items[data-tab=\"tab-adapters\"] a');\n }\n } else {\n $('#updates-for-adapters').remove();\n }\n };\n\n // ----------------------------- Adapters show and Edit ------------------------------------------------\n this.init = function (update, updateRepo) {\n if (this.inited && !update) {\n return;\n }\n\n if (!this.main.objectsLoaded) {\n setTimeout(function () {\n that.init(update, updateRepo);\n }, 250);\n return;\n }\n\n // update info\n // Required is list of hosts and repository (done in getAdaptersInfo)\n if (!this.inited) {\n this.inited = true;\n this.main.subscribeObjects('system.host.*');\n this.main.subscribeStates('system.host.*');\n }\n this.main.tabs.hosts.getHosts(function () {\n that._postInit(update, updateRepo);\n });\n };\n\n this.destroy = function () {\n if (this.inited) {\n this.saveScroll();\n this.inited = false;\n this.main.unsubscribeObjects('system.host.*');\n this.main.unsubscribeStates('system.host.*');\n }\n };\n\n function showAddInstanceDialog(adapter, desc, callback) {\n if (that.main.tabs.hosts.list.length <= 1 && !that.main.config.expertMode) {\n return callback(true, that.main.currentHost, '');\n }\n\n var $dialogAddInstance = $('#dialog-add-instance');\n $dialogAddInstance.find('.dialog-add-instance-name').html(adapter);\n $dialogAddInstance.find('.dialog-add-description').html(desc);\n\n // fill the hosts\n var text = '';\n for (var h = 0; h < that.main.tabs.hosts.list.length; h++) {\n var host = that.main.tabs.hosts.list[h];\n text += '';\n }\n\n if (that.main.tabs.hosts.list.length <= 1) {\n $dialogAddInstance.find('.dialog-add-instance-host').addClass('disabled').prop('disabled', true);\n } else {\n $dialogAddInstance.find('.dialog-add-instance-host').removeClass('disabled').prop('disabled', false);\n }\n $dialogAddInstance.find('.dialog-add-instance-host').html(text).select();\n\n // find free instance numbers\n var min = -1;\n var used = [];\n for (var i = 0; i < that.main.tabs.instances.list.length; i++) {\n var parts = that.main.tabs.instances.list[i].split('.');\n if (parts[parts.length - 2] === adapter) {\n var index = parseInt(parts[parts.length - 1], 10);\n used.push(index);\n if (index > min) {\n min = index;\n }\n }\n }\n min += 10;\n text = '';\n for (var m = 0; m < min; m++) {\n if (used.indexOf(m) !== -1) continue;\n text += '';\n }\n $dialogAddInstance.find('.dialog-add-instance-number').html(text).select();\n $dialogAddInstance.find('.dialog-add-install-btn').off('click').on('click', function (e) {\n if (callback) {\n callback(true, $dialogAddInstance.find('.dialog-add-instance-host').val(), $dialogAddInstance.find('.dialog-add-instance-number').val());\n callback = null;\n }\n $dialogAddInstance.find('.dialog-add-cancel-btn').off('click');\n $dialogAddInstance.find('.dialog-add-instance-number').off('click');\n });\n\n $dialogAddInstance.find('.dialog-add-cancel-btn').off('click').on('click', function (e) {\n if (callback) {\n callback(false);\n callback = null;\n }\n $dialogAddInstance.find('.dialog-add-cancel-btn').off('click');\n $dialogAddInstance.find('.dialog-add-instance-number').off('click');\n });\n $dialogAddInstance.modal({\n dismissible: false,\n complete: function () {\n $dialogAddInstance.find('.dialog-add-instance-name').html('');\n }\n }).modal('open');\n }\n\n function showLicenseDialog(adapter, callback) {\n var $dialogLicense = $('#dialog-license');\n // Is adapter installed\n if (that.data[adapter].installed || !that.data[adapter].licenseUrl) {\n callback(true);\n return;\n }\n\n var timeout = setTimeout(function () {\n timeout = null;\n callback(true);\n }, 10000);\n\n if (!that.data[adapter].licenseUrl) {\n that.data[adapter].licenseUrl = 'https://raw.githubusercontent.com/yunkong2/yunkong2.' + (that.data[adapter].name || adapter) + '/master/LICENSE';\n }\n if (typeof that.data[adapter].licenseUrl === 'object') {\n that.data[adapter].licenseUrl = that.data[adapter].licenseUrl[systemLang] || that.data[adapter].licenseUrl.en;\n }\n // Workaround\n // https://github.com/yunkong2/yunkong2.vis/blob/master/LICENSE =>\n // https://raw.githubusercontent.com/yunkong2/yunkong2.vis/master/LICENSE\n if (that.data[adapter].licenseUrl.indexOf('github.com') !== -1) {\n that.data[adapter].licenseUrl = that.data[adapter].licenseUrl.replace('github.com', 'raw.githubusercontent.com').replace('/blob/', '/');\n }\n\n that.main.socket.emit('httpGet', that.data[adapter].licenseUrl, function (error, response, body) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n\n if (!error && body) {\n $dialogLicense.css({'z-index': 200});\n body = body.toString().replace(/\\r\\n/g, '
    ');\n body = body.replace(/\\n/g, '
    ');\n $dialogLicense.find('.license_text').html(body);\n $dialogLicense.find('.license_agreement_name').text(_(' for %s', adapter));\n\n $dialogLicense.modal({\n dismissible: false,\n complete: function () {\n $dialogLicense.find('.license_text').html('');\n }\n }).modal('open');\n\n $dialogLicense.find('.license_agree').off('click').on('click', function (e) {\n if (callback) {\n callback(true);\n callback = null;\n }\n $dialogLicense.find('.license_agree').off('click');\n $dialogLicense.find('.license_non_agree').off('click');\n });\n\n $dialogLicense.find('.license_non_agree').off('click').on('click', function (e) {\n if (callback) {\n callback(false);\n callback = null;\n }\n $dialogLicense.find('.license_agree').off('click');\n $dialogLicense.find('.license_non_agree').off('click');\n });\n } else {\n callback && callback(true);\n callback = null;\n }\n }\n });\n }\n\n this.initButtons = function (adapter) {\n this.$tab.find('.adapter-install-submit[data-adapter-name=\"' + adapter + '\"]').off('click').on('click', function () {\n var adapter = $(this).attr('data-adapter-name');\n var desc = $(this).attr('data-adapter-desc');\n\n // show config dialog\n showAddInstanceDialog(adapter, desc, function (result, host, index) {\n if (!result) return;\n\n that.getAdaptersInfo(host, false, false, function (repo, installed) {\n var obj = repo[adapter];\n\n if (!obj) obj = installed[adapter];\n\n if (!obj) return;\n\n if (obj.license && obj.license !== 'MIT') {\n // Show license dialog!\n showLicenseDialog(adapter, function (isAgree) {\n if (isAgree) {\n that.main.cmdExec(null, 'add ' + adapter + ' ' + index + ' --host ' + host, function (exitCode) {\n if (!exitCode) that._postInit(true);\n });\n }\n });\n } else {\n that.main.cmdExec(null, 'add ' + adapter + ' ' + index + ' --host ' + host, function (exitCode) {\n if (!exitCode) that._postInit(true);\n });\n }\n });\n });\n });\n\n this.$tab.find('.adapter-delete-submit[data-adapter-name=\"' + adapter + '\"]').off('click').on('click', function () {\n var name = $(this).attr('data-adapter-name');\n that.main.confirmMessage(_('Are you sure you want to delete adapter %s?', name), _('Please confirm'), 'help', function (result) {\n if (result) {\n that.main.cmdExec(null, 'del ' + name, function (exitCode) {\n if (!exitCode) that._postInit(true);\n });\n }\n });\n });\n\n this.$tab.find('.adapter-readme-submit[data-adapter-name=\"' + adapter + '\"]').off('click').on('click', function () {\n that.main.navigate({\n tab: 'adapters',\n dialog: 'readme',\n params: $(this).data('adapter-name')\n });\n });\n\n this.$tab.find('.adapter-update-submit[data-adapter-name=\"' + adapter + '\"]').off('click').on('click', function () {\n var aName = $(this).attr('data-adapter-name');\n if (aName === 'admin') that.main.waitForRestart = true;\n\n that.main.cmdExec(null, 'upgrade ' + aName, function (exitCode) {\n if (!exitCode) that._postInit(true);\n });\n });\n\n this.$tab.find('.adapter-upload-submit[data-adapter-name=\"' + adapter + '\"]').off('click').on('click', function () {\n var aName = $(this).attr('data-adapter-name');\n\n that.main.cmdExec(null, 'upload ' + aName, function (exitCode) {\n if (!exitCode) that._postInit(true);\n });\n });\n\n var $button = this.$tab.find('.adapter-update-custom-submit[data-adapter-name=\"' + adapter + '\"]');\n $button.off('click').on('click', function () {\n var versions = [];\n if (that.main.objects['system.adapter.' + adapter].common.news) {\n var news = that.main.objects['system.adapter.' + adapter].common.news;\n for (var id in news) {\n if (news.hasOwnProperty(id)) {\n versions.push(id);\n }\n }\n } else {\n versions.push(that.main.objects['system.adapter.' + adapter].common.version);\n }\n var menu = '
    ';\n for (var v = 0; v < versions.length; v++) {\n var nnews = (news[versions[v]] ? news[versions[v]][systemLang] || news[versions[v]].en : '');\n menu += '' + versions[v] + ' - ';\n }\n menu += '
    ';\n\n var $adaptersMenu = $('#adapters-menu');\n if (!$adaptersMenu.length) {\n //$adaptersMenu = $('
    ');\n $adaptersMenu = $('
    ' +\n '

    Modal Header

    ');\n $adaptersMenu.appendTo($('.materialize-dialogs').first());\n $adaptersMenu.modal();\n }\n $adaptersMenu.data('trigger', this);\n\n $adaptersMenu.find('p').html(menu);\n $adaptersMenu.find('h4').html(_('Versions of %s', adapter));\n\n $adaptersMenu.find('.adapters-versions-link').off('click').on('click', function () {\n //if ($(this).data('link')) window.open($(this).data('link'), $(this).data('instance-id'));\n $adaptersMenu.modal('close');\n var adapter = $(this).data('adapter-name');\n var version = $(this).data('version');\n if (version && adapter) {\n that.main.cmdExec(null, 'upgrade ' + adapter + '@' + version, function (exitCode) {\n if (!exitCode) that._postInit(true);\n });\n }\n });\n\n /*$(this).dropdown({\n onCloseEnd: function () {\n var $adaptersMenu = $('#adapters-menu');\n var trigger = $adaptersMenu.data('trigger');\n $(trigger).dropdown('close').dropdown('destroy');\n $adaptersMenu.data('trigger', null).hide();\n $adaptersMenu.remove();\n }\n }).dropdown('open');*/\n $adaptersMenu.modal('open');\n\n\n // does not work... must be fixed.\n //$adaptersMenu.find('.tooltipped').tooltip();\n });\n\n if (!that.main.objects['system.adapter.' + adapter]) {\n $button.hide();//addClass('disabled');\n }\n };\n\n this.objectChange = function (id, obj) {\n // Update Adapter Table\n if (id.match(/^system\\.adapter\\.[a-zA-Z0-9-_]+$/)) {\n if (obj) {\n if (this.list.indexOf(id) === -1) this.list.push(id);\n } else {\n var j = this.list.indexOf(id);\n if (j !== -1) {\n this.list.splice(j, 1);\n }\n }\n\n if (typeof this.$grid !== 'undefined' && this.$grid[0]._isInited) {\n this.init(true);\n }\n }\n };\n\n function showUploadProgress(group, adapter, percent) {\n var text = '';\n var opened;\n if (adapter || typeof group === 'string') {\n if (adapter) {\n // text += '
    ';\n opened = true;\n } else {\n percent = group;\n group = null;\n }\n //percent = 80;\n if (percent) {\n text +=\n '' +\n '' +\n '' +\n '' +\n '' +\n '
    '\n ;\n }\n //text += percent ? '
    ' : '';\n\n if (opened) {\n //text += '
    ';\n }\n return text;\n }\n\n this.stateChange = function (id, state) {\n if (id && state) {\n var adapter = id.match(/^system\\.adapter\\.([\\w\\d-]+)\\.upload$/);\n if (adapter) {\n var $adapter = this.$tab.find('.adapter-upload-progress[data-adapter-name=\"' + adapter[1] + '\"]');\n var text = showUploadProgress(state.val);\n $adapter.html(text).css({opacity: state.val ? 0.7 : 0});\n this.$tab.find('.group-upload-progress[data-adapter-group=\"' + $adapter.data('adapter-group') + '\"]').html(text).css({opacity: state.val ? 0.7 : 0});\n }\n }\n };\n}\n","function Config(main) {\n 'use strict';\n var that = this;\n this.$dialog = $('#dialog-config');\n this.$configFrame = this.$dialog.find('#config-iframe');\n this.main = main;\n\n this.prepare = function () {\n // id = 'system.adapter.NAME.X'\n $iframeDialog = this;\n };\n\n this.init = function () {\n if (this.inited) return;\n\n this.inited = true;\n\n\n var id = this.main.navigateGetParams();\n\n var parts = id.split('.');\n if (this.main.objects[id] && this.main.objects[id].common && this.main.objects[id].common.materialize) {\n this.$configFrame.attr('src', 'adapter/' + parts[2] + '/index_m.html?' + parts[3]);\n } else {\n this.$configFrame.attr('src', 'adapter/' + parts[2] + '/?' + parts[3]);\n }\n\n var name = id.replace(/^system\\.adapter\\./, '');\n this.$dialog.data('name', name);\n this.$dialog.find('.title').html(_('Adapter configuration') + ': ' + name);\n };\n\n this.allStored = function () {\n return !window.frames['config-iframe'].changed;\n };\n\n // this function is called by the configuration code in iFrame\n this.close = function () {\n that.main.navigate();\n };\n\n this.destroy = function () {\n if (this.inited) {\n this.inited = false;\n this.$configFrame.attr('src', '');\n\n // If after wizard some configurations must be shown\n if (typeof showConfig !== 'undefined' && showConfig && showConfig.length) {\n var configId = showConfig.shift();\n setTimeout(function () {\n that.main.navigate({\n tab: 'instances',\n dialog: 'config',\n params: configId\n });\n }, 1000);\n }\n }\n }\n}","function Customs(main) {\n 'use strict';\n\n var STR_DIFFERENT = '__different__';\n var that = this;\n this.main = main;\n this.$dialog = $('#dialog-customs');\n this.customEnabled = null;\n this.currentCustoms = null; // Id of the currently shown customs dialog\n\n var $table;\n var $outer;\n var hdr;\n var lastHistoryTimeStamp;\n\n var $tableDateFrom;\n var $tableDateTo;\n var $tableTimeFrom;\n var $tableTimeTo;\n\n var $chartDateFrom;\n var $chartDateTo;\n var $chartTimeFrom;\n var $chartTimeTo;\n\n var $historyTableInstance;\n var $historyChartInstance;\n\n // ----------------------------- CUSTOMS ------------------------------------------------\n this.check = function () {\n var found = false;\n for (var u = 0; u < this.main.instances.length; u++) {\n if (this.main.objects[this.main.instances[u]].common &&\n (this.main.objects[this.main.instances[u]].common.type === 'storage' || this.main.objects[this.main.instances[u]].common.supportCustoms) &&\n this.main.objects[this.main.instances[u]].common.enabled) {\n if (this.customEnabled !== null && this.customEnabled !== true) {\n this.customEnabled = true;\n // update customs buttons\n if (this.inited) {\n this.init(null, true);\n }\n } else {\n this.customEnabled = true;\n }\n found = true;\n return;\n }\n }\n if (this.customEnabled !== null && this.customEnabled !== false) {\n this.customEnabled = false;\n // update custom button\n if (this.inited) {\n this.init(null, true);\n }\n } else {\n this.customEnabled = false;\n }\n };\n\n this.stateChange = function (id /*, state */) {\n if (this.currentCustoms === id) {\n updateTable();\n }\n };\n\n this.initCustomsTabs = function (ids, instances) {\n var $customTabs = this.$dialog.find('#customs-tabs');\n ids = ids || [];\n $customTabs.html('');\n var wordDifferent = _(STR_DIFFERENT);\n this.defaults = {};\n var collapsed = this.main.config['object-customs-collapsed'];\n collapsed = collapsed ? collapsed.split(',') : [];\n\n var commons = {};\n var type = null;\n var role = null;\n // calculate common settings\n for (var i = 0; i < instances.length; i++) {\n var inst = instances[i].replace(/^system\\.adapter\\./, '');\n commons[inst] = {};\n for (var id = 0; id < ids.length; id++) {\n var custom = main.objects[ids[id]].common.custom;\n var sett = custom ? custom[inst] : null;\n\n if (main.objects[ids[id]].common) {\n if (type === null) {\n type = main.objects[ids[id]].common.type;\n } else if (type !== '' && type !== main.objects[ids[id]].common.type) {\n type = '';\n }\n if (role === null) {\n role = main.objects[ids[id]].common.role;\n } else if (role !== '' && role !== main.objects[ids[id]].common.role) {\n role = '';\n }\n }\n\n if (sett) {\n for (var _attr in sett) {\n if (!sett.hasOwnProperty(_attr)) continue;\n if (commons[inst][_attr] === undefined) {\n commons[inst][_attr] = sett[_attr];\n } else if (commons[inst][_attr] !== sett[_attr]) {\n commons[inst][_attr] = STR_DIFFERENT;\n }\n }\n } else {\n var a = inst.split('.')[0];\n var _default = null;\n // Try to get default values\n if (defaults[a]) {\n if (typeof defaults[a] === 'function') {\n _default = defaults[a](that.main.objects[ids[id]], that.main.objects['system.adapter.' + inst]);\n } else {\n _default = defaults[a];\n }\n } else {\n _default = this.defaults[a];\n }\n\n for (var attr in _default) {\n if (!_default.hasOwnProperty(attr)) continue;\n if (commons[inst][attr] === undefined) {\n commons[inst][attr] = _default[attr];\n } else if (commons[inst][attr] !== _default[attr]) {\n commons[inst][attr] = STR_DIFFERENT;\n }\n }\n }\n }\n }\n\n // add all tabs to div\n for (var j = 0; j < instances.length; j++) {\n // try to find settings\n var parts = instances[j].split('.');\n var adapter = parts[2];\n var instance = parts[3];\n var data = adapter + '.' + instance;\n var img = this.main.objects['system.adapter.' + adapter].common.icon;\n img = '/adapter/' + adapter + '/' + img;\n var tab =\n '
  • ' +\n '
    ' +\n ' ' + _('Settings for %s', data) +\n ' ' + _('active') + '' +\n '
    ' +\n '
    ' +\n $('script[data-template-name=\"' + adapter + '\"]').html() +\n '
    ' +\n '
  • ';\n\n var $tab = $(tab);\n this.defaults[adapter] = {};\n // set values\n $tab.find('input, select').each(function() {\n var $this = $(this);\n $this.attr('data-instance', adapter + '.' + instance);\n var field = $this.attr('data-field');\n var def = $this.attr('data-default');\n if (def === 'true') def = true;\n if (def === 'false') def = false;\n if (def !== undefined && def.toString().replace(/\\+/, '') === parseFloat(def).toString()) {\n def = parseFloat(def);\n }\n\n that.defaults[adapter][field] = def;\n if (field === 'enabled') {\n $this.on('click', function (event) {\n event.stopPropagation();\n if ($(this).prop('checked')) {\n\n } else {\n\n }\n });\n }\n });\n\n $customTabs.append($tab);\n // post init => add custom logic\n if (customPostInits.hasOwnProperty(adapter) && typeof customPostInits[adapter] === 'function') {\n customPostInits[adapter]($tab, commons[adapter + '.' + instance], that.main.objects['system.adapter.' + adapter + '.' + instance], type, role);\n }\n }\n\n // set values\n $customTabs.find('input, select').each(function() {\n var $this = $(this);\n var instance = $this.data('instance');\n var adapter = instance.split('.')[0];\n var attr = $this.data('field');\n\n if (commons[instance][attr] !== undefined) {\n if ($this.attr('type') === 'checkbox') {\n if (commons[instance][attr] === STR_DIFFERENT) {\n /*$('').insertBefore($this);\n $this.hide().attr('data-field', '').data('field', '');*/\n $this[0].indeterminate = true;\n } else {\n $this.prop('checked', commons[instance][attr]);\n }\n } else {\n if (commons[instance][attr] === STR_DIFFERENT) {\n if ($this.attr('type') === 'number') {\n $this.attr('type', 'text');\n }\n if ($this.prop('tagName').toUpperCase() === 'SELECT'){\n $this.prepend('');\n $this.val(wordDifferent);\n } else {\n $this.val('').attr('placeholder', wordDifferent);\n }\n } else {\n $this.val(commons[instance][attr]);\n }\n }\n } else {\n var def;\n if (that.defaults[adapter] && that.defaults[adapter][attr] !== undefined) {\n def = that.defaults[adapter][attr];\n }\n if (def !== undefined) {\n if ($this.attr('type') === 'checkbox') {\n $this.prop('checked', def);\n } else {\n $this.val(def);\n }\n }\n }\n\n if ($this.attr('type') === 'checkbox') {\n $this.on('change', function () {\n that.$dialog.find('.dialog-system-buttons .btn-save').removeClass('disabled');\n if ($(this).data('field') === 'enabled') {\n var instance = $this.data('instance');\n var $headerActive = $customTabs.find('.activated[data-adapter=\"' + instance + '\"]');\n if ($(this).prop('checked')) {\n $headerActive.css('opacity', 1);\n } else {\n $headerActive.css('opacity', 0);\n }\n }\n });\n } else {\n $this.on('change', function () {\n that.$dialog.find('.dialog-system-buttons .btn-save').removeClass('disabled');\n }).on('keyup', function () {\n $(this).trigger('change');\n });\n }\n });\n\n this.showCustomsData(ids.length > 1 ? null : ids[0]);\n this.$dialog.find('.dialog-system-buttons .btn-save').addClass('disabled');\n translateAll('#dialog-customs');\n var $collapsible = that.$dialog.find('.collapsible');\n $collapsible.collapsible({\n onOpenEnd: function (el) {\n // store settings\n var _collapsed = that.main.config['object-customs-collapsed'];\n _collapsed = _collapsed ? _collapsed.split(',') : [];\n var id = $(el).data('adapter');\n var pos = _collapsed.indexOf(id);\n if (pos !== -1) _collapsed.splice(pos, 1);\n that.main.saveConfig('object-customs-collapsed', _collapsed.join(','));\n },\n onCloseEnd: function (el) {\n // store settings\n var _collapsed = that.main.config['object-customs-collapsed'];\n _collapsed = _collapsed ? _collapsed.split(',') : [];\n var id = $(el).data('adapter');\n var pos = _collapsed.indexOf(id);\n if (pos === -1) _collapsed.push(id);\n that.main.saveConfig('object-customs-collapsed', _collapsed.join(','));\n }\n });\n\n that.$dialog.find('input[type=\"checkbox\"]+span').off('click').on('click', function () {\n var $input = $(this).prev();//.addClass('filled-in');\n if (!$input.prop('disabled')) {\n if ($input[0].indeterminate) {\n $input[0].indeterminate = false;\n $input.prop('checked', true).trigger('change');\n } else {\n $input.prop('checked', !$input.prop('checked')).trigger('change');\n }\n }\n });\n $customTabs.find('select').select();\n M.updateTextFields('#dialog-customs');\n\n this.resizeHistory();\n };\n\n function installColResize() {\n if (!$.fn.colResizable) return;\n if ($outer.is(':visible')) {\n if (!$outer.data('inited')) {\n hdr = new IobListHeader('grid-history-header', {list: $outer, colWidthOffset: 1, prefix: 'log-filter'});\n\n // todo define somehow the width of every column\n hdr.add('text', 'val');\n hdr.add('text', 'ack');\n hdr.add('text', 'from');\n hdr.add('text', 'ts');\n hdr.add('text', 'lc');\n }\n\n // Fix somehow, that columns have different widths\n $outer.colResizable({\n liveDrag: true,\n\n partialRefresh: true,\n marginLeft: 5,\n postbackSafe:true,\n\n onResize: function (event) {\n return hdr.syncHeader();\n }\n });\n\n hdr.syncHeader();\n } else {\n setTimeout(function () {\n installColResize();\n }, 200)\n }\n }\n\n function updateTable(delay) {\n // Load data again from adapter\n if (delay) {\n if (that.historyTimeout) {\n clearTimeout(that.historyTimeout)\n }\n } else if (that.historyTimeout) {\n return;\n }\n\n that.historyTimeout = setTimeout(function () {\n that.historyTimeout = null;\n if ($historyTableInstance) {\n that.loadHistoryTable($historyTableInstance.data('id'), true);\n }\n }, delay || 5000);\n }\n\n function download(filename, text) {\n var element = document.createElement('a');\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));\n element.setAttribute('download', filename);\n\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n }\n\n this.loadHistoryTable = function (id, isSilent, isDownload) {\n $outer = $outer || that.$dialog.find('#grid-history');\n $table = $table || that.$dialog.find('#grid-history-body');\n\n if (!isSilent) {\n $table.html('' + _('Loading...') + '');\n }\n\n var request = {\n aggregate: 'none',\n instance: $historyTableInstance.val(),\n from: true,\n ack: true,\n q: true\n };\n\n if (!$tableDateFrom) {\n $tableDateFrom = this.$dialog.find('#tab-customs-table .datepicker.date-from');\n $tableDateTo = this.$dialog.find('#tab-customs-table .datepicker.date-to');\n $tableTimeFrom = this.$dialog.find('#tab-customs-table .timepicker.time-from');\n $tableTimeTo = this.$dialog.find('#tab-customs-table .timepicker.time-to');\n }\n\n var dateFrom = $tableDateFrom.val() ? M.Datepicker.getInstance($tableDateFrom).toString('yyyy.mm.dd') : '';\n var timeFrom = $tableTimeFrom.val();\n var dateTo = $tableDateTo.val() ? M.Datepicker.getInstance($tableDateTo).toString('yyyy.mm.dd') : '';\n var timeTo = $tableTimeTo.val();\n var empty = true;\n if (dateTo) {\n dateTo = new Date(dateTo);\n empty = false;\n dateTo.setHours(23);\n dateTo.setMinutes(59);\n dateTo.setSeconds(59);\n dateTo.setMilliseconds(999);\n } else {\n dateTo = new Date();\n }\n if (timeTo) {\n var parts = timeTo.split(':');\n dateTo.setHours(parts[0]);\n dateTo.setMinutes(parts[1]);\n dateTo.setSeconds(59);\n dateTo.setMilliseconds(999);\n empty = false;\n }\n dateTo = dateTo.getTime();\n if (empty) dateTo += 10000;\n request.end = dateTo;\n\n if (dateFrom || timeFrom) {\n dateFrom = new Date(dateFrom || dateTo);\n if (timeFrom) {\n var part__ = timeFrom.split(':');\n dateFrom.setHours(part__[0]);\n dateFrom.setMinutes(part__[1]);\n } else {\n dateFrom.setHours(0);\n dateFrom.setMinutes(0);\n }\n dateFrom.setSeconds(0);\n dateFrom.setMilliseconds(0);\n request.start = dateFrom.getTime();\n } else {\n request.count = 50;\n }\n var fileName;\n if (isDownload) {\n fileName = new Date(dateTo).toISOString() + '_' + (request.start ? new Date(request.start) : request.count + 'points') + '_' + id + '__' + request.instance + '.csv';\n }\n\n\n main.socket.emit('getHistory', id, request, function (err, res) {\n setTimeout(function () {\n var csv = 'value;acknowledged;from;timestamp;lastchanged;\\n';\n if (!err) {\n var text = '';\n if (res && res.length) {\n for (var i = res.length - 1; i >= 0; i--) {\n var from = (res[i].from || '').replace('system.adapter.', '').replace('system.', '');\n text += ' lastHistoryTimeStamp ? 'highlight' : '') + '\">' +\n ' ' + res[i].val + '' +\n ' ' + res[i].ack + '' +\n ' ' + from + '' +\n ' ' + main.formatDate(res[i].ts) + '' +\n ' ' + main.formatDate(res[i].lc) + '' +\n '\\n';\n\n if (isDownload) {\n csv += res[i].val + ';' + res[i].ack + ';' + (from || '') + ';' + (res[i].ts ? new Date(res[i].ts).toISOString() : '') + ';' + (res[i].lc ? new Date(res[i].lc).toISOString() : '') + ';\\n';\n }\n }\n lastHistoryTimeStamp = res[res.length - 1].ts;\n } else {\n text = '' + _('No data') + ''\n }\n $table.html(text);\n } else {\n console.error(err);\n $table.html('' + err + '');\n }\n installColResize();\n if (isDownload) {\n download(fileName, csv);\n }\n }, 0);\n });\n };\n\n this.loadHistoryChart = function (id) {\n if (!$chartDateFrom) {\n $chartDateFrom = this.$dialog.find('#tab-customs-chart .datepicker.date-from');\n $chartDateTo = this.$dialog.find('#tab-customs-chart .datepicker.date-to');\n }\n\n if (id) {\n var port = 0;\n var chart = false;\n var isSecure = false;\n for (var i = 0; i < this.main.instances.length; i++) {\n if (this.main.objects[main.instances[i]].common.name === 'flot' && this.main.objects[this.main.instances[i]].common.enabled) {\n chart = 'flot';\n } else\n if (!chart && this.main.objects[main.instances[i]].common.name === 'rickshaw' && this.main.objects[this.main.instances[i]].common.enabled) {\n chart = 'rickshaw';\n } else\n if (this.main.objects[this.main.instances[i]].common.name === 'web' && this.main.objects[this.main.instances[i]].common.enabled) {\n port = this.main.objects[this.main.instances[i]].native.port;\n isSecure = this.main.objects[this.main.instances[i]].native.secure;\n }\n if (chart === 'flot' && port) break;\n }\n var $chart = this.$dialog.find('#iframe-history-chart');\n\n var linkTemplate = 'http{isSecure}://{hostname}:{port}/{chart}/index.html?range=1440&zoom=true&axeX=lines&axeY=inside&hoverDetail=true&aggregate=onchange&chartType=step&live=30&instance={instance}&l%5B0%5D%5Bid%5D={id}&l%5B0%5D%5Boffset%5D=0&l%5B0%5D%5Baggregate%5D=minmax&l%5B0%5D%5Bcolor%5D=%231868a8&l%5B0%5D%5Bthickness%5D=1&l%5B0%5D%5Bshadowsize%5D=1&l%5B0%5D%5Bsmoothing%5D=0&l%5B0%5D%5BafterComma%5D=0&l%5B0%5D%5BignoreNull%5D=false&aggregateType=step&aggregateSpan=300&relativeEnd=now&timeType=relative&noBorder=noborder&bg=rgba(0%2C0%2C0%2C0)&timeFormat=%25H%3A%25M&useComma={comma}&noedit=false&animation=0';\n linkTemplate = linkTemplate.replace('{isSecure}', (isSecure ? 's' : ''));\n linkTemplate = linkTemplate.replace('{hostname}', location.hostname);\n linkTemplate = linkTemplate.replace('{port}', port);\n linkTemplate = linkTemplate.replace('{chart}', chart);\n linkTemplate = linkTemplate.replace('{instance}', that.$dialog.find('#tab-customs-chart .select-instance').val());\n linkTemplate = linkTemplate.replace('{id}', encodeURI(id));\n linkTemplate = linkTemplate.replace('{comma}', that.main.systemConfig && that.main.systemConfig.common && that.main.systemConfig.isFloatComma);\n\n // find out\n $chart.attr('src', linkTemplate);//'http' + (isSecure ? 's' : '') + '://' + location.hostname + ':' + port + '/' + chart + '/index.html?range=1440&zoom=true&axeX=lines&axeY=inside&_ids=' + encodeURI(id) + '&width=' + ($chart.width() - 50) + '&hoverDetail=true&height=' + ($chart.height() - 50) + '&aggregate=onchange&chartType=step&live=30&instance=' + that.$dialog.find('#tab-customs-chart .select-instance').val());\n } else {\n this.$dialog.find('#iframe-history-chart').attr('src', '');\n }\n };\n\n this.showCustomsData = function (id) {\n var $tabs = this.$dialog.find('#tabs-customs');\n\n var port = 0;\n var chart = false;\n\n initTab('tab-customs-settings');\n\n if (id) {\n $tabs.data('id', id);\n\n // Check if chart enabled and set\n for (var i = 0; i < main.instances.length; i++) {\n if (main.objects[main.instances[i]].common.name === 'flot' && main.objects[main.instances[i]].common.enabled) {\n chart = 'flot';\n } else\n if (!chart && main.objects[main.instances[i]].common.name === 'rickshaw' && main.objects[main.instances[i]].common.enabled) {\n chart = 'rickshaw';\n } else\n if (main.objects[main.instances[i]].common.name === 'web' && main.objects[main.instances[i]].common.enabled) {\n port = main.objects[main.instances[i]].native.port;\n }\n if (chart === 'flot' && port) break;\n }\n that.loadHistoryTable(id);\n\n $tabs.find('.tabs .tab-table').removeClass('disabled');\n\n if (port && chart && that.currentCustoms) {\n $tabs.find('.tabs .tab-chart').removeClass('disabled');\n } else {\n $tabs.find('.tabs .tab-chart').addClass('disabled');\n }\n } else {\n $tabs.find('.tabs .tab-table').addClass('disabled');\n $tabs.find('.tabs .tab-chart').addClass('disabled');\n }\n };\n\n function getCustomTemplate(adapter, callback) {\n $.ajax({\n headers: {\n Accept: 'text/html'\n },\n cache: true,\n url: '/adapter/' + adapter + '/custom_m.html',\n success: function (_data) {\n callback(null, _data);\n },\n error: function (jqXHR) {\n // todo: remove some days 2017.12.19 (for admin2)\n $.ajax({\n headers: {\n Accept: 'text/html'\n },\n cache: true,\n url: '/adapter/' + adapter + '/custom.html',\n success: function (_data) {\n callback(null, _data);\n },\n error: function (jqXHR) {\n callback(jqXHR.responseText);\n }\n });\n }\n });\n }\n\n // Set modified custom states\n this.setCustoms = function (ids, callback) {\n var id = ids.pop();\n if (id) {\n this.$dialog.find('#tab-customs-settings .title').html(_('Adapter settings for %s states', ids.length));\n\n that.main.socket.emit('setObject', id, this.main.objects[id], function (err) {\n if (err) {\n that.main.showMessage(_(err), _('Error'), 'error_outline');\n } else {\n setTimeout(function () {\n that.setCustoms(ids, callback);\n }, 50);\n }\n });\n } else {\n if (callback) callback();\n }\n };\n\n this.resizeHistory = function () {\n // resize only if chart is visible\n var $iFrame = this.$dialog.find('#iframe-history-chart');\n if ($iFrame.attr('src')) {\n var timeout = $iFrame.data('timeout');\n if (timeout) clearTimeout(timeout);\n\n $iFrame.data('timeout', setTimeout(function () {\n that.$dialog.find('#iframe-history-chart').data('timeout', null);\n that.loadHistoryChart(that.$dialog.find('#tabs-customs').data('id')); // reinit iframe\n }, 1000));\n }\n };\n\n function onButtonSave(e) {\n e.stopPropagation();\n e.preventDefault();\n\n var $tabs = that.$dialog.find('#customs-tabs');\n var ids = $tabs.data('ids');\n\n // do not update charts\n that.currentCustoms = null;\n var wordDifferent = _(STR_DIFFERENT);\n\n // collect default values\n var $inputs = $tabs.find('input, select');\n\n //that.historyIds = ids;\n $inputs.each(function () {\n var instance = $(this).data('instance');\n var field = $(this).data('field');\n if (!field) return;\n\n var val;\n if ($(this).attr('type') === 'checkbox') {\n if (this.indeterminate) return;\n val = $(this).prop('checked');\n } else {\n val = $(this).val();\n }\n // if not changed\n if (val === wordDifferent) return;\n\n if (val === null) val = '';\n if (val === undefined) val = '';\n if (val === 'false') val = false;\n if (val === 'true') val = true;\n var f = parseFloat(val);\n // replace trailing 0 and prefix +\n if (val.toString().replace(/^\\+/, '').replace(/([0-9]+(\\.[0-9]+[1-9])?)(\\.?0+$)/,'$1') === f.toString()) {\n val = f;\n }\n\n for (var i = 0; i < ids.length; i++) {\n var custom = that.main.objects[ids[i]].common.custom;\n custom = that.main.objects[ids[i]].common.custom = custom || {};\n\n if (custom[instance] === undefined) {\n var adapter = instance.split('.')[0];\n var _default;\n // Try to get default values\n if (defaults[adapter]) {\n if (typeof defaults[adapter] === 'function') {\n _default = defaults[adapter](that.main.objects[ids[i]], that.main.objects['system.adapter.' + instance]);\n } else {\n _default = defaults[adapter];\n }\n } else {\n _default = that.defaults[adapter];\n }\n custom[instance] = _default || {};\n }\n custom[instance][field] = val;\n }\n });\n\n\n if (ids) {\n that.$dialog.find('.dialog-system-buttons .btn-save').addClass('disabled');\n\n for (var i = 0; i < ids.length; i++) {\n var found = false;\n var custom_ = that.main.objects[ids[i]].common.custom;\n for (var inst in custom_) {\n if (!custom_.hasOwnProperty(inst)) continue;\n if (!custom_[inst].enabled) {\n delete custom_[inst];\n } else {\n found = true;\n }\n }\n if (!found) {\n that.main.objects[ids[i]].common.custom = null;\n }\n }\n that.setCustoms(ids, function () {\n // disable iframe\n that.loadHistoryChart(); // disable iframe\n that.main.navigate();\n });\n }\n\n }\n\n // return true if all data are stored\n this.allStored = function () {\n return that.$dialog.find('.dialog-system-buttons .btn-save').hasClass('disabled');\n };\n\n function initTab(id) {\n switch (id) {\n case 'tab-customs-settings':\n that.loadHistoryChart(); // disable iframe\n break;\n\n case 'tab-customs-table':\n $historyTableInstance.select();\n that.loadHistoryChart(); // disable iframe\n break;\n\n case 'tab-customs-chart':\n that.$dialog.find('#tab-customs-chart .select-instance').select();\n var $tabs = that.$dialog.find('#tabs-customs');\n that.loadHistoryChart($tabs.data('id')); // init iframe\n break;\n }\n }\n\n this.init = function (_ids, isUpdate) {\n if (this.inited && !isUpdate) {\n return;\n }\n\n var ids = this.main.navigateGetParams();\n\n if (ids) {\n ids = ids.split(',');\n }\n // if the list of IDs is too long, it was saved into this.ids\n if (!ids || !ids.length) {\n ids = this.ids;\n this.ids = undefined;\n }\n var instances = [];\n\n // clear global defaults object\n this.defaults = {};\n\n // collect all custom instances\n var count = 0;\n var data = '';\n var urls = [];\n for (var u = 0; u < this.main.instances.length; u++) {\n var inst = this.main.objects[this.main.instances[u]];\n if (inst && inst.common && (inst.common.type === 'storage' || inst.common.supportCustoms)) {\n instances.push(this.main.instances[u]);\n var url = this.main.instances[u].split('.');\n if (urls.indexOf(url[2]) === -1) {\n urls.push(url[2]);\n count++;\n getCustomTemplate(url[2], function (err, result) {\n if (err) console.error(err);\n if (result) data += result;\n if (!--count) {\n that.$dialog.find('#customs-templates').html(data);\n that.initCustomsTabs(ids, instances);\n }\n });\n }\n }\n }\n var _instances = [];\n if (ids) {\n for (var i = ids.length - 1; i >= 0; i--) {\n if (!this.main.objects[ids[i]]) {\n console.warn('Null object: ' + ids[i]);\n ids.splice(i, 1);\n } else {\n var custom = this.main.objects[ids[i]].common.custom;\n if (custom) {\n var found = false;\n // delete disabled entries\n for (var h in custom) {\n if (!custom.hasOwnProperty(h)) continue;\n if (custom[h].enabled === false) {\n delete custom[h];\n } else {\n if (ids.length === 1) _instances.push(h);\n found = true;\n }\n }\n if (!found) {\n delete this.main.objects[ids[i]].common.custom;\n }\n }\n }\n }\n }\n\n var title;\n $historyTableInstance = this.$dialog.find('#tab-customs-table .select-instance');\n $historyChartInstance = this.$dialog.find('#tab-customs-chart .select-instance');\n var $historyTableInstanceBtn = this.$dialog.find('#tab-customs-table .refresh');\n var $historyTableDownloadBtn = this.$dialog.find('#tab-customs-table .download');\n var $historyChartInstanceBtn = this.$dialog.find('#tab-customs-chart .refresh');\n\n if (ids && ids.length === 1) {\n title = _('Storage of %s', ids[0]);\n this.currentCustoms = _instances.length ? ids[0] : null;\n var text = '';\n for (var k = 0; k < _instances.length; k++) {\n var insta = this.main.objects['system.adapter.' + _instances[k]];\n if (insta && insta.common && (insta.common.enabled ||\n (this.main.states['system.adapter.' + _instances[k] + '.alive'] && this.main.states['system.adapter.' + _instances[k] + '.alive'].val))) {\n text += '\\n';\n }\n }\n if (text) {\n $historyTableInstance\n .data('id', ids[0])\n .html(text)\n .show()\n .off('change')\n .on('change', function () {\n that.main.saveConfig('object-history-table', $historyTableInstance.val());\n that.loadHistoryTable($(this).data('id'));\n }).select();\n\n $historyChartInstance\n .data('id', ids[0])\n .html(text)\n .show()\n .off('change')\n .on('change', function () {\n that.main.saveConfig('object-history-chart', $historyChartInstance.val());\n that.loadHistoryChart($(this).data('id')); // reinit iframe\n }).select();\n\n if (this.main.config['object-history-table'] !== undefined) {\n $historyTableInstance.val(this.main.config['object-history-table'])\n }\n if (this.main.config['object-history-chart'] !== undefined) {\n $historyChartInstance.val(this.main.config['object-history-chart'])\n }\n $historyTableInstanceBtn\n .data('id', ids[0])\n .show()\n .off('click')\n .on('click', function () {\n that.$dialog.find('#grid-history-body').html('');\n that.loadHistoryTable($(this).data('id'));\n });\n $historyChartInstanceBtn\n .data('id', ids[0])\n .show()\n .off('click').on('click', function () {\n that.loadHistoryChart($(this).data('id')); // reinit iframe\n });\n\n $historyTableDownloadBtn\n .data('id', ids[0])\n .show()\n .off('click')\n .on('click', function () {\n that.loadHistoryTable($(this).data('id'), false, true);\n });\n\n var yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n var i18n = {\n today: _('Today'),\n clear: _('Clear'),\n done: _('Ok'),\n months : [_('January'),_('February'),_('March'),_('April'),_('May'),_('June'),_('July'),_('August'),_('September'),_('October'),_('November'),_('December')],\n monthsShort : [_('Jan'),_('Feb'),_('Mar'),_('Apr'),_('May'),_('Jun'),_('Jul'),_('Aug'),_('Sep'),_('Oct'),_('Nov'),_('Dec')],\n weekdaysShort : [_('Sun'),_('Mon'),_('Tue'),_('Wed'),_('Thu'),_('Fri'),_('Sat')],\n weekdays : [_('Sunday'),_('Monday'),_('Tuesday'),_('Wednesday'),_('Thursday'),_('Friday'),_('Saturday')],\n weekdaysAbbrev : ['S','M','T','W','T','F','S']\n };\n for (var n = 0; n < i18n.weekdaysAbbrev.length; n++) {\n i18n.weekdaysAbbrev[n] = i18n.weekdaysShort[n][0];\n }\n if (!$tableDateFrom) {\n $tableDateFrom = this.$dialog.find('#tab-customs-table .datepicker.date-from');\n $tableDateTo = this.$dialog.find('#tab-customs-table .datepicker.date-to');\n $tableTimeFrom = this.$dialog.find('#tab-customs-table .timepicker.time-from');\n $tableTimeTo = this.$dialog.find('#tab-customs-table .timepicker.time-to');\n\n $chartDateFrom = this.$dialog.find('#tab-customs-chart .datepicker.date-from');\n $chartDateTo = this.$dialog.find('#tab-customs-chart .datepicker.date-to');\n }\n\n $tableDateFrom.datepicker({\n defaultDate: yesterday,\n showDaysInNextAndPreviousMonths: true,\n minYear: 2014,\n maxYear: 2032,\n i18n: i18n,\n setDefaultDate: true,\n firstDay: 1,\n onSelect: function (date) {\n $tableDateFrom.datepicker('setInputValue');\n $tableDateFrom.datepicker('close');\n }\n });\n $tableDateFrom.on('change', function () {\n updateTable(1000);\n });\n\n $tableTimeFrom.timepicker({\n defaultTime: '00:00',\n twelveHour: false, // TODO\n doneText: _('Ok'),\n clearText: _('Clear'),\n cancelText: _('Cancel'),\n autoClose: true\n });\n $tableTimeFrom.on('change', function () {\n updateTable(1000);\n });\n\n $tableTimeTo.timepicker({\n defaultTime: 'now',\n twelveHour: false, // TODO\n doneText: _('Ok'),\n clearText: _('Clear'),\n cancelText: _('Cancel'),\n autoClose: true\n });\n $tableTimeTo.on('change', function () {\n updateTable(1000);\n });\n\n $tableDateTo.datepicker({\n defaultDate: new Date(),\n showDaysInNextAndPreviousMonths: true,\n minYear: 2014,\n maxYear: 2032,\n i18n: i18n,\n setDefaultDate: true,\n firstDay: 1,\n onSelect: function (date) {\n $tableDateTo.datepicker('setInputValue');\n $tableDateTo.datepicker('close');\n }\n });\n $tableDateTo.on('change', function () {\n updateTable(1000);\n });\n\n\n $chartDateFrom.datepicker({\n defaultDate: yesterday,\n showDaysInNextAndPreviousMonths: true,\n minYear: 2014,\n maxYear: 2032,\n i18n: i18n,\n setDefaultDate: true,\n firstDay: 1,\n onSelect: function (date) {\n $chartDateFrom.datepicker('setInputValue');\n $chartDateFrom.datepicker('close');\n }\n });\n $chartDateFrom.on('change', function () {\n that.loadHistoryChart($historyChartInstance.data('id'));\n });\n $chartDateTo.datepicker({\n defaultDate: new Date(),\n showDaysInNextAndPreviousMonths: true,\n minYear: 2014,\n maxYear: 2032,\n i18n: i18n,\n setDefaultDate: true,\n firstDay: 1,\n onSelect: function (date) {\n $chartDateTo.datepicker('setInputValue');\n $chartDateTo.datepicker('close');\n }\n });\n $chartDateTo.on('change', function () {\n that.loadHistoryChart($historyChartInstance.data('id'));\n });\n } else {\n $historyTableInstance.hide();\n $historyChartInstance.hide();\n $historyTableInstanceBtn.hide();\n $historyChartInstanceBtn.hide();\n $historyTableDownloadBtn.hide();\n }\n if (this.currentCustoms) {\n that.main.subscribeStates(this.currentCustoms);\n }\n this.$dialog.find('#tab-customs-table .title').html(_('Values of %s', ids[0]));\n this.$dialog.find('#tab-customs-chart .title').html(_('Chart for %s', ids[0]));\n } else if (ids) {\n $historyTableInstance.hide();\n $historyChartInstance.hide();\n $historyTableInstanceBtn.hide();\n $historyChartInstanceBtn.hide();\n $historyTableDownloadBtn.hide();\n title = _('Storage of %s states', ids.length);\n this.currentCustoms = null;\n }\n\n this.$dialog.find('#tab-customs-settings .title').html(title);\n\n var $tabs = this.$dialog.find('#tabs-customs');\n $tabs.find('.tabs').mtabs({\n onShow: function (tab) {\n if (!tab) return;\n initTab($(tab).attr('id'));\n }\n });\n this.$dialog.find('#customs-tabs').data('ids', ids);\n that.$dialog.find('.dialog-system-buttons .btn-save').off('click').on('click', onButtonSave);\n that.$dialog.find('.dialog-system-buttons .btn-cancel').off('click').on('click', function (e) {\n e.stopPropagation();\n e.preventDefault();\n if (!that.$dialog.find('.dialog-system-buttons .btn-save').hasClass('disabled')) {\n that.main.confirmMessage(_('Are you sure? Changes are not saved.'), _('Please confirm'), 'error_outline', function (result) {\n if (result) {\n that.$dialog.find('.dialog-system-buttons .btn-save').addClass('disabled');\n // disable iframe\n that.loadHistoryChart();\n that.main.navigate();\n }\n });\n } else {\n // disable iframe\n that.loadHistoryChart();\n that.main.navigate();\n }\n });\n };\n\n this.destroy = function () {\n if (this.inited) {\n this.$dialog.find('.collapsible').collapsible('destroy');\n this.inited = false;\n // disable iframe\n this.loadHistoryChart();\n if (this.currentCustoms) {\n that.main.unsubscribeStates(this.currentCustoms);\n }\n }\n };\n\n return this;\n}\n","function EditObject(main) {\n 'use strict';\n\n var that = this;\n this.$dialog = $('#dialog-editobject');\n this.$dialogNewField = $('#dialog-new-field');\n this.main = main;\n this.prepared = false;\n this.inited = false;\n this.$dialogSave = this.$dialog.find('.dialog-editobject-buttons .btn-save');\n this.iconVal = null;\n\n function loadObjectFields(selector, object, part, objectType) {\n var text = '';\n for (var attr in object) {\n if (!object.hasOwnProperty(attr) || (part === 'common' && (attr === 'name' || attr === 'icon'))) continue;\n\n if (false && objectType === 'state' && part === 'common' && attr === 'role') { // autocomplete is temporally disabled because buggy\n text += '
    ' +\n 'textsms' +\n '';\n } else {\n text += '
    \\n
    \\n';\n if (objectType === 'state' && part === 'common' && attr === 'type') {\n text += '';\n } else if (typeof object[attr] === 'string') {\n text += '\\n';\n } else if (typeof object[attr] === 'number') {\n text += '\\n';\n } else if (typeof object[attr] === 'boolean') {\n text += '\\n';\n } else {\n text += '\\n';\n }\n }\n\n var title = attr;\n // translations\n if (part === 'common' && systemDictionary['common_' + attr] && systemDictionary['common_' + attr][systemLang]) {\n title = _('common_' + attr);\n }\n\n // workaround for materialize\n if (typeof object[attr] === 'boolean') {\n text += '' + title + '\\n';\n } else {\n text += '\\n';\n }\n\n text += '
    \\n\\n';\n text += '
    \\n';\n }\n\n that.$dialog.find(selector).html(text);\n /*that.$dialog.find(selector).find('.autocomplete').each(function () {\n $(this).mautocomplete({\n data: {\n 'state': null,\n 'switch': null,\n 'button': null,\n 'value': null,\n 'level': null,\n 'indicator': null,\n 'value.temperature': null,\n 'value.humidity': null,\n 'level.temperature': null,\n 'level.dimmer': null\n },\n minLength: 0 // The minimum length of the input for the autocomplete to start. Default: 1.\n });\n });*/\n }\n\n function saveObjectFields(selector, object) {\n var $htmlId = that.$dialog.find(selector);\n $htmlId.find('.object-tab-edit-string').each(function () {\n object[$(this).data('attr')] = $(this).val();\n });\n $htmlId.find('.object-tab-edit-number').each(function () {\n object[$(this).data('attr')] = parseFloat($(this).val());\n });\n $htmlId.find('.object-tab-edit-boolean').each(function () {\n object[$(this).data('attr')] = $(this).prop('checked');\n });\n var err = null;\n $htmlId.find('.object-tab-edit-object').each(function () {\n try {\n object[$(this).data('attr')] = JSON.parse($(this).val());\n } catch (e) {\n err = $(this).data('attr');\n return false;\n }\n });\n\n if (object.write !== undefined) {\n if (object.write === 'false' || object.write === '0' || object.write === 0) object.write = false;\n if (object.write === 'true' || object.write === '1' || object.write === 1) object.write = true;\n }\n\n if (object.read !== undefined) {\n if (object.read === 'false' || object.read === '0' || object.read === 0) object.read = false;\n if (object.read === 'true' || object.read === '1' || object.read === 1) object.read = true;\n }\n\n if (object.min === null) {\n delete object.min;\n }\n if (object.min !== undefined) {\n var f = parseFloat(object.min);\n if (f.toString() === object.min.toString()) object.min = f;\n\n if (object.min === 'false') object.min = false;\n if (object.min === 'true') object.min = true;\n }\n if (object.max === null) {\n delete object.max;\n }\n if (object.max !== undefined) {\n var m = parseFloat(object.max);\n if (m.toString() === object.max.toString()) object.max = m;\n\n if (object.max === 'false') object.max = false;\n if (object.max === 'true') object.max = true;\n }\n if (object.def === null) {\n delete object.def;\n }\n\n if (object.def !== undefined) {\n var d = parseFloat(object.def);\n if (d.toString() === object.def.toString()) object.def = d;\n\n if (object.def === 'false') object.def = false;\n if (object.def === 'true') object.def = true;\n }\n\n // common part cannot have \"true\" or \"false\". Only true and false.\n if (selector.indexOf('common') !== -1) {\n for (var attr in object) {\n if (object.hasOwnProperty(attr)) {\n if (object[attr] === 'true') {\n object[attr] = true;\n }\n if (object[attr] === 'false') {\n object[attr] = false;\n }\n if (parseFloat(object[attr]).toString() === object[attr]) {\n object[attr] = parseFloat(object[attr]);\n }\n }\n }\n }\n\n return err;\n }\n\n function showMessage(text, duration, isError) {\n if (typeof duration === 'boolean') {\n isError = duration;\n duration = 3000;\n }\n that.main.showToast(that.$dialog, text, null, duration, isError);\n }\n\n // only init if required\n this._prepare = function () {\n if (this.prepared) {\n return;\n }\n this.prepared = true;\n this.$dialogSave.on('click', function () {\n that.save();\n });\n this.$dialog.find('.dialog-editobject-buttons .btn-cancel').on('click', function () {\n that.editor.setValue('');\n that.$dialogSave.addClass('disabled');\n that.main.navigate();\n });\n\n this.$dialog.find('.btn-add-common').on('click', function () {\n that.$dialogNewField.find('.object-tab-new-icon').show();\n that.$dialogNewField.modal('open');\n var $name = that.$dialogNewField.find('.object-tab-new-name');\n $name.data('type', 'common').focus();\n if (!$name.hasClass('autocomplete')) {\n $name.addClass('autocomplete');\n $name.mautocomplete({\n data: {\n type: null,\n desc: null,\n min: null,\n max: null,\n def: null,\n role: null,\n unit: null,\n read: null,\n write: null,\n states: null\n },\n minLength: 0 // The minimum length of the input for the autocomplete to start. Default: 1.\n });\n }\n $name.focus()\n });\n\n this.$dialog.find('.btn-add-native').on('click', function () {\n that.$dialogNewField.find('.object-tab-new-icon').hide();\n that.$dialogNewField.modal('open');\n var $name = that.$dialogNewField.find('.object-tab-new-name');\n if ($name.hasClass('autocomplete')) {\n $name.mautocomplete('destroy');\n $name.removeClass('autocomplete');\n }\n M.updateTextFields('#dialog-new-field');\n $name.data('type', 'native').focus();\n });\n this.$dialogNewField.find('.object-tab-new-name').keypress(function (e) {\n if (e.which === 13) {\n that.$dialogNewField.find('.btn-add').trigger('click');\n }\n });\n\n if (!this.editor) {\n this.editor = ace.edit('view-object-raw');\n this.editor.getSession().setMode('ace/mode/json');\n this.editor.$blockScrolling = true;\n this.editor.getSession().on('change', function() {\n that.$dialogSave.removeClass('disabled');\n });\n }\n this.$dialogNewField.modal();\n\n this.$dialog.find('.tabs').mtabs({\n onShow: function (tab) {\n if (!tab) return;\n var id = $(tab).attr('id');\n if (id === 'object-tab-common') {\n showMessage(_('Drop the icons here'));\n } else \n if (id === 'object-tab-raw') {\n var obj = that.saveFromTabs();\n\n if (!obj) return false;\n\n that.editor.setValue(JSON.stringify(obj, null, 2));\n } else if (id === 'object-tab-raw') {\n var _obj;\n try {\n _obj = JSON.parse(that.editor.getValue());\n } catch (e) {\n that.main.showMessage(e, _('Parse error'), 'error_outline');\n if (!that.main.noSelect) {\n that.$dialog.find('.tabs').mtabs('select', 'object-tab-raw');\n }\n return false;\n }\n that.load(_obj);\n }\n that.main.saveConfig('object-edit-active', id);\n return true;\n }\n });\n\n this.$dialogNewField.find('.btn-add').on('click', function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n var $tab = that.$dialogNewField.find('.object-tab-new-name');\n var type = $tab.data('type') || 'common';\n var field = $tab.val().trim();\n var obj = that.saveFromTabs();\n\n if (!field || field.indexOf(' ') !== -1) {\n that.main.showError(_('Invalid field name: %s', field));\n return;\n }\n if (obj[type][field] !== undefined) {\n that.main.showError(_('Field %s yet exists!', field));\n return;\n }\n\n obj[type][field] = '';\n\n that.load(obj);\n that.$dialogNewField.find('.object-tab-new-name').val('');\n that.$dialogNewField.modal('close');\n that.$dialogSave.removeClass('disabled');\n });\n this.$dialogNewField.find('.btn-cancel').on('click', function (e) {\n that.$dialogNewField.find('.object-tab-new-name').val('');\n });\n this.$dialog.find('.edit-object-name').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n }).on('keyup', function () {\n $(this).trigger('change');\n });\n this.$dialog.find('.edit-object-type').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n });\n this.$dialog.find('.object-tab-rights input').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n });\n\n installFileUpload(this.$dialog.find('#object-tab-common'), 50000, function (err, text) {\n if (err) {\n showMessage(err, true);\n } else {\n if (!text.match(/^data:image\\//)) {\n showMessage(_('Unsupported image format'), true);\n return;\n }\n\n that.$dialogSave.removeClass('disabled');\n that.iconVal = text;\n\n var $tab = that.$dialog.find('.icon-editor');\n $tab.find('.icon').show().html('');\n $tab.find('.icon .treetable-icon').attr('src', text);\n }\n });\n this.$dialog.find('.icon-editor .icon-upload').off('click').on('click', function () {\n that.$dialog.find('.drop-file').trigger('click');\n });\n this.$dialog.find('.icon-editor .icon-clear').off('click').on('click', function () {\n if (that.iconVal) {\n that.iconVal = null;\n that.$dialog.find('.icon-editor').hide().appendTo(that.$dialog);\n that.$dialogSave.removeClass('disabled');\n }\n });\n };\n\n this.init = function () {\n this._prepare();\n if (this.inited) {\n return;\n }\n this.inited = true;\n var id = that.main.navigateGetParams();\n var isSetDefaultState = !!(id || '').match(/,def$/);\n id = id.replace(/,def$/, '');\n\n var obj = this.main.objects[id];\n if (!obj) return;\n\n if (this.main.config['object-edit-active'] !== undefined && !that.main.noSelect) {\n this.$dialog.find('.tabs').mtabs('select', this.main.config['object-edit-active']);\n }\n\n // fill users\n var text = '';\n var name;\n for (var u = 0; u < this.main.tabs.users.list.length; u++) {\n name = translateName(this.main.objects[this.main.tabs.users.list[u]].common.name);\n text += '';\n }\n this.$dialog.find('.object-tab-acl-owner').html(text);\n\n // fill groups\n text = '';\n for (u = 0; u < this.main.tabs.users.groups.length; u++) {\n name = translateName(this.main.objects[this.main.tabs.users.groups[u]].common.name);\n text += '';\n }\n this.$dialog.find('.object-tab-acl-group').html(text);\n this.load(obj);\n\n if (isSetDefaultState) {\n this.$dialog.data('cb', function (_obj) {\n if (_obj.type === 'state') {\n // create state\n that.main.socket.emit('getState', _obj._id, function (err, state) {\n if (!state || state.val === null || state.val === undefined) {\n that.main.socket.emit('setState', _obj._id, _obj.common.def === undefined ? null : _obj.common.def, true);\n }\n });\n }\n });\n } else {\n this.$dialog.data('cb', null);\n }\n that.$dialogSave.addClass('disabled');\n };\n\n this.destroy = function () {\n if (this.inited) {\n this.inited = false;\n }\n };\n\n this.load = function (obj) {\n if (!obj) return;\n obj.common = obj.common || {};\n obj.native = obj.native || {};\n obj.acl = obj.acl || {};\n this.$dialog.find('.title-id').text(obj._id);\n this.$dialog.find('.edit-object-name').val(obj.common ? translateName(obj.common.name) : obj._id);\n this.$dialog.find('.edit-object-type').val(obj.type);\n this.$dialog.find('.object-tab-acl-owner').val(obj.acl.owner || 'system.user.admin');\n this.$dialog.find('.object-tab-acl-group').val(obj.acl.ownerGroup || 'system.group.administrator');\n\n this.$dialog.find('.icon-editor').hide().appendTo(this.$dialog);\n\n loadObjectFields('.object-tab-common-table', obj.common || {}, 'common', obj.type);\n loadObjectFields('.object-tab-native-table', obj.native || {}, 'native', obj.type);\n\n if (obj.common.icon !== undefined) {\n this.iconVal = obj.common.icon;\n this.$dialog.find('.object-tab-common-table').prepend(this.$dialog.find('.icon-editor').show());\n this.$dialog.find('.icon-editor .icon').html(that.main.getIconFromObj(obj));\n } else {\n this.iconVal = null;\n }\n\n this.$dialog.find('.object-tab-field-delete').on('click', function () {\n var part = $(this).data('part');\n var field = $(this).data('attr');\n that.main.confirmMessage(_('Delete attribute'), _('Please confirm'), 'error_outline', function (result) {\n if (result) {\n var _obj = that.saveFromTabs();\n delete _obj[part][field];\n that.load(_obj);\n }\n });\n });\n\n obj.acl = obj.acl || {};\n if (obj.acl.object === undefined) obj.acl.object = 0x666;\n\n this.$dialog.find('#object-tab-acl-obj-owner-read') .prop('checked', obj.acl.object & 0x400);\n this.$dialog.find('#object-tab-acl-obj-owner-write').prop('checked', obj.acl.object & 0x200);\n this.$dialog.find('#object-tab-acl-obj-group-read'). prop('checked', obj.acl.object & 0x40);\n this.$dialog.find('#object-tab-acl-obj-group-write').prop('checked', obj.acl.object & 0x20);\n this.$dialog.find('#object-tab-acl-obj-every-read'). prop('checked', obj.acl.object & 0x4);\n this.$dialog.find('#object-tab-acl-obj-every-write').prop('checked', obj.acl.object & 0x2);\n\n if (obj.type !== 'state') {\n this.$dialog.find('.object-tab-acl-state').hide();\n } else {\n this.$dialog.find('.object-tab-acl-state').show();\n if (obj.acl.state === undefined) obj.acl.state = 0x666;\n\n this.$dialog.find('#object-tab-acl-state-owner-read') .prop('checked', obj.acl.state & 0x400);\n this.$dialog.find('#object-tab-acl-state-owner-write').prop('checked', obj.acl.state & 0x200);\n this.$dialog.find('#object-tab-acl-state-group-read'). prop('checked', obj.acl.state & 0x40);\n this.$dialog.find('#object-tab-acl-state-group-write').prop('checked', obj.acl.state & 0x20);\n this.$dialog.find('#object-tab-acl-state-every-read'). prop('checked', obj.acl.state & 0x4);\n this.$dialog.find('#object-tab-acl-state-every-write').prop('checked', obj.acl.state & 0x2);\n }\n\n var _obj = JSON.parse(JSON.stringify(obj));\n this.editor.setValue(JSON.stringify(_obj, null, 2));\n if (_obj._id) delete _obj._id;\n if (_obj.common) delete _obj.common;\n if (_obj.type) delete _obj.type;\n if (_obj.native) delete _obj.native;\n if (_obj.acl) delete _obj.acl;\n this.$dialog.find('#view-object-rest').val(JSON.stringify(_obj, null, ' '));\n this.$dialog.find('select').select();\n\n // workaround for materialize checkbox problem\n this.$dialog.find('input[type=\"checkbox\"]+span').off('click').on('click', function () {\n var $input = $(this).prev();\n if (!$input.prop('disabled')) {\n $input.prop('checked', !$input.prop('checked')).trigger('change');\n }\n });\n // enable save\n this.$dialog.find('input').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n }).on('keyup', function () {\n $(this).trigger('change');\n });\n\n this.$dialog.find('select').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n });\n\n this.$dialog.find('textarea').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n }).on('keyup', function () {\n $(this).trigger('change');\n });\n\n if (obj.common.color !== undefined) {\n var time = Date.now();\n\n var $color = this.$dialog.find('.object-tab-edit-string[data-attr=\"color\"]').parent();\n $color.prepend('color_lens' + _('Color') + '');\n $color.colorpicker({\n component: '.btn',\n color: $color,\n container: true\n }).colorpicker('setValue', obj.common.color || '#fff').on('showPicker.colorpicker', function (/* event */) {\n }).on('changeColor.colorpicker', function (event){\n if (Date.now() - time > 100) {\n $color.find('input').val(event.color.toHex()).trigger('change');\n }\n });\n }\n\n };\n\n this.saveFromTabs = function () {\n var obj;\n try {\n obj = this.$dialog.find('#view-object-rest').val();\n if (!obj) {\n obj = {};\n } else {\n obj = JSON.parse(obj);\n }\n } catch (err) {\n this.main.showMessage(_('Cannot parse.'), _('Error in %s', err), 'error_outline');\n return false;\n }\n\n obj.common = {};\n obj.native = {};\n obj.acl = {};\n obj._id = this.$dialog.find('.title-id').text();\n obj.common.name = this.$dialog.find('.edit-object-name').val(); // no support of multilanguage if edited\n obj.type = this.$dialog.find('.edit-object-type').val();\n var err = saveObjectFields('.object-tab-common-table', obj.common);\n if (err) {\n this.main.showMessage(_('Cannot parse.'), _('Error in %s', err), 'error_outline');\n return false;\n }\n err = saveObjectFields('.object-tab-native-table', obj.native);\n if (err) {\n this.main.showMessage(_('Cannot parse.'), _('Error in %s', err), 'error_outline');\n return false;\n }\n obj.acl.object = 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-owner-read').prop('checked') ? 0x400 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-owner-write').prop('checked') ? 0x200 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-group-read').prop('checked') ? 0x40 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-group-write').prop('checked') ? 0x20 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-every-read').prop('checked') ? 0x4 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-every-write').prop('checked') ? 0x2 : 0;\n\n obj.acl.owner = this.$dialog.find('.object-tab-acl-owner').val();\n obj.acl.ownerGroup = this.$dialog.find('.object-tab-acl-group').val();\n\n if (obj.type === 'state') {\n obj.acl.state = 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-owner-read').prop('checked') ? 0x400 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-owner-write').prop('checked') ? 0x200 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-group-read').prop('checked') ? 0x40 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-group-write').prop('checked') ? 0x20 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-every-read').prop('checked') ? 0x4 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-every-write').prop('checked') ? 0x2 : 0;\n }\n\n if (this.iconVal !== null && this.iconVal !== undefined) {\n obj.common.icon = this.iconVal;\n }\n\n return obj;\n };\n\n this.saveFromRaw = function () {\n var obj;\n try {\n obj = JSON.parse(this.editor.getValue());\n } catch (e) {\n this.main.showMessage(e, _('Parse error'), 'error_outline');\n if (!that.main.noSelect) {\n this.$dialog.find('.tabs').mtabs('select', 'object-tab-raw');\n }\n return false;\n }\n return obj;\n };\n\n this.save = function () {\n if (this.main.config['object-edit-active'] === 'object-tab-raw') {\n var _obj = this.saveFromRaw();\n if (!_obj) return;\n\n this.main.socket.emit('setObject', _obj._id, _obj, function (err) {\n if (err) {\n that.main.showError(err);\n } else {\n var cb = that.$dialog.data('cb');\n if (cb) cb(_obj);\n that.$dialogSave.addClass('disabled');\n that.main.navigate();\n }\n });\n } else {\n var obj = that.saveFromTabs();\n if (!obj) return;\n this.main.socket.emit('getObject', obj._id, function (err, _obj) {\n if (err) {\n return that.main.showError(err);\n }\n\n _obj.common = obj.common;\n _obj.native = obj.native;\n _obj.acl = obj.acl;\n that.main.socket.emit('setObject', obj._id, _obj, function (err) {\n if (err) {\n that.main.showError(err);\n } else {\n var cb = that.$dialog.data('cb');\n if (cb) cb(obj);\n that.$dialogSave.addClass('disabled');\n that.main.navigate();\n }\n });\n });\n }\n };\n\n this.allStored = function () {\n return that.$dialogSave.hasClass('disabled');\n };\n\n}","function Enums(main) {\n 'use strict';\n\n // enum is first level like enum.function or enum.rooms\n // category is second level like enum.function.light or enum.room.living_room\n\n var that = this;\n\n this.main = main;\n this.list = [];\n this.$gridEnum = $('#tab-enums');\n this.$gridList = this.$gridEnum.find('.tab-enums-list');\n this.$grid = this.$gridEnum.find('.tab-enums-objects');\n this.updateTimers = null;\n this.editMode = false;\n this.isTiles = false;\n\n var tasks = [];\n var standardEnums = {\n 'enum.rooms': {\n \"_id\": \"enum.rooms\",\n \"common\": {\n \"icon\": \"home\",\n \"name\": {\n \"en\": \"Rooms\",\n \"de\": \"Räume\",\n \"ru\": \"Комнаты\",\n \"pt\": \"Quartos\",\n \"nl\": \"Kamers\",\n \"fr\": \"Pièces\",\n \"it\": \"Camere\",\n \"es\": \"Habitaciones\"\n },\n \"desc\": {\n \"en\": \"List of the rooms\",\n \"de\": \"Liste der Räumen\",\n \"ru\": \"Список комнат\",\n \"pt\": \"Lista dos quartos\",\n \"nl\": \"Lijst met kamers\",\n \"fr\": \"Liste des chambres\",\n \"it\": \"Elenco delle stanze\",\n \"es\": \"Lista de las habitaciones\"\n },\n \"members\": [],\n \"dontDelete\": true\n },\n \"type\": \"enum\"\n },\n 'enum.functions': {\n \"_id\": \"enum.functions\",\n \"common\": {\n \"icon\": \"lightbulb_outline\",\n \"name\": {\n \"en\": \"Functions\",\n \"de\": \"Funktionen\",\n \"ru\": \"функции\",\n \"pt\": \"Funções\",\n \"nl\": \"functies\",\n \"fr\": \"Les fonctions\",\n \"it\": \"funzioni\",\n \"es\": \"Funciones\"\n },\n \"desc\": {\n \"en\": \"List of the functions\",\n \"de\": \"Liste der Funktionen\",\n \"ru\": \"Список функций\",\n \"pt\": \"Lista das funções\",\n \"nl\": \"Lijst met functies\",\n \"fr\": \"Liste des fonctions\",\n \"it\": \"Elenco delle funzioni\",\n \"es\": \"Lista de las funciones\"\n },\n \"members\": [],\n \"dontDelete\": true\n },\n \"type\": \"enum\"\n },\n 'enum.favorites': {\n \"_id\": \"enum.favorites\",\n \"common\": {\n \"icon\": \"favorite_border\",\n \"name\": {\n \"en\": \"Favorites\",\n \"de\": \"Favoriten\",\n \"ru\": \"Избранные\",\n \"pt\": \"Favoritos\",\n \"nl\": \"favorieten\",\n \"fr\": \"Favoris\",\n \"it\": \"Preferiti\",\n \"es\": \"Favoritos\"\n },\n \"desc\": {\n \"en\": \"List of favorites objects\",\n \"de\": \"Liste der Favoritenobjekte\",\n \"ru\": \"Список избранных объектов\",\n \"pt\": \"Lista de objetos favoritos\",\n \"nl\": \"Lijst met favorietenobjecten\",\n \"fr\": \"Liste des objets favoris\",\n \"it\": \"Elenco di oggetti preferiti\",\n \"es\": \"Lista de objetos favoritos\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n }\n };\n\n var standardGroups = {\n 'enum.rooms': {\n \"enum.rooms.living_room\": {\n \"_id\": \"enum.rooms.living_room\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4MC4wNDYgNDgwLjA0NiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwLjA0NiA0ODAuMDQ2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PGc+PHBhdGggZD0iTTMyOC4wMzQsMzIwLjA0NmgtMjR2LTg4YzAtNC40MTgtMy41ODItOC04LThoLTI1NmMtNC40MTgsMC04LDMuNTgyLTgsOHY4OGgtMjRjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MTI4YzAsNC40MTgsMy41ODIsOCw4LDhoMjR2MTZoMTZ2LTE2aDI0MHYxNmgxNnYtMTZoMjRjNC40MTgsMCw4LTMuNTgyLDgtOHYtMTI4QzMzNi4wMzQsMzIzLjYyOCwzMzIuNDUyLDMyMC4wNDYsMzI4LjAzNCwzMjAuMDQ2eiBNODAuMDM0LDQ0OC4wNDZoLTY0di0xMTJoNjRWNDQ4LjA0NnogTTI0MC4wMzQsNDQ4LjA0NmgtMTQ0di02NGgxNDRWNDQ4LjA0NnogTTI0MC4wMzQsMzI4LjA0NnY0MGgtMTQ0di00MGMwLTQuNDE4LTMuNTgyLTgtOC04aC00MHYtODBoMjQwdjgwaC00MEMyNDMuNjE1LDMyMC4wNDYsMjQwLjAzNCwzMjMuNjI4LDI0MC4wMzQsMzI4LjA0NnogTTMyMC4wMzQsNDQ4LjA0NmgtNjR2LTExMmg2NFY0NDguMDQ2eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggZD0iTTQ3OS45NTQsMTUxLjE2NmwtMTYtMTQ0Yy0wLjQ0Ny00LjA0MS0zLjg1NC03LjEwNC03LjkyLTcuMTJoLTExMmMtNC4wOTYtMC4wMjUtNy41NDksMy4wNDktOCw3LjEybC0xNiwxNDRjLTAuMjc2LDIuMjU4LDAuNDIyLDQuNTI4LDEuOTIsNi4yNGMxLjU1LDEuNzE4LDMuNzY3LDIuNjgsNi4wOCwyLjY0aDY0djI3MmgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MzJjMCw0LjQxOCwzLjU4Miw4LDgsOGg4MGM0LjQxOCwwLDgtMy41ODIsOC04di0zMmMwLTQuNDE4LTMuNTgyLTgtOC04aC0zMnYtMjcyaDY0YzIuMjg1LDAuMDE3LDQuNDY5LTAuOTQzLDYtMi42NEM0NzkuNTMyLDE1NS42OTQsNDgwLjIzLDE1My40MjUsNDc5Ljk1NCwxNTEuMTY2eiBNNDMyLjAzNCw0NDguMDQ2djE2aC02NHYtMTZINDMyLjAzNHogTTMzNi45OTQsMTQ0LjA0NmwxNC4yNC0xMjhoOTcuNmwxNC4yNCwxMjhIMzM2Ljk5NHoiLz48L2c+PC9nPjxnPjxnPjxwYXRoIGQ9Ik0yNzIuMDM0LDQ4LjA0NmgtNTIuNzJsLTQ1LjYtNDUuNjhjLTMuMTExLTMuMTM3LTguMTc3LTMuMTU4LTExLjMxNC0wLjA0NmMtMC4wMTYsMC4wMTUtMC4wMzEsMC4wMzEtMC4wNDYsMC4wNDZsLTQ1LjYsNDUuNjhoLTUyLjcyYy00LjQxOCwwLTgsMy41ODItOCw4djEyOGMwLDQuNDE4LDMuNTgyLDgsOCw4aDIwOGM0LjQxOCwwLDgtMy41ODIsOC04di0xMjhDMjgwLjAzNCw1MS42MjgsMjc2LjQ1Miw0OC4wNDYsMjcyLjAzNCw0OC4wNDZ6IE0xNjguMDM0LDE5LjMyNmwyOC43MiwyOC43MmgtNTcuNDRMMTY4LjAzNCwxOS4zMjZ6IE0yNjQuMDM0LDE3Ni4wNDZoLTE5MnYtMTEyaDE5MlYxNzYuMDQ2eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggZD0iTTg4LjAzNCw4MC4wNDZ2ODBoMTYwdi04MEg4OC4wMzR6IE0yMzIuMDM0LDE0NC4wNDZoLTEyOHYtNDhoMTI4VjE0NC4wNDZ6Ii8+PC9nPjwvZz48L3N2Zz4=\",\n \"name\": {\n \"en\": \"Living room\",\n \"de\": \"Wohnzimmer\",\n \"ru\": \"Гостиная\",\n \"pt\": \"Sala de estar\",\n \"nl\": \"Woonkamer\",\n \"fr\": \"Salon\",\n \"it\": \"Soggiorno\",\n \"es\": \"Sala\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.sleeping_room\": {\n \"_id\": \"enum.rooms.sleeping_room\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ2NCwyNjRWODhIMTZ2MTc2SDB2ODBoNDh2NDhoNjR2LTQ4aDI1NnY0OGg2NHYtNDhoNDh2LTgwSDQ2NHogTTMyLDEwNGg0MTZ2MTYwaC0xNnYtMjRjMC0yMi4wOTEtMTcuOTA5LTQwLTQwLTQwDQoJCWgtMTIuNDhjMi45MDgtNC44MzIsNC40NTYtMTAuMzYsNC40OC0xNmMwLTE3LjY3My0xNC4zMjctMzItMzItMzJoLTY0Yy0xNy42NzMsMC0zMiwxNC4zMjctMzIsMzINCgkJYzAuMDI0LDUuNjQsMS41NzIsMTEuMTY4LDQuNDgsMTZoLTQwLjk2YzIuOTA4LTQuODMyLDQuNDU2LTEwLjM2LDQuNDgtMTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMyaC02NA0KCQljLTE3LjY3MywwLTMyLDE0LjMyNy0zMiwzMmMwLjAyNCw1LjY0LDEuNTcyLDExLjE2OCw0LjQ4LDE2SDg4Yy0yMi4wOTEsMC00MCwxNy45MDktNDAsNDB2MjRIMzJWMTA0eiBNMzkyLDIxNg0KCQljMTMuMjU1LDAsMjQsMTAuNzQ1LDI0LDI0djI0SDY0di0yNGMwLTEzLjI1NSwxMC43NDUtMjQsMjQtMjRIMzkyeiBNMTEyLDE4NGMwLTguODM3LDcuMTYzLTE2LDE2LTE2aDY0YzguODM3LDAsMTYsNy4xNjMsMTYsMTYNCgkJcy03LjE2MywxNi0xNiwxNmgtNjRDMTE5LjE2MywyMDAsMTEyLDE5Mi44MzcsMTEyLDE4NHogTTI3MiwxODRjMC04LjgzNyw3LjE2My0xNiwxNi0xNmg2NGM4LjgzNywwLDE2LDcuMTYzLDE2LDE2DQoJCXMtNy4xNjMsMTYtMTYsMTZoLTY0QzI3OS4xNjMsMjAwLDI3MiwxOTIuODM3LDI3MiwxODR6IE05NiwzNzZINjR2LTMyaDMyVjM3NnogTTQxNiwzNzZoLTMydi0zMmgzMlYzNzZ6IE00NjQsMzI4SDE2di00OGg0NDhWMzI4DQoJCXoiLz4NCjwvZz4NCjxnPg0KCTxyZWN0IHg9IjQ4IiB5PSIxMjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iNDE2IiB5PSIxMjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iODAiIHk9IjEyMCIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iNDgiIHk9IjE1MiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjQwIi8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSI0MTYiIHk9IjE1MiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjQwIi8+DQo8L2c+DQoNCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Sleeping room\",\n \"de\": \"Schlafzimmer\",\n \"ru\": \"Спальня\",\n \"pt\": \"Quarto de dormir\",\n \"nl\": \"Slaapkamer\",\n \"fr\": \"Chambre à coucher\",\n \"it\": \"Camera da letto\",\n \"es\": \"Dormitorio\",\n \"pl\": \"Sypialnia\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.kitchen\": {\n \"_id\": \"enum.rooms.kitchen\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTAsMjA4djQ4aDE2djIyNGg0NDhWMjU2aDE2di00OEgweiBNMjA4LDQ2NEgzMlYyNTZoMTc2VjQ2NHogTTI4OCw0NjRoLTY0VjMyMGg2NFY0NjR6IE0zNjgsNDY0aC02NFYzMjBoNjRWNDY0eg0KCQkgTTQ0OCw0NjRoLTY0VjMyMGg2NFY0NjR6IE00NDgsMzA0SDIyNHYtNDhoMjI0VjMwNHogTTQ2NCwyNDBIMTZ2LTE2aDQ0OFYyNDB6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNNDgsMzM2djExMmgxNDRWMzM2SDQ4eiBNMTc2LDQzMkg2NHYtODBoMTEyVjQzMnoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik03MiwyNzJjLTEzLjI1NSwwLTI0LDEwLjc0NS0yNCwyNHMxMC43NDUsMjQsMjQsMjRzMjQtMTAuNzQ1LDI0LTI0Uzg1LjI1NSwyNzIsNzIsMjcyeiBNNzIsMzA0Yy00LjQxOCwwLTgtMy41ODItOC04DQoJCQlzMy41ODItOCw4LThzOCwzLjU4Miw4LDhTNzYuNDE4LDMwNCw3MiwzMDR6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNMTY4LDI3MmMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTMTgxLjI1NSwyNzIsMTY4LDI3MnogTTE2OCwzMDRjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzE3Mi40MTgsMzA0LDE2OCwzMDR6Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIzMDQiIHk9IjI3MiIgd2lkdGg9IjY0IiBoZWlnaHQ9IjE2Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIyNTYiIHk9IjMzNiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIzMzYiIHk9IjM2OCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjMyIi8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSI0MDAiIHk9IjM2OCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjMyIi8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNMjA4LDB2ODYuMDhsLTI0LTQ4VjBINDB2MzguMDhMMC44OCwxMTYuNGMtMS45ODgsMy45NDYtMC40MDEsOC43NTYsMy41NDQsMTAuNzQ0QzUuNTM0LDEyNy43MDMsNi43NTgsMTI3Ljk5Niw4LDEyOGg0NzINCgkJVjBIMjA4eiBNNTYsMTZoMTEydjE2SDU2VjE2eiBNMjAuOTYsMTEybDMyLTY0aDExOC4wOGwzMiw2NEgyMC45NnogTTMzNiwxMTJIMjI0VjE2aDExMlYxMTJ6IE00NjQsMTEySDM1MlYxNmgxMTJWMTEyeiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iMzA0IiB5PSI4MCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIzNjgiIHk9IjgwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiLz4NCjwvZz4NCjxnPg0KCTxyZWN0IHg9Ijk2IiB5PSIzNjgiIHdpZHRoPSI0OCIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPC9zdmc+DQo=\",\n \"name\": {\n \"en\": \"Kitchen\",\n \"de\": \"Küche\",\n \"ru\": \"Кухня\",\n \"pt\": \"Cozinha\",\n \"nl\": \"Keuken\",\n \"fr\": \"Cuisine\",\n \"it\": \"Cucina\",\n \"es\": \"Cocina\",\n \"pl\": \"Kuchnia\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.office\": {\n \"_id\": \"enum.rooms.office\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJCTxwYXRoIGQ9Ik0yMjQsMTIwdjExMmgyMjRWMTIwSDIyNHogTTQzMiwyMTZIMjQwdi04MGgxOTJWMjE2eiIvPg0KPC9nPg0KPGc+DQoJCTxwYXRoIGQ9Ik0zMzYsMTUyYy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjRzMTAuNzQ1LDI0LDI0LDI0czI0LTEwLjc0NSwyNC0yNFMzNDkuMjU1LDE1MiwzMzYsMTUyeiBNMzM2LDE4NGMtNC40MTgsMC04LTMuNTgyLTgtOA0KCQkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzM0MC40MTgsMTg0LDMzNiwxODR6Ii8+DQo8L2c+DQo8Zz4NCgkJPHBhdGggZD0iTTE3Niw4OFY0OGMwLTQuNDE4LTMuNTgyLTgtOC04aC04VjE2YzAtNC40MTgtMy41ODItOC04LThINDBjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MjRoLThjLTQuNDE4LDAtOCwzLjU4Mi04LDh2NDBIMHYzODQNCgkJCWgyMDhWMjY0aDIwOHYyMDhoNjRWODhIMTc2eiBNNDgsMjRoOTZ2MTZINDhWMjR6IE0zMiw1NmgxMjh2MzJIMzJWNTZ6IE0xOTIsNDU2SDE2VjIwMGgxNzZWNDU2eiBNMTkyLDE4NEgxNnYtODBoMTc2VjE4NHoNCgkJCSBNNDY0LDQ1NmgtMzJWMjY0aDMyVjQ1NnogTTQ2NCwyNDhIMjA4VjEwNGgyNTZWMjQ4eiIvPg0KPC9nPg0KPGc+DQoJCTxyZWN0IHg9IjgwIiB5PSIxMzYiIHdpZHRoPSI0OCIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJCTxwYXRoIGQ9Ik0xNTIsMjE2Yy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjRzMTAuNzQ1LDI0LDI0LDI0czI0LTEwLjc0NSwyNC0yNFMxNjUuMjU1LDIxNiwxNTIsMjE2eiBNMTUyLDI0OGMtNC40MTgsMC04LTMuNTgyLTgtOA0KCQkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzE1Ni40MTgsMjQ4LDE1MiwyNDh6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==\",\n \"name\": {\n \"en\": \"Office\",\n \"de\": \"Büro\",\n \"ru\": \"офис\",\n \"pt\": \"Escritório\",\n \"nl\": \"Kantoor\",\n \"fr\": \"Bureau\",\n \"it\": \"Ufficio\",\n \"es\": \"Oficina\",\n \"pl\": \"Gabinet\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.nursery\": {\n \"_id\": \"enum.rooms.nursery\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQwLDQzMmMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTNTMuMjU1LDQzMiw0MCw0MzJ6IE00MCw0NjRjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzQ0LjQxOCw0NjQsNDAsNDY0eiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTQ0MCw0MzJjLTEzLjI1NSwwLTI0LDEwLjc0NS0yNCwyNHMxMC43NDUsMjQsMjQsMjRzMjQtMTAuNzQ1LDI0LTI0UzQ1My4yNTUsNDMyLDQ0MCw0MzJ6IE00NDAsNDY0Yy00LjQxOCwwLTgtMy41ODItOC04DQoJCXMzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOFM0NDQuNDE4LDQ2NCw0NDAsNDY0eiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTQxNiwxMTJ2NDhINjR2LTQ4SDE2djMyMGg0OHYtNDhoMzUydjQ4aDQ4VjExMkg0MTZ6IE00OCw0MTZIMzJWMTI4aDE2VjQxNnogTTY0LDIwOGgyNHY4MEg2NFYyMDh6IE02NCwzMDRoMjR2MzJINjRWMzA0DQoJCXogTTQxNiwzNjhINjR2LTE2aDM1MlYzNjh6IE0xMjAsMzA0djMyaC0xNnYtMzJIMTIweiBNMTA0LDI4OHYtODBoMTZ2ODBIMTA0eiBNMTUyLDMwNHYzMmgtMTZ2LTMySDE1MnogTTEzNiwyODh2LTgwaDE2djgwSDEzNnoNCgkJIE0xODQsMzA0djMyaC0xNnYtMzJIMTg0eiBNMTY4LDI4OHYtODBoMTZ2ODBIMTY4eiBNMjE2LDMwNHYzMmgtMTZ2LTMySDIxNnogTTIwMCwyODh2LTgwaDE2djgwSDIwMHogTTI0OCwzMDR2MzJoLTE2di0zMkgyNDh6DQoJCSBNMjMyLDI4OHYtODBoMTZ2ODBIMjMyeiBNMjgwLDMwNHYzMmgtMTZ2LTMySDI4MHogTTI2NCwyODh2LTgwaDE2djgwSDI2NHogTTMxMiwzMDR2MzJoLTE2di0zMkgzMTJ6IE0yOTYsMjg4di04MGgxNnY4MEgyOTZ6DQoJCSBNMzQ0LDMwNHYzMmgtMTZ2LTMySDM0NHogTTMyOCwyODh2LTgwaDE2djgwSDMyOHogTTM3NiwzMDR2MzJoLTE2di0zMkgzNzZ6IE0zNjAsMjg4di04MGgxNnY4MEgzNjB6IE00MTYsMzM2aC0yNHYtMzJoMjRWMzM2eg0KCQkgTTQxNiwyODhoLTI0di04MGgyNFYyODh6IE00MTYsMTkySDY0di0xNmgzNTJWMTkyeiBNNDQ4LDQxNmgtMTZWMTI4aDE2VjQxNnoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik0yOTYsNTAuNzJjLTQuNTA5LDAuMDM0LTguOTE3LDEuMzM3LTEyLjcyLDMuNzZjLTEwLjMxMy03LjY4MS0yMi40OTUtMTIuNDYtMzUuMjgtMTMuODRWMGgtMTZ2NDAuNjQNCgkJYy0xMi43ODUsMS4zOC0yNC45NjcsNi4xNTktMzUuMjgsMTMuODRjLTMuODAzLTIuNDIzLTguMjExLTMuNzI2LTEyLjcyLTMuNzZjLTEzLjI1NSwwLTI0LDEwLjc0NS0yNCwyNGMwLDEzLjI1NSwxMC43NDUsMjQsMjQsMjQNCgkJczI0LTEwLjc0NSwyNC0yNGMtMC4wMTUtMi43MjMtMC40NzUtNS40MjUtMS4zNi04YzE5Ljg1NS0xNC41NjUsNDYuODY1LTE0LjU2NSw2Ni43MiwwYy0wLjg4NSwyLjU3NS0xLjM0NSw1LjI3Ny0xLjM2LDgNCgkJYzAsMTMuMjU1LDEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRDMzIwLDYxLjQ2NSwzMDkuMjU1LDUwLjcyLDI5Niw1MC43MnogTTE4NCw4Mi43MmMtNC40MTgsMC04LTMuNTgyLTgtOA0KCQljMC00LjQxOCwzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOEMxOTIsNzkuMTM4LDE4OC40MTgsODIuNzIsMTg0LDgyLjcyeiBNMjk2LDgyLjcyYy00LjQxOCwwLTgtMy41ODItOC04YzAtNC40MTgsMy41ODItOCw4LTgNCgkJczgsMy41ODIsOCw4QzMwNCw3OS4xMzgsMzAwLjQxOCw4Mi43MiwyOTYsODIuNzJ6Ii8+DQo8L2c+DQoNCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Nursery\",\n \"de\": \"Kinderzimmer\",\n \"ru\": \"Детская\",\n \"pt\": \"Berçário\",\n \"nl\": \"Kwekerij\",\n \"fr\": \"Garderie\",\n \"it\": \"Asilo nido\",\n \"es\": \"Guardería\",\n \"pl\": \"Żłobek\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.wc\": {\n \"_id\": \"enum.rooms.wc\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik00NTEsMzE3di0zMGMwLTI0LjgxMy0yMC4xODctNDUtNDUtNDVIMjI2Yy01LjI1OSwwLTEwLjMwNSwwLjkxNS0xNSwyLjU4Vjg3LjQyYzE3LjQ1OS02LjE5MiwzMC0yMi44NjUsMzAtNDIuNDIgICAgYzAtMjQuODEzLTIwLjE4Ny00NS00NS00NUg3NmMtOC4yODQsMC0xNSw2LjcxNi0xNSwxNWMwLDI3LjcxLDAsMjQ2LjM4NSwwLDI3MmMwLDE5LjU1NSwxMi41NDEsMzYuMjI4LDMwLDQyLjQyVjM3NyAgICBjMCwyNy41MTksMTAuODU1LDUzLjkyNywzMCw3My40ODJWNDk3YzAsOC4yODQsNi43MTYsMTUsMTUsMTVjMTcuMzMsMCwyNTQuODQ2LDAsMjcwLDBjOC4yODQsMCwxNS02LjcxNiwxNS0xNXMtNi43MTYtMTUtMTUtMTUgICAgaC00NXYtMTcuOTkxQzQxNS45ODgsNDM1Ljk0Myw0NTEsMzc5LjI4Myw0NTEsMzE3eiBNMjI2LDI3MmgxODBjOC4yNzEsMCwxNSw2LjcyOSwxNSwxNXYxNUgyMTF2LTE1ICAgIEMyMTEsMjc4LjcyOSwyMTcuNzI5LDI3MiwyMjYsMjcyeiBNOTEsMzBoMTA1YzguMjcxLDAsMTUsNi43MjksMTUsMTVzLTYuNzI5LDE1LTE1LDE1SDkxVjMweiBNMTA2LDMwMmMtOC4yNzEsMC0xNS02LjcyOS0xNS0xNSAgICBWOTBoOTBjMCwxNy4zOSwwLDIwMC4yNzEsMCwyMTJIMTA2eiBNMzM5Ljk5NCw0NDAuNzczYy01LjQ2MywyLjM4Ny04Ljk5NCw3Ljc4My04Ljk5NCwxMy43NDVWNDgySDE1MXYtMzcuOTE3ICAgIGMwLTQuMjY3LTEuODE3LTguMzMyLTQuOTk2LTExLjE3N0MxMzAuMTEzLDQxOC42ODQsMTIxLDM5OC4zMDcsMTIxLDM3N3YtNDUuMWMzNC41MzUsMCwyOTYuNTQ1LDAsMjk5LjE2OCwwICAgIEM0MTQuODY0LDM3OS40OTMsMzg0LjU3NSw0MjEuMjk1LDMzOS45OTQsNDQwLjc3M3oiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K\",\n \"name\": {\n \"en\": \"WC\",\n \"de\": \"Toilette\",\n \"ru\": \"Туалет\",\n \"pt\": \"Banheiro\",\n \"nl\": \"WC\",\n \"fr\": \"Toilettes\",\n \"it\": \"Bagno\",\n \"es\": \"Baño\",\n \"pl\": \"Toaleta\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.garage\": {\n \"_id\": \"enum.rooms.kitchen\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4MC4wMTMgNDgwLjAxMyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwLjAxMyA0ODAuMDEzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjI1NnB4Ij4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNMzkwLjk5OSwzMTYuOTUybC0zMC4yOTYtMjQuMjMyYy0xLjExMy0wLjg4Ny0xLjk2OS0yLjA1NS0yLjQ4LTMuMzg0bC0xMS42OC01NC40ICAgIGMtMi40MzItMTEuMDItMTIuMTc5LTE4Ljg4My0yMy40NjQtMTguOTI4SDE1Ni44MDdjLTExLjI2OC0wLjA1Mi0yMS4wMzYsNy43ODgtMjMuNDI0LDE4LjhsLTEyLDUzLjk1MiAgICBjLTAuNDAzLDEuNzgzLTEuMzk5LDMuMzc2LTIuODI0LDQuNTJsLTI5LjYsMjMuNjhjLTUuNjg3LDQuNTUyLTguOTg0LDExLjQ1Mi04Ljk1MiwxOC43MzZ2ODAuMzEyICAgIGMwLjAyMSw2Ljc4OCwyLjkzLDEzLjI0Niw4LDE3Ljc2djMwLjI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMjRoMTc2djI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzIgICAgYzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTMwLjI0YzUuMDctNC41MTQsNy45NzktMTAuOTcyLDgtMTcuNzZ2LTgwLjMxMkM0MDAuMDI0LDMyOC40LDM5Ni43MDcsMzIxLjQ5NiwzOTAuOTk5LDMxNi45NTJ6ICAgICBNMjE4LjE0MywyMzguMzI4bDAtMC4wMDhsNC4yMDgtNi4zMmgxMDAuNzI4YzMuNzcyLTAuMDAxLDcuMDMyLDIuNjMyLDcuODI0LDYuMzJsMTAuNzA0LDQ5LjY4OEgyMjQuNzAzICAgIGM1Ljg4OC0xMS4wOTgsMy44NzEtMjQuNzM2LTQuOTc2LTMzLjY1NkMyMTUuNDYxLDI1MC4wNjQsMjE0Ljc5OSwyNDMuMzY4LDIxOC4xNDMsMjM4LjMyOHogTTE4NC4wNzksMjM4LjMyOHYtMC4wMDhsNC4yMDgtNi4zMiAgICBoMTUuMTQ0Yy01Ljg4LDExLjEwMS0zLjg2MSwyNC43MzYsNC45ODQsMzMuNjU2YzQuMjU4LDQuMjgsNC45MjYsMTAuOTYyLDEuNiwxNmwtNC4yMDgsNi4zMmgtMTUuMTYgICAgYzUuODgtMTEuMTAxLDMuODYxLTI0LjczNi00Ljk4NC0zMy42NTZDMTgxLjQxNCwyNTAuMDM3LDE4MC43NTMsMjQzLjM2MSwxODQuMDc5LDIzOC4zMjh6IE0xNDkuMDM5LDIzOC4yNjQgICAgYzAuNzkyLTMuNjU1LDQuMDI4LTYuMjYyLDcuNzY4LTYuMjU2aDEyLjU2Yy01Ljg4LDExLjEwMS0zLjg2MSwyNC43MzYsNC45ODQsMzMuNjU2YzQuMjU4LDQuMjgsNC45MjYsMTAuOTYyLDEuNiwxNmwtNC4yMDgsNi4zMiAgICBoLTMzLjc2TDE0OS4wMzksMjM4LjI2NHogTTEzNi4wMDcsNDY0LjAwOGgtMzJ2LTI0aDMyVjQ2NC4wMDh6IE0zNzYuMDA3LDQ2NC4wMDhoLTMydi0yNGgzMlY0NjQuMDA4eiBNMzg0LjAwNyw0MTYuMDA4ICAgIGMwLDQuNDE4LTMuNTgyLDgtOCw4aC0yNzJjLTQuNDE4LDAtOC0zLjU4Mi04LTh2LThoMjg4VjQxNi4wMDh6IE0zODQuMDA3LDM5Mi4wMDhoLTI4OHYtNTYuMzEyICAgIGMtMC4wMDYtMi40MzEsMS4xMDMtNC43MywzLjAwOC02LjI0bDI5LjYtMjMuNjhjMC42NDktMC41NTYsMS4yNjktMS4xNDYsMS44NTYtMS43NjhoMjE4LjkyOGMwLjQzMiwwLjQsMC44LDAuOCwxLjI5NiwxLjIgICAgbDMwLjMwNCwyNC4yNGMxLjksMS41MTcsMy4wMDcsMy44MTYsMy4wMDgsNi4yNDhWMzkyLjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik0xMzIuMDA3LDMyOC4wMDhjLTE1LjQ2NCwwLTI4LDEyLjUzNi0yOCwyOGMwLDE1LjQ2NCwxMi41MzYsMjgsMjgsMjhzMjgtMTIuNTM2LDI4LTI4ICAgIEMxNjAuMDA3LDM0MC41NDQsMTQ3LjQ3MSwzMjguMDA4LDEzMi4wMDcsMzI4LjAwOHogTTEzMi4wMDcsMzY4LjAwOGMtNi42MjcsMC0xMi01LjM3My0xMi0xMmMwLTYuNjI3LDUuMzczLTEyLDEyLTEyICAgIGM2LjYyNywwLDEyLDUuMzczLDEyLDEyQzE0NC4wMDcsMzYyLjYzNSwxMzguNjM0LDM2OC4wMDgsMTMyLjAwNywzNjguMDA4eiIgZmlsbD0iIzAwMDAwMCIvPgoJPC9nPgo8L2c+CjxnPgoJPGc+CgkJPHBhdGggZD0iTTM0OC4wMDcsMzI4LjAwOGMtMTUuNDY0LDAtMjgsMTIuNTM2LTI4LDI4YzAsMTUuNDY0LDEyLjUzNiwyOCwyOCwyOGMxNS40NjQsMCwyOC0xMi41MzYsMjgtMjggICAgQzM3Ni4wMDcsMzQwLjU0NCwzNjMuNDcxLDMyOC4wMDgsMzQ4LjAwNywzMjguMDA4eiBNMzQ4LjAwNywzNjguMDA4Yy02LjYyNywwLTEyLTUuMzczLTEyLTEyYzAtNi42MjcsNS4zNzMtMTIsMTItMTIgICAgYzYuNjI3LDAsMTIsNS4zNzMsMTIsMTJDMzYwLjAwNywzNjIuNjM1LDM1NC42MzQsMzY4LjAwOCwzNDguMDA3LDM2OC4wMDh6IiBmaWxsPSIjMDAwMDAwIi8+Cgk8L2c+CjwvZz4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNMjg4LjAwNywzMjguMDA4aC05NmMtOC44MzcsMC0xNiw3LjE2My0xNiwxNnYyNGMwLDguODM3LDcuMTYzLDE2LDE2LDE2aDk2YzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTI0ICAgIEMzMDQuMDA3LDMzNS4xNzEsMjk2Ljg0NCwzMjguMDA4LDI4OC4wMDcsMzI4LjAwOHogTTI4OC4wMDcsMzY4LjAwOGgtOTZ2LTI0aDk2VjM2OC4wMDh6IiBmaWxsPSIjMDAwMDAwIi8+Cgk8L2c+CjwvZz4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNNDc1Ljg3MSwxMjlsLTIzMi0xMjhjLTIuNDA1LTEuMzI3LTUuMzIzLTEuMzI3LTcuNzI4LDBsLTIzMiwxMjhjLTMuODcsMi4xMzEtNS4yODEsNi45OTYtMy4xNSwxMC44NjYgICAgYzEuNDA3LDIuNTU2LDQuMDk1LDQuMTQ0LDcuMDEzLDQuMTQyaDh2MzM2aDQ4di0yOTZoMzUydjI5Nmg0OHYtMzM2aDhjNC40MTgsMC4wMDMsOC4wMDMtMy41NzYsOC4wMDYtNy45OTUgICAgQzQ4MC4wMTUsMTMzLjA5NSw0NzguNDI3LDEzMC40MDcsNDc1Ljg3MSwxMjl6IE0yNDAuMDA3LDE3LjE1MmwyMDAuOTM2LDExMC44NTZIMzkuMDcxTDI0MC4wMDcsMTcuMTUyeiBNNDQ4LjAwNyw0NjQuMDA4aC0xNiAgICB2LTI5NmgtMzg0djI5NmgtMTZ2LTMyMGg0MTZWNDY0LjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik0xNjguMDA3LDc1LjA2NHY0NC45NDRoNjRWNDMuMDY0TDE2OC4wMDcsNzUuMDY0eiBNMjE2LjAwNywxMDQuMDA4aC0zMlY4NC45NTJsMzItMTZWMTA0LjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik0yNDguMDA3LDQzLjA2NHY3Ni45NDRoNjRWNzUuMDY0TDI0OC4wMDcsNDMuMDY0eiBNMjk2LjAwNywxMDQuMDA4aC0zMlY2OC45NTJsMzIsMTZWMTA0LjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K\",\n \"name\": {\n \"en\": \"Garage\",\n \"de\": \"Garage\",\n \"ru\": \"Гараж\",\n \"pt\": \"Garagem\",\n \"nl\": \"Garage\",\n \"fr\": \"Garage\",\n \"it\": \"Box auto\",\n \"es\": \"Garaje\",\n \"pl\": \"Garaż\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n }\n\n\n // todo\n //\n },\n 'enum.functions': {\n \"enum.functions.light\": {\n \"_id\": \"enum.functions.light\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIj4KICA8Zz4KICAgIDxnPgogICAgICA8cGF0aCBkPSJtMjU2LDkyLjNjLTc0LjIsMC0xMjcuOCw1NS4zLTEzNi4zLDExNC43LTUuMywzOS42IDcuNSw3OC4yIDM0LjEsMTA3LjQgMjMuNCwyNSAzNi4yLDU4LjQgMzYuMiw5Mi44bC0uMSw1NC4yYzAsMjEuOSAxOC4xLDM5LjYgNDAuNSwzOS42aDUyLjJjMjIuNCwwIDQwLjUtMTcuNyA0MC41LTM5LjZsLjEtNTQuMmMwLTM1LjQgMTEuNy02Ny44IDM0LjEtOTAuNyAyNC41LTI1IDM3LjMtNTcuMyAzNy4zLTkwLjctMC4xLTc0LjEtNjMtMTMzLjUtMTM4LjYtMTMzLjV6bTQ2LjgsMzY5LjFjMCwxMC40LTguNSwxOC44LTE5LjIsMTguOGgtNTIuMmMtMTAuNywwLTE5LjItOC4zLTE5LjItMTguOHYtMjRoOTAuNXYyNHptMzkuNi0xNTkuNWMtMjYuNiwyNy4xLTQwLjUsNjQuNi00MC41LDEwNS4zdjkuNGgtOTAuNXYtOS40YzAtMzguNi0xNi03Ny4xLTQyLjYtMTA2LjMtMjMuNC0yNS0zMy01Ny4zLTI4LjgtOTAuNyA3LjUtNTAgNTQtOTcgMTE2LjEtOTcgNjUsMCAxMTcuMiw1MS4xIDExNy4yLDExMi42IDAsMjguMS0xMC43LDU1LjItMzAuOSw3Ni4xeiIvPgogICAgICA8cmVjdCB3aWR0aD0iMjEuMyIgeD0iMjQ1LjMiIHk9IjExIiBoZWlnaHQ9IjUwIi8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzg1LjEsMTA3LjQgNDAwLDEyMi4zIDQzNi41LDg3LjIgNDIxLjUsNzIuMyAgICIvPgogICAgICA8cmVjdCB3aWR0aD0iNTIuMiIgeD0iNDQ4LjgiIHk9IjIzNi4yIiBoZWlnaHQ9IjIwLjkiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjUyLjIiIHg9IjExIiB5PSIyMzYuMiIgaGVpZ2h0PSIyMC45Ii8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iOTAuMSw3Mi4yIDc1LjEsODcuMSAxMTEuNiwxMjIuMiAxMjYuNSwxMDcuMyAgICIvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==\",\n \"name\": {\n \"en\": \"Light\",\n \"de\": \"Licht\",\n \"ru\": \"Свет\",\n \"pt\": \"Luz\",\n \"nl\": \"Licht\",\n \"fr\": \"Lumière\",\n \"it\": \"Soggiorno\",\n \"es\": \"Luz\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.blinds\": {\n \"_id\": \"enum.functions.blinds\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJCTxwYXRoIGQ9Ik0wLDB2NTEyaDUxMlYwSDB6IE00ODIsNDgySDMwVjMwaDQ1MlY0ODJ6Ii8+DQo8L2c+DQo8Zz4NCgkJPHBhdGggZD0iTTYwLDYwdjM5MmgzOTJWNjBINjB6IE0yNDEsNDIySDkwVjI3MWgxNTFWNDIyeiBNMjQxLDI0MUg5MFY5MGgxNTFWMjQxeiBNNDIyLDQyMkgyNzFWMjcxaDE1MVY0MjJ6IE00MjIsMjQxSDI3MVY5MGgxNTENCgkJCVYyNDF6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==\",\n \"name\": {\n \"en\": \"Blinds\",\n \"de\": \"Rollladen\",\n \"ru\": \"Жалюзи\",\n \"pt\": \"Cortinas\",\n \"nl\": \"blinds\",\n \"fr\": \"Stores\",\n \"it\": \"blinds\",\n \"es\": \"Persianas\",\n \"pl\": \"Żaluzje\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.weather\": {\n \"_id\": \"enum.functions.weather\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNjAgNjAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYwIDYwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8cGF0aCBkPSJNNTQuOTQ5LDI4LjI1MWMwLjAxOC0wLjA2OSwwLjAzOS0wLjEzNSwwLjA0Mi0wLjIwN0M1NC45OTIsMjguMDI5LDU1LDI4LjAxNiw1NSwyOEM1NSwxNC41NSw0NC4zMjMsMy41NTMsMzEsMy4wMjVWMQ0KCWMwLTAuNTUzLTAuNDQ4LTEtMS0xcy0xLDAuNDQ3LTEsMXYyLjAyNUMxNS42NzcsMy41NTMsNSwxNC41NSw1LDI4YzAsMC4wMTYsMC4wMDgsMC4wMjksMC4wMDksMC4wNDUNCgljMC4wMDMsMC4wNzEsMC4wMjMsMC4xMzcsMC4wNDIsMC4yMDdjMC4wMTYsMC4wNTksMC4wMjUsMC4xMTgsMC4wNSwwLjE3MmMwLjAyNSwwLjA1MywwLjA2NCwwLjA5NywwLjA5OCwwLjE0NQ0KCWMwLjA0MiwwLjA1OSwwLjA4MSwwLjExOCwwLjEzNSwwLjE2N2MwLjAxMSwwLjAxLDAuMDE2LDAuMDI1LDAuMDI4LDAuMDM1YzAuMDM2LDAuMDMsMC4wOCwwLjA0LDAuMTE4LDAuMDY0DQoJYzAuMDU5LDAuMDM3LDAuMTE1LDAuMDc0LDAuMTgyLDAuMDk4YzAuMDcsMC4wMjYsMC4xNDEsMC4wMzQsMC4yMTMsMC4wNDNDNS45MTgsMjguOTgsNS45NTYsMjksNiwyOQ0KCWMwLjAxNSwwLDAuMDI3LTAuMDA4LDAuMDQyLTAuMDA4YzAuMDc2LTAuMDAzLDAuMTQ3LTAuMDI0LDAuMjItMC4wNDRjMC4wNTQtMC4wMTUsMC4xMDktMC4wMjMsMC4xNTgtMC4wNDcNCgljMC4wNTctMC4wMjYsMC4xMDQtMC4wNjgsMC4xNTYtMC4xMDVjMC4wNTUtMC4wNCwwLjExMS0wLjA3NywwLjE1Ny0wLjEyN2MwLjAxMS0wLjAxMiwwLjAyNi0wLjAxNywwLjAzNy0wLjAzDQoJQzguMTgsMjYuOTM3LDEwLjAzOCwyNiwxMiwyNnMzLjgyLDAuOTM3LDUuMjMsMi42MzljMC4wMTksMC4wMjMsMC4wNDgsMC4wMzIsMC4wNjksMC4wNTNjMC4wMjQsMC4wMjQsMC4wMzYsMC4wNTYsMC4wNjMsMC4wNzgNCgljMC4wNCwwLjAzMywwLjA4OCwwLjA0NSwwLjEzLDAuMDcxYzAuMDUxLDAuMDMxLDAuMDk4LDAuMDYyLDAuMTUyLDAuMDgyYzAuMDgyLDAuMDMyLDAuMTY0LDAuMDQ1LDAuMjQ5LDAuMDU0DQoJQzE3LjkzLDI4Ljk4MSwxNy45NjQsMjksMTgsMjljMC4wMTYsMCwwLjAzMS0wLjAwNywwLjA0Ni0wLjAwOGMwLjA1MS0wLjAwMiwwLjA5OC0wLjAxNSwwLjE0OC0wLjAyNQ0KCWMwLjA2OS0wLjAxNCwwLjEzNS0wLjAzLDAuMi0wLjA1OWMwLjA1LTAuMDIyLDAuMDk1LTAuMDUsMC4xNDEtMC4wODFjMC4wMzMtMC4wMjEsMC4wNy0wLjAzMiwwLjEwMS0wLjA1OA0KCWMwLjAyNC0wLjAyLDAuMDM1LTAuMDQ4LDAuMDU3LTAuMDdjMC4wMjMtMC4wMjMsMC4wNTQtMC4wMzUsMC4wNzUtMC4wNjFDMjAuMTgsMjYuOTM3LDIyLjAzOCwyNiwyNCwyNmMxLjg2LDAsMy42MiwwLjg1LDUsMi4zODZWNTUNCgljMCwxLjY1NC0xLjM0NiwzLTMsM3MtMy0xLjM0Ni0zLTNjMC0wLjU1My0wLjQ0OC0xLTEtMXMtMSwwLjQ0Ny0xLDFjMCwyLjc1NywyLjI0Myw1LDUsNXM1LTIuMjQzLDUtNVYyOC4zODYNCglDMzIuMzgsMjYuODUsMzQuMTQsMjYsMzYsMjZjMS45NjIsMCwzLjgyLDAuOTM3LDUuMjMsMi42MzljMC4wMTksMC4wMjMsMC4wNDgsMC4wMzIsMC4wNjksMC4wNTMNCgljMC4wMjQsMC4wMjQsMC4wMzYsMC4wNTYsMC4wNjMsMC4wNzhjMC4wNCwwLjAzMywwLjA4OCwwLjA0NCwwLjEzLDAuMDdjMC4wNTEsMC4wMzEsMC4wOTgsMC4wNjIsMC4xNTMsMC4wODMNCgljMC4wODEsMC4wMzEsMC4xNjMsMC4wNDUsMC4yNDksMC4wNTRDNDEuOTMsMjguOTgxLDQxLjk2NCwyOSw0MiwyOWMwLjAxNiwwLDAuMDMxLTAuMDA3LDAuMDQ2LTAuMDA4DQoJYzAuMDUxLTAuMDAyLDAuMDk5LTAuMDE1LDAuMTQ5LTAuMDI2YzAuMDY4LTAuMDE0LDAuMTM0LTAuMDMsMC4xOTktMC4wNThjMC4wNTEtMC4wMjIsMC4wOTYtMC4wNTEsMC4xNDItMC4wODENCgljMC4wMzMtMC4wMjEsMC4wNy0wLjAzMiwwLjEwMS0wLjA1N2MwLjAyNC0wLjAyLDAuMDM1LTAuMDQ4LDAuMDU2LTAuMDdjMC4wMjMtMC4wMjMsMC4wNTQtMC4wMzUsMC4wNzYtMC4wNjENCglDNDQuMTgsMjYuOTM3LDQ2LjAzOCwyNiw0OCwyNnMzLjgyLDAuOTM3LDUuMjMsMi42MzljMC4wMSwwLjAxMiwwLjAyNCwwLjAxNSwwLjAzNSwwLjAyN2MwLjA3LDAuMDc3LDAuMTU0LDAuMTM1LDAuMjQ1LDAuMTg4DQoJYzAuMDMxLDAuMDE4LDAuMDU1LDAuMDQ1LDAuMDg4LDAuMDU5QzUzLjcyMSwyOC45NjcsNTMuODU2LDI5LDU0LDI5aDBoMGMwLjEyMywwLDAuMjQ1LTAuMDI3LDAuMzYxLTAuMDczDQoJYzAuMDQ1LTAuMDE4LDAuMDgyLTAuMDQ3LDAuMTI0LTAuMDcxYzAuMDUxLTAuMDI5LDAuMTA2LTAuMDQ4LDAuMTUyLTAuMDg3YzAuMDEyLTAuMDEsMC4wMTctMC4wMjQsMC4wMjgtMC4wMzUNCgljMC4wNTQtMC4wNDksMC4wOTItMC4xMDcsMC4xMzUtMC4xNjdjMC4wMzQtMC4wNDgsMC4wNzMtMC4wOTMsMC4wOTgtMC4xNDVDNTQuOTI0LDI4LjM2OSw1NC45MzQsMjguMzEsNTQuOTQ5LDI4LjI1MXogTTQ4LDI0DQoJYy0yLjIxOCwwLTQuMzEyLDAuODk1LTYsMi41MzRDNDAuMzEyLDI0Ljg5NSwzOC4yMTgsMjQsMzYsMjRzLTQuMzEyLDAuODk1LTYsMi41MzRDMjguMzEyLDI0Ljg5NSwyNi4yMTgsMjQsMjQsMjQNCglzLTQuMzEyLDAuODk1LTYsMi41MzRDMTYuMzEyLDI0Ljg5NSwxNC4yMTgsMjQsMTIsMjRjLTEuNzUsMC0zLjQxOCwwLjU2Ni00Ljg3NSwxLjYwNUM4LjMyNywxNC4wNDQsMTguMTI3LDUsMzAsNQ0KCXMyMS42NzMsOS4wNDQsMjIuODc1LDIwLjYwNUM1MS40MTgsMjQuNTY2LDQ5Ljc1LDI0LDQ4LDI0eiIvPg0KPC9zdmc+DQo=\",\n \"name\": {\n \"en\": \"Weather\",\n \"de\": \"Wetter\",\n \"ru\": \"Погода\",\n \"pt\": \"Clima\",\n \"nl\": \"Weer\",\n \"fr\": \"Météo\",\n \"it\": \"Tempo metereologico\",\n \"es\": \"Clima\",\n \"pl\": \"Pogoda\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.heating\": {\n \"_id\": \"enum.functions.heating\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0MC4zNzEsMTU5LjI5MWM4LjA1MSwwLDE1LjQwMy0zLjAzNSwyMC45ODMtOC4wMTZINTA0LjVjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNWMwLTQuMTQyLTMuMzU4LTcuNS03LjUtNy41aC0zMy43NjMNCgkJYzAuNzY0LTIuNzE2LDEuMTgyLTUuNTc2LDEuMTgyLTguNTMzYzAtMi45NTctMC40MTgtNS44MTYtMS4xODItOC41MzJINTA0LjVjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNQ0KCQljMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNWgtNDMuMTQ2Yy01LjU4LTQuOTgxLTEyLjkzMi04LjAxNi0yMC45ODMtOC4wMTZjLTYuMTMzLDAtMTEuODU5LDEuNzY1LTE2LjcwNyw0LjgwNQ0KCQljLTEuMzQyLTExLjcxMS0xMS4zMDktMjAuODM3LTIzLjM3My0yMC44MzdoLTI0LjA0OWMtMTAuMzU0LDAtMTkuMTYsNi43MjQtMjIuMywxNi4wMzJoLTE5LjUzDQoJCWMtMy4xMzktOS4zMDgtMTEuOTQ2LTE2LjAzMi0yMi4zLTE2LjAzMmgtMjQuMDQ4Yy0xMC4zNTQsMC0xOS4xNiw2LjcyNC0yMi4zLDE2LjAzMmgtMTkuNTMNCgkJYy0zLjEzOS05LjMwOC0xMS45NDYtMTYuMDMyLTIyLjMtMTYuMDMyaC0yNC4wNDhjLTEwLjM1NCwwLTE5LjE2LDYuNzI0LTIyLjMsMTYuMDMyaC0xOS41Mw0KCQljLTMuMTM5LTkuMzA4LTExLjk0Ni0xNi4wMzItMjIuMy0xNi4wMzJoLTI0LjA0OWMtMTAuMzU0LDAtMTkuMTYsNi43MjQtMjIuMywxNi4wMzJINjkuODgNCgkJYy0zLjEzOS05LjMwOC0xMS45NDYtMTYuMDMyLTIyLjMtMTYuMDMySDIzLjUzMkMxMC41NTcsODAuMTYxLDAsOTAuNzE4LDAsMTAzLjY5M3YzMDQuNjEzYzAsMTIuOTc2LDEwLjU1NywyMy41MzIsMjMuNTMyLDIzLjUzMg0KCQlINDcuNThjMTAuMzU0LDAsMTkuMTYtNi43MjQsMjIuMy0xNi4wMzJoMTkuNTNjMy4xMzksOS4zMDgsMTEuOTQ2LDE2LjAzMiwyMi4zLDE2LjAzMmgyNC4wNDljMTAuMzU0LDAsMTkuMTYtNi43MjQsMjIuMy0xNi4wMzINCgkJaDE5LjUzYzMuMTM5LDkuMzA4LDExLjk0NiwxNi4wMzIsMjIuMywxNi4wMzJoMjQuMDQ4YzEwLjM1NCwwLDE5LjE2LTYuNzI0LDIyLjMtMTYuMDMyaDE5LjUzDQoJCWMzLjEzOSw5LjMwOCwxMS45NDYsMTYuMDMyLDIyLjMsMTYuMDMyaDI0LjA0OGMxMC4zNTQsMCwxOS4xNi02LjcyNCwyMi4zLTE2LjAzMmgxOS41M2MzLjEzOSw5LjMwOCwxMS45NDYsMTYuMDMyLDIyLjMsMTYuMDMyDQoJCWgyNC4wNDljMTIuOTc2LDAsMjMuNTMyLTEwLjU1NywyMy41MzItMjMuNTMydi0wLjUxNkg1MDQuNWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTgwLjY3N3YtMTcuMDY1DQoJCUg1MDQuNWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTgwLjY3N1YxNTQuNTg3QzQyOC42MzcsMTU3LjU2Niw0MzQuMzA2LDE1OS4yOTEsNDQwLjM3MSwxNTkuMjkxeg0KCQkgTTQ0MC4zNzEsMTExLjE5M2M5LjEyNSwwLDE2LjU0OCw3LjQyMywxNi41NDgsMTYuNTQ4cy03LjQyMywxNi41NDktMTYuNTQ4LDE2LjU0OXMtMTYuNTQ4LTcuNDI0LTE2LjU0OC0xNi41NDkNCgkJUzQzMS4yNDYsMTExLjE5Myw0NDAuMzcxLDExMS4xOTN6IE02My42MTMsMzM2LjY3NmMtNC4xNDIsMC03LjUsMy4zNTgtNy41LDcuNXY2NC4xM2MwLDQuNzA1LTMuODI4LDguNTMzLTguNTMyLDguNTMzSDIzLjUzMg0KCQljLTQuNzA1LDAtOC41MzItMy44MjgtOC41MzItOC41MzJWMTAzLjY5M2MwLTQuNzA1LDMuODI4LTguNTMyLDguNTMyLTguNTMySDQ3LjU4YzQuNzA1LDAsOC41MzIsMy44MjgsOC41MzIsOC41MzJWMzEyLjExDQoJCWMwLDQuMTQyLDMuMzU4LDcuNSw3LjUsNy41YzQuMTQyLDAsNy41LTMuMzU4LDcuNS03LjVWMTU5LjI5aDE3LjA2NHYxOTMuNDE5SDcxLjExM3YtOC41MzMNCgkJQzcxLjExMywzNDAuMDM0LDY3Ljc1NSwzMzYuNjc2LDYzLjYxMywzMzYuNjc2eiBNODguMTc3LDQwMC44MDZINzEuMTEzdi0zMy4wOTdoMTcuMDY0VjQwMC44MDZ6IE04OC4xNzcsMTQ0LjI5SDcxLjExM3YtMzMuMDk3DQoJCWgxNy4wNjRWMTQ0LjI5eiBNMTQ0LjI5LDQwOC4zMDZjMC4wMDEsNC43MDUtMy44MjcsOC41MzMtOC41MzIsOC41MzNoLTI0LjA0OWMtNC43MDUsMC04LjUzMi0zLjgyOC04LjUzMi04LjUzMlYxMDMuNjkzDQoJCWMwLTQuNzA1LDMuODI4LTguNTMyLDguNTMyLTguNTMyaDI0LjA0OWM0LjcwNSwwLDguNTMyLDMuODI4LDguNTMyLDguNTMyVjQwOC4zMDZ6IE0xNzYuMzU1LDQwMC44MDZoLTE3LjA2NHYtMzMuMDk3aDE3LjA2NA0KCQlWNDAwLjgwNnogTTE3Ni4zNTUsMzUyLjcxaC0xNy4wNjRWMTU5LjI5MWgxNy4wNjRWMzUyLjcxeiBNMTc2LjM1NSwxNDQuMjkxaC0xNy4wNjR2LTMzLjA5N2gxNy4wNjRWMTQ0LjI5MXogTTIzMi40NjgsNDA4LjMwNg0KCQljMCw0LjcwNS0zLjgyOCw4LjUzMy04LjUzMiw4LjUzM2gtMjQuMDQ4Yy00LjcwNSwwLTguNTMyLTMuODI4LTguNTMyLTguNTMyVjEwMy42OTNjMC00LjcwNSwzLjgyOC04LjUzMiw4LjUzMi04LjUzMmgyNC4wNDgNCgkJYzQuNzA1LDAsOC41MzIsMy44MjgsOC41MzIsOC41MzJWNDA4LjMwNnogTTI2NC41MzIsNDAwLjgwNmgtMTcuMDY0di0zMy4wOTdoMTcuMDY0VjQwMC44MDZ6IE0yNjQuNTMyLDM1Mi43MWgtMTcuMDY0VjE1OS4yOTENCgkJaDE3LjA2NFYzNTIuNzF6IE0yNjQuNTMyLDE0NC4yOTFoLTE3LjA2NHYtMzMuMDk3aDE3LjA2NFYxNDQuMjkxeiBNMzIwLjY0NSw0MDguMzA2YzAsNC43MDUtMy44MjgsOC41MzMtOC41MzIsOC41MzNoLTI0LjA0OA0KCQljLTQuNzA1LDAtOC41MzItMy44MjgtOC41MzItOC41MzJWMTAzLjY5M2MwLTQuNzA1LDMuODI4LTguNTMyLDguNTMyLTguNTMyaDI0LjA0OGM0LjcwNSwwLDguNTMyLDMuODI4LDguNTMyLDguNTMyVjQwOC4zMDZ6DQoJCSBNMzM1LjY0NSwxMTEuMTkzaDE3LjA2NHYzMy4wOTdoLTE3LjA2NFYxMTEuMTkzeiBNMzUyLjcwOSw0MDAuODA3aC0xNy4wNjRWMzY3LjcxaDE3LjA2NFY0MDAuODA3eiBNNDA4LjgyMyw0MDguMzA3DQoJCWMwLDQuNzA1LTMuODI4LDguNTMyLTguNTMyLDguNTMyaC0yNC4wNDljLTQuNzA1LDAtOC41MzItMy44MjgtOC41MzItOC41MzJWMTk5Ljg5YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjUNCgkJYy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41djE1Mi44MmgtMTcuMDY0VjE1OS4yOTFoMTcuMDY0djguNTMzYzAsNC4xNDIsMy4zNTgsNy41LDcuNSw3LjVjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNXYtNjQuMTMNCgkJYzAtNC43MDUsMy44MjgtOC41MzIsOC41MzItOC41MzJoMjQuMDQ5YzQuNzA1LDAsOC41MzIsMy44MjgsOC41MzIsOC41MzJWNDA4LjMwN3oiLz4NCjwvZz4NCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Heating\",\n \"de\": \"Heizung\",\n \"ru\": \"Отопление\",\n \"pt\": \"Aquecimento\",\n \"nl\": \"Verwarming\",\n \"fr\": \"Chauffage\",\n \"it\": \"Riscaldamento\",\n \"es\": \"Calefacción\",\n \"pl\": \"Ogrzewanie\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.backlight\": {\n \"_id\": \"enum.functions.backlight\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTExLjk5MSA1MTEuOTkxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTEuOTkxIDUxMS45OTE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik05MS40OSwzMzYuNTcybC0yMS4zMzMsNDIuNjY3Yy0yLjYyNCw1LjI2OS0wLjQ5MSwxMS42NjksNC43NzksMTQuMzE1YzEuNTM2LDAuNzQ3LDMuMTU3LDEuMTA5LDQuNzU3LDEuMTA5DQoJCWMzLjkwNCwwLDcuNjU5LTIuMTc2LDkuNTM2LTUuODg4bDIxLjMzMy00Mi42NjdjMi42NDUtNS4yNjksMC41MTItMTEuNjY5LTQuNzU3LTE0LjMxNQ0KCQlDMTAwLjU1NywzMjkuMTY5LDk0LjE1NywzMzEuMzI0LDkxLjQ5LDMzNi41NzJ6Ii8+DQoJPHBhdGggZD0iTTUwNy41NTQsMTgzLjM1NmMtMi43NzMtMi4wMjctNi4zMzYtMi41MzktOS42LTEuNDkzbC00OS40MDgsMTYuNDY5Yy0xMy4wOTksNC4zNzMtMjEuODg4LDE2LjU3Ni0yMS44ODgsMzAuMzc5djM2Ljg4NQ0KCQljLTI0LjMyLTQuOTQ5LTQyLjY2Ny0yNi40OTYtNDIuNjY3LTUyLjI0NXYtODUuMzMzYzAtMzEuMjMyLTEyLjEzOS02MC43MTUtMzQuMzA0LTgzLjExNQ0KCQljLTIyLjMxNS0yMi4xMDEtNTEuNzk3LTM0LjI0LTgzLjAyOS0zNC4yNGMtNjQuNjgzLDAtMTE3LjMzMyw1Mi42NTEtMTE3LjMzMywxMTcuMzMzdjUzLjMzM2gtMzJjLTE3LjY0MywwLTMyLDE0LjM1Ny0zMiwzMg0KCQl2NDAuMTQ5TDEuMTIyLDQyMS45MDVjLTEuNjQzLDMuMzA3LTEuNDcyLDcuMjMyLDAuNDQ4LDEwLjM2OGMxLjk2MywzLjEzNiw1LjM5Nyw1LjA1Niw5LjA4OCw1LjA1Nmg3NS43NTUNCgkJYzUuMjI3LDM2LjA5NiwzNi4wNzUsNjQsNzMuNTc5LDY0czY4LjM1Mi0yNy45MDQsNzMuNTc5LTY0aDc1Ljc1NWMwLjE0OSwwLDAuMzIsMC4wMjEsMC40MjcsMA0KCQljNS44ODgsMCwxMC42NjctNC43NzksMTAuNjY3LTEwLjY2N2MwLTIuNzUyLTEuMDI0LTUuMjQ4LTIuNzMxLTcuMTI1bC04My4wMjktMTY2LjA1OXYtNDAuMTQ5YzAtMTcuNjQzLTE0LjM1Ny0zMi0zMi0zMmgtMzINCgkJdi01My4zMzNjMC01Mi45MjgsNDMuMDcyLTk2LDk2LTk2YzI1LjU1NywwLDQ5LjcyOCw5Ljk2Myw2Ny45NDcsMjcuOTg5YzE4LjA5MSwxOC4yODMsMjguMDUzLDQyLjQ1MywyOC4wNTMsNjguMDExdjg1LjMzMw0KCQljMCwzNy41MDQsMjcuOTA0LDY4LjM1Miw2NCw3My41Nzl2MzkuMDRjMCwxMy43ODEsOC43ODksMjYuMDA1LDIxLjg2NywzMC4zNTdsNDkuNDA4LDE2LjQ2OQ0KCQljMS4xMzEsMC4zNjMsMi4yNjEsMC41NTUsMy4zOTIsMC41NTVjMi4yMTksMCw0LjM5NS0wLjY4Myw2LjIyOS0yLjAyN2MyLjc5NS0xLjk4NCw0LjQzNy01LjIwNSw0LjQzNy04LjY0VjE5MS45OTYNCgkJQzUxMS45OTEsMTg4LjU2MSw1MTAuMzQ5LDE4NS4zNCw1MDcuNTU0LDE4My4zNTZ6IE0xNTkuOTkxLDQ3OS45OTZjLTI1Ljc0OSwwLTQ3LjMxNy0xOC4zNDctNTIuMjY3LTQyLjY2N2gxMDQuNTMzDQoJCUMyMDcuMzA5LDQ2MS42NDksMTg1Ljc0MSw0NzkuOTk2LDE1OS45OTEsNDc5Ljk5NnogTTI5Mi4wODcsNDE1Ljk5NmgtNjguMDk2aC0xMjhIMjcuOTE3bDc0LjY2Ny0xNDkuMzMzaDExNC44MzcNCgkJTDI5Mi4wODcsNDE1Ljk5NnogTTIwMi42NTgsMjAyLjY2MmM1Ljg2NywwLDEwLjY2Nyw0LjgsMTAuNjY3LDEwLjY2N3YzMkgxMDYuNjU4di0zMmMwLTUuODY3LDQuOC0xMC42NjcsMTAuNjY3LTEwLjY2N0gyMDIuNjU4eg0KCQkgTTQ5MC42NTgsMzQ3Ljg3OGwtMzUuMzcxLTExLjgxOWMtNC4zNzMtMS40MjktNy4yOTYtNS41MDQtNy4yOTYtMTAuMTEydi05Ny4yNTljMC00LjYwOCwyLjkyMy04LjY2MSw3LjI5Ni0xMC4xMTINCgkJbDM1LjM3MS0xMS43OTdWMzQ3Ljg3OHoiLz4NCjwvZz4NCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Backlight\",\n \"de\": \"Hintergrundbeleuchtung\",\n \"ru\": \"Подсветка\",\n \"pt\": \"Luz de fundo\",\n \"nl\": \"Backlight\",\n \"fr\": \"Rétro-éclairage\",\n \"it\": \"Controluce\",\n \"es\": \"Iluminar desde el fondo\",\n \"pl\": \"Podświetlenie\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.household\": {\n \"_id\": \"enum.functions.household\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIj4KICA8Zz4KICAgIDxnPgogICAgICA8cGF0aCBkPSJtMjU2LDkyLjNjLTc0LjIsMC0xMjcuOCw1NS4zLTEzNi4zLDExNC43LTUuMywzOS42IDcuNSw3OC4yIDM0LjEsMTA3LjQgMjMuNCwyNSAzNi4yLDU4LjQgMzYuMiw5Mi44bC0uMSw1NC4yYzAsMjEuOSAxOC4xLDM5LjYgNDAuNSwzOS42aDUyLjJjMjIuNCwwIDQwLjUtMTcuNyA0MC41LTM5LjZsLjEtNTQuMmMwLTM1LjQgMTEuNy02Ny44IDM0LjEtOTAuNyAyNC41LTI1IDM3LjMtNTcuMyAzNy4zLTkwLjctMC4xLTc0LjEtNjMtMTMzLjUtMTM4LjYtMTMzLjV6bTQ2LjgsMzY5LjFjMCwxMC40LTguNSwxOC44LTE5LjIsMTguOGgtNTIuMmMtMTAuNywwLTE5LjItOC4zLTE5LjItMTguOHYtMjRoOTAuNXYyNHptMzkuNi0xNTkuNWMtMjYuNiwyNy4xLTQwLjUsNjQuNi00MC41LDEwNS4zdjkuNGgtOTAuNXYtOS40YzAtMzguNi0xNi03Ny4xLTQyLjYtMTA2LjMtMjMuNC0yNS0zMy01Ny4zLTI4LjgtOTAuNyA3LjUtNTAgNTQtOTcgMTE2LjEtOTcgNjUsMCAxMTcuMiw1MS4xIDExNy4yLDExMi42IDAsMjguMS0xMC43LDU1LjItMzAuOSw3Ni4xeiIvPgogICAgICA8cmVjdCB3aWR0aD0iMjEuMyIgeD0iMjQ1LjMiIHk9IjExIiBoZWlnaHQ9IjUwIi8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzg1LjEsMTA3LjQgNDAwLDEyMi4zIDQzNi41LDg3LjIgNDIxLjUsNzIuMyAgICIvPgogICAgICA8cmVjdCB3aWR0aD0iNTIuMiIgeD0iNDQ4LjgiIHk9IjIzNi4yIiBoZWlnaHQ9IjIwLjkiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjUyLjIiIHg9IjExIiB5PSIyMzYuMiIgaGVpZ2h0PSIyMC45Ii8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iOTAuMSw3Mi4yIDc1LjEsODcuMSAxMTEuNiwxMjIuMiAxMjYuNSwxMDcuMyAgICIvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==\",\n \"name\": {\n \"en\": \"Household\",\n \"de\": \"Haushalt\",\n \"ru\": \"Домашнее хозяйство\",\n \"pt\": \"Casa\",\n \"nl\": \"Huishouden\",\n \"fr\": \"Ménage\",\n \"it\": \"Domestico\",\n \"es\": \"Casa\",\n \"pl\": \"Gospodarstwo domowe\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.audio\": {\n \"_id\": \"enum.functions.audio\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDc3LjIxNiA0NzcuMjE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NzcuMjE2IDQ3Ny4yMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik00NTMuODU4LDEwNS4xMTZ2LTkxLjZjMC00LjMtMi4xLTguNC01LjUtMTAuOWMtMy41LTIuNS04LTMuMy0xMi4xLTJsLTI3Mi45LDg2LjdjLTUuNiwxLjgtOS40LDctOS40LDEyLjl2OTEuN3YwLjF2MTc1LjMNCgkJYy0xNC4zLTkuOS0zMi42LTE1LjMtNTEuOC0xNS4zYy0yMC4zLDAtMzkuNiw2LjEtNTQuMywxNy4xYy0xNS44LDExLjktMjQuNSwyOC0yNC41LDQ1LjVzOC43LDMzLjYsMjQuNSw0NS41DQoJCWMxNC43LDExLDMzLjksMTcuMSw1NC4zLDE3LjFzMzkuNi02LjEsNTQuMy0xNy4xYzE1LjgtMTEuOSwyNC41LTI4LDI0LjUtNDUuNXYtMjEyLjhsMjQ1LjktNzguMnYxNTYuNg0KCQljLTE0LjMtOS45LTMyLjYtMTUuMy01MS44LTE1LjNjLTIwLjMsMC0zOS42LDYuMS01NC4zLDE3LjFjLTE1LjgsMTEuOS0yNC41LDI4LTI0LjUsNDUuNXM4LjcsMzMuNiwyNC41LDQ1LjUNCgkJYzE0LjcsMTEsMzMuOSwxNy4xLDU0LjMsMTcuMXMzOS42LTYuMSw1NC4zLTE3LjFjMTUuOC0xMS45LDI0LjUtMjgsMjQuNS00NS41di0yMjIuMw0KCQlDNDUzLjg1OCwxMDUuMTE2LDQ1My44NTgsMTA1LjExNiw0NTMuODU4LDEwNS4xMTZ6IE0xMDIuMTU4LDQ1MC4yMTZjLTI4LjEsMC01MS44LTE2LjMtNTEuOC0zNS42YzAtMTkuMywyMy43LTM1LjYsNTEuOC0zNS42DQoJCXM1MS44LDE2LjMsNTEuOCwzNS42QzE1My45NTgsNDM0LjAxNiwxMzAuMjU4LDQ1MC4yMTYsMTAyLjE1OCw0NTAuMjE2eiBNMTgwLjk1OCwxNzMuNDE2di02My40bDI0NS45LTc4LjF2NjMuNEwxODAuOTU4LDE3My40MTZ6DQoJCSBNMzc1LjE1OCwzNjMuMTE2Yy0yOC4xLDAtNTEuOC0xNi4zLTUxLjgtMzUuNmMwLTE5LjMsMjMuNy0zNS42LDUxLjgtMzUuNnM1MS44LDE2LjMsNTEuOCwzNS42DQoJCUM0MjYuODU4LDM0Ni44MTYsNDAzLjE1OCwzNjMuMTE2LDM3NS4xNTgsMzYzLjExNnoiLz4NCjwvZz4NCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Audio/Music\",\n \"de\": \"Audio/Musik\",\n \"ru\": \"Аудио/Музыка\",\n \"pt\": \"Áudio/Música\",\n \"nl\": \"Audio/Muziek\",\n \"fr\": \"Audio/Musique\",\n \"it\": \"Audio/Musica\",\n \"es\": \"Audio/Música\",\n \"pl\": \"Audio/Muzyka\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.security\": {\n \"_id\": \"enum.functions.security\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTI1Niw0MC4wMWMtNS41MzgsMC05Ljk5LDQuNDYtOS45OSw5Ljk5YzAsNS4xNDcsMy44NzIsOS40Myw4Ljk5LDkuOTM4YzUuOTI1LDAuNTg4LDEwLjk5LTQuMDI3LDEwLjk5LTkuOTM4DQoJCUMyNjUuOTksNDQuNDYyLDI2MS41Myw0MC4wMSwyNTYsNDAuMDF6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNNDU2LDYwYy0yNy41NywwLTUwLTIyLjQzLTUwLTUwYzAtNS41MjItNC40NzgtMTAtMTAtMTBIMTE2Yy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwYzAsMjcuNTctMjIuNDMsNTAtNTAsNTANCgkJYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjE2My4xOWMwLDEyNy4xNzcsODIuODk1LDI0MS4xMzUsMjA3LjEyOCwyNzguMzg5YzAuOTM3LDAuMjgsMS45MDQsMC40MjEsMi44NzIsMC40MjENCgkJYzAuOTY4LDAsMS45MzctMC4xNDEsMi44NzMtMC40MjJDMzgwLjQxNSw0NzUuMTE5LDQ2NiwzNjMuMTQ5LDQ2NiwyMzMuMTlWNzBDNDY2LDY0LjQ3OCw0NjEuNTIyLDYwLDQ1Niw2MHogTTQ0NiwyMzMuMTkNCgkJYzAsMTE5LjQ0OC03Ni4yMjEsMjIyLjg5Mi0xOTAsMjU4LjM1M0MxNDMuMTI4LDQ1Ni4zNjUsNjYsMzUxLjk4NCw2NiwyMzMuMTlWNzkuMjg4Qzk2LjYxMSw3NC44OSwxMjAuODksNTAuNjExLDEyNS4yODgsMjANCgkJaDI2MS40MjRDMzkxLjExLDUwLjYxMSw0MTUuMzg5LDc0Ljg5LDQ0Niw3OS4yODhWMjMzLjE5eiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTQyMC4wMTIsOTIuNDljLTIwLjg1NC05LjEzMy0zNy4zNjktMjUuNjQ4LTQ2LjUwMi00Ni41MDJDMzcxLjkxNiw0Mi4zNSwzNjguMzIyLDQwLDM2NC4zNSw0MGgtNjguMzcNCgkJYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwczQuNDc4LDEwLDEwLDEwaDYyLjA0N2MxMC41NjUsMjAuNjgxLDI3LjI5MiwzNy40MDcsNDcuOTczLDQ3Ljk3M1YyMzMuMTkNCgkJYzAsOTcuODYzLTU4Ljc0OSwxODIuMzAzLTE1MCwyMTYuMTA0Yy05MS4yNTEtMzMuODAyLTE1MC0xMTguMjQxLTE1MC0yMTYuMTA0VjEwNy45NzNDMTI2LjY4MSw5Ny40MDcsMTQzLjQwNyw4MC42ODEsMTUzLjk3Myw2MA0KCQloNjIuMDQ3YzUuNTIyLDAsMTAtNC40NzgsMTAtMTBzLTQuNDc4LTEwLTEwLTEwaC02OC4zN2MtMy45NzIsMC03LjU2NiwyLjM1MS05LjE2LDUuOTg4DQoJCWMtOS4xMzMsMjAuODU0LTI1LjY0OCwzNy4zNjktNDYuNTAyLDQ2LjUwMkM4OC4zNTEsOTQuMDg0LDg2LDk3LjY3OSw4NiwxMDEuNjV2MTMxLjU0YzAsMTA3LjIxMyw2Ni4zMTEsMjAwLjY1MywxNjYuNjY0LDIzNi4xNjYNCgkJYzEuMDc5LDAuMzgyLDIuMjA3LDAuNTczLDMuMzM2LDAuNTczYzEuMTI5LDAsMi4yNTctMC4xOTEsMy4zMzYtMC41NzNDMzU5LjYwNSw0MzMuODczLDQyNiwzNDAuNDksNDI2LDIzMy4xOVYxMDEuNjUNCgkJQzQyNiw5Ny42NzgsNDIzLjY0OSw5NC4wODQsNDIwLjAxMiw5Mi40OXoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik0yNTYsMTQ2Yy00OS42MjYsMC05MCw0MC4zNzQtOTAsOTBjMCw0OS42MjYsNDAuMzc0LDkwLDkwLDkwYzQ5LjYyNiwwLDkwLTQwLjM3NCw5MC05MEMzNDYsMTg2LjM3NCwzMDUuNjI2LDE0NiwyNTYsMTQ2eg0KCQkgTTI1NiwzMDZjLTM4LjU5OCwwLTcwLTMxLjQwMi03MC03MGMwLTM4LjU5OCwzMS40MDItNzAsNzAtNzBjMzguNTk4LDAsNzAsMzEuNDAyLDcwLDcwQzMyNiwyNzQuNTk4LDI5NC41OTgsMzA2LDI1NiwzMDZ6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNMzAzLjA3MSwyMDguOTI4Yy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBMMjQ2LDI1MS44NTdsLTEyLjkyOS0xMi45MjhjLTMuOTA2LTMuOTA0LTEwLjIzNi0zLjkwNC0xNC4xNDMsMA0KCQljLTMuOTA1LDMuOTA1LTMuOTA1LDEwLjIzNywwLDE0LjE0M2wyMCwyMEMyNDAuODgyLDI3NS4wMjMsMjQzLjQ0LDI3NiwyNDYsMjc2czUuMTE4LTAuOTc3LDcuMDcxLTIuOTI5bDUwLTUwDQoJCUMzMDYuOTc2LDIxOS4xNjYsMzA2Ljk3NiwyMTIuODM0LDMwMy4wNzEsMjA4LjkyOHoiLz4NCjwvZz4NCg0KPC9zdmc+DQo=\",\n \"name\": {\n \"en\": \"Security\",\n \"de\": \"Sicherheit\",\n \"ru\": \"Безопасность\",\n \"pt\": \"Segurança\",\n \"nl\": \"Veiligheid\",\n \"fr\": \"Sécurité\",\n \"it\": \"Sicurezza\",\n \"es\": \"Seguridad\",\n \"pl\": \"Bezpieczeństwo\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n }\n // todo\n }\n };\n\n var selectId = function () {\n if (!that.$grid || !that.$grid.selectId) return;\n selectId = that.$grid.selectId.bind(that.$grid);\n return that.$grid.selectId.apply(that.$grid, arguments);\n };\n\n function enumRename(oldId, newId, newCommon, callback) {\n if (tasks.length) {\n var task = tasks.shift();\n if (task.name === 'delObject') {\n that.main.socket.emit(task.name, task.id, function () {\n setTimeout(function () {\n enumRename(undefined, undefined, undefined, callback);\n }, 0);\n });\n } else {\n that.main.socket.emit(task.name, task.id, task.obj, function () {\n setTimeout(function () {\n enumRename(undefined, undefined, undefined, callback);\n }, 0);\n });\n }\n } else {\n _enumRename(oldId, newId, newCommon, function () {\n if (tasks.length) {\n enumRename(undefined, undefined, undefined, callback);\n } else {\n if (callback) callback();\n }\n });\n }\n }\n\n function _enumRename(oldId, newId, newCommon, callback) {\n //Check if this name exists\n if (oldId !== newId && that.main.objects[newId]) {\n showMessage(_('Name yet exists!'), true);\n that.init(true);\n if (callback) callback();\n } else {\n if (oldId === newId) {\n if (newCommon && (newCommon.name !== undefined || newCommon.icon !== undefined || newCommon.color !== undefined)) {\n tasks.push({name: 'extendObject', id: oldId, obj: {common: newCommon}});\n }\n if (callback) callback();\n } else if (that.main.objects[oldId] && that.main.objects[oldId].common && that.main.objects[oldId].common.nondeletable) {\n showMessage(_('Change of enum\\'s id \"%s\" is not allowed!', oldId), true);\n that.init(true);\n if (callback) callback();\n } else {\n var len = oldId.length + 1;\n var children = [];\n for (var e = 0; e < that.list.length; e++) {\n if (that.list[e].substring(0, len) === oldId + '.') {\n children.push(that.list[e]);\n }\n }\n\n that.main.socket.emit('getObject', oldId, function (err, obj) {\n setTimeout(function () {\n if (obj) {\n obj._id = newId;\n if (obj._rev) delete obj._rev;\n if (newCommon && newCommon.name !== undefined) obj.common.name = newCommon.name;\n if (newCommon && newCommon.icon !== undefined) obj.common.icon = newCommon.icon;\n if (newCommon && newCommon.color !== undefined) obj.common.color = newCommon.color;\n tasks.push({name: 'delObject', id: oldId});\n tasks.push({name: 'setObject', id: newId, obj: obj});\n // Rename all children\n var count = 0;\n for (var i = 0; i < children.length; i++) {\n var n = children[i].replace(oldId + '.', newId + '.');\n count++;\n _enumRename(children[i], n, null, function () {\n if (!--count && callback) callback();\n });\n }\n if (!children.length && callback) {\n callback();\n }\n }\n }, 0);\n });\n }\n }\n }\n\n function enumAddChild(parent, newId, common, callback) {\n if (that.main.objects[newId]) {\n showMessage(_('Name yet exists!'), true);\n return false;\n }\n\n that.main.socket.emit('setObject', newId, {\n _id: newId,\n common: {\n name: common.name,\n members: [],\n icon: common.icon,\n color: common.color\n },\n type: 'enum'\n }, callback);\n return true;\n }\n\n function prepareNewEnum(parent) {\n var text = '';\n var id;\n if (parent) {\n var name = parent.replace(/[.#\\\\\\/&?]+/g, '-');\n\n if (standardGroups[parent]) {\n for (id in standardGroups[parent]) {\n if (standardGroups[parent].hasOwnProperty(id) && that.list.indexOf(id) === -1) {\n text += '
  • ' + that.main.getIconFromObj(standardGroups[parent][id]) + getName(standardGroups[parent][id]) + '
  • ';\n }\n }\n }\n if (text) {\n text += '
  • ';\n }\n text += '
  • control_point' + _('custom group') + '
  • ';\n\n that.$gridEnum.find('#btn-new-group-' + name).html(text);\n that.$gridEnum.find('.btn-new-group-btn[data-target=\"btn-new-group-' + name + '\"]').dropdown({\n constrainWidth: false\n });\n that.$gridEnum.find('#btn-new-group-' + name).find('.new-group-item').off('click').on('click', function () {\n var id = $(this).data('id');\n var parent = $(this).data('enum');\n if (!id) {\n createOrEditEnum(null, parent);\n } else {\n var name = parent.replace(/[.#\\\\\\/&?]+/g, '-');\n that.main.saveConfig('enums-active', 'enum-' + name);\n that.main.socket.emit('setObject', id, standardGroups[parent][id], function (err) {\n if (err) {\n that.main.showError(err);\n }\n });\n }\n });\n } else {\n for (id in standardEnums) {\n if (standardEnums.hasOwnProperty(id) && that.list.indexOf(id) === -1) {\n text += '
  • ' + that.main.getIconFromObj(standardEnums[id]) + getName(standardEnums[id]) + '
  • ';\n }\n }\n\n if (text) {\n text += '
  • ';\n }\n text += '
  • control_point' + _('custom enum') + '
  • ';\n that.$gridEnum.find('#btn-new-enum').html(text);\n that.$gridEnum.find('.btn-new-enum-btn').dropdown({\n constrainWidth: false\n });\n that.$gridEnum.find('.new-enum-item').off('click').on('click', function () {\n var id = $(this).data('id');\n if (!id) {\n createOrEditEnum(null);\n } else {\n var name = id.replace(/[.#\\\\\\/&?]+/g, '-');\n that.main.saveConfig('enums-active', 'enum-' + name);\n that.main.socket.emit('setObject', id, standardEnums[id], function (err) {\n if (err) {\n that.main.showError(err);\n }\n });\n }\n });\n }\n }\n\n this.prepare = function () {\n this.isTiles = (this.main.config.enumIsTiles !== undefined && this.main.config.enumIsTiles !== null) ? this.main.config.enumIsTiles : true;\n };\n\n function getName(objects, id) {\n var name;\n if (!id) {\n name = objects;\n } else {\n name = objects[id];\n }\n if (name && name.common && name.common.name) {\n name = translateName(name.common.name);\n } else {\n var parts = id.split('.');\n name = parts.pop();\n name = name[0].toUpperCase() + name.substring(1).toLowerCase();\n }\n return name;\n }\n\n function drawChip(id, group) {\n var text = '';\n text += '
    ' +\n that.main.getIcon(id) +\n '' +\n '' + getName(that.main.objects, id) + '' +\n// '' + id + '' +\n '' +\n 'close' +\n '
    ';\n return text;\n }\n\n function drawEnum(id, $page, scrollTop) {\n var obj = that.main.objects[id];\n var name = id.replace(/[.#\\\\\\/&?]+/g, '-');\n var text =\n '
    ' +\n '
    ' +\n ' library_add' +\n '
      ' +\n ' ' +\n ' edit' +\n ' ' +\n ' ' +\n ' delete' +\n ' ' +\n '
      \\n' +\n ' clear
      \\n' +\n '
      ' +\n '
      ';\n\n text += '
        ';\n\n for (var se = 0; se < that.list.length; se++) {\n if (that.list[se].substring(0, id.length + 1) === id + '.') {\n var en = that.main.objects[that.list[se]];\n var inverted;\n var style = '';\n if (en && en.common && en.common.color) {\n style = 'background: ' + en.common.color + '; ';\n if (that.main.invertColor(en.common.color)) {\n inverted = true;\n style += 'color: white;';\n }\n }\n\n text += '
      • ' +\n that.main.getIcon(that.list[se], null, null, 'icon') +\n '' + getName(that.main.objects, that.list[se]) + '' +\n '

        ' + that.list[se] + '


        ';\n\n if (en && en.common && en.common.members && en.common.members.length) {\n for (var m = 0; m < en.common.members.length; m++) {\n text += drawChip(en.common.members[m], that.list[se]);\n }\n }\n text += 'edit';\n text += 'delete';\n text += '
      • ';\n }\n }\n text += '
      ';\n $page.html(text);\n prepareNewEnum(id);\n scrollTop && $page.find('.enum-collection').scrollTop(scrollTop);\n initFilter(id);\n }\n function applyFilter(id, filter) {\n var $tiles = that.$gridList.find('.enum-collection[data-id=\"' + id + '\"] .collection-item');\n if (!filter) {\n $tiles.show();\n } else {\n filter = filter.toLowerCase();\n $tiles.each(function () {\n var $this = $(this);\n var eid = $this.data('id');\n var name = getName(that.main.objects, eid);\n if (name.toLowerCase().indexOf(filter) !== -1) {\n $this.show();\n } else {\n if (eid.substring(id.length).toLowerCase().indexOf(filter) !== -1) {\n $this.show();\n } else {\n $this.hide();\n }\n }\n });\n }\n }\n\n function initFilter(id) {\n var $filter = that.$gridList.find('.enum-buttons[data-id=\"' + id + '\"] .filter-input');\n var data = {};\n for (var se = 0; se < that.list.length; se++) {\n var eid = that.list[se];\n if (eid.substring(0, id.length + 1) === id + '.') {\n var name = getName(that.main.objects, eid);\n var icon = null;\n if (that.main.objects[eid] &&\n that.main.objects[eid].common &&\n that.main.objects[eid].common.icon) {\n icon = that.main.objects[eid].common.icon;\n }\n\n data[name] = icon;\n }\n }\n var $btn = that.$gridList.find('.enum-buttons[data-id=\"' + id + '\"] .filter-clear');\n $filter.mautocomplete({\n data: data,\n minLength: 0,\n limit: 10\n }).on('change', function () {\n var val = $(this).val();\n applyFilter(id, val);\n if ($(this).val()) {\n $btn.show();\n } else {\n $btn.hide();\n }\n that.main.saveConfig('filter-' + id, val);\n }).on('keyup', function () {\n $(this).trigger('change');\n });\n $btn.off('click').on('click', function () {\n $filter.val('').trigger('change');\n });\n if (that.main.config['filter-' + id]) {\n $filter.val(that.main.config['filter-' + id]).trigger('change');\n } else {\n $btn.hide();\n }\n }\n\n function drawEnumsTiles() {\n var $tableBody = that.$gridList.find('.tree-table-body');\n that.$gridList.removeClass('tree-table-list').addClass('tree-table-tiles');\n that.$gridList.find('.tree-table-buttons').remove();\n\n // create buttons for panels\n that.$gridList.prepend('
      \\n' +\n ' view_list\\n' +\n ' note_add\\n' +\n '
        \\n' +\n ' \\n' +\n ' queue_play_next\\n' +\n ' \\n' +\n '
        ');\n\n\n var text = '
        ';\n text += '
          ';\n var parts;\n for (var e = 0; e < that.list.length; e++) {\n parts = that.list[e].split('.');\n if (parts.length !== 2) continue;\n var name = getName(that.main.objects, that.list[e]);\n text += '
        • ' + that.main.getIcon(that.list[e]) + '' + name + '
        • ';\n }\n text += '
        ';\n text += '
        ';\n for (var se = 0; se < that.list.length; se++) {\n parts = that.list[se].split('.');\n if (parts.length !== 2) continue;\n\n text += '
        ';\n text += '
        ';\n }\n var scrollTop = {};\n $tableBody.find('.enum-collection').each(function () {\n // remember actual offset\n scrollTop[$(this).data('id')] = $(this).scrollTop();\n });\n\n // destroy droppable\n try {\n var $items = that.$gridEnum.find('.tree-table-body .collection').find('.collection-item');\n try {\n if ($items.droppable('instance')) {\n $items.droppable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n } catch (e) {\n\n }\n\n $tableBody.html(text);\n\n if ($tableBody.find('.tabs li').length > 0) {\n $tableBody.find('.tabs').mtabs({\n onShow: function (tab) {\n that.main.saveConfig('enums-active', $(tab).attr('id'));\n }\n });\n if (that.main.config['enums-active'] && !that.main.noSelect) {\n $tableBody.find('.tabs').mtabs('select', that.main.config['enums-active']);\n }\n }\n\n\n $tableBody.find('.page').each(function () {\n drawEnum($(this).data('id'), $(this), scrollTop[$(this).data('id')]);\n });\n $tableBody.find('.btn-new-category').on('click', function () {\n createOrEditEnum(null, $(this).data('id'));\n });\n $tableBody.find('.btn-edit-category').on('click', function () {\n createOrEditEnum($(this).data('id'));\n });\n $tableBody.find('.btn-del-category').on('click', function () {\n deleteEnum($(this).data('id'));\n });\n $tableBody.find('.edit-content').on('click', function () {\n createOrEditEnum($(this).data('id'));\n });\n $tableBody.find('.delete-content').on('click', function () {\n deleteEnum($(this).data('id'));\n });\n $tableBody.find('.close').on('click', function () {\n removeMember($(this).data('id'), $(this).data('enum'));\n });\n\n that.$gridList.find('.btn-edit').off('click').on('click', function () {\n switchEditMode(!that.editMode);\n });\n\n that.$gridList.find('.btn-switch-tiles').off('click').on('click', function () {\n that.isTiles = false;\n that.main.saveConfig('enumIsTiles', that.isTiles);\n\n setTimeout(function () {\n drawEnumsTable();\n }, 50);\n });\n prepareNewEnum();\n\n var $collection = that.$gridEnum.find('.tree-table-body .collection');\n setupDroppableTiles($collection);\n }\n\n function drawEnumsTable() {\n try {\n var $items = that.$gridEnum.find('.tree-table-main').find('tbody>tr.treetable-enum');\n if ($items.droppable('instance')) {\n $items.droppable('destroy');\n }\n } catch (e) {\n console.log(e);\n }\n // extract all enums\n that.$gridList.html('').removeClass('tree-table-tiles').addClass('tree-table-list');\n\n that.$gridList.treeTable({\n objects: that.main.objects,\n root: 'enum',\n columns: ['title', 'name'],\n members: true,\n colors: true,\n icons: true,\n widths: ['calc(100% - 250px)', '250px'],\n //classes: ['', 'treetable-center'],\n name: 'enums',\n buttonsWidth: '40px',\n buttons: [\n {\n text: false,\n icons: {\n primary:'ui-icon-trash'\n },\n click: function (id, children, parent) {\n if (that.main.objects[id]) {\n if (that.main.objects[id].type === 'enum') {\n if (children) {\n // ask if only object must be deleted or just this one\n that.main.confirmMessage(_('All sub-enums of %s will be deleted too?', id), null, 'help', function (result) {\n // If all\n if (result) {\n that.main._delObjects(id, true, function (err) {\n if (!err) {\n showMessage(_('Deleted'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n } // else do nothing\n });\n } else {\n that.main.confirmMessage(_('Are you sure to delete %s?', id), null, 'help', function (result) {\n // If all\n if (result) that.main._delObjects(id, true, function (err) {\n if (!err) {\n showMessage(_('Deleted'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n });\n }\n } else {\n removeMember(id, parent);\n }\n } else {\n if (that.main.objects[parent] && that.main.objects[parent].type === 'enum') {\n removeMember(id, parent);\n } else {\n showMessage(_('Object \"%s\" does not exists. Update the page.', id));\n }\n }\n },\n width: 26,\n height: 20\n }, {\n text: false,\n icons: {\n primary:'ui-icon-pencil'\n },\n match: function (id) {\n return that.main.objects[id] && that.main.objects[id].type === 'enum';\n },\n click: function (id, children, parent) {\n createOrEditEnum(id);\n },\n width: 26,\n height: 20\n }\n ],\n panelButtons: [\n {\n id: 'tab-enums-btn-switch-tiles',\n title: _('change view mode'),\n icon: 'view_module',\n click: function () {\n that.isTiles = true;\n that.main.saveConfig('enumIsTiles', that.isTiles);\n setTimeout(function () {\n drawEnumsTiles();\n }, 50);\n }\n },\n {\n id: 'tab-enums-list-new-enum',\n title: _('New enum'),\n icon: 'note_add',\n click: function () {\n createOrEditEnum(null);\n }\n },\n {\n id: 'tab-enums-list-new-category',\n title: _('New category'),\n icon: 'library_add',\n click: function () {\n createOrEditEnum(null, that.enumEdit);\n }\n },\n {\n id: 'tab-enums-list-edit',\n title: _('Edit'),\n icon: 'edit',\n click: function () {\n switchEditMode(!that.editMode);\n }\n }\n ],\n onChange: function (id, oldId) {\n if (id !== oldId) {\n that.enumEdit = id;\n var obj = that.main.objects[id];\n if (obj && obj.type === 'enum') {\n $('#tab-enums-list-new-enum').removeClass('disabled').attr('title', _('Create new enum, like %s', 'enum.newCategory'));\n var parts = id.split('.');\n if (parts.length === 2) {\n that.$gridList.find('#tab-enums-list-new-category').removeClass('disabled').attr('title', _('Create new category, like %s', id + '.newEnum'));\n } else {\n that.$gridList.find('#tab-enums-list-new-category').addClass('disabled');\n }\n } else {\n that.$gridList.find('#tab-enums-list-new-enum').addClass('disabled');\n that.$gridList.find('#tab-enums-list-new-category').addClass('disabled');\n }\n }\n },\n onReady: setupDroppableTable\n });//.treeTable('show', currentEnum);\n that.$gridList.find('.tree-table-buttons a').addClass('btn-small');\n that.$gridList.find('#tab-enums-list-new-enum').addClass('disabled');\n that.$gridList.find('#tab-enums-list-new-category').addClass('disabled');\n }\n\n function getEnumsChildren(id) {\n var parts = id.split('.');\n var items = [];\n var regex = new RegExp('^' + id.replace(/\\./g, '\\\\.') + '\\\\.');\n for (var se = 0; se < that.list.length; se++) {\n var _parts = that.list[se].split('.');\n if (_parts.length === parts.length + 1 && regex.test(that.list[se])) {\n items.push(that.list[se]);\n }\n }\n return items;\n }\n \n function deleteEnum(id) {\n if (that.main.objects[id].type === 'enum') {\n var children = getEnumsChildren(id);\n \n if (children && children.length) {\n // ask if only object must be deleted or just this one\n that.main.confirmMessage(_('All sub-enums of %s will be deleted too?', id), null, 'help', function (result) {\n // If all\n if (result) {\n that.main._delObjects(id, true, function (err) {\n if (!err) {\n showMessage(_('Deleted'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n } // else do nothing\n });\n } else {\n that.main.confirmMessage(_('Are you sure to delete %s?', id), null, 'help', function (result) {\n // If all\n if (result) that.main._delObjects(id, true, function (err) {\n if (!err) {\n showMessage(_('Deleted'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n });\n }\n }\n }\n \n function removeMember(id, parent) {\n that.main.socket.emit('getObject', parent, function (err, obj) {\n if (obj && obj.common && obj.common.members) {\n var pos = obj.common.members.indexOf(id);\n if (pos !== -1) {\n obj.common.members.splice(pos, 1);\n that.main.socket.emit('setObject', obj._id, obj, function (err) {\n if (!err) {\n showMessage(_('Removed'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n } else {\n showMessage(_('%s is not in the list'));\n }\n }\n });\n }\n\n function addMember(id, parent) {\n that.main.socket.emit('getObject', parent, function (err, obj) {\n if (obj && obj.common) {\n obj.common.members = obj.common.members || [];\n var pos = obj.common.members.indexOf(id);\n if (pos === -1) {\n obj.common.members.push(id);\n obj.common.members.sort();\n that.main.socket.emit('setObject', obj._id, obj, function (err) {\n if (!err) {\n showMessage(_('%s added to %s', id, obj._id));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n } else {\n showMessage(_('Is yet in the list'));\n }\n }\n });\n }\n \n function showMessage(text, duration, isError) {\n if (typeof duration === 'boolean') {\n isError = duration;\n duration = 3000;\n }\n that.main.showToast(that.$gridEnum.find('.tree-table-buttons'), text, null, duration, isError);\n }\n\n function setupDraggable() {\n var $trs = that.$gridEnum.find('.fancytree-container>tbody');\n try {\n if ($trs.sortable('instance')) {\n $trs.sortable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n\n that.$gridEnum.find('.fancytree-container>tbody')\n .sortable({\n connectWith: '#tab-enums .tab-enums-list .tree-table-main.treetable',\n items: '.fancytree-type-draggable',\n appendTo: that.$gridEnum,\n refreshPositions: true,\n helper: function (e, $target) {\n return $('
        ' + $target.find('.fancytree-title').text() + '
        ');\n },\n zIndex: 999990,\n revert: false,\n scroll: false,\n start: function (e, ui) {\n var $prev = ui.item.prev();\n // place this item back where it was\n ui.item.data('prev', $prev);\n that.$gridEnum.addClass('dragging');\n },\n stop: function (e, ui) {\n that.$gridEnum.removeClass('dragging');\n },\n update: function (event, ui) {\n // place this item back where it was\n var $prev = ui.item.data('prev');\n if (!$prev || !$prev.length) {\n $(this).prepend(ui.item);\n } else {\n $($prev).after(ui.item);\n }\n }\n })\n .disableSelection();\n }\n\n this._initObjectTree = function () {\n var settings = {\n objects: main.objects,\n noDialog: true,\n draggable: ['device', 'channel', 'state'],\n name: 'enum-objects',\n expertModeRegEx: /^system\\.|^yunkong2\\.|^_|^[\\w-]+$|^enum\\.|^[\\w-]+\\.admin|^script\\./,\n texts: {\n select: _('Select'),\n cancel: _('Cancel'),\n all: _('All'),\n id: _('ID'),\n ID: _('ID'),\n name: _('Name'),\n role: _('Role'),\n room: _('Room'),\n 'function': _('Function'),\n value: _('Value'),\n type: _('Type'),\n selectid: _('Select ID'),\n from: _('From'),\n lc: _('Last changed'),\n ts: _('Time stamp'),\n wait: _('Processing...'),\n ack: _('Acknowledged'),\n edit: _('Edit'),\n push: _('Trigger event'),\n ok: _('Ok'),\n with: _('With'),\n without: _('Without'),\n copyToClipboard: _('Copy to clipboard'),\n expertMode: _('Toggle expert mode'),\n refresh:\t_('Update'),\n sort: _('Sort alphabetically'),\n button: _('Settings'),\n noData: _('No data')\n },\n filter: {\n type: 'state'\n },\n columns: ['ID', 'name', 'type', 'role']\n };\n\n selectId('init', settings)\n .selectId('show');\n\n setupDraggable();\n };\n\n function setupDroppableTable($treetable) {\n if (!that.editMode) return;\n\n if (!$treetable) {\n $treetable = that.$gridEnum.find('.tree-table-main');\n }\n\n $treetable.find('tbody>tr.treetable-enum').droppable({\n accept: '.fancytree-type-draggable',\n over: function (e, ui) {\n $(this).addClass('tab-accept-item');\n if ($(this).hasClass('not-empty') && !$(this).hasClass('expanded')) {\n var id = $(this).data('tt-id');\n var timer;\n if ((timer = $(this).data('timer'))) {\n clearTimeout(timer);\n }\n $(this).data('timer', setTimeout(function () {\n that.$gridList.treeTable('expand', $(this).data('tt-id'));\n }, 1000));\n }\n },\n out: function (e, ui) {\n $(this).removeClass('tab-accept-item');\n var timer;\n if ((timer = $(this).data('timer'))) {\n clearTimeout(timer);\n $(this).data('timer', null);\n }\n },\n tolerance: 'pointer',\n drop: function (e, ui) {\n $(this).removeClass('tab-accept-item');\n var id = ui.draggable.data('id');\n var enumId = $(this).data('tt-id');\n\n addMember(id, enumId);\n }\n });\n }\n\n function setupDroppableTiles($collection) {\n if (!that.editMode) return;\n\n $collection = $collection || that.$gridEnum.find('.tree-table-body .collection');\n\n var $items = $collection.find('.collection-item');\n try {\n if ($items.droppable('instance')) {\n $items.droppable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n\n $items.droppable({\n accept: '.fancytree-type-draggable',\n over: function (e, ui) {\n $(this).addClass('tab-accept-item');\n },\n out: function (e, ui) {\n $(this).removeClass('tab-accept-item');\n },\n tolerance: 'pointer',\n drop: function (e, ui) {\n $(this).removeClass('tab-accept-item');\n var id = ui.draggable.data('id');\n var enumId = $(this).data('id');\n addMember(id, enumId);\n }\n });\n }\n\n function createOrEditEnum(id, parentId) {\n var idChanged = false;\n var $dialog = that.$gridEnum.find('#tab-enums-dialog-new');\n var oldId = '';\n\n var nameVal = '';\n var idVal = '';\n var originalIdVal = '';\n var iconVal = '';\n var colorVal = '';\n\n var isIdEditable = true;\n\n installFileUpload($dialog, 50000, function (err, text) {\n if (err) {\n showMessage(err, true);\n } else {\n if (!text.match(/^data:image\\//)) {\n showMessage(_('Unsupported image format'), true);\n return;\n }\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n iconVal = text;\n\n $dialog.find('.tab-enums-dialog-new-icon').show().html('');\n $dialog.find('.tab-enums-dialog-new-icon img').attr('src', text);\n $dialog.find('.tab-enums-dialog-new-icon-clear').show();\n }\n });\n\n if (id) {\n if (that.main.objects[id] && that.main.objects[id].common) {\n nameVal = translateName(that.main.objects[id].common.name);\n iconVal = that.main.objects[id].common.icon;\n colorVal = that.main.objects[id].common.color;\n }\n oldId = id;\n idVal = id;\n $dialog.find('#tab-enums-dialog-preserve-id').prop('checked', true);\n isIdEditable = false;\n } else {\n $dialog.find('#tab-enums-dialog-preserve-id').prop('checked', false);\n isIdEditable = true;\n }\n\n $dialog.find('.tab-enums-dialog-new-title').text(parentId ? _('Create new category') : (idVal ? _('Rename') : _('Create new enum')));\n\n if (idVal) {\n var parts = idVal.split('.');\n if (parts.length <= 2) {\n id = true;\n }\n idVal = parts.pop();\n parentId = parts.join('.');\n originalIdVal = idVal;\n }\n\n $dialog.find('#tab-enums-dialog-new-name')\n .val(nameVal)\n .off('change')\n .on('change', function () {\n var $id = $dialog.find('#tab-enums-dialog-new-id');\n var id = $id.val();\n var val = $(this).val();\n val = val.replace(FORBIDDEN_CHARS, '_').replace(/\\./g, '_').trim().toLowerCase();\n if (isIdEditable && (!id || !idChanged)) {\n $id.val(val);\n $dialog.find('#tab-enums-dialog-new-preview').val((parentId || 'enum') + '.' + (val || '#'));\n // detect materialize\n M.updateTextFields('#tab-enums-dialog-new');\n }\n if ($id.val() && !$id.val().match(/[.\\s]/)) {\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $id.removeClass('wrong');\n } else {\n $dialog.find('.tab-enums-dialog-create').addClass('disabled');\n $id.addClass('wrong');\n }\n }).off('keyup').on('keyup', function () {\n $(this).trigger('change');\n });\n\n $dialog.find('#tab-enums-dialog-new-id')\n .val(idVal)\n .off('change')\n .on('change', function () {\n if ($dialog.find('#tab-enums-dialog-preserve-id').prop('checked')) return;\n idChanged = true;\n var val = $(this).val();\n $dialog.find('#tab-enums-dialog-new-preview').val((parentId || 'enum') + '.' + ($(this).val() || '#'));\n M.updateTextFields('#tab-enums-dialog-new');\n\n if (val && !val.match(/[.\\s]/)) {\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $(this).removeClass('wrong');\n } else {\n $dialog.find('.tab-enums-dialog-create').addClass('disabled');\n $(this).addClass('wrong');\n }\n }).off('keyup').on('keyup', function () {\n $(this).trigger('change');\n });\n\n $dialog.find('#tab-enums-dialog-new-id').prop('disabled', !isIdEditable);\n\n $dialog.find('.tab-enums-dialog-create')\n .addClass('disabled')\n .off('click')\n .text(oldId ? _('Change') : _('Create'))\n .on('click', function () {\n if (oldId) {\n var name;\n if ($dialog.find('#tab-enums-dialog-preserve-id').prop('checked')) {\n if (typeof that.main.objects[oldId].common.name === 'object') {\n name = that.main.objects[oldId].common.name;\n } else {\n name = {'en': oldId.split('.').pop()};\n }\n name[systemLang] = $dialog.find('#tab-enums-dialog-new-name').val();\n } else {\n name = $dialog.find('#tab-enums-dialog-new-name').val();\n }\n enumRename(\n oldId,\n parentId + '.' + $dialog.find('#tab-enums-dialog-new-id').val(),\n {\n name: name,\n icon: iconVal,\n color: colorVal\n },\n function (err) {\n if (err) {\n showMessage(_('Error: %s', err), true);\n } else {\n showMessage(_('Updated'));\n }\n }\n );\n } else {\n enumAddChild(\n parentId,\n (parentId || 'enum') + '.' + $dialog.find('#tab-enums-dialog-new-id').val(),\n {\n name: $dialog.find('#tab-enums-dialog-new-name').val(),\n icon: iconVal,\n color: colorVal\n },\n function (err) {\n if (err) {\n showMessage(_('Error: %s', err), true, 5000);\n } else {\n showMessage(_('Updated'));\n }\n });\n }\n });\n\n $dialog.find('#tab-enums-dialog-new-preview').val((parentId || 'enum') + '.' + (idVal || '#'));\n\n if (iconVal) {\n $dialog.find('.tab-enums-dialog-new-icon').show().html(that.main.getIcon(oldId));\n $dialog.find('.tab-enums-dialog-new-icon-clear').show();\n } else {\n $dialog.find('.tab-enums-dialog-new-icon').hide();\n $dialog.find('.tab-enums-dialog-new-icon-clear').hide();\n }\n colorVal = colorVal || false;\n if (colorVal) {\n $dialog.find('.tab-enums-dialog-new-color').val(colorVal);\n } else {\n $dialog.find('.tab-enums-dialog-new-color').val();\n }\n\n M.updateTextFields('#tab-enums-dialog-new');\n that.main.showToast($dialog, _('Drop the icons here'));\n\n $dialog.find('.tab-enums-dialog-new-upload').off('click').on('click', function () {\n $dialog.find('.drop-file').trigger('click');\n });\n $dialog.find('.tab-enums-dialog-new-icon-clear').off('click').on('click', function () {\n if (iconVal) {\n iconVal = '';\n $dialog.find('.tab-enums-dialog-new-icon').hide();\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $dialog.find('.tab-enums-dialog-new-icon-clear').hide();\n }\n });\n $dialog.find('.tab-enums-dialog-new-color-clear').off('click').on('click', function () {\n if (colorVal) {\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $dialog.find('.tab-enums-dialog-new-color-clear').hide();\n $dialog.find('.tab-enums-dialog-new-colorpicker').colorpicker({\n component: '.btn',\n color: colorVal,\n container: $dialog.find('.tab-enums-dialog-new-colorpicker')\n }).colorpicker('setValue', '');\n colorVal = '';\n }\n });\n var time = Date.now();\n try {\n $dialog.find('.tab-enums-dialog-new-colorpicker').colorpicker('destroy');\n } catch (e) {\n\n }\n $dialog.find('.tab-enums-dialog-new-colorpicker').colorpicker({\n component: '.btn',\n color: colorVal,\n container: $dialog.find('.tab-enums-dialog-new-colorpicker')\n }).colorpicker('setValue', colorVal).on('showPicker.colorpicker', function (/* event */) {\n //$dialog.find('.tab-enums-dialog-new-colorpicker')[0].scrollIntoView(false);\n var $modal = $dialog.find('.modal-content');\n $modal[0].scrollTop = $modal[0].scrollHeight;\n }).on('changeColor.colorpicker', function (event){\n if (Date.now() - time > 100) {\n colorVal = event.color.toHex();\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $dialog.find('.tab-enums-dialog-new-icon-clear').show();\n }\n });\n if (colorVal) {\n $dialog.find('.tab-enums-dialog-new-color-clear').show();\n } else {\n $dialog.find('.tab-enums-dialog-new-color-clear').hide();\n }\n\n $dialog.find('#tab-enums-dialog-preserve-id').off('change').on('change', function () {\n if ($(this).prop('checked')) {\n $dialog.find('#tab-enums-dialog-new-id').prop('disabled', true)\n .val(originalIdVal);\n idVal = originalIdVal;\n isIdEditable = false;\n } else {\n if (that.main.objects[id] && that.main.objects[id].common) {\n isIdEditable = !that.main.objects[id].common['object-non-deletable'] && !that.main.objects[id].common.dontDelete;\n }\n if (isIdEditable) {\n idVal = $dialog.find('#tab-enums-dialog-new-name').val();\n idVal = idVal.replace(FORBIDDEN_CHARS, '_').replace(/\\./g, '_').trim().toLowerCase();\n $dialog.find('#tab-enums-dialog-new-id').prop('disabled', false)\n .val(idVal);\n }\n }\n idChanged = false;\n $dialog.find('#tab-enums-dialog-new-preview').val((parentId || 'enum') + '.' + (idVal || '#'));\n });\n\n // workaround for materialize checkbox problem\n $dialog.find('input[type=\"checkbox\"]+span').off('click').on('click', function () {\n var $input = $(this).prev();\n if (!$input.prop('disabled')) {\n $input.prop('checked', !$input.prop('checked')).trigger('change');\n }\n });\n\n $dialog.modal().modal('open');\n }\n\n function switchEditMode(isEnabled) {\n that.editMode = isEnabled;\n var $editButton = that.$gridEnum.find('#tab-enums-list-edit');\n\n if (that.editMode) {\n $editButton.removeClass('blue').addClass('red');\n that.$gridEnum.addClass('tab-enums-edit');\n that._initObjectTree();\n showMessage(_('You can drag&drop the devices, channels and states to enums'));\n if (that.isTiles) {\n setupDroppableTiles();\n } else {\n setupDroppableTable();\n }\n } else {\n selectId('destroy');\n try {\n var _$items = that.$gridEnum.find('.collection-item');\n if (_$items.droppable('instance')) {\n _$items.droppable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n try {\n var $trs = that.$gridEnum.find('tbody>tr.treetable-enum');\n if ($trs.droppable('instance')) {\n $trs.droppable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n\n $editButton.removeClass('red').addClass('blue');\n that.$gridEnum.removeClass('tab-enums-edit');\n }\n }\n\n this._postInit = function () {\n if (typeof this.$gridList !== 'undefined') {\n if (!this.main.objects['enum.rooms']) {\n this.main.objects['enum.rooms'] = {\n \"_id\": \"enum.rooms\",\n \"common\": {\n \"icon\": \"home\",\n \"name\": {\n \"en\": \"Rooms\",\n \"de\": \"Räume\",\n \"ru\": \"Комнаты\",\n \"pt\": \"Quartos\",\n \"nl\": \"Kamers\",\n \"fr\": \"Pièces\",\n \"it\": \"Camere\",\n \"es\": \"Habitaciones\",\n \"pl\": \"Pokoje\"\n },\n \"desc\": {\n \"en\": \"List of the rooms\",\n \"de\": \"Liste der Räumen\",\n \"ru\": \"Список комнат\",\n \"pt\": \"Lista dos quartos\",\n \"nl\": \"Lijst met kamers\",\n \"fr\": \"Liste des chambres\",\n \"it\": \"Elenco delle stanze\",\n \"es\": \"Lista de las habitaciones\",\n \"pl\": \"Lista pokoi\"\n },\n \"members\": [],\n \"dontDelete\": true\n },\n \"type\": \"enum\",\n \"acl\": {\n \"owner\": \"system.user.admin\",\n \"ownerGroup\": \"system.group.administrator\",\n \"permissions\": 1911\n }\n };\n that.main.socket.emit('setObject', 'enum.rooms', this.main.objects['enum.rooms']);\n this.list.unshift('enum.rooms');\n }\n if (!this.main.objects['enum.functions']) {\n this.main.objects['enum.functions'] = {\n \"_id\": \"enum.functions\",\n \"common\": {\n \"icon\": \"lightbulb_outline\",\n \"name\": {\n \"en\": \"Functions\",\n \"de\": \"Funktionen\",\n \"ru\": \"функции\",\n \"pt\": \"Funções\",\n \"nl\": \"functies\",\n \"fr\": \"Les fonctions\",\n \"it\": \"funzioni\",\n \"es\": \"Funciones\",\n \"pl\": \"Funkcje\"\n },\n \"desc\": {\n \"en\": \"List of the functions\",\n \"de\": \"Liste der Funktionen\",\n \"ru\": \"Список функций\",\n \"pt\": \"Lista das funções\",\n \"nl\": \"Lijst met functies\",\n \"fr\": \"Liste des fonctions\",\n \"it\": \"Elenco delle funzioni\",\n \"es\": \"Lista de las funciones\",\n \"pl\": \"Lista funkcji\"\n },\n \"members\": [],\n \"dontDelete\": true\n },\n \"type\": \"enum\",\n \"acl\": {\n \"owner\": \"system.user.admin\",\n \"ownerGroup\": \"system.group.administrator\",\n \"permissions\": 1911\n }\n };\n this.list.unshift('enum.functions');\n that.main.socket.emit('setObject', 'enum.functions', this.main.objects['enum.functions']);\n }\n\n if (this.isTiles) {\n drawEnumsTiles();\n } else {\n drawEnumsTable();\n }\n if (this.editMode) {\n this._initObjectTree();\n } else {\n selectId('destroy');\n }\n }\n };\n\n this.init = function (update) {\n if (this.inited && !update) {\n return;\n }\n if (!this.main || !this.main.objectsLoaded) {\n setTimeout(function () {\n that.init(update);\n }, 250);\n return;\n }\n\n this._postInit();\n\n if (!this.inited) {\n this.inited = true;\n this.main.subscribeObjects('enum.*');\n }\n };\n\n this.destroy = function () {\n if (this.inited) {\n this.inited = false;\n // subscribe objects and states\n this.main.unsubscribeObjects('enum.*');\n }\n switchEditMode(false);\n this.$gridList.treeTable('destroy');\n };\n\n this.objectChange = function (id, obj, action) {\n //Update enums\n if (id.match(/^enum\\./)) {\n if (obj) {\n if (this.list.indexOf(id) === -1) this.list.push(id);\n } else {\n var j = this.list.indexOf(id);\n if (j !== -1) this.list.splice(j, 1);\n }\n\n if (this.updateTimers) clearTimeout(this.updateTimers);\n\n this.updateTimers = setTimeout(function () {\n that.updateTimers = null;\n that._postInit();\n }, 200);\n }\n\n if (this.$grid) selectId('object', id, obj, action);\n };\n}\n","function Events(main) {\r\n 'use strict';\r\n\r\n var that = this;\r\n this.main = main;\r\n this.$tab = $('#tab-events'); // body\r\n var isRemote = location.hostname === 'yunkong2.net' || location.hostname === 'yunkong2.pro';\r\n\r\n var list = {\r\n count: 0,\r\n start: 0,\r\n limit: 500 //const\r\n };\r\n var timeout = null;\r\n\r\n var pause = {\r\n list: [],\r\n mode: false,\r\n counter: 0,\r\n overflow: false,\r\n $counterSpan: null\r\n };\r\n\r\n var $header;\r\n var hdr;\r\n var $table;\r\n var $outer;\r\n var $pause;\r\n\r\n var columnResizeInit = {\r\n done: false,\r\n timer: null\r\n };\r\n\r\n this.prepare = function () {\r\n $outer = this.$tab.find('#event-outer');\r\n $table = this.$tab.find('#event-table');\r\n $pause = this.$tab.find('#event-pause');\r\n\r\n // install header\r\n $header = this.$tab.find('#events-table-tr');\r\n hdr = new IobListHeader($header, {list: $outer, colWidthOffset: 1, prefix: 'event-filter'});\r\n hdr.doFilter = filterEvents;\r\n\r\n hdr.add('combobox', 'type');\r\n hdr.add('edit', 'id', 'ID');\r\n //hdr.add('edit', 'val', 'Value');\r\n hdr.add('edit', 'val', 'value');\r\n hdr.add('combobox', 'ack', 'ack', [\r\n {val: '', name: 'all'},\r\n {val: 'true', name: 'ack'},\r\n {val: 'false', name: 'not ack'}\r\n ]);\r\n hdr.add('combobox', 'from', 'from');\r\n hdr.add('text', 'ts');\r\n hdr.add('text', 'lc');\r\n\r\n Object.defineProperty(hdr, 'getValues', {\r\n value: function () {\r\n hdr.ID.selectedVal = hdr.ID.selectedVal.toLocaleLowerCase();\r\n if (hdr.ack.selectedVal === 'true') hdr.ack.selectedVal = true;\r\n if (hdr.ack.selectedVal === 'false') hdr.ack.selectedVal = false;\r\n },\r\n enumerateble: false\r\n });\r\n\r\n $pause.on('click', function () {\r\n that.pause();\r\n });\r\n\r\n // bind \"clear events\" button\r\n var $eventClear = this.$tab.find('#event-clear');\r\n $eventClear\r\n .off('click').on('click', function () {\r\n list.count = 0;\r\n list.start = 0;\r\n that.$tab.find('#event-table').html('');\r\n });\r\n };\r\n\r\n this.init = function () {\r\n if (isRemote) {\r\n that.$tab.find('#grid-events').html(_('You can\\'t see events via cloud') + '
        cloud_off').addClass('no-cloud-events');\r\n return;\r\n }\r\n if (!hdr) return;\r\n\r\n if (this.inited) {\r\n return;\r\n }\r\n \r\n installColResize();\r\n\r\n this.inited = true;\r\n this.main.subscribeObjects('*');\r\n this.main.subscribeStates('*');\r\n };\r\n\r\n this.destroy = function () {\r\n if (this.inited) {\r\n this.inited = false;\r\n this.main.unsubscribeObjects('*');\r\n this.main.unsubscribeStates('*');\r\n }\r\n };\r\n\r\n var widthSet = false;\r\n\r\n function installColResize() {\r\n if (!$.fn.colResizable) return;\r\n if ($outer.is(':visible')) {\r\n $outer.colResizable({\r\n liveDrag: true,\r\n\r\n partialRefresh: true,\r\n marginLeft: 5,\r\n postbackSafe:true,\r\n\r\n onResize: function (event) {\r\n return hdr.syncHeader();\r\n // // read width of data.$tree and set the same width for header\r\n // var thDest = $('#log-outer-header >thead>tr>th');\t//if table headers are specified in its semantically correct tag, are obtained\r\n // var thSrc = $outer.find('>tbody>tr:first>td');\r\n // for (var i = 1; i < thSrc.length; i++) {\r\n // $(thDest[i]).attr('width', $(thSrc[i]).width());\r\n // }\r\n }\r\n });\r\n hdr.syncHeader();\r\n } else {\r\n setTimeout(function () {\r\n installColResize();\r\n }, 200)\r\n }\r\n }\r\n\r\n function updateResizersHeight() {\r\n columnResizeInit.timer = null;\r\n $(window).trigger('resize.JColResizer');\r\n }\r\n\r\n // ----------------------------- Show events ------------------------------------------------\r\n this.add = function (id, stateOrObj, isMessage, isState) {\r\n if (isRemote) return;\r\n\r\n var type = isState ? 'stateChange' : (isMessage ? 'message' : 'objChange');\r\n var value;\r\n var ack;\r\n var from = '';\r\n var ts;\r\n var lc;\r\n if (hdr) {\r\n if (hdr.getValues) {\r\n hdr.getValues();\r\n }\r\n\r\n hdr.type.checkAddOption(type);\r\n }\r\n if (!columnResizeInit.done) {\r\n // if the height not 100%, the column resizer is too short. Wait till the table will be really full and reinit resizer.\r\n // update resizer once and remeber it if the table has full height\r\n if (!columnResizeInit.timer) {\r\n columnResizeInit.timer = setTimeout(updateResizersHeight, 1000);\r\n }\r\n\r\n if (list.count > 20) {\r\n columnResizeInit.done = true;\r\n }\r\n }\r\n\r\n if (!pause.mode) {\r\n if (list.count >= that.limit) {\r\n list.start++;\r\n var e = document.getElementById('event_' + list.start);\r\n if (e) e.outerHTML = '';\r\n } else {\r\n list.count++;\r\n }\r\n }\r\n\r\n // if Object\r\n if (!isMessage && !isState) {\r\n if (!stateOrObj) {\r\n value = 'deleted';\r\n ts = main.formatDate(new Date());\r\n } else {\r\n value = JSON.stringify(stateOrObj, '\\x0A', 2);\r\n if (value !== undefined && value.length > 30) {\r\n value = '' + value.substring(0, 30) + '...';\r\n }\r\n ts = main.formatDate(stateOrObj.ts);\r\n }\r\n } else\r\n // if state\r\n if (isState) {\r\n if (!stateOrObj) {\r\n value = 'deleted';\r\n ts = main.formatDate(new Date());\r\n } else {\r\n stateOrObj.from = stateOrObj.from || '';\r\n stateOrObj.from = stateOrObj.from.replace('system.adapter.', '');\r\n stateOrObj.from = stateOrObj.from.replace('system.', '');\r\n\r\n hdr && hdr.from.checkAddOption(stateOrObj.from, function (o) {\r\n return {val: o.replace(/\\./g, '-'), name: o};\r\n });\r\n\r\n from = stateOrObj.from;\r\n\r\n value = JSON.stringify(stateOrObj.val);\r\n if (value !== undefined && value.length > 30) {\r\n value = '
        ' + value.substring(0, 30) + '...
        ';\r\n }\r\n ack = stateOrObj.ack ? 'true' : 'false';\r\n ts = main.formatDate(stateOrObj.ts);\r\n lc = main.formatDate(stateOrObj.lc);\r\n }\r\n } else\r\n // if message\r\n if (isMessage) {\r\n // todo\r\n }\r\n\r\n var visible = true;\r\n if (hdr) {\r\n if (hdr.type.selectedVal && hdr.type.selectedVal !== type) {\r\n visible = false;\r\n } else if (hdr.ID.selectedVal && id.toLocaleLowerCase().indexOf(hdr.ID.selectedVal) === -1) {\r\n visible = false;\r\n } else if (hdr.value.selectedVal !== '' && value !== null && value !== undefined && value.indexOf(hdr.value.selectedVal) === -1) {\r\n visible = false;\r\n } else if (hdr.ack.selectedVal !== '' && hdr.ack.selectedVal !== ack) {\r\n visible = false;\r\n } else if (hdr.from.selectedVal && hdr.from.selectedVal !== from) {\r\n visible = false;\r\n }\r\n }\r\n\r\n\r\n var text = '';\r\n text += '' + type + '';\r\n text += '' + id + '';\r\n if (isNaN(value)) {\r\n text += '' + (value || '') + '';\r\n } else {\r\n text += '' + (value || '') + '';\r\n }\r\n text += '' + (ack || '') + '';\r\n text += '' + (from || '') + '';\r\n text += '' + (ts || '') + '';\r\n text += '' + (lc || '') + '';\r\n text += '';\r\n\r\n if (pause.mode) {\r\n pause.list.push(text);\r\n pause.counter++;\r\n\r\n if (pause.counter > list.limit) {\r\n if (!pause.overflow) {\r\n $pause.addClass('red lighten3')\r\n .attr('title', _('Message buffer overflow. Losing oldest'));\r\n pause.overflow = true;\r\n }\r\n pause.list.shift();\r\n }\r\n pause.$counterSpan.html(pause.counter);\r\n } else if ($table) {\r\n $table.prepend(text);\r\n if (!widthSet && (window.location.hash === '#tab-events' || window.location.hash === '#events')) {\r\n hdr && hdr.syncHeader();\r\n widthSet = true;\r\n }\r\n }\r\n };\r\n\r\n /*this.onSelected = function () {\r\n hdr && hdr.syncHeader();\r\n };*/\r\n\r\n function filterEvents() {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n if (hdr.getValues) {\r\n hdr.getValues();\r\n }\r\n\r\n $table && $table.find('.event-line').each(function (index) {\r\n var isShow = true;\r\n var $this = $(this);\r\n if (hdr.type.selectedVal && !$this.hasClass('event-type-' + hdr.type.selectedVal)) {\r\n isShow = false;\r\n } else\r\n if (hdr.from.selectedVal && !$this.hasClass('event-from-' + hdr.from.selectedVal)) {\r\n isShow = false;\r\n } else\r\n if (hdr.ack.selectedVal !== '' && !$this.hasClass('event-ack-' + hdr.ack.selectedVal)) {\r\n isShow = false;\r\n } else\r\n if (hdr.ID.selectedVal && $(this).find('td.event-column-id').text().toLocaleLowerCase().indexOf(hdr.ID.selectedVal) === -1) {\r\n isShow = false;\r\n } else\r\n if (hdr.value.selectedVal !== '' && $(this).find('td.event-column-value').text().indexOf(hdr.value.selectedVal) === -1) {\r\n isShow = false;\r\n }\r\n\r\n if (isShow) {\r\n $this.show();\r\n } else {\r\n $this.hide();\r\n }\r\n });\r\n }\r\n\r\n this.pause = function () {\r\n if (!pause.mode) {\r\n $pause.addClass('yellow btn-pause-button-active');\r\n\r\n pause.$counterSpan = $pause;\r\n pause.$counterSpan.html('0');\r\n pause.counter = 0;\r\n pause.mode = true;\r\n } else {\r\n pause.mode = false;\r\n for (var i = 0; i < pause.list.length; i++) {\r\n if (list.count >= 500) {\r\n list.start++;\r\n var e = document.getElementById('event_' + list.start);\r\n if (e) e.outerHTML = '';\r\n } else {\r\n list.count++;\r\n }\r\n $table.prepend(pause.list[i]);\r\n }\r\n pause.overflow = false;\r\n pause.list = [];\r\n pause.counter = 0;\r\n\r\n $pause\r\n .removeClass('yellow btn-pause-button-active')\r\n .html('pause');\r\n }\r\n };\r\n}\r\n\r\n\r\n","function fileHandler(event) {\n event.preventDefault();\n var file = event.dataTransfer ? event.dataTransfer.files[0] : event.target.files[0];\n\n var $dz = $(this).find('.drop-zone');\n var callback = $(this).data('drop-zone-cb');\n var limit = $(this).data('limit');\n if (file.size > (limit || 10000)) {\n callback && callback(_('File is too big!'));\n $dz.hide();\n return false;\n }\n $dz.show();\n var reader = new FileReader();\n reader.onload = function (evt) {\n $dz.hide();\n callback && callback(null, evt.target.result);\n };\n reader.readAsDataURL(file);\n}\n\n/**\n * Install file upload on some div\n * @param {object} $dropZone is jquery object of the div (DOM element) where the drop zone must be installed\n * @param {number} limit is maximal size of file in bytes\n * @param {function} callback is callback in form function (err, fileDataBase64) {}\n*/\nfunction installFileUpload($dropZone, limit, callback) {\n if (typeof window.FileReader !== 'undefined' && !$dropZone.data('installed')) {\n $dropZone.data('installed', true);\n $dropZone.prepend('
        ');\n var $dz = $dropZone.find('.drop-zone');\n $dropZone[0].ondragover = function() {\n $dz.off('click');\n $dz.show();\n return false;\n };\n\n $dz[0].ondragleave = function() {\n $dz.hide();\n return false;\n };\n\n $dz[0].ondrop = fileHandler.bind($dropZone[0]);\n }\n $dropZone.data('drop-zone-cb', callback);\n $dropZone.data('limit', limit);\n $dropZone.find('.drop-file').on('change', fileHandler.bind($dropZone[0]));\n}","function Hosts(main) {\n 'use strict';\n\n var that = this;\n this.main = main;\n this.list = [];\n this.$tab = $('#tab-hosts');\n this.$grid = this.$tab.find('#hosts');\n this.$table = this.$tab.find('#grid-hosts');\n this.inited = false;\n this.isTiles = true;\n this.words = {};\n\n this.prepare = function () {\n this.isTiles = (this.main.config.hostsIsTiles !== undefined && this.main.config.hostsIsTiles !== null) ? this.main.config.hostsIsTiles : true;\n\n // fix for IE\n if (this.main.browser === 'ie' && this.main.browserVersion <= 10) {\n this.isTiles = false;\n this.$tab.find('.btn-switch-tiles').hide();\n }\n\n this.$tab.find('.btn-reload')\n .attr('title', _('Update'))\n .on('click', function () {\n that.init(true);\n });\n\n this.$tab.find('.btn-switch-tiles').off('click').on('click', function () {\n that.isTiles = !that.isTiles;\n\n if (that.isTiles) {\n $(this).find('i').text('view_list');\n } else {\n $(this).find('i').text('view_module');\n }\n\n that.main.saveConfig('hostsIsTiles', that.isTiles);\n\n setTimeout(function () {\n that._postInit();\n }, 50);\n });\n\n if (this.isTiles) {\n this.$tab.find('.btn-switch-tiles').find('i').text('view_list');\n } else {\n this.$tab.find('.btn-switch-tiles').find('i').text('view_module');\n }\n\n this.$tab.find('.filter-clear').on('click', function () {\n that.$tab.find('.filter-input').val('').trigger('change');\n });\n\n var $hostsFilter = this.$tab.find('.filter-input');\n $hostsFilter.on('change', function () {\n var filter = $(this).val();\n if (filter) {\n $(this).addClass('input-not-empty');\n that.$tab.find('.filter-clear').show();\n } else {\n that.$tab.find('.filter-clear').hide();\n $(this).removeClass('input-not-empty');\n }\n\n that.main.saveConfig('hostsFilter', filter);\n applyFilter(filter);\n }).on('keyup', function () {\n if (that.filterTimeout) clearTimeout(that.filterTimeout);\n that.filterTimeout = setTimeout(function () {\n that.$tab.find('.filter-input').trigger('change');\n }, 300);\n });\n\n if (this.main.config.hostsFilter && this.main.config.hostsFilter[0] !== '{') {\n $hostsFilter.val(that.main.config.hostsFilter).addClass('input-not-empty');\n this.$tab.find('.filter-clear').show();\n } else {\n this.$tab.find('.filter-clear').hide();\n }\n\n // cache translations\n this.words['Title'] = _('Title');\n this.words['OS'] = _('OS');\n this.words['Available'] = _('Available');\n this.words['Installed'] = _('Installed');\n this.words['Events'] = _('Events');\n this.words['Title'] = _('Title');\n that.words['Type'] = _('Type');\n };\n\n // ----------------------------- Hosts show and Edit ------------------------------------------------\n this.initButtons = function (id) {\n var selector = id ? '[data-host-id=\"' + id + '\"]' : '';\n\n this.$tab.find('.host-update-submit' + selector).off('click').on('click', function () {\n that.main.cmdExec($(this).attr('data-host-name'), 'upgrade self', function (exitCode) {\n if (!exitCode) that.init(true);\n });\n });\n\n this.$tab.find('.host-restart-submit' + selector).off('click').on('click', function () {\n that.main.waitForRestart = true;\n that.main.cmdExec($(this).attr('data-host-name'), '_restart');\n });\n this.$tab.find('.host-delete' + selector).off('click').on('click', function () {\n that.main.cmdExec(that.main.currentHost, 'host remove ' + $(this).attr('data-host-name'));\n });\n\n this.$tab.find('.host-edit' + selector).off('click').on('click', function () {\n editHost($(this).attr('data-host-id'));\n });\n\n this.$tab.find('.host-update-hint-submit' + selector).off('click').on('click', function () {\n var infoTimeout = setTimeout(function () {\n showUpdateInfo();\n infoTimeout = null;\n }, 1000);\n\n that.main.socket.emit('sendToHost', $(this).attr('data-host-name'), 'getLocationOnDisk', null, function (data) {\n if (infoTimeout) clearTimeout(infoTimeout);\n infoTimeout = null;\n showUpdateInfo(data);\n });\n });\n\n };\n\n function showUpdateInfo(data) {\n var $dialog = $('#dialog-host-update');\n if (data) {\n var path = data.path;\n path = path.replace(/\\\\/g, '/');\n var parts = path.split('/');\n parts.pop(); // js-controller\n parts.pop(); // node_modules\n\n if (data.platform === 'linux' || data.platform === 'darwin' || data.platform === 'freebsd' || data.platform === 'lin') {\n // linux\n $dialog.find('#dialog-host-update-instructions').val('cd ' + parts.join('/') + '\\nsudo yunkong2 stop\\nsudo yunkong2 update\\nsudo yunkong2 upgrade self\\nsudo yunkong2 start')\n } else {\n // windows\n $dialog.find('#dialog-host-update-instructions').val('cd ' + parts.join('\\\\') + '\\nyunkong2 stop\\nyunkong2 update\\nyunkong2 upgrade self\\nyunkong2 start')\n }\n } else {\n $dialog.find('#dialog-host-update-instructions').val('cd /opt/yunkong2\\nsudo yunkong2 stop\\nsudo yunkong2 update\\nsudo yunkong2 upgrade self\\nsudo yunkong2 start')\n }\n\n if (!$dialog.data('inited')) {\n $dialog.data('inited', true);\n $dialog.modal();\n }\n $dialog.modal('open');\n }\n\n function applyFilter(filter) {\n filter = (filter || '').toLowerCase().trim();\n\n if (!filter) {\n that.$tab.find('.hosts-host').show();\n that.$tab.find('.hosts-host-filtered-out').hide();\n } else {\n var someVisible = false;\n that.$tab.find('.hosts-host').each(function () {\n var text = $(this).data('host-filter');\n if (text.toLowerCase().indexOf(filter) !== -1) {\n $(this).show();\n someVisible = true;\n } else {\n $(this).hide();\n }\n });\n if (!someVisible) {\n that.$tab.find('.hosts-host-filtered-out').show();\n } else {\n that.$tab.find('.hosts-host-filtered-out').hide();\n }\n }\n }\n\n function showOneHostRow(index) {\n var obj = that.main.objects[that.list[index].id];\n var alive = that.main.states[obj._id + '.alive'] && that.main.states[obj._id + '.alive'].val && that.main.states[obj._id + '.alive'].val !== 'null';\n obj.common = obj.common || {};\n obj.native = obj.native || {};\n\n var text = '';\n //LED\n text += '
        ';\n // icon\n text += '' + that.main.getHostIcon(obj) + '';\n // name\n text += '' + obj.common.hostname + '';\n // type\n text += '' + obj.common.type + '';\n var title = obj.common.titleLang || obj.common.title;\n if (typeof title === 'object') {\n title = title[systemLang] || title.en;\n }\n // description\n text += '' + title + '';\n // platform\n // text += '' + obj.common.platform + ''; // actually only one platform\n // OS\n text += '' + (obj.native.os ? obj.native.os.platform : _('unknown')) + '';\n // Available\n text += '' +\n '' +\n '' +\n '';\n\n // installed\n text += '' + obj.common.installedVersion + '';\n\n // event rates\n if (that.main.states[obj._id + '.inputCount']) {\n text += '⇥' + that.main.states[obj._id + '.inputCount'].val + ' / ↦' + that.main.states[obj._id + '.outputCount'].val + '';\n } else {\n text += ' / ';\n }\n\n // restart button\n text += '';\n\n text += '';\n\n return text;\n }\n\n function showOneHostTile(index) {\n var obj = that.main.objects[that.list[index].id];\n var alive = that.main.states[obj._id + '.alive'] && that.main.states[obj._id + '.alive'].val && that.main.states[obj._id + '.alive'].val !== 'null';\n obj.common = obj.common || {};\n obj.native = obj.native || {};\n\n var color;\n if (obj.common.color) {\n color = that.main.invertColor(obj.common.color);\n }\n\n var text = '
        '+\n '
        ' +\n '
        '+\n ' ' + that.main.getHostIcon(obj, ' ') +\n '
        ' +\n '
        '+\n '
        ' +\n ' ' + obj.common.hostname + '' +\n '
          '+\n '
        • ' + that.words['Type'] + ': ' + obj.common.type + '
        • ' +\n '
        • ' + that.words['Title'] + ': ' + obj.common.title + '
        • ' +\n '
        • ' + that.words['OS'] + ': ' + (obj.native.os ? obj.native.os.platform : _('unknown')) + '
        • ' +\n '
        • ' + that.words['Available'] + ':
        • ' +\n '
        • ' + that.words['Installed'] + ': ' + obj.common.installedVersion + '
        • ';\n\n if (that.main.states[obj._id + '.inputCount']) {\n text += '
        • ' + that.words['Events'] + ': ⇥' + that.main.states[obj._id + '.inputCount'].val + ' / ↦' + that.main.states[obj._id + '.outputCount'].val + '
        • ';\n } else {\n text += '
        • ' + that.words['Events'] + ': /
        • ';\n }\n\n text += '
        '+\n '
        '+\n '
        '+\n ' edit' +\n ' autorenew';\n if (obj.common.hostname !== that.main.currentHost) {\n text += ' delete';\n }\n text += ' refresh' +\n ' refresh' +\n '
        '+\n '
        '+\n '
        ';\n\n return text;\n }\n\n function editHost(id) {\n var $dialog = $('#tab-host-dialog-edit');\n\n var titleVal = '';\n var iconVal = '';\n var colorVal = '';\n\n installFileUpload($dialog, 50000, function (err, text) {\n if (err) {\n that.main.showToast($dialog, err);\n } else {\n if (!text.match(/^data:image\\//)) {\n that.main.showToast($dialog, _('Unsupported image format'));\n return;\n }\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n iconVal = text;\n\n $dialog.find('.tab-host-dialog-edit-icon').show().html('');\n $dialog.find('.tab-host-dialog-edit-icon img').attr('src', text);\n $dialog.find('.tab-host-dialog-edit-icon-clear').show();\n }\n });\n\n if (that.main.objects[id] && that.main.objects[id].common) {\n titleVal = that.main.objects[id].common.title;\n if (typeof titleVal === 'object') {\n titleVal = titleVal[systemLang] || titleVal.en;\n }\n iconVal = that.main.objects[id].common.icon;\n colorVal = that.main.objects[id].common.color;\n }\n\n $dialog.find('#tab-host-dialog-edit-title')\n .val(titleVal)\n .off('change')\n .on('change', function () {\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n }).off('keyup').on('keyup', function () {\n $(this).trigger('change');\n });\n\n $dialog.find('.tab-host-dialog-ok')\n .addClass('disabled')\n .off('click')\n .on('click', function () {\n var obj = JSON.parse(JSON.stringify(that.main.objects[id]));\n obj.common.title = $dialog.find('#tab-host-dialog-edit-title').val();\n obj.common.icon = iconVal;\n obj.common.color = colorVal;\n if (JSON.stringify(obj) !== JSON.stringify(that.main.objects[id])) {\n that.main.socket.emit('setObject', obj._id, obj, function (err) {\n that.main.showToast($dialog, _('Updated'));\n });\n } else {\n that.main.showToast($dialog, _('Nothing changed'));\n }\n });\n\n if (iconVal) {\n $dialog.find('.tab-host-dialog-edit-icon').show().html(that.main.getIcon(id));\n $dialog.find('.tab-host-dialog-edit-icon-clear').show();\n } else {\n $dialog.find('.tab-host-dialog-edit-icon').hide();\n $dialog.find('.tab-host-dialog-edit-icon-clear').hide();\n }\n\n colorVal = colorVal || false;\n\n if (colorVal) {\n $dialog.find('.tab-host-dialog-edit-color').val(colorVal);\n } else {\n $dialog.find('.tab-host-dialog-edit-color').val();\n }\n\n M.updateTextFields('#tab-host-dialog-edit');\n that.main.showToast($dialog, _('Drop the icons here'));\n\n $dialog.find('.tab-host-dialog-edit-upload').off('click').on('click', function () {\n $dialog.find('.drop-file').trigger('click');\n });\n\n $dialog.find('.tab-host-dialog-edit-icon-clear').off('click').on('click', function () {\n if (iconVal) {\n iconVal = '';\n $dialog.find('.tab-host-dialog-edit-icon').hide();\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n $dialog.find('.tab-host-dialog-edit-icon-clear').hide();\n }\n });\n $dialog.find('.tab-host-dialog-edit-color-clear').off('click').on('click', function () {\n if (colorVal) {\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n $dialog.find('.tab-host-dialog-edit-color-clear').hide();\n $dialog.find('.tab-host-dialog-edit-colorpicker').colorpicker({\n component: '.btn',\n color: colorVal,\n container: $dialog.find('.tab-host-dialog-edit-colorpicker')\n }).colorpicker('setValue', '');\n colorVal = '';\n }\n });\n var time = Date.now();\n try {\n $dialog.find('.tab-host-dialog-edit-colorpicker').colorpicker('destroy');\n } catch (e) {\n\n }\n $dialog.find('.tab-host-dialog-edit-colorpicker').colorpicker({\n component: '.btn',\n color: colorVal,\n container: $dialog.find('.tab-host-dialog-edit-colorpicker')\n }).colorpicker('setValue', colorVal).on('showPicker.colorpicker', function (/* event */) {\n //$dialog.find('.tab-host-dialog-edit-colorpicker')[0].scrollIntoView(false);\n var $modal = $dialog.find('.modal-content');\n $modal[0].scrollTop = $modal[0].scrollHeight;\n }).on('changeColor.colorpicker', function (event){\n if (Date.now() - time > 100) {\n colorVal = event.color.toHex();\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n $dialog.find('.tab-host-dialog-edit-icon-clear').show();\n }\n });\n if (colorVal) {\n $dialog.find('.tab-host-dialog-edit-color-clear').show();\n } else {\n $dialog.find('.tab-host-dialog-edit-color-clear').hide();\n }\n\n $dialog.modal().modal('open');\n }\n\n function showHostsTile() {\n var text = '';\n for (var i = 0; i < that.list.length; i++) {\n text += showOneHostTile(i);\n }\n that.$table.html('');\n that.$tab.find('.hosts-table').hide();\n that.$grid.html(text).show();\n that.$grid.append('
        ' + _('Filtered out') + '
        ');\n }\n\n function showHostsTable() {\n var text = '';\n for (var i = 0; i < that.list.length; i++) {\n text += showOneHostRow(i);\n }\n that.$grid.html('').hide();\n that.$table.html(text);\n that.$tab.find('.hosts-table').show();\n that.$table.append('' + _('Filtered out') + '');\n }\n\n this.updateCounter = function (counter) {\n if (counter === undefined) {\n this.main.tabs.adapters.getAdaptersInfo(this.main.currentHost, false, false, function (repository, installedList) {\n var hostsToUpdate = 0;\n if (!installedList || !installedList.hosts) return;\n\n for (var id in installedList.hosts) {\n if (!installedList.hosts.hasOwnProperty(id)) continue;\n var obj = that.main.objects['system.host.' + id];\n if (!obj || !obj.common) continue;\n var installedVersion = obj.common.installedVersion;\n var availableVersion = obj.common ? (repository && repository[obj.common.type] ? repository[obj.common.type].version : '') : '';\n\n if (installedVersion && availableVersion && !that.main.upToDate(availableVersion, installedVersion)) {\n id = 'system.host.' + id.trim().replace(FORBIDDEN_CHARS, '_').replace(/\\./g, '_');\n if (that.main.states[id + '.alive'] && that.main.states[id + '.alive'].val && that.main.states[id + '.alive'].val !== 'null') {\n hostsToUpdate++;\n }\n }\n }\n\n that.updateCounter(hostsToUpdate);\n });\n } else if (counter) {\n var $updates = $('#updates-for-hosts');\n if ($updates.length) {\n $updates.text(counter);\n } else {\n $('' + counter + '').appendTo('.admin-sidemenu-items[data-tab=\"tab-hosts\"] a');\n }\n } else {\n $('#updates-for-hosts').remove();\n }\n };\n\n this._postInit = function () {\n if (typeof that.$grid !== 'undefined') {\n if (this.isTiles) {\n showHostsTile();\n } else {\n showHostsTable()\n }\n applyFilter(this.$tab.find('.filter-input').val());\n\n var timer = setTimeout(function () {\n console.warn('Timeout for repository');\n timer = null;\n that.initButtons();\n }, 2000);\n\n var host = that.main.currentHost;\n if (!host) {\n // find alive host\n for (var i = 0; i < that.list.length; i++) {\n if (that.main.states[that.list[i].id + '.alive'] && that.main.states[that.list[i].id + '.alive'].val) {\n host = that.list[i].id;\n break;\n }\n }\n }\n\n that.main.tabs.adapters.getAdaptersInfo(host, true, false, function (repository, installedList) {\n if (!installedList || !installedList.hosts) return;\n\n for (var id in installedList.hosts) {\n if (!installedList.hosts.hasOwnProperty(id)) continue;\n var obj = that.main.objects['system.host.' + id];\n var installed = installedList.hosts[id].version;\n if (installed !== installedList.hosts[id].runningVersion) installed += '(' + _('Running: ') + installedList.hosts[id].runningVersion + ')';\n if (!installed && obj.common && obj.common.installedVersion) installed = obj.common.installedVersion;\n\n id = 'system.host.' + id.trim().replace(FORBIDDEN_CHARS, '_').replace(/\\./g, '_');\n that.$tab.find('.hosts-version-installed[data-host-id=\"' + id + '\"]').html(installed);\n }\n\n that.$tab.find('.hosts-host').each(function () {\n var id = $(this).data('host-id');\n var obj = that.main.objects[id];\n var installedVersion = obj.common.installedVersion;\n var availableVersion = obj.common ? (repository && repository[obj.common.type] ? repository[obj.common.type].version : '') : '';\n if (installedVersion && availableVersion) {\n if (!that.main.upToDate(availableVersion, installedVersion)) {\n // show button\n if (that.main.states[id + '.alive'] && that.main.states[id + '.alive'].val && that.main.states[id + '.alive'].val !== 'null') {\n $(this).find('.host-update-submit').show();\n $(this).find('.host-update-hint-submit').show();\n $(this).find('.hosts-version-installed').addClass('updateReady');\n $(this).find('.hosts-version-available').addClass('hosts-version-available-updatable');\n }\n }\n }\n if (availableVersion) {\n $(this).find('.hosts-version-available').html(availableVersion);\n }\n });\n\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n that.initButtons();\n });\n }\n };\n\n this.init = function (update) {\n if (this.inited && !update) {\n return;\n }\n\n this.getHosts(function () {\n that._postInit();\n });\n if (!this.inited) {\n this.inited = true;\n this.main.subscribeObjects('system.host.*');\n this.main.subscribeStates('system.host.*');\n }\n };\n\n this.destroy = function () {\n if (this.inited) {\n this.inited = false;\n this.main.unsubscribeObjects('system.host.*');\n this.main.unsubscribeStates('system.host.*');\n }\n };\n\n this.addHost = function (obj) {\n var addr = null;\n // Find first non internal IP and use it as identifier\n if (obj.native.hardware && obj.native.hardware.networkInterfaces) {\n for (var eth in obj.native.hardware.networkInterfaces) {\n if (!obj.native.hardware.networkInterfaces.hasOwnProperty(eth)) continue;\n for (var num = 0; num < obj.native.hardware.networkInterfaces[eth].length; num++) {\n if (!obj.native.hardware.networkInterfaces[eth][num].internal) {\n addr = obj.native.hardware.networkInterfaces[eth][num].address;\n break;\n }\n }\n if (addr) break;\n }\n }\n if (addr) {\n this.list.push({name: obj.common.hostname, address: addr, id: obj._id});\n } else {\n this.list.push({name: obj.common.hostname, address: '127.0.0.1', id: obj._id});\n }\n };\n\n this.getHosts = function (callback) {\n this.main.socket.emit('getForeignObjects', 'system.host.*', 'state', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.objects[id] = res[id];\n }\n that.main.socket.emit('getForeignStates', 'system.host.*', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.states[id] = res[id];\n }\n that.main.socket.emit('getForeignObjects', 'system.host.*', 'host', function (err, res) {\n that.list = [];\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n var obj = res[id];\n\n that.main.objects[id] = obj;\n\n if (obj.type === 'host') {\n that.addHost(obj);\n }\n }\n main.initHostsList();\n if (callback) callback();\n });\n });\n });\n };\n\n this.objectChange = function (id, obj, action) {\n // Update hosts\n if (id.match(/^system\\.host\\.[-\\w]+$/)) {\n var found = false;\n var i;\n for (i = 0; i < this.list.length; i++) {\n if (this.list[i].id === id) {\n found = true;\n break;\n }\n }\n\n if (obj) {\n if (!found) this.list.push({id: id, address: obj.common.address ? obj.common.address[0] : '', name: obj.common.name});\n } else {\n if (found) this.list.splice(i, 1);\n }\n \n if (this.updateTimer) clearTimeout(this.updateTimer);\n\n this.updateTimer = setTimeout(function () {\n that.updateTimer = null;\n that._postInit();\n }, 200);\n }\n };\n\n this.stateChange = function (id, state) {\n if (id.match(/^system\\.host\\..+\\.alive$/)) {\n id = id.substring(0, id.length - 6);\n if (state && state.val) {\n this.$tab.find('.hosts-led[data-host-id=\"' + id + '\"]').removeClass('led-red').addClass('led-green');\n } else {\n this.$tab.find('.hosts-led[data-host-id=\"' + id + '\"]').removeClass('led-green').addClass('led-red');\n this.$tab.find('.host-update-submit[data-host-id=\"' + id + '\"]').hide();\n this.$tab.find('.host-update-hint-submit[data-host-id=\"' + id + '\"]').hide();\n this.$tab.find('.host-restart-submit[data-host-id=\"' + id + '\"]').hide();\n this.$tab.find('.hosts-version-available[data-host-id=\"' + id + '\"]').removeClass('hosts-version-available-updatable');\n }\n } else if (id.match(/^system\\.host\\..+\\.outputCount$/)) {\n id = id.substring(0, id.length - 12);\n\n this.$tab.find('.host-out[data-host-id=\"' + id + '\"]').html('↦' + state.val + '');\n } else if (id.match(/^system\\.host\\..+\\.inputCount$/)) {\n id = id.substring(0, id.length - 11);\n\n this.$tab.find('.host-in[data-host-id=\"' + id + '\"]').html('↦' + state.val + '');\n }\n };\n}\n\n","function Instances(main) {\n 'use strict';\n\n var that = this;\n\n this.$tab = $('#tab-instances');\n this.$grid = $('#grid-instances');\n this.$gridHead = $('#grid-instances-head');\n\n this.inited = false;\n this.main = main;\n this.list = [];\n this.hostsText = null;\n this.filterHost = false;\n this.memState = 'memAvailable';\n\n if (!window.tdp) {\n window.tdp = function (x, nachkomma) {\n return isNaN(x) ? '' : x.toFixed(nachkomma || 0).replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, \".\");\n }\n }\n\n function getLinkVar(_var, obj, attr, link, instance) {\n if (attr === 'protocol') attr = 'secure';\n\n if (_var === 'ip') {\n link = link.replace('%' + _var + '%', location.hostname);\n } else\n if (_var === 'instance') {\n link = link.replace('%' + _var + '%', instance);\n } else {\n if (obj) {\n if (attr.match(/^native_/)) attr = attr.substring(7);\n\n var val = obj.native[attr];\n if (_var === 'bind' && (!val || val === '0.0.0.0')) val = location.hostname;\n\n if (attr === 'secure') {\n link = link.replace('%' + _var + '%', val ? 'https' : 'http');\n } else {\n if (link.indexOf('%' + _var + '%') === -1) {\n link = link.replace('%native_' + _var + '%', val);\n } else {\n link = link.replace('%' + _var + '%', val);\n }\n }\n } else {\n if (attr === 'secure') {\n link = link.replace('%' + _var + '%', 'http');\n } else {\n if (link.indexOf('%' + _var + '%') === -1) {\n link = link.replace('%native_' + _var + '%', '');\n } else {\n link = link.replace('%' + _var + '%', '');\n }\n }\n }\n }\n return link;\n }\n\n function resolveLink(link, adapter, instance) {\n var vars = link.match(/%(\\w+)%/g);\n var _var;\n var v;\n var parts;\n if (vars) {\n // first replace simple patterns\n for (v = vars.length - 1; v >= 0; v--) {\n _var = vars[v];\n _var = _var.replace(/%/g, '');\n\n parts = _var.split('_');\n // like \"port\"\n if (_var.match(/^native_/)) {\n link = getLinkVar(_var, that.main.objects['system.adapter.' + adapter + '.' + instance], _var, link, instance);\n vars.splice(v, 1);\n } else\n if (parts.length === 1) {\n link = getLinkVar(_var, that.main.objects['system.adapter.' + adapter + '.' + instance], parts[0], link, instance);\n vars.splice(v, 1);\n } else\n // like \"web.0_port\"\n if (parts[0].match(/\\.[0-9]+$/)) {\n link = getLinkVar(_var, that.main.objects['system.adapter.' + parts[0]], parts[1], link, instance);\n vars.splice(v, 1);\n }\n }\n var links = {};\n var instances;\n var adptr = parts[0];\n // process web_port\n for (v = 0; v < vars.length; v++) {\n _var = vars[v];\n _var = _var.replace(/%/g, '');\n if (_var.match(/^native_/)) _var = _var.substring(7);\n\n parts = _var.split('_');\n if (!instances) {\n instances = [];\n for (var inst = 0; inst < 10; inst++) {\n if (that.main.objects['system.adapter.' + adptr + '.' + inst]) instances.push(inst);\n }\n }\n\n for (var i = 0; i < instances.length; i++) {\n links[adptr + '.' + i] = {\n instance: adptr + '.' + i,\n link: getLinkVar(_var, that.main.objects['system.adapter.' + adptr + '.' + i], parts[1], links[adptr + '.' + i] ? links[adptr + '.' + i].link : link, i)\n };\n }\n }\n\n var result;\n if (instances) {\n result = {};\n var count = 0;\n var firtsLink = '';\n for (var d in links) {\n if (links.hasOwnProperty(d)) {\n result[links[d].instance] = links[d].link;\n if (!firtsLink) firtsLink = links[d].link;\n count++;\n }\n }\n if (count < 2) {\n link = firtsLink;\n result = null;\n }\n }\n }\n return result || link;\n }\n\n this.replaceInLink = function (link, adapter, instance) {\n if (typeof link === 'object') {\n var links = JSON.parse(JSON.stringify(link));\n var first;\n for (var v in links) {\n if (links.hasOwnProperty(v)) {\n links[v] = resolveLink(links[v], adapter, instance);\n if (!first) first = links[v];\n }\n }\n links.__first = first;\n return links;\n } else {\n return resolveLink(link, adapter, instance);\n }\n };\n\n function updateLed(instanceId) {\n var tmp = instanceId.split('.');\n var adapter = tmp[2];\n var instance = tmp[3];\n\n var $led = that.$tab.find('.instance-led[data-instance-id=\"' + instanceId + '\"]');\n\n var common = that.main.objects[instanceId] ? that.main.objects[instanceId].common || {} : {};\n var state = (common.mode === 'daemon') ? 'green' : 'blue';\n var title = '';\n if (common.enabled && (!common.webExtension || !that.main.objects[instanceId].native.webInstance)) {\n title = '';\n title += '';\n\n if (that.main.states[adapter + '.' + instance + '.info.connection'] || that.main.objects[adapter + '.' + instance + '.info.connection']) {\n title += '';\n }\n title += '
        ' + _('Connected to host: ') + '';\n\n if (!that.main.states[instanceId + '.connected'] || !that.main.states[instanceId + '.connected'].val) {\n title += ((common.mode === 'daemon') ? '' + _('false') + '' : _('false'));\n state = (common.mode === 'daemon') ? 'red' : 'blue';\n } else {\n title += '' + _('true') + '';\n }\n title += '
        ' + _('Heartbeat: ') + '';\n\n if (!that.main.states[instanceId + '.alive'] || !that.main.states[instanceId + '.alive'].val) {\n title += ((common.mode === 'daemon') ? '' + _('false') + '' : _('false'));\n state = (common.mode === 'daemon') ? 'red' : 'blue';\n } else {\n title += '' + _('true') + '';\n }\n title += '
        ' + _('Connected to %s: ', adapter) + '';\n var val = that.main.states[adapter + '.' + instance + '.info.connection'] ? that.main.states[adapter + '.' + instance + '.info.connection'].val : false;\n if (!val) {\n state = state === 'red' ? 'red' : 'orange';\n title += '' + _('false') + '';\n } else {\n if (val === true) {\n title += '' + _('true') + '';\n } else {\n title += '' + val + '';\n }\n }\n title += '
        ';\n } else {\n state = (common.mode === 'daemon') ? 'gray' : 'blue';\n title = '';\n title += '';\n\n title += '';\n\n if (that.main.states[adapter + '.' + instance + '.info.connection'] || that.main.objects[adapter + '.' + instance + '.info.connection']) {\n title += '';\n }\n title += '
        ' + _('Connected to host: ') + '';\n\n if (!that.main.states[instanceId + '.connected'] || !that.main.states[instanceId + '.connected'].val) {\n title += _('false');\n } else {\n title += '' + _('true') + '';\n }\n title += '
        ' + _('Heartbeat: ') + '';\n if (!that.main.states[instanceId + '.alive'] || !that.main.states[instanceId + '.alive'].val) {\n title += _('false');\n } else {\n title += '' + _('true') + '';\n }\n title += '
        ' + _('Connected to %s: ', adapter) + '';\n var val = that.main.states[adapter + '.' + instance + '.info.connection'] ? that.main.states[adapter + '.' + instance + '.info.connection'].val : false;\n if (!val) {\n title += _('false');\n } else {\n if (val === true) {\n title += '' + _('true') + '';\n } else {\n title += '' + val + '';\n }\n }\n title += '
        ';\n }\n\n state = (state === 'blue') ? '' : state;\n\n $led.removeClass('led-red led-green led-orange led-blue').addClass('led-' + state).data('title', title);\n\n if (!$led.data('inited') && state !== 'gray') {\n $led.data('inited', true);\n\n $led.hover(function () {\n var text = '
        ' + $(this).data('title') + '
        ';\n var $big = $(text);\n\n $big.insertAfter($(this));\n $(this).data('big', $big[0]);\n var h = parseFloat($big.height());\n var top = Math.round($(this).position().top - ((h - parseFloat($(this).height())) / 2));\n if (h + top > (window.innerHeight || document.documentElement.clientHeight)) {\n top = (window.innerHeight || document.documentElement.clientHeight) - h;\n }\n if (top < 0) {\n top = 0;\n }\n $big.css({top: top}).on('click', function () {\n var big = $(this).data('big');\n $(big).remove();\n $(this).data('big', undefined);\n });\n }, function () {\n var big = $(this).data('big');\n $(big).remove();\n $(this).data('big', undefined);\n }).on('click', function () {\n $(this).trigger('hover');\n });\n }\n }\n\n /*function _createHead() {\n var text = '';\n // _('name'), _('instance'), _('title'), _('enabled'), _('host'), _('mode'), _('schedule'), '', _('platform'), _('loglevel'), _('memlimit'), _('alive'), _('connected')],\n text += '';\n //text += '';\n text += '';\n text += '' + _('instance') + '';\n text += '';\n text += '' + _('title') + '';\n\n if (that.main.tabs.hosts.list.length > 1) {\n text += '' + _('host') + '';\n }\n\n text += '' + _('schedule_group') + '';\n\n if (that.main.config.expertMode) {\n text += '' + _('restart') + '';\n text += '' + _('loglevel') + '';\n text += '' + _('memlimit') + '';\n text += '' + _('events') + '';\n }\n text += '' + _('RAM usage') + '';\n that.$gridHead.html(text);\n }*/\n\n function createHead() {\n var text = '';\n // _('name'), _('instance'), _('title'), _('enabled'), _('host'), _('mode'), _('schedule'), '', _('platform'), _('loglevel'), _('memlimit'), _('alive'), _('connected')],\n text += '' +\n '' + _('instance') + '' +\n '';\n text += '';\n text += '';\n // disabled, because no one use it\n if (false && that.main.config.expertMode) {\n text += '' + _('actions') + '';\n } else {\n text += '' + _('actions') + '';\n }\n text += '' + _('title') + '';\n\n if (that.main.tabs.hosts.list.length > 1) {\n text += '' + _('host') + '';\n }\n\n text += '' + _('schedule_group') + '';\n\n if (that.main.config.expertMode) {\n text += '' + _('restart') + '';\n text += '' + _('loglevel') + '';\n text += '' + _('memlimit') + '';\n text += '' + _('events') + '';\n }\n text += '' + _('RAM usage') + '';\n that.$gridHead.html(text);\n }\n\n function calculateTotalRam() {\n var host = that.main.states['system.host.' + that.main.currentHost + '.memRss'];\n var processes = 1;\n var mem = host ? host.val : 0;\n for (var i = 0; i < that.list.length; i++) {\n var obj = that.main.objects[that.list[i]];\n if (!obj || !obj.common) continue;\n if (obj.common.host !== that.main.currentHost) continue;\n if (obj.common.enabled && obj.common.mode === 'daemon') {\n var m = that.main.states[obj._id + '.memRss'];\n mem += m ? m.val : 0;\n processes++;\n }\n }\n mem = Math.round(mem);\n var $totalRam = that.$tab.find('#totalRam');\n if (mem.toString() !== $totalRam.text()) {\n $totalRam.html('' + mem + '');\n }\n var text = _('%s processes', processes);\n var $running_processes = that.$tab.find('#running_processes');\n if (text !== $running_processes.text()) {\n $running_processes.html('' + text + '')\n }\n }\n\n function calculateFreeMem() {\n if (that.main.states['system.host.' + that.main.currentHost + '.memAvailable']) {\n that.memState = 'memAvailable';\n } else if (that.main.states['system.host.' + that.main.currentHost + '.freemem']) {\n that.memState = 'freemem';\n }\n\n var host = that.main.states['system.host.' + that.main.currentHost + '.' + that.memState];\n if (host) {\n that.totalmem = that.totalmem || (that.main.objects['system.host.' + that.main.currentHost].native.hardware.totalmem / (1024 * 1024));\n var percent = Math.round((host.val / that.totalmem) * 100);\n var $freeMem = that.$tab.find('#freeMem');\n var strVal = tdp(host.val);\n if (strVal !== $freeMem.text()) {\n $freeMem.html('' + strVal + '');\n that.$tab.find('#freeMemPercent').html('' + percent + '%');\n }\n } else {\n that.$tab.find('.free-mem-label').hide();\n }\n }\n\n function calculateDiskMem() {\n var diskSize = that.main.states['system.host.' + that.main.currentHost + '.diskSize'];\n var diskFree = that.main.states['system.host.' + that.main.currentHost + '.diskFree'];\n var diskWarning = that.main.states['system.host.' + that.main.currentHost + '.diskWarning'];\n\n if (diskFree && diskFree.val && diskSize && diskSize.val) {\n if (diskWarning) {\n diskWarning = parseFloat(diskWarning.val);\n } else {\n diskWarning = 5;\n }\n\n var $diskFree = that.$tab.find('#diskFree');\n var size = (Math.round((diskFree.val / diskSize.val) * 1000) / 10);\n $diskFree.html('' + size + '');\n $diskFree.parent().attr('title', _('Size: %s, Free: %s', that.main.formatBytes(diskSize.val * 1024 * 1024), that.main.formatBytes(diskFree.val * 1024 * 1024)));\n } else {\n that.$tab.find('.tab-instances-info-disk').hide();\n }\n }\n\n function calculateRam(instanceId) {\n var mem;\n var common = that.main.objects[instanceId] ? that.main.objects[instanceId].common || {} : {};\n if (common.enabled && common.mode === 'daemon' && that.main.states[instanceId + '.memRss']) {\n mem = that.main.states[instanceId + '.memRss'].val;\n mem = parseFloat(mem) || 0;\n\n if (common.memoryLimitMB && common.memoryLimitMB <= mem) {\n mem = '' + mem.toFixed(1) + ' MB';\n } else {\n mem = mem.toFixed(1) + ' MB'\n }\n } else {\n mem = '';\n }\n return mem;\n }\n\n function showOneAdapter(rootElem, instanceId, form, justContent) {\n var text;\n var common = that.main.objects[instanceId] ? that.main.objects[instanceId].common || {} : {};\n var tmp = instanceId.split('.');\n var adapter = tmp[2];\n var instance = tmp[3];\n\n if (form === 'tile') {\n text = justContent ? '' : '
        ';\n text += justContent ? '' : '
        ';\n } else {\n // table\n text = justContent ? '' : '';\n\n var link = common.localLinks || common.localLink || '';\n var url = link ? that.replaceInLink(link, adapter, instance) : '';\n if (link) {\n if (typeof url === 'object') {\n link = '';\n } else {\n link = '';\n }\n }\n\n // State -\n // red - adapter is not connected or not alive,\n // orange - adapter is connected and alive, but device is not connected,\n // green - adapter is connected and alive, device is connected or no device,\n text += '
        ';\n\n // icon\n text += '' + (common.icon ? link + '' : '') + (link ? '
        ': '') + '';\n\n // name and instance\n text += '' + adapter + '.' + instance + '';\n\n var isRun = common.onlyWWW || common.enabled;\n // buttons\n text += '' +\n '' +\n '' +\n '';\n // disable, because no one use it\n if (false && that.main.config.expertMode) {\n text += '';\n }\n text += '' +\n (url ? '' : '') +\n '';\n\n var title = common.titleLang || common.title;\n if (typeof title === 'object') {\n title = title[systemLang] || title.en;\n }\n\n // title\n text += '' + (title || '') + '';\n\n // host - hide it if only one host\n if (that.main.tabs.hosts.list.length > 1) {\n if (!that.hostsText) {\n that.hostsText = '';\n for (var h = 0; h < that.main.tabs.hosts.list.length; h++) {\n var host = that.main.tabs.hosts.list[h] || '';\n that.hostsText += (that.hostsText ? ';' : '') + host.name;\n }\n }\n text += '' + (common.host || '') + '';\n }\n\n // schedule\n text += '' + (common.mode === 'schedule' ? (common.schedule || '') : '') + '';\n\n // scheduled restart (only experts)\n if (that.main.config.expertMode) {\n text += '' + (common.restartSchedule || '') + '';\n // debug level (only experts)\n text += '' + (common.loglevel || '') + '';\n // Max RAM (only experts)\n text += '' + (common.memoryLimitMB || '') + '';\n // Max RAM (only experts)\n if (isRun && that.main.states[instanceId + '.inputCount'] && that.main.states[instanceId + '.outputCount']) {\n text += '⇥' + that.main.states[instanceId + '.inputCount'].val + ' / ↦' + that.main.states[instanceId + '.outputCount'].val + '';\n } else {\n text += ' / ';\n }\n }\n\n text += '' + calculateRam(instanceId) + '';\n\n text += justContent ? '' : '';\n }\n if (!justContent) {\n rootElem.append(text);\n } else {\n that.$tab.find('.instance-adapter[data-instance-id=\"' + instanceId + '\"]').html(text);\n }\n // init buttons\n that.initButtons(instanceId, url);\n updateLed(instanceId);\n // init links\n that.$tab.find('.instance-editable[data-instance-id=\"' + instanceId + '\"]')\n .on('click', onQuickEditField)\n .addClass('select-id-quick-edit');\n\n // init schedule editor\n that.$tab.find('.instance-schedule[data-instance-id=\"' + instanceId + '\"]').each(function () {\n if (!$(this).find('button').length) {\n $(this).append('');\n $(this).find('button').on('click', function () {\n var attr = $(this).data('name');\n var _instanceId = $(this).data('instance-id');\n showCronDialog(that.main.objects[_instanceId].common[attr] || '', function (newValue) {\n if (newValue !== null) {\n var obj = {common: {}};\n obj.common[attr] = newValue;\n that.main.socket.emit('extendObject', _instanceId, obj, function (err) {\n if (err) that.main.showError(err);\n });\n }\n })\n });\n }\n });\n\n that.$tab.find('.instance-name[data-instance-id=\"' + instanceId + '\"]').on('click', function () {\n var $btn = that.$tab.find('.instance-settings[data-instance-id=\"' + $(this).data('instance-id') + '\"]');\n if (!$btn.hasClass('small-button-empty')) {\n $btn.trigger('click');\n }\n }).css('cursor', 'pointer');\n }\n\n function applyFilter(filter) {\n if (filter === undefined) {\n filter = that.$tab.find('.instances-filter').val();\n }\n var invisible = [];\n if (filter) {\n var reg = new RegExp(filter);\n\n for (var i = 0; i < that.list.length; i++) {\n var obj = that.main.objects[that.list[i]];\n if (!obj || !obj.common) {\n that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[i] + '\"]').hide();\n continue;\n }\n var isShow = 'hide';\n var title = obj.common.titleLang || obj.common.title;\n if (typeof title === 'object') {\n title = title[systemLang] || title.en;\n }\n\n if (obj.common.name && reg.test(obj.common.name)) {\n isShow = 'show';\n } else\n if (title && reg.test(title)) {\n isShow = 'show';\n } else\n if (filter === 'true') {\n isShow = that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[i] + '\"]').find('instance-led').hasClass('led-green') ? 'show' : 'hide';\n } else\n if (filter === 'false') {\n isShow = that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[i] + '\"]').find('instance-led').hasClass('led-green') ? 'hide' : 'show';\n }\n\n if (isShow === 'show' && that.filterHost && obj.common.host !== that.main.currentHost) isShow = 'hide';\n\n if (isShow === 'hide') invisible.push(that.list[i]);\n that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[i] + '\"]')[isShow]();\n }\n } else {\n if (that.filterHost) {\n for (var j = 0; j < that.list.length; j++) {\n var _obj = that.main.objects[that.list[j]];\n if (!_obj || !_obj.common) {\n that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[j] + '\"]').hide();\n continue;\n }\n var _isShow = 'hide';\n if (_obj.common.host === that.main.currentHost) _isShow = 'show';\n that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[j] + '\"]')[_isShow]();\n }\n } else {\n that.$grid.find('.instance-adapter').show();\n }\n }\n var anyVisible = false;\n that.$grid.find('.instance-adapter').each(function () {\n if ($(this).is(':visible')) {\n anyVisible = true;\n return false;\n }\n });\n\n if (anyVisible) {\n that.$grid.find('.filtered-out').hide();\n } else {\n that.$grid.find('.filtered-out').show();\n }\n }\n\n function onQuickEditField(e) {\n var $this = $(this);\n var id = $this.data('instance-id');\n var attr = $this.data('name');\n var options = $this.data('options');\n var oldVal = $this.data('value');\n var innerHTML = this.innerHTML;\n var textAlign = $this.css('text-align');\n $this.css('text-align', 'left');\n\n $this.off('click').removeClass('select-id-quick-edit').css('position', 'relative');\n\n var css = 'cursor: pointer; position: absolute;width: 16px; height: 16px; top: 2px; border-radius: 6px; z-index: 3; background-color: lightgray';\n var type = 'text';\n var text;\n\n if (options) {\n var opt = options.split(';');\n text = '';\n }\n text = text || '';\n\n var timeout = null;\n\n $this.html(text +\n '
        ' +\n '
        ');\n\n var $input = (options) ? $this.find('select') : $this.find('input');\n\n $this.find('.select-id-quick-edit-cancel').off('click').on('click', function (e) {\n if (timeout) clearTimeout(timeout);\n timeout = null;\n e.preventDefault();\n e.stopPropagation();\n $this.html(innerHTML)\n .off('click')\n .on('click', onQuickEditField)\n .addClass('select-id-quick-edit')\n .css('text-align', textAlign);\n });\n\n $this.find('.select-id-quick-edit-ok').off('click').on('click', function () {\n $this.trigger('blur');\n });\n\n $input.val(oldVal);\n\n $input.blur(function () {\n if (timeout) clearTimeout(timeout);\n\n timeout = setTimeout(function () {\n timeout = null;\n var val = $(this).val();\n\n if (JSON.stringify(val) !== JSON.stringify(oldVal)) {\n that.main.socket.emit('getObject', id, function (err, obj) {\n if (obj) {\n obj.common = obj.common || {};\n obj.common[attr] = val;\n if (attr === 'title' && obj.common.titleLang) {\n delete obj.common.titleLang;\n }\n that.main.socket.emit('setObject', obj._id, obj, function (err) {\n if (err) that.main.showError(err);\n });\n } else {\n console.log('Object ' + id + ' does not exist: ' + err);\n }\n });\n oldVal = '' + oldVal + '';\n } else {\n oldVal = innerHTML;\n }\n $this.html(oldVal)\n .off('click')\n .on('click', onQuickEditField)\n .addClass('select-id-quick-edit')\n .css('text-align', textAlign);\n }.bind(this), 100);\n }).on('keyup', function (e) {\n if (e.which === 13) $(this).trigger('blur');\n if (e.which === 27) {\n if (oldVal === undefined) oldVal = '';\n $this.html(oldVal)\n .off('click')\n .on('click', onQuickEditField)\n .addClass('select-id-quick-edit')\n .css('text-align', textAlign);\n }\n });\n\n if (typeof e === 'object') {\n e.preventDefault();\n e.stopPropagation();\n }\n\n setTimeout(function () {\n $input.focus();\n }, 100);\n }\n\n function showCronDialog(value, cb) {\n value = (value || '').replace(/\"/g, '').replace(/'/g, '');\n try {\n setupCron(value, cb);\n } catch (e) {\n alert(_('Cannot parse value as cron'));\n }\n }\n\n this.prepare = function () {\n /*this.$dialogCron.dialog({\n autoOpen: false,\n modal: true,\n width: 700,\n height: 550,\n resizable: false,\n title: _('Cron expression'),\n buttons: [\n {\n id: 'dialog_cron_insert',\n text: _('Insert'),\n click: function () {\n var val = $('#div-cron').cron('value');\n that.$dialogCron.dialog('close');\n that.editor.insert('\"' + val + '\"');\n that.editor.focus();\n }\n },\n {\n id: 'dialog_cron_clear',\n text: _('Clear'),\n click: function () {\n $('#div-cron').cron('value', '');\n }\n },\n {\n id: 'dialog_cron_callback',\n text: _('Set CRON'),\n click: function () {\n }\n },\n {\n text: _('Cancel'),\n click: function () {\n that.$dialogCron.dialog('close');\n }\n }\n ]\n });\n\n $('#div-cron').cron({value: ''});\n*/\n var $filter = that.$tab.find('.instances-filter');\n var $filterClear = that.$tab.find('.instances-filter-clear');\n\n $filter.on('change', function () {\n var val = $(this).val();\n if (val) {\n $(this).addClass('input-not-empty');\n $filterClear.show();\n } else {\n $(this).removeClass('input-not-empty');\n $filterClear.hide();\n }\n that.main.saveConfig('instancesFilter', val);\n applyFilter(val);\n }).on('keyup', function () {\n if (that.filterTimeout) clearTimeout(that.filterTimeout);\n that.filterTimeout = setTimeout(function () {\n $filter.trigger('change');\n }, 300);\n });\n if (that.main.config.instancesFilter && that.main.config.instancesFilter[0] !== '{') {\n $filter.addClass('input-not-empty').val(that.main.config.instancesFilter);\n $filterClear.show();\n } else {\n $filterClear.hide();\n }\n\n //$('#load_grid-instances').show();\n that.$tab.find('.btn-instances-expert-mode').on('click', function () {\n that.main.config.expertMode = !that.main.config.expertMode;\n that.main.saveConfig('expertMode', that.main.config.expertMode);\n that.updateExpertMode();\n that.main.tabs.adapters.updateExpertMode();\n });\n\n if (that.main.config.expertMode) {\n that.$tab.find('.btn-instances-expert-mode').addClass('red lighten-3');\n }\n\n that.$tab.find('.btn-instances-reload').on('click', function () {\n that.init(true, true);\n });\n\n /*that.$grid.find('#btn-instances-form').button({\n icons: {primary: 'ui-icon-refresh'},\n text: false\n }).css({width: '1.5em', height: '1.5em'}).attr('title', _('reload')).on('click', function () {\n that.main.config.instanceForm = that.main.config.instanceForm === 'tile' ? 'list' : 'tile';\n that.main.saveCell('expertMode', that.main.config.expertMode);\n that.init(true);\n });*/\n\n $filterClear.on('click', function () {\n $filter.val('').trigger('change');\n });\n\n this.$tab.find('.btn-instances-host').off('click').on('click', function () {\n that.filterHost = !that.filterHost;\n if (that.filterHost) {\n that.$tab.find('.btn-instances-host').addClass('red lighten-3');\n } else {\n that.$tab.find('.btn-instances-host').removeClass('red lighten-3');\n }\n that.main.saveConfig('instancesFilterHost', that.filterHost);\n\n setTimeout(function () {\n applyFilter();\n }, 50);\n });\n\n this.filterHost = this.main.config.instancesFilterHost || false;\n\n if (this.filterHost) {\n this.$tab.find('.btn-instances-host').addClass('red lighten-3');\n } else {\n this.$tab.find('.btn-instances-host').removeClass('red lighten-3');\n }\n };\n\n this.updateExpertMode = function () {\n that.init(true);\n if (that.main.config.expertMode) {\n that.$tab.find('.btn-instances-expert-mode').addClass('red lighten-3');\n } else {\n that.$tab.find('.btn-instances-expert-mode').removeClass('red lighten-3');\n }\n };\n\n this.replaceLink = function (_var, adapter, instance, elem) {\n _var = _var.replace(/%/g, '');\n if (_var.match(/^native_/)) _var = _var.substring(7);\n // like web.0_port\n var parts;\n if (_var.indexOf('_') === -1) {\n parts = [\n adapter + '.' + instance,\n _var\n ]\n } else {\n parts = _var.split('_');\n // add .0 if not defined\n if (!parts[0].match(/\\.[0-9]+$/)) parts[0] += '.0';\n }\n\n if (parts[1] === 'protocol') parts[1] = 'secure';\n\n if (_var === 'instance') {\n setTimeout(function () {\n var link;\n if (elem) {\n link = that.$tab.find('#' + elem).data('src');\n } else {\n link = that.$tab.find('#a_' + adapter + '_' + instance).attr('href');\n }\n\n link = link.replace('%instance%', instance);\n if (elem) {\n that.$tab.find('#' + elem).data('src', link);\n } else {\n that.$tab.find('#a_' + adapter + '_' + instance).attr('href', link);\n }\n }, 0);\n return;\n }\n\n this.main.socket.emit('getObject', 'system.adapter.' + parts[0], function (err, obj) {\n if (obj) {\n setTimeout(function () {\n var link;\n if (elem) {\n link = that.$tab.find('#' + elem).data('src');\n } else {\n link = that.$tab.find('#a_' + adapter + '_' + instance).attr('href');\n }\n if (link) {\n if (parts[1] === 'secure') {\n link = link.replace('%' + _var + '%', obj.native[parts[1]] ? 'https' : 'http');\n } else {\n if (link.indexOf('%' + _var + '%') === -1) {\n link = link.replace('%native_' + _var + '%', obj.native[parts[1]]);\n } else {\n link = link.replace('%' + _var + '%', obj.native[parts[1]]);\n }\n }\n if (elem) {\n that.$tab.find('#' + elem).data('src', link);\n } else {\n that.$tab.find('#a_' + adapter + '_' + instance).attr('href', link);\n }\n }\n }, 0);\n }\n });\n };\n\n /*this.replaceLinks = function (vars, adapter, instance, elem) {\n if (typeof vars !== 'object') vars = [vars];\n for (var t = 0; t < vars.length; t++) {\n this.replaceLink(vars[t], adapter, instance, elem);\n }\n };*/\n\n this._replaceLink = function (link, _var, adapter, instance, callback) {\n // remove %%\n _var = _var.replace(/%/g, '');\n\n if (_var.match(/^native_/)) _var = _var.substring(7);\n // like web.0_port\n var parts;\n if (_var.indexOf('_') === -1) {\n parts = [adapter + '.' + instance, _var];\n } else {\n parts = _var.split('_');\n // add .0 if not defined\n if (!parts[0].match(/\\.[0-9]+$/)) parts[0] += '.0';\n }\n\n if (parts[1] === 'protocol') parts[1] = 'secure';\n\n this.main.socket.emit('getObject', 'system.adapter.' + parts[0], function (err, obj) {\n if (obj && link) {\n if (parts[1] === 'secure') {\n link = link.replace('%' + _var + '%', obj.native[parts[1]] ? 'https' : 'http');\n } else {\n if (link.indexOf('%' + _var + '%') === -1) {\n link = link.replace('%native_' + _var + '%', obj.native[parts[1]]);\n } else {\n link = link.replace('%' + _var + '%', obj.native[parts[1]]);\n }\n }\n } else {\n console.log('Cannot get link ' + parts[1]);\n link = link.replace('%' + _var + '%', '');\n }\n setTimeout(function () {\n callback(link, adapter, instance);\n }, 0);\n });\n };\n\n this._replaceLinks = function (link, adapter, instance, arg, callback) {\n if (!link) {\n return callback(link, adapter, instance, arg);\n }\n var vars = link.match(/%(\\w+)%/g);\n if (!vars) {\n return callback(link, adapter, instance, arg);\n }\n if (vars[0] === '%ip%') {\n link = link.replace('%ip%', location.hostname);\n this._replaceLinks(link, adapter, instance, arg, callback);\n return;\n }\n if (vars[0] === '%instance%') {\n link = link.replace('%instance%', instance);\n this._replaceLinks(link, adapter, instance, arg, callback);\n return;\n }\n this._replaceLink(link, vars[0], adapter, instance, function (link, adapter, instance) {\n this._replaceLinks(link, adapter, instance, arg, callback);\n }.bind(this));\n };\n\n this._postInit = function (update, showTip) {\n if (this.main.currentHost && typeof this.$grid !== 'undefined' && (!this.$grid.data('inited') || update)) {\n this.$grid.data('inited', true);\n this.list.sort();\n var onlyWWW = [];\n // move all adapters with not onlyWWW and noConfig to the bottom\n for (var l = this.list.length - 1; l >= 0; l--) {\n if (this.main.objects[this.list[l]] &&\n this.main.objects[this.list[l]].common &&\n !this.main.objects[this.list[l]].common.localLink &&\n !this.main.objects[this.list[l]].common.localLinks &&\n this.main.objects[this.list[l]].common.noConfig\n ) {\n onlyWWW.push(this.list[l]);\n this.list.splice(l, 1);\n }\n }\n this.list.sort();\n onlyWWW.sort();\n for (l = 0; l < onlyWWW.length; l++) {\n this.list.push(onlyWWW[l]);\n }\n\n createHead();\n this.$grid.html('');\n var ts = Date.now();\n for (var i = 0; i < this.list.length; i++) {\n var obj = this.main.objects[this.list[i]];\n if (!obj) continue;\n showOneAdapter(this.$grid, this.list[i], this.main.config.instanceForm);\n }\n console.log(Date.now() - ts);\n\n this.$grid.append('' + _('Filtered out') + '');\n\n that.$tab.find('#currentHost').html(this.main.currentHost);\n\n if (that.main.tabs.hosts.list.length > 1) {\n this.$tab.find('.btn-instances-host').show();\n } else {\n this.$tab.find('.btn-instances-host').hide();\n this.filterHost = false;\n }\n\n applyFilter();\n\n calculateTotalRam();\n calculateFreeMem();\n calculateDiskMem();\n that.restoreScroll();\n if (showTip) {\n that.main.showToast(that.$tab.find('.main-toolbar-table'), _('Updated'));\n }\n }\n };\n\n this.getInstances = function (callback) {\n this.main.socket.emit('getForeignObjects', 'system.adapter.*', 'state', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.objects[id] = res[id];\n }\n that.main.socket.emit('getForeignStates', '*.info.connection', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.states[id] = res[id];\n }\n\n that.main.socket.emit('getForeignStates', 'system.adapter.*', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.states[id] = res[id];\n }\n\n that.main.socket.emit('getForeignObjects', 'system.adapter.*', 'instance', function (err, res) {\n that.main.instances.splice(0, that.main.instances.length); // because of pointer in admin.main\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n var obj = res[id];\n that.main.objects[id] = obj;\n\n if (obj.type === 'instance') {\n that.main.instances.push(id);\n }\n }\n if (callback) callback();\n });\n\n });\n });\n });\n };\n\n this.init = function (update, showMessage) {\n if (this.inited && !update) {\n return;\n }\n if (!this.main.objectsLoaded) {\n setTimeout(function () {\n that.init(update, showMessage);\n }, 250);\n return;\n }\n var count = 0;\n\n count++;\n this.getInstances(function () {\n if (!--count) that._postInit(update, showMessage);\n });\n count++;\n this.main.tabs.hosts.getHosts(function () {\n if (!--count) that._postInit(update, showMessage);\n });\n\n if (!this.inited) {\n this.inited = true;\n // subscribe objects and states\n this.main.subscribeObjects('system.adapter.*');\n this.main.subscribeStates('system.adapter.*');\n this.main.subscribeObjects('system.host.*');\n this.main.subscribeStates('system.host.*');\n this.main.subscribeStates('*.info.connection');\n }\n };\n\n this.saveScroll = function () {\n this.scrollTop = this.$tab.find('.grid-main-div').scrollTop();\n };\n this.restoreScroll = function () {\n if (this.scrollTop) {\n this.$tab.find('.grid-main-div').scrollTop(this.scrollTop);\n }\n };\n this.destroy = function () {\n if (this.inited) {\n this.saveScroll();\n this.$grid.data('inited', false);\n this.inited = false;\n // subscribe objects and states\n this.main.unsubscribeObjects('system.adapter.*');\n this.main.unsubscribeStates('system.host.*');\n this.main.unsubscribeObjects('system.host.*');\n this.main.unsubscribeStates('system.adapter.*');\n this.main.unsubscribeStates('*.info.connection');\n }\n };\n\n this.stateChange = function (id, state) {\n this.main.states[id] = state;\n if (this.$grid) {\n var parts = id.split('.');\n var last = parts.pop();\n id = parts.join('.');\n\n if (state) {\n if (last === 'diskFree' || last === 'diskWarning') {\n // update disk size\n calculateDiskMem();\n } else if (last === that.memState) {\n // update total ram\n calculateFreeMem();\n } else if (last === 'memRss') {\n // update total ram\n calculateTotalRam();\n // update instance ram\n var $mem = that.$tab.find('.memUsage[data-instance-id=\"' + id + '\"]');\n var mem = calculateRam(id);\n if ($mem.length && $mem.text() !== mem) {\n $mem.html('' + mem + '');\n }\n } else if (last === 'outputCount') {\n // update total ram\n that.$tab.find('.instance-out[data-instance-id=\"' + id + '\"]').html('↦' + state.val + '');\n } else if (last === 'inputCount') {\n that.$tab.find('.instance-in[data-instance-id=\"' + id + '\"]').html('⇥' + state.val + '');\n }\n\n if (this.list.indexOf(id) !== -1) {\n if (last === 'alive' || last === 'connected') {\n updateLed(id);\n }\n return;\n }\n id = 'system.adapter.' + parts[0] + '.' + parts[1];\n if (this.list.indexOf(id) !== -1 && last === 'connection') {\n updateLed(id);\n }\n }\n }\n };\n\n this.objectChange = function (id, obj, action) {\n // Update Instance Table\n if (id.match(/^system\\.adapter\\.[-\\w]+\\.[0-9]+$/)) {\n if (obj) {\n if (this.list.indexOf(id) === -1) {\n // add new instance\n this.list.push(id);\n\n if (this.updateTimer) clearTimeout(this.updateTimer);\n\n this.updateTimer = setTimeout(function () {\n that.updateTimer = null;\n that.init(true);\n }, 200);\n\n // open automatically config dialog\n if (!obj.common.noConfig) {\n setTimeout(function () {\n if (window.location.hash.indexOf('/config/') === -1) {\n // open configuration dialog\n that.main.navigate({\n tab: 'instances',\n dialog: 'config',\n params: id\n });\n }\n }, 2000);\n }\n } else {\n if (id.indexOf('.web.') !== -1) {\n if (this.updateTimer) clearTimeout(this.updateTimer);\n\n this.updateTimer = setTimeout(function () {\n that.updateTimer = null;\n that.init(true);\n }, 200);\n } else {\n // update just one line or\n this.$grid.find('.instance-adapter[data-instance-id=\"' + id + '\"]').html(showOneAdapter(this.$grid, id, this.main.config.instanceForm, true));\n }\n }\n } else {\n var i = this.list.indexOf(id);\n if (i !== -1) {\n this.list.splice(i, 1);\n this.$grid.find('.instance-adapter[data-instance-id=\"' + id + '\"]').remove();\n }\n }\n } else\n // update list if some host changed\n if (id.match(/^system\\.host\\.[-\\w]+$/)) {\n if (this.updateTimer) clearTimeout(this.updateTimer);\n\n this.updateTimer = setTimeout(function () {\n that.updateTimer = null;\n that.init(true);\n }, 200);\n }\n };\n\n this.initButtons = function (id, url) {\n id = id ? '[data-instance-id=\"' + id + '\"]' : '';\n\n var $e = that.$grid.find('.instance-edit' + id).off('click').on('click', function () {\n that.onEdit($(this).attr('data-instance-id'));\n });\n\n //var buttonSize = {width: '2em', height: '2em'}\n\n if (!$e.find('.ui-button-icon-primary').length) {\n $e/*.button({\n icons: {primary: 'ui-icon-pencil'},\n text: false\n }).css({width: '2em', height: '2em'})*/.attr('title', _('edit'));\n }\n\n $e = that.$grid.find('.instance-settings' + id).off('click')\n .on('click', function () {\n that.main.navigate({\n tab: 'instances',\n dialog: 'config',\n params: $(this).data('instance-id')\n });\n });\n /*if (!$e.find('.ui-button-icon-primary').length) {\n $e.button({icons: {primary: 'ui-icon-note'}, text: false}).css({width: '2em', height: '2em'}).attr('title', _('config'));\n }*/\n $e.each(function () {\n var _id = $(this).attr('data-instance-id');\n if (main.objects[_id] && main.objects[_id].common && main.objects[_id].common.noConfig) {\n //$(this).button('disable');\n $(this).addClass('disabled');\n }\n });\n\n $e = that.$grid.find('.instance-reload' + id).off('click')\n .on('click', function () {\n that.main.socket.emit('extendObject', $(this).attr('data-instance-id'), {}, function (err) {\n if (err) that.main.showError(err);\n });\n });\n /*if (!$e.find('.ui-button-icon-primary').length) {\n $e.button({icons: {primary: 'ui-icon-refresh'}, text: false}).attr('title', _('reload'));\n }*/\n\n $e = that.$grid.find('.instance-del' + id).off('click')\n .on('click', function () {\n var id = $(this).attr('data-instance-id');\n if (that.main.objects[id] && that.main.objects[id].common && that.main.objects[id].common.host) {\n var name = id.replace(/^system\\.adapter\\./, '');\n that.main.confirmMessage(_('Are you sure you want to delete the instance %s?', name), null, 'help', function (result) {\n if (result) {\n that.main.cmdExec(that.main.objects[id].common.host, 'del ' + id.replace('system.adapter.', ''), function (exitCode) {\n if (!exitCode) that.main.tabs.adapters.init(true);\n });\n }\n });\n }\n });\n\n /*if (!$e.find('.ui-button-icon-primary').length) {\n $e.button({icons: {primary: 'ui-icon-trash'}, text: false}).attr('title', _('delete'));\n } else {\n //$e.button('enable');\n $e.removeClass('disabled');\n }*/\n $e = that.$grid.find('.instance-issue' + id).off('click')\n .on('click', function () {\n that.main.navigate({\n tab: 'instances',\n dialog: 'issue',\n params: $(this).data('instance-id')\n });\n });\n /*if (!$e.find('.ui-button-icon-primary').length) {\n //$e.button({icons: {primary: 'ui-icon-pin-s'}, text: false}).css({width: '2em', height: '2em'}).attr('title', _('bug'));\n //Material-Hack\n $e.button().attr('title', _('bug')).empty().append('bug_report');\n }*/\n\n that.$grid.find('.instance-image' + id).each(function () {\n if (!$(this).data('installed')) {\n $(this).data('installed', true);\n $(this).hover(function () {\n var text = '
        ';\n var $big = $(text);\n $big.insertAfter($(this));\n $(this).data('big', $big[0]);\n var h = parseFloat($big.height());\n var top = Math.round($(this).position().top - ((h - parseFloat($(this).height())) / 2));\n if (h + top > (window.innerHeight || document.documentElement.clientHeight)) {\n top = (window.innerHeight || document.documentElement.clientHeight) - h;\n }\n if (top < 0) {\n top = 0;\n }\n $big.css({top: top});\n }, function () {\n var big = $(this).data('big');\n $(big).remove();\n $(this).data('big', undefined);\n });\n }\n });\n $e = that.$grid.find('.instance-stop-run' + id).off('click')\n .on('click', function () {\n var id = $(this).attr('data-instance-id');\n //$(this).button('disable');\n $(this).addClass('disabled');\n that.main.socket.emit('extendObject', id, {common: {enabled: !that.main.objects[id].common.enabled}}, function (err) {\n if (err) that.main.showError(err);\n });\n });\n\n if (!$e.find('.ui-button-icon-primary').length) {\n $e.each(function () {\n var id = $(this).attr('data-instance-id');\n var enabled = that.main.objects[id].common.enabled;\n\n if (enabled) {\n $e\n .addClass('instance-running')\n .attr('title', _('Activated. Click to stop.'))\n .find('i')\n .html('pause');\n } else {\n $e\n .removeClass('instance-running')\n .attr('title', _('Deactivated. Click to start.'))\n .find('i')\n .html('play_arrow');\n }\n\n /*$e.button({icons: {primary: enabled ? 'ui-icon-pause': 'ui-icon-play'}, text: false})\n //.css({'background-color': enabled ? 'lightgreen' : '#FF9999'})\n //.css({'background-color': enabled ? 'rgba(0, 255, 0, 0.15)' : 'rgba(255, 0, 0, 0.15)'})\n .css({'background-color': enabled ? 'rgba(0, 255, 0, 0.3)' : 'rgba(255, 0, 0, 0.3)'})\n .attr('title', enabled ? _('Activated. Click to stop.') : _('Deactivated. Click to start.'));*/\n });\n }\n\n $e = that.$grid.find('.instance-web' + id).off('click')\n .on('click', function () {\n var _link = $(this).data('link');\n if (typeof _link === 'object') {\n var menu = '';\n for (var m in _link) {\n if (!_link.hasOwnProperty(m)) continue;\n if (m === '__first') continue;\n var port = _link[m].match(/^https?:\\/\\/[-.\\w]+:(\\d+)\\/?/);\n var https = _link[m].match(/^https:\\/\\//);\n\n menu += '
      • ' + m + (port ? ' :' + port[1] : '') + (https ? ' - SSL' : '') + '
      • ';\n }\n menu += '
      • ' + _('Close') + '
      • ';\n\n var $instancesMenu = $('#instances-menu');\n if ($instancesMenu.data('inited')) $instancesMenu.menu('destroy');\n\n var pos = $(this).position();\n $instancesMenu.html(menu);\n if (!$instancesMenu.data('inited')) {\n $instancesMenu.data('inited', true);\n $instancesMenu.mouseleave(function () {\n $(this).hide();\n });\n }\n\n $instancesMenu.menu().css({\n left: pos.left,\n top: pos.top\n }).show();\n\n $instancesMenu.find('.instances-menu-link').off('click').on('click', function () {\n if ($(this).data('link')) window.open($(this).data('link'), $(this).data('instance-id'));\n $('#instances-menu').hide();\n });\n\n } else {\n window.open($(this).data('link'), $(this).data('instance-id'));\n }\n });\n if (typeof url === 'object') $e.data('link', url);\n\n /*if (!$e.find('.ui-button-icon-primary').length) {\n $e.button({icons: {primary: 'ui-icon-image'}, text: false}).attr('title', _('open web page'));\n } else {\n $e.removeClass('disabled');\n //$e.button('enable');\n }*/\n };\n\n this.resize = function (width, height) {\n //this.$grid.setGridHeight(height - 150).setGridWidth(width);\n };\n}\n","function Intro(main) {\n 'use strict';\n\n var that = this;\n\n this.$tab = $('#tab-intro');\n this.$tiles = this.$tab.find('.tab-intro-cards');\n this.main = main;\n this.inited = false;\n this.$template = $('#intro-template');\n\n function readInstances(callback) {\n that.main.socket.emit('getObjectView', 'system', 'instance', {startkey: 'system.adapter.', endkey: 'system.adapter.\\u9999'}, function (err, doc) {\n if (err) {\n if (callback) callback (err, []);\n } else {\n if (doc.rows.length === 0) {\n if (callback) callback (err, []);\n } else {\n that.main.instances = [];\n for (var i = 0; i < doc.rows.length; i++) {\n that.main.instances.push(doc.rows[i].id);\n that.main.objects[doc.rows[i].id] = doc.rows[i].value;\n }\n if (callback) callback(err, that.main.instances);\n }\n }\n });\n }\n\n /**\n * Format number in seconds to time text\n * @param {!number} seconds\n * @returns {String}\n */\n function formatSeconds(seconds) {\n var days = Math.floor(seconds / (3600 * 24));\n seconds %= 3600 * 24;\n var hours = Math.floor(seconds / 3600);\n if (hours < 10) {\n hours = '0' + hours;\n }\n seconds %= 3600;\n var minutes = Math.floor(seconds / 60);\n if (minutes < 10) {\n minutes = '0' + minutes;\n }\n seconds %= 60;\n seconds = Math.floor(seconds);\n if (seconds < 10) {\n seconds = '0' + seconds;\n }\n var text = '';\n if (days) {\n text += days + ' ' + _('daysShortText') + ' ';\n }\n text += hours + ':' + minutes + ':' + seconds;\n\n return text;\n }\n\n /**\n * Format bytes to MB or GB\n * @param {!number} bytes\n * @returns {String}\n */\n function formatRam(bytes) {\n var GB = Math.floor(bytes / (1024 * 1024 * 1024) * 10) / 10;\n bytes %= (1024 * 1024 * 1024);\n var MB = Math.floor(bytes / (1024 * 1024) * 10) / 10;\n var text = '';\n if (GB > 1) {\n text += GB + ' GB ';\n } else {\n text += MB + ' MB ';\n }\n\n return text;\n }\n\n function formatSpeed(mhz) {\n return mhz + ' MHz';\n }\n\n /**\n * FormatObject for host informations\n * @type type\n */\n var formatInfo = {\n 'Uptime': formatSeconds,\n 'System uptime': formatSeconds,\n 'RAM': formatRam,\n 'Speed': formatSpeed,\n 'Disk size': that.main.formatBytes,\n 'Disk free': that.main.formatBytes\n };\n\n function copyToClipboard(e) {\n var $input = $('\\n';\n }\n }\n\n var title = attr;\n // translations\n if (part === 'common' && systemDictionary['common_' + attr] && systemDictionary['common_' + attr][systemLang]) {\n title = _('common_' + attr);\n }\n\n // workaround for materialize\n if (typeof object[attr] === 'boolean') {\n text += '' + title + '\\n';\n } else {\n text += '\\n';\n }\n\n text += '
        \\n\\n';\n text += '
        \\n';\n }\n\n that.$dialog.find(selector).html(text);\n /*that.$dialog.find(selector).find('.autocomplete').each(function () {\n $(this).mautocomplete({\n data: {\n 'state': null,\n 'switch': null,\n 'button': null,\n 'value': null,\n 'level': null,\n 'indicator': null,\n 'value.temperature': null,\n 'value.humidity': null,\n 'level.temperature': null,\n 'level.dimmer': null\n },\n minLength: 0 // The minimum length of the input for the autocomplete to start. Default: 1.\n });\n });*/\n }\n\n function saveObjectFields(selector, object) {\n var $htmlId = that.$dialog.find(selector);\n $htmlId.find('.object-tab-edit-string').each(function () {\n object[$(this).data('attr')] = $(this).val();\n });\n $htmlId.find('.object-tab-edit-number').each(function () {\n object[$(this).data('attr')] = parseFloat($(this).val());\n });\n $htmlId.find('.object-tab-edit-boolean').each(function () {\n object[$(this).data('attr')] = $(this).prop('checked');\n });\n var err = null;\n $htmlId.find('.object-tab-edit-object').each(function () {\n try {\n object[$(this).data('attr')] = JSON.parse($(this).val());\n } catch (e) {\n err = $(this).data('attr');\n return false;\n }\n });\n\n if (object.write !== undefined) {\n if (object.write === 'false' || object.write === '0' || object.write === 0) object.write = false;\n if (object.write === 'true' || object.write === '1' || object.write === 1) object.write = true;\n }\n\n if (object.read !== undefined) {\n if (object.read === 'false' || object.read === '0' || object.read === 0) object.read = false;\n if (object.read === 'true' || object.read === '1' || object.read === 1) object.read = true;\n }\n\n if (object.min === null) {\n delete object.min;\n }\n if (object.min !== undefined) {\n var f = parseFloat(object.min);\n if (f.toString() === object.min.toString()) object.min = f;\n\n if (object.min === 'false') object.min = false;\n if (object.min === 'true') object.min = true;\n }\n if (object.max === null) {\n delete object.max;\n }\n if (object.max !== undefined) {\n var m = parseFloat(object.max);\n if (m.toString() === object.max.toString()) object.max = m;\n\n if (object.max === 'false') object.max = false;\n if (object.max === 'true') object.max = true;\n }\n if (object.def === null) {\n delete object.def;\n }\n\n if (object.def !== undefined) {\n var d = parseFloat(object.def);\n if (d.toString() === object.def.toString()) object.def = d;\n\n if (object.def === 'false') object.def = false;\n if (object.def === 'true') object.def = true;\n }\n\n // common part cannot have \"true\" or \"false\". Only true and false.\n if (selector.indexOf('common') !== -1) {\n for (var attr in object) {\n if (object.hasOwnProperty(attr)) {\n if (object[attr] === 'true') {\n object[attr] = true;\n }\n if (object[attr] === 'false') {\n object[attr] = false;\n }\n if (parseFloat(object[attr]).toString() === object[attr]) {\n object[attr] = parseFloat(object[attr]);\n }\n }\n }\n }\n\n return err;\n }\n\n function showMessage(text, duration, isError) {\n if (typeof duration === 'boolean') {\n isError = duration;\n duration = 3000;\n }\n that.main.showToast(that.$dialog, text, null, duration, isError);\n }\n\n // only init if required\n this._prepare = function () {\n if (this.prepared) {\n return;\n }\n this.prepared = true;\n this.$dialogSave.on('click', function () {\n that.save();\n });\n this.$dialog.find('.dialog-editobject-buttons .btn-cancel').on('click', function () {\n that.editor.setValue('');\n that.$dialogSave.addClass('disabled');\n that.main.navigate();\n });\n\n this.$dialog.find('.btn-add-common').on('click', function () {\n that.$dialogNewField.find('.object-tab-new-icon').show();\n that.$dialogNewField.modal('open');\n var $name = that.$dialogNewField.find('.object-tab-new-name');\n $name.data('type', 'common').focus();\n if (!$name.hasClass('autocomplete')) {\n $name.addClass('autocomplete');\n $name.mautocomplete({\n data: {\n type: null,\n desc: null,\n min: null,\n max: null,\n def: null,\n role: null,\n unit: null,\n read: null,\n write: null,\n states: null\n },\n minLength: 0 // The minimum length of the input for the autocomplete to start. Default: 1.\n });\n }\n $name.focus()\n });\n\n this.$dialog.find('.btn-add-native').on('click', function () {\n that.$dialogNewField.find('.object-tab-new-icon').hide();\n that.$dialogNewField.modal('open');\n var $name = that.$dialogNewField.find('.object-tab-new-name');\n if ($name.hasClass('autocomplete')) {\n $name.mautocomplete('destroy');\n $name.removeClass('autocomplete');\n }\n M.updateTextFields('#dialog-new-field');\n $name.data('type', 'native').focus();\n });\n this.$dialogNewField.find('.object-tab-new-name').keypress(function (e) {\n if (e.which === 13) {\n that.$dialogNewField.find('.btn-add').trigger('click');\n }\n });\n\n if (!this.editor) {\n this.editor = ace.edit('view-object-raw');\n this.editor.getSession().setMode('ace/mode/json');\n this.editor.$blockScrolling = true;\n this.editor.getSession().on('change', function() {\n that.$dialogSave.removeClass('disabled');\n });\n }\n this.$dialogNewField.modal();\n\n this.$dialog.find('.tabs').mtabs({\n onShow: function (tab) {\n if (!tab) return;\n var id = $(tab).attr('id');\n if (id === 'object-tab-common') {\n showMessage(_('Drop the icons here'));\n } else \n if (id === 'object-tab-raw') {\n var obj = that.saveFromTabs();\n\n if (!obj) return false;\n\n that.editor.setValue(JSON.stringify(obj, null, 2));\n } else if (id === 'object-tab-raw') {\n var _obj;\n try {\n _obj = JSON.parse(that.editor.getValue());\n } catch (e) {\n that.main.showMessage(e, _('Parse error'), 'error_outline');\n if (!that.main.noSelect) {\n that.$dialog.find('.tabs').mtabs('select', 'object-tab-raw');\n }\n return false;\n }\n that.load(_obj);\n }\n that.main.saveConfig('object-edit-active', id);\n return true;\n }\n });\n\n this.$dialogNewField.find('.btn-add').on('click', function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n var $tab = that.$dialogNewField.find('.object-tab-new-name');\n var type = $tab.data('type') || 'common';\n var field = $tab.val().trim();\n var obj = that.saveFromTabs();\n\n if (!field || field.indexOf(' ') !== -1) {\n that.main.showError(_('Invalid field name: %s', field));\n return;\n }\n if (obj[type][field] !== undefined) {\n that.main.showError(_('Field %s yet exists!', field));\n return;\n }\n\n obj[type][field] = '';\n\n that.load(obj);\n that.$dialogNewField.find('.object-tab-new-name').val('');\n that.$dialogNewField.modal('close');\n that.$dialogSave.removeClass('disabled');\n });\n this.$dialogNewField.find('.btn-cancel').on('click', function (e) {\n that.$dialogNewField.find('.object-tab-new-name').val('');\n });\n this.$dialog.find('.edit-object-name').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n }).on('keyup', function () {\n $(this).trigger('change');\n });\n this.$dialog.find('.edit-object-type').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n });\n this.$dialog.find('.object-tab-rights input').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n });\n\n installFileUpload(this.$dialog.find('#object-tab-common'), 50000, function (err, text) {\n if (err) {\n showMessage(err, true);\n } else {\n if (!text.match(/^data:image\\//)) {\n showMessage(_('Unsupported image format'), true);\n return;\n }\n\n that.$dialogSave.removeClass('disabled');\n that.iconVal = text;\n\n var $tab = that.$dialog.find('.icon-editor');\n $tab.find('.icon').show().html('');\n $tab.find('.icon .treetable-icon').attr('src', text);\n }\n });\n this.$dialog.find('.icon-editor .icon-upload').off('click').on('click', function () {\n that.$dialog.find('.drop-file').trigger('click');\n });\n this.$dialog.find('.icon-editor .icon-clear').off('click').on('click', function () {\n if (that.iconVal) {\n that.iconVal = null;\n that.$dialog.find('.icon-editor').hide().appendTo(that.$dialog);\n that.$dialogSave.removeClass('disabled');\n }\n });\n };\n\n this.init = function () {\n this._prepare();\n if (this.inited) {\n return;\n }\n this.inited = true;\n var id = that.main.navigateGetParams();\n var isSetDefaultState = !!(id || '').match(/,def$/);\n id = id.replace(/,def$/, '');\n\n var obj = this.main.objects[id];\n if (!obj) return;\n\n if (this.main.config['object-edit-active'] !== undefined && !that.main.noSelect) {\n this.$dialog.find('.tabs').mtabs('select', this.main.config['object-edit-active']);\n }\n\n // fill users\n var text = '';\n var name;\n for (var u = 0; u < this.main.tabs.users.list.length; u++) {\n name = translateName(this.main.objects[this.main.tabs.users.list[u]].common.name);\n text += '';\n }\n this.$dialog.find('.object-tab-acl-owner').html(text);\n\n // fill groups\n text = '';\n for (u = 0; u < this.main.tabs.users.groups.length; u++) {\n name = translateName(this.main.objects[this.main.tabs.users.groups[u]].common.name);\n text += '';\n }\n this.$dialog.find('.object-tab-acl-group').html(text);\n this.load(obj);\n\n if (isSetDefaultState) {\n this.$dialog.data('cb', function (_obj) {\n if (_obj.type === 'state') {\n // create state\n that.main.socket.emit('getState', _obj._id, function (err, state) {\n if (!state || state.val === null || state.val === undefined) {\n that.main.socket.emit('setState', _obj._id, _obj.common.def === undefined ? null : _obj.common.def, true);\n }\n });\n }\n });\n } else {\n this.$dialog.data('cb', null);\n }\n that.$dialogSave.addClass('disabled');\n };\n\n this.destroy = function () {\n if (this.inited) {\n this.inited = false;\n }\n };\n\n this.load = function (obj) {\n if (!obj) return;\n obj.common = obj.common || {};\n obj.native = obj.native || {};\n obj.acl = obj.acl || {};\n this.$dialog.find('.title-id').text(obj._id);\n this.$dialog.find('.edit-object-name').val(obj.common ? translateName(obj.common.name) : obj._id);\n this.$dialog.find('.edit-object-type').val(obj.type);\n this.$dialog.find('.object-tab-acl-owner').val(obj.acl.owner || 'system.user.admin');\n this.$dialog.find('.object-tab-acl-group').val(obj.acl.ownerGroup || 'system.group.administrator');\n\n this.$dialog.find('.icon-editor').hide().appendTo(this.$dialog);\n\n loadObjectFields('.object-tab-common-table', obj.common || {}, 'common', obj.type);\n loadObjectFields('.object-tab-native-table', obj.native || {}, 'native', obj.type);\n\n if (obj.common.icon !== undefined) {\n this.iconVal = obj.common.icon;\n this.$dialog.find('.object-tab-common-table').prepend(this.$dialog.find('.icon-editor').show());\n this.$dialog.find('.icon-editor .icon').html(that.main.getIconFromObj(obj));\n } else {\n this.iconVal = null;\n }\n\n this.$dialog.find('.object-tab-field-delete').on('click', function () {\n var part = $(this).data('part');\n var field = $(this).data('attr');\n that.main.confirmMessage(_('Delete attribute'), _('Please confirm'), 'error_outline', function (result) {\n if (result) {\n var _obj = that.saveFromTabs();\n delete _obj[part][field];\n that.load(_obj);\n }\n });\n });\n\n obj.acl = obj.acl || {};\n if (obj.acl.object === undefined) obj.acl.object = 0x666;\n\n this.$dialog.find('#object-tab-acl-obj-owner-read') .prop('checked', obj.acl.object & 0x400);\n this.$dialog.find('#object-tab-acl-obj-owner-write').prop('checked', obj.acl.object & 0x200);\n this.$dialog.find('#object-tab-acl-obj-group-read'). prop('checked', obj.acl.object & 0x40);\n this.$dialog.find('#object-tab-acl-obj-group-write').prop('checked', obj.acl.object & 0x20);\n this.$dialog.find('#object-tab-acl-obj-every-read'). prop('checked', obj.acl.object & 0x4);\n this.$dialog.find('#object-tab-acl-obj-every-write').prop('checked', obj.acl.object & 0x2);\n\n if (obj.type !== 'state') {\n this.$dialog.find('.object-tab-acl-state').hide();\n } else {\n this.$dialog.find('.object-tab-acl-state').show();\n if (obj.acl.state === undefined) obj.acl.state = 0x666;\n\n this.$dialog.find('#object-tab-acl-state-owner-read') .prop('checked', obj.acl.state & 0x400);\n this.$dialog.find('#object-tab-acl-state-owner-write').prop('checked', obj.acl.state & 0x200);\n this.$dialog.find('#object-tab-acl-state-group-read'). prop('checked', obj.acl.state & 0x40);\n this.$dialog.find('#object-tab-acl-state-group-write').prop('checked', obj.acl.state & 0x20);\n this.$dialog.find('#object-tab-acl-state-every-read'). prop('checked', obj.acl.state & 0x4);\n this.$dialog.find('#object-tab-acl-state-every-write').prop('checked', obj.acl.state & 0x2);\n }\n\n var _obj = JSON.parse(JSON.stringify(obj));\n this.editor.setValue(JSON.stringify(_obj, null, 2));\n if (_obj._id) delete _obj._id;\n if (_obj.common) delete _obj.common;\n if (_obj.type) delete _obj.type;\n if (_obj.native) delete _obj.native;\n if (_obj.acl) delete _obj.acl;\n this.$dialog.find('#view-object-rest').val(JSON.stringify(_obj, null, ' '));\n this.$dialog.find('select').select();\n\n // workaround for materialize checkbox problem\n this.$dialog.find('input[type=\"checkbox\"]+span').off('click').on('click', function () {\n var $input = $(this).prev();\n if (!$input.prop('disabled')) {\n $input.prop('checked', !$input.prop('checked')).trigger('change');\n }\n });\n // enable save\n this.$dialog.find('input').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n }).on('keyup', function () {\n $(this).trigger('change');\n });\n\n this.$dialog.find('select').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n });\n\n this.$dialog.find('textarea').on('change', function () {\n that.$dialogSave.removeClass('disabled');\n }).on('keyup', function () {\n $(this).trigger('change');\n });\n\n if (obj.common.color !== undefined) {\n var time = Date.now();\n\n var $color = this.$dialog.find('.object-tab-edit-string[data-attr=\"color\"]').parent();\n $color.prepend('color_lens' + _('Color') + '');\n $color.colorpicker({\n component: '.btn',\n color: $color,\n container: true\n }).colorpicker('setValue', obj.common.color || '#fff').on('showPicker.colorpicker', function (/* event */) {\n }).on('changeColor.colorpicker', function (event){\n if (Date.now() - time > 100) {\n $color.find('input').val(event.color.toHex()).trigger('change');\n }\n });\n }\n\n };\n\n this.saveFromTabs = function () {\n var obj;\n try {\n obj = this.$dialog.find('#view-object-rest').val();\n if (!obj) {\n obj = {};\n } else {\n obj = JSON.parse(obj);\n }\n } catch (err) {\n this.main.showMessage(_('Cannot parse.'), _('Error in %s', err), 'error_outline');\n return false;\n }\n\n obj.common = {};\n obj.native = {};\n obj.acl = {};\n obj._id = this.$dialog.find('.title-id').text();\n obj.common.name = this.$dialog.find('.edit-object-name').val(); // no support of multilanguage if edited\n obj.type = this.$dialog.find('.edit-object-type').val();\n var err = saveObjectFields('.object-tab-common-table', obj.common);\n if (err) {\n this.main.showMessage(_('Cannot parse.'), _('Error in %s', err), 'error_outline');\n return false;\n }\n err = saveObjectFields('.object-tab-native-table', obj.native);\n if (err) {\n this.main.showMessage(_('Cannot parse.'), _('Error in %s', err), 'error_outline');\n return false;\n }\n obj.acl.object = 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-owner-read').prop('checked') ? 0x400 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-owner-write').prop('checked') ? 0x200 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-group-read').prop('checked') ? 0x40 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-group-write').prop('checked') ? 0x20 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-every-read').prop('checked') ? 0x4 : 0;\n obj.acl.object |= this.$dialog.find('#object-tab-acl-obj-every-write').prop('checked') ? 0x2 : 0;\n\n obj.acl.owner = this.$dialog.find('.object-tab-acl-owner').val();\n obj.acl.ownerGroup = this.$dialog.find('.object-tab-acl-group').val();\n\n if (obj.type === 'state') {\n obj.acl.state = 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-owner-read').prop('checked') ? 0x400 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-owner-write').prop('checked') ? 0x200 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-group-read').prop('checked') ? 0x40 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-group-write').prop('checked') ? 0x20 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-every-read').prop('checked') ? 0x4 : 0;\n obj.acl.state |= this.$dialog.find('#object-tab-acl-state-every-write').prop('checked') ? 0x2 : 0;\n }\n\n if (this.iconVal !== null && this.iconVal !== undefined) {\n obj.common.icon = this.iconVal;\n }\n\n return obj;\n };\n\n this.saveFromRaw = function () {\n var obj;\n try {\n obj = JSON.parse(this.editor.getValue());\n } catch (e) {\n this.main.showMessage(e, _('Parse error'), 'error_outline');\n if (!that.main.noSelect) {\n this.$dialog.find('.tabs').mtabs('select', 'object-tab-raw');\n }\n return false;\n }\n return obj;\n };\n\n this.save = function () {\n if (this.main.config['object-edit-active'] === 'object-tab-raw') {\n var _obj = this.saveFromRaw();\n if (!_obj) return;\n\n this.main.socket.emit('setObject', _obj._id, _obj, function (err) {\n if (err) {\n that.main.showError(err);\n } else {\n var cb = that.$dialog.data('cb');\n if (cb) cb(_obj);\n that.$dialogSave.addClass('disabled');\n that.main.navigate();\n }\n });\n } else {\n var obj = that.saveFromTabs();\n if (!obj) return;\n this.main.socket.emit('getObject', obj._id, function (err, _obj) {\n if (err) {\n return that.main.showError(err);\n }\n\n _obj.common = obj.common;\n _obj.native = obj.native;\n _obj.acl = obj.acl;\n that.main.socket.emit('setObject', obj._id, _obj, function (err) {\n if (err) {\n that.main.showError(err);\n } else {\n var cb = that.$dialog.data('cb');\n if (cb) cb(obj);\n that.$dialogSave.addClass('disabled');\n that.main.navigate();\n }\n });\n });\n }\n };\n\n this.allStored = function () {\n return that.$dialogSave.hasClass('disabled');\n };\n\n}","function Enums(main) {\n 'use strict';\n\n // enum is first level like enum.function or enum.rooms\n // category is second level like enum.function.light or enum.room.living_room\n\n var that = this;\n\n this.main = main;\n this.list = [];\n this.$gridEnum = $('#tab-enums');\n this.$gridList = this.$gridEnum.find('.tab-enums-list');\n this.$grid = this.$gridEnum.find('.tab-enums-objects');\n this.updateTimers = null;\n this.editMode = false;\n this.isTiles = false;\n\n var tasks = [];\n var standardEnums = {\n 'enum.rooms': {\n \"_id\": \"enum.rooms\",\n \"common\": {\n \"icon\": \"home\",\n \"name\": {\n \"en\": \"Rooms\",\n \"de\": \"Räume\",\n \"ru\": \"Комнаты\",\n \"pt\": \"Quartos\",\n \"nl\": \"Kamers\",\n \"fr\": \"Pièces\",\n \"it\": \"Camere\",\n \"es\": \"Habitaciones\"\n },\n \"desc\": {\n \"en\": \"List of the rooms\",\n \"de\": \"Liste der Räumen\",\n \"ru\": \"Список комнат\",\n \"pt\": \"Lista dos quartos\",\n \"nl\": \"Lijst met kamers\",\n \"fr\": \"Liste des chambres\",\n \"it\": \"Elenco delle stanze\",\n \"es\": \"Lista de las habitaciones\"\n },\n \"members\": [],\n \"dontDelete\": true\n },\n \"type\": \"enum\"\n },\n 'enum.functions': {\n \"_id\": \"enum.functions\",\n \"common\": {\n \"icon\": \"lightbulb_outline\",\n \"name\": {\n \"en\": \"Functions\",\n \"de\": \"Funktionen\",\n \"ru\": \"функции\",\n \"pt\": \"Funções\",\n \"nl\": \"functies\",\n \"fr\": \"Les fonctions\",\n \"it\": \"funzioni\",\n \"es\": \"Funciones\"\n },\n \"desc\": {\n \"en\": \"List of the functions\",\n \"de\": \"Liste der Funktionen\",\n \"ru\": \"Список функций\",\n \"pt\": \"Lista das funções\",\n \"nl\": \"Lijst met functies\",\n \"fr\": \"Liste des fonctions\",\n \"it\": \"Elenco delle funzioni\",\n \"es\": \"Lista de las funciones\"\n },\n \"members\": [],\n \"dontDelete\": true\n },\n \"type\": \"enum\"\n },\n 'enum.favorites': {\n \"_id\": \"enum.favorites\",\n \"common\": {\n \"icon\": \"favorite_border\",\n \"name\": {\n \"en\": \"Favorites\",\n \"de\": \"Favoriten\",\n \"ru\": \"Избранные\",\n \"pt\": \"Favoritos\",\n \"nl\": \"favorieten\",\n \"fr\": \"Favoris\",\n \"it\": \"Preferiti\",\n \"es\": \"Favoritos\"\n },\n \"desc\": {\n \"en\": \"List of favorites objects\",\n \"de\": \"Liste der Favoritenobjekte\",\n \"ru\": \"Список избранных объектов\",\n \"pt\": \"Lista de objetos favoritos\",\n \"nl\": \"Lijst met favorietenobjecten\",\n \"fr\": \"Liste des objets favoris\",\n \"it\": \"Elenco di oggetti preferiti\",\n \"es\": \"Lista de objetos favoritos\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n }\n };\n\n var standardGroups = {\n 'enum.rooms': {\n \"enum.rooms.living_room\": {\n \"_id\": \"enum.rooms.living_room\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4MC4wNDYgNDgwLjA0NiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwLjA0NiA0ODAuMDQ2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PGc+PHBhdGggZD0iTTMyOC4wMzQsMzIwLjA0NmgtMjR2LTg4YzAtNC40MTgtMy41ODItOC04LThoLTI1NmMtNC40MTgsMC04LDMuNTgyLTgsOHY4OGgtMjRjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MTI4YzAsNC40MTgsMy41ODIsOCw4LDhoMjR2MTZoMTZ2LTE2aDI0MHYxNmgxNnYtMTZoMjRjNC40MTgsMCw4LTMuNTgyLDgtOHYtMTI4QzMzNi4wMzQsMzIzLjYyOCwzMzIuNDUyLDMyMC4wNDYsMzI4LjAzNCwzMjAuMDQ2eiBNODAuMDM0LDQ0OC4wNDZoLTY0di0xMTJoNjRWNDQ4LjA0NnogTTI0MC4wMzQsNDQ4LjA0NmgtMTQ0di02NGgxNDRWNDQ4LjA0NnogTTI0MC4wMzQsMzI4LjA0NnY0MGgtMTQ0di00MGMwLTQuNDE4LTMuNTgyLTgtOC04aC00MHYtODBoMjQwdjgwaC00MEMyNDMuNjE1LDMyMC4wNDYsMjQwLjAzNCwzMjMuNjI4LDI0MC4wMzQsMzI4LjA0NnogTTMyMC4wMzQsNDQ4LjA0NmgtNjR2LTExMmg2NFY0NDguMDQ2eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggZD0iTTQ3OS45NTQsMTUxLjE2NmwtMTYtMTQ0Yy0wLjQ0Ny00LjA0MS0zLjg1NC03LjEwNC03LjkyLTcuMTJoLTExMmMtNC4wOTYtMC4wMjUtNy41NDksMy4wNDktOCw3LjEybC0xNiwxNDRjLTAuMjc2LDIuMjU4LDAuNDIyLDQuNTI4LDEuOTIsNi4yNGMxLjU1LDEuNzE4LDMuNzY3LDIuNjgsNi4wOCwyLjY0aDY0djI3MmgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MzJjMCw0LjQxOCwzLjU4Miw4LDgsOGg4MGM0LjQxOCwwLDgtMy41ODIsOC04di0zMmMwLTQuNDE4LTMuNTgyLTgtOC04aC0zMnYtMjcyaDY0YzIuMjg1LDAuMDE3LDQuNDY5LTAuOTQzLDYtMi42NEM0NzkuNTMyLDE1NS42OTQsNDgwLjIzLDE1My40MjUsNDc5Ljk1NCwxNTEuMTY2eiBNNDMyLjAzNCw0NDguMDQ2djE2aC02NHYtMTZINDMyLjAzNHogTTMzNi45OTQsMTQ0LjA0NmwxNC4yNC0xMjhoOTcuNmwxNC4yNCwxMjhIMzM2Ljk5NHoiLz48L2c+PC9nPjxnPjxnPjxwYXRoIGQ9Ik0yNzIuMDM0LDQ4LjA0NmgtNTIuNzJsLTQ1LjYtNDUuNjhjLTMuMTExLTMuMTM3LTguMTc3LTMuMTU4LTExLjMxNC0wLjA0NmMtMC4wMTYsMC4wMTUtMC4wMzEsMC4wMzEtMC4wNDYsMC4wNDZsLTQ1LjYsNDUuNjhoLTUyLjcyYy00LjQxOCwwLTgsMy41ODItOCw4djEyOGMwLDQuNDE4LDMuNTgyLDgsOCw4aDIwOGM0LjQxOCwwLDgtMy41ODIsOC04di0xMjhDMjgwLjAzNCw1MS42MjgsMjc2LjQ1Miw0OC4wNDYsMjcyLjAzNCw0OC4wNDZ6IE0xNjguMDM0LDE5LjMyNmwyOC43MiwyOC43MmgtNTcuNDRMMTY4LjAzNCwxOS4zMjZ6IE0yNjQuMDM0LDE3Ni4wNDZoLTE5MnYtMTEyaDE5MlYxNzYuMDQ2eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggZD0iTTg4LjAzNCw4MC4wNDZ2ODBoMTYwdi04MEg4OC4wMzR6IE0yMzIuMDM0LDE0NC4wNDZoLTEyOHYtNDhoMTI4VjE0NC4wNDZ6Ii8+PC9nPjwvZz48L3N2Zz4=\",\n \"name\": {\n \"en\": \"Living room\",\n \"de\": \"Wohnzimmer\",\n \"ru\": \"Гостиная\",\n \"pt\": \"Sala de estar\",\n \"nl\": \"Woonkamer\",\n \"fr\": \"Salon\",\n \"it\": \"Soggiorno\",\n \"es\": \"Sala\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.sleeping_room\": {\n \"_id\": \"enum.rooms.sleeping_room\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ2NCwyNjRWODhIMTZ2MTc2SDB2ODBoNDh2NDhoNjR2LTQ4aDI1NnY0OGg2NHYtNDhoNDh2LTgwSDQ2NHogTTMyLDEwNGg0MTZ2MTYwaC0xNnYtMjRjMC0yMi4wOTEtMTcuOTA5LTQwLTQwLTQwDQoJCWgtMTIuNDhjMi45MDgtNC44MzIsNC40NTYtMTAuMzYsNC40OC0xNmMwLTE3LjY3My0xNC4zMjctMzItMzItMzJoLTY0Yy0xNy42NzMsMC0zMiwxNC4zMjctMzIsMzINCgkJYzAuMDI0LDUuNjQsMS41NzIsMTEuMTY4LDQuNDgsMTZoLTQwLjk2YzIuOTA4LTQuODMyLDQuNDU2LTEwLjM2LDQuNDgtMTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMyaC02NA0KCQljLTE3LjY3MywwLTMyLDE0LjMyNy0zMiwzMmMwLjAyNCw1LjY0LDEuNTcyLDExLjE2OCw0LjQ4LDE2SDg4Yy0yMi4wOTEsMC00MCwxNy45MDktNDAsNDB2MjRIMzJWMTA0eiBNMzkyLDIxNg0KCQljMTMuMjU1LDAsMjQsMTAuNzQ1LDI0LDI0djI0SDY0di0yNGMwLTEzLjI1NSwxMC43NDUtMjQsMjQtMjRIMzkyeiBNMTEyLDE4NGMwLTguODM3LDcuMTYzLTE2LDE2LTE2aDY0YzguODM3LDAsMTYsNy4xNjMsMTYsMTYNCgkJcy03LjE2MywxNi0xNiwxNmgtNjRDMTE5LjE2MywyMDAsMTEyLDE5Mi44MzcsMTEyLDE4NHogTTI3MiwxODRjMC04LjgzNyw3LjE2My0xNiwxNi0xNmg2NGM4LjgzNywwLDE2LDcuMTYzLDE2LDE2DQoJCXMtNy4xNjMsMTYtMTYsMTZoLTY0QzI3OS4xNjMsMjAwLDI3MiwxOTIuODM3LDI3MiwxODR6IE05NiwzNzZINjR2LTMyaDMyVjM3NnogTTQxNiwzNzZoLTMydi0zMmgzMlYzNzZ6IE00NjQsMzI4SDE2di00OGg0NDhWMzI4DQoJCXoiLz4NCjwvZz4NCjxnPg0KCTxyZWN0IHg9IjQ4IiB5PSIxMjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iNDE2IiB5PSIxMjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iODAiIHk9IjEyMCIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iNDgiIHk9IjE1MiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjQwIi8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSI0MTYiIHk9IjE1MiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjQwIi8+DQo8L2c+DQoNCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Sleeping room\",\n \"de\": \"Schlafzimmer\",\n \"ru\": \"Спальня\",\n \"pt\": \"Quarto de dormir\",\n \"nl\": \"Slaapkamer\",\n \"fr\": \"Chambre à coucher\",\n \"it\": \"Camera da letto\",\n \"es\": \"Dormitorio\",\n \"pl\": \"Sypialnia\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.kitchen\": {\n \"_id\": \"enum.rooms.kitchen\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTAsMjA4djQ4aDE2djIyNGg0NDhWMjU2aDE2di00OEgweiBNMjA4LDQ2NEgzMlYyNTZoMTc2VjQ2NHogTTI4OCw0NjRoLTY0VjMyMGg2NFY0NjR6IE0zNjgsNDY0aC02NFYzMjBoNjRWNDY0eg0KCQkgTTQ0OCw0NjRoLTY0VjMyMGg2NFY0NjR6IE00NDgsMzA0SDIyNHYtNDhoMjI0VjMwNHogTTQ2NCwyNDBIMTZ2LTE2aDQ0OFYyNDB6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNNDgsMzM2djExMmgxNDRWMzM2SDQ4eiBNMTc2LDQzMkg2NHYtODBoMTEyVjQzMnoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik03MiwyNzJjLTEzLjI1NSwwLTI0LDEwLjc0NS0yNCwyNHMxMC43NDUsMjQsMjQsMjRzMjQtMTAuNzQ1LDI0LTI0Uzg1LjI1NSwyNzIsNzIsMjcyeiBNNzIsMzA0Yy00LjQxOCwwLTgtMy41ODItOC04DQoJCQlzMy41ODItOCw4LThzOCwzLjU4Miw4LDhTNzYuNDE4LDMwNCw3MiwzMDR6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNMTY4LDI3MmMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTMTgxLjI1NSwyNzIsMTY4LDI3MnogTTE2OCwzMDRjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzE3Mi40MTgsMzA0LDE2OCwzMDR6Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIzMDQiIHk9IjI3MiIgd2lkdGg9IjY0IiBoZWlnaHQ9IjE2Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIyNTYiIHk9IjMzNiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIzMzYiIHk9IjM2OCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjMyIi8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSI0MDAiIHk9IjM2OCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjMyIi8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNMjA4LDB2ODYuMDhsLTI0LTQ4VjBINDB2MzguMDhMMC44OCwxMTYuNGMtMS45ODgsMy45NDYtMC40MDEsOC43NTYsMy41NDQsMTAuNzQ0QzUuNTM0LDEyNy43MDMsNi43NTgsMTI3Ljk5Niw4LDEyOGg0NzINCgkJVjBIMjA4eiBNNTYsMTZoMTEydjE2SDU2VjE2eiBNMjAuOTYsMTEybDMyLTY0aDExOC4wOGwzMiw2NEgyMC45NnogTTMzNiwxMTJIMjI0VjE2aDExMlYxMTJ6IE00NjQsMTEySDM1MlYxNmgxMTJWMTEyeiIvPg0KPC9nPg0KPGc+DQoJPHJlY3QgeD0iMzA0IiB5PSI4MCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQo8L2c+DQo8Zz4NCgk8cmVjdCB4PSIzNjgiIHk9IjgwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiLz4NCjwvZz4NCjxnPg0KCTxyZWN0IHg9Ijk2IiB5PSIzNjgiIHdpZHRoPSI0OCIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPC9zdmc+DQo=\",\n \"name\": {\n \"en\": \"Kitchen\",\n \"de\": \"Küche\",\n \"ru\": \"Кухня\",\n \"pt\": \"Cozinha\",\n \"nl\": \"Keuken\",\n \"fr\": \"Cuisine\",\n \"it\": \"Cucina\",\n \"es\": \"Cocina\",\n \"pl\": \"Kuchnia\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.office\": {\n \"_id\": \"enum.rooms.office\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJCTxwYXRoIGQ9Ik0yMjQsMTIwdjExMmgyMjRWMTIwSDIyNHogTTQzMiwyMTZIMjQwdi04MGgxOTJWMjE2eiIvPg0KPC9nPg0KPGc+DQoJCTxwYXRoIGQ9Ik0zMzYsMTUyYy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjRzMTAuNzQ1LDI0LDI0LDI0czI0LTEwLjc0NSwyNC0yNFMzNDkuMjU1LDE1MiwzMzYsMTUyeiBNMzM2LDE4NGMtNC40MTgsMC04LTMuNTgyLTgtOA0KCQkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzM0MC40MTgsMTg0LDMzNiwxODR6Ii8+DQo8L2c+DQo8Zz4NCgkJPHBhdGggZD0iTTE3Niw4OFY0OGMwLTQuNDE4LTMuNTgyLTgtOC04aC04VjE2YzAtNC40MTgtMy41ODItOC04LThINDBjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MjRoLThjLTQuNDE4LDAtOCwzLjU4Mi04LDh2NDBIMHYzODQNCgkJCWgyMDhWMjY0aDIwOHYyMDhoNjRWODhIMTc2eiBNNDgsMjRoOTZ2MTZINDhWMjR6IE0zMiw1NmgxMjh2MzJIMzJWNTZ6IE0xOTIsNDU2SDE2VjIwMGgxNzZWNDU2eiBNMTkyLDE4NEgxNnYtODBoMTc2VjE4NHoNCgkJCSBNNDY0LDQ1NmgtMzJWMjY0aDMyVjQ1NnogTTQ2NCwyNDhIMjA4VjEwNGgyNTZWMjQ4eiIvPg0KPC9nPg0KPGc+DQoJCTxyZWN0IHg9IjgwIiB5PSIxMzYiIHdpZHRoPSI0OCIgaGVpZ2h0PSIxNiIvPg0KPC9nPg0KPGc+DQoJCTxwYXRoIGQ9Ik0xNTIsMjE2Yy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjRzMTAuNzQ1LDI0LDI0LDI0czI0LTEwLjc0NSwyNC0yNFMxNjUuMjU1LDIxNiwxNTIsMjE2eiBNMTUyLDI0OGMtNC40MTgsMC04LTMuNTgyLTgtOA0KCQkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzE1Ni40MTgsMjQ4LDE1MiwyNDh6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==\",\n \"name\": {\n \"en\": \"Office\",\n \"de\": \"Büro\",\n \"ru\": \"офис\",\n \"pt\": \"Escritório\",\n \"nl\": \"Kantoor\",\n \"fr\": \"Bureau\",\n \"it\": \"Ufficio\",\n \"es\": \"Oficina\",\n \"pl\": \"Gabinet\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.nursery\": {\n \"_id\": \"enum.rooms.nursery\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQwLDQzMmMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTNTMuMjU1LDQzMiw0MCw0MzJ6IE00MCw0NjRjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJczMuNTgyLTgsOC04czgsMy41ODIsOCw4UzQ0LjQxOCw0NjQsNDAsNDY0eiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTQ0MCw0MzJjLTEzLjI1NSwwLTI0LDEwLjc0NS0yNCwyNHMxMC43NDUsMjQsMjQsMjRzMjQtMTAuNzQ1LDI0LTI0UzQ1My4yNTUsNDMyLDQ0MCw0MzJ6IE00NDAsNDY0Yy00LjQxOCwwLTgtMy41ODItOC04DQoJCXMzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOFM0NDQuNDE4LDQ2NCw0NDAsNDY0eiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTQxNiwxMTJ2NDhINjR2LTQ4SDE2djMyMGg0OHYtNDhoMzUydjQ4aDQ4VjExMkg0MTZ6IE00OCw0MTZIMzJWMTI4aDE2VjQxNnogTTY0LDIwOGgyNHY4MEg2NFYyMDh6IE02NCwzMDRoMjR2MzJINjRWMzA0DQoJCXogTTQxNiwzNjhINjR2LTE2aDM1MlYzNjh6IE0xMjAsMzA0djMyaC0xNnYtMzJIMTIweiBNMTA0LDI4OHYtODBoMTZ2ODBIMTA0eiBNMTUyLDMwNHYzMmgtMTZ2LTMySDE1MnogTTEzNiwyODh2LTgwaDE2djgwSDEzNnoNCgkJIE0xODQsMzA0djMyaC0xNnYtMzJIMTg0eiBNMTY4LDI4OHYtODBoMTZ2ODBIMTY4eiBNMjE2LDMwNHYzMmgtMTZ2LTMySDIxNnogTTIwMCwyODh2LTgwaDE2djgwSDIwMHogTTI0OCwzMDR2MzJoLTE2di0zMkgyNDh6DQoJCSBNMjMyLDI4OHYtODBoMTZ2ODBIMjMyeiBNMjgwLDMwNHYzMmgtMTZ2LTMySDI4MHogTTI2NCwyODh2LTgwaDE2djgwSDI2NHogTTMxMiwzMDR2MzJoLTE2di0zMkgzMTJ6IE0yOTYsMjg4di04MGgxNnY4MEgyOTZ6DQoJCSBNMzQ0LDMwNHYzMmgtMTZ2LTMySDM0NHogTTMyOCwyODh2LTgwaDE2djgwSDMyOHogTTM3NiwzMDR2MzJoLTE2di0zMkgzNzZ6IE0zNjAsMjg4di04MGgxNnY4MEgzNjB6IE00MTYsMzM2aC0yNHYtMzJoMjRWMzM2eg0KCQkgTTQxNiwyODhoLTI0di04MGgyNFYyODh6IE00MTYsMTkySDY0di0xNmgzNTJWMTkyeiBNNDQ4LDQxNmgtMTZWMTI4aDE2VjQxNnoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik0yOTYsNTAuNzJjLTQuNTA5LDAuMDM0LTguOTE3LDEuMzM3LTEyLjcyLDMuNzZjLTEwLjMxMy03LjY4MS0yMi40OTUtMTIuNDYtMzUuMjgtMTMuODRWMGgtMTZ2NDAuNjQNCgkJYy0xMi43ODUsMS4zOC0yNC45NjcsNi4xNTktMzUuMjgsMTMuODRjLTMuODAzLTIuNDIzLTguMjExLTMuNzI2LTEyLjcyLTMuNzZjLTEzLjI1NSwwLTI0LDEwLjc0NS0yNCwyNGMwLDEzLjI1NSwxMC43NDUsMjQsMjQsMjQNCgkJczI0LTEwLjc0NSwyNC0yNGMtMC4wMTUtMi43MjMtMC40NzUtNS40MjUtMS4zNi04YzE5Ljg1NS0xNC41NjUsNDYuODY1LTE0LjU2NSw2Ni43MiwwYy0wLjg4NSwyLjU3NS0xLjM0NSw1LjI3Ny0xLjM2LDgNCgkJYzAsMTMuMjU1LDEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRDMzIwLDYxLjQ2NSwzMDkuMjU1LDUwLjcyLDI5Niw1MC43MnogTTE4NCw4Mi43MmMtNC40MTgsMC04LTMuNTgyLTgtOA0KCQljMC00LjQxOCwzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOEMxOTIsNzkuMTM4LDE4OC40MTgsODIuNzIsMTg0LDgyLjcyeiBNMjk2LDgyLjcyYy00LjQxOCwwLTgtMy41ODItOC04YzAtNC40MTgsMy41ODItOCw4LTgNCgkJczgsMy41ODIsOCw4QzMwNCw3OS4xMzgsMzAwLjQxOCw4Mi43MiwyOTYsODIuNzJ6Ii8+DQo8L2c+DQoNCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Nursery\",\n \"de\": \"Kinderzimmer\",\n \"ru\": \"Детская\",\n \"pt\": \"Berçário\",\n \"nl\": \"Kwekerij\",\n \"fr\": \"Garderie\",\n \"it\": \"Asilo nido\",\n \"es\": \"Guardería\",\n \"pl\": \"Żłobek\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.wc\": {\n \"_id\": \"enum.rooms.wc\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik00NTEsMzE3di0zMGMwLTI0LjgxMy0yMC4xODctNDUtNDUtNDVIMjI2Yy01LjI1OSwwLTEwLjMwNSwwLjkxNS0xNSwyLjU4Vjg3LjQyYzE3LjQ1OS02LjE5MiwzMC0yMi44NjUsMzAtNDIuNDIgICAgYzAtMjQuODEzLTIwLjE4Ny00NS00NS00NUg3NmMtOC4yODQsMC0xNSw2LjcxNi0xNSwxNWMwLDI3LjcxLDAsMjQ2LjM4NSwwLDI3MmMwLDE5LjU1NSwxMi41NDEsMzYuMjI4LDMwLDQyLjQyVjM3NyAgICBjMCwyNy41MTksMTAuODU1LDUzLjkyNywzMCw3My40ODJWNDk3YzAsOC4yODQsNi43MTYsMTUsMTUsMTVjMTcuMzMsMCwyNTQuODQ2LDAsMjcwLDBjOC4yODQsMCwxNS02LjcxNiwxNS0xNXMtNi43MTYtMTUtMTUtMTUgICAgaC00NXYtMTcuOTkxQzQxNS45ODgsNDM1Ljk0Myw0NTEsMzc5LjI4Myw0NTEsMzE3eiBNMjI2LDI3MmgxODBjOC4yNzEsMCwxNSw2LjcyOSwxNSwxNXYxNUgyMTF2LTE1ICAgIEMyMTEsMjc4LjcyOSwyMTcuNzI5LDI3MiwyMjYsMjcyeiBNOTEsMzBoMTA1YzguMjcxLDAsMTUsNi43MjksMTUsMTVzLTYuNzI5LDE1LTE1LDE1SDkxVjMweiBNMTA2LDMwMmMtOC4yNzEsMC0xNS02LjcyOS0xNS0xNSAgICBWOTBoOTBjMCwxNy4zOSwwLDIwMC4yNzEsMCwyMTJIMTA2eiBNMzM5Ljk5NCw0NDAuNzczYy01LjQ2MywyLjM4Ny04Ljk5NCw3Ljc4My04Ljk5NCwxMy43NDVWNDgySDE1MXYtMzcuOTE3ICAgIGMwLTQuMjY3LTEuODE3LTguMzMyLTQuOTk2LTExLjE3N0MxMzAuMTEzLDQxOC42ODQsMTIxLDM5OC4zMDcsMTIxLDM3N3YtNDUuMWMzNC41MzUsMCwyOTYuNTQ1LDAsMjk5LjE2OCwwICAgIEM0MTQuODY0LDM3OS40OTMsMzg0LjU3NSw0MjEuMjk1LDMzOS45OTQsNDQwLjc3M3oiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K\",\n \"name\": {\n \"en\": \"WC\",\n \"de\": \"Toilette\",\n \"ru\": \"Туалет\",\n \"pt\": \"Banheiro\",\n \"nl\": \"WC\",\n \"fr\": \"Toilettes\",\n \"it\": \"Bagno\",\n \"es\": \"Baño\",\n \"pl\": \"Toaleta\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.rooms.garage\": {\n \"_id\": \"enum.rooms.kitchen\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4MC4wMTMgNDgwLjAxMyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwLjAxMyA0ODAuMDEzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjI1NnB4Ij4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNMzkwLjk5OSwzMTYuOTUybC0zMC4yOTYtMjQuMjMyYy0xLjExMy0wLjg4Ny0xLjk2OS0yLjA1NS0yLjQ4LTMuMzg0bC0xMS42OC01NC40ICAgIGMtMi40MzItMTEuMDItMTIuMTc5LTE4Ljg4My0yMy40NjQtMTguOTI4SDE1Ni44MDdjLTExLjI2OC0wLjA1Mi0yMS4wMzYsNy43ODgtMjMuNDI0LDE4LjhsLTEyLDUzLjk1MiAgICBjLTAuNDAzLDEuNzgzLTEuMzk5LDMuMzc2LTIuODI0LDQuNTJsLTI5LjYsMjMuNjhjLTUuNjg3LDQuNTUyLTguOTg0LDExLjQ1Mi04Ljk1MiwxOC43MzZ2ODAuMzEyICAgIGMwLjAyMSw2Ljc4OCwyLjkzLDEzLjI0Niw4LDE3Ljc2djMwLjI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMjRoMTc2djI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzIgICAgYzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTMwLjI0YzUuMDctNC41MTQsNy45NzktMTAuOTcyLDgtMTcuNzZ2LTgwLjMxMkM0MDAuMDI0LDMyOC40LDM5Ni43MDcsMzIxLjQ5NiwzOTAuOTk5LDMxNi45NTJ6ICAgICBNMjE4LjE0MywyMzguMzI4bDAtMC4wMDhsNC4yMDgtNi4zMmgxMDAuNzI4YzMuNzcyLTAuMDAxLDcuMDMyLDIuNjMyLDcuODI0LDYuMzJsMTAuNzA0LDQ5LjY4OEgyMjQuNzAzICAgIGM1Ljg4OC0xMS4wOTgsMy44NzEtMjQuNzM2LTQuOTc2LTMzLjY1NkMyMTUuNDYxLDI1MC4wNjQsMjE0Ljc5OSwyNDMuMzY4LDIxOC4xNDMsMjM4LjMyOHogTTE4NC4wNzksMjM4LjMyOHYtMC4wMDhsNC4yMDgtNi4zMiAgICBoMTUuMTQ0Yy01Ljg4LDExLjEwMS0zLjg2MSwyNC43MzYsNC45ODQsMzMuNjU2YzQuMjU4LDQuMjgsNC45MjYsMTAuOTYyLDEuNiwxNmwtNC4yMDgsNi4zMmgtMTUuMTYgICAgYzUuODgtMTEuMTAxLDMuODYxLTI0LjczNi00Ljk4NC0zMy42NTZDMTgxLjQxNCwyNTAuMDM3LDE4MC43NTMsMjQzLjM2MSwxODQuMDc5LDIzOC4zMjh6IE0xNDkuMDM5LDIzOC4yNjQgICAgYzAuNzkyLTMuNjU1LDQuMDI4LTYuMjYyLDcuNzY4LTYuMjU2aDEyLjU2Yy01Ljg4LDExLjEwMS0zLjg2MSwyNC43MzYsNC45ODQsMzMuNjU2YzQuMjU4LDQuMjgsNC45MjYsMTAuOTYyLDEuNiwxNmwtNC4yMDgsNi4zMiAgICBoLTMzLjc2TDE0OS4wMzksMjM4LjI2NHogTTEzNi4wMDcsNDY0LjAwOGgtMzJ2LTI0aDMyVjQ2NC4wMDh6IE0zNzYuMDA3LDQ2NC4wMDhoLTMydi0yNGgzMlY0NjQuMDA4eiBNMzg0LjAwNyw0MTYuMDA4ICAgIGMwLDQuNDE4LTMuNTgyLDgtOCw4aC0yNzJjLTQuNDE4LDAtOC0zLjU4Mi04LTh2LThoMjg4VjQxNi4wMDh6IE0zODQuMDA3LDM5Mi4wMDhoLTI4OHYtNTYuMzEyICAgIGMtMC4wMDYtMi40MzEsMS4xMDMtNC43MywzLjAwOC02LjI0bDI5LjYtMjMuNjhjMC42NDktMC41NTYsMS4yNjktMS4xNDYsMS44NTYtMS43NjhoMjE4LjkyOGMwLjQzMiwwLjQsMC44LDAuOCwxLjI5NiwxLjIgICAgbDMwLjMwNCwyNC4yNGMxLjksMS41MTcsMy4wMDcsMy44MTYsMy4wMDgsNi4yNDhWMzkyLjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik0xMzIuMDA3LDMyOC4wMDhjLTE1LjQ2NCwwLTI4LDEyLjUzNi0yOCwyOGMwLDE1LjQ2NCwxMi41MzYsMjgsMjgsMjhzMjgtMTIuNTM2LDI4LTI4ICAgIEMxNjAuMDA3LDM0MC41NDQsMTQ3LjQ3MSwzMjguMDA4LDEzMi4wMDcsMzI4LjAwOHogTTEzMi4wMDcsMzY4LjAwOGMtNi42MjcsMC0xMi01LjM3My0xMi0xMmMwLTYuNjI3LDUuMzczLTEyLDEyLTEyICAgIGM2LjYyNywwLDEyLDUuMzczLDEyLDEyQzE0NC4wMDcsMzYyLjYzNSwxMzguNjM0LDM2OC4wMDgsMTMyLjAwNywzNjguMDA4eiIgZmlsbD0iIzAwMDAwMCIvPgoJPC9nPgo8L2c+CjxnPgoJPGc+CgkJPHBhdGggZD0iTTM0OC4wMDcsMzI4LjAwOGMtMTUuNDY0LDAtMjgsMTIuNTM2LTI4LDI4YzAsMTUuNDY0LDEyLjUzNiwyOCwyOCwyOGMxNS40NjQsMCwyOC0xMi41MzYsMjgtMjggICAgQzM3Ni4wMDcsMzQwLjU0NCwzNjMuNDcxLDMyOC4wMDgsMzQ4LjAwNywzMjguMDA4eiBNMzQ4LjAwNywzNjguMDA4Yy02LjYyNywwLTEyLTUuMzczLTEyLTEyYzAtNi42MjcsNS4zNzMtMTIsMTItMTIgICAgYzYuNjI3LDAsMTIsNS4zNzMsMTIsMTJDMzYwLjAwNywzNjIuNjM1LDM1NC42MzQsMzY4LjAwOCwzNDguMDA3LDM2OC4wMDh6IiBmaWxsPSIjMDAwMDAwIi8+Cgk8L2c+CjwvZz4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNMjg4LjAwNywzMjguMDA4aC05NmMtOC44MzcsMC0xNiw3LjE2My0xNiwxNnYyNGMwLDguODM3LDcuMTYzLDE2LDE2LDE2aDk2YzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTI0ICAgIEMzMDQuMDA3LDMzNS4xNzEsMjk2Ljg0NCwzMjguMDA4LDI4OC4wMDcsMzI4LjAwOHogTTI4OC4wMDcsMzY4LjAwOGgtOTZ2LTI0aDk2VjM2OC4wMDh6IiBmaWxsPSIjMDAwMDAwIi8+Cgk8L2c+CjwvZz4KPGc+Cgk8Zz4KCQk8cGF0aCBkPSJNNDc1Ljg3MSwxMjlsLTIzMi0xMjhjLTIuNDA1LTEuMzI3LTUuMzIzLTEuMzI3LTcuNzI4LDBsLTIzMiwxMjhjLTMuODcsMi4xMzEtNS4yODEsNi45OTYtMy4xNSwxMC44NjYgICAgYzEuNDA3LDIuNTU2LDQuMDk1LDQuMTQ0LDcuMDEzLDQuMTQyaDh2MzM2aDQ4di0yOTZoMzUydjI5Nmg0OHYtMzM2aDhjNC40MTgsMC4wMDMsOC4wMDMtMy41NzYsOC4wMDYtNy45OTUgICAgQzQ4MC4wMTUsMTMzLjA5NSw0NzguNDI3LDEzMC40MDcsNDc1Ljg3MSwxMjl6IE0yNDAuMDA3LDE3LjE1MmwyMDAuOTM2LDExMC44NTZIMzkuMDcxTDI0MC4wMDcsMTcuMTUyeiBNNDQ4LjAwNyw0NjQuMDA4aC0xNiAgICB2LTI5NmgtMzg0djI5NmgtMTZ2LTMyMGg0MTZWNDY0LjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik0xNjguMDA3LDc1LjA2NHY0NC45NDRoNjRWNDMuMDY0TDE2OC4wMDcsNzUuMDY0eiBNMjE2LjAwNywxMDQuMDA4aC0zMlY4NC45NTJsMzItMTZWMTA0LjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik0yNDguMDA3LDQzLjA2NHY3Ni45NDRoNjRWNzUuMDY0TDI0OC4wMDcsNDMuMDY0eiBNMjk2LjAwNywxMDQuMDA4aC0zMlY2OC45NTJsMzIsMTZWMTA0LjAwOHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K\",\n \"name\": {\n \"en\": \"Garage\",\n \"de\": \"Garage\",\n \"ru\": \"Гараж\",\n \"pt\": \"Garagem\",\n \"nl\": \"Garage\",\n \"fr\": \"Garage\",\n \"it\": \"Box auto\",\n \"es\": \"Garaje\",\n \"pl\": \"Garaż\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n }\n\n\n // todo\n //\n },\n 'enum.functions': {\n \"enum.functions.light\": {\n \"_id\": \"enum.functions.light\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIj4KICA8Zz4KICAgIDxnPgogICAgICA8cGF0aCBkPSJtMjU2LDkyLjNjLTc0LjIsMC0xMjcuOCw1NS4zLTEzNi4zLDExNC43LTUuMywzOS42IDcuNSw3OC4yIDM0LjEsMTA3LjQgMjMuNCwyNSAzNi4yLDU4LjQgMzYuMiw5Mi44bC0uMSw1NC4yYzAsMjEuOSAxOC4xLDM5LjYgNDAuNSwzOS42aDUyLjJjMjIuNCwwIDQwLjUtMTcuNyA0MC41LTM5LjZsLjEtNTQuMmMwLTM1LjQgMTEuNy02Ny44IDM0LjEtOTAuNyAyNC41LTI1IDM3LjMtNTcuMyAzNy4zLTkwLjctMC4xLTc0LjEtNjMtMTMzLjUtMTM4LjYtMTMzLjV6bTQ2LjgsMzY5LjFjMCwxMC40LTguNSwxOC44LTE5LjIsMTguOGgtNTIuMmMtMTAuNywwLTE5LjItOC4zLTE5LjItMTguOHYtMjRoOTAuNXYyNHptMzkuNi0xNTkuNWMtMjYuNiwyNy4xLTQwLjUsNjQuNi00MC41LDEwNS4zdjkuNGgtOTAuNXYtOS40YzAtMzguNi0xNi03Ny4xLTQyLjYtMTA2LjMtMjMuNC0yNS0zMy01Ny4zLTI4LjgtOTAuNyA3LjUtNTAgNTQtOTcgMTE2LjEtOTcgNjUsMCAxMTcuMiw1MS4xIDExNy4yLDExMi42IDAsMjguMS0xMC43LDU1LjItMzAuOSw3Ni4xeiIvPgogICAgICA8cmVjdCB3aWR0aD0iMjEuMyIgeD0iMjQ1LjMiIHk9IjExIiBoZWlnaHQ9IjUwIi8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzg1LjEsMTA3LjQgNDAwLDEyMi4zIDQzNi41LDg3LjIgNDIxLjUsNzIuMyAgICIvPgogICAgICA8cmVjdCB3aWR0aD0iNTIuMiIgeD0iNDQ4LjgiIHk9IjIzNi4yIiBoZWlnaHQ9IjIwLjkiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjUyLjIiIHg9IjExIiB5PSIyMzYuMiIgaGVpZ2h0PSIyMC45Ii8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iOTAuMSw3Mi4yIDc1LjEsODcuMSAxMTEuNiwxMjIuMiAxMjYuNSwxMDcuMyAgICIvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==\",\n \"name\": {\n \"en\": \"Light\",\n \"de\": \"Licht\",\n \"ru\": \"Свет\",\n \"pt\": \"Luz\",\n \"nl\": \"Licht\",\n \"fr\": \"Lumière\",\n \"it\": \"Soggiorno\",\n \"es\": \"Luz\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.blinds\": {\n \"_id\": \"enum.functions.blinds\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJCTxwYXRoIGQ9Ik0wLDB2NTEyaDUxMlYwSDB6IE00ODIsNDgySDMwVjMwaDQ1MlY0ODJ6Ii8+DQo8L2c+DQo8Zz4NCgkJPHBhdGggZD0iTTYwLDYwdjM5MmgzOTJWNjBINjB6IE0yNDEsNDIySDkwVjI3MWgxNTFWNDIyeiBNMjQxLDI0MUg5MFY5MGgxNTFWMjQxeiBNNDIyLDQyMkgyNzFWMjcxaDE1MVY0MjJ6IE00MjIsMjQxSDI3MVY5MGgxNTENCgkJCVYyNDF6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==\",\n \"name\": {\n \"en\": \"Blinds\",\n \"de\": \"Rollladen\",\n \"ru\": \"Жалюзи\",\n \"pt\": \"Cortinas\",\n \"nl\": \"blinds\",\n \"fr\": \"Stores\",\n \"it\": \"blinds\",\n \"es\": \"Persianas\",\n \"pl\": \"Żaluzje\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.weather\": {\n \"_id\": \"enum.functions.weather\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNjAgNjAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYwIDYwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8cGF0aCBkPSJNNTQuOTQ5LDI4LjI1MWMwLjAxOC0wLjA2OSwwLjAzOS0wLjEzNSwwLjA0Mi0wLjIwN0M1NC45OTIsMjguMDI5LDU1LDI4LjAxNiw1NSwyOEM1NSwxNC41NSw0NC4zMjMsMy41NTMsMzEsMy4wMjVWMQ0KCWMwLTAuNTUzLTAuNDQ4LTEtMS0xcy0xLDAuNDQ3LTEsMXYyLjAyNUMxNS42NzcsMy41NTMsNSwxNC41NSw1LDI4YzAsMC4wMTYsMC4wMDgsMC4wMjksMC4wMDksMC4wNDUNCgljMC4wMDMsMC4wNzEsMC4wMjMsMC4xMzcsMC4wNDIsMC4yMDdjMC4wMTYsMC4wNTksMC4wMjUsMC4xMTgsMC4wNSwwLjE3MmMwLjAyNSwwLjA1MywwLjA2NCwwLjA5NywwLjA5OCwwLjE0NQ0KCWMwLjA0MiwwLjA1OSwwLjA4MSwwLjExOCwwLjEzNSwwLjE2N2MwLjAxMSwwLjAxLDAuMDE2LDAuMDI1LDAuMDI4LDAuMDM1YzAuMDM2LDAuMDMsMC4wOCwwLjA0LDAuMTE4LDAuMDY0DQoJYzAuMDU5LDAuMDM3LDAuMTE1LDAuMDc0LDAuMTgyLDAuMDk4YzAuMDcsMC4wMjYsMC4xNDEsMC4wMzQsMC4yMTMsMC4wNDNDNS45MTgsMjguOTgsNS45NTYsMjksNiwyOQ0KCWMwLjAxNSwwLDAuMDI3LTAuMDA4LDAuMDQyLTAuMDA4YzAuMDc2LTAuMDAzLDAuMTQ3LTAuMDI0LDAuMjItMC4wNDRjMC4wNTQtMC4wMTUsMC4xMDktMC4wMjMsMC4xNTgtMC4wNDcNCgljMC4wNTctMC4wMjYsMC4xMDQtMC4wNjgsMC4xNTYtMC4xMDVjMC4wNTUtMC4wNCwwLjExMS0wLjA3NywwLjE1Ny0wLjEyN2MwLjAxMS0wLjAxMiwwLjAyNi0wLjAxNywwLjAzNy0wLjAzDQoJQzguMTgsMjYuOTM3LDEwLjAzOCwyNiwxMiwyNnMzLjgyLDAuOTM3LDUuMjMsMi42MzljMC4wMTksMC4wMjMsMC4wNDgsMC4wMzIsMC4wNjksMC4wNTNjMC4wMjQsMC4wMjQsMC4wMzYsMC4wNTYsMC4wNjMsMC4wNzgNCgljMC4wNCwwLjAzMywwLjA4OCwwLjA0NSwwLjEzLDAuMDcxYzAuMDUxLDAuMDMxLDAuMDk4LDAuMDYyLDAuMTUyLDAuMDgyYzAuMDgyLDAuMDMyLDAuMTY0LDAuMDQ1LDAuMjQ5LDAuMDU0DQoJQzE3LjkzLDI4Ljk4MSwxNy45NjQsMjksMTgsMjljMC4wMTYsMCwwLjAzMS0wLjAwNywwLjA0Ni0wLjAwOGMwLjA1MS0wLjAwMiwwLjA5OC0wLjAxNSwwLjE0OC0wLjAyNQ0KCWMwLjA2OS0wLjAxNCwwLjEzNS0wLjAzLDAuMi0wLjA1OWMwLjA1LTAuMDIyLDAuMDk1LTAuMDUsMC4xNDEtMC4wODFjMC4wMzMtMC4wMjEsMC4wNy0wLjAzMiwwLjEwMS0wLjA1OA0KCWMwLjAyNC0wLjAyLDAuMDM1LTAuMDQ4LDAuMDU3LTAuMDdjMC4wMjMtMC4wMjMsMC4wNTQtMC4wMzUsMC4wNzUtMC4wNjFDMjAuMTgsMjYuOTM3LDIyLjAzOCwyNiwyNCwyNmMxLjg2LDAsMy42MiwwLjg1LDUsMi4zODZWNTUNCgljMCwxLjY1NC0xLjM0NiwzLTMsM3MtMy0xLjM0Ni0zLTNjMC0wLjU1My0wLjQ0OC0xLTEtMXMtMSwwLjQ0Ny0xLDFjMCwyLjc1NywyLjI0Myw1LDUsNXM1LTIuMjQzLDUtNVYyOC4zODYNCglDMzIuMzgsMjYuODUsMzQuMTQsMjYsMzYsMjZjMS45NjIsMCwzLjgyLDAuOTM3LDUuMjMsMi42MzljMC4wMTksMC4wMjMsMC4wNDgsMC4wMzIsMC4wNjksMC4wNTMNCgljMC4wMjQsMC4wMjQsMC4wMzYsMC4wNTYsMC4wNjMsMC4wNzhjMC4wNCwwLjAzMywwLjA4OCwwLjA0NCwwLjEzLDAuMDdjMC4wNTEsMC4wMzEsMC4wOTgsMC4wNjIsMC4xNTMsMC4wODMNCgljMC4wODEsMC4wMzEsMC4xNjMsMC4wNDUsMC4yNDksMC4wNTRDNDEuOTMsMjguOTgxLDQxLjk2NCwyOSw0MiwyOWMwLjAxNiwwLDAuMDMxLTAuMDA3LDAuMDQ2LTAuMDA4DQoJYzAuMDUxLTAuMDAyLDAuMDk5LTAuMDE1LDAuMTQ5LTAuMDI2YzAuMDY4LTAuMDE0LDAuMTM0LTAuMDMsMC4xOTktMC4wNThjMC4wNTEtMC4wMjIsMC4wOTYtMC4wNTEsMC4xNDItMC4wODENCgljMC4wMzMtMC4wMjEsMC4wNy0wLjAzMiwwLjEwMS0wLjA1N2MwLjAyNC0wLjAyLDAuMDM1LTAuMDQ4LDAuMDU2LTAuMDdjMC4wMjMtMC4wMjMsMC4wNTQtMC4wMzUsMC4wNzYtMC4wNjENCglDNDQuMTgsMjYuOTM3LDQ2LjAzOCwyNiw0OCwyNnMzLjgyLDAuOTM3LDUuMjMsMi42MzljMC4wMSwwLjAxMiwwLjAyNCwwLjAxNSwwLjAzNSwwLjAyN2MwLjA3LDAuMDc3LDAuMTU0LDAuMTM1LDAuMjQ1LDAuMTg4DQoJYzAuMDMxLDAuMDE4LDAuMDU1LDAuMDQ1LDAuMDg4LDAuMDU5QzUzLjcyMSwyOC45NjcsNTMuODU2LDI5LDU0LDI5aDBoMGMwLjEyMywwLDAuMjQ1LTAuMDI3LDAuMzYxLTAuMDczDQoJYzAuMDQ1LTAuMDE4LDAuMDgyLTAuMDQ3LDAuMTI0LTAuMDcxYzAuMDUxLTAuMDI5LDAuMTA2LTAuMDQ4LDAuMTUyLTAuMDg3YzAuMDEyLTAuMDEsMC4wMTctMC4wMjQsMC4wMjgtMC4wMzUNCgljMC4wNTQtMC4wNDksMC4wOTItMC4xMDcsMC4xMzUtMC4xNjdjMC4wMzQtMC4wNDgsMC4wNzMtMC4wOTMsMC4wOTgtMC4xNDVDNTQuOTI0LDI4LjM2OSw1NC45MzQsMjguMzEsNTQuOTQ5LDI4LjI1MXogTTQ4LDI0DQoJYy0yLjIxOCwwLTQuMzEyLDAuODk1LTYsMi41MzRDNDAuMzEyLDI0Ljg5NSwzOC4yMTgsMjQsMzYsMjRzLTQuMzEyLDAuODk1LTYsMi41MzRDMjguMzEyLDI0Ljg5NSwyNi4yMTgsMjQsMjQsMjQNCglzLTQuMzEyLDAuODk1LTYsMi41MzRDMTYuMzEyLDI0Ljg5NSwxNC4yMTgsMjQsMTIsMjRjLTEuNzUsMC0zLjQxOCwwLjU2Ni00Ljg3NSwxLjYwNUM4LjMyNywxNC4wNDQsMTguMTI3LDUsMzAsNQ0KCXMyMS42NzMsOS4wNDQsMjIuODc1LDIwLjYwNUM1MS40MTgsMjQuNTY2LDQ5Ljc1LDI0LDQ4LDI0eiIvPg0KPC9zdmc+DQo=\",\n \"name\": {\n \"en\": \"Weather\",\n \"de\": \"Wetter\",\n \"ru\": \"Погода\",\n \"pt\": \"Clima\",\n \"nl\": \"Weer\",\n \"fr\": \"Météo\",\n \"it\": \"Tempo metereologico\",\n \"es\": \"Clima\",\n \"pl\": \"Pogoda\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.heating\": {\n \"_id\": \"enum.functions.heating\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0MC4zNzEsMTU5LjI5MWM4LjA1MSwwLDE1LjQwMy0zLjAzNSwyMC45ODMtOC4wMTZINTA0LjVjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNWMwLTQuMTQyLTMuMzU4LTcuNS03LjUtNy41aC0zMy43NjMNCgkJYzAuNzY0LTIuNzE2LDEuMTgyLTUuNTc2LDEuMTgyLTguNTMzYzAtMi45NTctMC40MTgtNS44MTYtMS4xODItOC41MzJINTA0LjVjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNQ0KCQljMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNWgtNDMuMTQ2Yy01LjU4LTQuOTgxLTEyLjkzMi04LjAxNi0yMC45ODMtOC4wMTZjLTYuMTMzLDAtMTEuODU5LDEuNzY1LTE2LjcwNyw0LjgwNQ0KCQljLTEuMzQyLTExLjcxMS0xMS4zMDktMjAuODM3LTIzLjM3My0yMC44MzdoLTI0LjA0OWMtMTAuMzU0LDAtMTkuMTYsNi43MjQtMjIuMywxNi4wMzJoLTE5LjUzDQoJCWMtMy4xMzktOS4zMDgtMTEuOTQ2LTE2LjAzMi0yMi4zLTE2LjAzMmgtMjQuMDQ4Yy0xMC4zNTQsMC0xOS4xNiw2LjcyNC0yMi4zLDE2LjAzMmgtMTkuNTMNCgkJYy0zLjEzOS05LjMwOC0xMS45NDYtMTYuMDMyLTIyLjMtMTYuMDMyaC0yNC4wNDhjLTEwLjM1NCwwLTE5LjE2LDYuNzI0LTIyLjMsMTYuMDMyaC0xOS41Mw0KCQljLTMuMTM5LTkuMzA4LTExLjk0Ni0xNi4wMzItMjIuMy0xNi4wMzJoLTI0LjA0OWMtMTAuMzU0LDAtMTkuMTYsNi43MjQtMjIuMywxNi4wMzJINjkuODgNCgkJYy0zLjEzOS05LjMwOC0xMS45NDYtMTYuMDMyLTIyLjMtMTYuMDMySDIzLjUzMkMxMC41NTcsODAuMTYxLDAsOTAuNzE4LDAsMTAzLjY5M3YzMDQuNjEzYzAsMTIuOTc2LDEwLjU1NywyMy41MzIsMjMuNTMyLDIzLjUzMg0KCQlINDcuNThjMTAuMzU0LDAsMTkuMTYtNi43MjQsMjIuMy0xNi4wMzJoMTkuNTNjMy4xMzksOS4zMDgsMTEuOTQ2LDE2LjAzMiwyMi4zLDE2LjAzMmgyNC4wNDljMTAuMzU0LDAsMTkuMTYtNi43MjQsMjIuMy0xNi4wMzINCgkJaDE5LjUzYzMuMTM5LDkuMzA4LDExLjk0NiwxNi4wMzIsMjIuMywxNi4wMzJoMjQuMDQ4YzEwLjM1NCwwLDE5LjE2LTYuNzI0LDIyLjMtMTYuMDMyaDE5LjUzDQoJCWMzLjEzOSw5LjMwOCwxMS45NDYsMTYuMDMyLDIyLjMsMTYuMDMyaDI0LjA0OGMxMC4zNTQsMCwxOS4xNi02LjcyNCwyMi4zLTE2LjAzMmgxOS41M2MzLjEzOSw5LjMwOCwxMS45NDYsMTYuMDMyLDIyLjMsMTYuMDMyDQoJCWgyNC4wNDljMTIuOTc2LDAsMjMuNTMyLTEwLjU1NywyMy41MzItMjMuNTMydi0wLjUxNkg1MDQuNWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTgwLjY3N3YtMTcuMDY1DQoJCUg1MDQuNWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTgwLjY3N1YxNTQuNTg3QzQyOC42MzcsMTU3LjU2Niw0MzQuMzA2LDE1OS4yOTEsNDQwLjM3MSwxNTkuMjkxeg0KCQkgTTQ0MC4zNzEsMTExLjE5M2M5LjEyNSwwLDE2LjU0OCw3LjQyMywxNi41NDgsMTYuNTQ4cy03LjQyMywxNi41NDktMTYuNTQ4LDE2LjU0OXMtMTYuNTQ4LTcuNDI0LTE2LjU0OC0xNi41NDkNCgkJUzQzMS4yNDYsMTExLjE5Myw0NDAuMzcxLDExMS4xOTN6IE02My42MTMsMzM2LjY3NmMtNC4xNDIsMC03LjUsMy4zNTgtNy41LDcuNXY2NC4xM2MwLDQuNzA1LTMuODI4LDguNTMzLTguNTMyLDguNTMzSDIzLjUzMg0KCQljLTQuNzA1LDAtOC41MzItMy44MjgtOC41MzItOC41MzJWMTAzLjY5M2MwLTQuNzA1LDMuODI4LTguNTMyLDguNTMyLTguNTMySDQ3LjU4YzQuNzA1LDAsOC41MzIsMy44MjgsOC41MzIsOC41MzJWMzEyLjExDQoJCWMwLDQuMTQyLDMuMzU4LDcuNSw3LjUsNy41YzQuMTQyLDAsNy41LTMuMzU4LDcuNS03LjVWMTU5LjI5aDE3LjA2NHYxOTMuNDE5SDcxLjExM3YtOC41MzMNCgkJQzcxLjExMywzNDAuMDM0LDY3Ljc1NSwzMzYuNjc2LDYzLjYxMywzMzYuNjc2eiBNODguMTc3LDQwMC44MDZINzEuMTEzdi0zMy4wOTdoMTcuMDY0VjQwMC44MDZ6IE04OC4xNzcsMTQ0LjI5SDcxLjExM3YtMzMuMDk3DQoJCWgxNy4wNjRWMTQ0LjI5eiBNMTQ0LjI5LDQwOC4zMDZjMC4wMDEsNC43MDUtMy44MjcsOC41MzMtOC41MzIsOC41MzNoLTI0LjA0OWMtNC43MDUsMC04LjUzMi0zLjgyOC04LjUzMi04LjUzMlYxMDMuNjkzDQoJCWMwLTQuNzA1LDMuODI4LTguNTMyLDguNTMyLTguNTMyaDI0LjA0OWM0LjcwNSwwLDguNTMyLDMuODI4LDguNTMyLDguNTMyVjQwOC4zMDZ6IE0xNzYuMzU1LDQwMC44MDZoLTE3LjA2NHYtMzMuMDk3aDE3LjA2NA0KCQlWNDAwLjgwNnogTTE3Ni4zNTUsMzUyLjcxaC0xNy4wNjRWMTU5LjI5MWgxNy4wNjRWMzUyLjcxeiBNMTc2LjM1NSwxNDQuMjkxaC0xNy4wNjR2LTMzLjA5N2gxNy4wNjRWMTQ0LjI5MXogTTIzMi40NjgsNDA4LjMwNg0KCQljMCw0LjcwNS0zLjgyOCw4LjUzMy04LjUzMiw4LjUzM2gtMjQuMDQ4Yy00LjcwNSwwLTguNTMyLTMuODI4LTguNTMyLTguNTMyVjEwMy42OTNjMC00LjcwNSwzLjgyOC04LjUzMiw4LjUzMi04LjUzMmgyNC4wNDgNCgkJYzQuNzA1LDAsOC41MzIsMy44MjgsOC41MzIsOC41MzJWNDA4LjMwNnogTTI2NC41MzIsNDAwLjgwNmgtMTcuMDY0di0zMy4wOTdoMTcuMDY0VjQwMC44MDZ6IE0yNjQuNTMyLDM1Mi43MWgtMTcuMDY0VjE1OS4yOTENCgkJaDE3LjA2NFYzNTIuNzF6IE0yNjQuNTMyLDE0NC4yOTFoLTE3LjA2NHYtMzMuMDk3aDE3LjA2NFYxNDQuMjkxeiBNMzIwLjY0NSw0MDguMzA2YzAsNC43MDUtMy44MjgsOC41MzMtOC41MzIsOC41MzNoLTI0LjA0OA0KCQljLTQuNzA1LDAtOC41MzItMy44MjgtOC41MzItOC41MzJWMTAzLjY5M2MwLTQuNzA1LDMuODI4LTguNTMyLDguNTMyLTguNTMyaDI0LjA0OGM0LjcwNSwwLDguNTMyLDMuODI4LDguNTMyLDguNTMyVjQwOC4zMDZ6DQoJCSBNMzM1LjY0NSwxMTEuMTkzaDE3LjA2NHYzMy4wOTdoLTE3LjA2NFYxMTEuMTkzeiBNMzUyLjcwOSw0MDAuODA3aC0xNy4wNjRWMzY3LjcxaDE3LjA2NFY0MDAuODA3eiBNNDA4LjgyMyw0MDguMzA3DQoJCWMwLDQuNzA1LTMuODI4LDguNTMyLTguNTMyLDguNTMyaC0yNC4wNDljLTQuNzA1LDAtOC41MzItMy44MjgtOC41MzItOC41MzJWMTk5Ljg5YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjUNCgkJYy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41djE1Mi44MmgtMTcuMDY0VjE1OS4yOTFoMTcuMDY0djguNTMzYzAsNC4xNDIsMy4zNTgsNy41LDcuNSw3LjVjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNXYtNjQuMTMNCgkJYzAtNC43MDUsMy44MjgtOC41MzIsOC41MzItOC41MzJoMjQuMDQ5YzQuNzA1LDAsOC41MzIsMy44MjgsOC41MzIsOC41MzJWNDA4LjMwN3oiLz4NCjwvZz4NCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Heating\",\n \"de\": \"Heizung\",\n \"ru\": \"Отопление\",\n \"pt\": \"Aquecimento\",\n \"nl\": \"Verwarming\",\n \"fr\": \"Chauffage\",\n \"it\": \"Riscaldamento\",\n \"es\": \"Calefacción\",\n \"pl\": \"Ogrzewanie\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.backlight\": {\n \"_id\": \"enum.functions.backlight\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTExLjk5MSA1MTEuOTkxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTEuOTkxIDUxMS45OTE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik05MS40OSwzMzYuNTcybC0yMS4zMzMsNDIuNjY3Yy0yLjYyNCw1LjI2OS0wLjQ5MSwxMS42NjksNC43NzksMTQuMzE1YzEuNTM2LDAuNzQ3LDMuMTU3LDEuMTA5LDQuNzU3LDEuMTA5DQoJCWMzLjkwNCwwLDcuNjU5LTIuMTc2LDkuNTM2LTUuODg4bDIxLjMzMy00Mi42NjdjMi42NDUtNS4yNjksMC41MTItMTEuNjY5LTQuNzU3LTE0LjMxNQ0KCQlDMTAwLjU1NywzMjkuMTY5LDk0LjE1NywzMzEuMzI0LDkxLjQ5LDMzNi41NzJ6Ii8+DQoJPHBhdGggZD0iTTUwNy41NTQsMTgzLjM1NmMtMi43NzMtMi4wMjctNi4zMzYtMi41MzktOS42LTEuNDkzbC00OS40MDgsMTYuNDY5Yy0xMy4wOTksNC4zNzMtMjEuODg4LDE2LjU3Ni0yMS44ODgsMzAuMzc5djM2Ljg4NQ0KCQljLTI0LjMyLTQuOTQ5LTQyLjY2Ny0yNi40OTYtNDIuNjY3LTUyLjI0NXYtODUuMzMzYzAtMzEuMjMyLTEyLjEzOS02MC43MTUtMzQuMzA0LTgzLjExNQ0KCQljLTIyLjMxNS0yMi4xMDEtNTEuNzk3LTM0LjI0LTgzLjAyOS0zNC4yNGMtNjQuNjgzLDAtMTE3LjMzMyw1Mi42NTEtMTE3LjMzMywxMTcuMzMzdjUzLjMzM2gtMzJjLTE3LjY0MywwLTMyLDE0LjM1Ny0zMiwzMg0KCQl2NDAuMTQ5TDEuMTIyLDQyMS45MDVjLTEuNjQzLDMuMzA3LTEuNDcyLDcuMjMyLDAuNDQ4LDEwLjM2OGMxLjk2MywzLjEzNiw1LjM5Nyw1LjA1Niw5LjA4OCw1LjA1Nmg3NS43NTUNCgkJYzUuMjI3LDM2LjA5NiwzNi4wNzUsNjQsNzMuNTc5LDY0czY4LjM1Mi0yNy45MDQsNzMuNTc5LTY0aDc1Ljc1NWMwLjE0OSwwLDAuMzIsMC4wMjEsMC40MjcsMA0KCQljNS44ODgsMCwxMC42NjctNC43NzksMTAuNjY3LTEwLjY2N2MwLTIuNzUyLTEuMDI0LTUuMjQ4LTIuNzMxLTcuMTI1bC04My4wMjktMTY2LjA1OXYtNDAuMTQ5YzAtMTcuNjQzLTE0LjM1Ny0zMi0zMi0zMmgtMzINCgkJdi01My4zMzNjMC01Mi45MjgsNDMuMDcyLTk2LDk2LTk2YzI1LjU1NywwLDQ5LjcyOCw5Ljk2Myw2Ny45NDcsMjcuOTg5YzE4LjA5MSwxOC4yODMsMjguMDUzLDQyLjQ1MywyOC4wNTMsNjguMDExdjg1LjMzMw0KCQljMCwzNy41MDQsMjcuOTA0LDY4LjM1Miw2NCw3My41Nzl2MzkuMDRjMCwxMy43ODEsOC43ODksMjYuMDA1LDIxLjg2NywzMC4zNTdsNDkuNDA4LDE2LjQ2OQ0KCQljMS4xMzEsMC4zNjMsMi4yNjEsMC41NTUsMy4zOTIsMC41NTVjMi4yMTksMCw0LjM5NS0wLjY4Myw2LjIyOS0yLjAyN2MyLjc5NS0xLjk4NCw0LjQzNy01LjIwNSw0LjQzNy04LjY0VjE5MS45OTYNCgkJQzUxMS45OTEsMTg4LjU2MSw1MTAuMzQ5LDE4NS4zNCw1MDcuNTU0LDE4My4zNTZ6IE0xNTkuOTkxLDQ3OS45OTZjLTI1Ljc0OSwwLTQ3LjMxNy0xOC4zNDctNTIuMjY3LTQyLjY2N2gxMDQuNTMzDQoJCUMyMDcuMzA5LDQ2MS42NDksMTg1Ljc0MSw0NzkuOTk2LDE1OS45OTEsNDc5Ljk5NnogTTI5Mi4wODcsNDE1Ljk5NmgtNjguMDk2aC0xMjhIMjcuOTE3bDc0LjY2Ny0xNDkuMzMzaDExNC44MzcNCgkJTDI5Mi4wODcsNDE1Ljk5NnogTTIwMi42NTgsMjAyLjY2MmM1Ljg2NywwLDEwLjY2Nyw0LjgsMTAuNjY3LDEwLjY2N3YzMkgxMDYuNjU4di0zMmMwLTUuODY3LDQuOC0xMC42NjcsMTAuNjY3LTEwLjY2N0gyMDIuNjU4eg0KCQkgTTQ5MC42NTgsMzQ3Ljg3OGwtMzUuMzcxLTExLjgxOWMtNC4zNzMtMS40MjktNy4yOTYtNS41MDQtNy4yOTYtMTAuMTEydi05Ny4yNTljMC00LjYwOCwyLjkyMy04LjY2MSw3LjI5Ni0xMC4xMTINCgkJbDM1LjM3MS0xMS43OTdWMzQ3Ljg3OHoiLz4NCjwvZz4NCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Backlight\",\n \"de\": \"Hintergrundbeleuchtung\",\n \"ru\": \"Подсветка\",\n \"pt\": \"Luz de fundo\",\n \"nl\": \"Backlight\",\n \"fr\": \"Rétro-éclairage\",\n \"it\": \"Controluce\",\n \"es\": \"Iluminar desde el fondo\",\n \"pl\": \"Podświetlenie\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.household\": {\n \"_id\": \"enum.functions.household\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIj4KICA8Zz4KICAgIDxnPgogICAgICA8cGF0aCBkPSJtMjU2LDkyLjNjLTc0LjIsMC0xMjcuOCw1NS4zLTEzNi4zLDExNC43LTUuMywzOS42IDcuNSw3OC4yIDM0LjEsMTA3LjQgMjMuNCwyNSAzNi4yLDU4LjQgMzYuMiw5Mi44bC0uMSw1NC4yYzAsMjEuOSAxOC4xLDM5LjYgNDAuNSwzOS42aDUyLjJjMjIuNCwwIDQwLjUtMTcuNyA0MC41LTM5LjZsLjEtNTQuMmMwLTM1LjQgMTEuNy02Ny44IDM0LjEtOTAuNyAyNC41LTI1IDM3LjMtNTcuMyAzNy4zLTkwLjctMC4xLTc0LjEtNjMtMTMzLjUtMTM4LjYtMTMzLjV6bTQ2LjgsMzY5LjFjMCwxMC40LTguNSwxOC44LTE5LjIsMTguOGgtNTIuMmMtMTAuNywwLTE5LjItOC4zLTE5LjItMTguOHYtMjRoOTAuNXYyNHptMzkuNi0xNTkuNWMtMjYuNiwyNy4xLTQwLjUsNjQuNi00MC41LDEwNS4zdjkuNGgtOTAuNXYtOS40YzAtMzguNi0xNi03Ny4xLTQyLjYtMTA2LjMtMjMuNC0yNS0zMy01Ny4zLTI4LjgtOTAuNyA3LjUtNTAgNTQtOTcgMTE2LjEtOTcgNjUsMCAxMTcuMiw1MS4xIDExNy4yLDExMi42IDAsMjguMS0xMC43LDU1LjItMzAuOSw3Ni4xeiIvPgogICAgICA8cmVjdCB3aWR0aD0iMjEuMyIgeD0iMjQ1LjMiIHk9IjExIiBoZWlnaHQ9IjUwIi8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzg1LjEsMTA3LjQgNDAwLDEyMi4zIDQzNi41LDg3LjIgNDIxLjUsNzIuMyAgICIvPgogICAgICA8cmVjdCB3aWR0aD0iNTIuMiIgeD0iNDQ4LjgiIHk9IjIzNi4yIiBoZWlnaHQ9IjIwLjkiLz4KICAgICAgPHJlY3Qgd2lkdGg9IjUyLjIiIHg9IjExIiB5PSIyMzYuMiIgaGVpZ2h0PSIyMC45Ii8+CiAgICAgIDxwb2x5Z29uIHBvaW50cz0iOTAuMSw3Mi4yIDc1LjEsODcuMSAxMTEuNiwxMjIuMiAxMjYuNSwxMDcuMyAgICIvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==\",\n \"name\": {\n \"en\": \"Household\",\n \"de\": \"Haushalt\",\n \"ru\": \"Домашнее хозяйство\",\n \"pt\": \"Casa\",\n \"nl\": \"Huishouden\",\n \"fr\": \"Ménage\",\n \"it\": \"Domestico\",\n \"es\": \"Casa\",\n \"pl\": \"Gospodarstwo domowe\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.audio\": {\n \"_id\": \"enum.functions.audio\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNDc3LjIxNiA0NzcuMjE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NzcuMjE2IDQ3Ny4yMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik00NTMuODU4LDEwNS4xMTZ2LTkxLjZjMC00LjMtMi4xLTguNC01LjUtMTAuOWMtMy41LTIuNS04LTMuMy0xMi4xLTJsLTI3Mi45LDg2LjdjLTUuNiwxLjgtOS40LDctOS40LDEyLjl2OTEuN3YwLjF2MTc1LjMNCgkJYy0xNC4zLTkuOS0zMi42LTE1LjMtNTEuOC0xNS4zYy0yMC4zLDAtMzkuNiw2LjEtNTQuMywxNy4xYy0xNS44LDExLjktMjQuNSwyOC0yNC41LDQ1LjVzOC43LDMzLjYsMjQuNSw0NS41DQoJCWMxNC43LDExLDMzLjksMTcuMSw1NC4zLDE3LjFzMzkuNi02LjEsNTQuMy0xNy4xYzE1LjgtMTEuOSwyNC41LTI4LDI0LjUtNDUuNXYtMjEyLjhsMjQ1LjktNzguMnYxNTYuNg0KCQljLTE0LjMtOS45LTMyLjYtMTUuMy01MS44LTE1LjNjLTIwLjMsMC0zOS42LDYuMS01NC4zLDE3LjFjLTE1LjgsMTEuOS0yNC41LDI4LTI0LjUsNDUuNXM4LjcsMzMuNiwyNC41LDQ1LjUNCgkJYzE0LjcsMTEsMzMuOSwxNy4xLDU0LjMsMTcuMXMzOS42LTYuMSw1NC4zLTE3LjFjMTUuOC0xMS45LDI0LjUtMjgsMjQuNS00NS41di0yMjIuMw0KCQlDNDUzLjg1OCwxMDUuMTE2LDQ1My44NTgsMTA1LjExNiw0NTMuODU4LDEwNS4xMTZ6IE0xMDIuMTU4LDQ1MC4yMTZjLTI4LjEsMC01MS44LTE2LjMtNTEuOC0zNS42YzAtMTkuMywyMy43LTM1LjYsNTEuOC0zNS42DQoJCXM1MS44LDE2LjMsNTEuOCwzNS42QzE1My45NTgsNDM0LjAxNiwxMzAuMjU4LDQ1MC4yMTYsMTAyLjE1OCw0NTAuMjE2eiBNMTgwLjk1OCwxNzMuNDE2di02My40bDI0NS45LTc4LjF2NjMuNEwxODAuOTU4LDE3My40MTZ6DQoJCSBNMzc1LjE1OCwzNjMuMTE2Yy0yOC4xLDAtNTEuOC0xNi4zLTUxLjgtMzUuNmMwLTE5LjMsMjMuNy0zNS42LDUxLjgtMzUuNnM1MS44LDE2LjMsNTEuOCwzNS42DQoJCUM0MjYuODU4LDM0Ni44MTYsNDAzLjE1OCwzNjMuMTE2LDM3NS4xNTgsMzYzLjExNnoiLz4NCjwvZz4NCjwvc3ZnPg0K\",\n \"name\": {\n \"en\": \"Audio/Music\",\n \"de\": \"Audio/Musik\",\n \"ru\": \"Аудио/Музыка\",\n \"pt\": \"Áudio/Música\",\n \"nl\": \"Audio/Muziek\",\n \"fr\": \"Audio/Musique\",\n \"it\": \"Audio/Musica\",\n \"es\": \"Audio/Música\",\n \"pl\": \"Audio/Muzyka\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n },\n \"enum.functions.security\": {\n \"_id\": \"enum.functions.security\",\n \"common\": {\n \"icon\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTI1Niw0MC4wMWMtNS41MzgsMC05Ljk5LDQuNDYtOS45OSw5Ljk5YzAsNS4xNDcsMy44NzIsOS40Myw4Ljk5LDkuOTM4YzUuOTI1LDAuNTg4LDEwLjk5LTQuMDI3LDEwLjk5LTkuOTM4DQoJCUMyNjUuOTksNDQuNDYyLDI2MS41Myw0MC4wMSwyNTYsNDAuMDF6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNNDU2LDYwYy0yNy41NywwLTUwLTIyLjQzLTUwLTUwYzAtNS41MjItNC40NzgtMTAtMTAtMTBIMTE2Yy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwYzAsMjcuNTctMjIuNDMsNTAtNTAsNTANCgkJYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjE2My4xOWMwLDEyNy4xNzcsODIuODk1LDI0MS4xMzUsMjA3LjEyOCwyNzguMzg5YzAuOTM3LDAuMjgsMS45MDQsMC40MjEsMi44NzIsMC40MjENCgkJYzAuOTY4LDAsMS45MzctMC4xNDEsMi44NzMtMC40MjJDMzgwLjQxNSw0NzUuMTE5LDQ2NiwzNjMuMTQ5LDQ2NiwyMzMuMTlWNzBDNDY2LDY0LjQ3OCw0NjEuNTIyLDYwLDQ1Niw2MHogTTQ0NiwyMzMuMTkNCgkJYzAsMTE5LjQ0OC03Ni4yMjEsMjIyLjg5Mi0xOTAsMjU4LjM1M0MxNDMuMTI4LDQ1Ni4zNjUsNjYsMzUxLjk4NCw2NiwyMzMuMTlWNzkuMjg4Qzk2LjYxMSw3NC44OSwxMjAuODksNTAuNjExLDEyNS4yODgsMjANCgkJaDI2MS40MjRDMzkxLjExLDUwLjYxMSw0MTUuMzg5LDc0Ljg5LDQ0Niw3OS4yODhWMjMzLjE5eiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTQyMC4wMTIsOTIuNDljLTIwLjg1NC05LjEzMy0zNy4zNjktMjUuNjQ4LTQ2LjUwMi00Ni41MDJDMzcxLjkxNiw0Mi4zNSwzNjguMzIyLDQwLDM2NC4zNSw0MGgtNjguMzcNCgkJYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwczQuNDc4LDEwLDEwLDEwaDYyLjA0N2MxMC41NjUsMjAuNjgxLDI3LjI5MiwzNy40MDcsNDcuOTczLDQ3Ljk3M1YyMzMuMTkNCgkJYzAsOTcuODYzLTU4Ljc0OSwxODIuMzAzLTE1MCwyMTYuMTA0Yy05MS4yNTEtMzMuODAyLTE1MC0xMTguMjQxLTE1MC0yMTYuMTA0VjEwNy45NzNDMTI2LjY4MSw5Ny40MDcsMTQzLjQwNyw4MC42ODEsMTUzLjk3Myw2MA0KCQloNjIuMDQ3YzUuNTIyLDAsMTAtNC40NzgsMTAtMTBzLTQuNDc4LTEwLTEwLTEwaC02OC4zN2MtMy45NzIsMC03LjU2NiwyLjM1MS05LjE2LDUuOTg4DQoJCWMtOS4xMzMsMjAuODU0LTI1LjY0OCwzNy4zNjktNDYuNTAyLDQ2LjUwMkM4OC4zNTEsOTQuMDg0LDg2LDk3LjY3OSw4NiwxMDEuNjV2MTMxLjU0YzAsMTA3LjIxMyw2Ni4zMTEsMjAwLjY1MywxNjYuNjY0LDIzNi4xNjYNCgkJYzEuMDc5LDAuMzgyLDIuMjA3LDAuNTczLDMuMzM2LDAuNTczYzEuMTI5LDAsMi4yNTctMC4xOTEsMy4zMzYtMC41NzNDMzU5LjYwNSw0MzMuODczLDQyNiwzNDAuNDksNDI2LDIzMy4xOVYxMDEuNjUNCgkJQzQyNiw5Ny42NzgsNDIzLjY0OSw5NC4wODQsNDIwLjAxMiw5Mi40OXoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik0yNTYsMTQ2Yy00OS42MjYsMC05MCw0MC4zNzQtOTAsOTBjMCw0OS42MjYsNDAuMzc0LDkwLDkwLDkwYzQ5LjYyNiwwLDkwLTQwLjM3NCw5MC05MEMzNDYsMTg2LjM3NCwzMDUuNjI2LDE0NiwyNTYsMTQ2eg0KCQkgTTI1NiwzMDZjLTM4LjU5OCwwLTcwLTMxLjQwMi03MC03MGMwLTM4LjU5OCwzMS40MDItNzAsNzAtNzBjMzguNTk4LDAsNzAsMzEuNDAyLDcwLDcwQzMyNiwyNzQuNTk4LDI5NC41OTgsMzA2LDI1NiwzMDZ6Ii8+DQo8L2c+DQo8Zz4NCgk8cGF0aCBkPSJNMzAzLjA3MSwyMDguOTI4Yy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBMMjQ2LDI1MS44NTdsLTEyLjkyOS0xMi45MjhjLTMuOTA2LTMuOTA0LTEwLjIzNi0zLjkwNC0xNC4xNDMsMA0KCQljLTMuOTA1LDMuOTA1LTMuOTA1LDEwLjIzNywwLDE0LjE0M2wyMCwyMEMyNDAuODgyLDI3NS4wMjMsMjQzLjQ0LDI3NiwyNDYsMjc2czUuMTE4LTAuOTc3LDcuMDcxLTIuOTI5bDUwLTUwDQoJCUMzMDYuOTc2LDIxOS4xNjYsMzA2Ljk3NiwyMTIuODM0LDMwMy4wNzEsMjA4LjkyOHoiLz4NCjwvZz4NCg0KPC9zdmc+DQo=\",\n \"name\": {\n \"en\": \"Security\",\n \"de\": \"Sicherheit\",\n \"ru\": \"Безопасность\",\n \"pt\": \"Segurança\",\n \"nl\": \"Veiligheid\",\n \"fr\": \"Sécurité\",\n \"it\": \"Sicurezza\",\n \"es\": \"Seguridad\",\n \"pl\": \"Bezpieczeństwo\"\n },\n \"members\": []\n },\n \"type\": \"enum\"\n }\n // todo\n }\n };\n\n var selectId = function () {\n if (!that.$grid || !that.$grid.selectId) return;\n selectId = that.$grid.selectId.bind(that.$grid);\n return that.$grid.selectId.apply(that.$grid, arguments);\n };\n\n function enumRename(oldId, newId, newCommon, callback) {\n if (tasks.length) {\n var task = tasks.shift();\n if (task.name === 'delObject') {\n that.main.socket.emit(task.name, task.id, function () {\n setTimeout(function () {\n enumRename(undefined, undefined, undefined, callback);\n }, 0);\n });\n } else {\n that.main.socket.emit(task.name, task.id, task.obj, function () {\n setTimeout(function () {\n enumRename(undefined, undefined, undefined, callback);\n }, 0);\n });\n }\n } else {\n _enumRename(oldId, newId, newCommon, function () {\n if (tasks.length) {\n enumRename(undefined, undefined, undefined, callback);\n } else {\n if (callback) callback();\n }\n });\n }\n }\n\n function _enumRename(oldId, newId, newCommon, callback) {\n //Check if this name exists\n if (oldId !== newId && that.main.objects[newId]) {\n showMessage(_('Name yet exists!'), true);\n that.init(true);\n if (callback) callback();\n } else {\n if (oldId === newId) {\n if (newCommon && (newCommon.name !== undefined || newCommon.icon !== undefined || newCommon.color !== undefined)) {\n tasks.push({name: 'extendObject', id: oldId, obj: {common: newCommon}});\n }\n if (callback) callback();\n } else if (that.main.objects[oldId] && that.main.objects[oldId].common && that.main.objects[oldId].common.nondeletable) {\n showMessage(_('Change of enum\\'s id \"%s\" is not allowed!', oldId), true);\n that.init(true);\n if (callback) callback();\n } else {\n var len = oldId.length + 1;\n var children = [];\n for (var e = 0; e < that.list.length; e++) {\n if (that.list[e].substring(0, len) === oldId + '.') {\n children.push(that.list[e]);\n }\n }\n\n that.main.socket.emit('getObject', oldId, function (err, obj) {\n setTimeout(function () {\n if (obj) {\n obj._id = newId;\n if (obj._rev) delete obj._rev;\n if (newCommon && newCommon.name !== undefined) obj.common.name = newCommon.name;\n if (newCommon && newCommon.icon !== undefined) obj.common.icon = newCommon.icon;\n if (newCommon && newCommon.color !== undefined) obj.common.color = newCommon.color;\n tasks.push({name: 'delObject', id: oldId});\n tasks.push({name: 'setObject', id: newId, obj: obj});\n // Rename all children\n var count = 0;\n for (var i = 0; i < children.length; i++) {\n var n = children[i].replace(oldId + '.', newId + '.');\n count++;\n _enumRename(children[i], n, null, function () {\n if (!--count && callback) callback();\n });\n }\n if (!children.length && callback) {\n callback();\n }\n }\n }, 0);\n });\n }\n }\n }\n\n function enumAddChild(parent, newId, common, callback) {\n if (that.main.objects[newId]) {\n showMessage(_('Name yet exists!'), true);\n return false;\n }\n\n that.main.socket.emit('setObject', newId, {\n _id: newId,\n common: {\n name: common.name,\n members: [],\n icon: common.icon,\n color: common.color\n },\n type: 'enum'\n }, callback);\n return true;\n }\n\n function prepareNewEnum(parent) {\n var text = '';\n var id;\n if (parent) {\n var name = parent.replace(/[.#\\\\\\/&?]+/g, '-');\n\n if (standardGroups[parent]) {\n for (id in standardGroups[parent]) {\n if (standardGroups[parent].hasOwnProperty(id) && that.list.indexOf(id) === -1) {\n text += '
      • ' + that.main.getIconFromObj(standardGroups[parent][id]) + getName(standardGroups[parent][id]) + '
      • ';\n }\n }\n }\n if (text) {\n text += '
      • ';\n }\n text += '
      • control_point' + _('custom group') + '
      • ';\n\n that.$gridEnum.find('#btn-new-group-' + name).html(text);\n that.$gridEnum.find('.btn-new-group-btn[data-target=\"btn-new-group-' + name + '\"]').dropdown({\n constrainWidth: false\n });\n that.$gridEnum.find('#btn-new-group-' + name).find('.new-group-item').off('click').on('click', function () {\n var id = $(this).data('id');\n var parent = $(this).data('enum');\n if (!id) {\n createOrEditEnum(null, parent);\n } else {\n var name = parent.replace(/[.#\\\\\\/&?]+/g, '-');\n that.main.saveConfig('enums-active', 'enum-' + name);\n that.main.socket.emit('setObject', id, standardGroups[parent][id], function (err) {\n if (err) {\n that.main.showError(err);\n }\n });\n }\n });\n } else {\n for (id in standardEnums) {\n if (standardEnums.hasOwnProperty(id) && that.list.indexOf(id) === -1) {\n text += '
      • ' + that.main.getIconFromObj(standardEnums[id]) + getName(standardEnums[id]) + '
      • ';\n }\n }\n\n if (text) {\n text += '
      • ';\n }\n text += '
      • control_point' + _('custom enum') + '
      • ';\n that.$gridEnum.find('#btn-new-enum').html(text);\n that.$gridEnum.find('.btn-new-enum-btn').dropdown({\n constrainWidth: false\n });\n that.$gridEnum.find('.new-enum-item').off('click').on('click', function () {\n var id = $(this).data('id');\n if (!id) {\n createOrEditEnum(null);\n } else {\n var name = id.replace(/[.#\\\\\\/&?]+/g, '-');\n that.main.saveConfig('enums-active', 'enum-' + name);\n that.main.socket.emit('setObject', id, standardEnums[id], function (err) {\n if (err) {\n that.main.showError(err);\n }\n });\n }\n });\n }\n }\n\n this.prepare = function () {\n this.isTiles = (this.main.config.enumIsTiles !== undefined && this.main.config.enumIsTiles !== null) ? this.main.config.enumIsTiles : true;\n };\n\n function getName(objects, id) {\n var name;\n if (!id) {\n name = objects;\n } else {\n name = objects[id];\n }\n if (name && name.common && name.common.name) {\n name = translateName(name.common.name);\n } else {\n var parts = id.split('.');\n name = parts.pop();\n name = name[0].toUpperCase() + name.substring(1).toLowerCase();\n }\n return name;\n }\n\n function drawChip(id, group) {\n var text = '';\n text += '
        ' +\n that.main.getIcon(id) +\n '' +\n '' + getName(that.main.objects, id) + '' +\n// '' + id + '' +\n '' +\n 'close' +\n '
        ';\n return text;\n }\n\n function drawEnum(id, $page, scrollTop) {\n var obj = that.main.objects[id];\n var name = id.replace(/[.#\\\\\\/&?]+/g, '-');\n var text =\n '
        ' +\n '
        ' +\n ' library_add' +\n '
          ' +\n ' ' +\n ' edit' +\n ' ' +\n ' ' +\n ' delete' +\n ' ' +\n '
          \\n' +\n ' clear
          \\n' +\n '
          ' +\n '
          ';\n\n text += '
            ';\n\n for (var se = 0; se < that.list.length; se++) {\n if (that.list[se].substring(0, id.length + 1) === id + '.') {\n var en = that.main.objects[that.list[se]];\n var inverted;\n var style = '';\n if (en && en.common && en.common.color) {\n style = 'background: ' + en.common.color + '; ';\n if (that.main.invertColor(en.common.color)) {\n inverted = true;\n style += 'color: white;';\n }\n }\n\n text += '
          • ' +\n that.main.getIcon(that.list[se], null, null, 'icon') +\n '' + getName(that.main.objects, that.list[se]) + '' +\n '

            ' + that.list[se] + '


            ';\n\n if (en && en.common && en.common.members && en.common.members.length) {\n for (var m = 0; m < en.common.members.length; m++) {\n text += drawChip(en.common.members[m], that.list[se]);\n }\n }\n text += 'edit';\n text += 'delete';\n text += '
          • ';\n }\n }\n text += '
          ';\n $page.html(text);\n prepareNewEnum(id);\n scrollTop && $page.find('.enum-collection').scrollTop(scrollTop);\n initFilter(id);\n }\n function applyFilter(id, filter) {\n var $tiles = that.$gridList.find('.enum-collection[data-id=\"' + id + '\"] .collection-item');\n if (!filter) {\n $tiles.show();\n } else {\n filter = filter.toLowerCase();\n $tiles.each(function () {\n var $this = $(this);\n var eid = $this.data('id');\n var name = getName(that.main.objects, eid);\n if (name.toLowerCase().indexOf(filter) !== -1) {\n $this.show();\n } else {\n if (eid.substring(id.length).toLowerCase().indexOf(filter) !== -1) {\n $this.show();\n } else {\n $this.hide();\n }\n }\n });\n }\n }\n\n function initFilter(id) {\n var $filter = that.$gridList.find('.enum-buttons[data-id=\"' + id + '\"] .filter-input');\n var data = {};\n for (var se = 0; se < that.list.length; se++) {\n var eid = that.list[se];\n if (eid.substring(0, id.length + 1) === id + '.') {\n var name = getName(that.main.objects, eid);\n var icon = null;\n if (that.main.objects[eid] &&\n that.main.objects[eid].common &&\n that.main.objects[eid].common.icon) {\n icon = that.main.objects[eid].common.icon;\n }\n\n data[name] = icon;\n }\n }\n var $btn = that.$gridList.find('.enum-buttons[data-id=\"' + id + '\"] .filter-clear');\n $filter.mautocomplete({\n data: data,\n minLength: 0,\n limit: 10\n }).on('change', function () {\n var val = $(this).val();\n applyFilter(id, val);\n if ($(this).val()) {\n $btn.show();\n } else {\n $btn.hide();\n }\n that.main.saveConfig('filter-' + id, val);\n }).on('keyup', function () {\n $(this).trigger('change');\n });\n $btn.off('click').on('click', function () {\n $filter.val('').trigger('change');\n });\n if (that.main.config['filter-' + id]) {\n $filter.val(that.main.config['filter-' + id]).trigger('change');\n } else {\n $btn.hide();\n }\n }\n\n function drawEnumsTiles() {\n var $tableBody = that.$gridList.find('.tree-table-body');\n that.$gridList.removeClass('tree-table-list').addClass('tree-table-tiles');\n that.$gridList.find('.tree-table-buttons').remove();\n\n // create buttons for panels\n that.$gridList.prepend('
          \\n' +\n ' view_list\\n' +\n ' note_add\\n' +\n '
            \\n' +\n ' \\n' +\n ' queue_play_next\\n' +\n ' \\n' +\n '
            ');\n\n\n var text = '
            ';\n text += '
              ';\n var parts;\n for (var e = 0; e < that.list.length; e++) {\n parts = that.list[e].split('.');\n if (parts.length !== 2) continue;\n var name = getName(that.main.objects, that.list[e]);\n text += '
            • ' + that.main.getIcon(that.list[e]) + '' + name + '
            • ';\n }\n text += '
            ';\n text += '
            ';\n for (var se = 0; se < that.list.length; se++) {\n parts = that.list[se].split('.');\n if (parts.length !== 2) continue;\n\n text += '
            ';\n text += '
            ';\n }\n var scrollTop = {};\n $tableBody.find('.enum-collection').each(function () {\n // remember actual offset\n scrollTop[$(this).data('id')] = $(this).scrollTop();\n });\n\n // destroy droppable\n try {\n var $items = that.$gridEnum.find('.tree-table-body .collection').find('.collection-item');\n try {\n if ($items.droppable('instance')) {\n $items.droppable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n } catch (e) {\n\n }\n\n $tableBody.html(text);\n\n if ($tableBody.find('.tabs li').length > 0) {\n $tableBody.find('.tabs').mtabs({\n onShow: function (tab) {\n that.main.saveConfig('enums-active', $(tab).attr('id'));\n }\n });\n if (that.main.config['enums-active'] && !that.main.noSelect) {\n $tableBody.find('.tabs').mtabs('select', that.main.config['enums-active']);\n }\n }\n\n\n $tableBody.find('.page').each(function () {\n drawEnum($(this).data('id'), $(this), scrollTop[$(this).data('id')]);\n });\n $tableBody.find('.btn-new-category').on('click', function () {\n createOrEditEnum(null, $(this).data('id'));\n });\n $tableBody.find('.btn-edit-category').on('click', function () {\n createOrEditEnum($(this).data('id'));\n });\n $tableBody.find('.btn-del-category').on('click', function () {\n deleteEnum($(this).data('id'));\n });\n $tableBody.find('.edit-content').on('click', function () {\n createOrEditEnum($(this).data('id'));\n });\n $tableBody.find('.delete-content').on('click', function () {\n deleteEnum($(this).data('id'));\n });\n $tableBody.find('.close').on('click', function () {\n removeMember($(this).data('id'), $(this).data('enum'));\n });\n\n that.$gridList.find('.btn-edit').off('click').on('click', function () {\n switchEditMode(!that.editMode);\n });\n\n that.$gridList.find('.btn-switch-tiles').off('click').on('click', function () {\n that.isTiles = false;\n that.main.saveConfig('enumIsTiles', that.isTiles);\n\n setTimeout(function () {\n drawEnumsTable();\n }, 50);\n });\n prepareNewEnum();\n\n var $collection = that.$gridEnum.find('.tree-table-body .collection');\n setupDroppableTiles($collection);\n }\n\n function drawEnumsTable() {\n try {\n var $items = that.$gridEnum.find('.tree-table-main').find('tbody>tr.treetable-enum');\n if ($items.droppable('instance')) {\n $items.droppable('destroy');\n }\n } catch (e) {\n console.log(e);\n }\n // extract all enums\n that.$gridList.html('').removeClass('tree-table-tiles').addClass('tree-table-list');\n\n that.$gridList.treeTable({\n objects: that.main.objects,\n root: 'enum',\n columns: ['title', 'name'],\n members: true,\n colors: true,\n icons: true,\n widths: ['calc(100% - 250px)', '250px'],\n //classes: ['', 'treetable-center'],\n name: 'enums',\n buttonsWidth: '40px',\n buttons: [\n {\n text: false,\n icons: {\n primary:'ui-icon-trash'\n },\n click: function (id, children, parent) {\n if (that.main.objects[id]) {\n if (that.main.objects[id].type === 'enum') {\n if (children) {\n // ask if only object must be deleted or just this one\n that.main.confirmMessage(_('All sub-enums of %s will be deleted too?', id), null, 'help', function (result) {\n // If all\n if (result) {\n that.main._delObjects(id, true, function (err) {\n if (!err) {\n showMessage(_('Deleted'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n } // else do nothing\n });\n } else {\n that.main.confirmMessage(_('Are you sure to delete %s?', id), null, 'help', function (result) {\n // If all\n if (result) that.main._delObjects(id, true, function (err) {\n if (!err) {\n showMessage(_('Deleted'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n });\n }\n } else {\n removeMember(id, parent);\n }\n } else {\n if (that.main.objects[parent] && that.main.objects[parent].type === 'enum') {\n removeMember(id, parent);\n } else {\n showMessage(_('Object \"%s\" does not exists. Update the page.', id));\n }\n }\n },\n width: 26,\n height: 20\n }, {\n text: false,\n icons: {\n primary:'ui-icon-pencil'\n },\n match: function (id) {\n return that.main.objects[id] && that.main.objects[id].type === 'enum';\n },\n click: function (id, children, parent) {\n createOrEditEnum(id);\n },\n width: 26,\n height: 20\n }\n ],\n panelButtons: [\n {\n id: 'tab-enums-btn-switch-tiles',\n title: _('change view mode'),\n icon: 'view_module',\n click: function () {\n that.isTiles = true;\n that.main.saveConfig('enumIsTiles', that.isTiles);\n setTimeout(function () {\n drawEnumsTiles();\n }, 50);\n }\n },\n {\n id: 'tab-enums-list-new-enum',\n title: _('New enum'),\n icon: 'note_add',\n click: function () {\n createOrEditEnum(null);\n }\n },\n {\n id: 'tab-enums-list-new-category',\n title: _('New category'),\n icon: 'library_add',\n click: function () {\n createOrEditEnum(null, that.enumEdit);\n }\n },\n {\n id: 'tab-enums-list-edit',\n title: _('Edit'),\n icon: 'edit',\n click: function () {\n switchEditMode(!that.editMode);\n }\n }\n ],\n onChange: function (id, oldId) {\n if (id !== oldId) {\n that.enumEdit = id;\n var obj = that.main.objects[id];\n if (obj && obj.type === 'enum') {\n $('#tab-enums-list-new-enum').removeClass('disabled').attr('title', _('Create new enum, like %s', 'enum.newCategory'));\n var parts = id.split('.');\n if (parts.length === 2) {\n that.$gridList.find('#tab-enums-list-new-category').removeClass('disabled').attr('title', _('Create new category, like %s', id + '.newEnum'));\n } else {\n that.$gridList.find('#tab-enums-list-new-category').addClass('disabled');\n }\n } else {\n that.$gridList.find('#tab-enums-list-new-enum').addClass('disabled');\n that.$gridList.find('#tab-enums-list-new-category').addClass('disabled');\n }\n }\n },\n onReady: setupDroppableTable\n });//.treeTable('show', currentEnum);\n that.$gridList.find('.tree-table-buttons a').addClass('btn-small');\n that.$gridList.find('#tab-enums-list-new-enum').addClass('disabled');\n that.$gridList.find('#tab-enums-list-new-category').addClass('disabled');\n }\n\n function getEnumsChildren(id) {\n var parts = id.split('.');\n var items = [];\n var regex = new RegExp('^' + id.replace(/\\./g, '\\\\.') + '\\\\.');\n for (var se = 0; se < that.list.length; se++) {\n var _parts = that.list[se].split('.');\n if (_parts.length === parts.length + 1 && regex.test(that.list[se])) {\n items.push(that.list[se]);\n }\n }\n return items;\n }\n \n function deleteEnum(id) {\n if (that.main.objects[id].type === 'enum') {\n var children = getEnumsChildren(id);\n \n if (children && children.length) {\n // ask if only object must be deleted or just this one\n that.main.confirmMessage(_('All sub-enums of %s will be deleted too?', id), null, 'help', function (result) {\n // If all\n if (result) {\n that.main._delObjects(id, true, function (err) {\n if (!err) {\n showMessage(_('Deleted'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n } // else do nothing\n });\n } else {\n that.main.confirmMessage(_('Are you sure to delete %s?', id), null, 'help', function (result) {\n // If all\n if (result) that.main._delObjects(id, true, function (err) {\n if (!err) {\n showMessage(_('Deleted'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n });\n }\n }\n }\n \n function removeMember(id, parent) {\n that.main.socket.emit('getObject', parent, function (err, obj) {\n if (obj && obj.common && obj.common.members) {\n var pos = obj.common.members.indexOf(id);\n if (pos !== -1) {\n obj.common.members.splice(pos, 1);\n that.main.socket.emit('setObject', obj._id, obj, function (err) {\n if (!err) {\n showMessage(_('Removed'));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n } else {\n showMessage(_('%s is not in the list'));\n }\n }\n });\n }\n\n function addMember(id, parent) {\n that.main.socket.emit('getObject', parent, function (err, obj) {\n if (obj && obj.common) {\n obj.common.members = obj.common.members || [];\n var pos = obj.common.members.indexOf(id);\n if (pos === -1) {\n obj.common.members.push(id);\n obj.common.members.sort();\n that.main.socket.emit('setObject', obj._id, obj, function (err) {\n if (!err) {\n showMessage(_('%s added to %s', id, obj._id));\n } else {\n showMessage(_('Error: %s', err), true);\n }\n });\n } else {\n showMessage(_('Is yet in the list'));\n }\n }\n });\n }\n \n function showMessage(text, duration, isError) {\n if (typeof duration === 'boolean') {\n isError = duration;\n duration = 3000;\n }\n that.main.showToast(that.$gridEnum.find('.tree-table-buttons'), text, null, duration, isError);\n }\n\n function setupDraggable() {\n var $trs = that.$gridEnum.find('.fancytree-container>tbody');\n try {\n if ($trs.sortable('instance')) {\n $trs.sortable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n\n that.$gridEnum.find('.fancytree-container>tbody')\n .sortable({\n connectWith: '#tab-enums .tab-enums-list .tree-table-main.treetable',\n items: '.fancytree-type-draggable',\n appendTo: that.$gridEnum,\n refreshPositions: true,\n helper: function (e, $target) {\n return $('
            ' + $target.find('.fancytree-title').text() + '
            ');\n },\n zIndex: 999990,\n revert: false,\n scroll: false,\n start: function (e, ui) {\n var $prev = ui.item.prev();\n // place this item back where it was\n ui.item.data('prev', $prev);\n that.$gridEnum.addClass('dragging');\n },\n stop: function (e, ui) {\n that.$gridEnum.removeClass('dragging');\n },\n update: function (event, ui) {\n // place this item back where it was\n var $prev = ui.item.data('prev');\n if (!$prev || !$prev.length) {\n $(this).prepend(ui.item);\n } else {\n $($prev).after(ui.item);\n }\n }\n })\n .disableSelection();\n }\n\n this._initObjectTree = function () {\n var settings = {\n objects: main.objects,\n noDialog: true,\n draggable: ['device', 'channel', 'state'],\n name: 'enum-objects',\n expertModeRegEx: /^system\\.|^yunkong2\\.|^_|^[\\w-]+$|^enum\\.|^[\\w-]+\\.admin|^script\\./,\n texts: {\n select: _('Select'),\n cancel: _('Cancel'),\n all: _('All'),\n id: _('ID'),\n ID: _('ID'),\n name: _('Name'),\n role: _('Role'),\n room: _('Room'),\n 'function': _('Function'),\n value: _('Value'),\n type: _('Type'),\n selectid: _('Select ID'),\n from: _('From'),\n lc: _('Last changed'),\n ts: _('Time stamp'),\n wait: _('Processing...'),\n ack: _('Acknowledged'),\n edit: _('Edit'),\n push: _('Trigger event'),\n ok: _('Ok'),\n with: _('With'),\n without: _('Without'),\n copyToClipboard: _('Copy to clipboard'),\n expertMode: _('Toggle expert mode'),\n refresh:\t_('Update'),\n sort: _('Sort alphabetically'),\n button: _('Settings'),\n noData: _('No data')\n },\n filter: {\n type: 'state'\n },\n columns: ['ID', 'name', 'type', 'role']\n };\n\n selectId('init', settings)\n .selectId('show');\n\n setupDraggable();\n };\n\n function setupDroppableTable($treetable) {\n if (!that.editMode) return;\n\n if (!$treetable) {\n $treetable = that.$gridEnum.find('.tree-table-main');\n }\n\n $treetable.find('tbody>tr.treetable-enum').droppable({\n accept: '.fancytree-type-draggable',\n over: function (e, ui) {\n $(this).addClass('tab-accept-item');\n if ($(this).hasClass('not-empty') && !$(this).hasClass('expanded')) {\n var id = $(this).data('tt-id');\n var timer;\n if ((timer = $(this).data('timer'))) {\n clearTimeout(timer);\n }\n $(this).data('timer', setTimeout(function () {\n that.$gridList.treeTable('expand', $(this).data('tt-id'));\n }, 1000));\n }\n },\n out: function (e, ui) {\n $(this).removeClass('tab-accept-item');\n var timer;\n if ((timer = $(this).data('timer'))) {\n clearTimeout(timer);\n $(this).data('timer', null);\n }\n },\n tolerance: 'pointer',\n drop: function (e, ui) {\n $(this).removeClass('tab-accept-item');\n var id = ui.draggable.data('id');\n var enumId = $(this).data('tt-id');\n\n addMember(id, enumId);\n }\n });\n }\n\n function setupDroppableTiles($collection) {\n if (!that.editMode) return;\n\n $collection = $collection || that.$gridEnum.find('.tree-table-body .collection');\n\n var $items = $collection.find('.collection-item');\n try {\n if ($items.droppable('instance')) {\n $items.droppable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n\n $items.droppable({\n accept: '.fancytree-type-draggable',\n over: function (e, ui) {\n $(this).addClass('tab-accept-item');\n },\n out: function (e, ui) {\n $(this).removeClass('tab-accept-item');\n },\n tolerance: 'pointer',\n drop: function (e, ui) {\n $(this).removeClass('tab-accept-item');\n var id = ui.draggable.data('id');\n var enumId = $(this).data('id');\n addMember(id, enumId);\n }\n });\n }\n\n function createOrEditEnum(id, parentId) {\n var idChanged = false;\n var $dialog = that.$gridEnum.find('#tab-enums-dialog-new');\n var oldId = '';\n\n var nameVal = '';\n var idVal = '';\n var originalIdVal = '';\n var iconVal = '';\n var colorVal = '';\n\n var isIdEditable = true;\n\n installFileUpload($dialog, 50000, function (err, text) {\n if (err) {\n showMessage(err, true);\n } else {\n if (!text.match(/^data:image\\//)) {\n showMessage(_('Unsupported image format'), true);\n return;\n }\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n iconVal = text;\n\n $dialog.find('.tab-enums-dialog-new-icon').show().html('');\n $dialog.find('.tab-enums-dialog-new-icon img').attr('src', text);\n $dialog.find('.tab-enums-dialog-new-icon-clear').show();\n }\n });\n\n if (id) {\n if (that.main.objects[id] && that.main.objects[id].common) {\n nameVal = translateName(that.main.objects[id].common.name);\n iconVal = that.main.objects[id].common.icon;\n colorVal = that.main.objects[id].common.color;\n }\n oldId = id;\n idVal = id;\n $dialog.find('#tab-enums-dialog-preserve-id').prop('checked', true);\n isIdEditable = false;\n } else {\n $dialog.find('#tab-enums-dialog-preserve-id').prop('checked', false);\n isIdEditable = true;\n }\n\n $dialog.find('.tab-enums-dialog-new-title').text(parentId ? _('Create new category') : (idVal ? _('Rename') : _('Create new enum')));\n\n if (idVal) {\n var parts = idVal.split('.');\n if (parts.length <= 2) {\n id = true;\n }\n idVal = parts.pop();\n parentId = parts.join('.');\n originalIdVal = idVal;\n }\n\n $dialog.find('#tab-enums-dialog-new-name')\n .val(nameVal)\n .off('change')\n .on('change', function () {\n var $id = $dialog.find('#tab-enums-dialog-new-id');\n var id = $id.val();\n var val = $(this).val();\n val = val.replace(FORBIDDEN_CHARS, '_').replace(/\\./g, '_').trim().toLowerCase();\n if (isIdEditable && (!id || !idChanged)) {\n $id.val(val);\n $dialog.find('#tab-enums-dialog-new-preview').val((parentId || 'enum') + '.' + (val || '#'));\n // detect materialize\n M.updateTextFields('#tab-enums-dialog-new');\n }\n if ($id.val() && !$id.val().match(/[.\\s]/)) {\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $id.removeClass('wrong');\n } else {\n $dialog.find('.tab-enums-dialog-create').addClass('disabled');\n $id.addClass('wrong');\n }\n }).off('keyup').on('keyup', function () {\n $(this).trigger('change');\n });\n\n $dialog.find('#tab-enums-dialog-new-id')\n .val(idVal)\n .off('change')\n .on('change', function () {\n if ($dialog.find('#tab-enums-dialog-preserve-id').prop('checked')) return;\n idChanged = true;\n var val = $(this).val();\n $dialog.find('#tab-enums-dialog-new-preview').val((parentId || 'enum') + '.' + ($(this).val() || '#'));\n M.updateTextFields('#tab-enums-dialog-new');\n\n if (val && !val.match(/[.\\s]/)) {\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $(this).removeClass('wrong');\n } else {\n $dialog.find('.tab-enums-dialog-create').addClass('disabled');\n $(this).addClass('wrong');\n }\n }).off('keyup').on('keyup', function () {\n $(this).trigger('change');\n });\n\n $dialog.find('#tab-enums-dialog-new-id').prop('disabled', !isIdEditable);\n\n $dialog.find('.tab-enums-dialog-create')\n .addClass('disabled')\n .off('click')\n .text(oldId ? _('Change') : _('Create'))\n .on('click', function () {\n if (oldId) {\n var name;\n if ($dialog.find('#tab-enums-dialog-preserve-id').prop('checked')) {\n if (typeof that.main.objects[oldId].common.name === 'object') {\n name = that.main.objects[oldId].common.name;\n } else {\n name = {'en': oldId.split('.').pop()};\n }\n name[systemLang] = $dialog.find('#tab-enums-dialog-new-name').val();\n } else {\n name = $dialog.find('#tab-enums-dialog-new-name').val();\n }\n enumRename(\n oldId,\n parentId + '.' + $dialog.find('#tab-enums-dialog-new-id').val(),\n {\n name: name,\n icon: iconVal,\n color: colorVal\n },\n function (err) {\n if (err) {\n showMessage(_('Error: %s', err), true);\n } else {\n showMessage(_('Updated'));\n }\n }\n );\n } else {\n enumAddChild(\n parentId,\n (parentId || 'enum') + '.' + $dialog.find('#tab-enums-dialog-new-id').val(),\n {\n name: $dialog.find('#tab-enums-dialog-new-name').val(),\n icon: iconVal,\n color: colorVal\n },\n function (err) {\n if (err) {\n showMessage(_('Error: %s', err), true, 5000);\n } else {\n showMessage(_('Updated'));\n }\n });\n }\n });\n\n $dialog.find('#tab-enums-dialog-new-preview').val((parentId || 'enum') + '.' + (idVal || '#'));\n\n if (iconVal) {\n $dialog.find('.tab-enums-dialog-new-icon').show().html(that.main.getIcon(oldId));\n $dialog.find('.tab-enums-dialog-new-icon-clear').show();\n } else {\n $dialog.find('.tab-enums-dialog-new-icon').hide();\n $dialog.find('.tab-enums-dialog-new-icon-clear').hide();\n }\n colorVal = colorVal || false;\n if (colorVal) {\n $dialog.find('.tab-enums-dialog-new-color').val(colorVal);\n } else {\n $dialog.find('.tab-enums-dialog-new-color').val();\n }\n\n M.updateTextFields('#tab-enums-dialog-new');\n that.main.showToast($dialog, _('Drop the icons here'));\n\n $dialog.find('.tab-enums-dialog-new-upload').off('click').on('click', function () {\n $dialog.find('.drop-file').trigger('click');\n });\n $dialog.find('.tab-enums-dialog-new-icon-clear').off('click').on('click', function () {\n if (iconVal) {\n iconVal = '';\n $dialog.find('.tab-enums-dialog-new-icon').hide();\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $dialog.find('.tab-enums-dialog-new-icon-clear').hide();\n }\n });\n $dialog.find('.tab-enums-dialog-new-color-clear').off('click').on('click', function () {\n if (colorVal) {\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $dialog.find('.tab-enums-dialog-new-color-clear').hide();\n $dialog.find('.tab-enums-dialog-new-colorpicker').colorpicker({\n component: '.btn',\n color: colorVal,\n container: $dialog.find('.tab-enums-dialog-new-colorpicker')\n }).colorpicker('setValue', '');\n colorVal = '';\n }\n });\n var time = Date.now();\n try {\n $dialog.find('.tab-enums-dialog-new-colorpicker').colorpicker('destroy');\n } catch (e) {\n\n }\n $dialog.find('.tab-enums-dialog-new-colorpicker').colorpicker({\n component: '.btn',\n color: colorVal,\n container: $dialog.find('.tab-enums-dialog-new-colorpicker')\n }).colorpicker('setValue', colorVal).on('showPicker.colorpicker', function (/* event */) {\n //$dialog.find('.tab-enums-dialog-new-colorpicker')[0].scrollIntoView(false);\n var $modal = $dialog.find('.modal-content');\n $modal[0].scrollTop = $modal[0].scrollHeight;\n }).on('changeColor.colorpicker', function (event){\n if (Date.now() - time > 100) {\n colorVal = event.color.toHex();\n $dialog.find('.tab-enums-dialog-create').removeClass('disabled');\n $dialog.find('.tab-enums-dialog-new-icon-clear').show();\n }\n });\n if (colorVal) {\n $dialog.find('.tab-enums-dialog-new-color-clear').show();\n } else {\n $dialog.find('.tab-enums-dialog-new-color-clear').hide();\n }\n\n $dialog.find('#tab-enums-dialog-preserve-id').off('change').on('change', function () {\n if ($(this).prop('checked')) {\n $dialog.find('#tab-enums-dialog-new-id').prop('disabled', true)\n .val(originalIdVal);\n idVal = originalIdVal;\n isIdEditable = false;\n } else {\n if (that.main.objects[id] && that.main.objects[id].common) {\n isIdEditable = !that.main.objects[id].common['object-non-deletable'] && !that.main.objects[id].common.dontDelete;\n }\n if (isIdEditable) {\n idVal = $dialog.find('#tab-enums-dialog-new-name').val();\n idVal = idVal.replace(FORBIDDEN_CHARS, '_').replace(/\\./g, '_').trim().toLowerCase();\n $dialog.find('#tab-enums-dialog-new-id').prop('disabled', false)\n .val(idVal);\n }\n }\n idChanged = false;\n $dialog.find('#tab-enums-dialog-new-preview').val((parentId || 'enum') + '.' + (idVal || '#'));\n });\n\n // workaround for materialize checkbox problem\n $dialog.find('input[type=\"checkbox\"]+span').off('click').on('click', function () {\n var $input = $(this).prev();\n if (!$input.prop('disabled')) {\n $input.prop('checked', !$input.prop('checked')).trigger('change');\n }\n });\n\n $dialog.modal().modal('open');\n }\n\n function switchEditMode(isEnabled) {\n that.editMode = isEnabled;\n var $editButton = that.$gridEnum.find('#tab-enums-list-edit');\n\n if (that.editMode) {\n $editButton.removeClass('blue').addClass('red');\n that.$gridEnum.addClass('tab-enums-edit');\n that._initObjectTree();\n showMessage(_('You can drag&drop the devices, channels and states to enums'));\n if (that.isTiles) {\n setupDroppableTiles();\n } else {\n setupDroppableTable();\n }\n } else {\n selectId('destroy');\n try {\n var _$items = that.$gridEnum.find('.collection-item');\n if (_$items.droppable('instance')) {\n _$items.droppable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n try {\n var $trs = that.$gridEnum.find('tbody>tr.treetable-enum');\n if ($trs.droppable('instance')) {\n $trs.droppable('destroy');\n }\n } catch (e) {\n console.error(e);\n }\n\n $editButton.removeClass('red').addClass('blue');\n that.$gridEnum.removeClass('tab-enums-edit');\n }\n }\n\n this._postInit = function () {\n if (typeof this.$gridList !== 'undefined') {\n if (!this.main.objects['enum.rooms']) {\n this.main.objects['enum.rooms'] = {\n \"_id\": \"enum.rooms\",\n \"common\": {\n \"icon\": \"home\",\n \"name\": {\n \"en\": \"Rooms\",\n \"de\": \"Räume\",\n \"ru\": \"Комнаты\",\n \"pt\": \"Quartos\",\n \"nl\": \"Kamers\",\n \"fr\": \"Pièces\",\n \"it\": \"Camere\",\n \"es\": \"Habitaciones\",\n \"pl\": \"Pokoje\"\n },\n \"desc\": {\n \"en\": \"List of the rooms\",\n \"de\": \"Liste der Räumen\",\n \"ru\": \"Список комнат\",\n \"pt\": \"Lista dos quartos\",\n \"nl\": \"Lijst met kamers\",\n \"fr\": \"Liste des chambres\",\n \"it\": \"Elenco delle stanze\",\n \"es\": \"Lista de las habitaciones\",\n \"pl\": \"Lista pokoi\"\n },\n \"members\": [],\n \"dontDelete\": true\n },\n \"type\": \"enum\",\n \"acl\": {\n \"owner\": \"system.user.admin\",\n \"ownerGroup\": \"system.group.administrator\",\n \"permissions\": 1911\n }\n };\n that.main.socket.emit('setObject', 'enum.rooms', this.main.objects['enum.rooms']);\n this.list.unshift('enum.rooms');\n }\n if (!this.main.objects['enum.functions']) {\n this.main.objects['enum.functions'] = {\n \"_id\": \"enum.functions\",\n \"common\": {\n \"icon\": \"lightbulb_outline\",\n \"name\": {\n \"en\": \"Functions\",\n \"de\": \"Funktionen\",\n \"ru\": \"функции\",\n \"pt\": \"Funções\",\n \"nl\": \"functies\",\n \"fr\": \"Les fonctions\",\n \"it\": \"funzioni\",\n \"es\": \"Funciones\",\n \"pl\": \"Funkcje\"\n },\n \"desc\": {\n \"en\": \"List of the functions\",\n \"de\": \"Liste der Funktionen\",\n \"ru\": \"Список функций\",\n \"pt\": \"Lista das funções\",\n \"nl\": \"Lijst met functies\",\n \"fr\": \"Liste des fonctions\",\n \"it\": \"Elenco delle funzioni\",\n \"es\": \"Lista de las funciones\",\n \"pl\": \"Lista funkcji\"\n },\n \"members\": [],\n \"dontDelete\": true\n },\n \"type\": \"enum\",\n \"acl\": {\n \"owner\": \"system.user.admin\",\n \"ownerGroup\": \"system.group.administrator\",\n \"permissions\": 1911\n }\n };\n this.list.unshift('enum.functions');\n that.main.socket.emit('setObject', 'enum.functions', this.main.objects['enum.functions']);\n }\n\n if (this.isTiles) {\n drawEnumsTiles();\n } else {\n drawEnumsTable();\n }\n if (this.editMode) {\n this._initObjectTree();\n } else {\n selectId('destroy');\n }\n }\n };\n\n this.init = function (update) {\n if (this.inited && !update) {\n return;\n }\n if (!this.main || !this.main.objectsLoaded) {\n setTimeout(function () {\n that.init(update);\n }, 250);\n return;\n }\n\n this._postInit();\n\n if (!this.inited) {\n this.inited = true;\n this.main.subscribeObjects('enum.*');\n }\n };\n\n this.destroy = function () {\n if (this.inited) {\n this.inited = false;\n // subscribe objects and states\n this.main.unsubscribeObjects('enum.*');\n }\n switchEditMode(false);\n this.$gridList.treeTable('destroy');\n };\n\n this.objectChange = function (id, obj, action) {\n //Update enums\n if (id.match(/^enum\\./)) {\n if (obj) {\n if (this.list.indexOf(id) === -1) this.list.push(id);\n } else {\n var j = this.list.indexOf(id);\n if (j !== -1) this.list.splice(j, 1);\n }\n\n if (this.updateTimers) clearTimeout(this.updateTimers);\n\n this.updateTimers = setTimeout(function () {\n that.updateTimers = null;\n that._postInit();\n }, 200);\n }\n\n if (this.$grid) selectId('object', id, obj, action);\n };\n}\n","function Events(main) {\r\n 'use strict';\r\n\r\n var that = this;\r\n this.main = main;\r\n this.$tab = $('#tab-events'); // body\r\n var isRemote = location.hostname === 'yunkong2.net' || location.hostname === 'yunkong2.pro';\r\n\r\n var list = {\r\n count: 0,\r\n start: 0,\r\n limit: 500 //const\r\n };\r\n var timeout = null;\r\n\r\n var pause = {\r\n list: [],\r\n mode: false,\r\n counter: 0,\r\n overflow: false,\r\n $counterSpan: null\r\n };\r\n\r\n var $header;\r\n var hdr;\r\n var $table;\r\n var $outer;\r\n var $pause;\r\n\r\n var columnResizeInit = {\r\n done: false,\r\n timer: null\r\n };\r\n\r\n this.prepare = function () {\r\n $outer = this.$tab.find('#event-outer');\r\n $table = this.$tab.find('#event-table');\r\n $pause = this.$tab.find('#event-pause');\r\n\r\n // install header\r\n $header = this.$tab.find('#events-table-tr');\r\n hdr = new IobListHeader($header, {list: $outer, colWidthOffset: 1, prefix: 'event-filter'});\r\n hdr.doFilter = filterEvents;\r\n\r\n hdr.add('combobox', 'type');\r\n hdr.add('edit', 'id', 'ID');\r\n //hdr.add('edit', 'val', 'Value');\r\n hdr.add('edit', 'val', 'value');\r\n hdr.add('combobox', 'ack', 'ack', [\r\n {val: '', name: 'all'},\r\n {val: 'true', name: 'ack'},\r\n {val: 'false', name: 'not ack'}\r\n ]);\r\n hdr.add('combobox', 'from', 'from');\r\n hdr.add('text', 'ts');\r\n hdr.add('text', 'lc');\r\n\r\n Object.defineProperty(hdr, 'getValues', {\r\n value: function () {\r\n hdr.ID.selectedVal = hdr.ID.selectedVal.toLocaleLowerCase();\r\n if (hdr.ack.selectedVal === 'true') hdr.ack.selectedVal = true;\r\n if (hdr.ack.selectedVal === 'false') hdr.ack.selectedVal = false;\r\n },\r\n enumerateble: false\r\n });\r\n\r\n $pause.on('click', function () {\r\n that.pause();\r\n });\r\n\r\n // bind \"clear events\" button\r\n var $eventClear = this.$tab.find('#event-clear');\r\n $eventClear\r\n .off('click').on('click', function () {\r\n list.count = 0;\r\n list.start = 0;\r\n that.$tab.find('#event-table').html('');\r\n });\r\n };\r\n\r\n this.init = function () {\r\n if (isRemote) {\r\n that.$tab.find('#grid-events').html(_('You can\\'t see events via cloud') + '
            cloud_off').addClass('no-cloud-events');\r\n return;\r\n }\r\n if (!hdr) return;\r\n\r\n if (this.inited) {\r\n return;\r\n }\r\n \r\n installColResize();\r\n\r\n this.inited = true;\r\n this.main.subscribeObjects('*');\r\n this.main.subscribeStates('*');\r\n };\r\n\r\n this.destroy = function () {\r\n if (this.inited) {\r\n this.inited = false;\r\n this.main.unsubscribeObjects('*');\r\n this.main.unsubscribeStates('*');\r\n }\r\n };\r\n\r\n var widthSet = false;\r\n\r\n function installColResize() {\r\n if (!$.fn.colResizable) return;\r\n if ($outer.is(':visible')) {\r\n $outer.colResizable({\r\n liveDrag: true,\r\n\r\n partialRefresh: true,\r\n marginLeft: 5,\r\n postbackSafe:true,\r\n\r\n onResize: function (event) {\r\n return hdr.syncHeader();\r\n // // read width of data.$tree and set the same width for header\r\n // var thDest = $('#log-outer-header >thead>tr>th');\t//if table headers are specified in its semantically correct tag, are obtained\r\n // var thSrc = $outer.find('>tbody>tr:first>td');\r\n // for (var i = 1; i < thSrc.length; i++) {\r\n // $(thDest[i]).attr('width', $(thSrc[i]).width());\r\n // }\r\n }\r\n });\r\n hdr.syncHeader();\r\n } else {\r\n setTimeout(function () {\r\n installColResize();\r\n }, 200)\r\n }\r\n }\r\n\r\n function updateResizersHeight() {\r\n columnResizeInit.timer = null;\r\n $(window).trigger('resize.JColResizer');\r\n }\r\n\r\n // ----------------------------- Show events ------------------------------------------------\r\n this.add = function (id, stateOrObj, isMessage, isState) {\r\n if (isRemote) return;\r\n\r\n var type = isState ? 'stateChange' : (isMessage ? 'message' : 'objChange');\r\n var value;\r\n var ack;\r\n var from = '';\r\n var ts;\r\n var lc;\r\n if (hdr) {\r\n if (hdr.getValues) {\r\n hdr.getValues();\r\n }\r\n\r\n hdr.type.checkAddOption(type);\r\n }\r\n if (!columnResizeInit.done) {\r\n // if the height not 100%, the column resizer is too short. Wait till the table will be really full and reinit resizer.\r\n // update resizer once and remeber it if the table has full height\r\n if (!columnResizeInit.timer) {\r\n columnResizeInit.timer = setTimeout(updateResizersHeight, 1000);\r\n }\r\n\r\n if (list.count > 20) {\r\n columnResizeInit.done = true;\r\n }\r\n }\r\n\r\n if (!pause.mode) {\r\n if (list.count >= that.limit) {\r\n list.start++;\r\n var e = document.getElementById('event_' + list.start);\r\n if (e) e.outerHTML = '';\r\n } else {\r\n list.count++;\r\n }\r\n }\r\n\r\n // if Object\r\n if (!isMessage && !isState) {\r\n if (!stateOrObj) {\r\n value = 'deleted';\r\n ts = main.formatDate(new Date());\r\n } else {\r\n value = JSON.stringify(stateOrObj, '\\x0A', 2);\r\n if (value !== undefined && value.length > 30) {\r\n value = '' + value.substring(0, 30) + '...';\r\n }\r\n ts = main.formatDate(stateOrObj.ts);\r\n }\r\n } else\r\n // if state\r\n if (isState) {\r\n if (!stateOrObj) {\r\n value = 'deleted';\r\n ts = main.formatDate(new Date());\r\n } else {\r\n stateOrObj.from = stateOrObj.from || '';\r\n stateOrObj.from = stateOrObj.from.replace('system.adapter.', '');\r\n stateOrObj.from = stateOrObj.from.replace('system.', '');\r\n\r\n hdr && hdr.from.checkAddOption(stateOrObj.from, function (o) {\r\n return {val: o.replace(/\\./g, '-'), name: o};\r\n });\r\n\r\n from = stateOrObj.from;\r\n\r\n value = JSON.stringify(stateOrObj.val);\r\n if (value !== undefined && value.length > 30) {\r\n value = '
            ' + value.substring(0, 30) + '...
            ';\r\n }\r\n ack = stateOrObj.ack ? 'true' : 'false';\r\n ts = main.formatDate(stateOrObj.ts);\r\n lc = main.formatDate(stateOrObj.lc);\r\n }\r\n } else\r\n // if message\r\n if (isMessage) {\r\n // todo\r\n }\r\n\r\n var visible = true;\r\n if (hdr) {\r\n if (hdr.type.selectedVal && hdr.type.selectedVal !== type) {\r\n visible = false;\r\n } else if (hdr.ID.selectedVal && id.toLocaleLowerCase().indexOf(hdr.ID.selectedVal) === -1) {\r\n visible = false;\r\n } else if (hdr.value.selectedVal !== '' && value !== null && value !== undefined && value.indexOf(hdr.value.selectedVal) === -1) {\r\n visible = false;\r\n } else if (hdr.ack.selectedVal !== '' && hdr.ack.selectedVal !== ack) {\r\n visible = false;\r\n } else if (hdr.from.selectedVal && hdr.from.selectedVal !== from) {\r\n visible = false;\r\n }\r\n }\r\n\r\n\r\n var text = '';\r\n text += '' + type + '';\r\n text += '' + id + '';\r\n if (isNaN(value)) {\r\n text += '' + (value || '') + '';\r\n } else {\r\n text += '' + (value || '') + '';\r\n }\r\n text += '' + (ack || '') + '';\r\n text += '' + (from || '') + '';\r\n text += '' + (ts || '') + '';\r\n text += '' + (lc || '') + '';\r\n text += '';\r\n\r\n if (pause.mode) {\r\n pause.list.push(text);\r\n pause.counter++;\r\n\r\n if (pause.counter > list.limit) {\r\n if (!pause.overflow) {\r\n $pause.addClass('red lighten3')\r\n .attr('title', _('Message buffer overflow. Losing oldest'));\r\n pause.overflow = true;\r\n }\r\n pause.list.shift();\r\n }\r\n pause.$counterSpan.html(pause.counter);\r\n } else if ($table) {\r\n $table.prepend(text);\r\n if (!widthSet && (window.location.hash === '#tab-events' || window.location.hash === '#events')) {\r\n hdr && hdr.syncHeader();\r\n widthSet = true;\r\n }\r\n }\r\n };\r\n\r\n /*this.onSelected = function () {\r\n hdr && hdr.syncHeader();\r\n };*/\r\n\r\n function filterEvents() {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n if (hdr.getValues) {\r\n hdr.getValues();\r\n }\r\n\r\n $table && $table.find('.event-line').each(function (index) {\r\n var isShow = true;\r\n var $this = $(this);\r\n if (hdr.type.selectedVal && !$this.hasClass('event-type-' + hdr.type.selectedVal)) {\r\n isShow = false;\r\n } else\r\n if (hdr.from.selectedVal && !$this.hasClass('event-from-' + hdr.from.selectedVal)) {\r\n isShow = false;\r\n } else\r\n if (hdr.ack.selectedVal !== '' && !$this.hasClass('event-ack-' + hdr.ack.selectedVal)) {\r\n isShow = false;\r\n } else\r\n if (hdr.ID.selectedVal && $(this).find('td.event-column-id').text().toLocaleLowerCase().indexOf(hdr.ID.selectedVal) === -1) {\r\n isShow = false;\r\n } else\r\n if (hdr.value.selectedVal !== '' && $(this).find('td.event-column-value').text().indexOf(hdr.value.selectedVal) === -1) {\r\n isShow = false;\r\n }\r\n\r\n if (isShow) {\r\n $this.show();\r\n } else {\r\n $this.hide();\r\n }\r\n });\r\n }\r\n\r\n this.pause = function () {\r\n if (!pause.mode) {\r\n $pause.addClass('yellow btn-pause-button-active');\r\n\r\n pause.$counterSpan = $pause;\r\n pause.$counterSpan.html('0');\r\n pause.counter = 0;\r\n pause.mode = true;\r\n } else {\r\n pause.mode = false;\r\n for (var i = 0; i < pause.list.length; i++) {\r\n if (list.count >= 500) {\r\n list.start++;\r\n var e = document.getElementById('event_' + list.start);\r\n if (e) e.outerHTML = '';\r\n } else {\r\n list.count++;\r\n }\r\n $table.prepend(pause.list[i]);\r\n }\r\n pause.overflow = false;\r\n pause.list = [];\r\n pause.counter = 0;\r\n\r\n $pause\r\n .removeClass('yellow btn-pause-button-active')\r\n .html('pause');\r\n }\r\n };\r\n}\r\n\r\n\r\n","function fileHandler(event) {\n event.preventDefault();\n var file = event.dataTransfer ? event.dataTransfer.files[0] : event.target.files[0];\n\n var $dz = $(this).find('.drop-zone');\n var callback = $(this).data('drop-zone-cb');\n var limit = $(this).data('limit');\n if (file.size > (limit || 10000)) {\n callback && callback(_('File is too big!'));\n $dz.hide();\n return false;\n }\n $dz.show();\n var reader = new FileReader();\n reader.onload = function (evt) {\n $dz.hide();\n callback && callback(null, evt.target.result);\n };\n reader.readAsDataURL(file);\n}\n\n/**\n * Install file upload on some div\n * @param {object} $dropZone is jquery object of the div (DOM element) where the drop zone must be installed\n * @param {number} limit is maximal size of file in bytes\n * @param {function} callback is callback in form function (err, fileDataBase64) {}\n*/\nfunction installFileUpload($dropZone, limit, callback) {\n if (typeof window.FileReader !== 'undefined' && !$dropZone.data('installed')) {\n $dropZone.data('installed', true);\n $dropZone.prepend('
            ');\n var $dz = $dropZone.find('.drop-zone');\n $dropZone[0].ondragover = function() {\n $dz.off('click');\n $dz.show();\n return false;\n };\n\n $dz[0].ondragleave = function() {\n $dz.hide();\n return false;\n };\n\n $dz[0].ondrop = fileHandler.bind($dropZone[0]);\n }\n $dropZone.data('drop-zone-cb', callback);\n $dropZone.data('limit', limit);\n $dropZone.find('.drop-file').on('change', fileHandler.bind($dropZone[0]));\n}","function Hosts(main) {\n 'use strict';\n\n var that = this;\n this.main = main;\n this.list = [];\n this.$tab = $('#tab-hosts');\n this.$grid = this.$tab.find('#hosts');\n this.$table = this.$tab.find('#grid-hosts');\n this.inited = false;\n this.isTiles = true;\n this.words = {};\n\n this.prepare = function () {\n this.isTiles = (this.main.config.hostsIsTiles !== undefined && this.main.config.hostsIsTiles !== null) ? this.main.config.hostsIsTiles : true;\n\n // fix for IE\n if (this.main.browser === 'ie' && this.main.browserVersion <= 10) {\n this.isTiles = false;\n this.$tab.find('.btn-switch-tiles').hide();\n }\n\n this.$tab.find('.btn-reload')\n .attr('title', _('Update'))\n .on('click', function () {\n that.init(true);\n });\n\n this.$tab.find('.btn-switch-tiles').off('click').on('click', function () {\n that.isTiles = !that.isTiles;\n\n if (that.isTiles) {\n $(this).find('i').text('view_list');\n } else {\n $(this).find('i').text('view_module');\n }\n\n that.main.saveConfig('hostsIsTiles', that.isTiles);\n\n setTimeout(function () {\n that._postInit();\n }, 50);\n });\n\n if (this.isTiles) {\n this.$tab.find('.btn-switch-tiles').find('i').text('view_list');\n } else {\n this.$tab.find('.btn-switch-tiles').find('i').text('view_module');\n }\n\n this.$tab.find('.filter-clear').on('click', function () {\n that.$tab.find('.filter-input').val('').trigger('change');\n });\n\n var $hostsFilter = this.$tab.find('.filter-input');\n $hostsFilter.on('change', function () {\n var filter = $(this).val();\n if (filter) {\n $(this).addClass('input-not-empty');\n that.$tab.find('.filter-clear').show();\n } else {\n that.$tab.find('.filter-clear').hide();\n $(this).removeClass('input-not-empty');\n }\n\n that.main.saveConfig('hostsFilter', filter);\n applyFilter(filter);\n }).on('keyup', function () {\n if (that.filterTimeout) clearTimeout(that.filterTimeout);\n that.filterTimeout = setTimeout(function () {\n that.$tab.find('.filter-input').trigger('change');\n }, 300);\n });\n\n if (this.main.config.hostsFilter && this.main.config.hostsFilter[0] !== '{') {\n $hostsFilter.val(that.main.config.hostsFilter).addClass('input-not-empty');\n this.$tab.find('.filter-clear').show();\n } else {\n this.$tab.find('.filter-clear').hide();\n }\n\n // cache translations\n this.words['Title'] = _('Title');\n this.words['OS'] = _('OS');\n this.words['Available'] = _('Available');\n this.words['Installed'] = _('Installed');\n this.words['Events'] = _('Events');\n this.words['Title'] = _('Title');\n that.words['Type'] = _('Type');\n };\n\n // ----------------------------- Hosts show and Edit ------------------------------------------------\n this.initButtons = function (id) {\n var selector = id ? '[data-host-id=\"' + id + '\"]' : '';\n\n this.$tab.find('.host-update-submit' + selector).off('click').on('click', function () {\n that.main.cmdExec($(this).attr('data-host-name'), 'upgrade self', function (exitCode) {\n if (!exitCode) that.init(true);\n });\n });\n\n this.$tab.find('.host-restart-submit' + selector).off('click').on('click', function () {\n that.main.waitForRestart = true;\n that.main.cmdExec($(this).attr('data-host-name'), '_restart');\n });\n this.$tab.find('.host-delete' + selector).off('click').on('click', function () {\n that.main.cmdExec(that.main.currentHost, 'host remove ' + $(this).attr('data-host-name'));\n });\n\n this.$tab.find('.host-edit' + selector).off('click').on('click', function () {\n editHost($(this).attr('data-host-id'));\n });\n\n this.$tab.find('.host-update-hint-submit' + selector).off('click').on('click', function () {\n var infoTimeout = setTimeout(function () {\n showUpdateInfo();\n infoTimeout = null;\n }, 1000);\n\n that.main.socket.emit('sendToHost', $(this).attr('data-host-name'), 'getLocationOnDisk', null, function (data) {\n if (infoTimeout) clearTimeout(infoTimeout);\n infoTimeout = null;\n showUpdateInfo(data);\n });\n });\n\n };\n\n function showUpdateInfo(data) {\n var $dialog = $('#dialog-host-update');\n if (data) {\n var path = data.path;\n path = path.replace(/\\\\/g, '/');\n var parts = path.split('/');\n parts.pop(); // js-controller\n parts.pop(); // node_modules\n\n if (data.platform === 'linux' || data.platform === 'darwin' || data.platform === 'freebsd' || data.platform === 'lin') {\n // linux\n $dialog.find('#dialog-host-update-instructions').val('cd ' + parts.join('/') + '\\nsudo yunkong2 stop\\nsudo yunkong2 update\\nsudo yunkong2 upgrade self\\nsudo yunkong2 start')\n } else {\n // windows\n $dialog.find('#dialog-host-update-instructions').val('cd ' + parts.join('\\\\') + '\\nyunkong2 stop\\nyunkong2 update\\nyunkong2 upgrade self\\nyunkong2 start')\n }\n } else {\n $dialog.find('#dialog-host-update-instructions').val('cd /opt/yunkong2\\nsudo yunkong2 stop\\nsudo yunkong2 update\\nsudo yunkong2 upgrade self\\nsudo yunkong2 start')\n }\n\n if (!$dialog.data('inited')) {\n $dialog.data('inited', true);\n $dialog.modal();\n }\n $dialog.modal('open');\n }\n\n function applyFilter(filter) {\n filter = (filter || '').toLowerCase().trim();\n\n if (!filter) {\n that.$tab.find('.hosts-host').show();\n that.$tab.find('.hosts-host-filtered-out').hide();\n } else {\n var someVisible = false;\n that.$tab.find('.hosts-host').each(function () {\n var text = $(this).data('host-filter');\n if (text.toLowerCase().indexOf(filter) !== -1) {\n $(this).show();\n someVisible = true;\n } else {\n $(this).hide();\n }\n });\n if (!someVisible) {\n that.$tab.find('.hosts-host-filtered-out').show();\n } else {\n that.$tab.find('.hosts-host-filtered-out').hide();\n }\n }\n }\n\n function showOneHostRow(index) {\n var obj = that.main.objects[that.list[index].id];\n var alive = that.main.states[obj._id + '.alive'] && that.main.states[obj._id + '.alive'].val && that.main.states[obj._id + '.alive'].val !== 'null';\n obj.common = obj.common || {};\n obj.native = obj.native || {};\n\n var text = '';\n //LED\n text += '
            ';\n // icon\n text += '' + that.main.getHostIcon(obj) + '';\n // name\n text += '' + obj.common.hostname + '';\n // type\n text += '' + obj.common.type + '';\n var title = obj.common.titleLang || obj.common.title;\n if (typeof title === 'object') {\n title = title[systemLang] || title.en;\n }\n // description\n text += '' + title + '';\n // platform\n // text += '' + obj.common.platform + ''; // actually only one platform\n // OS\n text += '' + (obj.native.os ? obj.native.os.platform : _('unknown')) + '';\n // Available\n text += '' +\n '' +\n '' +\n '';\n\n // installed\n text += '' + obj.common.installedVersion + '';\n\n // event rates\n if (that.main.states[obj._id + '.inputCount']) {\n text += '⇥' + that.main.states[obj._id + '.inputCount'].val + ' / ↦' + that.main.states[obj._id + '.outputCount'].val + '';\n } else {\n text += ' / ';\n }\n\n // restart button\n text += '';\n\n text += '';\n\n return text;\n }\n\n function showOneHostTile(index) {\n var obj = that.main.objects[that.list[index].id];\n var alive = that.main.states[obj._id + '.alive'] && that.main.states[obj._id + '.alive'].val && that.main.states[obj._id + '.alive'].val !== 'null';\n obj.common = obj.common || {};\n obj.native = obj.native || {};\n\n var color;\n if (obj.common.color) {\n color = that.main.invertColor(obj.common.color);\n }\n\n var text = '
            '+\n '
            ' +\n '
            '+\n ' ' + that.main.getHostIcon(obj, ' ') +\n '
            ' +\n '
            '+\n '
            ' +\n ' ' + obj.common.hostname + '' +\n '
              '+\n '
            • ' + that.words['Type'] + ': ' + obj.common.type + '
            • ' +\n '
            • ' + that.words['Title'] + ': ' + obj.common.title + '
            • ' +\n '
            • ' + that.words['OS'] + ': ' + (obj.native.os ? obj.native.os.platform : _('unknown')) + '
            • ' +\n '
            • ' + that.words['Available'] + ':
            • ' +\n '
            • ' + that.words['Installed'] + ': ' + obj.common.installedVersion + '
            • ';\n\n if (that.main.states[obj._id + '.inputCount']) {\n text += '
            • ' + that.words['Events'] + ': ⇥' + that.main.states[obj._id + '.inputCount'].val + ' / ↦' + that.main.states[obj._id + '.outputCount'].val + '
            • ';\n } else {\n text += '
            • ' + that.words['Events'] + ': /
            • ';\n }\n\n text += '
            '+\n '
            '+\n '
            '+\n ' edit' +\n ' autorenew';\n if (obj.common.hostname !== that.main.currentHost) {\n text += ' delete';\n }\n text += ' refresh' +\n ' refresh' +\n '
            '+\n '
            '+\n '
            ';\n\n return text;\n }\n\n function editHost(id) {\n var $dialog = $('#tab-host-dialog-edit');\n\n var titleVal = '';\n var iconVal = '';\n var colorVal = '';\n\n installFileUpload($dialog, 50000, function (err, text) {\n if (err) {\n that.main.showToast($dialog, err);\n } else {\n if (!text.match(/^data:image\\//)) {\n that.main.showToast($dialog, _('Unsupported image format'));\n return;\n }\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n iconVal = text;\n\n $dialog.find('.tab-host-dialog-edit-icon').show().html('');\n $dialog.find('.tab-host-dialog-edit-icon img').attr('src', text);\n $dialog.find('.tab-host-dialog-edit-icon-clear').show();\n }\n });\n\n if (that.main.objects[id] && that.main.objects[id].common) {\n titleVal = that.main.objects[id].common.title;\n if (typeof titleVal === 'object') {\n titleVal = titleVal[systemLang] || titleVal.en;\n }\n iconVal = that.main.objects[id].common.icon;\n colorVal = that.main.objects[id].common.color;\n }\n\n $dialog.find('#tab-host-dialog-edit-title')\n .val(titleVal)\n .off('change')\n .on('change', function () {\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n }).off('keyup').on('keyup', function () {\n $(this).trigger('change');\n });\n\n $dialog.find('.tab-host-dialog-ok')\n .addClass('disabled')\n .off('click')\n .on('click', function () {\n var obj = JSON.parse(JSON.stringify(that.main.objects[id]));\n obj.common.title = $dialog.find('#tab-host-dialog-edit-title').val();\n obj.common.icon = iconVal;\n obj.common.color = colorVal;\n if (JSON.stringify(obj) !== JSON.stringify(that.main.objects[id])) {\n that.main.socket.emit('setObject', obj._id, obj, function (err) {\n that.main.showToast($dialog, _('Updated'));\n });\n } else {\n that.main.showToast($dialog, _('Nothing changed'));\n }\n });\n\n if (iconVal) {\n $dialog.find('.tab-host-dialog-edit-icon').show().html(that.main.getIcon(id));\n $dialog.find('.tab-host-dialog-edit-icon-clear').show();\n } else {\n $dialog.find('.tab-host-dialog-edit-icon').hide();\n $dialog.find('.tab-host-dialog-edit-icon-clear').hide();\n }\n\n colorVal = colorVal || false;\n\n if (colorVal) {\n $dialog.find('.tab-host-dialog-edit-color').val(colorVal);\n } else {\n $dialog.find('.tab-host-dialog-edit-color').val();\n }\n\n M.updateTextFields('#tab-host-dialog-edit');\n that.main.showToast($dialog, _('Drop the icons here'));\n\n $dialog.find('.tab-host-dialog-edit-upload').off('click').on('click', function () {\n $dialog.find('.drop-file').trigger('click');\n });\n\n $dialog.find('.tab-host-dialog-edit-icon-clear').off('click').on('click', function () {\n if (iconVal) {\n iconVal = '';\n $dialog.find('.tab-host-dialog-edit-icon').hide();\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n $dialog.find('.tab-host-dialog-edit-icon-clear').hide();\n }\n });\n $dialog.find('.tab-host-dialog-edit-color-clear').off('click').on('click', function () {\n if (colorVal) {\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n $dialog.find('.tab-host-dialog-edit-color-clear').hide();\n $dialog.find('.tab-host-dialog-edit-colorpicker').colorpicker({\n component: '.btn',\n color: colorVal,\n container: $dialog.find('.tab-host-dialog-edit-colorpicker')\n }).colorpicker('setValue', '');\n colorVal = '';\n }\n });\n var time = Date.now();\n try {\n $dialog.find('.tab-host-dialog-edit-colorpicker').colorpicker('destroy');\n } catch (e) {\n\n }\n $dialog.find('.tab-host-dialog-edit-colorpicker').colorpicker({\n component: '.btn',\n color: colorVal,\n container: $dialog.find('.tab-host-dialog-edit-colorpicker')\n }).colorpicker('setValue', colorVal).on('showPicker.colorpicker', function (/* event */) {\n //$dialog.find('.tab-host-dialog-edit-colorpicker')[0].scrollIntoView(false);\n var $modal = $dialog.find('.modal-content');\n $modal[0].scrollTop = $modal[0].scrollHeight;\n }).on('changeColor.colorpicker', function (event){\n if (Date.now() - time > 100) {\n colorVal = event.color.toHex();\n $dialog.find('.tab-host-dialog-ok').removeClass('disabled');\n $dialog.find('.tab-host-dialog-edit-icon-clear').show();\n }\n });\n if (colorVal) {\n $dialog.find('.tab-host-dialog-edit-color-clear').show();\n } else {\n $dialog.find('.tab-host-dialog-edit-color-clear').hide();\n }\n\n $dialog.modal().modal('open');\n }\n\n function showHostsTile() {\n var text = '';\n for (var i = 0; i < that.list.length; i++) {\n text += showOneHostTile(i);\n }\n that.$table.html('');\n that.$tab.find('.hosts-table').hide();\n that.$grid.html(text).show();\n that.$grid.append('
            ' + _('Filtered out') + '
            ');\n }\n\n function showHostsTable() {\n var text = '';\n for (var i = 0; i < that.list.length; i++) {\n text += showOneHostRow(i);\n }\n that.$grid.html('').hide();\n that.$table.html(text);\n that.$tab.find('.hosts-table').show();\n that.$table.append('' + _('Filtered out') + '');\n }\n\n this.updateCounter = function (counter) {\n if (counter === undefined) {\n this.main.tabs.adapters.getAdaptersInfo(this.main.currentHost, false, false, function (repository, installedList) {\n var hostsToUpdate = 0;\n if (!installedList || !installedList.hosts) return;\n\n for (var id in installedList.hosts) {\n if (!installedList.hosts.hasOwnProperty(id)) continue;\n var obj = that.main.objects['system.host.' + id];\n if (!obj || !obj.common) continue;\n var installedVersion = obj.common.installedVersion;\n var availableVersion = obj.common ? (repository && repository[obj.common.type] ? repository[obj.common.type].version : '') : '';\n\n if (installedVersion && availableVersion && !that.main.upToDate(availableVersion, installedVersion)) {\n id = 'system.host.' + id.trim().replace(FORBIDDEN_CHARS, '_').replace(/\\./g, '_');\n if (that.main.states[id + '.alive'] && that.main.states[id + '.alive'].val && that.main.states[id + '.alive'].val !== 'null') {\n hostsToUpdate++;\n }\n }\n }\n\n that.updateCounter(hostsToUpdate);\n });\n } else if (counter) {\n var $updates = $('#updates-for-hosts');\n if ($updates.length) {\n $updates.text(counter);\n } else {\n $('' + counter + '').appendTo('.admin-sidemenu-items[data-tab=\"tab-hosts\"] a');\n }\n } else {\n $('#updates-for-hosts').remove();\n }\n };\n\n this._postInit = function () {\n if (typeof that.$grid !== 'undefined') {\n if (this.isTiles) {\n showHostsTile();\n } else {\n showHostsTable()\n }\n applyFilter(this.$tab.find('.filter-input').val());\n\n var timer = setTimeout(function () {\n console.warn('Timeout for repository');\n timer = null;\n that.initButtons();\n }, 2000);\n\n var host = that.main.currentHost;\n if (!host) {\n // find alive host\n for (var i = 0; i < that.list.length; i++) {\n if (that.main.states[that.list[i].id + '.alive'] && that.main.states[that.list[i].id + '.alive'].val) {\n host = that.list[i].id;\n break;\n }\n }\n }\n\n that.main.tabs.adapters.getAdaptersInfo(host, true, false, function (repository, installedList) {\n if (!installedList || !installedList.hosts) return;\n\n for (var id in installedList.hosts) {\n if (!installedList.hosts.hasOwnProperty(id)) continue;\n var obj = that.main.objects['system.host.' + id];\n var installed = installedList.hosts[id].version;\n if (installed !== installedList.hosts[id].runningVersion) installed += '(' + _('Running: ') + installedList.hosts[id].runningVersion + ')';\n if (!installed && obj.common && obj.common.installedVersion) installed = obj.common.installedVersion;\n\n id = 'system.host.' + id.trim().replace(FORBIDDEN_CHARS, '_').replace(/\\./g, '_');\n that.$tab.find('.hosts-version-installed[data-host-id=\"' + id + '\"]').html(installed);\n }\n\n that.$tab.find('.hosts-host').each(function () {\n var id = $(this).data('host-id');\n var obj = that.main.objects[id];\n var installedVersion = obj.common.installedVersion;\n var availableVersion = obj.common ? (repository && repository[obj.common.type] ? repository[obj.common.type].version : '') : '';\n if (installedVersion && availableVersion) {\n if (!that.main.upToDate(availableVersion, installedVersion)) {\n // show button\n if (that.main.states[id + '.alive'] && that.main.states[id + '.alive'].val && that.main.states[id + '.alive'].val !== 'null') {\n $(this).find('.host-update-submit').show();\n $(this).find('.host-update-hint-submit').show();\n $(this).find('.hosts-version-installed').addClass('updateReady');\n $(this).find('.hosts-version-available').addClass('hosts-version-available-updatable');\n }\n }\n }\n if (availableVersion) {\n $(this).find('.hosts-version-available').html(availableVersion);\n }\n });\n\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n that.initButtons();\n });\n }\n };\n\n this.init = function (update) {\n if (this.inited && !update) {\n return;\n }\n\n this.getHosts(function () {\n that._postInit();\n });\n if (!this.inited) {\n this.inited = true;\n this.main.subscribeObjects('system.host.*');\n this.main.subscribeStates('system.host.*');\n }\n };\n\n this.destroy = function () {\n if (this.inited) {\n this.inited = false;\n this.main.unsubscribeObjects('system.host.*');\n this.main.unsubscribeStates('system.host.*');\n }\n };\n\n this.addHost = function (obj) {\n var addr = null;\n // Find first non internal IP and use it as identifier\n if (obj.native.hardware && obj.native.hardware.networkInterfaces) {\n for (var eth in obj.native.hardware.networkInterfaces) {\n if (!obj.native.hardware.networkInterfaces.hasOwnProperty(eth)) continue;\n for (var num = 0; num < obj.native.hardware.networkInterfaces[eth].length; num++) {\n if (!obj.native.hardware.networkInterfaces[eth][num].internal) {\n addr = obj.native.hardware.networkInterfaces[eth][num].address;\n break;\n }\n }\n if (addr) break;\n }\n }\n if (addr) {\n this.list.push({name: obj.common.hostname, address: addr, id: obj._id});\n } else {\n this.list.push({name: obj.common.hostname, address: '127.0.0.1', id: obj._id});\n }\n };\n\n this.getHosts = function (callback) {\n this.main.socket.emit('getForeignObjects', 'system.host.*', 'state', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.objects[id] = res[id];\n }\n that.main.socket.emit('getForeignStates', 'system.host.*', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.states[id] = res[id];\n }\n that.main.socket.emit('getForeignObjects', 'system.host.*', 'host', function (err, res) {\n that.list = [];\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n var obj = res[id];\n\n that.main.objects[id] = obj;\n\n if (obj.type === 'host') {\n that.addHost(obj);\n }\n }\n main.initHostsList();\n if (callback) callback();\n });\n });\n });\n };\n\n this.objectChange = function (id, obj, action) {\n // Update hosts\n if (id.match(/^system\\.host\\.[-\\w]+$/)) {\n var found = false;\n var i;\n for (i = 0; i < this.list.length; i++) {\n if (this.list[i].id === id) {\n found = true;\n break;\n }\n }\n\n if (obj) {\n if (!found) this.list.push({id: id, address: obj.common.address ? obj.common.address[0] : '', name: obj.common.name});\n } else {\n if (found) this.list.splice(i, 1);\n }\n \n if (this.updateTimer) clearTimeout(this.updateTimer);\n\n this.updateTimer = setTimeout(function () {\n that.updateTimer = null;\n that._postInit();\n }, 200);\n }\n };\n\n this.stateChange = function (id, state) {\n if (id.match(/^system\\.host\\..+\\.alive$/)) {\n id = id.substring(0, id.length - 6);\n if (state && state.val) {\n this.$tab.find('.hosts-led[data-host-id=\"' + id + '\"]').removeClass('led-red').addClass('led-green');\n } else {\n this.$tab.find('.hosts-led[data-host-id=\"' + id + '\"]').removeClass('led-green').addClass('led-red');\n this.$tab.find('.host-update-submit[data-host-id=\"' + id + '\"]').hide();\n this.$tab.find('.host-update-hint-submit[data-host-id=\"' + id + '\"]').hide();\n this.$tab.find('.host-restart-submit[data-host-id=\"' + id + '\"]').hide();\n this.$tab.find('.hosts-version-available[data-host-id=\"' + id + '\"]').removeClass('hosts-version-available-updatable');\n }\n } else if (id.match(/^system\\.host\\..+\\.outputCount$/)) {\n id = id.substring(0, id.length - 12);\n\n this.$tab.find('.host-out[data-host-id=\"' + id + '\"]').html('↦' + state.val + '');\n } else if (id.match(/^system\\.host\\..+\\.inputCount$/)) {\n id = id.substring(0, id.length - 11);\n\n this.$tab.find('.host-in[data-host-id=\"' + id + '\"]').html('↦' + state.val + '');\n }\n };\n}\n\n","function Instances(main) {\n 'use strict';\n\n var that = this;\n\n this.$tab = $('#tab-instances');\n this.$grid = $('#grid-instances');\n this.$gridHead = $('#grid-instances-head');\n\n this.inited = false;\n this.main = main;\n this.list = [];\n this.hostsText = null;\n this.filterHost = false;\n this.memState = 'memAvailable';\n\n if (!window.tdp) {\n window.tdp = function (x, nachkomma) {\n return isNaN(x) ? '' : x.toFixed(nachkomma || 0).replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, \".\");\n }\n }\n\n function getLinkVar(_var, obj, attr, link, instance) {\n if (attr === 'protocol') attr = 'secure';\n\n if (_var === 'ip') {\n link = link.replace('%' + _var + '%', location.hostname);\n } else\n if (_var === 'instance') {\n link = link.replace('%' + _var + '%', instance);\n } else {\n if (obj) {\n if (attr.match(/^native_/)) attr = attr.substring(7);\n\n var val = obj.native[attr];\n if (_var === 'bind' && (!val || val === '0.0.0.0')) val = location.hostname;\n\n if (attr === 'secure') {\n link = link.replace('%' + _var + '%', val ? 'https' : 'http');\n } else {\n if (link.indexOf('%' + _var + '%') === -1) {\n link = link.replace('%native_' + _var + '%', val);\n } else {\n link = link.replace('%' + _var + '%', val);\n }\n }\n } else {\n if (attr === 'secure') {\n link = link.replace('%' + _var + '%', 'http');\n } else {\n if (link.indexOf('%' + _var + '%') === -1) {\n link = link.replace('%native_' + _var + '%', '');\n } else {\n link = link.replace('%' + _var + '%', '');\n }\n }\n }\n }\n return link;\n }\n\n function resolveLink(link, adapter, instance) {\n var vars = link.match(/%(\\w+)%/g);\n var _var;\n var v;\n var parts;\n if (vars) {\n // first replace simple patterns\n for (v = vars.length - 1; v >= 0; v--) {\n _var = vars[v];\n _var = _var.replace(/%/g, '');\n\n parts = _var.split('_');\n // like \"port\"\n if (_var.match(/^native_/)) {\n link = getLinkVar(_var, that.main.objects['system.adapter.' + adapter + '.' + instance], _var, link, instance);\n vars.splice(v, 1);\n } else\n if (parts.length === 1) {\n link = getLinkVar(_var, that.main.objects['system.adapter.' + adapter + '.' + instance], parts[0], link, instance);\n vars.splice(v, 1);\n } else\n // like \"web.0_port\"\n if (parts[0].match(/\\.[0-9]+$/)) {\n link = getLinkVar(_var, that.main.objects['system.adapter.' + parts[0]], parts[1], link, instance);\n vars.splice(v, 1);\n }\n }\n var links = {};\n var instances;\n var adptr = parts[0];\n // process web_port\n for (v = 0; v < vars.length; v++) {\n _var = vars[v];\n _var = _var.replace(/%/g, '');\n if (_var.match(/^native_/)) _var = _var.substring(7);\n\n parts = _var.split('_');\n if (!instances) {\n instances = [];\n for (var inst = 0; inst < 10; inst++) {\n if (that.main.objects['system.adapter.' + adptr + '.' + inst]) instances.push(inst);\n }\n }\n\n for (var i = 0; i < instances.length; i++) {\n links[adptr + '.' + i] = {\n instance: adptr + '.' + i,\n link: getLinkVar(_var, that.main.objects['system.adapter.' + adptr + '.' + i], parts[1], links[adptr + '.' + i] ? links[adptr + '.' + i].link : link, i)\n };\n }\n }\n\n var result;\n if (instances) {\n result = {};\n var count = 0;\n var firtsLink = '';\n for (var d in links) {\n if (links.hasOwnProperty(d)) {\n result[links[d].instance] = links[d].link;\n if (!firtsLink) firtsLink = links[d].link;\n count++;\n }\n }\n if (count < 2) {\n link = firtsLink;\n result = null;\n }\n }\n }\n return result || link;\n }\n\n this.replaceInLink = function (link, adapter, instance) {\n if (typeof link === 'object') {\n var links = JSON.parse(JSON.stringify(link));\n var first;\n for (var v in links) {\n if (links.hasOwnProperty(v)) {\n links[v] = resolveLink(links[v], adapter, instance);\n if (!first) first = links[v];\n }\n }\n links.__first = first;\n return links;\n } else {\n return resolveLink(link, adapter, instance);\n }\n };\n\n function updateLed(instanceId) {\n var tmp = instanceId.split('.');\n var adapter = tmp[2];\n var instance = tmp[3];\n\n var $led = that.$tab.find('.instance-led[data-instance-id=\"' + instanceId + '\"]');\n\n var common = that.main.objects[instanceId] ? that.main.objects[instanceId].common || {} : {};\n var state = (common.mode === 'daemon') ? 'green' : 'blue';\n var title = '';\n if (common.enabled && (!common.webExtension || !that.main.objects[instanceId].native.webInstance)) {\n title = '';\n title += '';\n\n if (that.main.states[adapter + '.' + instance + '.info.connection'] || that.main.objects[adapter + '.' + instance + '.info.connection']) {\n title += '';\n }\n title += '
            ' + _('Connected to host: ') + '';\n\n if (!that.main.states[instanceId + '.connected'] || !that.main.states[instanceId + '.connected'].val) {\n title += ((common.mode === 'daemon') ? '' + _('false') + '' : _('false'));\n state = (common.mode === 'daemon') ? 'red' : 'blue';\n } else {\n title += '' + _('true') + '';\n }\n title += '
            ' + _('Heartbeat: ') + '';\n\n if (!that.main.states[instanceId + '.alive'] || !that.main.states[instanceId + '.alive'].val) {\n title += ((common.mode === 'daemon') ? '' + _('false') + '' : _('false'));\n state = (common.mode === 'daemon') ? 'red' : 'blue';\n } else {\n title += '' + _('true') + '';\n }\n title += '
            ' + _('Connected to %s: ', adapter) + '';\n var val = that.main.states[adapter + '.' + instance + '.info.connection'] ? that.main.states[adapter + '.' + instance + '.info.connection'].val : false;\n if (!val) {\n state = state === 'red' ? 'red' : 'orange';\n title += '' + _('false') + '';\n } else {\n if (val === true) {\n title += '' + _('true') + '';\n } else {\n title += '' + val + '';\n }\n }\n title += '
            ';\n } else {\n state = (common.mode === 'daemon') ? 'gray' : 'blue';\n title = '';\n title += '';\n\n title += '';\n\n if (that.main.states[adapter + '.' + instance + '.info.connection'] || that.main.objects[adapter + '.' + instance + '.info.connection']) {\n title += '';\n }\n title += '
            ' + _('Connected to host: ') + '';\n\n if (!that.main.states[instanceId + '.connected'] || !that.main.states[instanceId + '.connected'].val) {\n title += _('false');\n } else {\n title += '' + _('true') + '';\n }\n title += '
            ' + _('Heartbeat: ') + '';\n if (!that.main.states[instanceId + '.alive'] || !that.main.states[instanceId + '.alive'].val) {\n title += _('false');\n } else {\n title += '' + _('true') + '';\n }\n title += '
            ' + _('Connected to %s: ', adapter) + '';\n var val = that.main.states[adapter + '.' + instance + '.info.connection'] ? that.main.states[adapter + '.' + instance + '.info.connection'].val : false;\n if (!val) {\n title += _('false');\n } else {\n if (val === true) {\n title += '' + _('true') + '';\n } else {\n title += '' + val + '';\n }\n }\n title += '
            ';\n }\n\n state = (state === 'blue') ? '' : state;\n\n $led.removeClass('led-red led-green led-orange led-blue').addClass('led-' + state).data('title', title);\n\n if (!$led.data('inited') && state !== 'gray') {\n $led.data('inited', true);\n\n $led.hover(function () {\n var text = '
            ' + $(this).data('title') + '
            ';\n var $big = $(text);\n\n $big.insertAfter($(this));\n $(this).data('big', $big[0]);\n var h = parseFloat($big.height());\n var top = Math.round($(this).position().top - ((h - parseFloat($(this).height())) / 2));\n if (h + top > (window.innerHeight || document.documentElement.clientHeight)) {\n top = (window.innerHeight || document.documentElement.clientHeight) - h;\n }\n if (top < 0) {\n top = 0;\n }\n $big.css({top: top}).on('click', function () {\n var big = $(this).data('big');\n $(big).remove();\n $(this).data('big', undefined);\n });\n }, function () {\n var big = $(this).data('big');\n $(big).remove();\n $(this).data('big', undefined);\n }).on('click', function () {\n $(this).trigger('hover');\n });\n }\n }\n\n /*function _createHead() {\n var text = '';\n // _('name'), _('instance'), _('title'), _('enabled'), _('host'), _('mode'), _('schedule'), '', _('platform'), _('loglevel'), _('memlimit'), _('alive'), _('connected')],\n text += '';\n //text += '';\n text += '';\n text += '' + _('instance') + '';\n text += '';\n text += '' + _('title') + '';\n\n if (that.main.tabs.hosts.list.length > 1) {\n text += '' + _('host') + '';\n }\n\n text += '' + _('schedule_group') + '';\n\n if (that.main.config.expertMode) {\n text += '' + _('restart') + '';\n text += '' + _('loglevel') + '';\n text += '' + _('memlimit') + '';\n text += '' + _('events') + '';\n }\n text += '' + _('RAM usage') + '';\n that.$gridHead.html(text);\n }*/\n\n function createHead() {\n var text = '';\n // _('name'), _('instance'), _('title'), _('enabled'), _('host'), _('mode'), _('schedule'), '', _('platform'), _('loglevel'), _('memlimit'), _('alive'), _('connected')],\n text += '' +\n '' + _('instance') + '' +\n '';\n text += '';\n text += '';\n // disabled, because no one use it\n if (false && that.main.config.expertMode) {\n text += '' + _('actions') + '';\n } else {\n text += '' + _('actions') + '';\n }\n text += '' + _('title') + '';\n\n if (that.main.tabs.hosts.list.length > 1) {\n text += '' + _('host') + '';\n }\n\n text += '' + _('schedule_group') + '';\n\n if (that.main.config.expertMode) {\n text += '' + _('restart') + '';\n text += '' + _('loglevel') + '';\n text += '' + _('memlimit') + '';\n text += '' + _('events') + '';\n }\n text += '' + _('RAM usage') + '';\n that.$gridHead.html(text);\n }\n\n function calculateTotalRam() {\n var host = that.main.states['system.host.' + that.main.currentHost + '.memRss'];\n var processes = 1;\n var mem = host ? host.val : 0;\n for (var i = 0; i < that.list.length; i++) {\n var obj = that.main.objects[that.list[i]];\n if (!obj || !obj.common) continue;\n if (obj.common.host !== that.main.currentHost) continue;\n if (obj.common.enabled && obj.common.mode === 'daemon') {\n var m = that.main.states[obj._id + '.memRss'];\n mem += m ? m.val : 0;\n processes++;\n }\n }\n mem = Math.round(mem);\n var $totalRam = that.$tab.find('#totalRam');\n if (mem.toString() !== $totalRam.text()) {\n $totalRam.html('' + mem + '');\n }\n var text = _('%s processes', processes);\n var $running_processes = that.$tab.find('#running_processes');\n if (text !== $running_processes.text()) {\n $running_processes.html('' + text + '')\n }\n }\n\n function calculateFreeMem() {\n if (that.main.states['system.host.' + that.main.currentHost + '.memAvailable']) {\n that.memState = 'memAvailable';\n } else if (that.main.states['system.host.' + that.main.currentHost + '.freemem']) {\n that.memState = 'freemem';\n }\n\n var host = that.main.states['system.host.' + that.main.currentHost + '.' + that.memState];\n if (host) {\n that.totalmem = that.totalmem || (that.main.objects['system.host.' + that.main.currentHost].native.hardware.totalmem / (1024 * 1024));\n var percent = Math.round((host.val / that.totalmem) * 100);\n var $freeMem = that.$tab.find('#freeMem');\n var strVal = tdp(host.val);\n if (strVal !== $freeMem.text()) {\n $freeMem.html('' + strVal + '');\n that.$tab.find('#freeMemPercent').html('' + percent + '%');\n }\n } else {\n that.$tab.find('.free-mem-label').hide();\n }\n }\n\n function calculateDiskMem() {\n var diskSize = that.main.states['system.host.' + that.main.currentHost + '.diskSize'];\n var diskFree = that.main.states['system.host.' + that.main.currentHost + '.diskFree'];\n var diskWarning = that.main.states['system.host.' + that.main.currentHost + '.diskWarning'];\n\n if (diskFree && diskFree.val && diskSize && diskSize.val) {\n if (diskWarning) {\n diskWarning = parseFloat(diskWarning.val);\n } else {\n diskWarning = 5;\n }\n\n var $diskFree = that.$tab.find('#diskFree');\n var size = (Math.round((diskFree.val / diskSize.val) * 1000) / 10);\n $diskFree.html('' + size + '');\n $diskFree.parent().attr('title', _('Size: %s, Free: %s', that.main.formatBytes(diskSize.val * 1024 * 1024), that.main.formatBytes(diskFree.val * 1024 * 1024)));\n } else {\n that.$tab.find('.tab-instances-info-disk').hide();\n }\n }\n\n function calculateRam(instanceId) {\n var mem;\n var common = that.main.objects[instanceId] ? that.main.objects[instanceId].common || {} : {};\n if (common.enabled && common.mode === 'daemon' && that.main.states[instanceId + '.memRss']) {\n mem = that.main.states[instanceId + '.memRss'].val;\n mem = parseFloat(mem) || 0;\n\n if (common.memoryLimitMB && common.memoryLimitMB <= mem) {\n mem = '' + mem.toFixed(1) + ' MB';\n } else {\n mem = mem.toFixed(1) + ' MB'\n }\n } else {\n mem = '';\n }\n return mem;\n }\n\n function showOneAdapter(rootElem, instanceId, form, justContent) {\n var text;\n var common = that.main.objects[instanceId] ? that.main.objects[instanceId].common || {} : {};\n var tmp = instanceId.split('.');\n var adapter = tmp[2];\n var instance = tmp[3];\n\n if (form === 'tile') {\n text = justContent ? '' : '
            ';\n text += justContent ? '' : '
            ';\n } else {\n // table\n text = justContent ? '' : '';\n\n var link = common.localLinks || common.localLink || '';\n var url = link ? that.replaceInLink(link, adapter, instance) : '';\n if (link) {\n if (typeof url === 'object') {\n link = '';\n } else {\n link = '';\n }\n }\n\n // State -\n // red - adapter is not connected or not alive,\n // orange - adapter is connected and alive, but device is not connected,\n // green - adapter is connected and alive, device is connected or no device,\n text += '
            ';\n\n // icon\n text += '' + (common.icon ? link + '' : '') + (link ? '
            ': '') + '';\n\n // name and instance\n text += '' + adapter + '.' + instance + '';\n\n var isRun = common.onlyWWW || common.enabled;\n // buttons\n text += '' +\n '' +\n '' +\n '';\n // disable, because no one use it\n if (false && that.main.config.expertMode) {\n text += '';\n }\n text += '' +\n (url ? '' : '') +\n '';\n\n var title = common.titleLang || common.title;\n if (typeof title === 'object') {\n title = title[systemLang] || title.en;\n }\n\n // title\n text += '' + (title || '') + '';\n\n // host - hide it if only one host\n if (that.main.tabs.hosts.list.length > 1) {\n if (!that.hostsText) {\n that.hostsText = '';\n for (var h = 0; h < that.main.tabs.hosts.list.length; h++) {\n var host = that.main.tabs.hosts.list[h] || '';\n that.hostsText += (that.hostsText ? ';' : '') + host.name;\n }\n }\n text += '' + (common.host || '') + '';\n }\n\n // schedule\n text += '' + (common.mode === 'schedule' ? (common.schedule || '') : '') + '';\n\n // scheduled restart (only experts)\n if (that.main.config.expertMode) {\n text += '' + (common.restartSchedule || '') + '';\n // debug level (only experts)\n text += '' + (common.loglevel || '') + '';\n // Max RAM (only experts)\n text += '' + (common.memoryLimitMB || '') + '';\n // Max RAM (only experts)\n if (isRun && that.main.states[instanceId + '.inputCount'] && that.main.states[instanceId + '.outputCount']) {\n text += '⇥' + that.main.states[instanceId + '.inputCount'].val + ' / ↦' + that.main.states[instanceId + '.outputCount'].val + '';\n } else {\n text += ' / ';\n }\n }\n\n text += '' + calculateRam(instanceId) + '';\n\n text += justContent ? '' : '';\n }\n if (!justContent) {\n rootElem.append(text);\n } else {\n that.$tab.find('.instance-adapter[data-instance-id=\"' + instanceId + '\"]').html(text);\n }\n // init buttons\n that.initButtons(instanceId, url);\n updateLed(instanceId);\n // init links\n that.$tab.find('.instance-editable[data-instance-id=\"' + instanceId + '\"]')\n .on('click', onQuickEditField)\n .addClass('select-id-quick-edit');\n\n // init schedule editor\n that.$tab.find('.instance-schedule[data-instance-id=\"' + instanceId + '\"]').each(function () {\n if (!$(this).find('button').length) {\n $(this).append('');\n $(this).find('button').on('click', function () {\n var attr = $(this).data('name');\n var _instanceId = $(this).data('instance-id');\n showCronDialog(that.main.objects[_instanceId].common[attr] || '', function (newValue) {\n if (newValue !== null) {\n var obj = {common: {}};\n obj.common[attr] = newValue;\n that.main.socket.emit('extendObject', _instanceId, obj, function (err) {\n if (err) that.main.showError(err);\n });\n }\n })\n });\n }\n });\n\n that.$tab.find('.instance-name[data-instance-id=\"' + instanceId + '\"]').on('click', function () {\n var $btn = that.$tab.find('.instance-settings[data-instance-id=\"' + $(this).data('instance-id') + '\"]');\n if (!$btn.hasClass('small-button-empty')) {\n $btn.trigger('click');\n }\n }).css('cursor', 'pointer');\n }\n\n function applyFilter(filter) {\n if (filter === undefined) {\n filter = that.$tab.find('.instances-filter').val();\n }\n var invisible = [];\n if (filter) {\n var reg = new RegExp(filter);\n\n for (var i = 0; i < that.list.length; i++) {\n var obj = that.main.objects[that.list[i]];\n if (!obj || !obj.common) {\n that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[i] + '\"]').hide();\n continue;\n }\n var isShow = 'hide';\n var title = obj.common.titleLang || obj.common.title;\n if (typeof title === 'object') {\n title = title[systemLang] || title.en;\n }\n\n if (obj.common.name && reg.test(obj.common.name)) {\n isShow = 'show';\n } else\n if (title && reg.test(title)) {\n isShow = 'show';\n } else\n if (filter === 'true') {\n isShow = that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[i] + '\"]').find('instance-led').hasClass('led-green') ? 'show' : 'hide';\n } else\n if (filter === 'false') {\n isShow = that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[i] + '\"]').find('instance-led').hasClass('led-green') ? 'hide' : 'show';\n }\n\n if (isShow === 'show' && that.filterHost && obj.common.host !== that.main.currentHost) isShow = 'hide';\n\n if (isShow === 'hide') invisible.push(that.list[i]);\n that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[i] + '\"]')[isShow]();\n }\n } else {\n if (that.filterHost) {\n for (var j = 0; j < that.list.length; j++) {\n var _obj = that.main.objects[that.list[j]];\n if (!_obj || !_obj.common) {\n that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[j] + '\"]').hide();\n continue;\n }\n var _isShow = 'hide';\n if (_obj.common.host === that.main.currentHost) _isShow = 'show';\n that.$grid.find('.instance-adapter[data-instance-id=\"' + that.list[j] + '\"]')[_isShow]();\n }\n } else {\n that.$grid.find('.instance-adapter').show();\n }\n }\n var anyVisible = false;\n that.$grid.find('.instance-adapter').each(function () {\n if ($(this).is(':visible')) {\n anyVisible = true;\n return false;\n }\n });\n\n if (anyVisible) {\n that.$grid.find('.filtered-out').hide();\n } else {\n that.$grid.find('.filtered-out').show();\n }\n }\n\n function onQuickEditField(e) {\n var $this = $(this);\n var id = $this.data('instance-id');\n var attr = $this.data('name');\n var options = $this.data('options');\n var oldVal = $this.data('value');\n var innerHTML = this.innerHTML;\n var textAlign = $this.css('text-align');\n $this.css('text-align', 'left');\n\n $this.off('click').removeClass('select-id-quick-edit').css('position', 'relative');\n\n var css = 'cursor: pointer; position: absolute;width: 16px; height: 16px; top: 2px; border-radius: 6px; z-index: 3; background-color: lightgray';\n var type = 'text';\n var text;\n\n if (options) {\n var opt = options.split(';');\n text = '';\n }\n text = text || '';\n\n var timeout = null;\n\n $this.html(text +\n '
            ' +\n '
            ');\n\n var $input = (options) ? $this.find('select') : $this.find('input');\n\n $this.find('.select-id-quick-edit-cancel').off('click').on('click', function (e) {\n if (timeout) clearTimeout(timeout);\n timeout = null;\n e.preventDefault();\n e.stopPropagation();\n $this.html(innerHTML)\n .off('click')\n .on('click', onQuickEditField)\n .addClass('select-id-quick-edit')\n .css('text-align', textAlign);\n });\n\n $this.find('.select-id-quick-edit-ok').off('click').on('click', function () {\n $this.trigger('blur');\n });\n\n $input.val(oldVal);\n\n $input.blur(function () {\n if (timeout) clearTimeout(timeout);\n\n timeout = setTimeout(function () {\n timeout = null;\n var val = $(this).val();\n\n if (JSON.stringify(val) !== JSON.stringify(oldVal)) {\n that.main.socket.emit('getObject', id, function (err, obj) {\n if (obj) {\n obj.common = obj.common || {};\n obj.common[attr] = val;\n if (attr === 'title' && obj.common.titleLang) {\n delete obj.common.titleLang;\n }\n that.main.socket.emit('setObject', obj._id, obj, function (err) {\n if (err) that.main.showError(err);\n });\n } else {\n console.log('Object ' + id + ' does not exist: ' + err);\n }\n });\n oldVal = '' + oldVal + '';\n } else {\n oldVal = innerHTML;\n }\n $this.html(oldVal)\n .off('click')\n .on('click', onQuickEditField)\n .addClass('select-id-quick-edit')\n .css('text-align', textAlign);\n }.bind(this), 100);\n }).on('keyup', function (e) {\n if (e.which === 13) $(this).trigger('blur');\n if (e.which === 27) {\n if (oldVal === undefined) oldVal = '';\n $this.html(oldVal)\n .off('click')\n .on('click', onQuickEditField)\n .addClass('select-id-quick-edit')\n .css('text-align', textAlign);\n }\n });\n\n if (typeof e === 'object') {\n e.preventDefault();\n e.stopPropagation();\n }\n\n setTimeout(function () {\n $input.focus();\n }, 100);\n }\n\n function showCronDialog(value, cb) {\n value = (value || '').replace(/\"/g, '').replace(/'/g, '');\n try {\n setupCron(value, cb);\n } catch (e) {\n alert(_('Cannot parse value as cron'));\n }\n }\n\n this.prepare = function () {\n /*this.$dialogCron.dialog({\n autoOpen: false,\n modal: true,\n width: 700,\n height: 550,\n resizable: false,\n title: _('Cron expression'),\n buttons: [\n {\n id: 'dialog_cron_insert',\n text: _('Insert'),\n click: function () {\n var val = $('#div-cron').cron('value');\n that.$dialogCron.dialog('close');\n that.editor.insert('\"' + val + '\"');\n that.editor.focus();\n }\n },\n {\n id: 'dialog_cron_clear',\n text: _('Clear'),\n click: function () {\n $('#div-cron').cron('value', '');\n }\n },\n {\n id: 'dialog_cron_callback',\n text: _('Set CRON'),\n click: function () {\n }\n },\n {\n text: _('Cancel'),\n click: function () {\n that.$dialogCron.dialog('close');\n }\n }\n ]\n });\n\n $('#div-cron').cron({value: ''});\n*/\n var $filter = that.$tab.find('.instances-filter');\n var $filterClear = that.$tab.find('.instances-filter-clear');\n\n $filter.on('change', function () {\n var val = $(this).val();\n if (val) {\n $(this).addClass('input-not-empty');\n $filterClear.show();\n } else {\n $(this).removeClass('input-not-empty');\n $filterClear.hide();\n }\n that.main.saveConfig('instancesFilter', val);\n applyFilter(val);\n }).on('keyup', function () {\n if (that.filterTimeout) clearTimeout(that.filterTimeout);\n that.filterTimeout = setTimeout(function () {\n $filter.trigger('change');\n }, 300);\n });\n if (that.main.config.instancesFilter && that.main.config.instancesFilter[0] !== '{') {\n $filter.addClass('input-not-empty').val(that.main.config.instancesFilter);\n $filterClear.show();\n } else {\n $filterClear.hide();\n }\n\n //$('#load_grid-instances').show();\n that.$tab.find('.btn-instances-expert-mode').on('click', function () {\n that.main.config.expertMode = !that.main.config.expertMode;\n that.main.saveConfig('expertMode', that.main.config.expertMode);\n that.updateExpertMode();\n that.main.tabs.adapters.updateExpertMode();\n });\n\n if (that.main.config.expertMode) {\n that.$tab.find('.btn-instances-expert-mode').addClass('red lighten-3');\n }\n\n that.$tab.find('.btn-instances-reload').on('click', function () {\n that.init(true, true);\n });\n\n /*that.$grid.find('#btn-instances-form').button({\n icons: {primary: 'ui-icon-refresh'},\n text: false\n }).css({width: '1.5em', height: '1.5em'}).attr('title', _('reload')).on('click', function () {\n that.main.config.instanceForm = that.main.config.instanceForm === 'tile' ? 'list' : 'tile';\n that.main.saveCell('expertMode', that.main.config.expertMode);\n that.init(true);\n });*/\n\n $filterClear.on('click', function () {\n $filter.val('').trigger('change');\n });\n\n this.$tab.find('.btn-instances-host').off('click').on('click', function () {\n that.filterHost = !that.filterHost;\n if (that.filterHost) {\n that.$tab.find('.btn-instances-host').addClass('red lighten-3');\n } else {\n that.$tab.find('.btn-instances-host').removeClass('red lighten-3');\n }\n that.main.saveConfig('instancesFilterHost', that.filterHost);\n\n setTimeout(function () {\n applyFilter();\n }, 50);\n });\n\n this.filterHost = this.main.config.instancesFilterHost || false;\n\n if (this.filterHost) {\n this.$tab.find('.btn-instances-host').addClass('red lighten-3');\n } else {\n this.$tab.find('.btn-instances-host').removeClass('red lighten-3');\n }\n };\n\n this.updateExpertMode = function () {\n that.init(true);\n if (that.main.config.expertMode) {\n that.$tab.find('.btn-instances-expert-mode').addClass('red lighten-3');\n } else {\n that.$tab.find('.btn-instances-expert-mode').removeClass('red lighten-3');\n }\n };\n\n this.replaceLink = function (_var, adapter, instance, elem) {\n _var = _var.replace(/%/g, '');\n if (_var.match(/^native_/)) _var = _var.substring(7);\n // like web.0_port\n var parts;\n if (_var.indexOf('_') === -1) {\n parts = [\n adapter + '.' + instance,\n _var\n ]\n } else {\n parts = _var.split('_');\n // add .0 if not defined\n if (!parts[0].match(/\\.[0-9]+$/)) parts[0] += '.0';\n }\n\n if (parts[1] === 'protocol') parts[1] = 'secure';\n\n if (_var === 'instance') {\n setTimeout(function () {\n var link;\n if (elem) {\n link = that.$tab.find('#' + elem).data('src');\n } else {\n link = that.$tab.find('#a_' + adapter + '_' + instance).attr('href');\n }\n\n link = link.replace('%instance%', instance);\n if (elem) {\n that.$tab.find('#' + elem).data('src', link);\n } else {\n that.$tab.find('#a_' + adapter + '_' + instance).attr('href', link);\n }\n }, 0);\n return;\n }\n\n this.main.socket.emit('getObject', 'system.adapter.' + parts[0], function (err, obj) {\n if (obj) {\n setTimeout(function () {\n var link;\n if (elem) {\n link = that.$tab.find('#' + elem).data('src');\n } else {\n link = that.$tab.find('#a_' + adapter + '_' + instance).attr('href');\n }\n if (link) {\n if (parts[1] === 'secure') {\n link = link.replace('%' + _var + '%', obj.native[parts[1]] ? 'https' : 'http');\n } else {\n if (link.indexOf('%' + _var + '%') === -1) {\n link = link.replace('%native_' + _var + '%', obj.native[parts[1]]);\n } else {\n link = link.replace('%' + _var + '%', obj.native[parts[1]]);\n }\n }\n if (elem) {\n that.$tab.find('#' + elem).data('src', link);\n } else {\n that.$tab.find('#a_' + adapter + '_' + instance).attr('href', link);\n }\n }\n }, 0);\n }\n });\n };\n\n /*this.replaceLinks = function (vars, adapter, instance, elem) {\n if (typeof vars !== 'object') vars = [vars];\n for (var t = 0; t < vars.length; t++) {\n this.replaceLink(vars[t], adapter, instance, elem);\n }\n };*/\n\n this._replaceLink = function (link, _var, adapter, instance, callback) {\n // remove %%\n _var = _var.replace(/%/g, '');\n\n if (_var.match(/^native_/)) _var = _var.substring(7);\n // like web.0_port\n var parts;\n if (_var.indexOf('_') === -1) {\n parts = [adapter + '.' + instance, _var];\n } else {\n parts = _var.split('_');\n // add .0 if not defined\n if (!parts[0].match(/\\.[0-9]+$/)) parts[0] += '.0';\n }\n\n if (parts[1] === 'protocol') parts[1] = 'secure';\n\n this.main.socket.emit('getObject', 'system.adapter.' + parts[0], function (err, obj) {\n if (obj && link) {\n if (parts[1] === 'secure') {\n link = link.replace('%' + _var + '%', obj.native[parts[1]] ? 'https' : 'http');\n } else {\n if (link.indexOf('%' + _var + '%') === -1) {\n link = link.replace('%native_' + _var + '%', obj.native[parts[1]]);\n } else {\n link = link.replace('%' + _var + '%', obj.native[parts[1]]);\n }\n }\n } else {\n console.log('Cannot get link ' + parts[1]);\n link = link.replace('%' + _var + '%', '');\n }\n setTimeout(function () {\n callback(link, adapter, instance);\n }, 0);\n });\n };\n\n this._replaceLinks = function (link, adapter, instance, arg, callback) {\n if (!link) {\n return callback(link, adapter, instance, arg);\n }\n var vars = link.match(/%(\\w+)%/g);\n if (!vars) {\n return callback(link, adapter, instance, arg);\n }\n if (vars[0] === '%ip%') {\n link = link.replace('%ip%', location.hostname);\n this._replaceLinks(link, adapter, instance, arg, callback);\n return;\n }\n if (vars[0] === '%instance%') {\n link = link.replace('%instance%', instance);\n this._replaceLinks(link, adapter, instance, arg, callback);\n return;\n }\n this._replaceLink(link, vars[0], adapter, instance, function (link, adapter, instance) {\n this._replaceLinks(link, adapter, instance, arg, callback);\n }.bind(this));\n };\n\n this._postInit = function (update, showTip) {\n if (this.main.currentHost && typeof this.$grid !== 'undefined' && (!this.$grid.data('inited') || update)) {\n this.$grid.data('inited', true);\n this.list.sort();\n var onlyWWW = [];\n // move all adapters with not onlyWWW and noConfig to the bottom\n for (var l = this.list.length - 1; l >= 0; l--) {\n if (this.main.objects[this.list[l]] &&\n this.main.objects[this.list[l]].common &&\n !this.main.objects[this.list[l]].common.localLink &&\n !this.main.objects[this.list[l]].common.localLinks &&\n this.main.objects[this.list[l]].common.noConfig\n ) {\n onlyWWW.push(this.list[l]);\n this.list.splice(l, 1);\n }\n }\n this.list.sort();\n onlyWWW.sort();\n for (l = 0; l < onlyWWW.length; l++) {\n this.list.push(onlyWWW[l]);\n }\n\n createHead();\n this.$grid.html('');\n var ts = Date.now();\n for (var i = 0; i < this.list.length; i++) {\n var obj = this.main.objects[this.list[i]];\n if (!obj) continue;\n showOneAdapter(this.$grid, this.list[i], this.main.config.instanceForm);\n }\n console.log(Date.now() - ts);\n\n this.$grid.append('' + _('Filtered out') + '');\n\n that.$tab.find('#currentHost').html(this.main.currentHost);\n\n if (that.main.tabs.hosts.list.length > 1) {\n this.$tab.find('.btn-instances-host').show();\n } else {\n this.$tab.find('.btn-instances-host').hide();\n this.filterHost = false;\n }\n\n applyFilter();\n\n calculateTotalRam();\n calculateFreeMem();\n calculateDiskMem();\n that.restoreScroll();\n if (showTip) {\n that.main.showToast(that.$tab.find('.main-toolbar-table'), _('Updated'));\n }\n }\n };\n\n this.getInstances = function (callback) {\n this.main.socket.emit('getForeignObjects', 'system.adapter.*', 'state', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.objects[id] = res[id];\n }\n that.main.socket.emit('getForeignStates', '*.info.connection', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.states[id] = res[id];\n }\n\n that.main.socket.emit('getForeignStates', 'system.adapter.*', function (err, res) {\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n that.main.states[id] = res[id];\n }\n\n that.main.socket.emit('getForeignObjects', 'system.adapter.*', 'instance', function (err, res) {\n that.main.instances.splice(0, that.main.instances.length); // because of pointer in admin.main\n for (var id in res) {\n if (!res.hasOwnProperty(id)) continue;\n var obj = res[id];\n that.main.objects[id] = obj;\n\n if (obj.type === 'instance') {\n that.main.instances.push(id);\n }\n }\n if (callback) callback();\n });\n\n });\n });\n });\n };\n\n this.init = function (update, showMessage) {\n if (this.inited && !update) {\n return;\n }\n if (!this.main.objectsLoaded) {\n setTimeout(function () {\n that.init(update, showMessage);\n }, 250);\n return;\n }\n var count = 0;\n\n count++;\n this.getInstances(function () {\n if (!--count) that._postInit(update, showMessage);\n });\n count++;\n this.main.tabs.hosts.getHosts(function () {\n if (!--count) that._postInit(update, showMessage);\n });\n\n if (!this.inited) {\n this.inited = true;\n // subscribe objects and states\n this.main.subscribeObjects('system.adapter.*');\n this.main.subscribeStates('system.adapter.*');\n this.main.subscribeObjects('system.host.*');\n this.main.subscribeStates('system.host.*');\n this.main.subscribeStates('*.info.connection');\n }\n };\n\n this.saveScroll = function () {\n this.scrollTop = this.$tab.find('.grid-main-div').scrollTop();\n };\n this.restoreScroll = function () {\n if (this.scrollTop) {\n this.$tab.find('.grid-main-div').scrollTop(this.scrollTop);\n }\n };\n this.destroy = function () {\n if (this.inited) {\n this.saveScroll();\n this.$grid.data('inited', false);\n this.inited = false;\n // subscribe objects and states\n this.main.unsubscribeObjects('system.adapter.*');\n this.main.unsubscribeStates('system.host.*');\n this.main.unsubscribeObjects('system.host.*');\n this.main.unsubscribeStates('system.adapter.*');\n this.main.unsubscribeStates('*.info.connection');\n }\n };\n\n this.stateChange = function (id, state) {\n this.main.states[id] = state;\n if (this.$grid) {\n var parts = id.split('.');\n var last = parts.pop();\n id = parts.join('.');\n\n if (state) {\n if (last === 'diskFree' || last === 'diskWarning') {\n // update disk size\n calculateDiskMem();\n } else if (last === that.memState) {\n // update total ram\n calculateFreeMem();\n } else if (last === 'memRss') {\n // update total ram\n calculateTotalRam();\n // update instance ram\n var $mem = that.$tab.find('.memUsage[data-instance-id=\"' + id + '\"]');\n var mem = calculateRam(id);\n if ($mem.length && $mem.text() !== mem) {\n $mem.html('' + mem + '');\n }\n } else if (last === 'outputCount') {\n // update total ram\n that.$tab.find('.instance-out[data-instance-id=\"' + id + '\"]').html('↦' + state.val + '');\n } else if (last === 'inputCount') {\n that.$tab.find('.instance-in[data-instance-id=\"' + id + '\"]').html('⇥' + state.val + '');\n }\n\n if (this.list.indexOf(id) !== -1) {\n if (last === 'alive' || last === 'connected') {\n updateLed(id);\n }\n return;\n }\n id = 'system.adapter.' + parts[0] + '.' + parts[1];\n if (this.list.indexOf(id) !== -1 && last === 'connection') {\n updateLed(id);\n }\n }\n }\n };\n\n this.objectChange = function (id, obj, action) {\n // Update Instance Table\n if (id.match(/^system\\.adapter\\.[-\\w]+\\.[0-9]+$/)) {\n if (obj) {\n if (this.list.indexOf(id) === -1) {\n // add new instance\n this.list.push(id);\n\n if (this.updateTimer) clearTimeout(this.updateTimer);\n\n this.updateTimer = setTimeout(function () {\n that.updateTimer = null;\n that.init(true);\n }, 200);\n\n // open automatically config dialog\n if (!obj.common.noConfig) {\n setTimeout(function () {\n if (window.location.hash.indexOf('/config/') === -1) {\n // open configuration dialog\n that.main.navigate({\n tab: 'instances',\n dialog: 'config',\n params: id\n });\n }\n }, 2000);\n }\n } else {\n if (id.indexOf('.web.') !== -1) {\n if (this.updateTimer) clearTimeout(this.updateTimer);\n\n this.updateTimer = setTimeout(function () {\n that.updateTimer = null;\n that.init(true);\n }, 200);\n } else {\n // update just one line or\n this.$grid.find('.instance-adapter[data-instance-id=\"' + id + '\"]').html(showOneAdapter(this.$grid, id, this.main.config.instanceForm, true));\n }\n }\n } else {\n var i = this.list.indexOf(id);\n if (i !== -1) {\n this.list.splice(i, 1);\n this.$grid.find('.instance-adapter[data-instance-id=\"' + id + '\"]').remove();\n }\n }\n } else\n // update list if some host changed\n if (id.match(/^system\\.host\\.[-\\w]+$/)) {\n if (this.updateTimer) clearTimeout(this.updateTimer);\n\n this.updateTimer = setTimeout(function () {\n that.updateTimer = null;\n that.init(true);\n }, 200);\n }\n };\n\n this.initButtons = function (id, url) {\n id = id ? '[data-instance-id=\"' + id + '\"]' : '';\n\n var $e = that.$grid.find('.instance-edit' + id).off('click').on('click', function () {\n that.onEdit($(this).attr('data-instance-id'));\n });\n\n //var buttonSize = {width: '2em', height: '2em'}\n\n if (!$e.find('.ui-button-icon-primary').length) {\n $e/*.button({\n icons: {primary: 'ui-icon-pencil'},\n text: false\n }).css({width: '2em', height: '2em'})*/.attr('title', _('edit'));\n }\n\n $e = that.$grid.find('.instance-settings' + id).off('click')\n .on('click', function () {\n that.main.navigate({\n tab: 'instances',\n dialog: 'config',\n params: $(this).data('instance-id')\n });\n });\n /*if (!$e.find('.ui-button-icon-primary').length) {\n $e.button({icons: {primary: 'ui-icon-note'}, text: false}).css({width: '2em', height: '2em'}).attr('title', _('config'));\n }*/\n $e.each(function () {\n var _id = $(this).attr('data-instance-id');\n if (main.objects[_id] && main.objects[_id].common && main.objects[_id].common.noConfig) {\n //$(this).button('disable');\n $(this).addClass('disabled');\n }\n });\n\n $e = that.$grid.find('.instance-reload' + id).off('click')\n .on('click', function () {\n that.main.socket.emit('extendObject', $(this).attr('data-instance-id'), {}, function (err) {\n if (err) that.main.showError(err);\n });\n });\n /*if (!$e.find('.ui-button-icon-primary').length) {\n $e.button({icons: {primary: 'ui-icon-refresh'}, text: false}).attr('title', _('reload'));\n }*/\n\n $e = that.$grid.find('.instance-del' + id).off('click')\n .on('click', function () {\n var id = $(this).attr('data-instance-id');\n if (that.main.objects[id] && that.main.objects[id].common && that.main.objects[id].common.host) {\n var name = id.replace(/^system\\.adapter\\./, '');\n that.main.confirmMessage(_('Are you sure you want to delete the instance %s?', name), null, 'help', function (result) {\n if (result) {\n that.main.cmdExec(that.main.objects[id].common.host, 'del ' + id.replace('system.adapter.', ''), function (exitCode) {\n if (!exitCode) that.main.tabs.adapters.init(true);\n });\n }\n });\n }\n });\n\n /*if (!$e.find('.ui-button-icon-primary').length) {\n $e.button({icons: {primary: 'ui-icon-trash'}, text: false}).attr('title', _('delete'));\n } else {\n //$e.button('enable');\n $e.removeClass('disabled');\n }*/\n $e = that.$grid.find('.instance-issue' + id).off('click')\n .on('click', function () {\n that.main.navigate({\n tab: 'instances',\n dialog: 'issue',\n params: $(this).data('instance-id')\n });\n });\n /*if (!$e.find('.ui-button-icon-primary').length) {\n //$e.button({icons: {primary: 'ui-icon-pin-s'}, text: false}).css({width: '2em', height: '2em'}).attr('title', _('bug'));\n //Material-Hack\n $e.button().attr('title', _('bug')).empty().append('bug_report');\n }*/\n\n that.$grid.find('.instance-image' + id).each(function () {\n if (!$(this).data('installed')) {\n $(this).data('installed', true);\n $(this).hover(function () {\n var text = '
            ';\n var $big = $(text);\n $big.insertAfter($(this));\n $(this).data('big', $big[0]);\n var h = parseFloat($big.height());\n var top = Math.round($(this).position().top - ((h - parseFloat($(this).height())) / 2));\n if (h + top > (window.innerHeight || document.documentElement.clientHeight)) {\n top = (window.innerHeight || document.documentElement.clientHeight) - h;\n }\n if (top < 0) {\n top = 0;\n }\n $big.css({top: top});\n }, function () {\n var big = $(this).data('big');\n $(big).remove();\n $(this).data('big', undefined);\n });\n }\n });\n $e = that.$grid.find('.instance-stop-run' + id).off('click')\n .on('click', function () {\n var id = $(this).attr('data-instance-id');\n //$(this).button('disable');\n $(this).addClass('disabled');\n that.main.socket.emit('extendObject', id, {common: {enabled: !that.main.objects[id].common.enabled}}, function (err) {\n if (err) that.main.showError(err);\n });\n });\n\n if (!$e.find('.ui-button-icon-primary').length) {\n $e.each(function () {\n var id = $(this).attr('data-instance-id');\n var enabled = that.main.objects[id].common.enabled;\n\n if (enabled) {\n $e\n .addClass('instance-running')\n .attr('title', _('Activated. Click to stop.'))\n .find('i')\n .html('pause');\n } else {\n $e\n .removeClass('instance-running')\n .attr('title', _('Deactivated. Click to start.'))\n .find('i')\n .html('play_arrow');\n }\n\n /*$e.button({icons: {primary: enabled ? 'ui-icon-pause': 'ui-icon-play'}, text: false})\n //.css({'background-color': enabled ? 'lightgreen' : '#FF9999'})\n //.css({'background-color': enabled ? 'rgba(0, 255, 0, 0.15)' : 'rgba(255, 0, 0, 0.15)'})\n .css({'background-color': enabled ? 'rgba(0, 255, 0, 0.3)' : 'rgba(255, 0, 0, 0.3)'})\n .attr('title', enabled ? _('Activated. Click to stop.') : _('Deactivated. Click to start.'));*/\n });\n }\n\n $e = that.$grid.find('.instance-web' + id).off('click')\n .on('click', function () {\n var _link = $(this).data('link');\n if (typeof _link === 'object') {\n var menu = '';\n for (var m in _link) {\n if (!_link.hasOwnProperty(m)) continue;\n if (m === '__first') continue;\n var port = _link[m].match(/^https?:\\/\\/[-.\\w]+:(\\d+)\\/?/);\n var https = _link[m].match(/^https:\\/\\//);\n\n menu += '
          • ' + m + (port ? ' :' + port[1] : '') + (https ? ' - SSL' : '') + '
          • ';\n }\n menu += '
          • ' + _('Close') + '
          • ';\n\n var $instancesMenu = $('#instances-menu');\n if ($instancesMenu.data('inited')) $instancesMenu.menu('destroy');\n\n var pos = $(this).position();\n $instancesMenu.html(menu);\n if (!$instancesMenu.data('inited')) {\n $instancesMenu.data('inited', true);\n $instancesMenu.mouseleave(function () {\n $(this).hide();\n });\n }\n\n $instancesMenu.menu().css({\n left: pos.left,\n top: pos.top\n }).show();\n\n $instancesMenu.find('.instances-menu-link').off('click').on('click', function () {\n if ($(this).data('link')) window.open($(this).data('link'), $(this).data('instance-id'));\n $('#instances-menu').hide();\n });\n\n } else {\n window.open($(this).data('link'), $(this).data('instance-id'));\n }\n });\n if (typeof url === 'object') $e.data('link', url);\n\n /*if (!$e.find('.ui-button-icon-primary').length) {\n $e.button({icons: {primary: 'ui-icon-image'}, text: false}).attr('title', _('open web page'));\n } else {\n $e.removeClass('disabled');\n //$e.button('enable');\n }*/\n };\n\n this.resize = function (width, height) {\n //this.$grid.setGridHeight(height - 150).setGridWidth(width);\n };\n}\n","function Intro(main) {\n 'use strict';\n\n var that = this;\n\n this.$tab = $('#tab-intro');\n this.$tiles = this.$tab.find('.tab-intro-cards');\n this.main = main;\n this.inited = false;\n this.$template = $('#intro-template');\n\n function readInstances(callback) {\n that.main.socket.emit('getObjectView', 'system', 'instance', {startkey: 'system.adapter.', endkey: 'system.adapter.\\u9999'}, function (err, doc) {\n if (err) {\n if (callback) callback (err, []);\n } else {\n if (doc.rows.length === 0) {\n if (callback) callback (err, []);\n } else {\n that.main.instances = [];\n for (var i = 0; i < doc.rows.length; i++) {\n that.main.instances.push(doc.rows[i].id);\n that.main.objects[doc.rows[i].id] = doc.rows[i].value;\n }\n if (callback) callback(err, that.main.instances);\n }\n }\n });\n }\n\n /**\n * Format number in seconds to time text\n * @param {!number} seconds\n * @returns {String}\n */\n function formatSeconds(seconds) {\n var days = Math.floor(seconds / (3600 * 24));\n seconds %= 3600 * 24;\n var hours = Math.floor(seconds / 3600);\n if (hours < 10) {\n hours = '0' + hours;\n }\n seconds %= 3600;\n var minutes = Math.floor(seconds / 60);\n if (minutes < 10) {\n minutes = '0' + minutes;\n }\n seconds %= 60;\n seconds = Math.floor(seconds);\n if (seconds < 10) {\n seconds = '0' + seconds;\n }\n var text = '';\n if (days) {\n text += days + ' ' + _('daysShortText') + ' ';\n }\n text += hours + ':' + minutes + ':' + seconds;\n\n return text;\n }\n\n /**\n * Format bytes to MB or GB\n * @param {!number} bytes\n * @returns {String}\n */\n function formatRam(bytes) {\n var GB = Math.floor(bytes / (1024 * 1024 * 1024) * 10) / 10;\n bytes %= (1024 * 1024 * 1024);\n var MB = Math.floor(bytes / (1024 * 1024) * 10) / 10;\n var text = '';\n if (GB > 1) {\n text += GB + ' GB ';\n } else {\n text += MB + ' MB ';\n }\n\n return text;\n }\n\n function formatSpeed(mhz) {\n return mhz + ' MHz';\n }\n\n /**\n * FormatObject for host informations\n * @type type\n */\n var formatInfo = {\n 'Uptime': formatSeconds,\n 'System uptime': formatSeconds,\n 'RAM': formatRam,\n 'Speed': formatSpeed,\n 'Disk size': that.main.formatBytes,\n 'Disk free': that.main.formatBytes\n };\n\n function copyToClipboard(e) {\n var $input = $('