forwardyy
3 years ago
51 changed files with 140924 additions and 0 deletions
@ -0,0 +1,129 @@
|
||||
|
||||
apply plugin: 'java' |
||||
|
||||
[compileJava,compileTestJava]*.options*.encoding = 'UTF-8' |
||||
|
||||
ext { |
||||
/** |
||||
* 项目中依赖的jar的路径 |
||||
* 1.如果依赖的jar需要打包到zip中,放置在lib根目录下 |
||||
* 2.如果依赖的jar仅仅是编译时需要,防止在lib下子目录下即可 |
||||
*/ |
||||
libPath = "$projectDir/../webroot/WEB-INF/lib" |
||||
|
||||
/** |
||||
* 是否对插件的class进行加密保护,防止反编译 |
||||
*/ |
||||
guard = true |
||||
|
||||
def pluginInfo = getPluginInfo() |
||||
pluginPre = "fine-plugin" |
||||
pluginName = pluginInfo.id |
||||
pluginVersion = pluginInfo.version |
||||
|
||||
outputPath = "$projectDir/../webroot/WEB-INF/plugins/plugin-" + pluginName + "-1.0/classes" |
||||
outputXmlPath = "$projectDir/../webroot/WEB-INF/plugins/plugin-" + pluginName + "-1.0" |
||||
} |
||||
|
||||
group = 'com.fr.plugin' |
||||
version = '10.0' |
||||
sourceCompatibility = '8' |
||||
|
||||
sourceSets { |
||||
main { |
||||
java.outputDir = file(outputPath) |
||||
output.resourcesDir = file(outputPath) |
||||
} |
||||
} |
||||
|
||||
ant.importBuild("encrypt.xml") |
||||
//定义ant变量 |
||||
ant.projectDir = projectDir |
||||
ant.references["compile.classpath"] = ant.path { |
||||
fileset(dir: libPath, includes: '**/*.jar') |
||||
fileset(dir: ".",includes:"**/*.jar" ) |
||||
} |
||||
|
||||
classes.dependsOn('clean') |
||||
|
||||
task copyFiles(type: Copy,dependsOn: 'classes'){ |
||||
from outputPath |
||||
into "$projectDir/classes" |
||||
} |
||||
task copyXmlFiles(type: Copy){ |
||||
from "$projectDir/plugin.xml" |
||||
into file("$outputXmlPath") |
||||
} |
||||
task preJar(type:Copy,dependsOn: guard ? 'compile_encrypt_javas' : 'compile_plain_javas'){ |
||||
from "$projectDir/classes" |
||||
into "$projectDir/transform-classes" |
||||
include "**/*.*" |
||||
} |
||||
jar.dependsOn("preJar") |
||||
classes.dependsOn("copyXmlFiles") |
||||
|
||||
task makeJar(type: Jar,dependsOn: preJar){ |
||||
from fileTree(dir: "$projectDir/transform-classes") |
||||
baseName pluginPre |
||||
appendix pluginName |
||||
version pluginVersion |
||||
destinationDir = file("$buildDir/libs") |
||||
|
||||
doLast(){ |
||||
delete file("$projectDir/classes") |
||||
delete file("$projectDir/transform-classes") |
||||
} |
||||
} |
||||
|
||||
task copyFile(type: Copy,dependsOn: ["makeJar"]){ |
||||
from "$buildDir/libs" |
||||
from("$projectDir/lib") { |
||||
include "*.jar" |
||||
} |
||||
from "$projectDir/plugin.xml" |
||||
into file("$buildDir/temp/plugin") |
||||
} |
||||
|
||||
task zip(type:Zip,dependsOn:["copyFile"]){ |
||||
from "$buildDir/temp/plugin" |
||||
destinationDir file("$buildDir/install") |
||||
baseName pluginPre |
||||
appendix pluginName |
||||
version pluginVersion |
||||
} |
||||
|
||||
//控制build时包含哪些文件,排除哪些文件 |
||||
processResources { |
||||
// exclude everything |
||||
// 用*.css没效果 |
||||
// exclude '**/*.css' |
||||
// except this file |
||||
// include 'xx.xml' |
||||
} |
||||
|
||||
/*读取plugin.xml中的version*/ |
||||
def getPluginInfo(){ |
||||
def xmlFile = file("plugin.xml") |
||||
if (!xmlFile.exists()) { |
||||
return ["id":"none", "version":"1.0.0"] |
||||
} |
||||
def plugin = new XmlParser().parse(xmlFile) |
||||
def version = plugin.version[0].text() |
||||
def id = plugin.id[0].text() |
||||
return ["id":id,"version":version] |
||||
} |
||||
|
||||
repositories { |
||||
mavenLocal() |
||||
maven { |
||||
url = uri('http://mvn.finedevelop.com/repository/maven-public/') |
||||
} |
||||
} |
||||
|
||||
dependencies { |
||||
//使用本地jar |
||||
implementation fileTree(dir: 'lib', include: ['**/*.jar']) |
||||
implementation fileTree(dir: libPath, include: ['**/*.jar']) |
||||
} |
||||
|
||||
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
||||
<project> |
||||
<target name="compile_encrypt_javas" depends="copyFiles"> |
||||
<echo message="加密文件"/> |
||||
<echo message="${projectDir}"/> |
||||
<taskdef name="pretreatment" classname="com.fr.plugin.pack.PluginPretreatmentTask"> |
||||
<classpath refid="compile.classpath"/> |
||||
</taskdef> |
||||
<pretreatment baseDir="${projectDir}"/> |
||||
</target> |
||||
<target name="compile_plain_javas" depends="copyFiles"> |
||||
</target> |
||||
</project> |
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin> |
||||
<id>com.fr.plugin.sqy.surface</id> |
||||
<name><![CDATA[ 3d曲面图 ]]></name> |
||||
<active>yes</active> |
||||
<version>1.1.2</version> |
||||
<env-version>10.0</env-version> |
||||
<vendor>yy</vendor> |
||||
<jartime>2021-05-26</jartime> |
||||
<description><![CDATA[ 3d曲面图 ]]></description> |
||||
<change-notes> |
||||
<![CDATA[2022-03-15 初始化工程 |
||||
<br>2022-03-22 完成初版功能开发 |
||||
<br>2022-03-23 添加js超级链接功能 |
||||
<br>2022-03-30 添加坐标轴格式化 |
||||
]]> |
||||
|
||||
</change-notes> |
||||
<main-package>com.fr.plugin.sqy</main-package> |
||||
<!--功能点注册,这个类不能去掉--> |
||||
<function-recorder class="com.fr.plugin.sqy.surface.FuncRecorder"/> |
||||
|
||||
<extra-chart> |
||||
<IndependentChartProvider class="com.fr.plugin.sqy.surface.provider.ChartProvider" plotID="SQY_CHART_SURFACE"/> |
||||
</extra-chart> |
||||
|
||||
<extra-chart-designer> |
||||
<IndependentChartUIProvider class="com.fr.plugin.sqy.surface.provider.ChartUIProvider" plotID="SQY_CHART_SURFACE"/> |
||||
</extra-chart-designer> |
||||
</plugin> |
@ -0,0 +1,18 @@
|
||||
package com.fr.plugin.sqy.surface; |
||||
|
||||
|
||||
import com.fr.plugin.context.PluginContexts; |
||||
import com.fr.plugin.transform.ExecuteFunctionRecord; |
||||
import com.fr.plugin.transform.FunctionRecorder; |
||||
import com.fr.stable.fun.Authorize; |
||||
|
||||
//功能点注册
|
||||
@FunctionRecorder |
||||
@Authorize(callSignKey = PluginConstants.PLUGIN_ID) |
||||
public class FuncRecorder { |
||||
|
||||
@ExecuteFunctionRecord |
||||
public static boolean execute(){ |
||||
return PluginContexts.currentContext().isAvailable();//付费
|
||||
} |
||||
} |
@ -0,0 +1,12 @@
|
||||
package com.fr.plugin.sqy.surface; |
||||
|
||||
public class PluginConstants { |
||||
|
||||
public static final String PLUGIN_ID = "com.fr.plugin.sqy.surface"; |
||||
|
||||
public static final String PLOT_ID = "SQY_CHART_SURFACE"; |
||||
|
||||
public static final String CHART_NAME = "\u66f2\u9762\u56fe"; |
||||
|
||||
|
||||
} |
@ -0,0 +1,331 @@
|
||||
package com.fr.plugin.sqy.surface.chart; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.config.predefined.ColorFillStyle; |
||||
import com.fr.extended.chart.AbstractChart; |
||||
import com.fr.extended.chart.HyperLinkPara; |
||||
import com.fr.extended.chart.StringFormula; |
||||
import com.fr.js.JavaScript; |
||||
import com.fr.js.NameJavaScript; |
||||
import com.fr.js.NameJavaScriptGroup; |
||||
import com.fr.json.*; |
||||
import com.fr.plugin.sqy.surface.PluginConstants; |
||||
import com.fr.plugin.sqy.surface.config.AxisConfig; |
||||
import com.fr.plugin.sqy.surface.config.LineStyleConfig; |
||||
import com.fr.plugin.sqy.surface.option.ChartOption; |
||||
import com.fr.plugin.sqy.surface.option.SurfaceChartOptionBuilder; |
||||
import com.fr.plugin.sqy.surface.option.modle.ChartOptionDirector; |
||||
import com.fr.stable.AssistUtils; |
||||
import com.fr.stable.ParameterProvider; |
||||
import com.fr.stable.web.Repository; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
public class Chart extends AbstractChart<ChartDataConfig> { |
||||
private static Chart chart; |
||||
private ChartType chartType = ChartType.TYPE1; |
||||
private ColorFillStyle colorFillStyle = new ColorFillStyle(); |
||||
private StringFormula visualMin = new StringFormula(); |
||||
private StringFormula visualMax = new StringFormula(); |
||||
private LineStyleConfig wireFrameConfig = new LineStyleConfig("wireframe"); |
||||
private AxisConfig axisConfigX = new AxisConfig("xAxis3d"); |
||||
private AxisConfig axisConfigY = new AxisConfig("yAxis3d"); |
||||
private AxisConfig axisConfigZ = new AxisConfig("zAxis3d"); |
||||
|
||||
|
||||
public Chart() { |
||||
} |
||||
|
||||
public ColorFillStyle getColorFillStyle() { |
||||
return colorFillStyle; |
||||
} |
||||
|
||||
public void setColorFillStyle(ColorFillStyle colorFillStyle) { |
||||
this.colorFillStyle = colorFillStyle; |
||||
} |
||||
|
||||
public StringFormula getVisualMin() { |
||||
return visualMin; |
||||
} |
||||
|
||||
public void setVisualMin(StringFormula visualMin) { |
||||
this.visualMin = visualMin; |
||||
} |
||||
|
||||
public StringFormula getVisualMax() { |
||||
return visualMax; |
||||
} |
||||
|
||||
public void setVisualMax(StringFormula visualMax) { |
||||
this.visualMax = visualMax; |
||||
} |
||||
|
||||
public LineStyleConfig getWireFrameConfig() { |
||||
return wireFrameConfig; |
||||
} |
||||
|
||||
public void setWireFrameConfig(LineStyleConfig wireFrameConfig) { |
||||
this.wireFrameConfig = wireFrameConfig; |
||||
} |
||||
|
||||
public AxisConfig getAxisConfigX() { |
||||
return axisConfigX; |
||||
} |
||||
|
||||
public void setAxisConfigX(AxisConfig axisConfigX) { |
||||
this.axisConfigX = axisConfigX; |
||||
} |
||||
|
||||
public AxisConfig getAxisConfigY() { |
||||
return axisConfigY; |
||||
} |
||||
|
||||
public void setAxisConfigY(AxisConfig axisConfigY) { |
||||
this.axisConfigY = axisConfigY; |
||||
} |
||||
|
||||
public AxisConfig getAxisConfigZ() { |
||||
return axisConfigZ; |
||||
} |
||||
|
||||
public void setAxisConfigZ(AxisConfig axisConfigZ) { |
||||
this.axisConfigZ = axisConfigZ; |
||||
} |
||||
|
||||
@Override |
||||
protected void readAttr(XMLableReader reader) { |
||||
super.readAttr(reader); |
||||
//用来标记主属性
|
||||
String attrAsString = reader.getAttrAsString("mainAttr", ""); |
||||
if("main".equals(attrAsString)){ |
||||
this.setChartType(ChartType.parseInt(reader.getAttrAsInt("chartType", 0))); |
||||
this.getVisualMin().readAttr("visualMin",reader); |
||||
this.getVisualMax().readAttr("visualMax",reader); |
||||
this.getWireFrameConfig().readAttr("",reader); |
||||
this.getAxisConfigX().readAttr("",reader); |
||||
this.getAxisConfigY().readAttr("",reader); |
||||
this.getAxisConfigZ().readAttr("",reader); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void readXML(XMLableReader xmLableReader) { |
||||
super.readXML(xmLableReader); |
||||
colorFillStyle.readXML(xmLableReader); |
||||
} |
||||
|
||||
@Override |
||||
protected void writeAttr(XMLPrintWriter writer) { |
||||
super.writeAttr(writer); |
||||
writer.attr("mainAttr", "main"); |
||||
writer.attr("chartType", getChartType().ordinal()); |
||||
this.getVisualMax().writeAttr("visualMax",writer); |
||||
this.getVisualMin().writeAttr("visualMin",writer); |
||||
this.getWireFrameConfig().writeAttr("",writer); |
||||
this.getAxisConfigX().writeAttr("",writer); |
||||
this.getAxisConfigY().writeAttr("",writer); |
||||
this.getAxisConfigZ().writeAttr("",writer); |
||||
} |
||||
|
||||
@Override |
||||
public void writeXML(XMLPrintWriter xmlPrintWriter) { |
||||
super.writeXML(xmlPrintWriter); |
||||
colorFillStyle.writeXML(xmlPrintWriter); |
||||
} |
||||
|
||||
@Override |
||||
protected void addJSON(ChartDataConfig surfaceChartDataConfig, JSONObject jsonObject, Repository repository, AbstractChart<ChartDataConfig>.JSONPara jsonPara) throws JSONException { |
||||
//去掉试用字符
|
||||
jsonObject.remove("trialLicenseWater"); |
||||
jsonObject.put("trialLicenseWater",""); |
||||
|
||||
NameJavaScriptGroup linkGroup = this.getLinkGroup(); |
||||
JSONArray jsArray = JSONKit.createJSONArray(); |
||||
if(linkGroup != null && linkGroup.size() >= 1){ |
||||
for (int i = 0; i < linkGroup.size(); i++) { |
||||
jsArray.put(linkGroup.getNameHyperlink(i).getJavaScript().createJSONObject(repository)); |
||||
} |
||||
} |
||||
jsonObject.put("links",jsArray); |
||||
|
||||
|
||||
SurfaceChartOptionBuilder surfaceChartOptionBuilder = new SurfaceChartOptionBuilder(); |
||||
if (surfaceChartDataConfig != null) { |
||||
surfaceChartOptionBuilder.setValuesX(surfaceChartDataConfig.getX().getValues()); |
||||
surfaceChartOptionBuilder.setValuesY(surfaceChartDataConfig.getY().getValues()); |
||||
surfaceChartOptionBuilder.setSeriesFiles(surfaceChartDataConfig.getCustomFields()); |
||||
surfaceChartOptionBuilder.setCustomValueField(surfaceChartDataConfig.getCustomValueField().getValues()); |
||||
} |
||||
surfaceChartOptionBuilder.setColors(this.getColorFillStyle().getColorList()); |
||||
surfaceChartOptionBuilder.setVisualMax(this.getVisualMax().getResult()); |
||||
surfaceChartOptionBuilder.setVisualMin(this.getVisualMin().getResult()); |
||||
surfaceChartOptionBuilder.setWireFrameConfig(this.getWireFrameConfig()); |
||||
surfaceChartOptionBuilder.setAxisConfigX(this.getAxisConfigX()); |
||||
surfaceChartOptionBuilder.setAxisConfigY(this.getAxisConfigY()); |
||||
surfaceChartOptionBuilder.setAxisConfigZ(this.getAxisConfigZ()); |
||||
//构建echarts的option对象
|
||||
ChartOption chartOptionByModel = ChartOptionDirector.createChartOptionByModel(surfaceChartOptionBuilder); |
||||
jsonObject.put("data",chartOptionByModel.getJSONObject()); |
||||
} |
||||
|
||||
|
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
return super.hashCode() + AssistUtils.hashCode(getChartType(),getVisualMin(),getVisualMax()); |
||||
} |
||||
|
||||
@Override |
||||
public boolean equals(Object ob) { |
||||
return ob instanceof Chart |
||||
&& super.equals(ob) |
||||
&& AssistUtils.equals(this.getChartType(), ((Chart) ob).getChartType()) |
||||
&& AssistUtils.equals(this.getVisualMin(), ((Chart) ob).getVisualMin()) |
||||
&& AssistUtils.equals(this.getVisualMax(), ((Chart) ob).getVisualMax()); |
||||
} |
||||
|
||||
@Override |
||||
public Object clone() throws CloneNotSupportedException { |
||||
Chart clone = (Chart)super.clone(); |
||||
clone.setChartType(this.getChartType()); |
||||
clone.setVisualMax(this.getVisualMax().clone()); |
||||
clone.setVisualMin(this.getVisualMin().clone()); |
||||
return clone; |
||||
} |
||||
|
||||
@Override |
||||
protected List<StringFormula> formulas() { |
||||
ArrayList<StringFormula> stringFormulas = new ArrayList<>(); |
||||
stringFormulas.add(this.getVisualMin()); |
||||
stringFormulas.add(this.getVisualMax()); |
||||
stringFormulas.add(this.getAxisConfigX().getName()); |
||||
stringFormulas.add(this.getAxisConfigX().getMax()); |
||||
stringFormulas.add(this.getAxisConfigX().getMin()); |
||||
stringFormulas.add(this.getAxisConfigY().getName()); |
||||
stringFormulas.add(this.getAxisConfigY().getMax()); |
||||
stringFormulas.add(this.getAxisConfigY().getMin()); |
||||
stringFormulas.add(this.getAxisConfigZ().getName()); |
||||
stringFormulas.add(this.getAxisConfigZ().getMax()); |
||||
stringFormulas.add(this.getAxisConfigZ().getMin()); |
||||
|
||||
return stringFormulas; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
protected String[] requiredJS() { |
||||
return new String[]{ |
||||
"com/fr/plugin/sqy/surface/js/index.js", |
||||
"com/fr/plugin/sqy/surface/js/echarts.js", |
||||
"com/fr/plugin/sqy/surface/js/echarts-gl.js" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected String[] requiredCSS() { |
||||
return new String[]{ |
||||
"com/fr/plugin/sqy/surface/css/index.css" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected String getChartID() { |
||||
return PluginConstants.PLOT_ID; |
||||
} |
||||
|
||||
@Override |
||||
public String getChartName() { |
||||
return PluginConstants.CHART_NAME; |
||||
} |
||||
|
||||
@Override |
||||
protected String wrapperName() { |
||||
return "surfaceWrapper"; |
||||
} |
||||
|
||||
@Override |
||||
protected HyperLinkPara[] hyperLinkParas() { |
||||
return new HyperLinkPara[]{ |
||||
new HyperLinkPara() { |
||||
@Override |
||||
public String getName() { |
||||
return "X值"; |
||||
} |
||||
|
||||
@Override |
||||
public String getFormulaContent() { |
||||
return "X"; |
||||
} |
||||
|
||||
@Override |
||||
public String[] getProps() { |
||||
return new String[]{"data", "x"}; |
||||
} |
||||
}, |
||||
new HyperLinkPara() { |
||||
@Override |
||||
public String getName() { |
||||
return "Y值"; |
||||
} |
||||
|
||||
@Override |
||||
public String getFormulaContent() { |
||||
return "Y"; |
||||
} |
||||
|
||||
@Override |
||||
public String[] getProps() { |
||||
return new String[]{"data", "y"}; |
||||
} |
||||
}, |
||||
new HyperLinkPara() { |
||||
@Override |
||||
public String getName() { |
||||
return "Z值"; |
||||
} |
||||
|
||||
@Override |
||||
public String getFormulaContent() { |
||||
return "Z"; |
||||
} |
||||
|
||||
@Override |
||||
public String[] getProps() { |
||||
return new String[]{"data", "z"}; |
||||
} |
||||
}, |
||||
new HyperLinkPara() { |
||||
@Override |
||||
public String getName() { |
||||
return "系列名"; |
||||
} |
||||
|
||||
@Override |
||||
public String getFormulaContent() { |
||||
return "SERIES_NAME"; |
||||
} |
||||
|
||||
@Override |
||||
public String[] getProps() { |
||||
return new String[]{"data", "SERIES_NAME"}; |
||||
} |
||||
} |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected String demoImagePath() { |
||||
return "com/fr/plugin/sqy/surface/img/face.png"; |
||||
} |
||||
|
||||
public ChartType getChartType() { |
||||
return chartType; |
||||
} |
||||
|
||||
public void setChartType(ChartType chartType) { |
||||
this.chartType = chartType; |
||||
} |
||||
} |
@ -0,0 +1,100 @@
|
||||
package com.fr.plugin.sqy.surface.chart; |
||||
|
||||
import com.fr.extended.chart.AbstractDataConfig; |
||||
import com.fr.extended.chart.ExtendedField; |
||||
import com.fr.stable.AssistUtils; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
public class ChartDataConfig extends AbstractDataConfig { |
||||
|
||||
private ExtendedField x = new ExtendedField(); |
||||
private ExtendedField y = new ExtendedField(); |
||||
private ExtendedField z = new ExtendedField(); |
||||
private String tarName; |
||||
|
||||
|
||||
public ExtendedField getX() { |
||||
return x; |
||||
} |
||||
|
||||
public void setX(ExtendedField x) { |
||||
this.x = x; |
||||
} |
||||
|
||||
public ExtendedField getY() { |
||||
return y; |
||||
} |
||||
|
||||
public void setY(ExtendedField y) { |
||||
this.y = y; |
||||
} |
||||
|
||||
public ExtendedField getZ() { |
||||
return z; |
||||
} |
||||
|
||||
public void setZ(ExtendedField z) { |
||||
this.z = z; |
||||
} |
||||
|
||||
public String getTarName() { |
||||
return tarName; |
||||
} |
||||
|
||||
public void setTarName(String tarName) { |
||||
this.tarName = tarName; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
protected void readAttr(XMLableReader xmLableReader) { |
||||
readExtendedField(x, "x", xmLableReader); |
||||
readExtendedField(y, "y", xmLableReader); |
||||
readExtendedField(z, "z", xmLableReader); |
||||
setTarName(xmLableReader.getAttrAsString("tarName","")); |
||||
|
||||
} |
||||
|
||||
@Override |
||||
protected void writeAttr(XMLPrintWriter xmlPrintWriter) { |
||||
writeExtendedField(x, "x", xmlPrintWriter); |
||||
writeExtendedField(y, "y", xmlPrintWriter); |
||||
writeExtendedField(z, "z", xmlPrintWriter); |
||||
xmlPrintWriter.attr("tarName",getTarName()); |
||||
} |
||||
|
||||
@Override |
||||
public ExtendedField[] dataSetFields() { |
||||
return new ExtendedField[]{ |
||||
x, |
||||
y, |
||||
z |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
public AbstractDataConfig clone() throws CloneNotSupportedException { |
||||
ChartDataConfig result = (ChartDataConfig)super.clone(); |
||||
result.setX(getX().clone()); |
||||
result.setY(getY().clone()); |
||||
result.setZ(getZ().clone()); |
||||
result.setTarName(getTarName()); |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
return super.hashCode()+ AssistUtils.hashCode(getX(),getY(),getZ(),getTarName()); |
||||
} |
||||
|
||||
@Override |
||||
public boolean equals(Object o) { |
||||
return o instanceof ChartDataConfig |
||||
&& super.equals(o) |
||||
&& AssistUtils.equals(getX(),((ChartDataConfig)o).getX()) |
||||
&& AssistUtils.equals(getY(),((ChartDataConfig)o).getY()) |
||||
&& AssistUtils.equals(getZ(),((ChartDataConfig)o).getZ()) |
||||
&& AssistUtils.equals(getTarName(),((ChartDataConfig)o).getTarName()); |
||||
} |
||||
} |
@ -0,0 +1,16 @@
|
||||
package com.fr.plugin.sqy.surface.chart; |
||||
|
||||
|
||||
public enum ChartType { |
||||
TYPE1, |
||||
TYPE2; |
||||
|
||||
public static ChartType parseInt(int index) { |
||||
for (ChartType type : ChartType.values()) { |
||||
if (type.ordinal() == index) { |
||||
return type; |
||||
} |
||||
} |
||||
return TYPE1; |
||||
} |
||||
} |
@ -0,0 +1,131 @@
|
||||
package com.fr.plugin.sqy.surface.config; |
||||
|
||||
|
||||
import com.fr.extended.chart.StringFormula; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
public class AxisConfig implements ConfigProvider{ |
||||
private String id; |
||||
private StringFormula name = new StringFormula(); |
||||
private String type; |
||||
private String nameLocation; |
||||
private StringFormula min = new StringFormula(); |
||||
private StringFormula max = new StringFormula(); |
||||
private final LabelConfig nameTextStyle = new LabelConfig("nameTextStyle"); |
||||
private final LabelConfig axisLabel = new LabelConfig("axisLabel"); |
||||
private final ShowConfig axisTick = new ShowConfig("axisTick"); |
||||
private final LineStyleConfig axisLine = new LineStyleConfig("axisLine"); |
||||
private final LineStyleConfig splitLine = new LineStyleConfig("splitLine"); |
||||
|
||||
private AxisConfig() { |
||||
} |
||||
|
||||
public AxisConfig(String id) { |
||||
this.id = id; |
||||
} |
||||
|
||||
|
||||
public StringFormula getMin() { |
||||
return min; |
||||
} |
||||
|
||||
public void setMin(StringFormula min) { |
||||
this.min = min; |
||||
} |
||||
|
||||
public StringFormula getMax() { |
||||
return max; |
||||
} |
||||
|
||||
public void setMax(StringFormula max) { |
||||
this.max = max; |
||||
} |
||||
|
||||
public String getId() { |
||||
return id; |
||||
} |
||||
|
||||
public StringFormula getName() { |
||||
return name; |
||||
} |
||||
|
||||
public String getType() { |
||||
return type; |
||||
} |
||||
|
||||
public String getNameLocation() { |
||||
return nameLocation; |
||||
} |
||||
|
||||
public LabelConfig getNameTextStyle() { |
||||
return nameTextStyle; |
||||
} |
||||
|
||||
public LabelConfig getAxisLabel() { |
||||
return axisLabel; |
||||
} |
||||
|
||||
public ShowConfig getAxisTick() { |
||||
return axisTick; |
||||
} |
||||
|
||||
public LineStyleConfig getAxisLine() { |
||||
return axisLine; |
||||
} |
||||
|
||||
public LineStyleConfig getSplitLine() { |
||||
return splitLine; |
||||
} |
||||
|
||||
public void setName(StringFormula name) { |
||||
this.name = name; |
||||
} |
||||
|
||||
public void setType(String type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
public void setNameLocation(String nameLocation) { |
||||
this.nameLocation = nameLocation; |
||||
} |
||||
|
||||
|
||||
private String concatName(String name1,String name2){ |
||||
if(StringUtils.isBlank(name2)){ |
||||
return name1 + "_" + this.getId(); |
||||
} |
||||
return name1 + "_" + this.getId() + "_" + name2; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void writeAttr(String var1, XMLPrintWriter var2) { |
||||
var2.attr(concatName(var1,"name"),this.getName().getContent()); |
||||
var2.attr(concatName(var1,"type"),this.getType()); |
||||
var2.attr(concatName(var1,"nameLocation"),this.getNameLocation()); |
||||
var2.attr(concatName(var1,"min"),this.getMin().getContent()); |
||||
var2.attr(concatName(var1,"max"),this.getMax().getContent()); |
||||
this.getNameTextStyle().writeAttr(concatName(var1,""),var2); |
||||
this.getAxisLabel().writeAttr(concatName(var1,""),var2); |
||||
this.getAxisTick().writeAttr(concatName(var1,""),var2); |
||||
this.getAxisLine().writeAttr(concatName(var1,""),var2); |
||||
this.getSplitLine().writeAttr(concatName(var1,""),var2); |
||||
} |
||||
|
||||
@Override |
||||
public void readAttr(String var1, XMLableReader var2) { |
||||
this.getName().setContent(var2.getAttrAsString(concatName(var1,"name"),"")); |
||||
this.setType(var2.getAttrAsString(concatName(var1,"type"),"")); |
||||
this.setNameLocation(var2.getAttrAsString(concatName(var1,"nameLocation"),"")); |
||||
this.getMin().setContent(var2.getAttrAsString(concatName(var1,"min"),"")); |
||||
this.getMax().setContent(var2.getAttrAsString(concatName(var1,"max"),"")); |
||||
this.getNameTextStyle().readAttr(concatName(var1,""),var2); |
||||
this.getAxisLabel().readAttr(concatName(var1,""),var2); |
||||
this.getAxisTick().readAttr(concatName(var1,""),var2); |
||||
this.getAxisLine().readAttr(concatName(var1,""),var2); |
||||
this.getSplitLine().readAttr(concatName(var1,""),var2); |
||||
|
||||
} |
||||
} |
@ -0,0 +1,9 @@
|
||||
package com.fr.plugin.sqy.surface.config; |
||||
|
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
public interface ConfigProvider { |
||||
public void writeAttr(String var1, XMLPrintWriter var2); |
||||
public void readAttr(String var1, XMLableReader var2); |
||||
} |
@ -0,0 +1,83 @@
|
||||
package com.fr.plugin.sqy.surface.config; |
||||
|
||||
import com.fr.plugin.sqy.surface.util.PluginStringUtils; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
import java.awt.*; |
||||
|
||||
public class LabelConfig implements ConfigProvider{ |
||||
private String id; |
||||
private boolean show; |
||||
private Color color = new Color(0x000000); |
||||
private int fontSize; |
||||
private String formatter; |
||||
|
||||
private LabelConfig(){ |
||||
|
||||
} |
||||
|
||||
public LabelConfig(String id) { |
||||
this.id = id; |
||||
} |
||||
|
||||
public String getId() { |
||||
return id; |
||||
} |
||||
|
||||
public boolean isShow() { |
||||
return show; |
||||
} |
||||
|
||||
public void setShow(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
public Color getColor() { |
||||
return color; |
||||
} |
||||
|
||||
public void setColor(Color color) { |
||||
this.color = color; |
||||
} |
||||
|
||||
public int getFontSize() { |
||||
return fontSize; |
||||
} |
||||
|
||||
public void setFontSize(int fontSize) { |
||||
this.fontSize = fontSize; |
||||
} |
||||
|
||||
public String getFormatter() { |
||||
return formatter; |
||||
} |
||||
|
||||
public void setFormatter(String formatter) { |
||||
this.formatter = formatter; |
||||
} |
||||
|
||||
private String concatName(String name1, String name2){ |
||||
if(StringUtils.isBlank(name2)){ |
||||
return name1 + "_" + this.getId(); |
||||
} |
||||
return name1 + "_" + this.getId() + "_" + name2; |
||||
} |
||||
|
||||
@Override |
||||
public void writeAttr(String var1, XMLPrintWriter var2) { |
||||
var2.attr(concatName(var1,"show"),this.isShow()); |
||||
var2.attr(concatName(var1,"color"), this.getColor().getRGB()); |
||||
var2.attr(concatName(var1,"fontSize"),this.getFontSize()); |
||||
var2.attr(concatName(var1,"formatter"),this.getFormatter()); |
||||
} |
||||
|
||||
@Override |
||||
public void readAttr(String var1, XMLableReader var2) { |
||||
this.setShow(var2.getAttrAsBoolean(concatName(var1,"show"),true)); |
||||
this.setColor(new Color(var2.getAttrAsInt(concatName(var1,"color"),new Color(0x000000).getRGB()))); |
||||
this.setFontSize(var2.getAttrAsInt(concatName(var1,"fontSize"),0)); |
||||
this.setFormatter(var2.getAttrAsString(concatName(var1,"formatter"),"")); |
||||
} |
||||
} |
@ -0,0 +1,70 @@
|
||||
package com.fr.plugin.sqy.surface.config; |
||||
|
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
import java.awt.*; |
||||
|
||||
public class LineStyleConfig implements ConfigProvider{ |
||||
private String id; |
||||
private Color color = new Color(0x000000); |
||||
private double width; |
||||
private String type; |
||||
|
||||
private LineStyleConfig() { |
||||
} |
||||
|
||||
public LineStyleConfig(String id) { |
||||
this.id = id; |
||||
} |
||||
|
||||
public String getId() { |
||||
return id; |
||||
} |
||||
|
||||
public Color getColor() { |
||||
return color; |
||||
} |
||||
|
||||
public void setColor(Color color) { |
||||
this.color = color; |
||||
} |
||||
|
||||
public double getWidth() { |
||||
return width; |
||||
} |
||||
|
||||
public void setWidth(double width) { |
||||
this.width = width; |
||||
} |
||||
|
||||
public String getType() { |
||||
return type; |
||||
} |
||||
|
||||
public void setType(String type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
private String concatName(String name1,String name2){ |
||||
if(StringUtils.isBlank(name2)){ |
||||
return name1 + "_" + this.getId(); |
||||
} |
||||
return name1 + "_" + this.getId() + "_" + name2; |
||||
} |
||||
|
||||
@Override |
||||
public void writeAttr(String var1, XMLPrintWriter var2) { |
||||
var2.attr(concatName(var1,"color"),this.getColor().getRGB()); |
||||
var2.attr(concatName(var1,"width"),this.getWidth()); |
||||
var2.attr(concatName(var1,"type"),this.getType()); |
||||
} |
||||
|
||||
@Override |
||||
public void readAttr(String var1, XMLableReader var2) { |
||||
this.setColor(new Color(var2.getAttrAsInt(concatName(var1,"color"),new Color(0x000000).getRGB()))); |
||||
this.setWidth(var2.getAttrAsDouble(concatName(var1,"width"),1D)); |
||||
this.setType(var2.getAttrAsString(concatName(var1,"type"),"")); |
||||
} |
||||
} |
@ -0,0 +1,45 @@
|
||||
package com.fr.plugin.sqy.surface.config; |
||||
|
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
public class ShowConfig implements ConfigProvider{ |
||||
private boolean show; |
||||
private String id; |
||||
|
||||
private ShowConfig(){ |
||||
} |
||||
|
||||
public ShowConfig(String id) { |
||||
this.id = id; |
||||
} |
||||
|
||||
public String getId() { |
||||
return id; |
||||
} |
||||
|
||||
public boolean isShow() { |
||||
return show; |
||||
} |
||||
|
||||
public void setShow(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
private String concatName(String name1,String name2){ |
||||
if(StringUtils.isBlank(name2)){ |
||||
return name1 + "_" + this.getId(); |
||||
} |
||||
return name1 + "_" + this.getId() + "_" + name2; |
||||
} |
||||
|
||||
@Override |
||||
public void writeAttr(String var1, XMLPrintWriter var2) { |
||||
var2.attr(concatName(var1,"show"),this.isShow()); |
||||
} |
||||
@Override |
||||
public void readAttr(String var1, XMLableReader var2) { |
||||
this.setShow(var2.getAttrAsBoolean(concatName(var1,"show"),true)); |
||||
} |
||||
} |
@ -0,0 +1,182 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
import com.fr.plugin.sqy.surface.zenum.AxisTypeEnum; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 坐标轴 |
||||
*/ |
||||
public class Axis3D implements OptionProvider { |
||||
/** |
||||
* 坐标轴类型 |
||||
*/ |
||||
private String type; |
||||
/** |
||||
* 坐标轴名称 |
||||
*/ |
||||
private String name; |
||||
/** |
||||
* 坐标轴名称位置 |
||||
*/ |
||||
private String nameLocation; |
||||
|
||||
/** |
||||
* 坐标轴值 类目数据,在类目轴(type: 'category')中有效。 |
||||
*/ |
||||
private List<Object> data; |
||||
|
||||
private Double min; |
||||
|
||||
private Double max; |
||||
|
||||
private boolean boundaryGap = true; |
||||
|
||||
private LabelStyle nameTextStyle; |
||||
|
||||
private LabelStyle axisLabel; |
||||
|
||||
private AxisTick axisTick; |
||||
|
||||
private AxisLine axisLine; |
||||
|
||||
private SplitLine splitLine; |
||||
|
||||
|
||||
public Double getMin() { |
||||
return min; |
||||
} |
||||
|
||||
public void setMin(Double min) { |
||||
this.min = min; |
||||
} |
||||
|
||||
public Double getMax() { |
||||
return max; |
||||
} |
||||
|
||||
public void setMax(Double max) { |
||||
this.max = max; |
||||
} |
||||
|
||||
public boolean isBoundaryGap() { |
||||
return boundaryGap; |
||||
} |
||||
|
||||
public void setBoundaryGap(boolean boundaryGap) { |
||||
this.boundaryGap = boundaryGap; |
||||
} |
||||
|
||||
public LabelStyle getNameTextStyle() { |
||||
return nameTextStyle; |
||||
} |
||||
|
||||
public void setNameTextStyle(LabelStyle nameTextStyle) { |
||||
this.nameTextStyle = nameTextStyle; |
||||
} |
||||
|
||||
public LabelStyle getAxisLabel() { |
||||
return axisLabel; |
||||
} |
||||
|
||||
public void setAxisLabel(LabelStyle axisLabel) { |
||||
this.axisLabel = axisLabel; |
||||
} |
||||
|
||||
public AxisTick getAxisTick() { |
||||
return axisTick; |
||||
} |
||||
|
||||
public void setAxisTick(AxisTick axisTick) { |
||||
this.axisTick = axisTick; |
||||
} |
||||
|
||||
public AxisLine getAxisLine() { |
||||
return axisLine; |
||||
} |
||||
|
||||
public void setAxisLine(AxisLine axisLine) { |
||||
this.axisLine = axisLine; |
||||
} |
||||
|
||||
public SplitLine getSplitLine() { |
||||
return splitLine; |
||||
} |
||||
|
||||
public void setSplitLine(SplitLine splitLine) { |
||||
this.splitLine = splitLine; |
||||
} |
||||
|
||||
public String getType() { |
||||
return type; |
||||
} |
||||
|
||||
public void setType(String type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
public String getName() { |
||||
return name; |
||||
} |
||||
|
||||
public void setName(String name) { |
||||
this.name = name; |
||||
} |
||||
|
||||
public String getNameLocation() { |
||||
return nameLocation; |
||||
} |
||||
|
||||
public void setNameLocation(String nameLocation) { |
||||
this.nameLocation = nameLocation; |
||||
} |
||||
|
||||
public List<Object> getData() { |
||||
return data; |
||||
} |
||||
|
||||
public void setData(List<Object> data) { |
||||
this.data = data; |
||||
} |
||||
|
||||
public JSONObject getJSONObject(){ |
||||
JSONObject axis3D = JSONKit.create(); |
||||
axis3D.put("type",AxisTypeEnum.parseString(this.getType()).getName()); |
||||
axis3D.put("name",this.getName()); |
||||
if(this.getData() != null){ |
||||
JSONArray dataJSONArray = JSONKit.createJSONArray(); |
||||
for (int i = 0; i < data.size(); i++) { |
||||
dataJSONArray.put(data.get(i)); |
||||
} |
||||
axis3D.put("data",dataJSONArray); |
||||
} |
||||
axis3D.put("boundaryGap",this.isBoundaryGap()); |
||||
if(this.getAxisLabel() != null){ |
||||
axis3D.put("axisLabel",this.getAxisLabel().getJSONObject()); |
||||
} |
||||
if(this.getAxisTick() != null){ |
||||
axis3D.put("axisTick",this.getAxisTick().getJSONObject()); |
||||
} |
||||
if(this.getAxisLine() != null){ |
||||
axis3D.put("axisLine",this.getAxisLine().getJSONObject()); |
||||
} |
||||
if(this.getSplitLine() != null){ |
||||
axis3D.put("splitLine",this.getSplitLine().getJSONObject()); |
||||
} |
||||
if(this.getNameTextStyle() != null){ |
||||
axis3D.put("nameTextStyle",this.getNameTextStyle().getJSONObject()); |
||||
} |
||||
if(this.getMax() != null){ |
||||
axis3D.put("max",this.getMax()); |
||||
} |
||||
if(this.getMin() != null){ |
||||
axis3D.put("min",this.getMin()); |
||||
} |
||||
return axis3D; |
||||
} |
||||
} |
@ -0,0 +1,48 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
|
||||
public class AxisLine implements OptionProvider { |
||||
private boolean show = true; |
||||
private LineStyle lineStyle; |
||||
|
||||
public AxisLine() { |
||||
} |
||||
|
||||
public AxisLine(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
public AxisLine(boolean show, LineStyle lineStyle) { |
||||
this.show = show; |
||||
this.lineStyle = lineStyle; |
||||
} |
||||
|
||||
public boolean isShow() { |
||||
return show; |
||||
} |
||||
|
||||
public void setShow(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
public LineStyle getLineStyle() { |
||||
return lineStyle; |
||||
} |
||||
|
||||
public void setLineStyle(LineStyle lineStyle) { |
||||
this.lineStyle = lineStyle; |
||||
} |
||||
|
||||
@Override |
||||
public JSONObject getJSONObject() { |
||||
JSONObject axisLine = JSONKit.create(); |
||||
axisLine.put("show",this.isShow()); |
||||
if(this.getLineStyle() != null){ |
||||
axisLine.put("lineStyle",this.getLineStyle().getJSONObject()); |
||||
} |
||||
return axisLine; |
||||
} |
||||
} |
@ -0,0 +1,31 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
|
||||
public class AxisTick implements OptionProvider { |
||||
private boolean show = true; |
||||
|
||||
public AxisTick() { |
||||
} |
||||
|
||||
public AxisTick(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
public boolean isShow() { |
||||
return show; |
||||
} |
||||
|
||||
public void setShow(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
@Override |
||||
public JSONObject getJSONObject() { |
||||
JSONObject axisTick = JSONKit.create(); |
||||
axisTick.put("show",this.isShow()); |
||||
return axisTick; |
||||
} |
||||
} |
@ -0,0 +1,107 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import java.util.List; |
||||
|
||||
public class ChartOption implements OptionProvider { |
||||
private ToolTip tooltip; |
||||
private String backGroundColor; |
||||
private VisualMap visualMap; |
||||
private Axis3D axis3Dx; |
||||
private Axis3D axis3Dy; |
||||
private Axis3D axis3Dz; |
||||
private Grid3D grid3D; |
||||
private List<Series> series; |
||||
|
||||
|
||||
|
||||
public ToolTip getTooltip() { |
||||
return tooltip; |
||||
} |
||||
|
||||
public void setTooltip(ToolTip tooltip) { |
||||
this.tooltip = tooltip; |
||||
} |
||||
|
||||
public String getBackGroundColor() { |
||||
return backGroundColor; |
||||
} |
||||
|
||||
public void setBackGroundColor(String backGroundColor) { |
||||
this.backGroundColor = backGroundColor; |
||||
} |
||||
|
||||
public VisualMap getVisualMap() { |
||||
return visualMap; |
||||
} |
||||
|
||||
public void setVisualMap(VisualMap visualMap) { |
||||
this.visualMap = visualMap; |
||||
} |
||||
|
||||
public Axis3D getAxis3Dx() { |
||||
return axis3Dx; |
||||
} |
||||
|
||||
public void setAxis3Dx(Axis3D axis3Dx) { |
||||
this.axis3Dx = axis3Dx; |
||||
} |
||||
|
||||
public Axis3D getAxis3Dy() { |
||||
return axis3Dy; |
||||
} |
||||
|
||||
public void setAxis3Dy(Axis3D axis3Dy) { |
||||
this.axis3Dy = axis3Dy; |
||||
} |
||||
|
||||
public Axis3D getAxis3Dz() { |
||||
return axis3Dz; |
||||
} |
||||
|
||||
public void setAxis3Dz(Axis3D axis3Dz) { |
||||
this.axis3Dz = axis3Dz; |
||||
} |
||||
|
||||
public Grid3D getGrid3D() { |
||||
return grid3D; |
||||
} |
||||
|
||||
public void setGrid3D(Grid3D grid3D) { |
||||
this.grid3D = grid3D; |
||||
} |
||||
|
||||
public List<Series> getSeries() { |
||||
return series; |
||||
} |
||||
|
||||
public void setSeries(List<Series> series) { |
||||
this.series = series; |
||||
} |
||||
|
||||
public JSONObject getJSONObject(){ |
||||
JSONObject option = JSONKit.create(); |
||||
option.put("tooltip",this.getTooltip() == null ? JSONKit.create() : this.getTooltip().getJSONObject()); |
||||
if(!StringUtils.isBlank(this.getBackGroundColor())){ |
||||
option.put("backgroundColor",this.getBackGroundColor()); |
||||
} |
||||
option.put("visualMap",this.getVisualMap() == null ? new VisualMap().getJSONObject() : this.getVisualMap().getJSONObject()); |
||||
option.put("xAxis3D",this.getAxis3Dx()==null ? new Axis3D().getJSONObject() : this.getAxis3Dx().getJSONObject()); |
||||
option.put("yAxis3D",this.getAxis3Dy()==null ? new Axis3D().getJSONObject() : this.getAxis3Dy().getJSONObject()); |
||||
option.put("zAxis3D",this.getAxis3Dz()==null ? new Axis3D().getJSONObject() : this.getAxis3Dz().getJSONObject()); |
||||
option.put("grid3D",this.getGrid3D() == null ? JSONKit.create() : this.getGrid3D().getJSONObject()); |
||||
JSONArray seriesJSONArray = JSONKit.createJSONArray(); |
||||
if(this.getSeries() != null){ |
||||
for (int i = 0; i < this.getSeries().size(); i++) { |
||||
seriesJSONArray.put(this.getSeries().get(i).getJSONObject()); |
||||
} |
||||
} |
||||
option.put("series",seriesJSONArray); |
||||
return option; |
||||
} |
||||
} |
@ -0,0 +1,26 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
|
||||
/** |
||||
* 图表网格 |
||||
*/ |
||||
public class Grid3D implements OptionProvider { |
||||
private String top = "middle"; |
||||
|
||||
public String getTop() { |
||||
return top; |
||||
} |
||||
|
||||
public void setTop(String top) { |
||||
this.top = top; |
||||
} |
||||
|
||||
public JSONObject getJSONObject(){ |
||||
JSONObject grid3D = JSONKit.create(); |
||||
grid3D.put("top",this.getTop()); |
||||
return grid3D; |
||||
} |
||||
} |
@ -0,0 +1,62 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
import com.fr.plugin.sqy.surface.util.PluginStringUtils; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import java.awt.*; |
||||
|
||||
public class LabelStyle implements OptionProvider { |
||||
private Color color; |
||||
private int fontsize; |
||||
private String formatter; |
||||
|
||||
public LabelStyle() { |
||||
} |
||||
|
||||
public LabelStyle(Color color, int fontsize) { |
||||
this.color = color; |
||||
this.fontsize = fontsize; |
||||
} |
||||
|
||||
public String getFormatter() { |
||||
return formatter; |
||||
} |
||||
|
||||
public void setFormatter(String formatter) { |
||||
this.formatter = formatter; |
||||
} |
||||
|
||||
public Color getColor() { |
||||
return color; |
||||
} |
||||
|
||||
public void setColor(Color color) { |
||||
this.color = color; |
||||
} |
||||
|
||||
public int getFontsize() { |
||||
return fontsize; |
||||
} |
||||
|
||||
public void setFontsize(int fontsize) { |
||||
this.fontsize = fontsize; |
||||
} |
||||
|
||||
@Override |
||||
public JSONObject getJSONObject() { |
||||
JSONObject labelStyle = JSONKit.create(); |
||||
if(this.getColor() != null){ |
||||
labelStyle.put("color", PluginStringUtils.colorToString(this.getColor())); |
||||
} |
||||
if(this.getFontsize() != 0){ |
||||
labelStyle.put("fontSize",this.getFontsize()); |
||||
} |
||||
if(StringUtils.isNotBlank(this.getFormatter())){ |
||||
labelStyle.put("formatter",this.getFormatter()); |
||||
} |
||||
return labelStyle; |
||||
} |
||||
} |
@ -0,0 +1,65 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.finebi.cbb.utils.data.NumberUtils; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
import com.fr.plugin.sqy.surface.util.PluginStringUtils; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import java.awt.*; |
||||
|
||||
public class LineStyle implements OptionProvider { |
||||
private Color color; |
||||
private double width; |
||||
private String type; |
||||
|
||||
public LineStyle() { |
||||
} |
||||
|
||||
public LineStyle(Color color, double width, String type) { |
||||
this.color = color; |
||||
this.width = width; |
||||
this.type = type; |
||||
} |
||||
|
||||
|
||||
public Color getColor() { |
||||
return color; |
||||
} |
||||
|
||||
public void setColor(Color color) { |
||||
this.color = color; |
||||
} |
||||
|
||||
public double getWidth() { |
||||
return width; |
||||
} |
||||
|
||||
public void setWidth(double width) { |
||||
this.width = width; |
||||
} |
||||
|
||||
public String getType() { |
||||
return type; |
||||
} |
||||
|
||||
public void setType(String type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
@Override |
||||
public JSONObject getJSONObject() { |
||||
JSONObject lineStyle = JSONKit.create(); |
||||
if(this.getColor() != null){ |
||||
lineStyle.put("color", PluginStringUtils.colorToString(this.getColor())); |
||||
} |
||||
if(this.getWidth() != 0){ |
||||
lineStyle.put("width",this.getWidth()); |
||||
} |
||||
if(StringUtils.isNotBlank(this.getType())){ |
||||
lineStyle.put("type",this.getType()); |
||||
} |
||||
return lineStyle; |
||||
} |
||||
} |
@ -0,0 +1,69 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import java.util.List; |
||||
|
||||
public class Series implements OptionProvider { |
||||
private String type = "surface"; |
||||
private List<Object> data; |
||||
private String name; |
||||
private Wireframe wireframe; |
||||
|
||||
|
||||
public String getType() { |
||||
return type; |
||||
} |
||||
|
||||
public void setType(String type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
public List<Object> getData() { |
||||
return data; |
||||
} |
||||
|
||||
public void setData(List<Object> data) { |
||||
this.data = data; |
||||
} |
||||
|
||||
public String getName() { |
||||
return name; |
||||
} |
||||
|
||||
public void setName(String name) { |
||||
this.name = name; |
||||
} |
||||
|
||||
public Wireframe getWireframe() { |
||||
return wireframe; |
||||
} |
||||
|
||||
public void setWireframe(Wireframe wireframe) { |
||||
this.wireframe = wireframe; |
||||
} |
||||
|
||||
public JSONObject getJSONObject(){ |
||||
JSONObject series = JSONKit.create(); |
||||
series.put("type",this.getType()); |
||||
JSONArray dataJSONArray = JSONKit.createJSONArray(); |
||||
if(this.getData() != null){ |
||||
for (int i = 0; i < data.size(); i++) { |
||||
dataJSONArray.put(data.get(i)); |
||||
} |
||||
} |
||||
series.put("data",dataJSONArray); |
||||
if(!StringUtils.isBlank(this.getName())){ |
||||
series.put("name",this.getName()); |
||||
} |
||||
if(this.getWireframe() != null){ |
||||
series.put("wireframe",this.getWireframe().getJSONObject()); |
||||
} |
||||
return series; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,48 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
|
||||
public class SplitLine implements OptionProvider { |
||||
private boolean show = true; |
||||
private LineStyle lineStyle; |
||||
|
||||
public SplitLine() { |
||||
} |
||||
|
||||
public SplitLine(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
public SplitLine(boolean show, LineStyle lineStyle) { |
||||
this.show = show; |
||||
this.lineStyle = lineStyle; |
||||
} |
||||
|
||||
public boolean isShow() { |
||||
return show; |
||||
} |
||||
|
||||
public void setShow(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
public LineStyle getLineStyle() { |
||||
return lineStyle; |
||||
} |
||||
|
||||
public void setLineStyle(LineStyle lineStyle) { |
||||
this.lineStyle = lineStyle; |
||||
} |
||||
|
||||
@Override |
||||
public JSONObject getJSONObject() { |
||||
JSONObject splitLine = JSONKit.create(); |
||||
splitLine.put("show",this.isShow()); |
||||
if(this.getLineStyle() != null){ |
||||
splitLine.put("lineStyle",this.getLineStyle().getJSONObject()); |
||||
} |
||||
return splitLine; |
||||
} |
||||
} |
@ -0,0 +1,415 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.extended.chart.ExtendedField; |
||||
import com.fr.general.GeneralUtils; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.plugin.sqy.surface.config.AxisConfig; |
||||
import com.fr.plugin.sqy.surface.config.LineStyleConfig; |
||||
import com.fr.plugin.sqy.surface.option.modle.ChartOptionProvide; |
||||
import com.fr.plugin.sqy.surface.zenum.AxisTypeEnum; |
||||
import com.fr.plugin.sqy.surface.util.PluginStringUtils; |
||||
import com.fr.plugin.sqy.surface.zenum.LineTypeEnum; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import java.awt.*; |
||||
import java.util.ArrayList; |
||||
import java.util.Comparator; |
||||
import java.util.List; |
||||
|
||||
public class SurfaceChartOptionBuilder implements ChartOptionProvide { |
||||
private ChartOption chartOption; |
||||
private List<Object> valuesX; |
||||
private List<Object> valuesY; |
||||
private List<Object> customValueField; |
||||
private List<ExtendedField> seriesFiles; |
||||
private List<Color> colors; |
||||
private String visualMin; |
||||
private String visualMax; |
||||
private LineStyleConfig wireFrameConfig; |
||||
private AxisConfig axisConfigX; |
||||
private AxisConfig axisConfigY; |
||||
private AxisConfig axisConfigZ; |
||||
|
||||
public AxisConfig getAxisConfigX() { |
||||
return axisConfigX; |
||||
} |
||||
|
||||
public void setAxisConfigX(AxisConfig axisConfigX) { |
||||
this.axisConfigX = axisConfigX; |
||||
} |
||||
|
||||
public AxisConfig getAxisConfigY() { |
||||
return axisConfigY; |
||||
} |
||||
|
||||
public void setAxisConfigY(AxisConfig axisConfigY) { |
||||
this.axisConfigY = axisConfigY; |
||||
} |
||||
|
||||
public AxisConfig getAxisConfigZ() { |
||||
return axisConfigZ; |
||||
} |
||||
|
||||
public void setAxisConfigZ(AxisConfig axisConfigZ) { |
||||
this.axisConfigZ = axisConfigZ; |
||||
} |
||||
|
||||
public LineStyleConfig getWireFrameConfig() { |
||||
return wireFrameConfig; |
||||
} |
||||
|
||||
public void setWireFrameConfig(LineStyleConfig wireFrameConfig) { |
||||
this.wireFrameConfig = wireFrameConfig; |
||||
} |
||||
|
||||
public String getVisualMin() { |
||||
return visualMin; |
||||
} |
||||
|
||||
public void setVisualMin(String visualMin) { |
||||
this.visualMin = visualMin; |
||||
} |
||||
|
||||
public String getVisualMax() { |
||||
return visualMax; |
||||
} |
||||
|
||||
public void setVisualMax(String visualMax) { |
||||
this.visualMax = visualMax; |
||||
} |
||||
|
||||
public List<Color> getColors() { |
||||
return colors; |
||||
} |
||||
|
||||
public void setColors(List<Color> colors) { |
||||
this.colors = colors; |
||||
} |
||||
|
||||
public List<Object> getCustomValueField() { |
||||
return customValueField; |
||||
} |
||||
|
||||
public void setCustomValueField(List<Object> customValueField) { |
||||
this.customValueField = customValueField; |
||||
} |
||||
|
||||
public List<Object> getValuesX() { |
||||
return valuesX; |
||||
} |
||||
|
||||
public void setValuesX(List<Object> valuesX) { |
||||
this.valuesX = valuesX; |
||||
} |
||||
|
||||
public List<Object> getValuesY() { |
||||
return valuesY; |
||||
} |
||||
|
||||
public void setValuesY(List<Object> valuesY) { |
||||
this.valuesY = valuesY; |
||||
} |
||||
|
||||
public List<ExtendedField> getSeriesFiles() { |
||||
return seriesFiles; |
||||
} |
||||
|
||||
public void setSeriesFiles(List<ExtendedField> seriesFiles) { |
||||
this.seriesFiles = seriesFiles; |
||||
} |
||||
|
||||
public SurfaceChartOptionBuilder() { |
||||
chartOption = new ChartOption(); |
||||
} |
||||
|
||||
@Override |
||||
public void buildToolTip() { |
||||
} |
||||
|
||||
@Override |
||||
public void buildVisualMap() { |
||||
VisualMap visualMap = new VisualMap(); |
||||
if(this.getColors() != null){ |
||||
VisualMap.InRange inRange = new VisualMap.InRange(); |
||||
inRange.setColor(this.getColors()); |
||||
visualMap.setInRange(inRange); |
||||
} |
||||
double min = Double.MAX_VALUE; |
||||
double max = Double.MIN_VALUE; |
||||
if(this.getCustomValueField() != null) { |
||||
for (int i = 0; i < this.getCustomValueField().size(); i++) { |
||||
double v = GeneralUtils.objectToNumber(this.getCustomValueField().get(i)).doubleValue(); |
||||
min = Math.min(v, min); |
||||
max = Math.max(v, max); |
||||
} |
||||
} |
||||
if(StringUtils.isNotBlank(visualMin) && PluginStringUtils.isNumber(visualMin)){ |
||||
min = Double.parseDouble(visualMin); |
||||
} |
||||
if(StringUtils.isNotBlank(visualMax) && PluginStringUtils.isNumber(visualMax)){ |
||||
max = Double.parseDouble(visualMax); |
||||
} |
||||
visualMap.setMax(max); |
||||
visualMap.setMin(min); |
||||
this.chartOption.setVisualMap(visualMap); |
||||
} |
||||
|
||||
@Override |
||||
public void buildAxis3Dx() { |
||||
Axis3D axis3D = new Axis3D(); |
||||
AxisConfig axisConfig = this.getAxisConfigX(); |
||||
//设置轴标题
|
||||
if(axisConfig.getNameTextStyle().isShow()){ |
||||
axis3D.setName(axisConfig.getName().getResult()); |
||||
axis3D.setNameTextStyle(new LabelStyle(axisConfig.getNameTextStyle().getColor(), axisConfig.getNameTextStyle().getFontSize())); |
||||
}else{ |
||||
axis3D.setName(""); |
||||
} |
||||
//设置轴标签
|
||||
if(axisConfig.getAxisLabel().isShow()){ |
||||
axis3D.setAxisLabel(new LabelStyle(axisConfig.getAxisLabel().getColor(),axisConfig.getAxisLabel().getFontSize())); |
||||
if(StringUtils.isNotBlank(axisConfig.getAxisLabel().getFormatter())){ |
||||
axis3D.getAxisLabel().setFormatter(axisConfig.getAxisLabel().getFormatter()); |
||||
} |
||||
} |
||||
//设置轴线
|
||||
if(LineTypeEnum.parseString(axisConfig.getAxisLine().getType()).ordinal() == 0){ |
||||
axis3D.setAxisLine(new AxisLine(false)); |
||||
}else{ |
||||
axis3D.setAxisLine(new AxisLine(true,new LineStyle(axisConfig.getAxisLine().getColor(),axisConfig.getAxisLine().getWidth(),axisConfig.getAxisLine().getType()))); |
||||
axis3D.setAxisTick(new AxisTick(axisConfig.getAxisTick().isShow())); |
||||
} |
||||
//设置网格线
|
||||
if(LineTypeEnum.parseString(axisConfig.getSplitLine().getType()).ordinal() == 0){ |
||||
axis3D.setSplitLine(new SplitLine(false)); |
||||
}else{ |
||||
axis3D.setSplitLine(new SplitLine(true,new LineStyle(axisConfig.getSplitLine().getColor(),axisConfig.getSplitLine().getWidth(),axisConfig.getSplitLine().getType()))); |
||||
} |
||||
|
||||
//设置值类型
|
||||
if(AxisTypeEnum.parseString(axisConfig.getType()).ordinal() == 0){ |
||||
if(this.getValuesX()!=null && this.getValuesX().size()>0 && (this.getValuesX().get(0) instanceof String)){ |
||||
axis3D.setType(AxisTypeEnum.CATEGORY.getName()); |
||||
axis3D.setBoundaryGap(false); |
||||
axis3D.setMax(null); |
||||
axis3D.setMin(null); |
||||
}else{ |
||||
axis3D.setType(axisConfig.getType()); |
||||
String min = axisConfig.getMin().getResult(); |
||||
if(PluginStringUtils.isNumber(min)){ |
||||
axis3D.setMin(Double.valueOf(min)); |
||||
} |
||||
String max = axisConfig.getMax().getResult(); |
||||
if(PluginStringUtils.isNumber(max)){ |
||||
axis3D.setMax(Double.valueOf(max)); |
||||
} |
||||
} |
||||
}else{ |
||||
axis3D.setType(axisConfig.getType()); |
||||
axis3D.setBoundaryGap(false); |
||||
} |
||||
|
||||
this.chartOption.setAxis3Dx(axis3D); |
||||
} |
||||
|
||||
@Override |
||||
public void buildAxis3Dy() { |
||||
Axis3D axis3D = new Axis3D(); |
||||
AxisConfig axisConfig = this.getAxisConfigY(); |
||||
//设置轴标题
|
||||
if(axisConfig.getNameTextStyle().isShow()){ |
||||
axis3D.setName(axisConfig.getName().getResult()); |
||||
axis3D.setNameTextStyle(new LabelStyle(axisConfig.getNameTextStyle().getColor(), axisConfig.getNameTextStyle().getFontSize())); |
||||
}else{ |
||||
axis3D.setName(""); |
||||
} |
||||
//设置轴标签
|
||||
if(axisConfig.getAxisLabel().isShow()){ |
||||
axis3D.setAxisLabel(new LabelStyle(axisConfig.getAxisLabel().getColor(),axisConfig.getAxisLabel().getFontSize())); |
||||
if(StringUtils.isNotBlank(axisConfig.getAxisLabel().getFormatter())){ |
||||
axis3D.getAxisLabel().setFormatter(axisConfig.getAxisLabel().getFormatter()); |
||||
} |
||||
} |
||||
//设置轴线
|
||||
if(LineTypeEnum.parseString(axisConfig.getAxisLine().getType()).ordinal() == 0){ |
||||
axis3D.setAxisLine(new AxisLine(false)); |
||||
}else{ |
||||
axis3D.setAxisLine(new AxisLine(true,new LineStyle(axisConfig.getAxisLine().getColor(),axisConfig.getAxisLine().getWidth(),axisConfig.getAxisLine().getType()))); |
||||
axis3D.setAxisTick(new AxisTick(axisConfig.getAxisTick().isShow())); |
||||
} |
||||
//设置网格线
|
||||
if(LineTypeEnum.parseString(axisConfig.getSplitLine().getType()).ordinal() == 0){ |
||||
axis3D.setSplitLine(new SplitLine(false)); |
||||
}else{ |
||||
axis3D.setSplitLine(new SplitLine(true,new LineStyle(axisConfig.getSplitLine().getColor(),axisConfig.getSplitLine().getWidth(),axisConfig.getSplitLine().getType()))); |
||||
} |
||||
|
||||
//设置值类型
|
||||
if(AxisTypeEnum.parseString(axisConfig.getType()).ordinal() == 0){ |
||||
if(this.getValuesY()!=null && this.getValuesY().size()>0 && (this.getValuesY().get(0) instanceof String)){ |
||||
axis3D.setType(AxisTypeEnum.CATEGORY.getName()); |
||||
axis3D.setBoundaryGap(false); |
||||
axis3D.setMax(null); |
||||
axis3D.setMin(null); |
||||
}else{ |
||||
axis3D.setType(axisConfig.getType()); |
||||
String min = axisConfig.getMin().getResult(); |
||||
if(PluginStringUtils.isNumber(min)){ |
||||
axis3D.setMin(Double.valueOf(min)); |
||||
} |
||||
String max = axisConfig.getMax().getResult(); |
||||
if(PluginStringUtils.isNumber(max)){ |
||||
axis3D.setMax(Double.valueOf(max)); |
||||
} |
||||
} |
||||
}else{ |
||||
axis3D.setType(axisConfig.getType()); |
||||
axis3D.setBoundaryGap(false); |
||||
} |
||||
|
||||
this.chartOption.setAxis3Dy(axis3D); |
||||
} |
||||
|
||||
@Override |
||||
public void buildAxis3Dz() { |
||||
Axis3D axis3D = new Axis3D(); |
||||
AxisConfig axisConfig = this.getAxisConfigZ(); |
||||
//设置轴标题
|
||||
if(axisConfig.getNameTextStyle().isShow()){ |
||||
axis3D.setName(axisConfig.getName().getResult()); |
||||
axis3D.setNameTextStyle(new LabelStyle(axisConfig.getNameTextStyle().getColor(), axisConfig.getNameTextStyle().getFontSize())); |
||||
}else{ |
||||
axis3D.setName(""); |
||||
} |
||||
//设置轴标签
|
||||
if(axisConfig.getAxisLabel().isShow()){ |
||||
axis3D.setAxisLabel(new LabelStyle(axisConfig.getAxisLabel().getColor(),axisConfig.getAxisLabel().getFontSize())); |
||||
if(StringUtils.isNotBlank(axisConfig.getAxisLabel().getFormatter())){ |
||||
axis3D.getAxisLabel().setFormatter(axisConfig.getAxisLabel().getFormatter()); |
||||
} |
||||
} |
||||
//设置轴线
|
||||
if(LineTypeEnum.parseString(axisConfig.getAxisLine().getType()).ordinal() == 0){ |
||||
axis3D.setAxisLine(new AxisLine(false)); |
||||
}else{ |
||||
axis3D.setAxisLine(new AxisLine(true,new LineStyle(axisConfig.getAxisLine().getColor(),axisConfig.getAxisLine().getWidth(),axisConfig.getAxisLine().getType()))); |
||||
axis3D.setAxisTick(new AxisTick(axisConfig.getAxisTick().isShow())); |
||||
} |
||||
//设置网格线
|
||||
if(LineTypeEnum.parseString(axisConfig.getSplitLine().getType()).ordinal() == 0){ |
||||
axis3D.setSplitLine(new SplitLine(false)); |
||||
}else{ |
||||
axis3D.setSplitLine(new SplitLine(true,new LineStyle(axisConfig.getSplitLine().getColor(),axisConfig.getSplitLine().getWidth(),axisConfig.getSplitLine().getType()))); |
||||
} |
||||
|
||||
//设置值类型
|
||||
if(AxisTypeEnum.parseString(axisConfig.getType()).ordinal() == 0){ |
||||
if(this.getCustomValueField()!=null && this.getCustomValueField().size()>0 && (this.getCustomValueField().get(0) instanceof String)){ |
||||
axis3D.setType(AxisTypeEnum.CATEGORY.getName()); |
||||
axis3D.setBoundaryGap(false); |
||||
axis3D.setMax(null); |
||||
axis3D.setMin(null); |
||||
}else{ |
||||
axis3D.setType(axisConfig.getType()); |
||||
String min = axisConfig.getMin().getResult(); |
||||
if(PluginStringUtils.isNumber(min)){ |
||||
axis3D.setMin(Double.valueOf(min)); |
||||
} |
||||
String max = axisConfig.getMax().getResult(); |
||||
if(PluginStringUtils.isNumber(max)){ |
||||
axis3D.setMax(Double.valueOf(max)); |
||||
} |
||||
} |
||||
}else{ |
||||
axis3D.setType(axisConfig.getType()); |
||||
axis3D.setBoundaryGap(false); |
||||
} |
||||
this.chartOption.setAxis3Dz(axis3D); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void buildGrid3D() { |
||||
this.chartOption.setGrid3D(new Grid3D()); |
||||
} |
||||
|
||||
@Override |
||||
public void buildSeries() { |
||||
List<Series> seriesList = new ArrayList<>(); |
||||
if(this.getSeriesFiles() != null) { |
||||
Wireframe wireframe = null; |
||||
if(this.getWireFrameConfig() != null){ |
||||
wireframe = new Wireframe(); |
||||
boolean isShow = LineTypeEnum.parseString(this.getWireFrameConfig().getType()).ordinal() != 0; |
||||
wireframe.setShow(isShow); |
||||
if(isShow){ |
||||
LineStyle lineStyle = new LineStyle(); |
||||
lineStyle.setColor(this.getWireFrameConfig().getColor()); |
||||
lineStyle.setWidth(this.getWireFrameConfig().getWidth()); |
||||
lineStyle.setType(this.getWireFrameConfig().getType()); |
||||
wireframe.setLineStyle(lineStyle); |
||||
} |
||||
} |
||||
for (ExtendedField seriesFile : this.getSeriesFiles()) { |
||||
seriesList.add(this.buildSeries(seriesFile,wireframe)); |
||||
} |
||||
} |
||||
|
||||
this.chartOption.setSeries(seriesList); |
||||
} |
||||
|
||||
private Series buildSeries(ExtendedField values,Wireframe wireframe){ |
||||
Series series = new Series(); |
||||
series.setWireframe(wireframe); |
||||
List<Object> customValues = values.getValues(); |
||||
series.setName(values.getCustomName()); |
||||
if(this.getValuesX() != null && this.getValuesX().size() > 0){ |
||||
List<Object> dataList = new ArrayList<>(); |
||||
for (int i = 0; i < valuesY.size(); i++) { |
||||
dataList.add(JSONKit.createJSONArray() |
||||
.put(valuesX.size()>i ? valuesX.get(i) : 0) |
||||
.put(valuesY.get(i)) |
||||
.put(customValues.size()>i ? customValues.get(i) : 0) |
||||
); |
||||
} |
||||
//需要对数据进行排序,否则图形出不来
|
||||
dataList.sort(new Comparator<Object>() { |
||||
public int compare(Object o1,Object o2){ |
||||
try { |
||||
Object o1col = ((JSONArray)o1).get(1); |
||||
Object o2col = ((JSONArray)o2).get(1); |
||||
int i; |
||||
if(o1col instanceof Number){ |
||||
i = Double.valueOf(String.valueOf(o1col)).compareTo(Double.valueOf(String.valueOf(o2col))); |
||||
}else{ |
||||
i = String.valueOf(o1col).compareTo(String.valueOf(o2col)); |
||||
} |
||||
if(i != 0){ |
||||
return i; |
||||
} |
||||
o1col = ((JSONArray)o1).get(0); |
||||
o2col = ((JSONArray)o2).get(0); |
||||
if(o1col instanceof Number){ |
||||
return Double.valueOf(String.valueOf(o1col)).compareTo(Double.valueOf(String.valueOf(o2col))); |
||||
}else{ |
||||
return String.valueOf(o1col).compareTo(String.valueOf(o2col)); |
||||
} |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return 0; |
||||
} |
||||
} |
||||
}); |
||||
series.setData(dataList); |
||||
} |
||||
return series; |
||||
} |
||||
|
||||
|
||||
|
||||
@Override |
||||
public ChartOption createChartOption() { |
||||
return chartOption; |
||||
} |
||||
} |
@ -0,0 +1,16 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
|
||||
|
||||
/** |
||||
* 提示框配置 |
||||
*/ |
||||
public class ToolTip implements OptionProvider { |
||||
|
||||
public JSONObject getJSONObject(){ |
||||
return JSONKit.create(); |
||||
} |
||||
} |
@ -0,0 +1,146 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
import com.fr.plugin.sqy.surface.util.PluginStringUtils; |
||||
|
||||
import java.awt.*; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 视觉隐射组件配置 |
||||
*/ |
||||
public class VisualMap implements OptionProvider { |
||||
|
||||
/** |
||||
* 类型,默认连续型 |
||||
*/ |
||||
private String type = "continuous"; |
||||
/** |
||||
* 指定 visualMapContinuous 组件的允许的最小值。'min' 必须用户指定。[visualMap.min, visualMax.max] 形成了视觉映射的『定义域』。 |
||||
*/ |
||||
private double min = -1D; |
||||
/** |
||||
* 指定 visualMapContinuous 组件的允许的最大值。'max' 必须用户指定。[visualMap.min, visualMax.max] 形成了视觉映射的『定义域』。 |
||||
*/ |
||||
private double max = 1D; |
||||
|
||||
/** |
||||
* 是否显示 visualMap-continuous 组件。如果设置为 false,不会显示,但是数据映射的功能还存在。 |
||||
*/ |
||||
private boolean show = false; |
||||
|
||||
/** |
||||
* 指定用数据的『哪个维度』,映射到视觉元素上 默认取 data 中最后一个维度。 |
||||
*/ |
||||
private int dimension = 2; |
||||
/** |
||||
* 定义 在选中范围中 的视觉元素。 目前定义不完善 |
||||
*/ |
||||
private InRange inRange = new InRange(); |
||||
|
||||
public JSONObject getJSONObject(){ |
||||
JSONObject visualMap = JSONKit.create(); |
||||
visualMap.put("show",this.isShow()); |
||||
visualMap.put("dimension",this.getDimension()); |
||||
visualMap.put("min",this.getMin()); |
||||
visualMap.put("max",this.getMax()); |
||||
visualMap.put("inRange",this.getInRange().getJSONObject()); |
||||
return visualMap; |
||||
} |
||||
|
||||
public String getType() { |
||||
return type; |
||||
} |
||||
|
||||
public void setType(String type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
public double getMin() { |
||||
return min; |
||||
} |
||||
|
||||
public void setMin(double min) { |
||||
this.min = min; |
||||
} |
||||
|
||||
public double getMax() { |
||||
return max; |
||||
} |
||||
|
||||
public void setMax(double max) { |
||||
this.max = max; |
||||
} |
||||
|
||||
public boolean isShow() { |
||||
return show; |
||||
} |
||||
|
||||
public void setShow(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
public int getDimension() { |
||||
return dimension; |
||||
} |
||||
|
||||
public void setDimension(int dimension) { |
||||
this.dimension = dimension; |
||||
} |
||||
|
||||
public InRange getInRange() { |
||||
return inRange; |
||||
} |
||||
|
||||
public void setInRange(InRange inRange) { |
||||
this.inRange = inRange; |
||||
} |
||||
|
||||
public static class InRange{ |
||||
private List<Color> color; |
||||
|
||||
public List<Color> getColor() { |
||||
return color; |
||||
} |
||||
|
||||
public void setColor(List<Color> color) { |
||||
this.color = color; |
||||
} |
||||
|
||||
public static List<Color> getDefaultColor(){ |
||||
List<Color> colors = new ArrayList<>(); |
||||
colors.add(new Color(0x313695)); |
||||
colors.add(new Color(0x4575b4)); |
||||
colors.add(new Color(0x74add1)); |
||||
colors.add(new Color(0xabd9e9)); |
||||
colors.add(new Color(0xe0f3f8)); |
||||
colors.add(new Color(0xffffbf)); |
||||
colors.add(new Color(0xfee090)); |
||||
colors.add(new Color(0xfdae61)); |
||||
colors.add(new Color(0xf46d43)); |
||||
colors.add(new Color(0xd73027)); |
||||
colors.add(new Color(0xa50026)); |
||||
return colors; |
||||
} |
||||
|
||||
public JSONObject getJSONObject(){ |
||||
JSONObject inRange = JSONKit.create(); |
||||
JSONArray colorJSONArray = JSONKit.createJSONArray(); |
||||
if(this.getColor() == null){ |
||||
this.setColor(getDefaultColor()); |
||||
} |
||||
for (int i = 0; i < color.size(); i++) { |
||||
Color color = this.color.get(i); |
||||
colorJSONArray.put(PluginStringUtils.colorToString(color)); |
||||
} |
||||
inRange.put("color",colorJSONArray); |
||||
|
||||
return inRange; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,36 @@
|
||||
package com.fr.plugin.sqy.surface.option; |
||||
|
||||
import com.fanruan.api.json.JSONKit; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.sqy.surface.option.modle.OptionProvider; |
||||
|
||||
public class Wireframe implements OptionProvider { |
||||
private boolean show; |
||||
private LineStyle lineStyle; |
||||
|
||||
public boolean isShow() { |
||||
return show; |
||||
} |
||||
|
||||
public void setShow(boolean show) { |
||||
this.show = show; |
||||
} |
||||
|
||||
public LineStyle getLineStyle() { |
||||
return lineStyle; |
||||
} |
||||
|
||||
public void setLineStyle(LineStyle lineStyle) { |
||||
this.lineStyle = lineStyle; |
||||
} |
||||
|
||||
@Override |
||||
public JSONObject getJSONObject() { |
||||
JSONObject wireframe = JSONKit.create(); |
||||
wireframe.put("show",this.isShow()); |
||||
if(this.getLineStyle() != null){ |
||||
wireframe.put("lineStyle",this.getLineStyle().getJSONObject()); |
||||
} |
||||
return wireframe; |
||||
} |
||||
} |
@ -0,0 +1,16 @@
|
||||
package com.fr.plugin.sqy.surface.option.modle; |
||||
|
||||
import com.fr.plugin.sqy.surface.option.ChartOption; |
||||
|
||||
public class ChartOptionDirector { |
||||
public static ChartOption createChartOptionByModel(ChartOptionProvide builder){ |
||||
builder.buildToolTip(); |
||||
builder.buildAxis3Dx(); |
||||
builder.buildAxis3Dy(); |
||||
builder.buildAxis3Dz(); |
||||
builder.buildGrid3D(); |
||||
builder.buildVisualMap(); |
||||
builder.buildSeries(); |
||||
return builder.createChartOption(); |
||||
} |
||||
} |
@ -0,0 +1,14 @@
|
||||
package com.fr.plugin.sqy.surface.option.modle; |
||||
|
||||
import com.fr.plugin.sqy.surface.option.ChartOption; |
||||
|
||||
public interface ChartOptionProvide { |
||||
public void buildToolTip(); |
||||
public void buildVisualMap(); |
||||
public void buildAxis3Dx(); |
||||
public void buildAxis3Dy(); |
||||
public void buildAxis3Dz(); |
||||
public void buildGrid3D(); |
||||
public void buildSeries(); |
||||
public ChartOption createChartOption(); |
||||
} |
@ -0,0 +1,7 @@
|
||||
package com.fr.plugin.sqy.surface.option.modle; |
||||
|
||||
import com.fr.json.JSONObject; |
||||
|
||||
public interface OptionProvider { |
||||
public JSONObject getJSONObject(); |
||||
} |
@ -0,0 +1,67 @@
|
||||
package com.fr.plugin.sqy.surface.pane; |
||||
|
||||
import com.fr.design.formula.TinyFormulaPane; |
||||
import com.fr.design.gui.itextfield.UITextField; |
||||
import com.fr.extended.chart.AbstractExtendedChartReportDataPane; |
||||
import com.fr.plugin.sqy.surface.chart.ChartDataConfig; |
||||
|
||||
import java.awt.*; |
||||
|
||||
public class ReportDataPane extends AbstractExtendedChartReportDataPane<ChartDataConfig> { |
||||
|
||||
private TinyFormulaPane xPane; |
||||
private TinyFormulaPane yPane; |
||||
|
||||
@Override |
||||
protected boolean hasCustomFieldPane() { |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
protected String[] fieldLabel() { |
||||
return new String[]{ |
||||
"X轴", |
||||
"Y轴" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected Component[] fieldComponents() { |
||||
if (xPane == null) { |
||||
xPane = new TinyFormulaPane(); |
||||
yPane = new TinyFormulaPane(); |
||||
} |
||||
return new Component[]{ |
||||
xPane, |
||||
yPane |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected TinyFormulaPane[] formulaPanes() { |
||||
if (xPane == null) { |
||||
xPane = new TinyFormulaPane(); |
||||
yPane = new TinyFormulaPane(); |
||||
} |
||||
return new TinyFormulaPane[]{ |
||||
xPane, |
||||
yPane |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected void populate(ChartDataConfig chartDataConfig) { |
||||
populateField(xPane, chartDataConfig.getX()); |
||||
populateField(yPane, chartDataConfig.getY()); |
||||
|
||||
} |
||||
|
||||
@Override |
||||
protected ChartDataConfig update() { |
||||
ChartDataConfig dataConfig = new ChartDataConfig(); |
||||
updateField(xPane, dataConfig.getX()); |
||||
updateField(yPane, dataConfig.getY()); |
||||
return dataConfig; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,31 @@
|
||||
package com.fr.plugin.sqy.surface.pane; |
||||
|
||||
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||
import com.fr.extended.chart.AbstractExtendedStylePane; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.plugin.sqy.surface.chart.Chart; |
||||
import com.fr.plugin.sqy.surface.pane.style.VisualPane; |
||||
import com.fr.plugin.sqy.surface.pane.style.Axis3DXPane; |
||||
import com.fr.plugin.sqy.surface.pane.style.Axis3DYPane; |
||||
import com.fr.plugin.sqy.surface.pane.style.Axis3DZPane; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
public class StylePane extends AbstractExtendedStylePane<Chart> { |
||||
|
||||
public StylePane(AttributeChangeListener listener) { |
||||
super(listener); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
protected List<ExtendedScrollPane<Chart>> initPaneList() { |
||||
List<ExtendedScrollPane<Chart>> list = new ArrayList<ExtendedScrollPane<Chart>>(); |
||||
list.add(new VisualPane()); |
||||
list.add(new Axis3DXPane()); |
||||
list.add(new Axis3DYPane()); |
||||
list.add(new Axis3DZPane()); |
||||
return list; |
||||
} |
||||
} |
@ -0,0 +1,66 @@
|
||||
package com.fr.plugin.sqy.surface.pane; |
||||
|
||||
import com.fr.design.gui.icombobox.UIComboBox; |
||||
import com.fr.extended.chart.AbstractExtendedChartTableDataPane; |
||||
import com.fr.extended.chart.ExtendedCustomFieldComboBoxPane; |
||||
import com.fr.plugin.sqy.surface.chart.ChartDataConfig; |
||||
|
||||
import java.awt.*; |
||||
|
||||
public class TableDataPane extends AbstractExtendedChartTableDataPane<ChartDataConfig> { |
||||
|
||||
private UIComboBox xComboBox; |
||||
private UIComboBox yComboBox; |
||||
|
||||
@Override |
||||
protected ExtendedCustomFieldComboBoxPane createExtendedCustomFieldComboBoxPane() { |
||||
return new ExtendedCustomFieldComboBoxPane(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
protected String[] fieldLabels() { |
||||
return new String[]{ |
||||
"X轴", |
||||
"Y轴" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected Component[] fieldComponents() { |
||||
if (xComboBox == null) { |
||||
xComboBox = new UIComboBox(); |
||||
yComboBox = new UIComboBox(); |
||||
} |
||||
return new Component[]{ |
||||
xComboBox, |
||||
yComboBox |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected UIComboBox[] filedComboBoxes() { |
||||
if (xComboBox == null) { |
||||
xComboBox = new UIComboBox(); |
||||
yComboBox = new UIComboBox(); |
||||
} |
||||
return new UIComboBox[]{ |
||||
xComboBox, |
||||
yComboBox |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected void populate(ChartDataConfig chartDataConfig) { |
||||
populateField(xComboBox, chartDataConfig.getX()); |
||||
populateField(yComboBox, chartDataConfig.getY()); |
||||
} |
||||
|
||||
@Override |
||||
protected ChartDataConfig update() { |
||||
ChartDataConfig dataConfig = new ChartDataConfig(); |
||||
updateField(xComboBox, dataConfig.getX()); |
||||
updateField(yComboBox, dataConfig.getY()); |
||||
return dataConfig; |
||||
} |
||||
} |
@ -0,0 +1,49 @@
|
||||
package com.fr.plugin.sqy.surface.pane; |
||||
|
||||
import com.fr.extended.chart.ExtendedTypePane; |
||||
import com.fr.plugin.sqy.surface.chart.Chart; |
||||
import com.fr.plugin.sqy.surface.chart.ChartType; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
public class TypePane extends ExtendedTypePane<Chart> { |
||||
@Override |
||||
protected String[] getTypeIconPath() { |
||||
return new String[]{ |
||||
"com/fr/plugin/sqy/surface/img/type1.png" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected String[] getTypeTipName() { |
||||
return new String[]{ |
||||
"曲面图" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected int getTypeIndex(Chart surfaceChart) { |
||||
return surfaceChart.getChartType().ordinal(); |
||||
} |
||||
|
||||
@Override |
||||
protected void setType(Chart surfaceChart, int i) { |
||||
surfaceChart.setChartType(ChartType.parseInt(i)); |
||||
} |
||||
|
||||
@Override |
||||
protected Component[][] getPaneComponents(JPanel jPanel) { |
||||
return super.getPaneComponents(jPanel); |
||||
} |
||||
|
||||
@Override |
||||
protected void populate(Chart surfaceChart) { |
||||
super.populate(surfaceChart); |
||||
} |
||||
|
||||
@Override |
||||
protected void update(Chart surfaceChart) { |
||||
super.update(surfaceChart); |
||||
} |
||||
} |
@ -0,0 +1,230 @@
|
||||
package com.fr.plugin.sqy.surface.pane.style; |
||||
|
||||
|
||||
import com.fanruan.api.design.ui.component.UIDescriptionTextArea; |
||||
import com.fanruan.api.design.ui.component.UITextArea; |
||||
import com.fanruan.api.design.ui.component.code.UISyntaxTextArea; |
||||
import com.fr.design.formula.TinyFormulaPane; |
||||
import com.fr.design.gui.ibutton.UIButtonGroup; |
||||
import com.fr.design.gui.icombobox.UIComboBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.ispinner.UISpinner; |
||||
import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.style.color.ColorSelectBox; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.plugin.chart.type.LineType; |
||||
import com.fr.plugin.sqy.surface.chart.Chart; |
||||
import com.fr.plugin.sqy.surface.config.AxisConfig; |
||||
import com.fr.plugin.sqy.surface.config.LabelConfig; |
||||
import com.fr.plugin.sqy.surface.config.LineStyleConfig; |
||||
import com.fr.plugin.sqy.surface.util.CreatePaneUtils; |
||||
import com.fr.plugin.sqy.surface.zenum.AxisTypeEnum; |
||||
import com.fr.plugin.sqy.surface.zenum.LineTypeEnum; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
||||
import com.fr.van.chart.designer.component.LineTypeComboBox; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
public class Axis3DXPane extends ExtendedScrollPane<Chart> { |
||||
private UIButtonGroup titleIsShow; |
||||
private TinyFormulaPane title; |
||||
private UISpinner titleFontsize; |
||||
private ColorSelectBox titleFontColor; |
||||
|
||||
|
||||
private UIButtonGroup axisLabelIsShow; |
||||
private UISpinner axisLabelFontsize; |
||||
private ColorSelectBox axisLabelFontColor; |
||||
private UITextArea axisFormatter; |
||||
|
||||
|
||||
private LineTypeComboBox axisLineTypeComboBox; |
||||
private UISpinner axisLineWidth; |
||||
private ColorSelectBox axisLineColor; |
||||
private UIButtonGroup axisTickIsShow; |
||||
|
||||
private LineTypeComboBox splitLineTypeComboBox; |
||||
private UISpinner splitLineWidth; |
||||
private ColorSelectBox splitLineColor; |
||||
|
||||
private UIComboBox valueType; |
||||
private TinyFormulaPane minValue; |
||||
private TinyFormulaPane maxValue; |
||||
|
||||
|
||||
@Override |
||||
public void populateBean(Chart ob) { |
||||
AxisConfig axisConfigX = ob.getAxisConfigX(); |
||||
//标题
|
||||
LabelConfig nameTextStyle = axisConfigX.getNameTextStyle(); |
||||
this.titleIsShow.setSelectedIndex(nameTextStyle.isShow() ? 0 : 1); |
||||
this.title.populateBean(axisConfigX.getName().getContent()); |
||||
this.titleFontsize.setValue(nameTextStyle.getFontSize() == 0 ? 16 : nameTextStyle.getFontSize()); |
||||
this.titleFontColor.setSelectObject(nameTextStyle.getColor()); |
||||
|
||||
//标签
|
||||
LabelConfig axisLabel = axisConfigX.getAxisLabel(); |
||||
this.axisLabelIsShow.setSelectedIndex(axisLabel.isShow() ? 0 : 1); |
||||
this.axisLabelFontsize.setValue(axisLabel.getFontSize() == 0 ? 12 : axisLabel.getFontSize()); |
||||
this.axisLabelFontColor.setSelectObject(axisLabel.getColor()); |
||||
this.axisFormatter.setText(axisLabel.getFormatter()); |
||||
|
||||
//轴线
|
||||
LineStyleConfig axisLine = axisConfigX.getAxisLine(); |
||||
this.axisLineTypeComboBox.setSelectedIndex(LineTypeEnum.parseString(axisLine.getType()).ordinal()); |
||||
this.axisLineWidth.setValue(axisLine.getWidth() == 0 ? 2 : axisLine.getWidth()); |
||||
this.axisLineColor.setSelectObject(axisLine.getColor()); |
||||
|
||||
//刻度线
|
||||
this.axisTickIsShow.setSelectedIndex(axisConfigX.getAxisTick().isShow() ? 0 : 1); |
||||
|
||||
//网格线
|
||||
LineStyleConfig splitLine = axisConfigX.getSplitLine(); |
||||
this.splitLineTypeComboBox.setSelectedIndex(LineTypeEnum.parseString(splitLine.getType()).ordinal()); |
||||
this.splitLineWidth.setValue(splitLine.getWidth() == 0 ? 1 : splitLine.getWidth()); |
||||
this.splitLineColor.setSelectObject(splitLine.getColor()); |
||||
|
||||
//值定义
|
||||
this.valueType.setSelectedIndex(StringUtils.isBlank(axisConfigX.getType()) ? 1 : AxisTypeEnum.parseString(axisConfigX.getType()).ordinal()); |
||||
this.minValue.populateBean(axisConfigX.getMin().getContent()); |
||||
this.maxValue.populateBean(axisConfigX.getMax().getContent()); |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(Chart ob) { |
||||
//标题
|
||||
ob.getAxisConfigX().getNameTextStyle().setShow(this.titleIsShow.getSelectedIndex() == 0); |
||||
ob.getAxisConfigX().getName().setContent(this.title.updateBean()); |
||||
ob.getAxisConfigX().getNameTextStyle().setFontSize((int) this.titleFontsize.getValue()); |
||||
ob.getAxisConfigX().getNameTextStyle().setColor(this.titleFontColor.getSelectObject()); |
||||
|
||||
//标签
|
||||
ob.getAxisConfigX().getAxisLabel().setShow(this.axisLabelIsShow.getSelectedIndex() == 0); |
||||
ob.getAxisConfigX().getAxisLabel().setFontSize((int) this.axisLabelFontsize.getValue()); |
||||
ob.getAxisConfigX().getAxisLabel().setColor(this.axisLabelFontColor.getSelectObject()); |
||||
ob.getAxisConfigX().getAxisLabel().setFormatter(this.axisFormatter.getText()); |
||||
|
||||
//轴线
|
||||
ob.getAxisConfigX().getAxisLine().setType(LineTypeEnum.parseInt(this.axisLineTypeComboBox.getSelectedIndex()).getName()); |
||||
ob.getAxisConfigX().getAxisLine().setWidth((int) this.axisLineWidth.getValue()); |
||||
ob.getAxisConfigX().getAxisLine().setColor(this.axisLineColor.getSelectObject()); |
||||
|
||||
//刻度线
|
||||
ob.getAxisConfigX().getAxisTick().setShow(this.axisTickIsShow.getSelectedIndex() == 0);//网格线
|
||||
|
||||
//网格线
|
||||
ob.getAxisConfigX().getSplitLine().setType(LineTypeEnum.parseInt(this.splitLineTypeComboBox.getSelectedIndex()).getName()); |
||||
ob.getAxisConfigX().getSplitLine().setWidth((int) this.splitLineWidth.getValue()); |
||||
ob.getAxisConfigX().getSplitLine().setColor(this.splitLineColor.getSelectObject()); |
||||
|
||||
//值定义
|
||||
ob.getAxisConfigX().setType(AxisTypeEnum.parseInt(this.valueType.getSelectedIndex()).getName()); |
||||
ob.getAxisConfigX().getMin().setContent(this.minValue.updateBean()); |
||||
ob.getAxisConfigX().getMax().setContent(this.maxValue.updateBean()); |
||||
} |
||||
|
||||
|
||||
private JPanel getValuePane(){ |
||||
this.valueType = new UIComboBox(new String[]{"数值","类目"}); |
||||
this.minValue = new TinyFormulaPane(); |
||||
this.maxValue = new TinyFormulaPane(); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("值类型"), this.valueType} |
||||
, {new UILabel("最小值"), this.minValue} |
||||
, {new UILabel("最大值"), this.maxValue} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("值定义", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
private JPanel getSplitLinePane(){ |
||||
this.splitLineTypeComboBox = new LineTypeComboBox(new LineType[]{LineType.NONE, LineType.SOLID,LineType.DASHED}); |
||||
this.splitLineWidth = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.splitLineColor = new ColorSelectBox(1); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("线型"), this.splitLineTypeComboBox} |
||||
, {new UILabel("线宽"), this.splitLineWidth} |
||||
, {new UILabel("颜色"), this.splitLineColor} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("网格线", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
private JPanel getAxisLinePane(){ |
||||
this.axisLineTypeComboBox = new LineTypeComboBox(new LineType[]{LineType.NONE, LineType.SOLID,LineType.DASHED}); |
||||
this.axisLineWidth = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.axisLineColor = new ColorSelectBox(1); |
||||
this.axisTickIsShow = new UIButtonGroup(new String[]{"显示","隐藏"}); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("线型"), this.axisLineTypeComboBox} |
||||
, {new UILabel("线宽"), this.axisLineWidth} |
||||
, {new UILabel("颜色"), this.axisLineColor} |
||||
, {new UILabel("刻度线"), this.axisTickIsShow} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("轴线", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
|
||||
private JPanel getAxisLabelPane(){ |
||||
this.axisLabelIsShow = new UIButtonGroup(new String[]{"显示","隐藏"}); |
||||
this.axisLabelFontsize = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.axisLabelFontColor = new ColorSelectBox(1); |
||||
this.axisFormatter = new UITextArea("return value;"); |
||||
|
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("轴标签"), this.axisLabelIsShow} |
||||
, {new UILabel("字体大小"), this.axisLabelFontsize} |
||||
, {new UILabel("字体颜色"), this.axisLabelFontColor} |
||||
, {new UILabel("标签格式化"), this.axisFormatter} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("标签", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
private JPanel getTitlePane(){ |
||||
this.title = new TinyFormulaPane(); |
||||
this.titleIsShow = new UIButtonGroup(new String[]{"显示","隐藏"}); |
||||
this.titleFontsize = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.titleFontColor = new ColorSelectBox(1); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("轴标题"), this.titleIsShow} |
||||
, {new UILabel("内容"), this.title} |
||||
, {new UILabel("字体大小"), this.titleFontsize} |
||||
, {new UILabel("字体颜色"), this.titleFontColor} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("标题", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
JPanel panel = new JPanel(new BorderLayout()); |
||||
Component[][] components = {{null} |
||||
, {this.getTitlePane()} |
||||
, {this.getAxisLabelPane()} |
||||
, {this.getAxisLinePane()} |
||||
, {this.getSplitLinePane()} |
||||
, {this.getValuePane()} |
||||
}; |
||||
panel.add(TableLayoutHelper.createTableLayoutPane(components,1), BorderLayout.CENTER); |
||||
return panel; |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "X维度"; |
||||
} |
||||
} |
@ -0,0 +1,230 @@
|
||||
package com.fr.plugin.sqy.surface.pane.style; |
||||
|
||||
|
||||
import com.fanruan.api.design.ui.component.UITextArea; |
||||
import com.fanruan.api.design.ui.component.code.UISyntaxTextArea; |
||||
import com.fr.design.formula.TinyFormulaPane; |
||||
import com.fr.design.gui.ibutton.UIButtonGroup; |
||||
import com.fr.design.gui.icombobox.UIComboBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.ispinner.UISpinner; |
||||
import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.style.color.ColorSelectBox; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.plugin.chart.type.LineType; |
||||
import com.fr.plugin.sqy.surface.chart.Chart; |
||||
import com.fr.plugin.sqy.surface.config.AxisConfig; |
||||
import com.fr.plugin.sqy.surface.config.LabelConfig; |
||||
import com.fr.plugin.sqy.surface.config.LineStyleConfig; |
||||
import com.fr.plugin.sqy.surface.util.CreatePaneUtils; |
||||
import com.fr.plugin.sqy.surface.zenum.AxisTypeEnum; |
||||
import com.fr.plugin.sqy.surface.zenum.LineTypeEnum; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
||||
import com.fr.van.chart.designer.component.LineTypeComboBox; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
public class Axis3DYPane extends ExtendedScrollPane<Chart> { |
||||
private UIButtonGroup titleIsShow; |
||||
private TinyFormulaPane title; |
||||
private UISpinner titleFontsize; |
||||
private ColorSelectBox titleFontColor; |
||||
|
||||
|
||||
private UIButtonGroup axisLabelIsShow; |
||||
private UISpinner axisLabelFontsize; |
||||
private ColorSelectBox axisLabelFontColor; |
||||
private UITextArea axisFormatter; |
||||
|
||||
private LineTypeComboBox axisLineTypeComboBox; |
||||
private UISpinner axisLineWidth; |
||||
private ColorSelectBox axisLineColor; |
||||
private UIButtonGroup axisTickIsShow; |
||||
|
||||
private LineTypeComboBox splitLineTypeComboBox; |
||||
private UISpinner splitLineWidth; |
||||
private ColorSelectBox splitLineColor; |
||||
|
||||
private UIComboBox valueType; |
||||
private TinyFormulaPane minValue; |
||||
private TinyFormulaPane maxValue; |
||||
|
||||
|
||||
@Override |
||||
public void populateBean(Chart ob) { |
||||
AxisConfig axisConfigY = ob.getAxisConfigY(); |
||||
//标题
|
||||
LabelConfig nameTextStyle = axisConfigY.getNameTextStyle(); |
||||
this.titleIsShow.setSelectedIndex(nameTextStyle.isShow() ? 0 : 1); |
||||
this.title.populateBean(axisConfigY.getName().getContent()); |
||||
this.titleFontsize.setValue(nameTextStyle.getFontSize() == 0 ? 16 : nameTextStyle.getFontSize()); |
||||
this.titleFontColor.setSelectObject(nameTextStyle.getColor()); |
||||
|
||||
//标签
|
||||
LabelConfig axisLabel = axisConfigY.getAxisLabel(); |
||||
this.axisLabelIsShow.setSelectedIndex(axisLabel.isShow() ? 0 : 1); |
||||
this.axisLabelFontsize.setValue(axisLabel.getFontSize() == 0 ? 12 : axisLabel.getFontSize()); |
||||
this.axisLabelFontColor.setSelectObject(axisLabel.getColor()); |
||||
this.axisFormatter.setText(axisLabel.getFormatter()); |
||||
|
||||
//轴线
|
||||
LineStyleConfig axisLine = axisConfigY.getAxisLine(); |
||||
this.axisLineTypeComboBox.setSelectedIndex(LineTypeEnum.parseString(axisLine.getType()).ordinal()); |
||||
this.axisLineWidth.setValue(axisLine.getWidth() == 0 ? 2 : axisLine.getWidth()); |
||||
this.axisLineColor.setSelectObject(axisLine.getColor()); |
||||
|
||||
//刻度线
|
||||
this.axisTickIsShow.setSelectedIndex(axisConfigY.getAxisTick().isShow() ? 0 : 1); |
||||
|
||||
//网格线
|
||||
LineStyleConfig splitLine = axisConfigY.getSplitLine(); |
||||
this.splitLineTypeComboBox.setSelectedIndex(LineTypeEnum.parseString(splitLine.getType()).ordinal()); |
||||
this.splitLineWidth.setValue(splitLine.getWidth() == 0 ? 1 : splitLine.getWidth()); |
||||
this.splitLineColor.setSelectObject(splitLine.getColor()); |
||||
|
||||
//值定义
|
||||
this.valueType.setSelectedIndex(StringUtils.isBlank(axisConfigY.getType()) ? 0 : AxisTypeEnum.parseString(axisConfigY.getType()).ordinal()); |
||||
this.minValue.populateBean(axisConfigY.getMin().getContent()); |
||||
this.maxValue.populateBean(axisConfigY.getMax().getContent()); |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(Chart ob) { |
||||
//标题
|
||||
ob.getAxisConfigY().getNameTextStyle().setShow(this.titleIsShow.getSelectedIndex() == 0); |
||||
ob.getAxisConfigY().getName().setContent(this.title.updateBean()); |
||||
ob.getAxisConfigY().getNameTextStyle().setFontSize((int) this.titleFontsize.getValue()); |
||||
ob.getAxisConfigY().getNameTextStyle().setColor(this.titleFontColor.getSelectObject()); |
||||
|
||||
//标签
|
||||
ob.getAxisConfigY().getAxisLabel().setShow(this.axisLabelIsShow.getSelectedIndex() == 0); |
||||
ob.getAxisConfigY().getAxisLabel().setFontSize((int) this.axisLabelFontsize.getValue()); |
||||
ob.getAxisConfigY().getAxisLabel().setColor(this.axisLabelFontColor.getSelectObject()); |
||||
ob.getAxisConfigY().getAxisLabel().setFormatter(this.axisFormatter.getText()); |
||||
|
||||
//轴线
|
||||
ob.getAxisConfigY().getAxisLine().setType(LineTypeEnum.parseInt(this.axisLineTypeComboBox.getSelectedIndex()).getName()); |
||||
ob.getAxisConfigY().getAxisLine().setWidth((int) this.axisLineWidth.getValue()); |
||||
ob.getAxisConfigY().getAxisLine().setColor(this.axisLineColor.getSelectObject()); |
||||
|
||||
//刻度线
|
||||
ob.getAxisConfigY().getAxisTick().setShow(this.axisTickIsShow.getSelectedIndex() == 0);//网格线
|
||||
|
||||
//网格线
|
||||
ob.getAxisConfigY().getSplitLine().setType(LineTypeEnum.parseInt(this.splitLineTypeComboBox.getSelectedIndex()).getName()); |
||||
ob.getAxisConfigY().getSplitLine().setWidth((int) this.splitLineWidth.getValue()); |
||||
ob.getAxisConfigY().getSplitLine().setColor(this.splitLineColor.getSelectObject()); |
||||
|
||||
//值定义
|
||||
ob.getAxisConfigY().setType(AxisTypeEnum.parseInt(this.valueType.getSelectedIndex()).getName()); |
||||
ob.getAxisConfigY().getMin().setContent(this.minValue.updateBean()); |
||||
ob.getAxisConfigY().getMax().setContent(this.maxValue.updateBean()); |
||||
} |
||||
|
||||
|
||||
private JPanel getValuePane(){ |
||||
this.valueType = new UIComboBox(new String[]{"数值","类目"}); |
||||
this.minValue = new TinyFormulaPane(); |
||||
this.maxValue = new TinyFormulaPane(); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("值类型"), this.valueType} |
||||
, {new UILabel("最小值"), this.minValue} |
||||
, {new UILabel("最大值"), this.maxValue} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("值定义", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
private JPanel getSplitLinePane(){ |
||||
this.splitLineTypeComboBox = new LineTypeComboBox(new LineType[]{LineType.NONE, LineType.SOLID,LineType.DASHED}); |
||||
this.splitLineWidth = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.splitLineColor = new ColorSelectBox(1); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("线型"), this.splitLineTypeComboBox} |
||||
, {new UILabel("线宽"), this.splitLineWidth} |
||||
, {new UILabel("颜色"), this.splitLineColor} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("网格线", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
private JPanel getAxisLinePane(){ |
||||
this.axisLineTypeComboBox = new LineTypeComboBox(new LineType[]{LineType.NONE, LineType.SOLID,LineType.DASHED}); |
||||
this.axisLineWidth = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.axisLineColor = new ColorSelectBox(1); |
||||
this.axisTickIsShow = new UIButtonGroup(new String[]{"显示","隐藏"}); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("线型"), this.axisLineTypeComboBox} |
||||
, {new UILabel("线宽"), this.axisLineWidth} |
||||
, {new UILabel("颜色"), this.axisLineColor} |
||||
, {new UILabel("刻度线"), this.axisTickIsShow} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("轴线", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
|
||||
private JPanel getAxisLabelPane(){ |
||||
this.axisLabelIsShow = new UIButtonGroup(new String[]{"显示","隐藏"}); |
||||
this.axisLabelFontsize = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.axisLabelFontColor = new ColorSelectBox(1); |
||||
this.axisFormatter = new UITextArea("return value;"); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("轴标签"), this.axisLabelIsShow} |
||||
, {new UILabel("字体大小"), this.axisLabelFontsize} |
||||
, {new UILabel("字体颜色"), this.axisLabelFontColor} |
||||
, {new UILabel("标签格式化"), this.axisFormatter} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("标签", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
private JPanel getTitlePane(){ |
||||
this.title = new TinyFormulaPane(); |
||||
this.titleIsShow = new UIButtonGroup(new String[]{"显示","隐藏"}); |
||||
this.titleFontsize = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.titleFontColor = new ColorSelectBox(1); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("轴标题"), this.titleIsShow} |
||||
, {new UILabel("内容"), this.title} |
||||
, {new UILabel("字体大小"), this.titleFontsize} |
||||
, {new UILabel("字体颜色"), this.titleFontColor} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("标题", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
JPanel panel = new JPanel(new BorderLayout()); |
||||
Component[][] components = {{null} |
||||
, {this.getTitlePane()} |
||||
, {this.getAxisLabelPane()} |
||||
, {this.getAxisLinePane()} |
||||
, {this.getSplitLinePane()} |
||||
, {this.getValuePane()} |
||||
}; |
||||
panel.add(TableLayoutHelper.createTableLayoutPane(components,1), BorderLayout.CENTER); |
||||
return panel; |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "Y维度"; |
||||
} |
||||
} |
@ -0,0 +1,229 @@
|
||||
package com.fr.plugin.sqy.surface.pane.style; |
||||
|
||||
|
||||
import com.fanruan.api.design.ui.component.UITextArea; |
||||
import com.fanruan.api.design.ui.component.code.UISyntaxTextArea; |
||||
import com.fr.design.formula.TinyFormulaPane; |
||||
import com.fr.design.gui.ibutton.UIButtonGroup; |
||||
import com.fr.design.gui.icombobox.UIComboBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.ispinner.UISpinner; |
||||
import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.style.color.ColorSelectBox; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.plugin.chart.type.LineType; |
||||
import com.fr.plugin.sqy.surface.chart.Chart; |
||||
import com.fr.plugin.sqy.surface.config.AxisConfig; |
||||
import com.fr.plugin.sqy.surface.config.LabelConfig; |
||||
import com.fr.plugin.sqy.surface.config.LineStyleConfig; |
||||
import com.fr.plugin.sqy.surface.util.CreatePaneUtils; |
||||
import com.fr.plugin.sqy.surface.zenum.AxisTypeEnum; |
||||
import com.fr.plugin.sqy.surface.zenum.LineTypeEnum; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
||||
import com.fr.van.chart.designer.component.LineTypeComboBox; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
public class Axis3DZPane extends ExtendedScrollPane<Chart> { |
||||
private UIButtonGroup titleIsShow; |
||||
private TinyFormulaPane title; |
||||
private UISpinner titleFontsize; |
||||
private ColorSelectBox titleFontColor; |
||||
|
||||
|
||||
private UIButtonGroup axisLabelIsShow; |
||||
private UISpinner axisLabelFontsize; |
||||
private ColorSelectBox axisLabelFontColor; |
||||
private UITextArea axisFormatter; |
||||
|
||||
private LineTypeComboBox axisLineTypeComboBox; |
||||
private UISpinner axisLineWidth; |
||||
private ColorSelectBox axisLineColor; |
||||
private UIButtonGroup axisTickIsShow; |
||||
|
||||
private LineTypeComboBox splitLineTypeComboBox; |
||||
private UISpinner splitLineWidth; |
||||
private ColorSelectBox splitLineColor; |
||||
|
||||
private UIComboBox valueType; |
||||
private TinyFormulaPane minValue; |
||||
private TinyFormulaPane maxValue; |
||||
|
||||
|
||||
@Override |
||||
public void populateBean(Chart ob) { |
||||
AxisConfig axisConfigZ = ob.getAxisConfigZ(); |
||||
//标题
|
||||
LabelConfig nameTextStyle = axisConfigZ.getNameTextStyle(); |
||||
this.titleIsShow.setSelectedIndex(nameTextStyle.isShow() ? 0 : 1); |
||||
this.title.populateBean(axisConfigZ.getName().getContent()); |
||||
this.titleFontsize.setValue(nameTextStyle.getFontSize() == 0 ? 16 : nameTextStyle.getFontSize()); |
||||
this.titleFontColor.setSelectObject(nameTextStyle.getColor()); |
||||
|
||||
//标签
|
||||
LabelConfig axisLabel = axisConfigZ.getAxisLabel(); |
||||
this.axisLabelIsShow.setSelectedIndex(axisLabel.isShow() ? 0 : 1); |
||||
this.axisLabelFontsize.setValue(axisLabel.getFontSize() == 0 ? 12 : axisLabel.getFontSize()); |
||||
this.axisLabelFontColor.setSelectObject(axisLabel.getColor()); |
||||
this.axisFormatter.setText(axisLabel.getFormatter()); |
||||
|
||||
//轴线
|
||||
LineStyleConfig axisLine = axisConfigZ.getAxisLine(); |
||||
this.axisLineTypeComboBox.setSelectedIndex(LineTypeEnum.parseString(axisLine.getType()).ordinal()); |
||||
this.axisLineWidth.setValue(axisLine.getWidth() == 0 ? 2 : axisLine.getWidth()); |
||||
this.axisLineColor.setSelectObject(axisLine.getColor()); |
||||
|
||||
//刻度线
|
||||
this.axisTickIsShow.setSelectedIndex(axisConfigZ.getAxisTick().isShow() ? 0 : 1); |
||||
|
||||
//网格线
|
||||
LineStyleConfig splitLine = axisConfigZ.getSplitLine(); |
||||
this.splitLineTypeComboBox.setSelectedIndex(LineTypeEnum.parseString(splitLine.getType()).ordinal()); |
||||
this.splitLineWidth.setValue(splitLine.getWidth() == 0 ? 1 : splitLine.getWidth()); |
||||
this.splitLineColor.setSelectObject(splitLine.getColor()); |
||||
|
||||
//值定义
|
||||
this.valueType.setSelectedIndex(StringUtils.isBlank(axisConfigZ.getType()) ? 0 : AxisTypeEnum.parseString(axisConfigZ.getType()).ordinal()); |
||||
this.minValue.populateBean(axisConfigZ.getMin().getContent()); |
||||
this.maxValue.populateBean(axisConfigZ.getMax().getContent()); |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(Chart ob) { |
||||
//标题
|
||||
ob.getAxisConfigZ().getNameTextStyle().setShow(this.titleIsShow.getSelectedIndex() == 0); |
||||
ob.getAxisConfigZ().getName().setContent(this.title.updateBean()); |
||||
ob.getAxisConfigZ().getNameTextStyle().setFontSize((int) this.titleFontsize.getValue()); |
||||
ob.getAxisConfigZ().getNameTextStyle().setColor(this.titleFontColor.getSelectObject()); |
||||
|
||||
//标签
|
||||
ob.getAxisConfigZ().getAxisLabel().setShow(this.axisLabelIsShow.getSelectedIndex() == 0); |
||||
ob.getAxisConfigZ().getAxisLabel().setFontSize((int) this.axisLabelFontsize.getValue()); |
||||
ob.getAxisConfigZ().getAxisLabel().setColor(this.axisLabelFontColor.getSelectObject()); |
||||
ob.getAxisConfigZ().getAxisLabel().setFormatter(this.axisFormatter.getText()); |
||||
|
||||
//轴线
|
||||
ob.getAxisConfigZ().getAxisLine().setType(LineTypeEnum.parseInt(this.axisLineTypeComboBox.getSelectedIndex()).getName()); |
||||
ob.getAxisConfigZ().getAxisLine().setWidth((int) this.axisLineWidth.getValue()); |
||||
ob.getAxisConfigZ().getAxisLine().setColor(this.axisLineColor.getSelectObject()); |
||||
|
||||
//刻度线
|
||||
ob.getAxisConfigZ().getAxisTick().setShow(this.axisTickIsShow.getSelectedIndex() == 0);//网格线
|
||||
|
||||
//网格线
|
||||
ob.getAxisConfigZ().getSplitLine().setType(LineTypeEnum.parseInt(this.splitLineTypeComboBox.getSelectedIndex()).getName()); |
||||
ob.getAxisConfigZ().getSplitLine().setWidth((int) this.splitLineWidth.getValue()); |
||||
ob.getAxisConfigZ().getSplitLine().setColor(this.splitLineColor.getSelectObject()); |
||||
|
||||
//值定义
|
||||
ob.getAxisConfigZ().setType(AxisTypeEnum.parseInt(this.valueType.getSelectedIndex()).getName()); |
||||
ob.getAxisConfigZ().getMin().setContent(this.minValue.updateBean()); |
||||
ob.getAxisConfigZ().getMax().setContent(this.maxValue.updateBean()); |
||||
} |
||||
|
||||
|
||||
private JPanel getValuePane(){ |
||||
this.valueType = new UIComboBox(new String[]{"数值","类目"}); |
||||
this.minValue = new TinyFormulaPane(); |
||||
this.maxValue = new TinyFormulaPane(); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("值类型"), this.valueType} |
||||
, {new UILabel("最小值"), this.minValue} |
||||
, {new UILabel("最大值"), this.maxValue} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("值定义", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
private JPanel getSplitLinePane(){ |
||||
this.splitLineTypeComboBox = new LineTypeComboBox(new LineType[]{LineType.NONE, LineType.SOLID,LineType.DASHED}); |
||||
this.splitLineWidth = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.splitLineColor = new ColorSelectBox(1); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("线型"), this.splitLineTypeComboBox} |
||||
, {new UILabel("线宽"), this.splitLineWidth} |
||||
, {new UILabel("颜色"), this.splitLineColor} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("网格线", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
private JPanel getAxisLinePane(){ |
||||
this.axisLineTypeComboBox = new LineTypeComboBox(new LineType[]{LineType.NONE, LineType.SOLID,LineType.DASHED}); |
||||
this.axisLineWidth = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.axisLineColor = new ColorSelectBox(1); |
||||
this.axisTickIsShow = new UIButtonGroup(new String[]{"显示","隐藏"}); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("线型"), this.axisLineTypeComboBox} |
||||
, {new UILabel("线宽"), this.axisLineWidth} |
||||
, {new UILabel("颜色"), this.axisLineColor} |
||||
, {new UILabel("刻度线"), this.axisTickIsShow} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("轴线", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
|
||||
private JPanel getAxisLabelPane(){ |
||||
this.axisLabelIsShow = new UIButtonGroup(new String[]{"显示","隐藏"}); |
||||
this.axisLabelFontsize = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.axisLabelFontColor = new ColorSelectBox(1); |
||||
this.axisFormatter = new UITextArea("3,3"); |
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("轴标签"), this.axisLabelIsShow} |
||||
, {new UILabel("字体大小"), this.axisLabelFontsize} |
||||
, {new UILabel("字体颜色"), this.axisLabelFontColor} |
||||
, {new UILabel("标签格式化"), this.axisFormatter} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("标签", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
private JPanel getTitlePane(){ |
||||
this.title = new TinyFormulaPane(); |
||||
this.titleIsShow = new UIButtonGroup(new String[]{"显示","隐藏"}); |
||||
this.titleFontsize = new UISpinnerWithPx(1D, 2.147483647E9D, 1D, 1D); |
||||
this.titleFontColor = new ColorSelectBox(1); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("轴标题"), this.titleIsShow} |
||||
, {new UILabel("内容"), this.title} |
||||
, {new UILabel("字体大小"), this.titleFontsize} |
||||
, {new UILabel("字体颜色"), this.titleFontColor} |
||||
}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("标题", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
JPanel panel = new JPanel(new BorderLayout()); |
||||
Component[][] components = {{null} |
||||
, {this.getTitlePane()} |
||||
, {this.getAxisLabelPane()} |
||||
, {this.getAxisLinePane()} |
||||
, {this.getSplitLinePane()} |
||||
, {this.getValuePane()} |
||||
}; |
||||
panel.add(TableLayoutHelper.createTableLayoutPane(components,1), BorderLayout.CENTER); |
||||
return panel; |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "Z维度"; |
||||
} |
||||
} |
@ -0,0 +1,116 @@
|
||||
package com.fr.plugin.sqy.surface.pane.style; |
||||
|
||||
|
||||
import com.fr.design.formula.TinyFormulaPane; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.ispinner.UISpinner; |
||||
import com.fr.design.gui.ispinner.chart.UISpinnerWithPx; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.style.color.ColorSelectBox; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.plugin.chart.type.LineType; |
||||
import com.fr.plugin.sqy.surface.chart.Chart; |
||||
import com.fr.plugin.sqy.surface.config.LineStyleConfig; |
||||
import com.fr.plugin.sqy.surface.option.VisualMap; |
||||
import com.fr.plugin.sqy.surface.util.CreatePaneUtils; |
||||
import com.fr.plugin.sqy.surface.zenum.LineTypeEnum; |
||||
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
||||
import com.fr.van.chart.designer.component.LineTypeComboBox; |
||||
import com.fr.van.chart.designer.component.VanChartFillStylePane; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
public class VisualPane extends ExtendedScrollPane<Chart> { |
||||
private VanChartFillStylePane vanChartFillStylePane; |
||||
private TinyFormulaPane visualMin; |
||||
private TinyFormulaPane visualMax; |
||||
private LineTypeComboBox lineTypeComboBox; |
||||
private UISpinner lineWidthSpinner; |
||||
private ColorSelectBox colorButton; |
||||
|
||||
|
||||
|
||||
|
||||
@Override |
||||
public void populateBean(Chart ob) { |
||||
if(ob.getColorFillStyle().getColorStyle() == 0 || ob.getColorFillStyle().getColorStyle() == 2){ |
||||
ob.getColorFillStyle().setColorStyle(1); |
||||
ob.getColorFillStyle().setColorList(VisualMap.InRange.getDefaultColor()); |
||||
} |
||||
this.vanChartFillStylePane.populateBean(ob.getColorFillStyle()); |
||||
this.visualMin.populateBean(ob.getVisualMin().getContent()); |
||||
this.visualMax.populateBean(ob.getVisualMax().getContent()); |
||||
|
||||
LineStyleConfig lineStyleConfig = ob.getWireFrameConfig(); |
||||
this.lineTypeComboBox.setSelectedIndex(LineTypeEnum.parseString(lineStyleConfig.getType()).ordinal()); |
||||
this.lineWidthSpinner.setValue(lineStyleConfig.getWidth()); |
||||
this.colorButton.setSelectObject(lineStyleConfig.getColor()); |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(Chart ob) { |
||||
if(this.vanChartFillStylePane.updateBean().getColorStyle() == 0 || this.vanChartFillStylePane.updateBean().getColorStyle() == 2){ |
||||
ob.getColorFillStyle().setColorStyle(1); |
||||
ob.getColorFillStyle().setColorList(VisualMap.InRange.getDefaultColor()); |
||||
}else { |
||||
ob.setColorFillStyle(this.vanChartFillStylePane.updateBean()); |
||||
} |
||||
ob.getVisualMin().setContent(this.visualMin.updateBean()); |
||||
ob.getVisualMax().setContent(this.visualMax.updateBean()); |
||||
|
||||
|
||||
ob.getWireFrameConfig().setType(LineTypeEnum.parseInt(this.lineTypeComboBox.getSelectedIndex()).getName()); |
||||
ob.getWireFrameConfig().setWidth(this.lineWidthSpinner.getValue()); |
||||
ob.getWireFrameConfig().setColor(this.colorButton.getSelectObject()); |
||||
} |
||||
|
||||
|
||||
private JPanel getColorPane() { |
||||
JPanel var1 = new JPanel(new BorderLayout()); |
||||
this.vanChartFillStylePane = new VanChartFillStylePane(); |
||||
var1.add(this.vanChartFillStylePane, "Center"); |
||||
|
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("曲面颜色(仅能使用自定义)", var1); |
||||
var1.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 0)); |
||||
return var2; |
||||
} |
||||
|
||||
private JPanel getAreaPane(){ |
||||
this.visualMin = new TinyFormulaPane(); |
||||
this.visualMax = new TinyFormulaPane(); |
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null}, {new UILabel("最小值"), this.visualMin}, {new UILabel("最大值"), this.visualMax}}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("视觉范围(Z维度)", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
private JPanel getWireframePane(){ |
||||
this.lineTypeComboBox = new LineTypeComboBox(new LineType[]{LineType.NONE, LineType.SOLID, LineType.DASHED}); |
||||
this.lineWidthSpinner = new UISpinnerWithPx(1D, 2.147483647E9D, 0.5D, 2.0D); |
||||
this.colorButton = new ColorSelectBox(1); |
||||
|
||||
JPanel contentPane = CreatePaneUtils.createGapTableLayoutPane(new Component[][]{{null, null} |
||||
, {new UILabel("线型"), this.lineTypeComboBox} |
||||
, {new UILabel("线宽"), this.lineWidthSpinner} |
||||
, {new UILabel("颜色"), this.colorButton}}); |
||||
JPanel var2 = TableLayout4VanChartHelper.createExpandablePaneWithTitle("曲面间隔线", contentPane); |
||||
return var2; |
||||
} |
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
JPanel panel = new JPanel(new BorderLayout()); |
||||
Component[][] components = {{null} |
||||
, {this.getColorPane()} |
||||
, {this.getAreaPane()} |
||||
, {this.getWireframePane()} |
||||
}; |
||||
panel.add(TableLayoutHelper.createTableLayoutPane(components,1), BorderLayout.CENTER); |
||||
return panel; |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "视觉"; |
||||
} |
||||
} |
@ -0,0 +1,13 @@
|
||||
package com.fr.plugin.sqy.surface.provider; |
||||
|
||||
import com.fr.extended.chart.AbstractChart; |
||||
import com.fr.extended.chart.AbstractExtentChartProvider; |
||||
import com.fr.plugin.sqy.surface.chart.Chart; |
||||
|
||||
public class ChartProvider extends AbstractExtentChartProvider { |
||||
|
||||
@Override |
||||
protected AbstractChart createChart() { |
||||
return new Chart(); |
||||
} |
||||
} |
@ -0,0 +1,52 @@
|
||||
package com.fr.plugin.sqy.surface.provider; |
||||
|
||||
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||
import com.fr.design.mainframe.chart.AbstractChartAttrPane; |
||||
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; |
||||
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; |
||||
import com.fr.extended.chart.AbstractExtendedChartTableDataPane; |
||||
import com.fr.extended.chart.AbstractExtendedChartUIProvider; |
||||
import com.fr.extended.chart.ExtendedOtherPane; |
||||
import com.fr.plugin.sqy.surface.pane.ReportDataPane; |
||||
import com.fr.plugin.sqy.surface.pane.StylePane; |
||||
import com.fr.plugin.sqy.surface.pane.TableDataPane; |
||||
import com.fr.plugin.sqy.surface.pane.TypePane; |
||||
|
||||
public class ChartUIProvider extends AbstractExtendedChartUIProvider { |
||||
@Override |
||||
protected AbstractExtendedChartTableDataPane getTableDataSourcePane() { |
||||
return new TableDataPane(); |
||||
} |
||||
|
||||
@Override |
||||
protected AbstractReportDataContentPane getReportDataSourcePane() { |
||||
return new ReportDataPane(); |
||||
} |
||||
|
||||
@Override |
||||
public String[] getDemoImagePath() { |
||||
return new String[]{ |
||||
"com/fr/plugin/sqy/surface/img/face.png" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
public String getIconPath() { |
||||
return "com/fr/plugin/sqy/surface/img/icon.png"; |
||||
} |
||||
|
||||
//类型配置面板
|
||||
@Override |
||||
public AbstractChartTypePane getPlotTypePane() { |
||||
return new TypePane(); |
||||
} |
||||
|
||||
@Override |
||||
public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener attributeChangeListener) { |
||||
return new AbstractChartAttrPane[]{ |
||||
new StylePane(attributeChangeListener), |
||||
new ExtendedOtherPane() |
||||
}; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,33 @@
|
||||
package com.fr.plugin.sqy.surface.util; |
||||
|
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
public class CreatePaneUtils { |
||||
|
||||
/** |
||||
* |
||||
* @param contentPaneComponents |
||||
* @param w1 x gap |
||||
* @param w2 y gap |
||||
* @return |
||||
*/ |
||||
public static JPanel createGapTableLayoutPane(Component[][] contentPaneComponents, Double w1, Double w2) { |
||||
double var1 = -2.0D; |
||||
double var3 = -1.0D; |
||||
double var5 = 155.0D; |
||||
double[] var7 = new double[]{var3, var5};//列宽
|
||||
double[] var8 = new double[contentPaneComponents.length];//行高
|
||||
for (int i = 0; i < var8.length; i++) { |
||||
var8[i]=var1; |
||||
} |
||||
JPanel var9 = TableLayoutHelper.createGapTableLayoutPane(contentPaneComponents, var8, var7, w1, w2); |
||||
return var9; |
||||
} |
||||
|
||||
public static JPanel createGapTableLayoutPane(Component[][] contentPaneComponents) { |
||||
return createGapTableLayoutPane(contentPaneComponents,12.0D, 10.0D); |
||||
} |
||||
} |
@ -0,0 +1,17 @@
|
||||
package com.fr.plugin.sqy.surface.util; |
||||
|
||||
import java.awt.*; |
||||
import java.util.regex.Pattern; |
||||
|
||||
public class PluginStringUtils { |
||||
private static Pattern numberPattern = Pattern.compile("-?[0-9]+(.[0-9]+)?"); |
||||
|
||||
|
||||
public static boolean isNumber(String str){ |
||||
return numberPattern.matcher(str).matches(); |
||||
} |
||||
|
||||
public static String colorToString(Color color){ |
||||
return "#"+Integer.toHexString(color.getRGB()).substring(2); |
||||
} |
||||
} |
@ -0,0 +1,18 @@
|
||||
package com.fr.plugin.sqy.surface.zenum; |
||||
|
||||
|
||||
public enum AxisNameLocationEnum { |
||||
START("start"), |
||||
MIDDLE("middle"), |
||||
END("end"); |
||||
|
||||
private final String name; |
||||
|
||||
AxisNameLocationEnum(String name) { |
||||
this.name = name; |
||||
} |
||||
|
||||
public String getName() { |
||||
return name; |
||||
} |
||||
} |
@ -0,0 +1,39 @@
|
||||
package com.fr.plugin.sqy.surface.zenum; |
||||
|
||||
|
||||
import com.fr.stable.StringUtils; |
||||
|
||||
public enum AxisTypeEnum { |
||||
VALUE("value"), |
||||
CATEGORY("category"), |
||||
TIME("time"), |
||||
LOG("log"); |
||||
|
||||
private final String name; |
||||
|
||||
public static AxisTypeEnum parseInt(int index) { |
||||
for (AxisTypeEnum type : AxisTypeEnum.values()) { |
||||
if (type.ordinal() == index) { |
||||
return type; |
||||
} |
||||
} |
||||
return VALUE; |
||||
} |
||||
|
||||
public static AxisTypeEnum parseString(String str) { |
||||
for (AxisTypeEnum type : AxisTypeEnum.values()) { |
||||
if (StringUtils.equals(type.getName(),str)) { |
||||
return type; |
||||
} |
||||
} |
||||
return VALUE; |
||||
} |
||||
|
||||
AxisTypeEnum(String name) { |
||||
this.name = name; |
||||
} |
||||
|
||||
public String getName() { |
||||
return name; |
||||
} |
||||
} |
@ -0,0 +1,39 @@
|
||||
package com.fr.plugin.sqy.surface.zenum; |
||||
|
||||
import com.fr.plugin.sqy.surface.chart.ChartType; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
public enum LineTypeEnum { |
||||
NONE("none"), |
||||
SOLID("solid"), |
||||
DASHED("dashed"), |
||||
DOTTED("dotted"); |
||||
|
||||
private final String name; |
||||
|
||||
LineTypeEnum(String name) { |
||||
this.name = name; |
||||
} |
||||
|
||||
public static LineTypeEnum parseInt(int index) { |
||||
for (LineTypeEnum type : LineTypeEnum.values()) { |
||||
if (type.ordinal() == index) { |
||||
return type; |
||||
} |
||||
} |
||||
return SOLID; |
||||
} |
||||
|
||||
public static LineTypeEnum parseString(String str) { |
||||
for (LineTypeEnum type : LineTypeEnum.values()) { |
||||
if (StringUtils.equals(type.getName(),str)) { |
||||
return type; |
||||
} |
||||
} |
||||
return SOLID; |
||||
} |
||||
|
||||
public String getName() { |
||||
return name; |
||||
} |
||||
} |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 568 B |
After Width: | Height: | Size: 4.5 KiB |
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,65 @@
|
||||
surfaceWrapper = ExtendedChart.extend({ |
||||
_init: function (dom, option) { |
||||
const myChart = echarts.init(dom); |
||||
if(option.data.xAxis3D.axisLabel.formatter !== undefined){ |
||||
let fmt = "(function(value,index){"+option.data.xAxis3D.axisLabel.formatter+"})(value,index)"; |
||||
option.data.xAxis3D.axisLabel.formatter = function(value,index){return eval(fmt)}; |
||||
} |
||||
if(option.data.yAxis3D.axisLabel.formatter !== undefined){ |
||||
let fmt = "(function(value,index){"+option.data.yAxis3D.axisLabel.formatter+"})(value,index)"; |
||||
option.data.yAxis3D.axisLabel.formatter = function(value,index){return eval(fmt)}; |
||||
} |
||||
if(option.data.zAxis3D.axisLabel.formatter !== undefined){ |
||||
let fmt = "(function(value,index){"+option.data.zAxis3D.axisLabel.formatter+"})(value,index)"; |
||||
option.data.zAxis3D.axisLabel.formatter = function(value,index){return eval(fmt)}; |
||||
} |
||||
console.log(option.data); |
||||
option.data && myChart.setOption(option.data); |
||||
myChart.on('click', function (params) { |
||||
const links = option.links; |
||||
for(let i = 0;i < links.length;i++){ |
||||
if(links[i].type === "javascript"){ |
||||
let script = links[i].script; |
||||
script = script.substring(1,script.length-1).replace(/\\n/g,"").replace(/\\"/g,"\""); |
||||
script = script.replace(/FR.formulaEvaluator\("=X",[^\(\)]*,false\)/g,'FR.formulaEvaluator("=X",'+JSON.stringify(params.value[0])+',false)'); |
||||
script = script.replace(/FR.formulaEvaluator\("=Y",[^\(\)]*,false\)/g,'FR.formulaEvaluator("=Y",'+JSON.stringify(params.value[1])+',false)'); |
||||
script = script.replace(/FR.formulaEvaluator\("=Z",[^\(\)]*,false\)/g,'FR.formulaEvaluator("=Z",'+JSON.stringify(params.value[2])+',false)'); |
||||
script = script.replace(/FR.formulaEvaluator\("=SERIES_NAME",[^\(\)]*,false\)/g,'FR.formulaEvaluator("=SERIES_NAME",'+JSON.stringify(params.seriesName)+',false)'); |
||||
eval(script); |
||||
} |
||||
} |
||||
}); |
||||
return myChart; |
||||
}, |
||||
|
||||
_refresh: function (chart, option) { |
||||
if(option.data.xAxis3D.axisLabel.formatter !== undefined){ |
||||
let fmt = "(function(value,index){"+option.data.xAxis3D.axisLabel.formatter+"})(value,index)"; |
||||
option.data.xAxis3D.axisLabel.formatter = function(value,index){return eval(fmt)}; |
||||
} |
||||
if(option.data.yAxis3D.axisLabel.formatter !== undefined){ |
||||
let fmt = "(function(value,index){"+option.data.yAxis3D.axisLabel.formatter+"})(value,index)"; |
||||
option.data.yAxis3D.axisLabel.formatter = function(value,index){return eval(fmt)}; |
||||
} |
||||
if(option.data.zAxis3D.axisLabel.formatter !== undefined){ |
||||
let fmt = "(function(value,index){"+option.data.zAxis3D.axisLabel.formatter+"})(value,index)"; |
||||
option.data.zAxis3D.axisLabel.formatter = function(value,index){return eval(fmt)}; |
||||
} |
||||
console.log(option.data); |
||||
option.data && chart.setOption(option.data); |
||||
}, |
||||
|
||||
_resize: function (chart) { |
||||
chart.resize(); |
||||
}, |
||||
|
||||
_exportInit:function (dom, option) { |
||||
option.animation = false; |
||||
return this._init(dom, option.data); |
||||
}, |
||||
|
||||
_exportImage: function (chart) { |
||||
return chart.getConnectedDataURL({type: 'png'}) |
||||
} |
||||
|
||||
}); |
Loading…
Reference in new issue