/*
* Author: 众产® https://ciy.cn/code
* Version: 0.1.1
*/
'use strict';
ciyclass.bigpanel = function (opt) {
var thos = this;
if (!opt.name)
return console.error('panel: opt nofind name');
if (!opt.jspath)
return console.error('panel: opt nofind jspath');
opt.style = opt.style || '';
opt.prop = opt.prop || '';
this.container = $5('
');
if (opt.animation) {
if (this.container[0].animate) {
this.container.show(opt.animation, 400);
} else {
opt.animation = null;
}
}
if (opt.mask) {
var maskdiv = $5('');
maskdiv.append(this.container);
$5('body').append(maskdiv);
} else {
$5('body').append(this.container);
}
var plots = {};
var bfuncload = false;
var funcsecs = {};
var tick = null;
var tick_btns = null;
var t_btns;
this.addplot = function (opn) {
plots[opn.jsname] = { load: 0 };
// if (window['ciy_chart_' + opn.jsname])
// return;
opn.style = opn.style || '';
opn.prop = opn.prop || '';
ciyfn.loadjs('ciy_chart_' + opn.jsname, opt.jspath + opn.jsname + '.js', function () {
plots[opn.jsname].load = 1;
plots[opn.jsname].container = $5('');
thos.container.append(plots[opn.jsname].container);
plots[opn.jsname].load = 2;
plots[opn.jsname].clss = new window['ciy_chart_' + opn.jsname]({ container: plots[opn.jsname].container });
});
}
this.setbtns = function (opn) {
opn.html = opn.html || '';
if (opn.hideopacity === undefined)
opn.hideopacity = 0.9;
opn.hidesec = opn.hidesec || 5;
if (!opn.html) {
if (opn.template == 'close1')
opn.html = '×
';
}
if (!opn.html)
return console.error('setbtns缺少html或template参数');
var btns = $5(opn.html);
thos.container.append(btns);
t_btns = 0;
thos.container.on('mousemove', function () {
t_btns = +new Date();
});
tick_btns = setInterval(function () {
if (+new Date() - t_btns > opn.hidesec * 1000)
btns.css('opacity', opn.hideopacity);
else
btns.css('opacity', 1);
}, 500);
btns.on('click', function (e) {
var act = e.currentTarget.getAttribute('data-act');
if (act == 'close')
thos.distory();
else {
if (typeof (opn.click) == 'function')
opn.click(e);
}
});
}
this.run = function (fsec) {
function _run() {
if (!bfuncload) {
var bload = true;
for (var iplot in plots) {
if (plots[iplot].load == 0)
bload = false;
if (!plots[iplot].clss)
continue;
if (!plots[iplot].clss.func)
continue;
var func = plots[iplot].clss.func;
for (var i in func) {
var fkey = (plots[iplot].clss.prefunc || '') + func[i];
funcsecs[fkey] = {};
funcsecs[fkey].t = 0;
funcsecs[fkey].prefunc = plots[iplot].clss.prefunc;
funcsecs[fkey].max = fsec[fkey] ? fsec[fkey] : 0;
}
}
bfuncload = bload;
}
//console.log(funcsecs);
for (var ifu in funcsecs) {
if (funcsecs[ifu].t == 0) {
(function (ifu) {
var post = ciyfn.objclone(Glob.post);
ciyfn.callfunc(ifu, Object.assign({}, post, thos.post), function (jsondata) {
if (funcsecs[ifu].max > 0)
funcsecs[ifu].t = funcsecs[ifu].max;
for (var iplot in plots) {
if (!plots[iplot].clss)
continue;
if (plots[iplot].clss.prefunc != funcsecs[ifu].prefunc)
continue;
var funcstr = ifu.substring((funcsecs[ifu].prefunc || '').length);
if (plots[iplot].clss.func.indexOf(funcstr) == -1)
continue;
if (typeof (plots[iplot].clss.setdata) != 'function')
continue;
try {
plots[iplot].clss.setdata(funcstr, jsondata);
} catch (e) {
console.error('setdata:' + ifu, jsondata, e);
}
}
}, {
showload: false
, fail: function (jsondata, err) {
if (jsondata && jsondata.errmsg) {
if (typeof (plots[iplot].clss.errdata) == 'function')
plots[iplot].clss.errdata(ifu, jsondata);
return;
}
funcsecs[ifu].t = 5;//5秒重试
}
});
})(ifu);
//console.log('run', ifu);
}
funcsecs[ifu].t--;
}
}
_run();
tick = setInterval(_run, 500);
}
this.setdata = function () { //临时
for (var iplot in plots) {
if (plots[iplot].load < 2)
continue;
if (typeof (plots[iplot].clss.setdata) == 'function')
plots[iplot].clss.setdata();
}
}
this.resize = function () {
for (var iplot in plots) {
if (plots[iplot].load < 2)
continue;
if (typeof (plots[iplot].clss.resize) == 'function')
plots[iplot].clss.resize();
}
}
this.distory = function () {
clearInterval(tick);
clearInterval(tick_btns);
for (var iplot in plots) {
//window['ciy_chart_' + iplot] = null;
if (plots[iplot].load < 2)
continue;
if (plots[iplot].clss && typeof (plots[iplot].clss.distory) == 'function')
plots[iplot].clss.distory();
delete plots[iplot].clss;
delete plots[iplot];
}
if (opt.animation) {
if (opt.mask) {
thos.container.parent()[0].animate([
{ opacity: 1 },
{ opacity: 0 }
], { duration: 400 });
thos.container.parent().css('opacity', 0);
}
if (opt.animation == 'ani2') {
} else {
this.container[0].animate([
{ opacity: 1, transform: 'scale(1)' },
{ opacity: 0.9, transform: 'scale(1.05)', offset: 0.2 },
{ opacity: 0, transform: 'scale(0)' }
], { duration: 400 });
this.container.css('transform', 'scale(0)');
}
setTimeout(function () {
removediv();
}, 1000);
} else {
removediv();
}
function removediv() {
if (opt.mask) {
thos.container.parent().remove();
} else {
thos.container.remove();
}
}
}
return this;
};
ciyfn.big_setbetsize = function (basewidth, fontsize) {
if (fontsize === undefined)
fontsize = 'auto';
var bet = 1;
if (fontsize !== 0) {
if (fontsize == 'auto') {
fontsize = 14;
var screenwidth = window.screen.width;
if (urlp.dev) {
if (window.devicePixelRatio / 1.25 < 1) {
screenwidth = screenwidth * 1.25 / window.devicePixelRatio;
}
}
if (screenwidth > basewidth) {
fontsize = 14 * screenwidth / basewidth;
bet = screenwidth / basewidth;
}
}
$5('body').css('fontSize', fontsize);
} else {
fontsize = 14;
}
Glob.fontsize = fontsize - 2;
Glob.bet = bet;
};
ciyfn.big_resolution = function (width, height) {
if (window.screen.width != width || window.screen.height != height) {
ciyfn.toast('最佳分辨率为:' + width + ' x ' + height);
return;
}
if (window.innerWidth != width)
return;//判断调试模式
if (window.innerHeight < height)
return ciyfn.toast('请按F11,进入全屏模式');
// ciyfn.alert({
// content: '进入全屏?'
// , cb: function (opn) {
// opn.close();
// if (opn.btn == "关闭")
// return;
// var de = document.documentElement;
// if (de.requestFullscreen) {
// de.requestFullscreen();
// } else if (de.mozRequestFullScreen) {
// de.mozRequestFullScreen();
// } else if (de.webkitRequestFullScreen) {
// de.webkitRequestFullScreen();
// } else if (de.msRequestFullscreen) {
// de.msRequestFullscreen();
// }
// else {
// ciyfn.alert("当前浏览器不支持全屏!");
// }
// }
// , btns: ["全屏", "*关闭"]
// });
};
ciyclass.bigcychange = function (opt) {
var thos = this;
if (Object.prototype.toString.call(opt.values) !== '[object Array]')
return false;
var valuelen = opt.values.length;
if (valuelen == 0)
return false;
if (typeof (opt.changecb) != 'function')
return false;
if (opt.cycsec < 1)
opt.cycsec = 5;
this.value = opt.values[0];
var _t = 0;
var _idx = -1;
function _run() {
_t--;
if (_t < 0) {
_t = opt.cycsec;
_idx++;
if (_idx >= valuelen)
_idx = 0;
thos.value = opt.values[_idx];
opt.changecb(thos.value);
}
}
_run();
var tick = setInterval(_run, 1000);
this.change = function (mm, longsec) {
var idx = opt.values.indexOf(mm);
if (idx == -1)
return false;
if (longsec)
_t = longsec;
else
_t = opt.cycsec;
_idx = idx;
thos.value = opt.values[_idx];
opt.changecb(thos.value);
}
this.distory = function () {
clearInterval(tick);
}
return this;
};