{filteredStatistics !== undefined ?
-
- The cost of app runs in the selected period based on {filteredStatistics.monthly_app_executions} App Runs. These numbers do not exclude your included 10.000/month or {includedExecutions} App Runs per month. App Run cost: ${invocationCost}.
-
- }>
-
-
- ${selectedOrganization?.lead_info?.customer === false && selectedOrganization?.lead_info?.pov === false ?
- 0
- :
- apprunCost
- }
+
+ {syncStats == true ? null :
+
+ The cost of app runs in the selected period based on {filteredStatistics.monthly_app_executions} App Runs. These numbers do not exclude your included 10.000/month or {includedExecutions} App Runs per month. App Run cost: ${invocationCost}.
-
- Period Cost
-
-
-
+ }>
+
+
+ ${selectedOrganization?.lead_info?.customer === false && selectedOrganization?.lead_info?.pov === false ?
+ 0
+ :
+ apprunCost
+ }
+
+
+
+ Period Cost
+
+
+
+ }
+
+ {syncStats === true ? null :
App runs in the selected period
}>
-
-
- {filteredStatistics.monthly_app_executions === null || filteredStatistics.monthly_app_executions === undefined ? 0 : filteredStatistics.monthly_app_executions}
-
-
- App Runs
-
-
+
+
+ {filteredStatistics.monthly_app_executions === null || filteredStatistics.monthly_app_executions === undefined ? 0 : filteredStatistics.monthly_app_executions}
+
+
+ App Runs
+
+
+ }
+
+ {syncStats === true ? null :
Workflow runs in the selected period
@@ -757,20 +776,24 @@ const AppStats = (defaultprops) => {
-
- Estimated cost to be billed at the end of the current month. Subtracted contractually included app runs. Actual cost month to date: ${monthToDateCost}. App Run cost: ${invocationCost}.
-
- }>
-
-
- ${monthTotalCost}
+ }
+
+ {syncStats === true ? null :
+
+ Estimated cost to be billed at the end of the current month. Subtracted contractually included app runs. Actual cost month to date: ${monthToDateCost}. App Run cost: ${invocationCost}.
-
- Estimated cost
-
-
-
+ }>
+
+
+ ${monthTotalCost}
+
+
+ Estimated cost
+
+
+
+ }
: null}
@@ -968,57 +991,58 @@ const AppStats = (defaultprops) => {
*/}
+ {syncStats === true ? null :
+
+ {resultLoading ?
+
+
+ Loading usage for selected period (may take a while)
+
+
+
+
+ :
+
{
+ //setRowsPerPage(newPageSize)
+ //submitSearch(workflowId, status, startTime, endTime, rowCursor, newPageSize)
+ }}
+ // event for when clicking next page
+ // Hide page changer
+ onPageChange={(params) => {
+ console.log("page params: ", params)
+ }}
+ onSelectionModelChange={(newSelection) => {
+ console.log("newSelection: ", newSelection)
+ //console.log("newSelection: ", newSelection)
+ //setSelectedWorkflowExecutionsIndexes(newSelection)
+ //var found = []
+ //for (var i = 0; i < newSelection.length; i++) {
+ // // Find the workflow in the resultRows
+ // var selected = resultRows.find((workflow) => {
+ // return workflow.id === newSelection[i]
+ // })
-
- {resultLoading ?
-
-
- Loading usage for selected period (may take a while)
-
-
-
-
- :
-
{
- //setRowsPerPage(newPageSize)
- //submitSearch(workflowId, status, startTime, endTime, rowCursor, newPageSize)
- }}
- // event for when clicking next page
- // Hide page changer
- onPageChange={(params) => {
- console.log("page params: ", params)
- }}
- onSelectionModelChange={(newSelection) => {
- console.log("newSelection: ", newSelection)
- //console.log("newSelection: ", newSelection)
- //setSelectedWorkflowExecutionsIndexes(newSelection)
- //var found = []
- //for (var i = 0; i < newSelection.length; i++) {
- // // Find the workflow in the resultRows
- // var selected = resultRows.find((workflow) => {
- // return workflow.id === newSelection[i]
- // })
+ // if (selected === undefined || selected === null) {
+ // continue
+ // }
- // if (selected === undefined || selected === null) {
- // continue
- // }
+ // found.push(selected)
+ //}
- // found.push(selected)
- //}
-
- //setSelectedWorkflowExecutions(found)
- }}
- // Track which items are selected
- />
- }
-
+ //setSelectedWorkflowExecutions(found)
+ }}
+ // Track which items are selected
+ />
+ }
+
+ }
)
diff --git a/frontend/src/components/CloudSyncTab.jsx b/frontend/src/components/CloudSyncTab.jsx
index dd43bc4a..88df2610 100644
--- a/frontend/src/components/CloudSyncTab.jsx
+++ b/frontend/src/components/CloudSyncTab.jsx
@@ -483,7 +483,7 @@ const CloudSyncTab = (props) => {
} else {
toast("Cloud Syncronization successfully set up!");
setOrgSyncResponse(
- "Successfully started syncronization. Cloud features you now have access to can be seen below."
+ "Successfully started syncronization. Cloud/Hybrid features are available below."
);
}
@@ -541,8 +541,8 @@ const CloudSyncTab = (props) => {
Cloud syncronization
- {currTab === 0 ? "Org" : currTab === 1 ? "Your" : "Discover"} Apps
+ {currTab === 0 ? "Org" : currTab === 1 ? "Your" : currTab === 3 ? "Backup" : "Discover"} Apps
{isCloud ? null : (
@@ -2027,6 +1981,7 @@ const Apps2 = (props) => {
...(currTab === 1 ? tabActive : {})
}}
/>
+
{
...(currTab === 2 ? tabActive : {})
}}
/>
+
+ {backupApps.length > 0 &&
+
+ }
@@ -2043,7 +2009,7 @@ const Apps2 = (props) => {
minWidth: "25%",
maxWidth: "25%"
}}>
- {(currTab === 0 || currTab === 1) ? (
+ {(currTab === 0 || currTab === 1 || currTab === 3) ? (
{
{
- currTab === 0 && (
+ currTab === 0 || currTab === 3 && (
{isLoading ? (
@@ -2285,7 +2251,7 @@ const Apps2 = (props) => {
handleAppClick={handleAppClick}
leftSideBarOpenByClick={leftSideBarOpenByClick}
userdata={userdata}
- fetchApps={fetchApps}
+ fetchApps={getApps}
setUserApps={setUserApps}
appsToShow={appsToShow}
@@ -2338,7 +2304,7 @@ const Apps2 = (props) => {
{appsToShow.map((data, index) => (
{
var upload = "";
const [workflows, setWorkflows] = React.useState([]);
+ const [backupWorkflows, setBackupWorkflows] = React.useState([]);
const [_, setUpdate] = React.useState(""); // Used for rendering, don't remove
const [selectedUsecases, setSelectedUsecases] = React.useState([]);
const [filteredWorkflows, setFilteredWorkflows] = React.useState([]);
@@ -756,7 +757,8 @@ const Workflows2 = (props) => {
const tabMapping = {
0: 'org_workflows',
1: 'my_workflows',
- 2: 'all_workflows'
+ 2: 'all_workflows',
+ 3: 'backup_apps',
};
const queryParams = new URLSearchParams(location.search);
queryParams.set('tab', tabMapping[newValue]);
@@ -1357,15 +1359,25 @@ const Workflows2 = (props) => {
}
var newarray = []
+ var backupWf = []
for (var wfkey in responseJson) {
const wf = responseJson[wfkey]
if (wf.public === true || wf.hidden === true) {
continue
}
+ if (wf?.backup_config?.onprem_backup === true) {
+ backupWf.push(wf)
+ continue
+ }
+
newarray.push(wf)
}
+ if (backupWf.length > 0) {
+ setBackupWorkflows(backupWf)
+ }
+
var setProdFilter = false
var actionnamelist = [];
@@ -4332,6 +4344,17 @@ const Workflows2 = (props) => {
}}
/>
+ {backupWorkflows.length > 0 &&
+
+ }
+
{
@@ -4341,7 +4364,7 @@ const Workflows2 = (props) => {
...tabStyle,
marginRight: 0,
marginLeft: 25,
- ...(currTab === 3 ? tabActive : {})
+ ...(currTab === 4 ? tabActive : {})
}}
/>
@@ -4676,8 +4699,6 @@ const Workflows2 = (props) => {
paddingBottom: 40
}}>
-
-
{currTab === 0 && orgWorkflows.map((data, index) => {
// Shouldn't be a part of this list
if (data.public === true) {
@@ -4699,6 +4720,27 @@ const Workflows2 = (props) => {
)
})}
+ {currTab === 3 && backupWorkflows.map((data, index) => {
+ // Shouldn't be a part of this list
+ if (data.public === true) {
+ return null
+ }
+
+ // if (firstLoad) {
+ // workflowDelay += 75
+ // } else {
+ // return
+ // }
+
+ return (
+
+ {/**/}
+
+ {/**/}
+
+ )
+ })}
+
{
currTab === 1 && myWorkflows.map((data, index) => {
if (data.public === true) {