(function($){
"use strict";
var base_loyalty=function(){
var o=this;
};
var blp=base_loyalty.prototype;
//base data point
blp.webroot='/'+window.location.pathname.split('/')[1]+'/';
blp.html_selector="#data";
blp.disabled_selector='';
blp.is_load=false;
blp.session_params={};
blp.default_params={};
//инициализация
blp.init = async function(data,session_params){
console.log('BaseLoyalty init start ...');
if (data) {
for (var key in data) {
switch (key) {
case "set_session":
blp.set_function_set_session(data[key]);
break;
default:
blp[key] = data[key];
break;
}
}
}
if(session_params){
blp.session_params=session_params;
blp.default_params=session_params;
console.log(blp.session_params);
}
}
// <----
blp.post=function(link,params,callback_done,callback_error,rulecheck){
params=params||{};
rulecheck=rulecheck||blp.ajaxmsg;//'modal_loyalty';
$.post(blp.webroot+link, params, function(response) {
console.log(response);
if (!blp.isEmptyObject(response)) {
if(blp.rule_check(rulecheck,obj))
if(blp.isFunction(callback_done)) callback_done(obj['data']);
else{
if(blp.isFunction(callback_error)) callback_error();
}
}
})
.fail(function(xhr, status, error) {
console.log('FAIL POST -->');
console.log(xhr);console.log(status);console.log(data);
console.log('<-- FAIL POST');
blp.ajax_msg('Bad Gateway','danger',rulecheck);
});
}
blp.post_html=function(link,params,html_selector,callback_done){
html_selector=html_selector||blp.html_selector;//'modal_loyalty';
if(!blp.is_load){
blp.load('start');
$.post(blp.webroot+link, params, function(response) {
console.log('show in '+html_selector);
$(html_selector).html(response);
blp.load('end');
if(blp.isFunction(callback_done)) callback_done();
});
}
}
blp.rule_check=function(id,obj){
console.log(id);
if(obj["status"]=="ok" || ((typeof obj["status"]=="boolean") && obj["status"])){
var msg=obj["msg"]||"";
if(msg!=""){
blp.ajax_msg(msg,'success',id);
}
return true;
}else{
console.log('rules!');
console.log(obj);
//alert('rules');
ajax_rules(id,obj["rules"]);
status='danger';
if(!blp.isEmpty(obj["status"]) && obj["status"]!='error') status=obj["status"];
blp.ajax_msg(obj["msg"],status,id);
return false;
}
}
blp.ajax_msg=function(msg,status,ajaxmsg){
ajaxmsg=ajaxmsg||blp.ajaxmsg;
status=status||"success";
msg=msg||'Данных для вывода в сообщении нет';
ajax_msg(ajaxmsg, status, msg);
}
blp.load = function(comand){
//console.log('yt222='+blp.disabled_selector+'('+comand+')');
if (comand == 'start'){
if(!blp.isEmpty(blp.disabled_selector))
$(blp.disabled_selector).addClass("disabled");
$('.wlload').addClass('spin');
blp.is_load=true;
}else{
if(!blp.isEmpty(blp.disabled_selector))
$(blp.disabled_selector).removeClass("disabled");
$('.wlload').removeClass('spin');
blp.is_load=false;
}
}
blp.isEmpty = function(str) {
return (!str || str.length === 0 );
}
blp.isEmptyObject = function(str,ajaxmsg){
try {
obj=JSON.parse(str);
if (Object.keys(obj).length==0)
throw new SyntaxError("Данные некорректны - объект пуст.");
} catch (e) {
console.log(str)
blp.ajax_msg('Произошла ошибка при обращении к серверу программы лояльности VBonus.','danger');
//ajaxmsg=ajaxmsg||blp.ajaxmsg;
//ajax_msg(ajaxmsg, 'danger', 'Произошла ошибка при обращении к серверу программы лояльности VBonus.', 1);
return true;
}
return false;
}
blp.isFunction=function(functionToCheck) {
var getType = {};
return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
}
// set funct from iglobal
blp.set_function_set_session = function(func) {
blp.set_session=func;
}
var dashbord=function(){
base_loyalty.call(this);
}
dashbord.prototype=Object.create(base_loyalty.prototype,{constructor: {
value: dashbord,
enumerable: false,
writable: true,
configurable: true,
},
});
var dp=dashbord.prototype;
dp.session_client={};
dp.clients=function(){
var params={str:$("#m_str").val()};
dp.post_html("Loyalty/Dashbord/clients",params,dp.html_selector,dp.client_history);
}
dp.client_history=function(balance_id,client_data){
balance_id=balance_id||dp.session_client['balance_id'];
if(!dp.isEmpty(balance_id)){
dp.session_client={};
dp.session_client['balance_id']=balance_id;
dp.session_client['name']=$("#client_"+balance_id).data('name');
dp.session_client['phone']=$("#client_"+balance_id).data('phone');
dp.render_client();
}
var params={balance_id:balance_id,
date_start:dp.session_params["dates"]["start"],
date_end:dp.session_params["dates"]["end"],
filter:dp.session_params["filter"],
filter_days:dp.session_params["filter_days"]};
dp.post_html("Loyalty/Dashbord/history",params,"#data_history");
}
dp.render_client=function(){
if(!dp.isEmpty(dp.session_client['balance_id'])){
$("#hst_client").html(''+dp.session_client['name']+' '+dp.session_client['phone']+' ');
}else{
$("#hst_client").html('Все клиенты');
}
dp.reset_session_params();
}
dp.clear_client=function(){
dp.session_client={};
dp.render_client();
dp.client_history();
//dp.reset_session_params();
}
// скинуть все отображения и фильтры на операциях на по умолчанию
dp.reset_session_params=function(){
dp.session_params=dp.default_params;
dp.change_filter();
dp.change_dates();
}
dp.render_calc=function(str,calc_selector){
calc_selector=calc_selector||"#calculate";
console.log(str);
try {
obj=JSON.parse(str);
if (Object.keys(obj).length==0)
throw new SyntaxError("Данные некорректны - объект пуст.");
} catch (e) {
console.log('Error parse json');
console.log(str)
return;
}
$(calc_selector).html(obj['print']);
}
dp.filter_selector='#hst_filter';
dp.change_filter=function(filter,prefix){
filter=filter||dp.session_params['filter'];
prefix=prefix||'';
var filter_selector=dp.filter_selector+prefix;
console.log(filter_selector);
var fname='Все';
if(dp.isEmpty(prefix)){
$(filter_selector+'_days').hide();
switch (filter) {
case 1: fname='Все операции';break;
case 2: fname='Начисление'; break;
case 3: fname='Списание'; break;
case 4: $(filter_selector+'_days').show();
var filter_days=dp.session_params['filter_days']||3;
fname='Операции более ';
dp.change_filter(filter_days,'_days');
break;
default:
filter=1;
fname='Все операции';
}
dp.session_params['filter']=filter;
}else{
$(filter_selector+'_days').show();
dp.session_params['filter'+prefix]=filter;
fname=filter+' раз';
}
$(filter_selector+"_name").html(fname);
console.log(dp.session_params);
}
dp.dates_timeout=null;
dp.change_dates=function(){
console.log(dp.session_params);
console.log($('#m_date_start').val());
console.log($('#m_date_end').val());
if (dp.dates_timeout) {
clearTimeout(dp.dates_timeout);
}
dp.dates_timeout = window.setTimeout(function () {
dp.session_params["dates"]={"start":$('#m_date_start').val(),"end":$('#m_date_end').val()};
console.log(dp.session_params);
}, 500);
}
window.BLoyalty = new base_loyalty;
window.Dashbord = new dashbord;
}(jQuery));