/* 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'; angular.module('flowableModeler') .controller('EditModelPopupCtrl', ['$rootScope', '$scope', '$http', '$translate', '$location', function ($rootScope, $scope, $http, $translate, $location) { var model; var popupType; if ($scope.model.process) { model = $scope.model.process; popupType = 'PROCESS'; } else if ($scope.model.caseModel) { model = $scope.model.caseModel; popupType = 'CASE'; } else if ($scope.model.form) { model = $scope.model.form; popupType = 'FORM'; } else if ($scope.model.decisionTable) { model = $scope.model.decisionTable; popupType = 'DECISION-TABLE'; } else if ($scope.model.decisionService) { model = $scope.model.decisionService; popupType = 'DECISION-SERVICE'; } else { model = $scope.model.app; popupType = 'APP'; } $scope.popup = { loading: false, popupType: popupType, modelName: model.name, modelKey: model.key, modelDescription: model.description, id: model.id }; $scope.ok = function () { if (!$scope.popup.modelName || $scope.popup.modelName.length == 0 || !$scope.popup.modelKey || $scope.popup.modelKey.length == 0) { return; } $scope.model.name = $scope.popup.modelName; $scope.model.key = $scope.popup.modelKey; $scope.model.description = $scope.popup.modelDescription; $scope.popup.loading = true; var updateData = { name: $scope.model.name, key: $scope.model.key, description: $scope.model.description }; $http({method: 'PUT', url: FLOWABLE.APP_URL.getModelUrl($scope.popup.id), data: updateData}). success(function(data, status, headers, config) { if ($scope.model.process) { $scope.model.process = data; } else if ($scope.model.caseModel) { $scope.model.caseModel = data; } else if ($scope.model.form) { $scope.model.form = data; } else if ($scope.model.decisionTable) { $scope.model.decisionTable = data; } else if ($scope.model.decisionService) { $scope.model.decisionService = data; } else { $scope.model.app = data; } $scope.addAlertPromise($translate('PROCESS.ALERT.EDIT-CONFIRM'), 'info'); $scope.$hide(); $scope.popup.loading = false; if (popupType === 'FORM') { $location.path("/forms/" + $scope.popup.id); } else if (popupType === 'APP') { $location.path("/apps/" + $scope.popup.id); } else if (popupType === 'DECISION-TABLE') { $location.path("/decision-tables/" + $scope.popup.id); } else if (popupType === 'CASE') { $location.path("/casemodels/" + $scope.popup.id); } else if (popupType === 'DECISION-SERVICE') { $location.path("/decision-services/" + $scope.popup.id); } else { $location.path("/processes/" + $scope.popup.id); } }). error(function(data, status, headers, config) { $scope.popup.loading = false; $scope.popup.errorMessage = data.message; }); }; $scope.cancel = function () { if (!$scope.popup.loading) { $scope.$hide(); } }; }]); angular.module('flowableModeler') .controller('DeleteModelPopupCtrl', ['$rootScope', '$scope', '$http', '$translate', function ($rootScope, $scope, $http, $translate) { var model; var popupType; if ($scope.model.process) { model = $scope.model.process; popupType = 'PROCESS'; } else if ($scope.model.caseModel) { model = $scope.model.caseModel; popupType = 'CASE'; } else if ($scope.model.form) { model = $scope.model.form; popupType = 'FORM'; } else if ($scope.model.decisionTable) { model = $scope.model.decisionTable; popupType = 'DECISION-TABLE'; } else if ($scope.model.decisionService) { model = $scope.model.decisionService; popupType = 'DECISION-SERVICE'; } else { model = $scope.model.app; popupType = 'APP'; } $scope.popup = { loading: true, loadingRelations: true, cascade: 'false', popupType: popupType, model: model }; // Loading relations when opening $http({method: 'GET', url: FLOWABLE.APP_URL.getModelParentRelationsUrl($scope.popup.model.id)}). success(function (data, status, headers, config) { $scope.popup.loading = false; $scope.popup.loadingRelations = false; $scope.popup.relations = data; }). error(function (data, status, headers, config) { $scope.$hide(); $scope.popup.loading = false; }); $scope.ok = function () { $scope.popup.loading = true; var params = { // Explicit string-check because radio-values cannot be js-booleans cascade: $scope.popup.cascade === 'true' }; $http({method: 'DELETE', url: FLOWABLE.APP_URL.getModelUrl($scope.popup.model.id), params: params}). success(function (data, status, headers, config) { $scope.$hide(); $scope.popup.loading = false; $scope.addAlertPromise($translate(popupType + '.ALERT.DELETE-CONFIRM'), 'info'); $scope.returnToList(); }). error(function (data, status, headers, config) { $scope.$hide(); $scope.popup.loading = false; }); }; $scope.cancel = function () { if (!$scope.popup.loading) { $scope.$hide(); } }; }]); angular.module('flowableModeler') .controller('UseAsNewVersionPopupCtrl', ['$rootScope', '$scope', '$http', '$translate', '$location', function ($rootScope, $scope, $http, $translate, $location) { var model; var popupType; if ($scope.model.process) { model = $scope.model.process; popupType = 'PROCESS'; } else if ($scope.model.caseModel) { model = $scope.model.caseModel; popupType = 'CASE'; } else if ($scope.model.form) { model = $scope.model.form; popupType = 'FORM'; } else if ($scope.model.decisionTable) { model = $scope.model.decisionTable; popupType = 'DECISION-TABLE'; } else if ($scope.model.decisionService) { model = $scope.model.decisionService; popupType = 'DECISION-SERVICE'; } else { model = $scope.model.app; popupType = 'APP'; } $scope.popup = { loading: false, model: model, popupType: popupType, latestModelId: $scope.model.latestModelId, comment: '' }; $scope.ok = function () { $scope.popup.loading = true; var actionData = { action: 'useAsNewVersion', comment: $scope.popup.comment }; $http({method: 'POST', url: FLOWABLE.APP_URL.getModelHistoryUrl($scope.popup.latestModelId, $scope.popup.model.id), data: actionData}). success(function(data, status, headers, config) { var backToOverview = function() { if (popupType === 'FORM') { $location.path("/forms/" + $scope.popup.latestModelId); } else if (popupType === 'APP') { $location.path("/apps/" + $scope.popup.latestModelId); } else if (popupType === 'DECISION-TABLE') { $location.path("/decision-tables/" + $scope.popup.latestModelId); } else if (popupType === 'DECISION-SERVICE') { $location.path("/decision-services/" + $scope.popup.latestModelId); } else if (popupType === 'CASE') { $location.path("/casemodels/" + $scope.popup.latestModelId); } else { $location.path("/processes/" + $scope.popup.latestModelId); } }; if (data && data.unresolvedModels && data.unresolvedModels.length > 0) { // There were unresolved models $scope.popup.loading = false; $scope.popup.foundUnresolvedModels = true; $scope.popup.unresolvedModels = data.unresolvedModels; $scope.close = function() { $scope.$hide(); backToOverview(); }; } else { // All models working resolved perfectly $scope.popup.loading = false; $scope.$hide(); $scope.addAlertPromise($translate(popupType + '.ALERT.NEW-VERSION-CONFIRM'), 'info'); backToOverview(); } }). error(function(data, status, headers, config) { $scope.$hide(); $scope.popup.loading = false; }); }; $scope.cancel = function () { if (!$scope.popup.loading) { $scope.$hide(); } }; }]);