123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- /*
- @ 个人成就页面拆分逻辑 by zengfukun@foxmail.com
- @ 2016/7/29
- */
- var App = {
- init: function() {
- var self = this;
- // 初始化数据
- self.yyuid = $.cookie('yyuid');
- self.userId = self.Kit.getArgs('userId');
- self.zone = self.Kit.getArgs('gameZone');
- self.Services = 'http://api.lolbox.duowan.com/api/v2/player/'+ self.zone +'/'+ self.userId +'/achievements/';
- // 业务初始化
- self.getUserAchievement();
- self.bindEvent();
- },
- // 事件绑定
- bindEvent: function() {
- var self = this;
- // 设置称号
- $(document).on('click', '.lock-wrap li', function() {
- var id = $(this).index();
- var isFinish = $(this).hasClass('finish');
- var isActive = $(this).hasClass('active');
- if ( isFinish && !isActive ) {
- // 防刷过滤
- if ( self.waiting ) return false;
- self.setUserTag(id);
- }
- })
- },
- // 获取用户个人成就
- getUserAchievement: function() {
- var self = this;
- $.ajax({
- url: self.Services,
- dataType: 'jsonp',
- data: {
- 'action': 'achievement'
- },
- success: function(o,status) {
- if ( status == 'success' ) {
- var result = o.personal_achievement;
- // 模板渲染
- var template = _.template($("#achievement-tpl").html());
- $(".mod-tabs-bd").html(template({
- data: result
- }));
- // 饼图初始化
- self.renderEchart(result);
- }
- }
- });
- },
- // 设置称号
- setUserTag: function(id) {
- var self = this;
- // 防刷加锁
- self.waiting = true;
- $.ajax({
- url: self.Services,
- dataType: 'jsonp',
- data: {
- 'action' : 'display',
- 'display_title' : id + 1 // 后端默认0位空
- },
- success: function(o, status) {
- if ( status == 'success' ) {
- // 勋章显示
- var medalSrc = $('.lock-wrap li').eq(id).find('img').attr('src');
- $('.userMedal').attr('src', medalSrc);
- $('.lock-wrap li')
- .removeClass('active')
- .eq(id).addClass('active');
- alert('称号设置成功');
- // 防刷解锁
- setTimeout(function() {
- self.waiting = false;
- }, 2*1000);
- }else{
- alert('称号设置失败');
- }
- }
- });
- },
- // 渲染饼图
- renderEchart: function(data) {
- var self = this;
- // 三杀
- var dp1 = calcRate(data.triple_kill, data.display_num);
- $('#threeKillContainer').highcharts($.extend({}, self.highchartsOpts, {
- colors: self.defaultColors,
- series: [{
- colorByPoint: true,
- data: [{
- y: dp1.all
- }, {
- y: dp1.num
- }]
- }]
- }));
- // 五杀
- var dp2 = calcRate(data.penta_kill, data.display_num);
- $('#fiveKillContainer').highcharts($.extend({}, self.highchartsOpts, {
- colors: self.defaultColors,
- series: [{
- colorByPoint: true,
- data: [{
- y: dp2.all
- }, {
- y: dp2.num
- }]
- }]
- }));
- // 超神
- var dp3 = calcRate(data.god_like, data.display_num);
- $('#superGodContainer').highcharts($.extend({}, self.highchartsOpts, {
- colors: self.defaultColors,
- series: [{
- colorByPoint: true,
- data: [{
- y: dp3.all
- }, {
- y: dp3.num
- }]
- }]
- }));
- // CARRY
- var dp4 = calcRate(data.carry_num, data.display_num);
- $('#carryContainer').highcharts($.extend({}, self.highchartsOpts, {
- colors: self.defaultColors,
- series: [{
- colorByPoint: true,
- data: [{
- y: dp4.all
- }, {
- y: dp4.num
- }]
- }]
- }));
- // MVP
- var dp5 = calcRate(data.mvp_num, data.display_num);
- $('#mvpContainer').highcharts($.extend({}, self.highchartsOpts, {
- colors: self.defaultColors,
- series: [{
- colorByPoint: true,
- data: [{
- y: dp5.all
- }, {
- y: dp5.num
- }]
- }]
- }));
- // 比例换算 - 包装返回数据
- function calcRate(num, all) {
- return {
- num: (num / all)*100 > 100 ? 100 : (num / all)*100,
- all: (num / all)*100 > 100 ? 0 : ( 100 - (num / all)*100 )
- }
- }
- }
- }
- // 工具箱
- App.Kit = {
- getArgs: function(key) {
- var value = location.search.match(new RegExp("[?&]" + key + "=([^&]*)(&?)", "i"));
- return value ? decodeURIComponent(value[1]) : value;
- }
- }
- App.init();
|