Merge "Yangman - import export parameters"
authorMaxime Millette-Coulombe <mmcoulombe@inocybe.com>
Thu, 11 Aug 2016 21:47:31 +0000 (21:47 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 11 Aug 2016 21:47:31 +0000 (21:47 +0000)
modules/yangman-resources/src/main/resources/yangman/assets/data/locale-en_US.json
modules/yangman-resources/src/main/resources/yangman/controllers/params-admin.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/requests-list.controller.js
modules/yangman-resources/src/main/resources/yangman/models/collectionlist.model.js
modules/yangman-resources/src/main/resources/yangman/models/parameterslist.model.js
modules/yangman-resources/src/main/resources/yangman/services/requests.services.js
modules/yangman-resources/src/main/resources/yangman/services/yangman.services.js
modules/yangman-resources/src/main/resources/yangman/views/popup/parameters-admin.tpl.html
modules/yangman-resources/src/main/resources/yangman/yangman.less

index ed6e278521e553804a57d96476d911ed6b5b27bf..125ad969f4399a6fff0a677af1a8eb79ec1c0608 100644 (file)
@@ -67,6 +67,9 @@
   "YANGMAN_CUST_MOUNT_POINTS": "Display mount points",
   "YANGMAN_CANCEL_MP": "Back from mountpoint",
   "YANGMAN_PLUGINS_MENU": "Plugins menu",
+  "YANGMAN_PARAMS_IMPORT_EXPORT": "Import and export parameters",
+  "YANGMAN_IMPORT_PARAMS": "Import all parameters",
+  "YANGMAN_EXPORT_PARAMETERS": "Export all parameters",
   "YANGMAN_NO_MOUNT_POINT": "No mount points to display",
   "YANGMAN_MOUNT_POINT": "Mount point"
 }
index b66d8c3d74e35b815811c886564eed3fab8fc065..f895d3a5300c1ff8a7434803c568f752f99de70e 100644 (file)
@@ -5,9 +5,9 @@ define([
 
     angular.module('app.yangman').controller('ParamsAdminCtrl', ParamsAdminCtrl);
 
-    ParamsAdminCtrl.$inject = ['$mdDialog', 'parametersList'];
+    ParamsAdminCtrl.$inject = ['$mdDialog', 'YangmanService', 'HandleFileService', 'parametersList'];
 
-    function ParamsAdminCtrl($mdDialog, parametersList) {
+    function ParamsAdminCtrl($mdDialog, YangmanService, HandleFileService, parametersList) {
         var vm = this;
 
         vm.parametersList = parametersList;
@@ -23,10 +23,52 @@ define([
         vm.filterParam = filterParam;
         vm.sortBy = sortBy;
         vm.sortFunc = sortFunc;
+        vm.exportParameters = exportParameters;
+        vm.importParameters = importParameters;
 
 
         init();
 
+        /**
+         * Importing all parameters from json
+         * @param fileContent
+         */
+        function importParameters(fileContent) {
+            if (fileContent && YangmanService.validateFile(fileContent, ['key', 'value'])){
+                try {
+                    vm.parametersList.createParamsFromJson(fileContent);
+                    vm.parametersList.saveToStorage();
+                    angular.element(document).find('#importParameters').val('');
+                    createEmptyParam();
+                }
+                catch (e) {
+                    angular.element(document).find('#importParameters').val('');
+                    console.error('DataStorage error:', e);
+                }
+            }
+            else {
+                angular.element(document).find('#importParameters').val('');
+            }
+
+        }
+
+        /**
+         * Export all parameters to json file
+         */
+        function exportParameters() {
+
+            HandleFileService.downloadFile(
+                'yangman_parameters.json',
+                JSON.stringify(vm.parametersList.toJSON()),
+                'json',
+                'charset=utf-8',
+                function (){},
+                function (e){
+                    console.error('Export parameters error:', e);
+                }
+            );
+        }
+
         /**
          * Set attribute to use when sorting
          * @param sortField
index 02b3b6b5bab8439a4f7e35b8cbb233216150a19f..5c92fa6439151ee266e0b879caab520f9dc5f599 100644 (file)
@@ -95,13 +95,12 @@ define([
                     'receivedData',
                     'path',
                     'collection',
-                    'parametrizedPath',
                     'method',
                     'status',
                     'name',
                 ];
 
-            if (data && RequestsService.validateFile(data, checkArray)){
+            if (data && YangmanService.validateFile(data, checkArray)){
                 try {
                     vm.collectionList.loadListFromFile(data);
                     vm.collectionList.saveToStorage();
index 9607d1f537f73a2c5c519554c902c66762be6179..0871d6ab55af821ba7824b15234f6473abb22979 100644 (file)
@@ -204,7 +204,7 @@ define(
                 if (data){
                     ParsingJsonService.parseJson(data).map(function (elem) {
                         return RequestsService.createHistoryRequest(elem.sentData, elem.receivedData, elem.path,
-                            elem.parametrizedPath, elem.method, elem.status, elem.name, elem.collection);
+                            elem.method, elem.status, elem.name, elem.collection);
                     }).forEach(function (elem) {
                         self.addRequestToList(elem);
                     });
index 397ae2f8b6e392a95e871907442d375c3d0fcb5b..dd40d256d0d19981bc28e00faabc44e62002f82a 100644 (file)
@@ -22,6 +22,34 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
         self.setName = setName;
         self.addEmptyItem = addEmptyItem;
         self.getKeysInArr = getKeysInArr;
+        self.toJSON = toJSON;
+        self.createParamsFromJson = createParamsFromJson;
+
+
+        /**
+         * Using when importing data from json file
+         * @param data
+         */
+        function createParamsFromJson(data){
+            if (data){
+                self.clear();
+                ParsingJsonService.parseJson(data).map(function (elem) {
+                    return ParametersService.createParameter(elem);
+                }).forEach(function (elem) {
+                    self.addRequestToList(elem);
+                });
+            }
+        }
+
+        /**
+         * Get all parameters in json for exporting
+         * @returns {Array}
+         */
+        function toJSON() {
+            return self.list.map(function (param){
+                return param.toJSON();
+            });
+        }
 
         /**
          * Get list of params keys in array
@@ -87,8 +115,6 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
 
         function clear() {
             self.list = [];
-            self.listGroupedByDate = {};
-            self.selectedParameters = [];
         }
 
         /**
index 015466d683c3704f9d08a3b761d646ac579ef4bb..e2c255c9f7485e8a8ac41f400291acaaaa7d46e7 100644 (file)
@@ -19,7 +19,6 @@ define([
         service.createHistoryRequestFromElement = createHistoryRequestFromElement;
         service.createHistoryRequest = createHistoryRequest;
         service.scanDataParams = scanDataParams;
-        service.validateFile = validateFile;
         service.replaceStringInText = replaceStringInText;
 
         /**
@@ -112,25 +111,7 @@ define([
         }
 
 
-        /**
-         * Validating collection import file
-         * @param data
-         * @param checkArray
-         * @returns {*}
-         */
-        function validateFile(data, checkArray){
-            try {
-                var obj = ParsingJsonService.parseJson(data);
 
-                return obj && obj.every(function (el){
-                    return checkArray.every(function (arr){
-                        return el.hasOwnProperty(arr);
-                    });
-                });
-            } catch (e) {
-                return e;
-            }
-        }
 
         /**
          * Service for creating basic history object
index 339a137bf38539274b90fd36fd281e213b2469bf..6c753343831849ef520f4c5fb77fd5e091580f87 100644 (file)
@@ -8,7 +8,9 @@ define([], function () {
         'YangUtilsService',
         'YangUtilsRestangularService',
         'ENV',
+        'ParsingJsonService',
         'RequestsService',
+
     ];
 
     function YangmanService(
@@ -16,6 +18,7 @@ define([], function () {
         YangUtilsService,
         YangUtilsRestangularService,
         ENV,
+        ParsingJsonService,
         RequestsService
     ){
         var service = {
@@ -23,10 +26,31 @@ define([], function () {
             fillNodeFromResponse: fillNodeFromResponse,
             getDataStoreIndex: getDataStoreIndex,
             prepareAllRequestData: prepareAllRequestData,
+            validateFile: validateFile,
         };
 
         return service;
 
+        /**
+         * Validating collection import file
+         * @param data
+         * @param checkArray
+         * @returns {*}
+         */
+        function validateFile(data, checkArray){
+            try {
+                var obj = ParsingJsonService.parseJson(data);
+
+                return obj && obj.every(function (el){
+                    return checkArray.every(function (arr){
+                        return el.hasOwnProperty(arr);
+                    });
+                });
+            } catch (e) {
+                return e;
+            }
+        }
+
         /**
          * Return index of selected datastore in list
          * @param list
index 12a49b85bf794e5708deb1a810e38306291ce604..d40dd8bc314f5f9f5b4462b86bcf50ede5a93a38 100644 (file)
                     <!-- /search icon, form, clear button -->
 
                     <!-- sorting menu -->
-                    <md-menu class="paramsAdminDialog__searchBox__sortMenu"
-                             md-offset="35 15"
-                             layout-align="center start">
+                    <md-menu md-offset="35 15" layout-align="center start">
                         <md-button aria-label="{{'YANGMAN_SORT'| translate}}" class="" ng-click="$mdOpenMenu()">
                             <i class="material-icons">sort</i>
                             <md-tooltip md-direction="bottom">
                                 {{'YANGMAN_SORTING' | translate}}
                             </md-tooltip>
                         </md-button>
-                        <md-menu-content class="reqMenu">
+                        <md-menu-content>
                             <!-- sort by key -->
                             <md-menu-item>
                                 <md-button aria-label="{{'YANGMAN_PARAMS_KEY'| translate}}"
                     </md-menu>
                     <!-- /sorting menu -->
 
+                    <!-- menu for import and export parameters -->
+                    <input type="file" accept=".json" id="importParameters" on-read-file="paramsAdmin.importParameters($fileContent)">
+                    <md-menu md-offset="35 15" layout-align="center start">
+                        <md-button aria-label="{{ 'YANGMAN_PARAMS_IMPORT_EXPORT' | translate }}" ng-click="$mdOpenMenu()">
+                            <i class="material-icons">import_export</i>
+                            <md-tooltip md-direction="bottom">
+                                {{ 'YANGMAN_PARAMS_IMPORT_EXPORT' | translate }}
+                            </md-tooltip>
+                        </md-button>
+                        <md-menu-content>
+                            <md-menu-item>
+                                <md-button>
+                                    <label for="importParameters">
+                                        {{'YANGMAN_IMPORT_PARAMS'| translate}}
+                                    </label>
+                                </md-button>
+                            </md-menu-item>
+                            <md-menu-item>
+                                <md-button aria-label="{{'YANGMAN_EXPORT_PARAMETERS' | translate}}" ng-click="paramsAdmin.exportParameters()">
+                                    {{'YANGMAN_EXPORT_PARAMETERS' | translate}}
+                                </md-button>
+                            </md-menu-item>
+                        </md-menu-content>
+                    </md-menu>
+                    <!-- /menu for import and export parameters -->
+
                 </div>
 
                 <md-divider></md-divider>
index 56544240c05541769e90be067b72f6717cd43534..4451734512e4c02882632341c49ff54bcc06713f 100644 (file)
@@ -120,6 +120,12 @@ md-ink-bar.custom{
     background: @colorActive;
 }
 
+button{
+    label{
+        font-weight: normal;
+    }
+}
+
 // yangman
 .yangmanModule{
     background-color: @appBackColor;
@@ -917,6 +923,16 @@ md-dialog{
             margin-right: 0px!important;
         }
 
+        #importParameters{
+            display: none;
+        }
+
+        label{
+            md-icon{
+                color: @fontColor;
+            }
+        }
+
         md-menu{
             button{
                 margin-top: 5px!important;