aboutsummaryrefslogtreecommitdiffstats
path: root/src/templates/account/image_list.html
blob: 626301609b75255f261de53adf1a4c23e68467f4 (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
{% extends "base.html" %}
{% block content %}
<h2>Images I Own</h2>
<div class="row">
{% for image in images %}
    <div class="col-12 col-md-6 col-lg-4 col-xl-3 mb-3">
        <div class="card h-100">
            <div class="card-header">
                <h3>Image {{image.id}}</h3>
            </div>
            <ul class="list-group list-group-flush h-100">
                <li class="list-group-item">id: {{image.id}}</li>
                <li class="list-group-item">lab: {{image.from_lab.name}}</li>
                <li class="list-group-item">name: {{image.name}}</li>
                <li class="list-group-item">description: {{image.description}}</li>
                <li class="list-group-item">host profile: {{image.host_type.name}}</li>
            </ul>
            <div class="card-footer">
                <button class="btn btn-danger w-100" onclick='delete_image({{image.id}});'
                    data-toggle="modal" data-target="#imageModal">
                    Delete
            </button>
            </div>
        </div>
    </div>
{% empty %}
    <div class="col">
        <p>You don't have any images. You can create an image by creating a snapshot.</p>
    </div>
{% endfor %}
</div>

<h2>Public Images</h2>
<div class="row">
    {% for image in public_images %}
        <div class="col-12 col-md-6 col-lg-4 col-xl-3 mb-3">
            <div class="card h-100">
                <div class="card-header">
                    <h3>Image {{image.id}}</h3>
                </div>
                <ul class="list-group list-group-flush h-100">
                    <li class="list-group-item">id: {{image.id}}</li>
                    <li class="list-group-item">lab: {{image.from_lab.name}}</li>
                    <li class="list-group-item">name: {{image.name}}</li>
                    <li class="list-group-item">description: {{image.description}}</li>
                    <li class="list-group-item">host profile: {{image.host_type.name}}</li>
                </ul>
            </div>
        </div>
    {% empty %}
        <div class="col">
            <p>There are no public images.</p>
        </div>
    {% endfor %}
</div>

<script>
    var current_image_id = -1;
    var used_images = {{used_images|safe|default:"{}"}};
    function delete_image(image_id) {
        current_image_id = image_id;
        var warning_header = document.getElementById("warning_header");
        var warning_text = document.getElementById("warning_text");
        var delete_image_button = document.getElementById("final_delete_b");
        clear(warning_header);
        clear(warning_text);
        if(used_images[image_id]) {
            warning_header.appendChild(
                document.createTextNode("Cannot Delete")
            );
            warning_text.appendChild(
                document.createTextNode("This snapshot is being used in a booking.")
            );
            delete_image_button.disabled = true;
        } else {
            warning_header.appendChild(
                document.createTextNode("Are You Sure?")
            );
            warning_text.appendChild(
                document.createTextNode("This cannot be undone")
            );
            delete_image_button.removeAttribute("disabled");
        }
    }

    function submit_delete_form() {
        var ajaxForm = $("#image_delete_form");
        var formData = ajaxForm.serialize();
        req = new XMLHttpRequest();
        var url = "delete/" + current_image_id;
        req.open("POST", url, true);
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        req.onerror = function() { alert("problem submitting form"); }
        req.send(formData);
    }

    function clear(node) {
        while(node.lastChild) {
            node.removeChild(node.lastChild);
        }
    }
</script>
<div class="modal fade" id="imageModal" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title d-inline float-left">Delete Configuration?</h4>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <form id="image_delete_form">
                {% csrf_token %}
            </form>
            <div class="modal-footer d-flex flex-column">
                <div class="mb-2">
                    <button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
                    <button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#warning">Delete</button>
                </div>
                <div class="collapse w-100 text-center border-top" id="warning">
                    <div class="p-4">
                        <h3 id="warning_header">Are You Sure?</h3>
                        <p id="warning_text">This cannot be undone</p>
                        <button class="btn btn-outline-secondary" data-dismiss="modal">Nevermind</button>
                        <button id="final_delete_b" class="btn btn-danger" data-dismiss="modal" onclick="submit_delete_form();">I'm Sure</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
{% endblock %}