moin,
Hier ein Script für die Formel 1
was kann es:
- Rennkalender (1950 - aktuelle Session)
- Rennergebnisse (aktuelle Session)
- Fahrer und Konstrukteur WM (aktuelle Session)
Die Daten werden von "Ergast" über https://api.jolpi.ca/ergast/ geholt.
Wer testen will kann gerne mitmachen.
Als erstes müssen die Datenpunkte angelegt werden.
Folgendes Skript unter Skripte/JavaScript anlegen und einmal ausführen.
Damit werden die notwendigen Datenpunkte unter “ 0_userdata.0.Formel1“ angelegt.
Datenpunkte
// Kalender
createState('0_userdata.0.Formel1.Kalender.json',{name: 'json',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Kalender.Jahr',parseFloat(formatDate(new Date(), 'JJJJ')),{name: 'Jahr',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Kalender.Ueberschrift_VIS','UEBERSCHRIFT VIS',{name: 'Ueberschrift_VIS',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Kalender.VIS_json',{name: 'VIS_json',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Kalender.Jahr_zurueck',false,{name: 'Jahr_zurueck',role: 'button',type: 'boolean'});
createState('0_userdata.0.Formel1.Kalender.Jahr_vor',false,{name: 'Jahr_vor',role: 'button',type: 'boolean'});
createState('0_userdata.0.Formel1.Kalender.Jahr_aktuell',false,{name: 'Jahr_aktuell',role: 'button',type: 'boolean'});
createState('0_userdata.0.Formel1.Kalender.Anzahl_Rennen_Aktuelles_Jahr',0,{name: 'Anzahl_Rennen_Aktuelles_Jahr',role: 'value',type: 'number'});
// Rennergebnisse
createState('0_userdata.0.Formel1.Rennergebnisse.json',{name: 'json',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Rennergebnisse.VIS_json',{name: 'VIS_json',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr',0,{name: 'Rennen_Nr',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Jahr',parseFloat(formatDate(new Date(), 'JJJJ')),{name: 'Rennen_Jahr',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Rennergebnisse.Rennen_gefahren',0,{name: 'Rennen_gefahren',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Rennergebnisse.Ueberschrift_VIS','UEBERSCHRIFT VIS',{name: 'Ueberschrift_VIS',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Rennergebnisse.Rennen_zurueck',false,{name: 'Rennen_zurueck',role: 'button',type: 'boolean'});
createState('0_userdata.0.Formel1.Rennergebnisse.Rennen_vor',false,{name: 'Rennen_vor',role: 'button',type: 'boolean'});
createState('0_userdata.0.Formel1.Rennergebnisse.Rennen_aktuell',false,{name: 'Rennen_aktuell',role: 'button',type: 'boolean'});
// Fahrerwertung
createState('0_userdata.0.Formel1.Fahrerwertung.json',{name: 'json',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Fahrerwertung.json_letztes_Rennen',{name: 'json_letztes_Rennen',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Fahrerwertung.VIS_json',{name: 'VIS_json',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr',0,{name: 'Rennen_Nr',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Fahrerwertung.Rennen_gefahren',0,{name: 'Rennen_gefahren',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Fahrerwertung.Jahr',parseFloat(formatDate(new Date(), 'JJJJ')),{name: 'Jahr',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Fahrerwertung.Ueberschrift_VIS','UEBERSCHRIFT VIS',{name: 'Ueberschrift_VIS',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Fahrerwertung.Rennen_zurueck',false,{name: 'Rennen_zurueck',role: 'button',type: 'boolean'});
createState('0_userdata.0.Formel1.Fahrerwertung.Rennen_vor',false,{name: 'Rennen_vor',role: 'button',type: 'boolean'});
createState('0_userdata.0.Formel1.Fahrerwertung.Rennen_aktuell',false,{name: 'Rennen_aktuell',role: 'button',type: 'boolean'});
// Konstrukteur
createState('0_userdata.0.Formel1.Konstrukteur.json',{name: 'json',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Konstrukteur.json_letztes_Rennen',{name: 'json_letztes_Rennen',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Konstrukteur.VIS_json',{name: 'VIS_json',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr',0,{name: 'Rennen_Nr',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Konstrukteur.Rennen_gefahren',0,{name: 'Rennen_gefahren',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Konstrukteur.Jahr',parseFloat(formatDate(new Date(), 'JJJJ')),{name: 'Jahr',role: 'value',type: 'number'});
createState('0_userdata.0.Formel1.Konstrukteur.Ueberschrift_VIS','UEBERSCHRIFT VIS',{name: 'Ueberschrift_VIS',role: 'value',type: 'string'});
createState('0_userdata.0.Formel1.Konstrukteur.Rennen_zurueck',false,{name: 'Rennen_zurueck',role: 'button',type: 'boolean'});
createState('0_userdata.0.Formel1.Konstrukteur.Rennen_vor',false,{name: 'Rennen_vor',role: 'button',type: 'boolean'});
createState('0_userdata.0.Formel1.Konstrukteur.Rennen_aktuell',false,{name: 'Rennen_aktuell',role: 'button',type: 'boolean'});
Danach die folgenden 4 Skripte anlegen (unter Skripte/JavaScript) und starten.
(am Anfang der Skripte können Farben eingestellt werden)
Kalender
// ################################################
// Formel1 Kalender v1.01
// by stenmic
// ################################################
var Farbe_fuer_naechstes_Rennen, Blocker_api, X, Kalender, Blocker_nextRace, Date2, spanIN, VIS, spanOUT;
// ################################################
Farbe_fuer_naechstes_Rennen = '#26b1e6';
// ################################################
function textReplace(haystack, needle, replacement) {
needle = needle.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1')
.replace(/\x08/g, '\\x08');
return haystack.replace(new RegExp(needle, 'g'), replacement);
}
Blocker_api = false;
on({ id: '0_userdata.0.Formel1.Kalender.Jahr' /* Jahr */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if ((1950 <= (obj.state ? obj.state.val : '')) && (Blocker_api == false)) {
Blocker_api = true;
httpGet((['https://api.jolpi.ca/ergast/f1/',(obj.state ? obj.state.val : ''),'/races/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if ((getAttr(response.data, 'MRData.RaceTable.Races.0.season') != null) && (response.statusCode == 200)) {
setState('0_userdata.0.Formel1.Kalender.json' /* json */, response.data, true);
await wait(500);
Blocker_api = false;
} else {
await wait(500);
setState('0_userdata.0.Formel1.Kalender.Jahr' /* Jahr */, (getState('0_userdata.0.Formel1.Kalender.Jahr').val - 1), true);
Blocker_api = false;
}
});
}
});
on({ id: '0_userdata.0.Formel1.Kalender.Jahr_zurueck' /* Jahr_zurueck */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (1950 < getState('0_userdata.0.Formel1.Kalender.Jahr').val) {
setState('0_userdata.0.Formel1.Kalender.Jahr' /* Jahr */, (getState('0_userdata.0.Formel1.Kalender.Jahr').val - 1), true);
}
});
on({ id: '0_userdata.0.Formel1.Kalender.Jahr_vor' /* Jahr_vor */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
setState('0_userdata.0.Formel1.Kalender.Jahr' /* Jahr */, (getState('0_userdata.0.Formel1.Kalender.Jahr').val + 1), true);
});
on({ id: '0_userdata.0.Formel1.Kalender.Jahr_aktuell' /* Jahr_aktuell */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
setState('0_userdata.0.Formel1.Kalender.Jahr' /* Jahr */, parseFloat(formatDate(new Date(), 'JJJJ')), true);
});
schedule('{"time":{"exactTime":true,"start":"00:30"},"period":{"days":1}}', async () => {
if (getState('0_userdata.0.Formel1.Kalender.Jahr').val != parseFloat(formatDate(new Date(), 'JJJJ'))) {
setState('0_userdata.0.Formel1.Kalender.Jahr' /* Jahr */, parseFloat(formatDate(new Date(), 'JJJJ')), true);
}
});
schedule("1,16,31,46 4-23 * * 0,6", async () => {
setState('0_userdata.0.Formel1.Kalender.Jahr' /* Jahr */, parseFloat(formatDate(new Date(), 'JJJJ')), true);
});
on({ id: '0_userdata.0.Formel1.Kalender.json' /* json */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (getState('0_userdata.0.Formel1.Kalender.Jahr').val == formatDate(new Date(), 'JJJJ')) {
setState('0_userdata.0.Formel1.Kalender.Ueberschrift_VIS' /* Ueberschrift_VIS */, (['••• Rennkalender ',getState('0_userdata.0.Formel1.Kalender.Jahr').val,' •••'].join('')), true);
} else {
setState('0_userdata.0.Formel1.Kalender.Ueberschrift_VIS' /* Ueberschrift_VIS */, ('Rennkalender ' + String(getState('0_userdata.0.Formel1.Kalender.Jahr').val)), true);
}
X = 0;
Kalender = [];
Blocker_nextRace = false;
while (!(getAttr((obj.state ? obj.state.val : ''), ('MRData.RaceTable.Races.' + String(X))) == null)) {
if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.time'].join(''))) != null) {
Date2 = [formatDate(getDateObject(getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.date'].join('')))), 'T.M.'),' • ',formatDate(getDateObject(([getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.date'].join(''))),' ',getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.time'].join('')))].join(''))), 'S.mm'),' Uhr'].join('');
} else {
Date2 = formatDate(getDateObject(getAttr((obj.state ? obj.state.val : ''), (['',X,'.date'].join('')))), 'T.M.');
}
if (getDateObject(([getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.date'].join(''))),' ',getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.time'].join('')))].join(''))).getTime() + 14400000 >= (new Date().getTime())) {
if (Blocker_nextRace == false) {
spanIN = ['<span style="color:',Farbe_fuer_naechstes_Rennen,';">'].join('');
spanOUT = '</span>';
Blocker_nextRace = true;
} else {
spanIN = '';
spanOUT = '';
}
} else {
spanIN = '';
spanOUT = '';
}
VIS = { 'Rennen': [spanIN,X + 1,spanOUT].join(''), 'Datum': [spanIN,Date2,spanOUT].join(''), 'Grand Prix': [spanIN,getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.raceName'].join(''))),spanOUT].join(''), 'Strecke': [spanIN,[' <a href="',textReplace(getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.Circuit.url'].join(''))), '//en.', '//de.'),'" target="_blank" style="text-decoration: none; color: inherit;">',getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.Circuit.circuitName'].join(''))),'</a>'].join(''),spanOUT].join(''), 'Location': [spanIN,getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.',X,'.Circuit.Location.locality'].join(''))),spanOUT].join('') };
Kalender.push(VIS);
X = (typeof X === 'number' ? X : 0) + 1;
}
setState('0_userdata.0.Formel1.Kalender.VIS_json' /* VIS_json */, JSON.stringify(Kalender), true);
if (getState('0_userdata.0.Formel1.Kalender.Jahr').val == formatDate(new Date(), 'JJJJ')) {
if (getState('0_userdata.0.Formel1.Kalender.Anzahl_Rennen_Aktuelles_Jahr').val != X) {
setState('0_userdata.0.Formel1.Kalender.Anzahl_Rennen_Aktuelles_Jahr' /* Anzahl_Rennen_Aktuelles_Jahr */, X, true);
}
}
});
'MRData.RaceTable.Races.';
Rennergebnisse
// ################################################
// Formel1 Rennergebnisse v1.02
// by stenmic
// ################################################
var Farbe_fuer_Ausgefallen, Fahrer, Farbe_fuer_Fahrer, Team, Farbe_fuer_Team, Farbe_Fast_Lap, Farbe_Pfeil_UP, Farbe_Pfeil_Down, Blocker_api, X, Anzahl_Fahrer, Rennen, Position, Aenderung, Start, Zeit, spanINFahrer, spanOUTFahrer, spanINTeam, spanOUTTeam, Aenderung2, spanINFastLap, spanOUTFastLap, Punkte, VIS;
// ################################################
Farbe_fuer_Ausgefallen = '#e55a52';
Fahrer = 'Nico Hülkenberg';
Farbe_fuer_Fahrer = '#3bb273';
Team = 'Haas F1 Team';
Farbe_fuer_Team = '#26b1e6';
Farbe_Fast_Lap = '#DA5EBA';
Farbe_Pfeil_UP = '#3bb273';
Farbe_Pfeil_Down = '#e55a52';
// ################################################
on({ id: '0_userdata.0.Formel1.Rennergebnisse.Rennen_zurueck' /* Rennen_zurueck */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (1 < getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr').val) {
setState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr' /* Rennen_Nr */, (getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr').val - 1), true);
}
});
on({ id: '0_userdata.0.Formel1.Rennergebnisse.Rennen_vor' /* Rennen_vor */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
setState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr' /* Rennen_Nr */, (getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr').val + 1), true);
});
on({ id: '0_userdata.0.Formel1.Rennergebnisse.Rennen_aktuell' /* Rennen_aktuell */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr').val == 0) {
setState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr' /* Rennen_Nr */, 30, true);
} else {
setState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr' /* Rennen_Nr */, getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_gefahren').val, true);
}
});
schedule('{"time":{"exactTime":true,"start":"00:31"},"period":{"days":1}}', async () => {
httpGet((['https://api.jolpi.ca/ergast/f1/',formatDate(new Date(), 'JJJJ'),'/1/results/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if ((getAttr(response.data, 'MRData.RaceTable.Races.0.season') != null) && (response.statusCode == 200)) {
setState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Jahr' /* Rennen_Jahr */, parseFloat(formatDate(new Date(), 'JJJJ')), true);
}
});
});
Blocker_api = false;
on({ id: '0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr' /* Rennen_Nr */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (Blocker_api == false) {
Blocker_api = true;
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Jahr').val,'/',(obj.state ? obj.state.val : ''),'/results/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if ((getAttr(response.data, 'MRData.RaceTable.Races.0.season') != null) && (response.statusCode == 200)) {
setState('0_userdata.0.Formel1.Rennergebnisse.json' /* json */, response.data, true);
if ((obj.state ? obj.state.val : '') > getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_gefahren').val) {
setState('0_userdata.0.Formel1.Rennergebnisse.Rennen_gefahren' /* Rennen_gefahren */, (obj.state ? obj.state.val : ''), true);
}
await wait(500);
Blocker_api = false;
} else {
await wait(500);
if (getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr').val > 1) {
setState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr' /* Rennen_Nr */, (getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr').val - 1), true);
}
Blocker_api = false;
}
});
}
});
schedule("2,17,32,47 4-23 * * 0,6", async () => {
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Jahr').val,'/driverstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if (response.statusCode == 200) {
setState('0_userdata.0.Formel1.Rennergebnisse.Rennen_gefahren' /* Rennen_gefahren */, parseFloat(getAttr(response.data, 'MRData.StandingsTable.round')), true);
}
});
});
on({ id: '0_userdata.0.Formel1.Rennergebnisse.json' /* json */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
X = 0;
if (getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr').val == getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_gefahren').val) {
setState('0_userdata.0.Formel1.Rennergebnisse.Ueberschrift_VIS' /* Ueberschrift_VIS */, (['••• Rennen ',getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr').val,' von ',getState('0_userdata.0.Formel1.Kalender.Anzahl_Rennen_Aktuelles_Jahr').val,' • ',getAttr((obj.state ? obj.state.val : ''), 'MRData.RaceTable.Races.0.raceName'),' • ',formatDate(getDateObject(getAttr((obj.state ? obj.state.val : ''), 'MRData.RaceTable.Races.0.date')), 'T.M.JJ'),' •••'].join('')), true);
} else {
setState('0_userdata.0.Formel1.Rennergebnisse.Ueberschrift_VIS' /* Ueberschrift_VIS */, (['Rennen ',getState('0_userdata.0.Formel1.Rennergebnisse.Rennen_Nr').val,' von ',getState('0_userdata.0.Formel1.Kalender.Anzahl_Rennen_Aktuelles_Jahr').val,' • ',getAttr((obj.state ? obj.state.val : ''), 'MRData.RaceTable.Races.0.raceName'),' • ',formatDate(getDateObject(getAttr((obj.state ? obj.state.val : ''), 'MRData.RaceTable.Races.0.date')), 'T.M.JJ')].join('')), true);
}
while (!(getAttr((obj.state ? obj.state.val : ''), ('MRData.RaceTable.Races.0.Results.' + String(X))) == null)) {
Anzahl_Fahrer = X + 1;
X = (typeof X === 'number' ? X : 0) + 1;
}
X = 0;
Rennen = [];
while (!(getAttr((obj.state ? obj.state.val : ''), ('MRData.RaceTable.Races.0.Results.' + String(X))) == null)) {
Position = getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.position'].join('')));
Aenderung = getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.grid'].join(''))) - getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.position'].join('')));
if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.grid'].join(''))) != 0) {
Start = getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.grid'].join('')));
} else {
Start = 'Box';
Aenderung = Anzahl_Fahrer - getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.position'].join('')));
}
if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == 'Finished') {
Zeit = getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.Time.time'].join('')));
} else if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == '+1 Lap') {
Zeit = '+1 Runde';
} else if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == '+2 Laps') {
Zeit = '+2 Runden';
} else if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == '+3 Laps') {
Zeit = '+3 Runden';
} else if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == '+4 Laps') {
Zeit = '+4 Runden';
} else if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == '+5 Laps') {
Zeit = '+5 Runden';
} else if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == '+6 Laps') {
Zeit = '+6 Runden';
} else if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == '+7 Laps') {
Zeit = '+7 Runden';
} else if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == '+8 Laps') {
Zeit = '+8 Runden';
} else if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.status'].join(''))) == '+9 Laps') {
Zeit = '+9 Runden';
} else {
Zeit = ['<span style="color:',Farbe_fuer_Ausgefallen,';">Ausfall</span>'].join('');
Position = '';
Aenderung = 'Ausfall';
}
if ([getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.Driver.givenName'].join(''))),' ',getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.Driver.familyName'].join('')))].join('') == Fahrer) {
spanINFahrer = ['<span style="color:',Farbe_fuer_Fahrer,';">'].join('');
spanOUTFahrer = '</span>';
} else {
spanINFahrer = '';
spanOUTFahrer = '';
}
if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.Constructor.name'].join(''))) == Team) {
spanINTeam = ['<span style="color:',Farbe_fuer_Team,';">'].join('');
spanOUTTeam = '</span>';
} else {
spanINTeam = '';
spanOUTTeam = '';
}
if (Aenderung == 'Ausfall') {
Aenderung2 = '';
} else if (Aenderung == 0) {
Aenderung2 = '=';
} else if (Aenderung > 0) {
Aenderung2 = [Aenderung,'<span style="color:',Farbe_Pfeil_UP,';"> ↑</span>'].join('');
} else if (Aenderung < 0) {
Aenderung2 = [Aenderung,'<span style="color:',Farbe_Pfeil_Down,';"> ↓</span>'].join('');
}
if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.FastestLap.rank'].join(''))) == 1) {
spanINFastLap = ['<span style="color:',Farbe_Fast_Lap,';">'].join('');
spanOUTFastLap = '</span>';
} else {
spanINFastLap = '';
spanOUTFastLap = '';
}
if (getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.points'].join(''))) != 0) {
Punkte = getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.points'].join('')));
} else {
Punkte = '';
}
VIS = { 'Position': Position, 'Change': Aenderung2, 'Fahrer': [spanINFahrer,getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.Driver.givenName'].join(''))),' ',getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.Driver.familyName'].join(''))),spanOUTFahrer].join(''), 'Team': [spanINTeam,getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.Constructor.name'].join(''))),spanOUTTeam].join(''), 'Grid': Start, 'Runden': getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.laps'].join(''))), 'Zeit': Zeit, 'Punkte': Punkte, 'Fast Lap': [spanINFastLap,getAttr((obj.state ? obj.state.val : ''), (['MRData.RaceTable.Races.0.Results.',X,'.FastestLap.Time.time'].join(''))),spanOUTFastLap].join('') };
Rennen.push(VIS);
X = (typeof X === 'number' ? X : 0) + 1;
}
setState('0_userdata.0.Formel1.Rennergebnisse.VIS_json' /* VIS_json */, JSON.stringify(Rennen), true);
});
Fahrerwertung
// ################################################
// Formel1 Fahrerwertung v1.01
// by stenmic
// ################################################
var Fahrer, Farbe_fuer_Fahrer, Team, Farbe_fuer_Team, Farbe_Pfeil_UP, Farbe_Pfeil_Down, Quelle, X, Fahrerwertung, Y, Change, spanINFahrer, spanOUTFahrer, spanINTeam, VIS, spanOUTTeam;
// ################################################
Fahrer = 'Nico Hülkenberg';
Farbe_fuer_Fahrer = '#3bb273';
Team = 'Haas F1 Team';
Farbe_fuer_Team = '#26b1e6';
Farbe_Pfeil_UP = '#3bb273';
Farbe_Pfeil_Down = '#e55a52';
// ################################################
on({ id: '0_userdata.0.Formel1.Rennergebnisse.Rennen_gefahren' /* Rennen_gefahren */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
setState('0_userdata.0.Formel1.Fahrerwertung.Jahr' /* Jahr */, (getState('0_userdata.0.Formel1.Fahrerwertung.Jahr').val + 1), true);
});
on({ id: '0_userdata.0.Formel1.Fahrerwertung.Jahr' /* Jahr */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
await wait(1000);
httpGet((['https://api.jolpi.ca/ergast/f1/',(obj.state ? obj.state.val : ''),'/driverstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if (response.statusCode == 200) {
if (getAttr(response.data, 'MRData.StandingsTable.round') == null) {
setState('0_userdata.0.Formel1.Fahrerwertung.Jahr' /* Jahr */, ((obj.state ? obj.state.val : '') - 1), true);
}
}
});
});
on({ id: '0_userdata.0.Formel1.Fahrerwertung.Rennen_aktuell' /* Rennen_aktuell */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Fahrerwertung.Jahr').val,'/driverstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if (response.statusCode == 200) {
setState('0_userdata.0.Formel1.Fahrerwertung.json' /* json */, response.data, true);
setState('0_userdata.0.Formel1.Fahrerwertung.Rennen_gefahren' /* Rennen_gefahren */, parseFloat(getAttr(response.data, 'MRData.StandingsTable.round')), true);
setState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr' /* Rennen_Nr */, parseFloat(getAttr(response.data, 'MRData.StandingsTable.round')), true);
}
});
});
on({ id: '0_userdata.0.Formel1.Fahrerwertung.Rennen_zurueck' /* Rennen_zurueck */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr').val > 1) {
setState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr' /* Rennen_Nr */, (getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr').val - 1), true);
}
});
on({ id: '0_userdata.0.Formel1.Fahrerwertung.Rennen_vor' /* Rennen_vor */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
setState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr' /* Rennen_Nr */, (getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr').val + 1), true);
});
on({ id: '0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr' /* Rennen_Nr */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Fahrerwertung.Jahr').val,'/',(obj.state ? obj.state.val : ''),'/driverstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if ((response.statusCode == 200) && (getAttr(response.data, 'MRData.total') != 0)) {
setState('0_userdata.0.Formel1.Fahrerwertung.json' /* json */, response.data, true);
} else {
setState('0_userdata.0.Formel1.Fahrerwertung.Rennen_aktuell' /* Rennen_aktuell */, true, true);
}
});
});
on({ id: '0_userdata.0.Formel1.Fahrerwertung.json' /* json */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr').val == 1) {
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Fahrerwertung.Jahr').val,'/',getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr').val,'/driverstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if (response.statusCode == 200) {
setState('0_userdata.0.Formel1.Fahrerwertung.json_letztes_Rennen' /* json_letztes_Rennen */, response.data, true);
}
});
} else {
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Fahrerwertung.Jahr').val,'/',getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr').val - 1,'/driverstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if (response.statusCode == 200) {
setState('0_userdata.0.Formel1.Fahrerwertung.json_letztes_Rennen' /* json_letztes_Rennen */, response.data, true);
}
});
}
});
on({ id: '0_userdata.0.Formel1.Fahrerwertung.json_letztes_Rennen' /* json_letztes_Rennen */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
Quelle = getState('0_userdata.0.Formel1.Fahrerwertung.json').val;
X = 0;
Fahrerwertung = [];
while (!(getAttr(Quelle, ('MRData.StandingsTable.StandingsLists.0.DriverStandings.' + String(X))) == null)) {
Y = 0;
while (!(getAttr(getState('0_userdata.0.Formel1.Fahrerwertung.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',Y,'.Driver.driverId'].join(''))) == getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.Driver.driverId'].join(''))))) {
if (Y > 100) {
break;
} else {
Y = (typeof Y === 'number' ? Y : 0) + 1;
}
}
if (getAttr(getState('0_userdata.0.Formel1.Fahrerwertung.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',Y,'.position'].join(''))) - getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.position'].join(''))) == 0) {
Change = '=';
} else if (getAttr(getState('0_userdata.0.Formel1.Fahrerwertung.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',Y,'.position'].join(''))) - getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.position'].join(''))) > 0) {
Change = [getAttr(getState('0_userdata.0.Formel1.Fahrerwertung.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',Y,'.position'].join(''))) - getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.position'].join(''))),'<span style="color:',Farbe_Pfeil_UP,';"> ↑</span>'].join('');
} else {
Change = [getAttr(getState('0_userdata.0.Formel1.Fahrerwertung.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',Y,'.position'].join(''))) - getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.position'].join(''))),'<span style="color:',Farbe_Pfeil_Down,';"> ↓</span>'].join('');
}
if ([getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.Driver.givenName'].join(''))),' ',getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.Driver.familyName'].join('')))].join('') == Fahrer) {
spanINFahrer = ['<span style="color:',Farbe_fuer_Fahrer,';">'].join('');
spanOUTFahrer = '</span>';
} else {
spanINFahrer = '';
spanOUTFahrer = '';
}
if (getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.Constructors.0.name'].join(''))) == Team) {
spanINTeam = ['<span style="color:',Farbe_fuer_Team,';">'].join('');
spanOUTTeam = '</span>';
} else {
spanINTeam = '';
spanOUTTeam = '';
}
VIS = { 'Positon': getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.position'].join(''))), 'Change': Change, 'Fahrer': [spanINFahrer,getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.Driver.givenName'].join(''))),' ',getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.Driver.familyName'].join(''))),' • ',getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.Driver.nationality'].join(''))),spanOUTFahrer].join(''), 'Punkte': getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.points'].join(''))), 'Siege': getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.wins'].join(''))), 'Team': [spanINTeam,getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.DriverStandings.',X,'.Constructors.0.name'].join(''))),spanOUTTeam].join('') };
Fahrerwertung.push(VIS);
X = (typeof X === 'number' ? X : 0) + 1;
}
setState('0_userdata.0.Formel1.Fahrerwertung.VIS_json' /* VIS_json */, JSON.stringify(Fahrerwertung), true);
if (getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr').val == getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_gefahren').val) {
setState('0_userdata.0.Formel1.Fahrerwertung.Ueberschrift_VIS' /* Ueberschrift_VIS */, (['••• Fahrerwertung ',getState('0_userdata.0.Formel1.Fahrerwertung.Jahr').val,' nach ',getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr').val,' von ',getState('0_userdata.0.Formel1.Kalender.Anzahl_Rennen_Aktuelles_Jahr').val,' Rennen •••'].join('')), true);
} else {
setState('0_userdata.0.Formel1.Fahrerwertung.Ueberschrift_VIS' /* Ueberschrift_VIS */, (['Fahrerwertung ',getState('0_userdata.0.Formel1.Fahrerwertung.Jahr').val,' nach ',getState('0_userdata.0.Formel1.Fahrerwertung.Rennen_Nr').val,' von ',getState('0_userdata.0.Formel1.Kalender.Anzahl_Rennen_Aktuelles_Jahr').val,' Rennen'].join('')), true);
}
});
Konstrukteur
// ################################################
// Formel1 Konstrukteur v1.01
// by stenmic
// ################################################
var Team, Farbe_fuer_Team, Farbe_Pfeil_UP, Farbe_Pfeil_Down, Quelle, X, Fahrerwertung, Y, Change, spanINTeam, VIS, spanOUTTeam;
// ################################################
Team = 'Haas F1 Team';
Farbe_fuer_Team = '#26b1e6';
Farbe_Pfeil_UP = '#3bb273';
Farbe_Pfeil_Down = '#e55a52';
// ################################################
on({ id: '0_userdata.0.Formel1.Rennergebnisse.Rennen_gefahren' /* Rennen_gefahren */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
setState('0_userdata.0.Formel1.Konstrukteur.Jahr' /* Jahr */, (getState('0_userdata.0.Formel1.Konstrukteur.Jahr').val + 1), true);
});
on({ id: '0_userdata.0.Formel1.Konstrukteur.Jahr' /* Jahr */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
await wait(1000);
httpGet((['https://api.jolpi.ca/ergast/f1/',(obj.state ? obj.state.val : ''),'/constructorstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if (response.statusCode == 200) {
if (getAttr(response.data, 'MRData.StandingsTable.round') == null) {
setState('0_userdata.0.Formel1.Konstrukteur.Jahr' /* Jahr */, ((obj.state ? obj.state.val : '') - 1), true);
}
}
});
});
on({ id: '0_userdata.0.Formel1.Konstrukteur.Rennen_aktuell' /* Rennen_aktuell */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Konstrukteur.Jahr').val,'/constructorstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if (response.statusCode == 200) {
setState('0_userdata.0.Formel1.Konstrukteur.json' /* json */, response.data, true);
setState('0_userdata.0.Formel1.Konstrukteur.Rennen_gefahren' /* Rennen_gefahren */, parseFloat(getAttr(response.data, 'MRData.StandingsTable.round')), true);
setState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr' /* Rennen_Nr */, parseFloat(getAttr(response.data, 'MRData.StandingsTable.round')), true);
}
});
});
on({ id: '0_userdata.0.Formel1.Konstrukteur.Rennen_zurueck' /* Rennen_zurueck */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (getState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr').val > 1) {
setState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr' /* Rennen_Nr */, (getState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr').val - 1), true);
}
});
on({ id: '0_userdata.0.Formel1.Konstrukteur.Rennen_vor' /* Rennen_vor */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
setState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr' /* Rennen_Nr */, (getState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr').val + 1), true);
});
on({ id: '0_userdata.0.Formel1.Konstrukteur.Rennen_Nr' /* Rennen_Nr */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Konstrukteur.Jahr').val,'/',(obj.state ? obj.state.val : ''),'/constructorstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if ((response.statusCode == 200) && (getAttr(response.data, 'MRData.total') != 0)) {
setState('0_userdata.0.Formel1.Konstrukteur.json' /* json */, response.data, true);
} else {
setState('0_userdata.0.Formel1.Konstrukteur.Rennen_aktuell' /* Rennen_aktuell */, true, true);
}
});
});
on({ id: '0_userdata.0.Formel1.Konstrukteur.json' /* json */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (getState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr').val == 1) {
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Konstrukteur.Jahr').val,'/',getState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr').val,'/constructorstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if (response.statusCode == 200) {
setState('0_userdata.0.Formel1.Konstrukteur.json_letztes_Rennen' /* json_letztes_Rennen */, response.data, true);
}
});
} else {
httpGet((['https://api.jolpi.ca/ergast/f1/',getState('0_userdata.0.Formel1.Konstrukteur.Jahr').val,'/',getState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr').val - 1,'/constructorstandings/'].join('')), { timeout: 10000, responseType: 'text' }, async (err, response) => {
if (response.statusCode == 200) {
setState('0_userdata.0.Formel1.Konstrukteur.json_letztes_Rennen' /* json_letztes_Rennen */, response.data, true);
}
});
}
});
on({ id: '0_userdata.0.Formel1.Konstrukteur.json_letztes_Rennen' /* json_letztes_Rennen */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
Quelle = getState('0_userdata.0.Formel1.Konstrukteur.json').val;
X = 0;
Fahrerwertung = [];
while (!(getAttr(Quelle, ('MRData.StandingsTable.StandingsLists.0.ConstructorStandings.' + String(X))) == null)) {
Y = 0;
while (!(getAttr(getState('0_userdata.0.Formel1.Konstrukteur.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',Y,'.Constructor.constructorId'].join(''))) == getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.Constructor.constructorId'].join(''))))) {
if (Y > 100) {
break;
} else {
Y = (typeof Y === 'number' ? Y : 0) + 1;
}
}
if (getAttr(getState('0_userdata.0.Formel1.Konstrukteur.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',Y,'.position'].join(''))) - getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.position'].join(''))) == 0) {
Change = '=';
} else if (getAttr(getState('0_userdata.0.Formel1.Konstrukteur.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',Y,'.position'].join(''))) - getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.position'].join(''))) > 0) {
Change = [getAttr(getState('0_userdata.0.Formel1.Konstrukteur.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',Y,'.position'].join(''))) - getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.position'].join(''))),'<span style="color:',Farbe_Pfeil_UP,';"> ↑</span>'].join('');
} else {
Change = [getAttr(getState('0_userdata.0.Formel1.Konstrukteur.json_letztes_Rennen').val, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',Y,'.position'].join(''))) - getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.position'].join(''))),'<span style="color:',Farbe_Pfeil_Down,';"> ↓</span>'].join('');
}
if (getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.Constructor.name'].join(''))) == Team) {
spanINTeam = ['<span style="color:',Farbe_fuer_Team,';">'].join('');
spanOUTTeam = '</span>';
} else {
spanINTeam = '';
spanOUTTeam = '';
}
VIS = { 'Positon': getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.position'].join(''))), 'Change': Change, 'Team': [spanINTeam,getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.Constructor.name'].join(''))),' • ',getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.Constructor.nationality'].join(''))),spanOUTTeam].join(''), 'Punkte': getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.points'].join(''))), 'Siege': getAttr(Quelle, (['MRData.StandingsTable.StandingsLists.0.ConstructorStandings.',X,'.wins'].join(''))) };
Fahrerwertung.push(VIS);
X = (typeof X === 'number' ? X : 0) + 1;
}
setState('0_userdata.0.Formel1.Konstrukteur.VIS_json' /* VIS_json */, JSON.stringify(Fahrerwertung), true);
if (getState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr').val == getState('0_userdata.0.Formel1.Konstrukteur.Rennen_gefahren').val) {
setState('0_userdata.0.Formel1.Konstrukteur.Ueberschrift_VIS' /* Ueberschrift_VIS */, (['••• Konstrukteurswertung ',getState('0_userdata.0.Formel1.Konstrukteur.Jahr').val,' nach ',getState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr').val,' von ',getState('0_userdata.0.Formel1.Kalender.Anzahl_Rennen_Aktuelles_Jahr').val,' Rennen •••'].join('')), true);
} else {
setState('0_userdata.0.Formel1.Konstrukteur.Ueberschrift_VIS' /* Ueberschrift_VIS */, (['Konstrukteurswertung ',getState('0_userdata.0.Formel1.Konstrukteur.Jahr').val,' nach ',getState('0_userdata.0.Formel1.Konstrukteur.Rennen_Nr').val,' von ',getState('0_userdata.0.Formel1.Kalender.Anzahl_Rennen_Aktuelles_Jahr').val,' Rennen'].join('')), true);
}
});
So sollte es dann aussehen
!!!Wichtig!!!
für die Initialisierung muss man jetzt unter den Datenpunkten einmalig bei allen 4 Bereichen den "aktuell" Button ausführen.
Am besten auch in dieser Reihenfolge:
Kalender.Jahr_aktuell
Rennergebnisse.Rennen_aktuell
Fahrerwertung.Rennen_aktuell
Konstrukteur.Rennen_aktuell
Beispiel für den Kalender
Danach können die vor, zurück und aktuell Button genutzt werden.
Für die VIS sind jeweilige Datenpunkte für Überschriften und Tabellen vorhanden
Ueberschrift_VIS (html widget mit binding)
VIS_json
Für die Darstellung der Json Tabelle (VIS_json) empfehle ich https://github.com/inventwo/ioBroker.vis-inventwo
Geht aber glaube ich nur für VIS1
das Standard widget geht aber auch.
Würde mich freuen wenn einige von euch die Skripte testen und eventuelle Fehler melden würden.
So sieht es bei mir am Ende aus:
Info... die Strecken im Kalender sind mit wikipedia verlinkt.
Eigentlich sollte alles fehlerfrei funktionieren aber eventuell muss ich nächste Saison nachbessern falls er zu Fehlermeldungen wegen dem Jahr kommt. Dass kann ich jetzt noch nicht wirklich alles prüfen.