/**
|
* Created by wisestone on 2018-11-13.
|
*/
|
'use strict';
|
|
define(['app', 'angular', 'saveSvgAsPng'],
|
function (app, angular, saveSvgAsPng) {
|
app.directive('workflowWidget', ['$log', '$rootScope', '$resourceProvider', 'Widget', 'SweetAlert', 'Workspace',
|
function ($log, $rootScope, $resourceProvider, Widget, SweetAlert, Workspace) {
|
return {
|
restrict : 'E',
|
scope : {
|
workflowWidget : '=',
|
},
|
replace : true,
|
templateUrl : '../custom_components/widget/workflow-widget/workflow-widget.html',
|
controller : function ($scope, $element, $attrs) {
|
|
// 변수 모음
|
$scope.vm = {
|
workflowWidget : {},
|
form : {
|
issueStatusVos : []
|
}
|
};
|
|
// 함수 모음
|
$scope.fn = {
|
downloadImage : downloadImage, // 이미지 다운로드
|
findWorkflowWidget : findWorkflowWidget,
|
makeWorkflowWidget : makeWorkflowWidget
|
};
|
|
// 워크플로우 정보가 변경될때 감지한다.
|
$scope.$watch("workflowWidget", function (newValue) {
|
if ($rootScope.isDefined(newValue)) {
|
// 워크플로우 정보를 저장한다.
|
$scope.fn.makeWorkflowWidget(newValue);
|
}
|
});
|
|
// 이미지 다운로드
|
function downloadImage() {
|
if ((navigator.userAgent.indexOf('MSIE') > 0 || navigator.userAgent.indexOf('Trident') > 0)) {
|
SweetAlert.swal($filter("translate")("managementWorkflow.imageDownloadNotSupported"), $filter("translate")("managementWorkflow.IEDoesNotSupport"), "warning");
|
return;
|
}
|
|
var imageName = "워크플로우.png";
|
|
for (var workflowCount in $scope.vm.workflowWidget.workflowVos) {
|
var workflowVo = $scope.vm.workflowWidget.workflowVos[workflowCount];
|
|
if (workflowVo.checked) {
|
imageName = workflowVo.name + ".png";
|
break;
|
}
|
}
|
|
// 업무 공간에서 해당 사용자가 활성 상태 인지 확인 후 이미지 다운로드를 실행한다.
|
Workspace.checkUseWorkspace($resourceProvider.getContent({},
|
$resourceProvider.getPageContent(0, 0))).then(function (result) {
|
|
if (result.data.message.status === "success") {
|
saveSvgAsPng.saveSvgAsPng($($element).find("svg")[0], imageName);
|
}
|
else {
|
// 웹 소켓 연결이 안되어 있을 경우에는 직접 alert 를 표시한다.
|
if ($rootScope.getObjectKeys($rootScope.users) < 1) {
|
|
SweetAlert.error($filter("translate")("managementWorkflow.excludeWorkflowParticipation"), result.data.message.message); //업무 공간 참여 제외
|
}
|
}
|
});
|
}
|
|
// 워크플로우 정보를 저장한다.
|
function makeWorkflowWidget(result) {
|
$scope.vm.workflowWidget = result;
|
|
if (!$rootScope.isDefined(result.data)) {
|
return;
|
}
|
|
$scope.vm.form.issueStatusVos = result.data.issueStatusVos;
|
|
if ($scope.vm.workflowWidget.workflowVos.length > 0) {
|
$scope.vm.workflowWidget.workflowVos[0].checked = true;
|
}
|
}
|
|
// 워크플로우 위젯
|
function findWorkflowWidget(workflowId) {
|
// 검색 조건
|
var content = {
|
workflowId : workflowId,
|
workspaceId : $rootScope.user.lastWorkspaceId
|
};
|
|
Widget.findWorkflow($resourceProvider.getContent(content,
|
$resourceProvider.getPageContent(0, 0))).then(function (result) {
|
|
if (result.data.message.status === "success") {
|
// 워크플로우 정보를 저장한다.
|
$scope.fn.makeWorkflowWidget(result.data.workflowWidget);
|
|
angular.forEach($scope.vm.workflowWidget.workflowVos, function (workflowVo) {
|
if (workflowVo.id === workflowId) {
|
workflowVo.checked = true;
|
}
|
else {
|
workflowVo.checked = false;
|
}
|
});
|
}
|
else {
|
SweetAlert.error($filter("translate")("managementWorkflow.failedWorkflowListLookup"), result.data.message.message); //워크플로우 조회 실패
|
}
|
});
|
}
|
}
|
,
|
link : function (scope, element, attrs) {
|
|
}
|
};
|
}])
|
});
|