graphdb-workbench 3.2.0-RC1 → 3.2.0-RC2
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/{38644.763094ed8176a107ad43.bundle.js → 38644.08569e93394c46036f53.bundle.js} +2 -2
- package/dist/{38644.763094ed8176a107ad43.bundle.js.map → 38644.08569e93394c46036f53.bundle.js.map} +1 -1
- package/dist/{39518.7dd8fe04651f2fdbc846.bundle.js → 39518.2923a17f1d69e5a0d957.bundle.js} +2 -2
- package/dist/{39518.7dd8fe04651f2fdbc846.bundle.js.map → 39518.2923a17f1d69e5a0d957.bundle.js.map} +1 -1
- package/dist/{53174.4a1ebee9fa3f2bcebf90.bundle.js → 53174.42c4b8519fa16f6eedc1.bundle.js} +2 -2
- package/dist/53174.42c4b8519fa16f6eedc1.bundle.js.map +1 -0
- package/dist/60560.1a6c5df198a1426b0fb7.bundle.js +2 -0
- package/dist/60560.1a6c5df198a1426b0fb7.bundle.js.map +1 -0
- package/dist/{67888.00b7ea58032ed4b8bfcb.bundle.js → 67888.d6afafad6e3a017cb8b3.bundle.js} +2 -2
- package/dist/{67888.00b7ea58032ed4b8bfcb.bundle.js.map → 67888.d6afafad6e3a017cb8b3.bundle.js.map} +1 -1
- package/dist/{7815.182dcef7161cdc589db7.bundle.js → 7815.49f59c286fc0d0b306ab.bundle.js} +2 -2
- package/dist/{7815.182dcef7161cdc589db7.bundle.js.map → 7815.49f59c286fc0d0b306ab.bundle.js.map} +1 -1
- package/dist/82206.d593f5b11aa103af5e3d.bundle.js +2 -0
- package/dist/82206.d593f5b11aa103af5e3d.bundle.js.map +1 -0
- package/dist/{82926.d6c48c23b6e1f89b3d8a.bundle.js → 82926.51d23e16d60e02dc4133.bundle.js} +2 -2
- package/dist/{82926.d6c48c23b6e1f89b3d8a.bundle.js.map → 82926.51d23e16d60e02dc4133.bundle.js.map} +1 -1
- package/dist/94519.783661f9e08288cddc88.bundle.js +2 -0
- package/dist/94519.783661f9e08288cddc88.bundle.js.map +1 -0
- package/dist/{99448.30713a59be1313c4b089.bundle.js → 99448.8c045dc098cc67d199aa.bundle.js} +2 -2
- package/dist/{99448.30713a59be1313c4b089.bundle.js.map → 99448.8c045dc098cc67d199aa.bundle.js.map} +1 -1
- package/dist/css/bootstrap-graphdb-theme.css +1 -1
- package/dist/css/clustermanagement.css +1 -1
- package/dist/css/graphql/graphql-playground.css +1 -1
- package/dist/css/graphs-vizualizations.css +1 -1
- package/dist/css/lib/ontotext-yasgui-web-component.css +1 -1
- package/dist/css/repositories.css +1 -1
- package/dist/css/shepherd-custom.css +1 -1
- package/dist/css/shuttle-multiselect.css +1 -1
- package/dist/i18n/locale-en.json +4 -4
- package/dist/i18n/locale-fr.json +4 -4
- package/dist/index.html +9 -9
- package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
- package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
- package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
- package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
- package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
- package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
- package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
- package/dist/js/angular/core/templates/search-resource-input.html +1 -1
- package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
- package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
- package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
- package/dist/js/angular/security/templates/user.html +5 -5
- package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
- package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +3 -3
- package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
- package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
- package/dist/legacyWorkbench.f089c68483807d9f2f74.js +3 -0
- package/dist/{legacyWorkbench.59130589967739705b23.js.map → legacyWorkbench.f089c68483807d9f2f74.js.map} +1 -1
- package/dist/{main.1183256fc7ce9d0d3fa3.js → main.f4b1fbec182d8427ee8a.js} +3 -3
- package/dist/{main.1183256fc7ce9d0d3fa3.js.map → main.f4b1fbec182d8427ee8a.js.map} +1 -1
- package/dist/pages/aclmanagement.html +2 -2
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/cluster-management/clusterInfo.html +3 -3
- package/dist/pages/create-index.html +1 -1
- package/dist/pages/createConnector.html +3 -0
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +8 -8
- package/dist/pages/graphs-visualizations.html +7 -7
- package/dist/pages/guides.html +1 -1
- package/dist/pages/home.html +1 -1
- package/dist/pages/import.html +2 -2
- package/dist/pages/jdbc-create.html +1 -1
- package/dist/pages/jdbc.html +1 -1
- package/dist/pages/login.html +1 -1
- package/dist/pages/monitor/backup-and-restore.html +1 -1
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +1 -1
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/plugins.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +1 -1
- package/dist/pages/repository.html +1 -1
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-editor.html +1 -1
- package/dist/pages/sparql-template-create.html +1 -1
- package/dist/pages/sparql-templates.html +1 -1
- package/dist/pages/ux-test1.html +3 -2
- package/dist/pages/webapi.html +2 -2
- package/dist/res/swagger5/index.html +11 -11
- package/dist/shared-components/cjs/onto-cookie-consent_2.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-footer_5.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js +1 -1
- package/dist/shared-components/collection/components/onto-cookie-consent/onto-cookie-consent.css +1 -1
- package/dist/shared-components/collection/components/onto-navbar/onto-navbar.css +1 -1
- package/dist/shared-components/collection/components/onto-operations-notification/onto-operations-notification.css +1 -1
- package/dist/shared-components/esm/onto-cookie-consent_2.entry.js +1 -1
- package/dist/shared-components/esm/onto-footer_5.entry.js +1 -1
- package/dist/shared-components/esm/onto-language-selector_9.entry.js +1 -1
- package/dist/shared-components/shared-components/{p-79cc3329.entry.js → p-46732fef.entry.js} +1 -1
- package/dist/shared-components/shared-components/p-6ca5791e.entry.js +1 -0
- package/dist/shared-components/shared-components/p-7df9e540.entry.js +1 -0
- package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
- package/dist/styleguide.bc9dcbaac347a57319f2.js +2 -0
- package/dist/styleguide.bc9dcbaac347a57319f2.js.map +1 -0
- package/package.json +1 -1
- package/dist/53174.4a1ebee9fa3f2bcebf90.bundle.js.map +0 -1
- package/dist/60560.0a055f16e4792468aabb.bundle.js +0 -2
- package/dist/60560.0a055f16e4792468aabb.bundle.js.map +0 -1
- package/dist/82206.cebb3d642554cf3e0113.bundle.js +0 -2
- package/dist/82206.cebb3d642554cf3e0113.bundle.js.map +0 -1
- package/dist/94519.32958f75080cd121b880.bundle.js +0 -2
- package/dist/94519.32958f75080cd121b880.bundle.js.map +0 -1
- package/dist/legacyWorkbench.59130589967739705b23.js +0 -3
- package/dist/shared-components/shared-components/p-09a97d11.entry.js +0 -1
- package/dist/shared-components/shared-components/p-12b2f278.entry.js +0 -1
- package/dist/styleguide.26e57b17e3dafc7b6bbe.js +0 -2
- package/dist/styleguide.26e57b17e3dafc7b6bbe.js.map +0 -1
- /package/dist/{legacyWorkbench.59130589967739705b23.js.LICENSE.txt → legacyWorkbench.f089c68483807d9f2f74.js.LICENSE.txt} +0 -0
- /package/dist/{main.1183256fc7ce9d0d3fa3.js.LICENSE.txt → main.f4b1fbec182d8427ee8a.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"94519.32958f75080cd121b880.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/models/clustermanagement/node-state.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/clustermanagement/cluster-management-constants.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/clustermanagement/services/cluster-drawing.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/clustermanagement/states.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/clustermanagement/directives/cluster-legend.directive.js"],"sourcesContent":["export const NodeState = {\n LEADER: 'LEADER',\n FOLLOWER: 'FOLLOWER',\n CANDIDATE: 'CANDIDATE',\n // node without icon\n OUT_OF_SYNC_BLANK: 'OUT_OF_SYNC_BLANK'\n};\n","import {NodeState} from \"./node-state\";\nimport {LinkState} from \"./states\";\n\nconst CLUSTER_MANAGEMENT_CONSTANTS = (function () {\n const SVG_NODE_WIDTH = 15;\n\n const PADDING_LEFT = 12;\n const PADDING_TOP = 12;\n\n const TITLE_PADDING_TOP = 15;\n const TITLE_FONT_SIZE = 13;\n const TITLE_FONT_WEIGHT = 700;\n const TITLE_LINE_HEIGHT = 18;\n const TITLE_COLOR = '#000000';\n\n const LEGEND_ITEMS_PADDING_TOP = 40;\n const LEGEND_ITEM_PADDING_TOP = 8;\n const LEGEND_ITEM_ICON_FONT_SIZE = 15;\n const LEGEND_ITEM_FONT_SIZE = 11;\n const LEGEND_ITEM_FONT_WEIGHT = 400;\n const LEGEND_ITEM_COLOR = '#000000';\n const LEGEND_ITEM_LINE_HEIGHT = 13;\n const LEGEND_ITEM_PADDING_LEFT = PADDING_LEFT + SVG_NODE_WIDTH;\n\n const BACKGROUND_PADDING = PADDING_LEFT * 2;\n\n const getLegendNodes = function () {\n const legendNodes = [];\n legendNodes.push({nodeState: NodeState.LEADER, customText: 'node_state_leader'});\n legendNodes.push({nodeState: NodeState.FOLLOWER, customText: 'node_state_follower'});\n // the out of sync node in the leged should not have an icon\n legendNodes.push({nodeState: NodeState.OUT_OF_SYNC_BLANK, customText: 'node_state_out_of_sync'});\n legendNodes.forEach((node, index) => node.id = index);\n return legendNodes;\n };\n\n const getLegendLinks = function () {\n const links = [];\n links.push({status: LinkState.IN_SYNC, linkTypeKey: 'link_state_in_sync'});\n links.push({status: LinkState.SYNCING, linkTypeKey: 'link_state_syncing'});\n links.push({status: LinkState.OUT_OF_SYNC, linkTypeKey: 'link_state_out_of_sync'});\n links.push({status: LinkState.RECEIVING_SNAPSHOT, linkTypeKey: 'link_state_receiving_snapshot'});\n links.forEach((link, index) => link.id = index);\n return links;\n };\n\n const getSyncStatuses = () => {\n return [\n {\n labelKey: 'node_state_candidate',\n classes: 'remixicon',\n icon: '\\ueb81', //ri-checkbox-circle-line\n }, {\n labelKey: 'node_state_no_cluster',\n classes: 'remixicon',\n icon: '\\ueb99', //ri-close-line\n }, {\n labelKey: 'link_state_out_of_sync',\n classes: 'remixicon',\n icon: '\\uea21', //ri-alert-line\n }, {\n labelKey: 'node_state_no_connection',\n classes: 'remixicon',\n icon: '\\ueeb1', //ri-link-unlink\n }, {\n labelKey: 'node_state_read_only',\n classes: 'remixicon',\n icon: '\\uece2', //ri-file-forbid-line\n }, {\n labelKey: 'node_state_restricted',\n classes: 'remixicon',\n icon: '\\uee71', //ri-key-line\n }, {\n labelKey: 'recovery_state.searching_for_node',\n classes: 'remixicon',\n icon: '\\uf045', //ri-question-line\n }, {\n labelKey: 'recovery_state.waiting_for_snapshot',\n classes: 'remixicon',\n icon: '\\uf20f', //ri-time-line\n }, {\n labelKey: 'recovery_state.building_snapshot',\n classes: 'remixicon',\n icon: '\\uf3a7', //ri-archive-2-line\n }, {\n labelKey: 'recovery_state.sending_snapshot',\n classes: 'remixicon',\n icon: '\\uf24a', //ri-upload-2-line\n }, {\n labelKey: 'recovery_state.receiving_snapshot',\n classes: 'remixicon',\n icon: '\\uec54', //ri-download-2-line\n }, {\n labelKey: 'recovery_state.applying_snapshot',\n classes: 'remixicon',\n icon: '\\uec30', //ri-device-recover-line\n },\n ];\n };\n\n return {\n getLegendNodes,\n getSyncStatuses,\n getLegendLinks,\n SVG_NODE_WIDTH,\n PADDING_LEFT,\n PADDING_TOP,\n TITLE_PADDING_TOP,\n TITLE_FONT_SIZE,\n TITLE_FONT_WEIGHT,\n TITLE_COLOR,\n TITLE_LINE_HEIGHT,\n LEGEND_ITEM_FONT_SIZE,\n LEGEND_ITEM_ICON_FONT_SIZE,\n LEGEND_ITEM_FONT_WEIGHT,\n LEGEND_ITEM_COLOR,\n LEGEND_ITEM_LINE_HEIGHT,\n LEGEND_ITEM_PADDING_LEFT,\n LEGEND_ITEMS_PADDING_TOP,\n LEGEND_ITEM_PADDING_TOP,\n BACKGROUND_PADDING\n };\n})();\n\nexport {\n CLUSTER_MANAGEMENT_CONSTANTS\n};\n","import {LinkState, NodeState, RecoveryState} from \"../../models/clustermanagement/states\";\nimport {isEmpty} from \"lodash\";\nimport {select, line} from 'd3';\n\nconst d3 = {\n line,\n select\n};\n\nconst clusterColors = {\n ontoOrange: 'var(--gw-primary-base)',\n ontoBlue: 'var(--gw-secondary-base)',\n ontoGreen: 'var(--gw-tertiary-base)',\n ontoGrey: 'var(--gw-neutral-base)'\n};\n\nconst linkStateColors = {\n [LinkState.IN_SYNC]: clusterColors.ontoBlue,\n [LinkState.SYNCING]: clusterColors.ontoBlue,\n [LinkState.OUT_OF_SYNC]: clusterColors.ontoGrey,\n [LinkState.RECEIVING_SNAPSHOT]: clusterColors.ontoBlue\n};\n\nconst linkStateStyle = {\n // solid line\n [LinkState.IN_SYNC]: 'none',\n // dashed line\n [LinkState.SYNCING]: '10 10',\n // dashed line\n [LinkState.OUT_OF_SYNC]: '10 10',\n // dashed line\n [LinkState.RECEIVING_SNAPSHOT]: '10 10'\n};\n\nconst font = {\n REMIXICON: 'REMIXICON',\n ICOMOON: 'ICOMOON',\n};\n\nconst shortMessageLimit = 40;\n\nexport function createClusterSvgElement(element) {\n return d3.select(element)\n .append('svg')\n .classed('cluster-diagram', true);\n}\n\nexport function createClusterZone(parent) {\n const clusterZone = parent.append('g');\n clusterZone\n .append(\"circle\")\n .classed('cluster-zone', true)\n .style('fill', 'transparent')\n .style('stroke-width', '4');\n return clusterZone;\n}\n\nexport function setCreateClusterZone(hasCluster, clusterZone, translationsMap, hasAccess = false) {\n clusterZone\n .select('.cluster-zone')\n .classed('no-cluster', !hasCluster)\n .classed('has-access', hasAccess);\n\n if (hasCluster) {\n clusterZone.selectAll('#no-cluster-zone').remove();\n } else {\n const textGroup = clusterZone\n .append('g')\n .attr(\"id\", \"no-cluster-zone\");\n textGroup\n .append('text')\n .attr('id', 'no-cluster-label')\n .text(translationsMap.no_cluster_configured)\n .attr('y', -50)\n .classed('h2', true)\n .style('text-anchor', \"middle\");\n if (hasAccess) {\n textGroup.append('text')\n .attr('id', 'create-cluster-label')\n .classed('h3', true)\n .text(translationsMap.create_cluster_btn)\n .style('text-anchor', \"middle\");\n }\n textGroup.append('text')\n .attr('y', 130)\n .attr('class', 'icon-any repo')\n .attr('fill', clusterColors.ontoOrange)\n .style('text-anchor', \"middle\")\n .classed('settings-icon', true)\n .text(\"\\ue92b\");\n }\n}\n\nexport function updateClusterZoneLabels(hasCluster, clusterZone, translationsMap) {\n if (hasCluster) {\n return;\n }\n clusterZone.select('#no-cluster-zone #no-cluster-label')\n .text(translationsMap.no_cluster_configured);\n clusterZone.select('#no-cluster-zone #create-cluster-label')\n .text(translationsMap.create_cluster_btn);\n}\n\nexport function moveElement(element, x, y) {\n element.attr('transform', () => {\n return `translate(${x}, ${y})`;\n });\n}\n\nexport function createNodes(nodesDataBinding, nodeRadius, isLegend) {\n const nodeGroup = nodesDataBinding.enter()\n .append('g')\n .attr('id', 'node-group')\n .classed('legend', isLegend);\n\n const nodeUpdateElements = nodeGroup\n .merge(nodesDataBinding)\n .attr('id', 'node-group')\n .classed('legend', isLegend);\n\n createHexagon(nodeGroup, nodeRadius);\n nodesDataBinding.exit().remove();\n\n nodeGroup\n .append('text')\n .attr('class', 'icon-any node-icon');\n\n if (!isLegend) {\n addHostnameToNodes(nodeGroup, nodeRadius, isLegend);\n }\n return nodeUpdateElements;\n}\n\nfunction addHostnameToNodes(nodeElements, nodeRadius) {\n const nodeTextHost = nodeElements.append('g');\n\n nodeTextHost\n .append('rect')\n .attr('class', 'id-host-background')\n .attr('rx', 6);\n\n nodeTextHost\n .append('rect')\n .attr('class', 'node-info-background')\n .attr('rx', 6);\n\n nodeTextHost\n .append('text')\n .attr('y', nodeRadius + 25)\n .attr('class', 'id id-host');\n\n nodeTextHost\n .append('text')\n .attr('y', nodeRadius + 55)\n .attr('class', 'node-info-text');\n}\n\nexport function updateNodes(nodes) {\n updateNodesIcon(nodes);\n updateNodesClasses(nodes);\n updateNodesHostnameText(nodes);\n updateNodesInfoText(nodes);\n}\n\nfunction updateNodesClasses(nodes) {\n nodes\n .select('.node.member')\n .classed('leader', (node) => node.nodeState === NodeState.LEADER)\n .classed('follower', (node) => node.nodeState === NodeState.FOLLOWER)\n .classed('candidate', (node) => node.nodeState === NodeState.CANDIDATE)\n .classed('other', (node) => {\n return node.nodeState !== NodeState.LEADER &&\n node.nodeState !== NodeState.FOLLOWER &&\n node.nodeState !== NodeState.CANDIDATE;\n });\n}\n\nfunction updateNodesIcon(nodes) {\n nodes.select('.node-icon')\n .each(function (d) {\n const iconType = hasRecoveryState(d) ? getNodeInfoIconType(d) : getNodeIconType(d);\n d3.select(this)\n .classed('icon-any', iconType.font === font.ICOMOON)\n .classed('remixicon', iconType.font === font.REMIXICON)\n .text(iconType.icon);\n });\n}\n\nfunction hasRecoveryState(node) {\n return !isEmpty(node.recoveryStatus);\n}\n\nconst iconMap = {\n [RecoveryState.SEARCHING_FOR_NODE]: {icon: '\\uf045', font: font.REMIXICON}, //ri-question-line\n [RecoveryState.WAITING_FOR_SNAPSHOT]: {icon: '\\uf20f', font: font.REMIXICON}, //ri-time-line\n [RecoveryState.RECEIVING_SNAPSHOT]: {icon: '\\uec54', font: font.REMIXICON}, //ri-download-2-line\n [RecoveryState.APPLYING_SNAPSHOT]: {icon: '\\uec30', font: font.REMIXICON}, //ri-device-recover-line\n [RecoveryState.BUILDING_SNAPSHOT]: {icon: '\\uf3a7', font: font.REMIXICON}, //ri-archive-2-line\n [RecoveryState.SENDING_SNAPSHOT]: {icon: '\\uf24a', font: font.REMIXICON}, //ri-upload-2-line\n [RecoveryState.RECOVERY_OPERATION_FAILURE_WARNING]: {icon: '\\ue920', font: font.ICOMOON},\n};\n\nconst nodeStateIcons = {\n [NodeState.CANDIDATE]: {icon: '\\ue914', font: font.ICOMOON},\n [NodeState.NO_CONNECTION]: {icon: '\\ue931', font: font.ICOMOON},\n [NodeState.OUT_OF_SYNC]: {icon: '\\ue920', font: font.ICOMOON},\n [NodeState.READ_ONLY]: {icon: '\\ue95c', font: font.ICOMOON},\n [NodeState.RESTRICTED]: {icon: '\\ue933', font: font.ICOMOON}\n};\n\nfunction getNodeInfoIconType(node) {\n const status = node.recoveryStatus;\n\n if (!status || !status.state) {\n return {icon: '', font: ''};\n }\n\n return iconMap[status.state] || {icon: '', font: ''};\n}\n\nfunction getNodeIconType(node) {\n const iconType = nodeStateIcons[node.nodeState];\n return iconType ? iconType : {icon: '', font: ''};\n}\n\nfunction updateNodesInfoText(nodes) {\n let objectHeight;\n let objectWidth;\n // Set initial text element\n nodes.select('.node-info-text')\n .each(function (d) {\n d.infoNode = this;\n })\n .select(function () {\n return this.parentNode;\n })\n .append('foreignObject')\n .attr('width', function (d) {\n let shortMessage = '';\n if (!isEmpty(d.recoveryStatus)) {\n shortMessage = extractShortMessageFromNode(d);\n }\n const rect = calculateElementSizeByText(shortMessage);\n objectHeight = rect.height;\n objectWidth = rect.width;\n return objectWidth;\n })\n .attr('height', function (d) {\n return objectHeight;\n })\n .attr('x', function (d) {\n return -(objectWidth / 2);\n })\n .attr('y', function (d) {\n return 78;\n })\n .classed('hidden', function (d) {\n return isEmpty(d.recoveryStatus);\n })\n .style('font-size', '12px')\n .style('font-weight', '400')\n .style('text-align', 'center')\n .style('padding', '4px')\n .style('background', '#EEEEEE')\n .style('border-radius', '6px')\n .attr('class', 'node-info-fo')\n .append('xhtml:div')\n .html(function (d) {\n return extractShortMessageFromNode(d);\n });\n\n // Remove the original text elements, as they are now replaced by foreignObjects\n nodes.select('.node-info-text').remove();\n\n resizeLabelDynamic(nodes);\n}\n\nfunction extractShortMessageFromNode(node) {\n return node.recoveryStatus.message && node.recoveryStatus.message.length > shortMessageLimit ?\n node.recoveryStatus.message.substring(0, shortMessageLimit) + '...' : node.recoveryStatus.message || '';\n}\n\nfunction calculateElementSizeByText(text) {\n const tmp = document.createElement('div');\n tmp.innerHTML = text;\n tmp.style.padding = '4px';\n tmp.style.position = 'absolute';\n tmp.style.visibility = 'hidden';\n tmp.style.fontSize = '12px';\n tmp.style.fontWeight = '400';\n tmp.style.textAlign = 'center';\n tmp.style.height = 'auto';\n tmp.style.width = 'auto';\n tmp.style.whiteSpace = 'nowrap';\n\n document.body.appendChild(tmp);\n const rect = tmp.getBoundingClientRect();\n const height = rect.height;\n const width = rect.width;\n document.body.removeChild(tmp);\n\n return {height, width};\n}\n\nfunction addRecoveryLabelListeners(object, message, truncatedSize, displayMessage, fullSize) {\n object.on('mouseover.tooltip', () => {\n object\n .attr('width', fullSize.width)\n .attr('height', fullSize.height)\n .attr('x', -fullSize.width / 2)\n .html(`<div>${message}</div>`);\n });\n object.on('mouseout.tooltip', () => {\n object\n .attr('width', truncatedSize.width)\n .attr('height', truncatedSize.height)\n .attr('x', -truncatedSize.width / 2)\n .html(`<div>${displayMessage}</div>`);\n });\n}\n\nfunction resizeLabelDynamic(nodes) {\n nodes.select('.node-info-fo')\n .each(function (d) {\n const object = d3.select(this);\n if (isEmpty(d.recoveryStatus)) {\n object.attr('width', 0);\n return;\n }\n const shortMessage = extractShortMessageFromNode(d);\n const isShorten = d.recoveryStatus.message && d.recoveryStatus.message.length > shortMessageLimit && shortMessage !== d.recoveryStatus.message;\n const displayMessage = isShorten ? shortMessage : d.recoveryStatus.message;\n const truncatedSize = calculateElementSizeByText(shortMessage);\n const fullSize = calculateElementSizeByText(d.recoveryStatus.message);\n object.on('.tooltip', null);\n\n if (isShorten) {\n addRecoveryLabelListeners(object, d.recoveryStatus.message, truncatedSize, displayMessage, fullSize);\n }\n\n // Set initial size and text\n object\n .attr('width', truncatedSize.width)\n .attr('height', truncatedSize.height)\n .attr('x', -truncatedSize.width / 2)\n .html(`<div>${displayMessage}</div>`);\n });\n}\n\nfunction updateNodesHostnameText(nodes) {\n nodes\n .select('.id.id-host')\n .each(function (d) {\n d.labelNode = this;\n })\n .text(function (d) {\n return d.hostname;\n });\n\n // Add padding styling to text background. left/right/top/bottom +5\n nodes\n .select('.id-host-background')\n .attr('width', function (d) {\n return d3.select(d.labelNode).node().getBBox().width + 10;\n })\n .attr('height', function (d) {\n return d3.select(d.labelNode).node().getBBox().height + 10;\n })\n .attr('x', function (d) {\n return d3.select(d.labelNode).node().getBBox().x - 5;\n })\n .attr('y', function (d) {\n return d3.select(d.labelNode).node().getBBox().y - 5;\n });\n}\n\nexport function createLinks(linksDataBinding) {\n linksDataBinding.enter()\n .append('path')\n .classed('link', true);\n\n linksDataBinding.exit().remove();\n}\n\nexport function updateLinks(linksDataBinding, nodes) {\n linksDataBinding\n .attr('class', (link) => {\n // add the link id as a css class for testing purposes\n const idClass = link.id.replaceAll(':', '-');\n return `link ${idClass}`;\n })\n .attr('stroke', setLinkColor)\n .style('stroke-dasharray', setLinkStyle)\n .style(\"marker-mid\", (link) => setArrowLink(link, ARROW_CONFIG.BIG))\n .attr('d', (link) => getLinkCoordinates(link, nodes));\n}\n\nexport const ARROW_CONFIG = {\n SMALL: {name: 'small', size: 3},\n BIG: {name: 'big', size: 5}\n};\n\nexport function addArrowHead(svg, config) {\n svg.append(\"svg:defs\").append(\"svg:marker\")\n .attr(\"id\", `arrowhead_${config.name}`)\n .attr(\"viewBox\", `0 0 ${config.size * 2} ${config.size * 2}`)\n .attr(\"refX\", config.size)\n .attr(\"refY\", config.size)\n .attr(\"markerWidth\", config.size)\n .attr(\"markerHeight\", config.size)\n .attr(\"orient\", \"auto-start-reverse\")\n .append(\"path\")\n .attr(\"d\", `M 0 0 L ${config.size * 2} ${config.size} L 0 ${config.size * 2} z`)\n .style(\"fill\", \"var(--gw-secondary-base)\");\n}\n\nexport function setArrowLink(link, config) {\n if (link.status === LinkState.RECEIVING_SNAPSHOT) {\n return `url(#arrowhead_${config.name})`;\n }\n}\n\nexport function setLinkColor(link) {\n const linkColor = linkStateColors[link.status];\n return linkColor || 'none';\n}\n\nexport function setLinkStyle(link) {\n const linkStyle = linkStateStyle[link.status];\n return linkStyle || 'none';\n}\n\nfunction getLinkCoordinates(link, nodes) {\n const source = nodes.find((node) => node.address === link.source);\n const target = nodes.find((node) => node.address === link.target);\n const deltaX = target.x - source.x;\n const deltaY = target.y - source.y;\n const dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const normX = deltaX / dist;\n const normY = deltaY / dist;\n // Padding from node center point\n const sourcePadding = 55;\n const targetPadding = 55;\n const sourceX = source.x + (sourcePadding * normX);\n const sourceY = source.y + (sourcePadding * normY);\n const targetX = target.x - (targetPadding * normX);\n const targetY = target.y - (targetPadding * normY);\n // Calculate midpoint\n const midpointX = (sourceX + targetX) / 2;\n const midpointY = (sourceY + targetY) / 2;\n // In order to draw an arrowhead in the middle of a line, the line needs to be composed by\n // two segments, otherwise the arrowhead won't show up.\n return 'M' + sourceX + ',' + sourceY + 'L' + midpointX + ',' + midpointY +\n 'L' + targetX + ',' + targetY;\n}\n\nexport function positionNodesOnClusterZone(nodeElements, clusterZoneX, clusterZoneY, clusterZoneRadius) {\n nodeElements\n .attr('transform', (node, index) => {\n // Calculate initial positions for the new nodes based on\n // spreading them evenly on a circle around the center of the page.\n const theta = 2 * Math.PI * index / nodeElements.size();\n const x = clusterZoneX + Math.cos(theta) * clusterZoneRadius;\n const y = clusterZoneY + Math.sin(theta) * clusterZoneRadius;\n node.x = x;\n node.y = y;\n return `translate(${x}, ${y})`;\n });\n}\n\nexport function createHexagon(nodeGroup, radius) {\n const _s32 = (Math.sqrt(3) / 2);\n const xDiff = 0;\n const yDiff = 0;\n const points = [[radius + xDiff, yDiff], [radius / 2 + xDiff, radius * _s32 + yDiff], [-radius / 2 + xDiff, radius * _s32 + yDiff],\n [-radius + xDiff, yDiff],\n [-radius / 2 + xDiff, -radius * _s32 + yDiff], [radius / 2 + xDiff, -radius * _s32 + yDiff], [radius + xDiff, yDiff],\n [radius / 2 + xDiff, radius * _s32 + yDiff]];\n return nodeGroup\n .selectAll(\"path.area\")\n .data([points])\n .enter()\n .append(\"path\")\n .attr('class', 'node member')\n .attr(\"stroke-width\", \"10\")\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"d\", d3.line());\n}\n\nexport function removeEventListeners() {\n d3.select(document).selectAll('.node-info-fo').on('.tooltip', null);\n}\n","export const NodeState = {\n LEADER: 'LEADER',\n FOLLOWER: 'FOLLOWER',\n CANDIDATE: 'CANDIDATE',\n OUT_OF_SYNC: 'OUT_OF_SYNC',\n NO_CONNECTION: 'NO_CONNECTION',\n READ_ONLY: 'READ_ONLY',\n RESTRICTED: 'RESTRICTED',\n NO_CLUSTER: 'NO_CLUSTER'\n};\n\nexport const RecoveryState = {\n SEARCHING_FOR_NODE: 'SEARCHING_FOR_NODE',\n WAITING_FOR_SNAPSHOT: 'WAITING_FOR_SNAPSHOT',\n RECEIVING_SNAPSHOT: 'RECEIVING_SNAPSHOT',\n APPLYING_SNAPSHOT: 'APPLYING_SNAPSHOT',\n BUILDING_SNAPSHOT: 'BUILDING_SNAPSHOT',\n SENDING_SNAPSHOT: 'SENDING_SNAPSHOT',\n RECOVERY_OPERATION_FAILURE_WARNING: 'RECOVERY_OPERATION_FAILURE_WARNING'\n};\n\nexport const LinkState = {\n IN_SYNC: 'IN_SYNC',\n OUT_OF_SYNC: 'OUT_OF_SYNC',\n SYNCING: 'SYNCING',\n NO_CONNECTION: 'NO_CONNECTION',\n // complimentary state, built based on the recovery state of two nodes when one is receiving snapshot to the other\n RECEIVING_SNAPSHOT: 'RECEIVING_SNAPSHOT'\n};\n\nexport const TopologyState = {\n PRIMARY_NODE: 'PRIMARY_NODE',\n SECONDARY_NODE: 'SECONDARY_NODE'\n};\n","import {CLUSTER_MANAGEMENT_CONSTANTS} from \"../../models/clustermanagement/cluster-management-constants\";\nimport * as CDS from \"../services/cluster-drawing.service\";\nimport {LinkState} from \"../../models/clustermanagement/states\";\nimport {ARROW_CONFIG} from \"../services/cluster-drawing.service\";\nimport {select} from 'd3';\n\nconst d3 = {select};\nconst modules = [];\nangular.module('graphdb.framework.clustermanagement.directives.cluster-legend', modules)\n .directive('clusterLegend', clusterLegend);\n\nclusterLegend.$inject = ['$rootScope', 'ClusterViewContextService', '$translate', '$document'];\n\nfunction clusterLegend($rootScope, ClusterViewContextService, $translate, $document) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/clustermanagement/templates/cluster-legend.html',\n scope: {},\n link: ($scope) => {\n\n // =========================\n // Public variables\n // =========================\n\n $scope.hideLegend = true;\n\n // =========================\n // Private variables\n // =========================\n\n const subscriptions = [];\n let legendGroup;\n let legendHeight;\n let legendWidth;\n\n // =========================\n // Public functions\n // =========================\n\n $scope.toggleLegend = () => {\n $scope.hideLegend = !$scope.hideLegend;\n legendGroup.classed('hidden-legend', $scope.hideLegend);\n };\n\n // =========================\n // Private functions\n // =========================\n\n const init = () => {\n const clusterViewD3Container = ClusterViewContextService.getClusterViewD3Container();\n createLegendGroup(clusterViewD3Container);\n createLegendBackground();\n addNodeStates(legendGroup);\n addSyncStatus();\n addLinks();\n updateLegendDimensions();\n updateLegendBackground();\n };\n\n const addNodeStates = (legendGroup) => {\n addTitle(legendGroup, 'cluster_management.cluster_graphical_view.legend_title_node_state');\n const legendNodeData = legendGroup\n .selectAll('.node-group')\n .data(CLUSTER_MANAGEMENT_CONSTANTS.getLegendNodes());\n const legendNodesElements = CDS.createNodes(legendNodeData, CLUSTER_MANAGEMENT_CONSTANTS.SVG_NODE_WIDTH, true);\n CDS.updateNodes(legendNodesElements);\n const LABEL_Y_POSITION = 3;\n legendNodesElements\n .attr('transform', function (d, i) {\n updateLegendDimensions();\n return `translate(${CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_PADDING_LEFT}, ${legendHeight + CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_PADDING_TOP})`;\n })\n .append('text')\n .classed('links-statuses', true)\n .style('font-weight', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_FONT_WEIGHT)\n .style('fill', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_COLOR)\n .attr('x', CLUSTER_MANAGEMENT_CONSTANTS.PADDING_LEFT + CLUSTER_MANAGEMENT_CONSTANTS.SVG_NODE_WIDTH)\n .attr('y', LABEL_Y_POSITION)\n .text(function (d) {\n return translateAndSubscribe(this, 'cluster_management.cluster_graphical_view.' + d.customText);\n });\n };\n\n const addSyncStatus = () => {\n addTitle(legendGroup, 'cluster_management.cluster_graphical_view.legend_title_sync_status');\n const syncStatusesGroups = legendGroup.selectAll('.sync-statuses-group')\n .data(CLUSTER_MANAGEMENT_CONSTANTS.getSyncStatuses())\n .enter()\n .append('g')\n .attr('class', 'sync-statuses-group');\n\n const rowY = new Map();\n\n syncStatusesGroups\n .append('text')\n .attr('class', (d) => `sync-status ${d.classes}`)\n .attr('x', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_PADDING_LEFT - 10)\n .attr('y', function (d, index) {\n const rowTop = index * (20 + CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_PADDING_TOP) + legendHeight + CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEMS_PADDING_TOP;\n rowY.set(index, rowTop);\n return rowTop;\n })\n .text(function (d) {\n return d.icon;\n });\n\n const labelOffsetY = (CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_ICON_FONT_SIZE - CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_FONT_SIZE) / 2;\n syncStatusesGroups\n .append('text')\n .style('font-weight', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_FONT_WEIGHT)\n .style('fill', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_COLOR)\n .text(function (d) {\n return translateAndSubscribe(this, 'cluster_management.cluster_graphical_view.' + d.labelKey);\n })\n .attr('x', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_PADDING_LEFT + CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_FONT_SIZE)\n .attr('y', function (d, index) {\n return rowY.get(index) - labelOffsetY;\n })\n .classed('links-statuses', true);\n };\n\n const addLinks = () => {\n addTitle(legendGroup, 'cluster_management.cluster_graphical_view.legend_title_link_states');\n const linkStatesGroup = legendGroup.selectAll('.link-states-group')\n .data(CLUSTER_MANAGEMENT_CONSTANTS.getLegendLinks())\n .enter()\n .append('g')\n .attr('class', 'link-state');\n\n // map vertical positions of each link in order to be able to draw labels next to the links\n const rowY = new Map();\n\n linkStatesGroup\n .append('path')\n .classed('link', true)\n .attr('stroke-dasharray', CDS.setLinkStyle)\n .attr('stroke', CDS.setLinkColor)\n .attr('d', (link, index) => {\n const y = index * (CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_FONT_SIZE + CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_PADDING_TOP) + legendHeight + CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEMS_PADDING_TOP;\n const lineWidth = legendWidth / 2;\n rowY.set(index, y);\n let line;\n if (link.status === LinkState.RECEIVING_SNAPSHOT) {\n const lineMidPoint = lineWidth / 2;\n // In order to draw an arrowhead in the middle of a line, the line needs to be composed by\n // two segments, otherwise the arrowhead won't show up.\n line = `M${CLUSTER_MANAGEMENT_CONSTANTS.PADDING_LEFT} ${y} L${lineMidPoint} ${y} L${lineWidth} ${y}`;\n } else {\n line = `M${CLUSTER_MANAGEMENT_CONSTANTS.PADDING_LEFT} ${y} ${lineWidth} ${y}`;\n }\n return line;\n })\n .style(\"marker-mid\", (link) => CDS.setArrowLink(link, ARROW_CONFIG.SMALL));\n\n linkStatesGroup\n .append('text')\n .style('font-size', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_FONT_SIZE)\n .style('line-height', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_LINE_HEIGHT)\n .style('font-weight', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_FONT_WEIGHT)\n .style('fill', CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_COLOR)\n .text(function (d) {\n return translateAndSubscribe(this, 'cluster_management.cluster_graphical_view.' + d.linkTypeKey);\n })\n .attr('x', legendWidth/2 + CLUSTER_MANAGEMENT_CONSTANTS.LEGEND_ITEM_PADDING_LEFT)\n .attr('y', function (d, index) {\n return rowY.get(index) + 4;\n })\n .classed('links-statuses', true);\n };\n\n /**\n * Creates main legend container with rectangle that defines width, height and corner radius of legend.\n * @param {*} clusterViewD3Container - main container where legend have to live.\n */\n const createLegendGroup = (clusterViewD3Container) => {\n legendGroup = clusterViewD3Container.append('g')\n .classed('hidden-legend', $scope.hideLegend)\n .classed('cluster-legend-group', true);\n };\n\n const createLegendBackground = () => {\n legendGroup.append('rect')\n .attr('class', 'legend-background')\n .attr('fill', '#EEEEEE');\n };\n\n const updateLegendDimensions = () => {\n legendGroup\n .call((d) => {\n legendHeight = d.node().getBBox().height;\n });\n legendWidth = getMaxWidthOfChildren(legendGroup) + 30;\n };\n\n const updateLegendBackground = () => {\n const maxWidth = getMaxWidthOfChildren(legendGroup);\n legendGroup.select('.legend-background')\n .attr('height', legendHeight + CLUSTER_MANAGEMENT_CONSTANTS.PADDING_TOP * 3)\n .attr('width', maxWidth + CLUSTER_MANAGEMENT_CONSTANTS.BACKGROUND_PADDING)\n .attr('rx', '6');\n };\n\n const getMaxWidthOfChildren = (parent) => {\n let maxWidth = 0;\n\n parent.selectAll(':not(.legend-background)').each(function () {\n const bbox = this.getBBox();\n maxWidth = Math.max(maxWidth, bbox.width);\n });\n\n return maxWidth;\n };\n\n /**\n * Adds title to <code>legendGroup</code>.\n * @param {*} legendGroup - the root group tag (<g>) of legend.\n * @param {string} labelKey\n *\n * @return {*}\n */\n const addTitle = (legendGroup, labelKey) => {\n return legendGroup\n .append('text')\n .attr('class', 'legend-title')\n .attr('x', CLUSTER_MANAGEMENT_CONSTANTS.PADDING_LEFT)\n .style('font-size', CLUSTER_MANAGEMENT_CONSTANTS.TITLE_FONT_SIZE)\n .style('font-weight', CLUSTER_MANAGEMENT_CONSTANTS.TITLE_FONT_WEIGHT)\n .style('line-height', CLUSTER_MANAGEMENT_CONSTANTS.TITLE_LINE_HEIGHT)\n .style('fill', CLUSTER_MANAGEMENT_CONSTANTS.TITLE_COLOR)\n .text(function () {\n return translateAndSubscribe(this, labelKey);\n })\n .attr('y', () => {\n updateLegendDimensions();\n return legendHeight + CLUSTER_MANAGEMENT_CONSTANTS.TITLE_PADDING_TOP;\n });\n };\n\n const translateAndSubscribe = (domElement, labelKey) => {\n subscriptions.push($rootScope.$on('$translateChangeSuccess', () => {\n d3.select(domElement).text($translate.instant(labelKey));\n updateLegendBackground();\n }));\n\n return $translate.instant(labelKey);\n };\n\n const removeAllListeners = () => {\n $document.off('keydown', closeDialog);\n subscriptions.forEach((subscription) => subscription());\n };\n\n const closeDialog = () => {\n $scope.hideLegend = true;\n legendGroup.classed('hidden-legend', $scope.hideLegend);\n };\n\n const onKeyDown = (event) => {\n if (event.key === 'Escape') {\n closeDialog();\n }\n };\n\n // =========================\n // Subscriptions functions\n // =========================\n $document.on('keydown', onKeyDown);\n subscriptions.push(ClusterViewContextService.onClusterViewD3ContainerUpdated(init));\n\n // Deregister the watcher when the scope/directive is destroyed\n $scope.$on('$destroy', removeAllListeners);\n\n init();\n }\n };\n}\n"],"names":["NodeState","LEADER","FOLLOWER","CANDIDATE","OUT_OF_SYNC_BLANK","CLUSTER_MANAGEMENT_CONSTANTS","getLegendNodes","legendNodes","push","nodeState","customText","forEach","node","index","id","getSyncStatuses","labelKey","classes","icon","getLegendLinks","links","status","LinkState","IN_SYNC","linkTypeKey","SYNCING","OUT_OF_SYNC","RECEIVING_SNAPSHOT","link","SVG_NODE_WIDTH","PADDING_LEFT","PADDING_TOP","TITLE_PADDING_TOP","TITLE_FONT_SIZE","TITLE_FONT_WEIGHT","TITLE_COLOR","TITLE_LINE_HEIGHT","LEGEND_ITEM_FONT_SIZE","LEGEND_ITEM_ICON_FONT_SIZE","LEGEND_ITEM_FONT_WEIGHT","LEGEND_ITEM_COLOR","LEGEND_ITEM_LINE_HEIGHT","LEGEND_ITEM_PADDING_LEFT","LEGEND_ITEMS_PADDING_TOP","LEGEND_ITEM_PADDING_TOP","BACKGROUND_PADDING","d3","line","select","clusterColors","ontoOrange","ontoBlue","ontoGreen","ontoGrey","linkStateColors","linkStateStyle","font","REMIXICON","ICOMOON","shortMessageLimit","createClusterSvgElement","element","append","classed","createClusterZone","parent","clusterZone","style","setCreateClusterZone","hasCluster","translationsMap","hasAccess","selectAll","remove","textGroup","attr","text","no_cluster_configured","create_cluster_btn","updateClusterZoneLabels","moveElement","x","y","createNodes","nodesDataBinding","nodeRadius","isLegend","nodeGroup","enter","nodeUpdateElements","merge","radius","_s32","Math","sqrt","points","data","createHexagon","exit","nodeElements","nodeTextHost","addHostnameToNodes","updateNodes","nodes","each","d","iconType","isEmpty","recoveryStatus","nodeStateIcons","getNodeIconType","state","iconMap","getNodeInfoIconType","this","updateNodesIcon","updateNodesClasses","labelNode","hostname","getBBox","width","height","updateNodesHostnameText","objectHeight","objectWidth","infoNode","parentNode","shortMessage","extractShortMessageFromNode","rect","calculateElementSizeByText","html","object","isShorten","message","length","displayMessage","truncatedSize","fullSize","on","addRecoveryLabelListeners","resizeLabelDynamic","updateNodesInfoText","RecoveryState","SEARCHING_FOR_NODE","WAITING_FOR_SNAPSHOT","APPLYING_SNAPSHOT","BUILDING_SNAPSHOT","SENDING_SNAPSHOT","RECOVERY_OPERATION_FAILURE_WARNING","NO_CONNECTION","READ_ONLY","RESTRICTED","substring","tmp","document","createElement","innerHTML","padding","position","visibility","fontSize","fontWeight","textAlign","whiteSpace","body","appendChild","getBoundingClientRect","removeChild","createLinks","linksDataBinding","updateLinks","replaceAll","setLinkColor","setLinkStyle","setArrowLink","ARROW_CONFIG","BIG","source","find","address","target","deltaX","deltaY","dist","normX","normY","sourceX","sourceY","targetX","targetY","getLinkCoordinates","SMALL","name","size","addArrowHead","svg","config","positionNodesOnClusterZone","clusterZoneX","clusterZoneY","clusterZoneRadius","theta","PI","cos","sin","removeEventListeners","NO_CLUSTER","TopologyState","PRIMARY_NODE","SECONDARY_NODE","clusterLegend","$rootScope","ClusterViewContextService","$translate","$document","restrict","templateUrl","scope","$scope","hideLegend","subscriptions","legendGroup","legendHeight","legendWidth","toggleLegend","init","clusterViewD3Container","getClusterViewD3Container","createLegendGroup","createLegendBackground","addNodeStates","addSyncStatus","addLinks","updateLegendDimensions","updateLegendBackground","addTitle","legendNodeData","legendNodesElements","CDS","i","translateAndSubscribe","syncStatusesGroups","rowY","Map","rowTop","set","labelOffsetY","get","linkStatesGroup","lineWidth","lineMidPoint","call","getMaxWidthOfChildren","maxWidth","bbox","max","domElement","$on","instant","closeDialog","event","key","onClusterViewD3ContainerUpdated","removeAllListeners","off","subscription","angular","module","directive","$inject"],"sourceRoot":""}
|