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.
289 lines
10 KiB
289 lines
10 KiB
/* 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.
|
|
*/
|
|
|
|
angular.module('flowableModeler').controller('FlowableDecisionTableReferenceCtrl',
|
|
[ '$scope', '$modal', '$http', function($scope, $modal, $http) {
|
|
|
|
// Config for the modal window
|
|
var opts = {
|
|
template: 'editor-app/configuration/properties/decisiontable-reference-popup.html?version=' + Date.now(),
|
|
scope: $scope
|
|
};
|
|
|
|
// Open the dialog
|
|
_internalCreateModal(opts, $modal, $scope);
|
|
}]);
|
|
|
|
angular.module('flowableModeler').controller('FlowableDecisionTableReferencePopupCtrl', ['$rootScope', '$scope', '$http', '$location', 'editorManager',
|
|
function($rootScope, $scope, $http, $location, editorManager) {
|
|
|
|
$scope.state = {
|
|
'loadingDecisionTables': true,
|
|
'decisionTableError': false
|
|
};
|
|
|
|
$scope.popup = {
|
|
'state': 'decisionTableReference'
|
|
};
|
|
|
|
$scope.foldersBreadCrumbs = [];
|
|
|
|
// Make click outside dialog also call close.
|
|
$scope.$parent.$on('modal.hide.before', function() {
|
|
$scope.close();
|
|
$scope.$parent.$apply();
|
|
});
|
|
|
|
// Close button handler
|
|
$scope.close = function() {
|
|
$scope.property.newVariablesMapping = undefined;
|
|
$scope.property.mode = 'read';
|
|
$scope.$hide();
|
|
};
|
|
|
|
// Selecting/deselecting a decision table
|
|
$scope.selectDecisionTable = function(decisionTable, $event) {
|
|
$event.stopPropagation();
|
|
if ($scope.selectedDecisionTable && $scope.selectedDecisionTable.id && decisionTable.id == $scope.selectedDecisionTable.id) {
|
|
// un-select the current selection
|
|
$scope.selectedDecisionTable = null;
|
|
} else {
|
|
$scope.selectedDecisionTable = decisionTable;
|
|
}
|
|
};
|
|
|
|
$scope.isSelected = function () {
|
|
if ($scope.selectedDecisionTable && $scope.selectedDecisionTable.id) {
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
// Saving the selected value
|
|
$scope.save = function() {
|
|
if ($scope.selectedDecisionTable) {
|
|
$scope.property.value = {
|
|
'id': $scope.selectedDecisionTable.id,
|
|
'name': $scope.selectedDecisionTable.name,
|
|
'key': $scope.selectedDecisionTable.key
|
|
};
|
|
|
|
} else {
|
|
$scope.property.value = null;
|
|
}
|
|
$scope.updatePropertyInModel($scope.property);
|
|
$scope.close();
|
|
};
|
|
|
|
// Open the selected value
|
|
$scope.open = function() {
|
|
if ($scope.selectedDecisionTable) {
|
|
$scope.property.value = {
|
|
'id': $scope.selectedDecisionTable.id,
|
|
'name': $scope.selectedDecisionTable.name,
|
|
'key': $scope.selectedDecisionTable.key
|
|
};
|
|
$scope.updatePropertyInModel($scope.property);
|
|
|
|
var modelMetaData = editorManager.getBaseModelData();
|
|
var json = editorManager.getModel();
|
|
json = JSON.stringify(json);
|
|
|
|
var params = {
|
|
modeltype: modelMetaData.model.modelType,
|
|
json_xml: json,
|
|
name: modelMetaData.name,
|
|
key: modelMetaData.key,
|
|
description: modelMetaData.description,
|
|
newversion: false,
|
|
lastUpdated: modelMetaData.lastUpdated
|
|
};
|
|
|
|
// Update
|
|
$http({
|
|
method: 'POST',
|
|
data: params,
|
|
ignoreErrors: true,
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
|
},
|
|
transformRequest: function (obj) {
|
|
var str = [];
|
|
for (var p in obj) {
|
|
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
|
|
}
|
|
return str.join("&");
|
|
},
|
|
url: FLOWABLE.URL.putModel(modelMetaData.modelId)
|
|
})
|
|
|
|
.success(function(data, status, headers, config) {
|
|
editorManager.handleEvents({
|
|
type: ORYX.CONFIG.EVENT_SAVED
|
|
});
|
|
|
|
$rootScope.addHistoryItem($scope.selectedShape.resourceId);
|
|
$location.path('decision-table-editor/' + $scope.selectedDecisionTable.id);
|
|
})
|
|
.error(function(data, status, headers, config) {
|
|
|
|
});
|
|
|
|
$scope.close();
|
|
}
|
|
};
|
|
|
|
$scope.newDecisionTable = function() {
|
|
$scope.property.value.variablesmapping = [];
|
|
|
|
$scope.popup.state = 'newDecisionTable';
|
|
|
|
var modelMetaData = editorManager.getBaseModelData();
|
|
|
|
$scope.model = {
|
|
loading: false,
|
|
decisionTable: {
|
|
name: '',
|
|
key: '',
|
|
description: '',
|
|
modelType: 4
|
|
},
|
|
defaultStencilSet: undefined,
|
|
decisionTableStencilSets: []
|
|
};
|
|
};
|
|
|
|
$scope.createDecisionTable = function() {
|
|
|
|
if (!$scope.model.decisionTable.name || $scope.model.decisionTable.name.length == 0 ||
|
|
!$scope.model.decisionTable.key || $scope.model.decisionTable.key.length == 0) {
|
|
|
|
return;
|
|
}
|
|
|
|
var stencilSetId = $scope.model.decisionTable.stencilSet;
|
|
$scope.model.loading = true;
|
|
|
|
$http({
|
|
method: 'POST',
|
|
url: FLOWABLE.APP_URL.getModelsUrl(),
|
|
data: $scope.model.decisionTable
|
|
}).
|
|
success(function(data, status, headers, config) {
|
|
|
|
var newDecisionTableId = data.id;
|
|
$scope.property.value = {
|
|
'id': newDecisionTableId,
|
|
'name': data.name,
|
|
'key': data.key
|
|
};
|
|
$scope.updatePropertyInModel($scope.property);
|
|
|
|
var modelMetaData = editorManager.getBaseModelData();
|
|
var json = editorManager.getModel();
|
|
json = JSON.stringify(json);
|
|
|
|
var params = {
|
|
modeltype: modelMetaData.model.modelType,
|
|
json_xml: json,
|
|
name: modelMetaData.name,
|
|
key: modelMetaData.key,
|
|
description: modelMetaData.description,
|
|
newversion: false,
|
|
lastUpdated: modelMetaData.lastUpdated,
|
|
stencilSet: stencilSetId
|
|
};
|
|
|
|
// Update
|
|
$http({
|
|
method: 'POST',
|
|
data: params,
|
|
ignoreErrors: true,
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
|
},
|
|
transformRequest: function (obj) {
|
|
var str = [];
|
|
for (var p in obj) {
|
|
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
|
|
}
|
|
return str.join("&");
|
|
},
|
|
url: FLOWABLE.URL.putModel(modelMetaData.modelId)
|
|
})
|
|
|
|
.success(function(data, status, headers, config) {
|
|
editorManager.handleEvents({
|
|
type: ORYX.CONFIG.EVENT_SAVED
|
|
});
|
|
|
|
$scope.model.loading = false;
|
|
$scope.$hide();
|
|
|
|
$rootScope.addHistoryItem($scope.selectedShape.resourceId);
|
|
$location.path('decision-table-editor/' + newDecisionTableId);
|
|
})
|
|
.error(function(data, status, headers, config) {
|
|
$scope.model.loading = false;
|
|
$scope.$hide();
|
|
});
|
|
|
|
}).
|
|
error(function(data, status, headers, config) {
|
|
$scope.model.loading = false;
|
|
$scope.model.errorMessage = data.message;
|
|
});
|
|
};
|
|
|
|
$scope.cancel = function() {
|
|
$scope.close();
|
|
};
|
|
|
|
$scope.resetCurrent = function () {
|
|
for (var i = 0, found = false; i < $scope.decisionTables.length && found === false; i++) {
|
|
var table = $scope.decisionTables[i];
|
|
if (table.id === $scope.property.value.id) {
|
|
$scope.selectedDecisionTable = table;
|
|
found = true;
|
|
}
|
|
}
|
|
};
|
|
|
|
$scope.loadDecisionTables = function() {
|
|
var modelMetaData = editorManager.getBaseModelData();
|
|
$http.get(FLOWABLE.APP_URL.getDecisionTableModelsUrl())
|
|
.success(
|
|
function(response) {
|
|
$scope.state.loadingDecisionTables = false;
|
|
$scope.state.decisionTableError = false;
|
|
$scope.decisionTables = response.data;
|
|
$scope.resetCurrent();
|
|
})
|
|
.error(
|
|
function(data, status, headers, config) {
|
|
$scope.state.loadingDecisionTables = false;
|
|
$scope.state.decisionTableError = true;
|
|
});
|
|
};
|
|
|
|
if ($scope.property && $scope.property.value && $scope.property.value.id) {
|
|
$scope.selectedDecisionTable = $scope.property.value;
|
|
$scope.storedId = $scope.property.value.id;
|
|
}
|
|
|
|
$scope.loadDecisionTables();
|
|
}
|
|
]);
|