byceps/static/behavior/board.js   A
last analyzed

Complexity

Total Complexity 11
Complexity/F 1.38

Size

Lines of Code 39
Function Count 8

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 11
eloc 23
mnd 3
bc 3
fnc 8
dl 0
loc 39
rs 10
bpm 0.375
cpm 1.375
noi 0
c 0
b 0
f 0
1
onDomReady(() => {
2
3
  const collapsedTextareas = document.querySelectorAll('textarea.collapsed');
4
  collapsedTextareas.forEach(textarea => {
5
    // Expand collapsible text area after receiving focus.
6
    textarea
7
      .addEventListener('focus', () => textarea.classList.remove('collapsed'));
8
9
    // Collapse text area on click on cancel button.
10
    textarea.form.querySelector('button.cancel')
11
      .addEventListener('click', () => textarea.classList.add('collapsed'));
12
  });
13
14
  document.querySelectorAll('[data-action="posting-react"]').forEach(element => {
15
    const indicator_class_name = 'button--reaction-active';
16
    element.addEventListener('click', event => {
17
      if (element.classList.contains(indicator_class_name)) {
18
        fetch(element.dataset.urlRemove, {method: 'DELETE'})
19
          .then(response => {
20
            if (response.status == 204) {
21
              element.dataset.count = parseInt(element.dataset.count) - 1;
22
              element.classList.remove(indicator_class_name);
23
            }
24
          });
25
      } else {
26
        fetch(element.dataset.urlAdd, {method: 'POST'})
27
          .then(response => {
28
            if (response.status == 204) {
29
              element.dataset.count = parseInt(element.dataset.count) + 1;
30
              element.classList.add(indicator_class_name);
31
            }
32
          });
33
      }
34
35
      event.preventDefault();
36
    });
37
  });
38
39
});
40