package com.fins.html.view; import com.fins.html.HtmlPage; import com.fins.html.utils.XMLUtils; import com.fins.html.view.AbstractView; import com.fins.html.view.ViewFactory; import com.fins.html.view.dynamic.DynamicOutData; import com.fins.html.view.dynamic.DynamicSupport; import com.fins.html.web.WebViewController; import com.fins.modules.core.spring.ServiceLocator; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.dom4j.Element; public class FormView extends AbstractView { static Logger logger = LogManager.getLogger(WebViewController.class.getName()); public void doHtml(Element e, HtmlPage page) { String id = e.attributeValue("id"); this.checkOnlyid(e, page); Map formps = this.getPropertys(e); Object dynamicClass = formps.get("dynamicClass"); boolean bool = false; Map map; if(dynamicClass != null && !"".equals(dynamicClass)) { try { map = null; if(formps.containsKey("dynamicParam")) { map = XMLUtils.jsonToMap(formps.get("dynamicParam").toString()); } DynamicSupport support = (DynamicSupport)ServiceLocator.getInstance().getBean(Class.forName(dynamicClass.toString())); DynamicOutData outdata = support.queryDynamic(this.initDynamicInData(e, page, map)); id = outdata.getMainData().get("id").toString(); if(outdata.getMainData().containsKey("overflow") && this.getProperty(outdata.getMainData().get("overflow")).equals("auto")) { page.getHtml().append("\n
"); if(map.containsKey("showtitle") && map.get("showtitle").equals("true")) { page.getHtml().append("
"); if(map.containsKey("title")) { page.getHtml().append(map.get("title")); } page.getHtml().append("
"); } page.getHtml().append(""); this.doWidgets(e, page); this.doEvents((Element)e, page); page.getHtml().append("
\n"); } page.getHtml().append("
\n"); if(bool) { page.getHtml().append("
\n"); } } private void doDynamicHtml(DynamicOutData outdata, HtmlPage page, Element e) { Map main = outdata.getMainData(); Set mkey = main.keySet(); page.getHtml().append(" data-options=\"id:\'").append(e.attributeValue("id")).append("\'"); Iterator i$ = mkey.iterator(); while(i$.hasNext()) { String key = (String)i$.next(); if(!key.equals("event")) { this.doProperty(main.get(key), key, page.getHtml()); } } page.getHtml().append("\">"); if(main.containsKey("showtitle") && this.getProperty(main.get("showtitle")).equals("true")) { page.getHtml().append("
"); if(main.containsKey("title")) { page.getHtml().append(this.getProperty(main.get("title"))); } page.getHtml().append("
"); } this.doDynamicPropertysHtml(outdata, page); this.doEvents((Map)main, page); } private String[] getColsWidth(int col, String widths) { String[] cols = new String[col]; int pwidth; int i; if(widths != null && !widths.trim().equals("")) { String[] var7 = widths.split(","); pwidth = var7.length; for(i = 0; i < col; ++i) { if(i < pwidth && !var7[i].trim().equals("")) { cols[i] = var7[i]; } } } else { int width = 100 / col; pwidth = 0; for(i = 0; i < col; ++i) { if(i == col - 1) { cols[i] = 100 - pwidth + "%"; } else { cols[i] = width + "%"; pwidth += width; } } } return cols; } private void doDynamicPropertysHtml(DynamicOutData outdata, HtmlPage page) { int col = Integer.valueOf(this.getProperty(outdata.getMainData().get("cols"))).intValue(); StringBuffer hiddenHtml = new StringBuffer(); List ald = outdata.getColDatas(); int len = ald.size(); ArrayList ld = new ArrayList(); for(int colwidths = 0; colwidths < len; ++colwidths) { Map row = (Map)ald.get(colwidths); if(this.getProperty(row.get("type")).equals("hidden")) { AbstractView ad = ViewFactory.createView("hidden"); hiddenHtml.append(ad.doHtml((Map)row, page).toString()); } else { ld.add(row); } } String[] var22 = null; if(outdata.getMainData().containsKey("colwidths")) { var22 = this.getColsWidth(col, this.getProperty(outdata.getMainData().get("colwidths"))); } else { var22 = this.getColsWidth(col, (String)null); } page.getHtml().append(hiddenHtml); len = ld.size(); int var23 = len / col + 5; String[][] var24 = new String[var23][col]; int index = 0; boolean cinex = false; boolean isbool = true; int r; int acol; for(r = 0; r < var23; ++r) { if(isbool) { for(acol = 0; acol < col; ++acol) { if(var24[r][acol] == null) { if(index == len) { isbool = false; break; } Map islast = (Map)ld.get(index++); AbstractView c = ViewFactory.createView(this.getProperty(islast.get("type"))); if(c != null) { page.getTempMap().put("colWidth", var22[acol]); var24[r][acol] = c.doHtml((Map)islast, page).toString(); c.doEvents((Map)islast, page); } else { var24[r][acol] = ""; } int rowspan = 1; if(islast.get("rowspan") != null) { rowspan = Integer.valueOf(this.getProperty(islast.get("rowspan"))).intValue(); } int colspan = 1; if(islast.get("colspan") != null) { colspan = Integer.valueOf(this.getProperty(islast.get("colspan"))).intValue(); } for(int i = 0; i < rowspan; ++i) { for(int j = 0; j < colspan; ++j) { if(i != 0 || j != 0) { var24[r + i][acol + j] = ""; } } } } } } if(!isbool) { break; } } page.getHtml().append(""); for(r = 0; r < var23; ++r) { acol = 0; for(int var25 = 0; var25 < col; ++var25) { if(var24[r][var25] == null || var24[r][var25].equals("")) { ++acol; } } if(acol == col) { break; } page.getHtml().append(""); boolean var26 = false; for(int var27 = 0; var27 < col; ++var27) { if(var24[r][var27] != null) { page.getHtml().append(var24[r][var27]); } else { page.getHtml().append("\n"); if(var26) { break; } } page.getHtml().append("
"); var26 = true; } } page.getHtml().append("
"); } public void doEvents(Element e, HtmlPage page) { List events = e.elements("event"); String id = e.attributeValue("id"); Element event; if(!"".equals(id)) { for(Iterator i$ = events.iterator(); i$.hasNext(); page.getReadyJs().append("){\n").append(event.elementText("script")).append("\n});\n")) { event = (Element)i$.next(); String name = event.attributeValue("name"); page.getReadyJs().append(id).append(".on(\'").append(name).append("\',function("); Element parameters = event.element("parameters"); if(parameters != null) { List ps = parameters.elements("parameter"); int len = ps.size(); for(int i = 0; i < len; ++i) { if(i != 0) { page.getReadyJs().append(","); } page.getReadyJs().append(((Element)ps.get(i)).getText()); } } } } } public void doEvents(Map e, HtmlPage page) { if(e.containsKey("event")) { Map events = (Map)e.get("event"); String id = (String)e.get("id"); if(!"".equals(id)) { Set keys = events.keySet(); Iterator i$ = keys.iterator(); while(i$.hasNext()) { String name = (String)i$.next(); page.getReadyJs().append(id).append(".on(\'").append(name).append("\',function(e"); page.getReadyJs().append("){\n").append(events.get(name).toString()).append("\n});\n"); } } } } }