Unofficial 3kDart API

Rohdaten per DartAPI.fetchData() - eigenes Markup, eigener Stil.
Klick auf einen Teamnamen zeigt Ergebnisse & Kader.

Lade…

Tabelle wird geladen…

Aktueller Spieltag

Spieltag wird geladen…

Vollständiges Beispiel

Kopieren, databaseId und eventId anpassen, als .html speichern — fertig.

<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <title>Meine Dartliga-Tabelle</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">

  <h1 id="liga-name">Wird geladen…</h1>
  <div id="tabelle"></div>

  <script src="https://3k.danielbrk.de/3k-dartsoftware-api.js"></script>
  <script>
    (async function () {
      const data = await DartAPI.fetchData({ databaseId: 9, eventId: 39193 });

      document.getElementById('liga-name').textContent = data.event.name;

      let zeilen = '';
      for (const r of data.table) {
        zeilen += '<tr>'
          + '<td>' + r.rank + '.</td>'
          + '<td>' + r.name + '</td>'
          + '<td>' + r.played + '</td>'
          + '<td>' + r.won   + '</td>'
          + '<td>' + r.lost  + '</td>'
          + '<td>' + r.setsFor + ':' + r.setsAgainst + '</td>'
          + '<td><b>' + r.points + '</b></td>'
          + '</tr>';
      }

      document.getElementById('tabelle').innerHTML =
        '<table border="1" cellpadding="6" cellspacing="0">'
        + '<tr><th>#</th><th>Team</th>'
        + '<th>Sp</th><th>S</th><th>N</th>'
        + '<th>Sets</th><th>Pkt</th></tr>'
        + zeilen
        + '</table>';
    })();
  </script>
</body>
</html>

DartAPI.fetchData()

Einbinden und fertig - kein Server, kein Build-Schritt:

<script src="https://3k.danielbrk.de/3k-dartsoftware-api.js"></script>

const data = await DartAPI.fetchData({ databaseId: 9, eventId: 39193 });

// data.event    → { id, name, nameShort }
// data.table    → array, sortiert nach punkten
// data.schedule → alle spieltage mit matches
// data.teams    → mannschaften mit spielern

Backends

 1 → backend1       6 → backend5
 2 → backend2       8 → dartcup
 3 → test-tomcat    9 → backend-dsab
 4 → backend3      10 → backend-ddv
 5 → backend4      11 → backend6
                   12 → backend7

// id = databaseId in DartAPI.fetchData()

Sudden Death

// ungerade gesamtsets = sd gespielt
// c- bis a-liga : 18 spiele (9:9 → sd)
// ab bz-liga    : 20 spiele (10:10 → sd)
//
// punkte:
//   normaler sieg  →  3 / 0
//   sudden death   →  2 / 1

const sd = (setsHome + setsGuest) % 2 === 1;

Daten-Shape

data.table[0]
  { rank, id, name,
    played, won, lost,
    setsFor, setsAgainst, diff,
    points }
  // 3=sieg · 2=sd-sieg
  // 1=sd-nie · 0=niederlage

data.schedule[0]
  { id, name, index, isCurrent,
    status, matches: [{ id, date,
    status, home, guest,
    setsHome, setsGuest, venue }] }

data.teams[0]
  { id, name, venue, city,
    weekday, throwoffTime,
    players: [{ name, firstname,
    lastname, nickname,
    passNr, captain }] }

Tabelle rendern

data.table.map(r => `
  <tr>
    <td>${r.rank}.</td>
    <td>${r.name}</td>
    <td>${r.played}</td>
    <td>${r.won}</td>
    <td>${r.lost}</td>
    <td>${r.setsFor}:${r.setsAgainst}</td>
    <td><b>${r.points}</b></td>
  </tr>
`).join('');

Aktueller Spieltag

const current = data.schedule
  .find(rd => rd.isCurrent);

current.matches.forEach(m => {
  const score = m.status === 'finish'
    ? `${m.setsHome}:${m.setsGuest}`
    : '-:-';
  console.log(
    m.home.name, score, m.guest.name
  );
});

Spiele eines Teams

const teamId = data.table[0].id;

const spiele = DartAPI.teamMatches(
  data, teamId
);

spiele.forEach(m => {
  const isHome = m.home.id === teamId;
  const own = isHome
    ? m.setsHome : m.setsGuest;
  const opp = isHome
    ? m.setsGuest : m.setsHome;
  const done = m.status === 'finish';
  console.log(
    m.matchday,
    isHome ? m.guest.name : m.home.name,
    done ? `${own}:${opp}` : '-:-'
  );
});