/** * Created by wisestone on 2018-11-02. */ 'use strict'; define(['app', 'saveSvgAsPng'], function (app, saveSvgAsPng) { app.directive('issueCompleteWidget', ['$log', '$rootScope', '$resourceProvider', 'Widget', 'SweetAlert', 'Workspace', '$filter', function ($log, $rootScope, $resourceProvider, Widget, SweetAlert, Workspace, $filter) { return { restrict : 'E', scope : { issueCompleteWidget : '=', }, replace : true, templateUrl : '../custom_components/widget/issue-complete-widget/issue-complete-widget.html', controller : function ($scope, $element, $attrs) { // 함수 모음 $scope.fn = { findIssueCompleteWidget : findIssueCompleteWidget, // 전체 이슈 처리 현황 조회 downloadImage : downloadImage, // 이미지 다운로드 }; // 변수 모음 $scope.vm = { options : { chart : { type : 'discreteBarChart', height : 220, margin : { top : 20, right : 20, bottom : 20, left : 55 }, x : function (d) { return d.modifyDate; }, y : function (d) { return d.issueCount; }, yDomain : [0, 5], showValues : true, valueFormat : function (d) { return d; }, duration : 100, xAxis : { axisLabel : '' }, yAxis : { axisLabel : '', axisLabelDistance : 10, tickFormat : function (d) { return d3.format(',.0f')(d); } } } }, data : [ { key : "", values : [] } ], search : { searchPeriod : "LAST_SEVEN_DAYS" } }; // 전체 이슈 처리 현황 정보가 변경될때 감지한다. $scope.$watch("issueCompleteWidget", function (newValue) { if ($rootScope.isDefined(newValue)) { var maxCount = 5; angular.forEach(newValue.issueCompleteCountList, function (value) { if (maxCount < value.issueCount) { maxCount = value.issueCount; } }); $scope.vm.options = { chart : { type : 'discreteBarChart', height : 220, margin : { top : 20, right : 20, bottom : 20, left : 55 }, x : function (d) { return d.modifyDate; }, y : function (d) { return d.issueCount; }, yDomain : [0, maxCount], showValues : true, valueFormat : function (d) { return d; }, duration : 100, xAxis : { axisLabel : '' }, yAxis : { axisLabel : '', axisLabelDistance : 10, tickFormat : function (d) { return d3.format(',.0f')(d); } } } }; $scope.vm.data[0].values = newValue.issueCompleteCountList; } }); // 전체 이슈 처리현황 목록 조회 function findIssueCompleteWidget() { Widget.findIssueComplete($resourceProvider.getContent($scope.vm.search, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { $scope.issueCompleteWidget = result.data.issueCompleteWidget; } else { SweetAlert.error($filter("translate")("dashboard.failedToTotalIssueHandling"), result.data.message.message); // 전체 이슈 처리현황 실패 } }); } // 이미지 다운로드 function downloadImage() { if ((navigator.userAgent.indexOf('MSIE') > 0 || navigator.userAgent.indexOf('Trident') > 0)) { SweetAlert.warning($filter("translate")("dashboard.notSupportedImageDownload"), $filter("translate")("dashboard.ieNotSupportedImageDownload")); // 이미지 다운로드 미지원, IE 에서는 이미지 다운로드를 지원하지 않습니다. return; } // 업무 공간에서 해당 사용자가 활성 상태 인지 확인 후 이미지 다운로드를 실행한다. Workspace.checkUseWorkspace($resourceProvider.getContent({}, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { saveSvgAsPng.saveSvgAsPng($($element).find("svg")[0], $filter("translate")("dashboard.overallIssueHandlingStatusPNG"), { canvg : null, backgroundColor: '#f1f1f1' }); // 전체 이슈 처리 현황.png } else { // 웹 소켓 연결이 안되어 있을 경우에는 직접 alert 를 표시한다. if ($rootScope.getObjectKeys($rootScope.users) < 1) { SweetAlert.error($filter("translate")("dashboard.excludeWorkspaceParticipation"), result.data.message.message); // 업무 공간 참여 제외 } } }); } } , link : function (scope, element, attrs) { } }; }]) });