Resources/public/js/components/threads/edit/main.js   A
last analyzed

Complexity

Total Complexity 19
Complexity/F 1.06

Size

Lines of Code 130
Function Count 18

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 19
dl 0
loc 130
rs 10
c 0
b 0
f 0
cc 0
nc 1
mnd 1
bc 19
fnc 18
bpm 1.0555
cpm 1.0555
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
B main.js ➔ define 0 126 1
1
/*
2
 * This file is part of Sulu.
3
 *
4
 * (c) MASSIVE ART WebServices GmbH
5
 *
6
 * This source file is subject to the MIT license that is bundled
7
 * with this source code in the file LICENSE.
8
 */
9
10
define([
11
    'jquery',
12
    'services/sulucomment/thread-manager',
13
    'services/sulucomment/thread-router'
14
], function($, Manager, Router) {
15
16
    'use strict';
17
18
    return {
19
20
        defaults: {
21
            translations: {
22
                headline: 'sulu_comment.threads'
23
            }
24
        },
25
26
        header: function() {
27
            var buttons = {
28
                save: {},
29
                edit: {
30
                    options: {
31
                        dropdownItems: {
32
                            delete: {
33
                                options: {
34
                                    callback: this.delete.bind(this)
35
                                }
36
                            }
37
                        }
38
                    }
39
                }
40
            };
41
42
            return {
43
                title: function() {
44
                    return this.translations.headline;
45
                }.bind(this),
46
47
                tabs: {
48
                    url: '/admin/content-navigations?alias=threads',
49
                    options: {
50
                        data: function() {
51
                            return this.sandbox.util.extend(false, {}, this.data);
52
                        }.bind(this)
53
                    },
54
                    componentOptions: {
55
                        values: this.data
56
                    }
57
                },
58
59
                toolbar: {
60
                    buttons: buttons
61
                }
62
            };
63
        },
64
65
        loadComponentData: function() {
66
            var promise = $.Deferred();
67
68
            if (!this.options.id) {
69
                promise.resolve({});
70
71
                return promise;
72
            }
73
            Manager.load(this.options.id).done(function(data) {
74
                promise.resolve(data);
75
            });
76
77
            return promise;
78
        },
79
80
        initialize: function() {
81
            this.bindCustomEvents();
82
        },
83
84
        bindCustomEvents: function() {
85
            this.sandbox.on('sulu.header.back', Router.toList);
86
            this.sandbox.on('sulu.tab.dirty', this.enableSave.bind(this));
87
            this.sandbox.on('sulu.toolbar.save', this.save.bind(this));
88
            this.sandbox.on('sulu.tab.data-changed', this.setData.bind(this));
89
        },
90
91
        delete: function() {
92
            this.sandbox.emit('sulu.header.toolbar.item.loading', 'edit');
93
94
            Manager.delete(this.data.id).done(function() {
95
                this.sandbox.emit('sulu.header.toolbar.item.enable', 'edit', false);
96
                Router.toList();
97
            }.bind(this));
98
        },
99
100
        save: function(action) {
101
            this.loadingSave();
102
103
            this.saveTab().then(function(data) {
104
                this.afterSave(action, data);
105
            }.bind(this));
106
        },
107
108
        setData: function(data) {
109
            this.data = data;
110
        },
111
112
        saveTab: function() {
113
            var promise = $.Deferred();
114
115
            this.sandbox.once('sulu.tab.saved', function(savedData) {
116
                this.setData(savedData);
117
118
                promise.resolve(savedData);
119
            }.bind(this));
120
121
            this.sandbox.emit('sulu.tab.save');
122
123
            return promise;
124
        },
125
126
        enableSave: function() {
127
            this.sandbox.emit('sulu.header.toolbar.item.enable', 'save', false);
128
        },
129
130
        loadingSave: function() {
131
            this.sandbox.emit('sulu.header.toolbar.item.loading', 'save');
132
        },
133
134
        afterSave: function(action, data) {
135
            this.sandbox.emit('sulu.header.toolbar.item.disable', 'save', true);
136
            this.sandbox.emit('sulu.header.saved', data);
137
        }
138
    };
139
});
140