Yangman - change json size, focus on new history 97/41397/2
authorStanislav Jamrich <sjamrich@cisco.com>
Wed, 6 Jul 2016 12:38:25 +0000 (14:38 +0200)
committerDaniel Malachovsky <dmalacho@cisco.com>
Thu, 21 Jul 2016 13:08:38 +0000 (15:08 +0200)
- add buttons to increase and decrease font size for jsons
- automatically select newly created request after execution

Change-Id: Idf85db1b1ffbfb50610b2b34ac60c7afecf75d27
Signed-off-by: Stanislav Jamrich <sjamrich@cisco.com>
modules/yangman-resources/src/main/resources/yangman/assets/data/locale-en_US.json
modules/yangman-resources/src/main/resources/yangman/controllers/request-data.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/request-header.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/requests-list.controller.js
modules/yangman-resources/src/main/resources/yangman/models/historylist.model.js
modules/yangman-resources/src/main/resources/yangman/services/requests.services.js
modules/yangman-resources/src/main/resources/yangman/views/rightpanel/detail.tpl.html
modules/yangman-resources/src/main/resources/yangman/yangman.less

index 0fd2746e21f3c1df2a5e646452023ae72b0b0c50..6ac2f53152b96565d3f8f29005e0eb5d3b35f097 100644 (file)
@@ -86,6 +86,6 @@
   "YANGMAN_IS_AUGMENT": "Augments",
   "YANGMAN_LOADING_MODULES": "Loading application modules...",
   "YANGMAN_EXECUTING_REQUEST": "Request is beeing executed...",
-  "YANGMAN_CM_FONT_SIZE_HINT": "Use \"Alt +\" key and \"Alt -\" key in editor to enlarge or reduce json font size",
-  "YANGMAN_CM_HINT_DONT_SHOW": "Got it"
+  "YANGMAN_CM_ENLARGE_FONT_SIZE": "Enlarge json font size (Alt +)",
+  "YANGMAN_CM_REDUCE_FONT_SIZE": "Reduce json font size (Alt -)"
 }
index cb7b7e10484124bd5fb7fae3f866aa1609d891bc..160c990eb60a2bc702a4c884aa66fb3e2c565522 100644 (file)
@@ -6,12 +6,18 @@ define([], function () {
     RequestDataCtrl.$inject = ['$filter', '$mdToast', '$scope', 'RequestsService'];
 
     function RequestDataCtrl($filter, $mdToast, $scope, RequestsService) {
-        var requestData = this;
+        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,
@@ -22,12 +28,13 @@ define([], function () {
             },
             onLoad: function (cmInstance) {
 
+                cmData.cmInstance = cmInstance;
+
                 cmInstance.data = {
                     parameterListObj: $scope.parametersList,
-                    codeFontSize: 14,
                 };
 
-                angular.element(cmInstance.display.wrapper).css('fontSize', cmInstance.data.codeFontSize + 'px');
+                angular.element(cmInstance.display.wrapper).css('fontSize', cmData.cmFontSize + 'px');
 
                 cmInstance.on('changes', function () {
                     if (angular.isFunction(cmInstance.showHint)) {
@@ -48,21 +55,17 @@ define([], function () {
                     if (event.altKey) {
                         switch (event.key){
                             case '+':
-                                if (cmInstance.data.codeFontSize < 30) {
-                                    cmInstance.data.codeFontSize++;
-                                }
+                                incCMFontSize();
                                 angular.element(cmInstance.display.wrapper).css(
                                     'fontSize',
-                                    cmInstance.data.codeFontSize + 'px'
+                                    cmData.cmFontSize + 'px'
                                 );
                                 break;
                             case '-':
-                                if (cmInstance.data.codeFontSize > 5) {
-                                    cmInstance.data.codeFontSize--;
-                                }
+                                decCMFontSize();
                                 angular.element(cmInstance.display.wrapper).css(
                                     'fontSize',
-                                    cmInstance.data.codeFontSize + 'px'
+                                    cmData.cmFontSize + 'px'
                                 );
                                 break;
                         }
@@ -76,7 +79,36 @@ define([], function () {
 
         // methods
         requestData.init = init;
-        requestData.showCMHint = showCMHint;
+        requestData.enlargeCMFont = enlargeCMFont;
+        requestData.reduceCMFont = reduceCMFont;
+
+        function incCMFontSize() {
+            if (cmData.cmFontSize < 30) {
+                cmData.cmFontSize++;
+            }
+        }
+
+        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
@@ -87,28 +119,6 @@ define([], function () {
         }
 
 
-        /**
-         * Show hints for first codemirror instancesk
-         */
-        function showCMHint(type) {
-
-            if (!localStorage.getItem('yangman_cm_hint_got_it')){
-
-                $mdToast.show(
-                    $mdToast.simple()
-                        .textContent($filter('translate')('YANGMAN_CM_FONT_SIZE_HINT'))
-                        .action($filter('translate')('YANGMAN_CM_HINT_DONT_SHOW'))
-                        .position('top right')
-                        .parent(angular.element('.yangmanModule__right-panel__req-data__cm-' + type))
-                        .hideDelay(10000)
-                ).then(function (response){
-                    if (response === 'ok') {
-                        localStorage.setItem('yangman_cm_hint_got_it', 1);
-                    }
-                });
-            }
-        }
-
         /**
          * Initialization
          * @param type
@@ -117,11 +127,8 @@ define([], function () {
             requestData.type = type;
             initEditorOptions();
 
-            showCMHint(type);
-
             $scope.$on('YANGMAN_SET_CODEMIRROR_DATA_' + type, function (event, args){
                 requestData.data = args.params.data;
-                showCMHint(type);
             });
 
             $scope.$on('YANGMAN_GET_CODEMIRROR_DATA_' + type, function (event, args){
index 6950f094e5d134cea59cdc2f4a5780df2f7525bd..a43c9556d7b9679ac82adb0d36006ea6fa932999 100644 (file)
@@ -359,7 +359,9 @@ define([
                     }
                 }
 
-                $scope.rootBroadcast('YANGMAN_SAVE_EXECUTED_REQUEST', historyReq);
+                $scope.rootBroadcast('YANGMAN_SAVE_EXECUTED_REQUEST', historyReq, function (){
+                    $scope.rootBroadcast('YANGMAN_SELECT_THE_NEWEST_REQUEST');
+                });
                 (executeCbk || angular.noop)(historyReq);
 
 
@@ -383,7 +385,11 @@ define([
                     reqInfo.statusText,
                     reqInfo.time
                 );
-                $scope.rootBroadcast('YANGMAN_SAVE_EXECUTED_REQUEST', historyReq);
+                $scope.rootBroadcast('YANGMAN_SAVE_EXECUTED_REQUEST', historyReq, function (){
+                    $scope.rootBroadcast('YANGMAN_SELECT_THE_NEWEST_REQUEST');
+                });
+
+
 
                 //setNodeDataFromRequestData(requestHeader.requestUrl);
 
index 68ce0051e57e7281545e0dbd02054c7746427dd8..5270e7667d5973219d1de5b0da84b914ac384bc2 100644 (file)
@@ -106,12 +106,13 @@ define([
          * @param params
          */
         function saveBcstedHistoryRequest(broadcastEvent, params) {
-            console.debug('params.params', params.params);
 
             vm.requestList.addRequestToList(params.params);
             vm.requestList.groupListByDate();
             vm.requestList.saveToStorage();
             loadHistoryRequests();
+
+            (params.cbk || angular.noop)();
         }
 
         /**
@@ -465,6 +466,11 @@ define([
             refreshCollections();
         }
 
+
+        function selectNewestRequest() {
+            vm.mainList.toggleReqSelection(true, vm.mainList.getNewestRequest());
+        }
+
         /**
          *
          * @param list collectionList or requestList object
@@ -477,6 +483,9 @@ define([
                 $scope.$on('YANGMAN_SAVE_EXECUTED_REQUEST', saveBcstedHistoryRequest);
                 // saving from request header
                 $scope.$on('YANGMAN_SAVE_REQUEST_TO_COLLECTION', saveRequestFromExt);
+                // select newest request
+                $scope.$on('YANGMAN_SELECT_THE_NEWEST_REQUEST', selectNewestRequest);
+
             } else {
                 // saving collections expanded status on refresh
                 $scope.$on('YANGMAN_REFRESH_AND_EXPAND_COLLECTIONS', function(event, params){
index 80095547f82d84a99dc2cf06dcc351f11e1fdf51..9566fa9819ab7b36955f83dbc5f05a0ab0bf5c60 100644 (file)
@@ -7,7 +7,7 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
      * @param ParsingJsonService
      * @param RequestsService
      */
-    function HistoryListModel(ParsingJsonService, RequestsService){
+    function HistoryListModel($filter, ParsingJsonService, RequestsService){
 
         BaseListModel.call(this, ParsingJsonService);
 
@@ -25,6 +25,14 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
         self.groupListByDate = groupListByDate;
         self.selectReqs = selectReqs;
         self.toggleReqSelection = toggleReqSelection;
+        self.getNewestRequest = getNewestRequest;
+
+        /**
+         * Get request with max timestamp (was executed as the last)
+         */
+        function getNewestRequest() {
+            return $filter('orderBy')(self.list, '-timestamp')[0];
+        }
 
         /**
          * Mark reqObj as selected
index e22a6533c7c8d1e99e7173baf20032a69c682af4..4ea00f705a2a319607507d3f31ce6c984e2c5447 100644 (file)
@@ -7,9 +7,9 @@ define([
 
     angular.module('app.yangman').service('RequestsService', RequestsService);
 
-    RequestsService.$inject = ['PathUtilsService', 'ParametersService', 'ParsingJsonService', 'YangUtilsService'];
+    RequestsService.$inject = ['$filter', 'PathUtilsService', 'ParametersService', 'ParsingJsonService', 'YangUtilsService'];
 
-    function RequestsService(PathUtilsService, ParametersService, ParsingJsonService, YangUtilsService){
+    function RequestsService($filter, PathUtilsService, ParametersService, ParsingJsonService, YangUtilsService){
 
         var service = {};
 
@@ -171,7 +171,7 @@ define([
          * @returns {*}
          */
         function createEmptyHistoryList(name){
-            var result = new HistoryListModel(ParsingJsonService, service);
+            var result = new HistoryListModel($filter, ParsingJsonService, service);
             result.setName(name);
             return result;
         }
index f9777bb58e5d5759225b5bae21e6812d561a98e2..d18e9d2e556425d20bd1bbca91dd302e90ae9012 100644 (file)
@@ -30,12 +30,29 @@ style="margin-bottom: 0px!important;"
 
     <!-- Sent data -->
     <div ng-controller="RequestDataCtrl as requestData"
+         layout="column"
          ng-show="main.jsonView.sent"
          ng-init="requestData.init('SENT')"
          ng-class="{'half-size': main.jsonView.received && main.jsonView.sent}"
          class="yangmanModule__right-panel__req-data__cm-SENT ym-resizable-s">
 
-        <h5>{{'YANGMAN_SENT_DATA' | translate}}</h5>
+        <section class="yangmanModule__right-panel__req-data__header" layout="row">
+            <h5 flex>{{'YANGMAN_SENT_DATA' | translate}}</h5>
+            <md-button ng-click="requestData.enlargeCMFont()">
+                <i class="material-icons bigger">text_format</i>
+                <i class="material-icons additional">arrow_drop_up</i>
+                <md-tooltip>
+                    {{ 'YANGMAN_CM_ENLARGE_FONT_SIZE' | translate }}
+                </md-tooltip>
+            </md-button>
+            <md-button ng-click="requestData.reduceCMFont()">
+                <i class="material-icons smaller">text_format</i>
+                <i class="material-icons additional">arrow_drop_down</i>
+                <md-tooltip md-direction="bottom right">
+                    {{ 'YANGMAN_CM_REDUCE_FONT_SIZE' | translate }}
+                </md-tooltip>
+            </md-button>
+        </section>
         <div md-whiteframe="2" ng-include src="globalViewPath + 'rightpanel/request-data.tpl.html'"></div>
     </div>
 
@@ -46,7 +63,23 @@ style="margin-bottom: 0px!important;"
          ng-class="{'half-size': main.jsonView.received && main.jsonView.sent}"
          class="yangmanModule__right-panel__req-data__cm-RECEIVED ym-resizable-s">
 
-        <h5>{{'YANGMAN_RECEIVED_DATA' | translate}}</h5>
+        <section class="yangmanModule__right-panel__req-data__header" layout="row">
+            <h5 flex>{{'YANGMAN_RECEIVED_DATA' | translate}}</h5>
+            <md-button ng-click="requestData.enlargeCMFont()">
+                <i class="material-icons bigger">text_format</i>
+                <i class="material-icons additional">arrow_drop_up</i>
+                <md-tooltip>
+                    {{ 'YANGMAN_CM_ENLARGE_FONT_SIZE' | translate }}
+                </md-tooltip>
+            </md-button>
+            <md-button ng-click="requestData.reduceCMFont()">
+                <i class="material-icons smaller">text_format</i>
+                <i class="material-icons additional">arrow_drop_down</i>
+                <md-tooltip md-direction="bottom right">
+                    {{ 'YANGMAN_CM_REDUCE_FONT_SIZE' | translate }}
+                </md-tooltip>
+            </md-button>
+        </section>
         <div md-whiteframe="2" ng-include src="globalViewPath + 'rightpanel/request-data.tpl.html'"></div>
     </div>
 </section>
index bfc55675068a7f5b0f8d376745218a97a03b7a29..887981708f921988773751ec56bc7db2b9ef8750 100644 (file)
@@ -533,6 +533,38 @@ button{
 
         &__req-data{
 
+            &__header{
+
+                h5{
+                    padding-top: 10px;
+                }
+
+                button{
+                    margin: 0;
+                    margin-bottom: 2px;
+                    min-width: 0!important;
+                    width: 46px;
+
+                    .material-icons{
+                        margin-bottom: 6px;
+                        vertical-align: bottom;
+                    }
+
+                    .bigger{
+                        font-size: 25px;
+                    }
+
+                    .smaller{
+                        font-size: 18px;
+                    }
+
+                    .additional{
+                        margin-left: -15px;
+                        vertical-align: top;
+                    }
+                }
+            }
+
             > div{
                 height: 100%;
                 padding-right: 2px;