var $ = require('common:zepto'),AzAjax = require(':common/AzAjax/AzAjax.js'),Tips = require('common:tips');
/** 参数说明
selected = 0 时 必须设定下面1 参数
1.
page: 当前页面路径,例如“/zbj/assess/index”
url: 请求地址
params: 请求参数,json格式
successAjax: success时(code==0)回调函数
2.
dom: dom容器 例如“#draw_light”
startAngle: 平分几等分
speed : 运行速度
steppingAccelerate : 第几步加速 必须大于0
basecircle : 第几步减速
selected : 规定第几项中奖
默认点击抽奖按钮类名 :“j_dialog_btn”
**/
var LotteryData = {
div : "",
timer:null,
index : 0,
stop : false,
running :true,
isBeginPrize :false,
stepping : 0,
selected:0,
stAngle : 0,
startAngle : 0,
speed : 300,
steppingAccelerate : 6,
basecircle : 4,
successLottery:$.noop
}
var LotteryText = ["1","2","3","4","5","6"];
function lotteryText(){
var residue = (LotteryData.stAngle)%360,
index;
if(residue == 0 ){
index = 0;
}else{
index = residue / (360/LotteryData.startAngle);
}
Tips.success("你中了"+LotteryText[index]+"等奖");
}
function drawCircle(running){
if(running){
$(".draw_light").css('transform','rotate(' + LotteryData.stAngle +'deg)');
$(".draw_light").css('-webkit-transform','rotate(' + LotteryData.stAngle +'deg)');
LotteryData.stAngle +=(360/LotteryData.startAngle);
}
};
function rotate(){
if(LotteryData.stepping == LotteryData.steppingAccelerate){
clearTimer();
LotteryData.speed = +150;
LotteryData.timer = setInterval(rotate,LotteryData.speed);
}
if(LotteryData.basecircle > 0 && LotteryData.index ==10){ //中间动画
LotteryData.index = 8;
LotteryData.basecircle--;
clearTimer();
LotteryData.speed = 300;
LotteryData.timer = setInterval(rotate,LotteryData.speed);
if(LotteryData.basecircle == 0){
LotteryData.isBeginPrize = true;
}
}
if(LotteryData.isBeginPrize && LotteryData.selected > 0) // 开始抽奖
{
if(--LotteryData.selected == 0) //到了选择的奖项之后
{
clearTimer();
setTimeout(function(){
LotteryData.successLottery && LotteryData.successLottery.call(this);
lotteryText();
},(LotteryData.speed+200));
}
else
{
clearTimer();
LotteryData.speed += 100;
LotteryData.timer = setInterval(rotate,LotteryData.speed);
}
}
drawCircle(true);
LotteryData.index++;
LotteryData.stepping++;
};
function clearTimer(){
clearInterval(LotteryData.timer);
LotteryData.timer = null;
}
function Lottery(opt){
this.options = $.extend({
dom:'#draw_light',
startAngle:0,
speed : 300,
steppingAccelerate : 6 ,
basecircle : 3,
selected : 0 ,
url:"",
page:"",
params:{},
successAjax:$.noop,
successLottery:$.noop
},opt||{});
this.init();
}
Lottery.prototype = {
init :function(){
this.bindSubmit();
},
dataInit:function(){
LotteryData.div = $(this.options.dom);
LotteryData.timer = null;
LotteryData.index = 0;
LotteryData.stop = this.options.selected ? true : false;
LotteryData.running= true;
LotteryData.isBeginPrize = false;
LotteryData.stepping = 0;
LotteryData.successLottery = this.options.successLottery ? this.options.successLottery : $.noop;
LotteryData.startAngle = this.options.startAngle ? this.options.startAngle : 6;
LotteryData.selected = this.options.selected ? (this.options.selected + 3)-(this.options.steppingAccelerate - this.options.startAngle) : 0;
LotteryData.speed = this.options.speed ? this.options.speed : 300;
LotteryData.steppingAccelerate = this.options.steppingAccelerate ? this.options.steppingAccelerate : 6;
LotteryData.basecircle = this.options.basecircle ? this.options.basecircle : 4;
},
bindSubmit:function(){
var self = this;
$(".j_dialog_btn").click(function(){
$(".j_dialog_btn").attr("disabled","disabled");
self.dataInit();
if(self.options.selected > self.options.startAngle) {
return Tips.error("该奖项大于奖项总数");
}
var time1 = setInterval(function(){
drawCircle(LotteryData.running);
if(LotteryData.stop){
if(LotteryData.stepping == LotteryData.steppingAccelerate){
clearInterval(time1);
LotteryData.stAngle = LotteryData.stAngle-(360/LotteryData.startAngle);
rotate();
}else{
LotteryData.stepping++;
}
}
},LotteryData.speed);
if(!LotteryData.selected){
AzAjax.send({
curPage : self.options.page,
ajaxUrl : self.options.url,
ajaxPram : self.options.params,
type :'POST',
aSuccessCallBack : function(data){
if(code == 0 ){
self.options.successAjax && self.options.successAjax.call(self,data);
LotteryData.selected = (data.selected + 3) - (self.options.steppingAccelerate - self.options.startAngle) ;
LotteryText = data.LotteryText;
LotteryData.stop = true;
Tips.success(data.msg);
}else{
clearInterval(time1);
Tips.error(data.msg);
$(".j_dialog_btn").removeAttr('disabled');
}
}
});
}
})
}
}
return Lottery;
/** 参数说明
selected = 0 时 必须设定下面1 参数
1.
page: 当前页面路径,例如“/zbj/assess/index”
url: 请求地址
params: 请求参数,json格式
successAjax: success时(code==0)回调函数
2.
dom: dom容器 例如“#draw_light”
startAngle: 平分几等分
speed : 运行速度
steppingAccelerate : 第几步加速 必须大于0
basecircle : 第几步减速
selected : 规定第几项中奖
默认点击抽奖按钮类名 :“j_dialog_btn”
**/
var LotteryData = {
div : "",
timer:null,
index : 0,
stop : false,
running :true,
isBeginPrize :false,
stepping : 0,
selected:0,
stAngle : 0,
startAngle : 0,
speed : 300,
steppingAccelerate : 6,
basecircle : 4,
successLottery:$.noop
}
var LotteryText = ["1","2","3","4","5","6"];
function lotteryText(){
var residue = (LotteryData.stAngle)%360,
index;
if(residue == 0 ){
index = 0;
}else{
index = residue / (360/LotteryData.startAngle);
}
Tips.success("你中了"+LotteryText[index]+"等奖");
}
function drawCircle(running){
if(running){
$(".draw_light").css('transform','rotate(' + LotteryData.stAngle +'deg)');
$(".draw_light").css('-webkit-transform','rotate(' + LotteryData.stAngle +'deg)');
LotteryData.stAngle +=(360/LotteryData.startAngle);
}
};
function rotate(){
if(LotteryData.stepping == LotteryData.steppingAccelerate){
clearTimer();
LotteryData.speed = +150;
LotteryData.timer = setInterval(rotate,LotteryData.speed);
}
if(LotteryData.basecircle > 0 && LotteryData.index ==10){ //中间动画
LotteryData.index = 8;
LotteryData.basecircle--;
clearTimer();
LotteryData.speed = 300;
LotteryData.timer = setInterval(rotate,LotteryData.speed);
if(LotteryData.basecircle == 0){
LotteryData.isBeginPrize = true;
}
}
if(LotteryData.isBeginPrize && LotteryData.selected > 0) // 开始抽奖
{
if(--LotteryData.selected == 0) //到了选择的奖项之后
{
clearTimer();
setTimeout(function(){
LotteryData.successLottery && LotteryData.successLottery.call(this);
lotteryText();
},(LotteryData.speed+200));
}
else
{
clearTimer();
LotteryData.speed += 100;
LotteryData.timer = setInterval(rotate,LotteryData.speed);
}
}
drawCircle(true);
LotteryData.index++;
LotteryData.stepping++;
};
function clearTimer(){
clearInterval(LotteryData.timer);
LotteryData.timer = null;
}
function Lottery(opt){
this.options = $.extend({
dom:'#draw_light',
startAngle:0,
speed : 300,
steppingAccelerate : 6 ,
basecircle : 3,
selected : 0 ,
url:"",
page:"",
params:{},
successAjax:$.noop,
successLottery:$.noop
},opt||{});
this.init();
}
Lottery.prototype = {
init :function(){
this.bindSubmit();
},
dataInit:function(){
LotteryData.div = $(this.options.dom);
LotteryData.timer = null;
LotteryData.index = 0;
LotteryData.stop = this.options.selected ? true : false;
LotteryData.running= true;
LotteryData.isBeginPrize = false;
LotteryData.stepping = 0;
LotteryData.successLottery = this.options.successLottery ? this.options.successLottery : $.noop;
LotteryData.startAngle = this.options.startAngle ? this.options.startAngle : 6;
LotteryData.selected = this.options.selected ? (this.options.selected + 3)-(this.options.steppingAccelerate - this.options.startAngle) : 0;
LotteryData.speed = this.options.speed ? this.options.speed : 300;
LotteryData.steppingAccelerate = this.options.steppingAccelerate ? this.options.steppingAccelerate : 6;
LotteryData.basecircle = this.options.basecircle ? this.options.basecircle : 4;
},
bindSubmit:function(){
var self = this;
$(".j_dialog_btn").click(function(){
$(".j_dialog_btn").attr("disabled","disabled");
self.dataInit();
if(self.options.selected > self.options.startAngle) {
return Tips.error("该奖项大于奖项总数");
}
var time1 = setInterval(function(){
drawCircle(LotteryData.running);
if(LotteryData.stop){
if(LotteryData.stepping == LotteryData.steppingAccelerate){
clearInterval(time1);
LotteryData.stAngle = LotteryData.stAngle-(360/LotteryData.startAngle);
rotate();
}else{
LotteryData.stepping++;
}
}
},LotteryData.speed);
if(!LotteryData.selected){
AzAjax.send({
curPage : self.options.page,
ajaxUrl : self.options.url,
ajaxPram : self.options.params,
type :'POST',
aSuccessCallBack : function(data){
if(code == 0 ){
self.options.successAjax && self.options.successAjax.call(self,data);
LotteryData.selected = (data.selected + 3) - (self.options.steppingAccelerate - self.options.startAngle) ;
LotteryText = data.LotteryText;
LotteryData.stop = true;
Tips.success(data.msg);
}else{
clearInterval(time1);
Tips.error(data.msg);
$(".j_dialog_btn").removeAttr('disabled');
}
}
});
}
})
}
}
return Lottery;