You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							225 lines
						
					
					
						
							8.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							225 lines
						
					
					
						
							8.7 KiB
						
					
					
				| /* Copyright 2005-2015 Alfresco Software, Ltd. | |
|  * | |
|  * 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. | |
|  */ | |
| 'use strict'; | |
| 
 | |
| var DECISION_TABLE_TOOLBAR = { | |
|     ACTIONS: { | |
| 
 | |
|         saveModel: function (services) { | |
| 
 | |
|             _internalCreateModal({ | |
|                 backdrop: true, | |
|                 keyboard: true, | |
|                 template: 'views/popup/decision-table-save-model.html?version=' + Date.now(), | |
|                 scope: services.$scope | |
|             }, services.$modal, services.$scope); | |
|         }, | |
| 
 | |
|         help: function (services) { | |
| 
 | |
|         }, | |
| 
 | |
|         feedback: function (services) { | |
| 
 | |
|         }, | |
| 
 | |
|         closeEditor:  function (services) { | |
| 
 | |
|             var callback = function() { | |
|                 services.$rootScope.decisiontableChanges = false; | |
|                  | |
|                 if (services.$rootScope.editorHistory.length > 0) { | |
|                 	var navigationObject = services.$rootScope.editorHistory.pop(); | |
|                 	var additionalParameters = ''; | |
|                 	if (navigationObject.subProcessId && navigationObject.subProcessId.length > 0) { | |
|                 		additionalParameters = '?subProcessId=' + navigationObject.subProcessId; | |
|                 	} | |
|         			services.$location.url('/editor/' + navigationObject.id + additionalParameters); | |
|         		} else { | |
|         			services.$location.path('/decision-tables'); | |
|         		} | |
|             }; | |
| 
 | |
|             if (services.$rootScope.decisiontableChanges == true) { | |
| 
 | |
|                 services.$scope.$emit("decisionTableChangesEvent"); | |
| 
 | |
|                 var unbindMustSave = services.$scope.$on("mustSaveEvent", function(){ | |
|                     //save the decision table data | |
|                     var description = ''; | |
|                     if (services.$rootScope.currentDecisionTable.description) { | |
|                         description = services.$rootScope.currentDecisionTable.description; | |
|                     } | |
| 
 | |
|                     var data = { | |
|                         newVersion: false | |
|                     }; | |
|                      | |
|                     unbindEvents(); | |
|                     services.DecisionTableBuilderService.saveDecisionTable(data, services.$rootScope.currentDecisionTable.name,  | |
|                     	null, description, callback); | |
|                 }); | |
| 
 | |
|                 var unbindDiscardDataEvent = services.$scope.$on("discardDataEvent", function() { | |
|                     unbindEvents(); | |
|                     callback(); | |
|                 }); | |
| 
 | |
|                 var unbindContinueEditingEvent = services.$scope.$on("continueEditingEvent", function () { | |
|                     unbindEvents(); | |
|                 }); | |
| 
 | |
|             } else { | |
|                 callback(); | |
|             } | |
| 
 | |
|             var unbindEvents = function () { | |
|                 unbindContinueEditingEvent(); | |
|                 unbindMustSave(); | |
|                 unbindDiscardDataEvent(); | |
|             }; | |
| 
 | |
|         } | |
|     } | |
| }; | |
| 
 | |
| /** Custom controller for the save dialog */ | |
| angular.module('flowableModeler') | |
|     .controller('SaveDecisionTableCtrl', [ '$rootScope', '$scope', '$http', '$route', '$location', '$translate', 'DecisionTableService', 'hotRegisterer', | |
|         function ($rootScope, $scope, $http, $route, $location, $translate, DecisionTableService, hotRegisterer) { | |
| 
 | |
|             var description = ''; | |
|             if ($rootScope.currentDecisionTableModel.description) { | |
|                 description = $rootScope.currentDecisionTableModel.description; | |
|             } | |
| 
 | |
|             $scope.saveDialog = { | |
|                 name: $rootScope.currentDecisionTableModel.name, | |
|                 key: $rootScope.currentDecisionTableModel.key, | |
|                 description: description, | |
|                 newVersion: false, | |
|                 comment: '', | |
|                 forceDMN11: $rootScope.currentDecisionTable.forceDMN11 | |
|             }; | |
| 
 | |
|             $scope.keyFieldPattern = /^[a-zA-Z_]\w*$/; | |
| 
 | |
|             $scope.status = { | |
|                 loading: false | |
|             }; | |
| 
 | |
|             $scope.cancel = function () { | |
|                 $scope.$hide(); | |
|             }; | |
| 
 | |
|             $scope.saveAndClose = function () { | |
|                 $scope.save(function() { | |
|                     if ($rootScope.editorHistory.length > 0) { | |
| 		    	        var navigationObject = $rootScope.editorHistory.pop(); | |
| 		    	        var additionalParameters = ''; | |
| 	                	if (navigationObject.subProcessId && navigationObject.subProcessId.length > 0) { | |
| 	                		additionalParameters = '?subProcessId=' + navigationObject.subProcessId; | |
| 	                	} | |
| 		    	        $location.url('/editor/' + navigationObject.id + additionalParameters); | |
| 		  | |
| 		            } else { | |
| 		            	$location.path('/decision-tables'); | |
| 		            } | |
|                 }); | |
|             }; | |
| 
 | |
|             $scope.save = function (additionalSaveCallback) { | |
| 
 | |
|                 if (!$scope.saveDialog.name || $scope.saveDialog.name.length == 0 || !$scope.saveDialog.key || $scope.saveDialog.key.length == 0) { | |
|                     return; | |
|                 } | |
| 
 | |
|                 // Indicator spinner image | |
|                 $scope.status = { | |
|                     loading: true | |
|                 }; | |
| 
 | |
|                 var data = { | |
|                     reusable: $scope.saveDialog.reusable, | |
|                     newVersion: $scope.saveDialog.newVersion, | |
|                     comment: $scope.saveDialog.comment, | |
|                     forceDMN11: $scope.saveDialog.forceDMN11 | |
|                 }; | |
| 
 | |
|                 $rootScope.currentDecisionTableRules = $scope.model.rulesData; | |
| 
 | |
|                 var saveCallback = function() { | |
|                     $scope.$hide(); | |
|                      | |
|                     $rootScope.currentDecisionTableModel.name = $scope.saveDialog.name; | |
|                     $rootScope.currentDecisionTableModel.key = $scope.saveDialog.key; | |
|                     $rootScope.currentDecisionTableModel.description = $scope.saveDialog.description; | |
|                     $rootScope.currentDecisionTable.forceDMN11 = $scope.saveDialog.forceDMN11; | |
| 
 | |
|                     $rootScope.addAlertPromise($translate('DECISION-TABLE-EDITOR.ALERT.SAVE-CONFIRM', {name: $scope.saveDialog.name}), 'info'); | |
|                      | |
|                     if (additionalSaveCallback) { | |
|                         additionalSaveCallback(); | |
|                     } | |
|                      | |
|                     $rootScope.decisionTableChanges = false; | |
|                 }; | |
| 
 | |
|                 var errorCallback = function(errorMessage) { | |
|                 	$scope.status.loading = false; | |
|                     $scope.saveDialog.errorMessage = errorMessage.message; | |
|                 }; | |
| 
 | |
|                 // deselect cells before thumbnail generations | |
|                 var hotDecisionTableEditorInstance = hotRegisterer.getInstance('decision-table-editor'); | |
|                 if (hotDecisionTableEditorInstance) { | |
|                     hotDecisionTableEditorInstance.deselectCell(); | |
|                 } | |
| 
 | |
|                 DecisionTableService.saveDecisionTable(data, $scope.saveDialog.name, $scope.saveDialog.key,  | |
|                 	$scope.saveDialog.description, saveCallback, errorCallback); | |
|             }; | |
| 
 | |
|             $scope.isOkButtonDisabled = function() { | |
|                 if ($scope.status.loading) { | |
|                     return false; | |
|                 } else if ($scope.error && $scope.error.conflictResolveAction) { | |
|                     if ($scope.error.conflictResolveAction === 'saveAs') { | |
|                         return !$scope.error.saveAs || $scope.error.saveAs.length == 0; | |
|                     } else { | |
|                         return false; | |
|                     } | |
|                 } | |
|                 return true; | |
|             }; | |
| 
 | |
|             $scope.okClicked = function() { | |
|                 if ($scope.error) { | |
|                     if ($scope.error.conflictResolveAction === 'discardChanges') { | |
|                         $scope.close(); | |
|                         $route.reload(); | |
|                     } else if ($scope.error.conflictResolveAction === 'overwrite' | |
|                         || $scope.error.conflictResolveAction === 'newVersion') { | |
|                         $scope.save(); | |
|                     } else if($scope.error.conflictResolveAction === 'saveAs') { | |
|                         $scope.save(function() { | |
|                             $rootScope.ignoreChanges = true;  // Otherwise will get pop up that changes are not saved. | |
|                             $location.path('/decision-tables'); | |
|                         }); | |
|                     } | |
|                 } | |
|             }; | |
| 
 | |
|         }]);
 | |
| 
 |