1
82
.idea/workspace.xml
generated
@ -2,13 +2,37 @@
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="2d244493-7af1-4307-a64a-32ac4c2ea0a0" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/apps/bitwarden.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/apps/jackett.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/apps/radarr.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/apps/sonarr.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/Boy4aow.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/Hk1KgQS.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/ZtkPKMg.jpg" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/aodvrziifxcjmgvqhbsg.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/avbtqymfykwfcjylgqql.jpg" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/fns7rzzwluh11.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/glWla8v.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/mKkaVVc.gif" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/wallpaper-hd-of-pixel-art-and-background-powerpoint-inspirations-picture-pics-desktop.jpg" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/xdWDtvx.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/static/images/backgrounds/xsxgvgayvfvekklkvwvf.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/user_data/config.ini" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/dashmachine/user_data/site.db" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/config.ini" beforeDir="false" afterPath="$PROJECT_DIR$/config.ini" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/site.db" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/site.db" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/config.ini" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/__init__.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/main/utils.py" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/main/utils.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/settings_system/routes.py" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/settings_system/routes.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/site.db" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/sources.py" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/sources.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine-theme.css" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine-theme.css" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine.css" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/css/global/dashmachine.css" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/static/css/global/style.css" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/css/global/style.css" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/static/js/global/dashmachine.js" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/static/js/global/dashmachine.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/templates/main/base.html" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/templates/main/base.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/templates/main/home.html" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/templates/main/home.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/templates/main/layout.html" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/templates/main/layout.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dashmachine/templates/settings_system/settings.html" beforeDir="false" afterPath="$PROJECT_DIR$/dashmachine/templates/settings_system/settings.html" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@ -24,7 +48,9 @@
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="ProjectId" id="1Vyp2sIL21mINKX6JBxGZr1SlH8" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
|
||||
<ConfirmationsSetting value="2" id="Add" />
|
||||
</component>
|
||||
<component name="ProjectViewState">
|
||||
<option name="autoscrollFromSource" value="true" />
|
||||
<option name="autoscrollToSource" value="true" />
|
||||
@ -33,6 +59,7 @@
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
|
||||
<property name="NewWatcherDialog.advanced.open" value="true" />
|
||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
@ -93,7 +120,8 @@
|
||||
<updated>1578234985306</updated>
|
||||
<workItem from="1578234992218" duration="34772000" />
|
||||
<workItem from="1578313408670" duration="637000" />
|
||||
<workItem from="1578359378893" duration="3688000" />
|
||||
<workItem from="1578359378893" duration="4330000" />
|
||||
<workItem from="1580169186784" duration="11024000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="1">
|
||||
<created>1578313443241</created>
|
||||
@ -102,13 +130,21 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1578313443242</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="2" />
|
||||
<task id="LOCAL-00002" summary="1">
|
||||
<created>1578364236996</created>
|
||||
<option name="number" value="00002" />
|
||||
<option name="presentableId" value="LOCAL-00002" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1578364236996</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="3" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="1" />
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
||||
<MESSAGE value="1" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="1" />
|
||||
</component>
|
||||
@ -121,10 +157,10 @@
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state x="418" y="212" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.28.1920.1052@0.28.1920.1052" timestamp="1578235072139" />
|
||||
<state x="515" y="145" width="879" height="818" key="CommitChangelistDialog2" timestamp="1578313442792">
|
||||
<state x="515" y="145" width="879" height="818" key="CommitChangelistDialog2" timestamp="1578364236672">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state x="515" y="145" width="879" height="818" key="CommitChangelistDialog2/0.28.1920.1052@0.28.1920.1052" timestamp="1578313442792" />
|
||||
<state x="515" y="145" width="879" height="818" key="CommitChangelistDialog2/0.28.1920.1052@0.28.1920.1052" timestamp="1578364236672" />
|
||||
<state x="554" y="321" width="810" height="703" key="EditFileWatcherDialog" timestamp="1578246021501">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
@ -133,40 +169,40 @@
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state x="748" y="311" key="FileChooserDialogImpl/0.28.1920.1052@0.28.1920.1052" timestamp="1578235103537" />
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.bottom" timestamp="1578364199120">
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.bottom" timestamp="1580176048036">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.bottom/0.28.1920.1052@0.28.1920.1052" timestamp="1578364199120" />
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.center" timestamp="1578364199120">
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.bottom/0.28.1920.1052@0.28.1920.1052" timestamp="1580176048036" />
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.center" timestamp="1580176048036">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.center/0.28.1920.1052@0.28.1920.1052" timestamp="1578364199120" />
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.left" timestamp="1578364199120">
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.center/0.28.1920.1052@0.28.1920.1052" timestamp="1580176048036" />
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.left" timestamp="1580176048036">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.left/0.28.1920.1052@0.28.1920.1052" timestamp="1578364199120" />
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.right" timestamp="1578364199120">
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.left/0.28.1920.1052@0.28.1920.1052" timestamp="1580176048036" />
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.right" timestamp="1580176048036">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.right/0.28.1920.1052@0.28.1920.1052" timestamp="1578364199120" />
|
||||
<state width="1870" height="117" key="GridCell.Tab.0.right/0.28.1920.1052@0.28.1920.1052" timestamp="1580176048036" />
|
||||
<state x="446" y="188" key="SettingsEditor" timestamp="1578245994652">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state x="446" y="188" key="SettingsEditor/0.28.1920.1052@0.28.1920.1052" timestamp="1578245994652" />
|
||||
<state x="560" y="289" key="Vcs.Push.Dialog.v2" timestamp="1578313444881">
|
||||
<state x="560" y="289" key="Vcs.Push.Dialog.v2" timestamp="1578364242204">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state x="560" y="289" key="Vcs.Push.Dialog.v2/0.28.1920.1052@0.28.1920.1052" timestamp="1578313444881" />
|
||||
<state x="525" y="224" width="869" height="660" key="find.popup" timestamp="1578272445893">
|
||||
<state x="560" y="289" key="Vcs.Push.Dialog.v2/0.28.1920.1052@0.28.1920.1052" timestamp="1578364242204" />
|
||||
<state x="525" y="224" width="869" height="660" key="find.popup" timestamp="1580178406392">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state x="525" y="224" width="869" height="660" key="find.popup/0.28.1920.1052@0.28.1920.1052" timestamp="1578272445893" />
|
||||
<state x="623" y="260" width="672" height="678" key="search.everywhere.popup" timestamp="1578362044385">
|
||||
<state x="525" y="224" width="869" height="660" key="find.popup/0.28.1920.1052@0.28.1920.1052" timestamp="1580178406392" />
|
||||
<state x="623" y="260" width="672" height="678" key="search.everywhere.popup" timestamp="1580213161556">
|
||||
<screen x="0" y="28" width="1920" height="1052" />
|
||||
</state>
|
||||
<state x="623" y="260" width="672" height="678" key="search.everywhere.popup/0.28.1920.1052@0.28.1920.1052" timestamp="1578362044385" />
|
||||
<state x="623" y="260" width="672" height="678" key="search.everywhere.popup/0.28.1920.1052@0.28.1920.1052" timestamp="1580213161556" />
|
||||
</component>
|
||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||
<SUITE FILE_PATH="coverage/DashMachine$DashMachine.coverage" NAME="DashMachine Coverage Results" MODIFIED="1578359407820" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
<SUITE FILE_PATH="coverage/DashMachine$DashMachine.coverage" NAME="DashMachine Coverage Results" MODIFIED="1580169229147" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
</component>
|
||||
</project>
|
@ -18,7 +18,7 @@ avatars = Avatars(app)
|
||||
|
||||
app.config["AVATARS_IDENTICON_BG"] = (255, 255, 255)
|
||||
app.config["SECRET_KEY"] = "66532a62c4048f976e22a39638b6f10e"
|
||||
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///site.db"
|
||||
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///user_data/site.db"
|
||||
app.config["SEND_FILE_MAX_AGE_DEFAULT"] = 0
|
||||
|
||||
# scheduler config
|
||||
|
@ -15,7 +15,7 @@ def row2dict(row):
|
||||
def read_config():
|
||||
config = ConfigParser()
|
||||
try:
|
||||
config.read("config.ini")
|
||||
config.read("dashmachine/user_data/config.ini")
|
||||
except Exception as e:
|
||||
return {"msg": f"Invalid Config: {e}."}
|
||||
|
||||
@ -35,20 +35,40 @@ def read_config():
|
||||
|
||||
for section in config.sections():
|
||||
if section != "Settings":
|
||||
try:
|
||||
app = Apps(
|
||||
name=section,
|
||||
prefix=config[section]["prefix"],
|
||||
url=config[section]["url"],
|
||||
icon=config[section]["icon"],
|
||||
sidebar_icon=config[section]["sidebar_icon"],
|
||||
description=config[section]["description"],
|
||||
open_in=config[section]["open_in"],
|
||||
)
|
||||
db.session.add(app)
|
||||
db.session.commit()
|
||||
except KeyError as e:
|
||||
return {"msg": f"Invalid Config: {section} does not contain {e}."}
|
||||
app = Apps()
|
||||
app.name = section
|
||||
if "prefix" in config[section]:
|
||||
app.prefix = config[section]["prefix"]
|
||||
else:
|
||||
return {"msg": f"Invalid Config: {section} does not contain prefix."}
|
||||
|
||||
if "url" in config[section]:
|
||||
app.url = config[section]["url"]
|
||||
else:
|
||||
return {"msg": f"Invalid Config: {section} does not contain url."}
|
||||
|
||||
if "icon" in config[section]:
|
||||
app.icon = config[section]["icon"]
|
||||
else:
|
||||
app.icon = None
|
||||
|
||||
if "sidebar_icon" in config[section]:
|
||||
app.sidebar_icon = config[section]["sidebar_icon"]
|
||||
else:
|
||||
app.sidebar_icon = app.icon
|
||||
|
||||
if "description" in config[section]:
|
||||
app.description = config[section]["description"]
|
||||
else:
|
||||
app.description = None
|
||||
|
||||
if "open_in" in config[section]:
|
||||
app.open_in = config[section]["open_in"]
|
||||
else:
|
||||
app.open_in = "this_tab"
|
||||
|
||||
db.session.add(app)
|
||||
db.session.commit()
|
||||
return {"msg": "success", "settings": row2dict(settings)}
|
||||
|
||||
|
||||
|
@ -12,7 +12,7 @@ settings_system = Blueprint("settings_system", __name__)
|
||||
@settings_system.route("/settings", methods=["GET"])
|
||||
def settings():
|
||||
config_form = ConfigForm()
|
||||
with open("config.ini", "r") as config_file:
|
||||
with open("dashmachine/user_data/config.ini", "r") as config_file:
|
||||
config_form.config.data = config_file.read()
|
||||
files_html = load_files_html()
|
||||
return render_template(
|
||||
@ -22,7 +22,7 @@ def settings():
|
||||
|
||||
@settings_system.route("/settings/save_config", methods=["POST"])
|
||||
def save_config():
|
||||
with open("config.ini", "w") as config_file:
|
||||
with open("dashmachine/user_data/config.ini", "w") as config_file:
|
||||
config_file.write(request.form.get("config"))
|
||||
msg = read_config()
|
||||
return jsonify(data=msg)
|
||||
|
@ -1,9 +1,10 @@
|
||||
import os
|
||||
import random
|
||||
from jsmin import jsmin
|
||||
from dashmachine import app
|
||||
from dashmachine.main.models import Apps
|
||||
from dashmachine.settings_system.models import Settings
|
||||
from dashmachine.paths import static_folder
|
||||
from dashmachine.paths import static_folder, backgrounds_images_folder
|
||||
from dashmachine.cssmin import cssmin
|
||||
|
||||
"""This file establishes bundles of js and css sources, minifies them using jsmin and
|
||||
@ -73,6 +74,11 @@ def process_css_sources(process_bundle=None, src=None, app_global=False):
|
||||
def context_processor():
|
||||
apps = Apps.query.all()
|
||||
settings = Settings.query.first()
|
||||
if settings.background == "random":
|
||||
settings.background = (
|
||||
f"static/images/backgrounds/"
|
||||
f"{random.choice(os.listdir(backgrounds_images_folder))}"
|
||||
)
|
||||
return dict(
|
||||
test_key="test",
|
||||
process_js_sources=process_js_sources,
|
||||
|
@ -2,6 +2,7 @@
|
||||
:root {
|
||||
--theme-background: #EBEEF0;
|
||||
--theme-surface: #fff;
|
||||
--theme-surface-rgb: 255, 255, 255;
|
||||
--theme-surface-1: #fcfcfc;
|
||||
--theme-surface-2: #e0e0e0;
|
||||
--theme-primary: #FF9966;
|
||||
@ -15,6 +16,7 @@
|
||||
[data-theme="dark"] {
|
||||
--theme-background: #1c1c1c;
|
||||
--theme-surface: #2f2f2f;
|
||||
--theme-surface-rgb: 47, 47, 47;
|
||||
--theme-surface-1: #434343;
|
||||
--theme-surface-2: #575757;
|
||||
--theme-color-font: #fff;
|
||||
@ -76,4 +78,10 @@
|
||||
}
|
||||
.theme-muted2-text {
|
||||
color: var(--theme-color-font-muted2) !important;
|
||||
}
|
||||
.theme-surface-transparent {
|
||||
background: rgba(var(--theme-surface-rgb), 0.8) !important;
|
||||
}
|
||||
.theme-surface-transparent1 {
|
||||
background: rgba(var(--theme-surface-rgb), 0.9) !important;
|
||||
}
|
@ -36,7 +36,7 @@
|
||||
|
||||
/* ELEMENT STLYES */
|
||||
body {
|
||||
overflow: hidden !important;
|
||||
overflow: scroll;
|
||||
overflow-x: hidden !important;
|
||||
min-height: 100%;
|
||||
color: var(--theme-color-font);
|
||||
@ -614,6 +614,7 @@ input:disabled {
|
||||
|
||||
.sidenav {
|
||||
background-color: var(--theme-surface);
|
||||
top: unset;
|
||||
}
|
||||
|
||||
.border-bottom-1 {
|
||||
|
@ -27,9 +27,6 @@ body
|
||||
|
||||
#main
|
||||
{
|
||||
min-height: -webkit-calc(100% - 116px);
|
||||
min-height: -moz-calc(100% - 116px);
|
||||
min-height: calc(100% - 116px);
|
||||
padding-left: 0;
|
||||
|
||||
-webkit-transition: .3s ease all;
|
||||
|
BIN
dashmachine/static/images/apps/bitwarden.png
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
dashmachine/static/images/apps/jackett.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
dashmachine/static/images/apps/radarr.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
dashmachine/static/images/apps/sonarr.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
dashmachine/static/images/backgrounds/Boy4aow.png
Normal file
After Width: | Height: | Size: 251 KiB |
BIN
dashmachine/static/images/backgrounds/Hk1KgQS.png
Normal file
After Width: | Height: | Size: 373 KiB |
BIN
dashmachine/static/images/backgrounds/ZtkPKMg.jpg
Normal file
After Width: | Height: | Size: 566 KiB |
BIN
dashmachine/static/images/backgrounds/aodvrziifxcjmgvqhbsg.png
Normal file
After Width: | Height: | Size: 892 KiB |
BIN
dashmachine/static/images/backgrounds/avbtqymfykwfcjylgqql.jpg
Normal file
After Width: | Height: | Size: 115 KiB |
BIN
dashmachine/static/images/backgrounds/fns7rzzwluh11.png
Normal file
After Width: | Height: | Size: 151 KiB |
BIN
dashmachine/static/images/backgrounds/glWla8v.png
Normal file
After Width: | Height: | Size: 291 KiB |
BIN
dashmachine/static/images/backgrounds/mKkaVVc.gif
Normal file
After Width: | Height: | Size: 638 KiB |
After Width: | Height: | Size: 99 KiB |
BIN
dashmachine/static/images/backgrounds/xdWDtvx.png
Normal file
After Width: | Height: | Size: 332 KiB |
BIN
dashmachine/static/images/backgrounds/xsxgvgayvfvekklkvwvf.png
Normal file
After Width: | Height: | Size: 29 KiB |
@ -336,6 +336,20 @@ function initTinyMCE(el){
|
||||
}
|
||||
}
|
||||
|
||||
function hide_sidenav() {
|
||||
$("#main-sidenav").addClass('hide');
|
||||
$("#main.main-full").css('padding-left', 0);
|
||||
$("#show-sidenav").removeClass('hide');
|
||||
localStorage.setItem('sidenav_hidden', 'true');
|
||||
}
|
||||
|
||||
function show_sidenav(){
|
||||
$("#main-sidenav").removeClass('hide');
|
||||
$("#main.main-full").css('padding-left', 64);
|
||||
$("#show-sidenav").addClass('hide');
|
||||
localStorage.setItem('sidenav_hidden', null);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------
|
||||
// Document ready function
|
||||
//--------------------------------------------------------------------------------------
|
||||
@ -350,16 +364,16 @@ $(document).ready(function () {
|
||||
init_copy_btn();
|
||||
init_select();
|
||||
|
||||
if (localStorage.getItem('sidenav_hidden') === 'true'){
|
||||
hide_sidenav();
|
||||
}
|
||||
|
||||
$("#hide-sidenav").on('click', function(e) {
|
||||
$("#main-sidenav").addClass('hide');
|
||||
$("#main.main-full").css('padding-left', 0);
|
||||
$("#show-sidenav").removeClass('hide');
|
||||
hide_sidenav();
|
||||
});
|
||||
|
||||
$("#show-sidenav .material-icons-outlined").on('click', function(e) {
|
||||
$("#main-sidenav").removeClass('hide');
|
||||
$("#main.main-full").css('padding-left', 64);
|
||||
$("#show-sidenav").addClass('hide');
|
||||
show_sidenav();
|
||||
});
|
||||
|
||||
$( "#show-sidenav" ).draggable({ axis: "y" });
|
||||
|
@ -8,7 +8,8 @@
|
||||
#main {
|
||||
background-image: url("{{ settings.background }}");
|
||||
background-size: cover;
|
||||
height: 100vh;
|
||||
background-attachment: fixed;
|
||||
min-height: 100vh;
|
||||
}
|
||||
</style>
|
||||
{% endif %}
|
||||
@ -21,7 +22,7 @@
|
||||
<div class="col s12 l4 input-field">
|
||||
<span>
|
||||
<i class="material-icons prefix card-search-icon">search</i>
|
||||
<input type="text" id="apps-filter" class="card-filter theme-surface" placeholder="Search apps">
|
||||
<input type="text" id="apps-filter" class="card-filter theme-surface-transparent" placeholder="Search apps">
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -29,11 +30,13 @@
|
||||
{% for app in apps %}
|
||||
{% if app.open_in == 'iframe' %}
|
||||
<a href="{{ url_for('main.app_view', url=app.url) }}" class="app-a" data-name="{{ app.name }}" data-description="{{ app.description }}">
|
||||
{% elif app.open_in == 'this_tab' %}
|
||||
<a href="{{ app.prefix }}{{ app.url }}" class="app-a" data-name="{{ app.name }}" data-description="{{ app.description }}">
|
||||
{% elif app.open_in == "new_tab" %}
|
||||
<a href="{{ app.prefix }}{{ app.url }}" target="_blank" class="app-a" data-name="{{ app.name }}" data-description="{{ app.description }}">
|
||||
{% endif %}
|
||||
<div class="col s12 m6 l3">
|
||||
<div class="card">
|
||||
<div class="card theme-surface-transparent">
|
||||
<div class="card-content center-align">
|
||||
<img src="{{ app.icon }}" height="64px">
|
||||
</div>
|
||||
|
@ -12,27 +12,13 @@
|
||||
</div>
|
||||
<!-- BEGIN: SideNav-->
|
||||
<aside id="main-sidenav" class="sidenav-main nav-collapsed nav-collapsible sidenav-light sidenav-active-rounded z-depth-2">
|
||||
<div class="brand-sidebar noselect" style="overflow: hidden;">
|
||||
<h1 class="logo-wrapper hide-on-med-and-down"><a class="brand-logo darken-1" href="{{ url_for('main.home') }}"><img id="TCM-nav-logo" src="static/images/logo/logo.svg" alt="DashMachine logo"/><span class="logo-text theme-secondary-text"> </span></a></h1>
|
||||
</div>
|
||||
<ul class="sidenav sidenav-collapsible leftside-navigation collapsible sidenav-fixed menu-shadow" id="slide-out" data-menu="menu-navigation" data-collapsible="accordion">
|
||||
<ul class="sidenav sidenav-collapsible leftside-navigation collapsible sidenav-fixed menu-shadow pt-2 theme-surface-transparent1" id="slide-out" data-menu="menu-navigation" data-collapsible="accordion">
|
||||
|
||||
<li class="bold"><a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ url_for('main.home') }}">
|
||||
<i class="material-icons-outlined">dashboard</i>
|
||||
<span class="menu-title" data-i18n="">Dashboard</span>
|
||||
</a></li>
|
||||
|
||||
{% for app in apps %}
|
||||
<li class="bold">
|
||||
{% if app.open_in == 'iframe' %}
|
||||
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ url_for('main.app_view', url=app.url) }}">
|
||||
{% elif app.open_in == "new_tab" %}
|
||||
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ app.prefix }}{{ app.url }}" target="_blank">
|
||||
{% endif %}
|
||||
<img src="{{ app.sidebar_icon }}" style="position: relative; top: 5px; left: 2px; margin-right: 18px; height: 24px">
|
||||
<span class="menu-title" data-i18n="">{{ app.name }}</span>
|
||||
</a></li>
|
||||
{% endfor %}
|
||||
|
||||
<li class="bold"><a id="settings-sidenav" class="waves-effect waves-cyan" href="{{ url_for('settings_system.settings') }}">
|
||||
<i class="material-icons-outlined">settings</i>
|
||||
<span class="menu-title" data-i18n="">Settings</span>
|
||||
@ -48,6 +34,20 @@
|
||||
<span class="menu-title" data-i18n="">Hide Sidenav</span>
|
||||
</a></li>
|
||||
|
||||
{% for app in apps %}
|
||||
<li class="bold">
|
||||
{% if app.open_in == 'iframe' %}
|
||||
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ url_for('main.app_view', url=app.url) }}">
|
||||
{% elif app.open_in == "this_tab" %}
|
||||
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ app.prefix }}{{ app.url }}">
|
||||
{% elif app.open_in == "new_tab" %}
|
||||
<a id="dashboard-sidenav" class="waves-effect waves-cyan" href="{{ app.prefix }}{{ app.url }}" target="_blank">
|
||||
{% endif %}
|
||||
<img src="{{ app.sidebar_icon }}" style="position: relative; top: 5px; left: 2px; margin-right: 18px; height: 24px">
|
||||
<span class="menu-title" data-i18n="">{{ app.name }}</span>
|
||||
</a></li>
|
||||
{% endfor %}
|
||||
|
||||
</ul>
|
||||
{# <div class="navigation-background"></div><a class="sidenav-trigger btn-sidenav-toggle btn-floating btn-medium waves-effect waves-light hide-on-large-only theme-primary" href="#" data-target="slide-out"><i class="material-icons-outlined">menu</i></a>#}
|
||||
</aside>
|
||||
|
@ -5,6 +5,11 @@
|
||||
{% endblock page_vendor_css %}
|
||||
|
||||
{% block page_lvl_css %}
|
||||
<style>
|
||||
body {
|
||||
overflow: hidden !important;
|
||||
}
|
||||
</style>
|
||||
{% if settings.background %}
|
||||
<style>
|
||||
#main {
|
||||
@ -28,6 +33,14 @@
|
||||
<h5>Config
|
||||
<i class="material-icons-outlined theme-secondary-text icon-btn ml-2 toggle-config-help" style="position: relative; top: 4px;">info</i>
|
||||
</h5>
|
||||
{{ button(
|
||||
icon="save",
|
||||
id="save-config-btn",
|
||||
float="left",
|
||||
class="ml-0 mt-1 mb-1",
|
||||
data={'url': url_for('settings_system.save_config')},
|
||||
text="save"
|
||||
) }}
|
||||
</div>
|
||||
<div id="config-help-col" class="col s12 hide theme-surface-1 padding-2 border-radius-10">
|
||||
<h5>Settings Example</h5>
|
||||
@ -38,7 +51,7 @@
|
||||
accent = static/images/backgrounds/background.png<br>
|
||||
</code>
|
||||
|
||||
<table class="centered mt-4">
|
||||
<table class="mt-4">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Variable</th>
|
||||
@ -60,7 +73,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>background</td>
|
||||
<td>Background image. can be either a local link (prefixed by /static/images/backgrounds/), or an external link</td>
|
||||
<td>Background image. can be either a local link (prefixed by /static/images/backgrounds/) or an external link. Can also be set to random. If not set defaults to blank.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -76,7 +89,7 @@
|
||||
open_in = iframe<br>
|
||||
</code>
|
||||
|
||||
<table class="centered mt-4">
|
||||
<table class="mt-4">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Variable</th>
|
||||
@ -110,7 +123,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>open_in</td>
|
||||
<td>open the app in an embedded iframe or a new tab, options are iframe, new_tab</td>
|
||||
<td>open the app in the current tab, an iframe or a new tab, options are iframe, new_tab, or this_tab</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -125,13 +138,6 @@
|
||||
id="config-textarea"
|
||||
) }}
|
||||
</form>
|
||||
{{ button(
|
||||
icon="save",
|
||||
id="save-config-btn",
|
||||
float="left",
|
||||
data={'url': url_for('settings_system.save_config')},
|
||||
text="save"
|
||||
) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,13 +1,12 @@
|
||||
[Settings]
|
||||
theme = dark
|
||||
accent=orange
|
||||
background=static/images/backgrounds/background.png
|
||||
background=random
|
||||
|
||||
[Home Assistant]
|
||||
prefix = https://
|
||||
url = hass.wolf-house.net
|
||||
icon =static/images/apps/home-assistant.png
|
||||
sidebar_icon = static/images/apps/home-assistant.png
|
||||
description = Home automation software.
|
||||
open_in = iframe
|
||||
|
||||
@ -15,7 +14,6 @@ open_in = iframe
|
||||
prefix = https://
|
||||
url = cloud.wolf-house.net
|
||||
icon = static/images/apps/nextcloud.png
|
||||
sidebar_icon = static/images/apps/nextcloud.png
|
||||
description = File server and sync software.
|
||||
open_in = new_tab
|
||||
|
||||
@ -23,23 +21,27 @@ open_in = new_tab
|
||||
prefix = https://
|
||||
url = wolflix.wolf-house.net
|
||||
icon = static/images/apps/emby.png
|
||||
sidebar_icon = static/images/apps/emby.png
|
||||
description = Movies and TV.
|
||||
open_in = iframe
|
||||
|
||||
[Bitwarden]
|
||||
prefix = https://
|
||||
url = passwords.wolf-house.net
|
||||
icon = static/images/apps/bitwarden.png
|
||||
description = Password server.
|
||||
open_in = this_tab
|
||||
|
||||
[Gitea]
|
||||
prefix = https://
|
||||
url = git.wolf-house.net
|
||||
icon = static/images/apps/gitea.png
|
||||
sidebar_icon = static/images/apps/gitea.png
|
||||
description = Self hosted git repo.
|
||||
open_in = new_tab
|
||||
open_in = this_tab
|
||||
|
||||
[Black Pearl]
|
||||
prefix = https://
|
||||
url = blackpearl.wolf-house.net
|
||||
icon = static/images/apps/deluge.png
|
||||
sidebar_icon = static/images/apps/deluge.png
|
||||
description = Containerized torrent server with vpn.
|
||||
open_in = iframe
|
||||
|
||||
@ -47,7 +49,6 @@ open_in = iframe
|
||||
prefix = https://
|
||||
url = ssh.wolf-house.net
|
||||
icon = static/images/apps/terminal.png
|
||||
sidebar_icon = static/images/apps/terminal.png
|
||||
description = Terminal access for WolfPrime.
|
||||
open_in = iframe
|
||||
|
||||
@ -55,7 +56,6 @@ open_in = iframe
|
||||
prefix = https://
|
||||
url = port.wolf-house.net
|
||||
icon = static/images/apps/portainer.png
|
||||
sidebar_icon = static/images/apps/portainer.png
|
||||
description = Manage docker containers.
|
||||
open_in = iframe
|
||||
|
||||
@ -63,6 +63,26 @@ open_in = iframe
|
||||
prefix = https://
|
||||
url = proxies.wolf-house.net
|
||||
icon = static/images/apps/nginxproxymanager.png
|
||||
sidebar_icon = static/images/apps/nginxproxymanager.png
|
||||
description = Manage the nginx reverse proxy.
|
||||
open_in = new_tab
|
||||
open_in = new_tab
|
||||
|
||||
[Sonarr]
|
||||
prefix = https://
|
||||
url = sonarr.wolf-house.net
|
||||
icon = static/images/apps/sonarr.png
|
||||
description = TV Shows.
|
||||
open_in = iframe
|
||||
|
||||
[Radarr]
|
||||
prefix = https://
|
||||
url = radarr.wolf-house.net
|
||||
icon = static/images/apps/radarr.png
|
||||
description = Movies.
|
||||
open_in = iframe
|
||||
|
||||
[Jackett]
|
||||
prefix = http://
|
||||
url = 192.168.39.175:9117
|
||||
icon = static/images/apps/jackett.png
|
||||
description = Torrent indexer.
|
||||
open_in = this_tab
|