/**
|
* Created by wisestone on 2018-10-30.
|
*/
|
'use strict';
|
|
define([
|
'app'
|
],
|
function (app) {
|
app.controller('widgetDashBoardController', ['$scope', '$rootScope', '$log', '$resourceProvider', 'Widget', 'SweetAlert', '$filter',
|
function ($scope, $rootScope, $log, $resourceProvider, Widget, SweetAlert, $filter) {
|
|
// 함수 모음
|
$scope.fn = {
|
findAllWidget : findAllWidget, // 대시보드 위젯 전체 조회
|
filterMembers : filterMembers // 멤버별 진행률 - 메인 프로젝트 + 하위 프로젝트 합쳐서 보여주기
|
};
|
|
// 변수 모음
|
$scope.vm = {
|
issueStatisticsWidget : null, // 전체 이슈 현황
|
projectProgressWidget : null, // 진행중인 프로젝트 현황
|
myAssigneeIssueWidget : null, // 나에게 할당된 이슈
|
delayIssueWidget : null, // 지연중인 이슈
|
registerIssueWidget : null, // 내가 등록한 이슈
|
memberProgressWidget : null, // 멤버별 진행률
|
myIssueWidget : null, // 나의 이슈 현황
|
riskIssueWidget : null, // 위험 관리 이슈
|
issueCompleteWidget : null, // 전체 이슈 처리 현황
|
issueStatusWidget : [], // 상태별 이슈 현황
|
workflowWidget : null, // 워크플로우
|
issueTypeWidget : null, // 이슈 유형별 이슈 현황
|
severityIssueWidget: null, // 중요도 별 이슈 현황
|
};
|
|
function filterMembers(result) {
|
const members = result.data.memberProgressWidget.members;
|
var filterMembers = members.filter(function(item, idx){
|
return members.findIndex(function(item2, idx2){
|
return item.departmentName === item2.departmentName
|
}) == idx;
|
});
|
|
var departmentNames = [];
|
angular.forEach(filterMembers, function (member) {
|
departmentNames.push(member.departmentName);
|
});
|
var completeCounts = [];
|
var delayCounts = [];
|
var remainCounts = [];
|
|
for(var j=0; j<departmentNames.length; j++){ //배열 초기값 선언
|
completeCounts[j] = 0;
|
delayCounts[j] = 0;
|
remainCounts[j] = 0;
|
}
|
|
for(var i=0; i<members.length; i++){
|
for(var j=0; j<departmentNames.length; j++){
|
if(members[i].departmentName === departmentNames[j]){
|
completeCounts[j] += members[i].completeCount;
|
delayCounts[j] += members[i].delayCount;
|
remainCounts[j] += members[i].remainCount;
|
}
|
}
|
}
|
for(var i=0; i<filterMembers.length; i++){
|
filterMembers[i].completeCount = completeCounts[i]
|
filterMembers[i].delayCount = delayCounts[i]
|
filterMembers[i].remainCount = remainCounts[i]
|
}
|
result.data.memberProgressWidget.members = filterMembers;
|
}
|
|
// 대시보드 위젯 전체 조회
|
function findAllWidget() {
|
Widget.findAllWidget($resourceProvider.getContent({},
|
$resourceProvider.getPageContent(0, 0))).then(function (result) {
|
|
if (result.data.message.status === "success") {
|
$scope.vm.issueStatisticsWidget = result.data.issueStatisticsWidget;
|
// 진행중인 프로젝트 현황 정보를 저장한다.
|
$scope.vm.projectProgressWidget = result.data.projectProgressWidget;
|
// 나에게 할당된 이슈 정보를 저장한다.
|
$scope.vm.myAssigneeIssueWidget = result.data.myAssigneeIssueWidget;
|
// 지연중인 이슈 정보를 저장한다.
|
$scope.vm.delayIssueWidget = result.data.delayIssueWidget;
|
// 내가 등록한 이슈 정보를 저장한다.
|
$scope.vm.registerIssueWidget = result.data.registerIssueWidget;
|
// 위험 관리 이슈 정보를 저장한다.
|
$scope.vm.riskIssueWidget = result.data.riskIssueWidget;
|
// 나의 이슈 현황 정보를 저장한다.
|
$scope.vm.myIssueWidget = result.data.myIssueWidget;
|
|
// 멤버별 진행률을 저장한다.
|
$scope.fn.filterMembers(result);// 하위프로젝트가 있을 경우 합쳐서 보여주기
|
$scope.vm.memberProgressWidget = result.data.memberProgressWidget;
|
// 전체 이슈 처리 현황 정보를 저장한다.
|
$scope.vm.issueCompleteWidget = result.data.issueCompleteWidget;
|
// 상태별 이슈 현황 정보를 저장한다.
|
$scope.vm.issueStatusWidget = result.data.issueStatusWidget;
|
// 워크플로우 정보를 저장한다.
|
$scope.vm.workflowWidget = result.data.workflowWidget;
|
// 이슈 유형별 이슈 현황 정보를 저장한다.
|
$scope.vm.issueTypeWidget = result.data.issueTypeWidget;
|
// 중요도 별 이슈 현황 정보를 저장한다.
|
$scope.vm.severityIssueWidget = result.data.severityIssueWidget;
|
|
$rootScope.dashboard = result.data.dashboardType;
|
}
|
else {
|
SweetAlert.swal($filter("translate")("dashboard.failedDashboardWidgetLookup"), result.data.message.message, "error"); // "대시보드 위젯 조회 실패"
|
}
|
});
|
}
|
|
// 전체 이슈 위젯 정보 조회
|
$scope.fn.findAllWidget();
|
}
|
]);
|
}
|
);
|