forked from fanruan/design
Browse Source
* commit '3c3fc82d5eb3594de283df0a2ca7107456264df7': (78 commits) 改成枚举 unused import KERNEL-594 更新好插件管理器后自动刷新 去重 去掉针对性接口,转通用appender实现 KERNEL-594 更新版本需要重新打开 KERNEL-594 版本信息,需要reload KERNEL-594 mime问题 KERNEL-594 mime问题 和决策平台里面有点重复,要改 KERNEL-594 版本信息 REPORT-15183 10.0远程日志输出接口(日志分类插件需求) 新方法 完善一下API KERNEL-594 新插件管理版本检查 KERNEL-493 上传测试文件 KERNEL-493 设计器数据交换部分的API示例 去除调试信息 处理下NPE KERNEL-493 统一设计器和平台的数据连接 ...research/10.0
neil
6 years ago
65 changed files with 1405 additions and 467 deletions
@ -0,0 +1,41 @@ |
|||||||
|
package com.fr.design.actions.community; |
||||||
|
|
||||||
|
import com.fr.design.menu.MenuKeySet; |
||||||
|
import com.fr.design.utils.BrowseUtils; |
||||||
|
import com.fr.general.CloudCenter; |
||||||
|
import com.fr.general.IOUtils; |
||||||
|
|
||||||
|
import javax.swing.KeyStroke; |
||||||
|
import java.awt.event.ActionEvent; |
||||||
|
|
||||||
|
public class FacebookFansAction extends UpAction { |
||||||
|
|
||||||
|
public FacebookFansAction() { |
||||||
|
this.setMenuKeySet(FACEBOOKFANS); |
||||||
|
this.setName(getMenuKeySet().getMenuName()); |
||||||
|
this.setMnemonic(getMenuKeySet().getMnemonic()); |
||||||
|
this.setSmallIcon(IOUtils.readIcon("/com/fr/design/images/bbs/facebook.png")); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void actionPerformed(ActionEvent arg0) { |
||||||
|
BrowseUtils.browser(CloudCenter.getInstance().acquireUrlByKind("facebook.fans.tw")); |
||||||
|
} |
||||||
|
|
||||||
|
public static final MenuKeySet FACEBOOKFANS = new MenuKeySet() { |
||||||
|
@Override |
||||||
|
public char getMnemonic() { |
||||||
|
return 'F'; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getMenuName() { |
||||||
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Community_FaceBook_Fans"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public KeyStroke getKeyStroke() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
@ -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) { |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
package com.fr.design.mainframe.vcs.ui; |
||||||
|
|
||||||
|
import com.fr.design.editor.editor.DateEditor; |
||||||
|
import com.fr.log.FineLoggerFactory; |
||||||
|
|
||||||
|
import java.text.ParseException; |
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by XiaXiang on 2019/5/14. |
||||||
|
*/ |
||||||
|
public class VcsDateEditor extends DateEditor { |
||||||
|
private Date tempValue; |
||||||
|
|
||||||
|
public VcsDateEditor(Date value, boolean format, String name, int dateFormat) { |
||||||
|
super(value, format, name, dateFormat); |
||||||
|
this.tempValue = value; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Date getValue() { |
||||||
|
if (tempValue == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
return super.getValue(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setValue(Date value) { |
||||||
|
this.tempValue = value; |
||||||
|
try { |
||||||
|
getUiDatePicker().setSelectedDate(value); |
||||||
|
} catch (ParseException parseException) { |
||||||
|
FineLoggerFactory.getLogger().error(parseException.getMessage(), parseException); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,32 @@ |
|||||||
|
package com.fr.design.mainframe.vcs.ui; |
||||||
|
|
||||||
|
|
||||||
|
import com.fr.design.gui.ilable.ActionLabel; |
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
|
import java.awt.Graphics; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by XiaXiang on 2019/5/15. |
||||||
|
*/ |
||||||
|
public class VcsLabel extends ActionLabel { |
||||||
|
|
||||||
|
|
||||||
|
public VcsLabel(String text, Color color) { |
||||||
|
super(text); |
||||||
|
this.setForeground(color); |
||||||
|
} |
||||||
|
|
||||||
|
public void paintComponent(Graphics g) { |
||||||
|
if (ui != null) { |
||||||
|
Graphics scratchGraphics = (g == null) ? null : g.create(); |
||||||
|
try { |
||||||
|
ui.update(scratchGraphics, this); |
||||||
|
} |
||||||
|
finally { |
||||||
|
scratchGraphics.dispose(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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"; |
|
||||||
} |
|
||||||
} |
|
@ -1,62 +1,104 @@ |
|||||||
package com.fr.env; |
package com.fr.env; |
||||||
|
|
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
import com.fr.log.FineLoggerFactory; |
import com.fr.log.FineLoggerFactory; |
||||||
import com.fr.stable.AssistUtils; |
import com.fr.stable.AssistUtils; |
||||||
import com.fr.workspace.WorkContext; |
import com.fr.workspace.WorkContext; |
||||||
import com.fr.workspace.connect.WorkspaceConnectionInfo; |
import com.fr.workspace.connect.WorkspaceConnectionInfo; |
||||||
import com.fr.workspace.engine.channel.http.FunctionalHttpRequest; |
import com.fr.workspace.engine.channel.http.FunctionalHttpRequest; |
||||||
|
|
||||||
|
import javax.swing.Icon; |
||||||
|
import javax.swing.UIManager; |
||||||
|
|
||||||
/** |
/** |
||||||
* 测试连接的结果。 |
* 测试连接的结果。 |
||||||
* 不改变原有逻辑的情况下,加入一层转化。 |
* 不改变原有逻辑的情况下,加入一层转化。 |
||||||
* 根据这里的转化结果,判断需要提示哪些内容。 |
* 根据这里的转化结果,判断需要提示哪些内容。 |
||||||
* |
* <p> |
||||||
* created by Harrison on 2018/12/20 |
* created by Harrison on 2018/12/20 |
||||||
**/ |
**/ |
||||||
public enum TestConnectionResult { |
public enum TestConnectionResult { |
||||||
/** |
/** |
||||||
* 完全成功, 版本匹配,测试连接成功。 |
* 完全成功, 版本匹配,测试连接成功。 |
||||||
*/ |
*/ |
||||||
Fully_Success, |
FULLY_SUCCESS { |
||||||
|
@Override |
||||||
|
public Icon getIcon() { |
||||||
|
return UIManager.getIcon("OptionPane.informationIcon"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Basic_Remote_Connect_Successful"); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
/** |
/** |
||||||
* 不完全成功,版本不匹配,但测试连接成功。 |
* 不完全成功,版本不匹配,但测试连接成功。 |
||||||
*/ |
*/ |
||||||
Partly_Sucess, |
PARTLY_SUCCESS { |
||||||
|
@Override |
||||||
|
public Icon getIcon() { |
||||||
|
return UIManager.getIcon("OptionPane.warningIcon"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Version_Inconsistence_Test"); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
/** |
/** |
||||||
* 完全失败,直接没连上 |
* 完全失败,直接没连上 |
||||||
*/ |
*/ |
||||||
Fully_Failed, |
FULLY_FAILED { |
||||||
|
@Override |
||||||
|
public Icon getIcon() { |
||||||
|
return UIManager.getIcon("OptionPane.errorIcon"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Basic_Remote_Connect_Failed"); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
/** |
/** |
||||||
* 验证 Token 失败 |
* 验证 Token 失败 |
||||||
*/ |
*/ |
||||||
Auth_Failed; |
AUTH_FAILED { |
||||||
|
@Override |
||||||
|
public Icon getIcon() { |
||||||
|
return UIManager.getIcon("OptionPane.errorIcon"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Basic_Remote_Connect_Auth_Failed"); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
public abstract Icon getIcon(); |
||||||
|
|
||||||
|
public abstract String getText(); |
||||||
|
|
||||||
public static TestConnectionResult parse(Boolean value, WorkspaceConnectionInfo info) { |
public static TestConnectionResult parse(Boolean value, WorkspaceConnectionInfo info) { |
||||||
if (value == null) { |
if (value == null) { |
||||||
return Auth_Failed; |
return AUTH_FAILED; |
||||||
} |
} |
||||||
|
|
||||||
if (!value) { |
if (!value) { |
||||||
return Fully_Failed; |
return FULLY_FAILED; |
||||||
} |
} |
||||||
try { |
try { |
||||||
|
|
||||||
String serverVersion = new FunctionalHttpRequest(info).getServerVersion(); |
String serverVersion = new FunctionalHttpRequest(info).getServerVersion(); |
||||||
if (AssistUtils.equals(serverVersion, WorkContext.getVersion())) { |
if (AssistUtils.equals(serverVersion, WorkContext.getVersion())) { |
||||||
return Fully_Success; |
return FULLY_SUCCESS; |
||||||
} |
} |
||||||
|
return PARTLY_SUCCESS; |
||||||
return Partly_Sucess; |
|
||||||
} catch (Exception e) { |
} catch (Exception e) { |
||||||
|
|
||||||
// 发生异常,说明没连接上。返回完全失败。
|
// 发生异常,说明没连接上。返回完全失败。
|
||||||
FineLoggerFactory.getLogger().error(e.getMessage()); |
FineLoggerFactory.getLogger().error(e.getMessage()); |
||||||
return Fully_Failed; |
return FULLY_FAILED; |
||||||
} |
} |
||||||
|
|
||||||
|
|
||||||
} |
} |
||||||
} |
} |
||||||
|
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*/ |
After Width: | Height: | Size: 484 B |
Loading…
Reference in new issue