(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));