Correção "Cannot read property 'style' of null" / "getNodeIfString(...) is null"

Nesse tutorial iremos ver a correção para um erro comum a várias versões do ScadaBR, que aparece quando tentamos editar um data point virtual. No Google Chrome, surge na tela uma mensagem dizendo Cannot read property ‘style’ of null e no Firefox essa mensagem é getNodeIfString(…) is null. A pedido do @fabiodurao dei uma vasculhada nos arquivos JSP de uma versão do ScadaBR em que esse erro não ocorre e descobri qual é a correção para o problema.

Então, sem mais delongas, para corrigir esse erro incômodo edite o arquivo WEB-INF/jsp/dataSourceEdit/editVirtual.jsp e troque o conteúdo da função changeChangeType() pelo código abaixo:

function changeChangeType() {
      if (currentChangeType) {
          // Close the current change type div.  
          hide(currentChangeType);
      }

      if ($get("changeTypeId").length) {
          var changeTypeId = "divCH" + $get("changeTypeId");
          currentChangeType = changeTypeId;
          // Open the selected type.
          show(changeTypeId);
      }
     
      // Update the values.
      var locator = currentPoint.pointLocator;
      $set("alternateBooleanChange.startValue", locator.alternateBooleanChange.startValue);
      $set("brownianChange.min", locator.brownianChange.min);
      $set("brownianChange.max", locator.brownianChange.max);
      $set("brownianChange.maxChange", locator.brownianChange.maxChange);
      $set("brownianChange.startValue", locator.brownianChange.startValue);
      $set("incrementAnalogChange.min", locator.incrementAnalogChange.min);
      $set("incrementAnalogChange.max", locator.incrementAnalogChange.max);
      $set("incrementAnalogChange.change", locator.incrementAnalogChange.change);
      $set("incrementAnalogChange.roll", locator.incrementAnalogChange.roll == "true");
      $set("incrementAnalogChange.startValue", locator.incrementAnalogChange.startValue);
      refreshValueList("incrementMultistate", locator.incrementMultistateChange.values);
      $set("incrementMultistateChange.roll", locator.incrementMultistateChange.roll == "true");
      $set("incrementMultistateChange.startValue", locator.incrementMultistateChange.startValue);
      $set("noChange.startValue", locator.noChange.startValue);
      $set("randomAnalogChange.min", locator.randomAnalogChange.min);
      $set("randomAnalogChange.max", locator.randomAnalogChange.max);
      $set("randomAnalogChange.startValue", locator.randomAnalogChange.startValue);
      $set("randomBooleanChange.startValue", locator.randomBooleanChange.startValue);
      refreshValueList("randomMultistate", locator.randomMultistateChange.values);
      $set("randomMultistateChange.startValue", locator.randomMultistateChange.startValue);
      $set("analogAttractorChange.maxChange", locator.analogAttractorChange.maxChange);
      $set("analogAttractorChange.volatility", locator.analogAttractorChange.volatility);
      $set("analogAttractorChange.attractionPointId", locator.analogAttractorChange.attractionPointId);
      $set("analogAttractorChange.startValue", locator.analogAttractorChange.startValue);
  }

Isso deve sanar o problema, e a mensagem de erro não aparecerá mais na tela.

1 curtida

Ótima dica, apliquei aqui no meu servidor e deu certo. Obrigado!