(function(){var appStatusApp=angular.module("appStatusApp",[]);
appStatusApp.config(["$locationProvider",function($locationProvider){$locationProvider.html5Mode(true);
}]);
appStatusApp.controller("appStatusController",["$scope","$http","$timeout","$window","$location",function($scope,$http,$timeout,$window,$location){jQuery(".angular-container").show();
$scope.initialized=false;
$scope.upgradeMode=false;
$scope.appInfoCollection=[];
$scope.errorsCount=0;
$scope.warningsCount=0;
var appVirtualPath=document.getElementById("applicationVirtualPath")?document.getElementById("applicationVirtualPath").value:"";
var timer;
var getSitefinityVersion=function(){$http({method:"GET",url:appVirtualPath+"/appstatus?info=versioning"}).success(function(data,status,headers,config){if(data.Current){$scope.currentVersion=data.Current;
}});
};
var getAppStatus=function(){$http({method:"GET",url:$scope.appInfoCollection.length>0?appVirtualPath+"/appstatus?count="+$scope.appInfoCollection.length:appVirtualPath+"/appstatus"}).success(function(data,status,headers,config){if(!data.State){redirectToReturnUrl();
return;
}$scope.initialized=true;
$scope.currentAppState=data.State;
$scope.adminMode=data.AdminMode;
if(data.State==="Upgrading"){$scope.upgradeMode=true;
}if(data.Info&&data.Info.length>0){angular.forEach(data.Info,function(infoItem){var item={message:infoItem.Message,severity:getSeverity(infoItem.SeverityString),date:new Date(Date(infoItem.TimestampString)),longMessage:infoItem.Message.length>500?true:false};
$scope.appInfoCollection.unshift(item);
if(item.severity==="error"){$scope.currentAppState="Failed";
$scope.errorsCount++;
}if(item.severity==="warning"){$scope.warningsCount++;
}});
$scope.currentAction=data.Info[0].Message;
}if($scope.currentAppState!=="Failed"){getAppStatusInterval();
}}).error(function(data,status,headers,config){if(status===404){if(!$scope.upgradeMode||!$scope.adminMode){redirectToReturnUrl();
}else{$scope.initialized=true;
$scope.currentAppState="Done";
}}});
};
var getAppStatusInterval=function(){timer=$timeout(function(){getAppStatus();
},3000);
};
getSitefinityVersion();
getAppStatus();
var redirectToReturnUrl=function(){var qsItems=$location.search();
var returnUrl=qsItems.ReturnUrl;
if(!returnUrl){returnUrl=$location.protocol()+"://"+$location.host();
if($location.port()){returnUrl=returnUrl+":"+$location.port();
}}$window.location=returnUrl;
};
var getSeverity=function(severityRaw){if(severityRaw==="Warning"||severityRaw==="Error"){return"warning";
}if(severityRaw==="Critical"){return"error";
}return severityRaw;
};
$scope.showReport=function(){$scope.detailsVisible=true;
};
$scope.hideReport=function(){$scope.detailsVisible=false;
};
$scope.goToSite=function(){redirectToReturnUrl();
};
}]);
appStatusApp.directive("expandCollapse",[function(){return{restrict:"A",link:function(scope,element,attrs){element.bind("click",function(){element.prev().toggleClass("active");
if(element.prev().hasClass("active")){element.html("Collapse");
}else{element.html("Expand");
}});
}};
}]);
})();
