Outrun with the power of a potato. Based on the Potato Dark theme with CSS bits inspired by Dusk.
- Support for tags
- Responsive design
- Support for Related Content
- Analytics with Google Analytics
- Modern, Simple and beautiful design
- Medium's Image Zoom(zoom.js)
- Social links (most social networks available)
- Inlined CSS for customizable colors via config.
- Outrun inspired foreground colors on a dark background, by default.
- Can turn off pagination.
- The ability to enable sorting of tables for pages.
- Graphing via C3.
- Can set a page to refresh via Front Matter.
Use hugo's -t dusky-neon-potato or --theme=dusky-neon-potato option with hugo commands. Example:
$ hugo server -t hugo-dusky-neon-potato -w -D
Use short code for Image Zoom.
{{% zoom-img src="/images/default.jpg" %}}
To enable graphing, you first need to set 'graphing' to true in Front Matter as below. With out that, none of the shortcodes will work properly as the required CSS and JS will not be included in the header.
graphing: true
Currently the possible charts that can be made with out issue are as below.
- line
- spline
- bar
- scatter
- pie
- donut
- gauge
Below is a example of creating a chart.
{{% chart-place chart="example" %}}
{{% chart-generate url="https://foo.bar/c3_test.csv" type="line" chart="example" yLabel="Y1 label" xLabel="X label" %}}
Graphing is handled by C3 and you can find the documentation at https://c3js.org/reference.html .
This short code places the HTML that the JS will bind to.
Variable | Default | Description |
---|---|---|
chart | chart | The name of the chart. |
This generates the chart and binds it to the HTML.
Variable | Default | Required | Description |
---|---|---|---|
chart | chart | no | The name of the chart. |
url | null | yes | The URL for the CSV. |
type | line | no | The type of chart it is. |
x | null | no | The column name to use for X axis info. |
xLabel | null | no | The label for the X axis. |
yLabel | null | no | The label for the Y axis. |
xType | null | no | The type of data for the X axis. |
xFormat | null | no | The format for the X ticks, largely for use if xType is set to 'timeseries'. |
axis-rotated | null | no | If X and Y should be reversed. |
grid-x-show | null | no | If the X grid should be shown. Set to 'true' to enable. |
grid-y-show | null | no | If the X grid should be shown. Set to 'true' to enable. |
legend-hide | null | no | If defined, this hides the legend. |
zoom-enable | null | no | If defined, this enables zooming. |
zoom-rescale | null | no | If defined, this enables rescaling when zooming. |
subchart-enable | null | no | If defined, this enables shows a sub chart, which can be useful when zooming. |
subchart-size | null | no | Used for setting a custom subchart size. |
size-height | null | no | Set a specific height for the chart. |
size-width | null | no | Set a specific height for the chart. |
Please note that while C3 supports area and gauge, this currently lacks support for those.
As to how to start using this, it is highly started reading https://c3js.org/gettingstarted.html .
Variable | Default | Required | Description |
---|---|---|---|
chart | chart | no | The name of the chart to bind to. |
{{% chart-complex-start chart="foo" %}}
data: {
columns: [
['data1', 30, 200, 100, 400, 150, 250],
['data2', 50, 20, 10, 40, 15, 25]
]
}"
{{% chart-complex-stop %}}
is the equivalent of this...
var chart = c3.generate({
bindto: '#foo',
data: {
columns: [
['data1', 30, 200, 100, 400, 150, 250],
['data2', 50, 20, 10, 40, 15, 25]
]
}
});
So lets say you have a page you don't want pagination displayed, such as "About.org",
then you can set no_pagination
to true in the Front Matter and it won't
display.
---
title: "About"
date: 2018-09-02T22:41:40-05:00
draft: false
no_pagination: true
---
A rutting about page.
So lets say you want to make the tables on a page sortable, you can now do this. You can do this, by setting the Front Matter value "sort_tables" to true and in the header it will include a link to a JS script in the js dir that does this.
Below is a org mode example with sortable tables.
---
title: "Tables"
date: 2018-09-02T22:41:40-05:00
draft: false
sort_tables: true
---
| a | b | c | d | e |
|---+---+------------+--------------+---|
| 1 | f | 2017-03-14 | 127.0.0.1 | |
| 2 | b | 2018-02-14 | 192.168.15.2 | |
| 3 | e | 2017-03-15 | 192.168.1.1 | |
| 4 | d | 2012-03-14 | 10.10.10.10 | 3 |
All colors/decorations stuff go under the 'colors' config section. The defaults are shown below.
[colors]
#general text and background
text="#66FF00"
background="#101010"
# titles
main="#FF1493"
# headers
h1="#FF00FF"
h1-decoration="none"
h2="#DA70D6"
h2-decoration="none"
h3="#EE82EE"
h3-decoration="none"
h4="#8B008B"
h4-decoration="none"
h5="#9932CC"
h5-decoration="none"
h6="#800080"
h6-decoration="none"
# tables
table-border="#008B8B"
th-bg="#3B0072"
th-fg="#FF040C"
# content tags
ctag="#FF00FF"
ctag-hover-fg="#66FF00"
ctag-hover-bg="#101010"
# color of the tags title on that tags page
p-tag-title="#FF1493"
# related items(at the bottom of posts)
related-bg="#101010"
related-fg="#66FF00"
# graph axis
graph-lines="#66FF00"
# text on the graphs
graph-text="#FF00FF"
Pages can be told to auto refresh via setting the Front Matter variable 'page_refresh'. This is number of seconds between page refreshes.
The use case for this would be if you are using graphing and have data that updates periodically want to update the page every 5 minutes or so to pull in the changes.
---
title: "Auto-Refreshing"
date: 2018-09-02T22:41:40-05:00
draft: false
page_refresh: 300
---
This page will refresh every 5 minutes.
- Implement more settings for gauge graph type.
- Add more axis options.
- Make the nearly invisible black triangles the show up on the graph in some modes disappear.