/** * 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) { } }; }]) });