You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

161 lines
4.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

var app = angular.module('onlineJudgeApp', [ 'ngRoute', 'appCtrls' ]);
// 让子页面里面可以动态加载script的标签
app.directive('loadScript', function() {
return {
restrict : 'EA',
terminal : true,
link : function(scope, element, attr) {
if (attr.ngSrc) {
var s = document.createElement('script');
s.src = attr.ngSrc;
document.body.appendChild(s);
}
}
};
});
// 转换日期显示样式的过滤器
app.filter("stringDateFormat", function($filter) {
return function(self, format) {
if (self != null) {
return $filter('date')(new Date(self), format);
}
return "";
};
});
// 编译文件内容为html元素的的过滤器
app.filter("formatToHtml", function($sce) {
return function(html, id) {
$("#" + id).html(html);
return "";
}
});
// session存储数据
app.factory('sessionDataBase', [ '$window', function($window) {
return { // 存储单个属性
set : function(key, value) {
$window.sessionStorage.setItem(key, value);
}, // 读取单个属性
get : function(key, defaultValue) {
return $window.sessionStorage.getItem(key) || defaultValue;
}, // 存储对象以JSON格式存储
setObject : function(key, value) {
$window.sessionStorage.setItem(key, angular.toJson(value));
}, // 读取对象
getObject : function(key) {
return angular.fromJson($window.sessionStorage.getItem(key));
},
remove : function(key) {
return $window.sessionStorage.removeItem(key);
},
clear : function() {
$window.sessionStorage.clear();
}
}
} ]);
// 定义一个 拦截器 ,稍等将会把它作为 Interceptors 的处理函数
app.factory('httpInterceptor', [ '$q', '$injector', '$rootScope',
'sessionDataBase',
function($q, $injector, $rootScope, sessionDataBase) {
var httpInterceptor = {
'responseError' : function(response) {
if (response.status == 301) {
alert("请登录");
sessionDataBase.remove("user");
$rootScope.userData = null;
}
return $q.reject(response);
},
'response' : function(response) {
return response;
},
'request' : function(config) {
return config;
},
'requestError' : function(config) {
return $q.reject(config);
}
}
return httpInterceptor;
} ]);
app
.config(function($httpProvider, $routeProvider) {
// 添加对应的 Interceptors
$httpProvider.interceptors.push("httpInterceptor");
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.get = {};
}
$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
// 禁用IE对ajax的缓存
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
$routeProvider.when('/welcome', {
templateUrl : 'welcome.html'
}).when('/announcement/index', {
templateUrl : 'announcement/announcement.html'
}).when('/problem/index', {
templateUrl : 'problem/index.html'
}).when('/problem/detail', {
templateUrl : 'problem/detail.html'
}).when('/user/index', {
templateUrl : 'user/index.html'
}).when('/competition/index', {
templateUrl : 'competition/index.html'
}).when('/competition/answer', {
templateUrl : 'competition/answer.html'
}).when('/announcement/index', {
templateUrl : 'announcement/index.html'
}).when('/leaderboard/index', {
templateUrl : 'leaderboard/index.html'
}).otherwise({
redirectTo : '/welcome'
});
});
// 定义一个通用的分页service
app.service('$pageService', [ '$http', function($http) {
this.loadingData = function($scope, wantPageNumber, url) {
$http({
method : "get",
url : url,
params : {
pageShowCount : $scope.page.pageShowCount,
wantPageNumber : wantPageNumber
}
}).success(function(response) {
$scope.isLoadingData = false;
$scope.page.currentPage = response.currentPage;
$scope.page.totalCount = response.totalCount;
$scope.page.totalPage = response.totalPage;
$scope.page.datas = response.result;
$scope.isCanNext = false;
$scope.isCanPre = false;
if ($scope.page.totalPage > $scope.page.currentPage) {
$scope.isCanNext = true;
}
if ($scope.page.currentPage > 1) {
$scope.isCanPre = true;
}
}).error(function(response) {
});
}
this.changePage = function(isNext, $scope, url) {
var page = $scope.page.currentPage;
if (isNext) {
page++;
} else {
page--;
}
this.loadingData($scope, page, url)
};
} ]);