node player groups wip

This commit is contained in:
jr-k 2024-07-16 18:43:35 +02:00
parent 3132a29197
commit 9387f21b74
4 changed files with 52 additions and 32 deletions

View File

@ -31,6 +31,9 @@ jQuery(document).ready(function ($) {
$(document).on('click', '.node-player-group-unassign-player', function () { $(document).on('click', '.node-player-group-unassign-player', function () {
if (confirm(l.js_fleet_node_player_delete_confirmation)) { if (confirm(l.js_fleet_node_player_delete_confirmation)) {
const $item = $(this).parents('.player-item:eq(0)'); const $item = $(this).parents('.player-item:eq(0)');
if ($item.parents('ul:eq(0)').find('.player-item').length === 1) {
document.location.href = $(this).attr('data-route');
} else {
$item.remove(); $item.remove();
$.ajax({ $.ajax({
method: 'DELETE', method: 'DELETE',
@ -41,6 +44,7 @@ jQuery(document).ready(function ($) {
} }
}); });
} }
}
}); });

View File

@ -104,7 +104,10 @@ jQuery(document).ready(function ($) {
} }
function applyChoices() { function applyChoices() {
const { scheduleStartChoices, scheduleEndChoices } = updateScheduleChoices(isNotification, isLoopStart, isCronStart); const {
scheduleStartChoices,
scheduleEndChoices
} = updateScheduleChoices(isNotification, isLoopStart, isCronStart);
recreateSelectOptions($triggerStart, scheduleStartChoices); recreateSelectOptions($triggerStart, scheduleStartChoices);
recreateSelectOptions($triggerEnd, scheduleEndChoices); recreateSelectOptions($triggerEnd, scheduleEndChoices);
} }
@ -261,6 +264,9 @@ jQuery(document).ready(function ($) {
$(document).on('click', '.slide-delete', function () { $(document).on('click', '.slide-delete', function () {
if (confirm(l.js_slideshow_slide_delete_confirmation)) { if (confirm(l.js_slideshow_slide_delete_confirmation)) {
const $item = $(this).parents('.slide-item:eq(0)'); const $item = $(this).parents('.slide-item:eq(0)');
if ($item.parents('ul:eq(0)').find('.slide-item').length === 1) {
document.location.href = $(this).attr('data-route').replace('__id__', getId($(this)));
} else {
$item.remove(); $item.remove();
$.ajax({ $.ajax({
method: 'DELETE', method: 'DELETE',
@ -271,6 +277,7 @@ jQuery(document).ready(function ($) {
} }
}); });
} }
}
}); });
$(document).on('submit', '.modal-slide-add form', function () { $(document).on('submit', '.modal-slide-add form', function () {

View File

@ -24,7 +24,7 @@ class FleetNodePlayerGroupController(ObController):
self._app.add_url_rule('/fleet/node-player-group/add', 'fleet_node_player_group_add', self.guard_fleet(self._auth(self.fleet_node_player_group_add)), methods=['POST']) self._app.add_url_rule('/fleet/node-player-group/add', 'fleet_node_player_group_add', self.guard_fleet(self._auth(self.fleet_node_player_group_add)), methods=['POST'])
self._app.add_url_rule('/fleet/node-player-group/save', 'fleet_node_player_group_save', self.guard_fleet(self._auth(self.fleet_node_player_group_save)), methods=['POST']) self._app.add_url_rule('/fleet/node-player-group/save', 'fleet_node_player_group_save', self.guard_fleet(self._auth(self.fleet_node_player_group_save)), methods=['POST'])
self._app.add_url_rule('/fleet/node-player-group/delete/<player_group_id>', 'fleet_node_player_group_delete', self.guard_fleet(self._auth(self.fleet_node_player_group_delete)), methods=['GET']) self._app.add_url_rule('/fleet/node-player-group/delete/<player_group_id>', 'fleet_node_player_group_delete', self.guard_fleet(self._auth(self.fleet_node_player_group_delete)), methods=['GET'])
self._app.add_url_rule('/fleet/node-player-group/unassign-player/<player_id>', 'fleet_node_player_group_unassign_player', self._auth(self.fleet_node_player_group_unassign_player), methods=['DELETE']) self._app.add_url_rule('/fleet/node-player-group/unassign-player/<player_id>', 'fleet_node_player_group_unassign_player', self._auth(self.fleet_node_player_group_unassign_player), methods=['GET', 'DELETE'])
self._app.add_url_rule('/fleet/node-player-group/assign-player/<player_group_id>/<player_id>', 'fleet_node_player_group_assign_player', self._auth(self.fleet_node_player_group_assign_player), methods=['GET']) self._app.add_url_rule('/fleet/node-player-group/assign-player/<player_group_id>/<player_id>', 'fleet_node_player_group_assign_player', self._auth(self.fleet_node_player_group_assign_player), methods=['GET'])
def fleet_node_player_group(self): def fleet_node_player_group(self):
@ -108,8 +108,11 @@ class FleetNodePlayerGroupController(ObController):
self._post_update() self._post_update()
pcounter = self._model_store.node_player_group().get_player_counters_by_player_groups(group_id=group_id) pcounter = self._model_store.node_player_group().get_player_counters_by_player_groups(group_id=group_id)
if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
return jsonify({'status': 'ok', 'pcounter': pcounter, 'group_id': group_id}) return jsonify({'status': 'ok', 'pcounter': pcounter, 'group_id': group_id})
return redirect(url_for('fleet_node_player_group_list', player_group_id=group_id))
def fleet_node_player_group_assign_player(self, player_group_id: int = 0, player_id: int = 0): def fleet_node_player_group_assign_player(self, player_group_id: int = 0, player_id: int = 0):
node_player_group = self._model_store.node_player_group().get(player_group_id) node_player_group = self._model_store.node_player_group().get(player_group_id)

View File

@ -18,7 +18,7 @@ class SlideController(ObController):
self._app.add_url_rule('/manage', 'manage', self.manage, methods=['GET']) self._app.add_url_rule('/manage', 'manage', self.manage, methods=['GET'])
self._app.add_url_rule('/slideshow/slide/add', 'slideshow_slide_add', self._auth(self.slideshow_slide_add), methods=['POST']) self._app.add_url_rule('/slideshow/slide/add', 'slideshow_slide_add', self._auth(self.slideshow_slide_add), methods=['POST'])
self._app.add_url_rule('/slideshow/slide/edit', 'slideshow_slide_edit', self._auth(self.slideshow_slide_edit), methods=['POST']) self._app.add_url_rule('/slideshow/slide/edit', 'slideshow_slide_edit', self._auth(self.slideshow_slide_edit), methods=['POST'])
self._app.add_url_rule('/slideshow/slide/delete/<slide_id>', 'slideshow_slide_delete', self._auth(self.slideshow_slide_delete), methods=['DELETE']) self._app.add_url_rule('/slideshow/slide/delete/<slide_id>', 'slideshow_slide_delete', self._auth(self.slideshow_slide_delete), methods=['GET', 'DELETE'])
self._app.add_url_rule('/slideshow/slide/position', 'slideshow_slide_position', self._auth(self.slideshow_slide_position), methods=['POST']) self._app.add_url_rule('/slideshow/slide/position', 'slideshow_slide_position', self._auth(self.slideshow_slide_position), methods=['POST'])
self._app.add_url_rule('/slideshow/player-refresh', 'slideshow_player_refresh', self._auth(self.slideshow_player_refresh), methods=['GET']) self._app.add_url_rule('/slideshow/player-refresh', 'slideshow_player_refresh', self._auth(self.slideshow_player_refresh), methods=['GET'])
@ -81,11 +81,17 @@ class SlideController(ObController):
if not slide: if not slide:
abort(404) abort(404)
playlist_id = slide.playlist_id
self._model_store.slide().delete(slide_id) self._model_store.slide().delete(slide_id)
duration = self._model_store.playlist().get_durations_by_playlists(playlist_id=slide.playlist_id) duration = self._model_store.playlist().get_durations_by_playlists(playlist_id=playlist_id)
self._post_update() self._post_update()
return jsonify({'status': 'ok', 'duration': duration, 'playlist_id': slide.playlist_id})
if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
return jsonify({'status': 'ok', 'duration': duration, 'playlist_id': playlist_id})
return redirect(url_for('playlist_list', playlist_id=playlist_id))
def slideshow_slide_position(self): def slideshow_slide_position(self):
data = request.get_json() data = request.get_json()