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
			| 
											2 years 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(); | ||
|  | 	  } | ||
|  |   }; | ||
|  | }]); |