@@ -178,7 +224,7 @@
0 && this.selectedSchedules.length === this.schedules.data.length;
+ },
+ isIndeterminate() {
+ return this.selectedSchedules.length > 0 && this.selectedSchedules.length < this.schedules.data.length;
+ },
+ },
+
mounted() {
this.SET_DOCUMENT_TITLE('Расписание');
},
@@ -335,6 +392,39 @@ export default {
});
},
+ toggleSelectAll(event) {
+ if (event.target.checked) {
+ this.selectedSchedules = [...new Set([...this.selectedSchedules, ...this.schedules.data.map(s => s.id)])];
+ } else {
+ const pageIds = new Set(this.schedules.data.map(s => s.id));
+ this.selectedSchedules = this.selectedSchedules.filter(id => !pageIds.has(id));
+ }
+ },
+
+ selectAllOnPage() {
+ this.selectedSchedules = [...new Set([...this.selectedSchedules, ...this.schedules.data.map(s => s.id)])];
+ },
+
+ clearSelection() {
+ this.selectedSchedules = [];
+ },
+
+ bulkDelete() {
+ if (!confirm(`Удалить ${this.selectedSchedules.length} расписаний?`)) return;
+ this.bulkProcessing = true;
+ this.$inertia.delete(route('dashboard.schedules.bulk-destroy'), {
+ data: { ids: this.selectedSchedules },
+ preserveScroll: true,
+ onSuccess: () => {
+ this.selectedSchedules = [];
+ this.bulkProcessing = false;
+ },
+ onError: () => {
+ this.bulkProcessing = false;
+ },
+ });
+ },
+
refreshPage() {
this.$inertia.get(route('dashboard.schedules.index'), {
search: this.searchQuery,