Merge pull request #16 from Lissy93/documentation-round-1

Documentation Round 1
This commit is contained in:
Alicia Sykes 2021-06-07 16:03:36 +01:00 committed by GitHub
commit d1d78cb1aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
54 changed files with 2373 additions and 378 deletions

View File

@ -0,0 +1,35 @@
# README
## Top-level Schemas
* [Dashy Config Schema](./dashy-config.md) `https://example.com/schemas/abstract`
## Other Schemas
### Objects
* [Untitled object in Dashy Config Schema](./dashy-config-properties-pageinfo.md) `https://example.com/schemas/abstract#/properties/pageInfo`
* [Untitled object in Dashy Config Schema](./dashy-config-properties-pageinfo-properties-navlinks-items.md) `https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items`
* [Untitled object in Dashy Config Schema](./dashy-config-properties-appconfig.md "Application configuration") `https://example.com/schemas/abstract#/properties/appConfig`
* [Untitled object in Dashy Config Schema](./dashy-config-properties-sections-items.md) `https://example.com/schemas/abstract#/properties/sections/items`
* [Untitled object in Dashy Config Schema](./dashy-config-properties-sections-items-properties-displaydata.md "Optional meta data for customizing a section") `https://example.com/schemas/abstract#/properties/sections/items/properties/displayData`
* [Untitled object in Dashy Config Schema](./dashy-config-properties-sections-items-properties-items-items.md) `https://example.com/schemas/abstract#/properties/sections/items/properties/items/items`
### Arrays
* [Untitled array in Dashy Config Schema](./dashy-config-properties-pageinfo-properties-navlinks.md "Quick access links, displayed in header") `https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks`
* [Untitled array in Dashy Config Schema](./dashy-config-properties-appconfig-properties-cssthemes.md "Theme names to be added to the dropdown") `https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes`
* [Untitled array in Dashy Config Schema](./dashy-config-properties-sections.md "Array of sections, containing items") `https://example.com/schemas/abstract#/properties/sections`
* [Untitled array in Dashy Config Schema](./dashy-config-properties-sections-items-properties-items.md "Array of items to display with a section") `https://example.com/schemas/abstract#/properties/sections/items/properties/items`
## Version Note
The schemas linked above follow the JSON Schema Spec version: `http://json-schema.org/draft-06/schema#`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig/properties/backgroundImg
```
A URL to an image asset to be displayed as background
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## backgroundImg Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes/items
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## items Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled array in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes
```
Theme names to be added to the dropdown
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## cssThemes Type
`string[]`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig/properties/customCss
```
Any custom CSS overides, must be minified
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## customCss Type
`string`

View File

@ -0,0 +1,23 @@
# Untitled boolean in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig/properties/enableFontAwesome
```
Should load font-awesome assets
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## enableFontAwesome Type
`boolean`
## enableFontAwesome Default Value
The default value is:
```json
true
```

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet/items
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## items Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled undefined type in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet
```
URL or URLs of external stylesheets to add to dropdown/ load
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## externalStyleSheet Type
any of the folllowing: `string` or `array` ([Details](dashy-config-properties-appconfig-properties-externalstylesheet.md))

View File

@ -0,0 +1,25 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig/properties/fontAwesomeKey
```
API key for font-awesome
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## fontAwesomeKey Type
`string`
## fontAwesomeKey Constraints
**pattern**: the string must match the following regular expression:
```regexp
^[a-z0-9]{10}$
```
[try pattern](https://regexr.com/?expression=%5E%5Ba-z0-9%5D%7B10%7D%24 "try regular expression with regexr.com")

View File

@ -0,0 +1,23 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig/properties/theme
```
A theme to be applied by default on first load
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## theme Type
`string`
## theme Default Value
The default value is:
```json
"Callisto"
```

View File

@ -0,0 +1,179 @@
# Untitled object in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/appConfig
```
Application configuration
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## appConfig Type
`object` ([Details](dashy-config-properties-appconfig.md))
# appConfig Properties
| Property | Type | Required | Nullable | Defined by |
| :---------------------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [backgroundImg](#backgroundimg) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-backgroundimg.md "https://example.com/schemas/abstract#/properties/appConfig/properties/backgroundImg") |
| [theme](#theme) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-theme.md "https://example.com/schemas/abstract#/properties/appConfig/properties/theme") |
| [enableFontAwesome](#enablefontawesome) | `boolean` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-enablefontawesome.md "https://example.com/schemas/abstract#/properties/appConfig/properties/enableFontAwesome") |
| [fontAwesomeKey](#fontawesomekey) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-fontawesomekey.md "https://example.com/schemas/abstract#/properties/appConfig/properties/fontAwesomeKey") |
| [cssThemes](#cssthemes) | `array` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-cssthemes.md "https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes") |
| [externalStyleSheet](#externalstylesheet) | Multiple | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-externalstylesheet.md "https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet") |
| [customCss](#customcss) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-customcss.md "https://example.com/schemas/abstract#/properties/appConfig/properties/customCss") |
## backgroundImg
A URL to an image asset to be displayed as background
`backgroundImg`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-backgroundimg.md "https://example.com/schemas/abstract#/properties/appConfig/properties/backgroundImg")
### backgroundImg Type
`string`
## theme
A theme to be applied by default on first load
`theme`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-theme.md "https://example.com/schemas/abstract#/properties/appConfig/properties/theme")
### theme Type
`string`
### theme Default Value
The default value is:
```json
"Callisto"
```
## enableFontAwesome
Should load font-awesome assets
`enableFontAwesome`
* is optional
* Type: `boolean`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-enablefontawesome.md "https://example.com/schemas/abstract#/properties/appConfig/properties/enableFontAwesome")
### enableFontAwesome Type
`boolean`
### enableFontAwesome Default Value
The default value is:
```json
true
```
## fontAwesomeKey
API key for font-awesome
`fontAwesomeKey`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-fontawesomekey.md "https://example.com/schemas/abstract#/properties/appConfig/properties/fontAwesomeKey")
### fontAwesomeKey Type
`string`
### fontAwesomeKey Constraints
**pattern**: the string must match the following regular expression:
```regexp
^[a-z0-9]{10}$
```
[try pattern](https://regexr.com/?expression=%5E%5Ba-z0-9%5D%7B10%7D%24 "try regular expression with regexr.com")
## cssThemes
Theme names to be added to the dropdown
`cssThemes`
* is optional
* Type: `string[]`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-cssthemes.md "https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes")
### cssThemes Type
`string[]`
## externalStyleSheet
URL or URLs of external stylesheets to add to dropdown/ load
`externalStyleSheet`
* is optional
* Type: any of the folllowing: `string` or `array` ([Details](dashy-config-properties-appconfig-properties-externalstylesheet.md))
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-externalstylesheet.md "https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet")
### externalStyleSheet Type
any of the folllowing: `string` or `array` ([Details](dashy-config-properties-appconfig-properties-externalstylesheet.md))
## customCss
Any custom CSS overides, must be minified
`customCss`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-customcss.md "https://example.com/schemas/abstract#/properties/appConfig/properties/customCss")
### customCss Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/pageInfo/properties/description
```
Sub-title, displayed in header
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## description Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/pageInfo/properties/footerText
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## footerText Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/path
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## path Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/title
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## title Type
`string`

View File

@ -0,0 +1,58 @@
# Untitled object in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## items Type
`object` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md))
# items Properties
| Property | Type | Required | Nullable | Defined by |
| :-------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [title](#title) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/title") |
| [path](#path) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/path") |
## title
`title`
* is required
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/title")
### title Type
`string`
## path
`path`
* is required
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/path")
### path Type
`string`

View File

@ -0,0 +1,19 @@
# Untitled array in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks
```
Quick access links, displayed in header
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## navLinks Type
`object[]` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md))
## navLinks Constraints
**maximum number of items**: the maximum number of items for this array is: `6`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/pageInfo/properties/title
```
Title and heading for the app
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## title Type
`string`

View File

@ -0,0 +1,100 @@
# Untitled object in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/pageInfo
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## pageInfo Type
`object` ([Details](dashy-config-properties-pageinfo.md))
# pageInfo Properties
| Property | Type | Required | Nullable | Defined by |
| :-------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [title](#title) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/title") |
| [description](#description) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-description.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/description") |
| [navLinks](#navlinks) | `array` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks") |
| [footerText](#footertext) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-footertext.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/footerText") |
## title
Title and heading for the app
`title`
* is required
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/title")
### title Type
`string`
## description
Sub-title, displayed in header
`description`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-description.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/description")
### description Type
`string`
## navLinks
Quick access links, displayed in header
`navLinks`
* is optional
* Type: `object[]` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md))
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks")
### navLinks Type
`object[]` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md))
### navLinks Constraints
**maximum number of items**: the maximum number of items for this array is: `6`
## footerText
`footerText`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-footertext.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/footerText")
### footerText Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled boolean in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/collapsed
```
If true, section needs to be clicked to open
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## collapsed Type
`boolean`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/color
```
Hex code, or HTML color for section fill
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## color Type
`string`

View File

@ -0,0 +1,29 @@
# Untitled number in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/cols
```
The amount of space that the section spans horizontally
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## cols Type
`number`
## cols Constraints
**maximum**: the value of this number must smaller than or equal to: `5`
**minimum**: the value of this number must greater than or equal to: `1`
## cols Default Value
The default value is:
```json
1
```

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/customStyles
```
CSS overides for section container
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## customStyles Type
`string`

View File

@ -0,0 +1,21 @@
# Untitled number in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountX
```
Number of items per column
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## itemCountX Type
`number`
## itemCountX Constraints
**maximum**: the value of this number must smaller than or equal to: `12`
**minimum**: the value of this number must greater than or equal to: `1`

View File

@ -0,0 +1,21 @@
# Untitled number in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountY
```
Number of items per row
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## itemCountY Type
`number`
## itemCountY Constraints
**maximum**: the value of this number must smaller than or equal to: `12`
**minimum**: the value of this number must greater than or equal to: `1`

View File

@ -0,0 +1,33 @@
# Untitled undefined type in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemSize
```
Size of items within the section
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## itemSize Type
unknown
## itemSize Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :--------- | :---------- |
| `"small"` | |
| `"medium"` | |
| `"large"` | |
## itemSize Default Value
The default value is:
```json
"medium"
```

View File

@ -0,0 +1,32 @@
# Untitled undefined type in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/layout
```
If set to grid, items have uniform width, and itemCount can be set
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## layout Type
unknown
## layout Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :------- | :---------- |
| `"grid"` | |
| `"auto"` | |
## layout Default Value
The default value is:
```json
"auto"
```

View File

@ -0,0 +1,29 @@
# Untitled number in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/rows
```
The amount of space that the section spans vertically
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## rows Type
`number`
## rows Constraints
**maximum**: the value of this number must smaller than or equal to: `5`
**minimum**: the value of this number must greater than or equal to: `1`
## rows Default Value
The default value is:
```json
1
```

View File

@ -0,0 +1,266 @@
# Untitled object in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData
```
Optional meta data for customizing a section
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## displayData Type
`object` ([Details](dashy-config-properties-sections-items-properties-displaydata.md))
# displayData Properties
| Property | Type | Required | Nullable | Defined by |
| :---------------------------- | :------------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [collapsed](#collapsed) | `boolean` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/collapsed") |
| [color](#color) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/color") |
| [customStyles](#customstyles) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/customStyles") |
| [itemSize](#itemsize) | Not specified | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemSize") |
| [rows](#rows) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-rows.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/rows") |
| [cols](#cols) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-cols.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/cols") |
| [layout](#layout) | Not specified | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-layout.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/layout") |
| [itemCountX](#itemcountx) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountX") |
| [itemCountY](#itemcounty) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountY") |
## collapsed
If true, section needs to be clicked to open
`collapsed`
* is optional
* Type: `boolean`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/collapsed")
### collapsed Type
`boolean`
## color
Hex code, or HTML color for section fill
`color`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/color")
### color Type
`string`
## customStyles
CSS overides for section container
`customStyles`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/customStyles")
### customStyles Type
`string`
## itemSize
Size of items within the section
`itemSize`
* is optional
* Type: unknown
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemSize")
### itemSize Type
unknown
### itemSize Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :--------- | :---------- |
| `"small"` | |
| `"medium"` | |
| `"large"` | |
### itemSize Default Value
The default value is:
```json
"medium"
```
## rows
The amount of space that the section spans vertically
`rows`
* is optional
* Type: `number`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-rows.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/rows")
### rows Type
`number`
### rows Constraints
**maximum**: the value of this number must smaller than or equal to: `5`
**minimum**: the value of this number must greater than or equal to: `1`
### rows Default Value
The default value is:
```json
1
```
## cols
The amount of space that the section spans horizontally
`cols`
* is optional
* Type: `number`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-cols.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/cols")
### cols Type
`number`
### cols Constraints
**maximum**: the value of this number must smaller than or equal to: `5`
**minimum**: the value of this number must greater than or equal to: `1`
### cols Default Value
The default value is:
```json
1
```
## layout
If set to grid, items have uniform width, and itemCount can be set
`layout`
* is optional
* Type: unknown
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-layout.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/layout")
### layout Type
unknown
### layout Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :------- | :---------- |
| `"grid"` | |
| `"auto"` | |
### layout Default Value
The default value is:
```json
"auto"
```
## itemCountX
Number of items per column
`itemCountX`
* is optional
* Type: `number`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountX")
### itemCountX Type
`number`
### itemCountX Constraints
**maximum**: the value of this number must smaller than or equal to: `12`
**minimum**: the value of this number must greater than or equal to: `1`
## itemCountY
Number of items per row
`itemCountY`
* is optional
* Type: `number`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountY")
### itemCountY Type
`number`
### itemCountY Constraints
**maximum**: the value of this number must smaller than or equal to: `12`
**minimum**: the value of this number must greater than or equal to: `1`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/icon
```
Icon will be displayed next to title
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## icon Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/color
```
A custom fill color of the item
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## color Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/description
```
Short description, shown on hover or in a tooltip
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## description Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/icon
```
An icon, either as a font-awesome identifier, local or remote URL, or auto-fetched favicon
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## icon Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/provider
```
Provider name, e.g. Microsoft
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## provider Type
`string`

View File

@ -0,0 +1,33 @@
# Untitled undefined type in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/target
```
Opening method, when item is clicked
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## target Type
unknown
## target Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :---------- | :---------- |
| `"newtab"` | |
| `"sametab"` | |
| `"iframe"` | |
## target Default Value
The default value is:
```json
"newtab"
```

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/title
```
Text shown on the item
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## title Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/url
```
The destination to navigate to when item is clicked
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## url Type
`string`

View File

@ -0,0 +1,171 @@
# Untitled object in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## items Type
`object` ([Details](dashy-config-properties-sections-items-properties-items-items.md))
# items Properties
| Property | Type | Required | Nullable | Defined by |
| :-------------------------- | :------------ | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [title](#title) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-title.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/title") |
| [description](#description) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-description.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/description") |
| [icon](#icon) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/icon") |
| [url](#url) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-url.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/url") |
| [target](#target) | Not specified | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-target.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/target") |
| [color](#color) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/color") |
| [provider](#provider) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-provider.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/provider") |
## title
Text shown on the item
`title`
* is required
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-title.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/title")
### title Type
`string`
## description
Short description, shown on hover or in a tooltip
`description`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-description.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/description")
### description Type
`string`
## icon
An icon, either as a font-awesome identifier, local or remote URL, or auto-fetched favicon
`icon`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/icon")
### icon Type
`string`
## url
The destination to navigate to when item is clicked
`url`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-url.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/url")
### url Type
`string`
## target
Opening method, when item is clicked
`target`
* is optional
* Type: unknown
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-target.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/target")
### target Type
unknown
### target Constraints
**enum**: the value of this property must be equal to one of the following values:
| Value | Explanation |
| :---------- | :---------- |
| `"newtab"` | |
| `"sametab"` | |
| `"iframe"` | |
### target Default Value
The default value is:
```json
"newtab"
```
## color
A custom fill color of the item
`color`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/color")
### color Type
`string`
## provider
Provider name, e.g. Microsoft
`provider`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-provider.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/provider")
### provider Type
`string`

View File

@ -0,0 +1,15 @@
# Untitled array in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/items
```
Array of items to display with a section
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## items Type
`object[]` ([Details](dashy-config-properties-sections-items-properties-items-items.md))

View File

@ -0,0 +1,15 @@
# Untitled string in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items/properties/name
```
Title/ heading for a section
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## name Type
`string`

View File

@ -0,0 +1,96 @@
# Untitled object in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections/items
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## items Type
`object` ([Details](dashy-config-properties-sections-items.md))
# items Properties
| Property | Type | Required | Nullable | Defined by |
| :-------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [name](#name) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-name.md "https://example.com/schemas/abstract#/properties/sections/items/properties/name") |
| [icon](#icon) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/icon") |
| [displayData](#displaydata) | `object` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData") |
| [items](#items) | `array` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items") |
## name
Title/ heading for a section
`name`
* is required
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-name.md "https://example.com/schemas/abstract#/properties/sections/items/properties/name")
### name Type
`string`
## icon
Icon will be displayed next to title
`icon`
* is optional
* Type: `string`
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/icon")
### icon Type
`string`
## displayData
Optional meta data for customizing a section
`displayData`
* is optional
* Type: `object` ([Details](dashy-config-properties-sections-items-properties-displaydata.md))
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData")
### displayData Type
`object` ([Details](dashy-config-properties-sections-items-properties-displaydata.md))
## items
Array of items to display with a section
`items`
* is required
* Type: `object[]` ([Details](dashy-config-properties-sections-items-properties-items-items.md))
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items")
### items Type
`object[]` ([Details](dashy-config-properties-sections-items-properties-items-items.md))

View File

@ -0,0 +1,15 @@
# Untitled array in Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract#/properties/sections
```
Array of sections, containing items
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
## sections Type
`object[]` ([Details](dashy-config-properties-sections-items.md))

View File

@ -0,0 +1,77 @@
# Dashy Config Schema Schema
```txt
https://example.com/schemas/abstract
```
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json](../../out/dashy-config.schema.json "open original schema") |
## Dashy Config Schema Type
`object` ([Dashy Config Schema](dashy-config.md))
# Dashy Config Schema Properties
| Property | Type | Required | Nullable | Defined by |
| :---------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------- |
| [pageInfo](#pageinfo) | `object` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo.md "https://example.com/schemas/abstract#/properties/pageInfo") |
| [appConfig](#appconfig) | `object` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig.md "https://example.com/schemas/abstract#/properties/appConfig") |
| [sections](#sections) | `array` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections.md "https://example.com/schemas/abstract#/properties/sections") |
## pageInfo
`pageInfo`
* is optional
* Type: `object` ([Details](dashy-config-properties-pageinfo.md))
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo.md "https://example.com/schemas/abstract#/properties/pageInfo")
### pageInfo Type
`object` ([Details](dashy-config-properties-pageinfo.md))
## appConfig
Application configuration
`appConfig`
* is optional
* Type: `object` ([Details](dashy-config-properties-appconfig.md))
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig.md "https://example.com/schemas/abstract#/properties/appConfig")
### appConfig Type
`object` ([Details](dashy-config-properties-appconfig.md))
## sections
Array of sections, containing items
`sections`
* is required
* Type: `object[]` ([Details](dashy-config-properties-sections-items.md))
* cannot be null
* defined in: [Dashy Config Schema](dashy-config-properties-sections.md "https://example.com/schemas/abstract#/properties/sections")
### sections Type
`object[]` ([Details](dashy-config-properties-sections-items.md))

126
docs/configuring.md Normal file
View File

@ -0,0 +1,126 @@
## Configuring
All app configuration is specified in [`/public/conf.yml`](https://github.com/Lissy93/dashy/blob/master/public/conf.yml) which is in [YAML Format](https://yaml.org/) format.
If you're new to YAML, it's pretty straight-forward. The format is exactly the same as that of JSON, but instead of using curley braces, structure is denoted using whitespace. This [quick guide](https://linuxhandbook.com/yaml-basics/) should get you up to speed in a few minutes, for more advanced topics take a look at this [Wikipedia article](https://en.wikipedia.org/wiki/YAML) and for some practicle examples, the [Azure pipelines schema](https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema%2Cparameter-schema) may be useful.
You may find it helpful to look at some sample config files to get you started, a collection of which can be found [here](https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10).
There's a couple of things to remember, before getting started:
- After modifying your config, you will need to run `yarn build` to recompile the application
- You can check that your config file fits the schema, by running `yarn validate-config`
- Any changes made locally through the UI need to be exported into this file, in order for them to persist across devices
All fields are optional, unless otherwise stated.
#### Top-Level Fields
**Field** | **Type** | **Required**| **Description**
--- | --- | --- | ---
**`pageInfo`** | `object` | Required | Basic meta data like title, description, nav bar links, footer text. See [`pageInfo`](#pageinfo)
**`appConfig`** | `object` | _Optional_ | Settings related to how the app functions, including API keys and global styles. See [`appConfig`](#appconfig-optional)
**`sections`** | `array` | Required | An array of sections, each containing an array of items, which will be displayed as links. See [`section`](#section)
#### `PageInfo`
**Field** | **Type** | **Required**| **Description**
--- | --- | --- | ---
**`title`** | `string` | Required | Your dashboard title, displayed in the header and browser tab
**`description`** | `string` | _Optional_ | Description of your dashboard, also displayed as a subtitle
**`navLinks`** | `array` | _Optional_ | Optional list of a maximum of 6 links, which will be displayed in the navigation bar. See [`navLinks`](#pageinfonavlinks-optional)
**`footerText`** | `string` | _Optional_ | Text to display in the footer (note that this will override the default footer content)
#### `pageInfo.navLinks` _(optional)_
**Field** | **Type** | **Required**| **Description**
--- | --- | --- | ---
**`title`** | `string` | Required | The text to display on the link button
**`path`** | `string` | Required | The URL to navigate to when clicked. Can be relative (e.g. `/about`) or absolute (e.g. `https://example.com` or `http://192.168.1.1`)
#### `appConfig` _(optional)_
**Field** | **Type** | **Required**| **Description**
--- | --- | --- | ---
**`backgroundImg`** | `string` | _Optional_ | Path to an optional full-screen app background image. This can be either remote (http) or local (/). Note that this will slow down initial load
**`enableFontAwesome`** | `boolean` | _Optional_ | Where `true` is enabled, if left blank font-awesome will be enabled only if required by 1 or more icons
**`fontAwesomeKey`** | `string` | _Optional_ | If you have a font-awesome key, then you can use it here and make use of premium icons. It is a 10-digit alpha-numeric string from you're FA kit URL (e.g. `13014ae648`)
**`theme`** | `string` | _Optional_ | The default theme for first load (you can change this later from the UI)
**`cssThemes`** | `string[]` | _Optional_ | An array of custom theme names which can be used in the theme switcher dropdown
**`externalStyleSheet`** | `string` or `string[]` | _Optional_ | Either a URL to an external stylesheet or an array or URLs, which can be applied as themes within the UI
**`customCss`** | `string` | _Optional_ | Raw CSS that will be applied to the page. This can also be set from the UI. Please minify it first.
#### `section`
**Field** | **Type** | **Required**| **Description**
--- | --- | --- | ---
**`name`** | `string` | Required | The title for the section
**`icon`** | `string` | _Optional_ | An single icon to be displayed next to the title. See [`section.icon`](#sectionicon-and-sectionitemicon)
**`items`** | `array` | Required | An array of items to be displayed within the section. See [`item`](#sectionitem)
**`displayData`** | `object` | _Optional_ | Meta-data to optionally overide display settings for a given section. See [`displayData`](#sectiondisplaydata-optional)
#### `section.item`
**Field** | **Type** | **Required**| **Description**
--- | --- | --- | ---
**`title`** | `string` | Required | The text to display/ title of a given item. Max length `18`
**`description`** | `string` | _Optional_ | Additional info about an item, which is shown in the tooltip on hover, or visible on large tiles
**`url`** | `string` | Required | The URL / location of web address for when the item is clicked
**`icon`** | `string` | _Optional_ | The icon for a given item. Can be a font-awesome icon, favicon, remote URL or local URL. See [`item.icon`](#sectionicon-and-sectionitemicon)
**`target`** | `string` | _Optional_ | The opening method for when the item is clicked, either `newtab`, `sametab` or `iframe`. Where `newtab` will open the link in a new tab, `sametab` will open it in the current tab, and `iframe` will open a pop-up modal with the content displayed within that iframe. Note that for the iframe to load, you must have set the CORS headers to either allow `*` ot allow the domain that you are hosting Dashy on, for some websites and self-hosted services, this is already set.
**`color`** | `string` | _Optional_ | An optional color for the text and font-awesome icon to be displayed in. Note that this will override the current theme and so may not display well
**`backgroundColor`** | `string` | _Optional_ | An optional background fill color for the that given item. Again, this will override the current theme and so might not display well against the background
#### `section.displayData` _(optional)_
**Field** | **Type** | **Required**| **Description**
--- | --- | --- | ---
**`collapsed`** | `boolean` | _Optional_ | If true, the section will be collapsed initially, and will need to be clicked to open. Useful for less regularly used, or very long sections. Defaults to `false`
**`color`** | `string` | _Optional_ | A custom accent color for the section, as a hex code or HTML color (e.g. `#fff`)
**`customStyles`** | `string` | _Optional_ | Custom CSS properties that should be applied to that section, e.g. `border: 2px dashed #ff0000;`
**`itemSize`** | `string` | _Optional_ | Specify the size for items within this group, either `small`, `medium` or `large`. Note that this will overide any settings specified through the UI
**`rows`** | `number` | _Optional_ | Height of the section, specified as the number of rows it should span vertically, e.g. `2`. Defaults to `1`. Max is `5`.
**`cols`** | `number` | _Optional_ | Width of the section, specified as the number of columns the section should span horizontally, e.g. `2`. Defaults to `1`. Max is `5`.
**`layout`** | `string` | _Optional_ | Specify which CSS layout will be used to responsivley place items. Can be either `auto` (which uses flex layout), or `grid`. If `grid` is selected, then `itemCountX` and `itemCountY` may also be set. Defaults to `auto`
**`itemCountX`** | `number` | _Optional_ | The number of items to display per row / horizontally. If not set, it will be calculated automatically based on available space. Can only be set if `layout` is set to `grid`. Must be a whole number between `1` and `12`
**`itemCountY`** | `number` | _Optional_ | The number of items to display per column / vertically. If not set, it will be calculated automatically based on available space. If `itemCountX` is set, then `itemCountY` can be calculated automatically. Can only be set if `layout` is set to `grid`. Must be a whole number between `1` and `12`
#### `section.icon` and `section.item.icon`
**Field** | **Type** | **Required**| **Description**
--- | --- | --- | ---
**`icon`** | `string` | _Optional_ | The icon for a given item or section. Can be a font-awesome icon, favicon, remote URL or local URL. If set to `favicon`, the icon will be automatically fetched from the items website URL. To use font-awesome, specify the category, followed by the icon name, e.g. `fas fa-rocket`, `fab fa-monero` or `fal fa-duck` - note that to use pro icons, you mut specify `appConfig.fontAwesomeKey`. You can also use hosted any by specifying it's URL, e.g. `https://i.ibb.co/710B3Yc/space-invader-x256.png`. To use a local image, first store it in `./public/item-icons/` (or `-v /app/public/item-icons/` in Docker) , and reference it by name and extension - e.g. set `image.png` to use `./public/item-icon/image.png`, you can also use sub-folders if you have a lot of icons, to keep them organised.
#### Example
```yaml
---
pageInfo:
title: Home Lab
sections: # An array of sections
- name: Section 1 - Getting Started
items: # An array of items
- title: GitHub
description: Source code and documentation on GitHub
icon: fab fa-github
url: https://github.com/Lissy93/dashy
- title: Issues
description: View currently open issues, or raise a new one
icon: fas fa-bug
url: https://github.com/Lissy93/dashy/issues
- title: Demo
description: A live demo
icon: far fa-rocket
url: https://dashy-demo-1.netlify.app
- name: Section 2 - Local Services
items:
- title: Firewall
icon: favicon
url: http://192.168.1.1/
- title: Game Server
icon: https://i.ibb.co/710B3Yc/space-invader-x256.png
url: http://192.168.130.1/
```
For more example config files, see: [this gist](https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10)

181
docs/developing.md Normal file
View File

@ -0,0 +1,181 @@
## Developing
This article outlines how to get Dashy running in a development environment, and outlines the basics of the architecture.
- [Setting up the Development Environment]()
- [Resources for Beginners]()
- [Style Guide]()
- [Frontend Components]()
- [Project Structure]()
### Setting up the Dev Environment
#### Prerequisites
You will need either the latest or LTS version of **[Node.js](https://nodejs.org/)** to build and serve the application and **[Git](https://git-scm.com/downloads)** to easily fetch the code, and push any changes. If you plan on running or deploying the container, you'll also need **[Docker](https://docs.docker.com/get-docker/)**. To avoid any unexpected issues, ensure you've got at least **[NPM](https://www.npmjs.com/get-npm)** V 7.5 or **[Yarn](https://classic.yarnpkg.com/en/docs/install/#windows-stable)** 1.22 (you may find [NVM](https://github.com/nvm-sh/nvm) helpful for switching/ managing versions).
#### Running the Project
1. Get Code: `git clone git@github.com:Lissy93/dashy.git`
2. Navigate into the directory: `cd dashy`
3. Install dependencies: `yarn`
4. Start dev server: `yarn dev`
Dashy should now be being served on http://localhost:8080/. Hot reload is enabled, so making changes to any of the files will trigger them to be rebuilt and the page refreshed.
#### Project Commands
- `yarn dev` - Starts the development server with hot reloading
- `yarn build` - Builds the project for production, and outputs it into `./dist`
- `yarn start` - Starts a web server, and serves up the production site from `./dist`
- `yarn validate-config` - Parses and validates your `conf.yml` against Dashy's schema
- `yarn lint` - Lints code to ensure it follows a consistent, neat style
- `yarn test` - Runs tests, and outputs results
There is also:
- `yarn build-and-start` will run `yarn build` and `yarn start`
- `yarn build-watch` will output contents to `./dist` and recompile when anything in `./src` is modified, you can then use either `yarn start` or your own server, to have a production environment that watches for changes.
Note:
- If you are using NPM, replace `yarn` with `npm run`
- If you are using Docker, precede each command with `docker exec -it [container-id]`. Container ID can be found by running `docker ps`
### Resources for Beginners
New to Web Development? Glad you're here! Dashy is a pretty simple app, so it should make a good candidate for your first PR. Presuming that you already have a basic knowledge of JavaScript, the following articles should point you in the right direction for getting up to speed with the technologies used in this project:
- [Introduction to Vue.js](https://v3.vuejs.org/guide/introduction.html)
- [Vue.js Walkthrough](https://www.taniarascia.com/getting-started-with-vue/)
- [Definitive guide to SCSS](https://blog.logrocket.com/the-definitive-guide-to-scss/)
- [Complete beginners guide to Docker](https://docker-curriculum.com/)
- [Docker Classroom - Interactive Tutorials](https://training.play-with-docker.com/)
- [Quick start TypeScript guide](https://www.freecodecamp.org/news/learn-typescript-in-5-minutes-13eda868daeb/)
- [Complete TypeScript tutorial series](https://www.typescripttutorial.net/)
- [Using TypeScript with Vue.js](https://blog.logrocket.com/vue-typescript-tutorial-examples/)
- [Git cheat sheet](http://git-cheatsheet.com/)
- [Basics of using NPM](https://www.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/)
As well as Node, Git and Docker- you'll also need an IDE (e.g. [VS Code](https://code.visualstudio.com/) or [Vim](https://www.vim.org/)) and a terminal (Windows users may find [WSL](https://docs.microsoft.com/en-us/windows/wsl/) more convenient).
### Style Guide
Linting is done using [ESLint](https://eslint.org/), and using the [Vue.js Styleguide](https://github.com/vuejs/eslint-config-standard), which is very similar to the [AirBnB Stylguide](https://github.com/airbnb/javascript). You can run `yarn lint` to report and fix issues. While the dev server is running, issues will be reported to the console automatically. Any lint errors will trigger the build to fail. Note that all lint checks must pass before any PR can be merged.
The most significant things to note are:
- Indentation should be done with two spaces
- Strings should use single quotes
- All statements must end in a semi-colon
- The final element in all objects must be preceded with a comma
- Maximum line length is 100
- There must be exactly one blank line between sections, before function names, and at the end of the file
- With conditionals, put else on the same line as your if blocks closing brace
- All multiline blocks must use braces
- Avoid console statements in the frontend
For the full styleguide, see: [github.com/airbnb/javascript](https://github.com/airbnb/javascript)
### Frontend Components
All frontend code is located in the `./src` directory, which is split into 5 sub-folders:
- Components - All frontend web components are located here. Each component should have a distinct, well defined and simple task, and ideally should not be too long. The components directory is organised into a series of sub-directories, representing a specific area of the application
- PageStrcture - Components relating to overall page structure (nav, footer, etc)
- FormElements - Reusable form elements (button, input field, etc)
- LinkItems - Components relating to Dashy's sections and items (item group, item, item icon, etc)
- Configuration - Components relating to Dashy's configuration forms (cloud backup, JSON editor, etc)
- Views - Each view directly corresponds to a route (defined in the router), and in effectively a page. They should have minimal logic, and just contain a few components
- Utils - These are helper functions, or logic that is used within the app does not include an UI elements
- Styles - Any SCSS that is used globally throughout that app, and is not specific to a single component goes here. This includes variables, color themes, typography settings, CSS reset and media queries
- Assets - Static assets that need to be bundled into the application, but do not require any manipulation go here. This includes interface icons and fonts
The structure of the components directory is similar to that of the frontend application layout
<p align="center"><img src="https://i.ibb.co/wJCt0Lq/dashy-page-structure.png" width="500"/></p>
### Common Tasks
#### Creating a new theme
See [Theming](./theming.md)
#### Adding a new option in the config file
All application config is specified in `./public/conf.yml` - see [Configuring Docs](./configuring.md) for info. Before adding a new option in the config file, first ensure that there is nothing similar available, that is is definitely necessary, it will not conflict with any other options and most importantly that it will not cause any breaking changes. Ensure that you choose an appropriate and relevant section to place it under.
Checklist:
- Update the [Schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js) with the parameters for your new option
- Set a default value (if required) within [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js)
- Document the new value in [`configuring.md`](./configuring.md)
- Test that the reading of the new attribute is properly handled, and will not cause any errors when it is missing or populated with an unexpected value
### Directory Structure
#### Files in the Root: `./`
```
├── package.json # Project meta-data, dependencies and paths to scripts
├── src/ # Project front-end source code
├── server.js # A Node.js server to serve up the /dist directory
├── vue.config.js # Vue.js configuration
├── Dockerfile # The blueprint for building the Docker container
├── docker-compose.yml # A Docker run command
├── .env # Location for any environmental variables
├── yarn.lock # Auto-generated list of current packages and version numbers
├── docs/ # Markdown documentation
├── README.md # Readme, basic info for getting started
├── LICENSE.md # License for use
```
#### Frontend Source: `./src/`
```
./src
├── App.vue # Vue.js starting file
├── assets # Static non-compiled assets
│ ├── fonts # .ttf font files
│ ╰── interface-icons # SVG icons used in the app
├── components # All front-end Vue web components
│ ├── Configuration # Components relating to the user config pop-up
│ │ ├── CloudBackupRestore.vue # Form where the user manages cloud sync options
│ │ ├── ConfigContainer.vue # Main container, wrapping all other config components
│ │ ├── CustomCss.vue # Form where the user can input custom CSS
│ │ ├── EditSiteMeta.vue # Form where the user can edit site meta data
│ │ ╰── JsonEditor.vue # JSON editor, where the user can modify the main config file
│ ├── FormElements # Basic form elements used throughout the app
│ │ ├── Button.vue # Standard button component
│ │ └── Input.vue # Standard text field input component
│ ├── LinkItems # Components for Sections and Link Items
│ │ ├── Collapsable.vue # The collapsible functionality of sections
│ │ ├── IframeModal.vue # Pop-up iframe modal, for viewing websites within the app
│ │ ├── Item.vue # Main link item, which is displayed within an item group
│ │ ├── ItemGroup.vue # Item group is a section containing icons
│ │ ├── ItemIcon.vue # The icon used by both items and sections
│ │ ╰── ItemOpenMethodIcon.vue # A small icon, visible on hover, indicating opening method
│ ├── PageStrcture # Components relating the main structure of the page
│ │ ├── Footer.vue # Footer, visible at the bottom of all pages
│ │ ├── Header.vue # Header, visible at the top of pages, and includes title and nav
│ │ ├── Nav.vue # Navigation bar, includes a list of links
│ │ ╰── PageTitle.vue # Page title and sub-title, visible within the Header
│ ╰── Settings # Components relating to the quick-settings, in the top-right
│ ├── ConfigLauncher.vue # Icon that when clicked will launch the Configuration component
│ ├── ItemSizeSelector.vue # Set of buttons used to set and save item size
│ ├── KeyboardShortcutInfo.vue# Small pop-up displaying the available keyboard shortcuts
│ ├── LayoutSelector.vue # Set of buttons, letting the user select their desired layout
│ ├── SearchBar.vue # The input field in the header, used for searching the app
│ ├── SettingsContainer.vue # Container that wraps all the quick-settings components
│ ╰── ThemeSelector.vue # Drop-down menu enabling the user to select and change themes
├── main.js # Main front-end entry point
├── registerServiceWorker.js # Registers and manages service workers, for PWA apps
├── router.js # Defines all available application routes
├── styles # Directory of all globally used common SCSS styles
├── utils # Directory of re-used helper functions
│ ├── ArrowKeyNavigation.js # Functionality for arrow-key navigation
│ ├── CloudBackup.js # Functionality for encrypting, processing and network calls
│ ├── ConfigSchema.json # The schema, used to validate the users conf.yml file
│ ├── ConfigValidator.js # A helper script that validates the config file against schema
│ ├── defaults.js # Global constants and their default values
│ ├── ErrorHandler.js # Helper function called when an error is returned
│ ├── JsonToYaml.js # Function that parses and converts raw JSON into valid YAML
│ ╰── ThemeHelper.js # Function that handles the fetching and setting of user themes
╰── views # Directory of available pages, corresponding to available routes
╰── Home.vue # The home page container
```

56
docs/getting-started.md Normal file
View File

@ -0,0 +1,56 @@
## Getting Started
### Deploy with Docker
The quickest way to get started on any system is with Docker, and Dashy is available though [Docker Hub](https://hub.docker.com/r/lissy93/dashy). You will need [Docker](https://docs.docker.com/get-docker/) installed on your system.
To test it out, just run: `docker run -p 8080:80 lissy93/dashy`, then open your browser and visit `http://localhost:8080`.
To configure Dashy with your own services, and customize it to your liking, you will need to write a config file, and pass it to the Docker container as a volume.
```docker
docker run -d \
-p 8080:80 \
-v /root/my-local-conf.yml:/app/public/conf.yml \
--name my-dashboard \
--restart=always \
lissy93/dashy:latest
```
Explanation of the above options:
- `-d` Detached mode (not running in the foreground of your terminal)
- `-p` The port that should be exposed, and the port it should be mapped to in your host system `[host-port][container-port]`
- `-v` Specify volumes, to pass data from your host system to the container, in the format of `[host-path]:[container-path]`
- `--name` Give your container a human-readable name
- `--restart=always` Spin up the container when the daemon starts, or after it has been stopped
- `lissy93/dashy:latest` This last option is the image the container should be built from
For all available options, and to learn more, see the [Docker Run Docs](https://docs.docker.com/engine/reference/commandline/run/)
### Deploy from Source
If you do not want to use Docker, you can run Dashy directly on your host system. For this, you will need both [git](https://git-scm.com/downloads) and the latest or LTS version of [Node.js](https://nodejs.org/) installed.
1. Get Code: `git clone git@github.com:Lissy93/dashy.git` and `cd dashy`
2. Configuration: Fill in you're settings in `./public/conf.yml`
3. Install dependencies: `yarn`
4. Build: `yarn build`
5. Run: `yarn start`
### Providing Assets
Although not essential, you will most likely want to provide several assets to Dashy. All web assets can be found in the `/public` directory.
- `./public/conf.yml` - As mentioned, this is your main application config file
- `./public/item-icons` - If you're using your own icons, you can choose to store them locally for better load time, and this is the directory to put them in. You can also use sub-folders here to keep things organized. You then reference these assets relative this the direcroties path, for example: to use `./public/item-icons/networking/netdata.png` as an icon for one of your links, you would set `icon: networking/netdata.png`
- Also within `./public` you'll find standard website assets, including `favicon.ico`, `manifest.json`, `robots.txt`, etc. There's no need to modify these, but you can do so if you wish.
### Basic Commands
Now that you've got Dashy running, there are a few commands that you need to know.
The following commands are defined in the [`package.json`](https://github.com/Lissy93/dashy/blob/master/package.json#L5) file, and are run with `yarn`. If you prefer, you can use NPM, just replace instances of `yarn` with `npm run`. If you are using Docker, then you will need to precede each command with `docker exec -it [container-id]`, where container ID can be found by running `docker ps`. For example `docker exec -it 26c156c467b4 yarn build`
#### `yarn build`
In the interest of speed, the application is pre-compiled, this means that the config file is read during build-time, and therefore the app needs to rebuilt for any new changes to take effect. Luckily this is very straight forward. Just run `yarn build` or `docker exec -it [container-id] yarn build`.
#### `yarn validate-config`
If you have quite a long configuration file, you may wish to check that it's all good to go, before deploying the app. This can be done with `yarn validate-config` or `docker exec -it [container-id] yarn validate-config`. Your config file needs to be in `/public/conf.yml` (or within your Docker container at `/app/public/conf.yml`). This will first check that your YAML is valid, and then validates it against Dashy's [schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js).

9
docs/readme.md Normal file
View File

@ -0,0 +1,9 @@
## Contents
- [Getting Started](./getting-started.md)
- [Configuring](./backup-restore.md)
- [Backup & Restore](./backup-restore.md)
- [Theming](./backup-restore.md)
- [Developing](./developing.md)

139
docs/theming.md Normal file
View File

@ -0,0 +1,139 @@
## Theming
By default Dashy comes with 20 built in themes, which can be applied from the dropwodwn menu in the UI
![Built-in Themes](https://i.ibb.co/GV3wRss/Dashy-Themes.png)
You can also add your own themes, apply custom CSS, and modify colors.
You can customize Dashy by writing your own CSS, which can be loaded either as an external stylesheet, set directly through the UI, or specified in the config file. Most styling options can be set through CSS variables, which are outlined below.
The following content requires that you have a basic understanding of CSS. If you're just beginning, you may find [this article](https://developer.mozilla.org/en-US/docs/Learn/CSS/First_steps) helpful.
### How Theme-Switching Works
The theme switching is done by simply changing the `data-theme` attribute on the root DOM element, which can then be targeted by CSS. First off, in order for the theme to show up in the theme switcher, it needs to be added to the config file, under `appConfig.cssThemes`, either as a string, or an array of strings for multiple themes. For example:
```yaml
appConfig:
cssThemes: ['tiger', 'another-theme']
```
You can now create a block to target you're theme with `html[data-theme='my-theme']{}` and set some styles. The easiest method is by setting CSS variables, but you can also directly override elements by their selector. As an example, see the [built-in CSS themes](https://github.com/Lissy93/dashy/blob/master/src/styles/color-themes.scss).
```css
html[data-theme='tiger'] {
--primary: #f58233;
--item-group-background: #0b1021;
}
```
Finally, from the UI use the theme dropdown menu to select your new theme, and your styles will be applied.
You can also set `appConfig.theme` to pre-select a default theme, which will be applied immediately after deployment.
### Setting Custom CSS
Custom CSS can be developed, tested and applied directly through the UI. Although you will need to make note of your changes to apply them across instances.
This can be done from the Config menu (spanner icon in the top-right), under the Custom Styles tab. This is then associated with `appConfig.customCss` in local storage. Any styles set this way can be synced across instances using the cloud backup and sync feature.
It's also possible to set CSS in the config file under `appConfig.customCss`. However this approach is not very neat, and if you do do it, first minify / compress your CSS and wrap in quotes, to ensure it does not cause any validation errors.
### Loading External Stylesheets
The URI of a stylesheet, either local or hosted on a remote CDN can be passed into the config file. The attribute `appConfig.externalStyleSheet` accepts either a string, or an array of strings. This is handled in [`ThemeHelper.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/ThemeHelper.js).
For example:
```yaml
appConfig:
externalStyleSheet: 'https://example.com/my-stylesheet.css'
```
```yaml
appConfig:
externalStyleSheet: ['/themes/my-theme-1.css', '/themes/my-theme-2.css']
```
### Hard-Coding Section or Item Colors
Some UI components have a color option, that can be set in the config file, to force the color of a given item or section no matter what theme is selected. These colors should be expressed as hex codes (e.g. `#fff`) or HTML colors (e.g. `red`). The following attributes are supported:
- `section.color` - Custom color for a given section
- `item.color` - Font and icon color for a given item
- `item.backgroundColor` - Background color for a given icon
### CSS Variables
All colors as well as other variable values (such as borders, border-radius, shadows) are specified as CSS variables. This makes theming the application easy, as you only need to change a given color or value in one place. You can find all variables in [`color-palette.scss`](https://github.com/Lissy93/dashy/blob/master/src/styles/color-palette.scss) and the themes which make use of these color variables are specified in [`color-themes.scss`](https://github.com/Lissy93/dashy/blob/master/src/styles/color-themes.scss)
CSS variables are simple to use. You define them like: `--background: #fff;` and use them like: `body { background-color: var(--background); }`. For more information, see this guide on using [CSS Variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties).
You can determine the variable used by any given element, and visualize changes using the browser developer tools (Usually opened with `F12`, or Options --> More --> Developer Tools). Under the elements tab, click the Element Selector icon (usually top-left corner), you will then be able to select any DOM element on the page by hovering and clicking it. In the CSS panel you will see all styles assigned to that given element, including CSS variables. Click a variable to see it's parent value, and for color attributes, click the color square to modify the color. For more information, see this [getting started guide](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_are_browser_developer_tools), and these articles on [selecting elements](https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Select_an_element) and [inspecting and modifying colors](https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Inspect_and_select_colors).
#### Top-Level Variables
These are all that are required to create a theme. All other variables inherit their values from these variables.
- `--primary` - Application primary color. Used for title, text, accents, and other features
- `--background` - Application background color
- `--background-darker` - Secondary background color (usually darker), used for navigation bar, section fill, footer etc
- `--curve-factor` - The border radius used globally throughout the application. Specified in `px`, defaults to `5px`
- `--dimming-factor` - Inactive elements have slight transparency. This can be between `0` (invisible) and `1` (normal), defaults to `0.7`
#### Targeted Color Variables
You can target specific elements on the UI with these variables. All are optional, since by default, they inherit their values from above
- `--heading-text-color` - Text color for web page heading and sub-heading. Defaults to `--primary`
- `--nav-link-text-color` - The text color for links displayed in the navigation bar. Defaults to `--primary`
- `--nav-link-background-color` - The background color for links displayed in the navigation bar
- `--nav-link-text-color-hover` - The text color when a navigation bar link is hovered over. Defaults to `--primary`
- `--nav-link-background-color-hover` - The background color for nav bar links when hovered over
- `--nav-link-border-color` - The border color for nav bar links. Defaults to `transparent`
- `--nav-link-border-color-hover` - The border color for nav bar links when hovered over. Defaults to `--primary`
- `--search-container-background` - Background for the container containing the search bar. Defaults to `--background-darker`
- `--search-field-background` - Fill color for the search bar. Defaults to `--background`
- `--settings-background` - The background for the quick settings. Defaults to `--background`
- `--settings-text-color` - The text and icon color for quick settings. Defaults to `--primary`
- `--footer-text-color` - Color for text within the footer. Defaults to `--medium-grey`
- `--footer-text-color-link` - Color for any hyperlinks within the footer. Defaults to `--primary`
- `--item-text-color` - The text and icon color for items. Defaults to `--primary`
- `--item-group-outer-background` - The background color for the outer part of a section (including section head). Defaults to `--primary`
- `--item-group-background` - The background color for the inner part of item groups. Defaults to `#0b1021cc` (semi-transparent black)
- `--item-group-heading-text-color` - The text color for section headings. Defaults to `--item-group-background`;
- `--item-group-heading-text-color-hover` - The text color for section headings, when hovered. Defaults to `--background`
- `--config-code-background` - Background color for the JSON editor in the config menu. Defaults to `#fff` (white)
- `--config-code-color` - Text color for the non-highlighted code within the JSON editor. Defaults to `--background`
- `--config-settings-color` - The background for the config/ settings pop-up modal. Defaults to `--primary`
- `--config-settings-background` - The text color for text within the settings container. Defaults to `--background-darker`
- `--scroll-bar-color` - Color of the scroll bar thumb. Defaults to `--primary`
- `--scroll-bar-background` Color of the scroll bar blank space. Defaults to `--background-darker`
- `--toast-background` - Background color for the toast info popup. Defaults to `--primary`
- `--toast-color` - Text, icon and border color in the toast info popup. Defaults to `--background`
- `--welcome-popup-background` - Background for the info pop-up shown on first load. Defaults to `--background-darker`
- `--welcome-popup-text-color` - Text color for the welcome pop-up. Defaults to `--primary`
#### Non-Color Variables
- `--outline-color` - Used to outline focused or selected elements
- `--curve-factor-navbar` - The border radius of the navbar. Usually this is greater than `--curve-factor`
- `--scroll-bar-width` - Width of horizontal and vertical scroll bars. E.g. `8px`
- `--item-group-padding` - Inner padding of sections, determines the width of outline. E.g. `5px`
- `--item-shadow` - Shadow for items. E.g. `1px 1px 2px #130f23`
- `--item-hover-shadow` - Shadow for items when hovered over. E.g. `1px 2px 4px #373737`
- `--item-icon-transform` - A [transform](https://developer.mozilla.org/en-US/docs/Web/CSS/transform) property, to modify item icons. E.g. `drop-shadow(2px 4px 6px var(--transparent-50)) saturate(0.65)`
- `--item-icon-transform-hover` - Same as above, but applied when an item is hovered over. E.g. `drop-shadow(4px 8px 3px var(--transparent-50)) saturate(2)`
- `--item-group-shadow` - The shadow for an item group/ section. Defaults to `--item-shadow`
- `--settings-container-shadow` - A shadow property for the settings container. E.g. `none`
#### Action Colors
These colors represent intent, and so are not often changed, but you can do so if you wish
- `--info` - Information color, usually blue / `#04e4f4`
- `--success` - Success color, usually green / `#20e253`
- `--warning` - Warning color, usually yellow / `#f6f000`
- `--danger` - Error/ danger color, usually red / `#f80363`
- `--neutral` - Neutral color, usually grey / `#272f4d`
- `--white` - Just white / `#fff`
- `--black` - Just black / `#000`

View File

@ -29,7 +29,7 @@
import VJsoneditor from 'v-jsoneditor';
import { localStorageKeys } from '@/utils/defaults';
import configSchema from '@/utils/ConfigSchema';
import configSchema from '@/utils/ConfigSchema.json';
import Ajv from 'ajv7';
export default {

View File

@ -1,158 +0,0 @@
---
pageInfo:
title: Hello World
description: 'This is a demo'
sections:
- name: Firewall
items:
- title: OPNsense
description: Firewall Central Management
icon: networking/opnsense.png
target: iframe
url: https://192.168.1.1
- title: NetData
description: System resource usage on firewall
icon: networking/netdata.png
url: http://192.168.1.1:19999/
- title: MalTrail
description: Malicious traffic detection system
icon: networking/maltrail.png
url: http://192.168.1.1:8338
- title: Ntopng
description: Network traffic probe and network use monitor
icon: networking/ntop.png
url: http://192.168.1.1:3001
- title: Sensei
description: Additional data features
icon: networking/sensei.png
url: https://192.168.1.1/ui/sensei/
- title: Monit
description: Status of firewall system alerts
icon: networking/monit.png
url: https://192.168.1.1/ui/monit/status
- title: Firewall Logs
description: Real-time view of firewall data and logs
icon: networking/logs.png
url: https://192.168.1.1/ui/diagnostics/firewall/log
- title: WireGuard
description: Manage WireGuard client and server on firewall
icon: networking/wireguard.png
url: https://192.168.1.1/ui/wireguard/general
- name: DNS Device
displayData:
collapsed: false
rows: 2
items:
- title: Pi-Hole
description: DNS settings for ad & tracker blocking
icon: networking/pihole.png
url: http://192.168.130.2/admin
- title: PiAlert
description: Presence monitoring and ARP scanning
icon: networking/pialert.png
url: http://192.168.130.2/pialert/
- title: SmokePing
description: Network latency monitoring
icon: networking/smokeping.png
url: http://192.168.130.2:8086/
- title: StatPing
description: Up-time monitoring for local service
icon: networking/statping.png
url: http://192.168.130.2:8083/
- title: LibreSpeed
description: Local network speed and latency test
icon: networking/librespeed.png
url: http://192.168.130.2:49154/
- title: NetData
description: Real-time system resource usage
icon: networking/netdata.png
url: http://192.168.130.2:19999
- title: Portainer
description: Docker container management
icon: networking/portainer.png
url: http://192.168.130.2:9000/
- title: cAdvisor
description: Container monitoring
icon: networking/cadvisor.png
url: http://192.168.130.2:8084/
- title: Glances
description: Simple resource usage
icon: networking/glances.png
url: http://192.168.130.2:61208
- title: Dozzle
description: Docker container web log viewer
icon: networking/dozzle.png
url: http://192.168.130.2:8093
- title: Prometheus
description: System Statistics Aggregation with PromQL
icon: networking/prometheus.png
url: http://192.168.130.2:8090/
- title: Grafana
description: Data visualised on dashboards
icon: networking/grafana.png
url: http://192.168.130.2:8091/
- name: External Services
items:
- title: DuckDNS
description: Dynamic DNS for fixed public IP
icon: networking/duckdns.png
url: https://www.duckdns.org/
- title: BorgBase
description: Off-site system Borg backups
icon: networking/borgbase.png
url: https://www.borgbase.com/repositories
- title: Mullvad
description: Hosted VPN provider
icon: networking/mullvad.png
url: https://mullvad.net/en/account/
- title: ZeroTier
description: Secure networks between devices
icon: networking/zeroteir.png
url: https://my.zerotier.com/
- title: HealthChecks
description: Cron Job Monitoring
icon: networking/healthchecks.png
url: https://healthchecks.io/checks/
- title: ISP - Vodafone
description: Broadband internet provider
icon: networking/vodafone.png
url: https://myaccount.vodafone.co.uk/
- name: Other Devices
items:
- title: Modem
description: ISP Router Modem Combo
icon: ''
url: http://192.168.1.5
- title: Wireless Access Point
description: View clients connected to WiFi
icon: ''
url: http://192.168.1.109/info.php
- title: Fing
description: Monitor connectivity issues, ISP quality, health checks and troubleshooting
provider: Fing
icon: ''
url: https://app.fing.com/
- title: Switch
description: Manage VLANs on Ubiquity Ethernet switch
icon: ''
url: "#"
- name: External Utilities
displayData:
collapsed: true
items:
- title: Public IP
description: Check public IP and associated data
icon: ''
url: https://www.whatismyip.com/
- title: Who Is Lookup
description: Check ICAN info for a given IP address or domain
icon: ''
url: https://whois.domaintools.com/
- title: Speed Test
description: Upload + download speeds and latency
icon: ''
url: https://speed.cloudflare.com/
- title: Mullvad Check
description: Confirms a secure connection to Mullvad's WireGuard servers
icon: ''
url: https://mullvad.net/check

View File

@ -12,7 +12,6 @@
--warning: #f6f000;
--danger: #f80363;
--neutral: #272f4d;
--white: #fff;
--black: #000;

View File

@ -1,217 +0,0 @@
/**
* This is the schema for the main app configuration (usually ./public/conf.yml)
* It enables the users data to be validated when making changes,
* and detailed warnings shown, to avoid any unexpected errors or issues
*/
module.exports = {
type: 'object',
required: ['sections'],
additionalProperties: false,
properties: {
/* Page Info */
pageInfo: {
type: 'object',
properties: {
title: {
type: 'string',
description: 'Title and heading for the app',
},
description: {
type: 'string',
description: 'Sub-title, displayed in header',
},
navLinks: {
type: 'array',
maxItems: 6,
description: 'Quick access links, displayed in header',
items: {
type: 'object',
additionalProperties: false,
required: ['title', 'path'],
properties: {
title: {
type: 'string',
},
path: {
type: 'string',
},
},
},
},
footerText: { type: 'string' },
},
required: ['title'],
additionalProperties: false,
},
/* App Config */
appConfig: {
type: 'object',
description: 'Application configuration',
properties: {
backgroundImg: {
type: 'string',
description: 'A URL to an image asset to be displayed as background',
},
theme: {
type: 'string',
default: 'Callisto',
description: 'A theme to be applied by default on first load',
},
enableFontAwesome: {
type: 'boolean',
default: true,
description: 'Should load font-awesome assets',
},
fontAwesomeKey: {
type: 'string',
pattern: '^[a-z0-9]{10}$',
description: 'API key for font-awesome',
},
cssThemes: {
type: 'array',
description: 'Theme names to be added to the dropdown',
items: {
type: 'string',
},
},
externalStyleSheet: {
description: 'URL or URLs of external stylesheets to add to dropdown/ load',
type: [
'string', 'array',
],
items: {
type: 'string',
},
},
customCss: {
type: 'string',
description: 'Any custom CSS overides, must be minified',
},
},
additionalProperties: false,
},
/* Sections */
sections: {
type: 'array',
description: 'Array of sections, containing items',
items: {
type: 'object',
required: ['name', 'items'],
additionalProperties: false,
properties: {
name: {
type: 'string',
description: 'Title/ heading for a section',
},
icon: {
type: 'string',
description: 'Icon will be displayed next to title',
},
/* Section Display Data */
displayData: {
type: 'object',
additionalProperties: false,
description: 'Optional meta data for customizing a section',
properties: {
collapsed: {
type: 'boolean',
default: false,
description: 'If true, section needs to be clicked to open',
},
color: {
type: 'string',
description: 'Hex code, or HTML color for section fill',
},
customStyles: {
type: 'string',
description: 'CSS overides for section container',
},
itemSize: {
enum: ['small', 'medium', 'large'],
default: 'medium',
description: 'Size of items within the section',
},
rows: {
type: 'number',
minimum: 1,
maximum: 5,
default: 1,
description: 'The amount of space that the section spans vertically',
},
cols: {
type: 'number',
minimum: 1,
maximum: 5,
default: 1,
description: 'The amount of space that the section spans horizontally',
},
layout: {
enum: ['grid', 'auto'],
default: 'auto',
description: 'If set to grid, items have uniform width, and itemCount can be set',
},
itemCountX: {
type: 'number',
minimum: 1,
maximum: 12,
description: 'Number of items per column',
},
itemCountY: {
type: 'number',
minimum: 1,
maximum: 12,
description: 'Number of items per row',
},
},
},
/* Items within a section */
items: {
type: 'array',
description: 'Array of items to display with a section',
items: {
type: 'object',
additionalProperties: false,
required: ['title'],
properties: {
title: {
type: 'string',
description: 'Text shown on the item',
},
description: {
type: 'string',
nullable: true,
description: 'Short description, shown on hover or in a tooltip',
},
icon: {
type: 'string',
nullable: true,
description: 'An icon, either as a font-awesome identifier, local or remote URL, or auto-fetched favicon',
},
url: {
type: 'string',
description: 'The destination to navigate to when item is clicked',
},
target: {
enum: ['newtab', 'sametab', 'iframe'],
default: 'newtab',
description: 'Opening method, when item is clicked',
},
color: {
type: 'string',
description: 'A custom fill color of the item',
},
provider: {
type: 'string',
description: 'Provider name, e.g. Microsoft',
},
},
},
},
},
},
},
},
};

230
src/utils/ConfigSchema.json Normal file
View File

@ -0,0 +1,230 @@
{
"type": "object",
"required": [
"sections"
],
"additionalProperties": false,
"properties": {
"pageInfo": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Title and heading for the app"
},
"description": {
"type": "string",
"description": "Sub-title, displayed in header"
},
"navLinks": {
"type": "array",
"maxItems": 6,
"description": "Quick access links, displayed in header",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"path"
],
"properties": {
"title": {
"type": "string"
},
"path": {
"type": "string"
}
}
}
},
"footerText": {
"type": "string"
}
},
"required": [
"title"
],
"additionalProperties": false
},
"appConfig": {
"type": "object",
"description": "Application configuration",
"properties": {
"backgroundImg": {
"type": "string",
"description": "A URL to an image asset to be displayed as background"
},
"theme": {
"type": "string",
"default": "Callisto",
"description": "A theme to be applied by default on first load"
},
"enableFontAwesome": {
"type": "boolean",
"default": true,
"description": "Should load font-awesome assets"
},
"fontAwesomeKey": {
"type": "string",
"pattern": "^[a-z0-9]{10}$",
"description": "API key for font-awesome"
},
"cssThemes": {
"type": "array",
"description": "Theme names to be added to the dropdown",
"items": {
"type": "string"
}
},
"externalStyleSheet": {
"description": "URL or URLs of external stylesheets to add to dropdown/ load",
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
},
"customCss": {
"type": "string",
"description": "Any custom CSS overides, must be minified"
}
},
"additionalProperties": false
},
"sections": {
"type": "array",
"description": "Array of sections, containing items",
"items": {
"type": "object",
"required": [
"name",
"items"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Title/ heading for a section"
},
"icon": {
"type": "string",
"description": "Icon will be displayed next to title"
},
"displayData": {
"type": "object",
"additionalProperties": false,
"description": "Optional meta data for customizing a section",
"properties": {
"collapsed": {
"type": "boolean",
"default": false,
"description": "If true, section needs to be clicked to open"
},
"color": {
"type": "string",
"description": "Hex code, or HTML color for section fill"
},
"customStyles": {
"type": "string",
"description": "CSS overides for section container"
},
"itemSize": {
"enum": [
"small",
"medium",
"large"
],
"default": "medium",
"description": "Size of items within the section"
},
"rows": {
"type": "number",
"minimum": 1,
"maximum": 5,
"default": 1,
"description": "The amount of space that the section spans vertically"
},
"cols": {
"type": "number",
"minimum": 1,
"maximum": 5,
"default": 1,
"description": "The amount of space that the section spans horizontally"
},
"layout": {
"enum": [
"grid",
"auto"
],
"default": "auto",
"description": "If set to grid, items have uniform width, and itemCount can be set"
},
"itemCountX": {
"type": "number",
"minimum": 1,
"maximum": 12,
"description": "Number of items per column"
},
"itemCountY": {
"type": "number",
"minimum": 1,
"maximum": 12,
"description": "Number of items per row"
}
}
},
"items": {
"type": "array",
"description": "Array of items to display with a section",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"description": "Text shown on the item"
},
"description": {
"type": "string",
"nullable": true,
"description": "Short description, shown on hover or in a tooltip"
},
"icon": {
"type": "string",
"nullable": true,
"description": "An icon, either as a font-awesome identifier, local or remote URL, or auto-fetched favicon"
},
"url": {
"type": "string",
"description": "The destination to navigate to when item is clicked"
},
"target": {
"enum": [
"newtab",
"sametab",
"iframe"
],
"default": "newtab",
"description": "Opening method, when item is clicked"
},
"color": {
"type": "string",
"description": "A custom fill color of the item"
},
"provider": {
"type": "string",
"description": "Provider name, e.g. Microsoft"
}
}
}
}
}
}
}
}
}

View File

@ -2,7 +2,7 @@ const Ajv = require('ajv');
const yaml = require('js-yaml');
const fs = require('fs');
const schema = require('./ConfigSchema');
const schema = require('./ConfigSchema.json');
const validatorOptions = {
strict: true,