Use gruff gem to generate bar graphs
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -12,4 +12,5 @@ gem 'ruby-gr'
|
||||
gem 'gr-plot'
|
||||
gem 'histogram'
|
||||
gem 'numo-narray'
|
||||
gem 'i18n'
|
||||
gem 'gruff'
|
||||
|
||||
@@ -61,6 +61,7 @@ DEPENDENCIES
|
||||
gr-plot
|
||||
gruff
|
||||
histogram
|
||||
i18n
|
||||
mail
|
||||
mysql2
|
||||
nokogiri
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
require 'open-uri'
|
||||
require 'gr/plot'
|
||||
require 'i18n'
|
||||
require 'gruff'
|
||||
|
||||
EASY_ENERGY_TARIFFS = {}
|
||||
|
||||
# See https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/zakelijk/overige_belastingen/belastingen_op_milieugrondslag/tarieven_milieubelastingen/tabellen_tarieven_milieubelastingen
|
||||
@@ -20,6 +22,11 @@ class Cost
|
||||
@entsoe = Entsoe.new(zone, storage_cost)
|
||||
@max_charge_kwh = max_charge
|
||||
@battery = Battery.new(battery_capacity)
|
||||
|
||||
# Allow for Dutch titles in graphs
|
||||
I18n.load_path += Dir[File.expand_path("config/locales") + "/*.yml"]
|
||||
I18n.available_locales = [:en, :nl]
|
||||
I18n.locale = :nl
|
||||
end
|
||||
|
||||
# Government reduced VAT to 9% from 1 July 2022 until 31 Dec 2022
|
||||
@@ -98,12 +105,16 @@ class Cost
|
||||
def easy_energy_tariff_barplot(date)
|
||||
hours = (0..23).to_a
|
||||
costs = easy_energy_hours(date)
|
||||
GR.barplot(hours,costs)
|
||||
# make sure you have set GKS_WSTYPE=100 in the environment (for headless setup)
|
||||
title = "Tarief per kwH (incl. belastingen en BTW) - %s" % date.strftime("%A, %e %B %Y")
|
||||
xlabel = "uur"
|
||||
ylabel = "EUR"
|
||||
GR.savefig("plots/easy_tariff_%s.png" % date.strftime("%F"), title: title, xlabel: xlabel, ylabel: ylabel)
|
||||
g = Gruff::StackedBar.new()
|
||||
g.title = "Tarief per kwH (incl. belastingen en BTW) - %s" % I18n.localize(date, format: "%A, %e %B %Y")
|
||||
g.x_axis_label = "uur"
|
||||
#g.y_axis_label = "EUR"
|
||||
g.y_axis_label_format = lambda do |value|
|
||||
"€ %.2f" % value
|
||||
end
|
||||
g.labels = hours
|
||||
g.data :costs, costs
|
||||
g.write("plots/easy_tariff_%s.png" % date.strftime("%F"))
|
||||
end
|
||||
|
||||
def easy_energy_cost_barplot(date)
|
||||
@@ -126,12 +137,16 @@ class Cost
|
||||
|
||||
# create plot
|
||||
hours = (0..23).to_a
|
||||
GR.barplot(hours,costs)
|
||||
# make sure you have set GKS_WSTYPE=100 in the environment (for headless setup)
|
||||
title = "Verbruikskosten (incl. belastingen en BTW) - %s" % date.strftime("%A, %e %B %Y")
|
||||
xlabel = "uur"
|
||||
ylabel = "EUR"
|
||||
GR.savefig("plots/easy_cost_%s.png" % date.strftime("%F"), title: title, xlabel: xlabel, ylabel: ylabel)
|
||||
g = Gruff::StackedBar.new()
|
||||
g.title = "Verbruikskosten (incl. belastingen en BTW) - %s" % I18n.localize(date, format: "%A, %e %B %Y")
|
||||
g.x_axis_label = "uur"
|
||||
#g.y_axis_label = "EUR"
|
||||
g.y_axis_label_format = lambda do |value|
|
||||
"€ %.2f" % value
|
||||
end
|
||||
g.labels = hours
|
||||
g.data :costs, costs
|
||||
g.write("plots/easy_tariff_%s.png" % date.strftime("%F"))
|
||||
|
||||
# return the sum cost
|
||||
costs.sum
|
||||
|
||||
213
config/locales/nl.yml
Normal file
213
config/locales/nl.yml
Normal file
@@ -0,0 +1,213 @@
|
||||
---
|
||||
nl:
|
||||
activerecord:
|
||||
errors:
|
||||
messages:
|
||||
record_invalid: 'Validatie mislukt: %{errors}'
|
||||
restrict_dependent_destroy:
|
||||
has_one: Kan item niet verwijderen omdat %{record} afhankelijk is
|
||||
has_many: Kan item niet verwijderen omdat afhankelijke %{record} bestaan
|
||||
date:
|
||||
abbr_day_names:
|
||||
- zo
|
||||
- ma
|
||||
- di
|
||||
- wo
|
||||
- do
|
||||
- vr
|
||||
- za
|
||||
abbr_month_names:
|
||||
-
|
||||
- jan
|
||||
- feb
|
||||
- mrt
|
||||
- apr
|
||||
- mei
|
||||
- jun
|
||||
- jul
|
||||
- aug
|
||||
- sep
|
||||
- okt
|
||||
- nov
|
||||
- dec
|
||||
day_names:
|
||||
- zondag
|
||||
- maandag
|
||||
- dinsdag
|
||||
- woensdag
|
||||
- donderdag
|
||||
- vrijdag
|
||||
- zaterdag
|
||||
formats:
|
||||
default: "%d-%m-%Y"
|
||||
long: "%e %B %Y"
|
||||
short: "%e %b"
|
||||
month_names:
|
||||
-
|
||||
- januari
|
||||
- februari
|
||||
- maart
|
||||
- april
|
||||
- mei
|
||||
- juni
|
||||
- juli
|
||||
- augustus
|
||||
- september
|
||||
- oktober
|
||||
- november
|
||||
- december
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
datetime:
|
||||
distance_in_words:
|
||||
about_x_hours:
|
||||
one: ongeveer een uur
|
||||
other: ongeveer %{count} uur
|
||||
about_x_months:
|
||||
one: ongeveer een maand
|
||||
other: ongeveer %{count} maanden
|
||||
about_x_years:
|
||||
one: ongeveer een jaar
|
||||
other: ongeveer %{count} jaar
|
||||
almost_x_years:
|
||||
one: bijna een jaar
|
||||
other: bijna %{count} jaar
|
||||
half_a_minute: een halve minuut
|
||||
less_than_x_seconds:
|
||||
one: minder dan een seconde
|
||||
other: minder dan %{count} seconden
|
||||
less_than_x_minutes:
|
||||
one: minder dan een minuut
|
||||
other: minder dan %{count} minuten
|
||||
over_x_years:
|
||||
one: meer dan een jaar
|
||||
other: meer dan %{count} jaar
|
||||
x_seconds:
|
||||
one: "%{count} seconde"
|
||||
other: "%{count} seconden"
|
||||
x_minutes:
|
||||
one: "%{count} minuut"
|
||||
other: "%{count} minuten"
|
||||
x_days:
|
||||
one: "%{count} dag"
|
||||
other: "%{count} dagen"
|
||||
x_months:
|
||||
one: "%{count} maand"
|
||||
other: "%{count} maanden"
|
||||
x_years:
|
||||
one: "%{count} jaar"
|
||||
other: "%{count} jaar"
|
||||
prompts:
|
||||
second: seconde
|
||||
minute: minuut
|
||||
hour: uur
|
||||
day: dag
|
||||
month: maand
|
||||
year: jaar
|
||||
errors:
|
||||
format: "%{attribute} %{message}"
|
||||
messages:
|
||||
accepted: moet worden geaccepteerd
|
||||
blank: moet opgegeven zijn
|
||||
confirmation: komt niet overeen met %{attribute}
|
||||
empty: moet opgegeven zijn
|
||||
equal_to: moet gelijk zijn aan %{count}
|
||||
even: moet even zijn
|
||||
exclusion: is gereserveerd
|
||||
greater_than: moet groter zijn dan %{count}
|
||||
greater_than_or_equal_to: moet groter dan of gelijk zijn aan %{count}
|
||||
inclusion: is niet in de lijst opgenomen
|
||||
invalid: is ongeldig
|
||||
less_than: moet minder zijn dan %{count}
|
||||
less_than_or_equal_to: moet minder dan of gelijk zijn aan %{count}
|
||||
model_invalid: 'Validatie mislukt: %{errors}'
|
||||
not_a_number: is geen getal
|
||||
not_an_integer: moet een geheel getal zijn
|
||||
odd: moet oneven zijn
|
||||
other_than: moet anders zijn dan %{count}
|
||||
present: moet leeg zijn
|
||||
required: moet bestaan
|
||||
taken: is al in gebruik
|
||||
too_long:
|
||||
one: is te lang (maximaal %{count} teken)
|
||||
other: is te lang (maximaal %{count} tekens)
|
||||
too_short:
|
||||
one: is te kort (minimaal %{count} teken)
|
||||
other: is te kort (minimaal %{count} tekens)
|
||||
wrong_length:
|
||||
one: heeft onjuiste lengte (moet %{count} teken lang zijn)
|
||||
other: heeft onjuiste lengte (moet %{count} tekens lang zijn)
|
||||
template:
|
||||
body: 'Er zijn problemen met de volgende velden:'
|
||||
header:
|
||||
one: "%{model} niet opgeslagen: %{count} fout gevonden"
|
||||
other: "%{model} niet opgeslagen: %{count} fouten gevonden"
|
||||
helpers:
|
||||
select:
|
||||
prompt: Maak een keuze
|
||||
submit:
|
||||
create: "%{model} toevoegen"
|
||||
submit: "%{model} opslaan"
|
||||
update: "%{model} bijwerken"
|
||||
number:
|
||||
currency:
|
||||
format:
|
||||
delimiter: "."
|
||||
format: "%u %n"
|
||||
precision: 2
|
||||
separator: ","
|
||||
significant: false
|
||||
strip_insignificant_zeros: false
|
||||
unit: "€"
|
||||
format:
|
||||
delimiter: "."
|
||||
precision: 2
|
||||
separator: ","
|
||||
significant: false
|
||||
strip_insignificant_zeros: false
|
||||
human:
|
||||
decimal_units:
|
||||
format: "%n %u"
|
||||
units:
|
||||
billion: miljard
|
||||
million: miljoen
|
||||
quadrillion: biljard
|
||||
thousand: duizend
|
||||
trillion: biljoen
|
||||
unit: ''
|
||||
format:
|
||||
delimiter: ''
|
||||
precision: 3
|
||||
significant: true
|
||||
strip_insignificant_zeros: true
|
||||
storage_units:
|
||||
format: "%n %u"
|
||||
units:
|
||||
byte:
|
||||
one: byte
|
||||
other: bytes
|
||||
gb: GB
|
||||
kb: KB
|
||||
mb: MB
|
||||
tb: TB
|
||||
percentage:
|
||||
format:
|
||||
delimiter: ''
|
||||
format: "%n%"
|
||||
precision:
|
||||
format:
|
||||
delimiter: ''
|
||||
support:
|
||||
array:
|
||||
last_word_connector: " en "
|
||||
two_words_connector: " en "
|
||||
words_connector: ", "
|
||||
time:
|
||||
am: "'s ochtends"
|
||||
formats:
|
||||
default: "%a %d %b %Y %H:%M:%S %Z"
|
||||
long: "%d %B %Y %H:%M"
|
||||
short: "%d %b %H:%M"
|
||||
pm: "'s middags"
|
||||
Reference in New Issue
Block a user