aboutsummaryrefslogtreecommitdiff
path: root/src/comments.html
blob: 3d990dab28289ab5e27c63ad94d1336932d15bf0 (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
<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="utf-8">
    <meta name="theme-color" content="#ffffff">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Commenta dashboard</title>

    <style>
      th {
        text-align: left;
      }

      .comment-item {
        padding: 10px 0 30px 0;
        border-bottom: 2px inset gray;
      }
    </style>

  </head>

  <body>

    <h1>Comments</h1>
    <div id="results"></div>

    <script src="https://www.gstatic.com/firebasejs/7.2.1/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.2.1/firebase-database.js"></script>
    <script src="static/comments.js"></script>

    <script>

      // var tableResults = document.querySelector('#results tbody');
      var resultsPlaceholder = document.querySelector('#results');

      function snapshotToArray(snapshot) {
        var returnArr = [];
        snapshot.forEach(function (childSnapshot) {
          var arrItem = childSnapshot.val();
          arrItem.key = childSnapshot.key;
          returnArr.push(arrItem);
        });

        var comments = [];
        returnArr.forEach(function (item) {
          var keys = Object.keys(item);
          for (var key of keys) {
            let group = item.key;
            if (key !== 'key') {
              for (var itemKey of Object.keys(item[key])) {
                item[key][itemKey].slug = key;
                item[key][itemKey].group = group;
                item[key][itemKey].itemKey = itemKey
                comments.push(item[key][itemKey]);
              }
            }
          }
        });

        return comments;
      };

      var path = window.location.hostname.replace('.', '-') + '/comments';
      var ref = firebase.database().ref(path);
      ref.on("value", function (snap) {
        resultsPlaceholder.innerHTML = '';
        var comments = snapshotToArray(snap);
        comments.forEach(function (item) {
          var commentContent = document.createElement('div');

          commentContent.classList.add('comment-item');
          commentContent.innerHTML = `
            <p><b>${item.name} (${item.published})</b><br>
               <i>${item.group}/${item.slug}</i></p>
            <p>${item.comment}</p>
          `;

          var buttonDelete = document.createElement('button');
          buttonDelete.innerText = 'Delete comment';
          buttonDelete.dataset.id = `${window.location.hostname.replace('.', '-')}/comments/${item.group}/${item.slug}/${item.itemKey}`;
          buttonDelete.addEventListener('click', function (evt) {
            if (confirm('Are you sure you want to delete this comment?')) {
              firebase.database().ref(evt.target.dataset.id).remove();
            }
          });

          commentContent.appendChild(buttonDelete);
          resultsPlaceholder.appendChild(commentContent);
        });
      }, function (errorObject) {
        console.log(`The read failed: ${errorObject.code}`);
      });

    </script>

  </body>

</html>