diff options
-rw-r--r-- | README.md | 53 | ||||
-rw-r--r-- | docs/configuration.md | 17 | ||||
-rw-r--r-- | docs/customservices.md | 19 | ||||
-rw-r--r-- | docs/development.md | 4 | ||||
-rw-r--r-- | docs/tips-and-tricks.md | 18 | ||||
-rw-r--r-- | src/components/services/Mealie.vue | 51 |
6 files changed, 84 insertions, 78 deletions
@@ -1,45 +1,46 @@ | |||
1 | <h1 align="center"> | 1 | <h1 align="center"> |
2 | <img | 2 | <img |
3 | width="180" | 3 | width="180" |
4 | alt="Homer's donut" | 4 | alt="Homer's donut" |
5 | src="https://raw.githubusercontent.com//bastienwirtz/homer/main/public/logo.png"> | 5 | src="https://raw.githubusercontent.com//bastienwirtz/homer/main/public/logo.png"> |
6 | <br/> | 6 | <br/> |
7 | Homer | 7 | Homer |
8 | </h1> | 8 | </h1> |
9 | 9 | ||
10 | <h4 align="center"> | 10 | <h4 align="center"> |
11 | A dead simple static <strong>HOM</strong>epage for your serv<strong>ER</strong> to keep your services on hand, from a simple <code>yaml</code> configuration file. | 11 | A dead simple static <strong>HOM</strong>epage for your serv<strong>ER</strong> to keep your services on hand, from a simple <code>yaml</code> configuration file. |
12 | </h4> | 12 | </h4> |
13 | 13 | ||
14 | <p align="center"> | 14 | <p align="center"> |
15 | <strong> | 15 | <strong> |
16 | <a href="https://homer-demo.netlify.app">Demo</a> | 16 | <a href="https://homer-demo.netlify.app">Demo</a> |
17 | • | 17 | • |
18 | <a href="https://gitter.im/homer-dashboard/community">Chat</a> | 18 | <a href="https://gitter.im/homer-dashboard/community">Chat</a> |
19 | • | 19 | • |
20 | <a href="#getting-started">Getting started</a> | 20 | <a href="#getting-started">Getting started</a> |
21 | </strong> | 21 | </strong> |
22 | </p> | 22 | </p> |
23 | <p align="center"> | 23 | <p align="center"> |
24 | <a href="https://opensource.org/licenses/Apache-2.0"><img | 24 | <a href="https://opensource.org/licenses/Apache-2.0"><img |
25 | alt="License: Apache 2" | 25 | alt="License: Apache 2" |
26 | src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> | 26 | src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> |
27 | <a href="https://gitter.im/homer-dashboard/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge"><img | 27 | <a href="https://gitter.im/homer-dashboard/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge"><img |
28 | alt="Gitter chat" | 28 | alt="Gitter chat" |
29 | src="https://badges.gitter.im/homer-dashboard/community.svg"></a> | 29 | src="https://badges.gitter.im/homer-dashboard/community.svg"></a> |
30 | <a href="https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip"><img | 30 | <a href="https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip"><img |
31 | alt="Download homer static build" | 31 | alt="Download homer static build" |
32 | src="https://img.shields.io/badge/Download-homer.zip-orange"></a> | 32 | src="https://img.shields.io/badge/Download-homer.zip-orange"></a> |
33 | <a href="https://github.com/awesome-selfhosted/awesome-selfhosted"><img | 33 | <a href="https://github.com/awesome-selfhosted/awesome-selfhosted"><img |
34 | alt="Awesome" | 34 | alt="Awesome" |
35 | src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"></a> | 35 | src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"></a> |
36 | </p> | 36 | </p> |
37 | 37 | ||
38 | <p align="center"> | 38 | <p align="center"> |
39 | <img src="https://raw.github.com/bastienwirtz/homer/main/docs/screenshot.png" width="100%"> | 39 | <img src="https://raw.github.com/bastienwirtz/homer/main/docs/screenshot.png" width="100%"> |
40 | </p> | 40 | </p> |
41 | 41 | ||
42 | ## Table of Contents | 42 | ## Table of Contents |
43 | |||
43 | - [Features](#features) | 44 | - [Features](#features) |
44 | - [Getting started](#getting-started) | 45 | - [Getting started](#getting-started) |
45 | - [Configuration](docs/configuration.md) | 46 | - [Configuration](docs/configuration.md) |
@@ -49,19 +50,19 @@ | |||
49 | 50 | ||
50 | 51 | ||
51 | ## Features | 52 | ## Features |
53 | |||
52 | - [yaml](http://yaml.org/) file configuration | 54 | - [yaml](http://yaml.org/) file configuration |
53 | - Installable (pwa) | 55 | - Installable (pwa) |
54 | - Search | 56 | - Search |
55 | - Grouping | 57 | - Grouping |
56 | - Theme customization | 58 | - Theme customization |
57 | - Offline heathcheck | 59 | - Offline heath check |
58 | - keyboard shortcuts: | 60 | - keyboard shortcuts: |
59 | - `/` Start searching. | 61 | - `/` Start searching. |
60 | - `Escape` Stop searching. | 62 | - `Escape` Stop searching. |
61 | - `Enter` Open the first matching result (respects the bookmark's `_target` property). | 63 | - `Enter` Open the first matching result (respects the bookmark's `_target` property). |
62 | - `Alt`/`Option` + `Enter` Open the first matching result in a new tab. | 64 | - `Alt`/`Option` + `Enter` Open the first matching result in a new tab. |
63 | 65 | ||
64 | |||
65 | ## Getting started | 66 | ## Getting started |
66 | 67 | ||
67 | Homer is a full static html/js dashboard, generated from the source in `/src` using webpack. It's meant to be served by an HTTP server, **it will not work if you open dist/index.html directly over file:// protocol**. | 68 | Homer is a full static html/js dashboard, generated from the source in `/src` using webpack. It's meant to be served by an HTTP server, **it will not work if you open dist/index.html directly over file:// protocol**. |
@@ -111,7 +112,7 @@ environment: | |||
111 | 112 | ||
112 | ### Using the release tarball (prebuilt, ready to use) | 113 | ### Using the release tarball (prebuilt, ready to use) |
113 | 114 | ||
114 | Download and extract the latest release (`homer.zip`) from the [release page](https://github.com/bastienwirtz/homer/releases), rename the `assets/config.yml.dist` file to `assets/config.yml`, and put it behind a webserver. | 115 | Download and extract the latest release (`homer.zip`) from the [release page](https://github.com/bastienwirtz/homer/releases), rename the `assets/config.yml.dist` file to `assets/config.yml`, and put it behind a web server. |
115 | 116 | ||
116 | ```sh | 117 | ```sh |
117 | wget https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip | 118 | wget https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip |
diff --git a/docs/configuration.md b/docs/configuration.md index 68711ec..d90981a 100644 --- a/docs/configuration.md +++ b/docs/configuration.md | |||
@@ -1,4 +1,4 @@ | |||
1 | ## Configuration | 1 | # Configuration |
2 | 2 | ||
3 | Title, icons, links, colors, and services can be configured in the `config.yml` file (located in `/assets` directory once built, or in the `public/assets` directory in development mode), using [yaml](http://yaml.org/) format. | 3 | Title, icons, links, colors, and services can be configured in the `config.yml` file (located in `/assets` directory once built, or in the `public/assets` directory in development mode), using [yaml](http://yaml.org/) format. |
4 | 4 | ||
@@ -136,7 +136,6 @@ services: | |||
136 | # background: red # optional color for card to set color directly without custom stylesheet | 136 | # background: red # optional color for card to set color directly without custom stylesheet |
137 | ``` | 137 | ``` |
138 | 138 | ||
139 | |||
140 | View [Custom Services](customservices.md) for details about all available custom services (like PiHole) and how to configure them. | 139 | View [Custom Services](customservices.md) for details about all available custom services (like PiHole) and how to configure them. |
141 | 140 | ||
142 | If you choose to fetch message information from an endpoint, the output format should be as follows (or you can [custom map fields as shown in tips-and-tricks](./tips-and-tricks.md#mapping-fields)): | 141 | If you choose to fetch message information from an endpoint, the output format should be as follows (or you can [custom map fields as shown in tips-and-tricks](./tips-and-tricks.md#mapping-fields)): |
@@ -152,7 +151,7 @@ If you choose to fetch message information from an endpoint, the output format s | |||
152 | `null` value or missing keys will be ignored and value from the `config.yml` will be used if available. | 151 | `null` value or missing keys will be ignored and value from the `config.yml` will be used if available. |
153 | Empty values (either in `config.yml` or the endpoint data) will hide the element (ex: set `"title": ""` to hide the title bar). | 152 | Empty values (either in `config.yml` or the endpoint data) will hide the element (ex: set `"title": ""` to hide the title bar). |
154 | 153 | ||
155 | ### Style Options | 154 | ## Style Options |
156 | 155 | ||
157 | Homer uses [bulma CSS](https://bulma.io/), which provides a [modifiers syntax](https://bulma.io/documentation/modifiers/syntax/). You'll notice in the config there is a `tagstyle` option. It can be set to any of the bulma modifiers. You'll probably want to use one of these 4 main colors: | 156 | Homer uses [bulma CSS](https://bulma.io/), which provides a [modifiers syntax](https://bulma.io/documentation/modifiers/syntax/). You'll notice in the config there is a `tagstyle` option. It can be set to any of the bulma modifiers. You'll probably want to use one of these 4 main colors: |
158 | 157 | ||
@@ -163,7 +162,7 @@ Homer uses [bulma CSS](https://bulma.io/), which provides a [modifiers syntax](h | |||
163 | 162 | ||
164 | You can read the [bulma modifiers page](https://bulma.io/documentation/modifiers/syntax/) for other options regarding size, style, or state. | 163 | You can read the [bulma modifiers page](https://bulma.io/documentation/modifiers/syntax/) for other options regarding size, style, or state. |
165 | 164 | ||
166 | ### PWA Icons | 165 | ## PWA Icons |
167 | 166 | ||
168 | In order to easily generate all required icon preset for the PWA to work, a tool like [vue-pwa-asset-generator](https://www.npmjs.com/package/vue-pwa-asset-generator) can be used: | 167 | In order to easily generate all required icon preset for the PWA to work, a tool like [vue-pwa-asset-generator](https://www.npmjs.com/package/vue-pwa-asset-generator) can be used: |
169 | 168 | ||
@@ -171,7 +170,7 @@ In order to easily generate all required icon preset for the PWA to work, a tool | |||
171 | npx vue-pwa-asset-generator -a {your_512x512_source_png} -o {your_output_folder} | 170 | npx vue-pwa-asset-generator -a {your_512x512_source_png} -o {your_output_folder} |
172 | ``` | 171 | ``` |
173 | 172 | ||
174 | ### Supported services | 173 | ## Supported services |
175 | 174 | ||
176 | Currently the following services are supported for showing quick infos on the card. They can be used by setting the type to one of the following values at the item. | 175 | Currently the following services are supported for showing quick infos on the card. They can be used by setting the type to one of the following values at the item. |
177 | 176 | ||
@@ -180,10 +179,12 @@ Currently the following services are supported for showing quick infos on the ca | |||
180 | - PaperlessNG | 179 | - PaperlessNG |
181 | - Mealie | 180 | - Mealie |
182 | 181 | ||
183 | ### Additional configuration | 182 | ## Additional configuration |
183 | |||
184 | ### Paperless | ||
184 | 185 | ||
185 | #### Paperless | ||
186 | For Paperless you need an API-Key which you have to store at the item in the field `apikey`. | 186 | For Paperless you need an API-Key which you have to store at the item in the field `apikey`. |
187 | 187 | ||
188 | #### Mealie | 188 | ### Mealie |
189 | |||
189 | First off make sure to remove an existing `subtitle` as it will take precedence if set. Setting `type: "Mealie"` will then show the number of recipes Mealie is keeping organized or the planned meal for today if one is planned. You will have to set an API key in the field `apikey` which can be created in your Mealie installation. | 190 | First off make sure to remove an existing `subtitle` as it will take precedence if set. Setting `type: "Mealie"` will then show the number of recipes Mealie is keeping organized or the planned meal for today if one is planned. You will have to set an API key in the field `apikey` which can be created in your Mealie installation. |
diff --git a/docs/customservices.md b/docs/customservices.md index 150e232..83d5f3e 100644 --- a/docs/customservices.md +++ b/docs/customservices.md | |||
@@ -1,7 +1,7 @@ | |||
1 | # Custom Services | 1 | # Custom Services |
2 | 2 | ||
3 | Some service can use a specific a component that provides some extra features by adding a `type` key to the service yaml | 3 | Some service can use a specific a component that provides some extra features by adding a `type` key to the service yaml |
4 | configuration. Available services are in `src/components/`. Here is an overview of all custom services that are available | 4 | configuration. Available services are in `src/components/`. Here is an overview of all custom services that are available |
5 | within Homer. | 5 | within Homer. |
6 | 6 | ||
7 | ## PiHole | 7 | ## PiHole |
@@ -10,7 +10,7 @@ Using the PiHole service you can display info about your local PiHole instance r | |||
10 | 10 | ||
11 | The following configuration is available for the PiHole service. | 11 | The following configuration is available for the PiHole service. |
12 | 12 | ||
13 | ``` | 13 | ```yaml |
14 | items: | 14 | items: |
15 | - name: "Pi-hole" | 15 | - name: "Pi-hole" |
16 | logo: "assets/tools/sample.png" | 16 | logo: "assets/tools/sample.png" |
@@ -19,13 +19,12 @@ The following configuration is available for the PiHole service. | |||
19 | type: "PiHole" | 19 | type: "PiHole" |
20 | ``` | 20 | ``` |
21 | 21 | ||
22 | |||
23 | ## OpenWeatherMap | 22 | ## OpenWeatherMap |
24 | 23 | ||
25 | Using the OpenWeatherMap service you can display weather information about a given location. | 24 | Using the OpenWeatherMap service you can display weather information about a given location. |
26 | The following configuration is available for the OpenWeatherMap service: | 25 | The following configuration is available for the OpenWeatherMap service: |
27 | 26 | ||
28 | ``` | 27 | ```yaml |
29 | items: | 28 | items: |
30 | - name: "Weather" | 29 | - name: "Weather" |
31 | location: "Amsterdam" # your location. | 30 | location: "Amsterdam" # your location. |
@@ -39,36 +38,36 @@ items: | |||
39 | **Remarks:** | 38 | **Remarks:** |
40 | If for some reason your city can't be found by entering the name in the `location` property, you could also try to configure the OWM city ID in the `locationId` property. To retrieve your specific City ID, go to the [OWM website](https://openweathermap.org), search for your city and retrieve the ID from the URL (for example, the City ID of Amsterdam is 2759794). | 39 | If for some reason your city can't be found by entering the name in the `location` property, you could also try to configure the OWM city ID in the `locationId` property. To retrieve your specific City ID, go to the [OWM website](https://openweathermap.org), search for your city and retrieve the ID from the URL (for example, the City ID of Amsterdam is 2759794). |
41 | 40 | ||
42 | |||
43 | ## Medusa | 41 | ## Medusa |
44 | 42 | ||
45 | This service displays News (grey), Warning (orange) or Error (red) notifications bubbles from the Medusa application. | 43 | This service displays News (grey), Warning (orange) or Error (red) notifications bubbles from the Medusa application. |
46 | Two lines are needed in the config.yml : | 44 | Two lines are needed in the config.yml : |
47 | ``` | 45 | |
46 | ```yaml | ||
48 | type: "Medusa" | 47 | type: "Medusa" |
49 | apikey: "01234deb70424befb1f4ef6a23456789" | 48 | apikey: "01234deb70424befb1f4ef6a23456789" |
50 | ``` | 49 | ``` |
50 | |||
51 | The url must be the root url of Medusa application. | 51 | The url must be the root url of Medusa application. |
52 | The Medusa API key can be found in General configuration > Interface. It is needed to access Medusa API. | 52 | The Medusa API key can be found in General configuration > Interface. It is needed to access Medusa API. |
53 | 53 | ||
54 | |||
55 | ## Sonarr/Radarr | 54 | ## Sonarr/Radarr |
56 | 55 | ||
57 | This service displays Activity (blue), Warning (orange) or Error (red) notifications bubbles from the Radarr/Sonarr application. | 56 | This service displays Activity (blue), Warning (orange) or Error (red) notifications bubbles from the Radarr/Sonarr application. |
58 | Two lines are needed in the config.yml : | 57 | Two lines are needed in the config.yml : |
59 | ``` | 58 | |
59 | ```yaml | ||
60 | type: "Radarr" or "Sonarr" | 60 | type: "Radarr" or "Sonarr" |
61 | apikey: "01234deb70424befb1f4ef6a23456789" | 61 | apikey: "01234deb70424befb1f4ef6a23456789" |
62 | ``` | 62 | ``` |
63 | |||
63 | The url must be the root url of Radarr/Sonarr application. | 64 | The url must be the root url of Radarr/Sonarr application. |
64 | The Radarr/Sonarr API key can be found in Settings > General. It is needed to access the API. | 65 | The Radarr/Sonarr API key can be found in Settings > General. It is needed to access the API. |
65 | 66 | ||
66 | |||
67 | ## PaperlessNG | 67 | ## PaperlessNG |
68 | 68 | ||
69 | For Paperless you need an API-Key which you have to store at the item in the field `apikey`. | 69 | For Paperless you need an API-Key which you have to store at the item in the field `apikey`. |
70 | 70 | ||
71 | |||
72 | ## Ping | 71 | ## Ping |
73 | 72 | ||
74 | For Ping you need an API-Key which you have to store at the item in the field `apikey`. | 73 | For Ping you need an API-Key which you have to store at the item in the field `apikey`. |
diff --git a/docs/development.md b/docs/development.md index f2e9020..5e432f1 100644 --- a/docs/development.md +++ b/docs/development.md | |||
@@ -1,4 +1,4 @@ | |||
1 | ## Development | 1 | # Development |
2 | 2 | ||
3 | ```sh | 3 | ```sh |
4 | # Using yarn (recommended) | 4 | # Using yarn (recommended) |
@@ -10,7 +10,7 @@ npm install | |||
10 | npm run serve | 10 | npm run serve |
11 | ``` | 11 | ``` |
12 | 12 | ||
13 | ### Themes | 13 | ## Themes |
14 | 14 | ||
15 | Themes are meant to be simple customization (written in [scss](https://sass-lang.com/documentation/syntax)). | 15 | Themes are meant to be simple customization (written in [scss](https://sass-lang.com/documentation/syntax)). |
16 | To add a new theme, just add a file in the theme directory, and put all style in the `body #app.theme-<name>` scope. Then import it in the main style file. | 16 | To add a new theme, just add a file in the theme directory, and put all style in the `body #app.theme-<name>` scope. Then import it in the main style file. |
diff --git a/docs/tips-and-tricks.md b/docs/tips-and-tricks.md index 94167fb..17bba9a 100644 --- a/docs/tips-and-tricks.md +++ b/docs/tips-and-tricks.md | |||
@@ -3,6 +3,7 @@ | |||
3 | Here is a collection of neat tips and tricks that Homer users have come up with! | 3 | Here is a collection of neat tips and tricks that Homer users have come up with! |
4 | 4 | ||
5 | ## Use Homer as a custom "new tab" page | 5 | ## Use Homer as a custom "new tab" page |
6 | |||
6 | #### `by @vosdev` | 7 | #### `by @vosdev` |
7 | 8 | ||
8 | These extensions for [Firefox](https://addons.mozilla.org/firefox/addon/custom-new-tab-page) and [Chrome & Friends](https://chrome.google.com/webstore/detail/new-tab-changer/occbjkhimchkolibngmcefpjlbknggfh) allow you to have your homer dashboard in your new tab page, while leaving focus on the address bar meaning you can still type right away if you want to search or go to a page that is not on your homer dash. | 9 | These extensions for [Firefox](https://addons.mozilla.org/firefox/addon/custom-new-tab-page) and [Chrome & Friends](https://chrome.google.com/webstore/detail/new-tab-changer/occbjkhimchkolibngmcefpjlbknggfh) allow you to have your homer dashboard in your new tab page, while leaving focus on the address bar meaning you can still type right away if you want to search or go to a page that is not on your homer dash. |
@@ -22,11 +23,12 @@ The Firefox extension loads Homer in an iframe on your new tab page, meaning you | |||
22 | ``` | 23 | ``` |
23 | 24 | ||
24 | ## YAML Anchors | 25 | ## YAML Anchors |
26 | |||
25 | #### `by @JamiePhonic` | 27 | #### `by @JamiePhonic` |
26 | 28 | ||
27 | Since Homer is configured using YAML, it supports all of YAML's helpful features, such as anchoring! | 29 | Since Homer is configured using YAML, it supports all of YAML's helpful features, such as anchoring! |
28 | 30 | ||
29 | For example, you can define tags and tag styles for each "item" in a service. | 31 | For example, you can define tags and tag styles for each "item" in a service. |
30 | Using Anchoring, you can define all your tags and their styles once like this: (for example) | 32 | Using Anchoring, you can define all your tags and their styles once like this: (for example) |
31 | 33 | ||
32 | ```yaml | 34 | ```yaml |
@@ -70,6 +72,7 @@ The end result is that if you want to update the name or style of any particular | |||
70 | Great if you have a lot of services or a lot of tags! | 72 | Great if you have a lot of services or a lot of tags! |
71 | 73 | ||
72 | ## Remotely edit your config with Code Server | 74 | ## Remotely edit your config with Code Server |
75 | |||
73 | #### `by @JamiePhonic` | 76 | #### `by @JamiePhonic` |
74 | 77 | ||
75 | Homer doesn't yet provide a way to edit your configuration from inside Homer itself, but that doesn't mean it can't be done! | 78 | Homer doesn't yet provide a way to edit your configuration from inside Homer itself, but that doesn't mean it can't be done! |
@@ -78,14 +81,17 @@ You can setup and use [Code-Server](https://github.com/cdr/code-server) to edit | |||
78 | 81 | ||
79 | If you're running Homer in docker, you can setup a Code-Server container and pass your homer config directory into it. | 82 | If you're running Homer in docker, you can setup a Code-Server container and pass your homer config directory into it. |
80 | Simply pass your homer config directory as an extra -v parameter to your code-server container: | 83 | Simply pass your homer config directory as an extra -v parameter to your code-server container: |
81 | ``` | 84 | |
85 | ```sh | ||
82 | -v '/your/local/homer/config-dir/':'/config/homer':'rw' | 86 | -v '/your/local/homer/config-dir/':'/config/homer':'rw' |
83 | ``` | 87 | ``` |
88 | |||
84 | This will map your homer config directory (For example, /docker/appdata/homer/) into code-server's `/config/` directory, in a sub folder called `homer` | 89 | This will map your homer config directory (For example, /docker/appdata/homer/) into code-server's `/config/` directory, in a sub folder called `homer` |
85 | 90 | ||
86 | As a bonus, Code-Server puts the "current folder" as a parameter in the URL bar, so you could add a `links:` entry in Homer that points to your code-server instance with the directory pre-filled for essentially 1 click editing! | 91 | As a bonus, Code-Server puts the "current folder" as a parameter in the URL bar, so you could add a `links:` entry in Homer that points to your code-server instance with the directory pre-filled for essentially 1 click editing! |
87 | 92 | ||
88 | For example: | 93 | For example: |
94 | |||
89 | ```yml | 95 | ```yml |
90 | links: | 96 | links: |
91 | - name: Edit config | 97 | - name: Edit config |
@@ -93,9 +99,11 @@ links: | |||
93 | url: https://vscode.example.net/?folder=/config/homer | 99 | url: https://vscode.example.net/?folder=/config/homer |
94 | target: "_blank" # optional html tag target attribute | 100 | target: "_blank" # optional html tag target attribute |
95 | ``` | 101 | ``` |
102 | |||
96 | where the path after `?folder=` is the path to the folder where you mounted your homer config INSIDE the Code-Server container. | 103 | where the path after `?folder=` is the path to the folder where you mounted your homer config INSIDE the Code-Server container. |
97 | 104 | ||
98 | ### Example Code-Server docker create command | 105 | ### Example Code-Server docker create command |
106 | |||
99 | ```sh | 107 | ```sh |
100 | docker create \ | 108 | docker create \ |
101 | --name=code-server \ | 109 | --name=code-server \ |
@@ -111,13 +119,13 @@ docker create \ | |||
111 | linuxserver/code-server | 119 | linuxserver/code-server |
112 | ``` | 120 | ``` |
113 | 121 | ||
114 | |||
115 | ## Get the news headlines in Homer | 122 | ## Get the news headlines in Homer |
116 | 123 | ||
117 | ### Mapping Fields | 124 | ### Mapping Fields |
125 | |||
118 | Most times, the url you're getting headlines from follows a different schema than the one expected by Homer. | 126 | Most times, the url you're getting headlines from follows a different schema than the one expected by Homer. |
119 | 127 | ||
120 | For example, if you would like to show jokes from ChuckNorris.io, you'll find that the url https://api.chucknorris.io/jokes/random is giving you info like this: | 128 | For example, if you would like to show jokes from ChuckNorris.io, you'll find that the url <https://api.chucknorris.io/jokes/random> is giving you info like this: |
121 | 129 | ||
122 | ```json | 130 | ```json |
123 | { | 131 | { |
@@ -179,6 +187,6 @@ If the URL you specified returns a JSON object that defines a `title` and `conte | |||
179 | 187 | ||
180 | So, using [Node-Red](https://nodered.org/docs/getting-started/) and a quick flow, you can process an RSS feed to replace the message with a news item! | 188 | So, using [Node-Red](https://nodered.org/docs/getting-started/) and a quick flow, you can process an RSS feed to replace the message with a news item! |
181 | 189 | ||
182 | To get started, simply import [this flow](https://flows.nodered.org/flow/4b6406c9a684c26ace0430dd1826e95d) into your Node-Red instance and change the RSS feed in the "Get News RSS Feed" node to one of your choosing! | 190 | To get started, simply import [this flow](https://flows.nodered.org/flow/4b6406c9a684c26ace0430dd1826e95d) into your Node-Red instance and change the RSS feed in the "Get News RSS Feed" node to one of your choosing! |
183 | 191 | ||
184 | So far, the flow has been tested with BBC News and Sky News, however it should be easy to modify the flow to work with other RSS feeds if they don't work out of the box! | 192 | So far, the flow has been tested with BBC News and Sky News, however it should be easy to modify the flow to work with other RSS feeds if they don't work out of the box! |
diff --git a/src/components/services/Mealie.vue b/src/components/services/Mealie.vue index acff1fb..790a9b1 100644 --- a/src/components/services/Mealie.vue +++ b/src/components/services/Mealie.vue | |||
@@ -20,9 +20,7 @@ | |||
20 | <template v-if="item.subtitle"> | 20 | <template v-if="item.subtitle"> |
21 | {{ item.subtitle }} | 21 | {{ item.subtitle }} |
22 | </template> | 22 | </template> |
23 | <template v-else-if="meal"> | 23 | <template v-else-if="meal"> Today: {{ meal.name }} </template> |
24 | Today: {{ meal.name }} | ||
25 | </template> | ||
26 | <template v-else-if="stats"> | 24 | <template v-else-if="stats"> |
27 | happily keeping {{ stats.totalRecipes }} recipes organized | 25 | happily keeping {{ stats.totalRecipes }} recipes organized |
28 | </template> | 26 | </template> |
@@ -54,37 +52,36 @@ export default { | |||
54 | methods: { | 52 | methods: { |
55 | fetchStatus: async function () { | 53 | fetchStatus: async function () { |
56 | if (this.item.subtitle != null) return; // omitting unnecessary ajax call as the subtitle is showing | 54 | if (this.item.subtitle != null) return; // omitting unnecessary ajax call as the subtitle is showing |
57 | var apikey = this.item.apikey; | ||
58 | this.meal = await fetch(`${this.item.url}/api/meal-plans/today/`, { | 55 | this.meal = await fetch(`${this.item.url}/api/meal-plans/today/`, { |
59 | headers: { | 56 | headers: { |
60 | "Authorization": "Bearer " + this.item.apikey, | 57 | Authorization: "Bearer " + this.item.apikey, |
61 | "Accept": "application/json" | 58 | Accept: "application/json", |
62 | } | 59 | }, |
63 | }) | 60 | }) |
64 | .then(function(response) { | 61 | .then(function (response) { |
65 | if (!response.ok) { | 62 | if (!response.ok) { |
66 | throw new Error("Not 2xx response") | 63 | throw new Error("Not 2xx response"); |
67 | } else { | 64 | } else { |
68 | if (response != null) { | 65 | if (response != null) { |
69 | return response.json(); | 66 | return response.json(); |
67 | } | ||
70 | } | 68 | } |
71 | } | 69 | }) |
72 | }) | 70 | .catch((e) => console.log(e)); |
73 | .catch((e) => console.log(e)); | ||
74 | this.stats = await fetch(`${this.item.url}/api/debug/statistics/`, { | 71 | this.stats = await fetch(`${this.item.url}/api/debug/statistics/`, { |
75 | headers: { | 72 | headers: { |
76 | "Authorization": "Bearer " + this.item.apikey, | 73 | Authorization: "Bearer " + this.item.apikey, |
77 | "Accept": "application/json" | 74 | Accept: "application/json", |
78 | } | 75 | }, |
79 | }) | 76 | }) |
80 | .then(function(response) { | 77 | .then(function (response) { |
81 | if (!response.ok) { | 78 | if (!response.ok) { |
82 | throw new Error("Not 2xx response") | 79 | throw new Error("Not 2xx response"); |
83 | } else { | 80 | } else { |
84 | return response.json(); | 81 | return response.json(); |
85 | } | 82 | } |
86 | }) | 83 | }) |
87 | .catch((e) => console.log(e)); | 84 | .catch((e) => console.log(e)); |
88 | }, | 85 | }, |
89 | }, | 86 | }, |
90 | }; | 87 | }; |