From e15c8e48c1b054e41ce1aae463266e7812ebfd85 Mon Sep 17 00:00:00 2001 From: Philzen Date: Thu, 16 May 2024 20:14:08 +0200 Subject: [PATCH 1/6] Add cargo statistics from http://flensburgerhafen.de Datasheet: https://web.archive.org/web/20240505220208/http://www.flensburgerhafen.de/fileadmin/user_upload/Gueterumschlag_von_2004-2023.pdf --- _data/README.md | 29 +++++++++++++++++++-- _data/swfl_overview_harbour.csv | 46 ++++++++++++++++++--------------- 2 files changed, 52 insertions(+), 23 deletions(-) diff --git a/_data/README.md b/_data/README.md index 33d8610..fc22f64 100644 --- a/_data/README.md +++ b/_data/README.md @@ -78,8 +78,33 @@ | | | | |:--|--|--| -| ships | Eingelaufene Schiffe | | -| cargo | Güterumschlag | 1.000 t | +| ships | Eingelaufene Schiffe (lt. Geschäftsbericht) | | +| cargo | Güterumschlag (lt. Geschäftsbericht) | 1.000 t | +| animal_feed_in | Eingang Futtermittel | t | +| grit_in | Eingang Splitt | t | +| scrap_in | Eingang Schrott | t | +| fertiliser_in | Eingang Düngemittel | t | +| cellulose_in | Eingang Zellulose | t | +| crop_in | Eingang Getreide | t | +| logs_in | Eingang Baumstämme | t | +| other_in | Eingang Sonstiges | t | +| stones_in | Eingang Steine | t | +| sea_grit_in | Eingang Seekies | t | +| coal_in | Eingang Kohle (Westseite) | t | +| chips_in | Eingang Holzhackschnitzel (Westseite) | t | +| oil_heavy_in | Eingang Schweröl (Westseite) | t | +| trafo_in | Eingang Transformatoren (Westseite) | t | +| grit2_in | Eingang Splitt (Westseite) | t | +| animal_feed_out | Ausgang Futtermittel | t | +| grit_out | Ausgang Splitt | t | +| scrap_out | Ausgang Schrott | t | +| fertiliser_out | Ausgang Düngemittel | t | +| cellulose_out | Ausgang Zellulose | t | +| crop_out | Ausgang Getreide | t | +| logs_out | Ausgang Baumstämme | t | +| other_out | Ausgang Sonstiges | t | +| stones_out | Ausgang Steine | t | +| sea_grit_out | Ausgang Seekies | t | ## `swfl_overview_waste.csv` diff --git a/_data/swfl_overview_harbour.csv b/_data/swfl_overview_harbour.csv index 40963c7..0a5cf86 100644 --- a/_data/swfl_overview_harbour.csv +++ b/_data/swfl_overview_harbour.csv @@ -1,21 +1,25 @@ -year,ships,cargo -2000,301,497 -2001,342,648 -2002,,458 -2003,,574 -2004,290,517 -2005,346,564 -2006,, -2007,306,483 -2008,365,582 -2009,276,489 -2010,346,491 -2011,319,502 -2012,287,467 -2013,227,398 -2014,153,368 -2015,120,361 -2016,119,306 -2017,, -2018,, -2019,, \ No newline at end of file +year,ships,cargo,animal_feed_in,grit_in,scrap_in,fertiliser_in,cellulose_in,crop_in,logs_in,other_in,stones_in,sea_grit_in,coal_in,chips_in,oil_heavy_in,trafo_in,grit2_in,animal_feed_out,grit_out,scrap_out,fertiliser_out,cellulose_out,crop_out,logs_out,other_out,stones_out,sea_grit_out +2000,301,497,,,,,,,,,,,,,,,,,,,,,,,,, +2001,342,648,,,,,,,,,,,,,,,,,,,,,,,,, +2002,,458,,,,,,,,,,,,,,,,,,,,,,,,, +2003,,574,,,,,,,,,,,,,,,,,,,,,,,,, +2004,290,517,58066,28674,,38585,20784,5642,0,2215,0,0,342788,0,0,0,,7136,,,,,,,13175,, +2005,346,564,64069,47573,1901,63371,23680,8346,0,6950,0,0,337366,0,0,0,,8568,,,,,,,2079,, +2006,,,81525,45821,1443,67711,21628,638,0,,0,0,274661,0,0,0,,4375,,,,,,,1380,, +2007,306,483,102283,20619,1000,63611,25710,10905,0,1390,0,0,250536,0,0,0,,2496,,,,,,,4523,, +2008,365,582,122981,25852,0,64929,25302,32287,0,3380,0,0,300997,0,0,0,,3348,,,,,,,2500,, +2009,276,489,124846,19863,0,70604,26022,15121,0,0,0,0,230343,0,0,0,,2087,,,,,,,,, +2010,346,491,154915,10046,0,74337,25888,11557,973,0,0,0,209145,2059,1903,0,,439,,,,,,,,, +2011,319,502,136438,36105,,60093,25056,1020,2500,,0,3844,236530,405,0,308,,,,,,,,,,, +2012,287,467,120209,25501,0,57536,14184,11309,0,0,0,0,235369,2393,0,0,,,,,,,,,,, +2013,227,398,35485,15787,0,58537,20698,11505,0,588,0,0,255629,0,0,0,,,,,,,,,,, +2014,153,368,6067,10033,0,80032,18696,13629,0,66,0,,239360,0,0,0,,,,,,,,,,, +2015,120,361,0,0,0,73617,23184,2680,0,35,0,,253966,0,0,0,,,,,7234,,,,18,, +2016,119,306,0,8302,0,59810,10984,0,0,62,0,,227017,0,0,0,,,,,,,,,,, +2017,,,0,49696,0,59432,0,0,0,4,0,,115546,0,0,0,,,,,,,,,,, +2018,,,2017,39562,0,64851,0,0,0,4,0,,182585,0,0,0,,,,,,,,,,, +2019,,,0,66496,0,85072,0,0,0,0,4540,,140980,0,0,0,,,,,,,,,,, +2020,,,1955,66656,0,71697,0,0,0,0,0,,105784,0,0,0,,,,,,,,,,0, +2021,,,14651,76828,0,48484,0,0,0,0,0,,143216,0,0,0,,,,,,,,,,0, +2022,,,6272,47354,0,49585,0,0,0,1646,0,,208474,0,0,0,3301,,,,,,,,,0, +2023,,,2507,36416,0,53622,0,0,0,56,2289,11620,149178,0,0,0,0,,,,,,,,,0, \ No newline at end of file From 5327bfc996f4192829fc0ed146d19734f1cd3637 Mon Sep 17 00:00:00 2001 From: Philzen Date: Thu, 16 May 2024 20:19:23 +0200 Subject: [PATCH 2/6] Fill up total missing cargo totals (east+west) & increase accuracy --- _assets/js/charting/harbour.js | 4 +-- _data/README.md | 54 ++++++++++++++++----------------- _data/swfl_overview_harbour.csv | 42 ++++++++++++------------- pages/job/swfl.md | 3 ++ 4 files changed, 53 insertions(+), 50 deletions(-) diff --git a/_assets/js/charting/harbour.js b/_assets/js/charting/harbour.js index f76b8a1..25b9956 100644 --- a/_assets/js/charting/harbour.js +++ b/_assets/js/charting/harbour.js @@ -2,7 +2,7 @@ var data = { ships: smz.fn.extractColumn(harbourData, "ships"), - cargo: smz.fn.extractColumn(harbourData, "cargo"), + cargo: smz.fn.extractColumn(harbourData, "cargo_total"), }; var harbourChartConfig = { @@ -29,7 +29,7 @@ yAxis: 1 }], xAxis: { - missing: [2002, 2003, 2006, 2017, 2018, 2019] + missing: [2002, 2003, 2006, 2017, 2018, 2019, 2020, 2021, 2022, 2023] }, yAxis: [{ title: { text: "Umschlag in Tonnen" } diff --git a/_data/README.md b/_data/README.md index fc22f64..335ac89 100644 --- a/_data/README.md +++ b/_data/README.md @@ -78,33 +78,33 @@ | | | | |:--|--|--| -| ships | Eingelaufene Schiffe (lt. Geschäftsbericht) | | -| cargo | Güterumschlag (lt. Geschäftsbericht) | 1.000 t | -| animal_feed_in | Eingang Futtermittel | t | -| grit_in | Eingang Splitt | t | -| scrap_in | Eingang Schrott | t | -| fertiliser_in | Eingang Düngemittel | t | -| cellulose_in | Eingang Zellulose | t | -| crop_in | Eingang Getreide | t | -| logs_in | Eingang Baumstämme | t | -| other_in | Eingang Sonstiges | t | -| stones_in | Eingang Steine | t | -| sea_grit_in | Eingang Seekies | t | -| coal_in | Eingang Kohle (Westseite) | t | -| chips_in | Eingang Holzhackschnitzel (Westseite) | t | -| oil_heavy_in | Eingang Schweröl (Westseite) | t | -| trafo_in | Eingang Transformatoren (Westseite) | t | -| grit2_in | Eingang Splitt (Westseite) | t | -| animal_feed_out | Ausgang Futtermittel | t | -| grit_out | Ausgang Splitt | t | -| scrap_out | Ausgang Schrott | t | -| fertiliser_out | Ausgang Düngemittel | t | -| cellulose_out | Ausgang Zellulose | t | -| crop_out | Ausgang Getreide | t | -| logs_out | Ausgang Baumstämme | t | -| other_out | Ausgang Sonstiges | t | -| stones_out | Ausgang Steine | t | -| sea_grit_out | Ausgang Seekies | t | +| ships | Eingelaufene Schiffe (lt. Geschäftsbericht) | | +| cargo_total | Güterumschlag (lt. Geschäftsbericht bis 2016) | 1.000 t | +| animal_feed_in | Eingang Futtermittel | t | +| grit_in | Eingang Splitt | t | +| scrap_in | Eingang Schrott | t | +| fertiliser_in | Eingang Düngemittel | t | +| cellulose_in | Eingang Zellulose | t | +| crop_in | Eingang Getreide | t | +| logs_in | Eingang Baumstämme | t | +| other_in | Eingang Sonstiges | t | +| stones_in | Eingang Steine | t | +| sea_grit_in | Eingang Seekies | t | +| coal_in | Eingang Kohle (Westseite) | t | +| chips_in | Eingang Holzhackschnitzel (Westseite) | t | +| oil_heavy_in | Eingang Schweröl (Westseite) | t | +| trafo_in | Eingang Transformatoren (Westseite) | t | +| grit2_in | Eingang Splitt (Westseite) | t | +| animal_feed_out | Ausgang Futtermittel | t | +| grit_out | Ausgang Splitt | t | +| scrap_out | Ausgang Schrott | t | +| fertiliser_out | Ausgang Düngemittel | t | +| cellulose_out | Ausgang Zellulose | t | +| crop_out | Ausgang Getreide | t | +| logs_out | Ausgang Baumstämme | t | +| other_out | Ausgang Sonstiges | t | +| stones_out | Ausgang Steine | t | +| sea_grit_out | Ausgang Seekies | t | ## `swfl_overview_waste.csv` diff --git a/_data/swfl_overview_harbour.csv b/_data/swfl_overview_harbour.csv index 0a5cf86..ea0006d 100644 --- a/_data/swfl_overview_harbour.csv +++ b/_data/swfl_overview_harbour.csv @@ -1,25 +1,25 @@ -year,ships,cargo,animal_feed_in,grit_in,scrap_in,fertiliser_in,cellulose_in,crop_in,logs_in,other_in,stones_in,sea_grit_in,coal_in,chips_in,oil_heavy_in,trafo_in,grit2_in,animal_feed_out,grit_out,scrap_out,fertiliser_out,cellulose_out,crop_out,logs_out,other_out,stones_out,sea_grit_out +year,ships,cargo_total,animal_feed_in,grit_in,scrap_in,fertiliser_in,cellulose_in,crop_in,logs_in,other_in,stones_in,sea_grit_in,coal_in,chips_in,oil_heavy_in,trafo_in,grit2_in,animal_feed_out,grit_out,scrap_out,fertiliser_out,cellulose_out,crop_out,logs_out,other_out,stones_out,sea_grit_out 2000,301,497,,,,,,,,,,,,,,,,,,,,,,,,, 2001,342,648,,,,,,,,,,,,,,,,,,,,,,,,, 2002,,458,,,,,,,,,,,,,,,,,,,,,,,,, 2003,,574,,,,,,,,,,,,,,,,,,,,,,,,, -2004,290,517,58066,28674,,38585,20784,5642,0,2215,0,0,342788,0,0,0,,7136,,,,,,,13175,, -2005,346,564,64069,47573,1901,63371,23680,8346,0,6950,0,0,337366,0,0,0,,8568,,,,,,,2079,, -2006,,,81525,45821,1443,67711,21628,638,0,,0,0,274661,0,0,0,,4375,,,,,,,1380,, -2007,306,483,102283,20619,1000,63611,25710,10905,0,1390,0,0,250536,0,0,0,,2496,,,,,,,4523,, -2008,365,582,122981,25852,0,64929,25302,32287,0,3380,0,0,300997,0,0,0,,3348,,,,,,,2500,, -2009,276,489,124846,19863,0,70604,26022,15121,0,0,0,0,230343,0,0,0,,2087,,,,,,,,, -2010,346,491,154915,10046,0,74337,25888,11557,973,0,0,0,209145,2059,1903,0,,439,,,,,,,,, -2011,319,502,136438,36105,,60093,25056,1020,2500,,0,3844,236530,405,0,308,,,,,,,,,,, -2012,287,467,120209,25501,0,57536,14184,11309,0,0,0,0,235369,2393,0,0,,,,,,,,,,, -2013,227,398,35485,15787,0,58537,20698,11505,0,588,0,0,255629,0,0,0,,,,,,,,,,, -2014,153,368,6067,10033,0,80032,18696,13629,0,66,0,,239360,0,0,0,,,,,,,,,,, -2015,120,361,0,0,0,73617,23184,2680,0,35,0,,253966,0,0,0,,,,,7234,,,,18,, -2016,119,306,0,8302,0,59810,10984,0,0,62,0,,227017,0,0,0,,,,,,,,,,, -2017,,,0,49696,0,59432,0,0,0,4,0,,115546,0,0,0,,,,,,,,,,, -2018,,,2017,39562,0,64851,0,0,0,4,0,,182585,0,0,0,,,,,,,,,,, -2019,,,0,66496,0,85072,0,0,0,0,4540,,140980,0,0,0,,,,,,,,,,, -2020,,,1955,66656,0,71697,0,0,0,0,0,,105784,0,0,0,,,,,,,,,,0, -2021,,,14651,76828,0,48484,0,0,0,0,0,,143216,0,0,0,,,,,,,,,,0, -2022,,,6272,47354,0,49585,0,0,0,1646,0,,208474,0,0,0,3301,,,,,,,,,0, -2023,,,2507,36416,0,53622,0,0,0,56,2289,11620,149178,0,0,0,0,,,,,,,,,0, \ No newline at end of file +2004,290,517.065,58066,28674,,38585,20784,5642,0,2215,0,0,342788,0,0,0,,7136,,,,,,,13175,, +2005,346,563.903,64069,47573,1901,63371,23680,8346,0,6950,0,0,337366,0,0,0,,8568,,,,,,,2079,, +2006,,499.182,81525,45821,1443,67711,21628,638,0,,0,0,274661,0,0,0,,4375,,,,,,,1380,, +2007,306,483.073,102283,20619,1000,63611,25710,10905,0,1390,0,0,250536,0,0,0,,2496,,,,,,,4523,, +2008,365,581.576,122981,25852,0,64929,25302,32287,0,3380,0,0,300997,0,0,0,,3348,,,,,,,2500,, +2009,276,488.886,124846,19863,0,70604,26022,15121,0,0,0,0,230343,0,0,0,,2087,,,,,,,,, +2010,346,491.262,154915,10046,0,74337,25888,11557,973,0,0,0,209145,2059,1903,0,,439,,,,,,,,, +2011,319,502.299,136438,36105,,60093,25056,1020,2500,,0,3844,236530,405,0,308,,,,,,,,,,, +2012,287,466.501,120209,25501,0,57536,14184,11309,0,0,0,0,235369,2393,0,0,,,,,,,,,,, +2013,227,398.229,35485,15787,0,58537,20698,11505,0,588,0,0,255629,0,0,0,,,,,,,,,,, +2014,153,367.883,6067,10033,0,80032,18696,13629,0,66,0,,239360,0,0,0,,,,,,,,,,, +2015,120,360.734,0,0,0,73617,23184,2680,0,35,0,,253966,0,0,0,,,,,7234,,,,18,, +2016,119,306.175,0,8302,0,59810,10984,0,0,62,0,,227017,0,0,0,,,,,,,,,,, +2017,,224.678,0,49696,0,59432,0,0,0,4,0,,115546,0,0,0,,,,,,,,,,, +2018,,289.019,2017,39562,0,64851,0,0,0,4,0,,182585,0,0,0,,,,,,,,,,, +2019,,297.088,0,66496,0,85072,0,0,0,0,4540,,140980,0,0,0,,,,,,,,,,, +2020,,246.092,1955,66656,0,71697,0,0,0,0,0,,105784,0,0,0,,,,,,,,,,0, +2021,,283.179,14651,76828,0,48484,0,0,0,0,0,,143216,0,0,0,,,,,,,,,,0, +2022,,316.632,6272,47354,0,49585,0,0,0,1646,0,,208474,0,0,0,3301,,,,,,,,,0, +2023,,255.688,2507,36416,0,53622,0,0,0,56,2289,11620,149178,0,0,0,0,,,,,,,,,0, \ No newline at end of file diff --git a/pages/job/swfl.md b/pages/job/swfl.md index 44cdc5b..72921b7 100644 --- a/pages/job/swfl.md +++ b/pages/job/swfl.md @@ -110,6 +110,9 @@ sidebar:

Zu den mit einem Sternchen (*) gekennzeichneten Jahren fehlen in den Geschäftsberichten leider die Angaben bzgl. der Zahl der eingelaufenen Schiffe bzw. des Güterumschlags.

+

+ Die Umschlagsdaten wurden aus den Berichten der Flensburger Hafen GmbH aufgefüllt. +

From 0eb3d5c74beaa5bcdce317919cbfd56540457590 Mon Sep 17 00:00:00 2001 From: Philzen Date: Sun, 19 May 2024 02:04:05 +0200 Subject: [PATCH 3/6] Move mirror method to common global.js --- _assets/js/charting/business-data.js | 17 ++++++----------- _assets/js/charting/global.js | 3 +++ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/_assets/js/charting/business-data.js b/_assets/js/charting/business-data.js index 9d5feaf..832f602 100644 --- a/_assets/js/charting/business-data.js +++ b/_assets/js/charting/business-data.js @@ -87,11 +87,6 @@ Highcharts.wrap(Highcharts.PlotLineOrBand.prototype, 'render', function (proceed otherLiabilities: smz.fn.extractColumn(swflData.Results, "other_liabilities") }; - - function mirror(series) { - return series.map(function(value) {return -value}) - } - function drawEarningsChart() { hc.chart('gewinn-entwicklung', { @@ -287,36 +282,36 @@ Highcharts.wrap(Highcharts.PlotLineOrBand.prototype, 'render', function (proceed },{ name: "Andere Verbindlichkeiten", color: smz.fn.getGradient("#333"), - data: mirror(data.otherLiabilities), + data: smz.fn.mirror(data.otherLiabilities), stack: "debt", },{ name: "Rückstellungen", color: smz.fn.getGradient("#666"), - data: mirror(data.provision), + data: smz.fn.mirror(data.provision), stack: "debt" },{ // to fill up missing split data for year 2000 name: "Kredite gesamt", color: smz.gradient[5], - data: mirror([data.creditLiabilities[0]]), + data: smz.fn.mirror([data.creditLiabilities[0]]), showInLegend: false, stack: "debt" },{ name: "Kredite < 1 Jahr", color: smz.gradient[6], description: "Verbindlichkeiten gegenüber Kreditinstituten, Laufzeit < 1 Jahr", - data: mirror(data.creditLiabilitiesShort), + data: smz.fn.mirror(data.creditLiabilitiesShort), stack: "debt" },{ name: "Kredite 1 - 5 Jahre", color: smz.gradient[3], description: "Verbindlichkeiten gegenüber Kreditinstituten, Laufzeit 1 bis 5 Jahre", - data: mirror(data.creditLiabilitiesMedium), + data: smz.fn.mirror(data.creditLiabilitiesMedium), stack: "debt" },{ name: "Kredite > 5 Jahre", color: smz.gradient[5], description: "Verbindlichkeiten gegenüber Kreditinstituten, Laufzeit > 5 Jahre", - data: mirror(data.creditLiabilitiesLong), + data: smz.fn.mirror(data.creditLiabilitiesLong), stack: "debt" },{ color: smz.gradient[11], diff --git a/_assets/js/charting/global.js b/_assets/js/charting/global.js index e191266..88cc69d 100644 --- a/_assets/js/charting/global.js +++ b/_assets/js/charting/global.js @@ -170,6 +170,9 @@ }, getEmissionsDataSeries: getSeries, getGradient: getGradient, + mirror: function (series) { + return series.map(function(value) {return -value}) + } } } From 689b27e80e5ca03268801165522dd5ac35a389c2 Mon Sep 17 00:00:00 2001 From: Philzen Date: Sun, 19 May 2024 16:54:48 +0200 Subject: [PATCH 4/6] Convert to consistently using single ticks in JS code --- _assets/js/charting/harbour.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/_assets/js/charting/harbour.js b/_assets/js/charting/harbour.js index 25b9956..0bb1546 100644 --- a/_assets/js/charting/harbour.js +++ b/_assets/js/charting/harbour.js @@ -1,8 +1,8 @@ (function(hc, smz, harbourData) { var data = { - ships: smz.fn.extractColumn(harbourData, "ships"), - cargo: smz.fn.extractColumn(harbourData, "cargo_total"), + ships: smz.fn.extractColumn(harbourData, 'ships'), + cargo: smz.fn.extractColumn(harbourData, 'cargo_total'), }; var harbourChartConfig = { @@ -17,12 +17,12 @@ } }, series: [{ - name: "Güterumschlag", + name: 'Güterumschlag', data: data.cargo.map(function(cargoInThousands){ return cargoInThousands * 1000 || null }), color: smz.gradient[11], tooltip: { valueSuffix: ' t' } },{ - name: "Eingelaufene Schiffe", + name: 'Eingelaufene Schiffe', color: smz.gradient[10], data: data.ships, visible: false, @@ -32,14 +32,14 @@ missing: [2002, 2003, 2006, 2017, 2018, 2019, 2020, 2021, 2022, 2023] }, yAxis: [{ - title: { text: "Umschlag in Tonnen" } + title: { text: 'Umschlag in Tonnen' } },{ - title: { text: "Anzahl Schiffe" }, + title: { text: 'Anzahl Schiffe' }, opposite: true }] }; smz.chart = smz.chart || {}; - smz.chart.Harbour = hc.chart("hafen", harbourChartConfig) + smz.chart.Harbour = hc.chart('hafen', harbourChartConfig) })(window.Highcharts, window.smz, window.SWFL.Business.Harbour); From e607c387a7379aa4bd291b8f9ffb559a1dcfd612 Mon Sep 17 00:00:00 2001 From: Philzen Date: Sun, 19 May 2024 18:46:33 +0200 Subject: [PATCH 5/6] Add charts detailing port cargo volumes west vs. east Resolves #12 --- _assets/js/charting/harbour.js | 250 +++++++++++++++++++++++++++++++++ pages/job/swfl.md | 8 +- 2 files changed, 257 insertions(+), 1 deletion(-) diff --git a/_assets/js/charting/harbour.js b/_assets/js/charting/harbour.js index 0bb1546..a27a1ef 100644 --- a/_assets/js/charting/harbour.js +++ b/_assets/js/charting/harbour.js @@ -1,8 +1,35 @@ (function(hc, smz, harbourData) { + var startYearDetail = 2004; var data = { ships: smz.fn.extractColumn(harbourData, 'ships'), cargo: smz.fn.extractColumn(harbourData, 'cargo_total'), + coal: smz.fn.extractColumn(harbourData, 'coal_in', startYearDetail), + chips: smz.fn.extractColumn(harbourData, 'chips_in', startYearDetail), + oil_heavy: smz.fn.extractColumn(harbourData, 'oil_heavy_in', startYearDetail), + trafo: smz.fn.extractColumn(harbourData, 'trafo_in', startYearDetail), + grit2: smz.fn.extractColumn(harbourData, 'grit2_in', startYearDetail), + animal_feed_in: smz.fn.extractColumn(harbourData, 'animal_feed_in', startYearDetail), + animal_feed_out: smz.fn.extractColumn(harbourData, 'animal_feed_out', startYearDetail), + grit_in: smz.fn.extractColumn(harbourData, 'grit_in', startYearDetail), + grit_out: smz.fn.extractColumn(harbourData, 'grit_out', startYearDetail), + scrap_in: smz.fn.extractColumn(harbourData, 'scrap_in', startYearDetail), + scrap_out: smz.fn.extractColumn(harbourData, 'scrap_out', startYearDetail), + fertiliser_in: smz.fn.extractColumn(harbourData, 'fertiliser_in', startYearDetail), + fertiliser_out: smz.fn.extractColumn(harbourData, 'fertiliser_out', startYearDetail), + cellulose_in: smz.fn.extractColumn(harbourData, 'cellulose_in', startYearDetail), + cellulose_out: smz.fn.extractColumn(harbourData, 'cellulose_out', startYearDetail), + crop_in: smz.fn.extractColumn(harbourData, 'crop_in', startYearDetail), + crop_out: smz.fn.extractColumn(harbourData, 'crop_out', startYearDetail), + logs_in: smz.fn.extractColumn(harbourData, 'logs_in', startYearDetail), + logs_out: smz.fn.extractColumn(harbourData, 'logs_out', startYearDetail), + other_in: smz.fn.extractColumn(harbourData, 'other_in', startYearDetail), + other_out: smz.fn.extractColumn(harbourData, 'other_out', startYearDetail), + stones_in: smz.fn.extractColumn(harbourData, 'stones_in', startYearDetail), + stones_out: smz.fn.extractColumn(harbourData, 'stones_out', startYearDetail), + sea_grit_in: smz.fn.extractColumn(harbourData, 'sea_grit_in', startYearDetail), + sea_grit_out: smz.fn.extractColumn(harbourData, 'sea_grit_out', startYearDetail), + year: smz.fn.extractColumn(harbourData, 'year', startYearDetail), }; var harbourChartConfig = { @@ -28,6 +55,13 @@ visible: false, yAxis: 1 }], + subtitle: { + floating: true, + text: 'Stadtwerke-Kai & Hafen-Ost', + style: { fontSize: '0.6em' }, + y: 28 + }, + title: { floating: true, text: 'Gesamtumschlag' }, xAxis: { missing: [2002, 2003, 2006, 2017, 2018, 2019, 2020, 2021, 2022, 2023] }, @@ -39,7 +73,223 @@ }] }; + var harbourSwflChartConfig = { + chart: { + height: 370, + type: 'column' + }, + plotOptions: { + column: { + stacking: 'normal', + tooltip: { valueDecimals: 0, valueSuffix: ' t' }, + } + }, + series: [{ + color: smz.gradient[1], + data: data.coal, + name: 'Steinkohle', + },{ + color: smz.gradient[3], + data: data.chips, + name: 'Holzhackschnitzel', + },{ + color: smz.gradient[8], + data: data.oil_heavy, + name: 'Schweröl', + },{ + color: smz.gradient[7], + data: data.trafo, + name: 'Transformatoren', + },{ + color: smz.fn.getGradient('#999'), + data: data.grit2, + name: 'Splitt', + }], + subtitle: { + floating: true, + text: 'nur eingehender Umschlag', + style: { fontSize: '0.6em' }, + y: 28 + }, + title: { floating: true, text: 'Stadtwerke-Kai' }, + xAxis: { + categories: data.year + }, + yAxis: [{ + endOnTick: false, + max: 345000, + min: -25000, + startOnTick: false, + title: { text: 'Umschlag in Tonnen' } + }] + }; + + var harbourEastChartConfig = { + chart: { + type: 'column' + }, + plotOptions: { + column: { + stacking: 'normal' + } + }, + tooltip: { + formatter: function() { + var xIdx = this.x - startYearDetail; + var inboundSum = 0, outboundSum = 0; + var inOutTable = this.points.map(function(point) { + if (point.series.linkedParent) return; // skip outbound + + var color = point.color.stops !== undefined ? point.color.stops[0][1] : point.color; + var outValue = Math.abs(point.series.linkedSeries[0].yData[xIdx]); + + if (!outValue && !point.y) return; // skip empty lines + + inboundSum += point.y; + outboundSum += outValue; + + return '' + + ' ' + point.series.name + '' + + '' + (point.y ? hc.numberFormat(point.y, 0) + ' t' : '–') + '' + + '' + (outValue ? hc.numberFormat(outValue, 0) + ' t' : '–') + '' + + ''; + }); + + return ''.concat( + '', + '', + '', + '', + '', + '', + '', inOutTable.join(''), + '', + '', + '', + '
', this.x, 'Gesamt ', hc.numberFormat(inboundSum + outboundSum, 0), ' t
EingangAusgang
Summe', + hc.numberFormat(inboundSum, 0), ' t', hc.numberFormat(outboundSum, 0), ' t
' + ) + }, + }, + series: [{ + color: smz.gradient[0], + data: data.other_in, + id: 'other', + name: 'Sonstiges', + },{ + color: smz.fn.getGradient('#ccc'), + data: data.sea_grit_in, + id: 'sea_grit', + name: 'Seekies', + },{ + color: smz.fn.getGradient('#999'), + data: data.grit_in, + id: 'grit', + name: 'Splitt', + },{ + color: smz.fn.getGradient('#555'), + data: data.stones_in, + id: 'stones', + name: 'Steine', + },{ + color: smz.gradient[1], + data: data.scrap_in, + id: 'scrap', + name: 'Schrott', + },{ + color: smz.gradient[8], + data: data.logs_in, + id: 'logs', + name: 'Baumstämme', + },{ + color: smz.gradient[6], + data: data.cellulose_in, + id: 'cellulose', + name: 'Zellulose', + },{ + color: smz.gradient[3], + data: data.crop_in, + id: 'crop', + name: 'Getreide', + },{ + color: smz.gradient[11], + data: data.fertiliser_in, + id: 'fertiliser', + name: 'Düngemittel', + },{ + color: smz.gradient[10], + data: data.animal_feed_in, + id: 'animal_feed', + name: 'Futtermittel', + },{ + color: hc.defaultOptions.colors[7], + data: smz.fn.mirror(data.other_out), + linkedTo: 'other' + },{ + color: '#ccc', + data: smz.fn.mirror(data.sea_grit_out), + linkedTo: 'sea_grit' + },{ + color: '#999', + data: smz.fn.mirror(data.grit_out), + linkedTo: 'grit' + },{ + color: '#555', + data: smz.fn.mirror(data.stones_out), + linkedTo: 'stones' + },{ + color: hc.defaultOptions.colors[1], + data: smz.fn.mirror(data.scrap_out), + linkedTo: 'scrap' + },{ + color: hc.defaultOptions.colors[8], + data: smz.fn.mirror(data.logs_out), + linkedTo: 'logs' + },{ + color: hc.defaultOptions.colors[6], + data: smz.fn.mirror(data.cellulose_out), + linkedTo: 'cellulose' + },{ + color: hc.defaultOptions.colors[3], + data: smz.fn.mirror(data.crop_out), + linkedTo: 'crop' + },{ + color: smz.color.swfl.darkGreen, + data: smz.fn.mirror(data.fertiliser_out), + linkedTo: 'fertiliser' + },{ + color: smz.color.swfl.lightGreen, + data: smz.fn.mirror(data.animal_feed_out), + label: { format: '' }, + linkedTo: 'animal_feed' + }], + subtitle: { + floating: true, + text: 'Eingänge & Ausgänge', + style: { fontSize: '0.6em' }, + y: 28 + }, + title: { floating: true, text: 'Wirtschaftshafen „Hafen-Ost“' }, + xAxis: { + categories: data.year + }, + yAxis: [{ + endOnTick: false, + max: 345000, + min: -25000, + plotLines: [{ + value: 0, + color: '#000', + zIndex: 1 + }], + startOnTick: false, + title: { text: 'Umschlag in Tonnen' } + }] + }; + smz.chart = smz.chart || {}; smz.chart.Harbour = hc.chart('hafen', harbourChartConfig) + smz.chart.HarbourSwfl = hc.chart('hafen-stadtwerke-kai', harbourSwflChartConfig) + smz.chart.HarbourEast = hc.chart('hafen-ost', harbourEastChartConfig) })(window.Highcharts, window.smz, window.SWFL.Business.Harbour); diff --git a/pages/job/swfl.md b/pages/job/swfl.md index 72921b7..a49415e 100644 --- a/pages/job/swfl.md +++ b/pages/job/swfl.md @@ -111,11 +111,17 @@ sidebar: Zu den mit einem Sternchen (*) gekennzeichneten Jahren fehlen in den Geschäftsberichten leider die Angaben bzgl. der Zahl der eingelaufenen Schiffe bzw. des Güterumschlags.

- Die Umschlagsdaten wurden aus den Berichten der Flensburger Hafen GmbH aufgefüllt. + Die Umschlagsdaten wurden aus den Berichten der Flensburger Hafen GmbH aufgefüllt. Die darin enthaltenen Daten werden in den folgenden beiden Diagrammen + aufgeschlüsselt.

+
+
+
+
+ ### Abfallwirtschaftszentrum (AWZ)
From bd2009b4290b24bff6fd21e9008994b7c6d99a69 Mon Sep 17 00:00:00 2001 From: Philzen Date: Sun, 19 May 2024 19:03:47 +0200 Subject: [PATCH 6/6] Improve space usage for total port volume chart --- _assets/js/charting/harbour.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/_assets/js/charting/harbour.js b/_assets/js/charting/harbour.js index a27a1ef..eaffb3b 100644 --- a/_assets/js/charting/harbour.js +++ b/_assets/js/charting/harbour.js @@ -66,8 +66,14 @@ missing: [2002, 2003, 2006, 2017, 2018, 2019, 2020, 2021, 2022, 2023] }, yAxis: [{ + endOnTick: false, + max: 700000, + tickInterval: 200000, title: { text: 'Umschlag in Tonnen' } },{ + endOnTick: false, + max: 437, + tickInterval: 125, title: { text: 'Anzahl Schiffe' }, opposite: true }]