summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/notes/index.js
blob: 6fd3cee5340d435060f6bb577dbb770e43cbb10a (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
import Vue from 'vue';
import notesApp from './components/notes_app.vue';
import initDiscussionFilters from './discussion_filters';
import initSortDiscussions from './sort_discussions';
import createStore from './stores';

document.addEventListener('DOMContentLoaded', () => {
  const store = createStore();

  // eslint-disable-next-line no-new
  new Vue({
    el: '#js-vue-notes',
    components: {
      notesApp,
    },
    store,
    methods: {
      setData() {
        const notesDataset = this.$el.dataset;
        const parsedUserData = JSON.parse(notesDataset.currentUserData);
        const noteableData = JSON.parse(notesDataset.noteableData);
        let currentUserData = {};

        noteableData.noteableType = notesDataset.noteableType;
        noteableData.targetType = notesDataset.targetType;

        if (parsedUserData) {
          currentUserData = {
            id: parsedUserData.id,
            name: parsedUserData.name,
            username: parsedUserData.username,
            avatar_url: parsedUserData.avatar_path || parsedUserData.avatar_url,
            path: parsedUserData.path,
          };
        }

        return {
          noteableData,
          userData: currentUserData,
          notesData: JSON.parse(notesDataset.notesData),
        };
      },
    },
    render(createElement) {
      return createElement('notes-app', {
        props: { ...this.setData() },
      });
    },
  });

  initDiscussionFilters(store);
  initSortDiscussions(store);
});