Criação do controle de classificação

Top  Previous  Next

Código java do controle responsável para calcular a média entre valores de N campos, que dinamicamente crie subcontroles para os campos envolvidos no cálculo, executando-o client-side:
 

package corporate.hoteisadmin6;

import org.w3c.dom.Node;

import lumis.doui.control.DataBoundControl;

import lumis.portal.PortalException;

import lumis.util.XmlUtil;

public class ClassificacaoControl extends DataBoundControl

{

 public void buildSubControls() throws PortalException

 {

  super.buildSubControls();

 

  Node[] fieldNodes = XmlUtil.selectNodes("fields/field", controlDefinitionNode);

  Node outputFieldNode = XmlUtil.selectSingleNode("outputField", controlDefinitionNode);

  String outputFieldId = XmlUtil.readAttributeString("id", outputFieldNode);

 

  if(fieldNodes == null || fieldNodes.length == 0 || outputFieldNode == null)

   return;

 

  StringBuilder scriptControlXmlString = new StringBuilder();

 

  scriptControlXmlString.append("<control type=\"lum_script\">");

  scriptControlXmlString.append("<script>function atualizaMedia() {");

  scriptControlXmlString.append("var iSoma = 0;");

 

  StringBuilder subControlsXmlString = new StringBuilder();

 

  subControlsXmlString.append(XmlUtil.XML_HEADER);

  subControlsXmlString.append("<controls>");

 

  subControlsXmlString.append("<control type=\"lum_table\">");

 

  for(Node fieldNode : fieldNodes)

  {

   String fieldId = XmlUtil.readAttributeString("id", fieldNode);

  

   subControlsXmlString.append("<tr>");

   subControlsXmlString.append("<td>");

   subControlsXmlString.append("<control type=\"lum_label\" dataId=\"");

   subControlsXmlString.append(fieldId);

   subControlsXmlString.append("\"/>");

   subControlsXmlString.append("</td>");

   subControlsXmlString.append("<td>");

   subControlsXmlString.append("<control type=\"lum_dropDownList\" id=\"");

   subControlsXmlString.append(fieldId);

   subControlsXmlString.append("\" onChange=\"javascript:atualizaMedia();\"/>");

   subControlsXmlString.append("</td>");

   subControlsXmlString.append("</tr>");

  

   scriptControlXmlString.append("if(document.getElementById('");

   scriptControlXmlString.append(fieldId);

   scriptControlXmlString.append("').value){"); 

   scriptControlXmlString.append("iSoma += parseInt(document.getElementById('");

   scriptControlXmlString.append(fieldId);

   scriptControlXmlString.append("').value);}");  

  }

 

  subControlsXmlString.append("<tr>");

  subControlsXmlString.append("<td>");

  subControlsXmlString.append("<control type=\"lum_label\" dataId=\"");

  subControlsXmlString.append(outputFieldId);

  subControlsXmlString.append("\"/>");

  subControlsXmlString.append("</td>");

  subControlsXmlString.append("<td>");

  subControlsXmlString.append("<control type=\"lum_inputText\" id=\"");

  subControlsXmlString.append(outputFieldId);

  subControlsXmlString.append("\" readonly=\"true\" style=\"width:35px\"/>");

  subControlsXmlString.append("</td>");

  subControlsXmlString.append("</tr>");

  

  subControlsXmlString.append("</control>");

 

  scriptControlXmlString.append("iSoma = iSoma / ");

  scriptControlXmlString.append(fieldNodes.length);

  scriptControlXmlString.append(";");

  scriptControlXmlString.append("document.getElementById('");

  scriptControlXmlString.append(outputFieldId);

  scriptControlXmlString.append("').value = iSoma + '';}</script></control>");

 

  subControlsXmlString.append(scriptControlXmlString);

 

  subControlsXmlString.append("</controls>");

 

  appendSubControls(subControlsXmlString.toString());

 }

}

 


Lumis Portal 6.2.0.120405
Copyright © 2006–2012 Lumis EIP Tecnologia da Informação LTDA. Todos os direitos reservados.