@ -0,0 +1,6 @@
|
||||
# open-JSD-10631 |
||||
|
||||
JSD-10631 主题插件\ |
||||
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ |
||||
仅作为开发者学习参考使用!禁止用于任何商业用途!\ |
||||
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系【pioneer】处理。 |
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin> |
||||
<id>com.fr.plugin.third.party.jsdbagdb</id> |
||||
<name><![CDATA[定制化主题_EK]]></name> |
||||
<active>yes</active> |
||||
<version>1.0.20</version> |
||||
<env-version>10.0~11.0</env-version> |
||||
<jartime>2019-01-01</jartime> |
||||
<vendor>fr.open</vendor> |
||||
<description><![CDATA[ |
||||
定制化主题 |
||||
]]></description> |
||||
<change-notes><![CDATA[ |
||||
]]></change-notes> |
||||
<extra-decision> |
||||
<ThemeVariousProvider class="com.fr.plugin.third.party.jsdbagdb.web.CustomisedThemeMain"/> |
||||
<HttpHandlerProvider class="com.fr.plugin.third.party.jsdbagdb.http.CustomHttpHandlerProvider"/> |
||||
<URLAliasProvider class="com.fr.plugin.third.party.jsdbagdb.http.CustomURLAliasProvider"/> |
||||
<!--<WebResourceProvider class="com.fr.plugin.third.party.jsdbagdb.web.WebResource"/>--> |
||||
</extra-decision> |
||||
<extra-core> |
||||
<ResourcePathTransformer class="com.fr.plugin.third.party.jsdbagdb.ErrorResourcePathTransformer"/> |
||||
</extra-core> |
||||
<function-recorder class="com.fr.plugin.third.party.jsdbagdb.Utils"/> |
||||
<lifecycle-monitor class="com.fr.plugin.third.party.jsdbagdb.PluginLifecycleMonitor"/> |
||||
</plugin> |
@ -0,0 +1,6 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb; |
||||
|
||||
|
||||
public class CustomisedThemeConstants { |
||||
public static String PLUGIN_ID = "com.fr.plugin.third.party.jsdbagdb"; |
||||
} |
@ -0,0 +1,19 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb; |
||||
|
||||
import com.fr.stable.fun.impl.AbstractResourcePathTransformer; |
||||
|
||||
public class ErrorResourcePathTransformer extends AbstractResourcePathTransformer { |
||||
public boolean accept(String path) { |
||||
return "/com/fr/web/core/errorIframe.html".equals(path); |
||||
} |
||||
|
||||
/** |
||||
* 转变资源读取的路径 |
||||
* |
||||
* @param path 待转换的路径 |
||||
* @return 资源文件的新路径 |
||||
*/ |
||||
public String transform(String path) { |
||||
return "/com/fr/plugin/third/party/jsdbagdb/web/errorIframe.html"; |
||||
} |
||||
} |
@ -0,0 +1,22 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb; |
||||
|
||||
import com.fr.plugin.context.PluginContext; |
||||
import com.fr.plugin.observer.inner.AbstractPluginLifecycleMonitor; |
||||
import com.fr.plugin.third.party.jsdbagdb.config.CustomDataConfig; |
||||
import com.fr.record.analyzer.EnableMetrics; |
||||
|
||||
|
||||
/** |
||||
* 配置信息初始化 |
||||
*/ |
||||
@EnableMetrics |
||||
public class PluginLifecycleMonitor extends AbstractPluginLifecycleMonitor { |
||||
@Override |
||||
public void afterRun(PluginContext pluginContext) { |
||||
CustomDataConfig.getInstance(); |
||||
} |
||||
|
||||
@Override |
||||
public void beforeStop(PluginContext pluginContext) { |
||||
} |
||||
} |
@ -0,0 +1,265 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb; |
||||
|
||||
import com.fr.base.Parameter; |
||||
import com.fr.base.ParameterHelper; |
||||
import com.fr.decision.webservice.v10.login.LoginService; |
||||
import com.fr.decision.webservice.v10.user.UserService; |
||||
import com.fr.general.GeneralUtils; |
||||
import com.fr.general.http.HttpToolbox; |
||||
import com.fr.i18n.LanguageConfig; |
||||
import com.fr.intelli.record.Focus; |
||||
import com.fr.intelli.record.Original; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.locale.InterProviderFactory; |
||||
import com.fr.plugin.context.PluginContext; |
||||
import com.fr.plugin.context.PluginContexts; |
||||
import com.fr.record.analyzer.EnableMetrics; |
||||
import com.fr.script.Calculator; |
||||
import com.fr.stable.ParameterProvider; |
||||
import com.fr.third.org.apache.http.HttpEntity; |
||||
import com.fr.third.org.apache.http.HttpStatus; |
||||
import com.fr.third.org.apache.http.client.config.RequestConfig; |
||||
import com.fr.third.org.apache.http.client.methods.CloseableHttpResponse; |
||||
import com.fr.third.org.apache.http.client.methods.HttpGet; |
||||
import com.fr.third.org.apache.http.impl.client.CloseableHttpClient; |
||||
import com.fr.third.org.apache.http.util.EntityUtils; |
||||
import com.fr.web.utils.WebUtils; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
import java.io.IOException; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Date; |
||||
import java.util.Locale; |
||||
import java.util.Map; |
||||
|
||||
@EnableMetrics |
||||
public class Utils { |
||||
@Focus(id = "com.fr.plugin.theme.azure", text = "plugin-theme-azure", source = Original.PLUGIN) |
||||
public static void logFunction() { |
||||
//功能点记录
|
||||
} |
||||
|
||||
/** |
||||
* 根据请求获取语言 |
||||
* |
||||
* @param req |
||||
* @return |
||||
* @throws Exception |
||||
*/ |
||||
public static Locale getLanguageByRequest(HttpServletRequest req) throws Exception { |
||||
Locale global = LanguageConfig.getInstance().getLocale(); |
||||
Locale locale = "zh_CN".equals(global.toString()) ? WebUtils.getLocale(req) : global; |
||||
|
||||
String userName = getUserNameByRequest(req); |
||||
if ((userName == null) || (userName.length() <= 0)) { |
||||
return locale; |
||||
} |
||||
|
||||
String language = UserService.getInstance().getUserByUserName(userName).getLanguage(); |
||||
if ((language == null) || (language.length() <= 0)) { |
||||
return locale; |
||||
} |
||||
locale = GeneralUtils.createLocale(language); |
||||
return locale; |
||||
} |
||||
|
||||
/** |
||||
* 获取对应国际化文本 |
||||
* @param key |
||||
* @param locale |
||||
* @return |
||||
*/ |
||||
public static String i18nText(String key, Locale locale) { |
||||
return InterProviderFactory.getProvider().getLocText(key, locale); |
||||
} |
||||
|
||||
public static String i18nText(String key) { |
||||
return InterProviderFactory.getProvider().getLocText(key); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 根据请求获取用户名 |
||||
* |
||||
* @param req 请求 |
||||
* @return |
||||
*/ |
||||
public static String getUserNameByRequest(HttpServletRequest req) { |
||||
String userName = LoginService.getInstance().getCurrentUserNameFromRequest(req); |
||||
if ((userName != null) && (userName.length() >= 1)) { |
||||
return userName; |
||||
} |
||||
|
||||
userName = LoginService.getInstance().getCurrentUserNameFromRequestCookie(req); |
||||
if ((userName != null) && (userName.length() >= 1)) { |
||||
return userName; |
||||
} |
||||
|
||||
Map<String, Object> values = WebUtils.parameters4SessionIDInfor(req); |
||||
if (values == null) { |
||||
return ""; |
||||
} |
||||
Object value = values.get("fr_username"); |
||||
if (value == null) { |
||||
return ""; |
||||
} |
||||
userName = (String) value; |
||||
return userName; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 判断插件是否要升级 |
||||
* <br/>只能判断fr10的插件版本是否升级 |
||||
* |
||||
* @param pluginID 插件ID |
||||
* @return |
||||
*/ |
||||
public static boolean isPluginUpgraded(String pluginID) throws IOException { |
||||
String versionUrl = "https://market.fanruan.com/commodities?pg=plugin&id=" + pluginID; |
||||
String userAgentValue = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"; |
||||
String refererValue = "https://market.fanruan.com/plugin/" + pluginID; |
||||
|
||||
CloseableHttpClient httpClient = HttpToolbox.getHttpClient(versionUrl); |
||||
HttpGet httpGet = new HttpGet(versionUrl); |
||||
httpGet.addHeader("User-Agent", userAgentValue); |
||||
httpGet.addHeader("Referer", refererValue); |
||||
httpGet.addHeader("Sec-Fetch-Site", "same-origin"); |
||||
httpGet.addHeader("Sec-Fetch-Mode", "cors"); |
||||
httpGet.addHeader("Sec-Fetch-Dest", "empty"); |
||||
//设置请求状态参数
|
||||
RequestConfig requestConfig = RequestConfig.custom() |
||||
.setConnectionRequestTimeout(3000) |
||||
.setSocketTimeout(3000) |
||||
.setConnectTimeout(3000).build(); |
||||
httpGet.setConfig(requestConfig); |
||||
String pluginInfo = null; |
||||
CloseableHttpResponse response = httpClient.execute(httpGet); |
||||
|
||||
//获取返回状态值
|
||||
int status = response.getStatusLine().getStatusCode(); |
||||
|
||||
//请求成功
|
||||
if (status == HttpStatus.SC_OK) { |
||||
HttpEntity httpEntity = response.getEntity(); |
||||
if (httpEntity != null) { |
||||
pluginInfo = EntityUtils.toString(httpEntity, "UTF-8"); |
||||
} |
||||
} |
||||
|
||||
if (pluginInfo == null) { |
||||
return false; |
||||
} |
||||
|
||||
JSONObject jsonObject = new JSONObject(pluginInfo); |
||||
String stateValue = jsonObject.getString("state"); |
||||
if (!"ok".equalsIgnoreCase(stateValue)) { |
||||
return false; |
||||
} |
||||
|
||||
JSONObject resultJSONObject = jsonObject.getJSONObject("result"); |
||||
if (resultJSONObject == null) { |
||||
return false; |
||||
} |
||||
JSONArray relatedPluginsJSONArray = resultJSONObject.getJSONArray("relatedPlugins"); |
||||
if ((relatedPluginsJSONArray == null) || (relatedPluginsJSONArray.size() <= 0)) { |
||||
return false; |
||||
} |
||||
JSONObject pluginJSONObject = relatedPluginsJSONArray.getJSONObject(0); |
||||
String pluginServerVersion = pluginJSONObject.getString("pluginversion"); |
||||
if (pluginServerVersion == null) { |
||||
return false; |
||||
} |
||||
|
||||
//本地版本号
|
||||
PluginContext pluginContext = PluginContexts.currentContext(); |
||||
String pluginLocalVersion = pluginContext.getVersion(); |
||||
int compareValue = pluginServerVersion.compareTo(pluginLocalVersion); |
||||
if (compareValue >= 1) { |
||||
return true; |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 替换文本中参数 |
||||
* |
||||
* @param textContent 文本内容 |
||||
* @return |
||||
*/ |
||||
public static String replaceParametersInText(String textContent) { |
||||
if (textContent == null) { |
||||
return ""; |
||||
} |
||||
String content = ""; |
||||
|
||||
Calculator cal = Calculator.createCalculator(); |
||||
Parameter[] parameters = ParameterHelper.analyze4Parameters(textContent, false); |
||||
content = replaceParametersInText(textContent, cal, parameters); |
||||
return content; |
||||
} |
||||
|
||||
/** |
||||
* 替换文本中参数 |
||||
* |
||||
* @param textContent 文本内容 |
||||
* @param cal 计算器 |
||||
* @return |
||||
*/ |
||||
public static String replaceParametersInText(String textContent, Calculator cal) { |
||||
if (textContent == null) { |
||||
return ""; |
||||
} |
||||
String content = ""; |
||||
Parameter[] parameters = ParameterHelper.analyze4Parameters(textContent, false); |
||||
content = replaceParametersInText(textContent, cal, parameters); |
||||
return content; |
||||
} |
||||
|
||||
/** |
||||
* 替换文本中参数 |
||||
* |
||||
* @param textContent 文本内容 |
||||
* @param cal 计算器 |
||||
* @param parameters 参数 |
||||
* @return |
||||
*/ |
||||
public static String replaceParametersInText(String textContent, Calculator cal, ParameterProvider[] parameters) { |
||||
if (textContent == null) { |
||||
return ""; |
||||
} |
||||
String content = ""; |
||||
Parameter[] paras = processParameters(parameters, cal); |
||||
content = ParameterHelper.analyzeCurrentContextTableData4Templatee(textContent, paras); |
||||
return content; |
||||
} |
||||
|
||||
/** |
||||
* 处理参数,计算出参数对应的值 |
||||
* |
||||
* @param paras 参数 |
||||
* @param cal 计算器 |
||||
* @return |
||||
*/ |
||||
public static Parameter[] processParameters(ParameterProvider[] paras, Calculator cal) { |
||||
if ((paras == null) || (paras.length <= 0)) { |
||||
return new Parameter[0]; |
||||
} |
||||
return Parameter.providers2Parameter(Calculator.processParameters(cal, paras)); |
||||
} |
||||
|
||||
|
||||
private static final ThreadLocal<SimpleDateFormat> sdf = new ThreadLocal<SimpleDateFormat>() { |
||||
@Override |
||||
protected SimpleDateFormat initialValue() { |
||||
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); |
||||
} |
||||
}; |
||||
|
||||
public static String formatDateWithMillisecond(Date date) { |
||||
return sdf.get().format(date); |
||||
} |
||||
} |
@ -0,0 +1,55 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb.config; |
||||
|
||||
import com.fr.config.*; |
||||
import com.fr.config.holder.Conf; |
||||
import com.fr.config.holder.factory.Holders; |
||||
|
||||
/** |
||||
* 配置数据保存 |
||||
*/ |
||||
@Visualization(category = "定制化主题") |
||||
public class CustomDataConfig extends DefaultConfiguration { |
||||
@Override |
||||
public String getNameSpace() { |
||||
return this.getClass().getName(); |
||||
} |
||||
|
||||
private static volatile CustomDataConfig config = null; |
||||
|
||||
public static CustomDataConfig getInstance() { |
||||
if (config == null) { |
||||
config = ConfigContext.getConfigInstance(CustomDataConfig.class); |
||||
} |
||||
return config; |
||||
} |
||||
|
||||
@Identifier(value = "showSystemMessage", name = "显示系统消息图标", description = "", status = Status.SHOW) |
||||
private Conf<Boolean> showSystemMessage = Holders.simple(true); |
||||
|
||||
@Identifier(value = "showFullScreen", name = "显示全屏图标", description = "", status = Status.SHOW) |
||||
private Conf<Boolean> showFullScreen = Holders.simple(true); |
||||
|
||||
public Boolean isShowSystemMessage() { |
||||
return showSystemMessage.get(); |
||||
} |
||||
|
||||
public void setShowSystemMessage(Boolean showSystemMessage) { |
||||
this.showSystemMessage.set(showSystemMessage); |
||||
} |
||||
|
||||
public Boolean isShowFullScreen() { |
||||
return showFullScreen.get(); |
||||
} |
||||
|
||||
public void setShowFullScreen(Boolean showFullScreen) { |
||||
this.showFullScreen.set(showFullScreen); |
||||
} |
||||
|
||||
@Override |
||||
public Object clone() throws CloneNotSupportedException { |
||||
CustomDataConfig cloned = (CustomDataConfig) super.clone(); |
||||
cloned.showSystemMessage = (Conf<Boolean>) showSystemMessage.clone(); |
||||
cloned.showFullScreen = (Conf<Boolean>) showFullScreen.clone(); |
||||
return cloned; |
||||
} |
||||
} |
@ -0,0 +1,39 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb.http; |
||||
|
||||
import com.fr.decision.fun.impl.BaseHttpHandler; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.third.party.jsdbagdb.config.CustomDataConfig; |
||||
import com.fr.third.springframework.web.bind.annotation.RequestMethod; |
||||
import com.fr.web.utils.WebUtils; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
|
||||
/** |
||||
* 保存下载文件配置 |
||||
*/ |
||||
public class ConfigHttpHandler extends BaseHttpHandler { |
||||
@Override |
||||
public RequestMethod getMethod() { |
||||
return RequestMethod.GET; |
||||
} |
||||
|
||||
@Override |
||||
public String getPath() { |
||||
return "/jsdbagdb/config"; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isPublic() { |
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { |
||||
res.setContentType("application/json; charset=utf-8"); |
||||
JSONObject json = new JSONObject(); |
||||
json.put("showSystemMessage", CustomDataConfig.getInstance().isShowSystemMessage()); |
||||
json.put("showFullScreen", CustomDataConfig.getInstance().isShowFullScreen()); |
||||
WebUtils.printAsJSON(res, json); |
||||
} |
||||
} |
@ -0,0 +1,14 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb.http; |
||||
|
||||
import com.fr.decision.fun.impl.AbstractHttpHandlerProvider; |
||||
import com.fr.decision.fun.impl.BaseHttpHandler; |
||||
|
||||
public class CustomHttpHandlerProvider extends AbstractHttpHandlerProvider { |
||||
@Override |
||||
public BaseHttpHandler[] registerHandlers() { |
||||
return new BaseHttpHandler[]{ |
||||
new ConfigHttpHandler(), |
||||
new HealthHttpHandler() |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,15 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb.http; |
||||
|
||||
import com.fr.decision.fun.impl.AbstractURLAliasProvider; |
||||
import com.fr.decision.webservice.url.alias.URLAlias; |
||||
import com.fr.decision.webservice.url.alias.URLAliasFactory; |
||||
|
||||
public class CustomURLAliasProvider extends AbstractURLAliasProvider { |
||||
@Override |
||||
public URLAlias[] registerAlias() { |
||||
return new URLAlias[]{ |
||||
URLAliasFactory.createPluginAlias("/jsdbagdb/config", "/jsdbagdb/config", false), |
||||
URLAliasFactory.createPluginAlias("/jsdbagdb/health", "/jsdbagdb/health", false), |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,38 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb.http; |
||||
|
||||
import com.fr.decision.fun.impl.BaseHttpHandler; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.third.party.jsdbagdb.config.CustomDataConfig; |
||||
import com.fr.third.springframework.web.bind.annotation.RequestMethod; |
||||
import com.fr.web.utils.WebUtils; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
|
||||
/** |
||||
* 检测监控状况 |
||||
*/ |
||||
public class HealthHttpHandler extends BaseHttpHandler { |
||||
@Override |
||||
public RequestMethod getMethod() { |
||||
return RequestMethod.GET; |
||||
} |
||||
|
||||
@Override |
||||
public String getPath() { |
||||
return "/jsdbagdb/health"; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isPublic() { |
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { |
||||
res.setContentType("application/json; charset=utf-8"); |
||||
JSONObject json = new JSONObject(); |
||||
json.put("health", true); |
||||
WebUtils.printAsJSON(res, json); |
||||
} |
||||
} |
@ -0,0 +1,41 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb.web; |
||||
|
||||
import com.fr.decision.fun.impl.AbstractThemeVariousProvider; |
||||
import com.fr.decision.web.MainComponent; |
||||
import com.fr.plugin.third.party.jsdbagdb.Utils; |
||||
import com.fr.stable.fun.Authorize; |
||||
import com.fr.web.struct.Atom; |
||||
|
||||
/** |
||||
* 决策平台页面 |
||||
*/ |
||||
@Authorize(callSignKey = "com.fr.plugin.third.party.jsdbagdb") |
||||
public class CustomisedThemeMain extends AbstractThemeVariousProvider { |
||||
@Override |
||||
public Atom attach() { |
||||
//在平台主组件加载时添加我们自己的组件
|
||||
return MainComponent.KEY; |
||||
} |
||||
|
||||
@Override |
||||
public Atom client() { |
||||
//我们自己要引入的组件
|
||||
Utils.logFunction(); |
||||
return MainFilesComponent.KEY; |
||||
} |
||||
|
||||
@Override |
||||
public String name() { |
||||
return "定制化主题"; |
||||
} |
||||
|
||||
@Override |
||||
public String text() { |
||||
return "定制化主题"; |
||||
} |
||||
|
||||
@Override |
||||
public String coverPath() { |
||||
return "com/fr/plugin/third/party/jsdbagdb/image/theme-logo.png"; |
||||
} |
||||
} |
@ -0,0 +1,59 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb.web; |
||||
|
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fr.decision.config.AppearanceConfig; |
||||
import com.fr.plugin.context.PluginContexts; |
||||
import com.fr.plugin.third.party.jsdbagdb.CustomisedThemeConstants; |
||||
import com.fr.plugin.third.party.jsdbagdb.Utils; |
||||
import com.fr.web.struct.Component; |
||||
import com.fr.web.struct.Filter; |
||||
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; |
||||
|
||||
public class MainFilesComponent extends Component { |
||||
public static final MainFilesComponent KEY = new MainFilesComponent(); |
||||
private MainFilesComponent(){} |
||||
/** |
||||
* 返回需要引入的JS脚本路径 |
||||
* @param client 请求客户端描述 |
||||
* @return JS脚本路径 |
||||
*/ |
||||
@Override |
||||
public ScriptPath script(RequestClient client ) { |
||||
//如果不需要就直接返回 ScriptPath.EMPTY
|
||||
return ScriptPath.build("com/fr/plugin/third/party/jsdbagdb/web/main.js"); |
||||
} |
||||
|
||||
/** |
||||
* 返回需要引入的CSS样式路径 |
||||
* @param client 请求客户端描述 |
||||
* @return CSS样式路径 |
||||
*/ |
||||
@Override |
||||
public StylePath style(RequestClient client ) { |
||||
//如果不需要就直接返回 StylePath.EMPTY;
|
||||
return StylePath.build("com/fr/plugin/third/party/jsdbagdb/web/main.css", ParserType.DYNAMIC); |
||||
} |
||||
|
||||
/** |
||||
* 通过给定的资源过滤器控制是否加载这个资源 |
||||
* @return 资源过滤器 |
||||
*/ |
||||
@Override |
||||
public Filter filter() { |
||||
return new Filter(){ |
||||
@Override |
||||
public boolean accept() { |
||||
Utils.logFunction(); |
||||
if (!PluginContexts.currentContext().isAvailable()) { |
||||
LogKit.error("定制化主题插件过期"); |
||||
return false; |
||||
} |
||||
String loginPageId = AppearanceConfig.getInstance().getThemeId(); |
||||
return CustomisedThemeConstants.PLUGIN_ID.equals(loginPageId); |
||||
} |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,18 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb.web; |
||||
|
||||
import com.fr.web.struct.Component; |
||||
import com.fr.web.struct.category.ScriptPath; |
||||
|
||||
public class WebComponent extends Component { |
||||
|
||||
public static final WebComponent KEY = new WebComponent(); |
||||
|
||||
private WebComponent() { |
||||
} |
||||
|
||||
@Override |
||||
public ScriptPath script() { |
||||
return ScriptPath.build("com/fr/plugin/third/party/jsdbagdb/web/web.js"); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,18 @@
|
||||
package com.fr.plugin.third.party.jsdbagdb.web; |
||||
|
||||
import com.finebi.foundation.api.web.component.AssembleComponentFactory; |
||||
import com.fr.decision.fun.impl.AbstractWebResourceProvider; |
||||
import com.fr.web.struct.Atom; |
||||
|
||||
public class WebResource extends AbstractWebResourceProvider { |
||||
|
||||
@Override |
||||
public Atom attach() { |
||||
return AssembleComponentFactory.getShowComponent(); |
||||
} |
||||
|
||||
@Override |
||||
public Atom client() { |
||||
return WebComponent.KEY; |
||||
} |
||||
} |
After Width: | Height: | Size: 4.5 MiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 152 B |
After Width: | Height: | Size: 706 B |
After Width: | Height: | Size: 910 B |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 879 B |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 270 B |
After Width: | Height: | Size: 894 B |
@ -0,0 +1,67 @@
|
||||
<!doctype html> |
||||
<html> |
||||
<head> |
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> |
||||
<meta http-equiv="Content-Type" content="text/html; charset=${charset}"> |
||||
<meta name="author" content="FineReport"/> |
||||
<meta name="Copyright" content="FineReport"/> |
||||
<meta name="description" content="FineReport--Web Reporting Tool"/> |
||||
<meta name="keywords" content="FineReport,Web Reporting Tool"/> |
||||
<title>${title}</title> |
||||
<link rel="stylesheet" type="text/css" |
||||
href="${remoteServletURL}?op=resource&resource=/com/fr/web/core/css/error.css"> |
||||
<style type="text/css"> |
||||
.tab-content{ |
||||
background-color: #091c3e !important; |
||||
color: #ffffff !important; |
||||
} |
||||
</style> |
||||
</head> |
||||
|
||||
<body style="background-color: #0a1232;"> |
||||
<div id="wrapper"> |
||||
<div> |
||||
<div> |
||||
<div id="header" style="visibility: hidden;"> |
||||
<img id="header-content" |
||||
src="${remoteServletURL}?op=resource&resource=/com/fr/web/images/error/error-with-solution-bg.png"> |
||||
</div> |
||||
<div id="tip"> |
||||
<div id="tip-oops">Oops!!!</div> |
||||
<div id="tip-detail">${errorTip}</div> |
||||
</div> |
||||
</div> |
||||
<div id="detail"> |
||||
<div id='detail-message'> |
||||
<p>${message}</p> |
||||
</div> |
||||
|
||||
<div id="exception-tab" class="tab tab-unselected">${exceptionTab}</div> |
||||
<div id="solution-tab" class="tab tab-selected">${solutionTab}</div> |
||||
<div id="exception" class="tab-content" style="display: none"> |
||||
<pre>${exception}</pre> |
||||
</div> |
||||
<div id="solution" class="tab-content" style="display: block"> |
||||
<pre>${solution}</pre> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<script type="text/javascript"> |
||||
document.getElementById("exception-tab").onclick = function(){ |
||||
document.getElementById("exception-tab").className = "tab tab-selected"; |
||||
document.getElementById("solution-tab").className = "tab tab-unselected"; |
||||
document.getElementById("exception").style.display = "block"; |
||||
document.getElementById("solution").style.display = "none"; |
||||
}; |
||||
|
||||
document.getElementById("solution-tab").onclick = function(){ |
||||
document.getElementById("exception-tab").className = "tab tab-unselected"; |
||||
document.getElementById("solution-tab").className = "tab tab-selected"; |
||||
document.getElementById("exception").style.display = "none"; |
||||
document.getElementById("solution").style.display = "block"; |
||||
}; |
||||
</script> |
||||
</body> |
||||
|
||||
</html> |
@ -0,0 +1,638 @@
|
||||
.dec-frame-header { |
||||
background-color: #0a1232 !important; |
||||
/*border-bottom-color: rgba(255, 255, 255, 0.75); |
||||
border-bottom-width: 1px; |
||||
border-bottom-style: solid;*/ |
||||
} |
||||
|
||||
.dec-frame-menu { |
||||
background-color: #091C3E !important; |
||||
} |
||||
|
||||
.account-down-arrow-font { |
||||
color: #006CB5 !important; |
||||
} |
||||
|
||||
.account-up-arrow-font { |
||||
color: #006CB5 !important; |
||||
} |
||||
|
||||
.msg-font .b-font:before { |
||||
content: unset !important; |
||||
color: unset !important; |
||||
} |
||||
|
||||
.msg-font { |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/msg-logo.png) center center no-repeat !important; |
||||
background-size: 16px 16px !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
} |
||||
|
||||
.dec-frame-header-message.dec-header-message { |
||||
margin-right: 3px !important; |
||||
} |
||||
|
||||
.jsdbagdb-favorite-font { |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/favorite-logo.png) center center no-repeat !important; |
||||
background-size: 16px 16px !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
margin-right: 10px !important; |
||||
} |
||||
|
||||
.jsdbagdb-full-screen-font { |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/full-screen-logo.png) center center no-repeat !important; |
||||
background-size: 18px 18px !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
margin-right: 10px !important; |
||||
} |
||||
|
||||
|
||||
.jsdbagdb-platform-search-font { |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/search-logo.png) center center no-repeat !important; |
||||
background-size: 16px 16px !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
margin-right: 3px !important; |
||||
} |
||||
|
||||
.jsdbagdb-platform-search-button { |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/search1-logo.png) center center no-repeat !important; |
||||
background-color: #0185FF !important; |
||||
background-size: 16px 16px !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
} |
||||
|
||||
.dec-banner-jsdbagdb { |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/banner.png) center center no-repeat !important; |
||||
background-size: 100% 100% !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
} |
||||
|
||||
.dec-banner-platform-title-jsdbagdb { |
||||
left: 30px; |
||||
color: #FFFFFF !important; |
||||
font-weight: 500 !important; |
||||
padding-left: unset !important; |
||||
} |
||||
|
||||
.dec-header-account-username.dec-frame-text { |
||||
color: #FFFFFF !important; |
||||
} |
||||
.dec-header-account{ |
||||
margin-left: 10px; |
||||
} |
||||
|
||||
.dec-platform-img-jsdbagdb { |
||||
left: 16px; |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/decison-log.png) center center no-repeat !important; |
||||
background-size: 100% 100% !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
} |
||||
|
||||
.dec-frame-body { |
||||
/*background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/background-img.png) center center no-repeat !important;*/ |
||||
background-color: #0a1333; |
||||
background-size: 100% 100% !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
} |
||||
|
||||
|
||||
.second-level-menu-items-jsdbagdb { |
||||
height: 32px; |
||||
margin-top: 15px; |
||||
margin-left: 332px; |
||||
float: left; |
||||
white-space: nowrap; |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
} |
||||
|
||||
.menu-item-text-jsdbagdb { |
||||
white-space: nowrap; |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
width: 90px; |
||||
height: 100%; |
||||
margin-left: 15px; |
||||
font-size: 14px; |
||||
text-align: center; |
||||
color: rgba(255, 255, 255, 0.65); |
||||
line-height: 32px; |
||||
float: left; |
||||
} |
||||
|
||||
.menu-item-text-jsdbagdb.active { |
||||
color: white !important; |
||||
font-weight: 500 !important; |
||||
} |
||||
|
||||
.second-level-menu-item-jsdbagdb-others.active { |
||||
color: white !important; |
||||
} |
||||
|
||||
.third-level-menu-item-jsdbagdb-others.active { |
||||
color: white !important; |
||||
} |
||||
|
||||
.menu-item-more-vertical-jsdbagdb.right { |
||||
width: 0; |
||||
height: 0; |
||||
border-left: 6px solid #1371F8; |
||||
border-top: 6px solid transparent; |
||||
border-bottom: 6px solid transparent; |
||||
z-index: 100; |
||||
margin-top: 10px; |
||||
margin-left: 185px; |
||||
} |
||||
|
||||
.menu-item-more-vertical-jsdbagdb.right-down { |
||||
width: 0; |
||||
height: 0; |
||||
border-top: 6px solid rgba(19, 113, 248, 0.65); |
||||
border-left: 6px solid transparent; |
||||
border-right: 6px solid transparent; |
||||
z-index: 100; |
||||
margin-top: 12px; |
||||
margin-left: 183px; |
||||
} |
||||
|
||||
|
||||
.menu-item-more-jsdbagdb.up { |
||||
width: 0; |
||||
height: 0; |
||||
border-bottom: 6px solid #1371F8; |
||||
border-left: 6px solid transparent; |
||||
border-right: 6px solid transparent; |
||||
z-index: 100; |
||||
margin-left: 100px; |
||||
margin-top: 13px; |
||||
} |
||||
|
||||
|
||||
.menu-item-more-vertical-jsdbagdb.left { |
||||
width: 0; |
||||
height: 0; |
||||
border-right: 6px solid #1371F8; |
||||
border-top: 6px solid transparent; |
||||
border-bottom: 6px solid transparent; |
||||
z-index: 100; |
||||
margin-top: 10px; |
||||
margin-left: 5px; |
||||
} |
||||
|
||||
.menu-item-more-jsdbagdb.down { |
||||
width: 0; |
||||
height: 0; |
||||
border-top: 6px solid rgba(19, 113, 248, 0.65); |
||||
border-left: 6px solid transparent; |
||||
border-right: 6px solid transparent; |
||||
z-index: 100; |
||||
margin-left: 105px; |
||||
margin-top: 13px; |
||||
} |
||||
|
||||
.menu-item-more-vertical-jsdbagdb.down { |
||||
width: 0; |
||||
height: 0; |
||||
border-top: 6px solid rgba(19, 113, 248, 0.65); |
||||
border-left: 6px solid transparent; |
||||
border-right: 6px solid transparent; |
||||
z-index: 100; |
||||
margin-top: 13px; |
||||
margin-left: 1px; |
||||
} |
||||
|
||||
.second-level-menu-item-horizontal-jsdbagdb { |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/second-level-menu-item.png) center center no-repeat !important; |
||||
background-size: 100% 100% !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
width: 122px; |
||||
height: 32px; |
||||
float: left; |
||||
|
||||
} |
||||
|
||||
.second-level-menu-item-vertical-jsdbagdb { |
||||
height: 32px; |
||||
width: 100%; |
||||
border-top-style: solid; |
||||
border-top-width: 2px; |
||||
border-top-color: rgba(255, 255, 255, 0.06); |
||||
background-color: #0D2149; |
||||
} |
||||
|
||||
|
||||
.second-level-menu-item-jsdbagdb-others { |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/second-level-menu-item-others.png) center center no-repeat !important; |
||||
background-size: 100% 100% !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
width: 61px; |
||||
height: 32px; |
||||
float: left; |
||||
font-size: 14px; |
||||
text-align: center; |
||||
color: rgba(255, 255, 255, 0.65); |
||||
line-height: 32px; |
||||
font-weight: 900; |
||||
} |
||||
|
||||
.third-level-menu-items-jsdbagdb { |
||||
height: 32px; |
||||
margin-top: 8px; |
||||
margin-left: 14px; |
||||
float: left; |
||||
} |
||||
|
||||
.third-level-menu-item-horizontal-jsdbagdb { |
||||
width: 122px; |
||||
height: 32px; |
||||
float: left; |
||||
border-width: 1px; |
||||
border-color: #092F68; |
||||
border-style: solid; |
||||
background-color: #05102B; |
||||
} |
||||
|
||||
.third-level-menu-item-jsdbagdb-others { |
||||
width: 40px; |
||||
height: 32px; |
||||
float: left; |
||||
color: rgba(255, 255, 255, 0.65); |
||||
font-weight: 900; |
||||
text-align: center; |
||||
border-width: 1px; |
||||
border-color: #092F68; |
||||
border-style: solid; |
||||
background-color: #05102B; |
||||
} |
||||
|
||||
.third-level-menu-item-vertical-jsdbagdb { |
||||
height: 32px; |
||||
width: 100%; |
||||
border-top-style: solid; |
||||
border-top-width: 2px; |
||||
border-top-color: rgba(255, 255, 255, 0.06); |
||||
background-color: #0D2149; |
||||
} |
||||
|
||||
.third-level-menu-item-jsdbagdb-others-menu-show { |
||||
width: 122px; |
||||
height: auto; |
||||
top: 87px; |
||||
right: 10px; |
||||
position: absolute; |
||||
z-index: 200; |
||||
} |
||||
|
||||
.fourth-level-menu-item-vertical-jsdbagdb { |
||||
height: 32px; |
||||
width: 100%; |
||||
border-top-style: solid; |
||||
border-top-width: 2px; |
||||
border-top-color: rgba(255, 255, 255, 0.06); |
||||
background-color: #0D2149; |
||||
} |
||||
|
||||
.fifth-level-menu-item-vertical-jsdbagdb { |
||||
height: 32px; |
||||
width: 100%; |
||||
border-top-style: solid; |
||||
border-top-width: 2px; |
||||
border-top-color: rgba(255, 255, 255, 0.06); |
||||
background-color: #0D2149; |
||||
} |
||||
|
||||
.sixth-level-menu-item-vertical-jsdbagdb { |
||||
height: 32px; |
||||
width: 100%; |
||||
border-top-style: solid; |
||||
border-top-width: 2px; |
||||
border-top-color: rgba(255, 255, 255, 0.06); |
||||
background-color: #0D2149; |
||||
} |
||||
|
||||
|
||||
.dec-frame-menu .dec-frame-menu-item.active { |
||||
color: #FFFFFF !important; |
||||
} |
||||
|
||||
.dec-frame-menu .dec-frame-menu-item { |
||||
color: #57657D !important; |
||||
} |
||||
|
||||
|
||||
.dec-menu-button.dec-frame-menu-item { |
||||
margin-top: 0px !important; |
||||
margin-bottom: 0px !important; |
||||
height: 80px !important; |
||||
} |
||||
|
||||
.dec-common-tabs > .dec-error-masker { |
||||
display: none; |
||||
} |
||||
|
||||
.dec-common-tabs > .bi-iframe { |
||||
background-color: transparent; |
||||
} |
||||
|
||||
.jsdbagdb-platform-search-result-no-data-tips-img { |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/search-no-data.png) center center no-repeat !important; |
||||
background-size: 100% 100% !important; |
||||
image-rendering: -moz-crisp-edges; /* Firefox */ |
||||
image-rendering: -o-crisp-edges; /* Opera */ |
||||
image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ |
||||
width: 210px; |
||||
height: 88px; |
||||
margin-left: 35px; |
||||
margin-top: 50px; |
||||
} |
||||
|
||||
.jsdbagdb-platform-search-result-no-data-tips-text { |
||||
width: 100%; |
||||
font-size: 14px; |
||||
color: rgba(255, 255, 255, 0.45); |
||||
text-align: center; |
||||
} |
||||
|
||||
#search-report-key-jsdbagdb { |
||||
width: 230px; |
||||
height: 100%; |
||||
border: none; |
||||
outline: none; |
||||
padding: 0px; |
||||
margin: 0px; |
||||
margin-left: 6px; |
||||
inset: 0px; |
||||
position: absolute; |
||||
color: white; |
||||
} |
||||
|
||||
.search-report-key-result-item-jsdbagdb { |
||||
width: 100%; |
||||
margin-top: 12px; |
||||
} |
||||
|
||||
.search-report-key-result-item-text-jsdbagdb { |
||||
text-align: left; |
||||
font-size: 14px; |
||||
color: white; |
||||
margin-left: 20px; |
||||
white-space: nowrap; |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
width: 250px; |
||||
} |
||||
|
||||
.search-report-key-result-item-text-jsdbagdb > span { |
||||
color: #0084FF !important; |
||||
} |
||||
|
||||
.search-report-key-result-item-path-jsdbagdb { |
||||
font-size: 12px; |
||||
color: rgba(255, 255, 255, 0.75); |
||||
margin-left: 20px; |
||||
white-space: nowrap; |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
margin-top: 3px; |
||||
width: 250px; |
||||
} |
||||
|
||||
.dec-constant-account-items-jsdbagdb { |
||||
background-color: #05102b !important; |
||||
color: white !important; |
||||
border-width: 1px !important; |
||||
border-color: #092F68 !important; |
||||
border-style: solid !important; |
||||
} |
||||
|
||||
.dec-account-setting-jsdbagdb { |
||||
background-color: #05102b !important; |
||||
color: white !important; |
||||
border-width: 1px !important; |
||||
border-color: #092F68 !important; |
||||
border-style: solid !important; |
||||
} |
||||
|
||||
.dec-account-setting-jsdbagdb > .bi-message-title { |
||||
background-color: #05102b !important; |
||||
color: white !important; |
||||
border-width: 1px !important; |
||||
border-color: #092F68 !important; |
||||
border-style: solid !important; |
||||
} |
||||
|
||||
|
||||
/* |
||||
#wrapper > .bi-f-h.v-stretch.h-stretch { |
||||
top: 48px !important; |
||||
}*/ |
||||
|
||||
.menu-button-line { |
||||
background-color: unset; |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/menu-button-line.png) center center no-repeat !important; |
||||
height: 35px !important; |
||||
} |
||||
|
||||
.third-level-menu-item-select-bottom { |
||||
width: 100%; |
||||
height: 5px; |
||||
margin-top: 29px; |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/third-level-menu-item-select-bottom.png) center center no-repeat !important; |
||||
} |
||||
|
||||
.third-level-menu-item-select-bottom-more { |
||||
width: 100%; |
||||
height: 5px; |
||||
margin-top: 11px; |
||||
background: url(${fineServletURL}/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/third-level-menu-item-select-bottom.png) center center no-repeat !important; |
||||
} |
||||
|
||||
.fourth-level-menu-item-text-jsdbagdb:hover { |
||||
color: #0085FF !important; |
||||
font-weight: 500 !important; |
||||
} |
||||
|
||||
|
||||
.fourth-level-menu-item-text-jsdbagdb { |
||||
width: 170px !important; |
||||
margin-left: 15px; |
||||
text-align: left; |
||||
} |
||||
|
||||
.third-level-menu-item-vertical-text-jsdbagdb:hover { |
||||
color: #0085FF !important; |
||||
font-weight: 500 !important; |
||||
text-align: left !important; |
||||
} |
||||
|
||||
.third-level-menu-item-vertical-text-jsdbagdb { |
||||
text-align: left !important; |
||||
} |
||||
|
||||
.third-level-menu-item-jsdbagdb-others-img { |
||||
width: 24px; |
||||
height: 24px; |
||||
margin-left: 7px; |
||||
margin-top: 4px; |
||||
background: url(/webroot/decision/resources?path=/com/fr/plugin/third/party/jsdbagdb/image/third-level-menu-item-others.png) center center no-repeat !important; |
||||
background-size: 100% 100% !important; |
||||
image-rendering: -moz-crisp-edges; |
||||
image-rendering: -o-crisp-edges; |
||||
image-rendering: -webkit-optimize-contrast; |
||||
image-rendering: crisp-edges; |
||||
-ms-interpolation-mode: nearest-neighbor; |
||||
} |
||||
|
||||
.jsdbagdb-platform-search-result-content::-webkit-scrollbar-thumb { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
.jsdbagdb-platform-search-result-content::-webkit-scrollbar-thumb:hover { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
|
||||
.third-level-menu-item-jsdbagdb-more-menu-show::-webkit-scrollbar-thumb { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
.third-level-menu-item-jsdbagdb-more-menu-show::-webkit-scrollbar-thumb:hover { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
.fourth-level-menu-item-jsdbagdb-more-menu-show::-webkit-scrollbar-thumb { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
.fourth-level-menu-item-jsdbagdb-more-menu-show::-webkit-scrollbar-thumb:hover { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
.fifth-level-menu-item-jsdbagdb-more-menu-show::-webkit-scrollbar-thumb { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
.fifth-level-menu-item-jsdbagdb-more-menu-show::-webkit-scrollbar-thumb:hover { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
.sixth-level-menu-item-jsdbagdb-more-menu-show::-webkit-scrollbar-thumb { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
.sixth-level-menu-item-jsdbagdb-more-menu-show::-webkit-scrollbar-thumb:hover { |
||||
background-color: #1371F8; |
||||
} |
||||
|
||||
.close-search-show-jsdbagdb:hover { |
||||
color: #0085FF !important; |
||||
} |
||||
|
||||
.jsdbagdb-dir-font-1 .b-font:before { |
||||
content: "\e76d"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-2 .b-font:before { |
||||
content: "\e89d"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-3 .b-font:before { |
||||
content: "\e88d"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-4 .b-font:before { |
||||
content: "\e629"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-5 .b-font:before { |
||||
content: "\e800"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-6 .b-font:before { |
||||
content: "\e674"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-7 .b-font:before { |
||||
content: "\e853"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-8 .b-font:before { |
||||
content: "\e89b"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-9 .b-font:before { |
||||
content: "\e74c"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-10 .b-font:before { |
||||
content: "\e747"; |
||||
color: inherit; |
||||
} |
||||
.jsdbagdb-dir-font-11 .b-font:before { |
||||
content: "\e848"; |
||||
color: inherit; |
||||
} |
||||
|
||||
#header-content{ |
||||
visibility: hidden !important; |
||||
} |
||||
|
||||
|
||||
/* |
||||
.dec-common-tabs { |
||||
margin-top: 56px; |
||||
}*/ |
||||
|
||||
|
||||
/* |
||||
.bi-img.display-block.f-s-n.c-e.f-c { |
||||
display: none !important; |
||||
} |
||||
|
||||
|
||||
|
||||
.dec-slider.dec-frame-popover { |
||||
display: none !important; |
||||
}*/ |
@ -0,0 +1,92 @@
|
||||
!(function () { |
||||
debugger; |
||||
var a = BI.Utils.doJumpByTemplateId; |
||||
BI.Utils.doJumpByTemplateId = function (e, c) { |
||||
debugger; |
||||
var dec = getDec(); |
||||
if ((dec != undefined) && (c.name == undefined)) { |
||||
console.log('a'); |
||||
openTab(e, c); |
||||
return; |
||||
} |
||||
a(e, c); |
||||
} |
||||
|
||||
|
||||
function openTab(e, c) { |
||||
debugger; |
||||
var o = c.templateHelper; |
||||
|
||||
var formData = {}; |
||||
formData.parameter = c.parameter; |
||||
formData.clicked = c.clicked; |
||||
formData.linkedWidget = c.linkedWidget; |
||||
formData.sourceTemplateName = o.getName(); |
||||
formData.form = true; |
||||
|
||||
var sourceId = o.getId(); |
||||
var toId = e; |
||||
var hyperlinkUrl = BI.fineServletURL + "/v5/design/report/design/hyperlink?reportId=" + sourceId + "&bi_entry_type=1"; |
||||
$.ajax({ |
||||
url: hyperlinkUrl, |
||||
data: JSON.stringify({ |
||||
source: sourceId, |
||||
to: toId, |
||||
hyperlink: o.getBasePool().fine_hyperlink || "", |
||||
reportEntryId: o.getBasePool().reportEntryId || "", |
||||
digitalSignature: "" |
||||
}), |
||||
type: 'POST', |
||||
crossDomain: true, |
||||
dataType: 'json', |
||||
contentType: 'application/json;charset=utf-8', |
||||
success: function (data) { |
||||
if (data.success && (true == data.success)) { |
||||
var openUrl = BI.fineServletURL + "/v5/design/report/" + toId + "/view?form=true&fine_hyperlink=" + data.data; |
||||
var dec = getDec(); |
||||
if (dec == undefined) { |
||||
return; |
||||
} |
||||
|
||||
$.ajax({ |
||||
url: openUrl, |
||||
data: { |
||||
parameter :encodeURIComponent(JSON.stringify(formData.parameter)), |
||||
clicked :encodeURIComponent(JSON.stringify(formData.clicked)), |
||||
linkedWidget :encodeURIComponent(JSON.stringify(formData.linkedWidget)), |
||||
sourceTemplateName :encodeURIComponent(JSON.stringify(formData.sourceTemplateName)), |
||||
form :formData.form |
||||
}, |
||||
type: 'POST', |
||||
crossDomain: true, |
||||
dataType: 'html', |
||||
contentType: 'application/x-www-form-urlencoded', |
||||
success: function (data) { |
||||
debugger; |
||||
dec.Utils.jsdbagdbTheme.openIframeTab(data); |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
function getDec() { |
||||
var parentWindow = window.parent; |
||||
try { |
||||
while (parentWindow !== parentWindow.parent) { |
||||
if (parentWindow && parentWindow.Dec) { |
||||
return parentWindow.Dec; |
||||
} else { |
||||
parentWindow = parentWindow.parent; |
||||
} |
||||
} |
||||
if (parentWindow && parentWindow.Dec) { |
||||
return parentWindow.Dec; |
||||
} |
||||
} catch (e) { |
||||
} |
||||
return undefined; |
||||
} |
||||
|
||||
})(); |