LAPTOP-SB56SG4Q\86185
3 years ago
14 changed files with 1442 additions and 1 deletions
@ -1,3 +1,6 @@ |
|||||||
# open-JSD-9576 |
# open-JSD-9576 |
||||||
|
|
||||||
JSD-9576 参数面板支持滚动条 |
JSD-9576 参数面板支持滚动条\ |
||||||
|
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ |
||||||
|
仅作为开发者学习参考使用!禁止用于任何商业用途!\ |
||||||
|
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,24 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<plugin> |
||||||
|
<id>com.fr.plugin.iegf.par</id> |
||||||
|
<name><![CDATA[参数面板定制]]></name> |
||||||
|
<active>yes</active> |
||||||
|
<version>1.0</version> |
||||||
|
<env-version>10.0</env-version> |
||||||
|
<jartime>2018-07-31</jartime> |
||||||
|
<vendor>fr.open</vendor> |
||||||
|
<description><![CDATA[参数面板定制]]></description> |
||||||
|
<change-notes><![CDATA[参数面板定制]]></change-notes> |
||||||
|
<main-package>com.fr.plugin.iegf</main-package> |
||||||
|
<prefer-packages> |
||||||
|
<prefer-package>com.fanruan.api</prefer-package> |
||||||
|
</prefer-packages> |
||||||
|
<extra-core> |
||||||
|
<LocaleFinder class="com.fr.plugin.iegf.LocaleFinder"/> |
||||||
|
</extra-core> |
||||||
|
<extra-report> |
||||||
|
<JavaScriptFileHandler class="com.fr.plugin.iegf.ui.JavaScriptFile"/> |
||||||
|
<CssFileHandler class="com.fr.plugin.iegf.ui.CssFile"/> |
||||||
|
</extra-report> |
||||||
|
<function-recorder class="com.fr.plugin.iegf.LocaleFinder"/> |
||||||
|
</plugin> |
@ -0,0 +1,23 @@ |
|||||||
|
/** |
||||||
|
* Copyright (C), 2015-2018 |
||||||
|
* FileName: parameterPaneAdjustShiftConstants |
||||||
|
* Author: mqh |
||||||
|
* Date: 2018/10/11 11:31 |
||||||
|
* Description: 常量类 |
||||||
|
* History: |
||||||
|
* <author> <time> <version> <desc> |
||||||
|
* 作者姓名 修改时间 版本号 描述 |
||||||
|
*/ |
||||||
|
package com.fr.plugin.iegf; |
||||||
|
|
||||||
|
/** |
||||||
|
* 〈功能简述〉<br> |
||||||
|
* 〈常量类〉 |
||||||
|
* |
||||||
|
* @author fr.open |
||||||
|
* @create 2018/10/11 |
||||||
|
* @since 1.0.0 |
||||||
|
*/ |
||||||
|
public class Constants { |
||||||
|
public static final String PLUGIN_ID = "com.fr.plugin.iegf.par"; |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C), 2018-2020 |
||||||
|
* Project: starter |
||||||
|
* FileName: LocaleFinder |
||||||
|
* Author: Louis |
||||||
|
* Date: 2020/8/31 22:19 |
||||||
|
*/ |
||||||
|
package com.fr.plugin.iegf; |
||||||
|
|
||||||
|
import com.fr.intelli.record.Focus; |
||||||
|
import com.fr.intelli.record.Original; |
||||||
|
import com.fr.record.analyzer.EnableMetrics; |
||||||
|
import com.fr.stable.fun.Authorize; |
||||||
|
import com.fr.stable.fun.impl.AbstractLocaleFinder; |
||||||
|
|
||||||
|
import static com.fr.plugin.iegf.LocaleFinder.PLUGIN_ID; |
||||||
|
|
||||||
|
/** |
||||||
|
* <Function Description><br> |
||||||
|
* <LocaleFinder> |
||||||
|
* |
||||||
|
* @author fr.open |
||||||
|
* @since 1.0.0 |
||||||
|
*/ |
||||||
|
@EnableMetrics |
||||||
|
@Authorize(callSignKey = PLUGIN_ID) |
||||||
|
public class LocaleFinder extends AbstractLocaleFinder { |
||||||
|
public static final String PLUGIN_ID = "com.fr.plugin.iegf.par"; |
||||||
|
|
||||||
|
@Override |
||||||
|
@Focus(id = PLUGIN_ID, text = "Plugin-iegf", source = Original.PLUGIN) |
||||||
|
public String find() { |
||||||
|
return "com/fr/plugin/iegf/locale/lang"; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int currentAPILevel() { |
||||||
|
return CURRENT_LEVEL; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
package com.fr.plugin.iegf.ui; |
||||||
|
|
||||||
|
import com.fr.stable.fun.impl.AbstractCssFileHandler; |
||||||
|
|
||||||
|
public class CssFile extends AbstractCssFileHandler { |
||||||
|
@Override |
||||||
|
public String[] pathsForFiles() { |
||||||
|
return new String[]{ |
||||||
|
"/com/fr/plugin/iegf/ui/iegf.css" |
||||||
|
}; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package com.fr.plugin.iegf.ui; |
||||||
|
|
||||||
|
import com.fanruan.api.i18n.I18nKit; |
||||||
|
import com.fanruan.api.log.LogKit; |
||||||
|
import com.fr.plugin.context.PluginContexts; |
||||||
|
import com.fr.plugin.iegf.Constants; |
||||||
|
import com.fr.stable.fun.Authorize; |
||||||
|
import com.fr.stable.fun.impl.AbstractJavaScriptFileHandler; |
||||||
|
|
||||||
|
@Authorize(callSignKey = Constants.PLUGIN_ID) |
||||||
|
public class JavaScriptFile extends AbstractJavaScriptFileHandler { |
||||||
|
@Override |
||||||
|
public String[] pathsForFiles() { |
||||||
|
if (PluginContexts.currentContext().isAvailable()) { |
||||||
|
return new String[]{ |
||||||
|
"/com/fr/plugin/iegf/ui/iegf.js" |
||||||
|
}; |
||||||
|
} else { |
||||||
|
LogKit.error(I18nKit.getLocText("Plugin-iegf_Licence_Expired")); |
||||||
|
return new String[]{}; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,2 @@ |
|||||||
|
Plugin-iegf=Parameter Panel Plugin |
||||||
|
Plugin-iegf_Licence_Expired=Parameter Panel Plugin Licence Expired |
@ -0,0 +1,2 @@ |
|||||||
|
Plugin-iegf=\u53C2\u6570\u9762\u677F\u5B9A\u5236\u63D2\u4EF6 |
||||||
|
Plugin-iegf_Licence_Expired=\u53C2\u6570\u9762\u677F\u5B9A\u5236\u63D2\u4EF6\u8BB8\u53EF\u8FC7\u671F |
@ -0,0 +1,55 @@ |
|||||||
|
.parameter-containerOut { |
||||||
|
background-color: greenyellow; |
||||||
|
} |
||||||
|
|
||||||
|
.vScrollPane_dragbar { |
||||||
|
position: absolute; |
||||||
|
top: 0; |
||||||
|
/*right: 0;*/ |
||||||
|
width: 8px; |
||||||
|
margin: 0 auto; |
||||||
|
background-position: top -32px; |
||||||
|
background-color: #eee; |
||||||
|
} |
||||||
|
|
||||||
|
.vScrollPane_draghandle { |
||||||
|
height: 30px; |
||||||
|
border: 1px solid #d5d3d3; |
||||||
|
overflow: hidden; |
||||||
|
position: absolute; |
||||||
|
top: 0; |
||||||
|
cursor: default; |
||||||
|
background-position: center -48px; |
||||||
|
background-repeat: no-repeat; |
||||||
|
background-color: #e5e5e5; |
||||||
|
-moz-border-radius: 3px; |
||||||
|
-khtml-border-radius: 3px; |
||||||
|
-webkit-border-radius: 3px; |
||||||
|
border-radius: 3px; |
||||||
|
} |
||||||
|
|
||||||
|
.vScrollPane_toparrow, .vScrollPane_bottomarrow { |
||||||
|
display: inline-block; |
||||||
|
height: 8px; |
||||||
|
width: 8px; |
||||||
|
overflow: hidden; |
||||||
|
position: absolute; |
||||||
|
right: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.vScrollPane_toparrow { |
||||||
|
top: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.vScrollPane_toparrow:hover { |
||||||
|
background-position: top -64px; |
||||||
|
} |
||||||
|
|
||||||
|
.vScrollPane_bottomarrow { |
||||||
|
bottom: 0; |
||||||
|
background-position: top -8px; |
||||||
|
} |
||||||
|
|
||||||
|
.vScrollPane_bottomarrow:hover { |
||||||
|
background-position: top -80px; |
||||||
|
} |
@ -0,0 +1,208 @@ |
|||||||
|
/** |
||||||
|
* Created by Louis on 18/10/15. |
||||||
|
*/ |
||||||
|
(function ($) { |
||||||
|
FR.BasePane.prototype._createFormParameterPane = function (options, layout, paramsTemplate) { |
||||||
|
var collapsePaneHeight = 8; |
||||||
|
options.alignLayoutName = '__layout4align__'; |
||||||
|
var self = this, paramO = options.param; |
||||||
|
var config = paramO.html; |
||||||
|
self.scrollHeight = 6; |
||||||
|
//这边maxWidth 7.1的时候被改成了paramO.width, 导致web端的居右居中效果很奇怪
|
||||||
|
var maxWidth = 0, maxHeight = 0; |
||||||
|
for (var i = 0; i < config.items.length; i++) { |
||||||
|
var item = config.items[i]; |
||||||
|
maxWidth = Math.max(maxWidth, item.x + item.width); |
||||||
|
maxHeight = Math.max(maxHeight, item.y + item.height); |
||||||
|
} |
||||||
|
var deltaHeight = paramO.height - maxHeight; |
||||||
|
var formLayout; |
||||||
|
var barHeight = paramO.width > document.body.offsetWidth ? self.scrollHeight : 0; |
||||||
|
var $paraContainer = $("<div class='parameter-container' style='overflow: auto;'>").css({ |
||||||
|
'height': paramO.height + barHeight + collapsePaneHeight, |
||||||
|
'width': document.body.offsetWidth |
||||||
|
}); |
||||||
|
var paramsTemplateHeight = (paramO.useParamsTemplate && paramsTemplate !== null ? 30 : 0); |
||||||
|
FR.parameterContainerHeight = paramO.height + barHeight + collapsePaneHeight + paramsTemplateHeight; |
||||||
|
options.$paraContainer = $paraContainer; |
||||||
|
config.onCalculate = function (currentMaxHeight) { |
||||||
|
if ($.isFunction(options.onCalculate)) { |
||||||
|
options.onCalculate.call(this, currentMaxHeight + deltaHeight, collapsePaneHeight, $paraContainer); |
||||||
|
} |
||||||
|
}; |
||||||
|
var $expandEl = $("<div class='parameter-container-collapseimg-up' style='cursor: pointer'></div>").click(function () { |
||||||
|
var resizeTime = new Date(); |
||||||
|
self.lastResizeTime = resizeTime; |
||||||
|
setTimeout(function () { |
||||||
|
if (resizeTime === self.lastResizeTime) { |
||||||
|
delete self.lastResizeTime; |
||||||
|
$paraContainer.animate({ |
||||||
|
height: (self.hasCollapsed ? "+=" : "-=") + (paramO.height + paramsTemplateHeight) |
||||||
|
}, "fast", function () { |
||||||
|
if (self.hasCollapsed) { |
||||||
|
FR.parameterContainerHeight += (paramO.height + paramsTemplateHeight); |
||||||
|
} else { |
||||||
|
FR.parameterContainerHeight -= (paramO.height + paramsTemplateHeight); |
||||||
|
} |
||||||
|
self.hasCollapsed = !self.hasCollapsed; |
||||||
|
$expandEl.switchClass('parameter-container-collapseimg-down', 'parameter-container-collapseimg-up'); |
||||||
|
if ($.isFunction(options.onCollapse)) { |
||||||
|
var height = $paraContainer.height(); |
||||||
|
options.onCollapse.call(this, self.hasCollapsed, options.alignLayoutName, height); |
||||||
|
self.doAfterCollapse(); |
||||||
|
self.afterLoad(); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
}, 222); |
||||||
|
}); |
||||||
|
|
||||||
|
var alignment = 'left'; |
||||||
|
switch (paramO.alignLocation) { |
||||||
|
case 0 : |
||||||
|
alignment = 'left'; |
||||||
|
break; |
||||||
|
case 1 : |
||||||
|
alignment = 'center'; |
||||||
|
break; |
||||||
|
case 2 : |
||||||
|
alignment = 'right'; |
||||||
|
break; |
||||||
|
default : |
||||||
|
alignment = 'left'; |
||||||
|
} |
||||||
|
var $center = $('<div class="pmeter-container"></div>').css({ |
||||||
|
"height": paramO.height, |
||||||
|
"width": paramO.width |
||||||
|
}); |
||||||
|
var paramstemplateHeight = 30; |
||||||
|
var paramstemplateContainer = { |
||||||
|
region: 'north', |
||||||
|
height: paramstemplateHeight, |
||||||
|
el: { |
||||||
|
type: 'border', |
||||||
|
widgetName: 'paramsTemplate', |
||||||
|
items: [ |
||||||
|
{ |
||||||
|
region: 'east', |
||||||
|
width: 138, |
||||||
|
el: { |
||||||
|
type: 'horizontal', |
||||||
|
alignment: 'right', |
||||||
|
items: [{ |
||||||
|
el: { |
||||||
|
type: 'button', |
||||||
|
widgetName: 'saveBtn', |
||||||
|
text: FR.i18nText("Fine-Engine_Report_Designer_Save_As_Params_Template") |
||||||
|
}, width: 128 |
||||||
|
}, { |
||||||
|
el: $('<div>'), width: 10 |
||||||
|
}] |
||||||
|
} |
||||||
|
}, { |
||||||
|
region: 'center', |
||||||
|
el: { |
||||||
|
type: 'horizontal', |
||||||
|
widgetName: 'paramsTemplatePane', |
||||||
|
alignment: 'left', |
||||||
|
items: [] |
||||||
|
} |
||||||
|
}, { |
||||||
|
region: 'west', |
||||||
|
width: 30, |
||||||
|
el: { |
||||||
|
type: 'horizontal', |
||||||
|
alignment: 'left', |
||||||
|
items: [ |
||||||
|
{ |
||||||
|
el: { |
||||||
|
type: 'iconbutton', |
||||||
|
widgetName: 'newParamsBtn', |
||||||
|
width: 30, |
||||||
|
baseClass: 'fs-new-params-template-blue' |
||||||
|
|
||||||
|
}, |
||||||
|
width: 30 |
||||||
|
} |
||||||
|
] |
||||||
|
} |
||||||
|
} |
||||||
|
] |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
if (!options.param.useParamsTemplate || paramsTemplate === null) { |
||||||
|
paramstemplateHeight = 0; |
||||||
|
paramstemplateContainer = {}; |
||||||
|
} |
||||||
|
//定义一下用来滚动的对象
|
||||||
|
var paraConfig = { |
||||||
|
renderEl: $paraContainer, |
||||||
|
type: 'border', |
||||||
|
items: [ |
||||||
|
paramstemplateContainer, |
||||||
|
{ |
||||||
|
region: 'south', height: collapsePaneHeight, el: { |
||||||
|
type: 'horizontal', |
||||||
|
items: [ |
||||||
|
{el: $expandEl, width: 120} |
||||||
|
] |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
region: 'center', el: { |
||||||
|
type: 'vertical',//垂直滚动条定制:改成了纵向布局
|
||||||
|
scrollable: true,//垂直滚动条定制:纵向布局允许滚动条
|
||||||
|
width: paramO.width, |
||||||
|
minWidth: paramO.width, |
||||||
|
widgetName: options.alignLayoutName, |
||||||
|
alignment: alignment, |
||||||
|
items: [ |
||||||
|
{el: $center, width: maxWidth, height: maxHeight + 20} //ezreal:参数面板大小改成最大高度
|
||||||
|
] |
||||||
|
} |
||||||
|
} |
||||||
|
] |
||||||
|
}; |
||||||
|
this._setBackground(paramO, $paraContainer); |
||||||
|
if (paramO.showType === 1) { |
||||||
|
layout.push({ |
||||||
|
region: 'north', |
||||||
|
el: paraConfig, |
||||||
|
height: paramO.height + collapsePaneHeight + barHeight + paramstemplateHeight |
||||||
|
}); |
||||||
|
} |
||||||
|
if (paramO.showType === 0) { |
||||||
|
$paraContainer.css({ |
||||||
|
position: "absolute", |
||||||
|
width: paramO.width, |
||||||
|
height: paramO.height |
||||||
|
}).appendTo("body"); |
||||||
|
config.listeners = [ |
||||||
|
{ |
||||||
|
once: true, |
||||||
|
eventName: 'submitcomplete', |
||||||
|
action: function () { |
||||||
|
FR.closeDialog(); |
||||||
|
} |
||||||
|
} |
||||||
|
]; |
||||||
|
config.renderEl = $paraContainer; |
||||||
|
formLayout = new FR.contentForm(config); |
||||||
|
} else { |
||||||
|
config.renderEl = $center; |
||||||
|
config.container = $paraContainer; |
||||||
|
formLayout = new FR.contentForm(config); |
||||||
|
} |
||||||
|
if (paramO.showType === 0) { |
||||||
|
formLayout.doLayout(); |
||||||
|
FR.showDialog({ |
||||||
|
title: paramO.paramWindowTitle, |
||||||
|
width: paramO.width + 20, |
||||||
|
height: paramO.height + 45, |
||||||
|
contentHtml: $paraContainer |
||||||
|
}); |
||||||
|
} |
||||||
|
return formLayout; |
||||||
|
}; |
||||||
|
})(jQuery); |
Loading…
Reference in new issue