Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21bc43bb84 |
1
assets/bootstrap.js
vendored
1
assets/bootstrap.js
vendored
@@ -10,6 +10,7 @@ import { startStimulusApp } from '@symfony/stimulus-bundle';
|
|||||||
import Popover from '@stimulus-components/popover';
|
import Popover from '@stimulus-components/popover';
|
||||||
import Dialog from '@stimulus-components/dialog';
|
import Dialog from '@stimulus-components/dialog';
|
||||||
import Dropdown from '@stimulus-components/dropdown';
|
import Dropdown from '@stimulus-components/dropdown';
|
||||||
|
|
||||||
import 'animate.css';
|
import 'animate.css';
|
||||||
|
|
||||||
const app = startStimulusApp();
|
const app = startStimulusApp();
|
||||||
|
|||||||
40
assets/controllers/dashboard_widgets_controller.js
Normal file
40
assets/controllers/dashboard_widgets_controller.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
import { Controller } from '@hotwired/stimulus';
|
||||||
|
import {GridStack} from "../vendor/gridstack/gridstack.index.js";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following line makes this controller "lazy": it won't be downloaded until needed
|
||||||
|
* See https://symfony.com/bundles/StimulusBundle/current/index.html#lazy-stimulus-controllers
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* stimulusFetch: 'lazy' */
|
||||||
|
export default class extends Controller {
|
||||||
|
grid;
|
||||||
|
|
||||||
|
initialize() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
connect() {
|
||||||
|
this.grid = GridStack.init({
|
||||||
|
column: 2,
|
||||||
|
alwaysShowResizeHandle: true,
|
||||||
|
margin: "2rem",
|
||||||
|
resizable: {
|
||||||
|
handles: 'e,se,s,sw,w'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.grid.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add custom controller actions here
|
||||||
|
// fooBar() { this.fooTarget.classList.toggle(this.bazClass) }
|
||||||
|
|
||||||
|
disconnect() {
|
||||||
|
// Called anytime its element is disconnected from the DOM
|
||||||
|
// (on page change, when it's removed from or moved in the DOM, etc.)
|
||||||
|
|
||||||
|
// Here you should remove all event listeners added in "connect()"
|
||||||
|
// this.fooTarget.removeEventListener('click', this._fooBar)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -70,4 +70,7 @@ return [
|
|||||||
'@ungap/custom-elements' => [
|
'@ungap/custom-elements' => [
|
||||||
'version' => '1.3.0',
|
'version' => '1.3.0',
|
||||||
],
|
],
|
||||||
|
'gridstack' => [
|
||||||
|
'version' => '12.3.3',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -33,7 +33,9 @@ class MonitorDispatcher
|
|||||||
'tvshows' => MonitorTvShowCommand::class,
|
'tvshows' => MonitorTvShowCommand::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
$monitors = $this->monitorRepository->findBy(['status' => ['New', 'Active']]);
|
$monitors = $this->monitorRepository->findBy([
|
||||||
|
'status' => ['New', 'Active'],
|
||||||
|
]);
|
||||||
|
|
||||||
foreach ($monitors as $monitor) {
|
foreach ($monitors as $monitor) {
|
||||||
$monitor->setStatus('In Progress');
|
$monitor->setStatus('In Progress');
|
||||||
|
|||||||
@@ -11,7 +11,14 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block javascripts %}
|
{% block javascripts %}
|
||||||
{% block importmap %}{{ importmap('app') }}{% endblock %}
|
{% block pre_js %}{% endblock %}
|
||||||
|
|
||||||
|
{% block importmap %}
|
||||||
|
{{ importmap('app') }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block post_js %}{% endblock %}
|
||||||
|
|
||||||
<script src='https://cdn.jsdelivr.net/npm/fullcalendar@6.1.19/index.global.min.js'></script>
|
<script src='https://cdn.jsdelivr.net/npm/fullcalendar@6.1.19/index.global.min.js'></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -4,20 +4,31 @@
|
|||||||
{% block h2 %}Dashboard{% endblock %}
|
{% block h2 %}Dashboard{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="p-4 flex flex-col grow gap-4 z-10">
|
<div class="p-4 z-10">
|
||||||
<div class="flex flex-col md:flex-row gap-4">
|
<div class="grid-stack gs-2">
|
||||||
<twig:Card title="Active Downloads" class="w-full">
|
<div class="grid-stack-item" gs-x="1">
|
||||||
<twig:DownloadList :type="'active'" />
|
<div class="grid-stack-item-content">
|
||||||
</twig:Card>
|
<twig:Card title="Active Downloads">
|
||||||
|
<twig:DownloadList :type="'active'" />
|
||||||
|
</twig:Card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<twig:Card title="Recent Downloads" class="w-full">
|
<div class="grid-stack-item" gs-x="2">
|
||||||
<twig:DownloadList :type="'complete'" />
|
<div class="grid-stack-item-content">
|
||||||
</twig:Card>
|
<twig:Card title="Complete Downloads" >
|
||||||
</div>
|
<twig:DownloadList :type="'complete'" />
|
||||||
<div class="flex flex-col md:flex-row gap-4">
|
</twig:Card>
|
||||||
<twig:Card title="Monitors" class="w-full">
|
</div>
|
||||||
<twig:MonitorList :type="'active'" :isWidget="true" />
|
</div>
|
||||||
</twig:Card>
|
|
||||||
|
<div class="grid-stack-item" gs-x="3">
|
||||||
|
<div class="grid-stack-item-content">
|
||||||
|
<twig:Card title="Active Monitors">
|
||||||
|
<twig:MonitorList :type="'active'" />
|
||||||
|
</twig:Card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col gap-4">
|
<div class="flex flex-col gap-4">
|
||||||
<twig:Card title="Popular Movies" contentClass="grid grid-cols-2 gap-4 md:flex md:flex-row md:justify-between w-full">
|
<twig:Card title="Popular Movies" contentClass="grid grid-cols-2 gap-4 md:flex md:flex-row md:justify-between w-full">
|
||||||
@@ -45,5 +56,6 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</twig:Card>
|
</twig:Card>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="grid-stack" data-controller="dashboard-widgets"></div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user