Yangman - changed event strings to constants
[dlux.git] / modules / yangman-resources / src / main / resources / yangman / controllers / request-data.controller.js
index ba9ca4c8a31a213e5325976a0877116bb61e02b0..2064d377d4570ef92e9b92a5bbfc81f78f5a7e18 100644 (file)
@@ -3,89 +3,138 @@ define([], function () {
 
     angular.module('app.yangman').controller('RequestDataCtrl', RequestDataCtrl);
 
-    RequestDataCtrl.$inject = ['$scope', 'RequestsService'];
+    RequestDataCtrl.$inject = ['$filter', '$mdToast', '$scope', 'RequestsService', 'constants'];
 
-    function RequestDataCtrl($scope, RequestsService) {
-        var requestData = this;
+    function RequestDataCtrl($filter, $mdToast, $scope, RequestsService, constants) {
+        var requestData = this,
+            cmData = {
+                cmInstance: null,
+                cmFontSize: 14,
+            };
 
         requestData.paramsArray = [];
+        requestData.data = '';
+        requestData.type = null;
+
 
+        // todo: move all cm staff to directive
         requestData.dataEditorOptions = {
             mode: 'javascript',
             lineNumbers: true,
-            theme: 'eclipse',
-            readOnly: requestData.type === 'RECEIVED',
             lineWrapping: true,
             matchBrackets: true,
-            extraKeys: { 'Ctrl-Space': 'autocomplete' },
-        };
+            extraKeys: {
+                'Ctrl-Space': 'autocomplete',
+            },
+            onLoad: function (cmInstance) {
 
-        requestData.data = '';
-        requestData.type = null;
+                cmData.cmInstance = cmInstance;
 
-        // methods
-        requestData.init = init;
+                cmInstance.data = {
+                    parameterListObj: $scope.parametersList,
+                };
 
+                angular.element(cmInstance.display.wrapper).css('fontSize', cmData.cmFontSize + 'px');
+
+                cmInstance.on('changes', function () {
+                    if (angular.isFunction(cmInstance.showHint)) {
+                        cmInstance.showHint();
+                    }
+                });
+
+                cmInstance.on('cursorActivity', function () {
+                    var lineString = cmInstance.getLine(cmInstance.getCursor().line);
+                    requestData.paramsArray = RequestsService.scanDataParams($scope.parametersList, lineString);
+
+                    if (!$scope.$$phase) {
+                        $scope.$apply();
+                    }
+                });
+
+                cmInstance.on('keydown', function (codemirror, event) {
+                    if (event.altKey) {
+                        switch (event.key){
+                            case '+':
+                                incCMFontSize();
+                                angular.element(cmInstance.display.wrapper).css(
+                                    'fontSize',
+                                    cmData.cmFontSize + 'px'
+                                );
+                                break;
+                            case '-':
+                                decCMFontSize();
+                                angular.element(cmInstance.display.wrapper).css(
+                                    'fontSize',
+                                    cmData.cmFontSize + 'px'
+                                );
+                                break;
+                        }
 
-        function initCMOpts() {
-            requestData.dataEditorOptions.readOnly = requestData.type === 'RECEIVED';
-            requestData.dataEditorOptions.theme = requestData.type === 'RECEIVED' ? 'eclipse-disabled' : 'eclipse';
+                    }
+                });
 
-            if (requestData.type === 'SENT') {
-                requestData.dataEditorOptions.onLoad = function (cmInstance){
-                    cmInstance.data = { parameterListObj: $scope.parametersList || { list: [] } };
 
-                    cmInstance.on('changes', function (){
-                        if (angular.isFunction(cmInstance.showHint)){
-                            cmInstance.showHint();
-                        }
-                    });
+            },
+        };
 
-                    cmInstance.on('cursorActivity', function (){
-                        var lineString = cmInstance.getLine(cmInstance.getCursor().line);
-                        requestData.paramsArray = RequestsService.scanDataParams($scope.parametersList, lineString);
+        // methods
+        requestData.init = init;
+        requestData.enlargeCMFont = enlargeCMFont;
+        requestData.reduceCMFont = reduceCMFont;
 
-                        if (!$scope.$$phase) {
-                            $scope.$apply();
-                        }
-                    });
+        function incCMFontSize() {
+            if (cmData.cmFontSize < 30) {
+                cmData.cmFontSize++;
+            }
+        }
 
-                    cmInstance.refresh();
-                };
+        function decCMFontSize() {
+            if (cmData.cmFontSize > 5) {
+                cmData.cmFontSize--;
             }
         }
 
+        function enlargeCMFont() {
+            incCMFontSize();
+            angular.element(cmData.cmInstance.display.wrapper).css(
+                'fontSize',
+                cmData.cmFontSize + 'px'
+            );
+        }
+
+        function reduceCMFont() {
+            decCMFontSize();
+            angular.element(cmData.cmInstance.display.wrapper).css(
+                'fontSize',
+                cmData.cmFontSize + 'px'
+            );
+        }
+
+        /**
+         * Set code mirror theme and readonly property considering requestData.type
+         */
+        function initEditorOptions() {
+            requestData.dataEditorOptions.theme = requestData.type === constants.REQUEST_DATA_TYPE_RECEIVED ? 'eclipse-disabled' : 'eclipse';
+            requestData.dataEditorOptions.readOnly = requestData.type === constants.REQUEST_DATA_TYPE_RECEIVED;
+        }
+
+
         /**
          * Initialization
          * @param type
          */
         function init(type){
             requestData.type = type;
-            initCMOpts();
+            initEditorOptions();
 
-
-            // watchers
-            $scope.$on('YANGMAN_REFRESH_CM_DATA_' + type, refreshData);
-
-            $scope.$on('YANGMAN_SET_CODEMIRROR_DATA_' + type, function (event, args){
+            $scope.$on(constants.YANGMAN_SET_CODEMIRROR_DATA + type, function (event, args){
                 requestData.data = args.params.data;
             });
 
-            $scope.$on('YANGMAN_GET_CODEMIRROR_DATA_' + type, function (event, args){
+            $scope.$on(constants.YANGMAN_GET_CODEMIRROR_DATA + type, function (event, args){
                 args.params.reqData = requestData.data;
             });
-
         }
-
-        /**
-         * Refresh data using history request service
-         */
-        function refreshData() {
-            requestData.data =
-                $scope.requestToShow.setDataForView(true, $scope.requestToShow[$scope.requestDataToShow]);
-        }
-
     }
 
 });
-