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.
		
		
		
		
			
				
					284 lines
				
				8.6 KiB
			
		
		
			
		
	
	
					284 lines
				
				8.6 KiB
			| 
								 
											1 year ago
										 
									 | 
							
								/* 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('CaseModelsCtrl', ['$rootScope', '$scope', '$translate', '$http', '$timeout','$location', '$modal', function ($rootScope, $scope, $translate, $http, $timeout, $location, $modal) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      // Main page (needed for visual indicator of current page)
							 | 
						||
| 
								 | 
							
								      $rootScope.setMainPageById('casemodels');
							 | 
						||
| 
								 | 
							
								      $rootScope.formItems = undefined;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      // get latest thumbnails
							 | 
						||
| 
								 | 
							
								      $scope.imageVersion = Date.now();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  $scope.model = {
							 | 
						||
| 
								 | 
							
								        filters: [
							 | 
						||
| 
								 | 
							
								            {id: 'cases', labelKey: 'CASES'}
							 | 
						||
| 
								 | 
							
										],
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										sorts: [
							 | 
						||
| 
								 | 
							
										        {id: 'modifiedDesc', labelKey: 'MODIFIED-DESC'},
							 | 
						||
| 
								 | 
							
										        {id: 'modifiedAsc', labelKey: 'MODIFIED-ASC'},
							 | 
						||
| 
								 | 
							
										        {id: 'nameAsc', labelKey: 'NAME-ASC'},
							 | 
						||
| 
								 | 
							
										        {id: 'nameDesc', labelKey: 'NAME-DESC'}
							 | 
						||
| 
								 | 
							
										]
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									  
							 | 
						||
| 
								 | 
							
									  // By default, show first filter and use first sort
							 | 
						||
| 
								 | 
							
								      $scope.model.activeFilter = $scope.model.filters[0];
							 | 
						||
| 
								 | 
							
								      $scope.model.activeSort = $scope.model.sorts[0];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  $scope.activateFilter = function(filter) {
							 | 
						||
| 
								 | 
							
										  $scope.model.activeFilter = filter;
							 | 
						||
| 
								 | 
							
										  $rootScope.modelFilter.filter = filter;
							 | 
						||
| 
								 | 
							
										  $scope.loadCaseModels();
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  $scope.activateSort = function(sort) {
							 | 
						||
| 
								 | 
							
										  $scope.model.activeSort = sort;
							 | 
						||
| 
								 | 
							
										  $rootScope.modelFilter.sort = sort;
							 | 
						||
| 
								 | 
							
										  $scope.loadCaseModels();
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  $scope.loadCaseModels = function() {
							 | 
						||
| 
								 | 
							
										  $scope.model.loading = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										  var params = {
							 | 
						||
| 
								 | 
							
										      filter: $scope.model.activeFilter.id,
							 | 
						||
| 
								 | 
							
										      sort: $scope.model.activeSort.id,
							 | 
						||
| 
								 | 
							
										      modelType: 5
							 | 
						||
| 
								 | 
							
										  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										  if ($scope.model.filterText && $scope.model.filterText != '') {
							 | 
						||
| 
								 | 
							
										    params.filterText = $scope.model.filterText;
							 | 
						||
| 
								 | 
							
										  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										  $http({method: 'GET', url: FLOWABLE.APP_URL.getModelsUrl(), params: params}).
							 | 
						||
| 
								 | 
							
										  	success(function(data, status, headers, config) {
							 | 
						||
| 
								 | 
							
									    		$scope.model.caseModels = data;
							 | 
						||
| 
								 | 
							
									    		$scope.model.loading = false;
							 | 
						||
| 
								 | 
							
									        }).
							 | 
						||
| 
								 | 
							
									        error(function(data, status, headers, config) {
							 | 
						||
| 
								 | 
							
									           console.log('Something went wrong: ' + data);
							 | 
						||
| 
								 | 
							
									           $scope.model.loading = false;
							 | 
						||
| 
								 | 
							
									        });
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  var timeoutFilter = function() {
							 | 
						||
| 
								 | 
							
									      $scope.model.isFilterDelayed = true;
							 | 
						||
| 
								 | 
							
									      $timeout(function() {
							 | 
						||
| 
								 | 
							
									          $scope.model.isFilterDelayed = false;
							 | 
						||
| 
								 | 
							
									          if ($scope.model.isFilterUpdated) {
							 | 
						||
| 
								 | 
							
									              $scope.model.isFilterUpdated = false;
							 | 
						||
| 
								 | 
							
									              timeoutFilter();
							 | 
						||
| 
								 | 
							
									          } else {
							 | 
						||
| 
								 | 
							
									              $scope.model.filterText = $scope.model.pendingFilterText;
							 | 
						||
| 
								 | 
							
									              $rootScope.modelFilter.filterText = $scope.model.filterText;
							 | 
						||
| 
								 | 
							
									              $scope.loadCaseModels();
							 | 
						||
| 
								 | 
							
									          }
							 | 
						||
| 
								 | 
							
									      }, 500);
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  $scope.filterDelayed = function() {
							 | 
						||
| 
								 | 
							
									      if ($scope.model.isFilterDelayed) {
							 | 
						||
| 
								 | 
							
									          $scope.model.isFilterUpdated = true;
							 | 
						||
| 
								 | 
							
									      } else {
							 | 
						||
| 
								 | 
							
									          timeoutFilter();
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  $scope.createCaseModel = function(mode) {
							 | 
						||
| 
								 | 
							
									    var modalInstance = _internalCreateModal({
							 | 
						||
| 
								 | 
							
									        template: 'views/popup/casemodel-create.html?version=' + Date.now()
							 | 
						||
| 
								 | 
							
									    }, $modal, $scope);
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  $scope.importCaseModel = function () {
							 | 
						||
| 
								 | 
							
								          _internalCreateModal({
							 | 
						||
| 
								 | 
							
								              template: 'views/popup/casemodel-import.html?version=' + Date.now()
							 | 
						||
| 
								 | 
							
								          }, $modal, $scope);
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  $scope.showCaseModelDetails = function(caseModel) {
							 | 
						||
| 
								 | 
							
									      if (caseModel) {
							 | 
						||
| 
								 | 
							
									          $rootScope.editorHistory = [];
							 | 
						||
| 
								 | 
							
									          $location.path("/casemodels/" + caseModel.id);
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  $scope.editCaseModelDetails = function(caseModel) {
							 | 
						||
| 
								 | 
							
										  if (caseModel) {
							 | 
						||
| 
								 | 
							
										      $rootScope.editorHistory = [];
							 | 
						||
| 
								 | 
							
								              $location.path("/editor/" + caseModel.id);
							 | 
						||
| 
								 | 
							
										  }
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  // Finally, load initial cases
							 | 
						||
| 
								 | 
							
									  $scope.loadCaseModels();
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								angular.module('flowableModeler')
							 | 
						||
| 
								 | 
							
								.controller('CreateNewCaseModelModelCtrl', ['$rootScope', '$scope', '$modal', '$http', '$location',
							 | 
						||
| 
								 | 
							
								                                          function ($rootScope, $scope, $modal, $http, $location) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $scope.model = {
							 | 
						||
| 
								 | 
							
								       loading: false,
							 | 
						||
| 
								 | 
							
								       caseModel: {
							 | 
						||
| 
								 | 
							
								            name: '',
							 | 
						||
| 
								 | 
							
								            key: '',
							 | 
						||
| 
								 | 
							
								            description: '',
							 | 
						||
| 
								 | 
							
								           	modelType: 5
							 | 
						||
| 
								 | 
							
								       }
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if ($scope.initialModelType !== undefined) {
							 | 
						||
| 
								 | 
							
								        $scope.model.caseModel.modelType = $scope.initialModelType;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $scope.ok = function () {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (!$scope.model.caseModel.name || $scope.model.caseModel.name.length == 0 ||
							 | 
						||
| 
								 | 
							
								        	!$scope.model.caseModel.key || $scope.model.caseModel.key.length == 0) {
							 | 
						||
| 
								 | 
							
								        	
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $scope.model.loading = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $http({method: 'POST', url: FLOWABLE.APP_URL.getModelsUrl(), data: $scope.model.caseModel}).
							 | 
						||
| 
								 | 
							
								            success(function(data) {
							 | 
						||
| 
								 | 
							
								                $scope.$hide();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                $scope.model.loading = false;
							 | 
						||
| 
								 | 
							
								                $rootScope.editorHistory = [];
							 | 
						||
| 
								 | 
							
								                $location.path("/case-editor/" + data.id);
							 | 
						||
| 
								 | 
							
								            }).
							 | 
						||
| 
								 | 
							
								            error(function(data, status, headers, config) {
							 | 
						||
| 
								 | 
							
								                $scope.model.loading = false;
							 | 
						||
| 
								 | 
							
								                $scope.model.errorMessage = data.message;
							 | 
						||
| 
								 | 
							
								            });
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $scope.cancel = function () {
							 | 
						||
| 
								 | 
							
								        if(!$scope.model.loading) {
							 | 
						||
| 
								 | 
							
								            $scope.$hide();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								}]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								angular.module('flowableModeler')
							 | 
						||
| 
								 | 
							
								.controller('DuplicateCaseModelCtrl', ['$rootScope', '$scope', '$modal', '$http', '$location',
							 | 
						||
| 
								 | 
							
								                                          function ($rootScope, $scope, $modal, $http, $location) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $scope.model = {
							 | 
						||
| 
								 | 
							
								       loading: false,
							 | 
						||
| 
								 | 
							
								       caseModel: {
							 | 
						||
| 
								 | 
							
								            name: '',
							 | 
						||
| 
								 | 
							
								            key: '',
							 | 
						||
| 
								 | 
							
								            description: ''
							 | 
						||
| 
								 | 
							
								       }
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if ($scope.originalModel) {
							 | 
						||
| 
								 | 
							
								        //clone the model
							 | 
						||
| 
								 | 
							
								        $scope.model.caseModel.name = $scope.originalModel.caseModel.name;
							 | 
						||
| 
								 | 
							
								        $scope.model.caseModel.key = $scope.originalModel.caseModel.key;
							 | 
						||
| 
								 | 
							
								        $scope.model.caseModel.description = $scope.originalModel.caseModel.description;
							 | 
						||
| 
								 | 
							
								        $scope.model.caseModel.id = $scope.originalModel.caseModel.id;
							 | 
						||
| 
								 | 
							
								        $scope.model.caseModel.modelType = $scope.originalModel.caseModel.modelType;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $scope.ok = function () {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (!$scope.model.caseModel.name || $scope.model.caseModel.name.length == 0 || 
							 | 
						||
| 
								 | 
							
								        	!$scope.model.caseModel.key || $scope.model.caseModel.key.length == 0) {
							 | 
						||
| 
								 | 
							
								        	
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $scope.model.loading = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $http({method: 'POST', url: FLOWABLE.APP_URL.getCloneModelsUrl($scope.model.caseModel.id), data: $scope.model.caseModel}).
							 | 
						||
| 
								 | 
							
								            success(function(data) {
							 | 
						||
| 
								 | 
							
								                $scope.$hide();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                $scope.model.loading = false;
							 | 
						||
| 
								 | 
							
								                $rootScope.editorHistory = [];
							 | 
						||
| 
								 | 
							
								                $location.path("/editor/" + data.id);
							 | 
						||
| 
								 | 
							
								            }).
							 | 
						||
| 
								 | 
							
								            error(function(data, status, headers, config) {
							 | 
						||
| 
								 | 
							
								                $scope.model.loading = false;
							 | 
						||
| 
								 | 
							
								                $scope.model.errorMessage = data.message;
							 | 
						||
| 
								 | 
							
								            });
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $scope.cancel = function () {
							 | 
						||
| 
								 | 
							
								        if(!$scope.model.loading) {
							 | 
						||
| 
								 | 
							
								            $scope.$hide();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								}]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								angular.module('flowableModeler')
							 | 
						||
| 
								 | 
							
								.controller('ImportCaseModelCtrl', ['$rootScope', '$scope', '$http', 'Upload', '$location', function ($rootScope, $scope, $http, Upload, $location) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  $scope.model = {
							 | 
						||
| 
								 | 
							
								       loading: false
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  $scope.onFileSelect = function($files, isIE) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      for (var i = 0; i < $files.length; i++) {
							 | 
						||
| 
								 | 
							
								          var file = $files[i];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          var url;
							 | 
						||
| 
								 | 
							
								          if (isIE) {
							 | 
						||
| 
								 | 
							
								              url = FLOWABLE.APP_URL.getCaseModelTextImportUrl();
							 | 
						||
| 
								 | 
							
								          } else {
							 | 
						||
| 
								 | 
							
								              url = FLOWABLE.APP_URL.getCaseModelImportUrl();
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          Upload.upload({
							 | 
						||
| 
								 | 
							
								              url: url,
							 | 
						||
| 
								 | 
							
								              method: 'POST',
							 | 
						||
| 
								 | 
							
								              file: file
							 | 
						||
| 
								 | 
							
								          }).progress(function(evt) {
							 | 
						||
| 
								 | 
							
									      $scope.model.loading = true;
							 | 
						||
| 
								 | 
							
								              $scope.model.uploadProgress = parseInt(100.0 * evt.loaded / evt.total);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          }).success(function(data) {
							 | 
						||
| 
								 | 
							
								              $scope.model.loading = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              $location.path("/editor/" + data.id);
							 | 
						||
| 
								 | 
							
								              $scope.$hide();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          }).error(function(data) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              if (data && data.message) {
							 | 
						||
| 
								 | 
							
								                  $scope.model.errorMessage = data.message;
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								              $scope.model.error = true;
							 | 
						||
| 
								 | 
							
								              $scope.model.loading = false;
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  $scope.cancel = function () {
							 | 
						||
| 
								 | 
							
									  if(!$scope.model.loading) {
							 | 
						||
| 
								 | 
							
										  $scope.$hide();
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}]);
							 |