From d9759c06b3f92fc20c40dcae2d55e42285cadd9f Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 12 Dec 2021 19:06:32 +0000 Subject: [PATCH] :sparkles: Creates a joke-fetching widget --- docs/widgets.md | 26 ++++++++ src/components/Widgets/Jokes.vue | 92 +++++++++++++++++++++++++++ src/components/Widgets/WidgetBase.vue | 3 + src/utils/defaults.js | 1 + 4 files changed, 122 insertions(+) create mode 100644 src/components/Widgets/Jokes.vue diff --git a/docs/widgets.md b/docs/widgets.md index 109bdf2a..7cf34112 100644 --- a/docs/widgets.md +++ b/docs/widgets.md @@ -261,6 +261,32 @@ Shows recent price history for a given publicly-traded stock or share apiKey: PGUWSWD6CZTXMT8N ``` +### Joke + +Renders a programming or generic joke. Data is fetched from the [JokesAPI](https://github.com/Sv443/JokeAPI) by @Sv443 + +

+ +##### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`category`** | `string` | _Optional_ | Set the category of jokes to return. Use a string to specify a single category, or an array to pass in multiple options. Available options are: `all`, `programming`, `pun`, `dark`, `spooky`, `christmas` and `misc`. An up-to-date list of supported categories can be found [here](https://v2.jokeapi.dev/categories). Defaults to `all` +**`safeMode`** | `boolean` | _Optional_ | Set to `true`, to prevent the fetching of any NSFW jokes. Defaults to `false` +**`language`** | `string` | _Optional_ | Specify the language for returned jokes. The following languages are supported: `en`, `cs`, `de`, `es`, `fr` and `pt`, and an up-to-date list of supported languages can be found [here](https://v2.jokeapi.dev/languages). By default, your system language will be used, if it's supported, otherwise English + +##### Example + +```yaml +- name: Joke + icon: fas fa-laugh + type: joke + options: + safeMode: true + language: en + category: Programming +``` + --- ## Dynamic Widgets diff --git a/src/components/Widgets/Jokes.vue b/src/components/Widgets/Jokes.vue new file mode 100644 index 00000000..ebbaf83e --- /dev/null +++ b/src/components/Widgets/Jokes.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/components/Widgets/WidgetBase.vue b/src/components/Widgets/WidgetBase.vue index ba78aae4..678f0b6e 100644 --- a/src/components/Widgets/WidgetBase.vue +++ b/src/components/Widgets/WidgetBase.vue @@ -19,6 +19,7 @@ + @@ -33,6 +34,7 @@ import CryptoWatchList from '@/components/Widgets/CryptoWatchList.vue'; import XkcdComic from '@/components/Widgets/XkcdComic.vue'; import ExchangeRates from '@/components/Widgets/ExchangeRates.vue'; import StockPriceChart from '@/components/Widgets/StockPriceChart.vue'; +import Jokes from '@/components/Widgets/Jokes.vue'; import Collapsable from '@/components/LinkItems/Collapsable.vue'; export default { @@ -48,6 +50,7 @@ export default { XkcdComic, ExchangeRates, StockPriceChart, + Jokes, }, props: { widget: Object, diff --git a/src/utils/defaults.js b/src/utils/defaults.js index 8f978675..1e3d7a24 100644 --- a/src/utils/defaults.js +++ b/src/utils/defaults.js @@ -213,6 +213,7 @@ module.exports = { xkcdComic: 'https://xkcd.vercel.app/', exchangeRates: 'https://v6.exchangerate-api.com/v6/', stockPriceChart: 'https://www.alphavantage.co/query', + jokes: 'https://v2.jokeapi.dev/joke/', }, /* URLs for web search engines */ searchEngineUrls: {