diff --git a/config_readme.md b/config_readme.md
index e69de29..d5deaa8 100644
--- a/config_readme.md
+++ b/config_readme.md
@@ -0,0 +1,121 @@
+#### Config.ini Readme
+
+##### Settings
+```ini
+[Settings]
+theme = dark
+accent = orange
+background = static/images/backgrounds/background.png
+```
+
+| Variable | Required | Description | Options |
+|------------------------|----------|----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [Settings] | Yes | Config section name. | [Settings] |
+| theme | Yes | UI theme. | light, dark |
+| accent | Yes | UI accent color | orange, red, pink, purple, deepPurple, indigo, blue, lightBlue,cyan, teal, green, lightGreen, lime, yellow, amber, deepOrange, brown, grey, blueGrey |
+| background | Yes | Background image for the UI | /static/images/backgrounds/yourpicture.png, external link to image, None, random |
+| roles | No | User roles for access groups. | comma separated string, if not defined, this is set to 'admin,user,public_user'. Note: admin, user, public_user roles are required and will be added automatically if omitted. |
+| home_access_groups | No | Define which access groups can access the /home page | Groups defined in your config. If not defined, default is admin_only |
+| settings_access_groups | No | Define which access groups can access the /settings page | Groups defined in your config. If not defined, default is admin_only |
+
+##### Apps
+```ini
+[App Name]
+prefix = https://
+url = your-website.com
+icon = static/images/apps/default.png
+sidebar_icon = static/images/apps/default.png
+description = Example description
+open_in = iframe
+data_sources = None
+```
+
+| Variable | Required | Description | Options |
+|--------------|----------|-------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
+| [App Name] | Yes | The name of your app. | [App Name] |
+| prefix | Yes | The prefix for the app's url. | web prefix, e.g. http:// or https:// |
+| url | Yes | The url for your app. | web url, e.g. myapp.com |
+| open_in | Yes | open the app in the current tab, an iframe or a new tab | iframe, new_tab, this_tab |
+| icon | No | Icon for the dashboard. | /static/images/icons/yourpicture.png, external link to image |
+| sidebar_icon | No | Icon for the sidenav. | /static/images/icons/yourpicture.png, external link to image |
+| description | No | A short description for the app. | string |
+| data_sources | No | Data sources to be included on the app's card.*Note: you must have a data source set up in the config above this application entry. | comma separated string |
+
+##### Access Groups
+```ini
+[public]
+roles = admin, user, public_user
+```
+
+| Variable | Required | Description | Options |
+|--------------|----------|--------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
+| [Group Name] | Yes | Name for access group. | [Group Name] |
+| roles | Yes | A comma separated list of user roles allowed to view apps in this access group | Roles defined in your config. If not defined, defaults are admin and public_user |
+
+#### Data Source Platforms
+DashMachine includes several different 'platforms' for displaying data on your dash applications.
+Platforms are essentially plugins. All data source config entries require the `plaform` variable,
+which tells DashMachine which platform file in the platform folder to load. **Note:** you are able to
+load your own plaform files by placing them in the platform folder and referencing them in the config.
+However currently they will be deleted if you update the application, if you would like to make them
+permanent, submit a pull request for it to be added by default!
+
+> To add a data source to your app, add a data source config entry from one of the samples below
+**above** the application entry in config.ini, then add the following to your app config entry:
+`data_source = variable_name`
+
+##### ping
+```ini
+[variable_name]
+platform = ping
+resource = 192.168.1.1
+```
+> **Returns:** a right-aligned colored bullet point on the app card.
+
+| Variable | Required | Description | Options |
+|-----------------|----------|-----------------------------------------------------------------|-------------------|
+| [variable_name] | Yes | Name for the data source. | [variable_name] |
+| plaform | Yes | Name of the platform. | rest |
+| resource | Yes | Url of whatever you want to ping | url |
+
+##### rest
+```ini
+[variable_name]
+platform = rest
+resource = https://your-website.com/api
+value_template = {{value}}
+method = post
+authentication = basic
+username = my_username
+password = my_password
+payload = {"var1": "hi", "var2": 1}
+```
+> **Returns:** `value_template` as rendered string
+
+| Variable | Required | Description | Options |
+|-----------------|----------|-----------------------------------------------------------------|-------------------|
+| [variable_name] | Yes | Name for the data source. | [variable_name] |
+| plaform | Yes | Name of the platform. | rest |
+| resource | Yes | Url of rest api resource. | url |
+| value_template | Yes | Jinja template for how the returned data from api is displayed. | jinja template |
+| method | No | Method for the api call, default is GET | GET,POST |
+| authentication | No | Authentication for the api call, default is None | None,basic,digest |
+| username | No | Username to use for auth. | string |
+| password | No | Password to use for auth. | string |
+| payload | No | Payload for post request. | json |
+
+> **Working example:**
+>```ini
+>[test]
+>platform = rest
+>resource = https://pokeapi.co/api/v2/pokemon
+>value_template = Pokemon: {{value['count']}}
+>
+>[Pokemon]
+>prefix = https://
+>url = pokemon.com
+>icon = static/images/apps/default.png
+>description = Data sources example
+>open_in = this_tab
+>data_sources = test
+>```
\ No newline at end of file
diff --git a/dashmachine/settings_system/routes.py b/dashmachine/settings_system/routes.py
index 1acc0c4..91ee999 100644
--- a/dashmachine/settings_system/routes.py
+++ b/dashmachine/settings_system/routes.py
@@ -1,5 +1,6 @@
import os
from shutil import move
+from markdown2 import markdown_path
from flask_login import current_user
from flask import render_template, request, Blueprint, jsonify, redirect, url_for
from dashmachine.user_system.forms import UserForm
@@ -15,6 +16,7 @@ from dashmachine.paths import (
backgrounds_images_folder,
icons_images_folder,
user_data_folder,
+ root_folder,
)
from dashmachine.version import version
@@ -39,6 +41,10 @@ def settings():
template_apps.append(f"{t_app.name}&&{t_app.icon}")
users = User.query.all()
+ config_readme = markdown_path(
+ os.path.join(root_folder, "config_readme.md"),
+ extras=["tables", "fenced-code-blocks", "break-on-newline", "header-ids"],
+ )
return render_template(
"settings_system/settings.html",
config_form=config_form,
@@ -47,6 +53,7 @@ def settings():
template_apps=",".join(template_apps),
version=version,
users=users,
+ config_readme=config_readme,
)
diff --git a/dashmachine/static/css/settings_system/settings.css b/dashmachine/static/css/settings_system/settings.css
index 293b145..5d71fc3 100644
--- a/dashmachine/static/css/settings_system/settings.css
+++ b/dashmachine/static/css/settings_system/settings.css
@@ -15,4 +15,40 @@
border-top-left-radius: 0px;
border-top-right-radius: 0px;
background: var(--theme-surface-1);
+}
+
+#config-readme h5 {
+ color: var(--theme-primary);
+ margin-top: 5%;
+}
+#config-readme h4 {
+ color: var(--theme-color-font-muted);
+ margin-top: 5%;
+}
+#configini-readme {
+ margin-top: 2% !important;
+}
+#config-readme code {
+ -webkit-touch-callout: all;
+ -webkit-user-select: all;
+ -khtml-user-select: all;
+ -moz-user-select: all;
+ -ms-user-select: all;
+ user-select: all;
+ cursor: text;
+}
+#config-readme th {
+ color: var(--theme-primary);
+}
+#config-readme td {
+ -webkit-touch-callout: text !important;
+ -webkit-user-select: text !important;
+ -khtml-user-select: text !important;
+ -moz-user-select: text !important;
+ -ms-user-select: text !important;
+ user-select: text !important;
+ cursor: text;
+}
+#config-readme strong {
+ font-weight: 900;
}
\ No newline at end of file
diff --git a/dashmachine/static/js/settings_system/settings.js b/dashmachine/static/js/settings_system/settings.js
index dcfc156..8157684 100644
--- a/dashmachine/static/js/settings_system/settings.js
+++ b/dashmachine/static/js/settings_system/settings.js
@@ -3,7 +3,6 @@ d.className += " active theme-primary";
$( document ).ready(function() {
initTCdrop('#images-tcdrop');
- $("#config-wiki-modal").modal();
$("#user-modal").modal({
onCloseEnd: function () {
$("#edit-user-form").trigger('reset');
diff --git a/dashmachine/templates/settings_system/config-readme.html b/dashmachine/templates/settings_system/config-readme.html
deleted file mode 100644
index 04f431d..0000000
--- a/dashmachine/templates/settings_system/config-readme.html
+++ /dev/null
@@ -1,279 +0,0 @@
-{% macro ConfigReadme() %}
-
-
Config.ini Readme
- close
-
-
-
-
Settings
-
- [Settings]
- theme = dark
- accent = orange
- background = static/images/backgrounds/background.png
-
-
-
-
-
- Variable |
- Required |
- Description |
- Options |
-
-
-
-
- [Settings] |
- Yes |
- Config section name. |
- string |
-
-
- theme |
- Yes |
- UI theme |
- light, dark |
-
-
- accent |
- Yes |
- UI accent color |
-
- orange, red, pink, purple, deepPurple, indigo, blue, lightBlue,
- cyan, teal, green, lightGreen, lime, yellow, amber, deepOrange, brown, grey, blueGrey
- |
-
-
- background |
- Yes |
- Background image for the UI |
- /static/images/backgrounds/yourpicture.png, external link to image, None, random |
-
-
- roles |
- No |
- User roles for access groups. |
- string, if not defined, this is set to 'admin,user,public_user'. Note: admin, user, public_user roles are required and will be added automatically if omitted. |
-
-
- home_access_groups |
- No |
- Define which access groups can access the /home page |
- Roles defined in your config. If not defined, default is admin_only |
-
-
- settings_access_groups |
- No |
- Define which access groups can access the /settings page |
- Roles defined in your config. If not defined, default is admin_only |
-
-
-
-
-
Apps
-
- [App Name]
- prefix = https://
- url = your-website.com
- icon = static/images/apps/default.png
- sidebar_icon = static/images/apps/default.png
- description = Example description
- open_in = iframe
- data_template = None
-
-
-
-
-
- Variable |
- Required |
- Description |
- Options |
-
-
-
-
- [App Name] |
- Yes |
- The name of your app. |
- string |
-
-
- prefix |
- Yes |
- The prefix for the app's url. |
- web prefix, e.g. http:// or https:// |
-
-
- url |
- Yes |
- The url for your app. |
- web url, e.g. myapp.com |
-
-
- icon |
- No |
- Icon for the dashboard. |
- /static/images/icons/yourpicture.png, external link to image |
-
-
- sidebar_icon |
- No |
- Icon for the sidenav. |
- /static/images/icons/yourpicture.png, external link to image |
-
-
- description |
- No |
- A short description for the app. |
- string |
-
-
- open_in |
- Yes |
- open the app in the current tab, an iframe or a new tab |
- iframe, new_tab, this_tab |
-
-
- data_template |
- No |
- Template for displaying variable(s) from rest data *Note: you must have a rest data variable set up in the config |
- example: Data: {{ '{{ your_variable }}' }} |
-
-
-
-
-
Access Groups
-
-
- [public]
- roles = admin, user, public_user
-
-
-
-
-
- Variable |
- Required |
- Description |
- Options |
-
-
-
-
- [Group Name] |
- Yes |
- Name for access group |
- string |
-
-
- roles |
- Yes |
- A comma separated list of user roles allowed to view apps in this access group |
- Roles defined in your config. If not defined, defaults are admin and public_user |
-
-
-
-
-
Note:
-
- if no access groups are defined in the config, the application will create a default group called 'admin_only' with 'roles = admin'
-
-
-
Api Data
-
- [variable_name]
- platform = rest
- resource = your-website.com
- value_template = variable_name
-
-
-
-
-
- Variable |
- Required |
- Description |
- Options |
-
-
-
-
- [variable_name] |
- Yes |
- The variable to be made available to apps. |
- variable (python syntax) |
-
-
- platform |
- Yes |
- Platform for data source |
- rest |
-
-
- resource |
- Yes |
- The url for the api call. |
- myapp.com/api/hello |
-
-
- value_template |
- No |
- Tranform the data returned by the api call (python syntax) |
- variable_name[0]['info'] |
-
-
- method |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
-
-
-
- payload |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
-
-
-
- authentication |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
-
-
-
- username |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
-
-
-
- password |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
- NOT IMPLEMENTED |
-
-
-
-
-
Api Data Example
-
Say we wanted to display how many Pokemon there are using the PokeAPI, we would add the following to the config:
-
- [num_pokemon]
- platform = rest
- resource = https://pokeapi.co/api/v2/pokemon
- value_template = num_pokemon['count']
-
-
-
Then in the config entry for the app you want to add this to, you would add:
-
-
- data_template = Pokemon: {{ '{{ num_pokemon }}' }}
-
-
-
-{% endmacro %}
\ No newline at end of file
diff --git a/dashmachine/templates/settings_system/settings.html b/dashmachine/templates/settings_system/settings.html
index b213979..29b253a 100644
--- a/dashmachine/templates/settings_system/settings.html
+++ b/dashmachine/templates/settings_system/settings.html
@@ -1,7 +1,6 @@
{% extends "main/layout.html" %}
{% from 'global_macros.html' import input, button, select %}
{% from 'main/tcdrop.html' import tcdrop %}
-{% from 'settings_system/config-readme.html' import ConfigReadme %}
{% from 'settings_system/user.html' import UserTab with context %}
{% block page_vendor_css %}
{% endblock page_vendor_css %}
@@ -21,13 +20,6 @@
{% endblock page_lvl_css %}
{% block content %}
-
-
-
- {{ ConfigReadme() }}
-
-
-
@@ -37,11 +29,7 @@
-
+
Config.ini
{{ button(
icon="save",
id="save-config-btn",
@@ -73,6 +61,10 @@
+
+
+
+
+ {{ config_readme|safe }}