(window.webpackJsonp=window.webpackJsonp||[]).push([[42,94,213],{139:function(e,t,o){"use strict";o.r(t);o(65),o(72);function n(e,t,o,n,r,s,c,a,l){const d=_.cloneDeep(s.clusterConfiguration),i=_.cloneDeep(s.clusterModel);e.replacementNodes=[],e.nodesToReplace=[],e.nodesToReplaceCount=0,e.leftNodesMajority=!1,e.clusterNodes=i.nodes.map(e=>({rpcAddress:e.address,endpoint:e.endpoint,shouldReplace:!1})),e.locations=i.locations.filter(e=>!d.nodes.includes(e.rpcAddress)),e.locations.forEach(e=>e.isNew=!0),e.addLocation=()=>{l.addLocation().then(t=>{t&&e.locations.push(t)})},e.toggleNode=(t,o)=>{if(o.shouldReplace=!o.shouldReplace,o.shouldReplace)e.nodesToReplaceCount++,e.nodesToReplace.push(o);else{e.nodesToReplaceCount--;const t=e.nodesToReplace.findIndex(e=>e.rpcAddress===o.rpcAddress);e.nodesToReplace.splice(t,1)}e.leftNodesMajority=u()+e.nodesToReplaceCount>e.clusterNodes.length},e.permitNodesReplace=()=>!e.leftNodesMajority&&(e.nodesToReplace.length>0||e.replacementNodes.length>0),e.addNodeToList=t=>{t.rpcAddress&&(e.replacementNodes.push(t),e.locations=e.locations.filter(e=>e.endpoint!==t.endpoint))},e.deleteLocation=(t,o)=>{t.preventDefault(),t.stopPropagation(),s.deleteLocation(o).then(()=>e.locations=e.locations.filter(e=>e.endpoint!==o.endpoint))},e.removeNodeFromList=(t,o)=>{e.replacementNodes.splice(t,1),e.locations.push(o)},e.ok=()=>{t.close({newNodes:e.replacementNodes,oldNodes:e.nodesToReplace})},e.cancel=()=>{t.dismiss("cancel")};const u=()=>Math.floor(e.clusterNodes.length/2)+1}angular.module("graphdb.framework.clustermanagement.controllers.replace-nodes",[]).controller("ReplaceNodesDialogCtrl",n),n.$inject=["$scope","$uibModalInstance","$timeout","toastr","$translate","data","$uibModal","$rootScope","RemoteLocationsService"]},65:function(e,t){angular.module("graphdb.framework.rest.cluster.service",[]).factory("ClusterRestService",o),o.$inject=["$http"];function o(e){return{getClusterConfig:function(){return e.get("rest/cluster/config")},createCluster:function(t){return e.post("rest/cluster/config",t)},updateCluster:function(t){t.nodes&&delete t.nodes;return e.patch("rest/cluster/config",t)},deleteCluster:function(t){const o=$.param({force:t});return e.delete("rest/cluster/config?"+o)},addNodesToCluster:function(t){return e.post("rest/cluster/config/node",{nodes:t})},replaceNodesInCluster:function(t){return e.patch("rest/cluster/config/node",t)},removeNodesFromCluster:function(t){return e.delete("rest/cluster/config/node",{data:{nodes:t},headers:{"Content-Type":"application/json"}})},getClusterStatus:function(){return e.get("rest/cluster/group/status")},getNodeStatus:function(){return e.get("rest/cluster/node/status")}}}},72:function(e,t,o){"use strict";o.r(t);o(33);function n(e,t,o,n,r){return{addLocation:function(){let e;return o.open({templateUrl:"js/angular/templates/modal/add-location.html",windowClass:"addLocationDialog",controller:"AddLocationFromClusterCtrl"}).result.then(o=>(e=o,e.isLocal=!1,e.endpoint=e.uri,function(e){let o;return n.addLocation(e).catch(e=>{const o=getError(e.data,e.status);return t.error(o,r.instant("common.error")),!1}).then(e=>!!e&&s()).then(t=>{if(!1!==t)return o=t.find(t=>t.endpoint===e.uri),o})}(e)))},getLocationsWithRpcAddresses:s};function s(){return n.getLocations().then((function(e){return e.data.map(e=>({isLocal:e.local,endpoint:e.uri,rpcAddress:e.rpcAddress||"",error:e.errorMsg}))})).catch((function(e){const o=getError(e.data,e.status);t.error(o,r.instant("common.error"))})).then(e=>{if(e)return function(e){const t=e.filter(e=>!e.isLocal&&!e.error).map(e=>function(e){return n.getLocationRpcAddress(e.endpoint)}(e).then(t=>(e.rpcAddress=t.data,e.isAvailable=!0,e)).catch(t=>{e.isAvailable=!1,e.error=getError(t.data,t.status)}));return Promise.allSettled(t).then(()=>e)}(e)})}}angular.module("graphdb.framework.clustermanagement.services.remote-locations",[]).factory("RemoteLocationsService",n),n.$inject=["$http","toastr","$uibModal","LocationsRestService","$translate"]}}]);