@equinor/echo-framework 0.8.5 → 0.8.8

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.
Files changed (96) hide show
  1. package/dist/components/contextualAppLinks/externalLinkButtons/externalLinkButtons.helpers.d.ts +47 -0
  2. package/dist/components/contextualAppLinks/externalLinkButtons/externalLinkButtons.helpers.test.d.ts +1 -0
  3. package/dist/components/contextualAppLinks/externalLinkButtons/externalLinkToCommApp.d.ts +14 -0
  4. package/dist/components/contextualAppLinks/externalLinkButtons/externalLinkToMcApp.d.ts +3 -1
  5. package/dist/components/contextualAppLinks/externalLinkButtons/externalLinkToProCoSys.d.ts +1 -2
  6. package/dist/components/contextualAppLinks/externalLinkButtons/externalLinkToSap.d.ts +3 -0
  7. package/dist/components/contextualAppLinks/externalLinkButtons/externalLinkToSemiDoc.d.ts +4 -0
  8. package/dist/components/contextualAppLinks/externalLinkButtons/externalLinkToTr2000.d.ts +2 -0
  9. package/dist/components/contextualAppLinks/externalLinkButtons/iconButtonSpinner.d.ts +18 -0
  10. package/dist/components/contextualAppLinks/externalLinkButtons/index.d.ts +1 -0
  11. package/dist/components/externalLinkButton/externalLinkButton.d.ts +16 -7
  12. package/dist/components/panel/corePanelLeft.d.ts +1 -4
  13. package/dist/components/panel/corePanelRight.d.ts +1 -4
  14. package/dist/components/realTimeData/hooks/useSignalR.d.ts +3 -2
  15. package/dist/coreApplication/EchoContent.d.ts +0 -1
  16. package/dist/coreApplication/index.d.ts +0 -1
  17. package/dist/hooks/hookLibrary.d.ts +2 -8
  18. package/dist/hooks/index.d.ts +0 -1
  19. package/dist/hooks/useSemi.d.ts +11 -7
  20. package/dist/hooks/useTagDetails.d.ts +10 -3
  21. package/dist/index.d.ts +12 -7
  22. package/dist/services/api/api-manager.d.ts +1 -1
  23. package/dist/services/api/api-tag-details.d.ts +18 -0
  24. package/dist/services/api/api-tag-details.test.d.ts +1 -0
  25. package/dist/services/api/api-tags.d.ts +17 -0
  26. package/dist/services/api/api-tags.test.d.ts +1 -0
  27. package/dist/services/api/index.d.ts +1 -0
  28. package/dist/services/echopediaAnalyticsModule/echopediaAnalyticsModule.d.ts +1 -0
  29. package/dist/src/components/containers/layout.module.css.js +1 -4
  30. package/dist/src/components/containers/layouts.js +10 -127
  31. package/dist/src/components/contextualAppLinks/externalAppsMenu.js +4 -4
  32. package/dist/src/components/contextualAppLinks/externalLinkButtons/allExternalLinks.js +66 -11
  33. package/dist/src/components/contextualAppLinks/externalLinkButtons/externalLinkButtons.helpers.js +169 -0
  34. package/dist/src/components/contextualAppLinks/externalLinkButtons/externalLinkToCommApp.js +93 -0
  35. package/dist/src/components/contextualAppLinks/externalLinkButtons/externalLinkToMcApp.js +60 -5
  36. package/dist/src/components/contextualAppLinks/externalLinkButtons/externalLinkToProCoSys.js +43 -11
  37. package/dist/src/components/contextualAppLinks/externalLinkButtons/externalLinkToSafeX.js +1 -1
  38. package/dist/src/components/contextualAppLinks/externalLinkButtons/externalLinkToSap.js +58 -11
  39. package/dist/src/components/contextualAppLinks/externalLinkButtons/externalLinkToSemiDoc.js +16 -5
  40. package/dist/src/components/contextualAppLinks/externalLinkButtons/externalLinkToStid.js +1 -1
  41. package/dist/src/components/contextualAppLinks/externalLinkButtons/externalLinkToTr2000.js +67 -16
  42. package/dist/src/components/contextualAppLinks/externalLinkButtons/iconButtonSpinner.js +44 -0
  43. package/dist/src/components/contextualAppLinks/externalLinkButtons/iconButtonSpinner.module.css.js +15 -0
  44. package/dist/src/components/externalLinkButton/externalLinkButton.js +95 -34
  45. package/dist/src/components/externalLinkButton/externalLinkButton.module.css.js +5 -2
  46. package/dist/src/components/footer/footer.module.css.js +1 -1
  47. package/dist/src/components/panel/corePanelLeft.js +2 -5
  48. package/dist/src/components/panel/corePanelLeft.module.css.js +1 -1
  49. package/dist/src/components/panel/corePanelRight.js +2 -5
  50. package/dist/src/components/panel/corePanelRight.module.css.js +1 -1
  51. package/dist/src/components/realTimeData/components/connectorForIMSTag/IMSConnector.module.css.js +3 -2
  52. package/dist/src/components/realTimeData/components/connectorForIMSTag/RealTimeConnectorForIMSTag.js +32 -7
  53. package/dist/src/components/realTimeData/hooks/useSignalR.js +4 -2
  54. package/dist/src/coreApplication/EchoContent.js +2 -11
  55. package/dist/src/globalStyles.css.js +1 -1
  56. package/dist/src/hooks/hookLibrary.js +0 -9
  57. package/dist/src/hooks/index.js +0 -3
  58. package/dist/src/hooks/useSemi.js +40 -14
  59. package/dist/src/hooks/useTagDetails.js +116 -45
  60. package/dist/src/icons/common/CommissionApp-icon.png.js +7 -0
  61. package/dist/src/icons/common/Evision.svg.js +3 -2
  62. package/dist/src/icons/common/Fusion.svg.js +30 -25
  63. package/dist/src/icons/common/McApp.svg.js +10 -6
  64. package/dist/src/icons/common/Notification.svg.js +82 -0
  65. package/dist/src/icons/common/ProCoSysIcon.svg.js +3 -2
  66. package/dist/src/icons/common/Robim.svg.js +67 -0
  67. package/dist/src/icons/common/SapLogo.svg.js +5 -4
  68. package/dist/src/icons/common/SemiIcon.svg.js +11 -11
  69. package/dist/src/icons/common/Stid.svg.js +3 -2
  70. package/dist/src/icons/common/TR2000.svg.js +8 -6
  71. package/dist/src/icons/common/WorkOrder.svg.js +72 -0
  72. package/dist/src/icons/common/Yammer.svg.js +2 -1
  73. package/dist/src/icons/common/satos-logo.png.js +7 -0
  74. package/dist/src/index.js +15 -7
  75. package/dist/src/services/api/api-manager.js +2 -2
  76. package/dist/src/services/api/api-realtimedata.js +3 -1
  77. package/dist/src/services/api/api-tag-details.js +66 -0
  78. package/dist/src/services/api/api-tags.js +29 -0
  79. package/dist/src/services/echopediaAnalyticsModule/echopediaAnalyticsModule.js +10 -0
  80. package/dist/src/types/pingableSources.js +1 -0
  81. package/dist/src/utils/navigationUtils.js +28 -0
  82. package/dist/src/utils/plantInfo.js +1 -0
  83. package/dist/types/api-proCoSysTagResponse.d.ts +8 -0
  84. package/dist/types/hookLibrary.d.ts +0 -4
  85. package/dist/types/pingableSources.d.ts +2 -1
  86. package/dist/utils/index.d.ts +1 -0
  87. package/dist/utils/navigationUtils.d.ts +7 -0
  88. package/dist/utils/navigationUtils.test.d.ts +1 -0
  89. package/dist/utils/plantInfo.d.ts +6 -0
  90. package/dist/utils/plantInfo.test.d.ts +1 -0
  91. package/package.json +3 -3
  92. package/dist/coreApplication/EchoBarComponent.d.ts +0 -6
  93. package/dist/hooks/useScreenOrientation.d.ts +0 -1
  94. package/dist/src/coreApplication/EchoBarComponent.js +0 -190
  95. package/dist/src/coreApplication/EchoContent.module.css.js +0 -21
  96. package/dist/src/hooks/useScreenOrientation.js +0 -50
@@ -6,10 +6,16 @@ Object.defineProperty(exports, '__esModule', {
6
6
  value: true
7
7
  });
8
8
 
9
+ var _tslib = require('../../../../_virtual/_tslib.js');
10
+
11
+ var EchoCore = require('@equinor/echo-core');
12
+
9
13
  var React = require('react');
10
14
 
11
15
  var externalLinkButton = require('../../externalLinkButton/externalLinkButton.js');
12
16
 
17
+ var externalLinkButtons_helpers = require('./externalLinkButtons.helpers.js');
18
+
13
19
  function _interopDefaultLegacy(e) {
14
20
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
15
21
  'default': e
@@ -18,19 +24,68 @@ function _interopDefaultLegacy(e) {
18
24
 
19
25
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
26
  /**
21
- * External link button to McApp.
27
+ * External link button to Mechanical Completion web app.
22
28
  *
23
29
  * @param {string} tagNo The tag's number to open in McApp.
30
+ * @param {string} instCode Plant installation code.
24
31
  * @returns {React.FC<ExternalLinkToMcAppProps>} React component.
25
32
  */
26
33
 
27
34
 
28
35
  var ExternalLinkToMcApp = function ExternalLinkToMcApp(_ref) {
29
- var tagNo = _ref.tagNo;
30
- return /*#__PURE__*/React__default["default"].createElement(externalLinkButton["default"], {
31
- buttonName: "McApp",
36
+ var tagNo = _ref.tagNo,
37
+ instCode = _ref.instCode;
38
+ var proCoSysPlantCode = EchoCore.useProCoSysPlantId();
39
+
40
+ function createUrl(params) {
41
+ return _tslib.__awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
42
+ var _yield$externalLinkBu, tagDetails, proCoSysTag, hasError;
43
+
44
+ return regeneratorRuntime.wrap(function _callee$(_context) {
45
+ while (1) {
46
+ switch (_context.prev = _context.next) {
47
+ case 0:
48
+ _context.next = 2;
49
+ return externalLinkButtons_helpers.getTagDetailsAndProCoSysData(Object.assign({}, params));
50
+
51
+ case 2:
52
+ _yield$externalLinkBu = _context.sent;
53
+ tagDetails = _yield$externalLinkBu.tagDetails;
54
+ proCoSysTag = _yield$externalLinkBu.proCoSysTag;
55
+ hasError = _yield$externalLinkBu.hasError;
56
+ return _context.abrupt("return", hasError ? undefined : "https://apps.procosys.com/mc/".concat(proCoSysPlantCode, "/").concat(tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.projectCode, "/Tag/").concat(proCoSysTag === null || proCoSysTag === void 0 ? void 0 : proCoSysTag.id));
57
+
58
+ case 7:
59
+ case "end":
60
+ return _context.stop();
61
+ }
62
+ }
63
+ }, _callee);
64
+ }));
65
+ }
66
+
67
+ return /*#__PURE__*/React__default["default"].createElement(externalLinkButton.ExternalLinkButton, {
68
+ buttonName: "Mc App",
32
69
  buttonIcon: "McApp",
33
- linkTo: "mcapp://v1:tagscope:".concat(tagNo),
70
+ getUrlToOpen: function getUrlToOpen() {
71
+ return _tslib.__awaiter(void 0, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
72
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
73
+ while (1) {
74
+ switch (_context2.prev = _context2.next) {
75
+ case 0:
76
+ return _context2.abrupt("return", createUrl({
77
+ tagNo: tagNo,
78
+ instCode: instCode
79
+ }));
80
+
81
+ case 1:
82
+ case "end":
83
+ return _context2.stop();
84
+ }
85
+ }
86
+ }, _callee2);
87
+ }));
88
+ },
34
89
  buttonStyle: externalLinkButton.ExternalLinkButtonStyle.Rounded
35
90
  });
36
91
  };
@@ -6,14 +6,16 @@ Object.defineProperty(exports, '__esModule', {
6
6
  value: true
7
7
  });
8
8
 
9
+ var _tslib = require('../../../../_virtual/_tslib.js');
10
+
9
11
  var EchoCore = require('@equinor/echo-core');
10
12
 
11
13
  var React = require('react');
12
14
 
13
- var useTagDetails = require('../../../hooks/useTagDetails.js');
14
-
15
15
  var externalLinkButton = require('../../externalLinkButton/externalLinkButton.js');
16
16
 
17
+ var externalLinkButtons_helpers = require('./externalLinkButtons.helpers.js');
18
+
17
19
  function _interopDefaultLegacy(e) {
18
20
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
19
21
  'default': e
@@ -23,10 +25,9 @@ function _interopDefaultLegacy(e) {
23
25
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
26
  /**
25
27
  * External link button to ProCoSys.
26
- * Will only render if the passed tagNo has any tag details in the actually selected plant.
27
28
  *
28
29
  * @param {string} tagNo The tag's number to open in ProCoSys.
29
- * @param {string} instCode Plant installation code.
30
+ * @param {TagDetailsDto} tagDetails The given tags detailed information.
30
31
  * @returns {React.FC<ExternalLinkToProCoSysProps>} React component.
31
32
  */
32
33
 
@@ -34,17 +35,48 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
34
35
  var ExternalLinkToProCoSys = function ExternalLinkToProCoSys(_ref) {
35
36
  var tagNo = _ref.tagNo,
36
37
  instCode = _ref.instCode;
37
- var tagDetails = useTagDetails.useTagDetails({
38
- tagNo: tagNo,
39
- instCode: instCode
40
- });
41
38
  var proCoSysPlantCode = EchoCore.useProCoSysPlantId();
42
- return tagDetails ? /*#__PURE__*/React__default["default"].createElement(externalLinkButton["default"], {
39
+
40
+ function createUrl(params) {
41
+ return _tslib.__awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
42
+ var _yield$externalLinkBu, tagDetails, hasError;
43
+
44
+ return regeneratorRuntime.wrap(function _callee$(_context) {
45
+ while (1) {
46
+ switch (_context.prev = _context.next) {
47
+ case 0:
48
+ _context.next = 2;
49
+ return externalLinkButtons_helpers.getTagDetailsWithErrorHandling({
50
+ tagNo: params.tagNo,
51
+ instCode: params.instCode
52
+ });
53
+
54
+ case 2:
55
+ _yield$externalLinkBu = _context.sent;
56
+ tagDetails = _yield$externalLinkBu.tagDetails;
57
+ hasError = _yield$externalLinkBu.hasError;
58
+ return _context.abrupt("return", hasError ? undefined : "https://procosys.equinor.com/".concat(proCoSysPlantCode, "/Link/TAG?TagNo=").concat(tagNo, "&project=").concat(tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.projectCode));
59
+
60
+ case 6:
61
+ case "end":
62
+ return _context.stop();
63
+ }
64
+ }
65
+ }, _callee);
66
+ }));
67
+ }
68
+
69
+ return /*#__PURE__*/React__default["default"].createElement(externalLinkButton.ExternalLinkButton, {
43
70
  buttonName: "ProCoSys",
44
71
  buttonIcon: "ProCoSys",
45
- linkTo: "https://procosys.equinor.com/".concat(proCoSysPlantCode, "/Link/TAG?TagNo=").concat(tagNo, "&project=").concat(tagDetails.projectCode),
72
+ getUrlToOpen: function getUrlToOpen() {
73
+ return createUrl({
74
+ tagNo: tagNo,
75
+ instCode: instCode
76
+ });
77
+ },
46
78
  buttonStyle: externalLinkButton.ExternalLinkButtonStyle.Rounded
47
- }) : null;
79
+ });
48
80
  };
49
81
 
50
82
  exports.ExternalLinkToProCoSys = ExternalLinkToProCoSys;
@@ -27,7 +27,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
27
27
 
28
28
  var ExternalLinkToSafeX = function ExternalLinkToSafeX(_ref) {
29
29
  var tag = _ref.tag;
30
- return /*#__PURE__*/React__default["default"].createElement(externalLinkButton["default"], {
30
+ return /*#__PURE__*/React__default["default"].createElement(externalLinkButton.ExternalLinkButton, {
31
31
  buttonName: "SafeX",
32
32
  buttonIcon: "SafeX",
33
33
  linkTo: "https://safex.equinor.com/search?keyword=".concat(tag.description),
@@ -6,16 +6,18 @@ Object.defineProperty(exports, '__esModule', {
6
6
  value: true
7
7
  });
8
8
 
9
+ var _tslib = require('../../../../_virtual/_tslib.js');
10
+
9
11
  var EchoUtils = require('@equinor/echo-utils');
10
12
 
11
13
  var React = require('react');
12
14
 
13
- var useTagDetails = require('../../../hooks/useTagDetails.js');
14
-
15
15
  var pingableSources = require('../../../types/pingableSources.js');
16
16
 
17
17
  var externalLinkButton = require('../../externalLinkButton/externalLinkButton.js');
18
18
 
19
+ var externalLinkButtons_helpers = require('./externalLinkButtons.helpers.js');
20
+
19
21
  function _interopDefaultLegacy(e) {
20
22
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
21
23
  'default': e
@@ -28,34 +30,79 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
28
30
  /**
29
31
  * External link button to SAP.
30
32
  * Will only render if the passed tagNo has any tag details in the actually selected plant and SAP is available.
33
+ * It pings SAP to determine whether is available or not.
31
34
  *
32
35
  * @param {string} tagNo The tag's number to open in SAP.
33
36
  * @param {string} instCode Plant installation code.
37
+ * @param {(isLoading: boolean) => void} loadingStatusCallback Callback which provides an 'isLoading' param reflecting the actual loading state of the ping to SAP.
34
38
  * @returns {React.FC<ExternalLinkToSapProps>} React component.
35
39
  */
36
40
 
37
41
 
38
42
  var ExternalLinkToSap = function ExternalLinkToSap(_ref) {
39
43
  var tagNo = _ref.tagNo,
40
- instCode = _ref.instCode;
44
+ instCode = _ref.instCode,
45
+ loadingStatusCallback = _ref.loadingStatusCallback;
41
46
  var _EchoUtils__default$d = EchoUtils__default["default"].Hooks,
42
47
  usePing = _EchoUtils__default$d.usePing,
43
48
  useIsIosDevice = _EchoUtils__default$d.useIsIosDevice;
44
- var tagDetails = useTagDetails.useTagDetails({
45
- tagNo: tagNo,
46
- instCode: instCode
47
- });
48
49
 
49
50
  var _usePing = usePing(pingableSources.PingableSources.Sap),
50
- isSourceAvailable = _usePing.isSourceAvailable;
51
+ isSourceAvailable = _usePing.isSourceAvailable,
52
+ isPingLoading = _usePing.isPingLoading;
51
53
 
52
54
  var isIosDevice = useIsIosDevice();
53
- return tagDetails && (isSourceAvailable || isIosDevice) ? /*#__PURE__*/React__default["default"].createElement(externalLinkButton["default"], {
55
+
56
+ function createUrl(params) {
57
+ return _tslib.__awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
58
+ var _yield$externalLinkBu, tagDetails, hasError;
59
+
60
+ return regeneratorRuntime.wrap(function _callee$(_context) {
61
+ while (1) {
62
+ switch (_context.prev = _context.next) {
63
+ case 0:
64
+ _context.next = 2;
65
+ return externalLinkButtons_helpers.getTagDetailsWithErrorHandling({
66
+ tagNo: params.tagNo,
67
+ instCode: params.instCode
68
+ });
69
+
70
+ case 2:
71
+ _yield$externalLinkBu = _context.sent;
72
+ tagDetails = _yield$externalLinkBu.tagDetails;
73
+ hasError = _yield$externalLinkBu.hasError;
74
+ return _context.abrupt("return", hasError ? undefined : "https://p03web.statoil.no/sap/bc/gui/sap/its/webgui?sap-client=505&sap-language=EN&~transaction=*ih06%20STRNO-LOW=".concat(tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.plantNo, "-").concat(tagNo, "#"));
75
+
76
+ case 6:
77
+ case "end":
78
+ return _context.stop();
79
+ }
80
+ }
81
+ }, _callee);
82
+ }));
83
+ }
84
+
85
+ React.useEffect(function () {
86
+ if (!!loadingStatusCallback) {
87
+ loadingStatusCallback(isPingLoading);
88
+ }
89
+ }, [isPingLoading, loadingStatusCallback]);
90
+
91
+ if (!isIosDevice && !isSourceAvailable) {
92
+ return null;
93
+ }
94
+
95
+ return /*#__PURE__*/React__default["default"].createElement(externalLinkButton.ExternalLinkButton, {
54
96
  buttonName: "Sap",
55
97
  buttonIcon: "Sap",
56
- linkTo: "https://p03web.statoil.no/sap/bc/gui/sap/its/webgui?sap-client=505&sap-language=EN&~transaction=*ih06%20STRNO-LOW=".concat(tagDetails.plantNo, "-").concat(tagNo, "#"),
98
+ getUrlToOpen: function getUrlToOpen() {
99
+ return createUrl({
100
+ tagNo: tagNo,
101
+ instCode: instCode
102
+ });
103
+ },
57
104
  buttonStyle: externalLinkButton.ExternalLinkButtonStyle.Rounded
58
- }) : null;
105
+ });
59
106
  };
60
107
 
61
108
  exports.ExternalLinkToSap = ExternalLinkToSap;
@@ -24,20 +24,31 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
24
  * Will only render if Semi is available for the passed tagNo.
25
25
  *
26
26
  * @param {string} tagNo The tag's number to open in Semi.
27
+ * @param {string} instCode Plant installation code.
28
+ * @param {(isLoading: boolean) => void} loadingStatusCallback Callback which provides an 'isLoading' param reflecting the actual API call state for checking Semi availability.
27
29
  * @returns {React.FC<ExternalLinkToSemiDocProps>} React component.
28
30
  */
29
31
 
30
32
 
31
33
  var ExternalLinkToSemiDoc = function ExternalLinkToSemiDoc(_ref) {
32
- var tagNo = _ref.tagNo;
34
+ var tagNo = _ref.tagNo,
35
+ instCode = _ref.instCode,
36
+ loadingStatusCallback = _ref.loadingStatusCallback;
33
37
 
34
38
  var _useSemi$useSemi = useSemi.useSemi({
35
- tagNo: tagNo
39
+ tagNo: tagNo,
40
+ instCode: instCode
36
41
  }),
37
42
  isSemiDocumentAvailable = _useSemi$useSemi.isSemiDocumentAvailable,
38
- semiDocumentId = _useSemi$useSemi.semiDocumentId;
39
-
40
- return isSemiDocumentAvailable ? /*#__PURE__*/React__default["default"].createElement(externalLinkButton["default"], {
43
+ semiDocumentId = _useSemi$useSemi.semiDocumentId,
44
+ isSemiLoading = _useSemi$useSemi.isSemiLoading;
45
+
46
+ React.useEffect(function () {
47
+ if (!!loadingStatusCallback) {
48
+ loadingStatusCallback(isSemiLoading);
49
+ }
50
+ }, [isSemiLoading, loadingStatusCallback]);
51
+ return isSemiDocumentAvailable && !isSemiLoading ? /*#__PURE__*/React__default["default"].createElement(externalLinkButton.ExternalLinkButton, {
41
52
  buttonName: "Semi",
42
53
  buttonIcon: "Semi",
43
54
  linkTo: "https://semi.equinor.com/uploaddocumentation?semiId=".concat(semiDocumentId),
@@ -29,7 +29,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
29
29
  var ExternalLinkToStid = function ExternalLinkToStid(_ref) {
30
30
  var tagNo = _ref.tagNo,
31
31
  instCode = _ref.instCode;
32
- return /*#__PURE__*/React__default["default"].createElement(externalLinkButton["default"], {
32
+ return /*#__PURE__*/React__default["default"].createElement(externalLinkButton.ExternalLinkButton, {
33
33
  buttonName: "STID",
34
34
  buttonIcon: "Stid",
35
35
  linkTo: "https://stid.equinor.com/".concat(instCode, "/tag/").concat(tagNo),
@@ -1,5 +1,17 @@
1
1
  'use strict';
2
2
 
3
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
+
5
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
+
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(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(o, minLen); }
8
+
9
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
+
11
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
12
+
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+
3
15
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
16
 
5
17
  Object.defineProperty(exports, '__esModule', {
@@ -8,8 +20,12 @@ Object.defineProperty(exports, '__esModule', {
8
20
 
9
21
  var EchoCore = require('@equinor/echo-core');
10
22
 
23
+ var EchoUtils = require('@equinor/echo-utils');
24
+
11
25
  var React = require('react');
12
26
 
27
+ require('react-router-dom');
28
+
13
29
  var useTagDetails = require('../../../hooks/useTagDetails.js');
14
30
 
15
31
  var externalLinkButton = require('../../externalLinkButton/externalLinkButton.js');
@@ -20,6 +36,8 @@ function _interopDefaultLegacy(e) {
20
36
  };
21
37
  }
22
38
 
39
+ var EchoUtils__default = /*#__PURE__*/_interopDefaultLegacy(EchoUtils);
40
+
23
41
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
42
  /**
25
43
  * External link button to TR2000.
@@ -27,35 +45,68 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
27
45
  *
28
46
  * @param {string} tagNo The tag's number to open in TR2000.
29
47
  * @param {string} instCode Plant installation code.
48
+ * @param {(isLoading: boolean) => void} loadingStatusCallback Callback which provides an 'isLoading' param reflecting the actual API call state for checking TR2000 availability.
30
49
  * @returns {React.FC<ExternalLinkToTr2000Props>} React component.
31
50
  */
32
51
 
33
52
 
34
53
  var ExternalLinkToTr2000 = function ExternalLinkToTr2000(_ref) {
35
54
  var tagNo = _ref.tagNo,
36
- instCode = _ref.instCode;
37
- var tagDetails = useTagDetails.useTagDetails({
55
+ instCode = _ref.instCode,
56
+ loadingStatusCallback = _ref.loadingStatusCallback;
57
+ var useStateSafe = EchoUtils__default["default"].Hooks.useStateSafe;
58
+ var selectedPlant = EchoCore.EchoSettings.plant.getSelectedPlant();
59
+
60
+ var _useStateSafe = useStateSafe(''),
61
+ _useStateSafe2 = _slicedToArray(_useStateSafe, 2),
62
+ url = _useStateSafe2[0],
63
+ setUrl = _useStateSafe2[1];
64
+
65
+ var _useStateSafe3 = useStateSafe(false),
66
+ _useStateSafe4 = _slicedToArray(_useStateSafe3, 2),
67
+ hasTr2000 = _useStateSafe4[0],
68
+ setHasTr2000 = _useStateSafe4[1];
69
+
70
+ var _useTagDetails$useTag = useTagDetails.useTagDetails({
38
71
  tagNo: tagNo,
39
72
  instCode: instCode
40
- });
41
- var selectedPlant = EchoCore.EchoSettings.plant.getSelectedPlant();
73
+ }),
74
+ tagDetails = _useTagDetails$useTag.tagDetails,
75
+ hasError = _useTagDetails$useTag.hasError,
76
+ isTagDetailsLoading = _useTagDetails$useTag.isTagDetailsLoading;
42
77
 
43
- var hasTr2000 = function hasTr2000() {
44
- var valveOk = (tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.tagCategory) === 9 && !!tagDetails.valveDatash;
45
- var pipeOk = (tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.tagCategory) === 6 && !!tagDetails.pipingClass && !!tagDetails.nomDiam;
46
- return (valveOk || pipeOk) && !!(selectedPlant === null || selectedPlant === void 0 ? void 0 : selectedPlant.hasTr2000);
47
- };
78
+ React.useEffect(function () {
79
+ function evaluateTr2000Status(tagDetails) {
80
+ var valveOk = (tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.tagCategory) === 9 && !!tagDetails.valveDatash;
81
+ var pipeOk = (tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.tagCategory) === 6 && !!tagDetails.pipingClass && !!tagDetails.nomDiam;
82
+ return (valveOk || pipeOk) && !!(selectedPlant === null || selectedPlant === void 0 ? void 0 : selectedPlant.hasTr2000);
83
+ }
48
84
 
49
- var createTr2000Link = function createTr2000Link() {
50
- var ds = (tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.tagCategory) === 6 ? 'PCS' : 'VDS';
51
- var id = (tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.tagCategory) === 6 ? tagDetails.pipingClass : tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.valveDatash;
52
- return "https://tr2000.equinor.com/TR2000/integration/get_datasheet.jsp?SYS=STID&DS=".concat(ds, "&ID=").concat(id, "&PLANT=").concat(instCode);
53
- };
85
+ if (!!loadingStatusCallback) {
86
+ loadingStatusCallback(isTagDetailsLoading);
87
+ }
88
+
89
+ if (hasError) {
90
+ setHasTr2000(false);
91
+ return;
92
+ }
93
+
94
+ setHasTr2000(evaluateTr2000Status(tagDetails));
95
+
96
+ if (hasTr2000) {
97
+ var ds = (tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.tagCategory) === 6 ? 'PCS' : 'VDS';
98
+ var id = (tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.tagCategory) === 6 ? tagDetails.pipingClass : tagDetails === null || tagDetails === void 0 ? void 0 : tagDetails.valveDatash;
99
+ setUrl("https://tr2000.equinor.com/TR2000/integration/get_datasheet.jsp?SYS=STID&DS=".concat(ds, "&ID=").concat(id, "&PLANT=").concat(instCode));
100
+ }
54
101
 
55
- return tagDetails && hasTr2000() ? /*#__PURE__*/React__default["default"].createElement(externalLinkButton["default"], {
102
+ if (!!loadingStatusCallback) {
103
+ loadingStatusCallback(isTagDetailsLoading);
104
+ }
105
+ }, [tagNo, instCode, loadingStatusCallback, setUrl, setHasTr2000, isTagDetailsLoading, tagDetails, hasError, hasTr2000, selectedPlant]);
106
+ return hasTr2000 && !hasError ? /*#__PURE__*/React__default["default"].createElement(externalLinkButton.ExternalLinkButton, {
56
107
  buttonName: "TR2000",
57
108
  buttonIcon: "TR2000",
58
- linkTo: createTr2000Link(),
109
+ linkTo: url,
59
110
  buttonStyle: externalLinkButton.ExternalLinkButtonStyle.Rounded
60
111
  }) : null;
61
112
  };
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, '__esModule', {
6
+ value: true
7
+ });
8
+
9
+ var edsCoreReact = require('@equinor/eds-core-react');
10
+
11
+ var React = require('react');
12
+
13
+ var iconButtonSpinner_module = require('./iconButtonSpinner.module.css.js');
14
+
15
+ function _interopDefaultLegacy(e) {
16
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
17
+ 'default': e
18
+ };
19
+ }
20
+
21
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
22
+ /**
23
+ * Local component for external link buttons. Provides a spinner overlay for any icon buttons, which might have any async calls.
24
+ * @param {Object} param
25
+ * @param {number} param.size The size of the spinner. Default value is 24.
26
+ * @param {Object} param.customClassNames Optional custom class names to customize the component's parts.
27
+ * @param {string} param.customClassNames.spinner Class name applied on the spinner.
28
+ * @param {string} param.customClassNames.container Class name applied on the container element.
29
+ */
30
+
31
+
32
+ var IconButtonSpinner = function IconButtonSpinner(_ref) {
33
+ var customClassNames = _ref.customClassNames,
34
+ size = _ref.size;
35
+ return /*#__PURE__*/React__default["default"].createElement("div", {
36
+ className: "".concat((customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.container) || '', " ").concat(iconButtonSpinner_module["default"].container)
37
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
38
+ className: "".concat((customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.spinner) || '', " ").concat(iconButtonSpinner_module["default"].spinner)
39
+ }, /*#__PURE__*/React__default["default"].createElement(edsCoreReact.Progress.Circular, {
40
+ size: size || 24
41
+ })));
42
+ };
43
+
44
+ exports.IconButtonSpinner = IconButtonSpinner;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ });
6
+
7
+ var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
8
+
9
+ var css_248z = ".iconButtonSpinner-module_container__56QXT{height:48px;position:relative;width:48px}.iconButtonSpinner-module_spinner__Rym9p{position:relative;text-align:center;top:50%;transform:translateY(-50%)}";
10
+ var styles = {
11
+ "container": "iconButtonSpinner-module_container__56QXT",
12
+ "spinner": "iconButtonSpinner-module_spinner__Rym9p"
13
+ };
14
+ styleInject_es["default"](css_248z);
15
+ exports["default"] = styles;