summaryrefslogtreecommitdiff
path: root/public/js/modules/group-edit.js
blob: 2d55346dce6c236a988fd210363ef31f86f80093 (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
$(document).ready(function () {
    $.uploadPreview({
        input_field: "#group-image-upload",
        preview_box: "#group-image-preview",
        label_field: "#group-image-label",
        label_default: "Choose file",
        label_selected: "Change file",
        no_label: false,
    });
    autosize($("textarea"));
    if (window.groupData.image) {
        $("#group-image-preview").css(
            "background-image",
            `url('/events/${window.groupData.image}')`,
        );
        $("#group-image-preview").css("background-size", "cover");
        $("#group-image-preview").css("background-position", "center center");
    }
    $("#timezone").val(window.groupData.timezone).trigger("change");
});

function editEventGroupForm() {
    return {
        data: {
            eventGroupName: window.groupData.name,
            eventGroupDescription: window.groupData.description,
            eventGroupURL: window.groupData.url,
            hostName: window.groupData.hostName,
            creatorEmail: window.groupData.creatorEmail,
            publicCheckbox: window.groupData.showOnPublicList,
        },
        init() {
            // Set checkboxes
            this.data.publicCheckbox = window.groupData.showOnPublicList;
        },
        errors: [],
        submitting: false,
        async submitForm() {
            this.submitting = true;
            this.errors = [];
            const formData = new FormData();
            for (const [key, value] of Object.entries(this.data)) {
                formData.append(key, value);
            }
            formData.append(
                "imageUpload",
                this.$refs.eventGroupImageUpload.files[0],
            );
            formData.append("editToken", window.groupData.editToken);
            try {
                const response = await fetch(`/group/${window.groupData.id}`, {
                    method: "PUT",
                    body: formData,
                });
                this.submitting = false;
                if (!response.ok) {
                    if (response.status !== 400) {
                        this.errors = unexpectedError;
                        return;
                    }
                    const json = await response.json();
                    this.errors = json.errors;
                    $("input, textarea").removeClass("is-invalid");
                    this.errors.forEach((error) => {
                        $(`#${error.field}`).addClass("is-invalid");
                    });
                    return;
                }
                window.location.reload();
            } catch (error) {
                console.log(error);
                this.errors = unexpectedError;
                this.submitting = false;
            }
        },
    };
}