Yangman - cleaned code
[dlux.git] / modules / yangman-resources / src / main / resources / yangman / services / yangman-design.services.js
1 define([], function () {
2     'use strict';
3
4     angular.module('app.yangman').service('YangmanDesignService', YangmanDesignService);
5
6     YangmanDesignService.$inject = ['$timeout'];
7
8     function YangmanDesignService($timeout){
9
10         var service = {
11             disableMdMenuItem: disableMdMenuItem,
12             enableMdMenuItem: enableMdMenuItem,
13             hideMainMenu: hideMainMenu,
14             setDraggableLeftPanel: setDraggableLeftPanel,
15             setJsonSplitter: setJsonSplitter,
16             setModuleDetailHeight: setModuleDetailHeight,
17         };
18
19         return service;
20
21
22         /**
23          * Get button dom element from mdMenuItem ng-click $event
24          * @param event
25          */
26         function getButtElemFromMdMenuItemEvent(event) {
27             var elemSelAttempt = angular.element(event.toElement.parentElement).find('.md-button'),
28                 result = null;
29
30             // if mdMenuItem was clicked, it should contain only one button
31             if (elemSelAttempt.length === 1) {
32                 result = elemSelAttempt[0];
33             }
34             // if span or icon inside button was clicked, button element should be its parent
35             else if (elemSelAttempt.length === 0) {
36                 result = angular.element(event.toElement.parentElement)[0];
37             }
38
39             if (result.nodeName === 'BUTTON') {
40                 return result;
41             }
42             else {
43                 return null;
44             }
45         }
46
47         /**
48          * Disable md menu item on which was clicked in event
49          * Use to prevent accidentally doubleclicking or enterhitting
50          * @param event - $event object from ng-click
51          */
52         function disableMdMenuItem(event) {
53             var buttElem = getButtElemFromMdMenuItemEvent(event);
54             if (buttElem) {
55                 buttElem.disabled = true;
56             }
57         }
58
59
60         /**
61          * Disable md menu item on which was clicked in event
62          * Use to prevent accidentally doubleclicking or enterhitting
63          * @param event - $event object from ng-click
64          */
65         function enableMdMenuItem(event) {
66             var buttElem = getButtElemFromMdMenuItemEvent(event);
67             if (buttElem) {
68                 buttElem.disabled = false;
69             }
70         }
71
72
73         /**
74          * Hide main menu
75          */
76         function hideMainMenu(){
77             $('#wrapper').addClass('toggled');
78         }
79
80         /**
81          * Sets Draggable Left Side
82          * #left-panel
83          */
84         function setDraggableLeftPanel(){
85             if (localStorage.getItem('yangman__left-panel-width') !== null) {
86                 $('#left-panel').width(localStorage.getItem('yangman__left-panel-width'));
87             }
88
89             $('.ym-resizable-e').resizable({
90                 handles: 'e',
91                 minWidth: 300,
92                 stop: function(event, ui) {
93                     if (typeof(Storage) !== 'undefined') {
94                         localStorage.setItem('yangman__left-panel-width', ui.size.width);
95                     }
96                 },
97                 resize: function() {
98                     setModuleDetailHeight();
99                 }
100             });
101         }
102
103         function setJsonSplitter(cbk){
104             $timeout(function () {
105                 $('.ym-resizable-s').resizable({
106                     handles: 's',
107                     minHeight: 200,
108                     stop: function(event, ui) {
109                         cbk();
110                     }
111                 });
112             });
113         }
114
115         /**
116          * Set module detail height
117          * .yangmanModule__module-detail .tabs
118          */
119         function setModuleDetailHeight() {
120             var height = 'calc(100% - ' + $('.yangmanModule__module-detail h4').outerHeight(true) + 'px)';
121             $('.yangmanModule__module-detail .tabs').css({ height: height });
122         }
123
124     }
125 });