@choiceform/os-client-core 3.0.0 → 3.1.1

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
@@ -196,16 +196,6 @@ interface CFEnvUi {
196
196
  * @param styleGroup 样式信息:JSON形式
197
197
  */
198
198
  setVarStyle?(style: string, styleGroup: CFVarStyleGroup): void;
199
- /**
200
- * 获取某个url地址的图片的高宽信息的方法,有些答题端需要对图片进行布局控制,
201
- * 需要事先知道图片的尺寸,核心在生成图片对象的时候会尝试调用这个方法添加尺寸信息。
202
- * 无此需要的终端可以不配置这个方法。
203
- * 如果不配置则使用默认值:无论什么图片都返回固定大小100*100
204
- * @deprecated 这个方法目前只有老UI在使用,只为兼容性暂时保留,不要使用,后续将移除,
205
- * 这个信息应该由UI自主获取并使用,无需核心包插手
206
- * @param url 图片地址
207
- */
208
- getImageSize?(url: string): Promise<CFImageSize>;
209
199
  /**
210
200
  * 初始化一个节点动态模板的方法,该方法去动态获取设计端指定的自定义组件模板来渲染节点。
211
201
  * 只有实现了动态模板机制的答题端需要配置这个方法
@@ -265,10 +255,22 @@ interface CFApiReqResult {
265
255
  readonly response: string | object;
266
256
  }
267
257
 
258
+
259
+ interface CFUploadBaseConfig {
260
+ /**
261
+ * 关联的节点id
262
+ */
263
+ readonly nodeId: string;
264
+ /**
265
+ * 关联的选项id
266
+ */
267
+ readonly optionId: string;
268
+ }
269
+
268
270
  /**
269
271
  * 图片上传参数
270
272
  */
271
- interface CFUploadConfig {
273
+ interface CFUploadConfig extends CFUploadBaseConfig {
272
274
  /**
273
275
  * 上传进度回调方法
274
276
  * @param e 进度
@@ -284,6 +286,11 @@ interface CFUploadConfig {
284
286
  * 环境配置:网络连接与资源加载
285
287
  */
286
288
  interface CFEnvNetWork {
289
+ /**
290
+ * 移除上传文件时的处理
291
+ * @param config 配置信息
292
+ */
293
+ removeUpload(config: CFUploadBaseConfig): Promise<void>;
287
294
  /**
288
295
  * 上传文件的方法,答题端的上传题需要上传文件,在不同的平台上上传机制不同
289
296
  * 需要独立实现这个方法将文件正确上传到服务器
@@ -390,21 +397,42 @@ interface CFEnvAuth {
390
397
  */
391
398
  interface CFEnvStorage {
392
399
  /**
393
- * 写缓存方法
400
+ * 同步写缓存方法
394
401
  * @param key
395
402
  * @param value
396
403
  */
397
404
  set(key: string, value: string): void;
405
+ /**
406
+ * 写缓存方法(至关重要的)
407
+ * 在离线模式下,有些重要的缓存数据不能写在内嵌的浏览器中,而是要传给App宿主帮写,
408
+ * 这种场合下的缓存读写就需要用到这个方法而不是set方法,为确保通信操作完成,会变成异步的。
409
+ * 如果不是离线模式的时候,会自动退化到使用set方法。
410
+ * @param key
411
+ * @param value
412
+ */
413
+ setVital(key: string, value: string): Promise<void>;
398
414
  /**
399
415
  * 读缓存方法
400
416
  * @param key
401
417
  */
402
418
  get(key: string): string;
419
+ /**
420
+ * 写缓存方法(至关重要的)
421
+ * 说明同上
422
+ * @param key
423
+ */
424
+ getVital(key: string): Promise<string>;
403
425
  /**
404
426
  * 移除缓存方法
405
427
  * @param key
406
428
  */
407
429
  remove(key: string): void;
430
+ /**
431
+ * 移除缓存方法(至关重要的)
432
+ * 说明同上
433
+ * @param key
434
+ */
435
+ removeVital(key: string): Promise<void>;
408
436
  }
409
437
 
410
438
  /**
@@ -455,6 +483,27 @@ interface CFEnvHook {
455
483
  * @param title 标题内容
456
484
  */
457
485
  onTitleChange?(title: string): void;
486
+ /**
487
+ * 开始一个新回复时的回调,
488
+ * 非断点续答询问后选择断点续答或重新开始的时候不算做这种情况之内
489
+ * @param state
490
+ */
491
+ onStartNewSurvey?(state: CFSurveyState): Promise<void>;
492
+ /**
493
+ * 断点续答询问后后选择重新开始时的回调
494
+ * @param state
495
+ */
496
+ onRestartSurvey?(state: CFSurveyState): Promise<void>;
497
+ /**
498
+ * 断点续答询问后选择续答时的回调
499
+ * @param state
500
+ */
501
+ onResumeSurvey?(state: CFSurveyState): Promise<void>;
502
+ /**
503
+ * 当一个回复完成走到结束节点时的回调,此时数据已经提交了。
504
+ * @param state
505
+ */
506
+ onEndSurvey?(state: CFSurveyState): Promise<void>;
458
507
  }
459
508
 
460
509
  /**
@@ -562,17 +611,6 @@ interface CFHostConfig {
562
611
  readonly qStaticHost?: string;
563
612
  }
564
613
 
565
- /**
566
- * 属性设置方法,将fromObj身上的的属性值设置到toObj身上(同Object.assign方法)
567
- * 并可以做一些附加的操作
568
- */
569
- type CFPropSetFn =
570
- /**
571
- * @param toObj 接受设置属性的对象
572
- * @param fromObj 提供设置属性的对象
573
- */
574
- <T>(toObj: T, fromObj: Partial<T>) => void;
575
-
576
614
  /**
577
615
  * 客户端初始化配置信息
578
616
  */
@@ -598,31 +636,6 @@ interface CFSetupOptions {
598
636
  *
599
637
  */
600
638
  clientName?: string; // anti-readonly
601
- /**
602
- * @deprecated 该属性仅为兼容老版UI中使用的emberjs的setProperties暂时保留,即将移除,不要使用这个属性
603
- *
604
- * 该属性已废除,请使用最新标准:使用[[CFEventHub]]来监听`SET_PROPS`来监听变化重新更新UI
605
- * 属性设置辅助方法
606
- * 由于UI中绑定了核心提供的数据结构的某些值,UI中进行操作后回调了核心提供的回调函数
607
- * 核心中的逻辑会更改数据结构中的这些值,核心逻辑中默认是直接更改这些值的。
608
- * 这样的话,大部分框架的UI模板引擎是无法觉察到这个更改的,从而UI上的内容不会正常更新。
609
- * 这时候可以通过设置该方法来使得模板引擎觉察到内容的更改达到更新页面的目的。
610
- *
611
- * 举例:UI中渲染选项时背景颜色绑定了[[CFOption.selected]]属性,
612
- * 选中的选项(option.selected为true)渲染成红色,
613
- * 未选中的选项(option.selected为false)渲染成灰色,
614
- * 现在某个选项初始时是未选中的,根据绑定规则,渲染成了灰色,现在点击该选项,会回调核心
615
- * 逻辑中提供的选项点击回调函数,在该函数中会将option.selected改为true,
616
- * 但是UI模板并不知道这个属性发生了变化,所以依然渲染成了灰色,这时就需要用的这个配置方法。
617
- * 如使用emberjs的时候我们将该方法配置为EmberObject的setProperties方法,如果不配置则
618
- * UI不会得到更新.
619
- * ```typescript
620
- * import {setProperties} from '@ember/object';
621
- * options.setter = setProperties
622
- * ```
623
- * 默认行为:只更新数据,不做其他任何行为。
624
- */
625
- setter?: CFPropSetFn; // anti-readonly
626
639
  /**
627
640
  * 指定该客户端是不是动态加载模板的
628
641
  * 对支持动态加载的客户端,核心会尝试去动态模板服务器上加载动态的模板。
@@ -640,12 +653,12 @@ interface CFSetupOptions {
640
653
  */
641
654
  templatePath?: string; // anti-readonly
642
655
  /**
643
- * 模板树所在地址
656
+ * 模板树所在地址,如果指定一定要指定根目录开始的绝对路径。
644
657
  * 如果是动态加载的,则一定要准备好该属性
645
658
  * 核心会去获取这个文件来了解动态模板的依赖情况,
646
659
  * 如果dynamic属性指定为true,而不提供这个路径,初始化时会报错。
647
660
  * 当前只有web版客户端有可能支持动态模板功能,小程序和本地应用不支持该功能,所以无需配置。
648
- * 默认:空字符串
661
+ * 默认:/tree.json
649
662
  */
650
663
  treeUrl?: string; // anti-readonly
651
664
  /**
@@ -711,30 +724,29 @@ interface CFSetupOptions {
711
724
  /**
712
725
  * 如果觉得核心包中逻辑相关的提示文字多语言翻译不满足你的要求,或者支持的语言不够多
713
726
  * 你可以配置该属性指定使用自己准备的翻译文本,这个配置的每个属性的属性名是语言代号,
714
- * 其属性值是该语言翻译文本(json格式)所在的网络地址
715
- * 比如,核心模块当前仅提供了中文(zh_cn)和英文(en_us)的多语言文本
727
+ * 其属性值是该语言翻译文本对象
728
+ * 比如,核心模块当前仅提供了中文(zh_cn)和英文(en_us)的多语言
716
729
  * 现在你对核心模块的中文翻译是满意的但是对核心模块的英文的翻译内容不满意,
717
730
  * 这样你就可以配置该属性如下内容
718
731
  *
719
- * (我们假设你将多语言文本放到了下面这个网址中)
720
732
  * ```
721
733
  * {
722
- * "en_us": 'https://yousite.com/your-os-client/es_us.json'
734
+ * en_us: {...}
723
735
  * }
724
736
  * ```
725
- * 以上配置会覆盖掉默认的英文翻译,当进行英文翻译时,会只用你提供的这本json作为翻译依据,
737
+ * 以上配置会覆盖掉默认的英文翻译,当进行英文翻译时,会只用你提供的这个对象作为翻译依据,
726
738
  * 核心模块提供的英文翻译会被丢弃
727
739
  *
728
740
  * 如果在此基础上,同时你希望有日文版的多语言翻译,这时你可以添加配置日文翻译文本
729
741
  * ```
730
742
  * {
731
- * "en_us": 'https://yousite.com/your-os-client/es_us.json'
732
- * "ja_jp": 'https://yousite.com/your-os-client/ja_jp.json'
743
+ * en_us: {...}
744
+ * ja_jp: {...}
733
745
  * }
734
746
  * ```
735
747
  * 以上的配置覆盖了英文翻译,同时新增了日文翻译。
736
748
  *
737
- * 每本json要准备的数据格式在[[LANG_ZH_CN]]和[[LANG_EN_US]]中做出了示范.
749
+ * 每个json对象要准备的数据格式在[[LANG_ZH_CN]]中做出了示范.
738
750
  *
739
751
  * 各种语言的代号可参照[百科全书](https://en.wikipedia.org/wiki/Language_localisation)
740
752
  *
@@ -742,7 +754,7 @@ interface CFSetupOptions {
742
754
  *
743
755
  * 默认值:空
744
756
  */
745
- langSrcMap?: { [key: string]: string }; // anti-readonly
757
+ langSrcMap?: { [key: string]: any }; // anti-readonly
746
758
 
747
759
  /**
748
760
  * 设置该方法来监听核心包的多语言变化,当核心包多语言切换时,会调用该方法
@@ -872,21 +884,20 @@ interface CFUtil {
872
884
  * @param text 富文本
873
885
  */
874
886
  richTextToNodes(text: string): CFRichTextNode[];
875
- /**
876
- * 获取答题任务的信息,包含最新的结果,进度信息
877
- *
878
- * 一般只有离线APP才用到该方法。
879
- *
880
- * 如果最后要以这个方法的结果进行提交,请确保总是在下一题点击动作处理完成以后
881
- * 再调用该方法,才能获取到最新的结果。
882
- */
883
- getTaskInfo(): Promise<CFTaskInfo>;
884
887
  }
885
888
 
886
889
  /**
887
890
  * 核心对象
888
891
  */
889
892
  interface CFCore extends CFSetupOptions {
893
+ /**
894
+ * 发布的版本号
895
+ */
896
+ readonly releaseVersion: string;
897
+ /**
898
+ * 发布日期
899
+ */
900
+ readonly releaseDate: string;
890
901
  /**
891
902
  * 主题是否已经更新为何服务器上的一致,还未更新好时,APP页面渲染但是不要显示,可以控制透明度或display。
892
903
  * 等稍后改属性准备好后再显示出来。
@@ -972,7 +983,7 @@ interface CFCore extends CFSetupOptions {
972
983
  * 1. 会强制开启断点续答
973
984
  * 2. 则缓存的数据会使用任务id+问卷id的方式分区
974
985
  * 否则缓存的数据只按问卷id分区
975
- * 3. 答题期间可以调用[[CFCore.util]]的[[CFUtil.getTaskInfo]]方法获取最新的结果
986
+ * 3. 答题期间每答完一题会往离线服务器发送最新的数
976
987
  *
977
988
  * 预览模式下总是为空
978
989
  *
@@ -982,10 +993,6 @@ interface CFCore extends CFSetupOptions {
982
993
  * 是否为实时预览
983
994
  */
984
995
  readonly realTimePreview: boolean;
985
- /**
986
- * 是否为轻量版模板预览
987
- */
988
- readonly liteTemplate: boolean;
989
996
  /**
990
997
  * 提示消息是否已挂起,挂起后不会发出提示消息
991
998
  */
@@ -1014,21 +1021,8 @@ interface CFCore extends CFSetupOptions {
1014
1021
  * 获取首页数据的方法
1015
1022
  * 多次调用,只有第一次会发送请求
1016
1023
  * 请求的数据会放到缓存中,后面几次获得的都是返回的缓存数据
1017
- * @param offlineTaskId 离线任务唯一id,默认无需指定,只有离线应用需要制定,如果指定了则:
1018
- * 1. 会强制开启断点续答模式
1019
- * 2. 数据缓存将以任务id区分存储块
1020
- * 3. 答题期间可以调用[[CFCore.util]]的[[CFUtil.getTaskInfo]]方法获取最新的结果
1021
- *
1022
- * 目前只有离线引用需要指定这个id
1023
- *
1024
- * 预览模式下会无视该参数
1025
- *
1026
- * 指定路由切换方法,核心包中某些时候需要跳转路由,就会调用这个方法.
1027
- * 因为核心只知道要跳向哪个路由,而不知道怎么跳过去.
1028
- * 跳过去的方法只有UI层才知道(使用框架的路由跳转结构)
1029
- * 所以需要UI层指定这个方法.
1030
1024
  */
1031
- fetchStartState(offlineTaskId?: string): Promise<CFStartState>;
1025
+ fetchStartState(): Promise<CFStartState>;
1032
1026
  /**
1033
1027
  * 获取答题也数据的方法
1034
1028
  * 多次调用,只有第一次会发送请求
@@ -1593,10 +1587,6 @@ declare const enum EVENT_NAME {
1593
1587
  * 数据发生变更
1594
1588
  */
1595
1589
  SET_PROPS = 'SET_PROPS',
1596
- /**
1597
- * 更新UI事件,跟新UI一般监听SET_PROPS后驱动更新即可,但是RN中有问题,所以RN中使用UPDATE_UI
1598
- */
1599
- UPDATE_UI = 'UPDATE_UI',
1600
1590
  /**
1601
1591
  * 切换节点
1602
1592
  */
@@ -2144,37 +2134,6 @@ declare const enum OPTION_TYPE {
2144
2134
  OPTION_COMMENT = 'option_comment',
2145
2135
  }
2146
2136
 
2147
- /**
2148
- * 问题渲染类型集合,下面说明每个类型字符代表的题型
2149
- * @deprecated 即将移除,仅为老UI暂时存在
2150
- */
2151
- declare const enum QUES_TYPE {
2152
- CHOICE = 'choice',
2153
- REGION = 'region',
2154
- INTRO_PAGE = 'intro-page',
2155
- END_PAGE = 'end-page',
2156
- SHORT_TEXT = 'short-text',
2157
- REWARD = 'reward',
2158
- ICON = 'icon',
2159
- LOCATION = 'location',
2160
- LOTTERY = 'lottery',
2161
- RATING = 'rating',
2162
- RANGE = 'range',
2163
- MATRIX = 'matrix',
2164
- DROPDOWN = 'dropdown',
2165
- PICTURE_CHOICE = 'picture-choice',
2166
- RANKING = 'ranking',
2167
- FILE_UPLOAD = 'file-upload',
2168
- VERIFICATION = 'verification',
2169
- WEIGHT = 'weight',
2170
- CASCADE = 'cascade',
2171
- HOT_SPOT = 'hot-spot',
2172
- HEAT_MAP = 'heat-map',
2173
- SLIDE_RATE = 'slide-rate',
2174
- MAX_DIFF = 'max-diff',
2175
- NO_VIEW = 'no-view',
2176
- }
2177
-
2178
2137
  /**
2179
2138
  * 变量解析文字是的图片保留模式
2180
2139
  */
@@ -2290,73 +2249,6 @@ declare const enum RESPONSE_STATUS {
2290
2249
  TEST = 'test',
2291
2250
  }
2292
2251
 
2293
- /**
2294
- * 输入内容控制类型枚举
2295
- * @deprecated 不要使用,即将移除,仅为老UI暂时存在
2296
- */
2297
- declare const enum INPUT_RULE {
2298
- /**
2299
- * 字符数量控制
2300
- */
2301
- COUNT = 'count',
2302
- /**
2303
- * 日期
2304
- */
2305
- DATE = 'date',
2306
- /**
2307
- * 日期范围
2308
- */
2309
- DATE_RANGE = 'dateRange',
2310
- /**
2311
- * 邮箱
2312
- */
2313
- EMAIL = 'email',
2314
- /**
2315
- * 小数
2316
- */
2317
- FLOAT = 'float',
2318
- /**
2319
- * 整数
2320
- */
2321
- INT = 'int',
2322
- /**
2323
- * 时间
2324
- */
2325
- TIME = 'time',
2326
- /**
2327
- * 手机号码
2328
- */
2329
- MOBILE = 'mobile',
2330
- /**
2331
- * 邮编
2332
- */
2333
- POSTCODE = 'postCode',
2334
- /**
2335
- * 时间范围
2336
- */
2337
- TIME_RANGE = 'timeRange',
2338
- /**
2339
- * 时间间隔
2340
- */
2341
- TIME_SPAN = 'timeSpan',
2342
- /**
2343
- * 网址
2344
- */
2345
- LINK = 'link',
2346
- /**
2347
- * 自动提示填充内容
2348
- */
2349
- AUTO_COMPLETE = 'autoComplete',
2350
- /**
2351
- * 下拉列表选择内容
2352
- */
2353
- DROPDOWN = 'dropdown',
2354
- /**
2355
- * 不要求
2356
- */
2357
- NO_VALIDATION = 'noValidation',
2358
- }
2359
-
2360
2252
  /**
2361
2253
  * 选项输入与验证类型
2362
2254
  */
@@ -2825,7 +2717,7 @@ interface ICFOptDisplayInfo {
2825
2717
  readonly option_ids: string[];
2826
2718
  }
2827
2719
 
2828
- type IOptionValue = number | string | ICoords | CFMaxDiffRecord[];
2720
+ type IOptionAnswerValue = number | string | ICoords | CFMaxDiffRecord[];
2829
2721
 
2830
2722
  /**
2831
2723
  * 一般与选项一一对应答案项数据结构
@@ -2835,7 +2727,7 @@ interface ICFAnswerItem {
2835
2727
  /**
2836
2728
  * 输入值
2837
2729
  */
2838
- readonly value: IOptionValue;
2730
+ readonly value: IOptionAnswerValue;
2839
2731
  /**
2840
2732
  * 是否为其他选项
2841
2733
  */
@@ -3146,12 +3038,12 @@ interface CFI18n {
3146
3038
  /**
3147
3039
  * 获取多语言资源配置
3148
3040
  */
3149
- getLangSrcMap(): SignStrStr;
3041
+ getLangSrcMap(): SignStrAny;
3150
3042
  /**
3151
3043
  * 合并多言翻译资源配置
3152
3044
  * @ignore
3153
3045
  */
3154
- mergeLangSrcMap(map: SignStrStr): void;
3046
+ mergeLangSrcMap(map: SignStrAny): void;
3155
3047
  /**
3156
3048
  * messageformat类型,参考https://github.com/messageformat/messageformat
3157
3049
  * 这是核心包中使用的多语言翻译工具
@@ -3238,56 +3130,31 @@ interface CFClient {
3238
3130
  * 2. web核心包:`@choiceform/os-client-core/dist/web-core`, 自带了web端运行环境配置,方便web端直接使用
3239
3131
  * 携带了ts类型包。
3240
3132
  *
3241
- * 古董版纯核心包,经babel处理过能支持到ie10
3133
+ * 纯核心包
3242
3134
  */
3243
3135
  declare module '@choiceform/os-client-core' {
3244
3136
  const CFClient: CFClient;
3245
3137
  export = CFClient;
3246
3138
  }
3247
- /**
3248
- * 现代版纯核心包,未经过babel处理
3249
- */
3250
- declare module '@choiceform/os-client-core/dist/modern/core' {
3251
- const CFClient: CFClient;
3252
- export = CFClient;
3253
- }
3254
3139
 
3255
3140
  /**
3256
3141
  * 自带了web端运行环境配置web核心包
3257
- * 古董版web核心包,经babel处理过能支持到ie10
3142
+ * web核心包
3258
3143
  */
3259
3144
  declare module '@choiceform/os-client-core/dist/web-core' {
3260
3145
  const CFClient: CFClient;
3261
3146
  export = CFClient;
3262
3147
  }
3263
3148
 
3264
- /**
3265
- * 自带了web端运行环境配置web核心包
3266
- * 现代版web核心包,未经babel处理
3267
- */
3268
- declare module '@choiceform/os-client-core/dist/modern/web-core' {
3269
- const CFClient: CFClient;
3270
- export = CFClient;
3271
- }
3272
3149
 
3273
3150
  /**
3274
3151
  * 分离的辅助包:填空自动提示查询功能包
3275
- * 古董版,经babel处理过能支持到ie10
3276
3152
  */
3277
3153
  declare module '@choiceform/os-client-core/dist/support/atcp' {
3278
3154
  const CFAtcp: CFAtcp;
3279
3155
  export = CFAtcp;
3280
3156
  }
3281
3157
 
3282
- /**
3283
- * 分离的辅助包:填空自动提示查询功能包
3284
- * 古董版,经babel处理过能支持到ie10
3285
- */
3286
- declare module '@choiceform/os-client-core/dist/modern/support/atcp' {
3287
- const CFAtcp: CFAtcp;
3288
- export = CFAtcp;
3289
- }
3290
-
3291
3158
  //#endregion
3292
3159
 
3293
3160
 
@@ -3601,14 +3468,6 @@ interface ICFNode {
3601
3468
  * 强制自动跳过的原因
3602
3469
  */
3603
3470
  readonly forceSkipReason?: SKIP_REASON;
3604
- /**
3605
- * 仅在预览时显示
3606
- * 替身节点题目是在正式答题的时候不要显示的题目
3607
- * 但是如果该属性为true,则在预览的时候仍然要显示,但是不可以被更改.
3608
- * @deprecated 不要使用,仅老UI使用,不久后将废除,新UI转为使用readonly属性
3609
- * @ignore
3610
- */
3611
- readonly shadowNodes: boolean;
3612
3471
  /**
3613
3472
  * 该题目只需要显示,不能更改答案
3614
3473
  * UI上要禁用用户操作
@@ -3767,7 +3626,7 @@ interface ICFOutputNodeMixin extends ICFNode {
3767
3626
  * 主输入输出类型节点
3768
3627
  * @ignore
3769
3628
  */
3770
- interface ICFInOutNodeMixin extends ICFInputNodeMixin, ICFOutputNodeMixin {}
3629
+ interface ICFInOutNodeMixin extends ICFInputNodeMixin, ICFOutputNodeMixin { }
3771
3630
 
3772
3631
  /**
3773
3632
  * 选项类型节点掺元
@@ -3867,9 +3726,9 @@ interface ICFValidationNodeMixin extends ICFNode {
3867
3726
  */
3868
3727
  interface ICFSubjectNode
3869
3728
  extends ICFInOutNodeMixin,
3870
- ICFOptNodeMixin,
3871
- CFMediaNodeMixin,
3872
- ICFValidationNodeMixin {
3729
+ ICFOptNodeMixin,
3730
+ CFMediaNodeMixin,
3731
+ ICFValidationNodeMixin {
3873
3732
  /**
3874
3733
  * 是否为必答题
3875
3734
  * @ignore
@@ -4089,7 +3948,7 @@ interface ICFHeatMapNode extends ICFSubjectNode, ICFImageMapBase {
4089
3948
  * 填空节点
4090
3949
  * @ignore
4091
3950
  */
4092
- interface ICFFillNode extends ICFSubjectNode, ICFFillNodeMixin {}
3951
+ interface ICFFillNode extends ICFSubjectNode, ICFFillNodeMixin { }
4093
3952
 
4094
3953
  /**
4095
3954
  * 级联节点
@@ -4175,11 +4034,6 @@ interface ICFMenuNode extends ICFSubjectNode, ICFMultiSelectNodeMixin {
4175
4034
  * UI需要渲染,选中后的值
4176
4035
  */
4177
4036
  readonly value: string;
4178
- /**
4179
- * 展示图标
4180
- * @deprecated 仅兼容老UI使用,后续会移除,新UI不要使用
4181
- */
4182
- readonly icon: string;
4183
4037
  }
4184
4038
 
4185
4039
  /**
@@ -4187,32 +4041,40 @@ interface ICFMenuNode extends ICFSubjectNode, ICFMultiSelectNodeMixin {
4187
4041
  * typescript会进行类型合并,这样在UI端就可以自己随意往其中塞数据,
4188
4042
  * 并且可以获得类型辨析功能
4189
4043
  */
4190
- interface IRateItemCustomData {}
4044
+ interface IRateItemCustomData { }
4191
4045
 
4192
4046
  /**
4193
- * 评分项标准
4047
+ * 拥有自定义图标的对象规范
4194
4048
  */
4195
- interface CFRateItem {
4049
+ interface CFCustomIconOwner {
4196
4050
  /**
4197
- * 由于UI端不可以更改任何核心包提供的数据
4198
- * 但是有时候可能需要放一些自定的数据在评分项上
4199
- * 这个属性就是专门给UI端放置自定义数据的地方
4200
- * 默认为一个空对象
4051
+ * 自定义图标原始对象
4201
4052
  */
4202
- customData: IRateItemCustomData; // anti-readonly
4053
+ readonly icon: ICFNodeIcon;
4203
4054
  /**
4204
- * 图标地址
4055
+ * 解析后的未激活或未选中时的图标地址
4205
4056
  */
4206
- readonly url: string;
4057
+ readonly normalIconUrl: string;
4207
4058
  /**
4208
- * 激活时的图标地址
4059
+ * 解析后的被激活或者被选中时的图标url
4060
+ * 未激活或者未选中时展示[[CFCustomIconOwner.normalIconUrl]]
4061
+ *
4062
+ * 激活或者选中时选中时展示[[CFCustomIconOwner.activeIconUrl]]
4209
4063
  */
4210
- readonly urlActive: string;
4064
+ readonly activeIconUrl: string;
4065
+ }
4066
+
4067
+ /**
4068
+ * 评分项标准
4069
+ */
4070
+ interface CFRateItem extends CFCustomIconOwner {
4211
4071
  /**
4212
- * 展示的图标
4213
- * @ignore
4072
+ * 由于UI端不可以更改任何核心包提供的数据
4073
+ * 但是有时候可能需要放一些自定的数据在评分项上
4074
+ * 这个属性就是专门给UI端放置自定义数据的地方
4075
+ * 默认为一个空对象
4214
4076
  */
4215
- readonly icon: ICFNodeIcon;
4077
+ customData: IRateItemCustomData; // anti-readonly
4216
4078
  /**
4217
4079
  * 展示的文本
4218
4080
  */
@@ -4619,11 +4481,6 @@ interface CFNodeLayout extends CFThemeBase {
4619
4481
  * 选项标记与展示方式
4620
4482
  */
4621
4483
  readonly optMark: OPT_MARK;
4622
- /**
4623
- * 选项标记与展示方式
4624
- * @deprecated 为老UI准备的别名,不要使用
4625
- */
4626
- readonly optMarkOld: string;
4627
4484
  /**
4628
4485
  * 选项数值方式对齐规则
4629
4486
  */
@@ -4778,7 +4635,7 @@ interface ICFAutoInputConfig {
4778
4635
  /**
4779
4636
  * 验证选项数据
4780
4637
  */
4781
- interface ICFValidateOptBase {
4638
+ interface CFValidateOptBase {
4782
4639
  /**
4783
4640
  * 日期级别
4784
4641
  * 1: 年
@@ -4834,7 +4691,7 @@ interface ICFValidateOptBase {
4834
4691
  readonly timeGrade?: number;
4835
4692
  /**
4836
4693
  * 供以选择的文字列表
4837
- * 当[[CFOption.inputRule]]是`dropdown`需要提供一个下拉列表选择空间
4694
+ * 当[[CFValidateOptBase.fillType]]是`list_select`需要提供一个下拉列表选择空间
4838
4695
  * 空间中药展示的项目列表文字,就使用该属性的文字列表
4839
4696
  * 当选中某一个项时,就将该项的文字当做输入内容
4840
4697
  * 可以选择多项,每项之间用半角逗号分隔.
@@ -4859,7 +4716,7 @@ interface ICFValidateOptBase {
4859
4716
  readonly simpleCplt?: boolean;
4860
4717
  /**
4861
4718
  * 自动提示数据
4862
- * 当[[CFOption.inputRule]]是`autoComplete`需要提供一个自动提示输入控件
4719
+ * 当[[CFValidateOptBase.fillType]]是`auto_complete`需要提供一个自动提示输入控件
4863
4720
  * 该控件在输入任何字符内容时,这些字符并不是答案,而是搜索字符
4864
4721
  * 需要使用从@choiceform/os-client-core/dist/support/atcp中提供的[[CFAtcp.getAutoCompleteData]]方法
4865
4722
  * 来搜索能匹配的提示项目,然后这些项目的name和icon属性显示为一个个标签到一个自动提示列表中供用户选择
@@ -4903,7 +4760,7 @@ interface ICFValidateOptBase {
4903
4760
  /**
4904
4761
  * 验证选项类型
4905
4762
  */
4906
- interface CFValidateOpt extends CFOption, ICFValidateOptBase {}
4763
+ interface CFValidateOpt extends CFOption, CFValidateOptBase { }
4907
4764
 
4908
4765
  /**
4909
4766
  * 级联信息
@@ -4965,7 +4822,7 @@ interface CFCascade {
4965
4822
  * typescript会进行类型合并,这样在UI端就可以自己随意往其中塞数据,
4966
4823
  * 并且可以获得类型辨析功能
4967
4824
  */
4968
- interface IOptionCustomData {}
4825
+ interface IOptionCustomData { }
4969
4826
 
4970
4827
  /**
4971
4828
  * 通用选项类
@@ -4988,11 +4845,6 @@ interface CFOption extends ICFPort {
4988
4845
  * 辅助输入数据
4989
4846
  */
4990
4847
  readonly assistValue: CFAssistProps;
4991
- /**
4992
- * 图标,代表不同选项的形象的图标,UI中可照此渲染
4993
- * @deprecated 仅为了兼容老UI暂时保留,新UI不要使用,在新的规则中,新UI可以自己判断情况,自由渲染
4994
- */
4995
- readonly icon: string;
4996
4848
  /**
4997
4849
  * @ignore
4998
4850
  */
@@ -5089,42 +4941,6 @@ interface CFOption extends ICFPort {
5089
4941
  * @ignore
5090
4942
  */
5091
4943
  readonly optComment: string;
5092
- /**
5093
- * @deprecated 不要使用,仅为老UI暂时保留,后续会移除, 新UI改用[[ICFValidateOptBase.fillType]]
5094
- * 填空选项的输入规则,有些输入方式需要提供输入控件支持
5095
- * 有些则只需要提供普通输入框
5096
- * 所有方式都可以根据类型显示对应的提示(图标?,文字? UI自己决定)
5097
- * 参照[[INPUT_RULE]],有以下几中方式:
5098
- *
5099
- * + 输入字符,UI提供普通的输入框即可
5100
- *
5101
- * + 输入日期,UI需要提供日期输入控件
5102
- *
5103
- * + 输入日期范围,UI需要提供日期输入范围控件
5104
- *
5105
- * + 输入邮箱地址,UI提供普通输入框即可
5106
- *
5107
- * + 输入小数,UI需要提供数值输入控件
5108
- *
5109
- * + 输入整数,UI需要提供数值输入控件,且仅允许输入整数
5110
- *
5111
- * + 输入手机号码,UI仅需提供普通输入框
5112
- *
5113
- * + 输入邮政编码,UI仅需提供普通输入框
5114
- *
5115
- * + 输入时间范围,UI需要提供输入时间范围的控件
5116
- *
5117
- * + 输入时间间隔,UI需要提供输入时间间隔的控件
5118
- *
5119
- * + 输入网址,UI提供普通输入框即可
5120
- *
5121
- * + 自动提示输入模式,UI需要提供自动提示输入控件,提示内容参照[[ICFValidateOptBase.completeGroups]]
5122
- *
5123
- * + 下拉列表方式输入,UI需要提供一个下拉列表选择空间,列表中要展示的项目参照[[ICFValidateOptBase.selectList]]
5124
- *
5125
- * + 无要求,UI提供简单的输入框即可
5126
- */
5127
- readonly inputRule: INPUT_RULE;
5128
4944
 
5129
4945
  /**
5130
4946
  * @ignore
@@ -5194,19 +5010,8 @@ interface CFOption extends ICFPort {
5194
5010
  /**
5195
5011
  * 图标题选项
5196
5012
  */
5197
- interface CFIconOption extends CFOption {
5198
- /**
5199
- * 选项未被选中时的图标url
5200
- */
5201
- readonly icon: string;
5202
- /**
5203
- * 选项被选中时的图标url
5204
- * 图标题选项的在选中和未选中时展示的图标不同
5205
- * 未选中是展示[[CFIconOption.icon]]
5206
- *
5207
- * 选中时展示[[CFIconOption.iconActive]]
5208
- */
5209
- readonly iconActive: string;
5013
+ interface CFSelectIconOption extends CFOption, CFCustomIconOwner {
5014
+
5210
5015
  }
5211
5016
 
5212
5017
  /**
@@ -5226,7 +5031,11 @@ interface CFIconMarkOption extends CFOption {
5226
5031
  /**
5227
5032
  * 图形数量
5228
5033
  */
5229
- readonly count: number;
5034
+ readonly iconCount: number;
5035
+ /**
5036
+ * 图形名称
5037
+ */
5038
+ readonly iconName: string;
5230
5039
  }
5231
5040
 
5232
5041
  /**
@@ -5262,7 +5071,7 @@ interface CFValueMarkOption extends CFOption {
5262
5071
  /**
5263
5072
  * 演示评价选项
5264
5073
  */
5265
- interface CFSlideRateOption extends CFOption, CFSelectImageOption {}
5074
+ interface CFSlideRateOption extends CFOption, CFSelectImageOption { }
5266
5075
 
5267
5076
  /**
5268
5077
  * 权重选项
@@ -5344,9 +5153,9 @@ interface CFSelectImageOption extends CFOption {
5344
5153
  */
5345
5154
  interface ICFUploadResult {
5346
5155
  /**
5347
- * 上传后的在服务器上的文件名
5156
+ * 上传后的在服务器上的文件路径
5348
5157
  */
5349
- readonly name: string;
5158
+ readonly filePath: string;
5350
5159
  /**
5351
5160
  * 上传后的文件内容
5352
5161
  * 如果是图片则是图片的base64内容
@@ -5578,7 +5387,7 @@ interface ICFOptionRefer {
5578
5387
  /**
5579
5388
  * @ignore
5580
5389
  */
5581
- interface ICFDataOption extends CFOption, CFIconOption, CFSelectImageOption {}
5390
+ interface ICFDataOption extends CFOption, CFSelectIconOption, CFSelectImageOption { }
5582
5391
 
5583
5392
 
5584
5393
  // -------------- types/outer/option/mapping.d.ts ---------------
@@ -5675,13 +5484,6 @@ interface CFQuestion extends ICFNode, ICFTypeInfo {
5675
5484
  * @ignore
5676
5485
  */
5677
5486
  readonly origin: ICFNode;
5678
- /**
5679
- * 自动提供好的题目渲染类型
5680
- * 你可以根据这个属性来决定渲染不同题目的模板
5681
- * 如choice的时候渲染选择题,short-text的时候渲染成填空题
5682
- * @deprecated 即将移除,仅为老UI暂时存在,不要使用
5683
- */
5684
- readonly quesType: QUES_TYPE;
5685
5487
  /**
5686
5488
  * 选择类型
5687
5489
  * 对于选择类型的题目有效,用于确定这是单选模式和多选模式
@@ -5876,14 +5678,14 @@ interface ICFMatrixResult {
5876
5678
  * 图标题
5877
5679
  * 渲染规则和选择题一样,参考[[CFSelectQuestion]]
5878
5680
  * 特殊点:
5879
- * 图标题的选项是[[CFIconOption]]类型,可能包含图标.
5880
- * 需要根据[[CFIconOption.icon]]和[[CFIconOption.iconActive]]渲染
5681
+ * 图标题的选项是[[CFSelectIconOption]]类型,可能包含图标.
5682
+ * 需要根据[[CFSelectIconOption.normalIconUrl]]和[[CFSelectIconOption.activeIconUrl]]渲染
5881
5683
  */
5882
5684
  interface CFSelectIconQuestion extends CFSubjectQuestion {
5883
5685
  /**
5884
5686
  * 图标选项列表
5885
5687
  */
5886
- readonly options: CFIconOption[];
5688
+ readonly options: CFSelectIconOption[];
5887
5689
  }
5888
5690
 
5889
5691
  /**
@@ -6126,7 +5928,7 @@ interface CFHeatMapQuestion extends ICFHeatMapNode, CFSubjectQuestion {
6126
5928
  * 基本内容请参考选择题[[CFSelectQuestion]]
6127
5929
  * 特殊点,填空题的普通选项,都是输入型的选项[[CFValidateOpt.inputType]]为`input`
6128
5930
  *
6129
- * 关注[[CFValidateOpt.inputRule]]的值,它定义了很多输入方式,在该属性上说明了每种方式应该渲染成什么样子
5931
+ * 关注[[CFValidateOpt.fillType]]的值,它定义了很多输入方式,在该属性上说明了每种方式应该渲染成什么样子
6130
5932
  *
6131
5933
  * 选项被输入后,需要调用[[CFUIEventHandler.handleOptionInput]]方法
6132
5934
  *
@@ -6563,7 +6365,7 @@ interface CFLotteryPage extends ICFLotteryNode, CFQuestion {
6563
6365
  *
6564
6366
  * 而是,渲染出[[CFRegionQuestion.regions]]中的省市县下拉列表,让答题者选择省市区.
6565
6367
  *
6566
- * 要考虑[[CFRegionQuestion.grade]]属性,它决定询问地区的级别,则只渲染到该级别的列表.
6368
+ * 要考虑[[CFRegionQuestion.infoRange]]属性,它决定询问地区的级别,则只渲染到该级别的列表.
6567
6369
  *
6568
6370
  * 答题者选择地区列表后,需要回调[[CFUIEventHandler.handleManualLocate]]方法
6569
6371
  */
@@ -6582,14 +6384,6 @@ interface CFRegionQuestion extends CFSubjectQuestion {
6582
6384
  * 地域列表,需要将这几层地域信息渲染成一个多层列表供答题者选择
6583
6385
  */
6584
6386
  readonly regions: CFRegionProvince[];
6585
- /**
6586
- * 手动定位时的省市区选择级数,用于决定下拉列表渲染到多少级.
6587
- * 1: 只收集省级信息
6588
- * 2: 收集省-市信息
6589
- * 3: 收集省-市-县信息
6590
- * @deprecated 不要使用,老UI兼容保留,新版使用infoRange
6591
- */
6592
- readonly grade: number;
6593
6387
  /**
6594
6388
  * 定位结果
6595
6389
  * @ignore
@@ -7377,11 +7171,6 @@ interface CFRealtimeState extends CFSurveyState, CFStartState {
7377
7171
  * 中奖时间,预览奖励页面时才存在
7378
7172
  */
7379
7173
  readonly rewardTime?: string;
7380
- /**
7381
- * @deprecated
7382
- * 兼容老数据专用,即将移除,新UI不要使用
7383
- */
7384
- readonly quesType: 'reward';
7385
7174
  }
7386
7175
 
7387
7176
 
@@ -7483,11 +7272,6 @@ interface ICFRewardInfo extends ICFGiftNode, ICFLotteryResult, ICFCustomLogo {
7483
7272
  * @ignore
7484
7273
  */
7485
7274
  readonly quesTitle: string;
7486
- /**
7487
- * 问题渲染类型
7488
- * @deprecated 兼容老UI而存在,后续会被移除,不要使用
7489
- */
7490
- readonly quesType: string;
7491
7275
  /**
7492
7276
  * 图片列表
7493
7277
  */
@@ -7580,17 +7364,6 @@ interface CFRewardState extends ICFRewardInfo, CFStateBase {
7580
7364
  * 同description
7581
7365
  */
7582
7366
  readonly summary: string;
7583
- /**
7584
- * 用于渲染的图标
7585
- * @deprecated 即将移除,新UI不要使用
7586
- */
7587
- readonly icon: string;
7588
- /**
7589
- * 节点类渲染类型
7590
- * 兼容老UI
7591
- * @deprecated 即将移除,新UI不要使用
7592
- */
7593
- readonly nodeType: 'reward';
7594
7367
  /**
7595
7368
  * 奖励时间
7596
7369
  */
@@ -8075,13 +7848,6 @@ interface CFSurveyState
8075
7848
  * 预览工具信息
8076
7849
  */
8077
7850
  readonly previewTool?: CFPreviewTool;
8078
- /**
8079
- * 答案断点续答工具
8080
- * answerResumer的别名
8081
- * @deprecated 即将移除,新UI不要使用, 该属性是老UI使用.新产品中请使用answerResumer
8082
- * @ignore
8083
- */
8084
- readonly memoryTool?: CFAnswerResumer;
8085
7851
  /**
8086
7852
  * 答案断点续答工具
8087
7853
  */
@@ -8865,89 +8631,44 @@ interface CFPreviewTimeInfo {
8865
8631
  */
8866
8632
  interface CFQueryParams {
8867
8633
  /**
8868
- * key1的别名
8869
- */
8870
- readonly key?: string;
8871
- /**
8872
- * 系统附加参数1
8873
- */
8874
- readonly key1?: string;
8875
- /**
8876
- * 系统附加参数2
8877
- */
8878
- readonly key2?: string;
8879
- /**
8880
- * 系统附加参数3
8881
- */
8882
- readonly key3?: string;
8883
- /**
8884
- * 系统附加参数4
8885
- */
8886
- readonly key4?: string;
8887
- /**
8888
- * 系统附加参数5
8889
- */
8890
- readonly key5?: string;
8891
- /**
8892
- * 系统附加参数6
8893
- */
8894
- readonly key6?: string;
8895
- /**
8896
- * 系统附加参数7
8897
- */
8898
- readonly key7?: string;
8899
- /**
8900
- * 系统附加参数8
8901
- */
8902
- readonly key8?: string;
8903
- /**
8904
- * 系统附加参数9
8905
- */
8906
- readonly key9?: string;
8907
- /**
8908
- * 系统附加参数10
8909
- */
8910
- readonly key10?: string;
8911
- /**
8912
- * 系统附加参数11
8913
- */
8914
- readonly key11?: string;
8915
- /**
8916
- * 系统附加参数12
8917
- */
8918
- readonly key12?: string;
8919
- /**
8920
- * 系统附加参数13
8921
- */
8922
- readonly key13?: string;
8923
- /**
8924
- * 系统附加参数14
8925
- */
8926
- readonly key14?: string;
8927
- /**
8928
- * 系统附加参数15
8929
- */
8930
- readonly key15?: string;
8931
- /**
8932
- * 系统附加参数16
8933
- */
8934
- readonly key16?: string;
8935
- /**
8936
- * 系统附加参数17
8634
+ * 离线任务唯一id,默认不会指定,只有离线应用需要指定
8635
+ * 预览模式下会无视该参数
8937
8636
  */
8938
- readonly key17?: string;
8637
+ readonly offline_task_id?: string;
8939
8638
  /**
8940
- * 系统附加参数18
8639
+ * 离线问卷id,只有离线模式的时候会传入。
8640
+ * 正式答题的时候,url是没有携带问卷id的,而是携带的收集器代码
8641
+ * 问卷id都是获取问卷数据以后才能获取到的。
8642
+ *
8643
+ * 而离线的时候要很早就访问本地离线专属资源,这时候还没有问卷id。
8644
+ *
8645
+ * 所以依赖url参数上传输一个过来
8646
+ *
8647
+ * 离线模式下核心包需要
8648
+ *
8649
+ * 1. 拦截api通过通讯转发给app
8650
+ *
8651
+ * 2. 有些资源是写死的地址,编程模块中会直接通过ajax去请求这些资源,如多语言文本等,
8652
+ * 可以在发起ajax请求的时候去拦截这些url,然后转成本地地址,在发出请求。
8653
+ *
8654
+ * 3. cfpd中有些资源,如图片,视频,图标等保存的是一个缺少主机名的路径,后续通过配置中的cdn主机名拼接这些路径形成一个完成的url,
8655
+ * 这些资源一般不是通过ajax变成方式去请求的,而是浏览器直接发起请求的,所以无法在发出请求的时候去拦截,而是应该事先就把地址纠正掉。
8656
+ * 需要篡改主机配置中的cdn主机地址,使得通过cdn主机地址拼接起来的cfpd中提供的url地址直接是指向本地的。
8657
+ *
8658
+ * 4. cfpd中还有些资源是写死的的地址,如自动提示图标,也是直接有浏览器请求的,需要在解析cfpd的时候去篡改掉这些地址。
8659
+ *
8660
+ * 5. 还有fake接口,是通过addScript添加到头部的,这个可以在addScript中拦截
8661
+ *
8941
8662
  */
8942
- readonly key18?: string;
8663
+ readonly offline_survey_id?: string;
8943
8664
  /**
8944
- * 系统附加参数19
8665
+ * key1的别名
8945
8666
  */
8946
- readonly key19?: string;
8667
+ readonly key?: string;
8947
8668
  /**
8948
- * 系统附加参数20
8669
+ * 系统附加参数1
8949
8670
  */
8950
- readonly key20?: string;
8671
+ readonly key1?: string;
8951
8672
  /**
8952
8673
  * 是否为开发模式,开启这个参数可以在本地调整正式环境的问卷
8953
8674
  * @ignore
@@ -9009,14 +8730,10 @@ interface CFQueryParams {
9009
8730
  */
9010
8731
  readonly infer_collector_id?: string;
9011
8732
  /**
9012
- * 收集器id,这个参数是必须的,如果是预览的时候则同问卷id一样
9013
- * 正式答题的时候则是一个收集器短id
8733
+ * 收集器代码,这个参数是必须的,如果是预览的时候则同问卷id一样
8734
+ * 正式答题的时候则是一个收集器代码
9014
8735
  */
9015
8736
  readonly sid: string;
9016
- /**
9017
- * 轻量版模板查看模式
9018
- */
9019
- readonly lite_template: string;
9020
8737
  /**
9021
8738
  * @ignore
9022
8739
  */
@@ -9146,7 +8863,7 @@ interface CFAnswerResumer {
9146
8863
  /**
9147
8864
  * 拒绝使用断点续答时的回调函数
9148
8865
  */
9149
- handleDeny(): void;
8866
+ handleDeny(): Promise<void>;
9150
8867
  }
9151
8868
 
9152
8869
  /**
@@ -9243,7 +8960,7 @@ interface ICFOptionCache {
9243
8960
  readonly records: CFMaxDiffRecord[];
9244
8961
  readonly sortNo: number;
9245
8962
  readonly value: string | number;
9246
- readonly name: string;
8963
+ readonly filePath: string;
9247
8964
  readonly fileName: string;
9248
8965
  readonly isImage: boolean;
9249
8966
  readonly fileType: string;