#132 | #121: backoffice / dev-1.0-121 #131

Merged
thomas merged 151 commits from dev-1.0-121 into develop-1.0 2024-04-28 20:02:14 +00:00
18 changed files with 106 additions and 101 deletions
Showing only changes of commit c52e87acd2 - Show all commits

View File

@ -89,6 +89,8 @@ class Diffusion(Rerun):
- stop: the diffusion has been manually stopped - stop: the diffusion has been manually stopped
""" """
list_url_name = "timetable-list"
objects = DiffusionQuerySet.as_manager() objects = DiffusionQuerySet.as_manager()
TYPE_ON_AIR = 0x00 TYPE_ON_AIR = 0x00

View File

@ -14,7 +14,7 @@
--preview-cover-tiny-size: 4rem; --preview-cover-tiny-size: 4rem;
--preview-wide-content-sz: 1.6rem; --preview-wide-content-sz: 1.6rem;
--header-height: var(--preview-cover-size); --header-height: var(--preview-cover-size);
--a-carousel-pb: 1.4rem; --a-carousel-p: 1.4rem;
--a-carousel-gap: 1.2rem; --a-carousel-gap: 1.2rem;
--a-carousel-nav-x: -0.6em; --a-carousel-nav-x: -0.6em;
--a-progress-bg: transparent; --a-progress-bg: transparent;
@ -95,7 +95,6 @@
.preview { .preview {
position: relative; position: relative;
background-size: cover; background-size: cover;
margin-bottom: 2rem !important;
} }
.preview.preview-item { .preview.preview-item {
width: 100%; width: 100%;
@ -187,7 +186,7 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
padding-top: 0em; padding-top: 0em;
margin-bottom: 1.2rem !important; margin-bottom: 0.4rem !important;
} }
.list-item .headings .title { .list-item .headings .title {
flex-grow: 1; flex-grow: 1;
@ -276,8 +275,8 @@ preview-header:not(.no-cover) .card-headings .heading, preview-header:not(.no-co
gap: 1.2rem; gap: 1.2rem;
} }
.a-carousel { .a-carousel .a-carousel-viewport {
padding-bottom: var(--a-carousel-pb); padding: var(--a-carousel-p) 0;
} }
.a-carousel-container { .a-carousel-container {

View File

@ -7098,3 +7098,7 @@ section > .toolbar {
h1, h2, h3, h4, h5, h6, .heading, .title, .subtitle { h1, h2, h3, h4, h5, h6, .heading, .title, .subtitle {
font-family: var(--heading-font-family); font-family: var(--heading-font-family);
} }
.container:empty {
display: none;
}

View File

@ -14,7 +14,7 @@
--preview-cover-tiny-size: 4rem; --preview-cover-tiny-size: 4rem;
--preview-wide-content-sz: 1.6rem; --preview-wide-content-sz: 1.6rem;
--header-height: var(--preview-cover-size); --header-height: var(--preview-cover-size);
--a-carousel-pb: 1.4rem; --a-carousel-p: 1.4rem;
--a-carousel-gap: 1.2rem; --a-carousel-gap: 1.2rem;
--a-carousel-nav-x: -0.6em; --a-carousel-nav-x: -0.6em;
--a-progress-bg: transparent; --a-progress-bg: transparent;
@ -95,7 +95,6 @@
.preview { .preview {
position: relative; position: relative;
background-size: cover; background-size: cover;
margin-bottom: 2rem !important;
} }
.preview.preview-item { .preview.preview-item {
width: 100%; width: 100%;
@ -187,7 +186,7 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
padding-top: 0em; padding-top: 0em;
margin-bottom: 1.2rem !important; margin-bottom: 0.4rem !important;
} }
.list-item .headings .title { .list-item .headings .title {
flex-grow: 1; flex-grow: 1;
@ -276,8 +275,8 @@ preview-header:not(.no-cover) .card-headings .heading, preview-header:not(.no-co
gap: 1.2rem; gap: 1.2rem;
} }
.a-carousel { .a-carousel .a-carousel-viewport {
padding-bottom: var(--a-carousel-pb); padding: var(--a-carousel-p) 0;
} }
.a-carousel-container { .a-carousel-container {
@ -7358,7 +7357,7 @@ a.tag:hover {
color: var(--text-color); color: var(--text-color);
} }
.page section.container { .page section.container {
padding-top: 2rem; margin-top: 0.6rem;
} }
.page section.container > .title { .page section.container > .title {
margin-top: unset; margin-top: unset;
@ -7366,8 +7365,8 @@ a.tag:hover {
margin-bottom: 1.2rem; margin-bottom: 1.2rem;
border-bottom: 1px solid black; border-bottom: 1px solid black;
} }
.page section.container:not(:first-child) { .page section.container:not(:last-child) {
margin-top: 2rem; margin-bottom: 0.6rem;
} }
.dropdown-item { .dropdown-item {

View File

@ -375,7 +375,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
\**********************/ \**********************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _fortawesome_fontawesome_free_css_all_min_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @fortawesome/fontawesome-free/css/all.min.css */ \"./node_modules/@fortawesome/fontawesome-free/css/all.min.css\");\n/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app */ \"./src/app.js\");\n/* harmony import */ var _vueLoader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vueLoader */ \"./src/vueLoader.js\");\n/* harmony import */ var _sound__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sound */ \"./src/sound.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./model */ \"./src/model.js\");\n/* harmony import */ var _assets_common_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./assets/common.scss */ \"./src/assets/common.scss\");\n/**\n * This module includes code available for both the public website and\n * administration interface)\n */\n//-- vendor\n\n\n//-- aircox\n\n\n\n\n\nwindow.aircox = {\n // main application\n loader: null,\n get app() {\n return this.loader.app;\n },\n // player application\n playerLoader: null,\n get playerApp() {\n return this.playerLoader && this.playerLoader.app;\n },\n get player() {\n return this.playerLoader.vm && this.playerLoader.vm.$refs.player;\n },\n Set: _model__WEBPACK_IMPORTED_MODULE_4__.Set,\n Sound: _sound__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n /**\n * Initialize main application and player.\n */\n init(props = null, {\n hotReload = false,\n el = null,\n config = null,\n playerConfig = null,\n initApp = true,\n initPlayer = true,\n loader = null,\n playerLoader = null\n } = {}) {\n if (initPlayer) {\n playerConfig = playerConfig || _app__WEBPACK_IMPORTED_MODULE_1__.PlayerApp;\n playerLoader = playerLoader || new _vueLoader__WEBPACK_IMPORTED_MODULE_2__[\"default\"](playerConfig);\n playerLoader.enable(false);\n this.playerLoader = playerLoader;\n document.addEventListener(\"keypress\", e => this.onKeyPress(e), false);\n }\n if (initApp) {\n config = config || window.App || _app__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n config.el = el || config.el;\n loader = loader || new _vueLoader__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n el,\n props,\n ...config\n });\n loader.enable(hotReload);\n this.loader = loader;\n }\n },\n onKeyPress(event) {\n if (event.key == \" \") this.player.togglePlay();\n },\n /**\n * Filter navbar dropdown menu items\n */\n filter_menu(event) {\n var filter = new RegExp(event.target.value, 'gi');\n var container = event.target.closest('.navbar-dropdown');\n if (event.target.value) for (let item of container.querySelectorAll('a.navbar-item')) item.style.display = item.innerHTML.search(filter) == -1 ? 'none' : null;else for (let item of container.querySelectorAll('a.navbar-item')) item.style.display = null;\n },\n pickDate(url, date) {\n url = `${url}?date=${date.id}`;\n this.loader.pageLoad.load(url);\n }\n};\n\n//# sourceURL=webpack://aircox-assets/./src/index.js?"); eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _fortawesome_fontawesome_free_css_all_min_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @fortawesome/fontawesome-free/css/all.min.css */ \"./node_modules/@fortawesome/fontawesome-free/css/all.min.css\");\n/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app */ \"./src/app.js\");\n/* harmony import */ var _vueLoader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vueLoader */ \"./src/vueLoader.js\");\n/* harmony import */ var _sound__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sound */ \"./src/sound.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./model */ \"./src/model.js\");\n/* harmony import */ var _assets_common_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./assets/common.scss */ \"./src/assets/common.scss\");\n/**\n * This module includes code available for both the public website and\n * administration interface)\n */\n//-- vendor\n\n\n//-- aircox\n\n\n\n\n\nwindow.aircox = {\n // main application\n loader: null,\n get app() {\n return this.loader.app;\n },\n // player application\n playerLoader: null,\n get playerApp() {\n return this.playerLoader && this.playerLoader.app;\n },\n get player() {\n return this.playerLoader.vm && this.playerLoader.vm.$refs.player;\n },\n Set: _model__WEBPACK_IMPORTED_MODULE_4__.Set,\n Sound: _sound__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n /**\n * Initialize main application and player.\n */\n init(props = null, {\n hotReload = false,\n el = null,\n config = null,\n playerConfig = null,\n initApp = true,\n initPlayer = true,\n loader = null,\n playerLoader = null\n } = {}) {\n if (initPlayer) {\n playerConfig = playerConfig || _app__WEBPACK_IMPORTED_MODULE_1__.PlayerApp;\n playerLoader = playerLoader || new _vueLoader__WEBPACK_IMPORTED_MODULE_2__[\"default\"](playerConfig);\n playerLoader.enable(false);\n this.playerLoader = playerLoader;\n document.addEventListener(\"keyup\", e => this.onKeyPress(e), false);\n }\n if (initApp) {\n config = config || window.App || _app__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n config.el = el || config.el;\n loader = loader || new _vueLoader__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n el,\n props,\n ...config\n });\n loader.enable(hotReload);\n this.loader = loader;\n }\n },\n onKeyPress(event) {\n if (event.key == \" \") {\n this.player.togglePlay();\n event.stopPropagation();\n }\n },\n /**\n * Filter navbar dropdown menu items\n */\n filter_menu(event) {\n var filter = new RegExp(event.target.value, 'gi');\n var container = event.target.closest('.navbar-dropdown');\n if (event.target.value) for (let item of container.querySelectorAll('a.navbar-item')) item.style.display = item.innerHTML.search(filter) == -1 ? 'none' : null;else for (let item of container.querySelectorAll('a.navbar-item')) item.style.display = null;\n },\n pickDate(url, date) {\n url = `${url}?date=${date.id}`;\n this.loader.pageLoad.load(url);\n }\n};\n\n//# sourceURL=webpack://aircox-assets/./src/index.js?");
/***/ }), /***/ }),

View File

@ -91,6 +91,7 @@ Usefull context:
{% endspaceless %} {% endspaceless %}
{% block header-container %} {% block header-container %}
{% if page or cover or title %}
<header class="container header preview preview-header {% if cover %}has-cover{% endif %}"> <header class="container header preview preview-header {% if cover %}has-cover{% endif %}">
{% block header %} {% block header %}
{% if cover %} {% if cover %}
@ -117,16 +118,17 @@ Usefull context:
</div> </div>
{% endblock %} {% endblock %}
</header> </header>
{% endif %}
{% endblock %} {% endblock %}
{% block content-container %} {% block content-container %}
<div class="container content">
{% block content %}
{% if page and page.content %} {% if page and page.content %}
<section class="page-content">{{ page.content|safe }}</section> <div class="container content page-content">
{% endif %} {% block content %}
{{ page.content|safe }}
{% endblock %} {% endblock %}
</div> </div>
{% endif %}
{% endblock %} {% endblock %}
{% endblock %} {% endblock %}
</main> </main>

View File

@ -6,3 +6,5 @@
&mdash; &mdash;
{{ station.name }} {{ station.name }}
{% endblock %} {% endblock %}
{% block header %}{% if page %}{{ block.super }}{% endif %}{% endblock %}

View File

@ -5,33 +5,18 @@
{% block head_title %} {% block head_title %}
{% block title %} {% block title %}
{% if not page or not page.title %} {{ block.super }}
{% if not parent %}{{ view.model|verbose_name:True|title }}
{% else %}
{% with parent.title as title %}
{% with model|default:"Publications"|verbose_name:True|capfirst as model %}
{% comment %}Translators: title when pages are filtered for a specific parent page, e.g.: Articles of My Incredible Show{% endcomment %}
{% blocktranslate %}All {{ model }}{% endblocktranslate %}
{% endwith %}
{% endwith %}
{% endif %}
{% else %}{{ block.super }}
{% endif %}
{% endblock %} {% endblock %}
&mdash; &mdash;
{{ station.name }} {{ station.name }}
{% endblock %} {% endblock %}
{% block main %}
{% block content-container %}
{{ block.super }} {{ block.super }}
<div class="container clear-both"> {% block list-container %}
<section class="container clear-both" role="list">
{% block before_list %}{% endblock %} {% block list %}
<section role="list">
{% block pages_list %}
{% with has_headline=True %} {% with has_headline=True %}
{% for object in object_list %} {% for object in object_list %}
{% block list_object %} {% block list_object %}
@ -44,37 +29,40 @@
{% endblock %} {% endblock %}
</section> </section>
{% block list-pagination %}
{% if is_paginated %} {% if is_paginated %}
<hr/> <hr/>
{% update_query request.GET.copy page=None as GET %} {% update_query request.GET.copy page=None as GET %}
{% with GET.urlencode as GET %} {% with GET.urlencode as GET %}
<nav class="nav-urls is-centered" role="pagination" aria-label="{% translate "pagination" %}"> <nav class="nav-urls is-centered" role="pagination" aria-label="{% translate "pagination" %}">
{% block pagination %}
{% if page_obj.has_previous %}
<a href="?{{ GET }}&page={{ page_obj.previous_page_number }}" class="left button">
{% comment %}Translators: Bottom of the list, "previous page"{% endcomment %}
{% translate "Previous" %}</a>
{% endif %}
<ul class="urls"> <ul class="urls">
{% for i in paginator.page_range %} {% if page_obj.has_previous %}
<li> {% comment %}Translators: Bottom of the list, "previous page"{% endcomment %}
<a class="button {% if page_obj.number == i %}active{% endif %}" <a href="?{{ GET }}&page={{ page_obj.previous_page_number }}" class="left button"
href="?{{ GET }}&page={{ i }}">{{ i }}</a> title="{% translate "Previous" %}"
</li> aria-label="{% translate "Previous" %}">
{% endfor %} <span class="icon"><i class="fa fa-chevron-left"></i></span>
</ul> </a>
{% endblock %} {% endif %}
{% if page_obj.has_next %} {% if page_obj.has_next %}
<a href="?{{ GET }}&page={{ page_obj.next_page_number }}" class="right button">
{% comment %}Translators: Bottom of the list, "Nextpage"{% endcomment %} {% comment %}Translators: Bottom of the list, "Nextpage"{% endcomment %}
{% translate "Next" %}</a> <a href="?{{ GET }}&page={{ page_obj.next_page_number }}" class="right button"
title="{% translate "Next" %}"
aria-label="{% translate "Next" %}">
<span class="icon"><i class="fa fa-chevron-right"></i></span>
</a>
{% endif %} {% endif %}
</ul>
</nav> </nav>
{% endwith %} {% endwith %}
{% endif %} {% endif %}
{% endblock %}
{% endblock %}
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,8 +1,11 @@
{% extends "aircox/page_list.html" %} {% extends "aircox/base.html" %}
{% load i18n aircox %} {% load i18n aircox %}
{% block head_title %}{{ station.name }}{% endblock %} {% block head_title %}{{ station.name }}{% endblock %}
{% block title %}{% if page %}{{ block.super }}{% endif %}{% endblock %}
{% block breadcrumbs-container %}{% endblock %} {% block breadcrumbs-container %}{% endblock %}
{% block content-container %} {% block content-container %}

View File

@ -27,12 +27,6 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block content %}
{% if parent %}{{ parent.content|safe }}
{% else %}{{ block.super }}
{% endif %}
{% endblock %}
{% block header %} {% block header %}
{% if page and not object %} {% if page and not object %}
{% with page as object %} {% with page as object %}
@ -44,11 +38,11 @@
{% endblock %} {% endblock %}
{% block breadcrumbs %} {% block breadcrumbs %}
{% if parent %} {% if parent and model.list_url_name %}
{% include "./widgets/breadcrumbs.html" with page=parent %} {% include "./widgets/breadcrumbs.html" with page=parent %}
<a href="{{ request.path }}">{{ model|verbose_name:True }}</a> <a href="{% url model.list_url_name %}">{{ model|verbose_name:True }}</a>
{% elif page %} {% elif page and model.list_url_name %}
<a href="{{ request.path }}">{{ page.title }}</a> <a href="{% url model.list_url_name %}">{{ page.title }}</a>
{% if category %} {% if category %}
<a href="{% url request.resolver_match.url_name category_slug=category.slug %}"> <a href="{% url request.resolver_match.url_name category_slug=category.slug %}">
{{ category.title }} {{ category.title }}
@ -63,3 +57,13 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block content-container %}
{% if page and page.content %}
{{ block.super }}
{% elif parent and parent.content %}
{% with parent as page %}
{{ block.super }}
{% endwith %}
{% endif %}
{% endblock %}

View File

@ -1,6 +0,0 @@
{% block sidebar_title %}
{% with program.title as program %}
{% blocktranslate %}Recently on {{ program }}{% endblocktranslate %}
{% endwith %}
{% endblock %}

View File

@ -16,9 +16,7 @@
<a href="{% url "timetable-list" date=date %}">{{ date|date:"l d F Y" }}</a> <a href="{% url "timetable-list" date=date %}">{{ date|date:"l d F Y" }}</a>
{% endblock %} {% endblock %}
{% block pages_list %} {% block list %}
{% with hide_schedule=True %}
<section role="list" class="list">
{% for object in object_list %} {% for object in object_list %}
{% if object.episode %} {% if object.episode %}
{% page_widget "item" object.episode diffusion=object timetable=True %} {% page_widget "item" object.episode diffusion=object timetable=True %}
@ -26,6 +24,4 @@
{% page_widget "item" object timetable=True %} {% page_widget "item" object timetable=True %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</section>
{% endwith %}
{% endblock %} {% endblock %}

View File

@ -30,7 +30,7 @@ The audio player
</h4> </h4>
<h4 v-else-if="current && current.data.type == 'track'" <h4 v-else-if="current && current.data.type == 'track'"
class="title" aria-description="{% translate "Track currently on air" %}"> class="title" aria-description="{% translate "Track currently on air" %}">
<span class="has-text-info is-size-3">&#9836;</span> <span class="has-text-info is-size-3 mr-3">&#9836;</span>
<span>[[ current.data.title ]]</span> <span>[[ current.data.title ]]</span>
<span class="has-text-grey-dark has-text-weight-light"> <span class="has-text-grey-dark has-text-weight-light">
&mdash; [[ current.data.artist ]] &mdash; [[ current.data.artist ]]

View File

@ -18,18 +18,21 @@ class HomeView(AttachedToMixin, BaseView, ListView):
podcasts_queryset = Episode.objects.published().with_podcasts().order_by("-pub_date") podcasts_queryset = Episode.objects.published().with_podcasts().order_by("-pub_date")
def get_queryset(self): def get_queryset(self):
return super().get_queryset().before(datetime.now() - timedelta(hours=12)) now = datetime.now()
return super().get_queryset().after(now - timedelta(hours=24)).before(now).order_by("-start")
def get_logs(self, diffusions): def get_logs(self, diffusions):
today = date.today() today = date.today()
# diffs = Diffusion.objects.on_air().date(today) # diffs = Diffusion.objects.on_air().date(today)
object_list = self.object_list object_list = self.object_list
diffs = list(object_list[: self.related_count]) diffs = list(object_list[: self.related_count])
logs = Log.objects.on_air().date(today).filter(track__isnull=False) logs = Log.objects.on_air().filter(track__isnull=False)
if diffs: if diffs:
min_date = diffs[-1].start - timedelta(hours=1) min_date = diffs[-1].start - timedelta(hours=1)
logs = logs.after(min_date) logs = logs.after(min_date)
return Log.merge_diffusions(logs, object_list, diff_count=self.related_count, log_slice=10) else:
logs = logs.date(today)
return Log.merge_diffusions(logs, object_list, diff_count=self.related_count)
def get_next_diffs(self): def get_next_diffs(self):
now = tz.now() now = tz.now()

View File

@ -65,3 +65,8 @@ section > .toolbar {
h1, h2, h3, h4, h5, h6, .heading, .title, .subtitle { h1, h2, h3, h4, h5, h6, .heading, .title, .subtitle {
font-family: var(--heading-font-family); font-family: var(--heading-font-family);
} }
.container:empty {
display: none;
}

View File

@ -15,7 +15,7 @@
--preview-wide-content-sz: #{v.$text-size-bigger}; --preview-wide-content-sz: #{v.$text-size-bigger};
--header-height: var(--preview-cover-size); --header-height: var(--preview-cover-size);
--a-carousel-pb: #{v.$text-size-medium}; --a-carousel-p: #{v.$text-size-medium};
--a-carousel-gap: #{v.$mp-4}; --a-carousel-gap: #{v.$mp-4};
--a-carousel-nav-x: -#{v.$mp-3e}; --a-carousel-nav-x: -#{v.$mp-3e};
@ -179,7 +179,6 @@
.preview { .preview {
position: relative; position: relative;
background-size: cover; background-size: cover;
margin-bottom: v.$mp-6 !important;
&.preview-item { &.preview-item {
width: 100%; width: 100%;
@ -293,7 +292,7 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
padding-top: 0em; padding-top: 0em;
margin-bottom: v.$mp-4 !important; margin-bottom: v.$mp-2 !important;
.title { .title {
flex-grow: 1; flex-grow: 1;
@ -414,7 +413,10 @@
// ---- ---- Carousel // ---- ---- Carousel
.a-carousel { .a-carousel {
padding-bottom: var(--a-carousel-pb);
.a-carousel-viewport {
padding: var(--a-carousel-p) 0;
}
} }
.a-carousel-container { .a-carousel-container {

View File

@ -21,7 +21,7 @@
section.container { section.container {
padding-top: v.$mp-6; margin-top: v.$mp-3;
> .title { > .title {
margin-top: unset; margin-top: unset;
@ -30,8 +30,8 @@
border-bottom: 1px solid black; border-bottom: 1px solid black;
} }
&:not(:first-child) { &:not(:last-child) {
margin-top: v.$mp-6; margin-bottom: v.$mp-3;
} }
} }
} }

View File

@ -42,7 +42,7 @@ window.aircox = {
playerLoader.enable(false) playerLoader.enable(false)
this.playerLoader = playerLoader this.playerLoader = playerLoader
document.addEventListener("keypress", e => this.onKeyPress(e), false) document.addEventListener("keyup", e => this.onKeyPress(e), false)
} }
if(initApp) { if(initApp) {
@ -55,8 +55,10 @@ window.aircox = {
}, },
onKeyPress(event) { onKeyPress(event) {
if(event.key == " ") if(event.key == " ") {
this.player.togglePlay() this.player.togglePlay()
event.stopPropagation()
}
}, },
/** /**