LAPTOP-SB56SG4Q\86185
3 years ago
15 changed files with 622 additions and 1 deletions
@ -1,3 +1,6 @@
|
||||
# open-JSD-8491 |
||||
|
||||
JSD-8491 平台功能扩展 开源任务材料 |
||||
JSD-8491 平台功能扩展 开源任务材料\ |
||||
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ |
||||
仅作为开发者学习参考使用!禁止用于任何商业用途!\ |
||||
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。 |
Binary file not shown.
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin> |
||||
<id>com.fr.plugin.third.party.jsdiejb</id> |
||||
<name><![CDATA[悬浮球提示]]></name> |
||||
<active>yes</active> |
||||
<version>0.8</version> |
||||
<env-version>10.0</env-version> |
||||
<jartime>2019-01-01</jartime> |
||||
<vendor>fr.open</vendor> |
||||
<description><![CDATA[]]></description> |
||||
<change-notes><![CDATA[]]></change-notes> |
||||
<prefer-packages> |
||||
<prefer-package>*</prefer-package> |
||||
</prefer-packages> |
||||
<extra-decision> |
||||
<WebResourceProvider class="com.fr.plugin.third.party.jsdiejb.components.WebResourceProvider"/> |
||||
<HttpHandlerProvider class="com.fr.plugin.third.party.jsdiejb.http.CustomHttpHandlerProvider"/> |
||||
<URLAliasProvider class="com.fr.plugin.third.party.jsdiejb.http.CustomURLAliasProvider"/> |
||||
</extra-decision> |
||||
<function-recorder class="com.fr.plugin.third.party.jsdiejb.config.DataConfigInitializeMonitor"/> |
||||
<lifecycle-monitor class="com.fr.plugin.third.party.jsdiejb.config.DataConfigInitializeMonitor"/> |
||||
</plugin> |
@ -0,0 +1,54 @@
|
||||
package com.fr.plugin.third.party.jsdiejb.components; |
||||
|
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fr.plugin.context.PluginContexts; |
||||
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.ScriptPath; |
||||
import com.fr.web.struct.category.StylePath; |
||||
|
||||
|
||||
public class FileDef extends Component { |
||||
|
||||
public static final FileDef KEY = new FileDef(); |
||||
private FileDef(){} |
||||
|
||||
/** |
||||
* 返回需要引入的JS脚本路径 |
||||
* @param client 请求客户端描述 |
||||
* @return JS脚本路径 |
||||
*/ |
||||
@Override |
||||
public ScriptPath script(RequestClient client) { |
||||
return ScriptPath.build("com/fr/plugin/third/party/jsdiejb/web/main.js"); |
||||
} |
||||
|
||||
/** |
||||
* 返回需要引入的CSS样式路径 |
||||
* @param client 请求客户端描述 |
||||
* @return CSS样式路径 |
||||
*/ |
||||
@Override |
||||
public StylePath style(RequestClient client) { |
||||
// //如果不需要就直接返回 StylePath.EMPTY;
|
||||
return StylePath.build("com/fr/plugin/third/party/jsdiejb/web/main.css"); |
||||
//return StylePath.EMPTY;
|
||||
} |
||||
|
||||
|
||||
@Override |
||||
public Filter filter() { |
||||
return new Filter(){ |
||||
public boolean accept() { |
||||
//添加认证
|
||||
if (!PluginContexts.currentContext().isAvailable()) { |
||||
LogKit.error("The jsdiejb plugin trial is over, please purchase a license"); |
||||
return false; |
||||
} |
||||
//任何情况下我们都在平台组件加载时加载我们的组件
|
||||
return true; |
||||
} |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,18 @@
|
||||
package com.fr.plugin.third.party.jsdiejb.components; |
||||
|
||||
import com.fr.decision.fun.impl.AbstractWebResourceProvider; |
||||
import com.fr.decision.web.MainComponent; |
||||
import com.fr.stable.fun.Authorize; |
||||
import com.fr.web.struct.Atom; |
||||
@Authorize(callSignKey = "com.fr.plugin.third.party.jsdiejb") |
||||
public class WebResourceProvider extends AbstractWebResourceProvider { |
||||
@Override |
||||
public Atom attach() { |
||||
return MainComponent.KEY; |
||||
} |
||||
|
||||
@Override |
||||
public Atom client() { |
||||
return FileDef.KEY; |
||||
} |
||||
} |
@ -0,0 +1,117 @@
|
||||
package com.fr.plugin.third.party.jsdiejb.config; |
||||
|
||||
|
||||
import com.fanruan.api.util.StringKit; |
||||
import com.fr.config.*; |
||||
import com.fr.config.holder.Conf; |
||||
import com.fr.config.holder.factory.Holders; |
||||
|
||||
/** |
||||
* 配置数据保存 |
||||
*/ |
||||
@Visualization(category = "悬浮球配置") |
||||
public class CustomDataConfig extends DefaultConfiguration { |
||||
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 = "reportTitle", name = "报表标题", description = "", status = Status.SHOW) |
||||
private Conf<String> reportTitle = Holders.simple(StringKit.EMPTY); |
||||
|
||||
@Identifier(value = "reportUrl", name = "报表链接", description = "", status = Status.SHOW) |
||||
private Conf<String> reportUrl = Holders.simple(StringKit.EMPTY); |
||||
|
||||
|
||||
@Identifier(value = "reportWidth", name = "报表显示宽度", description = "", status = Status.SHOW) |
||||
private Conf<Integer> reportWidth = Holders.simple(800); |
||||
|
||||
|
||||
@Identifier(value = "reportHeight", name = "报表显示高度", description = "", status = Status.SHOW) |
||||
private Conf<Integer> reportHeight = Holders.simple(600); |
||||
|
||||
|
||||
@Identifier(value = "iconWidth", name = "图标宽度", description = "", status = Status.SHOW) |
||||
private Conf<Integer> iconWidth = Holders.simple(40); |
||||
|
||||
@Identifier(value = "iconName", name = "图标名称", description = "", status = Status.HIDE) |
||||
private Conf<String> iconName = Holders.simple(StringKit.EMPTY); |
||||
|
||||
public String getIconName() { |
||||
return iconName.get(); |
||||
} |
||||
|
||||
public void setIconName(String iconName) { |
||||
this.iconName.set(iconName); |
||||
} |
||||
|
||||
public Integer getIconWidth() { |
||||
return iconWidth.get(); |
||||
} |
||||
|
||||
public void setIconWidth(Integer iconWidth) { |
||||
this.iconWidth.set(iconWidth); |
||||
} |
||||
|
||||
public String getReportTitle() { |
||||
return trimStr(reportTitle.get()); |
||||
} |
||||
|
||||
public void setReportTitle(String reportTitle) { |
||||
this.reportTitle.set(reportTitle); |
||||
} |
||||
|
||||
public String getReportUrl() { |
||||
return trimStr(reportUrl.get()); |
||||
} |
||||
|
||||
public void setReportUrl(String reportUrl) { |
||||
this.reportUrl.set(reportUrl); |
||||
} |
||||
|
||||
public Integer getReportWidth() { |
||||
return reportWidth.get(); |
||||
} |
||||
|
||||
public void setReportWidth(Integer reportWidth) { |
||||
this.reportWidth.set(reportWidth); |
||||
} |
||||
|
||||
public Integer getReportHeight() { |
||||
return reportHeight.get(); |
||||
} |
||||
|
||||
public void setReportHeight(Integer reportHeight) { |
||||
this.reportHeight.set(reportHeight); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public Object clone() throws CloneNotSupportedException { |
||||
CustomDataConfig cloned = (CustomDataConfig) super.clone(); |
||||
cloned.reportTitle = (Conf<String>) reportTitle.clone(); |
||||
cloned.reportUrl = (Conf<String>) reportUrl.clone(); |
||||
cloned.reportWidth = (Conf<Integer>) reportWidth.clone(); |
||||
cloned.reportHeight = (Conf<Integer>) reportHeight.clone(); |
||||
cloned.iconWidth = (Conf<Integer>) iconWidth.clone(); |
||||
cloned.iconName = (Conf<String>) iconName.clone(); |
||||
return cloned; |
||||
} |
||||
|
||||
private String trimStr(String value) { |
||||
if (StringKit.isEmpty(value)) { |
||||
return ""; |
||||
} |
||||
String tempValue = value.trim(); |
||||
return tempValue; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,23 @@
|
||||
package com.fr.plugin.third.party.jsdiejb.config; |
||||
|
||||
import com.fr.intelli.record.Focus; |
||||
import com.fr.intelli.record.Original; |
||||
import com.fr.plugin.context.PluginContext; |
||||
import com.fr.plugin.observer.inner.AbstractPluginLifecycleMonitor; |
||||
import com.fr.plugin.third.party.jsdiejb.config.CustomDataConfig; |
||||
import com.fr.record.analyzer.EnableMetrics; |
||||
|
||||
|
||||
@EnableMetrics |
||||
public class DataConfigInitializeMonitor extends AbstractPluginLifecycleMonitor { |
||||
@Override |
||||
@Focus(id = "com.fr.plugin.third.party.jsdiejb", text = "plugin-jsd-iejb", source = Original.PLUGIN) |
||||
public void afterRun(PluginContext pluginContext) { |
||||
CustomDataConfig.getInstance(); |
||||
} |
||||
|
||||
@Override |
||||
public void beforeStop(PluginContext pluginContext) { |
||||
|
||||
} |
||||
} |
@ -0,0 +1,53 @@
|
||||
package com.fr.plugin.third.party.jsdiejb.http; |
||||
|
||||
import com.fr.decision.fun.impl.BaseHttpHandler; |
||||
import com.fr.decision.webservice.bean.user.UserDataSetBean; |
||||
import com.fr.decision.webservice.v10.config.ConfigService; |
||||
import com.fr.decision.webservice.v10.user.SyncService; |
||||
import com.fr.intelli.record.Focus; |
||||
import com.fr.intelli.record.Original; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.third.party.jsdiejb.config.CustomDataConfig; |
||||
import com.fr.record.analyzer.EnableMetrics; |
||||
import com.fr.third.springframework.web.bind.annotation.RequestMethod; |
||||
import com.fr.web.controller.common.ResourcesRequestService; |
||||
import com.fr.web.utils.WebUtils; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
|
||||
/** |
||||
* |
||||
*/ |
||||
public class CustomConfigHttpHandler extends BaseHttpHandler { |
||||
|
||||
@Override |
||||
public RequestMethod getMethod() { |
||||
return RequestMethod.GET; |
||||
} |
||||
|
||||
@Override |
||||
public String getPath() { |
||||
return "/jsdiejb/config"; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isPublic() { |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { |
||||
res.setContentType("application/json; charset=utf-8"); |
||||
JSONObject configJson = new JSONObject(); |
||||
configJson.put("reportTitle", CustomDataConfig.getInstance().getReportTitle()); |
||||
configJson.put("reportUrl", CustomDataConfig.getInstance().getReportUrl()); |
||||
configJson.put("reportWidth", CustomDataConfig.getInstance().getReportWidth()); |
||||
configJson.put("reportHeight", CustomDataConfig.getInstance().getReportHeight()); |
||||
configJson.put("iconWidth", CustomDataConfig.getInstance().getIconWidth()); |
||||
//configJson.put("iconName", CustomDataConfig.getInstance().getIconName());
|
||||
WebUtils.printAsJSON(res, configJson); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,14 @@
|
||||
package com.fr.plugin.third.party.jsdiejb.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 CustomConfigHttpHandler(), |
||||
new ResourcesHttpHandler() |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,15 @@
|
||||
package com.fr.plugin.third.party.jsdiejb.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("/jsdiejb/config", "/jsdiejb/config", true), |
||||
URLAliasFactory.createPluginAlias("/jsdiejb/resources", "/jsdiejb/resources", true) |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,101 @@
|
||||
package com.fr.plugin.third.party.jsdiejb.http; |
||||
|
||||
import com.fr.base.TemplateUtils; |
||||
import com.fr.base.Utils; |
||||
import com.fr.decision.fun.impl.BaseHttpHandler; |
||||
import com.fr.decision.webservice.utils.WebServiceUtils; |
||||
import com.fr.general.IOUtils; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.third.party.jsdiejb.config.CustomDataConfig; |
||||
import com.fr.stable.StableUtils; |
||||
import com.fr.third.springframework.web.bind.annotation.RequestMethod; |
||||
import com.fr.web.ResourceType; |
||||
import com.fr.web.controller.common.ResourceUtils; |
||||
import com.fr.web.core.gzip.GZIPResponseWrapper; |
||||
import com.fr.web.utils.WebUtils; |
||||
import com.fr.workspace.WorkContext; |
||||
|
||||
import javax.servlet.ServletOutputStream; |
||||
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.io.*; |
||||
import java.util.Collections; |
||||
|
||||
/** |
||||
* |
||||
*/ |
||||
public class ResourcesHttpHandler extends BaseHttpHandler { |
||||
|
||||
@Override |
||||
public RequestMethod getMethod() { |
||||
return RequestMethod.GET; |
||||
} |
||||
|
||||
@Override |
||||
public String getPath() { |
||||
return "/jsdiejb/resources"; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isPublic() { |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { |
||||
String path = WebUtils.getHTTPRequestParameter(req, "path"); |
||||
if (path != null) { |
||||
path = path.endsWith("?") ? path.substring(0, path.length() - 1) : path; |
||||
} |
||||
|
||||
ResourceType var4 = WebUtils.setResourceContentType(path, (HttpServletResponse) res); |
||||
if (var4 == ResourceType.FILE || var4 == ResourceType.OTHER) { |
||||
GZIPResponseWrapper var5 = WebServiceUtils.getGZIPResponseWrapper(req, (HttpServletResponse) res); |
||||
if (var5 != null) { |
||||
res = var5; |
||||
} |
||||
InputStream var6 = readResourceByWeb(path); |
||||
if (var6 != null) { |
||||
switch (var4) { |
||||
case FILE: |
||||
PrintWriter var7 = WebUtils.createPrintWriter((HttpServletResponse) res); |
||||
TemplateUtils.dealWithTemplate(var6, "UTF-8", var7, Collections.EMPTY_MAP); |
||||
var7.flush(); |
||||
var7.close(); |
||||
break; |
||||
case OTHER: |
||||
ServletOutputStream var8 = ((HttpServletResponse) res).getOutputStream(); |
||||
Utils.copyBinaryTo(var6, var8); |
||||
var8.flush(); |
||||
var8.close(); |
||||
} |
||||
|
||||
var6.close(); |
||||
if (var5 != null) { |
||||
var5.finishResponse(); |
||||
} |
||||
|
||||
} |
||||
} |
||||
} |
||||
|
||||
public static InputStream readResourceByWeb(String path) throws Exception { |
||||
if ((path == null) || (path.length() <= 0)) { |
||||
return null; |
||||
} |
||||
File var1 = new File(path); |
||||
if (var1.exists()) { |
||||
String var4 = WorkContext.getCurrent().getPath(); |
||||
String var3 = (new File(var4)).getParent(); |
||||
return var1.getAbsolutePath().startsWith(var3) ? new FileInputStream(var1) : null; |
||||
} |
||||
path = path.startsWith("/") ? path : "/" + path; |
||||
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(WorkContext.getWorkResource().readFully(StableUtils.pathJoin(new String[]{"resources", path}))); |
||||
if (byteArrayInputStream.available() >= 1) { |
||||
return byteArrayInputStream; |
||||
} |
||||
|
||||
InputStream inputStream = IOUtils.readResource(path); |
||||
return inputStream; |
||||
} |
||||
} |
@ -0,0 +1,29 @@
|
||||
.jsdiejb-ball { |
||||
position: absolute; |
||||
width: 50px; |
||||
height: 50px; |
||||
background-repeat: no-repeat; |
||||
background-size: cover; |
||||
z-index: 100001; |
||||
top: 80px; |
||||
right: 0px; |
||||
} |
||||
|
||||
.jsdiejb-report-content { |
||||
position: absolute; |
||||
width: 800px; |
||||
height: 600px; |
||||
z-index: 100000; |
||||
top: 25%; |
||||
left: 25%; |
||||
display: none; |
||||
background-color: white; |
||||
border-width: 0px; |
||||
overflow: hidden; |
||||
} |
||||
|
||||
.jsdiejb-report-iframe { |
||||
width: 100%; |
||||
height: 100%; |
||||
border-width: 0px; |
||||
} |
@ -0,0 +1,173 @@
|
||||
Dec.Utils = Dec.Utils || {}; |
||||
Dec.Utils.jsdiejb = Dec.Utils.jsdiejb || {}; |
||||
|
||||
Dec.Utils.jsdiejb.config = {}; |
||||
Dec.Utils.jsdiejb.openOption = 0; |
||||
Dec.Utils.jsdiejb.openOptionSrc = 0; |
||||
|
||||
BI.extend(Dec.Utils.jsdiejb, { |
||||
getConfig: function (e) { |
||||
Dec.reqGet("/url/jsdiejb/config", "", e) |
||||
}, |
||||
dragendBall: function (e) { |
||||
e.preventDefault ? e.preventDefault() : (e.returnValue = false); |
||||
//debugger;
|
||||
//console.log(e);
|
||||
var x = e.clientX; |
||||
var y = e.clientY; |
||||
|
||||
var maxLeft = $('body').width() - 100; |
||||
var maxTop = $('body').height() - 100; |
||||
if (maxLeft <= 0) { |
||||
maxLeft = 0; |
||||
} |
||||
if (maxTop <= 0) { |
||||
maxTop = 0; |
||||
} |
||||
var leftValue = x; |
||||
var topValue = y; |
||||
if (leftValue <= 0) { |
||||
leftValue = 0; |
||||
} |
||||
if (topValue <= 0) { |
||||
topValue = 0; |
||||
} |
||||
|
||||
if (leftValue > maxLeft) { |
||||
leftValue = maxLeft; |
||||
} |
||||
|
||||
if (topValue > maxTop) { |
||||
topValue = maxTop; |
||||
} |
||||
|
||||
$('.jsdiejb-ball').css("left", leftValue + "px"); |
||||
$('.jsdiejb-ball').css("top", topValue + "px"); |
||||
}, |
||||
resizeBall: function () { |
||||
//debugger;
|
||||
var maxLeft = $('body').width() - 100; |
||||
var maxTop = $('body').height() - 100; |
||||
if (maxLeft <= 0) { |
||||
maxLeft = 0; |
||||
} |
||||
if (maxTop <= 0) { |
||||
maxTop = 0; |
||||
} |
||||
var leftValue = $('.jsdiejb-ball').position().left; |
||||
var topValue = $('.jsdiejb-ball').position().top; |
||||
if (leftValue <= 0) { |
||||
leftValue = 0; |
||||
} |
||||
if (topValue <= 0) { |
||||
topValue = 0; |
||||
} |
||||
|
||||
if (leftValue > maxLeft) { |
||||
leftValue = maxLeft; |
||||
} |
||||
|
||||
if (topValue > maxTop) { |
||||
topValue = maxTop; |
||||
} |
||||
|
||||
$('.jsdiejb-ball').css("left", leftValue + "px"); |
||||
$('.jsdiejb-ball').css("top", topValue + "px"); |
||||
}, |
||||
openUrl: function (e) { |
||||
//if (e.button != 2) {
|
||||
// return;
|
||||
//}
|
||||
e.preventDefault ? e.preventDefault() : (e.returnValue = false); |
||||
e.cancelBubble = true |
||||
e.returnValue = false; |
||||
|
||||
|
||||
if (Dec.Utils.jsdiejb.openOption == 1) { |
||||
Dec.Utils.jsdiejb.openOption = 0; |
||||
$('.jsdiejb-report-content').css('display', "none"); |
||||
return; |
||||
} |
||||
var url = Dec.Utils.jsdiejb.config.reportUrl; |
||||
var width = Dec.Utils.jsdiejb.config.reportWidth; |
||||
var height = Dec.Utils.jsdiejb.config.reportHeight; |
||||
if (width < 0) { |
||||
width = 800; |
||||
} |
||||
if (height < 0) { |
||||
height = 600; |
||||
} |
||||
var widthValue = width + "px"; |
||||
var heightValue = height + "px"; |
||||
|
||||
var left = ($('body').width() - width) / 2; |
||||
var top = ($('body').height() - height) / 2; |
||||
|
||||
left = $('.jsdiejb-ball').position().left - width; |
||||
top = $('.jsdiejb-ball').position().top; |
||||
if (left < 0) { |
||||
left = 0; |
||||
} |
||||
if (top < 0) { |
||||
top = 0; |
||||
} |
||||
var leftValue = left + "px"; |
||||
var topValue = top + "px"; |
||||
if ((url != undefined) && (url.length > 0)) { |
||||
Dec.Utils.jsdiejb.openOption = 1; |
||||
$('.jsdiejb-report-content').css('display', "block"); |
||||
$('.jsdiejb-report-content').css('width', widthValue); |
||||
$('.jsdiejb-report-content').css('height', heightValue); |
||||
$('.jsdiejb-report-content').css('left', leftValue); |
||||
$('.jsdiejb-report-content').css('top', topValue); |
||||
|
||||
if (Dec.Utils.jsdiejb.openOptionSrc == 0) { |
||||
Dec.Utils.jsdiejb.openOptionSrc = 1; |
||||
setTimeout(function () { |
||||
$('.jsdiejb-report-iframe').attr('src', url); |
||||
}, 1000 ) |
||||
} |
||||
} |
||||
|
||||
return false; |
||||
}, |
||||
noContextMenu: function (e) { |
||||
e.preventDefault ? e.preventDefault() : (e.returnValue = false); |
||||
e.cancelBubble = true |
||||
e.returnValue = false; |
||||
return false; |
||||
} |
||||
}); |
||||
|
||||
|
||||
!(function () { |
||||
var ballImageUrl = Dec.fineServletURL + '/url/jsdiejb/resources?path=jsdiejb/image/ball.png'; |
||||
Dec.Utils.jsdiejb.url = ballImageUrl; |
||||
|
||||
Dec.Utils.jsdiejb.getConfig(function (e) { |
||||
Dec.Utils.jsdiejb.config = e; |
||||
addBall(); |
||||
}) |
||||
|
||||
function addBall() { |
||||
var reportTitle = Dec.Utils.jsdiejb.config.reportTitle; |
||||
var iconWidth = Dec.Utils.jsdiejb.config.iconWidth; |
||||
var reportUrl = Dec.Utils.jsdiejb.config.reportUrl; |
||||
if (iconWidth < 0) { |
||||
iconWidth = 40; |
||||
} |
||||
var ballContent = '<div class = "jsdiejb-ball" title="' + reportTitle + '" style="width: ' + iconWidth + 'px;height: ' + iconWidth + 'px;background-image:url(' + ballImageUrl + ');" ' + |
||||
' draggable="true" ' + |
||||
'ondragend ="Dec.Utils.jsdiejb.dragendBall(event)" ' + |
||||
//'onmouseup="Dec.Utils.jsdiejb.openUrl(event)"' +
|
||||
'onclick="Dec.Utils.jsdiejb.openUrl(event)"' + |
||||
'oncontextmenu="Dec.Utils.jsdiejb.noContextMenu(event)"></div>'; |
||||
var reportContent = '<div class = "jsdiejb-report-content"><iframe class="jsdiejb-report-iframe" ></iframe></div>'; |
||||
$('body').append(ballContent); |
||||
$('body').append(reportContent); |
||||
} |
||||
|
||||
$(window).resize(function () { |
||||
Dec.Utils.jsdiejb.resizeBall(); |
||||
}); |
||||
})(); |
After Width: | Height: | Size: 5.3 MiB |
Binary file not shown.
Loading…
Reference in new issue