diff --git a/aircox/models/diffusion.py b/aircox/models/diffusion.py
index fbbe652..2bb7948 100644
--- a/aircox/models/diffusion.py
+++ b/aircox/models/diffusion.py
@@ -89,6 +89,8 @@ class Diffusion(Rerun):
- stop: the diffusion has been manually stopped
"""
+ list_url_name = "timetable-list"
+
objects = DiffusionQuerySet.as_manager()
TYPE_ON_AIR = 0x00
diff --git a/aircox/static/aircox/css/admin.css b/aircox/static/aircox/css/admin.css
index ebed324..db0fcfb 100644
--- a/aircox/static/aircox/css/admin.css
+++ b/aircox/static/aircox/css/admin.css
@@ -14,7 +14,7 @@
--preview-cover-tiny-size: 4rem;
--preview-wide-content-sz: 1.6rem;
--header-height: var(--preview-cover-size);
- --a-carousel-pb: 1.4rem;
+ --a-carousel-p: 1.4rem;
--a-carousel-gap: 1.2rem;
--a-carousel-nav-x: -0.6em;
--a-progress-bg: transparent;
@@ -95,7 +95,6 @@
.preview {
position: relative;
background-size: cover;
- margin-bottom: 2rem !important;
}
.preview.preview-item {
width: 100%;
@@ -187,7 +186,7 @@
display: flex;
flex-direction: row;
padding-top: 0em;
- margin-bottom: 1.2rem !important;
+ margin-bottom: 0.4rem !important;
}
.list-item .headings .title {
flex-grow: 1;
@@ -276,8 +275,8 @@ preview-header:not(.no-cover) .card-headings .heading, preview-header:not(.no-co
gap: 1.2rem;
}
-.a-carousel {
- padding-bottom: var(--a-carousel-pb);
+.a-carousel .a-carousel-viewport {
+ padding: var(--a-carousel-p) 0;
}
.a-carousel-container {
diff --git a/aircox/static/aircox/css/chunk-common.css b/aircox/static/aircox/css/chunk-common.css
index 8c86ed9..ac3d3f2 100644
--- a/aircox/static/aircox/css/chunk-common.css
+++ b/aircox/static/aircox/css/chunk-common.css
@@ -7098,3 +7098,7 @@ section > .toolbar {
h1, h2, h3, h4, h5, h6, .heading, .title, .subtitle {
font-family: var(--heading-font-family);
}
+
+.container:empty {
+ display: none;
+}
diff --git a/aircox/static/aircox/css/public.css b/aircox/static/aircox/css/public.css
index 1cd2570..0782576 100644
--- a/aircox/static/aircox/css/public.css
+++ b/aircox/static/aircox/css/public.css
@@ -14,7 +14,7 @@
--preview-cover-tiny-size: 4rem;
--preview-wide-content-sz: 1.6rem;
--header-height: var(--preview-cover-size);
- --a-carousel-pb: 1.4rem;
+ --a-carousel-p: 1.4rem;
--a-carousel-gap: 1.2rem;
--a-carousel-nav-x: -0.6em;
--a-progress-bg: transparent;
@@ -95,7 +95,6 @@
.preview {
position: relative;
background-size: cover;
- margin-bottom: 2rem !important;
}
.preview.preview-item {
width: 100%;
@@ -187,7 +186,7 @@
display: flex;
flex-direction: row;
padding-top: 0em;
- margin-bottom: 1.2rem !important;
+ margin-bottom: 0.4rem !important;
}
.list-item .headings .title {
flex-grow: 1;
@@ -276,8 +275,8 @@ preview-header:not(.no-cover) .card-headings .heading, preview-header:not(.no-co
gap: 1.2rem;
}
-.a-carousel {
- padding-bottom: var(--a-carousel-pb);
+.a-carousel .a-carousel-viewport {
+ padding: var(--a-carousel-p) 0;
}
.a-carousel-container {
@@ -7358,7 +7357,7 @@ a.tag:hover {
color: var(--text-color);
}
.page section.container {
- padding-top: 2rem;
+ margin-top: 0.6rem;
}
.page section.container > .title {
margin-top: unset;
@@ -7366,8 +7365,8 @@ a.tag:hover {
margin-bottom: 1.2rem;
border-bottom: 1px solid black;
}
-.page section.container:not(:first-child) {
- margin-top: 2rem;
+.page section.container:not(:last-child) {
+ margin-bottom: 0.6rem;
}
.dropdown-item {
diff --git a/aircox/static/aircox/js/chunk-common.js b/aircox/static/aircox/js/chunk-common.js
index ce81b99..c5f970b 100644
--- a/aircox/static/aircox/js/chunk-common.js
+++ b/aircox/static/aircox/js/chunk-common.js
@@ -375,7 +375,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
\**********************/
/***/ (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?");
/***/ }),
diff --git a/aircox/templates/aircox/base.html b/aircox/templates/aircox/base.html
index bb2353f..d21f8ac 100644
--- a/aircox/templates/aircox/base.html
+++ b/aircox/templates/aircox/base.html
@@ -91,6 +91,7 @@ Usefull context:
{% endspaceless %}
{% block header-container %}
+ {% if page or cover or title %}