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.
508 lines
18 KiB
508 lines
18 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';
|
|
|
|
angular.module('flowableModeler')
|
|
.controller('DecisionsController', ['$rootScope', '$scope', '$translate', '$http', '$timeout', '$location', '$modal', 'modelType', function ($rootScope, $scope, $translate, $http, $timeout, $location, $modal, modelType) {
|
|
|
|
$rootScope.setMainPageById('decisions');
|
|
$rootScope.decisionTableItems = undefined;
|
|
|
|
// get latest thumbnails
|
|
$scope.imageVersion = Date.now();
|
|
|
|
$scope.model = {
|
|
filters: [
|
|
{id: 'decisionTables', labelKey: 'DECISION-TABLES', type: 'decision-tables'},
|
|
{id: 'decisionServices', labelKey: 'DECISION-SERVICES', type: 'decision-services'}
|
|
],
|
|
|
|
sorts: [
|
|
{id: 'modifiedDesc', labelKey: 'MODIFIED-DESC'},
|
|
{id: 'modifiedAsc', labelKey: 'MODIFIED-ASC'},
|
|
{id: 'nameAsc', labelKey: 'NAME-ASC'},
|
|
{id: 'nameDesc', labelKey: 'NAME-DESC'}
|
|
]
|
|
};
|
|
|
|
if (modelType && modelType === 6) {
|
|
$scope.model.activeFilter = $scope.model.filters[1];
|
|
$scope.model.activeSort = $scope.model.sorts[0];
|
|
$rootScope.decisionFilter = $scope.model.activeFilter;
|
|
} else {
|
|
$scope.model.activeFilter = $scope.model.filters[0];
|
|
$scope.model.activeSort = $scope.model.sorts[0];
|
|
$rootScope.decisionFilter = $scope.model.activeFilter;
|
|
}
|
|
|
|
$scope.activateSort = function (sort) {
|
|
$scope.model.activeSort = sort;
|
|
};
|
|
|
|
$scope.importDecisionTable = function () {
|
|
_internalCreateModal({
|
|
template: 'views/popup/decision-table-import.html?version=' + Date.now()
|
|
}, $modal, $scope);
|
|
};
|
|
|
|
$scope.importDecisionService = function () {
|
|
_internalCreateModal({
|
|
template: 'views/popup/decision-service-import.html?version=' + Date.now()
|
|
}, $modal, $scope);
|
|
};
|
|
|
|
$scope.loadDecisionTables = function () {
|
|
$scope.model.loading = true;
|
|
|
|
var params = {
|
|
filter: $scope.model.activeFilter.id,
|
|
sort: $scope.model.activeSort.id,
|
|
modelType: 4
|
|
};
|
|
|
|
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.decisions = data;
|
|
$scope.model.loading = false;
|
|
}).error(function (data, status, headers, config) {
|
|
$scope.model.loading = false;
|
|
});
|
|
};
|
|
|
|
$scope.loadDecisionServices = function () {
|
|
$scope.model.loading = true;
|
|
|
|
var params = {
|
|
filter: $scope.model.activeFilter.id,
|
|
sort: $scope.model.activeSort.id,
|
|
modelType: 6
|
|
};
|
|
|
|
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.decisions = data;
|
|
$scope.model.loading = false;
|
|
}).error(function (data, status, headers, config) {
|
|
$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.decisionFilter.filterText = $scope.model.filterText;
|
|
$scope.loadDecisionTables();
|
|
}
|
|
}, 500);
|
|
};
|
|
|
|
$scope.filterDelayed = function () {
|
|
if ($scope.model.isFilterDelayed) {
|
|
$scope.model.isFilterUpdated = true;
|
|
} else {
|
|
timeoutFilter();
|
|
}
|
|
};
|
|
|
|
$scope.createDecision = function () {
|
|
if ($scope.model.activeFilter.type === "decision-services") {
|
|
return $scope.createDecisionService();
|
|
} else {
|
|
return $scope.createDecisionTable();
|
|
}
|
|
}
|
|
|
|
$scope.createDecisionTable = function () {
|
|
$rootScope.currentKickstartModel = undefined;
|
|
$rootScope.currentDecisionTableModel = undefined;
|
|
$scope.createDecisionTableCallback = function (result) {
|
|
$rootScope.editorHistory = [];
|
|
$location.url("/decision-table-editor/" + encodeURIComponent(result.id));
|
|
};
|
|
|
|
_internalCreateModal({
|
|
template: 'views/popup/decision-table-create.html?version=' + Date.now(),
|
|
scope: $scope
|
|
}, $modal, $scope);
|
|
};
|
|
|
|
$scope.createDecisionService = function () {
|
|
$rootScope.currentKickstartModel = undefined;
|
|
$rootScope.currentDRDModel = undefined;
|
|
$scope.createDecisionServiceCallback = function (result) {
|
|
$rootScope.editorHistory = [];
|
|
$location.url("/decision-service-editor/" + encodeURIComponent(result.id));
|
|
};
|
|
|
|
_internalCreateModal({
|
|
template: 'views/popup/decision-service-create.html?version=' + Date.now(),
|
|
scope: $scope
|
|
}, $modal, $scope);
|
|
};
|
|
|
|
|
|
$scope.showDecisionDetails = function (decision) {
|
|
if (decision) {
|
|
$rootScope.editorHistory = [];
|
|
$rootScope.currentKickstartModel = undefined;
|
|
if (decision.modelType === 4) {
|
|
$location.url("/decision-tables/" + encodeURIComponent(decision.id));
|
|
} else if (decision.modelType === 6) {
|
|
$location.url("/decision-services/" + encodeURIComponent(decision.id));
|
|
}
|
|
}
|
|
};
|
|
|
|
$scope.editDecisionDetails = function (decision) {
|
|
if (decision) {
|
|
$rootScope.editorHistory = [];
|
|
if (decision.modelType === 4) {
|
|
$location.url("/decision-table-editor/" + encodeURIComponent(decision.id));
|
|
} else if (decision.modelType === 6) {
|
|
$location.url("/decision-service-editor/" + encodeURIComponent(decision.id));
|
|
}
|
|
}
|
|
};
|
|
|
|
if ($rootScope.decisionFilter &&
|
|
$rootScope.decisionFilter &&
|
|
$rootScope.decisionFilter.id === 'decisionServices') {
|
|
$scope.loadDecisionServices();
|
|
} else {
|
|
$scope.loadDecisionTables();
|
|
}
|
|
}]);
|
|
|
|
|
|
angular.module('flowableModeler')
|
|
.controller('CreateNewDecisionTableCtrl', ['$rootScope', '$scope', '$http', function ($rootScope, $scope, $http) {
|
|
|
|
$scope.model = {
|
|
loading: false,
|
|
decisionTable: {
|
|
name: '',
|
|
key: '',
|
|
description: '',
|
|
modelType: 4
|
|
}
|
|
};
|
|
|
|
$scope.ok = function () {
|
|
|
|
if (!$scope.model.decisionTable.name || $scope.model.decisionTable.name.length == 0 ||
|
|
!$scope.model.decisionTable.key || $scope.model.decisionTable.key.length == 0) {
|
|
|
|
return;
|
|
}
|
|
|
|
$scope.model.loading = true;
|
|
|
|
$http({method: 'POST', url: FLOWABLE.APP_URL.getModelsUrl(), data: $scope.model.decisionTable}).success(function (data, status, headers, config) {
|
|
$scope.$hide();
|
|
$scope.model.loading = false;
|
|
|
|
if ($scope.createDecisionTableCallback) {
|
|
$scope.createDecisionTableCallback(data);
|
|
$scope.createDecisionTableCallback = undefined;
|
|
}
|
|
|
|
}).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('CreateNewDecisionServiceCtrl', ['$rootScope', '$scope', '$http', function ($rootScope, $scope, $http) {
|
|
|
|
$scope.model = {
|
|
loading: false,
|
|
decisionService: {
|
|
name: '',
|
|
key: '',
|
|
description: '',
|
|
modelType: 6
|
|
}
|
|
};
|
|
|
|
$scope.ok = function () {
|
|
|
|
if (!$scope.model.decisionService.name || $scope.model.decisionService.name.length == 0 ||
|
|
!$scope.model.decisionService.key || $scope.model.decisionService.key.length == 0) {
|
|
|
|
return;
|
|
}
|
|
|
|
$scope.model.loading = true;
|
|
|
|
$http({method: 'POST', url: FLOWABLE.APP_URL.getModelsUrl(), data: $scope.model.decisionService}).success(function (data, status, headers, config) {
|
|
$scope.$hide();
|
|
$scope.model.loading = false;
|
|
|
|
if ($scope.createDecisionServiceCallback) {
|
|
$scope.createDecisionServiceCallback(data);
|
|
$scope.createDecisionServiceCallback = undefined;
|
|
}
|
|
|
|
}).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('DuplicateDecisionTableCtrl', ['$rootScope', '$scope', '$http',
|
|
function ($rootScope, $scope, $http) {
|
|
|
|
$scope.model = {
|
|
loading: false,
|
|
decisionTable: {
|
|
id: '',
|
|
name: '',
|
|
description: '',
|
|
modelType: null
|
|
}
|
|
};
|
|
|
|
if ($scope.originalModel) {
|
|
//clone the model
|
|
$scope.model.decisionTable.name = $scope.originalModel.decisionTable.name;
|
|
$scope.model.decisionTable.key = $scope.originalModel.decisionTable.key;
|
|
$scope.model.decisionTable.description = $scope.originalModel.decisionTable.description;
|
|
$scope.model.decisionTable.modelType = $scope.originalModel.decisionTable.modelType;
|
|
$scope.model.decisionTable.id = $scope.originalModel.decisionTable.id;
|
|
}
|
|
|
|
$scope.ok = function () {
|
|
|
|
if (!$scope.model.decisionTable.name || $scope.model.decisionTable.name.length == 0) {
|
|
return;
|
|
}
|
|
|
|
$scope.model.loading = true;
|
|
|
|
$http({
|
|
method: 'POST',
|
|
url: FLOWABLE.APP_URL.getCloneModelsUrl($scope.model.decisionTable.id),
|
|
data: $scope.model.decisionTable
|
|
}).success(function (data, status, headers, config) {
|
|
$scope.$hide();
|
|
$scope.model.loading = false;
|
|
|
|
if ($scope.duplicateDecisionTableCallback) {
|
|
$scope.duplicateDecisionTableCallback(data);
|
|
$scope.duplicateDecisionTableCallback = undefined;
|
|
}
|
|
|
|
}).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('DuplicateDecisionServiceCtrl', ['$rootScope', '$scope', '$http',
|
|
function ($rootScope, $scope, $http) {
|
|
|
|
$scope.model = {
|
|
loading: false,
|
|
decisionService: {
|
|
id: '',
|
|
name: '',
|
|
description: '',
|
|
modelType: null
|
|
}
|
|
};
|
|
|
|
if ($scope.originalModel) {
|
|
//clone the model
|
|
$scope.model.decisionService.name = $scope.originalModel.decisionService.name;
|
|
$scope.model.decisionService.key = $scope.originalModel.decisionService.key;
|
|
$scope.model.decisionService.description = $scope.originalModel.decisionService.description;
|
|
$scope.model.decisionService.modelType = $scope.originalModel.decisionService.modelType;
|
|
$scope.model.decisionService.id = $scope.originalModel.decisionService.id;
|
|
}
|
|
|
|
$scope.ok = function () {
|
|
|
|
if (!$scope.model.decisionService.name || $scope.model.decisionService.name.length == 0) {
|
|
return;
|
|
}
|
|
|
|
$scope.model.loading = true;
|
|
|
|
$http({
|
|
method: 'POST',
|
|
url: FLOWABLE.APP_URL.getCloneModelsUrl($scope.model.decisionService.id),
|
|
data: $scope.model.decisionService
|
|
}).success(function (data, status, headers, config) {
|
|
$scope.$hide();
|
|
$scope.model.loading = false;
|
|
|
|
if ($scope.duplicateDecisionServiceCallback) {
|
|
$scope.duplicateDecisionServiceCallback(data);
|
|
$scope.duplicateDecisionServiceCallback = undefined;
|
|
}
|
|
|
|
}).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('ImportDecisionTableModelCtrl', ['$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.getDecisionTableTextImportUrl();
|
|
} else {
|
|
url = FLOWABLE.APP_URL.getDecisionTableImportUrl();
|
|
}
|
|
|
|
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, status, headers, config) {
|
|
$scope.model.loading = false;
|
|
|
|
$location.path("/decision-table-editor/" + data.id);
|
|
$scope.$hide();
|
|
|
|
}).error(function (data, status, headers, config) {
|
|
|
|
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();
|
|
}
|
|
};
|
|
}]);
|
|
|
|
angular.module('flowableModeler')
|
|
.controller('ImportDecisionServiceModelCtrl', ['$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.getDecisionServiceTextImportUrl();
|
|
} else {
|
|
url = FLOWABLE.APP_URL.getDecisionServiceImportUrl();
|
|
}
|
|
|
|
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, status, headers, config) {
|
|
$scope.model.loading = false;
|
|
|
|
$location.path("/decision-service-editor/" + data.id);
|
|
$scope.$hide();
|
|
|
|
}).error(function (data, status, headers, config) {
|
|
|
|
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();
|
|
}
|
|
};
|
|
}]);
|