liquid_feedback_frontend

view static/js/xhr.js @ 1692:c91d97d1f5ba

Store ids not names for multiselect fields
author bsw
date Wed Sep 22 18:23:30 2021 +0200 (2021-09-22)
parents 4188405c2425
children 048d6bae2855
line source
1 function toggleInterest(issueId) {
2 var linkEl = document.getElementById("issue_" + issueId + "_interest_link");
3 var iconEl = document.getElementById("issue_" + issueId + "_interest_icon");
4 var interested = iconEl.innerHTML == "star_outline";
6 if (interested) {
7 linkEl.classList.add("mdl-button--accent");
8 linkEl.classList.add("mdl-button--feature-on");
9 linkEl.classList.remove("mdl-button--feature-off");
10 iconEl.innerHTML = "star";
11 } else {
12 linkEl.classList.remove("mdl-button--accent");
13 linkEl.classList.remove("mdl-button--feature-on");
14 linkEl.classList.add("mdl-button--feature-off");
15 iconEl.innerHTML = "star_outline";
16 }
18 var data = new FormData();
19 data.append("issue_id", issueId);
20 data.append("interested", interested);
22 fetch(baseURL + "interest/xhr_update", {
23 method: "POST",
24 body: data
25 }).then(response => {
26 if (response.status != 200) {
27 window.alert("Error during update");
28 }
29 });
31 }
33 function rateSuggestion(id, degree, fulfilled) {
34 document.getElementById('rating_suggestion_id').value = id;
35 document.getElementById('rating_degree' + degree).MaterialRadio.check();
36 if (fulfilled) {
37 document.getElementById('rating_fulfilled').MaterialRadio.check();
38 } else if (fulfilled == false) {
39 document.getElementById('rating_notfulfilled').MaterialRadio.check();
40 } else {
41 document.getElementById('rating_fulfilled').MaterialRadio.uncheck();
42 document.getElementById('rating_notfulfilled').MaterialRadio.uncheck();
43 }
44 document.getElementById('rating_dialog').showModal();
45 }
47 function updateOpinion() {
48 var suggestionId = document.getElementById("rating_suggestion_id").value;
50 var degree = 0;
51 if (document.getElementById("rating_degree-2").children[0].checked)
52 degree = -2;
53 else if (document.getElementById("rating_degree-1").children[0].checked)
54 degree = -1;
55 else if (document.getElementById("rating_degree1").children[0].checked)
56 degree = 1;
57 else if (document.getElementById("rating_degree2").children[0].checked)
58 degree = 2;
59 var fulfilled = false;
60 if (document.getElementById("rating_fulfilled").children[0].checked)
61 fulfilled = true;
62 if (degree == 0)
63 fulfilled = null;
64 var data = new FormData();
65 data.append("suggestion_id", suggestionId);
66 data.append("degree", degree);
67 data.append("fulfilled", fulfilled);
69 var degreeText = rateSuggestionDegreeTexts[degree];
70 var fulfilledText = fulfilled ? rateSuggestionFulfilledText : rateSuggestionNotFulfilledText;
71 var andButText;
72 var icon;
73 var iconColor;
74 if (
75 (degree > 0 && ! fulfilled)
76 || (degree < 0 && fulfilled)
77 ) {
78 icon = "warning";
79 if (degree == 2 || degree == -2) {
80 iconColor = "red";
81 }
82 andButText = rateSuggestionButText;
83 } else {
84 andButText = rateSuggestionAndText;
85 icon = "done";
86 }
87 var text = degreeText + " " + andButText + " " + fulfilledText;
88 if (degree == 0) {
89 text = "";
90 icon = "blank";
91 }
92 document.getElementById("s" + suggestionId + "_rating_text").innerHTML = text;
93 document.getElementById("s" + suggestionId + "_rating_icon").innerHTML = icon;
94 if (iconColor == "red") {
95 document.getElementById("s" + suggestionId + "_rating_icon").classList.add("icon-red");
96 } else {
97 document.getElementById("s" + suggestionId + "_rating_icon").classList.remove("icon-red");
98 }
99 if (degree == 0) {
100 document.getElementById("s" + suggestionId + "_rate_button").innerHTML = rateSuggestionRateText;
101 } else {
102 document.getElementById("s" + suggestionId + "_rate_button").innerHTML = rateSuggestionUpdateRatingText;
103 }
104 document.getElementById("s" + suggestionId + "_rate_button").setAttribute("onclick", "rateSuggestion(" + suggestionId + ", " + degree + ", " + fulfilled + ");return false;")
105 document.getElementById('rating_dialog').close();
107 fetch(baseURL + "opinion/xhr_update", {
108 method: "POST",
109 body: data
110 }).then(response => {
111 if (response.status != 200) {
112 window.alert("Error during update");
113 }
114 });
116 }

Impressum / About Us