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');
|
|
});
|
|
}
|
|
}
|
|
};
|
|
|
|
}]);
|
|
|