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.
		
		
		
		
			
				
					226 lines
				
				8.7 KiB
			
		
		
			
		
	
	
					226 lines
				
				8.7 KiB
			| 
								 
											2 years ago
										 
									 | 
							
								/* 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');
							 | 
						||
| 
								 | 
							
								                        });
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        }]);
							 |