aboutsummaryrefslogtreecommitdiff
path: root/resources/assets/javascripts/feedback.js
blob: 5555bb7ea2abcb001f634a4739eedb9a94fd04c5 (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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
STUDIP.Feedback = {

    initiate: function(feedback)
    {
        var range_id = $(feedback).attr('for');
        var range_type = $(feedback).attr('type');
        var course_id = $(feedback).attr('context');

        $(feedback).load(STUDIP.URLHelper.getURL('dispatch.php/course/feedback/index_for/' + range_id + '/' + range_type + '?cid=' + course_id), function()
        {
            if ($('.feedback-delete').length) {
                $('.feedback-delete').prop("onclick", null).off("click");
                $('.feedback-delete').click(function (event) {
                    event.preventDefault();
                    var id = $(this).attr('data-id');
                    STUDIP.Dialog.confirm($(this).attr('data-confirm')).done(function() {
                        STUDIP.Feedback.delete(id,feedback);
                    });
                });
            }
            STUDIP.Feedback.initiateView();
        });
    },

    initiateView: function() {
        $('.feedback-entry-add').prop("onclick", null).off("click");
        $('.feedback-entry-add').find('.accept').click(function (event) {
            event.preventDefault();
            var id = $(this).closest('article').attr('data-id');
            var feedback_id = $(this).closest('form').serialize();
            STUDIP.Feedback.addEntry(id,feedback_id);
        });
        $('.feedback-entry-edit').prop("onclick", null).off("click");
        $('.feedback-entry-edit').click(function (event) {
            event.preventDefault();
            var entry_id = $(this).closest('article').attr('data-id');
            var feedback_id = $(this).closest('.feedback-stream').attr('data-id');
            STUDIP.Feedback.editEntryForm(entry_id,feedback_id) ;
        });
        $('.feedback-entry-delete').prop("onclick", null).off("click");
        $('.feedback-entry-delete').click(function (event) {
            event.preventDefault();
            var entry_id = $(this).closest('article').attr('data-id');
            var feedback_id = $(this).closest('.feedback-stream').attr('data-id');
            STUDIP.Dialog.confirm($(this).attr('data-confirm')).done(function() {
                STUDIP.Feedback.deleteEntry(entry_id,feedback_id);
            });
        });
        STUDIP.Feedback.initiateFeedbackEntryForm();
        if ($('table.sortable-table').length) {
            $('table.sortable-table').each(function(index, element) {
                STUDIP.Table.enhanceSortableTable(element);
            });
        }
    },
    delete: function(id,feedback)
    {
        const url = STUDIP.URLHelper.getURL('dispatch.php/course/feedback/delete/' + id);
        $.post(url).done(() => {
            STUDIP.Feedback.initiate(feedback);
        });
    },
    addEntry: function(feedback_id,data)
    {
        const url = STUDIP.URLHelper.getURL('dispatch.php/course/feedback/entry_add/' + feedback_id);
        $.post(url, data).done(() => {
            STUDIP.Feedback.reloadView(feedback_id);
        });
    },
    editEntryForm: function(entry_id,feedback_id)
    {
        const url = STUDIP.URLHelper.getURL('dispatch.php/course/feedback/entry_edit_form/' + entry_id);
        $('#feedback-stream-' + feedback_id).find('.feedback-view').load(url, function() {
            STUDIP.Feedback.initiateFeedbackEntryForm();
            $('#feedback-stream-' + feedback_id).find('.accept').prop("onclick", null).off("click");
            $('#feedback-stream-' + feedback_id).find('.accept').click(function (event) {
                event.preventDefault();
                var data = $(this).closest('form').serialize();
                STUDIP.Feedback.editEntry(entry_id,feedback_id,data);
            });
            $('#feedback-stream-' + feedback_id).find('.cancel').prop("onclick", null).off("click");
            $('#feedback-stream-' + feedback_id).find('.cancel').click(function (event) {
                event.preventDefault();
                STUDIP.Feedback.reloadView(feedback_id);
            });
        });
    },
    editEntry: function(entry_id,feedback_id,data)
    {
        const url = STUDIP.URLHelper.getURL('dispatch.php/course/feedback/entry_edit/' + entry_id);
        $.post(url, data).done(() => {
            STUDIP.Feedback.reloadView(feedback_id);
        });
    },
    deleteEntry: function(entry_id,feedback_id)
    {
        const url = STUDIP.URLHelper.getURL('dispatch.php/course/feedback/entry_delete/' + entry_id);
        $.post(url).done(() => {
            STUDIP.Feedback.reloadView(feedback_id);
        });
    },
    reloadView: function(feedback_id) {
        const url = STUDIP.URLHelper.getURL('dispatch.php/course/feedback/view/' + feedback_id);
        $('#feedback-stream-' + feedback_id).find('.feedback-view').load(url, function() {
            STUDIP.Feedback.initiateView();
        });
    },
    initiateFeedbackEntryForm: function() {
        if ($('.star-rating').length) {
            $('.star-rating').hover(
                function() {
                    $(this).addClass('hover');
                    $(this).prevAll('.star-rating').addClass('hover');
                    $(this).nextAll('.star-rating').addClass('out');
                }, function() {
                    $(this).removeClass('hover');
                    $(this).siblings('.star-rating').removeClass('hover out');
                }
            );
            $('.star-rating-input').change(
                function() {
                    $(this).parent().addClass('checked');
                    $(this).parent().prevAll('.star-rating').addClass('checked');
                    $(this).parent().nextAll('.star-rating').removeClass('checked');
                }
            );
        }
        if ($('.feedback-entry-cancel').length) {
            $('.feedback-entry-cancel').prop("onclick", null).off("click");
            $('.feedback-entry-cancel').click(function (event) {
                event.preventDefault();
                $(this).closest('form')[0].reset();
                $(this).closest('form').find('.star-rating').removeClass('checked');
            });
        }
    }
}

STUDIP.ready(function (event) {
    STUDIP.Feedback.initiateFeedbackEntryForm();
    if ($('div.feedback-elements').length) {
        $('div.feedback-elements', event.target).each((index, element) => {
            STUDIP.Feedback.initiate(element);
        });
    }
});