Browse Source

示例

master
imp 2 years ago
parent
commit
1ba7a96387
  1. 4
      paper/core/Widget.js
  2. 16
      paper/paper_1.js
  3. 45
      paper/paper_2.js
  4. 27
      readme.md

4
paper/core/Widget.js

@ -32,4 +32,8 @@ class Widget {
return this.pureName;
}
getWidgetType() {
return this.type;
}
}

16
paper/paper_1.js

@ -21,6 +21,9 @@ class Paper_1 {
// 得分点1 - 组件名是xxx的组件
scores.push(this.score_1);
// 评分点2 - 组件名是xxx的组件
scores.push(this.score_1);
return scores.reduce((pre, cur, curIdx) => {
const div = document.createElement("div");
@ -42,9 +45,18 @@ class Paper_1 {
return 0;
}
}
/**
* 评分点2-分组表
*/
score_2(widget) {
if (widget.getWidgetType() === 1) {
return 1;
}
// const paper1 = new Paper_1({
return 0;
}
}
// "version": 20210913,
// "layoutRatio": {
// "x": 0.3611,

45
paper/paper_2.js

@ -0,0 +1,45 @@
class Paper_2 {
constructor(report) {
this.report = new Report(report);
}
/**
* 评分
*/
score() {
// 总分数
let scores = [];
// 获取需要进行配置对比的组件
const wName1 = "名校区消费情况";
const widget = this.report.getWidgetByName(wName1);
if (!widget) {
alert("未找到" + wName1 + "对应组件");
return 0;
}
// 评分点1 - 组件名是xxx的组件
scores.push(this.score_1);
return scores.reduce((pre, cur, curIdx) => {
const div = document.createElement("div");
const curScore = cur(widget);
div.innerText = "评分点" + (curIdx + 1) + ":" + curScore + "分";
document.getElementById("console").append(div);
return pre + curScore;
}, 0);
}
/**
* 评分点1-标题名称为 "名校区消费情况"
*/
score_1(widget) {
if (widget.getPlainWidgetName() === '名校区消费情况') {
return 1;
}
return 0;
}
}

27
readme.md

@ -0,0 +1,27 @@
# 使用方法
打开根目录下的index.html即可看到评分页面
# 开发教程
## 评分思路
每套试卷都需要一个类处理该套评分规则,每个评分点通过配置的对比,来判断是否给分。
### 如何知道评分点对应的配置
方式1:页面上操作查看模板的`save`请求,通过前后JSON配置的对比知道操作对应的配置,从而在开发过程中知道按照什么配置对比给分
方式2:做完一个操作前后,如改变图表类型,都进行资源迁移导出配置,解压zip,查看`dashboard\xxx.fbi`文件,文件中配置需要经过JSON.stringify(xxx),转成JSON格式,通过JSON配置对比,知道操作对应的配置
注意:JSON配置对比可用[https://www.diffchecker.com/]
### 评分点对应的配置有几种类型
1. 直接配置变化,如切换成分组表,对应的 widget.type 变化,对比widget.getWidgetType()是否等于1即可,参考`paper\paper_1.js`中`score_2`方法
2. 一个评分点对应了多个配置,如添加了三个字段,对应的widget.dimensions中多了三个维度,且顺序存在widget.view[10000]中,需要通过多分配置计算对比,才能知道是否得分
## 如果添加一套试卷的评分点
1. 在`index.html`的`<select>`中添加一个`<options>`
2. 在`paper/`目录下添加一套试卷评分的处理类,格式和逻辑见`paper_1.js`
3. 在`index.js`中`startButton.onclick`方法里添加一条`case`,用于处理新添加的试卷
Loading…
Cancel
Save