aboutsummaryrefslogtreecommitdiff
path: root/resources/assets/javascripts/bootstrap/dates.js
blob: c6cc77e578099a991831bc2aecf8ebd0328cf957 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
$(document).on('click', '.remove_topic', STUDIP.Dates.removeTopicFromIcon);

// Drag and drop support for topics in date list
function createDraggable() {
    $('.dates.has-access tbody tr:not(:only-child) .themen-list li > a.title:not(.draggable-topic)').each(function() {
        var table_id = $(this)
            .closest('table')
            .data().tableId;

        $(this)
            .children()
            .addClass('draggable-topic-handle');

        $(this)
            .closest('li')
            .addClass('draggable-topic')
            .data('table-id', table_id)
            .attr('data-table-id', table_id)
            .draggable({
                axis: 'y',
                containment: $(this).closest('tbody'),
                handle: '.draggable-topic-handle',
                revert: true
            });
    });
}

STUDIP.domReady(function () {
    if ($('body#course-dates-index').length === 0) {
        return;
    }

    $(document).ajaxComplete(createDraggable);

    $('.themen-list').each(function() {
        var table_id = $(this)
            .closest('table')
            .data().tableId;
        $(this)
            .closest('td')
            .addClass('topic-droppable')
            .droppable({
                accept: '.draggable-topic[data-table-id="' + table_id + '"]',
                activeClass: 'active',
                hoverClass: 'hovered',
                drop: function(event, ui) {
                    var context = $(ui.draggable),
                        topic = context.closest('li').data().issue_id,
                        source = context.closest('tr').data().terminId,
                        target = $(this)
                            .closest('tr')
                            .data().terminId,
                        path = ['dispatch.php/course/dates/move_topic', topic, source, target].join('/'),
                        url = STUDIP.URLHelper.getURL(path),
                        cell = $(this);

                    if (source === target) {
                        return;
                    }

                    ui.draggable.draggable('option', 'revert', false);

                    $.post(url).done(function(response) {
                        ui.draggable
                            .draggable('destroy')
                            .closest('li')
                            .remove();
                        $('ul', cell).append(response);
                    });
                }
            });
    });

    createDraggable();
});