// imgs preload $('').imageloader({ async: true, allcomplete: function(e,ui){ // images are ready here $('.loading').addClass('hide'); } }); // load current language strings in global variable var _lang=''; $.ajax({ async: false, method: "POST", url: "/ajax_lib.php", dataType: "json", data: "load_lang=1", success: function(res) { _lang=res; } }); // global var for last date point in the plot // var bench=''; // keep live refresh setInterval var live_refresh=''; $(document).ready(function() { // focus user field for login $('.login_form .user').focus(); // bootsrap dropdown fix $('.dropdown-toggle').dropdown(); $('.dropdown').bind('mouseover', function() { $(this).addClass('open'); }).bind('mouseout', function() { $(this).removeClass('open'); }); // submit login on eneter $('.login_form .user, .login_form .pass').keypress(function(event) { if (event.which == 13) { event.preventDefault(); $('.login_form .btn-default').trigger('click'); } }); // ajax login $('.login_form .form .btn-default').bind('click',function() { var user=$('.login_form .user').val(); var pass=$('.login_form .pass').val(); var remember_me_on=$('.login_form .remember_me_on:checked').val(); $.ajax({ type: "POST", url: "ajax_lib.php", data: "login=1&user="+encodeURIComponent(user)+"&pass="+encodeURIComponent(pass)+"&remember_me_on="+remember_me_on, beforeSend: function() { $('.login_form .form .btn.btn-default').addClass('hide'); $('.login_form .form .preloader').removeClass('hide'); }, success: function(res) { if (res==1) { window.location=window.location.href; } else { $('.login_form .form .user').val(''); $('.login_form .form .pass').val(''); $('.login_form .form .btn-default').removeClass('shakeX').addClass('shakeX'); $('.login_form .form .btn.btn-default').removeClass('hide'); $('.login_form .form .preloader').addClass('hide'); } } }); }); // date from/to $('.navbar .datetimepicker2').each(function() { $(this).datetimepicker({ minDate: moment().add(-1, 'years'), maxDate: 'now', allowInputToggle: true, format: 'YYYY-MM-DD', locale: _lang._, // enable/disable parameters select input }).on('dp.change', function(e) { if ($('.navbar .datetimepicker2 input').filter(function() { return this.value; }).length==$('.navbar .datetimepicker2 input').length) { $('.navbar .select_parameters').empty().prop('disabled', false); $(".navbar .do_chart").prop('disabled', true); // $('#akum_plot').empty(); // initialize real select parameters var $params_select=$(".navbar .select_parameters").select2({ ajax: { url: "ajax_lib.php", dataType: 'json', delay: 150, method: "POST", data: function (params) { return { search_params: 1, dev: $('.navbar .select_devices').val(), from_date: $('.navbar .datetimepicker2 .date_from').val(), to_date: $('.navbar .datetimepicker2 .date_to').val(), str: params.term, // search term }; }, processResults: function (data, params) { return { results: data }; }, cache: true }, placeholder: _lang.search_for_param, minimumInputLength: 0, tokenSeparators: [',', ' '], tags: true, maximumSelectionLength: 9, createTag: function(params) { return undefined; }, closeOnSelect: false }).on('select2:select select2:unselect', function (e) { if ($params_select.select2('data').length) { $(".navbar .do_chart").prop('disabled', false); } else { $(".navbar .do_chart").prop('disabled', true); } }); } else { $('.navbar .select_parameters').prop('disabled', true); } }); }); // user settinga $('.nav .user_settings').bind('click', function() { $('.modal .modal-header .modal-title').text(_lang.settings); var settings_html='
'; settings_html+='
'; settings_html+='
'; $('.modal .modal-body').html(settings_html); $.ajax({ method: "POST", url: "/ajax_lib.php", dataType: "json", data: "get_user_data=1", success: function(res) { $('.modal input.name').val(res.name); $('.modal input.email').val(res.email); } }); $('.modal').modal(); var name=$('.modal .name'); var pass=$('.modal .password'); var pass1=$('.modal .password1'); pass.bind('keydown', function() { pass.css('color',''); }); pass1.bind('keydown', function() { pass1.css('color',''); }); $('.modal .modal-footer .ok').bind('click', function() { if (pass.val() || pass1.val()) { if (pass.val().length<8) { pass.addClass('shakeX').css('color','#f00'); setTimeout(function() { pass.removeClass('shakeX'); }, 750); return false; } else if (pass.val()!=pass1.val()) { pass.addClass('shakeX').css('color','#f00'); pass1.addClass('shakeX').css('color','#f00'); setTimeout(function() { pass.removeClass('shakeX'); pass1.removeClass('shakeX'); }, 750); return false; } else { var out=user_edit_data('pass',pass.val()); } } var out=user_edit_data('name',name.val()); $('.navbar .nav .dropdown .user_real_name').html(name.val()+''); $('.modal').modal('hide'); }); }); // show forgot pass form $('.login_form .register_forgot .forgot_pass').bind('click',function() { $('.login_form .form').fadeOut('fast', function() { $('.login_form .forgot_form').removeClass('hide').fadeIn('', function() { $('.login_form .forgot_form .email').focus(); }); }); }); // show reg pass form $('.login_form .register_forgot .new_reg').bind('click',function() { $('.login_form .form').fadeOut('fast', function() { $('.login_form .reg_form').removeClass('hide').fadeIn('', function() { $('.login_form .reg_form .email').focus(); }); }); }); // forgot mail / new reg $('.login_form .forgot_form input[type=submit], .login_form .reg_form input[type=submit]').bind('click',function() { var form=$(this).parent(); var action=form.prop('class'); var email=form.find('.email'); var user=form.find('.new_user'); email.css('color',''); user.css('color',''); if (validateEmail(email.val())) { var mail_exist=check_mail_exist(email.val()); var user_exist=check_user_exist(user.val()); if (action=='reg_form') { if (parseInt(mail_exist)>0) { email.addClass('shakeX').css('color','#f00'); $('.modal .modal-body').text(_lang.email_exists); $('.modal .modal-footer .ok').addClass('hide'); $('.modal .modal-footer .cancel').bind('click', function() { $('.modal').modal('hide'); }); $('.modal').modal(); setTimeout(function() { email.removeClass('shakeX'); }, 750); } else if (!validateUser(user.val())) { user.addClass('shakeX').css('color','#f00'); setTimeout(function() { user.removeClass('shakeX'); }, 750); } else if (parseInt(user_exist)>0) { user.addClass('shakeX').css('color','#f00'); $('.modal .modal-body').text(_lang.user_exists); $('.modal .modal-footer .ok').addClass('hide'); $('.modal .modal-footer .cancel').bind('click', function() { $('.modal').modal('hide'); }); $('.modal').modal(); setTimeout(function() { user.removeClass('shakeX'); }, 750); } else { $.ajax({ method: "POST", url: "/ajax_lib.php", // dataType: "json", data: "reg_form=1&email="+email.val()+"&new_user="+user.val(), success: function(res) { $('.modal .modal-header .modal-title').text(_lang.register); $('.modal .modal-body').text(_lang.check_email); $('.modal .modal-footer .cancel').addClass('hide'); $('.modal .modal-footer .ok').removeClass('hide').bind('click', function() { $('.login_form .back a').trigger('click'); $('.modal').modal('hide'); email.val(''); user.val(''); }); $('.modal').modal(); } }); } } else if (action=='forgot_form') { if (parseInt(mail_exist)==1) { $.ajax({ method: "POST", url: "/ajax_lib.php", // dataType: "json", data: "forgot_form=1&email="+email.val(), success: function(res) { $('.modal .modal-header .modal-title').text(_lang.forgot_login); $('.modal .modal-body').text(_lang.check_email); $('.modal .modal-footer .cancel').addClass('hide'); $('.modal .modal-footer .ok').bind('click', function() { $('.login_form .back a').trigger('click'); $('.modal').modal('hide'); email.val(''); }); $('.modal').modal(); } }); } else { email.addClass('shakeX').css('color','#f00'); setTimeout(function() { email.removeClass('shakeX'); }, 750); } } } else { email.addClass('shakeX').css('color','#f00'); setTimeout(function() { email.removeClass('shakeX'); }, 750); } }); $('.login_form .forgot_form .email, .login_form .reg_form .email').bind('keydown',function() { $(this).css('color',''); }); // back to login form $('.login_form .back a').bind('click',function() { $('.login_form .form').removeClass('hide').fadeIn('fast'); $('.login_form .forgot_form').addClass('hide'); $('.login_form .reg_form').addClass('hide'); $('.login_form .form .user').focus(); }); // remember me toggle $('.login_form .remember a').bind('click', function() { $('.login_form .remember .remember_me_on').trigger('click'); }); // global ajax success handler $(document).ajaxComplete(function(e,xhr,set) { if (xhr.responseText=='logout') { logout(); } else { if (typeof xhr.responseJSON===Object) { var data=JSON.parse(xhr.responseText); // refresh bench if (data.bench!='') { $('.copy_text .bench').html(data.bench); } } } }); }); function logout() { $('.modal .modal-header .modal-title').text(_lang.session_expired); $('.modal .modal-body').text(_lang.login_again); $('.modal .modal-footer .cancel').addClass('hide'); $('.modal .modal-footer .ok').bind('click', function() { location.reload(); }); $('.modal').modal(); for (var i=1; i<99999; i++) { window.clearInterval(i); } } function preload(arrayOfImages) { $(arrayOfImages).each(function () { $('').attr('src',this).prepend('body').css('display','none'); }); } function validateEmail(email) { var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(String(email).toLowerCase()); } function validateUser(user) { var re=/^[a-zA-Z0-9\_]{6,255}$/; return re.test(String(user)); } function validateParam(param) { var re=/^[a-zA-Z0-9\_]{2,255}$/; return re.test(String(param)); } function validateDev(dev) { var re=/^[A-Z0-9\_]{4,10}$/; return re.test(String(dev)); } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function check_mail_exist(mail,id) { var out; if (validateEmail(mail)) { $.ajax({ method: "POST", url: "/ajax_lib.php", async: false, data: "check_mail_exist=1&mail="+mail+"&user_id="+id, success: function(res) { out=res; } }); } return out; } function check_user_exist(user) { var out; if (validateUser(user)) { $.ajax({ method: "POST", url: "/ajax_lib.php", async: false, data: "check_user_exist=1&user="+user, success: function(res) { out=res; } }); } return out; } /* function check_dev_exist(dev) { var out; if (validateDev(dev)) { $.ajax({ method: "POST", url: "/ajax_lib.php", async: false, data: "check_dev_exist=1&dev_id="+dev, success: function(res) { out=res; } }); } return out; } */ function user_edit_data(param,value) { var out; $.ajax({ method: "POST", url: "/ajax_lib.php", async: false, data: "user_edit_data=1¶m="+param+"&value="+value, success: function(res) { out=res; } }); return out; }