@choiceform/os-client-core 3.3.3 → 3.4.0

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/index.d.ts CHANGED
@@ -166,18 +166,27 @@ interface CFEnvSystem {
166
166
  * 生成一个div
167
167
  * 举例,web端提供的该方法为如下,其他端需要使用兼容的方式提供
168
168
  * ```typescript
169
- * function parseHtml(html?:string):HTMLElement {
169
+ * function newDiv():HTMLElement {
170
170
  * return document.createElement('div');
171
-
172
171
  * }
173
172
  * ```
174
173
  */
175
174
  newDiv(): HTMLElement;
175
+ /**
176
+ * 生成一个div
177
+ * 举例,web端提供的该方法为如下,其他端需要使用兼容的方式提供
178
+ * ```typescript
179
+ * function newDiv():HTMLElement {
180
+ * return document.createElement('div');
181
+ * }
182
+ * ```
183
+ */
184
+ newSpan(): HTMLSpanElement;
176
185
  /**
177
186
  * 生成一个文本节点的方法
178
187
  * 举例,web端提供的该方法为如下,其他端需要使用兼容的方式提供
179
188
  * ```typescript
180
- * function newTextNode(html:string):Text {
189
+ * function newTextNode():Text {
181
190
  * return document.createText();
182
191
  * }
183
192
  * ```
@@ -373,6 +382,13 @@ interface CFEnvNetWork {
373
382
  * 默认行为:什么也不做
374
383
  */
375
384
  closeSocket?(): void;
385
+ /**
386
+ * 推动socket消息的方法
387
+ * 默认行为:什么也不做
388
+ * @param message 消息名
389
+ * @param payload 附带的数据
390
+ */
391
+ pushSocket?(message:string, payload: object): void;
376
392
  }
377
393
  /**
378
394
  * 授权相关的配置,不同的运行平台有不同的账户系统,所以授权方式也不一样。
@@ -492,9 +508,9 @@ interface CFEnvHook {
492
508
  beforeForceLeave?(): void;
493
509
  /**
494
510
  * 当语言发生变化时的回调
495
- * @param lang 语言代号:zh_cn/en_us/ja_jp格式
511
+ * @param langItem
496
512
  */
497
- onLangChange?(lang: string): void;
513
+ onLangChange?(langItem: CFLangTableItem): void;
498
514
  /**
499
515
  * 当进行上一题/下一题切换题目时的回调
500
516
  */
@@ -1695,16 +1711,6 @@ declare const enum OPT_MARK {
1695
1711
  * 块状选项
1696
1712
  */
1697
1713
  BLOCK = 'block',
1698
- /**
1699
- * 只有级联题使用,
1700
- * 展示成下拉列表嵌套选择
1701
- */
1702
- DROPDOWN = 'dropdown',
1703
- /**
1704
- * 只有级联题使用
1705
- * 展示成普通选项嵌套选择
1706
- */
1707
- STRETCH = 'stretch',
1708
1714
  }
1709
1715
 
1710
1716
  /**
@@ -1869,24 +1875,6 @@ declare const enum OPT_MAP_TYPE {
1869
1875
  NUMBER = 'number',
1870
1876
  }
1871
1877
 
1872
- /**
1873
- * 矩阵展示方式枚举
1874
- */
1875
- declare const enum MATRIX_DISPLAY {
1876
- /**
1877
- * 自动适应
1878
- */
1879
- AUTO = 'auto',
1880
- /**
1881
- * 层级排布
1882
- */
1883
- STRETCH = 'stretch',
1884
- /**
1885
- * 展示成矩阵表
1886
- */
1887
- MATRIX = 'matrix',
1888
- }
1889
-
1890
1878
  /**
1891
1879
  * 权重输入方式
1892
1880
  */
@@ -2027,20 +2015,6 @@ declare const enum VERIFY_TYPE {
2027
2015
  IMAGE = 'image',
2028
2016
  }
2029
2017
 
2030
- /**
2031
- * 演示评价题评分方式枚举
2032
- */
2033
- declare const enum SLIDE_RATE_TYPE {
2034
- /**
2035
- * 演示评价
2036
- */
2037
- SLIDE = 'slide',
2038
- /**
2039
- * 表格评价
2040
- */
2041
- TABLE = 'table',
2042
- }
2043
-
2044
2018
  /**
2045
2019
  * 表格评价时的表头展示方式枚举
2046
2020
  */
@@ -2209,7 +2183,7 @@ declare const enum VAR_TYPE {
2209
2183
  */
2210
2184
  VAR_MEDIA = 'var-media',
2211
2185
  /**
2212
- * 循环变量
2186
+ * 循环仰视变量
2213
2187
  */
2214
2188
  VAR_LOOP = 'var-loop',
2215
2189
  /**
@@ -2745,6 +2719,78 @@ interface ICFStretchConfig {
2745
2719
  }
2746
2720
 
2747
2721
 
2722
+ // -------------- types/outer/flow/group-table.d.ts ---------------
2723
+
2724
+ /**
2725
+ * 单页组表格
2726
+ * 主要用于在答题过程中,如果是单页组并且开始了 renderAsTable 这个选项的时候
2727
+ * 需要优先使用这个字段来渲染,
2728
+ * 在这种模式下,单页组中的题目按照表格的形式渲染题目
2729
+ */
2730
+ interface ISinglePageGroupTable {
2731
+ /**
2732
+ * 表格标题
2733
+ */
2734
+ title: string
2735
+ /**
2736
+ * 表格头部数据
2737
+ */
2738
+ header: ISinglePageGroupTableHeaderCell[]
2739
+ /**
2740
+ * 每一行的数据
2741
+ */
2742
+ rows: ISinglePageGroupTableRow[]
2743
+
2744
+ }
2745
+
2746
+ /**
2747
+ * 单页组的某一列的数据结构
2748
+ */
2749
+ interface ISinglePageGroupTableHeaderCell {
2750
+ /**
2751
+ * 列的标题
2752
+ */
2753
+ title: string
2754
+ /**
2755
+ * 列的uuid
2756
+ */
2757
+ uuid: string
2758
+ }
2759
+
2760
+ /**
2761
+ * 单页组的一行的数据结构
2762
+ */
2763
+ interface ISinglePageGroupTableRow {
2764
+ /**
2765
+ * uuid
2766
+ */
2767
+ uuid: string
2768
+ /**
2769
+ * 行头需要显示的文本
2770
+ */
2771
+ readonly title: string;
2772
+ /**
2773
+ * 每一行所关联的问题,横向排布。
2774
+ */
2775
+ cells: ISinglePageGroupTableRowCell[]
2776
+ }
2777
+
2778
+ /**
2779
+ * 单页组的一行的数据结构
2780
+ */
2781
+ interface ISinglePageGroupTableRowCell {
2782
+ /**
2783
+ * cell 的 uuid
2784
+ * 在有node 的情况下,会使用node的renderId
2785
+ * 如果没有的家。则自动生成一个uuid
2786
+ */
2787
+ uuid: string
2788
+ /**
2789
+ * 单元格子内的关联问题
2790
+ */
2791
+ node?: CFQuestion
2792
+ }
2793
+
2748
2794
  // -------------- types/outer/flow/payload.d.ts ---------------
2749
2795
 
2750
2796
  /**
@@ -3459,6 +3505,15 @@ interface ICFNodeGroup {
3459
3505
  * 组内节点排列方向
3460
3506
  */
3461
3507
  readonly displayDirection: GROUP_DISPLAY_DIRECTION;
3508
+ /**
3509
+ * 是否需要渲染成单页表格的样式
3510
+ * @param
3511
+ */
3512
+ readonly renderAsTable?: boolean;
3513
+ /**
3514
+ * 如果需要渲染成单页表格,则这个就是表格上方的标题
3515
+ */
3516
+ readonly tableTitle?: string;
3462
3517
  }
3463
3518
  //#endregion
3464
3519
 
@@ -3613,6 +3668,10 @@ interface ICFNode {
3613
3668
  * @ignore
3614
3669
  */
3615
3670
  readonly questionText: string;
3671
+ /**
3672
+ * 是否隐藏问题区,如果为true,不要渲染node-head
3673
+ */
3674
+ readonly headHidden?: boolean;
3616
3675
  /**
3617
3676
  * 原始问题描述
3618
3677
  * @ignore
@@ -3651,7 +3710,7 @@ interface ICFNode {
3651
3710
  /**
3652
3711
  * @ignore
3653
3712
  */
3654
- readonly realNodeName: string;
3713
+ readonly runtimeNodeName: string;
3655
3714
  /**
3656
3715
  * 节点类型
3657
3716
  */
@@ -3938,11 +3997,6 @@ interface ICFMatrixNode extends ICFSubjectNode {
3938
3997
  * 如果是以列为主,则先列后行
3939
3998
  */
3940
3999
  readonly flatten: CFFlatItem[];
3941
- /**
3942
- * 矩阵展示方式
3943
- * UI根据不同的类型,展示成不同的方格
3944
- */
3945
- readonly displayType: MATRIX_DISPLAY;
3946
4000
  /**
3947
4001
  * 列选项
3948
4002
  * @ignore
@@ -4495,7 +4549,7 @@ interface ICFStartNode extends ICFNode, ICFStartMiniState, ICFOutputNodeMixin, C
4495
4549
  * 循环节点
4496
4550
  * @ignore
4497
4551
  */
4498
- interface ICFLoopNode extends ICFInOutNodeMixin {
4552
+ interface ICFLoopNode extends ICFInOutNodeMixin , ICFOptNodeMixin {
4499
4553
  readonly loopEnd: ICFPort;
4500
4554
  readonly loopStart: ICFPort;
4501
4555
  }
@@ -4564,7 +4618,7 @@ interface ICFOptGroupNodeMixin extends ICFNode {
4564
4618
  * 选项分组设置,当题目上发现该属性时,放弃使用[[CFSubjectQuestion.options]],转而使用该属性的结构来渲染选项
4565
4619
  * 该属性是树形递归结构,
4566
4620
  * 虽然当前所有题目的类型上都有该属性,
4567
- * 但只有`选择题`,`图标选择题`,`图片选择题`,`分值打分题`,`图形打分题`,`填空题`,`权重题`等这几题需要支持组渲染
4621
+ * 但只有`选择题`,`图标选择题`,`图片选择题`,`拖拽打分题`,`图形打分题`,`填空题`,`数值分配题`等这几题需要支持组渲染
4568
4622
  *
4569
4623
  * 其他题目还是维持以前的状态。
4570
4624
  *
@@ -5140,22 +5194,6 @@ interface CFOption extends ICFPort {
5140
5194
  * UI需要渲染该消息,让答题者知道为什么错了
5141
5195
  */
5142
5196
  readonly errorMessage: string;
5143
- /**
5144
- * @ignore
5145
- */
5146
- readonly _previewTransferred: boolean;
5147
- /**
5148
- * 原始索引
5149
- * @ignore
5150
- */
5151
- readonly index: number;
5152
- /**
5153
- * 展示后的真实索引,未展示的为负值.
5154
- * 因为选项可能被隐藏,索引需要保证真实索引
5155
- * 用于在随机顺序追随引用源时作为可靠的参考
5156
- * @ignore
5157
- */
5158
- readonly realIndex: number;
5159
5197
  /**
5160
5198
  * @ignore
5161
5199
  */
@@ -5285,7 +5323,7 @@ interface CFIconMarkOption extends CFOption {
5285
5323
  }
5286
5324
 
5287
5325
  /**
5288
- * 分值打分题选项
5326
+ * 拖拽打分题选项
5289
5327
  */
5290
5328
  interface CFValueMarkOption extends CFOption {
5291
5329
  /**
@@ -5454,10 +5492,7 @@ interface CFUploadOption extends CFOption, ICFUploadResult {
5454
5492
  readonly image: CFImageInNode;
5455
5493
  }
5456
5494
 
5457
- /**
5458
- * 图片热点选项
5459
- */
5460
- interface CFHotSpotOption extends CFOption {
5495
+ interface CFHotSpotGraph {
5461
5496
  /**
5462
5497
  * @ignore
5463
5498
  */
@@ -5466,6 +5501,10 @@ interface CFHotSpotOption extends CFOption {
5466
5501
  * @ignore
5467
5502
  */
5468
5503
  readonly y: number;
5504
+ /**
5505
+ * 唯一id
5506
+ */
5507
+ readonly uuid: string;
5469
5508
  /**
5470
5509
  * 偏移
5471
5510
  */
@@ -5475,11 +5514,7 @@ interface CFHotSpotOption extends CFOption {
5475
5514
  */
5476
5515
  readonly pathD: string;
5477
5516
  /**
5478
- * 颜色
5479
- */
5480
- readonly color: string;
5481
- /**
5482
- * @ignore
5517
+ * 图形区域,主要用于判断图形层级,图形区域小的应该在图形面积大的上方
5483
5518
  */
5484
5519
  readonly area: number;
5485
5520
  /**
@@ -5488,6 +5523,20 @@ interface CFHotSpotOption extends CFOption {
5488
5523
  points: { x: number; y: number }[];
5489
5524
  }
5490
5525
 
5526
+ /**
5527
+ * 图片热点选项
5528
+ */
5529
+ interface CFHotSpotOption extends CFOption {
5530
+ /**
5531
+ * 颜色
5532
+ */
5533
+ readonly color: string;
5534
+ /**
5535
+ * 图形列表
5536
+ */
5537
+ graphs: CFHotSpotGraph[]
5538
+ }
5539
+
5491
5540
  /**
5492
5541
  * 热图选项
5493
5542
  */
@@ -5580,14 +5629,6 @@ interface ICFRefOption extends CFOption {
5580
5629
  * 关联的选项引用id
5581
5630
  */
5582
5631
  readonly referId: string;
5583
- /**
5584
- * 引用源的真实索引
5585
- */
5586
- readonly refIndex: number;
5587
- /**
5588
- * 引用源展示后的真实索引
5589
- */
5590
- readonly refRealIndex: number;
5591
5632
  }
5592
5633
 
5593
5634
  /**
@@ -5698,11 +5739,6 @@ interface CFQuestion extends ICFNode, ICFTypeInfo {
5698
5739
  * @ignore
5699
5740
  */
5700
5741
  readonly actions: ICFNodeAction[];
5701
- /**
5702
- * 刷新动态属性
5703
- * @ignore
5704
- */
5705
- dynamicNodeProps: () => void;
5706
5742
  /**
5707
5743
  * 是否已经被回复,包含了答案
5708
5744
  */
@@ -5773,10 +5809,6 @@ interface CFQuestion extends ICFNode, ICFTypeInfo {
5773
5809
  * 前一道题
5774
5810
  */
5775
5811
  readonly prev: CFQuestion;
5776
- /**
5777
- * 后一道题
5778
- */
5779
- readonly next: CFQuestion;
5780
5812
  /**
5781
5813
  * 编号,该题的唯一代号
5782
5814
  * 如果有该属性,UI要渲染
@@ -5954,7 +5986,6 @@ interface CFSequenceQuestion extends CFSubjectQuestion {
5954
5986
  *
5955
5987
  * 或者使用[[CFMatrixQuestion.flatten]]渲染层级排布方式的选项
5956
5988
  *
5957
- * 使用哪种方式由[[CFMatrixQuestion.displayType]]决定
5958
5989
  *
5959
5990
  * 矩阵题的普通选项也是选择类型的,点击后调用[[CFUIEventHandler.handleOptionClick]]方法
5960
5991
  *
@@ -6087,12 +6118,12 @@ interface CFVerifyQuestion extends ICFValidateNode, CFQuestion {
6087
6118
  }
6088
6119
 
6089
6120
  /**
6090
- * 图片热点题
6121
+ * 图片框选题
6091
6122
  * 基本内容请参考选择题[[CFSelectQuestion]]
6092
- * 特殊点,图片热点题的选项不是以列表方式渲染的,而是以覆盖在图片上的区域点的方式渲染
6093
- * 图片热点题的选项是[[CFHotSpotOption]]类型
6123
+ * 特殊点,图片框选题的选项不是以列表方式渲染的,而是以覆盖在图片上的区域点的方式渲染
6124
+ * 图片框选题的选项是[[CFHotSpotOption]]类型
6094
6125
  *
6095
- * 渲染图片热点题的选项再渲染时,先使用[[CFHotSpotQuestion.mapImage]]渲染出底图.
6126
+ * 渲染图片框选题的选项再渲染时,先使用[[CFHotSpotQuestion.mapImage]]渲染出底图.
6096
6127
  *
6097
6128
  * 在根据每个选项的路径[[CFHotSpotOption.pathD]]和位置[[CFHotSpotOption.transform]]在底图上方绘制选项区域.
6098
6129
  *
@@ -6159,73 +6190,9 @@ interface CFFillQuestion extends ICFFillNode, CFSubjectQuestion {
6159
6190
  }
6160
6191
 
6161
6192
  /**
6162
- * 演示评价题
6193
+ * 连续评价题
6163
6194
  * 基本内容请参考选择题[[CFSelectQuestion]]
6164
- *
6165
- * 特殊点:演示评价题通过[[CFSlideRateQuestion.rateType]]属性区分有两种评分方式的UI:
6166
- *
6167
- * 1. slide-演示评价
6168
- *
6169
- * 它的普通选项不是直接以列表的方式展示出来,而是一页一个逐一展示出来的.
6170
- * 它的选项是[[CFSlideRateOption]]类型的数组
6171
- * 每次只渲染一个选项,选项中如有有文字和图片需要渲染
6172
- * 同时关注[[CFSlideRateQuestion.rateOptions]]属性,为该选项渲染出几个打分图形和打分文字.
6173
- * 每个图形和文字代表不同的分值,当答题者点击这些图形的时候就是为该选项评分
6174
- * 评分后需要调用[[CFUIEventHandler.handleOptionInput]]方法
6175
- *
6176
- * 需要进行分页控制:
6177
- * - 初始渲染[[CFSlideRateQuestion.currentOption]];
6178
- * - 渲染上一页,下一页按钮,点击后分别调用[[CFSlideRateQuestion.gotoNextOption]]方法
6179
- * 或[[CFSlideRateQuestion.gotoPrevOption]]方法要求核心包来切换当前选项,[[CFSlideRateQuestion.gotoOption]]跳转到指定的选项
6180
- * - 当前是几分之几项如:1/6,每次切任务后更新进度,当前索引可以到靠查询当前选项在总选项表中的位置获取到。
6181
- *
6182
- * 2. table-表格评价
6183
- *
6184
- * 使用[[CFSlideRateQuestion.options]]与[[CFSlideRateQuestion.rateOptions]]组成生成表格
6185
- * [[CFSlideRateQuestion.options]]当行,[[CFSlideRateQuestion.rateOptions]]当列。
6186
- *
6187
- * 比如下面的水果是选项,喜欢不喜欢是评价项,
6188
- * 这UI看起来和矩阵题的行列单选简直一模一样,但其实是个打分题,提交数据的结构和矩阵题是不一样的。
6189
- *
6190
- *
6191
- * | |非常不喜欢|比较不喜欢|一般|比较喜欢|非常喜欢|
6192
- * | :-: | :-: | :-: | :-: | :-: | :-: |
6193
- * | | 1 | 2 |3 | 4 | 5 |
6194
- * |苹果| ○ | ⊙ | ○ | ○ | ○ |
6195
- * |香蕉| ○ | ○ | ○ | ○ | ⊙ |
6196
- * |雪梨| ○ | ○ | ○ | ⊙ | ○ |
6197
- * |菠萝| ○ | ○ | ○ | ○ | ⊙ |
6198
- *
6199
- *
6200
- *
6201
- * 默认表头会显示两行,第一行是评价项的文字,第二行是评价项的分值
6202
- * 参照[[CFSlideRateQuestion.tableHead]]的值来控制表头的展示方式,有以下可能:
6203
- *
6204
- * + none: 不显示表头
6205
- * + text: 仅显示文字表头
6206
- * + value: 仅显示分值表头
6207
- * + text_value 同时显示文字表头和分值表头,文字表头在上。
6208
- *
6209
- *
6210
- * 点击某个网格时调用[[CFUIEventHandler.handleOptionInput]]方法
6211
- * 传入的分值就是该网格所在列对应的评价项的分值,传入的选项就是该网格所在的行所对应的选项。
6212
- *
6213
- * 渲染网格时检查网格所在行的选项的分值是否和网格所在列的评价项的分值一致,如果一致,则这个网格要被选中。
6214
- *
6215
- * 如果相邻的评价项是一样的(包含都是空字符串的情况)则相邻的的文字表头网格需要合并
6216
- *
6217
- * 如:五个评价项的文字分别是 讨厌-无感-无感-无感-喜欢,则中间三个无感要合并成一个单元格
6218
- *
6219
- * 分值表头则不需要合并
6220
- *
6221
- * 表格评价模式下表头和选项的文字中可能有富文本,需要能支持。
6222
- *
6223
- * 表格评价模式下选项的图片和评价项的图标无视掉,无需支持。
6224
- *
6225
- * 这个情况一般是在较大屏上使用,简单起见对小屏的是适配暂无要求
6226
- * 如果在手机上存在评价项较多即使尽量挤压也在水平方向上显示不下的情况,
6227
- * 这时候让它自动超出屏幕触发系统滚动条也是可以的。
6228
- *
6195
+ *
6229
6196
  * 其他选项的渲染方式和选择题一样
6230
6197
  *
6231
6198
  */
@@ -6254,10 +6221,6 @@ interface CFSlideRateQuestion extends ICFSlideRateNode, CFSubjectQuestion {
6254
6221
  * 切换到指定选项
6255
6222
  */
6256
6223
  gotoOption(option: CFSlideRateOption): void;
6257
- /**
6258
- * 评价UI展示方式
6259
- */
6260
- readonly rateType: SLIDE_RATE_TYPE;
6261
6224
  /**
6262
6225
  * 表格评价时的表头展示方式
6263
6226
  */
@@ -6265,11 +6228,11 @@ interface CFSlideRateQuestion extends ICFSlideRateNode, CFSubjectQuestion {
6265
6228
  }
6266
6229
 
6267
6230
  /**
6268
- * 权重题
6231
+ * 数值分配题
6269
6232
  *
6270
6233
  * 基本内容请参考选择题[[CFSelectQuestion]]
6271
6234
  *
6272
- * 特殊点:权重题的普通选项要以可评分的方式渲染出来,输入框输入分值,或滑杆拖动输入分值等等都可,UI自行决定.
6235
+ * 特殊点:数值分配题的普通选项要以可评分的方式渲染出来,输入框输入分值,或滑杆拖动输入分值等等都可,UI自行决定.
6273
6236
  *
6274
6237
  * 当输入分值后,需要调用[[CFUIEventHandler.handleOptionInput]]方法
6275
6238
  *
@@ -6317,10 +6280,10 @@ interface CFWeightQuestion extends CFSubjectQuestion {
6317
6280
 
6318
6281
 
6319
6282
  /**
6320
- * 分值打分题
6283
+ * 拖拽打分题
6321
6284
  * 基本内容请参考选择题[[CFSelectQuestion]]
6322
6285
  *
6323
- * 特殊点:分值打分题的每个选项是用于评分的,一般渲染一个滑杆让答题者拖动滑杆评分
6286
+ * 特殊点:拖拽打分题的每个选项是用于评分的,一般渲染一个滑杆让答题者拖动滑杆评分
6324
6287
  * 选项是[[CFValueMarkOption]]类型,其中定义了最大分支,最小分值限制,每次拖动滑杆时的分值步进
6325
6288
  * 还有最大分值描述,和最小分值描述,这些内容可以选择性的渲染.
6326
6289
  * 答题者给选项评分后需要回调[[CFUIEventHandler.handleOptionInput]]方法
@@ -6500,7 +6463,7 @@ interface CFCascadeQuestion extends ICFCascadeNode, CFSubjectQuestion {
6500
6463
  }
6501
6464
 
6502
6465
  /**
6503
- * 描述节点
6466
+ * 素材展示页面
6504
6467
  *
6505
6468
  * 没有选项,其他方面同选择题[[CFSelectQuestion]]
6506
6469
  *
@@ -6804,15 +6767,15 @@ interface CFMaxDiffTask {
6804
6767
  }
6805
6768
 
6806
6769
  /**
6807
- * 最大差分题
6770
+ * MaxDiff问题
6808
6771
  * 基本内容请参考选择题[[CFSelectQuestion]]
6809
6772
  *
6810
6773
  * 特殊点:
6811
6774
  *
6812
6775
  *
6813
- * 最大差分题不直接渲染选项,而是渲染任务:其中总任务列表时[[CFMaxDiffQuestion.tasks]],不直接渲染这个列表,
6776
+ * MaxDiff问题不直接渲染选项,而是渲染任务:其中总任务列表时[[CFMaxDiffQuestion.tasks]],不直接渲染这个列表,
6814
6777
  *
6815
- * 而是像演示评价题一样一次只显示一个任务卡片[[CFMaxDiffQuestion.currentTask]]。
6778
+ * 而是像连续评价题一样一次只显示一个任务卡片[[CFMaxDiffQuestion.currentTask]]。
6816
6779
  *
6817
6780
  * 卡片展示成下面这样:
6818
6781
  *
@@ -6833,14 +6796,14 @@ interface CFMaxDiffTask {
6833
6796
  *
6834
6797
  * 渲染的时候也是当[[CFMaxDiffTaskItem.value]]为1时,左侧checkbox被选中,如果为-1时,右侧checkbox被选中。
6835
6798
  *
6836
- * 由于一个最大差分题包含多一个任务页,所以需要提供切换任务的功能
6799
+ * 由于一个MaxDiff问题包含多一个任务页,所以需要提供切换任务的功能
6837
6800
  *
6838
6801
  * 1. 渲染当前[[CFMaxDiffQuestion.currentTask]]任务卡片
6839
6802
  *
6840
6803
  * 2. 渲染`上一页`,`下一页`按钮,点击后分别调用[[CFMaxDiffQuestion.gotoPrevTask]]方法或[[CFMaxDiffQuestion.gotoNextTask]]方法来要求
6841
6804
  * 核心包切换当前任务, [[CFMaxDiffQuestion.gotoTask]]跳转到指定的任务。
6842
6805
  *
6843
- * 3. 同时像演示评价题一样显示当前是几分之几项如:1/6,每次切任务后更新进度。当前索引可以到靠查询当前任务在总任务中的位置获取到。
6806
+ * 3. 同时像连续评价题一样显示当前是几分之几项如:1/6,每次切任务后更新进度。当前索引可以到靠查询当前任务在总任务中的位置获取到。
6844
6807
  *
6845
6808
  */
6846
6809
  interface CFMaxDiffQuestion extends CFSubjectQuestion, ICFMaxDiffNode {
@@ -6879,9 +6842,9 @@ interface ICFDataHub extends ICFSubjectNode, CFSubjectQuestion {
6879
6842
  * 虚拟循环题
6880
6843
  * @ignore
6881
6844
  */
6882
- interface ICFLoopHub extends ICFLoopNode, CFQuestion {
6845
+ interface ICFLoopHub extends ICFLoopNode, CFQuestion , ICFOptNodeMixin{
6883
6846
  /**
6884
- * 包含的循环变量列表
6847
+ * 包含的循环仰视变量列表
6885
6848
  */
6886
6849
  readonly varList: ICFLoopVar[];
6887
6850
  }
@@ -8144,20 +8107,13 @@ interface CFSurveyState
8144
8107
  * @ignore
8145
8108
  */
8146
8109
  readonly resumeEnabled: boolean;
8110
+
8111
+
8147
8112
  /**
8148
- * 单页的时候方便获取到第一个题目
8149
- * @ignore
8150
- */
8151
- first: () => CFQuestion;
8152
- /**
8153
- * 单页的时候方便获取到最后一个题目
8154
- * @ignore
8155
- */
8156
- last: () => CFQuestion;
8157
- /**
8158
- * @ignore
8113
+ * 是否需要以表格的方式渲染问题,
8114
+ * 这个的优先级比 nodes 的要高
8159
8115
  */
8160
- dynamicStateProps: () => Promise<void>;
8116
+ groupTable?: ISinglePageGroupTable
8161
8117
  }
8162
8118
 
8163
8119
 
@@ -8269,6 +8225,10 @@ interface CFLangTableItem {
8269
8225
  * 语言名称
8270
8226
  */
8271
8227
  readonly value: string;
8228
+ /**
8229
+ * 语言方向,不指定则认为是ltr
8230
+ */
8231
+ direction?: 'rtl' | 'ltr'
8272
8232
  }
8273
8233
 
8274
8234
  /**
@@ -8892,6 +8852,10 @@ interface CFPreviewTimeDisplay {
8892
8852
  * 节点名称
8893
8853
  */
8894
8854
  readonly name: string;
8855
+ /**
8856
+ * 唯一渲染id
8857
+ */
8858
+ readonly renderId: string;
8895
8859
  /**
8896
8860
  * 节点描述
8897
8861
  */
@@ -9281,7 +9245,7 @@ interface ICFQuestionCache {
9281
9245
  readonly failedSkipActivated: boolean;
9282
9246
  readonly tasks: ICFMaxDiffTaskCache[];
9283
9247
  /**
9284
- * 最大差分题和演示评价题当前任务索引
9248
+ * MaxDiff问题和连续评价题当前任务索引
9285
9249
  */
9286
9250
  readonly currentTaskIndex: number;
9287
9251
  readonly rankList: string[];
@@ -9382,7 +9346,7 @@ interface CFUIEventHandler {
9382
9346
 
9383
9347
  /**
9384
9348
  * 选项点击回调,适用题型:
9385
- * 选择题/图标题/图片选择题/矩阵题/图片热点题/图片上传题点击上传
9349
+ * 选择题/图标题/图片选择题/矩阵题/图片框选题/图片上传题点击上传
9386
9350
  * @param option 点击的选项
9387
9351
  * @param question 所在题目
9388
9352
  */
@@ -9431,7 +9395,7 @@ interface CFUIEventHandler {
9431
9395
  handleGetCodeClick?(question: CFQuestion): Promise<void>;
9432
9396
 
9433
9397
  /**
9434
- * 选项输入回调函数:适用题目填空题,打分题,权重题,演示评价题,上传题,输入方式排序或挑选方式排序的排序题以及有其他选项需要输入的题型
9398
+ * 选项输入回调函数:适用题目填空题,打分题,数值分配题,连续评价题,上传题,输入方式排序或挑选方式排序的排序题以及有其他选项需要输入的题型
9435
9399
  * 对与挑选排序的排序题,如果是要放弃序号,data参数传入-1即可
9436
9400
  * @param data 输入的数据
9437
9401
  * @param option 所在的选项
@@ -9506,7 +9470,7 @@ interface CFUIEventHandler {
9506
9470
  sortTargetOpt: CFSequenceOption,
9507
9471
  ): Promise<void>;
9508
9472
  /**
9509
- * 最大差分题评分后的回调
9473
+ * MaxDiff问题评分后的回调
9510
9474
  * @param value 分值,只能是-1或者1
9511
9475
  * @param item 被评价的项目
9512
9476
  * @param task 关联的任务
@@ -9999,9 +9963,9 @@ interface ICFVarInfo extends ICFVarDetail, ICFVarRaw, ICFVarPart {
9999
9963
  */
10000
9964
  readonly optionFilter?: ICFVarPart;
10001
9965
  /**
10002
- * 关联循环节点的id
9966
+ * 循环仰视变量关联循环节点的id
10003
9967
  */
10004
- readonly loopNodeId?: string;
9968
+ readonly lookupLoopNodeId?: string;
10005
9969
  /**
10006
9970
  * 用于变量映射表中匹配变量的映射id,一般有uuid,limit,limitSrc,limitRnd拼接而成
10007
9971
  */
@@ -10010,6 +9974,20 @@ interface ICFVarInfo extends ICFVarDetail, ICFVarRaw, ICFVarPart {
10010
9974
  readonly inEdist?: boolean;
10011
9975
  }
10012
9976
 
9977
+ /**
9978
+ * 内部循环轮次,仅靠```ICFLoopVar```不能找到真正的循环圈。
9979
+ * 所以需要记忆它所属的外部轮次ID
9980
+ */
9981
+ interface ICFInnerLoopVar {
9982
+ /**
9983
+ * 外部轮次Id
9984
+ */
9985
+ readonly outerRoundId: string;
9986
+ /**
9987
+ * 关联轮次
9988
+ */
9989
+ round: ICFLoopVar
9990
+ }
10013
9991
  /**
10014
9992
  * @ignore
10015
9993
  */
@@ -10221,6 +10199,24 @@ interface IRawVarIdentity {
10221
10199
  * 选项数据分部id
10222
10200
  */
10223
10201
  readonly optPartId: string;
10202
+ /**
10203
+ * 关联循环节点后8位id
10204
+ */
10205
+ readonly loopNodeId?: string;
10206
+ /**
10207
+ * 关联的第几轮循环
10208
+ * 如果是`LOOP_ALL_ROUND`,则是所有次循环
10209
+ * 如果是某个循环选项的8位短id,则是该循环选项的这次循环
10210
+ */
10211
+ readonly loopRoundId?: VAR_CONST.LOOP_ALL_ROUND | string;
10212
+ /**
10213
+ * 同上,但针对内层循环
10214
+ */
10215
+ readonly innerLoopNodeId?: string;
10216
+ /**
10217
+ * 同上,但针对内层循环
10218
+ */
10219
+ readonly innerLoopRoundId?: VAR_CONST.LOOP_ALL_ROUND | string;
10224
10220
  }
10225
10221
 
10226
10222
 
@@ -10381,7 +10377,7 @@ interface CFVarStyleGroup {
10381
10377
  */
10382
10378
  readonly reqJson: CFVarStyle;
10383
10379
  /**
10384
- * 循环变量,对应var-loop
10380
+ * 循环仰视变量,对应var-loop
10385
10381
  */
10386
10382
  readonly loopJson: CFVarStyle;
10387
10383
  }