hellfire 0.27.8 → 0.27.10

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.js CHANGED
@@ -28734,7 +28734,8 @@ var SWITCH_MPR_PERSPECTIVE = 'SWITCH_MPR_PERSPECTIVE';
28734
28734
  var SET_SERIES_CURRENT_INDEX = 'SET_SERIES_CURRENT_INDEX';
28735
28735
  var INIT_SERIES_CURRENT_INDEX = 'INIT_SERIES_CURRENT_INDEX';
28736
28736
  var SET_LAST_ACTIVE_INDEX = 'SET_LAST_ACTIVE_INDEX';
28737
- var SET_SURGERY_ACTIVE_INDEX = 'SET_SURGERY_ACTIVE_INDEX'; // ---------- Reducers ----------
28737
+ var SET_SURGERY_ACTIVE_INDEX = 'SET_SURGERY_ACTIVE_INDEX';
28738
+ var SET_ORIGIN_STUDY = 'SET_ORIGIN_STUDY'; // ---------- Reducers ----------
28738
28739
 
28739
28740
  var initialState$4 = {
28740
28741
  // 当前选择的series及其id
@@ -28762,6 +28763,8 @@ var initialState$4 = {
28762
28763
  imageActiveIndex: 0,
28763
28764
  linkImageIndex: [],
28764
28765
  // 绝对同步的image集合
28766
+ originStudy: [],
28767
+ // 传入的study集合(包含关联检查)
28765
28768
  // synchronizer集合
28766
28769
  synchronizer: synchronizer,
28767
28770
  // 定位线
@@ -28781,6 +28784,15 @@ var viewport = (function () {
28781
28784
  var action = arguments.length > 1 ? arguments[1] : undefined;
28782
28785
 
28783
28786
  switch (action.type) {
28787
+ case SET_ORIGIN_STUDY:
28788
+ {
28789
+ var nextStudy = lodash$1.clone(action.payload);
28790
+
28791
+ return _objectSpread$e(_objectSpread$e({}, state), {}, {
28792
+ originStudy: nextStudy
28793
+ });
28794
+ }
28795
+
28784
28796
  case SET_ACTIVE_INDEX:
28785
28797
  {
28786
28798
  return _objectSpread$e(_objectSpread$e({}, state), {}, {
@@ -29026,6 +29038,12 @@ function switchMprPerspective(reset) {
29026
29038
  reset: reset
29027
29039
  };
29028
29040
  }
29041
+ function setOriginStudyData(data) {
29042
+ return {
29043
+ type: SET_ORIGIN_STUDY,
29044
+ payload: data
29045
+ };
29046
+ }
29029
29047
 
29030
29048
  var createReducer = function createReducer() {
29031
29049
  return function (state, action) {
@@ -45532,6 +45550,117 @@ function getMinMaxPixelData(pixels) {
45532
45550
  return [minPixelValue, maxPixelValue];
45533
45551
  }
45534
45552
 
45553
+ var scrollToIndex$3 = cornerstoneTools.scrollToIndex;
45554
+ /**
45555
+ * 过滤出要联动的element:
45556
+ * 1.numberOfSeriesRelatedInstances相同
45557
+ * 2.两个层平行
45558
+ * 过滤后:
45559
+ * 1.手动同步一次当前instance索引
45560
+ * 2.同步links到redux
45561
+ * 3.同步links到Synchronizer
45562
+ */
45563
+
45564
+ function openAutoLink (_x) {
45565
+ return _ref$1m.apply(this, arguments);
45566
+ }
45567
+
45568
+ function _ref$1m() {
45569
+ _ref$1m = asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(props) {
45570
+ var col, row, currentScrollLine, activeIndex, seriesCurrentIndex, series, setLinkSeries, linkSynchronizer, linkScrollSynchronizer, realActiveIndex, realSeriesIndex, _currentImageIdIndex, _currentSeries, currentImageId, currentDicom, currentPos, links, startIndex, endIndex, currentLayoutSeries, _series, i, seriesItem, imageId, dicom, comparePos, angle, activeElement;
45571
+
45572
+ return regenerator.wrap(function _callee$(_context) {
45573
+ while (1) {
45574
+ switch (_context.prev = _context.next) {
45575
+ case 0:
45576
+ col = props.col, row = props.row, currentScrollLine = props.currentScrollLine, activeIndex = props.activeIndex, seriesCurrentIndex = props.seriesCurrentIndex, series = props.series, setLinkSeries = props.setLinkSeries, linkSynchronizer = props.linkSynchronizer, linkScrollSynchronizer = props.linkScrollSynchronizer, realActiveIndex = props.realActiveIndex;
45577
+ realSeriesIndex = col * currentScrollLine + activeIndex;
45578
+ _currentImageIdIndex = seriesCurrentIndex[realSeriesIndex];
45579
+ _currentSeries = series[realSeriesIndex];
45580
+ currentImageId = _currentSeries.imageIds[_currentImageIdIndex];
45581
+ _context.next = 7;
45582
+ return loadAndCacheDicom(currentImageId);
45583
+
45584
+ case 7:
45585
+ currentDicom = _context.sent;
45586
+ currentPos = getPosFromDicom(currentDicom);
45587
+ links = [];
45588
+
45589
+ if (!currentPos) {
45590
+ _context.next = 28;
45591
+ break;
45592
+ }
45593
+
45594
+ // 当前layout中的series集合
45595
+ startIndex = col * currentScrollLine;
45596
+ endIndex = startIndex + col * row;
45597
+ currentLayoutSeries = series.slice(startIndex, endIndex);
45598
+ _series = lodash$1.cloneDeep(currentLayoutSeries);
45599
+ i = 0;
45600
+
45601
+ case 16:
45602
+ if (!(i < _series.length)) {
45603
+ _context.next = 28;
45604
+ break;
45605
+ }
45606
+
45607
+ seriesItem = _series[i];
45608
+
45609
+ if (!(seriesItem.seriesInstanceUID !== _currentSeries.seriesInstanceUID && seriesItem.numberOfSeriesRelatedInstances === _currentSeries.numberOfSeriesRelatedInstances)) {
45610
+ _context.next = 25;
45611
+ break;
45612
+ }
45613
+
45614
+ imageId = seriesItem.imageIds[_currentImageIdIndex];
45615
+ _context.next = 22;
45616
+ return loadAndCacheDicom(imageId);
45617
+
45618
+ case 22:
45619
+ dicom = _context.sent;
45620
+ comparePos = getPosFromDicom(dicom);
45621
+
45622
+ if (comparePos) {
45623
+ angle = comparePosSameLayer(currentPos, comparePos);
45624
+
45625
+ if (angle === 0) {
45626
+ links.push(i);
45627
+ }
45628
+ }
45629
+
45630
+ case 25:
45631
+ i++;
45632
+ _context.next = 16;
45633
+ break;
45634
+
45635
+ case 28:
45636
+ if (links && links.length > 0) {
45637
+ lodash$1.forEach(links, function (link) {
45638
+ scrollToIndex$3(getElement(link), _currentImageIdIndex);
45639
+ });
45640
+ }
45641
+
45642
+ setLinkSeries(links);
45643
+ activeElement = getElement(realActiveIndex);
45644
+
45645
+ if (links && links.length > 0) {
45646
+ lodash$1.forEach(links, function (link) {
45647
+ linkSynchronizer.add(getElement(link));
45648
+ linkScrollSynchronizer.add(getElement(link));
45649
+ });
45650
+ linkSynchronizer.add(activeElement);
45651
+ linkScrollSynchronizer.add(activeElement);
45652
+ }
45653
+
45654
+ case 32:
45655
+ case "end":
45656
+ return _context.stop();
45657
+ }
45658
+ }
45659
+ }, _callee);
45660
+ }));
45661
+ return _ref$1m.apply(this, arguments);
45662
+ }
45663
+
45535
45664
  function _createForOfIteratorHelper$9(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$b(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
45536
45665
 
45537
45666
  function _unsupportedIterableToArray$b(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$b(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$b(o, minLen); }
@@ -45541,7 +45670,7 @@ function _arrayLikeToArray$b(arr, len) { if (len == null || len > arr.length) le
45541
45670
  function ownKeys$H(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
45542
45671
 
45543
45672
  function _objectSpread$I(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$H(Object(source), true).forEach(function (key) { defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$H(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
45544
- var scrollToIndex$3 = cornerstoneTools.scrollToIndex;
45673
+ var scrollToIndex$4 = cornerstoneTools.scrollToIndex;
45545
45674
 
45546
45675
  var mapStateToProps$j = function mapStateToProps(state) {
45547
45676
  var _state$paladin$tools$ = state.paladin.tools.customization,
@@ -45828,7 +45957,7 @@ var mergeProps$j = function mergeProps(propsFromState, propsFromDispatch, ownPro
45828
45957
  prevIndex = maxIndex;
45829
45958
  }
45830
45959
 
45831
- scrollToIndex$3(activeElement, prevIndex);
45960
+ scrollToIndex$4(activeElement, prevIndex);
45832
45961
  },
45833
45962
  nextImage: function nextImage() {
45834
45963
  // 下一张
@@ -45852,7 +45981,7 @@ var mergeProps$j = function mergeProps(propsFromState, propsFromDispatch, ownPro
45852
45981
  nextIndex = 0;
45853
45982
  }
45854
45983
 
45855
- scrollToIndex$3(activeElement, nextIndex);
45984
+ scrollToIndex$4(activeElement, nextIndex);
45856
45985
  },
45857
45986
  // 切换模式
45858
45987
  // key: 1.SeriesMode返回序列模式 2.ImageMode进入图像模式
@@ -45934,8 +46063,7 @@ var mergeProps$j = function mergeProps(propsFromState, propsFromDispatch, ownPro
45934
46063
  },
45935
46064
  autoLink: function () {
45936
46065
  var _autoLink = asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(refresh) {
45937
- var setLinkSeries, realSeriesIndex, _currentImageIdIndex, _currentSeries, currentImageId, currentDicom, currentPos, links, startIndex, endIndex, currentLayoutSeries, _series, i, seriesItem, imageId, dicom, comparePos, angle, activeElement;
45938
-
46066
+ var setLinkSeries;
45939
46067
  return regenerator.wrap(function _callee$(_context) {
45940
46068
  while (1) {
45941
46069
  switch (_context.prev = _context.next) {
@@ -45945,106 +46073,30 @@ var mergeProps$j = function mergeProps(propsFromState, propsFromDispatch, ownPro
45945
46073
  linkSynchronizer.destroy();
45946
46074
  linkScrollSynchronizer.destroy();
45947
46075
 
45948
- if (!(Link && !refresh)) {
45949
- _context.next = 7;
45950
- break;
45951
- }
45952
-
45953
- // 关闭
45954
- setLinkSeries([]);
45955
- _context.next = 38;
45956
- break;
45957
-
45958
- case 7:
45959
- // 开启 or 刷新
45960
-
45961
- /**
45962
- * 过滤出要联动的element:
45963
- * 1.numberOfSeriesRelatedInstances相同
45964
- * 2.两个层平行
45965
- * 过滤后:
45966
- * 1.手动同步一次当前instance索引
45967
- * 2.同步links到redux
45968
- * 3.同步links到Synchronizer
45969
- */
45970
- realSeriesIndex = col * currentScrollLine + activeIndex;
45971
- _currentImageIdIndex = seriesCurrentIndex[realSeriesIndex];
45972
- _currentSeries = series[realSeriesIndex];
45973
- currentImageId = _currentSeries.imageIds[_currentImageIdIndex];
45974
- _context.next = 13;
45975
- return loadAndCacheDicom(currentImageId);
45976
-
45977
- case 13:
45978
- currentDicom = _context.sent;
45979
- currentPos = getPosFromDicom(currentDicom);
45980
- links = [];
45981
-
45982
- if (!currentPos) {
45983
- _context.next = 34;
45984
- break;
45985
- }
45986
-
45987
- // 当前layout中的series集合
45988
- startIndex = col * currentScrollLine;
45989
- endIndex = startIndex + col * row;
45990
- currentLayoutSeries = series.slice(startIndex, endIndex);
45991
- _series = lodash$1.cloneDeep(currentLayoutSeries);
45992
- i = 0;
45993
-
45994
- case 22:
45995
- if (!(i < _series.length)) {
45996
- _context.next = 34;
45997
- break;
45998
- }
45999
-
46000
- seriesItem = _series[i];
46001
-
46002
- if (!(seriesItem.seriesInstanceUID !== _currentSeries.seriesInstanceUID && seriesItem.numberOfSeriesRelatedInstances === _currentSeries.numberOfSeriesRelatedInstances)) {
46003
- _context.next = 31;
46004
- break;
46005
- }
46006
-
46007
- imageId = seriesItem.imageIds[_currentImageIdIndex];
46008
- _context.next = 28;
46009
- return loadAndCacheDicom(imageId);
46010
-
46011
- case 28:
46012
- dicom = _context.sent;
46013
- comparePos = getPosFromDicom(dicom);
46014
-
46015
- if (comparePos) {
46016
- angle = comparePosSameLayer(currentPos, comparePos);
46017
-
46018
- if (angle === 0) {
46019
- links.push(i);
46020
- }
46021
- }
46022
-
46023
- case 31:
46024
- i++;
46025
- _context.next = 22;
46026
- break;
46027
-
46028
- case 34:
46029
- if (links && links.length > 0) {
46030
- lodash$1.forEach(links, function (link) {
46031
- scrollToIndex$3(getElement(link), _currentImageIdIndex);
46032
- });
46033
- }
46034
-
46035
- setLinkSeries(links);
46036
- activeElement = getElement(realActiveIndex);
46037
-
46038
- if (links && links.length > 0) {
46039
- lodash$1.forEach(links, function (link) {
46040
- linkSynchronizer.add(getElement(link));
46041
- linkScrollSynchronizer.add(getElement(link));
46076
+ if (Link && !refresh) {
46077
+ // 关闭
46078
+ window.localStorage.setItem('hellfire-link-tool-default-state', 'close');
46079
+ setLinkSeries([]);
46080
+ } else {
46081
+ // 开启 or 刷新
46082
+ // 1.本地记忆联动的初始状态
46083
+ window.localStorage.setItem('hellfire-link-tool-default-state', 'open'); // 2.处理
46084
+
46085
+ openAutoLink({
46086
+ col: col,
46087
+ row: row,
46088
+ currentScrollLine: currentScrollLine,
46089
+ activeIndex: activeIndex,
46090
+ seriesCurrentIndex: seriesCurrentIndex,
46091
+ series: series,
46092
+ setLinkSeries: setLinkSeries,
46093
+ linkSynchronizer: linkSynchronizer,
46094
+ linkScrollSynchronizer: linkScrollSynchronizer,
46095
+ realActiveIndex: realActiveIndex
46042
46096
  });
46043
- linkSynchronizer.add(activeElement);
46044
- linkScrollSynchronizer.add(activeElement);
46045
46097
  }
46046
46098
 
46047
- case 38:
46099
+ case 4:
46048
46100
  case "end":
46049
46101
  return _context.stop();
46050
46102
  }
@@ -46823,7 +46875,7 @@ styleInject$1(css_248z$r);
46823
46875
 
46824
46876
  function _extends$1o() { _extends$1o = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1o.apply(this, arguments); }
46825
46877
 
46826
- var _ref$1m = /*#__PURE__*/React__default.createElement("path", {
46878
+ var _ref$1n = /*#__PURE__*/React__default.createElement("path", {
46827
46879
  d: "M3658.026 10.064c5.915-.329 11.359 2.241 14.432 6.357l-5.498 2.292 14.488 7.78 4.678-15.768-5.437 2.266c-4.491-7.516-13.347-12.235-23.194-11.634-12.153.737-22.056 9.888-23.034 21.285l8.693.746c.612-7.121 7.003-12.847 14.872-13.324zM3661.635 45.864c-6.105.345-11.715-2.402-14.729-6.753l4.887-2.037-13.401-7.196-4.324 14.584 4.657-1.941c4.157 7.321 12.398 12.102 21.752 12.102.558 0 1.121-.017 1.687-.051 12.151-.737 22.054-9.888 23.032-21.285l-8.691-.746c-.615 7.12-7.005 12.846-14.87 13.323z"
46828
46880
  });
46829
46881
 
@@ -46832,7 +46884,7 @@ const SvgRefresh$1 = props => /*#__PURE__*/React__default.createElement("svg", _
46832
46884
  height: 56,
46833
46885
  viewBox: "3630 0 60 56",
46834
46886
  fill: "currentColor"
46835
- }, props), _ref$1m);
46887
+ }, props), _ref$1n);
46836
46888
 
46837
46889
  var css_248z$s = ".loadingIndicator {\n position: absolute;\n top: 0;\n background: black;\n opacity: 1;\n width: 100%;\n height: 100%;\n text-align: center;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.loadingIndicator .lds-ring {\n color: #999;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n width: 40px;\n height: 40px;\n margin: auto;\n}\n.loadingIndicator .lds-ring div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 40px;\n height: 40px;\n border: 4px solid silver;\n border-radius: 50%;\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: silver transparent transparent transparent;\n}\n.loadingIndicator .lds-ring div:nth-child(1) {\n animation-delay: -0.45s;\n}\n.loadingIndicator .lds-ring div:nth-child(2) {\n animation-delay: -0.3s;\n}\n.loadingIndicator .lds-ring div:nth-child(3) {\n animation-delay: -0.15s;\n}\n@keyframes lds-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.loadingIndicator .loadingIndicator-retry {\n width: 40px;\n color: #999;\n margin: 0 auto;\n font-size: 14px;\n}\n.loadingIndicator .indicatorContents h4 {\n font-size: 18px;\n margin: 0 auto 10px 0;\n}\n.loadingIndicator .indicatorContents h5 {\n font-size: 16px;\n margin: 0 auto 10px 0;\n}\n.loadingIndicator .indicatorContents p {\n margin: 4px auto;\n color: #999;\n font-size: 14px;\n}\n.loadingIndicator .indicatorContents .loadingIndicator-retry {\n width: 40px;\n margin: 20px auto 0 auto;\n}\n.loadingIndicator .indicatorContents-mini h4 {\n color: #fff;\n font-size: 12px;\n margin: 5px 0 5px 0;\n}\n.loadingIndicator .indicatorContents-mini .loadingIndicator-retry {\n width: 20px;\n font-size: 12px;\n}\n";
46838
46890
  styleInject$1(css_248z$s);
@@ -47803,7 +47855,7 @@ styleInject$1(css_248z$u);
47803
47855
 
47804
47856
  function _extends$1p() { _extends$1p = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1p.apply(this, arguments); }
47805
47857
 
47806
- var _ref$1n = /*#__PURE__*/React__default.createElement("path", {
47858
+ var _ref$1o = /*#__PURE__*/React__default.createElement("path", {
47807
47859
  d: "M30.054 23.768l-2.964 2.946q-.339.339-.804.339t-.804-.339L16 17.232l-9.482 9.482q-.339.339-.804.339t-.804-.339l-2.964-2.946q-.339-.339-.339-.813t.339-.813L15.196 8.91q.339-.339.804-.339t.804.339l13.25 13.232q.339.339.339.813t-.339.813z"
47808
47860
  });
47809
47861
 
@@ -47812,11 +47864,11 @@ const SvgChevronUp = props => /*#__PURE__*/React__default.createElement("svg", _
47812
47864
  height: 32,
47813
47865
  viewBox: "0 0 32 32",
47814
47866
  fill: "currentColor"
47815
- }, props), _ref$1n);
47867
+ }, props), _ref$1o);
47816
47868
 
47817
47869
  function _extends$1q() { _extends$1q = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1q.apply(this, arguments); }
47818
47870
 
47819
- var _ref$1o = /*#__PURE__*/React__default.createElement("path", {
47871
+ var _ref$1p = /*#__PURE__*/React__default.createElement("path", {
47820
47872
  d: "M30.054 14.429l-13.25 13.232Q16.465 28 16 28t-.804-.339L1.946 14.429q-.339-.339-.339-.813t.339-.813L4.91 9.857q.339-.339.804-.339t.804.339L16 19.339l9.482-9.482q.339-.339.804-.339t.804.339l2.964 2.946q.339.339.339.813t-.339.813z"
47821
47873
  });
47822
47874
 
@@ -47825,7 +47877,7 @@ const SvgChevronDown = props => /*#__PURE__*/React__default.createElement("svg",
47825
47877
  height: 32,
47826
47878
  viewBox: "0 0 32 32",
47827
47879
  fill: "currentColor"
47828
- }, props), _ref$1o);
47880
+ }, props), _ref$1p);
47829
47881
 
47830
47882
  var css_248z$v = ".paladin-aiTips-wrapper {\n width: 100%;\n height: 100%;\n}\n.paladin-aiTips-content {\n width: 1px;\n height: 100%;\n background: #ffff00;\n position: absolute;\n top: 0;\n}\n";
47831
47883
  styleInject$1(css_248z$v);
@@ -53947,7 +53999,6 @@ var DicomView = /*#__PURE__*/function (_Component) {
53947
53999
  });
53948
54000
 
53949
54001
  _this.state = {
53950
- study: studySeriesDataCheck(_this.props.study),
53951
54002
  resize: 0,
53952
54003
  windowLayoutType: _this.props.windowLayoutType
53953
54004
  }; // 窗口变化要重新渲染滚动条的距离
@@ -53980,9 +54031,11 @@ var DicomView = /*#__PURE__*/function (_Component) {
53980
54031
 
53981
54032
  this.props.initSeries(null, function (result) {
53982
54033
  if (result && result.hasChange) {
53983
- _this2.setState({
53984
- study: result.study
53985
- });
54034
+ _this2.props.setReduxOnStudyChange(result.study);
54035
+ } else {
54036
+ var nextStudy = studySeriesDataCheck(_this2.props.study);
54037
+
54038
+ _this2.props.setReduxOnStudyChange(nextStudy);
53986
54039
  }
53987
54040
  }); // 自定义窗值设置
53988
54041
 
@@ -53997,10 +54050,13 @@ var DicomView = /*#__PURE__*/function (_Component) {
53997
54050
  * study切换
53998
54051
  */
53999
54052
  if (JSON.stringify(nextProps.study) !== JSON.stringify(this.props.study)) {
54000
- this.setState({
54001
- study: studySeriesDataCheck(nextProps.study)
54002
- }, function () {
54003
- _this3.props.initSeries(nextProps.study);
54053
+ var nextStudy = studySeriesDataCheck(nextProps.study);
54054
+ this.props.initSeries(nextStudy, function (result) {
54055
+ if (result && result.hasChange) {
54056
+ _this3.props.setReduxOnStudyChange(result.study);
54057
+ } else {
54058
+ _this3.props.setReduxOnStudyChange(nextStudy);
54059
+ }
54004
54060
  });
54005
54061
  }
54006
54062
 
@@ -54072,11 +54128,9 @@ var DicomView = /*#__PURE__*/function (_Component) {
54072
54128
  }, {
54073
54129
  key: "addStudy",
54074
54130
  value: function addStudy(study) {
54075
- var _study = lodash$1.concat(this.state.study, study);
54131
+ var _study = lodash$1.concat(this.props.originStudy, study);
54076
54132
 
54077
- this.setState({
54078
- study: _study
54079
- });
54133
+ this.props.setReduxOnStudyChange(_study);
54080
54134
  this.props.addStudy(study);
54081
54135
  }
54082
54136
  /**
@@ -54363,7 +54417,8 @@ var DicomView = /*#__PURE__*/function (_Component) {
54363
54417
  var _this$props5 = this.props,
54364
54418
  viewMode = _this$props5.viewMode,
54365
54419
  toolMode = _this$props5.toolMode,
54366
- onRefresh = _this$props5.onRefresh;
54420
+ onRefresh = _this$props5.onRefresh,
54421
+ originStudy = _this$props5.originStudy;
54367
54422
  var dcStyle = {
54368
54423
  display: 'flex',
54369
54424
  position: 'absolute',
@@ -54382,7 +54437,7 @@ var DicomView = /*#__PURE__*/function (_Component) {
54382
54437
  operateCentesisPath: this.props.operateCentesisPath,
54383
54438
  helpLink: this.props.helpLink,
54384
54439
  changeWindowSet: this.props.changeWindowSet,
54385
- study: this.state.study,
54440
+ study: originStudy,
54386
54441
  windowLayoutType: this.state.windowLayoutType,
54387
54442
  setCustomWindowLayoutType: this.setCustomWindowLayoutType,
54388
54443
  operateKeyImages: this.props.operateKeyImages
@@ -54396,34 +54451,20 @@ var DicomView = /*#__PURE__*/function (_Component) {
54396
54451
  }), viewMode === '2D' && this.props.mode === 'imageMode' && /*#__PURE__*/React__default.createElement(ConnectedDicomImageModeLayout, {
54397
54452
  onResizeEmit: this.props.onResizeEmit
54398
54453
  }), viewMode === '2D' && this.props.mode === 'allImageMode' && /*#__PURE__*/React__default.createElement(ConnectedDicomAllImageModeLayout, {
54399
- study: this.state.study,
54454
+ study: originStudy,
54400
54455
  onResizeEmit: this.props.onResizeEmit
54401
54456
  }), viewMode === 'MPR' && /*#__PURE__*/React__default.createElement(ConnectedMPRLayout, null), viewMode === 'VR' && /*#__PURE__*/React__default.createElement(ConnectedVR, null), viewMode === 'Surgery' && /*#__PURE__*/React__default.createElement(ConnectedSurgeryLayout, null), viewMode === 'MIP' && /*#__PURE__*/React__default.createElement(ConnectedMIP, null), viewMode === 'CPR' && /*#__PURE__*/React__default.createElement(ConnectedCPRLayout, null));
54402
54457
  var DicomThumbnail = /*#__PURE__*/React__default.createElement("div", {
54403
54458
  className: "paladin-dicomView-dicomThumbnailWrapper"
54404
54459
  }, /*#__PURE__*/React__default.createElement(ConnectedDicomThumbnail, {
54405
- study: this.state.study,
54460
+ study: originStudy,
54406
54461
  onRefresh: onRefresh
54407
54462
  }));
54408
54463
  var GlobalLoading = /*#__PURE__*/React__default.createElement("div", {
54409
54464
  className: "paladin-global-loading"
54410
54465
  }, /*#__PURE__*/React__default.createElement("div", {
54411
54466
  className: "paladin-global-loading-text"
54412
- }, this.props.globalLoading || '加载中...')); // const DicomTool = (
54413
- // <div className='paladin-dicomView-dicomToolWrapper'>
54414
- // <ConnectedDicomTool
54415
- // isMobile={isMobile}
54416
- // toolSortChange={this.props.toolSortChange}
54417
- // operateServerToolState={this.props.operateServerToolState}
54418
- // operateCentesisPath={this.props.operateCentesisPath}
54419
- // helpLink={this.props.helpLink}
54420
- // changeWindowSet={this.props.changeWindowSet}
54421
- // study={this.state.study}
54422
- // windowLayoutType={this.props.windowLayoutType}
54423
- // />
54424
- // </div>
54425
- // )
54426
-
54467
+ }, this.props.globalLoading || '加载中...'));
54427
54468
  var mobile = /*#__PURE__*/React__default.createElement("div", {
54428
54469
  style: dcStyle
54429
54470
  }, this.props.globalLoading && GlobalLoading, /*#__PURE__*/React__default.createElement("div", {
@@ -54432,7 +54473,7 @@ var DicomView = /*#__PURE__*/function (_Component) {
54432
54473
  className: "paladin-dicomView-dicomToolWrapper"
54433
54474
  }, /*#__PURE__*/React__default.createElement(ConnectedDicomTool, {
54434
54475
  isMobileThree: true,
54435
- study: this.state.study
54476
+ study: originStudy
54436
54477
  })), DicomLayout, DicomTool)); // pc分横屏和竖屏
54437
54478
 
54438
54479
  var pc = /*#__PURE__*/React__default.createElement("div", {
@@ -54502,6 +54543,7 @@ var mapStateToProps$u = function mapStateToProps(state) {
54502
54543
  currentSeriesUID = _state$paladin$viewpo.currentSeriesUID,
54503
54544
  currentSeries = _state$paladin$viewpo.currentSeries,
54504
54545
  seriesCurrentIndex = _state$paladin$viewpo.seriesCurrentIndex,
54546
+ originStudy = _state$paladin$viewpo.originStudy,
54505
54547
  synchronizer = _state$paladin$viewpo.synchronizer,
54506
54548
  linkSynchronizer = _state$paladin$viewpo.linkSynchronizer,
54507
54549
  linkImageModeSynchronizer = _state$paladin$viewpo.linkImageModeSynchronizer,
@@ -54555,7 +54597,8 @@ var mapStateToProps$u = function mapStateToProps(state) {
54555
54597
  continuousMeasure: continuousMeasure,
54556
54598
  originActiveTool: originActiveTool,
54557
54599
  CPR: CPR,
54558
- globalLoading: globalLoading
54600
+ globalLoading: globalLoading,
54601
+ originStudy: originStudy
54559
54602
  };
54560
54603
  };
54561
54604
 
@@ -54579,7 +54622,9 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
54579
54622
  surgeryActiveIndex = propsFromState.surgeryActiveIndex;
54580
54623
  var setCurrentSeries = propsFromDispatch.setCurrentSeries,
54581
54624
  _initSeries = propsFromDispatch.initSeries,
54582
- addSeries = propsFromDispatch.addSeries;
54625
+ addSeries = propsFromDispatch.addSeries,
54626
+ setSeriesCurrentIndex = propsFromDispatch.setSeriesCurrentIndex,
54627
+ setSeries = propsFromDispatch.setSeries;
54583
54628
  var viewMode;
54584
54629
 
54585
54630
  if (Surgery) {
@@ -54603,6 +54648,10 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
54603
54648
  var getCurrentElement = function getCurrentElement() {
54604
54649
  return getActiveElement(mode, activeIndex, imageActiveIndex, threeDMode, mprActiveIndex, Surgery, surgeryActiveIndex, CPR);
54605
54650
  };
54651
+
54652
+ var getCurrentRealActiveIndex = function getCurrentRealActiveIndex() {
54653
+ return getRealActiveIndex(mode, activeIndex, imageActiveIndex, MPR, mprActiveIndex, Surgery, surgeryActiveIndex, CPR);
54654
+ };
54606
54655
  /**
54607
54656
  * 前进、后退快捷键,加入频率控制
54608
54657
  * 频率依据序列数量决定
@@ -54699,7 +54748,35 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
54699
54748
  propsFromDispatch.setImageScrollLine(resultScrollLine);
54700
54749
  }
54701
54750
  } else {
54702
- if (onePickMode) {
54751
+ if (onePickMode || col === 1 && row === 1) {
54752
+ var originStudy = propsFromState.originStudy;
54753
+ var matchSeries = null;
54754
+ var matchSeriesIndex = 0;
54755
+ lodash$1.forEach(originStudy, function (item) {
54756
+ if (item.studyInstanceUID === propsFromState.currentSeries.studyInstanceUID) {
54757
+ matchSeries = item.series;
54758
+ matchSeriesIndex = lodash$1.findIndex(matchSeries, function (v) {
54759
+ return v.seriesInstanceUID === propsFromState.currentSeriesUID;
54760
+ });
54761
+ }
54762
+ });
54763
+
54764
+ if (!matchSeries || matchSeries.length === 0) {
54765
+ return;
54766
+ }
54767
+
54768
+ var nextSeriesIndex = matchSeriesIndex - 1;
54769
+
54770
+ if (nextSeriesIndex < 0) {
54771
+ nextSeriesIndex = matchSeries.length - 1;
54772
+ }
54773
+
54774
+ var selectSeries = matchSeries[nextSeriesIndex];
54775
+ var realIndex = col * currentScrollLine + activeIndex;
54776
+ reset$2('series')(realIndex, selectSeries);
54777
+ setSeriesCurrentIndex(realIndex, selectSeries.currentImageIdIndex);
54778
+ setSeries(realIndex, selectSeries);
54779
+ setCurrentSeries(selectSeries);
54703
54780
  return;
54704
54781
  }
54705
54782
 
@@ -54745,7 +54822,35 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
54745
54822
  }
54746
54823
  }
54747
54824
  } else {
54748
- if (onePickMode) {
54825
+ if (onePickMode || col === 1 && row === 1) {
54826
+ var originStudy = propsFromState.originStudy;
54827
+ var matchSeries = null;
54828
+ var matchSeriesIndex = 0;
54829
+ lodash$1.forEach(originStudy, function (item) {
54830
+ if (item.studyInstanceUID === propsFromState.currentSeries.studyInstanceUID) {
54831
+ matchSeries = item.series;
54832
+ matchSeriesIndex = lodash$1.findIndex(matchSeries, function (v) {
54833
+ return v.seriesInstanceUID === propsFromState.currentSeriesUID;
54834
+ });
54835
+ }
54836
+ });
54837
+
54838
+ if (!matchSeries || matchSeries.length === 0) {
54839
+ return;
54840
+ }
54841
+
54842
+ var nextSeriesIndex = matchSeriesIndex + 1;
54843
+
54844
+ if (nextSeriesIndex === matchSeries.length) {
54845
+ nextSeriesIndex = 0;
54846
+ }
54847
+
54848
+ var selectSeries = matchSeries[nextSeriesIndex];
54849
+ var realIndex = col * currentScrollLine + activeIndex;
54850
+ reset$2('series')(realIndex, selectSeries);
54851
+ setSeriesCurrentIndex(realIndex, selectSeries.currentImageIdIndex);
54852
+ setSeries(realIndex, selectSeries);
54853
+ setCurrentSeries(selectSeries);
54749
54854
  return;
54750
54855
  } // 序列模式
54751
54856
 
@@ -54938,7 +55043,7 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
54938
55043
  },
54939
55044
  initSeries: function () {
54940
55045
  var _initSeries2 = asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(changeStudy, callback) {
54941
- var data, synchronizer, linkSynchronizer, linkImageModeSynchronizer, linkScrollSynchronizer, options, _study, series, needCheckMultiFrame, hasMultiFrame, modalitiesInStudy, i, item, wado, url, dataSet, numFrames, imageIds, _i, imageId, seriesCurrentIndex, firstReady, maxRequest, retry, clearCacheEveryLoad, dicom, frameTime;
55046
+ var data, synchronizer, linkSynchronizer, linkImageModeSynchronizer, linkScrollSynchronizer, options, _study, series, needCheckMultiFrame, hasMultiFrame, modalitiesInStudy, i, item, wado, url, dataSet, numFrames, imageIds, _i, imageId, seriesCurrentIndex, firstReady, maxRequest, retry, clearCacheEveryLoad, dicom, frameTime, toolLocalDefaultState, realActiveIndex;
54942
55047
 
54943
55048
  return regenerator.wrap(function _callee$(_context) {
54944
55049
  while (1) {
@@ -54956,6 +55061,7 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
54956
55061
  * - 初始化viewport缓存池
54957
55062
  * - 初始化图像预加载
54958
55063
  * - 如果有frameTime的话设置fps
55064
+ * - 初始化本地存储的工具初始状态(目前包含:自动联动)
54959
55065
  *
54960
55066
  * 检查io是否为true是的话打开同屏开关
54961
55067
  */
@@ -55154,9 +55260,29 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
55154
55260
  if (dicom && dicom.FrameTime && dicom.FrameTime.value) {
55155
55261
  frameTime = dicom.FrameTime.value;
55156
55262
  propsFromDispatch.setCineFps(lodash$1.round(1000 / frameTime, 3) || 3);
55263
+ } // 初始化本地存储的工具初始状态(目前包含:自动联动)
55264
+
55265
+
55266
+ toolLocalDefaultState = window.localStorage.getItem('hellfire-link-tool-default-state');
55267
+
55268
+ if (toolLocalDefaultState && toolLocalDefaultState === 'open') {
55269
+ propsFromDispatch.activeDicomFunction("Link");
55270
+ realActiveIndex = getCurrentRealActiveIndex();
55271
+ openAutoLink({
55272
+ col: col,
55273
+ row: row,
55274
+ currentScrollLine: currentScrollLine,
55275
+ activeIndex: activeIndex,
55276
+ seriesCurrentIndex: seriesCurrentIndex,
55277
+ series: series,
55278
+ setLinkSeries: propsFromDispatch.setLinkSeries,
55279
+ linkSynchronizer: linkSynchronizer,
55280
+ linkScrollSynchronizer: linkScrollSynchronizer,
55281
+ realActiveIndex: realActiveIndex
55282
+ });
55157
55283
  }
55158
55284
 
55159
- case 61:
55285
+ case 63:
55160
55286
  case "end":
55161
55287
  return _context.stop();
55162
55288
  }
@@ -55221,6 +55347,13 @@ var mergeProps$t = function mergeProps(propsFromState, propsFromDispatch, ownPro
55221
55347
  },
55222
55348
  resetKeyImages: function resetKeyImages(data) {
55223
55349
  propsFromDispatch.setKeyImage(data);
55350
+ },
55351
+ setReduxOnStudyChange: function setReduxOnStudyChange(nextStudyData) {
55352
+ if (!nextStudyData) {
55353
+ return;
55354
+ }
55355
+
55356
+ propsFromDispatch.setOriginStudyData(nextStudyData);
55224
55357
  }
55225
55358
  });
55226
55359
  };
@@ -55247,7 +55380,11 @@ var ConnectedDicomView = reactRedux.connect(mapStateToProps$u, {
55247
55380
  setActiveTool: setActiveTool,
55248
55381
  setCineFps: setCineFps,
55249
55382
  closeGlobalLoading: closeGlobalLoading,
55250
- setKeyImage: setKeyImage
55383
+ setKeyImage: setKeyImage,
55384
+ setOriginStudyData: setOriginStudyData,
55385
+ setSeriesCurrentIndex: setSeriesCurrentIndex,
55386
+ setSeries: setSeries,
55387
+ setLinkSeries: setLinkSeries
55251
55388
  }, mergeProps$t, withRef())(DicomView);
55252
55389
 
55253
55390
  function withRef() {