rapid-spreadjs 1.0.73 → 1.0.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +198 -2
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +1 -1
- package/dist/index.cjs.min.js.map +1 -1
- package/dist/index.esm.js +198 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/utils/echarts-all.d.ts +100 -0
- package/dist/utils/sheet.d.ts +2 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -137,9 +137,10 @@ const SheetUtils = {
|
|
|
137
137
|
* @param sheet 工作表实例
|
|
138
138
|
* @param selectRanges 单元格范围集合,格式如:[{ row: 0, col: 0, rowCount: 2, colCount: 2 }]
|
|
139
139
|
* @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)
|
|
140
|
+
* @param isDoSelectRangesOrder 是否按照selectRanges范围中的所有单元格顺序进行获取并返回,默认为:false
|
|
140
141
|
* @returns 返回数组集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]
|
|
141
142
|
*/
|
|
142
|
-
getAllCellObjsByRanges: (sheet, selectRanges, isMulColOrder = false) => {
|
|
143
|
+
getAllCellObjsByRanges: (sheet, selectRanges, isMulColOrder = false, isDoSelectRangesOrder = false) => {
|
|
143
144
|
// 得到所有的单元格坐标对象集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]
|
|
144
145
|
let allCellObjs = [];
|
|
145
146
|
selectRanges.forEach((item, index) => {
|
|
@@ -173,7 +174,9 @@ const SheetUtils = {
|
|
|
173
174
|
}
|
|
174
175
|
});
|
|
175
176
|
// 对所有单元格坐标对象集合进行排序
|
|
176
|
-
|
|
177
|
+
if (!isDoSelectRangesOrder) {
|
|
178
|
+
allCellObjs = rapidUtils.orderByJson(allCellObjs, !isMulColOrder ? ['row', 'col'] : ['col', 'row'], ['asc', 'asc']);
|
|
179
|
+
}
|
|
177
180
|
return allCellObjs;
|
|
178
181
|
},
|
|
179
182
|
/**
|
|
@@ -8172,6 +8175,199 @@ const EChartsUtilsAll = {
|
|
|
8172
8175
|
};
|
|
8173
8176
|
return option;
|
|
8174
8177
|
},
|
|
8178
|
+
/**
|
|
8179
|
+
* 氧化镁含量标准回归曲线方程
|
|
8180
|
+
* @param config 折线配置
|
|
8181
|
+
* @param xDataArr x轴原始数据(二维数组)
|
|
8182
|
+
* @param yDataArr y轴原始数据(二维数组)
|
|
8183
|
+
* @returns 返回ECharts配置项
|
|
8184
|
+
*/
|
|
8185
|
+
chart410: (config, xDataArr, yDataArr, sheet) => {
|
|
8186
|
+
let lineData = JSON.parse(config.chartLinesJson);
|
|
8187
|
+
const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);
|
|
8188
|
+
//y轴原始数据
|
|
8189
|
+
let yDataSource = yDataArr[0]; // [1.2, 5.6, 10.8, 16, 20.8];
|
|
8190
|
+
let title = config.chartTitle, xName = config.chartXName, yName = config.chartYName, legendName = '图例1';
|
|
8191
|
+
//x轴的数据
|
|
8192
|
+
let xData = xDataArr[0]; // [0, 2, 4, 6, 8];
|
|
8193
|
+
//重新处理x轴和y轴的数据,排除x轴后面为0的数据(因为有可能在单元格中,最后一个单元格的值可能没有填,这时候默认传的是0)
|
|
8194
|
+
let xDataCl = [], yDataSourceCl = [];
|
|
8195
|
+
for (let i = 0; i < xData.length; i++) {
|
|
8196
|
+
if (xData[i] != '/' && (i == 0 || (i > 0 && xData[i] != 0))) {
|
|
8197
|
+
xDataCl.push(xData[i]);
|
|
8198
|
+
yDataSourceCl.push(yDataSource[i]);
|
|
8199
|
+
}
|
|
8200
|
+
else if (i > 0 && xData[i] == 0) {
|
|
8201
|
+
break;
|
|
8202
|
+
}
|
|
8203
|
+
}
|
|
8204
|
+
xData = xDataCl;
|
|
8205
|
+
yDataSource = yDataSourceCl;
|
|
8206
|
+
//series的data数据、series的markPoint的data数据、series的markLine的data数据
|
|
8207
|
+
let seriesData = [], markPointData = [], markLineData = [...xData];
|
|
8208
|
+
//此目的是显示更多的x轴数据
|
|
8209
|
+
//假设x轴原始数据为[0, 2, 4, 6, 8],在这个数组中没有1、3、5等数据,此时就可以通过下面的方式进行增加
|
|
8210
|
+
/*
|
|
8211
|
+
for (let i = 0; i < 20; i++) {
|
|
8212
|
+
if (!markLineData.some((item) => item == i)) {
|
|
8213
|
+
markLineData.push(i);
|
|
8214
|
+
}
|
|
8215
|
+
}
|
|
8216
|
+
*/
|
|
8217
|
+
//获取y轴趋势公式对象
|
|
8218
|
+
const gsS = EChartsUtilsComm.calcTrend(xData, yDataSource, xData[0]);
|
|
8219
|
+
//输出方程表达式
|
|
8220
|
+
if (chartExtJson != null) {
|
|
8221
|
+
if (chartExtJson.jxhslSnShScfc != null && chartExtJson.jxhslSnShScfc != undefined) {
|
|
8222
|
+
// console.log('输出公式:',`Y=${getRound(gsS.xl,0.0001)}X+${getRound(gsS.jj,0.0001)}`)
|
|
8223
|
+
if (gsS.xl == '' || gsS.jj == '') {
|
|
8224
|
+
sheet.setValue(chartExtJson.jxhslSnShScfc.row, chartExtJson.jxhslSnShScfc.col, '/');
|
|
8225
|
+
}
|
|
8226
|
+
else {
|
|
8227
|
+
sheet.setValue(chartExtJson.jxhslSnShScfc.row, chartExtJson.jxhslSnShScfc.col, `Y=${EChartsUtilsComm.getRound(gsS.xl, 0.0001)}X+${EChartsUtilsComm.getRound(gsS.jj, 0.0001)}`);
|
|
8228
|
+
}
|
|
8229
|
+
}
|
|
8230
|
+
}
|
|
8231
|
+
let yDataCopy = [];
|
|
8232
|
+
//获取y轴原始数据对应的趋势数据
|
|
8233
|
+
xData.forEach((item, index) => {
|
|
8234
|
+
let curYData = Number(EChartsUtilsComm.getRound(eval(gsS.gs.replace('x', item + '')), 0.01));
|
|
8235
|
+
if (isNaN(curYData)) {
|
|
8236
|
+
curYData = 0;
|
|
8237
|
+
}
|
|
8238
|
+
// seriesData.push([item, curYData]);
|
|
8239
|
+
seriesData.push([item, yDataSource[index]]);
|
|
8240
|
+
yDataCopy.push(curYData);
|
|
8241
|
+
markPointData.push({
|
|
8242
|
+
xAxis: item,
|
|
8243
|
+
yAxis: yDataSource[index],
|
|
8244
|
+
symbol: 'circle',
|
|
8245
|
+
symbolSize: 6,
|
|
8246
|
+
});
|
|
8247
|
+
//console.log(curYData, "curYData")
|
|
8248
|
+
});
|
|
8249
|
+
let yValIsAllNull = false;
|
|
8250
|
+
if (xData.length == 0) {
|
|
8251
|
+
yValIsAllNull = true;
|
|
8252
|
+
}
|
|
8253
|
+
let nullCount = 0;
|
|
8254
|
+
xData.forEach((item) => {
|
|
8255
|
+
if (item[1] == 0 || item[1] == null || item[1] == undefined) {
|
|
8256
|
+
nullCount++;
|
|
8257
|
+
}
|
|
8258
|
+
});
|
|
8259
|
+
if (nullCount == xData.length) {
|
|
8260
|
+
yValIsAllNull = true;
|
|
8261
|
+
}
|
|
8262
|
+
if (yDataCopy.some((item) => item != 0 || item[1] == null || item[1] == undefined)) {
|
|
8263
|
+
yValIsAllNull = false;
|
|
8264
|
+
}
|
|
8265
|
+
let option = {
|
|
8266
|
+
grid: {
|
|
8267
|
+
// show: true,//是否显示外边框线
|
|
8268
|
+
// borderColor: '#f00',//外边框线颜色
|
|
8269
|
+
top: 22,
|
|
8270
|
+
left: !yValIsAllNull ? 30 : 25,
|
|
8271
|
+
right: 10,
|
|
8272
|
+
bottom: 35,
|
|
8273
|
+
containLabel: true,
|
|
8274
|
+
},
|
|
8275
|
+
//提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip
|
|
8276
|
+
tooltip: {
|
|
8277
|
+
trigger: 'axis',
|
|
8278
|
+
formatter: function (datas, ticket) {
|
|
8279
|
+
return datas && datas.length > 0 ? datas[0].value[0] + ':' + datas[0].value[1] : datas[0].data;
|
|
8280
|
+
},
|
|
8281
|
+
},
|
|
8282
|
+
//顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title
|
|
8283
|
+
title: [
|
|
8284
|
+
{
|
|
8285
|
+
show: true,
|
|
8286
|
+
text: title,
|
|
8287
|
+
left: 'center',
|
|
8288
|
+
top: 0,
|
|
8289
|
+
textStyle: {
|
|
8290
|
+
fontSize: 14,
|
|
8291
|
+
fontWeight: 'normal',
|
|
8292
|
+
},
|
|
8293
|
+
},
|
|
8294
|
+
{
|
|
8295
|
+
show: true,
|
|
8296
|
+
text: xName,
|
|
8297
|
+
left: 'center',
|
|
8298
|
+
bottom: 0,
|
|
8299
|
+
textStyle: {
|
|
8300
|
+
fontSize: 12,
|
|
8301
|
+
fontWeight: 'normal',
|
|
8302
|
+
},
|
|
8303
|
+
},
|
|
8304
|
+
],
|
|
8305
|
+
//图例,参考文档:https://echarts.apache.org/zh/option.html#legend
|
|
8306
|
+
legend: {
|
|
8307
|
+
show: false,
|
|
8308
|
+
left: 'right',
|
|
8309
|
+
data: [legendName],
|
|
8310
|
+
selected: {
|
|
8311
|
+
legendName: true, //显示
|
|
8312
|
+
},
|
|
8313
|
+
selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)
|
|
8314
|
+
},
|
|
8315
|
+
xAxis: {
|
|
8316
|
+
type: 'value',
|
|
8317
|
+
splitLine: { show: false }, // 隐藏分割线
|
|
8318
|
+
axisLabel: { show: false }, // 隐藏刻度值
|
|
8319
|
+
},
|
|
8320
|
+
yAxis: [
|
|
8321
|
+
{
|
|
8322
|
+
type: 'value',
|
|
8323
|
+
name: yName,
|
|
8324
|
+
nameGap: !yValIsAllNull ? 30 : 5,
|
|
8325
|
+
nameRotate: 90,
|
|
8326
|
+
nameLocation: 'middle',
|
|
8327
|
+
},
|
|
8328
|
+
],
|
|
8329
|
+
series: [
|
|
8330
|
+
{
|
|
8331
|
+
name: legendName,
|
|
8332
|
+
type: 'line',
|
|
8333
|
+
smooth: true, //平滑的线条
|
|
8334
|
+
//设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol
|
|
8335
|
+
symbol: 'circle', //符号类型
|
|
8336
|
+
symbolSize: 6, //符号大小
|
|
8337
|
+
//线条的颜色
|
|
8338
|
+
lineStyle: {
|
|
8339
|
+
color: lineData[0].lineColor,
|
|
8340
|
+
//线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)
|
|
8341
|
+
type: 'dotted',
|
|
8342
|
+
},
|
|
8343
|
+
//线条上数据点的颜色
|
|
8344
|
+
itemStyle: {
|
|
8345
|
+
color: lineData[0].lineColor,
|
|
8346
|
+
opacity: 0,
|
|
8347
|
+
},
|
|
8348
|
+
data: seriesData,
|
|
8349
|
+
markPoint: {
|
|
8350
|
+
data: markPointData,
|
|
8351
|
+
},
|
|
8352
|
+
markLine: {
|
|
8353
|
+
symbol: false, //取消箭头
|
|
8354
|
+
silent: true, //取消鼠标hover事件
|
|
8355
|
+
label: {
|
|
8356
|
+
position: 'start', //改变label位置
|
|
8357
|
+
formatter: (obj) => obj.value, //格式化显示的x轴标签内容
|
|
8358
|
+
},
|
|
8359
|
+
lineStyle: { color: '#ddd', type: 'solid' },
|
|
8360
|
+
data: markLineData.map((val) => {
|
|
8361
|
+
return {
|
|
8362
|
+
xAxis: val,
|
|
8363
|
+
};
|
|
8364
|
+
}),
|
|
8365
|
+
},
|
|
8366
|
+
},
|
|
8367
|
+
],
|
|
8368
|
+
};
|
|
8369
|
+
return option;
|
|
8370
|
+
},
|
|
8175
8371
|
};
|
|
8176
8372
|
|
|
8177
8373
|
/**
|