kfb-view 2.4.0 → 2.4.2

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.
@@ -1,5 +1,8 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
+ <component name="AutoImportSettings">
4
+ <option name="autoReloadType" value="SELECTIVE" />
5
+ </component>
3
6
  <component name="BranchesTreeState">
4
7
  <expand>
5
8
  <path>
@@ -36,13 +39,9 @@
36
39
  </select>
37
40
  </component>
38
41
  <component name="ChangeListManager">
39
- <list default="true" id="55024232-8108-4dc9-9bd3-0fd2aa2f34f8" name="Default Changelist" comment="2.3.5,截图文字内容可自定义">
40
- <change beforePath="$PROJECT_DIR$/config/webpack.dev.conf.js" beforeDir="false" afterPath="$PROJECT_DIR$/config/webpack.dev.conf.js" afterDir="false" />
41
- <change beforePath="$PROJECT_DIR$/example/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/example/index.js" afterDir="false" />
42
+ <list default="true" id="55024232-8108-4dc9-9bd3-0fd2aa2f34f8" name="Default Changelist" comment="build:3.0.1">
42
43
  <change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
43
44
  <change beforePath="$PROJECT_DIR$/src/components/shape/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/shape/index.js" afterDir="false" />
44
- <change beforePath="$PROJECT_DIR$/src/const/mark.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/const/mark.js" afterDir="false" />
45
- <change beforePath="$PROJECT_DIR$/src/view.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/view.js" afterDir="false" />
46
45
  </list>
47
46
  <option name="SHOW_DIALOG" value="false" />
48
47
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -84,23 +83,26 @@
84
83
  &quot;Project.color&quot;: &quot;4c401d&quot;,
85
84
  &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
86
85
  &quot;dart.analysis.tool.window.visible&quot;: &quot;false&quot;,
86
+ &quot;git-widget-placeholder&quot;: &quot;master&quot;,
87
87
  &quot;last_opened_file_path&quot;: &quot;/home/fanqifeng/WebstormProjects/kfb-view&quot;,
88
88
  &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
89
+ &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
89
90
  &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
91
+ &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
90
92
  &quot;nodejs_interpreter_path&quot;: &quot;/home/fanqifeng/.nvm/versions/node/v10.15.1/bin/node&quot;,
91
93
  &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
92
94
  &quot;settings.editor.selected.configurable&quot;: &quot;settings.nodejs&quot;,
93
- &quot;ts.external.directory.path&quot;: &quot;/opt/WebStorm/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external&quot;,
95
+ &quot;ts.external.directory.path&quot;: &quot;/opt/WebStorm/plugins/javascript-impl/jsLanguageServicesImpl/external&quot;,
94
96
  &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
95
97
  }
96
98
  }</component>
97
99
  <component name="RecentsManager">
98
100
  <key name="CopyFile.RECENT_KEYS">
101
+ <recent name="$PROJECT_DIR$/src/plugin/openseadragon" />
99
102
  <recent name="$PROJECT_DIR$/example" />
100
103
  <recent name="$PROJECT_DIR$/src/image" />
101
104
  <recent name="$PROJECT_DIR$/src/plugin" />
102
105
  <recent name="$PROJECT_DIR$/src/components/cache" />
103
- <recent name="$PROJECT_DIR$/src/components/rotation" />
104
106
  </key>
105
107
  <key name="MoveFile.RECENT_KEYS">
106
108
  <recent name="$PROJECT_DIR$/src/components/grid" />
@@ -385,105 +387,40 @@
385
387
  <workItem from="1671419756098" duration="2398000" />
386
388
  <workItem from="1671437015276" duration="591000" />
387
389
  <workItem from="1671501857160" duration="90000" />
388
- <workItem from="1671751607914" duration="8964000" />
389
- </task>
390
- <task id="LOCAL-00067" summary="2.1.19">
391
- <created>1657181784906</created>
392
- <option name="number" value="00067" />
393
- <option name="presentableId" value="LOCAL-00067" />
394
- <option name="project" value="LOCAL" />
395
- <updated>1657181784906</updated>
396
- </task>
397
- <task id="LOCAL-00068" summary="绘制起点提示">
398
- <created>1657182306689</created>
399
- <option name="number" value="00068" />
400
- <option name="presentableId" value="LOCAL-00068" />
401
- <option name="project" value="LOCAL" />
402
- <updated>1657182306689</updated>
403
- </task>
404
- <task id="LOCAL-00069" summary="曲线双击结束绘制">
405
- <created>1657532017463</created>
406
- <option name="number" value="00069" />
407
- <option name="presentableId" value="LOCAL-00069" />
408
- <option name="project" value="LOCAL" />
409
- <updated>1657532017464</updated>
410
- </task>
411
- <task id="LOCAL-00070" summary="标注时增加右键拖动视野">
412
- <created>1657537220254</created>
413
- <option name="number" value="00070" />
414
- <option name="presentableId" value="LOCAL-00070" />
415
- <option name="project" value="LOCAL" />
416
- <updated>1657537220255</updated>
417
- </task>
418
- <task id="LOCAL-00071" summary="曲线绘制中,按删除键,删除上一个标注点">
419
- <created>1657538768786</created>
420
- <option name="number" value="00071" />
421
- <option name="presentableId" value="LOCAL-00071" />
422
- <option name="project" value="LOCAL" />
423
- <updated>1657538768786</updated>
424
- </task>
425
- <task id="LOCAL-00072" summary="优化点击操作">
426
- <created>1657539785588</created>
427
- <option name="number" value="00072" />
428
- <option name="presentableId" value="LOCAL-00072" />
429
- <option name="project" value="LOCAL" />
430
- <updated>1657539785589</updated>
431
- </task>
432
- <task id="LOCAL-00073" summary="enableDbClickClose">
433
- <created>1657539900044</created>
434
- <option name="number" value="00073" />
435
- <option name="presentableId" value="LOCAL-00073" />
436
- <option name="project" value="LOCAL" />
437
- <updated>1657539900044</updated>
438
- </task>
439
- <task id="LOCAL-00074" summary="2.1.20">
440
- <created>1657539914133</created>
441
- <option name="number" value="00074" />
442
- <option name="presentableId" value="LOCAL-00074" />
443
- <option name="project" value="LOCAL" />
444
- <updated>1657539914133</updated>
445
- </task>
446
- <task id="LOCAL-00075" summary="view.js">
447
- <created>1657540107150</created>
448
- <option name="number" value="00075" />
449
- <option name="presentableId" value="LOCAL-00075" />
450
- <option name="project" value="LOCAL" />
451
- <updated>1657540107150</updated>
452
- </task>
453
- <task id="LOCAL-00076" summary="优化选中点">
454
- <created>1657588323251</created>
455
- <option name="number" value="00076" />
456
- <option name="presentableId" value="LOCAL-00076" />
457
- <option name="project" value="LOCAL" />
458
- <updated>1657588323252</updated>
459
- </task>
460
- <task id="LOCAL-00077" summary="优化标注图形显示,一次最多绘制5000个点,超过的标注延迟加载">
461
- <created>1657592781786</created>
462
- <option name="number" value="00077" />
463
- <option name="presentableId" value="LOCAL-00077" />
464
- <option name="project" value="LOCAL" />
465
- <updated>1657592781786</updated>
466
- </task>
467
- <task id="LOCAL-00078" summary="键盘事件更新,delete可删除曲线标注点,双击可添加曲线标注点">
468
- <created>1657607397044</created>
469
- <option name="number" value="00078" />
470
- <option name="presentableId" value="LOCAL-00078" />
471
- <option name="project" value="LOCAL" />
472
- <updated>1657607397044</updated>
473
- </task>
474
- <task id="LOCAL-00079" summary="2.20.0">
475
- <created>1657607434015</created>
476
- <option name="number" value="00079" />
477
- <option name="presentableId" value="LOCAL-00079" />
478
- <option name="project" value="LOCAL" />
479
- <updated>1657607434015</updated>
480
- </task>
481
- <task id="LOCAL-00080" summary="2.2.0">
482
- <created>1657607449348</created>
483
- <option name="number" value="00080" />
484
- <option name="presentableId" value="LOCAL-00080" />
485
- <option name="project" value="LOCAL" />
486
- <updated>1657607449348</updated>
390
+ <workItem from="1671751607914" duration="9693000" />
391
+ <workItem from="1671762555964" duration="1197000" />
392
+ <workItem from="1675327241367" duration="1458000" />
393
+ <workItem from="1675384282016" duration="594000" />
394
+ <workItem from="1675385204348" duration="1462000" />
395
+ <workItem from="1675843622628" duration="4524000" />
396
+ <workItem from="1675848342418" duration="2364000" />
397
+ <workItem from="1675902452322" duration="1711000" />
398
+ <workItem from="1675909040416" duration="1850000" />
399
+ <workItem from="1675923421168" duration="14000" />
400
+ <workItem from="1676430334861" duration="2002000" />
401
+ <workItem from="1676507825692" duration="1801000" />
402
+ <workItem from="1676515560281" duration="597000" />
403
+ <workItem from="1676530835986" duration="1197000" />
404
+ <workItem from="1676621760411" duration="596000" />
405
+ <workItem from="1676679228746" duration="561000" />
406
+ <workItem from="1676680577748" duration="1197000" />
407
+ <workItem from="1676690227544" duration="597000" />
408
+ <workItem from="1676722969064" duration="565000" />
409
+ <workItem from="1678926296962" duration="2385000" />
410
+ <workItem from="1679708561519" duration="550000" />
411
+ <workItem from="1679728741473" duration="161000" />
412
+ <workItem from="1680268962874" duration="1136000" />
413
+ <workItem from="1680271989452" duration="591000" />
414
+ <workItem from="1680437372638" duration="2994000" />
415
+ <workItem from="1680440411212" duration="49000" />
416
+ <workItem from="1680526343598" duration="1856000" />
417
+ <workItem from="1680595613024" duration="557000" />
418
+ <workItem from="1680596301151" duration="1804000" />
419
+ <workItem from="1680740253103" duration="572000" />
420
+ <workItem from="1680746491709" duration="597000" />
421
+ <workItem from="1680750141486" duration="416000" />
422
+ <workItem from="1680834237716" duration="2982000" />
423
+ <workItem from="1680858434486" duration="1053000" />
487
424
  </task>
488
425
  <task id="LOCAL-00081" summary="加载速度优化">
489
426
  <created>1657612318446</created>
@@ -730,7 +667,105 @@
730
667
  <option name="project" value="LOCAL" />
731
668
  <updated>1669966382574</updated>
732
669
  </task>
733
- <option name="localTasksCounter" value="116" />
670
+ <task id="LOCAL-00116" summary="2.4.0,绘制标注优化,一次只绘制2000个,分批绘制">
671
+ <created>1671761704584</created>
672
+ <option name="number" value="00116" />
673
+ <option name="presentableId" value="LOCAL-00116" />
674
+ <option name="project" value="LOCAL" />
675
+ <updated>1671761704585</updated>
676
+ </task>
677
+ <task id="LOCAL-00117" summary="截图区域范围数值保留2位小数">
678
+ <created>1675327515756</created>
679
+ <option name="number" value="00117" />
680
+ <option name="presentableId" value="LOCAL-00117" />
681
+ <option name="project" value="LOCAL" />
682
+ <updated>1675327515756</updated>
683
+ </task>
684
+ <task id="LOCAL-00118" summary="标注位置跳转增加参数,是否显示跳转动画">
685
+ <created>1675327595052</created>
686
+ <option name="number" value="00118" />
687
+ <option name="presentableId" value="LOCAL-00118" />
688
+ <option name="project" value="LOCAL" />
689
+ <updated>1675327595052</updated>
690
+ </task>
691
+ <task id="LOCAL-00119" summary="2.4.1">
692
+ <created>1675327616880</created>
693
+ <option name="number" value="00119" />
694
+ <option name="presentableId" value="LOCAL-00119" />
695
+ <option name="project" value="LOCAL" />
696
+ <updated>1675327616880</updated>
697
+ </task>
698
+ <task id="LOCAL-00120" summary="升级openseadragon插件">
699
+ <created>1675919992646</created>
700
+ <option name="number" value="00120" />
701
+ <option name="presentableId" value="LOCAL-00120" />
702
+ <option name="project" value="LOCAL" />
703
+ <updated>1675919992646</updated>
704
+ </task>
705
+ <task id="LOCAL-00121" summary="feat:增加停止绘画事件">
706
+ <created>1678929016258</created>
707
+ <option name="number" value="00121" />
708
+ <option name="presentableId" value="LOCAL-00121" />
709
+ <option name="project" value="LOCAL" />
710
+ <updated>1678929016258</updated>
711
+ </task>
712
+ <task id="LOCAL-00122" summary="feat:截图生成的图片保留标注信息">
713
+ <created>1678929084617</created>
714
+ <option name="number" value="00122" />
715
+ <option name="presentableId" value="LOCAL-00122" />
716
+ <option name="project" value="LOCAL" />
717
+ <updated>1678929084617</updated>
718
+ </task>
719
+ <task id="LOCAL-00123" summary="build:3.0.1">
720
+ <created>1678929156803</created>
721
+ <option name="number" value="00123" />
722
+ <option name="presentableId" value="LOCAL-00123" />
723
+ <option name="project" value="LOCAL" />
724
+ <updated>1678929156803</updated>
725
+ </task>
726
+ <task id="LOCAL-00124" summary="build:3.0.2 截图图片格式自定义">
727
+ <created>1680269167145</created>
728
+ <option name="number" value="00124" />
729
+ <option name="presentableId" value="LOCAL-00124" />
730
+ <option name="project" value="LOCAL" />
731
+ <updated>1680269167145</updated>
732
+ </task>
733
+ <task id="LOCAL-00125" summary="build:3.0.3 截图支持设置分辨率,质量,格式">
734
+ <created>1680440104839</created>
735
+ <option name="number" value="00125" />
736
+ <option name="presentableId" value="LOCAL-00125" />
737
+ <option name="project" value="LOCAL" />
738
+ <updated>1680440104840</updated>
739
+ </task>
740
+ <task id="LOCAL-00126" summary="build:3.0.3导航图宽高限制">
741
+ <created>1680528157819</created>
742
+ <option name="number" value="00126" />
743
+ <option name="presentableId" value="LOCAL-00126" />
744
+ <option name="project" value="LOCAL" />
745
+ <updated>1680528157819</updated>
746
+ </task>
747
+ <task id="LOCAL-00127" summary="build:3.0.5 截图记录位置信息">
748
+ <created>1680847205108</created>
749
+ <option name="number" value="00127" />
750
+ <option name="presentableId" value="LOCAL-00127" />
751
+ <option name="project" value="LOCAL" />
752
+ <updated>1680847205108</updated>
753
+ </task>
754
+ <task id="LOCAL-00128" summary="build:3.0.6 修复填充图形绘制时显示异常">
755
+ <created>1680859251199</created>
756
+ <option name="number" value="00128" />
757
+ <option name="presentableId" value="LOCAL-00128" />
758
+ <option name="project" value="LOCAL" />
759
+ <updated>1680859251199</updated>
760
+ </task>
761
+ <task id="LOCAL-00129" summary="build:3.0.6 填充图形绘制时,内容偏移">
762
+ <created>1680859385125</created>
763
+ <option name="number" value="00129" />
764
+ <option name="presentableId" value="LOCAL-00129" />
765
+ <option name="project" value="LOCAL" />
766
+ <updated>1680859385125</updated>
767
+ </task>
768
+ <option name="localTasksCounter" value="130" />
734
769
  <servers />
735
770
  </component>
736
771
  <component name="TypeScriptGeneratedFilesManager">
@@ -743,6 +778,7 @@
743
778
  <option value="Default.Author" />
744
779
  <option value="Default.Date" />
745
780
  <option value="Default.Subject" />
781
+ <option value="Space.CommitStatus" />
746
782
  </list>
747
783
  </option>
748
784
  </component>
@@ -757,7 +793,7 @@
757
793
  <entry key="branch">
758
794
  <value>
759
795
  <list>
760
- <option value="master" />
796
+ <option value="origin/master" />
761
797
  </list>
762
798
  </value>
763
799
  </entry>
@@ -772,20 +808,6 @@
772
808
  <component name="VcsManagerConfiguration">
773
809
  <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
774
810
  <option name="LOCAL_CHANGES_DETAILS_PREVIEW_SHOWN" value="false" />
775
- <MESSAGE value="grid优化" />
776
- <MESSAGE value="触发限制优化" />
777
- <MESSAGE value="增加图片绘制" />
778
- <MESSAGE value="2.2.5" />
779
- <MESSAGE value="2.2.8" />
780
- <MESSAGE value="优化标注信息显示" />
781
- <MESSAGE value="标注事件回调" />
782
- <MESSAGE value="defaultShow" />
783
- <MESSAGE value="2.2.9" />
784
- <MESSAGE value="矩形框的选中点变成线" />
785
- <MESSAGE value="2.3.0" />
786
- <MESSAGE value="矩形移动点默认隐藏,悬浮显示" />
787
- <MESSAGE value="label.model.js" />
788
- <MESSAGE value="解决反向绘制时,标注信息显示错误" />
789
811
  <MESSAGE value="2.3.1" />
790
812
  <MESSAGE value="优化渲染速度" />
791
813
  <MESSAGE value="2.3.2" />
@@ -797,7 +819,21 @@
797
819
  <MESSAGE value="2.3.6,优化移动标注时的判断操作" />
798
820
  <MESSAGE value="2.3.6,截图文字内容判断异常" />
799
821
  <MESSAGE value="2.3.8,截图文字内容增加函数" />
800
- <option name="LAST_COMMIT_MESSAGE" value="2.3.8,截图文字内容增加函数" />
822
+ <MESSAGE value="2.4.0,绘制标注优化,一次只绘制2000个,分批绘制" />
823
+ <MESSAGE value="截图区域范围数值保留2位小数" />
824
+ <MESSAGE value="标注位置跳转增加参数,是否显示跳转动画" />
825
+ <MESSAGE value="2.4.1" />
826
+ <MESSAGE value="升级openseadragon插件" />
827
+ <MESSAGE value="feat:增加停止绘画事件" />
828
+ <MESSAGE value="feat:截图生成的图片保留标注信息" />
829
+ <MESSAGE value="build:3.0.1" />
830
+ <MESSAGE value="build:3.0.2 截图图片格式自定义" />
831
+ <MESSAGE value="build:3.0.3 截图支持设置分辨率,质量,格式" />
832
+ <MESSAGE value="build:3.0.3导航图宽高限制" />
833
+ <MESSAGE value="build:3.0.5 截图记录位置信息" />
834
+ <MESSAGE value="build:3.0.6 修复填充图形绘制时显示异常" />
835
+ <MESSAGE value="build:3.0.6 填充图形绘制时,内容偏移" />
836
+ <option name="LAST_COMMIT_MESSAGE" value="build:3.0.6 填充图形绘制时,内容偏移" />
801
837
  <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
802
838
  </component>
803
839
  <component name="XSLT-Support.FileAssociations.UIState">
@@ -66,8 +66,7 @@ module.exports = function() {
66
66
  // target: 'http://gastric.label.hzztai.com/',
67
67
  // target: 'http://192.168.1.91:7007',
68
68
  // target: 'http://192.168.1.91',
69
- // target: 'http://192.168.1.22',
70
- target: 'https://vai.hzztai.com',
69
+ target: 'http://192.168.1.16',
71
70
  // target: 'https://tct.hzztai.com',
72
71
  // target: 'https://pis-ningbo.hzztai.com',
73
72
  // target: 'https://pis-test.hzztai.com',
package/example/index.js CHANGED
@@ -25,12 +25,12 @@ deleteEmptyImg.src = deleteEmptySvg;
25
25
  const hasAuditImg = new Image();
26
26
  hasAuditImg.src = hasAuditSvg;
27
27
 
28
- const fileName = 'uploads/TCT/已入库/guangzhou_fuer_hospital/pos/labeling/LSIL/MY22004_other_2022-08-22_LSIL_切片2.kfb';
28
+ const fileName = '/uploads/TCT/已入库/ningbo_pathology_center/neg/labeling/WS/T2018-46374_ThinPrep_2018-08-31_WS.kfb';
29
29
 
30
30
  const instance = axios.create({
31
31
  baseURL: '/api',
32
32
  timeout: 1000,
33
- headers: {'Authorization': 'bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMTkyLjE2OC4xLjIyL2FwaS9hdXRoL2xvZ2luIiwiaWF0IjoxNjY3NjE2OTIyLCJleHAiOjE2Njc2NTUzMjIsIm5iZiI6MTY2NzYxNjkyMiwianRpIjoiMDl4SEZMdlpHUlliVExlQyIsInN1YiI6MjcsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.buNwEIsNSqo1-wH8zEaRyjauIVKOXmjJfjaa1-g9l_k'},
33
+ headers: {'Authorization': 'bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMTkyLjE2OC4xLjE2L2FwaS9hdXRoL2xvZ2luIiwiaWF0IjoxNjY2OTI2ODk1LCJleHAiOjE2NjY5NjUyOTUsIm5iZiI6MTY2NjkyNjg5NSwianRpIjoieU5mT3NXMmVraWs0RTUxayIsInN1YiI6MSwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.2T7Xkx-5BhtR1HOc5FLbJIzDmgaq2bbCuXJoowUX0IE'},
34
34
  });
35
35
 
36
36
  let cacheImage = {};
@@ -76,7 +76,7 @@ instance.get(`/process/info?file=${fileName}`).then(({data}) => {
76
76
  },
77
77
  pxConversion: {
78
78
  unit: 'um',
79
- imageCapRes: data.imageCapRes || 1,
79
+ imageCapRes: data.imageCapRes,
80
80
  },
81
81
  grid: {
82
82
  show: false,
@@ -273,7 +273,7 @@ instance.get(`/process/info?file=${fileName}`).then(({data}) => {
273
273
  kv.viewer.addHandler('zoom', (res) => {
274
274
  const zoom = kv.viewer.viewport.viewportToImageZoom(res.zoom) *
275
275
  kv.$options.scale;
276
- // console.log(zoom.toFixed(2) / 1);
276
+ console.log(zoom.toFixed(2) / 1);
277
277
  });
278
278
  console.log(kv);
279
279
  let list = [];
@@ -304,6 +304,7 @@ instance.get(`/process/info?file=${fileName}`).then(({data}) => {
304
304
  kv.board.startDraw({
305
305
  tool: KfbView.marks.RECTANGLE,
306
306
  isROI: false,
307
+ once: true,
307
308
  measure: true,
308
309
  });
309
310
  };
@@ -372,9 +373,9 @@ instance.get(`/process/info?file=${fileName}`).then(({data}) => {
372
373
  console.log(e);
373
374
  });*/
374
375
  kv.$on(KfbView.events.EVENT_END_PAINTING, (e) => {
375
- console.time('appendLabelList');
376
- kv.appendLabelList([e.detail]);
377
- console.timeEnd('appendLabelList');
376
+ console.log(e.detail);
377
+ list.push(e.detail);
378
+ kv.initLabelList(list);
378
379
  // kv.board.endDraw();
379
380
  });
380
381
  kv.$on(KfbView.events.EVENT_DELETE_LABEL, (e) => {
@@ -412,111 +413,67 @@ instance.get(`/process/info?file=${fileName}`).then(({data}) => {
412
413
  }, 6000);
413
414
  }, 6000);
414
415
 
415
- initLabels();
416
+ // initLabels();
416
417
 
417
418
  function initLabels() {
418
419
  const labels = [];
419
- const colors = ['#027AFF', '#f56c6c', '#11ff6c', '#f56cff', '#11ffff'];
420
- for (let i = 0; i < 10000; i++) {
420
+ const colors = ['#027AFF', '#f56c6c'];
421
+ for (let i = 0; i < 50000; i++) {
421
422
  const point = {
422
423
  x: Math.random() * data.width,
423
424
  y: Math.random() * data.height,
424
425
  };
425
- const point1 = {
426
- x: point.x + Math.random() * 1000,
427
- y: point.y + Math.random() * 1000,
428
- };
429
426
  const label = {
430
427
  // fillStyle: 'rgba(2, 122, 255, 1)',
431
- lineWidth: 2,
432
- points: [point, point1],
428
+ lineWidth: 6,
429
+ points: [point, point],
433
430
  scale: 0.1,
434
- strokeStyle: colors[(Math.random() * colors.length) >> 0],
435
- tool: 'Rectangle',
436
- move: true,
437
- resize: true,
431
+ strokeStyle: Math.random() > .5 ? colors[0] : colors[1],
432
+ tool: 'Dot',
433
+ move: false,
438
434
  };
439
435
  labels.push(label);
440
436
  }
441
437
  kv.initLabelList(labels);
442
438
  }
443
439
 
444
- /*
445
- instance.get(
446
- `/image_annotation?file=${fileName}&slide_label_id=38749&user_id=27`).
447
- then(({data}) => {
448
- data = data.data;
449
- const labelRegionList = [];
450
- (data || []).filter(item => item.id && item.region.width > 0).
451
- forEach(item => {
452
- const subClass = item.sub_class || item.subClass;
453
- const is_ai = !!item.score || subClass === 'ROI' && !item.user_name; // 通过分数来判断是否是AI识别标注
454
- const r = {
455
- ...item,
456
- tool: (item.type || item.tool) === 'Spline' ?
457
- 'Polygon' :
458
- (item.type || item.tool),
459
- strokeStyle: item.strokeStyle || `#${item.color.toString(16).
460
- slice(2)}${item.color.toString(16).slice(0, 2)}`,
461
- measure: true,
462
- sub_class: subClass,
463
- isROI: subClass === 'ROI',
464
- isClose: item.isClose || item.is_close,
465
- lineWidth: item.lineWidth || item.width,
466
- text: item.text || item.description,
467
- is_ai,
468
- ai_sub_class: is_ai ? (item.ai_sub_class ?? item.sub_class) : '',
469
- ai_points: is_ai ? (item.ai_points ?? item.points) : '',
470
- ai_region: is_ai ? (item.ai_region ?? item.region) : '',
471
- };
472
- r.content = (kv.area.getMeasureContent(r)?.texts || []).slice(1, -1);
473
- labelRegionList.push({
474
- ...r,
475
- });
440
+ instance.get(
441
+ `/image_annotation?file=${fileName}&slide_label_id=48010&user_id=1`).
442
+ then(({data}) => {
443
+ data = data.data;
444
+ const labelRegionList = [];
445
+ (data || []).filter(item => item.id && item.region.width > 0).
446
+ forEach(item => {
447
+ const subClass = item.sub_class || item.subClass;
448
+ const is_ai = !!item.score || subClass === 'ROI' && !item.user_name; // 通过分数来判断是否是AI识别标注
449
+ const r = {
450
+ ...item,
451
+ tool: (item.type || item.tool) === 'Spline' ?
452
+ 'Polygon' :
453
+ (item.type || item.tool),
454
+ strokeStyle: `#${item.color.toString(16).
455
+ slice(2)}${item.color.toString(16).slice(0, 2)}`,
456
+ measure: true,
457
+ sub_class: subClass,
458
+ isROI: subClass === 'ROI',
459
+ isClose: item.isClose || item.is_close,
460
+ lineWidth: item.lineWidth || item.width,
461
+ text: item.text || item.description,
462
+ is_ai,
463
+ ai_sub_class: is_ai ? (item.ai_sub_class ?? item.sub_class) : '',
464
+ ai_points: is_ai ? (item.ai_points ?? item.points) : '',
465
+ ai_region: is_ai ? (item.ai_region ?? item.region) : '',
466
+ };
467
+ r.content = (kv.area.getMeasureContent(r)?.texts || []).slice(1, -1);
468
+ labelRegionList.push({
469
+ ...r,
476
470
  });
477
- console.time('initLabelList');
478
- kv.initLabelList(labelRegionList.filter(({deleted_at}) => !deleted_at));
479
- console.timeEnd('initLabelList');
480
- });
481
- document.querySelector('#reDraw').addEventListener('click', () => {
482
- instance.get(
483
- `/image_annotation?file=${fileName}&slide_label_id=38749&user_id=27`).
484
- then(({data}) => {
485
- data = data.data;
486
- const labelRegionList = [];
487
- (data || []).filter(item => item.id && item.region.width > 0).
488
- forEach(item => {
489
- const subClass = item.sub_class || item.subClass;
490
- const is_ai = !!item.score || subClass === 'ROI' && !item.user_name; // 通过分数来判断是否是AI识别标注
491
- const r = {
492
- ...item,
493
- tool: (item.type || item.tool) === 'Spline' ?
494
- 'Polygon' :
495
- (item.type || item.tool),
496
- strokeStyle: item.strokeStyle || `#${item.color.toString(16).
497
- slice(2)}${item.color.toString(16).slice(0, 2)}`,
498
- measure: true,
499
- sub_class: subClass,
500
- isROI: subClass === 'ROI',
501
- isClose: item.isClose || item.is_close,
502
- lineWidth: item.lineWidth || item.width,
503
- text: item.text || item.description,
504
- is_ai,
505
- ai_sub_class: is_ai ? (item.ai_sub_class ?? item.sub_class) : '',
506
- ai_points: is_ai ? (item.ai_points ?? item.points) : '',
507
- ai_region: is_ai ? (item.ai_region ?? item.region) : '',
508
- };
509
- r.content = (kv.area.getMeasureContent(r)?.texts || []).slice(1,
510
- -1);
511
- labelRegionList.push({
512
- ...r,
513
- });
514
- });
515
- console.time('initLabelList');
516
- kv.initLabelList(labelRegionList.filter(({deleted_at}) => !deleted_at));
517
- console.timeEnd('initLabelList');
518
471
  });
519
- });*/
472
+ kv.initLabelList(labelRegionList.filter(({deleted_at}) => !deleted_at));
473
+ });
474
+ document.querySelector('#reDraw').addEventListener('click', () => {
475
+ initLabels();
476
+ });
520
477
  });
521
478
 
522
479
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kfb-view",
3
3
  "description": "一个在线kfb的阅片软件",
4
- "version": "2.4.0",
4
+ "version": "2.4.2",
5
5
  "author": "qifeng.fan <qifeng.fan@hzztai.com>",
6
6
  "license": "MIT",
7
7
  "main": "lib/kfb-view.js",
@@ -60,8 +60,8 @@ export class ViewerCommon extends EventEmitter {
60
60
  {x: rect.x + rect.width, y: rect.y + rect.height})[4];
61
61
  }
62
62
 
63
- moveToLabel(point) {
64
- this.viewport.panTo(new Point(point.x, point.y), false);
63
+ moveToLabel(point, flag = false) {
64
+ this.viewport.panTo(new Point(point.x, point.y), flag);
65
65
  }
66
66
 
67
67
  /**
@@ -168,10 +168,10 @@ export class Shape extends ViewerCommon {
168
168
  regionLabelList.forEach((item) => {
169
169
  this.combination.setContent(this.canvas, item);
170
170
  this.combination.draw({
171
- points: item.viewerElementPoints,
171
+ points: this.imageToViewerElementPoints(item.points),
172
172
  tool: item.tool,
173
- }, item.child.map(({viewerElementPoints, tool}) => ({
174
- points: viewerElementPoints,
173
+ }, item.child.map(({points, tool}) => ({
174
+ points: this.imageToViewerElementPoints(points),
175
175
  tool,
176
176
  })), this.viewport.getRotation());
177
177
  });
@@ -110,10 +110,12 @@ export class Tailoring extends ViewerCommon {
110
110
  ctx.beginPath();
111
111
  ctx.fillStyle = this.color;
112
112
  ctx.font = '18px Arial';
113
+ const width = (rightTop.x - leftTop.x).toFixed(2) / 1;
114
+ const height = (rightBottom.y - rightTop.y).toFixed(2) / 1;
113
115
  ctx.fillText(
114
116
  this.contents?.[2] ?
115
- this.contents[2](rightTop.x - leftTop.x, rightBottom.y - rightTop.y) :
116
- (`区域大小为:${rightTop.x - leftTop.x}*${rightBottom.y - rightTop.y}`),
117
+ this.contents[2](width, height) :
118
+ (`区域大小为:${width}*${height}`),
117
119
  leftTop.x, leftTop.y - 50);
118
120
  ctx.fillText(this.contents?.[0] ?? `双击区域内表示完成截图`, leftTop.x,
119
121
  leftTop.y - 30);