Browse Source

Merge branch 'release/10.0' of https://cloud.finedevelop.com/scm/~hades/design into release/10.0

bugfix/10.0
Hades 6 years ago
parent
commit
3ef61a67d4
  1. 2
      designer-base/src/main/java/com/fr/design/DesignerEnvManager.java
  2. 67
      designer-base/src/main/java/com/fr/design/actions/help/FineUIAction.java
  3. 3
      designer-base/src/main/java/com/fr/design/gui/controlpane/JControlUpdatePane.java
  4. 6
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  5. 9
      designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java
  6. 16
      designer-base/src/main/java/com/fr/design/ui/Assistant.java
  7. 83
      designer-base/src/main/java/com/fr/design/ui/EmbProtocolHandler.java
  8. 22
      designer-base/src/main/java/com/fr/design/ui/ModernRequestClient.java
  9. 13
      designer-base/src/main/java/com/fr/design/ui/ModernUIConstants.java
  10. 107
      designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java
  11. 26
      designer-base/src/main/java/com/fr/file/FileNodeFILE.java
  12. 12
      designer-base/src/main/resources/com/fr/design/ui/InitNameSpace.js
  13. 8
      designer-base/src/main/resources/com/fr/design/ui/InsertScript.js
  14. 9
      designer-base/src/main/resources/com/fr/design/ui/InsertStyle.js
  15. 220
      designer-base/src/main/resources/com/fr/design/ui/help/demo.js
  16. 12
      designer-base/src/main/resources/com/fr/design/ui/tpl.html
  17. 28
      designer-base/src/test/java/com/fr/design/ui/FineUIDemo.java
  18. 1
      designer-base/src/test/java/com/fr/design/ui/ModernUIPaneTest.java
  19. 32
      designer-base/src/test/java/com/fr/design/ui/StartComponent.java
  20. 40
      designer-base/src/test/java/com/fr/design/ui/report/ReportServerParamComponent.java
  21. 29
      designer-base/src/test/java/com/fr/design/ui/report/ReportServerParamDemo.java
  22. 40
      designer-base/src/test/java/com/fr/design/ui/report/TemplateWebSettingComponent.java
  23. 28
      designer-base/src/test/java/com/fr/design/ui/report/TemplateWebSettingDemo.java
  24. 11
      designer-base/src/test/resources/com/fr/design/ui/fineui.html
  25. 12
      designer-base/src/test/resources/com/fr/design/ui/script/css/js/common/settingtab/settingtab.css
  26. 0
      designer-base/src/test/resources/com/fr/design/ui/script/css/js/index.css
  27. 41
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/bar.container.js
  28. 89
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/edit.list.js
  29. 33
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/form.rowbackground.setting.js
  30. 54
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/globalsingle.combo.js
  31. 53
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/leavesetting.js
  32. 53
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/reportshow.location.js
  33. 59
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/settingtab/settingtab.js
  34. 17
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/settingtab/settingtab.less
  35. 53
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/sheetlabel.position.js
  36. 126
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/toobar/toobar.js
  37. 42
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/toobar/toolbar.region.js
  38. 67
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/toolbarHeight.select.js
  39. 47
      designer-base/src/test/resources/com/fr/design/ui/script/js/common/usetoolbar.js
  40. 30
      designer-base/src/test/resources/com/fr/design/ui/script/js/enum.js
  41. 53
      designer-base/src/test/resources/com/fr/design/ui/script/js/i18n.js
  42. 1
      designer-base/src/test/resources/com/fr/design/ui/script/js/index.less
  43. 59
      designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/card/data.analysis.js
  44. 69
      designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/card/form.page.js
  45. 66
      designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/card/page.preview.js
  46. 33
      designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/reportserver.constants.js
  47. 50
      designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/reportserver.js
  48. 64
      designer-base/src/test/resources/com/fr/design/ui/script/js/templatewebproperties/card/form.page.js
  49. 73
      designer-base/src/test/resources/com/fr/design/ui/script/js/templatewebproperties/card/page.preview.js
  50. 69
      designer-base/src/test/resources/com/fr/design/ui/script/js/templatewebproperties/templateweb.constants.js
  51. 48
      designer-base/src/test/resources/com/fr/design/ui/script/js/templatewebproperties/templateweb.js
  52. 12
      designer-base/src/test/resources/com/fr/design/ui/script/report.css
  53. 1328
      designer-base/src/test/resources/com/fr/design/ui/script/report.js
  54. 57
      designer-base/src/test/resources/com/fr/design/ui/script/start.js
  55. 12
      designer-base/src/test/resources/com/fr/design/ui/script/template.css
  56. 1328
      designer-base/src/test/resources/com/fr/design/ui/script/template.js
  57. 2
      designer-chart/src/main/java/com/fr/van/chart/map/server/ChartMapEditorAction.java
  58. 38
      designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java

2
designer-base/src/main/java/com/fr/design/DesignerEnvManager.java

@ -177,6 +177,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
public static DesignerEnvManager getEnvManager(boolean needCheckEnv) { public static DesignerEnvManager getEnvManager(boolean needCheckEnv) {
if (designerEnvManager == null) { if (designerEnvManager == null) {
designerEnvManager = new DesignerEnvManager(); designerEnvManager = new DesignerEnvManager();
//REPORT-15332有一个国际化调用比较早,需要在这边就设置好locale,由于后台GeneralContext默认是China
GeneralContext.setLocale(designerEnvManager.getLanguage());
try { try {
XMLTools.readFileXML(designerEnvManager, designerEnvManager.getDesignerEnvFile()); XMLTools.readFileXML(designerEnvManager, designerEnvManager.getDesignerEnvFile());
} catch (Exception e) { } catch (Exception e) {

67
designer-base/src/main/java/com/fr/design/actions/help/FineUIAction.java

@ -0,0 +1,67 @@
package com.fr.design.actions.help;
import com.fr.design.actions.UpdateAction;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.ui.ModernUIPane;
import com.fr.locale.InterProviderFactory;
import com.fr.web.struct.AssembleComponent;
import com.fr.web.struct.Atom;
import com.fr.web.struct.browser.RequestClient;
import com.fr.web.struct.category.ScriptPath;
import com.fr.web.struct.impl.FineUI;
import java.awt.event.ActionEvent;
/**
* @author richie
* @version 10.0
* Created by richie on 2019-03-08
*/
public class FineUIAction extends UpdateAction {
public FineUIAction() {
setName("FineUI");
}
@Override
public void actionPerformed(final ActionEvent e) {
ModernUIPane<?> pane = new ModernUIPane.Builder<>()
// .prepare(new ScriptContextAdapter() {
// @Override
// public void onScriptContextCreated(ScriptContextEvent event) {
// JSValue pool = event.getBrowser().executeJavaScriptAndReturnValue("window.Pool");
// pool.asObject().setProperty("i18n", new I18n());
// }
// })
.withComponent(new AssembleComponent() {
@Override
public ScriptPath script(RequestClient req) {
return ScriptPath.build("/com/fr/design/ui/help/demo.js");
}
@Override
public Atom[] refer() {
return new Atom[] {FineUI.KEY};
}
})
.build();
BasicDialog dialog = pane.showLargeWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() {
@Override
public void doOk() {
}
});
dialog.setVisible(true);
}
public static class I18n {
public String i18nText(String key) {
return InterProviderFactory.getProvider().getLocText(key);
}
}
}

3
designer-base/src/main/java/com/fr/design/gui/controlpane/JControlUpdatePane.java

@ -60,7 +60,8 @@ class JControlUpdatePane extends JPanel {
elEditing = el; elEditing = el;
NameableCreator[] creators = listControlPane.creators(); NameableCreator[] creators = listControlPane.creators();
for (int i = 0, len = updatePanes.length; i < len; i++) { //倒序的原因是为了让一些继承内置连接类的插件实现能够生效REPORT-15409
for (int i = updatePanes.length - 1; i > -1; i--) {
Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper); Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper);
if (ob2Populate != null) { if (ob2Populate != null) {
if (updatePanes[i] == null) { if (updatePanes[i] == null) {

6
designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java

@ -599,7 +599,11 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
editingFILE = fileChooser.getSelectedFILE(); editingFILE = fileChooser.getSelectedFILE();
} }
boolean lockedTarget = WorkContext.getCurrent().get(TplOperator.class).saveAs(editingFILE.getPath()); boolean lockedTarget =
// 目标本地文件
!editingFILE.isEnvFile() ||
// 目标远程文件
WorkContext.getCurrent().get(TplOperator.class).saveAs(editingFILE.getPath());
if (lockedTarget) { if (lockedTarget) {
boolean saved = saveNewFile(editingFILE, oldName); boolean saved = saveNewFile(editingFILE, oldName);
// 目标文件保存成功并且源文件不一致的情况下,把源文件锁释放掉 // 目标文件保存成功并且源文件不一致的情况下,把源文件锁释放掉

9
designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java

@ -6,6 +6,7 @@ package com.fr.design.mainframe.toolbar;
import com.fr.base.FRContext; import com.fr.base.FRContext;
import com.fr.base.vcs.DesignerMode; import com.fr.base.vcs.DesignerMode;
import com.fr.design.DesignState; import com.fr.design.DesignState;
import com.fr.design.DesignerEnvManager;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.UpdateAction; import com.fr.design.actions.UpdateAction;
import com.fr.design.actions.community.BBSAction; import com.fr.design.actions.community.BBSAction;
@ -24,6 +25,7 @@ import com.fr.design.actions.file.OpenTemplateAction;
import com.fr.design.actions.file.PreferenceAction; import com.fr.design.actions.file.PreferenceAction;
import com.fr.design.actions.file.SwitchExistEnv; import com.fr.design.actions.file.SwitchExistEnv;
import com.fr.design.actions.help.AboutAction; import com.fr.design.actions.help.AboutAction;
import com.fr.design.actions.help.FineUIAction;
import com.fr.design.actions.help.TutorialAction; import com.fr.design.actions.help.TutorialAction;
import com.fr.design.actions.help.WebDemoAction; import com.fr.design.actions.help.WebDemoAction;
import com.fr.design.actions.help.alphafine.AlphaFineAction; import com.fr.design.actions.help.alphafine.AlphaFineAction;
@ -499,9 +501,14 @@ public abstract class ToolBarMenuDock {
if (AlphaFineConfigManager.isALPHALicAvailable()) { if (AlphaFineConfigManager.isALPHALicAvailable()) {
shortCuts.add(new AlphaFineAction()); shortCuts.add(new AlphaFineAction());
} }
shortCuts.add(SeparatorDef.DEFAULT); shortCuts.add(SeparatorDef.DEFAULT);
if (DesignerEnvManager.getEnvManager().isOpenDebug()) {
shortCuts.add(new FineUIAction());
}
shortCuts.add(new AboutAction()); shortCuts.add(new AboutAction());
return shortCuts.toArray(new ShortCut[shortCuts.size()]);
return shortCuts.toArray(new ShortCut[0]);
} }
/** /**

16
designer-base/src/main/java/com/fr/design/ui/ModernUIAssist.java → designer-base/src/main/java/com/fr/design/ui/Assistant.java

@ -1,5 +1,9 @@
package com.fr.design.ui; package com.fr.design.ui;
import com.fr.stable.StringUtils;
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserContext;
import com.teamdev.jxbrowser.chromium.ProtocolService;
import com.teamdev.jxbrowser.chromium.URLResponse; import com.teamdev.jxbrowser.chromium.URLResponse;
import java.io.DataInputStream; import java.io.DataInputStream;
@ -10,7 +14,7 @@ import java.io.InputStream;
* @version 10.0 * @version 10.0
* Created by richie on 2019-03-07 * Created by richie on 2019-03-07
*/ */
public class ModernUIAssist { public class Assistant {
public static URLResponse inputStream2Response(InputStream inputStream, String filePath) throws Exception { public static URLResponse inputStream2Response(InputStream inputStream, String filePath) throws Exception {
URLResponse response = new URLResponse(); URLResponse response = new URLResponse();
@ -25,6 +29,9 @@ public class ModernUIAssist {
private static String getMimeType(String path) { private static String getMimeType(String path) {
if (StringUtils.isBlank(path)) {
return "text/html";
}
if (path.endsWith(".html")) { if (path.endsWith(".html")) {
return "text/html"; return "text/html";
} }
@ -36,4 +43,11 @@ public class ModernUIAssist {
} }
return "text/html"; return "text/html";
} }
public static void setEmbProtocolHandler(Browser browser, EmbProtocolHandler handler) {
BrowserContext browserContext = browser.getContext();
ProtocolService protocolService = browserContext.getProtocolService();
// 支持读取jar包中文件的自定义协议————emb:/com/fr/design/images/bbs.png
protocolService.setProtocolHandler("emb", handler);
}
} }

83
designer-base/src/main/java/com/fr/design/ui/EmbProtocolHandler.java

@ -0,0 +1,83 @@
package com.fr.design.ui;
import com.fr.general.IOUtils;
import com.fr.stable.StringUtils;
import com.fr.web.struct.AssembleComponent;
import com.fr.web.struct.AtomBuilder;
import com.fr.web.struct.PathGroup;
import com.fr.web.struct.category.ScriptPath;
import com.fr.web.struct.category.StylePath;
import com.teamdev.jxbrowser.chromium.ProtocolHandler;
import com.teamdev.jxbrowser.chromium.URLRequest;
import com.teamdev.jxbrowser.chromium.URLResponse;
import java.io.InputStream;
/**
* @author richie
* @version 10.0
* Created by richie on 2019-03-07
*/
public class EmbProtocolHandler implements ProtocolHandler {
private AssembleComponent component;
public EmbProtocolHandler() {
}
public EmbProtocolHandler(AssembleComponent component) {
this.component = component;
}
@Override
public URLResponse onRequest(URLRequest req) {
try {
String path = req.getURL();
if (path.startsWith("emb:dynamic")) {
URLResponse response = new URLResponse();
response.setData(htmlText().getBytes());
response.getHeaders().setHeader("Content-Type", "text/html");
return response;
} else {
int index = path.indexOf("=");
if (index > 0) {
path = path.substring(index + 1);
} else {
path = path.substring(4);
}
InputStream inputStream = IOUtils.readResource(path);
return Assistant.inputStream2Response(inputStream, path);
}
} catch (Exception ignore) {
}
return null;
}
private String htmlText() {
PathGroup pathGroup = AtomBuilder.create().buildAssembleFilePath(ModernRequestClient.KEY, component);
StylePath[] stylePaths = pathGroup.toStylePathGroup();
StringBuilder styleText = new StringBuilder();
for (StylePath path : stylePaths) {
if (StringUtils.isNotBlank(path.toFilePath())) {
styleText.append("<link rel=\"stylesheet\" href=\"emb:");
styleText.append(path.toFilePath());
styleText.append("\"/>");
}
}
String result = ModernUIConstants.HTML_TPL.replaceAll("##style##", styleText.toString());
ScriptPath[] scriptPaths = pathGroup.toScriptPathGroup();
StringBuilder scriptText = new StringBuilder();
for (ScriptPath path : scriptPaths) {
if (StringUtils.isNotBlank(path.toFilePath())) {
scriptText.append("<script src=\"emb:");
scriptText.append(path.toFilePath());
scriptText.append("\"></script>");
}
}
result = result.replaceAll("##script##", scriptText.toString());
return result;
}
}

22
designer-base/src/main/java/com/fr/design/ui/ModernRequestClient.java

@ -0,0 +1,22 @@
package com.fr.design.ui;
import com.fr.web.struct.browser.RequestClient;
/**
* @author richie
* @version 10.0
* Created by richie on 2019-03-07
*/
public enum ModernRequestClient implements RequestClient {
KEY;
@Override
public boolean isIE() {
return false;
}
@Override
public boolean isLowIEVersion() {
return false;
}}

13
designer-base/src/main/java/com/fr/design/ui/ModernUIConstants.java

@ -1,5 +1,7 @@
package com.fr.design.ui; package com.fr.design.ui;
import com.fr.general.IOUtils;
/** /**
* @author richie * @author richie
* @version 10.0 * @version 10.0
@ -7,12 +9,7 @@ package com.fr.design.ui;
*/ */
class ModernUIConstants { class ModernUIConstants {
static final String SCRIPT_STRING = "var arr = \"%s\".split(\".\").reverse();\n" + static final String SCRIPT_INIT_NAME_SPACE = IOUtils.readResourceAsString("/com/fr/design/ui/InitNameSpace.js");
"var create = function(obj, names) {\n" +
"var name = names.pop();\n" + static final String HTML_TPL = IOUtils.readResourceAsString("/com/fr/design/ui/tpl.html");
"if (!name) {return;}\n" +
"if (!obj[name]) {obj[name] = {};}\n" +
" create(obj[name], names);\n" +
"}\n" +
"create(window, arr);";
} }

107
designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java

@ -2,15 +2,14 @@ package com.fr.design.ui;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.general.IOUtils; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.i18n.Toolkit;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.web.struct.AssembleComponent;
import com.teamdev.jxbrowser.chromium.Browser; import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserContext;
import com.teamdev.jxbrowser.chromium.BrowserPreferences; import com.teamdev.jxbrowser.chromium.BrowserPreferences;
import com.teamdev.jxbrowser.chromium.JSValue; import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.ProtocolHandler;
import com.teamdev.jxbrowser.chromium.ProtocolService;
import com.teamdev.jxbrowser.chromium.URLRequest;
import com.teamdev.jxbrowser.chromium.URLResponse;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent; import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter; import com.teamdev.jxbrowser.chromium.events.LoadAdapter;
import com.teamdev.jxbrowser.chromium.events.LoadListener; import com.teamdev.jxbrowser.chromium.events.LoadListener;
@ -21,8 +20,8 @@ import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.io.InputStream; import java.awt.event.ActionEvent;
import java.net.URL; import java.awt.event.ActionListener;
/** /**
* @author richie * @author richie
@ -46,17 +45,29 @@ public class ModernUIPane<T> extends BasicPane {
setLayout(new BorderLayout()); setLayout(new BorderLayout());
BrowserPreferences.setChromiumSwitches("--disable-google-traffic"); BrowserPreferences.setChromiumSwitches("--disable-google-traffic");
if (DesignerEnvManager.getEnvManager().isOpenDebug()) { if (DesignerEnvManager.getEnvManager().isOpenDebug()) {
JSplitPane splitPane = new JSplitPane(); UIToolbar toolbar = new UIToolbar();
add(splitPane, BorderLayout.CENTER); add(toolbar, BorderLayout.NORTH);
splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT); UIButton openDebugButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Open_Debug_Window"));
splitPane.setDividerLocation(500); toolbar.add(openDebugButton);
UIButton reloadButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Reload"));
toolbar.add(reloadButton);
openDebugButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showDebuggerDialog();
}
});
reloadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
browser.reloadIgnoringCache();
}
});
BrowserPreferences.setChromiumSwitches("--remote-debugging-port=9222"); BrowserPreferences.setChromiumSwitches("--remote-debugging-port=9222");
initializeBrowser(); initializeBrowser();
splitPane.setLeftComponent(new BrowserView(browser)); add(new BrowserView(browser), BorderLayout.CENTER);
Browser debugger = new Browser();
debugger.loadURL(browser.getRemoteDebuggingURL());
BrowserView debuggerView = new BrowserView(debugger);
splitPane.setRightComponent(debuggerView);
} else { } else {
initializeBrowser(); initializeBrowser();
add(new BrowserView(browser), BorderLayout.CENTER); add(new BrowserView(browser), BorderLayout.CENTER);
@ -64,44 +75,25 @@ public class ModernUIPane<T> extends BasicPane {
} }
} }
private void initializeBrowser() { private void showDebuggerDialog() {
browser = new Browser(); JDialog dialog = new JDialog(SwingUtilities.getWindowAncestor(this));
BrowserContext browserContext = browser.getContext(); Browser debugger = new Browser();
ProtocolService protocolService = browserContext.getProtocolService(); BrowserView debuggerView = new BrowserView(debugger);
// 支持从jar中读取资源文件 dialog.add(debuggerView, BorderLayout.CENTER);
protocolService.setProtocolHandler("jar", new ProtocolHandler() { dialog.setSize(new Dimension(800, 400));
@Override GUICoreUtils.centerWindow(dialog);
public URLResponse onRequest(URLRequest request) { dialog.setVisible(true);
try { dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
String path = request.getURL(); debugger.loadURL(browser.getRemoteDebuggingURL());
URL url = new URL(path);
InputStream inputStream = url.openStream();
return ModernUIAssist.inputStream2Response(inputStream, path);
} catch (Exception ignored) {
}
return null;
} }
});
// 支持读取jar包中文件的自定义协议————emb:/com/fr/design/images/bbs.png
protocolService.setProtocolHandler("emb", new ProtocolHandler() {
@Override
public URLResponse onRequest(URLRequest req) {
try {
String path = req.getURL();
path = path.substring(4);
InputStream inputStream = IOUtils.readResource(path);
return ModernUIAssist.inputStream2Response(inputStream, path);
} catch (Exception ignore) {
} private void initializeBrowser() {
return null; browser = new Browser();
}
});
// 初始化的时候,就把命名空间对象初始化好,确保window.a.b.c("a.b.c"为命名空间)对象都是初始化过的 // 初始化的时候,就把命名空间对象初始化好,确保window.a.b.c("a.b.c"为命名空间)对象都是初始化过的
browser.addScriptContextListener(new ScriptContextAdapter() { browser.addScriptContextListener(new ScriptContextAdapter() {
@Override @Override
public void onScriptContextCreated(ScriptContextEvent event) { public void onScriptContextCreated(ScriptContextEvent event) {
event.getBrowser().executeJavaScript(String.format(ModernUIConstants.SCRIPT_STRING, namespace)); event.getBrowser().executeJavaScript(String.format(ModernUIConstants.SCRIPT_INIT_NAME_SPACE, namespace));
} }
}); });
} }
@ -150,7 +142,8 @@ public class ModernUIPane<T> extends BasicPane {
* 加载jar包中的资源 * 加载jar包中的资源
* @param path 资源路径 * @param path 资源路径
*/ */
public Builder<T> withEMB(String path) { public Builder<T> withEMB(final String path) {
Assistant.setEmbProtocolHandler(pane.browser, new EmbProtocolHandler());
pane.browser.loadURL("emb:" + path); pane.browser.loadURL("emb:" + path);
return this; return this;
} }
@ -159,16 +152,28 @@ public class ModernUIPane<T> extends BasicPane {
* 加载url指向的资源 * 加载url指向的资源
* @param url 文件的地址 * @param url 文件的地址
*/ */
public Builder<T> withURL(String url) { public Builder<T> withURL(final String url) {
Assistant.setEmbProtocolHandler(pane.browser, new EmbProtocolHandler());
pane.browser.loadURL(url); pane.browser.loadURL(url);
return this; return this;
} }
/**
* 加载Atom组件
* @param component Atom组件
*/
public Builder<T> withComponent(AssembleComponent component) {
Assistant.setEmbProtocolHandler(pane.browser, new EmbProtocolHandler(component));
pane.browser.loadURL("emb:dynamic");
return this;
}
/** /**
* 加载html文本内容 * 加载html文本内容
* @param html 要加载html文本内容 * @param html 要加载html文本内容
*/ */
public Builder<T> withHTML(String html) { public Builder<T> withHTML(String html) {
Assistant.setEmbProtocolHandler(pane.browser, new EmbProtocolHandler());
pane.browser.loadHTML(html); pane.browser.loadHTML(html);
return this; return this;
} }

26
designer-base/src/main/java/com/fr/file/FileNodeFILE.java

@ -7,6 +7,9 @@ import com.fr.design.file.NodeAuthProcessor;
import com.fr.design.gui.itree.filetree.FileNodeComparator; import com.fr.design.gui.itree.filetree.FileNodeComparator;
import com.fr.design.gui.itree.filetree.FileTreeIcon; import com.fr.design.gui.itree.filetree.FileTreeIcon;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.event.Event;
import com.fr.event.EventDispatcher;
import com.fr.event.Listener;
import com.fr.file.filetree.FileNode; import com.fr.file.filetree.FileNode;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.io.EncryptUtils; import com.fr.io.EncryptUtils;
@ -15,6 +18,8 @@ import com.fr.stable.CoreConstants;
import com.fr.stable.StableUtils; import com.fr.stable.StableUtils;
import com.fr.stable.project.ProjectConstants; import com.fr.stable.project.ProjectConstants;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.Workspace;
import com.fr.workspace.WorkspaceEvent;
import com.fr.workspace.resource.WorkResourceTempRenameStream; import com.fr.workspace.resource.WorkResourceTempRenameStream;
import com.fr.workspace.server.lock.TplOperator; import com.fr.workspace.server.lock.TplOperator;
@ -26,6 +31,21 @@ import java.util.Arrays;
public class FileNodeFILE implements FILE { public class FileNodeFILE implements FILE {
private static String webRootPath = FRContext.getCommonOperator().getWebRootPath();
private static String[] supportTypes = FRContext.getFileNodes().getSupportedTypes();
static {
EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener<Workspace>() {
@Override
public void on(Event event, Workspace workspace) {
webRootPath = FRContext.getCommonOperator().getWebRootPath();
supportTypes = FRContext.getFileNodes().getSupportedTypes();
}
});
}
private FileNode node; private FileNode node;
//记录下FILE对应的运行环境,每次创建都设置下当前的运行环境 //记录下FILE对应的运行环境,每次创建都设置下当前的运行环境
@ -95,7 +115,7 @@ public class FileNodeFILE implements FILE {
@Override @Override
public String prefix() { public String prefix() {
if (ComparatorUtils.equals(getEnvPath(), FRContext.getCommonOperator().getWebRootPath())) { if (ComparatorUtils.equals(getEnvPath(), webRootPath)) {
return FILEFactory.WEBREPORT_PREFIX; return FILEFactory.WEBREPORT_PREFIX;
} }
return FILEFactory.ENV_PREFIX; return FILEFactory.ENV_PREFIX;
@ -212,7 +232,7 @@ public class FileNodeFILE implements FILE {
try { try {
FileNode[] nodeArray; FileNode[] nodeArray;
nodeArray = listFile(node.getEnvPath()); nodeArray = listFile(node.getEnvPath());
Arrays.sort(nodeArray, new FileNodeComparator(FRContext.getFileNodes().getSupportedTypes())); Arrays.sort(nodeArray, new FileNodeComparator(supportTypes));
return fileNodeArray2FILEArray(nodeArray, envPath); return fileNodeArray2FILEArray(nodeArray, envPath);
} catch (Exception e) { } catch (Exception e) {
@ -235,7 +255,7 @@ public class FileNodeFILE implements FILE {
private FileNode[] listFile(String rootFilePath) { private FileNode[] listFile(String rootFilePath) {
try { try {
if (ComparatorUtils.equals(envPath, FRContext.getCommonOperator().getWebRootPath())) { if (ComparatorUtils.equals(envPath, webRootPath)) {
return FRContext.getFileNodes().listWebRootFile(rootFilePath); return FRContext.getFileNodes().listWebRootFile(rootFilePath);
} else { } else {
return FRContext.getFileNodes().list(rootFilePath); return FRContext.getFileNodes().list(rootFilePath);

12
designer-base/src/main/resources/com/fr/design/ui/InitNameSpace.js

@ -0,0 +1,12 @@
var arr ="%s".split(".").reverse();
var create = function (obj, names) {
var name = names.pop();
if (!name) {
return;
}
if (!obj[name]) {
obj[name] = {};
}
create(obj[name], names);
};
create(window, arr);

8
designer-base/src/main/resources/com/fr/design/ui/InsertScript.js

@ -0,0 +1,8 @@
var arr = "%s".split(",");
var header = document.getElementsByTagName("head")[0];
arr.forEach(function(el) {
var script = document.createElement("script")
script.type = "text/javascript";
script.src = "emb:" + el;
header.appendChild(script);
});

9
designer-base/src/main/resources/com/fr/design/ui/InsertStyle.js

@ -0,0 +1,9 @@
var arr = "%s".split(",");
var header = document.getElementsByTagName("head")[0];
arr.forEach(function(el) {
var css = document.createElement("link");
css.type = "text/css";
css.rel = "stylesheet";
css.href = "emb:" + el;
header.appendChild(css);
});

220
designer-base/src/main/resources/com/fr/design/ui/help/demo.js

@ -0,0 +1,220 @@
window.addEventListener("load", function (ev) {
window.BI.i18nText = function(key) {return window.Pool.i18n.i18nText(key);}
var combo1 = BI.createWidget({
type: "bi.vertical",
items: [
{
type: "bi.text_value_combo",
text: "选项1",
width: 300,
items: [
{
el: {
type: "bi.single_select_radio_item",
width: 290,
text: "选项1",
value: 1
},
text: "选项1",
value: 1,
lgap: 10
},
{
el: {
type: "bi.single_select_radio_item",
width: 290,
text: "选项2",
value: 2
},
lgap: 10,
text: "选项2",
value: 2
},
{
el: {
type: "bi.single_select_radio_item",
width: 290,
text: "选项3",
value: 3
},
lgap: 10,
text: "选项3",
value: 3
}
]
}
]
});
var date = BI.createWidget({
type: "bi.left",
items: [{
el: {
type: "bi.date_time_combo",
value: {
year: 2018,
month: 9,
day: 28,
hour: 13,
minute: 31,
second: 1
}
}
}]
});
var comboTree = BI.createWidget({
type: "bi.vertical",
items: [
{
type: "bi.tree_value_chooser_combo",
width: 300,
itemsCreator: function(op, callback) {
callback([
{
id: 1,
text: "第1项",
value: "1"
},
{
id: 2,
text: "第2项",
value: "2"
},
{
id: 3,
text: "第3项",
value: "3",
open: true
},
{
id: 11,
pId: 1,
text: "子项1",
value: "11"
},
{
id: 12,
pId: 1,
text: "子项2",
value: "12"
},
{
id: 13,
pId: 1,
text: "子项3",
value: "13"
},
{
id: 31,
pId: 3,
text: "子项1",
value: "31"
},
{
id: 32,
pId: 3,
text: "子项2",
value: "32"
},
{
id: 33,
pId: 3,
text: "子项3",
value: "33"
}
]);
}
}
]
});
var color = BI.createWidget({
type: "bi.left",
items: [{
type: "bi.simple_color_chooser",
width: 24,
height: 24
}, {
el: {
type: "bi.color_chooser",
width: 230,
height: 24
},
lgap: 10
}]
});
var Slider = BI.inherit(BI.Widget, {
props: {
width: 300,
height: 50,
min: 0,
max: 100
},
mounted: function() {
var o = this.options;
this.singleSliderInterval.setMinAndMax({
min: o.min,
max: o.max
});
this.singleSliderInterval.setValue({
min: 10,
max: 80
});
this.singleSliderInterval.populate();
},
render: function() {
var self = this,
o = this.options;
return {
type: "bi.vertical",
element: this,
items: [
{
type: "bi.interval_slider",
digit: 0,
width: o.width,
height: o.height,
ref: function(_ref) {
self.singleSliderInterval = _ref;
}
}
]
};
}
});
BI.shortcut("demo.slider_interval", Slider);
var slider = BI.createWidget({
type: "demo.slider_interval"
});
BI.createWidget({
type:"bi.absolute",
element: "body",
items: [{
el: combo1,
left: 100,
top: 100
}, {
el : date,
left: 100,
top : 150
}, {
el : comboTree,
left : 100,
top : 200
}, {
el : color,
left : 100,
top : 250
}, {
el : slider,
left : 400,
top : 100
}]
});
});

12
designer-base/src/main/resources/com/fr/design/ui/tpl.html

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
##style##
##script##
</head>
<body>
</body>
</html>

28
designer-base/src/test/java/com/fr/design/ui/FineUIDemo.java

@ -0,0 +1,28 @@
package com.fr.design.ui;
import com.fr.design.DesignerEnvManager;
import javax.swing.*;
import java.awt.*;
/**
* @author richie
* @version 10.0
* Created by richie on 2019-03-07
*/
public class FineUIDemo {
public static void main(String... args) {
final JFrame frame = new JFrame();
frame.setSize(1200, 800);
JPanel contentPane = (JPanel) frame.getContentPane();
// 是否需要开启调试窗口
DesignerEnvManager.getEnvManager().setOpenDebug(true);
final ModernUIPane<ModernUIPaneTest.Model> pane = new ModernUIPane.Builder<ModernUIPaneTest.Model>()
.withComponent(StartComponent.KEY).build();
contentPane.add(pane, BorderLayout.CENTER);
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}

1
designer-base/src/test/java/com/fr/design/ui/ModernUIPaneTest.java

@ -1,7 +1,6 @@
package com.fr.design.ui; package com.fr.design.ui;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.general.IOUtils;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;

32
designer-base/src/test/java/com/fr/design/ui/StartComponent.java

@ -0,0 +1,32 @@
package com.fr.design.ui;
import com.fr.web.struct.AssembleComponent;
import com.fr.web.struct.Atom;
import com.fr.web.struct.browser.RequestClient;
import com.fr.web.struct.category.ScriptPath;
import com.fr.web.struct.impl.FineUI;
/**
* @author richie
* @version 10.0
* Created by richie on 2019-03-08
*/
public class StartComponent extends AssembleComponent {
public static final StartComponent KEY = new StartComponent();
private StartComponent() {
}
@Override
public ScriptPath script(RequestClient req) {
return ScriptPath.build("/com/fr/design/ui/script/start.js");
}
@Override
public Atom[] refer() {
return new Atom[] {FineUI.KEY};
}
}

40
designer-base/src/test/java/com/fr/design/ui/report/ReportServerParamComponent.java

@ -0,0 +1,40 @@
package com.fr.design.ui.report;
import com.fr.web.struct.AssembleComponent;
import com.fr.web.struct.Atom;
import com.fr.web.struct.browser.RequestClient;
import com.fr.web.struct.category.ParserType;
import com.fr.web.struct.category.ScriptPath;
import com.fr.web.struct.category.StylePath;
import com.fr.web.struct.impl.FineUI;
/**
* Created by windy on 2019/3/25.
* 报表服务器参数demo使用
*/
public class ReportServerParamComponent extends AssembleComponent {
public static final ReportServerParamComponent KEY = new ReportServerParamComponent();
private ReportServerParamComponent() {
}
@Override
public Atom[] refer() {
return new Atom[] {
FineUI.KEY
};
}
@Override
public ScriptPath script(RequestClient req) {
return ScriptPath.build("/com/fr/design/ui/script/report.js");
}
@Override
public StylePath style() {
return StylePath.build("/com/fr/design/ui/script/report.css", ParserType.DYNAMIC);
}
}

29
designer-base/src/test/java/com/fr/design/ui/report/ReportServerParamDemo.java

@ -0,0 +1,29 @@
package com.fr.design.ui.report;
import com.fr.design.DesignerEnvManager;
import com.fr.design.ui.ModernUIPane;
import com.fr.design.ui.ModernUIPaneTest;
import javax.swing.*;
import java.awt.*;
/**
* Created by windy on 2019/3/25.
* 报表服务器参数demo
*/
public class ReportServerParamDemo {
public static void main(String... args) {
final JFrame frame = new JFrame();
frame.setSize(660, 600);
JPanel contentPane = (JPanel) frame.getContentPane();
// 是否需要开启调试窗口
DesignerEnvManager.getEnvManager().setOpenDebug(true);
final ModernUIPane<ModernUIPaneTest.Model> pane = new ModernUIPane.Builder<ModernUIPaneTest.Model>()
.withComponent(ReportServerParamComponent.KEY).build();
contentPane.add(pane, BorderLayout.CENTER);
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}

40
designer-base/src/test/java/com/fr/design/ui/report/TemplateWebSettingComponent.java

@ -0,0 +1,40 @@
package com.fr.design.ui.report;
import com.fr.web.struct.AssembleComponent;
import com.fr.web.struct.Atom;
import com.fr.web.struct.browser.RequestClient;
import com.fr.web.struct.category.ParserType;
import com.fr.web.struct.category.ScriptPath;
import com.fr.web.struct.category.StylePath;
import com.fr.web.struct.impl.FineUI;
/**
* Created by windy on 2019/3/26.
* 模板Web属性demo使用
*/
public class TemplateWebSettingComponent extends AssembleComponent {
public static final TemplateWebSettingComponent KEY = new TemplateWebSettingComponent();
private TemplateWebSettingComponent() {
}
@Override
public Atom[] refer() {
return new Atom[] {
FineUI.KEY
};
}
@Override
public ScriptPath script(RequestClient req) {
return ScriptPath.build("/com/fr/design/ui/script/template.js");
}
@Override
public StylePath style() {
return StylePath.build("/com/fr/design/ui/script/template.css", ParserType.DYNAMIC);
}
}

28
designer-base/src/test/java/com/fr/design/ui/report/TemplateWebSettingDemo.java

@ -0,0 +1,28 @@
package com.fr.design.ui.report;
import com.fr.design.DesignerEnvManager;
import com.fr.design.ui.ModernUIPane;
import com.fr.design.ui.ModernUIPaneTest;
import javax.swing.*;
import java.awt.*;
/**
* Created by windy on 2019/3/26.
* 模板Web属性demo
*/
public class TemplateWebSettingDemo {
public static void main(String... args) {
final JFrame frame = new JFrame();
frame.setSize(660, 600);
JPanel contentPane = (JPanel) frame.getContentPane();
// 是否需要开启调试窗口
DesignerEnvManager.getEnvManager().setOpenDebug(true);
final ModernUIPane<ModernUIPaneTest.Model> pane = new ModernUIPane.Builder<ModernUIPaneTest.Model>()
.withComponent(TemplateWebSettingComponent.KEY).build();
contentPane.add(pane, BorderLayout.CENTER);
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}

11
designer-base/src/test/resources/com/fr/design/ui/fineui.html

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="emb:/com/fr/web/ui/fineui.min.css"/>
<script src="emb:/com/fr/web/ui/fineui.min.js"/>
</head>
<body>
</body>
</html>

12
designer-base/src/test/resources/com/fr/design/ui/script/css/js/common/settingtab/settingtab.css

@ -0,0 +1,12 @@
.bi-setting-tab .tab-group {
background-color: #F2F4F7;
font-size: 12px;
}
.bi-setting-tab .tab-group .tab-item:hover {
color: #3685f2;
}
.bi-setting-tab .tab-group .tab-item.active {
background-color: #ffffff;
color: #3685f2;
border-top: 3px solid #3685f2;
}

0
designer-base/src/test/resources/com/fr/design/ui/script/css/js/index.css

41
designer-base/src/test/resources/com/fr/design/ui/script/js/common/bar.container.js

@ -0,0 +1,41 @@
!(function(){
/**
* 带确定取消的通用控件
*/
var Bar = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-settings-bar-container",
el: {
}
},
render: function() {
return {
type: "bi.vtape",
items: [this.options.el, {
type: "bi.right_vertical_adapt",
height: 24,
rgap: 10,
vgap: 10,
items: [{
type: "bi.button",
level: "ignore",
text: BI.i18nText("Fine-Design_Report_OK"),
handler: function() {
}
}, {
type: "bi.button",
level: "ignore",
text: BI.i18nText("Fine-Design_Basic_Engine_Cancel"),
handler: function() {
}
}]
}]
}
}
})
BI.shortcut("bi.settings.bar_container", Bar)
})();

89
designer-base/src/test/resources/com/fr/design/ui/script/js/common/edit.list.js

@ -0,0 +1,89 @@
!(function () {
/**
* 事件设置
*/
var List = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-edit-list"
},
render: function () {
var self = this;
return {
type: "bi.vtape",
vgap: 5,
items: [{
type: "bi.vertical_adapt",
height: 24,
items: [{
type: "bi.icon_button",
cls: "text-add-tip-font",
width: 24,
height: 24,
handler: function() {
self.group.addItems([self._createItem()])
}
}, {
type: "bi.icon_button",
cls: "close-font",
width: 24,
height: 24,
handler: function() {
self.group.removeItemAt();
}
}, {
type: "bi.icon_button",
cls: "close-font",
width: 24,
height: 24,
handler: function() {
self.removeItemAt(self._getIndexOfItemValue(self.group.getValue()))
}
}]
}, {
type: "bi.button_group",
cls: "bi-border bi-card",
ref: function(_ref) {
self.group = _ref;
},
items: []
}]
};
},
_getIndexOfItemValue: function(values) {
values = BI.isArray(values) ? values : [values];
var indexes = [];
BI.each(this.group.getAllButtons(), function(idx, button){
if(BI.contains(values, button.getValue())) {
indexes.push(idx);
}
});
return indexes;
},
_createItem: function() {
return {
type: "bi.text_button",
textAlign: "left",
hgap: 10,
text: "选项" + this.group.getAllButtons().length,
cls: "bi-list-item-select",
value: BI.UUID()
};
},
populate: function(items) {
this.group.populate(items);
},
addItems: function(items) {
},
removeItemAt: function(indexes) {
this.group.removeItemAt(indexes);
}
});
BI.shortcut("bi.report.server.param_setting.edit_list", List);
})();

33
designer-base/src/test/resources/com/fr/design/ui/script/js/common/form.rowbackground.setting.js

@ -0,0 +1,33 @@
!(function () {
/**
* 填报当前编辑行背景设置相关
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-form-background-setting"
},
render: function () {
var self = this, o = this.options;
return {
type: "bi.vertical_adapt",
items: [{
type: "bi.multi_select_item",
logic: {
dynamic: true
},
iconWrapperWidth: 16,
text: BI.i18nText("Fine-Design_Report_Set_Face_Write_Current_Edit_Row_Background")
}, {
el: {
type: "bi.color_chooser",
width: 24,
height: 24
},
lgap: 10
}]
};
}
});
BI.shortcut("bi.report.form_background_setting", Analysis);
})();

54
designer-base/src/test/resources/com/fr/design/ui/script/js/common/globalsingle.combo.js

@ -0,0 +1,54 @@
!(function () {
/**
*
* 为模板单独设置的相关项
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-global-or-single-combo",
value: 1
},
render: function () {
var self = this, o = this.options;
return {
type: "bi.vertical_adapt",
rgap: 10,
height: 24,
items: [{
type: "bi.label",
text: BI.i18nText("Fine-Design_Report_Blow_Set")
}, {
type: "bi.text_value_combo",
width: 200,
ref: function(_ref) {
self.combo = _ref;
},
value: o.value,
items: [{
text: BI.i18nText("Fine-Design_Report_I_Want_To_Set_Single"),
value: 1
}, {
text: BI.i18nText("Fine-Design_Form_Using_Server_Report_View_Settings"),
value: 2
}],
listerners: [{
eventName: "EVENT_CHANGE",
action: function() {
}
}]
}]
};
},
getValue: function() {
return self.combo.getValue();
},
setValue: function(v) {
this.combo.setValue(v);
}
});
BI.shortcut("bi.report.global_or_single_combo", Analysis);
})();

53
designer-base/src/test/resources/com/fr/design/ui/script/js/common/leavesetting.js

@ -0,0 +1,53 @@
!(function () {
/**
* 离开提示/直接显示控件/自动暂存相关
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-leave-setting",
value: [1]
},
render: function () {
var self = this, o = this.options;
return {
type: "bi.button_group",
value: o.value,
items: BI.createItems([{
text: BI.i18nText("Fine-Design_Report_Unload_Check"),
value: 1
}, {
text: BI.i18nText("Fine-Design_Basic_Engine_Event_Show_Widgets"),
value: 2
}, {
text: BI.i18nText("Fine-Design_Report_Write_Auto_Stash"),
value: 3
}], {
type: "bi.multi_select_item",
hgap: 5,
logic: {
dynamic: true
},
iconWrapperWidth: 16
}),
chooseType: BI.Selection.Multi,
layouts: [{
type: "bi.vertical_adapt",
rgap: 5
}],
ref: function(_ref) {
self.group = _ref;
}
};
},
getValue: function() {
return self.group.getValue();
},
setValue: function(v) {
this.group.setValue(v);
}
});
BI.shortcut("bi.report.leave_setting", Analysis);
})();

53
designer-base/src/test/resources/com/fr/design/ui/script/js/common/reportshow.location.js

@ -0,0 +1,53 @@
!(function () {
/**
* 报表显示位置相关
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-report-show-location"
},
render: function () {
var self = this, o = this.options;
return {
type: "bi.vertical_adapt",
height: 24,
items: [{
type: "bi.label",
text: BI.i18nText("Fine-Design_Report_Show_Location")
}, {
type: "bi.button_group",
ref: function(_ref) {
self.group = _ref;
},
value: 2,
items: BI.createItems([{
text: BI.i18nText("Fine-Design_Report_Center_Display"),
value: 1
}, {
text: BI.i18nText("Fine-Design_Report_Left_Display"),
value: 2
}], {
type: "bi.single_select_radio_item",
logic: {
dynamic: true
}
}),
layouts: [{
type: "bi.left",
lgap: 10
}]
}]
};
},
getValue: function() {
return self.group.getValue();
},
setValue: function(v) {
this.group.setValue(v);
}
});
BI.shortcut("bi.report.server.param_setting.report_show_location", Analysis);
})();

59
designer-base/src/test/resources/com/fr/design/ui/script/js/common/settingtab/settingtab.js

@ -0,0 +1,59 @@
!(function () {
var Tab = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-setting-tab",
value: "",
tabItems: [],
cardCreator: BI.emptyFn
},
render: function () {
var self = this, o = this.options;
return {
type: "bi.vtape",
items: [{
type: "bi.vertical_adapt",
cls: "tab-group",
items: [{
type: "bi.button_group",
layouts: [{
type: "bi.left"
}],
value: o.value,
items: BI.map(o.tabItems, function(idx, item){
return {
el: BI.extend({
type: "bi.text_button",
hgap: 10,
height: 24
}, item)
};
}),
listeners: [{
eventName: BI.ButtonGroup.EVENT_CHANGE,
action: function (v) {
self.tableTab.setSelect(v);
}
}],
ref: function (_ref) {
// self.buttons = _ref;
}
}],
height: 24
}, {
type: "bi.tab",
cls: "bi-card",
showIndex: o.value,
cardCreator: this.options.cardCreator,
ref: function (ref) {
self.tableTab = ref;
}
}]
};
}
});
BI.shortcut("bi.setting.tab", Tab);
})();

17
designer-base/src/test/resources/com/fr/design/ui/script/js/common/settingtab/settingtab.less

@ -0,0 +1,17 @@
@import "../../index.less";
.bi-setting-tab {
& .tab-group {
background-color: @color-bi-background-light-gray;
font-size: @font-size-12;
& .tab-item {
&:hover {
color: @color-bi-text-highlight;
}
&.active {
background-color: @color-bi-background-default;
color: @color-bi-text-highlight;
border-top: 3px solid @color-bi-text-highlight;
}
}
}
}

53
designer-base/src/test/resources/com/fr/design/ui/script/js/common/sheetlabel.position.js

@ -0,0 +1,53 @@
!(function () {
/**
* sheet标签页显示位置
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-report-show-location"
},
render: function () {
var self = this, o = this.options;
return {
type: "bi.vertical_adapt",
height: 24,
items: [{
type: "bi.label",
text: BI.i18nText("Fine-Design_Report_Sheet_Label_Page_Display_Position")
}, {
type: "bi.button_group",
ref: function(_ref) {
self.group = _ref;
},
value: 2,
items: BI.createItems([{
text: BI.i18nText("Fine-Design_Form_Base_Top"),
value: 1
}, {
text: BI.i18nText("Fine-Design_Report_Bottom"),
value: 2
}], {
type: "bi.single_select_radio_item",
logic: {
dynamic: true
}
}),
layouts: [{
type: "bi.left",
lgap: 10
}]
}]
};
},
getValue: function() {
return self.group.getValue();
},
setValue: function(v) {
this.group.setValue(v);
}
});
BI.shortcut("bi.report.sheet_label_location", Analysis);
})();

126
designer-base/src/test/resources/com/fr/design/ui/script/js/common/toobar/toobar.js

@ -0,0 +1,126 @@
!(function(){
var ToolBar = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-settings-tool-bar",
value: [1]
},
render: function() {
var self = this, o = this.options;
return {
type: "bi.vertical",
items: [{
type: "bi.left_right_vertical_adapt",
height: 24,
bgap: 15,
rhgap: 10,
items: {
left: [{
type: "bi.label",
text: BI.i18nText("Fine-Design_Report_Mobile_ToolBar"),
width: 70,
textAlign: "left"
}, {
type: "bi.button_group",
value: o.value,
chooseType: BI.Selection.Multi,
items: BI.createItems([{
text: BI.i18nText("Fine-Design_Report_ToolBar_Top"),
value: 1,
listeners: [{
eventName: "EVENT_CHANGE",
action: function() {
if(this.isSelected()) {
self._populateDefault();
} else {
self.topRegion.populate();
}
}
}]
}, {
text: BI.i18nText("Fine-Design_Report_ToolBar_Bottom"),
value: 2
}], {
type: "bi.multi_select_item",
hgap: 5,
logic: {
dynamic: true
},
iconWrapperWidth: 16
}),
ref: function(_ref) {
self.group = _ref;
},
layouts: [{
type: "bi.left"
}],
listeners: [{
eventName: "EVENT_CHANGE",
action: function() {
}
}]
}],
right: [{
el: {
type: "bi.text_button",
cls: "bi-border",
text: BI.i18nText("Fine-Design_Basic_Scale_Custom_Button"),
handler: function() {
},
hgap: 5
}
}, {
el: {
type: "bi.text_button",
cls: "bi-border",
text: BI.i18nText("Fine-Design_Report_Restore_Default"),
handler: function() {
},
hgap: 5
}
}]
}
}, {
el: {
type: "bi.settings.tool_bar.region",
height: 56,
title: BI.i18nText("Fine-Design_Report_ToolBar_Top"),
ref: function(_ref) {
self.topRegion = _ref;
},
items: BI.contains(o.value, 1) ? this._createDefaultItems() : []
},
bgap: 20
}, {
type: "bi.settings.tool_bar.region",
height: 56,
title: BI.i18nText("Fine-Design_Report_ToolBar_Bottom"),
ref: function(_ref) {
self.bottomRegion = _ref;
}
}]
}
},
_createDefaultItems: function() {
return BI.createItems(BI.Constants.getConstant("bi.constant.report.template.web_setting.tools"), {
type: "bi.icon_text_item",
height: 24,
extraCls: "bi-background bi-list-item-select bi-border-radius",
logic: {
dynamic: true
},
textHgap: 10,
value: BI.UUID()
})
},
_populateDefault: function() {
this.topRegion.populate(this._createDefaultItems());
}
})
BI.shortcut("bi.settings.tool_bar", ToolBar)
})();

42
designer-base/src/test/resources/com/fr/design/ui/script/js/common/toobar/toolbar.region.js

@ -0,0 +1,42 @@
!(function(){
var Region = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-settings-tool-bar-region",
title: ""
},
render: function() {
var self = this, o = this.options;
return [{
type: "bi.button_group",
cls: "bi-border",
items: o.items,
chooseType: BI.Selection.Multi,
layouts: [{
type: "bi.vertical_adapt",
hgap: 10
}],
ref: function(_ref) {
self.group = _ref;
}
}, {
type: "bi.absolute",
items: [{
el: {
type: "bi.label",
cls: "bi-background",
text: o.title
},
top: -10,
left: 10
}]
}]
},
populate: function(items) {
this.group.populate(items);
}
})
BI.shortcut("bi.settings.tool_bar.region", Region);
})();

67
designer-base/src/test/resources/com/fr/design/ui/script/js/common/toolbarHeight.select.js

@ -0,0 +1,67 @@
!(function () {
/**
* 工具栏高度相关
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-tool-bar-height-select",
height: 24,
value: 2
},
render: function () {
var self = this, o = this.options;
return {
type: "bi.vertical_adapt",
height: 24,
items: [{
el: {
type: "bi.label",
text: BI.i18nText("Fine-Design_Report_Mobile_ToolBar_Height")
},
rgap: 10
}, {
type: "bi.button_group",
value: o.value,
ref: function(_ref) {
self.group = _ref;
},
items: BI.createItems([{
text: BI.i18nText("Fine-Design_Report_Tool_Bar_High"),
value: 1
}, {
text: BI.i18nText("Fine-Design_Report_Tool_Bar_Middle"),
value: 2
}, {
text: BI.i18nText("Fine-Design_Report_Tool_Bar_Low"),
value: 3
}], {
type: "bi.single_select_radio_item",
logic: {
dynamic: true
}
}),
layouts: [{
type: "bi.vertical_adapt"
}],
listeners: [{
eventName: "EVENT_CHANGE",
action: function() {
}
}]
}]
};
},
getValue: function() {
return self.group.getValue();
},
setValue: function(v) {
this.group.setValue(v);
}
});
BI.shortcut("bi.report.server.param_setting.tool_bar_height_select", Analysis);
})();

47
designer-base/src/test/resources/com/fr/design/ui/script/js/common/usetoolbar.js

@ -0,0 +1,47 @@
!(function () {
/**
* 使用工具栏相关
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-use-tool-bar"
},
render: function () {
var self = this;
return {
type: "bi.vertical_adapt",
height: 24,
items: [{
el: {
type: "bi.multi_select_item",
ref: function(_ref) {
self.multiSelect = _ref;
},
hgap: 5,
selected: true,
text: BI.i18nText("Fine-Design_Report_Use_ToolBar"),
logic: {
dynamic: true
},
iconWrapperWidth: 16
}
}, {
type: "bi.text_button",
cls: "bi-card bi-border",
text: BI.i18nText("Fine-Design_Report_Edit"),
hgap: 10
}]
};
},
getValue: function() {
return self.multiSelect.getSelected();
},
setValue: function(v) {
this.multiSelect.setSelected(v);
}
});
BI.shortcut("bi.report.server.param_setting.use_tool_bar", Analysis);
})();

30
designer-base/src/test/resources/com/fr/design/ui/script/js/enum.js

@ -0,0 +1,30 @@
window.BICst = window.BICst || {};
BICst.REPORT_SERVER_PARAM = {
SPLIT_PAGE_PREVIEW_SETTING: 1,
FORM_PAGE_SETTING: 2,
DATA_ANALYSIS_SETTING: 3,
IMPORT_CSS: 4,
IMPORT_JS: 5,
ERROR_TEMPLATE_DEFINE: 6,
PRINT_SETTING: 7
};
BICst.REPORT_TEMPLATE_WEB_SETTING = {
BASE: 1,
PRINT: 2,
SPLIT_PAGE_PREVIEW_SETTING: 3,
FORM_PAGE_SETTING: 4,
DATA_ANALYSIS_SETTING: 5,
BROWSER: 6,
IMPORT_CSS: 7,
IMPORT_JS: 8
};
BICst.REPORT_TEMPLATE_WEB_SETTING_TOOLS = {
FIRST_PAGE: 1,
PRE_PAGE: 2,
NEXT_PAGE: 3,
LAST_PAGE: 4,
PRINT: 5,
EXPORT: 6,
EMAIL: 7
};

53
designer-base/src/test/resources/com/fr/design/ui/script/js/i18n.js

@ -0,0 +1,53 @@
BI.addI18n({
"Fine-Design_Report_WEB_Pagination_Setting": "分页预览设置",
"Fine-Design_Report_WEB_Write_Setting": "填报页面设置",
"Fine-Design_Report_Data_Analysis_Settings": "数据分析设置",
"Fine-Design_Report_ReportServerP_Import_Css": "引用Css",
"Fine-Design_Report_ReportServerP_Import_JavaScript": "引用JavaScript",
"Fine-Design_Report_Error_Handler_Template": "出错模板定义",
"Fine-Design_Report_Print_Setting": "打印设置",
"Fine-Design_Report_Mobile_ToolBar": "工具栏",
"Fine-Design_Report_Tool_Bar_High": "高",
"Fine-Design_Report_Tool_Bar_Middle": "中",
"Fine-Design_Report_Tool_Bar_Low": "低",
"Fine-Design_Report_Mobile_ToolBar_Height": "工具栏高度",
"Fine-Design_Report_Is_Paint_Page": "以图片方式显示",
"Fine-Design_Report_IS_Auto_Scale": "iframe嵌入时自动缩放",
"Fine-Design_Report_IS_TD_HEAVY_EXPORT": "重方式输出格子",
"Fine-Design_Report_Use_ToolBar": "使用工具栏",
"Fine-Design_Report_Show_Location": "报表显示位置",
"Fine-Design_Report_Center_Display": "居中展示",
"Fine-Design_Report_Left_Display": "左展示",
"Fine-Design_Report_Editing_Listeners": "事件编辑",
"Fine-Design_Report_Edit": "编辑",
"Fine-Design_Report_Sheet_Label_Page_Display_Position": "sheet标签页显示位置:",
"Fine-Design_Form_Base_Top": "上",
"Fine-Design_Report_Bottom": "下",
"Fine-Design_Report_Set_Face_Write_Current_Edit_Row_Background": "当前编辑行背景设置",
"Fine-Design_Report_Unload_Check": "未提交离开提示",
"Fine-Design_Basic_Engine_Event_Show_Widgets": "直接显示控件",
"Fine-Design_Report_Write_Auto_Stash": "自动暂存",
"Fine-Design_Report_Engine_Sort_Sort": "排序",
"Fine-Design_Report_Engine_Selection_Filter": "条件筛选",
"Fine-Design_Report_Engine_List_Filter": "列表筛选",
"Fine-Design_Basic_Engine_Cancel": "取消",
"Fine-Design_Report_OK": "确定",
"Fine-Design_Report_Basic": "基本",
"Fine-Design_Report_Printer(Server)": "打印机(服务器)",
"Fine-Design_Report_Browser_Background": "浏览器背景",
"Fine-Design_Report_I_Want_To_Set_Single": "为该模板单独设置",
"Fine-Design_Form_Using_Server_Report_View_Settings": "采用服务器设置",
"Fine-Design_Report_Blow_Set": "以下设置:",
"Fine-Design_Report_PageSetup_Page": "页面",
"Fine-Design_Report_ToolBar_Top": "顶部工具栏",
"Fine-Design_Report_ToolBar_Bottom": "底部工具栏",
"Fine-Design_Basic_Scale_Custom_Button": "自定义",
"Fine-Design_Report_Restore_Default": "恢复默认",
"Fine-Design_Report_Engine_ReportServerP_First": "首页",
"Fine-Design_Report_Engine_ReportServerP_Previous": "上一页",
"Fine-Design_Report_Engine_ReportServerP_Next": "下一页",
"Fine-Design_Report_Engine_ReportServerP_Last": "末页",
"Fine-Design_Report_Engine_Print": "打印",
"Fine-Design_Report_Engine_Export": "导出",
"Fine-Design_Report_Engine_Email": "邮件"
});

1
designer-base/src/test/resources/com/fr/design/ui/script/js/index.less

@ -0,0 +1 @@
@import "../../fineui/src/less/index.less";

59
designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/card/data.analysis.js

@ -0,0 +1,59 @@
!(function () {
/**
* 服务器 数据分析设置
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-data-analysis"
},
render: function () {
return {
type: "bi.vtape",
vgap: 10,
hgap: 10,
items: [{
type: "bi.button_group",
height: 24,
value: [1,2,3],
items: BI.createItems([{
text: BI.i18nText("Fine-Design_Report_Engine_Sort_Sort"),
value: 1
}, {
text: BI.i18nText("Fine-Design_Report_Engine_Selection_Filter"),
value: 2
}, {
text: BI.i18nText("Fine-Design_Report_Engine_List_Filter"),
value: 2
}], {
type: "bi.multi_select_item",
logic: {
dynamic: true
},
iconWrapperWidth: 16,
hgap: 5
}),
chooseType: BI.Selection.Multi,
layouts: [{
type: "bi.vertical_adapt"
}]
}, {
type: "bi.report.server.param_setting.use_tool_bar",
height: 24,
value: true
}, {
type: "bi.report.server.param_setting.tool_bar_height_select",
height: 24
}, {
type: "bi.label",
height: 24,
textAlign: "left",
text: BI.i18nText("Fine-Design_Report_Editing_Listeners") + ":",
}, {
type: "bi.report.server.param_setting.edit_list"
}]
};
}
});
BI.shortcut("bi.report.server.param_setting.data_analysis", Analysis);
})();

69
designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/card/form.page.js

@ -0,0 +1,69 @@
!(function () {
/**
* 服务器 填报预览设置
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-form-page"
},
render: function () {
return {
type: "bi.vtape",
vgap: 10,
hgap: 10,
items: [{
type: "bi.grid",
height: 78,
columns: 2,
rows: 2,
items: [{
column: 0,
row: 0,
el: {
type: "bi.report.sheet_label_location",
height: 24
}
}, {
column: 1,
row: 0,
el: {
type: "bi.report.server.param_setting.report_show_location",
height: 24
}
}, {
column: 0,
row: 1,
el: {
type: "bi.report.form_background_setting",
height: 24
}
}, {
column: 1,
row: 1,
el: {
type: "bi.report.leave_setting",
height: 24
}
}]
}, {
type: "bi.report.server.param_setting.use_tool_bar",
height: 24,
value: true
}, {
type: "bi.report.server.param_setting.tool_bar_height_select",
height: 24
}, {
type: "bi.label",
height: 24,
textAlign: "left",
text: BI.i18nText("Fine-Design_Report_Editing_Listeners") + ":",
}, {
type: "bi.report.server.param_setting.edit_list"
}]
};
}
});
BI.shortcut("bi.report.server.param_setting.form_page", Analysis);
})();

66
designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/card/page.preview.js

@ -0,0 +1,66 @@
!(function () {
/**
* 服务器 分页预览设置
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-page-preview"
},
render: function () {
return {
type: "bi.vtape",
vgap: 10,
hgap: 10,
items: [{
type: "bi.report.server.param_setting.report_show_location",
height: 24
}, {
type: "bi.button_group",
height: 92,
chooseType: BI.Selection.Multi,
items: BI.createItems([{
el: {
text: BI.i18nText("Fine-Design_Report_Is_Paint_Page"),
value: 1
},
bgap: 10
}, {
el: {
text: BI.i18nText("Fine-Design_Report_IS_Auto_Scale"),
value: 2
},
bgap: 10
}, {
text: BI.i18nText("Fine-Design_Report_IS_TD_HEAVY_EXPORT"),
value: 3
}], {
type: "bi.multi_select_item",
hgap: 5,
logic: {
dynamic: true
},
iconWrapperWidth: 16
}),
layouts: [{
type: "bi.vertical"
}]
}, {
type: "bi.report.server.param_setting.use_tool_bar",
height: 24
}, {
type: "bi.report.server.param_setting.tool_bar_height_select",
height: 24
}, {
type: "bi.label",
height: 24,
textAlign: "left",
text: BI.i18nText("Fine-Design_Report_Editing_Listeners") + ":",
}, {
type: "bi.report.server.param_setting.edit_list"
}]
};
}
});
BI.shortcut("bi.report.server.param_setting.page_preview", Analysis);
})();

33
designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/reportserver.constants.js

@ -0,0 +1,33 @@
!(function () {
BI.constant("bi.constant.report.server.param_setting", [
{
text: BI.i18nText("Fine-Design_Report_WEB_Pagination_Setting"),
cls: "tab-item",
value: BICst.REPORT_SERVER_PARAM.SPLIT_PAGE_PREVIEW_SETTING
}, {
text: BI.i18nText("Fine-Design_Report_WEB_Write_Setting"),
cls: "tab-item",
value: BICst.REPORT_SERVER_PARAM.FORM_PAGE_SETTING
}, {
text: BI.i18nText("Fine-Design_Report_Data_Analysis_Settings"),
cls: "tab-item",
value: BICst.REPORT_SERVER_PARAM.DATA_ANALYSIS_SETTING
}, {
text: BI.i18nText("Fine-Design_Report_ReportServerP_Import_Css"),
cls: "tab-item",
value: BICst.REPORT_SERVER_PARAM.IMPORT_CSS
}, {
text: BI.i18nText("Fine-Design_Report_ReportServerP_Import_JavaScript"),
cls: "tab-item",
value: BICst.REPORT_SERVER_PARAM.IMPORT_JS
}, {
text: BI.i18nText("Fine-Design_Report_Error_Handler_Template"),
cls: "tab-item",
value: BICst.REPORT_SERVER_PARAM.ERROR_TEMPLATE_DEFINE
}, {
text: BI.i18nText("Fine-Design_Report_Print_Setting"),
cls: "tab-item",
value: BICst.REPORT_SERVER_PARAM.PRINT_SETTING
}]
);
})();

50
designer-base/src/test/resources/com/fr/design/ui/script/js/reportserverparam/reportserver.js

@ -0,0 +1,50 @@
!(function () {
/**
* 报表服务器参数面板
*/
var Tab = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting"
},
render: function () {
return {
type: "bi.setting.tab",
value: BICst.REPORT_SERVER_PARAM.SPLIT_PAGE_PREVIEW_SETTING,
tabItems: BI.Constants.getConstant("bi.constant.report.server.param_setting"),
cardCreator: BI.bind(this._createCard, this)
};
},
_createCard: function (v) {
switch (v) {
case BICst.REPORT_SERVER_PARAM.SPLIT_PAGE_PREVIEW_SETTING:
return {
type: "bi.report.server.param_setting.page_preview"
};
case BICst.REPORT_SERVER_PARAM.FORM_PAGE_SETTING:
return {
type: "bi.report.server.param_setting.form_page"
};
case BICst.REPORT_SERVER_PARAM.DATA_ANALYSIS_SETTING:
return {
type: "bi.report.server.param_setting.data_analysis"
}
case BICst.REPORT_SERVER_PARAM.IMPORT_CSS:
case BICst.REPORT_SERVER_PARAM.IMPORT_JS:
case BICst.REPORT_SERVER_PARAM.ERROR_TEMPLATE_DEFINE:
case BICst.REPORT_SERVER_PARAM.PRINT_SETTING:
default:
return {
type: "bi.label",
text: "1"
};
}
}
});
BI.shortcut("bi.report.server.param_setting", Tab);
})();

64
designer-base/src/test/resources/com/fr/design/ui/script/js/templatewebproperties/card/form.page.js

@ -0,0 +1,64 @@
!(function () {
/**
* 填报页面设置
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-form-page"
},
render: function () {
return {
type: "bi.vtape",
vgap: 10,
hgap: 10,
items: [{
type: "bi.report.global_or_single_combo",
height: 24
}, {
type: "bi.grid",
height: 78,
columns: 2,
rows: 2,
items: [{
column: 0,
row: 0,
el: {
type: "bi.report.sheet_label_location"
}
}, {
column: 1,
row: 0,
el: {
type: "bi.report.server.param_setting.report_show_location",
height: 24
}
}, {
column: 0,
row: 1,
el: {
type: "bi.report.form_background_setting"
}
}, {
column: 1,
row: 1,
el: {
type: "bi.report.leave_setting"
}
}]
}, {
type: "bi.settings.tool_bar",
height: 180
}, {
type: "bi.label",
height: 24,
textAlign: "left",
text: BI.i18nText("Fine-Design_Report_Editing_Listeners") + ":",
}, {
type: "bi.report.server.param_setting.edit_list"
}]
};
}
});
BI.shortcut("bi.report.template.web_setting.form_page", Analysis);
})();

73
designer-base/src/test/resources/com/fr/design/ui/script/js/templatewebproperties/card/page.preview.js

@ -0,0 +1,73 @@
!(function () {
/**
* 分页预览设置
*/
var Analysis = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-server-param-setting-page-preview"
},
render: function () {
return {
type: "bi.vtape",
vgap: 10,
hgap: 10,
items: [{
type: "bi.report.global_or_single_combo",
height: 24
}, {
type: "bi.report.server.param_setting.report_show_location",
height: 24
}, {
type: "bi.vertical_adapt",
height: 24,
items: [{
type: "bi.label",
text: BI.i18nText("Fine-Design_Report_PageSetup_Page"),
textAlign: "right",
width: 70
}, {
el: {
type: "bi.button_group",
height: 24,
chooseType: BI.Selection.Multi,
items: BI.createItems([{
text: BI.i18nText("Fine-Design_Report_Is_Paint_Page"),
value: 1
}, {
text: BI.i18nText("Fine-Design_Report_IS_Auto_Scale"),
value: 2
}, {
text: BI.i18nText("Fine-Design_Report_IS_TD_HEAVY_EXPORT"),
value: 3
}], {
type: "bi.multi_select_item",
hgap: 5,
logic: {
dynamic: true
},
iconWrapperWidth: 16
}),
layouts: [{
type: "bi.left",
lgap: 5
}]
},
lgap: 10
}]
}, {
type: "bi.settings.tool_bar",
height: 180
}, {
type: "bi.label",
height: 24,
textAlign: "left",
text: BI.i18nText("Fine-Design_Report_Editing_Listeners") + ":",
}, {
type: "bi.report.server.param_setting.edit_list"
}]
};
}
});
BI.shortcut("bi.report.template.web_setting.page_preview", Analysis);
})();

69
designer-base/src/test/resources/com/fr/design/ui/script/js/templatewebproperties/templateweb.constants.js

@ -0,0 +1,69 @@
!(function () {
BI.constant("bi.constant.report.template.web_setting", [
{
text: BI.i18nText("Fine-Design_Report_Basic"),
cls: "tab-item",
value: BICst.REPORT_TEMPLATE_WEB_SETTING.BASE
}, {
text: BI.i18nText("Fine-Design_Report_Printer(Server)"),
cls: "tab-item",
value: BICst.REPORT_TEMPLATE_WEB_SETTING.PRINT
}, {
text: BI.i18nText("Fine-Design_Report_WEB_Pagination_Setting"),
cls: "tab-item",
value: BICst.REPORT_TEMPLATE_WEB_SETTING.SPLIT_PAGE_PREVIEW_SETTING
}, {
text: BI.i18nText("Fine-Design_Report_WEB_Write_Setting"),
cls: "tab-item",
value: BICst.REPORT_TEMPLATE_WEB_SETTING.FORM_PAGE_SETTING
}, {
text: BI.i18nText("Fine-Design_Report_Data_Analysis_Settings"),
cls: "tab-item",
value: BICst.REPORT_TEMPLATE_WEB_SETTING.DATA_ANALYSIS_SETTING
}, {
text: BI.i18nText("Fine-Design_Report_Browser_Background"),
cls: "tab-item",
value: BICst.REPORT_TEMPLATE_WEB_SETTING.BROWSER
}, {
text: BI.i18nText("Fine-Design_Report_ReportServerP_Import_Css"),
cls: "tab-item",
value: BICst.REPORT_TEMPLATE_WEB_SETTING.IMPORT_CSS
}, {
text: BI.i18nText("Fine-Design_Report_ReportServerP_Import_JavaScript"),
cls: "tab-item",
value: BICst.REPORT_TEMPLATE_WEB_SETTING.IMPORT_JS
}]
);
BI.constant("bi.constant.report.template.web_setting.tools", [
{
text: BI.i18nText("Fine-Design_Report_Engine_ReportServerP_First"),
cls: "close-font",
value: BICst.REPORT_TEMPLATE_WEB_SETTING_TOOLS.FIRST_PAGE
}, {
text: BI.i18nText("Fine-Design_Report_Engine_ReportServerP_Previous"),
cls: "close-font",
value: BICst.REPORT_TEMPLATE_WEB_SETTING_TOOLS.PRE_PAGE
}, {
text: BI.i18nText("Fine-Design_Report_Engine_ReportServerP_Next"),
cls: "close-font",
value: BICst.REPORT_TEMPLATE_WEB_SETTING_TOOLS.NEXT_PAGE
}, {
text: BI.i18nText("Fine-Design_Report_Engine_ReportServerP_Last"),
cls: "close-font",
value: BICst.REPORT_TEMPLATE_WEB_SETTING_TOOLS.LAST_PAGE
}, {
text: BI.i18nText("Fine-Design_Report_Engine_Print"),
cls: "close-font",
value: BICst.REPORT_TEMPLATE_WEB_SETTING_TOOLS.PRINT
}, {
text: BI.i18nText("Fine-Design_Report_Engine_Export"),
cls: "close-font",
value: BICst.REPORT_TEMPLATE_WEB_SETTING_TOOLS.EXPORT
}, {
text: BI.i18nText("Fine-Design_Report_Engine_Email"),
cls: "close-font",
value: BICst.REPORT_TEMPLATE_WEB_SETTING_TOOLS.EMAIL
}]
);
})();

48
designer-base/src/test/resources/com/fr/design/ui/script/js/templatewebproperties/templateweb.js

@ -0,0 +1,48 @@
!(function () {
/**
* 模板Web属性面板
*/
var Tab = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-report-template-web-setting"
},
render: function () {
return {
type: "bi.setting.tab",
value: BICst.REPORT_TEMPLATE_WEB_SETTING.SPLIT_PAGE_PREVIEW_SETTING,
tabItems: BI.Constants.getConstant("bi.constant.report.template.web_setting"),
cardCreator: BI.bind(this._createCard, this)
};
},
_createCard: function (v) {
switch (v) {
case BICst.REPORT_TEMPLATE_WEB_SETTING.SPLIT_PAGE_PREVIEW_SETTING:
return {
type: "bi.report.template.web_setting.page_preview"
}
case BICst.REPORT_TEMPLATE_WEB_SETTING.FORM_PAGE_SETTING:
return {
type: "bi.report.template.web_setting.form_page"
}
case BICst.REPORT_TEMPLATE_WEB_SETTING.DATA_ANALYSIS_SETTING:
case BICst.REPORT_TEMPLATE_WEB_SETTING.BASE:
case BICst.REPORT_TEMPLATE_WEB_SETTING.PRINT:
case BICst.REPORT_TEMPLATE_WEB_SETTING.BROWSER:
case BICst.REPORT_TEMPLATE_WEB_SETTING.IMPORT_CSS:
case BICst.REPORT_TEMPLATE_WEB_SETTING.IMPORT_JS:
default:
return {
type: "bi.label",
text: "1"
};
}
}
});
BI.shortcut("bi.report.template.web_setting", Tab);
})();

12
designer-base/src/test/resources/com/fr/design/ui/script/report.css

@ -0,0 +1,12 @@
.bi-setting-tab .tab-group {
background-color: #F2F4F7;
font-size: 12px;
}
.bi-setting-tab .tab-group .tab-item:hover {
color: #3685f2;
}
.bi-setting-tab .tab-group .tab-item.active {
background-color: #ffffff;
color: #3685f2;
border-top: 3px solid #3685f2;
}

1328
designer-base/src/test/resources/com/fr/design/ui/script/report.js

File diff suppressed because it is too large Load Diff

57
designer-base/src/test/resources/com/fr/design/ui/script/start.js

@ -0,0 +1,57 @@
window.addEventListener("load", function (ev) {
var combo1 = BI.createWidget({
type: "bi.vertical",
items: [
{
type: "bi.text_value_combo",
text: "选项1",
width: 300,
items: [
{
el: {
type: "bi.single_select_radio_item",
width: 290,
text: "选项1",
value: 1
},
text: "选项1",
value: 1,
lgap: 10
},
{
el: {
type: "bi.single_select_radio_item",
width: 290,
text: "选项2",
value: 2
},
lgap: 10,
text: "选项2",
value: 2
},
{
el: {
type: "bi.single_select_radio_item",
width: 290,
text: "选项3",
value: 3
},
lgap: 10,
text: "选项3",
value: 3
}
]
}
]
});
BI.createWidget({
type:"bi.absolute",
element: "body",
items: [{
el: combo1,
left: 100,
top: 100
}]
});
});

12
designer-base/src/test/resources/com/fr/design/ui/script/template.css

@ -0,0 +1,12 @@
.bi-setting-tab .tab-group {
background-color: #F2F4F7;
font-size: 12px;
}
.bi-setting-tab .tab-group .tab-item:hover {
color: #3685f2;
}
.bi-setting-tab .tab-group .tab-item.active {
background-color: #ffffff;
color: #3685f2;
border-top: 3px solid #3685f2;
}

1328
designer-base/src/test/resources/com/fr/design/ui/script/template.js

File diff suppressed because it is too large Load Diff

2
designer-chart/src/main/java/com/fr/van/chart/map/server/ChartMapEditorAction.java

@ -25,7 +25,7 @@ public class ChartMapEditorAction extends UpdateAction {
int port = DesignerEnvManager.getEnvManager().getEmbedServerPort(); int port = DesignerEnvManager.getEnvManager().getEmbedServerPort();
String web = GeneralContext.getCurrentAppNameOfEnv(); String web = GeneralContext.getCurrentAppNameOfEnv();
String serverlet = ServerConfig.getInstance().getServletName(); String serverlet = ServerConfig.getInstance().getServletName();
ServerStarter.browserURLWithLocalEnv(WorkContext.getCurrent().isLocal() ? String.format("http://localhost:%d/%s/%s/view/report?op=map", port, web, serverlet) : WorkContext.getCurrent().getPath() + "/view/report?op=map"); ServerStarter.browserURLWithLocalEnv(WorkContext.getCurrent().isLocal() ? String.format("http://localhost:%d/%s/%s/map/edit", port, web, serverlet) : WorkContext.getCurrent().getPath() + "/map/edit");
} }
} }

38
designer-realize/src/main/java/com/fr/design/mainframe/InformationCollector.java

@ -54,6 +54,9 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/** /**
* @author neil * @author neil
@ -181,12 +184,6 @@ public class InformationCollector implements XMLReadable, XMLWriter {
} }
private void sendUserInfo(){ private void sendUserInfo(){
long currentTime = new Date().getTime();
long lastTime = getLastTimeMillis();
if (currentTime - lastTime <= DELTA) {
return;
}
JSONObject content = getJSONContentAsByte(); JSONObject content = getJSONContentAsByte();
String url = CloudCenter.getInstance().acquireUrlByKind("user.info.v10"); String url = CloudCenter.getInstance().acquireUrlByKind("user.info.v10");
boolean success = false; boolean success = false;
@ -204,13 +201,7 @@ public class InformationCollector implements XMLReadable, XMLWriter {
} }
} }
private void sendFunctionsInfo(){ private void sendFunctionsInfo(long currentTime, long lastTime){
Date current = new Date();
long lastTime = getLastTimeMillis();
long currentTime = current.getTime();
if (currentTime - lastTime <= DELTA) {
return;
}
FineLoggerFactory.getLogger().info("Start sent function records to the cloud center..."); FineLoggerFactory.getLogger().info("Start sent function records to the cloud center...");
queryAndSendOnePageFunctionContent(currentTime, lastTime, 0); queryAndSendOnePageFunctionContent(currentTime, lastTime, 0);
long page = (totalCount/PAGE_SIZE) + 1; long page = (totalCount/PAGE_SIZE) + 1;
@ -350,23 +341,22 @@ public class InformationCollector implements XMLReadable, XMLWriter {
return; return;
} }
Thread sendThread = new Thread(new Runnable() { ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.schedule(new Runnable() {
@Override @Override
public void run() { public void run() {
try { long currentTime = new Date().getTime();
//读取XML的5分钟后开始发请求连接服务器. long lastTime = getLastTimeMillis();
Thread.sleep(SEND_DELAY); if (currentTime - lastTime > DELTA) {
} catch (InterruptedException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
sendUserInfo(); sendUserInfo();
sendFunctionsInfo(); sendFunctionsInfo(currentTime, lastTime);
}
TemplateInfoCollector.getInstance().sendTemplateInfo(); TemplateInfoCollector.getInstance().sendTemplateInfo();
ErrorInfoUploader.getInstance().sendErrorInfo(); ErrorInfoUploader.getInstance().sendErrorInfo();
} }
}); }, SEND_DELAY, TimeUnit.SECONDS);
sendThread.start();
} }
/** /**

Loading…
Cancel
Save