Further cloud syncs for MUlti Tenant distribution

This commit is contained in:
Frikky
2025-02-13 13:28:17 +01:00
parent b367b4cfb7
commit 1f2e0ed6a3
6 changed files with 96 additions and 246 deletions
+20 -6
View File
@@ -734,9 +734,9 @@ const EnvironmentTab = memo((props) => {
<div style={{ height: "100%", maxHeight: 1700, overflowY: "auto", scrollbarColor: '#494949 transparent', scrollbarWidth: 'thin' }}>
<div style={{ height: "100%", width: "calc(100% - 20px)", scrollbarColor: '#494949 transparent', scrollbarWidth: 'thin'}}>
<div style={{ marginBottom: 20 }}>
<h2 style={{ marginBottom: 8, marginTop: 0, color: "#ffffff" }}>Locations</h2>
<h2 style={{ marginBottom: 8, marginTop: 0, color: "#ffffff" }}>Runtime Locations</h2>
<span style={{ color: textColor }}>
Decides which Orborus <b>runtime location</b> to run your workflows in. Previously Environments. <br /> If you have scale problems, talk to our team: support@shuffler.io.&nbsp;
Decides which Orborus <b>runtime location</b> to run your workflows in. Previously called Environments. <br /> If you have scale problems, <a href="https://shuffler.io/docs/configuration#high-availability" target="_blank" rel="noopener noreferrer" style={{ color: "#FF8444" }}>check the docs</a> or talk to our team: support@shuffler.io.&nbsp;
<a
target="_blank"
rel="noopener noreferrer"
@@ -1310,7 +1310,7 @@ const EnvironmentTab = memo((props) => {
<div style={{minWidth: 700, maxWidth: 700, minHeight: 350, display: 'flex', justifyContent: "center", backgroundColor: "transparent", }}>
<div style={{ paddingTop: 50, paddingBottom: 100, }}>
<Typography variant="h6">
Your Self-Hosted Orborus instance
Self-Hosted Orborus instance
</Typography>
<Typography variant="body2" color="textSecondary">
Orborus is the Shuffle queue handler that runs your hybrid workflows and manages pipelines. It can be run in Docker/k8s container on your server or in your cluster. Follow the steps below, and configure as need be.
@@ -1399,9 +1399,23 @@ const EnvironmentTab = memo((props) => {
>
{getOrborusCommand(environment)}
</code>
<CopyToClipboard
text={orborusCommandWrapper()}
/>
<div
style={{
position: "absolute",
right: 0,
top: -10,
}}
>
<IconButton
onClick={() => {
navigator.clipboard.writeText(orborusCommandWrapper())
toast("Copied to clipboard")
}}
>
<FileCopyIcon />
</IconButton>
</div>
</div>
<Divider style={{marginTop: 25, marginBottom: 10, }}/>
+36 -31
View File
@@ -1,4 +1,4 @@
import React, { useEffect, useRef, useState, useContext, useCallback, useMemo } from "react";
import React, { useEffect, useRef, useState, useContext, useCallback, useMemo, memo } from "react";
import {
ExpandLess as ExpandLessIcon,
ExpandMore as ExpandMoreIcon,
@@ -754,35 +754,6 @@ useEffect(() => {
fontSize: 18
};
const modalView = (
<Dialog
open={searchBarModalOpen}
onClose={() => {
setSearchBarModalOpen(false);
}}
PaperProps={{
style: {
color: "white",
minWidth: 750,
height: 785,
borderRadius: 16,
border: "1px solid var(--Container-Stroke, #494949)",
background: "var(--Container, #000000)",
boxShadow: "0px 16px 24px 8px rgba(0, 0, 0, 0.25)",
zIndex: 13000,
paddingTop: 20,
},
}}
>
<DialogContent className='dialog-content' style={{}}>
<SearchBox globalUrl={globalUrl} serverside={serverside} userdata={userdata} />
</DialogContent>
<Divider style={{overflow: "hidden"}}/>
<span style={{display:"flex", width:"100%", height:30}}>
</span>
</Dialog>
);
const getRegionFlag = (region_url) => {
var region = "gb";
const regionMapping = {
@@ -821,7 +792,7 @@ useEffect(() => {
height: "calc((100vh - 32px)*1.2)",
}}
>
{modalView}
{searchBarModalOpen ? <ModalView serverside={serverside} userdata={userdata} searchBarModalOpen={searchBarModalOpen} setSearchBarModalOpen={setSearchBarModalOpen} globalUrl={globalUrl} /> : null}
<Box
sx={{
display: "flex",
@@ -1908,3 +1879,37 @@ useEffect(() => {
};
export default LeftSideBar;
const ModalView = memo(({searchBarModalOpen, setSearchBarModalOpen, globalUrl, serverside, userdata}) => {
return (
(
<Dialog
open={searchBarModalOpen}
onClose={() => {
setSearchBarModalOpen(false);
}}
PaperProps={{
style: {
color: "white",
minWidth: 750,
height: 785,
borderRadius: 16,
border: "1px solid var(--Container-Stroke, #494949)",
background: "var(--Container, #000000)",
boxShadow: "0px 16px 24px 8px rgba(0, 0, 0, 0.25)",
zIndex: 13000,
paddingTop: 20,
},
}}
>
<DialogContent className='dialog-content' style={{}}>
<SearchBox globalUrl={globalUrl} serverside={serverside} userdata={userdata} />
</DialogContent>
<Divider style={{overflow: "hidden"}}/>
<span style={{display:"flex", width:"100%", height:30}}>
</span>
</Dialog>
)
)
});
@@ -310,11 +310,13 @@ const [orgName, setOrgName] = useState(selectedOrganization?.name);
if(region === "US") {
region = "us-west2"
} else if(region === "EU") {
region = "europe-west3"
region = "europe-west2"
} else if(region === "CA") {
region = "northamerica-northeast1"
} else if(region === "UK") {
region = "europe-west2"
} else if (region === "EU-2") {
region = "europe-west3"
}
var data = {
+1 -1
View File
@@ -3,7 +3,7 @@ import { Link, useNavigate, useLocation } from "react-router-dom";
import Billing from "../components/Billing.jsx";
import Priorities from "../components/Priorities.jsx";
import Branding from "../components/Branding.jsx";
// import AnalyticsTab from '../components/AnalyticsTab.jsx';
import AnalyticsTab from '../components/AnalyticsTab.jsx';
import EditOrgTab from '../components/EditOrgTab.jsx';
import CloudSyncTab from '../components/CloudSyncTab.jsx';
import SSOTab from "../components/ssoTab.jsx"