aboutsummaryrefslogtreecommitdiffstats
path: root/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js')
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/app.js47
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/controllers/main.js426
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/controllers/selector-controller.js47
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/directives/directives.js60
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/entities/item.js351
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/filters/filters.js41
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/providers/config.js90
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/providers/translations.js353
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/RolesService.js41
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/filenavigator.js199
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/fileuploader.js73
11 files changed, 1728 insertions, 0 deletions
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/app.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/app.js
new file mode 100644
index 000000000..a5a8642bc
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/app.js
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+(function(window, angular, $) {
+ 'use strict';
+ angular.module("abs", ["att.abs","modalServices","ngRoute", 'pascalprecht.translate', 'ngCookies', 'ngSanitize', 'ui-notification',
+ 'ui.grid','ui.grid.pagination','ui.grid.selection', 'ui.grid.exporter', 'ui.grid.edit', 'ui.grid.autoResize',
+ 'ui.grid.resizeColumns', 'ui.grid.treeView']);
+ /**
+ * jQuery inits
+ */
+ $(window.document).on('shown.bs.modal', '.modal', function() {
+ window.setTimeout(function() {
+ $('[autofocus]', this).focus();
+ }.bind(this), 100);
+ });
+
+ $(window.document).on('click', function() {
+ $('#context-menu').hide();
+ });
+
+ $(window.document).on('contextmenu', '.main-navigation .table-files td:first-child, .iconset a.thumbnail', function(e) {
+ $('#context-menu').hide().css({
+ left: e.pageX,
+ top: e.pageY
+ }).show();
+ e.preventDefault();
+ });
+
+})(window, angular, jQuery);
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/controllers/main.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/controllers/main.js
new file mode 100644
index 000000000..8153d679a
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/controllers/main.js
@@ -0,0 +1,426 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+(function(window, angular, $) {
+ 'use strict';
+ angular.module('abs').controller('FileManagerCtrl', [
+ '$scope', '$q', '$window', '$translate', '$cookies', 'fileManagerConfig', 'item', 'fileNavigator', 'fileUploader', 'AdminTabService', 'RolesService', 'Notification', 'PolicyDictionaryService', 'PapUrlService',
+ function($scope, $q, $Window, $translate, $cookies, fileManagerConfig, Item, FileNavigator, FileUploader, AdminTabService, RolesService, Notification, PolicyDictionaryService, PapUrlService ) {
+
+ $scope.isDisabled = true;
+ $scope.superAdminId = false;
+ $scope.exportPolicyId = false;
+ $scope.importPolicyId = false;
+ $scope.createScopeId = false;
+ $scope.deleteScopeId = false;
+ $scope.renameId = false;
+ $scope.createPolicyId = false;
+ $scope.cloneId = false;
+ $scope.editPolicyId = false;
+ $scope.switchVersionId = false;
+ $scope.describePolicyId = false;
+ $scope.viewPolicyId = false;
+ $scope.deletePolicyId = false;
+ AdminTabService.getData().then(function(data){
+ var j = data;
+ $scope.data = JSON.parse(j.data);
+ $scope.lockdowndata = JSON.parse($scope.data.lockdowndata);
+ if($scope.lockdowndata[0].lockdown == true){
+ $scope.isDisabled = true;
+ }else{
+ $scope.isDisabled = false;
+ }
+ console.log($scope.data);
+ },function(error){
+ console.log("failed");
+ });
+ var papUrl;
+ PapUrlService.getPapUrl().then(function(data) {
+ var config = data;
+ papUrl = config.PAP_URL;
+ console.log(papUrl);
+ PolicyDictionaryService.getDescriptiveDictionaryData(papUrl).then(function(data){
+ var j = data;
+ $scope.data = JSON.parse(j.data);
+ console.log($scope.data);
+ $scope.descriptiveScopeDictionaryDatas = JSON.parse($scope.data.descriptiveScopeDictionaryDatas);
+ }, function (error) {
+ console.log("failed");
+ });
+
+ PolicyDictionaryService.getEcompDictionaryData(papUrl).then(function(data){
+ var j = data;
+ $scope.data = JSON.parse(j.data);
+ console.log($scope.data);
+ $scope.ecompNameDictionaryDatas = JSON.parse($scope.data.ecompNameDictionaryDatas);
+ }, function (error) {
+ console.log("failed");
+ });
+
+ PolicyDictionaryService.getVSCLActionDictionaryData(papUrl).then(function(data){
+ var j = data;
+ $scope.data = JSON.parse(j.data);
+ console.log($scope.data);
+ $scope.vsclActionDictionaryDatas = JSON.parse($scope.data.vsclActionDictionaryDatas);
+ }, function (error) {
+ console.log("failed");
+ });
+
+ PolicyDictionaryService.getVnfTypeDictionaryData(papUrl).then(function(data){
+ var j = data;
+ $scope.data = JSON.parse(j.data);
+ console.log($scope.data);
+ $scope.vnfTypeDictionaryDatas = JSON.parse($scope.data.vnfTypeDictionaryDatas);
+ }, function (error) {
+ console.log("failed");
+ });
+ });
+
+ RolesService.getRolesData().then(function (data) {
+ var j = data;
+ $scope.data = JSON.parse(j.data);
+ console.log($scope.data);
+ $scope.userRolesDatas = JSON.parse($scope.data.userRolesDatas);
+ console.log($scope.userRolesDatas);
+ if($scope.userRolesDatas[0] == 'super-admin'){
+ $scope.superAdminId = true;
+ $scope.exportPolicyId = true;
+ $scope.importPolicyId = true;
+ $scope.createScopeId = true;
+ $scope.deleteScopeId = true;
+ $scope.renameId = true;
+ $scope.createPolicyId = true;
+ $scope.cloneId = true;
+ $scope.editPolicyId = true;
+ $scope.switchVersionId = true;
+ $scope.describePolicyId = true;
+ $scope.viewPolicyId = true;
+ $scope.deletePolicyId = true;
+ }else if($scope.userRolesDatas[0] == 'super-editor' || $scope.userRolesDatas[0] == 'editor'){
+ $scope.exportPolicyId = true;
+ $scope.importPolicyId = true;
+ $scope.cloneId = true;
+ $scope.editPolicyId = true;
+ $scope.createPolicyId = true;
+ $scope.cloneId = true;
+ $scope.editPolicyId = true;
+ $scope.switchVersionId = true;
+ $scope.describePolicyId = true;
+ $scope.viewPolicyId = true;
+ $scope.deletePolicyId = true;
+ }else if($scope.userRolesDatas[0] == 'super-guest' || $scope.userRolesDatas[0] == 'guest'){
+ $scope.describePolicyId = true;
+ $scope.viewPolicyId = true;
+ }else if($scope.userRolesDatas[0] == 'admin'){
+ $scope.exportPolicyId = true;
+ $scope.importPolicyId = true;
+ $scope.createScopeId = true;
+ $scope.renameId = true;
+ $scope.createPolicyId = true;
+ $scope.cloneId = true;
+ $scope.editPolicyId = true;
+ $scope.switchVersionId = true;
+ $scope.describePolicyId = true;
+ $scope.viewPolicyId = true;
+ $scope.deletePolicyId = true;
+ }
+ }, function (error) {
+ console.log("failed");
+ });
+
+ $scope.config = fileManagerConfig;
+ $scope.reverse = false;
+ $scope.predicate = ['model.type', 'model.name'];
+ $scope.order = function(predicate) {
+ $scope.reverse = ($scope.predicate[1] === predicate) ? !$scope.reverse : false;
+ $scope.predicate[1] = predicate;
+ };
+
+ $scope.query = '';
+ $scope.temp = new Item();
+ $scope.fileNavigator = new FileNavigator();
+ $scope.fileUploader = FileUploader;
+ $scope.uploadFileList = [];
+ $scope.viewTemplate = $cookies.viewTemplate || 'main-table.html';
+
+ $scope.setTemplate = function(name) {
+ $scope.viewTemplate = $cookies.viewTemplate = name;
+ };
+
+ $scope.changeLanguage = function (locale) {
+ if (locale) {
+ return $translate.use($cookies.language = locale);
+ }
+ $translate.use($cookies.language || fileManagerConfig.defaultLang);
+ };
+
+ $scope.touch = function(item) {
+ item = item instanceof Item ? item : new Item();
+ item.revert();
+ $scope.temp = item;
+ };
+
+ $scope.smartClick = function(item) {
+ if (item.isFolder()) {
+ return $scope.fileNavigator.folderClick(item);
+ }
+ if (item.isImage()) {
+ return $scope.openImagePreview(item);
+ }
+ if (item.isEditable()) {
+ return $scope.openEditItem(item);
+ }
+ };
+
+ $scope.openImagePreview = function(item) {
+ item.inprocess = true;
+ $scope.modal('imagepreview')
+ .find('#imagepreview-target')
+ .attr('src', item.getUrl(true))
+ .unbind('load error')
+ .on('load error', function() {
+ item.inprocess = false;
+ $scope.$apply();
+ });
+ return $scope.touch(item);
+ };
+
+ $scope.openEditItem = function(item) {
+ item.getContent();
+ $scope.modal('createNewPolicy');
+ return $scope.touch(item);
+ };
+
+ $scope.modal = function(id, hide) {
+ return $('#' + id).modal(hide ? 'hide' : 'show');
+ };
+
+ $scope.isInThisPath = function(path) {
+ var currentPath = $scope.fileNavigator.currentPath.join('/');
+ return currentPath.indexOf(path) !== -1;
+ };
+
+ $scope.edit = function(item) {
+ item.edit().then(function() {
+ $scope.modal('createNewPolicy', true);
+ });
+ };
+
+ $scope.createNewPolicy = function(item) {
+ item.createNewPolicy().then(function() {
+ $scope.modal('createNewPolicy', true);
+ });
+ };
+
+ $scope.watch = function(item){
+ var uuu = "watchPolicy";
+ var data = {name : item.model.name,
+ path : item.model.path};
+ var postData={watchData: data};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){
+ $scope.watchData=data.watchData;});
+ Notification.success($scope.watchData);
+ console.log($scope.watchData);
+ },
+ error : function(data){
+ alert("Error while saving.");
+ }
+ });
+ };
+
+ $scope.Search = function(search){
+ var deferred = $q.defer();
+ var uuu = "searchPolicy";
+ var postData = {searchdata : search};
+ $.ajax({
+ type : 'POST',
+ url : uuu,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(postData),
+ success : function(data){
+ $scope.$apply(function(){
+ $scope.searchdata=data.result;});
+ if($scope.searchdata[0].error != undefined){
+ Notification.info($scope.searchdata[0].error);
+ }else{
+ var j = data;
+ $scope.data = JSON.stringify(data.result);
+ $scope.searchDatas = JSON.parse($scope.data);
+ var searchString = "Policies List" + "<br>";
+ var i;
+ for(i = 0 ; i < $scope.searchDatas.length; i++){
+ searchString += $scope.searchDatas[i].name + ".xml" + "<br>";
+ }
+ var myWindow = window.open("", "MsgWindow", "width=500,height=500");
+ myWindow.document.write("<p>Search List</p>");
+ myWindow.document.write("<p>"+searchString+"</p>");
+ }
+ },
+ error : function(data){
+ alert("Error while Searching.");
+ }
+ });
+ };
+
+
+ $scope.describePolicy = function(item){
+ item.describePolicy().then(function(){
+ $scope.modal('describePolicy', true);
+ });
+ };
+
+ $scope.exportPolicy = function(item){
+ item.exportPolicy().then(function(){
+ $scope.modal('exportPolicy', true);
+ });
+ };
+
+ $scope.switchVersion = function(item){
+ if ($scope.fileNavigator.fileNameExists(item.tempModel.content.activeVersion)) {
+ item.error = $translate.instant('error_invalid_filename');
+ return false;
+ }
+ item.getSwitchVersionContent().then(function(){
+ $scope.fileNavigator.refresh();
+ $scope.modal('switchVersion', true);
+ });
+ };
+
+
+ $scope.viewPolicy = function(item){
+ item.viewPolicy().then(function(){
+ $scope.modal('createNewPolicy', true);
+ });
+ };
+
+ $scope.copy = function(item) {
+ var samePath = item.tempModel.path.join() === item.model.path.join();
+ if (samePath && $scope.fileNavigator.fileNameExists(item.tempModel.name)) {
+ item.error = $translate.instant('error_invalid_filename');
+ return false;
+ }
+ item.copy().then(function() {
+ $scope.fileNavigator.refresh();
+ $scope.modal('copy', true);
+ });
+ };
+
+ $scope.remove = function(item) {
+ item.remove().then(function() {
+ $scope.fileNavigator.refresh();
+ $scope.modal('delete', true);
+ });
+ };
+
+ $scope.removePolicy = function(item) {
+ item.removePolicy().then(function() {
+ $scope.fileNavigator.refresh();
+ $scope.modal('deletePolicy', true);
+ });
+ };
+
+ $scope.rename = function(item) {
+ var samePath = item.tempModel.path.join() === item.model.path.join();
+ if (samePath && $scope.fileNavigator.fileNameExists(item.tempModel.name)) {
+ item.error = $translate.instant('error_invalid_filename');
+ return false;
+ }
+ item.rename().then(function() {
+ $scope.fileNavigator.refresh();
+ $scope.modal('rename', true);
+ });
+ };
+
+ $scope.move = function(item) {
+ var samePath = item.tempModel.path.join() === item.model.path.join();
+ if (samePath && $scope.fileNavigator.fileNameExists(item.tempModel.name)) {
+ item.error = $translate.instant('error_invalid_filename');
+ return false;
+ }
+ item.move().then(function() {
+ $scope.fileNavigator.refresh();
+ $scope.modal('move', true);
+ });
+ };
+
+ $scope.createFolder = function(item) {
+ var name = item.tempModel.name && item.tempModel.name.trim();
+ item.tempModel.type = 'dir';
+ item.tempModel.path = $scope.fileNavigator.currentPath;
+ if (name && !$scope.fileNavigator.fileNameExists(name)) {
+ item.createFolder().then(function() {
+ $scope.fileNavigator.refresh();
+ $scope.modal('newfolder', true);
+ });
+ } else {
+ item.error = $translate.instant('error_invalid_filename');
+ return false;
+ }
+ };
+
+ $scope.subScopeFolder = function(item) {
+ var name = item.tempModel.name +"\\" + item.tempModel.subScopename && item.tempModel.name.trim() + "\\"+item.tempModel.subScopename.trim() ;
+ item.tempModel.type = 'dir';
+ item.tempModel.path = $scope.fileNavigator.currentPath;
+ if (name && !$scope.fileNavigator.fileNameExists(name)) {
+ item.getScopeContent().then(function() {
+ $scope.fileNavigator.refresh();
+ $scope.modal('addSubScope', true);
+ });
+ } else {
+ item.error = $translate.instant('error_invalid_filename');
+ return false;
+ }
+ };
+
+ $scope.uploadFiles = function() {
+ $scope.fileUploader.upload($scope.uploadFileList, $scope.fileNavigator.currentPath).then(function() {
+ $scope.fileNavigator.refresh();
+ $scope.modal('uploadfile', true);
+ }, function(data) {
+ var errorMsg = data.result && data.result.error || $translate.instant('error_uploading_files');
+ $scope.temp.error = errorMsg;
+ });
+ };
+
+ $scope.getQueryParam = function(param) {
+ var found;
+ window.location.search.substr(1).split('&').forEach(function(item) {
+ if (param === item.split('=')[0]) {
+ found = item.split('=')[1];
+ return false;
+ }
+ });
+ return found;
+ };
+
+ $scope.changeLanguage($scope.getQueryParam('lang'));
+ $scope.isWindows = $scope.getQueryParam('server') === 'Windows';
+ $scope.fileNavigator.refresh();
+ }]);
+})(window, angular, jQuery);
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/controllers/selector-controller.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/controllers/selector-controller.js
new file mode 100644
index 000000000..e775534c1
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/controllers/selector-controller.js
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+(function(angular, $) {
+ 'use strict';
+ angular.module('abs').controller('ModalFileManagerCtrl',
+ ['$scope', '$rootScope', 'fileNavigator',
+ function($scope, $rootScope, FileNavigator) {
+
+ $scope.reverse = false;
+ $scope.predicate = ['model.type', 'model.name'];
+ $scope.order = function(predicate) {
+ $scope.reverse = ($scope.predicate[1] === predicate) ? !$scope.reverse : false;
+ $scope.predicate[1] = predicate;
+ };
+
+ $scope.fileNavigator = new FileNavigator();
+ $rootScope.select = function(item, temp) {
+ temp.tempModel.path = item.model.fullPath().split('/');
+ $('#selector').modal('hide');
+ };
+
+ $rootScope.openNavigator = function(item) {
+ $scope.fileNavigator.currentPath = item.model.path.slice();
+ $scope.fileNavigator.refresh();
+ $('#selector').modal('show');
+ };
+
+ }]);
+})(angular, jQuery); \ No newline at end of file
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/directives/directives.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/directives/directives.js
new file mode 100644
index 000000000..861f32ac5
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/directives/directives.js
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+(function(angular) {
+ 'use strict';
+ var app = angular.module('abs');
+
+ app.directive('angularFilemanager', ['$parse', 'fileManagerConfig', function($parse, fileManagerConfig) {
+ return {
+ restrict: 'EA',
+ templateUrl: fileManagerConfig.tplPath + '/main.html'
+ };
+ }]);
+
+ app.directive('ngFile', ['$parse', function($parse) {
+ return {
+ restrict: 'A',
+ link: function(scope, element, attrs) {
+ var model = $parse(attrs.ngFile);
+ var modelSetter = model.assign;
+
+ element.bind('change', function() {
+ scope.$apply(function() {
+ modelSetter(scope, element[0].files);
+ });
+ });
+ }
+ };
+ }]);
+
+ app.directive('ngRightClick', ['$parse', function($parse) {
+ return function(scope, element, attrs) {
+ var fn = $parse(attrs.ngRightClick);
+ element.bind('contextmenu', function(event) {
+ scope.$apply(function() {
+ event.preventDefault();
+ fn(scope, {$event: event});
+ });
+ });
+ };
+ }]);
+
+})(angular);
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/entities/item.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/entities/item.js
new file mode 100644
index 000000000..709404e8c
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/entities/item.js
@@ -0,0 +1,351 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+(function(window, angular, $) {
+ 'use strict';
+ angular.module('abs').factory('item', ['$http', '$q', '$translate', 'fileManagerConfig', function($http, $q, $translate, fileManagerConfig) {
+
+ var Item = function(model, path) {
+ var rawModel = {
+ name: model && model.name || '',
+ subScopename: model && model.subScopename || '',
+ path: path || [],
+ type: model && model.type || 'file',
+ size: model && parseInt(model.size || 0),
+ date: parseMySQLDate(model && model.date),
+ version: model && model.version || '',
+ createdBy: model && model.createdBy || '',
+ modifiedBy: model && model.modifiedBy || '',
+ content: model && model.content || '',
+ recursive: false,
+ sizeKb: function() {
+ return Math.round(this.size / 1024, 1);
+ },
+ fullPath: function() {
+ if(this.version == ""){
+ return ('/' + this.path.join('/') + '/' + this.name).replace(/\/\//, '/');
+ }else{
+ return ('/' + this.path.join('/') + '/' + this.name + '.' + this.version + '.xml').replace(/\/\//, '/');
+ }
+ }
+ };
+
+ this.error = '';
+ this.inprocess = false;
+
+ this.model = angular.copy(rawModel);
+ this.tempModel = angular.copy(rawModel);
+
+ function parseMySQLDate(mysqlDate) {
+ var d = (mysqlDate || '').toString().split(/[- :]/);
+ return new Date(d[0], d[1] - 1, d[2], d[3], d[4], d[5]);
+ }
+ };
+
+ Item.prototype.update = function() {
+ angular.extend(this.model, angular.copy(this.tempModel));
+ };
+
+ Item.prototype.revert = function() {
+ angular.extend(this.tempModel, angular.copy(this.model));
+ this.error = '';
+ };
+
+ Item.prototype.deferredHandler = function(data, deferred, defaultMsg) {
+ if (!data || typeof data !== 'object') {
+ this.error = 'Bridge response error, please check the docs';
+ }
+ if (data.result && data.result.error) {
+ this.error = data.result.error;
+ }
+ if (!this.error && data.error) {
+ this.error = data.error.message;
+ }
+ if (!this.error && defaultMsg) {
+ this.error = defaultMsg;
+ }
+ if (this.error) {
+ return deferred.reject(data);
+ }
+ this.update();
+ return deferred.resolve(data);
+ };
+
+ Item.prototype.createFolder = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'ADDFOLDER',
+ path: self.tempModel.path.join('/'),
+ name: self.tempModel.name
+ }};
+
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.createFolderUrl, data).success(function(data) {
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_creating_folder'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+
+ return deferred.promise;
+ };
+
+ Item.prototype.rename = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'RENAME',
+ path: self.model.fullPath(),
+ newPath: self.tempModel.fullPath()
+ }};
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.renameUrl, data).success(function(data) {
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_renaming'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+
+ Item.prototype.move = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'RENAME',
+ path: self.model.fullPath(),
+ newPath: self.tempModel.fullPath()
+ }};
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.renameUrl, data).success(function(data) {
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_moving'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+ Item.prototype.copy = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'COPY',
+ path: self.model.fullPath(),
+ newPath: self.tempModel.fullPath()
+ }};
+
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.copyUrl, data).success(function(data) {
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_copying'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+
+ Item.prototype.getContent = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'EDITFILE',
+ path: self.tempModel.fullPath()
+ }};
+
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.getContentUrl, data).success(function(data) {
+ self.tempModel.content = self.model.content = data.result;
+ var json = data.result;
+ var policy = JSON.parse(json);
+ self.policy = policy;
+ console.log(policy);
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_getting_content'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+ Item.prototype.getViewPolicyContent = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'VIEWPOLICY',
+ path: self.tempModel.fullPath()
+ }};
+
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.viewPolicyUrl, data).success(function(data) {
+ self.tempModel.content = self.model.content = data.result;
+ var json = data.result;
+ var policy = JSON.parse(json);
+ self.policy = policy;
+ console.log(data.result);
+ console.log(policy);
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_getting_content'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+ Item.prototype.getSwitchVersionContent = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'SWITCHVERSION',
+ path: self.tempModel.fullPath(),
+ activeVersion : self.tempModel.content.activeVersion,
+ highestVersion : self.tempModel.content.highestVersion
+ }};
+
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.switchVersionUrl, data).success(function(data) {
+ self.tempModel.content = self.model.content = data;
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_getting_content'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+ Item.prototype.getDescribePolicyContent = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'DESCRIBEPOLICYFILE',
+ path: self.tempModel.fullPath()
+ }};
+
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.describePolicyUrl, data).success(function(data) {
+ self.tempModel.content = self.model.content = data.html;
+ var describeTemplate = self.tempModel.content;
+
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_getting_content'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+ Item.prototype.getScopeContent = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'ADDSUBSCOPE',
+ name: self.tempModel.name,
+ subScopename: self.tempModel.subScopename,
+ path: self.tempModel.fullPath()
+ }};
+
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.addSubScopeUrl, data).success(function(data) {
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_adding_Scope'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+ Item.prototype.remove = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'DELETE',
+ path: self.tempModel.fullPath(),
+ deleteVersion : self.model.versions
+ }};
+
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.removeUrl, data).success(function(data) {
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_deleting'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+ Item.prototype.removePolicy = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var data = {params: {
+ mode: 'DELETE',
+ path: self.tempModel.fullPath(),
+ deleteVersion : self.model.versions
+ }};
+
+ self.inprocess = true;
+ self.error = '';
+ $http.post(fileManagerConfig.removeUrl, data).success(function(data) {
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, $translate.instant('error_deleting'));
+ })['finally'](function() {
+ self.inprocess = false;
+ });
+ return deferred.promise;
+ };
+
+ Item.prototype.isFolder = function() {
+ return this.model.type === 'dir';
+ };
+
+ Item.prototype.isEditable = function() {
+ return !this.isFolder() && fileManagerConfig.isEditableFilePattern.test(this.model.name);
+ };
+
+ Item.prototype.isImage = function() {
+ return fileManagerConfig.isImageFilePattern.test(this.model.name);
+ };
+
+ return Item;
+ }]);
+})(window, angular, jQuery);
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/filters/filters.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/filters/filters.js
new file mode 100644
index 000000000..895b7ab5b
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/filters/filters.js
@@ -0,0 +1,41 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+(function(angular) {
+ 'use strict';
+ var app = angular.module('abs');
+
+ app.filter('strLimit', ['$filter', function($filter) {
+ return function(input, limit) {
+ if (input.length <= limit) {
+ return input;
+ }
+ return $filter('limitTo')(input, limit) + '...';
+ };
+ }]);
+
+ app.filter('formatDate', ['$filter', function() {
+ return function(input) {
+ return input instanceof Date ?
+ input.toISOString().substring(0, 19).replace('T', ' ') :
+ (input.toLocaleString || input.toString).apply(input);
+ };
+ }]);
+})(angular);
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/providers/config.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/providers/config.js
new file mode 100644
index 000000000..f861dd5a1
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/providers/config.js
@@ -0,0 +1,90 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+(function(angular) {
+ 'use strict';
+
+ angular.module('abs').provider('fileManagerConfig', function() {
+
+ var values = {
+ appName: 'Policy Editor',
+ defaultLang: 'en',
+ listUrl: 'fm/listUrl',
+ uploadUrl: 'fm/uploadUrl',
+ renameUrl: 'fm/renameUrl',
+ copyUrl: 'fm/copyUrl',
+ removeUrl: 'fm/removeUrl',
+ editUrl: 'fm/editUrl',
+ getContentUrl: 'fm/getContentUrl',
+ createFolderUrl: 'fm/createFolderUrl',
+ downloadFileUrl: 'fm/downloadFileUrl',
+ compressUrl: 'fm/compressUrl',
+ extractUrl: 'fm/extractUrl',
+ permissionsUrl: 'fm/permissionsUrl',
+ describePolicyUrl : 'fm/describePolicyUrl',
+ viewPolicyUrl : 'fm/viewPolicyUrl',
+ addSubScopeUrl : 'fm/addSubScopeUrl',
+ switchVersionUrl : 'fm/switchVersionUrl',
+ exportUrl : 'fm/exportUrl',
+
+ sidebar: true,
+ breadcrumb: true,
+ allowedActions: {
+ upload: true,
+ rename: true,
+ copy: true,
+ edit: true,
+ describePolicy: true,
+ createNewPolicy: true,
+ viewPolicy: true,
+ changePermissions: true,
+ compress: true,
+ compressChooseName: true,
+ extract: true,
+ download: true,
+ preview: true,
+ remove: true,
+ addSubScope : true,
+ switchVersion : true,
+ exportPolicy : true,
+ removePolicy : true
+ },
+
+ enablePermissionsRecursive: true,
+ compressAsync: true,
+ extractAsync: true,
+
+ isEditableFilePattern: /\.(txt|html?|aspx?|ini|pl|py|md|css|js|log|htaccess|htpasswd|json|sql|xml|xslt?|sh|rb|as|bat|cmd|coffee|php[3-6]?|java|c|cbl|go|h|scala|vb)$/i,
+ isImageFilePattern: /\.(jpe?g|gif|bmp|png|svg|tiff?)$/i,
+ isExtractableFilePattern: /\.(gz|tar|rar|g?zip)$/i,
+ tplPath: 'app/policyApp/policy-models/Editor/src/templates'
+ };
+
+ return {
+ $get: function() {
+ return values;
+ },
+ set: function (constants) {
+ angular.extend(values, constants);
+ }
+ };
+
+ });
+})(angular);
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/providers/translations.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/providers/translations.js
new file mode 100644
index 000000000..394781cd4
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/providers/translations.js
@@ -0,0 +1,353 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+angular.module('abs').config(['$translateProvider', function($translateProvider) {
+ $translateProvider.translations('en', {
+ filemanager: 'File Manager',
+ language: 'Language',
+ english: 'English',
+ spanish: 'Spanish',
+ portuguese: 'Portuguese',
+ french: 'French',
+ confirm: 'Confirm',
+ cancel: 'Cancel',
+ close: 'Close',
+ upload_file: 'Import',
+ files_will_uploaded_to: 'Files will be uploaded to',
+ uploading: 'Uploading',
+ permissions: 'Permissions',
+ select_destination_folder: 'Select the destination folder',
+ source: 'Source',
+ destination: 'Destination',
+ copy_file: 'Copy file',
+ sure_to_delete: 'Are you sure to delete',
+ change_name_move: 'Change name / move',
+ enter_new_name_for: 'Enter new name for',
+ extract_item: 'Extract item',
+ extraction_started: 'Extraction started in a background process',
+ compression_started: 'Compression started in a background process',
+ enter_folder_name_for_extraction: 'Enter the folder name for the extraction of',
+ enter_folder_name_for_compression: 'Enter the folder name for the compression of',
+ toggle_fullscreen: 'Toggle fullscreen',
+ edit_file: 'Edit file',
+ file_content: 'File content',
+ loading: 'Loading',
+ search: 'Search',
+ create_folder: 'Add Scope',
+ create: 'Create',
+ folder_name: 'Folder name',
+ upload: 'Upload',
+ change_permissions: 'Change permissions',
+ change: 'Change',
+ details: 'Details',
+ icons: 'Icons',
+ list: 'List',
+ name: 'Name',
+ size: 'Size',
+ actions: 'Actions',
+ date: 'Date',
+ no_files_in_folder: 'No files in this folder',
+ no_folders_in_folder: 'This folder not contains children folders',
+ select_this: 'Select this',
+ go_back: 'Go back',
+ wait: 'Wait',
+ move: 'Move',
+ download: 'Download',
+ view_item: 'View item',
+ remove: 'Delete',
+ edit: 'Edit',
+ copy: 'Copy',
+ rename: 'Rename',
+ extract: 'Extract',
+ compress: 'Compress',
+ error_invalid_filename: 'Invalid filename or already exists, specify another name',
+ error_modifying: 'An error occurred modifying the file',
+ error_deleting: 'An error occurred deleting the file or folder',
+ error_renaming: 'An error occurred renaming the file',
+ error_copying: 'An error occurred copying the file',
+ error_compressing: 'An error occurred compressing the file or folder',
+ error_extracting: 'An error occurred extracting the file',
+ error_creating_folder: 'An error occurred creating the folder',
+ error_getting_content: 'An error occurred getting the content of the file',
+ error_changing_perms: 'An error occurred changing the permissions of the file',
+ error_uploading_files: 'An error occurred uploading files',
+ sure_to_start_compression_with: 'Are you sure to compress',
+ owner: 'Owner',
+ group: 'Group',
+ others: 'Others',
+ read: 'Read',
+ write: 'Write',
+ exec: 'Exec',
+ original: 'Original',
+ changes: 'Changes',
+ recursive: 'Recursive',
+ preview: 'Item preview',
+ open: 'Open'
+ });
+
+ $translateProvider.translations('pt', {
+ filemanager: 'Gerenciador de arquivos',
+ language: 'Língua',
+ english: 'Inglês',
+ spanish: 'Espanhol',
+ portuguese: 'Portugues',
+ french: 'Francês',
+ confirm: 'Confirmar',
+ cancel: 'Cancelar',
+ close: 'Fechar',
+ upload_file: 'Carregar arquivo',
+ files_will_uploaded_to: 'Os arquivos serão enviados para',
+ uploading: 'Carregar',
+ permissions: 'Autorizações',
+ select_destination_folder: 'Selecione a pasta de destino',
+ source: 'Origem',
+ destination: 'Destino',
+ copy_file: 'Copiar arquivo',
+ sure_to_delete: 'Tem certeza de que deseja apagar',
+ change_name_move: 'Renomear / mudança',
+ enter_new_name_for: 'Digite o novo nome para',
+ extract_item: 'Extrair arquivo',
+ extraction_started: 'A extração começou em um processo em segundo plano',
+ compression_started: 'A compressão começou em um processo em segundo plano',
+ enter_folder_name_for_extraction: 'Digite o nome da pasta para a extração de',
+ enter_folder_name_for_compression: 'Digite o nome da pasta para Compressão',
+ toggle_fullscreen: 'Ativar/desativar tela cheia',
+ edit_file: 'Editar arquivo',
+ file_content: 'Conteúdo do arquivo',
+ loading: 'Carregando',
+ search: 'Localizar',
+ create_folder: 'Criar Pasta',
+ create: 'Criar',
+ folder_name: 'Nome da pasta',
+ upload: 'Fazer',
+ change_permissions: 'Alterar permissões',
+ change: 'Alterar',
+ details: 'Detalhes',
+ icons: 'Icones',
+ list: 'Lista',
+ name: 'Nome',
+ size: 'Tamanho',
+ actions: 'Ações',
+ date: 'Data',
+ no_files_in_folder: 'Não há arquivos nesta pasta',
+ no_folders_in_folder: 'Esta pasta não contém subpastas',
+ select_this: 'Selecione esta',
+ go_back: 'Voltar',
+ wait: 'Espere',
+ move: 'Mover',
+ download: 'Baixar',
+ view_item: 'Veja o arquivo',
+ remove: 'Excluir',
+ edit: 'Editar',
+ copy: 'Copiar',
+ rename: 'Renomear',
+ extract: 'Extrair',
+ compress: 'Comprimir',
+ error_invalid_filename: 'Nome do arquivo inválido ou nome de arquivo já existe, especifique outro nome',
+ error_modifying: 'Ocorreu um erro ao modificar o arquivo',
+ error_deleting: 'Ocorreu um erro ao excluir o arquivo ou pasta',
+ error_renaming: 'Ocorreu um erro ao mudar o nome do arquivo',
+ error_copying: 'Ocorreu um erro ao copiar o arquivo',
+ error_compressing: 'Ocorreu um erro ao comprimir o arquivo ou pasta',
+ error_extracting: 'Ocorreu um erro ao extrair o arquivo',
+ error_creating_folder: 'Ocorreu um erro ao criar a pasta',
+ error_getting_content: 'Ocorreu um erro ao obter o conteúdo do arquivo',
+ error_changing_perms: 'Ocorreu um erro ao alterar as permissões do arquivo',
+ error_uploading_files: 'Ocorreu um erro upload de arquivos',
+ sure_to_start_compression_with: 'Tem certeza que deseja comprimir',
+ owner: 'Proprietário',
+ group: 'Grupo',
+ others: 'Outros',
+ read: 'Leitura',
+ write: 'Escrita ',
+ exec: 'Execução',
+ original: 'Original',
+ changes: 'Mudanças',
+ recursive: 'Recursiva',
+ preview: 'Visualização',
+ open: 'Abrir'
+ });
+
+ $translateProvider.translations('es', {
+ filemanager: 'Administrador de archivos',
+ language: 'Idioma',
+ english: 'Ingles',
+ spanish: 'Español',
+ portuguese: 'Portugues',
+ french: 'Francés',
+ confirm: 'Confirmar',
+ cancel: 'Cancelar',
+ close: 'Cerrar',
+ upload_file: 'Subir archivo',
+ files_will_uploaded_to: 'Los archivos seran subidos a',
+ uploading: 'Subiendo',
+ permissions: 'Permisos',
+ select_destination_folder: 'Seleccione la carpeta de destino',
+ source: 'Origen',
+ destination: 'Destino',
+ copy_file: 'Copiar archivo',
+ sure_to_delete: 'Esta seguro que desea eliminar',
+ change_name_move: 'Renombrar / mover',
+ enter_new_name_for: 'Ingrese el nuevo nombre para',
+ extract_item: 'Extraer archivo',
+ extraction_started: 'La extraccion ha comenzado en un proceso de segundo plano',
+ compression_started: 'La compresion ha comenzado en un proceso de segundo plano',
+ enter_folder_name_for_extraction: 'Ingrese el nombre de la carpeta para la extraccion de',
+ enter_folder_name_for_compression: 'Ingrese el nombre de la carpeta para la compresion de',
+ toggle_fullscreen: 'Activar/Desactivar pantalla completa',
+ edit_file: 'Editar archivo',
+ file_content: 'Contenido del archivo',
+ loading: 'Cargando',
+ search: 'Buscar',
+ create_folder: 'Crear carpeta',
+ create: 'Crear',
+ folder_name: 'Nombre de la carpeta',
+ upload: 'Subir',
+ change_permissions: 'Cambiar permisos',
+ change: 'Cambiar',
+ details: 'Detalles',
+ icons: 'Iconos',
+ list: 'Lista',
+ name: 'Nombre',
+ size: 'Tamaño',
+ actions: 'Acciones',
+ date: 'Fecha',
+ no_files_in_folder: 'No hay archivos en esta carpeta',
+ no_folders_in_folder: 'Esta carpeta no contiene sub-carpetas',
+ select_this: 'Seleccionar esta',
+ go_back: 'Volver',
+ wait: 'Espere',
+ move: 'Mover',
+ download: 'Descargar',
+ view_item: 'Ver archivo',
+ remove: 'Eliminar',
+ edit: 'Editar',
+ copy: 'Copiar',
+ rename: 'Renombrar',
+ extract: 'Extraer',
+ compress: 'Comprimir',
+ error_invalid_filename: 'El nombre del archivo es invalido o ya existe',
+ error_modifying: 'Ocurrio un error al intentar modificar el archivo',
+ error_deleting: 'Ocurrio un error al intentar eliminar el archivo',
+ error_renaming: 'Ocurrio un error al intentar renombrar el archivo',
+ error_copying: 'Ocurrio un error al intentar copiar el archivo',
+ error_compressing: 'Ocurrio un error al intentar comprimir el archivo',
+ error_extracting: 'Ocurrio un error al intentar extraer el archivo',
+ error_creating_folder: 'Ocurrio un error al intentar crear la carpeta',
+ error_getting_content: 'Ocurrio un error al obtener el contenido del archivo',
+ error_changing_perms: 'Ocurrio un error al cambiar los permisos del archivo',
+ error_uploading_files: 'Ocurrio un error al subir archivos',
+ sure_to_start_compression_with: 'Esta seguro que desea comprimir',
+ owner: 'Propietario',
+ group: 'Grupo',
+ others: 'Otros',
+ read: 'Lectura',
+ write: 'Escritura',
+ exec: 'Ejecucion',
+ original: 'Original',
+ changes: 'Cambios',
+ recursive: 'Recursivo',
+ preview: 'Vista previa',
+ open: 'Abrir'
+ });
+
+ $translateProvider.translations('fr', {
+ filemanager: 'Gestionnaire de fichier',
+ language: 'Langue',
+ english: 'Anglais',
+ spanish: 'Espagnol',
+ portuguese: 'Portugais',
+ french: 'Français',
+ confirm: 'Confirmer',
+ cancel: 'Annuler',
+ close: 'Fermer',
+ upload_file: 'Uploader un fichier',
+ files_will_uploaded_to: 'Les fichiers seront uploadé dans',
+ uploading: 'Upload en cours',
+ permissions: 'Permissions',
+ select_destination_folder: 'Sélectionné le dossier de destination',
+ source: 'Source',
+ destination: 'Destination',
+ copy_file: 'Copier le fichier',
+ sure_to_delete: 'Êtes-vous sûr de vouloir supprimer',
+ change_name_move: 'Renommer / Déplacer',
+ enter_new_name_for: 'Entrer le nouveau nom pour',
+ extract_item: 'Extraires les éléments',
+ extraction_started: 'L\'extraction a démarré en tâche de fond',
+ compression_started: 'La compression a démarré en tâche de fond',
+ enter_folder_name_for_extraction: 'Entrer le nom du dossier pour l\'extraction de',
+ enter_folder_name_for_compression: 'Entrer le nom du dossier pour la compression de',
+ toggle_fullscreen: 'Basculer en plein écran',
+ edit_file: 'Éditer le fichier',
+ file_content: 'Contenu du fichier',
+ loading: 'Chargement en cours',
+ search: 'Recherche',
+ create_folder: 'Créer un dossier',
+ create: 'Créer',
+ folder_name: 'Nom du dossier',
+ upload: 'Upload',
+ change_permissions: 'Changer les permissions',
+ change: 'Changer',
+ details: 'Details',
+ icons: 'Icons',
+ list: 'Liste',
+ name: 'Nom',
+ size: 'Taille',
+ actions: 'Actions',
+ date: 'Date',
+ no_files_in_folder: 'Aucun fichier dans ce dossier',
+ no_folders_in_folder: 'Ce dossier ne contiens pas de dossier',
+ select_this: 'Sélectionner',
+ go_back: 'Retour',
+ wait: 'Patienter',
+ move: 'Déplacer',
+ download: 'Télécharger',
+ view_item: 'Voir l\'élément',
+ remove: 'Supprimer',
+ edit: 'Éditer',
+ copy: 'Copier',
+ rename: 'Renommer',
+ extract: 'Extraire',
+ compress: 'Compresser',
+ error_invalid_filename: 'Nom de fichier invalide ou déjà existant, merci de spécifier un autre nom',
+ error_modifying: 'Une erreur est survenue pendant la modification du fichier',
+ error_deleting: 'Une erreur est survenue pendant la suppression du fichier ou du dossier',
+ error_renaming: 'Une erreur est survenue pendant le renommage du fichier',
+ error_copying: 'Une erreur est survenue pendant la copie du fichier',
+ error_compressing: 'Une erreur est survenue pendant la compression du fichier ou du dossier',
+ error_extracting: 'Une erreur est survenue pendant l\'extraction du fichier',
+ error_creating_folder: 'Une erreur est survenue pendant la création du dossier',
+ error_getting_content: 'Une erreur est survenue pendant la récupération du contenu du fichier',
+ error_changing_perms: 'Une erreur est survenue pendant le changement des permissions du fichier',
+ error_uploading_files: 'Une erreur est survenue pendant l\'upload des fichiers',
+ sure_to_start_compression_with: 'Êtes-vous sûre de vouloir compresser',
+ owner: 'Propriétaire',
+ group: 'Groupe',
+ others: 'Autres',
+ read: 'Lecture',
+ write: 'Écriture',
+ exec: 'Éxécution',
+ original: 'Original',
+ changes: 'Modifications',
+ recursive: 'Récursif',
+ preview: 'Aperçu',
+ open: 'Ouvrir'
+ });
+ }]);
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/RolesService.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/RolesService.js
new file mode 100644
index 000000000..f661e3796
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/RolesService.js
@@ -0,0 +1,41 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+/**
+ *
+ */
+angular.module("abs").factory('RolesService', function ($http, $q) {
+ return {
+ getRolesData: function() {
+ return $http.get('get_UserRolesData')
+ .then(function(response) {
+ if (typeof response.data === 'object') {
+ return response.data;
+ } else {
+ return $q.reject(response.data);
+ }
+
+ }, function(response) {
+ // something went wrong
+ return $q.reject(response.data);
+ });
+ }
+ };
+}); \ No newline at end of file
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/filenavigator.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/filenavigator.js
new file mode 100644
index 000000000..95d22bd7a
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/filenavigator.js
@@ -0,0 +1,199 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+(function(angular) {
+ 'use strict';
+ angular.module('abs').service('fileNavigator', [
+ '$http', '$q', 'fileManagerConfig', 'item', function ($http, $q, fileManagerConfig, Item) {
+
+ $http.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
+
+ var FileNavigator = function() {
+ this.requesting = false;
+ this.fileList = [];
+ this.currentPath = [];
+ this.history = [];
+ this.error = '';
+ };
+
+ FileNavigator.prototype.deferredHandler = function(data, deferred, defaultMsg) {
+ if (!data || typeof data !== 'object') {
+ this.error = 'Bridge response error, please check the docs';
+ }
+ if (!this.error && data.result && data.result.error) {
+ this.error = data.result.error;
+ }
+ if (!this.error && data.error) {
+ this.error = data.error.message;
+ }
+ if (!this.error && defaultMsg) {
+ this.error = defaultMsg;
+ }
+ if (this.error) {
+ return deferred.reject(data);
+ }
+ return deferred.resolve(data);
+ };
+
+ FileNavigator.prototype.deferredSearchHandler = function(data, deferred, defaultMsg) {
+ self.fileList = [];
+ self.error = '';
+ if (!data || typeof data !== 'object') {
+ this.error = 'Bridge response error, please check the docs';
+ }
+ if (!this.error && data.result && data.result.error) {
+ this.error = data.result.error;
+ }
+ if (!this.error && data.error) {
+ this.error = data.error.message;
+ }
+ if (!this.error && defaultMsg) {
+ this.error = defaultMsg;
+ }
+ if (this.error) {
+ return deferred.reject(data);
+ }
+ return deferred.resolve(data);
+ };
+
+ FileNavigator.prototype.list = function() {
+ var self = this;
+ var deferred = $q.defer();
+ var path = self.currentPath.join('/');
+ var data = {params: {
+ mode: 'LIST',
+ onlyFolders: false,
+ path: '/' + path
+ }};
+
+ self.requesting = true;
+ self.fileList = [];
+ self.error = '';
+
+ $http.post(fileManagerConfig.listUrl, data).success(function(data) {
+ self.deferredHandler(data, deferred);
+ }).error(function(data) {
+ self.deferredHandler(data, deferred, 'Unknown error listing, check the response');
+ })['finally'](function() {
+ self.requesting = false;
+ });
+ return deferred.promise;
+ };
+
+ FileNavigator.prototype.refresh = function() {
+ var self = this;
+ var path = self.currentPath.join('/');
+ return self.list().then(function(data) {
+ self.fileList = (data.result || []).map(function(file) {
+ return new Item(file, self.currentPath);
+ });
+ self.buildTree(path);
+ });
+ };
+
+ FileNavigator.prototype.buildTree = function(path) {
+ var flatNodes = [], selectedNode = {};
+
+ function recursive(parent, item, path) {
+ var absName = path ? (path + '/' + item.model.name) : item.model.name;
+ if (parent.name.trim() && path.trim().indexOf(parent.name) !== 0) {
+ parent.nodes = [];
+ }
+ if (parent.name !== path) {
+ for (var i in parent.nodes) {
+ recursive(parent.nodes[i], item, path);
+ }
+ } else {
+ for (var e in parent.nodes) {
+ if (parent.nodes[e].name === absName) {
+ return;
+ }
+ }
+ parent.nodes.push({item: item, name: absName, nodes: []});
+ }
+ parent.nodes = parent.nodes.sort(function(a, b) {
+ return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : a.name.toLowerCase() === b.name.toLowerCase() ? 0 : 1;
+ });
+ }
+
+ function flatten(node, array) {
+ array.push(node);
+ for (var n in node.nodes) {
+ flatten(node.nodes[n], array);
+ }
+ }
+
+ function findNode(data, path) {
+ return data.filter(function (n) {
+ return n.name === path;
+ })[0];
+ }
+
+ !this.history.length && this.history.push({name: '', nodes: []});
+ flatten(this.history[0], flatNodes);
+ selectedNode = findNode(flatNodes, path);
+ selectedNode.nodes = [];
+
+ for (var o in this.fileList) {
+ var item = this.fileList[o];
+ item.isFolder() && recursive(this.history[0], item, path);
+ }
+ };
+
+ FileNavigator.prototype.folderClick = function(item) {
+ this.currentPath = [];
+ if (item && item.isFolder()) {
+ this.currentPath = item.model.fullPath().split('/').splice(1);
+ }
+ this.refresh();
+ };
+
+ FileNavigator.prototype.upDir = function() {
+ if (this.currentPath[0]) {
+ this.currentPath = this.currentPath.slice(0, -1);
+ this.refresh();
+ }
+ };
+
+ FileNavigator.prototype.goTo = function(index) {
+ this.currentPath = this.currentPath.slice(0, index + 1);
+ this.refresh();
+ };
+
+ FileNavigator.prototype.fileNameExists = function(fileName) {
+ for (var item in this.fileList) {
+ item = this.fileList[item];
+ if (fileName.trim && item.model.name.trim() === fileName.trim()) {
+ return true;
+ }
+ }
+ };
+
+ FileNavigator.prototype.listHasFolders = function() {
+ for (var item in this.fileList) {
+ if (this.fileList[item].model.type === 'dir') {
+ return true;
+ }
+ }
+ };
+
+ return FileNavigator;
+ }]);
+})(angular); \ No newline at end of file
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/fileuploader.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/fileuploader.js
new file mode 100644
index 000000000..8bf6e194f
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/policy-models/Editor/src/js/services/fileuploader.js
@@ -0,0 +1,73 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+(function(window, angular) {
+ 'use strict';
+ angular.module('abs').service('fileUploader', ['$http', '$q', 'fileManagerConfig', function ($http, $q, fileManagerConfig) {
+
+ function deferredHandler(data, deferred, errorMessage) {
+ if (!data || typeof data !== 'object') {
+ return deferred.reject('Bridge response error, please check the docs');
+ }
+ if (data.result && data.result.error) {
+ return deferred.reject(data);
+ }
+ if (data.error) {
+ return deferred.reject(data);
+ }
+ if (errorMessage) {
+ return deferred.reject(errorMessage);
+ }
+ deferred.resolve(data);
+ }
+
+ this.requesting = false;
+ this.upload = function(fileList, path) {
+ if (! window.FormData) {
+ throw new Error('Unsupported browser version');
+ }
+ var self = this;
+ var form = new window.FormData();
+ var deferred = $q.defer();
+ form.append('destination', '/' + path.join('/'));
+
+ for (var i = 0; i < fileList.length; i++) {
+ var fileObj = fileList.item(i);
+ fileObj instanceof window.File && form.append('file-' + i, fileObj);
+ }
+
+ self.requesting = true;
+ $http.post(fileManagerConfig.uploadUrl, form, {
+ transformRequest: angular.identity,
+ headers: {
+ 'Content-Type': undefined
+ }
+ }).success(function(data) {
+ deferredHandler(data, deferred);
+ }).error(function(data) {
+ deferredHandler(data, deferred, 'Unknown error uploading files');
+ })['finally'](function() {
+ self.requesting = false;
+ });
+
+ return deferred.promise;
+ };
+ }]);
+})(window, angular); \ No newline at end of file