//@liv-in-sky 2.8.2021-16:20
let dpVIS="LED1RingVIS" // datenpunkte unter javascript.x.Tabellen@Liv.LED1RingVIS
let LEDname="LED1";
let grundfarbe="silver";
let groessePunkteHoehe=15;
let groessePunkteWeite=15;
let groesseGesamtHoehe=170;
let groesseGesamtWeite=170;
if (existsObject("javascript." + instance + ".Tabellen@Liv."+dpVIS+".DurchmesserPunkte")) {
let PunkteArr=getState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".DurchmesserPunkte").val.split(',')
groessePunkteHoehe=Number(PunkteArr[0])
log(groessePunkteHoehe.toString())
groessePunkteWeite=Number(PunkteArr[1])
}
if (existsObject("javascript." + instance + ".Tabellen@Liv."+dpVIS+".DurchmesserGesamt")) {
let GeamtArr=getState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".DurchmesserGesamt").val.split(',')
groesseGesamtHoehe=Number(GeamtArr[0])
groesseGesamtWeite=Number(GeamtArr[1])
}
let styleLEDs=`#outer${dpVIS}{
position: relative;
height: ${groesseGesamtHoehe}px;
width: ${groesseGesamtWeite}px; //250px;
/*border: 1px solid red;*/
}
.inner${dpVIS}{
position: absolute;
/* border: 1px solid black; */
height: ${groessePunkteHoehe}px;
width: ${groessePunkteWeite}px;
background: ${grundfarbe};
border-radius: 50%;
display: flex; /* or inline-flex */
align-items: center;
justify-content: center;
}`
let scriptLED=`/*setTimeout(function () { */
var outer = document.getElementById('outer${dpVIS}');
var outerWidth = document.getElementById('outer${dpVIS}').offsetWidth;
var outerHeight = document.getElementById('outer${dpVIS}').offsetHeight;
for(var i = 0; i < outer.children.length; i++){
var r = outerWidth / 2 - outer${dpVIS}.children[i].offsetWidth / 2;
var phi = i / outer${dpVIS}.children.length;
var x = r * Math.cos(phi * 2 * Math.PI) + r;
var y = r * Math.sin(phi * 2 * Math.PI) + r;
outer${dpVIS}.children[i].style.left = x+'px';
outer${dpVIS}.children[i].style.top = y+'px';
console.log(outer${dpVIS}.children[i].style.left);
} /*}, 10000);*/`
//setStateDelayed("javascript." + instance + ".Tabellen@Liv."+dpVIS+".JSONVis",JSON.stringify(makeJsonWidget),1000 )}
async function needDP(){
if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".Anzahl"))) {
await createStateAsync("Tabellen@Liv."+dpVIS+".Anzahl", 7,{type: "number", name: "Anzahl LEDs", role: "value", read: true, write: true, } ); }
if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".DurchmesserPunkte"))) {
await createStateAsync("Tabellen@Liv."+dpVIS+".DurchmesserPunkte", "170,170",{type: "string", name: "Durchmesser Punkte", role: "value", read: true, write: true, } ); }
if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".DurchmesserGesamt"))) {
await createStateAsync("Tabellen@Liv."+dpVIS+".DurchmesserGesamt", "15,15",{type: "string", name: "Durchmesser Gesamt", role: "value", read: true, write: true, } ); }
if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".AlleLEDs"))) {
await createStateAsync("Tabellen@Liv."+dpVIS+".AlleLEDs", "gold",{type: "string", name: "Alle LEDs", role: "value", read: true, write: true, } ); }
if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".AlleLEDsAUS"))) {
await createStateAsync("Tabellen@Liv."+dpVIS+".AlleLEDsAUS", false,{type: "boolean", name: "Alle LEDs AUS", role: "value", read: true, write: true, } ); }
if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".AnzahlLEDsEIN"))) {
await createStateAsync("Tabellen@Liv."+dpVIS+".AnzahlLEDsEIN", "4,red",{type: "string", name: "Anzahl LEDs EIN", role: "value", read: true, write: true, } ); }
if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".AlleLEDsBunt"))) {
await createStateAsync("Tabellen@Liv."+dpVIS+".AlleLEDsBunt", "bunt",{type: "string", name: "Alle LEDs Bunt", role: "value", read: true, write: true, } ); }
if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".WidgetAusgabe"))) {
await createStateAsync("Tabellen@Liv."+dpVIS+".WidgetAusgabe", "",{type: "string", name: "Widget VIS Datenpunkt", role: "value", read: true, write: true, } ); }
}
function AlleLedsAus() {
let menge= getState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".Anzahl").val;
let farbe=grundfarbe;
let augabeHilfe=`<div id="outer${dpVIS}">`;
for (let i=0;i<menge;i++){
augabeHilfe=augabeHilfe+`<div class="inner${dpVIS}"></div>`
}
augabeHilfe=augabeHilfe+`</div>`
let ausgabe="<style>"+styleLEDs+`</style>`+augabeHilfe+"<script>"+scriptLED+`</script>`
setState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".WidgetAusgabe",ausgabe)
}
function alleLedsEIN() {
let menge= getState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".Anzahl").val;
let colorAll= getState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".AlleLEDs").val;
let farbe=grundfarbe;
let newColorStyle=`.inner1${dpVIS}{ background: ${colorAll};}`
let augabeHilfe=`<div id="outer${dpVIS}">`;
for (let i=0;i<menge;i++){
augabeHilfe=augabeHilfe+`<div class="inner${dpVIS} inner1${dpVIS} "></div>`
}
augabeHilfe=augabeHilfe+`</div>`
let ausgabe="<style>"+styleLEDs+newColorStyle+`</style>`+augabeHilfe+"<script>"+scriptLED+`</script>`
setState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".WidgetAusgabe",ausgabe)
}
function anzahlLEDsEIN() {
let menge= getState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".Anzahl").val;
let mengeArr= getState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".AnzahlLEDsEIN").val.split(',');
let farbe=grundfarbe;
let newColorStyle=`.inner1${dpVIS}{ background: ${mengeArr[1]};}`
let augabeHilfe=`<div id="outer${dpVIS}">`;
log(mengeArr[0])
for (let i=0;i<menge;i++){
if(i<Number(mengeArr[0])) {augabeHilfe=augabeHilfe+`<div class="inner${dpVIS} inner1${dpVIS} "></div>`}
else { augabeHilfe=augabeHilfe+`<div class="inner${dpVIS}"></div>`}
}
augabeHilfe=augabeHilfe+`</div>`
let ausgabe="<style>"+styleLEDs+newColorStyle+`</style>`+augabeHilfe+"<script>"+scriptLED+`</script>`
setState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".WidgetAusgabe",ausgabe)
}
function alleLedsBunt() {
let menge= getState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".Anzahl").val;
let colorAll= `linear-gradient(red 20%, yellow 40%, orange 60%, cyan 80%)`;
let farbe=grundfarbe;
let newColorStyle=`.inner1${dpVIS}{ background-image: ${colorAll};}`
let augabeHilfe=`<div id="outer${dpVIS}">`;
for (let i=0;i<menge;i++){
augabeHilfe=augabeHilfe+`<div class="inner${dpVIS} inner1${dpVIS} "></div>`
}
augabeHilfe=augabeHilfe+`</div>`
let ausgabe="<style>"+styleLEDs+newColorStyle+`</style>`+augabeHilfe+"<script>"+scriptLED+`</script>`
setState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".WidgetAusgabe",ausgabe)
}
async function mainLED(){
await needDP();
log("ee")
alleLedsBunt();
}
mainLED()
on({id: "javascript." + instance + ".Tabellen@Liv."+dpVIS+".AlleLEDsAUS", ack: false, val: true}, function (obj) {
AlleLedsAus();
setState("javascript." + instance + ".Tabellen@Liv."+dpVIS+".AlleLEDsAUS",false)
});
on({id: "javascript." + instance + ".Tabellen@Liv."+dpVIS+".AnzahlLEDsEIN", ack: false, change: "any"}, function (obj) {
anzahlLEDsEIN();
});
on({id: "javascript." + instance + ".Tabellen@Liv."+dpVIS+".AlleLEDs", ack: false, change: "any"}, function (obj) {
alleLedsEIN();
});
on({id: "javascript." + instance + ".Tabellen@Liv."+dpVIS+".AlleLEDsBunt", ack: false, change: "any"}, function (obj) {
alleLedsBunt();
});