Асинхроность при постановке команд в очередь

135
31 марта 2021, 12:40

Ajax запросы отрабатывают верно: получение статуса команды, удаление команды, постановка в очередь. Не могу решить проблему, при клике осуществляет отправку команд на сервер. В случае перезагрузки F5, сбрасываются все инпуты с измененными значениями, хотя должны сохраниться текущие значения пока не будет выполнена отмена.

var initialDeviceSettingsSets = $('#ikz-settings-sets').get(0).outerHTML; 
var currentDeviceSettingsSets; 
var statusSuccessSets; 
 
initialSetsConfigs = result.device_settings.bonding; 
 
 
var last = true; 
var cur_Vals; 
 
var initialMasDeviceSettingsSets; 
var val_KSPD_Obj; 
 
 
 
$.ajax({ 
  type: 'GET', 
  url: antraksHost + '/cur_vals?uuid=' + uuidOfElement + '&last=' + last, 
  async: false, 
  success: function(results) { 
 
 
    cur_Vals = []; 
 
 
    val_KSPD_Obj = {}; 
 
    val_KSPD_Obj['Peers'] = cur_Vals; 
 
 
 
  }, 
  error: function(results) { 
 
  } 
}); 
 
$.ajax({ 
  url: window.antraksHost + '/device/' + uuidOfElement + '/change_settings_status?key=SetBinding', 
  async: false, 
  type: 'GET', 
  success: function(resultSetBinding) { 
 
    if (resultSetBinding.status == 'Command to change this setting is in queue') { 
      result.device_settings.bonding = JSON.parse(resultSetBinding.values); 
      statusSuccessSets = true; 
    } 
  }, 
  error: function(resultSetBinding) { 
    console.error('error /change_settings_status?key=SetBinding'); 
  } 
}); 
 
if (result.protocol == 'iec104') { 
 
  delete result.device_settings.set_number; 
  result.device_settings['bonding'] = val_KSPD_Obj; 
 
  var initialMasDeviceSettingsSets = []; 
 
  for (key in result.device_settings.bonding) { 
    //                            delete result.device_settings.set_number;   
    initialMasDeviceSettingsSets.push(key); 
 
  } 
 
  $('#convert-json-to-html-tree-sets').append(convertJsonToHtmlTree(result.device_settings.bonding, typeOfDevice, '', initialMasDeviceSettingsSets)); 
 
 
} else if (Object.keys(result.device_settings.bonding).length != 0) { 
 
  $('#convert-json-to-html-tree-sets').append(convertJsonToHtmlTree(result.device_settings.bonding, typeOfDevice, '', initialMasDeviceSettingsSets)); 
 
} else { 
  $('#convert-json-to-html-tree-sets').append('empty'); 
} 
 
 
 
if (statusSuccessSets == true) { 
  $('#settings-for-device-device_settings-sets').removeClass('settings-for-device-button-not-press'); 
  $('#settings-for-device-device_settings-sets').addClass('settings-for-device-button-press'); 
  $('#ikz-settings-sets input').attr('disabled', 'disabled'); 
  $('#settings-for-device-device_settings-sets').text(localeTextCancelTransfer); 
} 
 
// при изменении значения input-а обновлять html и реагирование кнопки 
$('#ikz-settings-sets input').on('input', function() { 
  $(this).addClass('changedInput'); 
 
  if ($(this).attr('type') != 'checkbox') { 
    // $(this).attr('value', $(this).val() ); 
 
    currentDeviceSettingsSets = ($('#ikz-settings-sets').get(0).outerHTML); 
 
    if (initialDeviceSettingsSets != currentDeviceSettingsSets) { 
 
      $('#settings-for-device-device_settings-sets').addClass('settings-for-device-button-not-press'); 
    } else { 
      $('#settings-for-device-device_settings-sets').removeClass('settings-for-device-button-not-press'); 
    } 
  } 
}); 
 
$('#settings-for-device-device_settings-sets').click(function() { 
      if ( 
        $('#settings-for-device-device_settings-sets').hasClass('settings-for-device-button-press') || 
        $('#settings-for-device-device_settings-sets').hasClass('settings-for-device-button-not-press') 
      ) { 
        if ($('#settings-for-device-device_settings-sets').hasClass('settings-for-device-button-press')) { 
          if (confirm(localeRemoveCommandFromCommandQueue) == true) { 
            $.ajax({ 
              url: window.antraksHost + '/device/' + uuidOfElement + '/change_settings_request?key=SetBinding', 
              async: false, 
              type: 'DELETE', 
              success: function(result) { 
                // location.reload(); 
              }, 
              error: function(result) { 
                console.error('error DELETE SetBinding ' + result); 
              } 
            }); 
          } 
        } else { 
          if (confirm(localeAddCommandToTheCommandQueue) == true) { 
            $('#frame-compl-sets .changedInput').each(function() { 
                var evalCodeSets = 'initialSetsConfigs'; 
                // var evalCodeSets; 
                var nameAttrIdSets = $(this).attr('id'); 
 
                nameAttrIdSets = nameAttrIdSets.replace('[', '.').replace(']', ''); 
                nameAttrIdSets = nameAttrIdSets.replace('[', '.').replace(']', ''); 
                nameAttrIdSets = nameAttrIdSets.split('.'); 
 
                for (var i = 0; i < nameAttrIdSets.length; i++) { 
                  if (nameAttrIdSets[i] = 'Peers') { 
                    evalCodeSets = 'initialSetsConfigs'; 
 
                    else { 
                      evalCodeSets = evalCodeSets + '["' + nameAttrIdSets[i] + '"]'; 
 
                    } 
                  } 
 
                  eval(evalCodeSets + ' = ' + $(this).val()); 
                }); 
 
              var sendSetSetsConfigs = JSON.stringify(initialSetsConfigs); 
 
              $.ajax({ 
                type: 'POST', 
                url: window.antraksHost + '/device/' + uuidOfElement + '/change_settings', 
                async: false, 
                data: { 
                  key: 'SetBinding', 
                  value: sendSetSetsConfigs 
                }, 
                success: function(result) { 
                  $('#settings-for-device-device_settings-sets').removeClass('settings-for-device-button-not-press'); 
                  $('#settings-for-device-device_settings-sets').addClass('settings-for-device-button-press'); 
                  $('#ikz-settings-sets input').attr('disabled', 'disabled'); 
                  $('#settings-for-device-device_settings-sets').text(localeTextCancelTransfer); 
                }, 
                error: function(result) { 
                  console.error('error change_settings sets'); 
                } 
              }); 
            } 
          } 
        } 
      });

READ ALSO
Упростить код JavaScript

Упростить код JavaScript

Я только начинаю изучать JS, возникла проблема, есть рабочий код, но сильно громоздкий и большой, помогите его упростить или уменьшить

111
Можно ли создать в canvas blur эффект на фото при mousemove?

Можно ли создать в canvas blur эффект на фото при mousemove?

Можно ли создать на canvas библиотеке Konvajs (или на каком-то другом) blur эффект на фото при mousemove?

109
Как писать тесты для строк?

Как писать тесты для строк?

У меня есть функция которая берет строку и проверяет является ли она CSS функцией hslaCSS понимает разное написание этой функции — с тремя и четырьмя...

120
Как изменить атрибут src у img при наведении

Как изменить атрибут src у img при наведении

Как изменить атрибут src у img при наведении?Eсть-ли варианты реализации на чистом css?Если нет - то и js подойдёт

120