Browse Source

REPORT-31267 && REPORT-31413 【模板制作优化】@kerry,决策报表制作自适应布局下,埋点的widget_count一开始显示1,后面加一个控件显示2

feature/big-screen
kerry 4 years ago
parent
commit
4317149adf
  1. 17
      designer-base/src/main/java/com/fr/design/mainframe/burying/point/AbstractPointCollector.java
  2. 17
      designer-base/src/main/java/com/fr/design/mainframe/chart/info/ChartInfoCollector.java
  3. 20
      designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfoCollector.java
  4. 19
      designer-form/src/main/java/com/fr/design/mainframe/template/info/ComponentOperate.java
  5. 32
      designer-form/src/main/java/com/fr/design/mainframe/template/info/JFormProcessInfo.java
  6. 15
      designer-form/src/test/java/com/fr/design/mainframe/template/info/ComponentCreateOperateTest.java
  7. 26
      designer-form/src/test/java/com/fr/design/mainframe/template/info/JFormProcessInfoTest.java

17
designer-base/src/main/java/com/fr/design/mainframe/burying/point/AbstractPointCollector.java

@ -5,6 +5,8 @@ import com.fr.base.io.XMLReadHelper;
import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.template.info.SendHelper;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLTools;
import com.fr.stable.xml.XMLableReader;
@ -121,10 +123,23 @@ public abstract class AbstractPointCollector<T extends AbstractPointInfo> implem
}
}
private File getInfoFile() {
File file = new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), getInfoFilePath()));
try {
if (!file.exists()) {
file.createNewFile();
}
} catch (Exception ex) {
FineLoggerFactory.getLogger().error(ex.getMessage(), ex);
}
return file;
}
/**
* 获取缓存文件存放路径
*/
protected abstract File getInfoFile();
protected abstract String getInfoFilePath();
protected abstract void addIdleDayCount();
}

17
designer-base/src/main/java/com/fr/design/mainframe/chart/info/ChartInfoCollector.java

@ -8,15 +8,10 @@ import com.fr.design.mainframe.burying.point.AbstractPointCollector;
import com.fr.design.mainframe.template.info.TemplateInfo;
import com.fr.design.mainframe.template.info.TemplateProcessInfo;
import com.fr.general.ComparatorUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
import com.fr.third.joda.time.DateTime;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
@ -235,16 +230,8 @@ public class ChartInfoCollector extends AbstractPointCollector<ChartInfo> {
* 获取缓存文件存放路径
*/
@Override
protected File getInfoFile() {
File file = new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), XML_FILE_NAME));
try {
if (!file.exists()) {
file.createNewFile();
}
} catch (Exception ex) {
FineLoggerFactory.getLogger().error(ex.getMessage(), ex);
}
return file;
protected String getInfoFilePath() {
return XML_FILE_NAME;
}
@Override

20
designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfoCollector.java

@ -5,13 +5,10 @@ import com.fr.design.mainframe.burying.point.AbstractPointInfo;
import com.fr.json.JSON;
import com.fr.json.JSONFactory;
import com.fr.json.JSONObject;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -26,7 +23,7 @@ public class TemplateInfoCollector extends AbstractPointCollector<TemplateInfo>
private static final String XML_TEMPLATE_INFO_LIST = "TemplateInfoList";
private static final String XML_FILE_NAME = "tpl.info";
private static TemplateInfoCollector instance;
private DesignerOpenHistory designerOpenHistory;
private DesignerOpenHistory designerOpenHistory = DesignerOpenHistory.getInstance();
//记录指定模板最新的模板耗时信息ID
private Map<String, Long> latestTemplateInfo;
@ -99,14 +96,6 @@ public class TemplateInfoCollector extends AbstractPointCollector<TemplateInfo>
return latestTemplateInfo.getTemplateCreateTime();
}
/**
* 获取缓存文件存放路径
*/
@Override
protected File getInfoFile() {
return new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), XML_FILE_NAME));
}
/**
* 更新 day_count打开设计器却未编辑模板的连续日子
*/
@ -172,6 +161,13 @@ public class TemplateInfoCollector extends AbstractPointCollector<TemplateInfo>
writer.end();
}
/**
* 获取缓存文件存放路径
*/
@Override
protected String getInfoFilePath() {
return XML_FILE_NAME;
}
@Override
public void sendPointInfo() {

19
designer-form/src/main/java/com/fr/design/mainframe/template/info/ComponentOperate.java

@ -1,10 +1,13 @@
package com.fr.design.mainframe.template.info;
import com.fr.design.gui.core.WidgetOption;
import com.fr.form.ui.ChartEditor;
import com.fr.form.ui.ElementCaseEditor;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WAbsoluteBodyLayout;
import com.fr.form.ui.container.WAbsoluteLayout;
import com.fr.form.ui.container.WCardLayout;
import com.fr.general.ComparatorUtils;
import com.fr.json.JSONObject;
/**
@ -50,6 +53,11 @@ public abstract class ComponentOperate implements TemplateOperate {
Widget {
@Override
protected boolean acceptType(Widget widget) {
for (WidgetOption widgetOption : WidgetOption.getFormWidgetIntance()) {
if (ComparatorUtils.equals(widget.getClass(), widgetOption.widgetClass())) {
return true;
}
}
return false;
}
},
@ -62,7 +70,7 @@ public abstract class ComponentOperate implements TemplateOperate {
Absolute {
@Override
protected boolean acceptType(Widget widget) {
return widget.acceptType(WAbsoluteLayout.class);
return widget.acceptType(WAbsoluteLayout.class) && !widget.acceptType(WAbsoluteBodyLayout.class);
}
};
@ -76,5 +84,14 @@ public abstract class ComponentOperate implements TemplateOperate {
}
return Widget;
}
public static boolean supportComponent(Widget widget) {
for (ComponentType componentType : values()) {
if (componentType.acceptType(widget)) {
return true;
}
}
return false;
}
}
}

32
designer-form/src/main/java/com/fr/design/mainframe/template/info/JFormProcessInfo.java

@ -1,6 +1,7 @@
package com.fr.design.mainframe.template.info;
import com.fr.base.iofile.attr.ExtendSharableAttrMark;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.form.FormElementCaseProvider;
import com.fr.form.main.Form;
@ -61,12 +62,21 @@ public class JFormProcessInfo extends TemplateProcessInfo<Form> {
// 获取模板控件数
public int getWidgetCount() {
int widgetCount = 0;
for (int i = 0; i < template.getContainer().getWidgetCount(); i++) {
WLayout wl = (WLayout) template.getContainer().getWidget(i);
widgetCount += wl.getWidgetCount();
}
return widgetCount;
final int[] widgetCount = {0};
Form.traversalWidget(this.template.getContainer(), new WidgetGather() {
@Override
public void dealWith(Widget widget) {
if (ComponentOperate.ComponentType.supportComponent(widget)) {
widgetCount[0]++;
}
}
@Override
public boolean dealWithAllCards() {
return true;
}
}, null);
return widgetCount[0];
}
@Override
@ -167,7 +177,7 @@ public class JFormProcessInfo extends TemplateProcessInfo<Form> {
public boolean useParaPane() {
return this.template.getParaContainer() != null;
}
@Override
public JSONArray getComponentsInfo() {
JSONArray ja = new JSONArray();
@ -177,10 +187,10 @@ public class JFormProcessInfo extends TemplateProcessInfo<Form> {
this.componentProcessInfoMap.clear();
return ja;
}
@Override
public JSONArray getReuseCmpList() {
final JSONArray jo = JSONArray.create();
WLayout container = this.template.getContainer();
WidgetUtil.bfsTraversalWidget(container, new WidgetUtil.BfsWidgetGather<AbstractBorderStyleWidget>() {
@ -197,7 +207,7 @@ public class JFormProcessInfo extends TemplateProcessInfo<Form> {
}, AbstractBorderStyleWidget.class);
return jo;
}
@Override
public void updateTemplateOperationInfo(TemplateOperate templateOperate) {
if (ComparatorUtils.equals(ComponentCreateOperate.OPERATE_TYPE, templateOperate.getOperateType())) {
@ -207,7 +217,7 @@ public class JFormProcessInfo extends TemplateProcessInfo<Form> {
addComponentRemoveInfo(templateOperate.toJSONObject());
}
}
private void addComponentCreateInfo(JSONObject jsonObject) {
String componentID = jsonObject.getString("componentID");
componentProcessInfoMap.put(componentID, jsonObject);

15
designer-form/src/test/java/com/fr/design/mainframe/template/info/ComponentCreateOperateTest.java

@ -1,9 +1,12 @@
package com.fr.design.mainframe.template.info;
import com.fr.form.ui.CardAddButton;
import com.fr.form.ui.CardSwitchButton;
import com.fr.form.ui.ChartEditor;
import com.fr.form.ui.ElementCaseEditor;
import com.fr.form.ui.FreeButton;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WAbsoluteBodyLayout;
import com.fr.form.ui.container.WAbsoluteLayout;
import com.fr.form.ui.container.WCardLayout;
import com.fr.json.JSONObject;
@ -35,4 +38,16 @@ public class ComponentCreateOperateTest {
Assert.assertEquals(ComponentOperate.ComponentType.Absolute, ComponentOperate.ComponentType.parseType(new WAbsoluteLayout()));
Assert.assertEquals(ComponentOperate.ComponentType.TabLayout, ComponentOperate.ComponentType.parseType(new WCardLayout()));
}
@Test
public void testSupportComponent() {
Assert.assertTrue(ComponentOperate.ComponentType.supportComponent(new FreeButton()));
Assert.assertTrue(ComponentOperate.ComponentType.supportComponent(new ElementCaseEditor()));
Assert.assertTrue(ComponentOperate.ComponentType.supportComponent(new ChartEditor()));
Assert.assertTrue(ComponentOperate.ComponentType.supportComponent(new WAbsoluteLayout()));
Assert.assertTrue(ComponentOperate.ComponentType.supportComponent(new WCardLayout()));
Assert.assertFalse(ComponentOperate.ComponentType.supportComponent(new CardSwitchButton()));
Assert.assertFalse(ComponentOperate.ComponentType.supportComponent(new CardAddButton()));
Assert.assertFalse(ComponentOperate.ComponentType.supportComponent(new WAbsoluteBodyLayout()));
}
}

26
designer-form/src/test/java/com/fr/design/mainframe/template/info/JFormProcessInfoTest.java

@ -6,6 +6,7 @@ import com.fr.form.ui.CardSwitchButton;
import com.fr.form.ui.ChartEditor;
import com.fr.form.ui.ElementCaseEditor;
import com.fr.form.ui.FreeButton;
import com.fr.form.ui.container.WAbsoluteBodyLayout;
import com.fr.form.ui.container.WAbsoluteLayout;
import com.fr.form.ui.container.WBorderLayout;
import com.fr.form.ui.container.WCardLayout;
@ -146,4 +147,29 @@ public class JFormProcessInfoTest {
ja = jFormProcessInfo.getComponentsInfo();
Assert.assertEquals(0, ja.size());
}
@Test
public void testGetWidgetCount() {
Form form = new Form();
WBorderLayout borderLayout = new WBorderLayout();
form.setContainer(borderLayout);
WFitLayout fitLayout = new WFitLayout();
borderLayout.addCenter(fitLayout);
fitLayout.addWidget(new FreeButton());
fitLayout.addWidget(new ElementCaseEditor());
JFormProcessInfo jFormProcessInfo = new JFormProcessInfo(form);
Assert.assertEquals(2, jFormProcessInfo.getWidgetCount());
fitLayout.addWidget(new ChartEditor());
Assert.assertEquals(3, jFormProcessInfo.getWidgetCount());
fitLayout.addWidget(new WAbsoluteBodyLayout());
Assert.assertEquals(3, jFormProcessInfo.getWidgetCount());
fitLayout.addWidget(new CardSwitchButton());
Assert.assertEquals(3, jFormProcessInfo.getWidgetCount());
fitLayout.addWidget(new ChartEditor());
Assert.assertEquals(4, jFormProcessInfo.getWidgetCount());
}
}

Loading…
Cancel
Save