// 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;
}