defprotocol Contex.Legend do
@moduledoc """
Protocal for generating a legend.
Implemented by specific scale modules
"""
def to_svg(scale, invert \\ false)
end
defimpl Contex.Legend, for: Contex.CategoryColourScale do
alias Contex.CategoryColourScale
def to_svg(scale, invert \\ false) do
values = case invert do
true -> Enum.reverse(scale.values)
_ -> scale.values
end
legend_items
= Enum.with_index(values)
|> Enum.map(fn {val, index} ->
fill = CategoryColourScale.colour_for_value(scale, val)
y = index * 21
[~s||,
~s|#{val}|]
end)
[~s||, legend_items, ""]
end
end