@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
})(); |