Test Failed
Push — master ( 6508c2...e5864c )
by Terzi
14:31
created

AdminArchitect.constructor   A

Complexity

Conditions 2

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 6
c 0
b 0
f 0
dl 0
loc 8
rs 10
1
class AdminArchitect {
2
    constructor() {
3
        [
4
            'Collections', 'BatchActions',
5
            'Fancybox', 'Translatable', 'Translations',
6
        ].map((method) => {
7
            AdminArchitect['handle' + method].call();
8
        });
9
    }
10
11
    static handleTranslatable() {
12
        // When Mui tab is switched it will switch all sibling Mui tabs.
13
        $('a[data-toggle="tab"]', '.nav-translatable').on('shown.bs.tab', function (e) {
14
            let fn = $(e.target),
15
                lc = fn.data('locale');
16
17
            fn.closest('form').find('a[data-locale="' + lc + '"]').tab('show');
18
        });
19
    }
20
21
    static handleTranslations() {
22
        const activate = function (fn) {
23
            fn.addClass('active').siblings('button').removeClass('active');
24
        };
25
26
        $('.global button[data-locale]').click(({target}) => {
27
            const fn = $(target), locale = fn.data('locale');
28
            $(fn).closest('table').find('tbody button[data-locale="' + locale + '"]').each(function (i, button) {
29
                $(button).trigger('click');
30
            });
31
            activate(fn);
32
        });
33
34
        $('tbody button[data-locale]').click(({target}) => {
35
            const fn = $(target), locale = fn.data('locale');
36
            fn.closest('tr').find('.translatable').each((i, e) => {
37
                const item = $(e);
38
                item[item.data('locale') === locale ? 'removeClass' : 'addClass']('hidden');
39
            });
40
            activate(fn);
41
        });
42
    }
43
44
    static handleCollections() {
45
        $(document).on('click', '.toggle-collection', ({target}) => {
46
            const fn = $(target);
47
48
            $('input[type=checkbox].collection-item').each((i, e) => {
49
                $(e).prop('checked', fn.prop('checked'));
50
            });
51
        });
52
    }
53
54
    static handleBatchActions() {
55
        const selected = () => {
56
            return $('input[type=checkbox]:checked.collection-item');
57
        };
58
59
        $(document).on('click', '.batch-actions a[data-action]', ({target}) => {
60
            if (!selected().length) {
61
                return false;
62
            }
63
64
            const $target = $(target);
65
66
            const msg = $target.data('confirmation') || '';
67
            if (msg.length && !window.confirm(msg)) {
68
                return false;
69
            }
70
71
            $('#batch_action').val($target.data('action'));
72
            $('#collection').submit();
73
74
            return false;
75
        });
76
    }
77
78
    static handleFancybox() {
79
        $('.fancybox').fancybox({
80
            afterLoad: function () {
81
                let width, height;
82
                if (width = $(this.element).data('width')) {
83
                    this.width = width;
84
                }
85
86
                if (height = $(this.element).data('height')) {
87
                    this.height = height;
88
                }
89
            },
90
        });
91
    }
92
}
93
94
$(() => new AdminArchitect);
95