iobroker.admin 7.4.13 → 7.4.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/adminWww/asset-manifest.json +23 -26
- package/adminWww/index.html +1 -1
- package/adminWww/static/js/{1809.3970d4d2.chunk.js → 1809.797e6d9a.chunk.js} +3 -3
- package/adminWww/static/js/1809.797e6d9a.chunk.js.map +1 -0
- package/adminWww/static/js/288.b83253b7.chunk.js +2 -0
- package/adminWww/static/js/288.b83253b7.chunk.js.map +1 -0
- package/adminWww/static/js/3849.c8d3a754.chunk.js +2 -0
- package/adminWww/static/js/3849.c8d3a754.chunk.js.map +1 -0
- package/adminWww/static/js/4289.3fbd195d.chunk.js +2 -0
- package/adminWww/static/js/4289.3fbd195d.chunk.js.map +1 -0
- package/adminWww/static/js/471.c7298807.chunk.js +2 -0
- package/adminWww/static/js/471.c7298807.chunk.js.map +1 -0
- package/adminWww/static/js/6603.eaf9efa3.chunk.js +3 -0
- package/adminWww/static/js/6603.eaf9efa3.chunk.js.map +1 -0
- package/adminWww/static/js/{6853.1d96bb1c.chunk.js → 6853.c817c98e.chunk.js} +2 -2
- package/adminWww/static/js/6853.c817c98e.chunk.js.map +1 -0
- package/adminWww/static/js/7424.38cdae41.chunk.js +2 -0
- package/adminWww/static/js/7424.38cdae41.chunk.js.map +1 -0
- package/adminWww/static/js/7435.0f078b05.chunk.js +2 -0
- package/adminWww/static/js/7435.0f078b05.chunk.js.map +1 -0
- package/adminWww/static/js/8222.68da8b63.chunk.js +2 -0
- package/adminWww/static/js/8222.68da8b63.chunk.js.map +1 -0
- package/adminWww/static/js/{main.6be9bde2.js → main.d3c54b8f.js} +2 -2
- package/adminWww/static/js/{main.6be9bde2.js.map → main.d3c54b8f.js.map} +1 -1
- package/io-package.json +15 -15
- package/package.json +4 -4
- package/adminWww/static/js/1809.3970d4d2.chunk.js.map +0 -1
- package/adminWww/static/js/288.492f41ab.chunk.js +0 -2
- package/adminWww/static/js/288.492f41ab.chunk.js.map +0 -1
- package/adminWww/static/js/3849.363dd3ca.chunk.js +0 -2
- package/adminWww/static/js/3849.363dd3ca.chunk.js.map +0 -1
- package/adminWww/static/js/4289.6ac6a4bc.chunk.js +0 -2
- package/adminWww/static/js/4289.6ac6a4bc.chunk.js.map +0 -1
- package/adminWww/static/js/471.8a82d825.chunk.js +0 -2
- package/adminWww/static/js/471.8a82d825.chunk.js.map +0 -1
- package/adminWww/static/js/6603.51b36d23.chunk.js +0 -3
- package/adminWww/static/js/6603.51b36d23.chunk.js.map +0 -1
- package/adminWww/static/js/6853.1d96bb1c.chunk.js.map +0 -1
- package/adminWww/static/js/6858.7b3f28b9.chunk.js +0 -2
- package/adminWww/static/js/6858.7b3f28b9.chunk.js.map +0 -1
- package/adminWww/static/js/7424.a53c0d15.chunk.js +0 -2
- package/adminWww/static/js/7424.a53c0d15.chunk.js.map +0 -1
- package/adminWww/static/js/8222.399b9b24.chunk.js +0 -2
- package/adminWww/static/js/8222.399b9b24.chunk.js.map +0 -1
- package/adminWww/static/media/thread.78489b630e6b27d860ae133d9ccca0a6.svg +0 -4
- package/adminWww/static/media/z-wave.09176b331d7b6b4b101cffaddf3e441a.svg +0 -3
- package/adminWww/static/media/zigbee.0e17b818ea0c78a95e189da4dac70a6e.svg +0 -4
- /package/adminWww/static/js/{1809.3970d4d2.chunk.js.LICENSE.txt → 1809.797e6d9a.chunk.js.LICENSE.txt} +0 -0
- /package/adminWww/static/js/{6603.51b36d23.chunk.js.LICENSE.txt → 6603.eaf9efa3.chunk.js.LICENSE.txt} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunksrc_rx=self.webpackChunksrc_rx||[]).push([[8222],{66875:(t,e,o)=>{o.d(e,{A:()=>w});var s=o(89379),i=o(28437),n=o(22631),a=o(22103),r=o(43333),l=o(14820),c=o(89303),p=o(32075),h=o(16904),d=o(4531),g=o(4848),m=o.n(g),v=o(17774),u=o(70579);const f=["silly","debug","info","warn","error"],x={root:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},scroll:{height:"100%",overflowY:"auto"},instanceIcon:{width:42,height:42,marginRight:16,verticalAlign:"middle"},button:{marginRight:5,width:36,height:36},version:{fontSize:12,opacity:.8,marginLeft:20,marginRight:10},versionAliveConnected:t=>({color:"dark"===t.palette.mode?"#23a623":"#60ff60"}),versionAliveNotConnected:{color:"#a67223"},buttonControl:{padding:"5px",transition:"opacity 0.2s",height:34},enabled:{color:n.A[400],"&:hover":{backgroundColor:n.A[200]}},disabled:{color:a.A[400],"&:hover":{backgroundColor:a.A[200]}},hide:{visibility:"hidden"},formControl:{width:"100%",marginBottom:5},logLevel:{fontSize:12,marginLeft:10},green:{color:n.A[700]},red:{color:a.A[700]},grey:{color:r.A[700]},blue:{color:"#0055a9"},orange:{color:l.A[400]},orangeDevice:{color:l.A[300]},tooltip:{pointerEvents:"none"}};class b extends i.Component{constructor(t){super(t),this.refIframe=void 0,this.registered=void 0,this.onObjectChange=(t,e)=>{var o,s,i,n;t==="system.adapter.".concat(this.props.adapter,".").concat(this.props.instance)&&this.setState({running:(null===e||void 0===e||null===(o=e.common)||void 0===o?void 0:o.onlyWWW)||(null===e||void 0===e||null===(s=e.common)||void 0===s?void 0:s.enabled),canStart:!(null!==e&&void 0!==e&&null!==(i=e.common)&&void 0!==i&&i.onlyWWW),logLevel:(null===e||void 0===e||null===(n=e.common)||void 0===n?void 0:n.loglevel)||"info"})},this.onStateChange=(t,e)=>{const o="system.adapter.".concat(this.props.adapter,".").concat(this.props.instance);t==="".concat(o,".alive")?this.setState({alive:!(null===e||void 0===e||!e.val)}):t==="".concat(o,".connected")?this.setState({connectedToHost:!(null===e||void 0===e||!e.val)}):t==="".concat(this.props.adapter,".").concat(this.props.instance,".info.connection")?this.setState({connected:e?!!e.val:null}):t==="".concat(this.props.adapter,".").concat(this.props.instance,".info.extension")?this.setState({extension:e?!!e.val:null}):t==="".concat(o,".logLevel")&&this.setState({tempLogLevel:e?e.val:null})},this.closeConfig=t=>{if(t.origin===window.location.origin)if("close"===t.data||"close"===t.message)this.props.easyMode?this.props.handleNavigation("easy"):this.props.handleNavigation("tab-instances");else if("change"===t.data||"change"===t.message)this.props.configStored(!1);else if("nochange"===t.data||"nochange"===t.message)this.props.configStored(!0);else if("string"===typeof t.data&&t.data.startsWith("goto:")||"string"===typeof t.message&&t.message.startsWith("goto:")){const[,e]=(t.data||t.message).split(":"),[o,s,i]=e.split("/");this.props.handleNavigation(o,s,i)}},this.state={checkedExist:!1,showStopAdminDialog:!1,running:!1,canStart:!1,alive:!1,connected:!1,connectedToHost:!1,logOnTheFlyValue:!1,logLevel:"info",logLevelValue:"info",tempLogLevel:"info",showLogLevelDialog:!1},this.refIframe=null,this.registered=!1}componentDidUpdate(){var t;!this.registered&&null!==(t=this.refIframe)&&void 0!==t&&t.contentWindow&&(this.registered=!0,this.props.onRegisterIframeRef(this.refIframe))}componentDidMount(){var t;if(this.props.tab)this.props.socket.fileExists("".concat(this.props.adapter,".admin"),"tab.html").then((t=>{if(!t)return this.props.socket.fileExists("".concat(this.props.adapter,".admin"),"tab_m.html").then((t=>t?this.setState({checkedExist:"tab_m.html"}):window.alert("Cannot find tab(_m).html")));this.setState({checkedExist:"tab.html"})}));else{const t="system.adapter.".concat(this.props.adapter,".").concat(this.props.instance);this.props.socket.subscribeObject(t,this.onObjectChange),this.props.socket.getObject(t).then((async e=>{var o,s,i,n,a,r,l,c;const p=await this.props.socket.getState("".concat(t,".logLevel"));await this.props.socket.subscribeState("".concat(t,".logLevel"),this.onStateChange);const h=await this.props.socket.getState("".concat(t,".alive"));await this.props.socket.subscribeState("".concat(t,".alive"),this.onStateChange);const d=await this.props.socket.getState("".concat(t,".connected"));let g,m;await this.props.socket.subscribeState("".concat(t,".connected"),this.onStateChange);try{g=await this.props.socket.getState("".concat(this.props.adapter,".").concat(this.props.instance,".info.connection")),this.props.socket.subscribeState("".concat(this.props.adapter,".").concat(this.props.instance,".info.connection"),this.onStateChange)}catch(v){g=null}try{m=await this.props.socket.getState("".concat(this.props.adapter,".").concat(this.props.instance,".info.extension")),this.props.socket.subscribeState("".concat(this.props.adapter,".").concat(this.props.instance,".info.extension"),this.onStateChange)}catch(u){m=null}this.setState({checkedExist:!0,running:(null===e||void 0===e||null===(o=e.common)||void 0===o?void 0:o.onlyWWW)||(null===e||void 0===e||null===(s=e.common)||void 0===s?void 0:s.enabled),canStart:!(null!==e&&void 0!==e&&null!==(i=e.common)&&void 0!==i&&i.onlyWWW),alive:!(null===h||void 0===h||!h.val),extension:m?!(null===(n=m)||void 0===n||!n.val):null,connectedToHost:!(null===d||void 0===d||!d.val),connected:g?!!g.val:null,logLevel:(null===e||void 0===e||null===(a=e.common)||void 0===a?void 0:a.loglevel)||"info",logLevelValue:(null===e||void 0===e||null===(r=e.common)||void 0===r?void 0:r.loglevel)||"info",tempLogLevel:(null===p||void 0===p?void 0:p.val)||(null===e||void 0===e||null===(l=e.common)||void 0===l?void 0:l.loglevel)||"info",common:(null===e||void 0===e?void 0:e.common)||{},native:(null===e||void 0===e?void 0:e.native)||{},adapterDocLangs:null!==e&&void 0!==e&&null!==(c=e.common)&&void 0!==c&&c.docs?Object.keys(e.common.docs):["en"]})})).catch((t=>{console.error(t),this.setState({checkedExist:!0,running:!1})}))}!this.registered&&null!==(t=this.refIframe)&&void 0!==t&&t.contentWindow&&(this.registered=!0,this.props.onRegisterIframeRef(this.refIframe)),(window.addEventListener||window.attachEvent)(window.addEventListener?"message":"onmessage",this.closeConfig,!1)}getInstanceStatus(){var t,e,o;const s=(null===(t=this.state.common)||void 0===t?void 0:t.mode)||"";let i="daemon"===s?"green":"blue";if(null===(e=this.state.common)||void 0===e||!e.enabled||this.state.common.webExtension&&null!==(o=this.state.native)&&void 0!==o&&o.webInstance&&"daemon"!==s)i="daemon"===s?"grey":"blue";else{var n;if(this.state.common.webExtension&&null!==(n=this.state.native)&&void 0!==n&&n.webInstance&&null!==this.state.extension)return this.state.extension?"green":"red";this.state.connectedToHost&&this.state.alive||(i="daemon"===s?"red":"orangeDevice"),null===this.state.connected||this.state.connected||"red"===i||(i="orange")}return i}componentWillUnmount(){this.props.socket.unsubscribeObject("system.adapter.".concat(this.props.adapter,".").concat(this.props.instance),this.onObjectChange),(window.removeEventListener||window.detachEvent)(window.removeEventListener?"message":"onmessage",this.closeConfig,!1),this.registered&&this.refIframe&&this.props.onUnregisterIframeRef(this.refIframe),this.refIframe=null}renderHelpButton(){return this.props.jsonConfig?(0,u.jsx)("div",{style:{display:"inline-block",position:"absolute",right:0,top:5},children:(0,u.jsx)(c.Tooltip,{title:this.props.t("Show help for this adapter"),slotProps:{popper:{sx:x.tooltip}},children:(0,u.jsx)(c.Fab,{sx:{"&.MuiFab-root":x.button},onClick:()=>{var t;const e=null!==(t=this.state.adapterDocLangs)&&void 0!==t&&t.includes(this.props.lang)?this.props.lang:"en";window.open(v.A.getDocsLinkForAdapter({lang:e,adapterName:this.props.adapter}),"help")},children:(0,u.jsx)(p.Help,{})})})}):null}getConfigurator(){if(this.props.jsonConfig)return(0,u.jsx)(d.JsonConfig,{expertMode:this.props.expertMode,theme:this.props.theme,width:this.props.width,adapterName:this.props.adapter,instance:this.props.instance,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,dateFormat:this.props.dateFormat,isFloatComma:this.props.isFloatComma,configStored:this.props.configStored,t:this.props.t,DeviceManager:m()});const t="adapter/".concat(this.props.adapter,"/")+"".concat(this.props.tab?this.state.checkedExist:this.props.materialize?"index_m.html":"index.html","?")+"".concat(this.props.instance||0,"&newReact=true&").concat(this.props.instance||0,"&react=").concat(this.props.themeName);return this.state.checkedExist?(0,u.jsx)("iframe",{ref:t=>this&&(this.refIframe=t),title:"config",style:this.props.style,src:t}):null}returnStopAdminDialog(){return this.state.showStopAdminDialog?(0,u.jsx)(h.DialogConfirm,{title:this.props.t("Please confirm"),text:this.props.t("stop_admin",this.props.instance),ok:this.props.t("Stop admin"),onClose:t=>{t&&this.props.socket.extendObject("system.adapter.".concat(this.props.adapter,".").concat(this.props.instance),{common:{enabled:!1}}).catch((t=>window.alert(t))),this.setState({showStopAdminDialog:!1})}}):null}renderLogLevelDialog(){return this.state.showLogLevelDialog?(0,u.jsxs)(c.Dialog,{open:!0,onClose:()=>this.setState({showLogLevelDialog:!1}),children:[(0,u.jsx)(c.DialogTitle,{children:this.props.t("Edit log level rule for %s","".concat(this.props.adapter,".").concat(this.props.instance))}),(0,u.jsxs)(c.DialogContent,{children:[(0,u.jsxs)(c.FormControl,{style:(0,s.A)((0,s.A)({},x.formControl),{},{marginTop:10}),variant:"outlined",children:[(0,u.jsx)(c.InputLabel,{children:this.props.t("log level")}),(0,u.jsx)(c.Select,{variant:"standard",value:this.state.logLevelValue,fullWidth:!0,onChange:t=>this.setState({logLevelValue:t.target.value}),children:f.map((t=>(0,u.jsx)(c.MenuItem,{value:t,children:this.props.t(t)},t)))})]}),(0,u.jsxs)(c.FormControl,{style:x.formControl,variant:"outlined",children:[(0,u.jsx)(c.FormControlLabel,{control:(0,u.jsx)(c.Checkbox,{checked:this.state.logOnTheFlyValue,onChange:t=>this.setState({logOnTheFlyValue:t.target.checked})}),label:this.props.t("Without restart")}),(0,u.jsx)(c.FormHelperText,{children:this.state.logOnTheFlyValue?this.props.t("Will be reset to the saved log level after restart of adapter"):this.props.t("Log level will be saved permanently")})]})]}),(0,u.jsxs)(c.DialogActions,{children:[(0,u.jsx)(c.Button,{color:"primary",variant:"contained",onClick:()=>{this.state.logOnTheFlyValue?this.props.socket.setState("system.adapter.".concat(this.props.adapter,".").concat(this.props.instance,".logLevel"),this.state.logLevelValue):this.props.socket.extendObject("system.adapter.".concat(this.props.adapter,".").concat(this.props.instance),{common:{loglevel:this.state.logLevelValue}}).catch((t=>window.alert("Cannot set log level: ".concat(t)))),this.setState({showLogLevelDialog:!1})},children:this.props.t("Ok")}),(0,u.jsx)(c.Button,{color:"grey",variant:"contained",onClick:()=>this.setState({showLogLevelDialog:!1}),children:this.props.t("Cancel")})]})]}):null}render(){return(0,u.jsxs)(c.Paper,{style:x.root,children:[(0,u.jsx)(c.AppBar,{color:"default",position:"static",children:(0,u.jsxs)(c.Toolbar,{variant:"dense",style:{marginLeft:8},children:[(0,u.jsxs)(c.Typography,{variant:"h6",color:"inherit",children:[(0,u.jsx)(c.IconButton,{size:"small",onClick:()=>{this.props.easyMode?this.props.handleNavigation("easy"):this.props.handleNavigation("tab-instances")},onFocus:t=>t.stopPropagation(),style:{marginRight:10},children:(0,u.jsx)(p.ArrowBack,{})}),this.props.jsonConfig?(0,u.jsx)(h.Icon,{src:this.props.icon,style:x.instanceIcon}):null,"".concat(this.props.t("Instance settings"),": ").concat(this.props.adapter,".").concat(this.props.instance),this.props.version?(0,u.jsxs)("span",{style:(0,s.A)((0,s.A)({},x.version),x[this.getInstanceStatus()]),children:["v",this.props.version]}):null,(0,u.jsx)(c.Tooltip,{title:this.props.t("Start/stop"),slotProps:{popper:{sx:x.tooltip}},children:(0,u.jsx)("span",{children:(0,u.jsx)(c.IconButton,{size:"small",onClick:t=>{t.stopPropagation(),t.preventDefault(),this.state.running&&"".concat(this.props.adapter,".").concat(this.props.instance)===this.props.adminInstance?this.setState({showStopAdminDialog:!0}):this.props.socket.extendObject("system.adapter.".concat(this.props.adapter,".").concat(this.props.instance),{common:{enabled:!this.state.running}}).catch((t=>window.alert("Cannot set log level: ".concat(t))))},onFocus:t=>t.stopPropagation(),sx:(0,s.A)((0,s.A)({},x.buttonControl),this.state.canStart?this.state.running?x.enabled:x.disabled:x.hide),children:this.state.running?(0,u.jsx)(p.Pause,{}):(0,u.jsx)(p.PlayArrow,{})})})}),(0,u.jsx)(c.Tooltip,{title:this.props.t("Restart"),slotProps:{popper:{sx:x.tooltip}},children:(0,u.jsx)("span",{children:(0,u.jsx)(c.IconButton,{size:"small",onClick:t=>{t.stopPropagation(),this.props.socket.extendObject("system.adapter.".concat(this.props.adapter,".").concat(this.props.instance),{}).catch((t=>window.alert("Cannot set log level: ".concat(t))))},onFocus:t=>t.stopPropagation(),style:(0,s.A)((0,s.A)({},x.buttonControl),this.state.canStart?void 0:x.hide),disabled:!this.state.running,children:(0,u.jsx)(p.Refresh,{})})})}),this.state.tempLogLevel!==this.state.logLevel?(0,u.jsx)(c.Tooltip,{title:this.props.t("temporary log level"),slotProps:{popper:{sx:x.tooltip}},children:(0,u.jsx)("span",{style:x.logLevel,children:this.state.tempLogLevel})}):null,(0,u.jsx)(c.Tooltip,{title:this.props.t("log level"),slotProps:{popper:{sx:x.tooltip}},children:(0,u.jsx)("span",{style:x.logLevel,children:this.state.tempLogLevel!==this.state.logLevel?"/ ".concat(this.state.logLevel):this.state.logLevel})}),(0,u.jsx)(c.Tooltip,{title:this.props.t("Edit log level rule for %s","".concat(this.props.adapter,".").concat(this.props.instance)),children:(0,u.jsx)(c.IconButton,{size:"small",onClick:t=>{t.stopPropagation(),this.setState({showLogLevelDialog:!0})},onFocus:t=>t.stopPropagation(),style:(0,s.A)((0,s.A)((0,s.A)({},x.buttonControl),this.state.canStart?void 0:x.hide),{},{width:34,height:34}),children:(0,u.jsx)(p.Edit,{style:{width:20,height:20}})})})]}),this.renderHelpButton()]})}),this.getConfigurator(),this.returnStopAdminDialog(),this.renderLogLevelDialog()]})}}const w=b},58222:(t,e,o)=>{o.r(e),o.d(e,{default:()=>v});var s=o(89379),i=o(28437),n=o(89303),a=o(32075),r=o(16904),l=o(66875),c=o(70579);const p={root:t=>({position:"relative",m:"10px",width:300,minHeight:200,background:t.palette.background.default,boxShadow:"0 2px 2px 0 rgba(0, 0, 0, .14),0 3px 1px -2px rgba(0, 0, 0, .12),0 1px 5px 0 rgba(0, 0, 0, .2)",display:"flex",transition:"box-shadow 0.5s",cursor:"pointer","&:hover":{boxShadow:"0 8px 17px 0 rgba(0, 0, 0, .2),0 6px 20px 0 rgba(0, 0, 0, .19)"}}),imageBlock:{background:"silver",minHeight:60,display:"flex",padding:"0 10px 0 10px",position:"relative",justifyContent:"space-between",transition:"background 0.5s"},img:{width:60,height:60,marginTop:20,position:"relative","&:after":{content:'""',position:"absolute",zIndex:2,top:0,left:0,width:"100%",height:"100%",background:'url("img/no-image.png") 100% 100% no-repeat',backgroundSize:"cover",backgroundColor:"#fff"}},adapter:{width:"100%",fontWeight:"bold",fontSize:15,verticalAlign:"middle",marginTop:"auto",borderTop:"1px solid silver",padding:"20px 4px",textAlign:"center",textTransform:"uppercase",textOverflow:"ellipsis",overflow:"hidden",color:"#ffab40"},instanceStateNotAlive1:{backgroundColor:"rgba(192, 192, 192, 0.4)"},wrapperDesc:{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"},desc:{padding:20,fontSize:15}};function h(t,e){return t&&"object"===typeof t?t[e]||t.en||"":t||""}const d=t=>{let{icon:e,id:o,desc:i,lang:a,navigate:r}=t;return(0,c.jsxs)(n.Card,{onClick:r,sx:p.root,children:[(0,c.jsx)("div",{style:(0,s.A)((0,s.A)({},p.imageBlock),p.instanceStateNotAlive1),children:(0,c.jsx)(n.CardMedia,{sx:p.img,component:"img",image:"adapter/".concat(o.split(".")[0],"/").concat(e)})}),(0,c.jsxs)("div",{style:p.wrapperDesc,children:[(0,c.jsx)("div",{style:p.desc,children:h(i,a)}),(0,c.jsx)("div",{style:p.adapter,children:o})]})]})},g={appBar:t=>({transition:t.transitions.create(["margin","width"],{easing:t.transitions.easing.sharp,duration:t.transitions.duration.leavingScreen})}),wrapperEasyMode:{height:"100%",borderRadius:0},wrapperCard:{padding:"80px 20px 20px",height:"100%",overflowY:"auto"},controlHeight:{display:"flex",flexFlow:"wrap",justifyContent:"center"},img:{width:60,height:60,position:"relative",borderRadius:60},logoWhite:{background:"white"},wrapperHeader:{display:"flex",alignItems:"center"},headerName:{fontSize:24,marginLeft:10},toolBar:{justifyContent:"space-between",margin:"5px 0"},paper:{height:"100%",paddingTop:80},iframe:{height:"100%",width:"100%",background:"#FFF",color:"#000",borderRadius:5,border:"1px solid #888"},IconButtons:{display:"flex"},logoPointer:{cursor:"pointer"}};class m extends i.Component{constructor(t){super(t),this.state={configs:this.props.configs,strictMode:!this.props.configs}}componentDidMount(){this.props.configs||this.props.socket.getEasyMode().then((t=>this.setState({configs:t.configs})))}render(){const{t:t,themeName:e,toggleTheme:o,navigate:i,location:p,socket:h,themeType:m,theme:v,width:u,isFloatComma:f,dateFormat:x,configStored:b,getLocation:w,adminInstance:y}=this.props,{configs:j,strictMode:C}=this.state;if(!j)return(0,c.jsx)(n.CircularProgress,{});const k=p.id,S=j.find((t=>{let{id:e}=t;return e===k}));return(0,c.jsxs)(n.Paper,{style:g.wrapperEasyMode,children:[(0,c.jsx)(n.AppBar,{color:"default",position:"fixed",sx:g.appBar,children:(0,c.jsxs)(n.Toolbar,{style:g.toolBar,children:[(0,c.jsxs)("div",{style:g.wrapperHeader,children:[(0,c.jsx)(n.CardMedia,{onClick:C&&!w().dialog||null!==S&&void 0!==S&&S.tab?()=>i(null!==S&&void 0!==S&&S.tab?"easy":"tab-intro"):null,style:(0,s.A)((0,s.A)((0,s.A)({},g.img),"colored"===e?g.logoWhite:void 0),C&&!w().dialog||null!==S&&void 0!==S&&S.tab?g.logoPointer:void 0),component:"img",image:"img/no-image.png"}),(0,c.jsx)("div",{style:g.headerName,children:t("Easy Admin")})]}),(0,c.jsxs)("div",{style:g.IconButtons,children:[(C&&!w().dialog||(null===S||void 0===S?void 0:S.tab))&&(0,c.jsx)(n.IconButton,{size:"large",onClick:()=>i(null!==S&&void 0!==S&&S.tab?"easy":"tab-intro"),children:(0,c.jsx)(a.ArrowBack,{})}),(0,c.jsx)(r.ToggleThemeMenu,{t:t,toggleTheme:o,themeName:e,size:"large"})]})]})}),S?(0,c.jsx)(n.Paper,{style:g.paper,children:(0,c.jsx)(l.A,{expertMode:!0,style:g.iframe,adapter:S.id.split(".")[0],instance:parseInt(S.id.split(".")[1],10),jsonConfig:S.jsonConfig,materialize:S.materialize,tab:null===S||void 0===S?void 0:S.tab,socket:h,easyMode:!0,themeName:e,themeType:m,theme:v,width:u,t:t,lang:this.props.lang,icon:S.icon,adminInstance:y,configStored:b,dateFormat:x,isFloatComma:f,onRegisterIframeRef:t=>this.props.onRegisterIframeRef(t),onUnregisterIframeRef:t=>this.props.onUnregisterIframeRef(t),handleNavigation:this.props.handleNavigation})}):(0,c.jsx)("div",{style:g.wrapperCard,children:(0,c.jsx)("div",{style:g.controlHeight,children:j.sort(((t,e)=>t.id<e.id?-1:t.id>e.id?1:0)).map((t=>(0,c.jsx)(d,(0,s.A)({lang:this.props.lang,navigate:()=>i(null,"config",t.id)},t),t.id)))})})]})}}const v=m}}]);
|
|
2
|
-
//# sourceMappingURL=8222.399b9b24.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/8222.399b9b24.chunk.js","mappings":"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","sources":["tabs/Config.tsx","components/EasyModeCard.tsx","tabs/EasyMode.tsx"],"sourcesContent":["import React, { Component, type JSX } from 'react';\n\nimport { green, grey, orange, red } from '@mui/material/colors';\n\nimport {\n AppBar,\n Tooltip,\n Paper,\n Fab,\n Toolbar,\n Typography,\n Checkbox,\n FormControl,\n FormControlLabel,\n FormHelperText,\n IconButton,\n InputLabel,\n MenuItem,\n Select,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n} from '@mui/material';\n\nimport {\n Help as HelpIcon,\n Pause as PauseIcon,\n PlayArrow as PlayArrowIcon,\n Refresh as RefreshIcon,\n Edit as EditIcon,\n ArrowBack,\n} from '@mui/icons-material';\n\nimport {\n Icon,\n DialogConfirm,\n type IobTheme,\n type AdminConnection,\n type ThemeName,\n type ThemeType,\n type Translate,\n} from '@iobroker/adapter-react-v5';\n\nimport { type DeviceManagerPropsProps, JsonConfig } from '@iobroker/json-config';\nimport DeviceManager from '@iobroker/dm-gui-components';\n\nimport AdminUtils from '../helpers/AdminUtils';\n\nconst arrayLogLevel: ioBroker.LogLevel[] = ['silly', 'debug', 'info', 'warn', 'error'];\n\ndeclare global {\n interface Window {\n // @deprecated\n attachEvent: any;\n // @deprecated\n detachEvent: any;\n }\n}\n\nconst styles: Record<string, any> = {\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n },\n scroll: {\n height: '100%',\n overflowY: 'auto',\n },\n instanceIcon: {\n width: 42,\n height: 42,\n marginRight: 16,\n verticalAlign: 'middle',\n },\n button: {\n marginRight: 5,\n width: 36,\n height: 36,\n },\n version: {\n fontSize: 12,\n opacity: 0.8,\n marginLeft: 20,\n marginRight: 10,\n },\n versionAliveConnected: (theme: IobTheme) => ({\n color: theme.palette.mode === 'dark' ? '#23a623' : '#60ff60',\n }),\n versionAliveNotConnected: {\n color: '#a67223',\n },\n buttonControl: {\n padding: '5px',\n transition: 'opacity 0.2s',\n height: 34,\n },\n enabled: {\n color: green[400],\n '&:hover': {\n backgroundColor: green[200],\n },\n },\n disabled: {\n color: red[400],\n '&:hover': {\n backgroundColor: red[200],\n },\n },\n hide: {\n visibility: 'hidden',\n },\n formControl: {\n width: '100%',\n marginBottom: 5,\n },\n logLevel: {\n fontSize: 12,\n marginLeft: 10,\n },\n green: {\n color: green[700],\n },\n red: {\n color: red[700],\n },\n grey: {\n color: grey[700],\n },\n blue: {\n color: '#0055a9',\n },\n orange: {\n color: orange[400],\n },\n orangeDevice: {\n color: orange[300],\n },\n tooltip: {\n pointerEvents: 'none',\n },\n};\n\ninterface ConfigProps {\n adapter: string;\n instance: number;\n materialize: boolean;\n tab?: boolean;\n expertMode: boolean;\n jsonConfig: boolean;\n socket: AdminConnection;\n themeName: ThemeName;\n themeType: ThemeType;\n t: Translate;\n isFloatComma: boolean;\n dateFormat: string;\n style: Record<string, React.CSSProperties>;\n icon: string;\n lang: ioBroker.Languages;\n easyMode?: boolean;\n adminInstance: string;\n onRegisterIframeRef: (ref: HTMLIFrameElement) => void;\n onUnregisterIframeRef: (ref: HTMLIFrameElement) => void;\n configStored: (allStored: boolean) => void;\n theme: IobTheme;\n width: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n version?: string;\n handleNavigation: (tab: string, subTab?: string, param?: string) => void;\n}\n\ninterface ConfigState {\n checkedExist: boolean | string;\n showStopAdminDialog: boolean;\n running: boolean;\n canStart: boolean;\n alive: boolean;\n connected: boolean | null;\n connectedToHost: boolean;\n logOnTheFlyValue: boolean;\n logLevel: ioBroker.LogLevel;\n logLevelValue: ioBroker.LogLevel;\n tempLogLevel: ioBroker.LogLevel;\n common?: Record<string, any>;\n native?: Record<string, any>;\n adapterDocLangs?: ioBroker.Languages[];\n extension?: boolean | null;\n showLogLevelDialog: boolean;\n}\n\nclass Config extends Component<ConfigProps, ConfigState> {\n private refIframe: HTMLIFrameElement | null;\n\n private registered: boolean;\n\n constructor(props: ConfigProps) {\n super(props);\n\n this.state = {\n checkedExist: false,\n showStopAdminDialog: false,\n running: false,\n canStart: false,\n alive: false,\n connected: false,\n connectedToHost: false,\n logOnTheFlyValue: false,\n logLevel: 'info',\n logLevelValue: 'info',\n tempLogLevel: 'info',\n showLogLevelDialog: false,\n };\n\n this.refIframe = null;\n this.registered = false;\n }\n\n componentDidUpdate(/* prevProps, prevState, snapshot */): void {\n if (!this.registered && this.refIframe?.contentWindow) {\n this.registered = true;\n this.props.onRegisterIframeRef(this.refIframe);\n }\n }\n\n componentDidMount(): void {\n // receive messages from IFRAME\n if (this.props.tab) {\n void this.props.socket.fileExists(`${this.props.adapter}.admin`, 'tab.html').then(exist => {\n if (exist) {\n this.setState({ checkedExist: 'tab.html' });\n } else {\n return this.props.socket\n .fileExists(`${this.props.adapter}.admin`, 'tab_m.html')\n .then(exists =>\n exists\n ? this.setState({ checkedExist: 'tab_m.html' })\n : window.alert('Cannot find tab(_m).html'),\n );\n }\n });\n } else {\n // this.props.socket.getState('system.adapter.' + this.props.adapter + '.' + this.props.instance + '.')\n const instanceId = `system.adapter.${this.props.adapter}.${this.props.instance}`;\n void this.props.socket.subscribeObject(instanceId, this.onObjectChange);\n this.props.socket\n .getObject(instanceId)\n .then(async obj => {\n const tempLogLevel = await this.props.socket.getState(`${instanceId}.logLevel`);\n await this.props.socket.subscribeState(`${instanceId}.logLevel`, this.onStateChange);\n\n const alive = await this.props.socket.getState(`${instanceId}.alive`);\n await this.props.socket.subscribeState(`${instanceId}.alive`, this.onStateChange);\n\n const connectedToHost = await this.props.socket.getState(`${instanceId}.connected`);\n await this.props.socket.subscribeState(`${instanceId}.connected`, this.onStateChange);\n\n let connected;\n try {\n connected = await this.props.socket.getState(\n `${this.props.adapter}.${this.props.instance}.info.connection`,\n );\n void this.props.socket.subscribeState(\n `${this.props.adapter}.${this.props.instance}.info.connection`,\n this.onStateChange,\n );\n } catch {\n // ignore\n connected = null;\n }\n\n let extension;\n try {\n extension = await this.props.socket.getState(\n `${this.props.adapter}.${this.props.instance}.info.extension`,\n );\n void this.props.socket.subscribeState(\n `${this.props.adapter}.${this.props.instance}.info.extension`,\n this.onStateChange,\n );\n } catch {\n // ignore\n extension = null;\n }\n\n this.setState({\n checkedExist: true,\n running: obj?.common?.onlyWWW || obj?.common?.enabled,\n canStart: !obj?.common?.onlyWWW,\n alive: !!alive?.val,\n extension: extension ? !!extension?.val : null,\n connectedToHost: !!connectedToHost?.val,\n connected: connected ? !!connected.val : null,\n logLevel: obj?.common?.loglevel || 'info',\n logLevelValue: obj?.common?.loglevel || 'info',\n tempLogLevel: tempLogLevel?.val || obj?.common?.loglevel || 'info',\n common: obj?.common || {},\n native: obj?.native || {},\n adapterDocLangs: obj?.common?.docs\n ? (Object.keys(obj.common.docs) as ioBroker.Languages[])\n : ['en'],\n });\n })\n .catch(error => {\n console.error(error);\n this.setState({ checkedExist: true, running: false });\n });\n }\n\n if (!this.registered && this.refIframe?.contentWindow) {\n this.registered = true;\n this.props.onRegisterIframeRef(this.refIframe);\n }\n\n (window.addEventListener || window.attachEvent)(\n window.addEventListener ? 'message' : 'onmessage',\n this.closeConfig,\n false,\n );\n }\n\n onObjectChange = (id: string, obj: ioBroker.InstanceObject | null): void => {\n if (id === `system.adapter.${this.props.adapter}.${this.props.instance}`) {\n this.setState({\n running: obj?.common?.onlyWWW || obj?.common?.enabled,\n canStart: !obj?.common?.onlyWWW,\n logLevel: obj?.common?.loglevel || 'info',\n });\n }\n };\n\n // returns:\n // grey - daemon / disabled\n // green - daemon / run,connected,alive\n // blue - schedule\n // orangeDevice - daemon / run, connected to controller, not connected to device\n // orange - daemon / run,not connected\n // red - daemon / not run, not connected\n getInstanceStatus(): string {\n const mode = this.state.common?.mode || '';\n let status = mode === 'daemon' ? 'green' : 'blue';\n\n if (\n this.state.common?.enabled &&\n (!this.state.common.webExtension || !this.state.native?.webInstance || mode === 'daemon')\n ) {\n if (this.state.common.webExtension && this.state.native?.webInstance) {\n if (this.state.extension !== null) {\n return this.state.extension ? 'green' : 'red';\n }\n }\n\n if (!this.state.connectedToHost || !this.state.alive) {\n status = mode === 'daemon' ? 'red' : 'orangeDevice';\n }\n if (this.state.connected !== null && !this.state.connected && status !== 'red') {\n status = 'orange';\n }\n } else {\n status = mode === 'daemon' ? 'grey' : 'blue';\n }\n\n return status;\n }\n\n onStateChange = (id: string, state?: ioBroker.State | null): void => {\n const instanceId = `system.adapter.${this.props.adapter}.${this.props.instance}`;\n if (id === `${instanceId}.alive`) {\n this.setState({ alive: !!state?.val });\n } else if (id === `${instanceId}.connected`) {\n this.setState({ connectedToHost: !!state?.val });\n } else if (id === `${this.props.adapter}.${this.props.instance}.info.connection`) {\n this.setState({ connected: state ? !!state.val : null });\n } else if (id === `${this.props.adapter}.${this.props.instance}.info.extension`) {\n this.setState({ extension: state ? !!state.val : null });\n } else if (id === `${instanceId}.logLevel`) {\n this.setState({ tempLogLevel: state ? (state.val as ioBroker.LogLevel) : null });\n }\n };\n\n componentWillUnmount(): void {\n void this.props.socket.unsubscribeObject(\n `system.adapter.${this.props.adapter}.${this.props.instance}`,\n this.onObjectChange,\n );\n\n (window.removeEventListener || window.detachEvent)(\n window.removeEventListener ? 'message' : 'onmessage',\n this.closeConfig,\n false,\n );\n\n if (this.registered && this.refIframe) {\n this.props.onUnregisterIframeRef(this.refIframe);\n }\n this.refIframe = null;\n }\n\n closeConfig = (event: MessageEvent & { message: string }): void => {\n if (event.origin !== window.location.origin) {\n return;\n }\n\n if (event.data === 'close' || event.message === 'close') {\n if (this.props.easyMode) {\n this.props.handleNavigation('easy');\n } else {\n this.props.handleNavigation('tab-instances');\n }\n } else if (event.data === 'change' || event.message === 'change') {\n this.props.configStored(false);\n } else if (event.data === 'nochange' || event.message === 'nochange') {\n this.props.configStored(true);\n } else if (\n (typeof event.data === 'string' && event.data.startsWith('goto:')) ||\n (typeof event.message === 'string' && event.message.startsWith('goto:'))\n ) {\n const [, url] = (event.data || event.message).split(':');\n const [tab, subTab, parameter] = url.split('/');\n this.props.handleNavigation(tab, subTab, parameter);\n }\n };\n\n renderHelpButton(): JSX.Element | null {\n if (this.props.jsonConfig) {\n return (\n <div\n style={{\n display: 'inline-block',\n position: 'absolute',\n right: 0,\n top: 5,\n }}\n >\n <Tooltip\n title={this.props.t('Show help for this adapter')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <Fab\n sx={{ '&.MuiFab-root': styles.button }}\n onClick={() => {\n const lang = this.state.adapterDocLangs?.includes(this.props.lang)\n ? this.props.lang\n : 'en';\n window.open(\n AdminUtils.getDocsLinkForAdapter({ lang, adapterName: this.props.adapter }),\n 'help',\n );\n }}\n >\n <HelpIcon />\n </Fab>\n </Tooltip>\n </div>\n );\n }\n return null;\n }\n\n getConfigurator(): JSX.Element | null {\n if (this.props.jsonConfig) {\n return (\n <JsonConfig\n expertMode={this.props.expertMode}\n theme={this.props.theme}\n width={this.props.width}\n adapterName={this.props.adapter}\n instance={this.props.instance}\n socket={this.props.socket}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n configStored={this.props.configStored}\n t={this.props.t}\n DeviceManager={DeviceManager as unknown as React.FC<DeviceManagerPropsProps>}\n />\n );\n }\n const src =\n `adapter/${this.props.adapter}/` +\n `${this.props.tab ? this.state.checkedExist : this.props.materialize ? 'index_m.html' : 'index.html'}?` +\n `${this.props.instance || 0}&newReact=true&${this.props.instance || 0}&react=${this.props.themeName}`;\n\n if (this.state.checkedExist) {\n return (\n <iframe\n ref={el => this && (this.refIframe = el)}\n title=\"config\"\n style={this.props.style}\n src={src}\n ></iframe>\n );\n }\n return null;\n }\n\n returnStopAdminDialog(): JSX.Element | null {\n return this.state.showStopAdminDialog ? (\n <DialogConfirm\n title={this.props.t('Please confirm')}\n text={this.props.t('stop_admin', this.props.instance)}\n ok={this.props.t('Stop admin')}\n onClose={result => {\n if (result) {\n this.props.socket\n .extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`, {\n common: { enabled: false },\n })\n .catch(error => window.alert(error));\n }\n this.setState({ showStopAdminDialog: false });\n }}\n />\n ) : null;\n }\n\n renderLogLevelDialog(): JSX.Element | null {\n if (!this.state.showLogLevelDialog) {\n return null;\n }\n return (\n <Dialog\n open={!0}\n onClose={() => this.setState({ showLogLevelDialog: false })}\n >\n <DialogTitle>\n {this.props.t('Edit log level rule for %s', `${this.props.adapter}.${this.props.instance}`)}\n </DialogTitle>\n <DialogContent>\n <FormControl\n style={{ ...styles.formControl, marginTop: 10 }}\n variant=\"outlined\"\n >\n <InputLabel>{this.props.t('log level')}</InputLabel>\n <Select\n variant=\"standard\"\n value={this.state.logLevelValue}\n fullWidth\n onChange={el => this.setState({ logLevelValue: el.target.value as ioBroker.LogLevel })}\n >\n {arrayLogLevel.map(el => (\n <MenuItem\n key={el}\n value={el}\n >\n {this.props.t(el)}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <FormControl\n style={styles.formControl}\n variant=\"outlined\"\n >\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.logOnTheFlyValue}\n onChange={e => this.setState({ logOnTheFlyValue: e.target.checked })}\n />\n }\n label={this.props.t('Without restart')}\n />\n <FormHelperText>\n {this.state.logOnTheFlyValue\n ? this.props.t('Will be reset to the saved log level after restart of adapter')\n : this.props.t('Log level will be saved permanently')}\n </FormHelperText>\n </FormControl>\n </DialogContent>\n <DialogActions>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => {\n if (this.state.logOnTheFlyValue) {\n void this.props.socket.setState(\n `system.adapter.${this.props.adapter}.${this.props.instance}.logLevel`,\n this.state.logLevelValue,\n );\n } else {\n this.props.socket\n .extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`, {\n common: { loglevel: this.state.logLevelValue },\n })\n .catch(error => window.alert(`Cannot set log level: ${error}`));\n }\n this.setState({ showLogLevelDialog: false });\n }}\n >\n {this.props.t('Ok')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({ showLogLevelDialog: false })}\n >\n {this.props.t('Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n render(): JSX.Element {\n return (\n <Paper style={styles.root}>\n <AppBar\n color=\"default\"\n position=\"static\"\n >\n <Toolbar\n variant=\"dense\"\n style={{ marginLeft: 8 }}\n >\n <Typography\n variant=\"h6\"\n color=\"inherit\"\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n if (this.props.easyMode) {\n this.props.handleNavigation('easy');\n } else {\n this.props.handleNavigation('tab-instances');\n }\n }}\n onFocus={event => event.stopPropagation()}\n style={{\n marginRight: 10,\n }}\n >\n <ArrowBack />\n </IconButton>\n {this.props.jsonConfig ? (\n <Icon\n src={this.props.icon}\n style={styles.instanceIcon}\n />\n ) : null}\n {`${this.props.t('Instance settings')}: ${this.props.adapter}.${this.props.instance}`}\n {this.props.version ? (\n <span\n style={{\n ...styles.version,\n ...styles[this.getInstanceStatus()],\n }}\n >\n v{this.props.version}\n </span>\n ) : null}\n <Tooltip\n title={this.props.t('Start/stop')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <span>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n if (\n this.state.running &&\n `${this.props.adapter}.${this.props.instance}` ===\n this.props.adminInstance\n ) {\n this.setState({ showStopAdminDialog: true });\n } else {\n this.props.socket\n .extendObject(\n `system.adapter.${this.props.adapter}.${this.props.instance}`,\n { common: { enabled: !this.state.running } },\n )\n .catch(error => window.alert(`Cannot set log level: ${error}`));\n }\n }}\n onFocus={event => event.stopPropagation()}\n sx={{\n ...styles.buttonControl,\n ...(this.state.canStart\n ? this.state.running\n ? styles.enabled\n : styles.disabled\n : styles.hide),\n }}\n >\n {this.state.running ? <PauseIcon /> : <PlayArrowIcon />}\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip\n title={this.props.t('Restart')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <span>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n this.props.socket\n .extendObject(\n `system.adapter.${this.props.adapter}.${this.props.instance}`,\n {},\n )\n .catch(error => window.alert(`Cannot set log level: ${error}`));\n }}\n onFocus={event => event.stopPropagation()}\n style={{\n ...styles.buttonControl,\n ...(!this.state.canStart ? styles.hide : undefined),\n }}\n disabled={!this.state.running}\n >\n <RefreshIcon />\n </IconButton>\n </span>\n </Tooltip>\n {this.state.tempLogLevel !== this.state.logLevel ? (\n <Tooltip\n title={this.props.t('temporary log level')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <span style={styles.logLevel}>{this.state.tempLogLevel}</span>\n </Tooltip>\n ) : null}\n <Tooltip\n title={this.props.t('log level')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <span style={styles.logLevel}>\n {this.state.tempLogLevel !== this.state.logLevel\n ? `/ ${this.state.logLevel}`\n : this.state.logLevel}\n </span>\n </Tooltip>\n <Tooltip\n title={this.props.t(\n 'Edit log level rule for %s',\n `${this.props.adapter}.${this.props.instance}`,\n )}\n >\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n this.setState({ showLogLevelDialog: true });\n }}\n onFocus={event => event.stopPropagation()}\n style={{\n ...styles.buttonControl,\n ...(!this.state.canStart ? styles.hide : undefined),\n width: 34,\n height: 34,\n }}\n >\n <EditIcon style={{ width: 20, height: 20 }} />\n </IconButton>\n </Tooltip>\n {/* <IsVisible config={item} name=\"allowInstanceLink\">\n <Tooltip title={this.props.t('Instance link %s', this.props.instanceItem?.id)}>\n <span>\n <IconButton\n size=\"small\"\n className={Utils.clsx(classes.buttonControl, (!this.props.instanceItem?.links || !this.props.instanceItem?.links[0]) && classes.hide)}\n disabled={!this.state.running}\n onClick={event => {\n event.stopPropagation();\n if (this.props.instanceItem?.links.length === 1) {\n // replace IPv6 Address with [ipv6]:port\n let url = this.props.instanceItem?.links[0].link;\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//[$1]$2/');\n window.open(url, this.props.instanceItem?.id);\n } else {\n setShowLinks(true);\n }\n }}\n onFocus={event => event.stopPropagation()}\n >\n <InputIcon />\n </IconButton>\n </div>\n </Tooltip>\n </IsVisible> */}\n </Typography>\n {this.renderHelpButton()}\n </Toolbar>\n </AppBar>\n {this.getConfigurator()}\n {this.returnStopAdminDialog()}\n {this.renderLogLevelDialog()}\n </Paper>\n );\n }\n}\n\nexport default Config;\n","import React, { type JSX } from 'react';\nimport { Card, CardMedia } from '@mui/material';\n\nimport { type IobTheme } from '@iobroker/adapter-react-v5';\n\nconst boxShadow = '0 2px 2px 0 rgba(0, 0, 0, .14),0 3px 1px -2px rgba(0, 0, 0, .12),0 1px 5px 0 rgba(0, 0, 0, .2)';\nconst boxShadowHover = '0 8px 17px 0 rgba(0, 0, 0, .2),0 6px 20px 0 rgba(0, 0, 0, .19)';\n\nconst styles: Record<string, any> = {\n root: (theme: IobTheme) => ({\n position: 'relative',\n m: '10px',\n width: 300,\n minHeight: 200,\n background: theme.palette.background.default,\n boxShadow,\n display: 'flex',\n transition: 'box-shadow 0.5s',\n cursor: 'pointer',\n '&:hover': {\n boxShadow: boxShadowHover,\n },\n }),\n imageBlock: {\n background: 'silver',\n minHeight: 60,\n display: 'flex',\n padding: '0 10px 0 10px',\n position: 'relative',\n justifyContent: 'space-between',\n transition: 'background 0.5s',\n },\n img: {\n width: 60,\n height: 60,\n marginTop: 20,\n position: 'relative',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n zIndex: 2,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n background: 'url(\"img/no-image.png\") 100% 100% no-repeat',\n backgroundSize: 'cover',\n backgroundColor: '#fff',\n },\n },\n adapter: {\n width: '100%',\n fontWeight: 'bold',\n fontSize: 15,\n verticalAlign: 'middle',\n marginTop: 'auto',\n borderTop: '1px solid silver',\n padding: '20px 4px',\n textAlign: 'center',\n textTransform: 'uppercase',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n color: '#ffab40',\n },\n instanceStateNotAlive1: {\n backgroundColor: 'rgba(192, 192, 192, 0.4)',\n },\n wrapperDesc: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n overflow: 'hidden',\n },\n desc: {\n padding: 20,\n fontSize: 15,\n },\n};\n\nfunction getText(text: ioBroker.StringOrTranslated, lang: ioBroker.Languages): string {\n if (text && typeof text === 'object') {\n return text[lang] || text.en || '';\n }\n return (text as string) || '';\n}\n\ninterface EasyModeCardProps {\n icon: string;\n id: string;\n desc: ioBroker.StringOrTranslated;\n lang: ioBroker.Languages;\n navigate: () => void;\n}\n\nconst EasyModeCard = ({ icon, id, desc, lang, navigate }: EasyModeCardProps): JSX.Element => (\n <Card\n onClick={navigate}\n sx={styles.root}\n >\n <div style={{ ...styles.imageBlock, ...styles.instanceStateNotAlive1 }}>\n <CardMedia\n sx={styles.img}\n component=\"img\"\n image={`adapter/${id.split('.')[0]}/${icon}`}\n />\n </div>\n <div style={styles.wrapperDesc}>\n <div style={styles.desc}>{getText(desc, lang)}</div>\n <div style={styles.adapter}>{id}</div>\n </div>\n </Card>\n);\n\nexport default EasyModeCard;\n","import React, { Component, type JSX } from 'react';\n\nimport { AppBar, CardMedia, CircularProgress, IconButton, Paper, Toolbar } from '@mui/material';\n\nimport { ArrowBack as ArrowBackIcon } from '@mui/icons-material';\n\nimport {\n ToggleThemeMenu,\n type IobTheme,\n type AdminConnection,\n type ThemeType,\n type ThemeName,\n type Translate,\n} from '@iobroker/adapter-react-v5';\n\nimport Config from './Config';\nimport EasyModeCard from '../components/EasyModeCard';\n\nconst styles: Record<string, any> = {\n appBar: (theme: IobTheme) => ({\n transition: theme.transitions.create(['margin', 'width'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n }),\n wrapperEasyMode: {\n height: '100%',\n borderRadius: 0,\n },\n wrapperCard: {\n padding: '80px 20px 20px',\n height: '100%',\n overflowY: 'auto',\n },\n controlHeight: {\n display: 'flex',\n flexFlow: 'wrap',\n justifyContent: 'center',\n },\n img: {\n width: 60,\n height: 60,\n position: 'relative',\n borderRadius: 60,\n },\n logoWhite: {\n background: 'white',\n },\n wrapperHeader: {\n display: 'flex',\n alignItems: 'center',\n },\n headerName: {\n fontSize: 24,\n marginLeft: 10,\n },\n toolBar: {\n justifyContent: 'space-between',\n margin: '5px 0',\n },\n paper: {\n height: '100%',\n paddingTop: 80,\n },\n iframe: {\n height: '100%',\n width: '100%',\n background: '#FFF',\n color: '#000',\n borderRadius: 5,\n border: '1px solid #888',\n },\n IconButtons: {\n display: 'flex',\n },\n logoPointer: {\n cursor: 'pointer',\n },\n};\n\nexport interface InstanceConfig {\n id: string;\n title: ioBroker.StringOrTranslated;\n desc: ioBroker.StringOrTranslated;\n color: string;\n url: string;\n icon: string;\n materialize: boolean;\n jsonConfig: boolean;\n version: string;\n tab?: boolean;\n config?: boolean;\n}\n\ninterface EasyModeConfig {\n strict: boolean;\n configs: InstanceConfig[];\n}\n\ninterface EasyModeProps {\n themeName: ThemeName;\n toggleTheme: () => void;\n t: Translate;\n lang: ioBroker.Languages;\n navigate: (tab: string | undefined | null, dialog?: string | null, id?: string | null, arg?: string | null) => void;\n location: {\n tab: string;\n dialog?: string;\n id?: string;\n arg?: string;\n };\n socket: AdminConnection;\n themeType: ThemeType;\n theme: IobTheme;\n width: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n isFloatComma: boolean;\n dateFormat: string;\n configStored: (changed: boolean) => void;\n getLocation: () => {\n tab: string;\n dialog: string;\n id: string;\n arg: string;\n };\n onRegisterIframeRef: (ref: HTMLIFrameElement) => void;\n onUnregisterIframeRef: (ref: HTMLIFrameElement) => void;\n configs?: InstanceConfig[];\n adminInstance: string;\n handleNavigation: (tab: string, subTab?: string, param?: string) => void;\n}\n\ninterface EasyModeState {\n configs: InstanceConfig[];\n strictMode: boolean;\n}\n\nclass EasyMode extends Component<EasyModeProps, EasyModeState> {\n constructor(props: EasyModeProps) {\n super(props);\n this.state = {\n configs: this.props.configs,\n strictMode: !this.props.configs,\n };\n }\n\n componentDidMount(): void {\n if (!this.props.configs) {\n void this.props.socket\n .getEasyMode()\n .then((config: EasyModeConfig) => this.setState({ configs: config.configs }));\n }\n }\n\n render(): JSX.Element {\n const {\n t,\n themeName,\n toggleTheme,\n navigate,\n location,\n socket,\n themeType,\n theme,\n width,\n isFloatComma,\n dateFormat,\n configStored,\n getLocation,\n adminInstance,\n } = this.props;\n\n const { configs, strictMode } = this.state;\n if (!configs) {\n return <CircularProgress />;\n }\n\n const tab = location.id;\n const currentInstance = configs.find(({ id }) => id === tab);\n return (\n <Paper style={styles.wrapperEasyMode}>\n <AppBar\n color=\"default\"\n position=\"fixed\"\n sx={styles.appBar}\n >\n <Toolbar style={styles.toolBar}>\n <div style={styles.wrapperHeader}>\n <CardMedia\n onClick={\n (strictMode && !getLocation().dialog) || currentInstance?.tab\n ? () => navigate(currentInstance?.tab ? 'easy' : 'tab-intro')\n : null\n }\n style={{\n ...styles.img,\n ...(themeName === 'colored' ? styles.logoWhite : undefined),\n ...((strictMode && !getLocation().dialog) || currentInstance?.tab\n ? styles.logoPointer\n : undefined),\n }}\n component=\"img\"\n image=\"img/no-image.png\"\n />\n <div style={styles.headerName}>{t('Easy Admin')}</div>\n </div>\n <div style={styles.IconButtons}>\n {((strictMode && !getLocation().dialog) || currentInstance?.tab) && (\n <IconButton\n size=\"large\"\n onClick={() => navigate(currentInstance?.tab ? 'easy' : 'tab-intro')}\n >\n <ArrowBackIcon />\n </IconButton>\n )}\n <ToggleThemeMenu\n t={t}\n toggleTheme={toggleTheme}\n themeName={themeName as 'dark' | 'blue' | 'colored' | 'light'}\n size=\"large\"\n />\n </div>\n </Toolbar>\n </AppBar>\n {currentInstance ? (\n <Paper style={styles.paper}>\n <Config\n expertMode\n style={styles.iframe}\n adapter={currentInstance.id.split('.')[0]}\n instance={parseInt(currentInstance.id.split('.')[1], 10)}\n jsonConfig={currentInstance.jsonConfig}\n materialize={currentInstance.materialize}\n tab={currentInstance?.tab}\n socket={socket}\n easyMode\n themeName={themeName}\n themeType={themeType}\n theme={theme}\n width={width}\n t={t}\n lang={this.props.lang}\n icon={currentInstance.icon}\n adminInstance={adminInstance}\n configStored={configStored}\n dateFormat={dateFormat}\n isFloatComma={isFloatComma}\n // version={currentInstance.version} We don't need a version in easy mode\n onRegisterIframeRef={(ref: HTMLIFrameElement) => this.props.onRegisterIframeRef(ref)}\n onUnregisterIframeRef={(ref: HTMLIFrameElement) => this.props.onUnregisterIframeRef(ref)}\n handleNavigation={this.props.handleNavigation}\n />\n </Paper>\n ) : (\n <div style={styles.wrapperCard}>\n <div style={styles.controlHeight}>\n {configs\n .sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0))\n .map(el => (\n <EasyModeCard\n key={el.id}\n lang={this.props.lang}\n navigate={() => navigate(null, 'config', el.id)}\n {...el}\n />\n ))}\n </div>\n </div>\n )}\n </Paper>\n );\n }\n}\n\nexport default EasyMode;\n"],"names":["arrayLogLevel","styles","root","height","display","flexDirection","overflow","scroll","overflowY","instanceIcon","width","marginRight","verticalAlign","button","version","fontSize","opacity","marginLeft","versionAliveConnected","theme","color","palette","mode","versionAliveNotConnected","buttonControl","padding","transition","enabled","green","backgroundColor","disabled","red","hide","visibility","formControl","marginBottom","logLevel","grey","blue","orange","orangeDevice","tooltip","pointerEvents","Config","Component","constructor","props","super","refIframe","registered","onObjectChange","id","obj","_obj$common","_obj$common2","_obj$common3","_obj$common4","concat","this","adapter","instance","setState","running","common","onlyWWW","canStart","loglevel","onStateChange","state","instanceId","alive","val","connectedToHost","connected","extension","tempLogLevel","closeConfig","event","origin","window","location","data","message","easyMode","handleNavigation","configStored","startsWith","url","split","tab","subTab","parameter","checkedExist","showStopAdminDialog","logOnTheFlyValue","logLevelValue","showLogLevelDialog","componentDidUpdate","_this$refIframe","contentWindow","onRegisterIframeRef","componentDidMount","_this$refIframe2","socket","fileExists","then","exist","exists","alert","subscribeObject","getObject","async","_obj$common5","_obj$common6","_obj$common7","_extension","_obj$common8","_obj$common9","_obj$common10","_obj$common11","getState","subscribeState","_unused","_unused2","native","adapterDocLangs","docs","Object","keys","catch","error","console","addEventListener","attachEvent","getInstanceStatus","_this$state$common","_this$state$common2","_this$state$native","status","webExtension","webInstance","_this$state$native2","componentWillUnmount","unsubscribeObject","removeEventListener","detachEvent","onUnregisterIframeRef","renderHelpButton","jsonConfig","_jsx","style","position","right","top","children","Tooltip","title","t","slotProps","popper","sx","Fab","onClick","_this$state$adapterDo","lang","includes","open","AdminUtils","getDocsLinkForAdapter","adapterName","HelpIcon","getConfigurator","JsonConfig","expertMode","themeName","themeType","dateFormat","isFloatComma","DeviceManager","src","materialize","ref","el","returnStopAdminDialog","DialogConfirm","text","ok","onClose","result","extendObject","renderLogLevelDialog","_jsxs","Dialog","DialogTitle","DialogContent","FormControl","_objectSpread","marginTop","variant","InputLabel","Select","value","fullWidth","onChange","target","map","MenuItem","FormControlLabel","control","Checkbox","checked","e","label","FormHelperText","DialogActions","Button","render","Paper","AppBar","Toolbar","Typography","IconButton","size","onFocus","stopPropagation","ArrowBack","Icon","icon","preventDefault","adminInstance","PauseIcon","PlayArrowIcon","undefined","RefreshIcon","EditIcon","m","minHeight","background","default","boxShadow","cursor","imageBlock","justifyContent","img","content","zIndex","left","backgroundSize","fontWeight","borderTop","textAlign","textTransform","textOverflow","instanceStateNotAlive1","wrapperDesc","desc","getText","en","_ref","navigate","Card","CardMedia","component","image","appBar","transitions","create","easing","sharp","duration","leavingScreen","wrapperEasyMode","borderRadius","wrapperCard","controlHeight","flexFlow","logoWhite","wrapperHeader","alignItems","headerName","toolBar","margin","paper","paddingTop","iframe","border","IconButtons","logoPointer","EasyMode","configs","strictMode","getEasyMode","config","toggleTheme","getLocation","CircularProgress","currentInstance","find","dialog","ArrowBackIcon","ToggleThemeMenu","parseInt","sort","a","b","EasyModeCard"],"sourceRoot":""}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 165 165">
|
|
2
|
-
<path fill="currentColor" d="M82.498,0C37.008,0,0,37.008,0,82.496c0,45.181,36.51,81.977,81.573,82.476V82.569l-27.002-0.002 c-8.023,0-14.554,6.53-14.554,14.561c0,8.023,6.531,14.551,14.554,14.551v17.98c-17.939,0-32.534-14.595-32.534-32.531 c0-17.944,14.595-32.543,32.534-32.543l27.002,0.004v-9.096c0-14.932,12.146-27.08,27.075-27.08 c14.932,0,27.082,12.148,27.082,27.08c0,14.931-12.15,27.08-27.082,27.08l-9.097-0.001v80.641 C136.889,155.333,165,122.14,165,82.496C165,37.008,127.99,0,82.498,0z" />
|
|
3
|
-
<path fill="currentColor" d="M117.748,55.493c0-5.016-4.082-9.098-9.1-9.098c-5.015,0-9.097,4.082-9.097,9.098v9.097l9.097,0.001 C113.666,64.591,117.748,60.51,117.748,55.493z" />
|
|
4
|
-
</svg>
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1073 1068">
|
|
2
|
-
<path d="M716 1.1C632.9 5.3 549.8 23.7 472 55c-66.4 26.7-132.6 65.5-188.5 110.4-43.8 35.1-85.2 76.7-120.1 120.6C72.4 400.4 16.7 539.8 3.5 686 1.8 705.1-.1 754.7.7 758c.5 2 1 2 49.7 1.8l49.1-.3.7-20c2.4-64.6 13.4-126 33.2-186 80.8-243.9 297-419.9 552.1-449.4 20.2-2.4 44.2-4.1 56.6-4.1h8.9V50 0l-9.7.1c-5.4.1-16.8.6-25.3 1zm-.8 208c-78.5 4.7-158 27.4-226.5 64.5-68.7 37.3-126.4 86.3-175.2 148.9-11 14-33.2 47.3-42.3 63.5-44 77.8-68.6 164.9-70.9 251.2l-.6 22.8h49.5 49.4l1.2-19c6.3-98.7 40-185.8 102.2-263.3 12.7-15.9 41.2-45.2 57-58.7 66.1-56.3 142.1-91.8 226-105.5 18.9-3 44.1-5.5 56.7-5.5h9.3v-50-50l-11.2.1c-6.2.1-17.3.6-24.6 1zm17.8 251c-104.5 9.2-195.2 69.7-243.6 162.4-43.9 84-45.5 184.2-4.5 270 60.3 125.9 198.1 194.2 334.9 166 46.6-9.7 89.5-29.7 127.2-59.6 13.5-10.7 37.3-34.5 48-47.9 34.2-43.1 55.2-92 63.7-148.6 2.2-15.1 2.5-62.7.5-77.4-3.6-25.2-10.1-51.4-17.8-71.2-10.1-26.2-29.4-59.7-47-81.8-9.7-12.1-35-37.2-47.4-47-47.8-37.9-104.5-60.1-165.4-65-14.7-1.1-34.7-1.1-48.6.1zm174.7 138.6c-.3.5-30.9 49.2-68.1 108.3L772 814.5l67.9.5 68 .5-30.1 48.8-30 48.7h-131c-104.4 0-130.9-.3-130.5-1.3.2-.6 32.7-51.1 72.1-112.1L730 687.9c0-.5-29.5-1-66.5-1.1l-66.6-.3 27.7-44.3 27.6-44.2h128l127.5.7z"/>
|
|
3
|
-
</svg>
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
|
2
|
-
<path fill="currentColor" d="M32.042,9.792c4.595,1.238,4.88,3.165,5.524,5.048C34.841,17.664,17.35,35.7,17.35,35.7 s10.901,1.177,23.487-1.003c-0.001,0.029-0.002,0.048-0.003,0.076C42.829,31.661,44,27.97,44,24c0-11.046-8.954-20-20-20 c-5.634,0-10.715,2.338-14.35,6.087C15.489,9.124,26.89,8.403,32.042,9.792z" />
|
|
3
|
-
<path fill="currentColor" d="M14.724,37.285c-1.982-0.347-4.212-2.131-4.707-5.302c1.437-1.239,19.994-20.507,19.994-20.507 c-7.008-0.424-14.569-0.465-22.237,0.864C5.408,15.625,4,19.644,4,24c0,11.046,8.954,20,20,20c6.173,0,11.689-2.8,15.358-7.195 C35.486,37.33,23.257,38.769,14.724,37.285z" />
|
|
4
|
-
</svg>
|
|
File without changes
|
|
File without changes
|