Fußball und EDV

Seit es Fußball gibt werden die Ergebnisse der Spiele in Tabellenform beschrieben. Mit der zunehmenden Öffentlichkeitswirksamkeit des Fußballs geht eine Kommerzialisierung einher, die neben den erzielten Punkten und Toren auch Daten zu den Spielern und Finanzkennzahlen in die Bewertung des Geschehens herangezogen werden. Aber selten gibt es alle diese Zahlen an einem Ort, vielmehr muss man verschiedene Quellen heranziehen.

In diesem Beitrag werden Kenngrößen des österreichischen Bundesligabetriebs in einer Tabelle zusammengefasst. Am Beginn wird die interaktive Bundesliga-Kenngrößen-Tabelle der letzten 5 Saisonen präsentiert, danach kommt eine Beschreibung ihrer Entstehung.

Kenngrößen-Tabelle Bundesliga

  • Saisonen: 2018/19, 2019/20, 2020/21, 2021/22, 2022/23 und Alle Saisonen
  • Ligen: Bundesliga und 2. Liga
  • Vereine: Admira, Altach, Amstetten, Austria, AustriaII, BW-Linz, Dornbirn, FAC, GAK, Hartberg, Horn, Innsbruck, InnsbruckII, JuniorsOÖ, Kapfenberg, Klagenfurt, LASK, Lafnitz, Liefering, Lustenau, Mattersburg, RB, Rapid, RapidII, Ried, StP, Steyr, Sturm, SturmII, Tirol, Vienna, WAC, Wattens, WrN und Alle Vereine
  • Kennzahlenbereiche: Sport, Spieler, Bilanz, Ertrag
  • Alle Spalten sind durch einen Klick auf die zugehörige Kopfzeile aufsteigend sortierbar, ein zweiter Klick sortiert absteigend.
  • Bilanz- und Gewinnkennzahlen der Saison 2022/23 wurden von der Bundesliga noch nicht veröffentlicht.

Quellen

Folgende Quellen wurden für die Tabellen herangezogen:

Sport (Saison 2022/23)

Kennzahlen: Spiele, S (Siege), U (Unentschieden), N (Niederlagen), T0 (Tore erzielt), T1 (Gegentore), Tdiff (Tordifferenz), Pkte (Punkte)

Spieler (Saison 2022/23)

Kennzahlen: Kader, Alter, Legio (Legionäre), WertS (durchschnittlicher Wert eines Spielers), WertK (Wert des Kaders)

Finanzkennzahlen

Kennzahlen: Anlagevermögen, Umlaufvermögen, Eigenkapital, Fremdkapital; Erträge, Personalaufwand, Ergebnis (Jahresergebnis), Agenten (Spielevermittler)

Die Zahlen wurden für die Saisonen 2018/19, 2019/20, 2020/21, 2021/22 und 2022/23 erfasst. Die Finanzkennzahlen der Saison 2022/23 stehen derzeit noch nicht zur Verfügung und werden bei Erscheinen nachgetragen.

Excel-Tabelle

Alle Kenngrößen für alle Saisonen werden in einer bequem editierbaren Excel-Tabelle zusammengefasst.

Damit diese Tabelle auf einer Webseite benutzt werden kann, wird sie in eine CSV-Darstellung verwandelt: Dazu markiert man die Tabelle und kopiert sie in die Zwischenablage. Es entsteht folgende Tabulator-getrennte Tabelle (die ersten drei Zeilen werden hier dargestellt.

Saison	Liga	Platz	Verein	Spiele	S	U	N	T0	T1	Tdiff	Pkte	Anlage	Umlauf	Eigen	Fremd	Ertrag	Personal	Ergebnis	Agenten	Kader	Alter	Legio	WertS	WertK
2018/19	1	1	RB	32	25	5	2	79	27	52	52	33394	32113	44045	24323	119061	51750	23726	967	41	23,1	31	4300	176150
2018/19	1	2	LASK	32	18	9	5	59	31	28	40	4416	3714	213	7715	15303	7704	1252	405	39	24,0	16	759	29600
2018/19	1	3	WAC	32	12	10	10	47	47	0	31	3644	1182	390	2805	8337	4663	-141	179	30	25,0	7	452	13550

Um diese Tabelle als JavaScript-Code einzufügen, verwandelt man sie in eine lange Zeichenkette:

const Text = "Saison	Liga	Platz	Verein	Spiele	S	U	N	T0	T1	Tdiff	Pkte	Anlage	Umlauf	Eigen	Fremd	Ertrag	Personal	Ergebnis	Agenten	Kader	Alter	Legio	WertS	WertK##"
+ "2018/19	1	1	RB	32	25	5	2	79	27	52	52	33394	32113	44045	24323	119061	51750	23726	967	41	23,1	31	4300	176150##"
+ "2018/19	1	2	LASK	32	18	9	5	59	31	28	40	4416	3714	213	7715	15303	7704	1252	405	39	24,0	16	759	29600##"
+ "2018/19	1	3	WAC	32	12	10	10	47	47	0	31	3644	1182	390	2805	8337	4663	-141	179	30	25,0	7	452	13550##"

Um auf die einzelnen Spalten der Tabelle in JavaScript korrekt zugreifen zu können, wird die Tabelle in einer Funktion ConvertText() in eine benannte Tabelle umgewandelt:

var JSONdata = ""
var Vereine = []
var Saisonen = []
var Head = []
var Body = []
function GetItem(key,value) {
	return "\"" + key + "\":" + value
}
function ConvertText() {
	const Zeilen = Text.split("##")
	Head = Zeilen[0].split("\t")
	for (var z=1; z<Zeilen.length; z++) {
		if ((Zeilen[z][0]=="") || (Zeilen[z][0]===undefined)) continue
		Body.push(Zeilen[z].split("\t"))
	}
	Body.forEach(function(valueB,indexB){
		JSONdata += (indexB==0 ? "" : ",") + "{"
		Head.forEach(function(valueH, indexH){
			var item = ""
			var value = valueB[indexH]
			value = (value===undefined ? "0" : value)
			value = (value==="" ? "0" : value)
			switch (valueH) {
				case "Verein":
				case "Saison":
					item = GetItem(valueH,"\""+value+"\"")
					break
				case "Alter":
					item = GetItem(valueH,value.replace(",","."))
					break
				default:
					item = GetItem(valueH,value)
					break
			}
			JSONdata += (indexH==0 ? "" : ",") + item
		})
		JSONdata += "}"
	})
	JSONdata = "[" + JSONdata +"]"
	JSONdata = JSON.parse(JSONdata)
	JSONdata.forEach(function(value){
		if (!Vereine.includes(value.Verein))
			Vereine.push(value.Verein)
		if (!Saisonen.includes(value.Saison))
			Saisonen.push(value.Saison)
	})
	Vereine.sort(function(a,b){
		if (a>b) return 1
		if (a', {
			text: value1
		}));		
	})
	Saisonen.sort(function(a,b){
		if (a>b) return -1
		if (a', {
			text: value1
		}));		
	})
	$('#select-saison').append($('

Die Spalte Anlage der neuen Tabelle JSONdata kann so angesprochen werden: JSONdata[23].Anlage.

Programmcode

<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=2.0, user-scalable=yes">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
<script
  src="https://code.jquery.com/jquery-3.7.0.min.js"
  integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g="
  crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,500,0,200" />

<div class=" container-sm">
	<div class="row">
		<div class="col col-auto">
			<select id="select-verein" class="form-select btn-primary">
				<option selected>Alle Vereine</option>
			</select>
		</div>
		<div class="col col-auto">
			<select id="select-saison" class="form-select btn-primary">
			</select>
		</div>
	</div>
	<div class="row">
		<div class="col col-auto">
			<div class="btn-group" role="group"  id="btn-liga">
				<input type="radio" class="btn-check" name="btnliga" id="btncheck_1" autocomplete="off" checked>
				<label class="btn btn-outline-primary" for="btncheck_1">1</label>
			
				<input type="radio" class="btn-check" name="btnliga" id="btncheck_2" autocomplete="off">
				<label class="btn btn-outline-primary" for="btncheck_2">2</label>
			</div>
		</div>
		<div class="col col-auto">
			<div class="btn-group" role="group">
				<input type="radio" class="btn-check" name="category" id="btncheck_sport" autocomplete="off" checked>
				<label class="btn btn-outline-primary" for="btncheck_sport">Bewerb</label>
			
				<input type="radio" class="btn-check" name="category" id="btncheck_spieler" autocomplete="off">
				<label class="btn btn-outline-primary" for="btncheck_spieler">Spieler</label>

				<input type="radio" class="btn-check" name="category" id="btncheck_bilanz" autocomplete="off">
				<label class="btn btn-outline-primary" for="btncheck_bilanz">Bilanz</label>
			
				<input type="radio" class="btn-check" name="category" id="btncheck_gewinn" autocomplete="off">
				<label class="btn btn-outline-primary" for="btncheck_gewinn">Gewinn</label>
			</div>
		</div>
	</div>
	<div class="row">
		<div class="col col-3">
			<table class="table table-sm">
				<thead id="bilanz-head"></thead>
				<tbody id="bilanz-table"></tbody>
			</table>
		</div>
	</div>
</div>
<style>
	td { font-size:10pt;font-family:Courier}
	.right { text-align:right;}
	.left { text-align:left; font-weight:bold;}
	.l1 { background-color: white; }
	.l2 { background-color: rgb(223, 220, 220); }
	.rapid_ { background-color: rgb(209, 233, 209) !important; }
	.title { text-align:center; font-weight:bold;}
	.negativ { color:red; }
	.sort { color: green; font-weight:bold; }
	.headcell { white-space: nowrap;}
</style>
<script>
const Text = "Saison	Liga	Platz	Verein	Spiele	S	U	N	T0	T1	Tdiff	Pkte	Anlage	Umlauf	Eigen	Fremd	Ertrag	Personal	Ergebnis	Agenten	Kader	Alter	Legio	WertS	WertK##"
+ "2018/19	1	1	RB	32	25	5	2	79	27	52	52	33394	32113	44045	24323	119061	51750	23726	967	41	23,1	31	4300	176150##"
+ "2018/19	1	2	LASK	32	18	9	5	59	31	28	40	4416	3714	213	7715	15303	7704	1252	405	39	24,0	16	759	29600##"
+ "2018/19	1	3	WAC	32	12	10	10	47	47	0	31	3644	1182	390	2805	8337	4663	-141	179	30	25,0	7	452	13550##"
+ "2018/19	1	4	Austria	32	12	6	14	45	48	-3	27	70837	19192	4309	76175	38763	14576	2286	1502	34	24,1	12	879	29880##"
+ "2018/19	1	5	Sturm	32	10	10	12	37	40	-3	24	5419	5687	5362	4294	18940	10757	89	859	32	24,3	8	777	24850##"
+ "2018/19	1	6	StP	32	9	9	14	32	50	-18	21	546	2281	-886	3748	8374	5270	19	79	36	24,2	8	291	10480##"
+ "2018/19	1	7	Rapid	32	13	7	12	48	44	4	32	61248	10164	15106	45109	50745	22278	180	1391	37	23,7	11	935	34600##"
+ "2018/19	1	8	Altach	32	9	10	13	48	44	4	28	4530	2423	1801	2631	7386	4699	28	123	33	25,6	9	409	13500##"
+ "2018/19	1	9	Mattersburg	32	12	7	13	41	48	-7	28	6542	5969	5978	5576	11341	7493	-44	25	32	25,8	5	295	9430##"
+ "2018/19	1	10	Hartberg	32	10	5	17	48	66	-18	22	1198	359	-33	543	4308	2693	71	67	31	24,2	8	343	10630##"
+ "2018/19	1	11	Admira	32	8	9	15	42	62	-20	22	1929	1963	-1148	4777	6716	4597	-389	102	33	23,0	8	403	13300##"
+ "2018/19	1	12	Innsbruck	32	8	5	19	32	51	-19	20	55	1744	24	1788	9217	4617	489	444	37	23,8	9	334	12380##"
+ "2019/20	1	1	RB	32	22	8	2	110	34	76	50	40853	87342	84409	45079	183014	53682	40364	1009	32	23,5	26	6380	204100##"
+ "2019/20	1	2	Rapid	32	17	7	8	64	43	21	38	61395	10430	14907	45241	42068	18313	-199	1111	39	23,5	12	847	33050##"
+ "2019/20	1	3	WAC	32	15	9	8	69	43	26	35	3607	2501	2396	1971	13608	6324	2006	345	33	25,5	7	529	17450##"
+ "2019/20	1	4	LASK	32	20	4	8	67	37	30	33	8602	4887	4491	9482	34266	14642	4278	2558	29	25,4	7	903	26180##"
+ "2019/20	1	5	Hartberg	32	12	6	14	52	74	-22	27	1336	963	255	1048	4968	3346	288	87	30	25,9	6	289	8680##"
+ "2019/20	1	6	Sturm	32	10	5	17	46	60	-14	19	4678	5484	4124	4413	15837	9393	-1238	1692	35	25,6	7	612	21430##"
+ "2019/20	1	7	Austria	32	12	11	9	49	47	2	34	66001	5817	-14535	78030	22755	13916	-18844	827	32	24,3	11	567	18150##"
+ "2019/20	1	8	Altach	32	10	8	14	45	53	-8	26	6807	2537	1669	3284	7374	4248	-131	174	32	24,4	10	334	10700##"
+ "2019/20	1	9	StP	32	8	10	14	39	65	-26	25	326	2059	-1296	3741	8059	5141	-410	169	38	24,7	10	278	10550##"
+ "2019/20	1	10	Admira	32	6	10	16	29	57	-28	18	5567	3143	-1044	9479	9191	5328	0	463	35	23,9	9	318	11130##"
+ "2019/20	1	11	Tirol	32	6	8	18	34	66	-32	16	536	1863	683	1522	6339	3924	290	60	32	27,8	11	221	7080##"
+ "2020/21	1	1	RB	32	25	2	5	94	33	61	51	63233	54650	89384	29522	112122	53302	4975	912	35	23,1	26	5390	188700##"
+ "2020/21	1	2	Rapid	32	17	8	7	64	40	24	36	57293	19421	15605	49503	40475	21227	697	972	32	24,6	9	1350	43350##"
+ "2020/21	1	3	Sturm	32	16	8	8	52	34	18	36	5105	5576	3623	5880	14817	9611	-500	842	31	23,4	8	898	27850##"
+ "2020/21	1	4	LASK	32	15	6	11	55	41	14	30	14925	6999	4570	18155	23379	12910	79	584	35	24,4	13	1030	36130##"
+ "2020/21	1	5	WAC	32	13	5	14	52	62	-10	27	3437	5166	3886	3140	17503	7731	1491	1466	32	24,8	10	608	19450##"
+ "2020/21	1	6	Tirol	32	10	8	14	53	60	-7	23	3678	4830	1720	3782	7385	3781	1037	93	27	24,8	9	522	14100##"
+ "2020/21	1	7	Hartberg	32	12	11	9	38	48	-10	32	1438	1101	589	987	5880	4035	334	201	31	26,0	6	340	10530##"
+ "2020/21	1	8	Austria	32	11	9	12	47	43	4	29	60997	7130	-19223	79601	29925	13208	-4687	808	36	24,5	10	656	23600##"
+ "2020/21	1	9	Ried	32	8	9	15	34	57	-23	25	8130	1917	327	3592	8430	4965	491	235	33	24,8	7	279	9200##"
+ "2020/21	1	10	Altach	32	9	7	16	33	55	-22	23	6860	2662	2129	3042	8016	5236	460	203	33	25,9	11	324	10700##"
+ "2020/21	1	11	Admira	32	6	8	18	27	58	-31	19	1434	2733	-1629	5821	10287	7077	-469	519	44	24,0	12	277	12180##"
+ "2020/21	1	12	StP	32	5	9	18	39	57	-18	13	360	2039	-865	3322	8817	5017	431	100	33	24,1	12	370	12230##"
+ "2021/22	1	1	RB	32	25	5	2	77	19	58	52	86020	58484	104775	40189	152528	56540	15391	599	34	22,9	28	7740	263300##"
+ "2021/22	1	2	Sturm	32	16	8	8	62	46	16	37	7916	7393	5893	8430	28562	14470	2274	1856	34	23,5	9	1120	37930##"
+ "2021/22	1	3	Austria	32	11	13	8	44	39	5	29	56609	5732	-16281	71911	23583	12621	-7058	682	36	23,0	11	664	23900##"
+ "2021/22	1	4	WAC	32	14	5	13	48	53	-5	28	3250	4551	4055	2490	10245	5965	169	423	31	24,8	10	660	20480##"
+ "2021/22	1	5	Rapid	32	10	11	11	48	45	3	25	57214	19907	21360	44975	49631	20262	5756	759	43	23,3	8	1050	45280##"
+ "2021/22	1	6	Klagenfurt	32	8	12	12	43	57	-14	21	176	876	-7933	9021	5820	5915	-3152	20	36	24,6	19	360	12980##"
+ "2021/22	1	7	Tirol	32	10	10	12	46	58	-12	28	4058	4528	1975	3680	7810	4272	255	514	31	23,9	12	428	13280##"
+ "2021/22	1	8	LASK	32	9	12	11	44	42	2	26	44224	22445	5047	51243	30885	15104	477	885	39	25,0	15	790	30800##"
+ "2021/22	1	9	Altach	32	7	8	17	24	49	-25	22	6719	2717	2724	2170	10284	5745	595	290	37	26,0	8	256	9480##"
+ "2021/22	1	10	Ried	32	8	13	11	40	54	-14	22	8381	1633	1095	3116	10519	5421	858	215	30	24,8	8	319	9580##"
+ "2021/22	1	11	Hartberg	32	7	12	13	43	47	-4	22	1473	1855	1856	668	6373	4463	-99	231	32	26,4	8	372	11900##"
+ "2021/22	1	12	Admira	32	6	13	13	36	46	-10	21	1836	2150	-1631	5662	9547	6370	2		34	24,1	11	403	13700##"
+ "2022/23	1	1	RB	32	25	5	2	77	19	58	52									42	22,1	33	6360	267080##"
+ "2022/23	1	2	Sturm	32	16	8	8	62	46	16	37									36	23,6	14	2830	101980##"
+ "2022/23	1	3	LASK	32	11	13	8	44	39	5	29									39	25,3	16	1050	40780##"
+ "2022/23	1	4	Rapid	32	14	5	13	48	53	-5	28									35	24,5	7	974	34100##"
+ "2022/23	1	5	Austria	32	10	11	11	48	45	3	25									33	24,5	10	760	25080##"
+ "2022/23	1	6	Klagenfurt	32	8	12	12	43	57	-14	21									35	25,1	17	341	11930##"
+ "2022/23	1	7	WAC	32	12	11	9	38	48	-10	32									30	24,0	11	615	18450##"
+ "2022/23	1	8	Lustenau	32	11	9	12	47	43	4	29									28	23,3	15	428	11980##"
+ "2022/23	1	9	Tirol	32	8	9	15	34	57	-23	25									29	24,0	10	325	9430##"
+ "2022/23	1	10	Hartberg	32	9	7	16	33	55	-22	23									40	25,9	10	268	10730##"
+ "2022/23	1	11	Altach	32	6	8	18	27	58	-31	19									34	24,0	13	461	15680##"
+ "2022/23	1	12	Ried	32	5	9	18	39	57	-18	13									39	23,8	14	245	9550##"
+ "2018/19	2	1	Wattens	30	19	8	3	59	26	33	65	345	832	393	832	4017	2801	101		25	26,1	10	196	4900##"
+ "2018/19	2	2	Ried	30	18	9	3	61	21	40	63	9198	1381	-262	4013	5484	3426	-2		28	23,5	9	215	6030##"
+ "2018/19	2	3	Lustenau	30	14	8	8	55	34	21	50	129	409	-415	955	2694	1570	-435		30	21,8	17	151	4530##"
+ "2018/19	2	4	Kapfenberg	30	13	7	10	44	40	4	46	697	1107	-579	2384	2030	967	30		20	20,4	6	136	4080##"
+ "2018/19	2	5	BW-Linz	30	14	2	14	46	48	-2	44													##"
+ "2018/19	2	6	WrN	30	12	8	10	39	41	-2	44													##"
+ "2018/19	2	7	JuniorsOÖ	30	13	3	14	52	55	-3	42	491	483	717	289	1750	878	39		39	19,8	15	146	5680##"
+ "2018/19	2	8	Klagenfurt	30	9	14	7	43	35	8	41	40	205	-3640	3885	642	1016	-1858		37	22,8	18	122	4500##"
+ "2018/19	2	9	InnsbruckII	30	10	11	9	40	44	-4	41									40	20,6	5	157	6280##"
+ "2018/19	2	10	FAC	30	11	8	11	35	41	-6	41	236	309	111	293	1558	648	57						##"
+ "2018/19	2	11	Amstetten	30	10	6	14	45	43	2	36	1830	275	669	51	1444	864	48		31	24,9	4	123	3800##"
+ "2018/19	2	12	Liefering	30	10	5	15	50	54	-4	35	930	1160	1	2250	17706	7005	0		45	18,6	24	559	25180##"
+ "2018/19	2	13	AustriaII	30	9	7	14	46	62	-16	34									49	20,8	12	242	11850##"
+ "2018/19	2	14	Lafnitz	30	8	9	13	36	42	-6	33	1218	5	361	654	1168	746	739		39	24,4	8	112	4380##"
+ "2018/19	2	15	Horn	30	6	7	17	33	62	-29	25	1688	575	1549	613	1662	750	2		37	22,5	9	101	3730##"
+ "2018/19	2	16	Steyr	30	5	6	19	32	68	-36	21	140	101	-326	521	1138	700	-100		34	23,7	7	90	3050##"
+ "2019/20	2	1	Ried	30	20	4	6	73	39	34	64	8529	1894	-164	4169	5387	2996	95		29	24,0	9	228	6630##"
+ "2019/20	2	2	Klagenfurt	30	19	7	4	65	36	29	64	40	595	1218	1853	1208	1971	-2088		31	23,5	17	163	5050##"
+ "2019/20	2	3	Liefering	30	15	8	7	73	47	26	53	580	882	51	2726	18084	8109	51		36	18,8	22	547	19700##"
+ "2019/20	2	4	AustriaII	30	14	6	10	62	44	18	48													##"
+ "2019/20	2	5	Amstetten	30	12	9	9	51	47	4	45	1771	532	757	220	1808	1971	-2088		28	24,9	2	154	4330##"
+ "2019/20	2	6	Innsbruck	30	13	5	12	44	49	-5	44	69	1261	331	1018	3529	1749	-193		34	21,2	6	146	4980##"
+ "2019/20	2	7	Steyr	30	11	8	11	42	36	6	41	190	125	-321	566	1582	859	5		30	24,5	5	102	3050##"
+ "2019/20	2	8	Lafnitz	30	9	12	9	42	42	0	39	1118	102	369	645	1262	806	8		40	24,9	9	127	5080##"
+ "2019/20	2	9	JuniorsOÖ	30	10	8	12	50	63	-13	38	855	275	728	403	2166	1452	12		42	20,5	13	145	6100##"
+ "2019/20	2	10	BW-Linz	30	10	7	13	51	57	-6	37	144	431	-284	860	3249	1463	-113		32	22,3	8	134	4280##"
+ "2019/20	2	11	Lustenau	30	10	5	15	57	58	-1	35	93	999	-356	1457	2576	1457	59		42	22,8	22	148	6200##"
+ "2019/20	2	12	Dornbirn	30	8	10	12	40	59	-19	34	15	115	65	66	1100	418	84		33	22,9	5	105	3480##"
+ "2019/20	2	13	Horn	30	8	8	14	58	67	-9	32	1597	579	1482	596	1698	675	-57		33	22,8	6	134	4430##"
+ "2019/20	2	14	FAC	30	7	11	12	32	51	-19	32	211	512	427	277	1757	744	317		31	22,7	7	116	3600##"
+ "2019/20	2	15	GAK	30	7	10	13	40	50	-10	31	972	666	1063	579	2057	1	-529		37	23,9	9	111	4100##"
+ "2019/20	2	16	Kapfenberg	30	6	4	20	34	69	-35	22	698	972	19	1651	2579	849	598		41	21,2	14	82	3350##"
+ "2020/21	2	1	BW-Linz	30	20	3	7	70	31	39	63	135	765	186	714	2388	1390	65		28	23,1	4	215	6030##"
+ "2020/21	2	2	Liefering	30	19	6	5	69	31	38	63	478	1367	51	1855	18231	7007	0		36	18,7	20	1080	38930##"
+ "2020/21	2	3	Klagenfurt	30	17	8	5	64	32	32	59	96	857	-4781	5751	2087	3663	-3563		29	24,3	17	237	6880##"
+ "2020/21	2	4	Innsbruck	30	17	6	7	50	33	17	57	386	1819	245	1933	6364	4601	-2929		35	23,9	12	187	6540##"
+ "2020/21	2	5	Lafnitz	30	17	4	9	56	35	21	55	1051	136	396	600	1425	965	26		27	25,4	0	178	4800##"
+ "2020/21	2	6	GAK	30	13	7	10	46	42	4	46	254	1159	794	658	3472	1715	458		31	24,3	5	133	4110##"
+ "2020/21	2	7	Dornbirn	30	11	5	14	40	53	-13	38	11	271	69	217	1145	556	4		28	23,5	6	140	3930##"
+ "2020/21	2	8	JuniorsOÖ	30	10	7	13	38	49	-11	37	1432	1279	637	2078	2582	1916	-91		35	20,9	15	208	7280##"
+ "2020/21	2	9	FAC	30	10	6	14	39	41	-2	36	179	163	114	223	1316	862	-314		30	22,8	5	138	4140##"
+ "2020/21	2	10	Kapfenberg	30	9	6	15	34	51	-17	33	681	895	-302	1878	2034	1069	-321		42	21,0	14	104	4380##"
+ "2020/21	2	11	AustriaII	30	8	8	14	41	52	-11	32									42	20,6	6	263	11040##"
+ "2020/21	2	12	Amstetten	30	8	7	15	38	61	-23	31	1776	403	761	143	1619	1150	4		31	24,5	4	136	4220##"
+ "2020/21	2	13	Lustenau	30	8	6	16	44	55	-11	30	85	1174	-353	1612	2604	1524	3		30	22,4	13	157	4700##"
+ "2020/21	2	14	RapidII	30	8	6	16	37	53	-16	30									47	19,9	6	214	10040##"
+ "2020/21	2	15	Horn	30	8	6	16	40	62	-22	30	1836	789	1102	1275	1788	1044	-390		39	23,0	16	123	4820##"
+ "2020/21	2	16	Steyr	30	7	9	14	30	55	-25	30	273	387	-255	847	1575	955	66		33	23,8	5	120	3960##"
+ "2021/22	2	1	Lustenau	30	22	4	4	69	26	43	70	116	464	-1155	1746	2353	1764	-802		29	22,6	13	260	7530##"
+ "2021/22	2	2	FAC	30	20	5	5	51	18	33	65	142	212	65	296	1801	902	-49		32	22,6	6	168	5370##"
+ "2021/22	2	3	BW-Linz	30	15	9	6	51	27	24	54	89	493	92	492	2826	1604	-94		29	23,2	8	190	5510##"
+ "2021/22	2	4	Lafnitz	30	15	7	8	53	42	11	52	951	106	351	543	1576	1097	-45		35	24,3	0	144	5030##"
+ "2021/22	2	5	Amstetten	30	15	6	9	59	35	24	51	1672	276	386	328	2009	1692	-376		26	24,4	6	174	4520##"
+ "2021/22	2	6	Liefering	30	12	10	8	56	43	13	46	471	2082	51	2532	19106	8104	0		45	18,2	21	592	26630##"
+ "2021/22	2	7	GAK	30	13	7	10	47	39	8	46	264	1017	517	784	3542	2207	-279		34	23,4	5	132	4490##"
+ "2021/22	2	8	StP	30	12	6	12	43	38	5	42	835	641	-1182	2757	6732	3809	-317		35	23,2	9	156	5450##"
+ "2021/22	2	9	InnsbruckII	30	11	7	12	46	41	5	40									48	23,3	15	131	6270##"
+ "2021/22	2	10	Steyr	30	10	7	13	39	52	-13	37	598	224	-752	1198	1513	1246	-497		35	24,3	8	115	4010##"
+ "2021/22	2	11	RapidII	30	8	9	13	45	62	-17	33									44	20,1	4	228	10040##"
+ "2021/22	2	12	Kapfenberg	30	8	6	16	36	54	-18	30	667	512	-1204	2405	1660	1252	-901		42	21,1	15	96	4030##"
+ "2021/22	2	13	Horn	30	7	7	16	34	55	-21	28	1709	529	391	1641	1397	927	-681		30	23,0	10	133	3980##"
+ "2021/22	2	14	AustriaII	30	6	7	17	31	56	-25	25									45	20,8	10	312	14030##"
+ "2021/22	2	15	JuniorsOÖ	30	4	11	15	37	71	-34	23									38	20,5	9	213	8110##"
+ "2021/22	2	16	Dornbirn	30	6	4	20	35	73	-38	22	10	291	-15	316	724	728	-84		32	23,4	8	131	4200##"
+ "2022/23	2	1	BW-Linz	30	19	4	7	63	27	36	61									25	24,6	6	239	5970##"
+ "2022/23	2	2	GAK	30	17	9	4	52	29	23	60									33	24,1	7	158	5220##"
+ "2022/23	2	3	StP	30	17	5	8	51	27	24	56									29	23,8	12	205	5950##"
+ "2022/23	2	4	Horn	30	13	9	8	38	33	5	48									33	22,6	8	145	4790##"
+ "2022/23	2	5	FAC	30	12	9	9	41	30	11	45									28	23,4	4	142	3980##"
+ "2022/23	2	6	Amstetten	30	12	9	9	49	49	0	45									29	23,6	4	149	4330##"
+ "2022/23	2	7	Vienna	30	12	7	11	34	33	1	43									34	23,4	5	124	4210##"
+ "2022/23	2	8	Lafnitz	30	12	5	13	48	46	2	41									29	24,6	3	171	4960##"
+ "2022/23	2	9	Liefering	30	11	4	15	52	54	-2	37									40	18,7	17	843	33730##"
+ "2022/23	2	10	Admira	30	10	6	14	39	42	-3	36									35	22,3	9	139	4880##"
+ "2022/23	2	11	Dornbirn	30	10	5	15	43	44	-1	35									31	22,2	9	131	4080##"
+ "2022/23	2	12	SturmII	30	10	4	16	43	56	-13	34									39	20,0	7	415	16180##"
+ "2022/23	2	13	Kapfenberg	30	9	7	14	40	56	-16	34									36	21,7	10	114	4110##"
+ "2022/23	2	14	Steyr	30	8	8	14	36	54	-18	32									33	23,8	5	126	4160##"
+ "2022/23	2	15	RapidII	30	7	9	14	33	55	-22	30									47	20,5	5	250	11750##"
+ "2022/23	2	16	AustriaII	30	7	8	15	34	61	-27	29									42	21,0	12	229	9610##"

var sort_col = ""
var sort_dir = 1

var show_l1 = false
var show_l2 = false
var show_sport = false
var show_bilanz = false
var show_gewinn = false
var show_spieler = false
var JSONdata = ""
var Vereine = []
var Saisonen = []
function ButtonCheck() {
	var Verein = $('#select-verein').find(":selected").text()
	if (Verein=="Alle Vereine") {
		$("#select-saison").show()
		$("#btn-liga").show()
		var Saison = $('#select-saison').find(":selected").text()
		show_season_2018 = (Saison=="2018/19") || (Saison=="Alle Saisonen")
		show_season_2019 = (Saison=="2019/20") || (Saison=="Alle Saisonen")
		show_season_2020 = (Saison=="2020/21") || (Saison=="Alle Saisonen")
		show_season_2021 = (Saison=="2021/22") || (Saison=="Alle Saisonen")
		show_season_2022 = (Saison=="2022/23") || (Saison=="Alle Saisonen")
		show_l1 = false	
		show_l2 = false	
		if ($("#btncheck_12").prop("checked")) {
			show_l1 = true	
			show_l2 = true	
		} else if ($("#btncheck_1").prop("checked")) show_l1 = true
		else if ($("#btncheck_2").prop("checked")) show_l2 = true
	} else {
		$("#select-saison").hide()
		$("#btn-liga").hide()
		show_season_2018 = true
		show_season_2019 = true
		show_season_2020 = true
		show_season_2021 = true
		show_season_2022 = true
		show_l1 = true	
		show_l2 = true	
	}
	show_sport = ($("#btncheck_sport").prop("checked") ? true : false)
	show_bilanz = ($("#btncheck_bilanz").prop("checked") ? true : false)
	show_gewinn = ($("#btncheck_gewinn").prop("checked") ? true : false)
	show_spieler = ($("#btncheck_spieler").prop("checked") ? true : false)
}
function ButtonExecute() {
	if (show_season_2018 && show_l1) { $(".s2018l1").show() } else { $(".s2018l1").hide() }
	if (show_season_2018 && show_l2) { $(".s2018l2").show() } else { $(".s2018l2").hide() }
	if (show_season_2019 && show_l1) { $(".s2019l1").show() } else { $(".s2019l1").hide() }
	if (show_season_2019 && show_l2) { $(".s2019l2").show() } else { $(".s2019l2").hide() }
	if (show_season_2020 && show_l1) { $(".s2020l1").show() } else { $(".s2020l1").hide() }
	if (show_season_2020 && show_l2) { $(".s2020l2").show() } else { $(".s2020l2").hide() }
	if (show_season_2021 && show_l1) { $(".s2021l1").show() } else { $(".s2021l1").hide() }
	if (show_season_2021 && show_l2) { $(".s2021l2").show() } else { $(".s2021l2").hide() }
	if (show_season_2022 && show_l1) { $(".s2022l1").show() } else { $(".s2022l1").hide() }
	if (show_season_2022 && show_l2) { $(".s2022l2").show() } else { $(".s2022l2").hide() }
	if (show_season_2018 && show_season_2019 && show_season_2020 && show_season_2021 && show_season_2022 ) {
		$(".saison").show()
	} else $(".saison").hide()
	if (show_l1 && show_l2) {
		$(".liga").show()
	} else $(".liga").hide()
	var Verein = $('#select-verein').find(":selected").text()
	if (Verein!="Alle Vereine") {
		Vereine.forEach(function(value){
			$("."+value).hide()
		})
		$("."+Verein).show()
	}
	if (show_sport) { $(".sport").show() } else { $(".sport").hide() }
	if (show_bilanz) { $(".bilanz").show() } else { $(".bilanz").hide() }
	if (show_gewinn) { $(".gewinn").show() } else { $(".gewinn").hide() }
	if (show_spieler) { $(".spieler").show() } else { $(".spieler").hide() }
}
function GetMoney(value){
	var negativ = false
	if (value*1<0) {
		negativ = true
		value = (value+"").substring(1)
	}
	value = value+""
	switch (value.length) {
		case 6:
			value = value.substring(0,3)+","+value.substring(3,4) + "M"
			break
		case 5:
			value = value.substring(0,2)+","+value.substring(2,3) + "M"
			break
		case 4:
			value = value.substring(0,1)+","+value.substring(1,2) + "M"
			break
		case 3:
			value = "0,"+value.substring(0,1) + "M"
			break
		case 2:
			value = "0,0"+value.substring(0,1) + "M"
			break
		case 1:
			value = "0,00"+value + "M"
			break
	}
	value = (negativ ? "-" : "") + value
	return value
}
function GetCell(value,format) {
	if (value*1<0) format += " negativ"
	return "<td class='"+format+"'>"+value+"</td>"
}
function GetCellMoney(value,format) {
	if (value*1==0) 
		return "<td class='"+format+"' title='keine Angabe'>&bullet;</td>"
	else {
		value1 = GetMoney(value)
		if (value1[0]=="-") format += " negativ"
		return "<td class='"+format+"' title='"+value+"'>"+value1+"</td>"
	}
}
function GetRow(row) {
	const Liga = (row.Liga==1 ? "l1" : "l2")
	const Saison = " s" + row.Saison.substring(0,4)
	const SaisonLiga = Saison+Liga
	const Verein = " " + row.Verein
	const Rapid = (row.Verein.includes("Rapid") ? " rapid_" : "")
	const Classes =  Saison + Liga + Verein + Rapid
	var s = "<tr class='"+ Classes + "'>"
	s += GetCell(row.Saison, "left saison" + Classes)
	s += GetCell(row.Liga, "right liga" + Classes)
	s += GetCell(row.Platz, "right" + Classes)
	s += GetCell(row.Verein,"left" + Classes)
	s += GetCell(row.Spiele,"right sport" + Classes)
	s += GetCell(row.S,"right sport" + Classes)
	s += GetCell(row.U,"right sport" + Classes)
	s += GetCell(row.N,"right sport" + Classes)
	s += GetCell(row.T0,"right sport" + Classes)
	s += GetCell(row.T1,"right sport" + Classes)
	s += GetCell(row.Tdiff,"right sport" + Classes)
	s += GetCell(row.Pkte,"right sport" + Classes)
	s += GetCell(row.Kader,"right spieler" + Classes)
	var Alter = (row.Alter+"").includes(".") ? row.Alter : row.Alter+".0"
	s += GetCell(Alter,"right spieler" + Classes)
	s += GetCell(row.Legio,"right spieler" + Classes)
	s += GetCellMoney(row.WertS,"right spieler" + Classes)
	s += GetCellMoney(row.WertK,"right spieler" + Classes)
	s += GetCellMoney(row.Anlage,"right bilanz" + Classes)
	s += GetCellMoney(row.Umlauf,"right bilanz" + Classes)
	s += GetCellMoney(row.Eigen,"right bilanz" + Classes)
	s += GetCellMoney(row.Fremd,"right bilanz" + Classes)
	s += GetCellMoney(row.Ertrag,"right gewinn" + Classes)
	s += GetCellMoney(row.Personal,"right gewinn" + Classes)
	s += GetCellMoney(row.Ergebnis,"right gewinn" + Classes)
	s += GetCellMoney(row.Agenten,"right gewinn" + Classes)
	s += "</tr>\n"
	return s
}
function DrawTable(title,dir) {
	$(".sort").hide()
	ButtonCheck()
	if (title===undefined) {

	} else {
		if (dir===undefined) {

		} else {
			sort_dir = dir
		}
		if (title==sort_col) {
		sort_dir *= -1
		} else {
			sort_col = title
			sort_dir = 1
		}
		$("#s"+sort_col).html(sort_dir==1 
			? "<span class='material-symbols-outlined'>north</span>" 
			: "<span class='material-symbols-outlined'>south</span>" )
		$("#s"+sort_col).show()
		var s = ""
		JSONdata.sort(function(a,b){
			a = eval("a."+title)
			b = eval("b."+title)
			if (a>b) return sort_dir
			if (a<b) return -sort_dir
			return 0
		})
	}
	JSONdata.forEach(function(value) {
		s += GetRow(value)
	})
	$("#bilanz-table").html(s)
	ButtonExecute()
}
var Head = []
var Body = []
function GetItem(key,value) {
	return "\"" + key + "\":" + value
}
function ConvertText() {
	const Zeilen = Text.split("##")
	Head = Zeilen[0].split("\t")
	for (var z=1; z<Zeilen.length; z++) {
		if ((Zeilen[z][0]=="") || (Zeilen[z][0]===undefined)) continue
		Body.push(Zeilen[z].split("\t"))
	}
	Body.forEach(function(valueB,indexB){
		JSONdata += (indexB==0 ? "" : ",") + "{"
		Head.forEach(function(valueH, indexH){
			var item = ""
			var value = valueB[indexH]
			value = (value===undefined ? "0" : value)
			value = (value==="" ? "0" : value)
			switch (valueH) {
				case "Verein":
				case "Saison":
					item = GetItem(valueH,"\""+value+"\"")
					break
				case "Alter":
					item = GetItem(valueH,value.replace(",","."))
					break
				default:
					item = GetItem(valueH,value)
					break
			}
			JSONdata += (indexH==0 ? "" : ",") + item
		})
		JSONdata += "}"
	})
	JSONdata = "[" + JSONdata +"]"
	JSONdata = JSON.parse(JSONdata)
	JSONdata.forEach(function(value){
		if (!Vereine.includes(value.Verein))
			Vereine.push(value.Verein)
		if (!Saisonen.includes(value.Saison))
			Saisonen.push(value.Saison)
	})
	Vereine.sort(function(a,b){
		if (a>b) return 1
		if (a<b) return -1
		return 0
	})
	Vereine.forEach(function(value1){
		$('#select-verein').append($('<option>', {
			text: value1,
			value: value1
		}));		
	})
	Saisonen.sort(function(a,b){
		if (a>b) return -1
		if (a<b) return 1
		return 0
	})
	Saisonen.forEach(function(value1, index){
		$('#select-saison').append($('<option>', {
			text: value1,
			value: value1
		}));		
	})
	$('#select-saison').append($('<option>', {
		text: "Alle Saisonen"
	}));		
}
function GetHead(title,class1) {
	return "<td class='" + class1 + "'>"
		+ title
		+ "</td>"
/*
	return "<td class='headcell "+title+" " +class1 + "'>"
		+ "<span class='"+class1+"'>"+title+"</span>"
		+ "<span class='sort' id='s"+title+"'></span>"
		+ "</td>"
*/
}
function DrawHead() {
	var s = "<tr>"
	s += GetHead("Saison","title saison")
	s += GetHead("Liga","title liga")
	s += GetHead("Platz","title")
	s += GetHead("Verein","title")
	s += GetHead("Spiele","title sport")
	s += GetHead("S","title sport")
	s += GetHead("U","title sport")
	s += GetHead("N","title sport")
	s += GetHead("T0","title sport")
	s += GetHead("T1","title sport")
	s += GetHead("Tdiff","title sport")
	s += GetHead("Pkte","title sport")
	s += GetHead("Anlage","title bilanz")
	s += GetHead("Umlauf","title bilanz")
	s += GetHead("Eigen","title bilanz")
	s += GetHead("Fremd","title bilanz")
	s += GetHead("Ertrag","title gewinn")
	s += GetHead("Personal","title gewinn")
	s += GetHead("Ergebnis","title gewinn")
	s += GetHead("Agenten","title gewinn")
	s += GetHead("Kader","title spieler")
	s += GetHead("Alter","title spieler")
	s += GetHead("Legio","title spieler")
	s += GetHead("WertS","title spieler")
	s += GetHead("WertK","title spieler")
	s += "</tr>\n"
	$("#bilanz-head").html(s)
}
$(document).on("click",".title",function(){
	DrawTable(this.innerHTML)
})
$(document).on("change","#select-verein",function(){
	DrawTable("Platz",-1)
})
$(document).on("change","#select-saison",function(){
	DrawTable("Platz",-1)
})
$(".btn-check").click(function(){
	DrawTable()
})
ConvertText()
DrawHead()
DrawTable()
</script>

Download

Zur Werkzeugleiste springen