Browse Source
* commit 'fb6780bdf31bd97286601272d3bcb0b0ab56fb8e': (47 commits) update REPORT-17908 启动动画“初始化”的国际化问题 REPORT-17887 数字控件最大值最小值部分场景保存失败 REPORT-17277 frm的body点击事件不见了 && REPORT-17897 设计器文件-选项显示不完整 && REPORT-17873 模板-报表填报属性-刷新按钮提示框的国际化问题 CHART-9401 fix list fix list CHART-3647 删除多余代码 update REPORT-17656 决策报表报表块复制后值被清空 MOBILE-21196 【性能】移动端》报表》打开少数单元格插入图片的模板,出现加载缓慢,时间在5s以上不等 设计器部分 update REPORT-17527 推送远程设计触发的报表预览日志 KERNEL-582 国际化定制的地方会越来越多,想办法去掉这种if else写法 REPORT-17494 模板版本管理,选项灰化问题 REPORT-17730 控件名无法保存 REPORT-15183 有一个改远程url的接口补一下10.0 update REPORT-17186 【决策报表】条件属性添加超链,会自动在超级链接里生成一条 删除无用import REPORT-17500 设计器无法跳转到帮助文档 ...final/10.0
neil
6 years ago
43 changed files with 995 additions and 249 deletions
@ -0,0 +1,39 @@
|
||||
package com.fr.design.dcm; |
||||
|
||||
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.category.StylePath; |
||||
import com.fr.web.struct.impl.FineUI; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-05-16 |
||||
*/ |
||||
public class UniversalDatabaseComponent extends AssembleComponent { |
||||
|
||||
public static final UniversalDatabaseComponent KEY = new UniversalDatabaseComponent(); |
||||
|
||||
private UniversalDatabaseComponent() { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public ScriptPath script(RequestClient req) { |
||||
return ScriptPath.build("/com/fr/design/dcm/index.js"); |
||||
} |
||||
|
||||
@Override |
||||
public StylePath style(RequestClient req) { |
||||
return StylePath.build("/com/fr/design/dcm/style.css"); |
||||
} |
||||
|
||||
@Override |
||||
public Atom[] refer() { |
||||
return new Atom[]{ |
||||
FineUI.KEY |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,32 @@
|
||||
package com.fr.design.dcm; |
||||
|
||||
import com.fr.design.dialog.BasicPane; |
||||
import com.fr.design.dialog.UIDialog; |
||||
import com.fr.design.utils.gui.GUICoreUtils; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-05-16 |
||||
*/ |
||||
public class UniversalDatabaseDialog extends UIDialog { |
||||
|
||||
public UniversalDatabaseDialog(Frame frame, BasicPane pane) { |
||||
super(frame); |
||||
setUndecorated(true); |
||||
JPanel panel = (JPanel) getContentPane(); |
||||
panel.setLayout(new BorderLayout()); |
||||
add(pane, BorderLayout.CENTER); |
||||
setSize(new Dimension(1000, 600)); |
||||
GUICoreUtils.centerWindow(this); |
||||
setResizable(false); |
||||
} |
||||
|
||||
@Override |
||||
public void checkValid() throws Exception { |
||||
|
||||
} |
||||
} |
@ -0,0 +1,36 @@
|
||||
package com.fr.design.dcm; |
||||
|
||||
import com.fr.design.dialog.UIDialog; |
||||
import com.fr.design.mainframe.DesignerContext; |
||||
|
||||
import javax.swing.*; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-05-16 |
||||
*/ |
||||
public class UniversalDatabaseOpener { |
||||
|
||||
private static UIDialog dialog = null; |
||||
|
||||
public static UIDialog getDialog() { |
||||
return dialog; |
||||
} |
||||
|
||||
public static void showUniverseDatabaseDialog() { |
||||
UniversalDatabasePane upmPane = new UniversalDatabasePane(); |
||||
if (dialog == null) { |
||||
dialog = new UniversalDatabaseDialog(DesignerContext.getDesignerFrame(), upmPane); |
||||
} |
||||
dialog.setVisible(true); |
||||
} |
||||
|
||||
public static void closeWindow() { |
||||
if (dialog != null) { |
||||
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); |
||||
dialog.setVisible(false); |
||||
dialog = null; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,39 @@
|
||||
package com.fr.design.dcm; |
||||
|
||||
import com.fr.design.dialog.BasicPane; |
||||
import com.fr.design.ui.ModernUIPane; |
||||
import com.teamdev.jxbrowser.chromium.JSValue; |
||||
import com.teamdev.jxbrowser.chromium.events.ScriptContextAdapter; |
||||
import com.teamdev.jxbrowser.chromium.events.ScriptContextEvent; |
||||
|
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-05-16 |
||||
*/ |
||||
public class UniversalDatabasePane extends BasicPane { |
||||
|
||||
private ModernUIPane<Object> modernUIPane; |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "Database"; |
||||
} |
||||
|
||||
public UniversalDatabasePane() { |
||||
setLayout(new BorderLayout()); |
||||
modernUIPane = new ModernUIPane.Builder<>() |
||||
.withComponent(UniversalDatabaseComponent.KEY) |
||||
.prepare(new ScriptContextAdapter() { |
||||
@Override |
||||
public void onScriptContextCreated(ScriptContextEvent event) { |
||||
JSValue window = event.getBrowser().executeJavaScriptAndReturnValue("window"); |
||||
window.asObject().setProperty("DcmHelper", UniversalDcmBridge.getBridge(event.getBrowser())); |
||||
} |
||||
}) |
||||
.build(); |
||||
add(modernUIPane, BorderLayout.CENTER); |
||||
} |
||||
} |
@ -0,0 +1,34 @@
|
||||
package com.fr.design.dcm; |
||||
|
||||
import com.fr.decision.webservice.bean.BaseBean; |
||||
import com.fr.design.bridge.exec.JSBridge; |
||||
import com.teamdev.jxbrowser.chromium.Browser; |
||||
import com.teamdev.jxbrowser.chromium.JSObject; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-05-17 |
||||
* 桥接Java和JavaScript的类 |
||||
*/ |
||||
public class UniversalDcmBridge { |
||||
|
||||
public static UniversalDcmBridge getBridge(Browser browser) { |
||||
return new UniversalDcmBridge(browser); |
||||
} |
||||
|
||||
private JSObject window; |
||||
|
||||
private UniversalDcmBridge(Browser browser) { |
||||
this.window = browser.executeJavaScriptAndReturnValue("window").asObject(); |
||||
} |
||||
|
||||
/** |
||||
* 获取所有的数据连接 |
||||
* @return 数据连接集合 |
||||
*/ |
||||
@JSBridge |
||||
public BaseBean getConnections() { |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,82 @@
|
||||
package com.fr.design.mainframe.loghandler; |
||||
|
||||
import com.fr.log.FineLoggerFactory; |
||||
import com.fr.third.apache.log4j.Level; |
||||
import com.fr.third.apache.log4j.spi.LoggingEvent; |
||||
import com.fr.third.apache.log4j.spi.ThrowableInformation; |
||||
|
||||
/** |
||||
* 设计器日志记录 |
||||
*/ |
||||
public class DesignerLogger { |
||||
public static final int INFO_INT = Level.INFO.toInt(); |
||||
|
||||
public static final int ERROR_INT = Level.ERROR.toInt(); |
||||
|
||||
public static final int WARN_INT = Level.WARN.toInt(); |
||||
|
||||
/** |
||||
* 记录LoggingEvent对象 |
||||
* |
||||
* @param event |
||||
*/ |
||||
public static void log(LoggingEvent event) { |
||||
if (event == null) { |
||||
return; |
||||
} |
||||
LogParser.parse(event).log(event); |
||||
} |
||||
|
||||
public enum LogParser { |
||||
DEFAULT(-1) { |
||||
@Override |
||||
public void log(LoggingEvent event) { |
||||
|
||||
} |
||||
}, |
||||
INFO(Level.INFO.toInt()) { |
||||
@Override |
||||
public void log(LoggingEvent event) { |
||||
FineLoggerFactory.getLogger().info(event.getRenderedMessage()); |
||||
} |
||||
}, |
||||
WARN(Level.WARN.toInt()) { |
||||
@Override |
||||
public void log(LoggingEvent event) { |
||||
ThrowableInformation information = event.getThrowableInformation(); |
||||
FineLoggerFactory.getLogger().warn(event.getRenderedMessage(), information == null ? null : information.getThrowable()); |
||||
} |
||||
}, |
||||
|
||||
ERROR(Level.ERROR.toInt()) { |
||||
@Override |
||||
public void log(LoggingEvent event) { |
||||
ThrowableInformation information = event.getThrowableInformation(); |
||||
FineLoggerFactory.getLogger().error(event.getRenderedMessage(), information == null ? null : information.getThrowable()); |
||||
} |
||||
}; |
||||
private int level; |
||||
|
||||
LogParser(int level) { |
||||
this.level = level; |
||||
} |
||||
|
||||
public int getLevel() { |
||||
return level; |
||||
} |
||||
|
||||
public static LogParser parse(LoggingEvent event) { |
||||
int intLevel = event.getLevel().toInt(); |
||||
for (LogParser logParser : values()) { |
||||
if (logParser.getLevel() == intLevel) { |
||||
return logParser; |
||||
} |
||||
} |
||||
return DEFAULT; |
||||
|
||||
} |
||||
|
||||
public void log(LoggingEvent event) { |
||||
} |
||||
} |
||||
} |
@ -1,27 +0,0 @@
|
||||
package com.fr.design.upm.loader; |
||||
|
||||
import com.fr.decision.webservice.bean.plugin.store.ProjectInfoBean; |
||||
import com.fr.decision.webservice.v10.plugin.helper.category.impl.BaseResourceLoader; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-04-18 |
||||
*/ |
||||
public class UpmDesignResourceLoader extends BaseResourceLoader { |
||||
|
||||
@Override |
||||
public String getPluginPath() { |
||||
return "upm/plugin_design.html"; |
||||
} |
||||
|
||||
@Override |
||||
public void checkResourceExist(ProjectInfoBean projectInfoBean) throws Exception { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public String getDownloadPath() throws Exception { |
||||
return "http://fanruan-market.oss-cn-shanghai.aliyuncs.com/upm/1.0/upm-10.0.zip"; |
||||
} |
||||
} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,276 @@
|
||||
.bi-plugin-redis { |
||||
padding: 20px; } |
||||
|
||||
.database-connection-layout { |
||||
width: 100%; |
||||
height: 100%; |
||||
background-color: #f7f8fa; } |
||||
.database-connection-layout .title { |
||||
background-color: #fff; |
||||
border-bottom: 1px solid #e8eaed; } |
||||
.database-connection-layout .title .title-item { |
||||
height: 39px; |
||||
line-height: 39px; |
||||
padding-left: 15px; |
||||
padding-right: 15px; |
||||
text-align: center; |
||||
white-space: nowrap; |
||||
text-overflow: ellipsis; |
||||
overflow: hidden; |
||||
position: relative; |
||||
flex-shrink: 0; |
||||
font-weight: 700; |
||||
cursor: pointer; } |
||||
.database-connection-layout .title .close-button { |
||||
position: absolute !important; |
||||
right: 5px; |
||||
top: 5px; |
||||
width: 30px; |
||||
height: 30px; |
||||
cursor: pointer; |
||||
background-image: url(./img/icon_close9x9_normal.png); |
||||
background-repeat: no-repeat; |
||||
background-position: center; } |
||||
.database-connection-layout .linkset { |
||||
margin: 10px; |
||||
bottom: 0px; |
||||
background-color: #ffffff; } |
||||
.database-connection-layout .linkStatus { |
||||
margin: 10px; |
||||
top: 40px; |
||||
background-color: #ffffff; } |
||||
|
||||
.database-left { |
||||
border-right: 1px solid #e8eaed; } |
||||
.database-left .select-group { |
||||
border-bottom: 1px solid #e8eaed; } |
||||
.database-left .select-group .select { |
||||
margin: 10px; } |
||||
.database-left .select-group .select .database-link-items { |
||||
padding-left: 10px; } |
||||
.database-left .select-group .select .database-link-items .link-item { |
||||
border-top: 1px solid #e8eaed; } |
||||
.database-left .select-group .status-title { |
||||
font-weight: 700; |
||||
margin-left: 12px; |
||||
margin-top: 12px; } |
||||
.database-left .left-list { |
||||
margin: 10px; } |
||||
.database-left .left-list .left-item { |
||||
height: 24px; |
||||
line-height: 24px; |
||||
cursor: pointer; } |
||||
.database-left .left-list .left-item:hover { |
||||
background-color: rgba(54, 133, 242, 0.05); } |
||||
.database-left .left-list .left-item:hover .icons .action-icon { |
||||
visibility: visible !important; } |
||||
.database-left .left-list .left-item .icons { |
||||
float: right !important; } |
||||
.database-left .left-list .left-item .icons .action-icon { |
||||
visibility: hidden; } |
||||
.database-left .left-list .left-item .icons .b-font { |
||||
font-size: 16px; } |
||||
.database-left .left-list .left-item-selected { |
||||
background-color: rgba(54, 133, 242, 0.05); } |
||||
.database-left .left-list .left-item-selected .link-title { |
||||
color: #3685f2; } |
||||
|
||||
.database-right { |
||||
min-width: 400px; |
||||
overflow: auto; } |
||||
.database-right .bi-flex-center-adapt-layout { |
||||
height: 100%; } |
||||
.database-right .bi-flex-center-adapt-layout .data-connection-background { |
||||
background: url(./img/resources.png) center center no-repeat; |
||||
background-size: contain; } |
||||
.database-right .right-status-title { |
||||
border-bottom: 1px solid #e8eaed; |
||||
color: #3d4d66; |
||||
line-height: 40px; |
||||
padding-left: 10px; |
||||
font-weight: 700; } |
||||
.database-right .right-status-body { |
||||
margin: 10px 30px 0px 30px; |
||||
height: 50%; } |
||||
.database-right .right-status-body .right-status-item { |
||||
height: 150px; |
||||
width: 50%; |
||||
top: 0; |
||||
left: 0; |
||||
position: absolute !important; } |
||||
.database-right .right-status-body .right-status-item .right-status-board { |
||||
margin-left: 25px; |
||||
position: relative !important; |
||||
left: -25px; } |
||||
.database-right .right-status-body .right-status-right { |
||||
height: 150px; |
||||
width: 50%; |
||||
top: 0; |
||||
right: 0; |
||||
position: absolute !important; } |
||||
.database-right .right-status-body .right-status-right .right-status-board { |
||||
margin-right: 25px; |
||||
position: relative !important; |
||||
left: 25px; } |
||||
.database-right .right-status-body .right-status-board { |
||||
background-color: #f7f8fa; |
||||
color: #3d4d66; |
||||
width: 100%; |
||||
height: 100%; } |
||||
.database-right .right-status-body .right-status-board .right-status-board-item { |
||||
text-align: center; |
||||
margin-top: 38px; } |
||||
.database-right .right-status-body .right-status-board .right-status-board-item .right-status-text { |
||||
display: inline-block; } |
||||
.database-right .right-status-body .right-status-board .right-status-board-item .card-font1 { |
||||
color: #13CD66; |
||||
font-size: 32px; } |
||||
.database-right .right-status-body .right-status-board .right-status-board-item .card-font2 { |
||||
color: #3685F2; |
||||
font-size: 32px; } |
||||
.database-right .right-content { |
||||
height: 100%; } |
||||
.database-right .right-content .right-title { |
||||
border-bottom: 1px solid #e8eaed; |
||||
color: #3d4d66; |
||||
line-height: 40px; |
||||
padding-left: 10px; } |
||||
.database-right .right-content .right-title .right-title-text { |
||||
font-weight: 700; } |
||||
.database-right .right-content .right-title .right-title-button { |
||||
float: right !important; |
||||
margin-right: 10px; |
||||
margin-top: 8px; } |
||||
.database-right .right-content .right-show { |
||||
margin: 10px; } |
||||
.database-right .right-content .right-show .right-form { |
||||
width: 100%; } |
||||
|
||||
.both-side { |
||||
line-height: 24px; |
||||
margin-bottom: 10px; } |
||||
.both-side .left { |
||||
white-space: nowrap; |
||||
text-overflow: ellipsis; |
||||
position: relative; |
||||
flex-shrink: 0; |
||||
font-weight: 700; } |
||||
.both-side .hint { |
||||
padding-left: 5px; |
||||
white-space: nowrap; |
||||
text-overflow: ellipsis; |
||||
overflow: hidden; |
||||
position: relative; |
||||
flex-shrink: 0; |
||||
margin-left: 5px; |
||||
color: #9ea6b2; } |
||||
|
||||
.shared-component-title { |
||||
height: 24px; |
||||
line-height: 24px; |
||||
margin-bottom: 10px; |
||||
color: #9ea6b2; |
||||
border-bottom: 1px solid #e8eaed; } |
||||
|
||||
.comfirm-content { |
||||
margin-top: 40px; |
||||
margin-left: 20px; } |
||||
.comfirm-content .comfirm-icon { |
||||
background-image: url(./img/warning.png); |
||||
background-size: contain; |
||||
margin-right: 12px; } |
||||
.comfirm-content .bi-text { |
||||
height: 50px; |
||||
line-height: 50px; |
||||
margin-left: 12px; } |
||||
|
||||
.more-link .more-link-item { |
||||
width: 538px; |
||||
overflow: hidden auto; |
||||
left: -10px !important; |
||||
right: 0px; |
||||
top: 10px; |
||||
bottom: 0px; |
||||
position: absolute; |
||||
height: 380px; } |
||||
.more-link .more-link-item .link-item { |
||||
margin-left: 10px; |
||||
margin-bottom: 10px; |
||||
cursor: pointer; |
||||
border: solid 1px #fff; } |
||||
.more-link .more-link-item .link-item:hover { |
||||
border: solid 1px #3480f2; } |
||||
.more-link .more-link-item .link-item .selected { |
||||
position: absolute !important; |
||||
right: -1px; |
||||
top: -1px; |
||||
height: 30px; |
||||
width: 30px; |
||||
background: url(./img/database-selected.png) center center no-repeat; |
||||
background-size: contain; } |
||||
.more-link .more-link-item .link-item .text { |
||||
height: 27px; |
||||
line-height: 27px; |
||||
padding-left: 2px; |
||||
padding-right: 2px; |
||||
text-align: center; |
||||
white-space: nowrap; |
||||
background: #F0F3F7; } |
||||
|
||||
.popover-notitle .bi-header-background { |
||||
display: none; } |
||||
|
||||
.popover-notitle .bi-absolute-layout { |
||||
top: 0px !important; } |
||||
|
||||
.bi-custom-show .show-content { |
||||
text-align: center; } |
||||
.bi-custom-show .show-content .loading-icon { |
||||
display: block; |
||||
background: url(./img/loading.gif) center center no-repeat; |
||||
background-size: contain; |
||||
margin: 0 auto; |
||||
margin-bottom: 18px; } |
||||
.bi-custom-show .show-content .success-icon { |
||||
display: block; |
||||
background: url(./img/success.png) center center no-repeat; |
||||
background-size: contain; |
||||
margin: 0 auto; |
||||
margin-bottom: 18px; } |
||||
.bi-custom-show .show-content .error-icon { |
||||
display: block; |
||||
background: url(./img/error.png) center center no-repeat; |
||||
background-size: contain; |
||||
margin: 0 auto; |
||||
margin-bottom: 18px; } |
||||
.bi-custom-show .show-content .buttons { |
||||
margin-top: 18px; } |
||||
.bi-custom-show .show-content .buttons div { |
||||
margin: 0 4px; } |
||||
|
||||
.bi-custom-show .show-more { |
||||
text-align: left !important; |
||||
height: 73px; |
||||
background: #F2F4F7; |
||||
margin-bottom: 10px; |
||||
padding: 5px; |
||||
margin-top: 10px; } |
||||
|
||||
.link-font .b-font:before { |
||||
content: "\e759"; |
||||
color: inherit; } |
||||
|
||||
.link-text-font .b-font:before { |
||||
content: "\e763"; |
||||
color: inherit; } |
||||
|
||||
.info-font .b-font:before { |
||||
content: "\e63c"; |
||||
color: inherit; } |
||||
|
||||
.delete-font .b-font:before { |
||||
content: "\e6c4"; |
||||
color: inherit; } |
||||
|
||||
|
||||
/*# sourceMappingURL=style.css.map*/ |
Loading…
Reference in new issue