HOME


Mini Shell 1.0
DIR:/usr/local/cwpsrv/var/services/users/mefccpc/cwp_theme/original/js/modules/
Upload File :
Current File : //usr/local/cwpsrv/var/services/users/mefccpc/cwp_theme/original/js/modules/mysql_manager.js.twig
console.log();

let last_view = 'list_db_view';
function changeView(view){
  $('#' + last_view).slideUp('fast', function(){
    last_view = view;
    $('#' + view).slideDown('fast');
    if(view == 'add_db_view'){
      $('#mysql_add_user').hide();
      $('#newdb').val('');
    }else if (view == 'list_db_view') {
      $('#user_to_db').html('');
      $('#add_user_content').html('');
      buttonsHandle(false);
      resetFormDB();
    }
  });
}
function resetFormDB(){
  $('#newdb').val('');
  $('#newdb').removeClass('error');
  $('#newdb').parent().find('span.error').remove();
  $('#charsetonly').val('');
}
function showCreateUser(hideform){
  let panel = $('#mysql_add_user');
  if(panel.is(':visible')){
    panel.slideUp('fast', function(){
      $('#user_to_db').html('');
    });
  }else{
    $('<div class="temp_form" style="display:none">' + user_form + '</div>').appendTo('body');
    let html_form = $('#user_form_container').html();
    $('.temp_form').remove();
    $('#user_to_db').html(html_form);
    $('.defpriv').prop('checked', true);
    generateNewPass(true);
    bindUSerEvents();
    if(hideform === true){
      $('#mysql_user_form').hide();
      $('.mysql_add_user_title').hide();
    }
    panel.slideDown('fast');
  }
}
function renderSelectBD(){
  let html_select = '<select class="form-control" id="adddbtouserselect">' +
                      '<option value="">{{langmod.DBSELECTDBLABEL}}</option>';
  db_list.forEach(function(db){
    html_select += '<option value="' + db.dbname + '">' + db.dbname + '</option>'
  });
  html_select += '</select>';
  return html_select;
}
function addJustUser(){
  $('#add_user_content').html(user_form);
  $('.defpriv').prop('checked', true);
  generateNewPass(true);
  bindUSerEvents();
  $('#user_sel_db').html(renderSelectBD());
  $('.user_sel_db').show();
  $('#adddbtouserselect').change(function(){
    if($(this).val() != ''){
      $('#permission_panel').slideDown();
    }else{
      $('#permission_panel').slideUp();
    }
  });
  $('#permission_panel').hide();
  $('.btn-save-mysql-user').click(function(){
    saveUser();
  });
  changeView('add_dbuser_view');
}
function saveUser(){
  let acc = 'adduser';
  let bdname = '';
  let valid = true;
  if($('#dbto_add_user').length > 0){
    bdname = '&bdname=' + $('#dbto_add_user').text().split('_')[1];
  }else if($('#adddbtouserselect').length > 0 && $('#adddbtouserselect').val()){
    bdname = '&bdname=' + $('#adddbtouserselect').val().split('_')[1];
  }
  valid = getUserData();
  if(!valid){
    noti_bubble('{{langmod.DBREQUIREDFIELDS}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
    return;
  }
  buttonsHandle();
  let data_send = valid + bdname;
  uchip.call('module=mysql_manager&acc=adduser', {
    data: data_send,
    callback: function(response){
      if(response.result == 'success'){
        if(response.hasOwnProperty('list')){
          dbTable(response.list);
        }
        dbUserTable(response.listusers);
        noti_bubble('{{langmod.DBSUCCT}}','{{langmod.DMUSSQLOK}}','success',false,false,'3000',true);
        changeView('list_db_view');
      }else{
        //noti_bubble('{{langmod.DBERROR}}','{{langmod.DBERROCREATEU}}','error',false,false,'3000',true);
        noti_bubble('{{langmod.DBERROR}}',response.message,'error',false,false,'3000',true);
      }
      buttonsHandle(false);
    }
  });
}
function generateUserSelect(dbname){

  let db = db_list.filter(function(db){ return db.dbname == dbname})[0];

  let html_select = '<select class="form-control" id="adddbtouserselect">' +
                      '<option value="">{{langmod.DBCHOOSEUSER}}</option>';
  user_list.forEach(function(user){
    if(db.users.filter(function(udb){ return udb.user == user.uname})[0] == undefined){
      html_select += '<option value="' + user.uname + '" data-host="' + user.host + '">' + user.uname + '</option>';
    }
  });
  html_select += '</select>';
  return html_select;
}
function addExistingUser(dbname){
  $('#add_user_content').html(user_form);
  $('.defpriv').prop('checked', true);
  $('#mysql_user_form').hide();
  $('#mysql_user_form').remove();
  $('#user_form_title').text('{{langmod.DBADDEXISTINGU}} ' + dbname + ' {{langmod.DBTITLETABLEDB}}');
  let user_select = generateUserSelect(dbname);
  let selec_html = '<div class="form-group row">' +
                        '<label class="col-lg-3  control-label" for="pass2new">{{langmod.DBSELECTULABEL}}:</label>' +
                        '<div class="col-lg-4">' +
                        user_select +
                        '</div>' +
                    '</div>'+
                    '<div class="form-group row">' +
                        '<label class="col-lg-3  control-label">{{langmod.DBHOST}}:</label>' +
                        '<div class="col-md-4">' +
                          '<select id="newhost" onchange="selectHost(this)" class="form-control">' +
                            '<option value="localhost">localhost</option>' +
                            '<option value="%">{{langmod.DBANY}}</option>' +
                            '<option value="IP">{{langmod.DBLABEL5}}</option>' +
                          '</select>' +
                        '</div>' +
                        '<div class="col-md-3 hidden" id="ippers"><input value="" id="customip" class="form-control" placeholder="XXX.XXX.XXX.XXX"></div>' +
                    '</div>'
  $('#mysql_user_info').html(selec_html);
  $('#mysql_user_info').show();
  bindUSerEvents();
  changeView('add_dbuser_view');
  $('.btn-save-mysql-user').click(function(){
    MkaddExistingUser(dbname);
  });
}
function MkaddExistingUser(dbname){
  let data_per = getUserData();
  if($('#adddbtouserselect').val() == ''){
    $("#adddbtouserselect").addClass('error');
    if(!fieldHasError('#adddbtouserselect')){
      $('#adddbtouserselect').after('<span class="error text-danger">{{langmod.DBPLEASESELU}}</span>');
    }
    return;
  }
  if(data_per == false){
    return;
  }
  buttonsHandle();
  let uname = $('#adddbtouserselect').val();
  let host = $('#adddbtouserselect').children("option:selected").data('host')
  let data_send = 'username=' + uname + '&dbname=' + dbname + '&' + data_per;
  uchip.call('module=mysql_manager&acc=addexistingtodb', {
    data: data_send,
    callback: function(response){
      if(response.result == 'success'){
        if(response.hasOwnProperty('list')){
          dbTable(response.list);
        }
        noti_bubble('{{langmod.DBSUCCT}}','{{langmod.DBUSERADDED}}','success',false,false,'3000',true);
        changeView('list_db_view');
      }else{
        noti_bubble('{{langmod.DBERROR}}','{{langmod.DBERROADDINGU}}','error',false,false,'3000',true);
      }
      buttonsHandle(false);
    }
  });
}
function addUToDB(db){
  // console.log(db);
  $('#add_user_content').html(user_form);
  $('.defpriv').prop('checked', true);
  $('#user_form_title').text('{{langmod.DBADDUTODB}} ' + db + ' {{langmod.DBTITLETABLEDB}}.');
  $('#user_sel_db').html('<label class="control-label" id="dbto_add_user">' + db + '</label>');
  $('.user_sel_db').show();
  generateNewPass(true);
  bindUSerEvents();
  $('.btn-save-mysql-user').click(function(){
    saveUser();
  });
  changeView('add_dbuser_view');
}
function bindUSerEvents(){
  $(".alldata").click(function(){
    let status = $(this).is(':checked') ? true : false;
    let grandp = $(this).parent().parent().parent();
    grandp.find('.panel-body input:checkbox').each(function(){
      $(this).prop('checked',status);
    });
  });
  var optpass2 = {};
  optpass2.ui = {
      container: "#changepass_container",
      showVerdictsInsideProgressBar: true,
      viewports: {
          progress: ".pwstrength_viewport_progress2"
      }
  };
  optpass2.common = {
      debug: false,
  };
  $('#pass1new').pwstrength(optpass2);
  $('.collapse-link').on('click', function (e) {
      e.preventDefault();
      var ibox = $(this).closest('div.ibox');
      var button = $(this).find('i');
      var content = ibox.children('.ibox-content');
      content.slideToggle(200);
      button.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');
      ibox.toggleClass('').toggleClass('border-bottom');
      setTimeout(function () {
          ibox.resize();
          ibox.find('[id^=map-]').resize();
      }, 50);
  });
}
let db_list = JSON.parse('{{mod.dblist|json_encode|raw}}');
let user_list = JSON.parse('{{mod.userlist|json_encode|raw}}');
let user_form = '{{mod.user_form|raw}}';
let mysql_quota = JSON.parse('{{mod.mysqlpack|json_encode|raw}}');
function calculateQuota(){
  let plan = $('#mysql_plan').val();
  $('#mysqlused').text(db_list.length);
  if(plan >= 0){
    if(db_list.length == plan){
      $('#modal-btn-onlymysql').addClass('disabled');
      $('#modal-btn-onlymysql').prop('disabled', true)
    }else{
      $('#modal-btn-onlymysql').removeClass('disabled');
      $('#modal-btn-onlymysql').prop('disabled', false)
    }
    let percent = ((db_list.length * 100) / plan).toFixed(0);
    let classbar = '';
    if (percent >=26 && percent <=50){
      classbar = 'progress-bar progress-bar-success';
    }else if(percent >=51 && percent <=75){
      classbar = 'progress-bar progress-bar-warning';
    }else if(percent >75){
      classbar = 'progress-bar progress-bar-danger';
    }else{
      classbar = 'progress-bar';
    }
    $('#stat-percent').text(percent + '%');
    $("#baremailind").removeClass();
    $('#baremailind').addClass(classbar);
    $('#baremailind').width(percent+'%');
  }
}
function dbTable(dblist){
  db_list = dblist;
  let content_html = '';
  calculateQuota();
  if(dblist.length > 0){
    let table_content = '';
    let index = 0;
    dblist.forEach(function(dbitem){
    index++;
    let db_quota_usage = '<i class="fa fa-2x fa-circle-o-notch fa-spin" style="color: #e7eaec;"></i>';
    let usage = db_consumption.filter(function(db){ return db.name == dbitem.dbname})[0];
    if(usage !== undefined){
      db_quota_usage = (usage.usage / 1024 / 1024).toFixed(1) + ' MB';
    }
    let users = dbitem.users;
    table_content += '<tr id="db_line_' + index + '">' +
                          '<td class="">' + index + '</td>' +
                          '<td class="" style="width:45%">' +
                            '<div class="db_list_name_item">' +
                              '<span>' + dbitem.dbname + '</span>' +
                              '<div>' +
                                '<button type="button" style="margin-top: 2px" class="btn btn-primary btn-xs mr5 mb10" title="{{langmod.DBOPTITOP}}" onclick="optimizerMysql(\'' + dbitem.dbname + '\', this)">' +
                                  '<i class="fa fa-tachometer" aria-hidden="true"></i>' +
                                '</button>' +
                                '<button type="button" title="{{langmod.DBCHEKMYSQL}}" style="margin-left: 2px; margin-top: 2px" class="btn btn-info btn-xs mr5 mb10" onclick="checkMysql(\'' + dbitem.dbname + '\', this)">' +
                                  '<i class="fa fa-check-circle" aria-hidden="true"></i>' +
                                '</button>' +
                                '<button type="button" title="{{langmod.DBREPARAIR}}" style="margin-left: 2px; margin-top: 2px" class="btn btn-warning btn-xs mr5 mb10" onclick="repairMysql(\'' + dbitem.dbname + '\', this)">' +
                                  '<i class="fa fa-wrench" aria-hidden="true"></i>' +
                                '</button>' +
                                '<button type="button" title="{{langmod.DBBACKUPDB}}" style="margin-left: 2px; margin-top: 2px" class="btn btn-success btn-xs mr5 mb10" onclick="dumpSql(\'' + dbitem.dbname + '\', this)">' +
                                  '<i class="fa fa-database" aria-hidden="true"></i>' +
                                '</button>' +
                                '<button type="button" title="{{langmod.DBDELETEDB}}" style="margin-left: 2px; margin-top: 2px" class="btn btn-danger btn-xs mr5 mb10" onclick="deleteDBMysql(\'' + dbitem.dbname + '\', this)">' +
                                  '<i class="fa fa-trash" aria-hidden="true"></i>' +
                                '</button>' +
                              '</div>' +
                            '</div>' +
                          '</td>' +
                          '<td style="text-align:center;" id="usedby_' + dbitem.dbname + '">'+
                            db_quota_usage +
                          '</td>' +
                          '<td class="db_list_users">';
                          let line = 1;
                          users.forEach(function(user){
                            table_content += '<div class="db_list_user_item" id="user_line_' + index + '_' + line + '">' +
                                                '<span>' +
                                                  user.user + ' [<span class="udb_host">' + user.host + '</span>]' +
                                                '</span>' +
                                                '<div>'+
                                                  '<button type="button" style="margin-top: 2px" class="btn edit-privbtn btn-primary btn-xs mr5 mb10" title="{{langmod.DBEDITPRIV}}" data-line="' + index + '_' + line + '" data-priv="' + user.priv + '" data-database="' + dbitem.dbname + '" data-user="' + user.user + '" data-host="' + user.host + '" onclick="privUser(this)">' +
                                                    '<i class="fa fa-edit" aria-hidden="true"></i>' +
                                                  '</button>' +
                                                  '<button type="button" style="margin-left: 2px; margin-top: 2px" class="btn btn-success btn-xs mr5 mb10" title="{{langmod.DBCHANGEPASS}}" data-username="' + user.user + '" data-host="' + user.host + '" onclick="changeUPass(this)">' +
                                                    '<i class="fa fa-lock" aria-hidden="true"></i>' +
                                                  '</button>' +
                                                  '<button type="button" style="margin-left: 2px; margin-top: 2px" class="btn btn-danger btn-xs mr5 mb10" title="{{langmod.DBDELETEUSER}}" data-line="' + index + '_' + line + '" data-database="' + dbitem.dbname + '" data-host="' + user.host + '" data-user="' + user.user + '" onclick="deleteUser(this)">' +
                                                    '<i class="fa fa-trash" aria-hidden="true"></i>' +
                                                  '</button>' +
                                                '</div>' +
                                              '</div>';
                            line++;
                          });
                          if(users.length == 0){
                            table_content += '<div><h4>{{langmod.DBNOUASSOC}}</h4></div>';
                          }
                          table_content += '<button type="button" class="btn btn-outline btn-primary btn-xs" onclick="addUToDB(\'' + dbitem.dbname + '\')"><i class="fa fa-plus"></i> {{langmod.DBBTNNEWUSER}}</button>&nbsp;'+
                                            '<button type="button" class="btn btn-outline btn-success btn-xs" onclick="addExistingUser(\'' + dbitem.dbname + '\')"><i class="fa fa-user"></i> {{langmod.DBUSERANMYSQLUSER}}</button>' +
                                              '</td>' +
                                            '</tr>';
    });
    content_html = '<table class="table table-striped mysql-db-table">' +
                    '<thead>' +
                        '<tr>' +
                          '<th style="width:25px">#</th>' +
                          '<th>{{langmod.DBTITLETABLEDB}}</th>' +
                          '<th style="text-align:center;">Disk quota</th>' +
                          '<th>{{langmod.DBUSERSLABEL}}</th>' +
                        '</tr>' +
                    '</thead>' +
                    '<tbody id="table_mysql_db">' +
                      table_content +
                    '</tbody>' +
                '</table>';
    $('#table_db_container').html(content_html);
    $('.mysql-db-table').DataTable().destroy();
    $('.mysql-db-table').DataTable();
    $('.mysql-db-table').on( 'page.dt', function () {
       setTimeout(function () {
        db_consumption.forEach(function (item){
          $('#usedby_' + item.name).html((item.usage / 1024 / 1024).toFixed(1) + ' MB');
        });
       }, 30)
    });
  }else{
    content_html = '<div class="empty_list"><h4 class="text-success">{{langmod.DBNODBCREATED}}</h4></div>';
    $('#table_db_container').html(content_html);
  }

}
function humanFileSize(bytes, si){
    var thresh = si ? 1000 : 1024;
    if(Math.abs(bytes) < thresh) {
        return bytes + ' B';
    }
    var units = si
        ? ['kB','MB','GB','TB','PB','EB','ZB','YB']
        : ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];
    var u = -1;
    do {
        bytes /= thresh;
        ++u;
    } while(Math.abs(bytes) >= thresh && u < units.length - 1);
    return bytes.toFixed(1)+' '+units[u];
}
let db_consumption = [];
function getConsumption(){
  uchip.call('module=mysql_manager&acc=getconsumption', {
    callback: function(response){
      let itpos = $('#info_tab_quota').offset();
      // let positionr = ($('#quotadisk_mysql').width() / 1.15) + itpos.left;
      // console.log('itpos', itpos);
      // console.log(positionr, itpos.left, $('#quotadisk_mysql').width());
      // console.log(response);

      let databases = response.consumption.databases;
      databases.forEach(function (item){
        $('#usedby_' + item.name).html((item.usage / 1024 / 1024).toFixed(1) + ' MB');
      });
      db_consumption = databases;
      let dbtotal = Math.round(response.consumption.dbtotal / 1024 / 1024);
      let quota = parseFloat(mysql_quota.disk_quota);

      let percent = (dbtotal * 100) / quota;
      $('#stat-percent-disk').html(percent.toFixed(2) + ' %');
      $('#mysqldused').html(dbtotal.toFixed(1));
      $('#mysqldquota').html(humanFileSize(quota * 1024 * 1024));
      // $('#quotadisk_mysql').css('left',positionr);
      let classbar = '';
      if (percent >=26 && percent <=50){
        classbar = 'progress-bar progress-bar-success';
      }else if(percent >=51 && percent <=75){
        classbar = 'progress-bar progress-bar-warning';
      }else if(percent >75){
        classbar = 'progress-bar progress-bar-danger';
      }else{
        classbar = 'progress-bar';
      }
      $('#barmysqldusage').width(percent + '%');
      $('#barmysqldusage').addClass(classbar);
      $('#quotadisk_mysql').slideDown();
    }
  });
}
function mkchangePass(elem){
  if($("#adduserpass").val() != $("#pass2new").val() || $("#adduserpass").val() == ''){
    $("#adduserpass").addClass('error');
    let msj = '';
    if($("#adduserpass").val() == ''){
      msj = '{{langmod.DBTYPENEWPASS}}';
    }else{
      msj = '{{langmod.DBERROR3}}';
    }
    $('#pass2new').parent().find('span.error').remove();
    $('#pass2new').after('<span class="error text-danger">' + msj + '</span>');
    $("#pass2new").addClass('error');
    return;
  }
  buttonsHandle();
  let data_send = 'pass=' + Base64.encode($("#adduserpass").val()) + '&user=' + $('#user_to_cp').val() + '&host=' + $('#host_to_cp').val();
  uchip.call('module=mysql_manager&acc=chageuserpass', {
    data: data_send,
    callback: function(response){
      if(response.result == 'success'){
        noti_bubble('{{langmod.DBSUCCT}}','{{langmod.DBCHANGEPASSEXIST}}','success',false,false,'3000',true);
        changeView('list_db_view');
      }else{
        noti_bubble('{{langmod.DBERROR}}','{{langmod.DBERRORCHPASS}}','error',false,false,'3000',true);
        buttonsHandle(false);
      }
    }
  });
}
function sendUserDeletion(){
  $('#confirmDBDelete').modal('toggle');
  let db = $('#db_todelete').text();
  let uname = $('#user_db_todelete').text();
  let host = $('#host_to_delete').val();
  handleDbButton(last_delete, 'fa-trash');
  let line = $(last_delete).data('line');
  let typedel = $('#wholedelete').is(':checked') ? 'whole' : 'single';
  let data_send = 'db=' + db + '&user=' + uname + '&host=' + host + '&typedel=' + typedel;
  uchip.call('module=mysql_manager&acc=deleteuserdb', {
    data: data_send,
    callback: function(response){
      //console.log(response);
      if(response.result == 'success'){
        noti_bubble('{{langmod.DMUMYQLDEL}}', '{{langmod.DBSUCCT}}','success',false,false,'3000',true);
        if(typedel == 'single'){
          $('#user_line_' + line).slideUp('fast', function(){
            let parent = $(this).parent();
            $(this).remove();
            if(parent.find('.db_list_user_item').length < 1){
              parent.prepend('<div><h4>{{langmod.DBNOUASSOC}}</h4></div>');
            }
          });
        }else{
          dbTable(response.list);
          dbUserTable(response.users);
        }
      }else{
        noti_bubble('{{langmod.DBERRORDELETING}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
        handleDbButton(last_delete, 'fa-trash', true);
      }
    }
  });
}
function deleteUser(elem, fromuser){
  last_delete = elem;
  let db = $(elem).data('database');
  let uname = $(elem).data('user');
  let host = $(elem).data('host');
  if(fromuser == undefined){
    $('#db_confirm_text').html('<p>{{langmod.DBUDELLABEL1}}<br/>{{langmod.DBUDELLABEL2}}: <b><span id="user_db_todelete">' + uname + '</span></b>, ' +
                                '<br>{{langmod.DBUDELLABEL3}}: <b>' +
                                '<span id="db_todelete">' + db + '</span><input type="hidden" id="host_to_delete" value="' + host + '"></b>' +
                                '<div class="radio radio-primary">' +
                                  '<input type="radio" name="deltype" checked id="justfromdb">' +
                                  '<label class="control-label" for="justfromdb">{{langmod.DBUDELLABEL4}}</label>' +
                                '</div>' +
                                '<div class="radio radio-primary">' +
                                  '<input type="radio" name="deltype" id="wholedelete">' +
                                  '<label class="control-label" for="wholedelete">{{langmod.DBUDELLABEL5}}</label>' +
                                '</div>' +
                                '{{langmod.DBUDELLABEL6}}</b>');
  }else{
    $('#db_confirm_text').html('<p>{{langmod.DBUDELLABEL1}}<br/> {{langmod.DBUDELLABEL2}}: <b><span id="user_db_todelete">' + uname + '</span></b>, ' +
                                '<input type="hidden" id="host_to_delete" value="' + host + '">' +
                                '<input type="radio" checked style="display:none" name="deltype" id="wholedelete">' +
                                '<br>{{langmod.DBUDELLABEL6}}</b>');
  }

  $('#confirmDBDelete').modal('toggle');
}
function changeUPass(elem){
  let uname = $(elem).data('username');
  let host = $(elem).data('host');
  $('#user_to_cp').val(uname);
  $('#host_to_cp').val(host);
  $('#user_chpass_title').text('{{langmod.DBCHANGEPASSTOU}} ' + uname);
  changeView('change_pass_user');
}
function dbUserTable(list){
  user_list = list;
  let content_html = '';
  let options_selector = '<option value="">{{langmod.DBLABELN1}}</option>' +
                          '<option value="1">{{langmod.DBLABELN2}}</option>';
  if(list.length > 0){
    let table_content = '';
    let index = 1;
    list.forEach(function(user){
      table_content += '<tr>' +
                        '<td>' + index + '</td>' +
                        '<td>' + user.uname + '</td>' +
                        '<td>' + user.host + '</td>' +
                        '<td class="text-right">' +
                          '<span class="btn btn-sm btn-primary" title="{{langmod.DBCHANGEPASS}}" data-username="' + user.uname + '" data-host="' + user.host + '" onclick="changeUPass(this)"><i class="fa fa-lock"></i> {{langmod.DBCHANGEPASS}}</span> ' +
                          '<span class="btn btn-sm btn-danger" title="{{langmod.DBDELETEUSER}}" data-user="' + user.uname + '" data-host="' + user.host + '" onclick="deleteUser(this, true)"><i class="fa fa-trash"></i> {{langmod.DBDELETEUSER}}</span>' +
                        '</td>' +
                      '</tr>';
      options_selector += '<option data-host="' + user.host + '" value="' + user.uname + '">' + user.uname + ' (' + user.host + ')</option>'
      index++;
    });
    content_html = '<table class="table table-striped mysql-user-table">' +
                    '<thead>' +
                        '<tr>' +
                          '<th style="width:25px">#</th>' +
                          '<th>{{langmod.DBUDELLABEL2}}</th>' +
                          '<th>Host</th>' +
                          '<th style="width:250px"></th>' +
                        '</tr>' +
                    '</thead>' +
                    '<tbody id="table_mysql_users">' +
                      table_content +
                    '</tbody>' +
                '</table>';
    $('#table_user_container').html(content_html);
    $('.mysql-user-table').DataTable().destroy();
    $('.mysql-user-table').DataTable();
  }else{
    content_html = '<div class="empty_list"><h4 class="text-success">{{langmod.DBNOUSERCREATED}}</h4></div>';
    $('#table_user_container').html(content_html);
  }
  if ($('#user_selector_db').hasClass("select2-hidden-accessible")) {
    $('#user_selector_db').select2('destroy');
  }
  $('#user_selector_db').children().remove().end()
  $('#user_selector_db').append(options_selector);
  $('#user_selector_db').select2();
  $('#user_selector_db').on('select2:open', function(){
    $('.select2-results__options li:nth-child(2)').prepend('<i class="fa fa-plus"></i>');
  });
  $('#user_selector_db').on('select2:select', function (e) {
    if(e.params.data.id == '1'){
      if($('#mysql_add_user').is(':visible')){
        $('#mysql_user_form').slideDown('fast');
        $('.mysql_add_user_title').slideDown('fast');
      }else{
        showCreateUser();
      }
    }else if(e.params.data.id != ''){
      if($('#mysql_add_user').is(':visible')){
        $('#mysql_user_form').slideUp('fast');
        $('.mysql_add_user_title').slideUp('fast');
      }else{
        showCreateUser(true);
      }
    }else{
      showCreateUser();
    }
  });
}
function closePGOPT(){
  $('#pgopt_container').slideUp();
}
function generateNewPass(type, element){
  let adduserpass = 'pass1new';
  let lengthpass = 'lengthpassbd';
  let typepass = 'typepassbd';
  //adduserpass = 'adduserpass';
  //lengthpass = 'lengthpass';
  //typepass = 'typepass';
  if(type == 'userp'){
    adduserpass = 'adduserpass';
    lengthpass = 'lengthpass';
    typepass = 'typepass';
  }
  let lpass = $('#' + lengthpass).val();
  let tpass = $('#' + typepass).val();
  let new_pass = generatePasswordRand(lpass, tpass);
  $('#' + adduserpass).val(new_pass);
  $('#pass2new').val(new_pass);
  $('#' + adduserpass).pwstrength("forceUpdate");
  if(type == undefined || type == 'userp'){
    copyPass(adduserpass, element);
  }
}

function copyPass(elem, element){
  let field = document.getElementById(elem);
  field.select();
  document.execCommand('copy');
  let message_copy = $('<div class="clearfix"></div><div class="p-copied-message-container"><div class="p-copied-message bg-info" style="max-width: 22rem;border-radius: 5px;margin-top: 2px;"><h4 style="font-size:1.3rem">{{langmod.BDPASSCOPIED}}</h4></div></div>');
  if(element == undefined){
    message_copy.insertAfter('#' + elem);
  }else{
    $(element).parent().append(message_copy);
  }

  message_copy.slideDown('slow');
  setTimeout(function(){
    message_copy.slideUp('slow',function(){
      $(this).remove();
    });
  }, 4500);
}
function openPGOPT(){
  if($('#pgopt_container').is(':visible')){
    $('#pgopt_container').slideUp('fast');
  }else{
    $('#pgopt_container').slideDown('fast');
    hideOnClickOutside('#pgopt_container');
  }
}
function hideOnClickOutside(selector, second){
  let forhide = false;
  if(second === undefined){
    second = '#show_options_button';
    forhide = true;
  }
  function outsideClickListener(event){
    $target = $(event.target);
    if (!$target.closest(selector).length && !$target.closest(second).length  && $(selector).is(':visible')) {
      if(forhide){
        $(selector).slideUp('fast');
      }else{
        $(selector).remove();
      }

        removeClickListener();
    }
  }

  function removeClickListener(){
    document.removeEventListener('click', outsideClickListener)
  }

  document.addEventListener('click', outsideClickListener)
}
$(document).ready(function() {
  {% if mod.isie == 1 %}
    uchip = new $.Uchip();
  {% else %}
    uchip = new Uchip();
  {% endif %}
  getConsumption();
  $('#confirmDBDelete').on('shown.bs.modal', function () {
    $('#btndbcontinue').unbind('click');
    $('#btndbcontinue').click(function(){
      if($('#user_db_todelete').length > 0 && $('#user_db_todelete').is(':visible')){
        sendUserDeletion();
      }else {
        sendDbDeletion();
      }

    });
  });
  $('.i-checks').iCheck({
      checkboxClass: 'icheckbox_square-green',
      radioClass: 'iradio_square-green',
  });
  $(".alldata").click(function(){
    let status = $(this).is(':checked') ? true : false;
    let grandp = $(this).parent().parent().parent();
    grandp.find('.panel-body input:checkbox').each(function(){
      $(this).prop('checked',status);
    });
  });
  // dbTable(db_list.result);
  var optpass1 = {};
  optpass1.ui = {
      container: "#changepass_container",
      showVerdictsInsideProgressBar: true,
      viewports: {
          progress: ".pwstrength_userchange"
      }
  };
  optpass1.common = {
      debug: false,
  };

  $('#adduserpass').pwstrength(optpass1);
});
let uchip = null;
function buttonsHandle(status){
  if(status == undefined || status == true){
    $('.btn-action-cwp').addClass('disabled');
    $('.btn-save-mysql .fa').removeClass('fa-floppy-o');
    $('.btn-save-mysql .fa').addClass('fa-spinner fa-spin');
    $('.btn-save-mysql .btn-cwp-tag').text('{{langmod.BDSAVINGLABEL}}');
    $('.btn-save-mysql .btn-cp-tag').text('{{langmod.DBCHANGINPASS}}');
  }else{
    $('.btn-save-mysql .fa').removeClass('fa-spinner fa-spin');
    $('.btn-save-mysql .fa').addClass('fa-floppy-o');
    $('.btn-save-mysql .btn-cwp-tag').text('{{langmod.DBSAVELABEL}}');
    $('.btn-save-mysql .btn-cp-tag').text('{{langmod.DBCHANGEPASS}}');
    $('.btn-action-cwp').removeClass('disabled');
  }
}
function getUserData(hosttype){
  var invalid = false;
  let mess = '';
  let fdvisible = $('#mysql_user_form').is(':visible');
  if(($("#bdusername").val()=='') && fdvisible){
    invalid = true;
    $("#bdusername").addClass('error');
    if(!fieldHasError('#bdusername')){
      $('#bdusername').after('<span class="error text-danger">{{langmod.DBINVALIDUNAME}}</span>');
    }
  }
  if($("#pass2new").val() != $("#pass1new").val() && fdvisible){
    invalid = true;
    $("#pass1new").addClass('error');
    if(!fieldHasError('#pass2new')){
      $('#pass2new').after('<span class="error text-danger">{{langmod.DBERROR3}}</span>');
    }
    $("#pass2new").addClass('error');
  }
  if($("#maxqueryhour").val() == ''){
    invalid = true;
    $('#maxqueryhour').addClass('error');
    if(!fieldHasError('#maxqueryhour')){
      $('#maxqueryhour').after('<span class="error text-danger">{{langmod.DBINVALIDPARAM}}</span>');
    }
  }
  if($("#maxupdhour").val() == ''){
    invalid = true;
    $('#maxupdhour').addClass('error');
    if(!fieldHasError('#maxupdhour')){
      $('#maxupdhour').after('<span class="error text-danger">{{langmod.DBINVALIDPARAM}}</span>');
    }
  }
  if($("#maxconnechour").val() == ''){
    invalid = true;
    $('#maxconnechour').addClass('error');
    if(!fieldHasError('#maxconnechour')){
      $('#maxconnechour').after('<span class="error text-danger">{{langmod.DBINVALIDPARAM}}</span>');
    }
  }
  if($("#maxuserconnec").val() == ''){
    invalid = true;
    $('#maxuserconnec').addClass('error');
    if(!fieldHasError('#maxuserconnec')){
      $('#maxuserconnec').after('<span class="error text-danger">{{langmod.DBINVALIDPARAM}}</span>');
    }
  }
  if($("#newhost").val() == 'IP' && !ValidateIPaddress($('#customip').val()) && $("#newhost").is(':visible')){
    invalid = true;
    $('#customip').addClass('error');
    if(!fieldHasError('#customip')){
      $('#customip').after('<span class="error text-danger">{{langmod.DBINVALIDIP}}</span>');
    }
  }

  if(invalid) {
      return false;
  }else{
      var pass=Base64.encode($("#pass1new").val());
      if($('#select').is(':checked')){var Vselect='Y';}else{var Vselect='';}
      if($('#insert').is(':checked')){var Vinsert='Y';}else{var Vinsert='';}
      if($('#update').is(':checked')){var Vupdate='Y';}else{var Vupdate='';}
      if($('#delete').is(':checked')){var Vdelete='Y';}else{var Vdelete='';}
      if($('#file').is(':checked')){var Vfile='Y';}else{var Vfile='';}
      if($('#create').is(':checked')){var Vcreate='Y';}else{var Vcreate='';}
      if($('#alter').is(':checked')){var Valter='Y';}else{var Valter='';}
      if($('#index').is(':checked')){var Vindex='Y';}else{var Vindex='';}
      if($('#drop').is(':checked')){var Vdrop='Y';}else{var Vdrop='';}
      if($('#creattemptable').is(':checked')){var Vcreattemptable='Y';}else{var Vcreattemptable='';}
      if($('#showview').is(':checked')){var Vshowview='Y';}else{var Vshowview='';}
      if($('#createroutine').is(':checked')){var Vcreateroutine='Y';}else{var Vcreateroutine='';}
      if($('#alterroutine').is(':checked')){var Valterroutine='Y';}else{var Valterroutine='';}
      if($('#execute').is(':checked')){var Vexecute='Y';}else{var Vexecute='';}
      if($('#createview').is(':checked')){var Vcreateview='Y';}else{var Vcreateview='';}
      if($('#event').is(':checked')){var Vevent='Y';}else{var Vevent='';}
      if($('#trigger').is(':checked')){var Vtrigger='Y';}else{var Vtrigger='';}
      if($('#reference_priv').is(':checked')){var refpriv='Y';}else{var refpriv='';}
      if($('#locktables_priv').is(':checked')){var locktabpriv='Y';}else{var locktabpriv='';}
      if(hosttype == undefined){
        if($("#newhost").val()=='IP'){ var namehost=$("#customip").val(); }else{ var namehost=$("#newhost").val(); }
      }else{
        var namehost=$("#user_priv_host").val();
      }

      let data_user = '';
      if(fdvisible){
        data_user = "&adduser=1&userdb="+$("#bdusername").val()+"&pass="+pass+"&host="+namehost+"&select="+Vselect+"&insert="+Vinsert+"&lock_tables=" + locktabpriv + "&references=" + refpriv + "&update="+
                Vupdate+"&delete="+Vdelete+"&file="+Vfile+"&create="+Vcreate+"&alter="+Valter+"&index="+Vindex+"&drop="+Vdrop+"&creattemptable="+Vcreattemptable+"&showview="+
                Vshowview+"&createroutine="+Vcreateroutine+"&alterroutine="+Valterroutine+"&execute="+Vexecute+"&event="+Vevent+"&createview="+Vcreateview+"&trigger="+Vtrigger+
                "&maxqueryhour="+$("#maxqueryhour").val()+"&maxupdhour="+$("#maxupdhour").val()+"&maxconnechour="+$("#maxconnechour").val()+"&maxuserconnec="+$("#maxuserconnec").val()
      }else{
        data_user = "userdb=" + $('#user_priv').val() + "&host=" + namehost + "&dbase=" + $('#user_priv_db').val() + "&select="+Vselect+"&insert="+Vinsert+"&lock_tables=" + locktabpriv + "&references=" + refpriv + "&update="+
                Vupdate+"&delete="+Vdelete+"&file="+Vfile+"&create="+Vcreate+"&alter="+Valter+"&index="+Vindex+"&drop="+Vdrop+"&creattemptable="+Vcreattemptable+"&showview="+
                Vshowview+"&createroutine="+Vcreateroutine+"&alterroutine="+Valterroutine+"&execute="+Vexecute+"&event="+Vevent+"&createview="+Vcreateview+"&trigger="+Vtrigger+
                "&maxqueryhour="+$("#maxqueryhour").val()+"&maxupdhour="+$("#maxupdhour").val()+"&maxconnechour="+$("#maxconnechour").val()+"&maxuserconnec="+$("#maxuserconnec").val()
      }
      return data_user;
  }
}
function getPrivileges(){
  if($('#select').is(':checked')){var Vselect='Y';}else{var Vselect='';}
  if($('#insert').is(':checked')){var Vinsert='Y';}else{var Vinsert='';}
  if($('#update').is(':checked')){var Vupdate='Y';}else{var Vupdate='';}
  if($('#delete').is(':checked')){var Vdelete='Y';}else{var Vdelete='';}
  if($('#file').is(':checked')){var Vfile='Y';}else{var Vfile='';}
  if($('#create').is(':checked')){var Vcreate='Y';}else{var Vcreate='';}
  if($('#alter').is(':checked')){var Valter='Y';}else{var Valter='';}
  if($('#index').is(':checked')){var Vindex='Y';}else{var Vindex='';}
  if($('#drop').is(':checked')){var Vdrop='Y';}else{var Vdrop='';}
  if($('#creattemptable').is(':checked')){var Vcreattemptable='Y';}else{var Vcreattemptable='';}
  if($('#showview').is(':checked')){var Vshowview='Y';}else{var Vshowview='';}
  if($('#createroutine').is(':checked')){var Vcreateroutine='Y';}else{var Vcreateroutine='';}
  if($('#alterroutine').is(':checked')){var Valterroutine='Y';}else{var Valterroutine='';}
  if($('#execute').is(':checked')){var Vexecute='Y';}else{var Vexecute='';}
  if($('#createview').is(':checked')){var Vcreateview='Y';}else{var Vcreateview='';}
  if($('#event').is(':checked')){var Vevent='Y';}else{var Vevent='';}
  if($('#trigger').is(':checked')){var Vtrigger='Y';}else{var Vtrigger='';}
  if($('#reference_priv').is(':checked')){var refpriv='Y';}else{var refpriv='';}
  if($('#locktables_priv').is(':checked')){var locktabpriv='Y';}else{var locktabpriv='';}
  return "&select="+Vselect+"&insert="+Vinsert+"&lock_tables=" + locktabpriv + "&references=" + refpriv + "&update="+
          Vupdate+"&delete="+Vdelete+"&file="+Vfile+"&create="+Vcreate+"&alter="+Valter+"&index="+Vindex+"&drop="+Vdrop+"&creattemptable="+Vcreattemptable+"&showview="+
          Vshowview+"&createroutine="+Vcreateroutine+"&alterroutine="+Valterroutine+"&execute="+Vexecute+"&event="+Vevent+"&createview="+Vcreateview+"&trigger="+Vtrigger+
          "&maxqueryhour="+$("#maxqueryhour").val()+"&maxupdhour="+$("#maxupdhour").val()+"&maxconnechour="+$("#maxconnechour").val()+"&maxuserconnec="+$("#maxuserconnec").val();
}
function fieldHasError(elem){
  return $(elem).parent().find('span.error').length > 0 ? true : false;
}
function optimizerMysql(db, elem){
  handleDbButton(elem, 'fa-tachometer');
  let data_send = "db=" + db;
  uchip.call('module=mysql_manager&acc=optimizerdb', {
    data: data_send,
    callback: function(response){
      if(response.result == 'success'){
        noti_bubble('{{langmod.DBOPTIOK}}','{{langmod.DBSUCCT}}','success',false,false,'3000',true);
      }else{
        noti_bubble('{{langmod.DBERROR}}, {{langmod.DBERRORCODE}}: ' + (response.code !== undefined ? response.code : 'Unexpected error.'),'{{langmod.DBERROR2}}','error',false,false,'3000',true);
      }
      handleDbButton(elem, 'fa-tachometer', true);
    }
  });
}
function handleDbButton(elem, icon_fa, type){
  let icon = $(elem).find('.fa');
  if(type == undefined){
    $(elem).addClass('disabled');
    icon.removeClass(icon_fa);
    icon.addClass('fa-spinner fa-spin');
  }else{
    icon.removeClass('fa-spinner fa-spin');
    icon.addClass(icon_fa);
    $(elem).removeClass('disabled');
  }
}
function dumpSql(db, elem){
  handleDbButton(elem, 'fa-database');
  let data_send = "db=" + db;
  uchip.call('module=mysql_manager&acc=dumpsql', {
    data: data_send,
    callback: function(response){
      if(response.result == 'success'){
        noti_bubble('{{langmod.DBRDUMPOK}}','{{langmod.DBSUCCT}}','success',false,false,'3000',true);
        window.open('./{{users}}/index.php?module=mysql_manager&acc=download_backup&identifier=' + response.identifier, '_blank');
      }else{
        noti_bubble('{{langmod.DBERROR2}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
      }
      handleDbButton(elem, 'fa-database', true);
    }
  });
}
function sendDbDeletion(){
  $('#confirmDBDelete').modal('toggle');
  let db = $('#db_todelete').text();
  handleDbButton(last_delete, 'fa-trash');
  let data_send = "db=" + db;
  uchip.call('module=mysql_manager&acc=deletedatabase', {
    data: data_send,
    callback: function(response){
      if(response.result == 'success'){
        noti_bubble('{{langmod.DBSUCCT}}','{{langmod.DMUMYQLDELDB}}','success',false,false,'3000',true);
        dbTable(response.list)
      }else{
        noti_bubble('{{langmod.DBERROR2}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
      }
      // handleDbButton(last_delete, 'fa-trash', true);
    }
  });
}
let last_delete = null;
let last_priv = null;
function deleteDBMysql(db, elem){
  last_delete = elem;
  $('#db_confirm_text').html('<p>{{langmod.DBCONFIRMDBDEL}}: <br><b><span id="db_todelete">' + db + '</span></b><br>{{langmod.DBUDELLABEL6}}</b>');
  $('#confirmDBDelete').modal('toggle');
}
function repairMysql(db, elem){
  handleDbButton(elem, 'fa-wrench');
  let data_send = "db=" + db;
  uchip.call('module=mysql_manager&acc=repairmysql', {
    data: data_send,
    callback: function(response){
      if(response.result == 'success'){
        noti_bubble('{{langmod.DBREPAIROK}}','{{langmod.DBSUCCT}}','success',false,false,'3000',true);
      }else{
        noti_bubble('{{langmod.DBERROR2}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
      }
      handleDbButton(elem, 'fa-wrench', true);
    }
  });
}
function checkMysql(db, elem){
  handleDbButton(elem, 'fa-check-circle');
  let data_send = "db=" + db;
  uchip.call('module=mysql_manager&acc=checkmysql', {
    data: data_send,
    callback: function(response){
      if(response.result == 'success'){
        noti_bubble('{{langmod.DBCHECKOK}}','{{langmod.DBSUCCT}}','success',false,false,'3000',true);
      }else{
        noti_bubble('{{langmod.DBERROR2}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
      }
      handleDbButton(elem, 'fa-check-circle', true);
    }
  });
}
function changePriv(elem){
  let data_per = getUserData(true);
  if(data_per === false){
    noti_bubble('You need to complete required fields','{{langmod.DBERROR}}','error',false,false,'3000',true);
    return;
  }
  if($("#newhostedit").val()=='IP'){
    var namehost = $("#ippersedit_customip").val();
  }else{
    var namehost = $("#newhostedit").val();
  }
  data_per += '&newhost=' + namehost;
  buttonsHandle();
  uchip.call('module=mysql_manager&acc=savepriv', {
    data: data_per,
    callback: function(response){
      if(response.result == 'success'){
        changeView('list_db_view');
        $(elem).data('priv', response.new_priv);
        $(elem).data('host', namehost);
        let line_index = $(elem).data('line');
        $('#user_line_' + line_index).find('.udb_host').text(namehost);
        noti_bubble('{{langmod.DBUPRIVCHANGE}}','{{langmod.DBSUCCT}}','success',false,false,'3000',true);
      }else{
        noti_bubble('{{langmod.DBERROGEN}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
      }
      buttonsHandle(false);
    }
  });
}
function privUser(elem){
  last_priv = elem;
  let db = $(elem).data('database');
  let user = $(elem).data('user');
  let host = $(elem).data('host');
  let JsPriv = Base64.decode($(elem).data('priv'));
  let privObj = jQuery.parseJSON( JsPriv );
  $('#add_user_content').html(user_form);
  $('#mysql_user_form').hide();
  $('#user_form_title').text('{{langmod.DBLABEL17}}');
  // generateNewPass(true);
  let html_desc = '<div class="form-group mysql-user-info">' +
                      '<label class="control-label" for="bdname"><i class="fa fa-user"></i> {{langmod.DBUDELLABEL2}}: </label>' +
                      '<span>' + user + '</span>' +
                      '<input type="hidden" value="' + user + '" id="user_priv">' +
                  '</div>'+
                  '<div class="form-group user_db_host mysql-user-info">' +
                      '<label class="control-label" for="bdname"><i class="fa fa-cloud"></i> {{langmod.DBHOST}}: </label>' +
                      '<div class="">' +
                        '<input type="hidden" value="' + host + '" id="user_priv_host">' +
                        '<select id="newhostedit" onchange="selectHost(this,\'#ippersedit\')" class="form-control">' +
                          '<option value="localhost"' + (host == 'localhost' ? 'selected' : '') + '>localhost</option>' +
                          '<option value="%"' + (host == '%' ? 'selected' : '') + '>{{langmod.DBANY}}</option>' +
                          '<option value="IP"' + (host != 'localhost' && host != '%' ? 'selected' : '') + '>{{langmod.DBLABEL5}}</option>' +
                        '</select>' +
                      '</div>' +
                      '<div class="' + (host != 'localhost' && host != '%' ? '' : 'hidden') + '" id="ippersedit"><input value="' + (host != 'localhost' && host != '%' ? host : '') + '" id="ippersedit_customip" class="form-control" placeholder="XXX.XXX.XXX.XXX"></div>' +
                  '</div>'+
                  '<div class="form-group mysql-user-info">' +
                      '<label class="control-label" for="bdname"><i class="fa fa-database"></i> {{langmod.DBTITLETABLEDB}}: </label>' +
                      '<span>' + db + '</span>' +
                      '<input type="hidden" value="' + db + '" id="user_priv_db">' +
                  '</div>'
  $('#mysql_user_info').html(html_desc);
  $('#mysql_user_info').show();
  bindUSerEvents();
  $('.btn-save-mysql-user').click(function(){
    changePriv(elem);
  });
  changeView('add_dbuser_view');
  populatePermissions(privObj);
  return;

    // $("#titlebd_edi").html(db+' / '+user+' [ '+host+' ]');
    // $("#db_h").val(db);
    // $("#user_h").val(user);
    // $("#host_h").val(host);


    // $("#modal-changeprivmysql").modal('toggle');
    return false;
}
function populatePermissions(obj){
  if(obj.Select_priv=='Y'){ $("#select").attr('checked',true); }else{ $("#select").attr('checked',false); }
  if(obj.Insert_priv=='Y'){ $("#insert").attr('checked',true); }else{ $("#insert").attr('checked',false); }
  if(obj.Update_priv=='Y'){ $("#update").attr('checked',true); }else{ $("#update").attr('checked',false); }
  if(obj.Lock_tables_priv == 'Y'){ $("#locktables_priv").attr('checked',true); }else{ $("#locktables_priv").attr('checked',false); }
  if(obj.References_priv == 'Y'){ $("#reference_priv").attr('checked',true); }else{ $("#reference_priv").attr('checked',false); }
  if(obj.Delete_priv=='Y'){ $("#delete").attr('checked',true); }else{ $("#delete").attr('checked',false); }
  if(obj.Create_priv=='Y'){ $("#create").attr('checked',true); }else{ $("#create").attr('checked',false); }
  if(obj.Drop_priv=='Y'){ $("#drop").attr('checked',true); }else{ $("#drop").attr('checked',false); }
  if(obj.Create_routine_priv=='Y'){ $("#createroutine").attr('checked',true); }else{ $("#createroutine").attr('checked',false); }
  if(obj.Create_view_priv=='Y'){ $("#createview").attr('checked',true); }else{ $("#createview").attr('checked',false); }

  if(obj.Alter_priv=='Y'){ $("#alter").attr('checked',true); }else{ $("#alter").attr('checked',false); }
  if(obj.Trigger_priv=='Y'){ $("#trigger").attr('checked',true); }else{ $("#trigger").attr('checked',false); }
  if(obj.Alter_routine_priv=='Y'){ $("#alterroutine").attr('checked',true); }else{ $("#alterroutine").attr('checked',false); }
  if(obj.Event_priv=='Y'){ $("#event").attr('checked',true); }else{ $("#event").attr('checked',false); }

  if(obj.Index_priv=='Y'){ $("#index").attr('checked',true); }else{ $("#index").attr('checked',false); }
  if(obj.Show_view_priv=='Y'){ $("#showview").attr('checked',true); }else{ $("#showview").attr('checked',false); }
  if(obj.Execute_priv=='Y'){ $("#execute").attr('checked',true); }else{ $("#execute").attr('checked',false); }
  if(obj.Create_tmp_table_priv=='Y'){ $("#creattemptable").attr('checked',true); }else{ $("#creattemptable").attr('checked',false); }

  if(obj.hasOwnProperty('maxqueryhour') && obj.maxqueryhour != ''){ $("#maxqueryhour").val(obj.maxqueryhour); }else{ $("#maxqueryhour").val(0); }
  if(obj.hasOwnProperty('maxupdhour') && obj.maxupdhour != ''){ $("#maxupdhour").val(obj.maxupdhour); }else{ $("#maxupdhour").val(0); }
  if(obj.hasOwnProperty('maxconnechour') && obj.maxconnechour != ''){ $("#maxconnechour").val(obj.maxconnechour); }else{ $("#maxconnechour").val(0); }
  if(obj.hasOwnProperty('maxuserconnec') && obj.maxuserconnec != ''){ $("#maxuserconnec").val(obj.maxuserconnec); }else{ $("#maxuserconnec").val(0); }
}
function createDB(elem_btn){
  //let panel = $('#mysql_add_user');
  let utype = $('#user_selector_db').val();
  let dbname = $('#newdb').val();
  let charset = $('#charsetonly').val();
  let invalid = false;
  if(dbname == ''){
    let has_error = fieldHasError('#newdb');
    $('#newdb').addClass('error');
    if(!has_error){
      $('#newdb').after('<span class="error text-danger">{{langmod.DBINVALIDDBNAME}}</span>');
    }
    invalid = true;
  }
  let data_send = 'dbname=' + dbname + '&charset=' + charset;
  let user_creating = false;
  if(utype == '1'){
    user_creating = true;
    if(user_data = getUserData()){
      data_send += user_data
    }else{
      invalid = true;
    }
  }else if(utype != ''){
    let host = $('#user_selector_db').children("option:selected").data('host');
    data_send += '&userexisting=' + utype + '&host=' + host + getPrivileges();
  }
  if(invalid){
    noti_bubble('{{langmod.DBREQUIREDFIELDS}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
    return;
  }
  buttonsHandle();
  uchip.call('module=mysql_manager&acc=adddb', {
    data: data_send,
    callback: function(response){
      if(response.result == 'success'){
        if(user_creating && response.user.result != 'success'){
          let user_error = '';
          if(response.user.error == '4'){
            user_error = '{{langmod.DBERROR4}}';
          }else{
            user_error = 'UNKNOW ERROR';
          }
          noti_bubble('{{langmod.DMMYSQLOK}}, {{langmod.DBERRORINUSER}}: <b>' + user_error + '</b>','Warning','warning',false,false,'6000',true);
        }else{
          noti_bubble('{{langmod.DBSUCCT}}','{{langmod.DMMYSQLOK}}','success',false,false,'3000',true);
        }
        dbTable(response.list);
        changeView('list_db_view');
      }else{
        if(response.result == 'error' && response.error == '1'){
          noti_bubble('{{langmod.DBERROR1}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
        }else if(response.result == 'error' && response.error == '2'){
          noti_bubble('{{langmod.DBERROR2}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
        }else{
          noti_bubble('UNKNOW ERROR','{{langmod.DBERROR}}','error',false,false,'3000',true);
        }
        buttonsHandle(false);
      }
    }
  });
}
function selectHost(elem, elemip){
  let ipdiv = elemip == undefined ? '#ippers' : elemip;
  if($(elem).val() == 'IP'){
    $(ipdiv).removeClass('hidden');
  }else{
    $(ipdiv).addClass('hidden');
  }
}
dbTable(db_list);
$(document).ready(function() {
  dbUserTable(user_list);
});

function btnchangpassusermysql(){
    btnporcess('off','btn-changpassusermysql','{{ langmod.DBLABEL4 }}');
    if(($("#newpass2user").val()=='') || ($("#newpass2user2").val()=='')){
        noti_bubble('{{langmod.DBERROR4}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
        btnporcess('on','btn-changpassusermysql','{{langene.MDBTN_SAVE}}');
        return false;
    }else{
        if($("#newpass2user").val()!=$("#newpass2user2").val()){
            noti_bubble('{{langmod.DBERROR3}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
            btnporcess('on','btn-changpassusermysql','{{langene.MDBTN_SAVE}}');
            return false;
        }else{
            var merge=$("#mysqluserpass").val();
            $.ajax({
                type: "POST",
                url: "./{{users}}/index.php?module=mail_autoreply&acc=changepassuserdb",
                data:"dates="+merge+"&passuser="+Base64.encode($("#newpass2user").val()),
                complete: function(datos){
                    if(datos.responseText==1){
                        $("#modal-changepassusermysql").modal('hide');
                        noti_bubble('{{langmod.DBCHANGEPASSEXIST}}','{{langmod.DBSUCCT}}','success',false,false,'3000',true);
                        btnporcess('on','btn-changpassusermysql','{{langene.MDBTN_SAVE}}');
                    }else{
                        noti_bubble('{{langmod.DBERROR2}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
                        btnporcess('on','btn-changpassusermysql','{{langene.MDBTN_SAVE}}');
                    }
                    return false;
                }
            });
            return false;
        }
    }
    return false;
}
function deleteuserdb(st, db,user,host){
    if(st==0){
        var strheader = '<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">{{ langmod.SSLCLOSE }}</span></button><h4 class="modal-title">{{langmod.DBWARNING}}</h4><small class="font-bold">{{langmod.DBDELETEUSER}}</small>';
        var strbody = '<p class="text-center">'+user+' '+host+'</p>';
        var strfooter = '<button type="button" class="btn btn-white" data-dismiss="modal">{{langmod.DBNO}}</button><button type="button" class="btn btn-primary" id="btnyesdel" onclick="return deleteuserdb(1,\''+db+'\',\''+user+'\',\''+host+'\')">{{langmod.DBYES}}</button>';
        $("#deletemodal .modal-header").html(strheader);
        $("#deletemodal .modal-body").html(strbody);
        $("#deletemodal .modal-footer").html(strfooter);
        $("#deletemodal").modal('toggle');
        return false;
    }
    if(st==1){
        $("#alerdelete").hide('blind');
        $("#alerdelete").html('');
        btnporcess('off','btnyesdel','{{ langmod.DBLABEL4 }}');
        $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
        $.ajax({
            type: "POST",
            url: "./{{users}}/index.php?module=mysql_manager&acc=deleteuserdb",
            data:"user="+user+"&host="+host,
            complete: function(datos){
                refrestable();
                btnporcess('on','btnyesdel','{{ langmod.DBYES }}');
                $("#deletemodal").modal('hide');
                noti_bubble('{{langmod.DBSUCCT}}','{{langmod.DMUSSQLDEL}}','success',false,false,'3000',true);
                return false;
            }
        });
        return false;
    }
    return false;
}
function refrestable(user){
    $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
    $.ajax({
        type: "POST",
        url: "./{{users}}/index.php?module=mysql_manager&acc=refrestable",
        complete: function(datos){
            var str =datos.responseText;
            var trozo=str.split("|||");
            var tables=trozo[0];
            var tbusers=trozo[1];
            $('.dataTables-example').DataTable().destroy();
            $("#trtable").html(tables);
            $("#trsuser").html(tbusers);
            $('.dataTables-example').DataTable();
        }
    });
}
function btnaddbdandusernew(){
    var sw=0;
    if(($("#bdname").val()=='')||($("#pass1new").val()=='')||($("#pass2new").val()=='')){ var msj='{{langmod.DBERROR4}}'; sw=1;}
    if($("#pass1new").val()!=$("#pass2new").val()){ var msj='{{langmod.DBERROR3}}'; sw=1; }
    if(sw==1){
        noti_bubble(msj,'','error',false,false,'3000',true);
        return false;
    }else{
        var pass=Base64.encode($("#pass1new").val());
        var collation='';
        var charset=$("#charset").val();
        btnporcess('off','btn-addbdandusernew','{{ langmod.DBLABEL4 }}');
        $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
        $.ajax({
            type: "POST",
            url: "./{{users}}/index.php?module=mysql_manager&acc=newmysqlanduser",
            data: "datebase="+$("#bdname").val()+"&pass="+pass+"&collation="+collation+"&charset="+charset,
            complete: function(datos){
                if(datos.responseText=='OK'){
                    $("#bdname").val('');
                    $("#pass1new").val('');
                    $("#pass2new").val('');
                    refrestable();
                    refrespanelnew('mysql_manager');
                    $("#modal-createbdanduser").modal('hide');
                    noti_bubble('{{langmod.DBSUCCT}}','{{langmod.DMMYSQLOK}}','success',false,false);
                    btnporcess('on','btn-addbdandusernew','{{ langmod.DBCREATEMODAL }}');
                }else if(datos.responseText=='1'){
                    noti_bubble('','{{langmod.DBERROR1}}','error',false,false);
                    btnporcess('on','btn-addbdandusernew','{{ langmod.DBCREATEMODAL }}');
                }else if(datos.responseText==2){
                    noti_bubble('','{{langmod.DBERROR2}}','error',false,false);
                    btnporcess('on','btn-addbdandusernew','{{ langmod.DBCREATEMODAL }}');
                }
                return false;
            }
        });
        return false;
    }
}
function processlistmysql(sw){
    $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
    $.ajax({
        type: "POST",
        url: "./{{users}}/index.php?module=mysql_manager&acc=procsmysql",
        complete: function(datos){
            //alert(datos.responseText);
            $("#contentmodalplmysql").html(datos.responseText);
            if(sw==1){
                timer = setTimeout('processlistmysql(1)', 4000);
            }else{
                return false;
            }
        }
    });
}
function changepassmysqluser(st,db,user,host){
    $('#mysqluserpass').val(user+'||'+host);
    $("#ttcgpss").html(user+' '+host);
    $("#modal-changepassusermysql").modal('toggle');
    return false;
}
function newusermysql(bd){
    $("#alerdelete").hide('blind');
    $("#titlebd").html(bd);
    $("#dbasehiden").val(bd);
    var randpass = generatePasswordRand(10,'alf');
    $("#newpass1").val(randpass);
    $("#modal-newusermysql").modal('toggle');
    return false;
}
function modalbtnonlymysql (){
    $("#modal-onlymysql").modal('toggle');
}
function changepassmysqluser(st,db,user,host){
    $('#mysqluserpass').val(user+'||'+host);
    $("#ttcgpss").html(user+' '+host);
    $("#modal-changepassusermysql").modal('toggle');
    return false;
}
$("#modal-btn-createbdanduser").click(function(){
    var randpass=generatePasswordRand(10,'alf');
    $("#pass1new").val(randpass);
    $("#modal-createbdanduser").modal('toggle');
    return false;
});
$("#alldata_edi").click(function(){
    if ($('#alldata_edi').is(':checked')) {
        $('#select_edi').attr('checked',true);
        $('#insert_edi').attr('checked',true);
        $('#update_edi').attr('checked',true);
        $('#delete_edi').attr('checked',true);
        $('#file_edi').attr('checked',true);
    }else{
        $('#select_edi').attr('checked',false);
        $('#insert_edi').attr('checked',false);
        $('#update_edi').attr('checked',false);
        $('#delete_edi').attr('checked',false);
        $('#file_edi').attr('checked',false);
    }
});
$("#allstructure").click(function(){
    if ($('#allstructure').is(':checked')) {
        $('#create').attr('checked',true);
        $('#alter').attr('checked',true);
        $('#index').attr('checked',true);
        $('#drop').attr('checked',true);
        $('#creattemptable').attr('checked',true);
        $('#showview').attr('checked',true);
        $('#createroutine').attr('checked',true);
        $('#alterroutine').attr('checked',true);
        $('#execute').attr('checked',true);
        $('#createview').attr('checked',true);
        $('#event').attr('checked',true);
        $('#trigger').attr('checked',true);
    }else{
        $('#create').attr('checked',false);
        $('#alter').attr('checked',false);
        $('#index').attr('checked',false);
        $('#drop').attr('checked',false);
        $('#creattemptable').attr('checked',false);
        $('#showview').attr('checked',false);
        $('#createroutine').attr('checked',false);
        $('#alterroutine').attr('checked',false);
        $('#execute').attr('checked',false);
        $('#createview').attr('checked',false);
        $('#event').attr('checked',false);
        $('#trigger').attr('checked',false);
    }
});
$("#allstructure_edi").click(function(){
    if ($('#allstructure_edi').is(':checked')) {
        $('#create_edi').attr('checked',true);
        $('#alter_edi').attr('checked',true);
        $('#index_edi').attr('checked',true);
        $('#drop_edi').attr('checked',true);
        $('#creattemptable_edi').attr('checked',true);
        $('#showview_edi').attr('checked',true);
        $('#createroutine_edi').attr('checked',true);
        $('#alterroutine_edi').attr('checked',true);
        $('#execute_edi').attr('checked',true);
        $('#createview_edi').attr('checked',true);
        $('#event_edi').attr('checked',true);
        $('#trigger_edi').attr('checked',true);
    }else{
        $('#create_edi').attr('checked',false);
        $('#alter_edi').attr('checked',false);
        $('#index_edi').attr('checked',false);
        $('#drop_edi').attr('checked',false);
        $('#creattemptable_edi').attr('checked',false);
        $('#showview_edi').attr('checked',false);
        $('#createroutine_edi').attr('checked',false);
        $('#alterroutine_edi').attr('checked',false);
        $('#execute_edi').attr('checked',false);
        $('#createview_edi').attr('checked',false);
        $('#event_edi').attr('checked',false);
        $('#trigger_edi').attr('checked',false);
    }
});
$("#newhost").click(function (){
    if($("#newhost").val()=='IP'){
        $("#ippers").removeClass('hidden');
    }else{
        $("#ippers").addClass('hidden');
        $("#ippers").val('');
    }
});
$("#btn-usemysqluser").click(function (){
    btnporcess('off','btn-usemysqluser','{{ langmod.DBLABEL4 }}');
    $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
    $.ajax({
        type: "POST",
        url: "./{{users}}/index.php?module=mysql_manager&acc=usemysqluser",
        data: "userdb="+$("#useusermyqlsel").val()+"&host="+$("#newhostuser").val()+"&dbase="+$("#dbasehiden").val(),
        complete: function(datos){
            if(datos.responseText=='OK'){
                $("#newuser").val('');
                $("#newpass1").val('');
                $("#newpass1").val('');
                $("#modal-newusermysql").modal('toggle');
                noti_bubble('{{langmod.DMUSSQLOK}}','{{langmod.DBSUCCT}}','success',false,false,'3000',true);
                refrestable();
                btnporcess('on','btn-usemysqluser','{{ langmod.DBBTNASIGN }}');
            }else if(datos.responseText=='1'){
                noti_bubble('{{langmod.DBERROR}}','{{langmod.DBERROR1}}','error',false,false,'3000',true);
                btnporcess('on','btn-usemysqluser','{{ langmod.DBBTNASIGN }}');
            }else if(datos.responseText==2){
                noti_bubble('{{langmod.DBERROR}}','{{langmod.DBERROR2}}','error',false,false,'3000',true);
                btnporcess('on','btn-usemysqluser','{{ langmod.DBBTNASIGN }}');
            }
            return false;
        }
    });
    return false;
});
$("#btn-newdbonly").click(function (){
    if($("#newdb").val()!=''){
        $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
        btnporcess('off','btn-newdbonly','{{ langmod.DBLABEL4 }}');
        $.ajax({
            type: "POST",
            url: "./{{users}}/index.php?module=mysql_manager&acc=newmysqlonly",
            //data: "datebase="+$("#newdb").val()+"&collation="+$("#collationonly").val()+"&charset="+$("#charsetonly").val(),
            data: "datebase="+$("#newdb").val()+"&charset="+$("#charsetonly").val(),
            complete: function(datos){
                if(datos.responseText=='OK'){
                    $("#modal-onlymysql").modal('hide');
                    refrestable();
                    refrespanelnew('mysql_manager');
                    noti_bubble('{{langmod.DBSUCCT}}','{{langmod.DMMYSQLOK}}','success',false,false,'3000',true);
                    btnporcess('on','btn-newdbonly','{{ langmod.DBCREATEMODAL }}');
                }else if(datos.responseText=='1'){
                    noti_bubble('{{langmod.DBERROR1}}','{{langmod.DMMYSQLOK}}','error',false,false,'3000',true);
                    btnporcess('on','btn-newdbonly','{{ langmod.DBCREATEMODAL }}');
                }else if(datos.responseText=='2'){
                    noti_bubble('{{langmod.DBERROR2}}','{{langmod.DMMYSQLOK}}','error',false,false,'3000',true);
                    btnporcess('on','btn-newdbonly','{{ langmod.DBCREATEMODAL }}');
                }
                return false;
            }
        });
    }else{
        noti_bubble('{{langmod.DBERRORBD}}','{{langmod.DMMYSQLOK}}','error',false,false,'3000',true);
        btnporcess('on','btn-newdbonly','{{ langmod.DBCREATEMODAL }}');
        return false;
    }
});
$("#btn-newnewuser").click(function (){
    var sw=0;
    if(($("#newuser").val()=='')||($("#newpass1").val()=='')||($("#newpass2").val()=='')){ var msj='{{langmod.DBERROR4}}'; sw=1;}
    if($("#newpass1").val()!=$("#newpass2").val()){ var msj='{{langmod.DBERROR3}}'; sw=1;}
    if($("#maxqueryhour").val()==''){sw=1; $("#maxqueryhour").addClass('error');}
    if($("#maxupdhour").val()==''){sw=1;$("#maxupdhour").addClass('error');}
    if($("#maxconnechour").val()==''){sw=1; $("#maxconnechour").addClass('error');}
    if($("#maxuserconnec").val()==''){sw=1; $("#maxuserconnec").addClass('error');}

    if(sw==1) {
        noti_bubble('{{ langmod.DBERROR4 }}', '{{ langmod.DBERROR }}', 'error', false, false, '4000', true);
        return false;
    }else{
        var pass=Base64.encode($("#newpass1").val());
        if($('#select').is(':checked')){var Vselect='Y';}else{var Vselect='';}
        if($('#insert').is(':checked')){var Vinsert='Y';}else{var Vinsert='';}
        if($('#update').is(':checked')){var Vupdate='Y';}else{var Vupdate='';}
        if($('#delete').is(':checked')){var Vdelete='Y';}else{var Vdelete='';}
        if($('#file').is(':checked')){var Vfile='Y';}else{var Vfile='';}
        if($('#create').is(':checked')){var Vcreate='Y';}else{var Vcreate='';}
        if($('#alter').is(':checked')){var Valter='Y';}else{var Valter='';}
        if($('#index').is(':checked')){var Vindex='Y';}else{var Vindex='';}
        if($('#drop').is(':checked')){var Vdrop='Y';}else{var Vdrop='';}
        if($('#creattemptable').is(':checked')){var Vcreattemptable='Y';}else{var Vcreattemptable='';}
        if($('#showview').is(':checked')){var Vshowview='Y';}else{var Vshowview='';}
        if($('#createroutine').is(':checked')){var Vcreateroutine='Y';}else{var Vcreateroutine='';}
        if($('#alterroutine').is(':checked')){var Valterroutine='Y';}else{var Valterroutine='';}
        if($('#execute').is(':checked')){var Vexecute='Y';}else{var Vexecute='';}
        if($('#createview').is(':checked')){var Vcreateview='Y';}else{var Vcreateview='';}
        if($('#event').is(':checked')){var Vevent='Y';}else{var Vevent='';}
        if($('#trigger').is(':checked')){var Vtrigger='Y';}else{var Vtrigger='';}
        if($("#newhost").val()=='IP'){ var namehost=$("#ippers").val(); }else{ var namehost=$("#newhost").val(); }
        btnporcess('off','btn-newnewuser','{{ langmod.DBLABEL4 }}');
        $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
        $.ajax({
            type: "POST",
            url: "./{{users}}/index.php?module=mysql_manager&acc=newnewuser",
            data: "userdb="+$("#newuser").val()+"&pass="+pass+"&host="+namehost+"&dbase="+$("#dbasehiden").val()+"&select="+Vselect+"&insert="+Vinsert+"&update="+
                    Vupdate+"&delete="+Vdelete+"&file="+Vfile+"&create="+Vcreate+"&alter="+Valter+"&index="+Vindex+"&drop="+Vdrop+"&creattemptable="+Vcreattemptable+"&showview="+
                    Vshowview+"&createroutine="+Vcreateroutine+"&alterroutine="+Valterroutine+"&execute="+Vexecute+"&event="+Vevent+"&createview="+Vcreateview+"&trigger="+Vtrigger+
                    "&maxqueryhour="+$("#maxqueryhour").val()+"&maxupdhour="+$("#maxupdhour").val()+"&maxconnechour="+$("#maxconnechour").val()+"&maxuserconnec="+$("#maxuserconnec").val(),
            complete: function(datos){
                if(datos.responseText=='OK'){
                    $("#newuser").val('');
                    $("#newpass1").val('');
                    $("#newpass1").val('');
                    $("#modal-newusermysql").modal('hide');
                    noti_bubble('{{langmod.DBSUCCT}}','{{langmod.DMUSSQLOK}}','success',false,false,'3000',true);
                    refrestable();
                    btnporcess('on','btn-newnewuser','{{ langmod.DBCREATEUSER }}');
                }else if(datos.responseText=='1'){
                    noti_bubble('{{langmod.DBERROR1}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
                    btnporcess('on','btn-newnewuser','{{ langmod.DBCREATEUSER }}');
                }else if(datos.responseText==2){
                    noti_bubble('{{langmod.DBERROR2}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
                    btnporcess('on','btn-newnewuser','{{ langmod.DBCREATEUSER }}');
                }else if(datos.responseText==4){
                    noti_bubble('{{langmod.DBERROR4}}','{{langmod.DBERROR}}','error',false,false,'3000',true);
                    btnporcess('on','btn-newnewuser','{{ langmod.DBCREATEUSER }}');
                }
                return false;
            }
        });
        return false;
    }
});
$("#btn-savepriv").click(function (){
    $("#btn-savepriv").attr('disabled',true);
    $("#btn-savepriv").addClass('disabled');
    var textntn=$("#btn-savepriv").text();
    $("#btn-savepriv").html('<i class="fa fa-spinner fa-spin"></i> '+textntn);

    if ($('#select_edi').is(':checked')) { var Vselect='Y'; }else{ var Vselect='';}
    if ($('#insert_edi').is(':checked')) { var Vinsert='Y'; }else{ var Vinsert='';}
    if ($('#update_edi').is(':checked')) { var Vupdate='Y'; }else{ var Vupdate='';}
    if ($('#delete_edi').is(':checked')) { var Vdelete='Y'; }else{ var Vdelete='';}

    if ($('#create_edi').is(':checked')) { var Vcreate='Y'; }else{ var Vcreate='';}
    if ($('#alter_edi').is(':checked')) { var Valter='Y'; }else{ var Valter='';}
    if ($('#index_edi').is(':checked')) { var Vindex='Y'; }else{ var Vindex='';}
    if ($('#drop_edi').is(':checked')) { var Vdrop='Y'; }else{ var Vdrop='';}

    if ($('#creattemptable_edi').is(':checked')) { var Vcreattemptable='Y'; }else{ var Vcreattemptable='';}
    if ($('#showview_edi').is(':checked')) { var Vshowview='Y'; }else{ var Vshowview='';}
    if ($('#createroutine_edi').is(':checked')) { var Vcreateroutine='Y'; }else{ var Vcreateroutine='';}
    if ($('#alterroutine_edi').is(':checked')) { var Valterroutine='Y'; }else{ var Valterroutine='';}

    if ($('#execute_edi').is(':checked')) { var Vexecute='Y'; }else{ var Vexecute='';}
    if ($('#event_edi').is(':checked')) { var Vevent='Y'; }else{ var Vevent='';}
    if ($('#createview_edi').is(':checked')) { var Vcreateview='Y'; }else{ var Vcreateview='';}
    if ($('#trigger_edi').is(':checked')) { var Vtrigger='Y'; }else{ var Vtrigger='';}

    $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
    $.ajax({
        type: "POST",
        url: "./{{users}}/index.php?module=mysql_manager&acc=savepriv",
        data: "userdb="+$("#user_h").val()+"&host="+$("#host_h").val()+"&dbase="+$("#db_h").val()+"&select="+Vselect+"&insert="+Vinsert+"&update="+Vupdate+"&delete="+Vdelete+"&create="+Vcreate+"&alter="+Valter+"&index="+Vindex+"&drop="+Vdrop+"&creattemptable="+Vcreattemptable+"&showview="+Vshowview+"&createroutine="+Vcreateroutine+"&alterroutine="+Valterroutine+"&execute="+Vexecute+"&event="+Vevent+"&createview="+Vcreateview+"&trigger="+Vtrigger+"&maxqueryhour="+$("#maxqueryhour_edi").val()+"&maxupdhour="+$("#maxupdhour_edi").val()+"&maxconnechour="+$("#maxconnechour_edi").val()+"&maxuserconnec="+$("#maxuserconnec_edi").val(),
        complete: function(datos){
            refrestable();
            $("#modal-changeprivmysql").modal('toggle');
            return false;
        }
    });
    return false;
});