mirror of
https://github.com/PhoenixTwoFive/karaoqueue.git
synced 2025-07-02 00:01:41 +02:00
Compare commits
21 Commits
feature/le
...
v2023.06
Author | SHA1 | Date | |
---|---|---|---|
5efa21924b
|
|||
4c806c3550
|
|||
c21e6300e9 | |||
7525708dce
|
|||
37d95f61b2 | |||
a54953ff0d
|
|||
349eff9a09
|
|||
b7a79462dc
|
|||
0a038029f7 | |||
93e6606d6d
|
|||
1faa2614fa
|
|||
93c8a2cb7b
|
|||
ddb1e0d2a0 | |||
e66e4a6c19
|
|||
08d0e5557b
|
|||
a987dfc9d2
|
|||
04511a91a1
|
|||
7da0dc19dc | |||
d0d8e41b48
|
|||
f2b4611ea6
|
|||
b76fcfd8e4
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -87,7 +87,7 @@ ipython_config.py
|
|||||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
# install all needed dependencies.
|
# install all needed dependencies.
|
||||||
#Pipfile.lock
|
Pipfile.lock
|
||||||
|
|
||||||
# celery beat schedule file
|
# celery beat schedule file
|
||||||
celerybeat-schedule
|
celerybeat-schedule
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
FROM tiangolo/meinheld-gunicorn-flask:python3.9
|
FROM tiangolo/meinheld-gunicorn-flask:python3.9
|
||||||
|
|
||||||
RUN apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
|
# Currently unusable, mariadb is not available through installer for debian 12
|
||||||
RUN curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
|
# RUN apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
|
||||||
|
# RUN curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
|
||||||
|
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get upgrade -y
|
RUN apt-get upgrade -y
|
||||||
RUN apt-get dist-upgrade
|
RUN apt-get dist-upgrade
|
||||||
|
|
||||||
|
# In the meantime, acquire the mariadb packages through apt
|
||||||
|
RUN apt-get install -y libmariadb3 libmariadb-dev
|
||||||
|
|
||||||
COPY ./backend/requirements.txt /app/requirements.txt
|
COPY ./backend/requirements.txt /app/requirements.txt
|
||||||
|
|
||||||
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt
|
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt
|
||||||
|
48
backend/Pipfile
Normal file
48
backend/Pipfile
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
[[source]]
|
||||||
|
url = "https://pypi.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
name = "pypi"
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
autopep8 = "==2.0.2"
|
||||||
|
beautifulsoup4 = "==4.12.0"
|
||||||
|
bs4 = "==0.0.1"
|
||||||
|
certifi = "==2022.12.7"
|
||||||
|
charset-normalizer = "==3.1.0"
|
||||||
|
click = "==8.1.3"
|
||||||
|
flake8 = "==6.0.0"
|
||||||
|
flask = "==2.2.3"
|
||||||
|
flask-basicauth = "==0.2.0"
|
||||||
|
greenlet = "==2.0.2"
|
||||||
|
gunicorn = "==20.1.0"
|
||||||
|
idna = "==3.4"
|
||||||
|
itsdangerous = "==2.1.2"
|
||||||
|
jinja2 = "==3.1.2"
|
||||||
|
mariadb = "==1.1.6"
|
||||||
|
markupsafe = "==2.1.2"
|
||||||
|
mccabe = "==0.7.0"
|
||||||
|
mysql = "==0.0.3"
|
||||||
|
mysqlclient = "==2.1.1"
|
||||||
|
numpy = "==1.24.2"
|
||||||
|
packaging = "==23.0"
|
||||||
|
pandas = "==1.5.3"
|
||||||
|
pycodestyle = "==2.10.0"
|
||||||
|
pyflakes = "==3.0.1"
|
||||||
|
pymysql = "==1.0.3"
|
||||||
|
python-dateutil = "==2.8.2"
|
||||||
|
pytz = "==2023.3"
|
||||||
|
requests = "==2.28.2"
|
||||||
|
six = "==1.16.0"
|
||||||
|
soupsieve = "==2.4"
|
||||||
|
sqlalchemy = "==2.0.7"
|
||||||
|
toml = "==0.10.2"
|
||||||
|
tomli = "==2.0.1"
|
||||||
|
typing-extensions = "==4.5.0"
|
||||||
|
urllib3 = "==1.26.15"
|
||||||
|
werkzeug = "==2.2.3"
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "3.9"
|
||||||
|
python_full_version = "3.9.17"
|
@ -37,7 +37,7 @@ def enqueue():
|
|||||||
if not helpers.is_valid_uuid(client_id):
|
if not helpers.is_valid_uuid(client_id):
|
||||||
print(request.data)
|
print(request.data)
|
||||||
abort(400)
|
abort(400)
|
||||||
name = request.json['name']
|
name = request.json['name'].strip()
|
||||||
song_id = request.json['id']
|
song_id = request.json['id']
|
||||||
if request.authorization:
|
if request.authorization:
|
||||||
entry_id = database.add_entry(name, song_id, client_id)
|
entry_id = database.add_entry(name, song_id, client_id)
|
||||||
|
@ -91,8 +91,8 @@ def setup_config(app: Flask):
|
|||||||
exit()
|
exit()
|
||||||
default_config = {'username': initial_username,
|
default_config = {'username': initial_username,
|
||||||
'password': initial_password,
|
'password': initial_password,
|
||||||
'entryquota': 3,
|
'entryquota': 2,
|
||||||
'maxqueue': 20,
|
'maxqueue': 10,
|
||||||
'entries_allowed': 1,
|
'entries_allowed': 1,
|
||||||
'theme': 'default.css'}
|
'theme': 'default.css'}
|
||||||
for key, value in default_config.items():
|
for key, value in default_config.items():
|
||||||
|
@ -1,30 +1,36 @@
|
|||||||
autopep8
|
autopep8==2.0.2
|
||||||
beautifulsoup4
|
beautifulsoup4==4.12.0
|
||||||
bs4
|
bs4==0.0.1
|
||||||
certifi
|
certifi==2022.12.7
|
||||||
charset-normalizer
|
charset-normalizer==3.1.0
|
||||||
click
|
click==8.1.3
|
||||||
Flask
|
flake8==6.0.0
|
||||||
Flask-BasicAuth
|
Flask==2.2.3
|
||||||
greenlet
|
Flask-BasicAuth==0.2.0
|
||||||
gunicorn
|
greenlet==2.0.2
|
||||||
idna
|
gunicorn==20.1.0
|
||||||
itsdangerous
|
idna==3.4
|
||||||
Jinja2
|
itsdangerous==2.1.2
|
||||||
mariadb
|
Jinja2==3.1.2
|
||||||
MarkupSafe
|
mariadb==1.1.6
|
||||||
mysql
|
MarkupSafe==2.1.2
|
||||||
mysqlclient
|
mccabe==0.7.0
|
||||||
numpy
|
mysql==0.0.3
|
||||||
pandas
|
mysqlclient==2.1.1
|
||||||
pycodestyle
|
numpy==1.24.2
|
||||||
PyMySQL
|
packaging==23.0
|
||||||
python-dateutil
|
pandas==1.5.3
|
||||||
pytz
|
pycodestyle==2.10.0
|
||||||
requests
|
pyflakes==3.0.1
|
||||||
six
|
PyMySQL==1.0.3
|
||||||
soupsieve
|
python-dateutil==2.8.2
|
||||||
SQLAlchemy
|
pytz==2023.3
|
||||||
toml
|
requests==2.28.2
|
||||||
urllib3
|
six==1.16.0
|
||||||
Werkzeug
|
soupsieve==2.4
|
||||||
|
SQLAlchemy==2.0.7
|
||||||
|
toml==0.10.2
|
||||||
|
tomli==2.0.1
|
||||||
|
typing_extensions==4.5.0
|
||||||
|
urllib3==1.26.15
|
||||||
|
Werkzeug==2.2.3
|
||||||
|
@ -21,6 +21,9 @@
|
|||||||
|
|
||||||
/* Input */
|
/* Input */
|
||||||
--input-background-color: #ffffff;
|
--input-background-color: #ffffff;
|
||||||
|
|
||||||
|
/* Misc */
|
||||||
|
--copy-highlight-color: rgba(251, 255, 0, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -166,6 +169,10 @@ pre {
|
|||||||
color: var(--text-color-var)
|
color: var(--text-color-var)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#entrytable td>span:hover {
|
||||||
|
background-color: var(--copy-highlight-color);
|
||||||
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
:root {
|
:root {
|
||||||
/* Navbar */
|
/* Navbar */
|
||||||
|
@ -15,9 +15,12 @@
|
|||||||
<!-- Bootstrap-Tables -->
|
<!-- Bootstrap-Tables -->
|
||||||
<link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.21.2/dist/bootstrap-table.min.css">
|
<link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.21.2/dist/bootstrap-table.min.css">
|
||||||
|
|
||||||
|
<!-- Bootstrap-Toaster-->
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-toaster/4.1.2/css/bootstrap-toaster.min.css"
|
||||||
|
integrity="sha512-kYPLvO+Bu+xttOhbQvxs9nx7XSdxrb2JexRxQ3CpJQ7EtmlkBsWyOjlinLgiLWeLxuupFYB4cPqLOo0gnBnzeQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
|
||||||
<!-- Bootstrap core CSS -->
|
<!-- Bootstrap core CSS -->
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.2.1/dist/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
|
||||||
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
|
||||||
|
|
||||||
<!-- Custom styles for this template -->
|
<!-- Custom styles for this template -->
|
||||||
<link href="static/css/style.css" rel="stylesheet">
|
<link href="static/css/style.css" rel="stylesheet">
|
||||||
@ -88,16 +91,12 @@
|
|||||||
<!-- Bootstrap core JavaScript
|
<!-- Bootstrap core JavaScript
|
||||||
================================================== -->
|
================================================== -->
|
||||||
<!-- Placed at the end of the document so the pages load faster -->
|
<!-- Placed at the end of the document so the pages load faster -->
|
||||||
<script src="https://code.jquery.com/jquery-3.2.1.min.js"
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"
|
||||||
integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous">
|
integrity="sha512-pumBsjNRGGqkPzKHndZMaAG+bir374sORyzM3uulLV14lN5LyykqNk8eEeUlUkB3U0M4FApyaHraT65ihJhDpQ=="
|
||||||
</script>
|
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
|
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.6/dist/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
|
||||||
integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous">
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.2.1/dist/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
|
||||||
</script>
|
|
||||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
|
|
||||||
integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous">
|
|
||||||
</script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"
|
||||||
integrity="sha256-4F7e4JsAJyLUdpP7Q8Sah866jCOhv72zU5E8lIRER4w=" crossorigin="anonymous">
|
integrity="sha256-4F7e4JsAJyLUdpP7Q8Sah866jCOhv72zU5E8lIRER4w=" crossorigin="anonymous">
|
||||||
</script>
|
</script>
|
||||||
@ -105,6 +104,9 @@
|
|||||||
<script
|
<script
|
||||||
src="https://unpkg.com/bootstrap-table@1.21.2/dist/extensions/auto-refresh/bootstrap-table-auto-refresh.min.js"></script>
|
src="https://unpkg.com/bootstrap-table@1.21.2/dist/extensions/auto-refresh/bootstrap-table-auto-refresh.min.js"></script>
|
||||||
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
|
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
|
||||||
|
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-toaster/4.1.2/js/bootstrap-toaster.min.js"
|
||||||
|
integrity="sha512-Ur6jgeoP3jnn38C7oBzDqMLRb+wxG2PXLKqgx2vgQ1ePFvbJ28f9iQSJplHD0APFHELOeS/df+RPNeENFtLrYw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||||
{% block extrajs %}{% endblock %}
|
{% block extrajs %}{% endblock %}
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
@ -167,7 +169,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getOwnedEntries() {
|
function getOwnedEntries() {
|
||||||
return JSON.parse(localStorage.getItem("ownedEntries"))
|
var entries = JSON.parse(localStorage.getItem("ownedEntries"))
|
||||||
|
if (entries == null) {
|
||||||
|
entries = []
|
||||||
|
}
|
||||||
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
@ -59,7 +59,13 @@ function requestDeletionAsUser(id) {
|
|||||||
contentType: "application/json; charset=utf-8",
|
contentType: "application/json; charset=utf-8",
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
success: function(result) {
|
success: function(result) {
|
||||||
bootbox.alert("Eintrag zurückgezogen!")
|
toast = {
|
||||||
|
title: "Erfolgreich zurückgezogen",
|
||||||
|
message: "Eintrag wurde gelöscht",
|
||||||
|
status: TOAST_STATUS.SUCCESS,
|
||||||
|
timeout: 5000
|
||||||
|
}
|
||||||
|
Toast.create(toast);
|
||||||
location.reload()
|
location.reload()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th data-field="state" data-checkbox="true"></th>
|
<th data-field="state" data-checkbox="true"></th>
|
||||||
<th scope="col" data-field="Name">Name</th>
|
<th scope="col" data-field="Name" data-formatter="CopyFormatter">Name</th>
|
||||||
<th scope="col" data-field="Title">Song</th>
|
<th scope="col" data-field="Title"data-formatter="CopyFormatter">Song</th>
|
||||||
<th scope="col" data-field="Artist">Künstler</th>
|
<th scope="col" data-field="Artist"data-formatter="CopyFormatter">Künstler</th>
|
||||||
<th scope="col" data-formatter="TableActions">Aktionen</th>
|
<th scope="col" data-formatter="TableActions">Aktionen</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -185,21 +185,36 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
function TableActions(value, row, index) {
|
function TableActions(value, row, index) {
|
||||||
console.log("Value: " + value + ", Row: " + row + ", Index: " + index)
|
|
||||||
console.log(row)
|
|
||||||
let outerHTML = ""
|
let outerHTML = ""
|
||||||
if (row.Transferred == 1) {
|
if (row.Transferred == 1) {
|
||||||
outerHTML = "<button type=\"button\" class=\"btn btn-default\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Markierung zurückziehen\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');markEntryAsTransferred(" + row.entry_ID + ")\"><i class=\"fas fa-backward\"></i></button> <button type=\"button\" class=\"btn btn-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Als gesungen markieren\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');markEntryAsSung(" + row.entry_ID + ")\"><i class=\"fas fa-check\"></i></button> <button type=\"button\" class=\"btn btn-danger\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Eintrag löschen\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');confirmDeleteEntry('" + row.Name + "'," + row.entry_ID + ")\"><i class=\"fas fa-trash\"></i></button>";
|
outerHTML = "<button type=\"button\" class=\"btn btn-default\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Markierung zurückziehen\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');markEntryAsTransferred(" + row.entry_ID + ")\"><i class=\"fas fa-backward\"></i></button> <button type=\"button\" class=\"btn btn-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Als gesungen markieren\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');markEntryAsSung(" + row.entry_ID + ")\"><i class=\"fas fa-check\"></i></button> <button type=\"button\" class=\"btn btn-danger\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Eintrag löschen\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');confirmDeleteEntry(this.parentElement.parentElement.children[1].innerText," + row.entry_ID + ")\"><i class=\"fas fa-trash\"></i></button>";
|
||||||
} else {
|
} else {
|
||||||
outerHTML = "<button type=\"button\" class=\"btn btn-info\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Als übertragen markieren\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');markEntryAsTransferred(" + row.entry_ID + ")\"><i class=\"fas fa-exchange-alt\"></i></button> <button type=\"button\" class=\"btn btn-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Als gesungen markieren\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');markEntryAsSung(" + row.entry_ID + ")\"><i class=\"fas fa-check\"></i></button> <button type=\"button\" class=\"btn btn-danger\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Eintrag löschen\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');confirmDeleteEntry('" + row.Name + "'," + row.entry_ID + ")\"><i class=\"fas fa-trash\"></i></button>";
|
outerHTML = "<button type=\"button\" class=\"btn btn-info\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Als übertragen markieren\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');markEntryAsTransferred(" + row.entry_ID + ")\"><i class=\"fas fa-exchange-alt\"></i></button> <button type=\"button\" class=\"btn btn-success\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Als gesungen markieren\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');markEntryAsSung(" + row.entry_ID + ")\"><i class=\"fas fa-check\"></i></button> <button type=\"button\" class=\"btn btn-danger\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Eintrag löschen\" onclick=\"event.stopPropagation();$(this).tooltip('dispose');confirmDeleteEntry(this.parentElement.parentElement.children[1].innerText," + row.entry_ID + ")\"><i class=\"fas fa-trash\"></i></button>";
|
||||||
}
|
}
|
||||||
return outerHTML;
|
return outerHTML;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function CopyFormatter(value, row, index) {
|
||||||
|
let escapedString = value.replace("\"","\\\"").replace("\'", "\\\'")
|
||||||
|
return "<span onclick='copyAndNotify(this.innerText)'>"+value+"</span>";
|
||||||
|
}
|
||||||
|
|
||||||
function getIdSelections() {
|
function getIdSelections() {
|
||||||
return $.map($("#entrytable").bootstrapTable('getSelections'), function (row) {
|
return $.map($("#entrytable").bootstrapTable('getSelections'), function (row) {
|
||||||
return row.entry_ID
|
return row.entry_ID
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function copyAndNotify(text) {
|
||||||
|
navigator.clipboard.writeText(text).then(function () {
|
||||||
|
let toast = {
|
||||||
|
title: "Kopiert",
|
||||||
|
message: text,
|
||||||
|
status: 1,
|
||||||
|
timeout: 5000
|
||||||
|
};
|
||||||
|
Toast.create(toast);
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -67,6 +67,9 @@
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
submitModal();
|
submitModal();
|
||||||
});
|
});
|
||||||
|
$('#enqueueModal').on('shown.bs.modal', function (e) {
|
||||||
|
$("#singerNameInput").focus();
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
@ -99,9 +102,13 @@
|
|||||||
enqueue(localStorage.getItem("clientId"),id, name, function (response) {
|
enqueue(localStorage.getItem("clientId"),id, name, function (response) {
|
||||||
console.log(response);
|
console.log(response);
|
||||||
entryID = response["entry_id"];
|
entryID = response["entry_id"];
|
||||||
bootbox.alert({
|
toast = {
|
||||||
message: "Deine Eintragung wurde erfolgreich vorgenommen.",
|
title: "Erfolgreich eingetragen",
|
||||||
});
|
message: "Du wurdest erfolgreich eingetragen.",
|
||||||
|
status: TOAST_STATUS.SUCCESS,
|
||||||
|
timeout: 5000
|
||||||
|
}
|
||||||
|
Toast.create(toast);
|
||||||
console.log("Entry ID: " + entryID);
|
console.log("Entry ID: " + entryID);
|
||||||
addEntry(entryID);
|
addEntry(entryID);
|
||||||
$("#enqueueModal").modal('hide');
|
$("#enqueueModal").modal('hide');
|
||||||
|
@ -6,7 +6,7 @@ secrets:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
karaoqueue:
|
karaoqueue:
|
||||||
image: "ghcr.io/phoenixtwofive/karaoqueue:v2023.03.3"
|
image: "ghcr.io/phoenixtwofive/karaoqueue:v2023.06"
|
||||||
build: .
|
build: .
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
|
Reference in New Issue
Block a user