Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
538ecd1
Permissions intial commit
johnyrahul Mar 11, 2024
0beefe9
Merge branch 'main' into feat/adapter-permission
johnyrahul Mar 12, 2024
cb2b423
Update main.py
johnyrahul Mar 12, 2024
a3f0c97
Permissions for adapter intial commit
johnyrahul Mar 12, 2024
d9b345d
Corrected the query
johnyrahul Mar 12, 2024
82d1ccd
Merge branch 'main' into feat/adapter-permission
johnyrahul Mar 12, 2024
a0d4b1b
Default triad and tool setting changes
johnyrahul Mar 12, 2024
dd7be01
Merge branch 'main' into feat/adapter-permission
johnyrahul Mar 13, 2024
d2c5e7e
Default triad and tool setting changes
johnyrahul Mar 13, 2024
8ae820a
Resolving the conflicts
johnyrahul Mar 13, 2024
8c7a990
Merge branch 'main' into feat/adapter-permission
johnyrahul Mar 13, 2024
a61b366
Fix issue in pre-populating the default triad on the drpdown
mohamed-siddhiq Mar 14, 2024
8daa03d
implemented UI for adapter permissions
jaags-dev Mar 14, 2024
d4a3acc
Added permission for shared users
johnyrahul Mar 14, 2024
6f9298c
Merge branch 'feat/adapter-permission' into feat/adapter-permission-u…
jaags-dev Mar 14, 2024
7575ac9
changed delete text and code clean up
jaags-dev Mar 14, 2024
53a8f27
Merge branch 'main' into feat/adapter-permission
johnyrahul Mar 14, 2024
14d73c2
Merge branch 'feat/adapter-permission' into feat/adapter-permission-u…
jaags-dev Mar 14, 2024
331e765
Merge branch 'feat/adapter-permission-ui-changes' of github.com:Zipst…
jaags-dev Mar 14, 2024
d432ddc
changed delete text for share popup
jaags-dev Mar 14, 2024
cc2553a
removed is_defaul from serilaizer
johnyrahul Mar 14, 2024
71af56f
Merge branch 'feat/adapter-permission-ui-changes' of https://github.c…
johnyrahul Mar 14, 2024
8956656
Merge pull request #100 from Zipstack/feat/adapter-permission-ui-changes
johnyrahul Mar 14, 2024
1bc888a
handled missing value for created by email
jaags-dev Mar 14, 2024
c6dae31
Merge branch 'main' into feat/adapter-permission
johnyrahul Mar 14, 2024
ed45c7d
optimized migration file
johnyrahul Mar 14, 2024
0ebbd62
Merge branch 'feat/adapter-permission' of https://github.com/Zipstack…
johnyrahul Mar 14, 2024
5ab0ac8
Merge branch 'main' into feat/adapter-permission
johnyrahul Mar 14, 2024
dc56311
code optimization
jaags-dev Mar 14, 2024
22e953a
Added comments
johnyrahul Mar 15, 2024
f292941
Merge branch 'main' into feat/adapter-permission
jaags-dev Mar 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix issue in pre-populating the default triad on the drpdown
  • Loading branch information
mohamed-siddhiq committed Mar 14, 2024
commit a61b366ed2596ada7cc1c2115efd0cb0a12043e2
226 changes: 137 additions & 89 deletions frontend/src/components/settings/default-triad/DefaultTriad.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { useAlertStore } from "../../../store/alert-store";
import { useSessionStore } from "../../../store/session-store";
import { CustomButton } from "../../widgets/custom-button/CustomButton.jsx";
import SpaceWrapper from "../../widgets/space-wrapper/SpaceWrapper.jsx";
import { SpinnerLoader } from "../../widgets/spinner-loader/SpinnerLoader.jsx";
import "./DefaultTriad.css";

const { Option } = Select;
Expand All @@ -21,64 +22,97 @@ function DefaultTriad() {
const { setAlertDetails } = useAlertStore();
const handleException = useExceptionHandler();

const [adapterList, setAdapterList] = useState([]);
const [dropdownData, setDropdownData] = useState([]);
const [selectedValues, setSelectedValues] = useState({});
const [isSubmitEnabled, setIsSubmitEnabled] = useState(false);
const [isLoading, setIsLoading] = useState(false);

const desiredOrder = ["LLM", "EMBEDDING", "VECTOR_DB", "X2TEXT"];

const labelMap = {
LLM: "Default LLM",
EMBEDDING: "Default Embeddings",
EMBEDDING: "Default Embedding",
VECTOR_DB: "Default Vector DB",
X2TEXT: "Default X2Text",
X2TEXT: "Default Text Extractor",
};

const updateDropdownData = (data) => {
const updatedData = data.map((entry) => {
if (entry.is_default) {
function getKeyByValue(value) {
return Object.keys(labelMap).find((key) => labelMap[key] === value);
}

// Add current default to the dropdown value
const updateDropdownData = (defaultValues) => {
const updatedData = adapterList.map((entry) => {
if (defaultValues[entry.adapter_type] === entry?.id) {
return {
...entry,
adapter_name: `${entry.adapter_name} (current default)`,
};
}
return entry;
});

// Update the state with the modified data
setDropdownData(updatedData);
};

const fetchData = async () => {
try {
const response = await axiosPrivate.get(
`/api/v1/unstract/${sessionDetails?.orgId}/adapter/`
);
updateDropdownData(response?.data);

const defaultAdaptorRes = await axiosPrivate.get(
`/api/v1/unstract/${sessionDetails?.orgId}/adapter/default_triad/`
);

const defaultValues = {};
defaultValues[labelMap.LLM] = defaultAdaptorRes.data?.default_llm_adapter;
defaultValues[labelMap.EMBEDDING] =
defaultAdaptorRes.data?.default_embedding_adapter;
defaultValues[labelMap.VECTOR_DB] =
defaultAdaptorRes.data?.default_vector_db_adapter;
defaultValues[labelMap.X2TEXT] =
defaultAdaptorRes.data?.default_x2text_adapter;

setSelectedValues(defaultValues);
} catch (error) {
setAlertDetails(handleException(error, "Failed to fetch Default Triads"));
}
const fetchData = () => {
const requestOptions = {
method: "GET",
url: `/api/v1/unstract/${sessionDetails?.orgId}/adapter/`,
};
axiosPrivate(requestOptions)
.then((res) => {
const data = res?.data;
setAdapterList(data);
})
.catch((err) => {
setAlertDetails(
handleException(err, "Failed to get the adapters list")
);
})
.finally(() => {});
Comment thread
jaags-dev marked this conversation as resolved.
Outdated
};

const fetchDetaultTriads = () => {
setIsLoading(true);
const requestOptions = {
method: "GET",
url: `/api/v1/unstract/${sessionDetails?.orgId}/adapter/default_triad/`,
};
axiosPrivate(requestOptions)
.then((res) => {
const defaultAdaptors = res?.data;
const defaultValues = {};
defaultValues[getKeyByValue(labelMap.LLM)] =
defaultAdaptors?.default_llm_adapter;
defaultValues[getKeyByValue(labelMap.EMBEDDING)] =
defaultAdaptors?.default_embedding_adapter;
defaultValues[getKeyByValue(labelMap.VECTOR_DB)] =
defaultAdaptors?.default_vector_db_adapter;
defaultValues[getKeyByValue(labelMap.X2TEXT)] =
defaultAdaptors?.default_x2text_adapter;
setSelectedValues(defaultValues);
updateDropdownData(defaultValues);
})
.catch((err) => {
setAlertDetails(handleException(err, "Failed to fetch Default Triads"));
})
.finally(() => {
setIsLoading(false);
});
};

useEffect(() => {
fetchData();
}, []);

useEffect(() => {
if (adapterList.length > 0) {
fetchDetaultTriads();
}
}, [adapterList]);

const handleDropdownChange = (adapterType, selectedValue) => {
setSelectedValues((prevValues) => ({
...prevValues,
Expand All @@ -89,34 +123,44 @@ function DefaultTriad() {

// Handler for form submission
const handleSubmit = async () => {
try {
const body = {
llm_default: selectedValues[desiredOrder[0]],
embedding_default: selectedValues[desiredOrder[1]],
vector_db_default: selectedValues[desiredOrder[2]],
x2text_default: selectedValues[desiredOrder[3]],
};

await axiosPrivate.post(
`/api/v1/unstract/${sessionDetails?.orgId}/adapter/default_triad/`,
body,
{
headers: {
"X-CSRFToken": sessionDetails?.csrfToken,
"Content-Type": "application/json",
},
}
);

setAlertDetails({
type: "success",
content: "Default triad setting saved successfully",
});
fetchData();
setIsSubmitEnabled(false);
} catch (error) {
setAlertDetails(handleException(error, "Failed to generate the key"));
}
let body = {
llm_default: selectedValues[getKeyByValue(labelMap.LLM)],
embedding_default: selectedValues[getKeyByValue(labelMap.EMBEDDING)],
vector_db_default: selectedValues[getKeyByValue(labelMap.VECTOR_DB)],
x2text_default: selectedValues[getKeyByValue(labelMap.X2TEXT)],
};
// Filter out null or blank values
body = Object.fromEntries(
Object.entries(body).filter(
([key, value]) => value !== null && value !== ""
)
);

const header = {
"X-CSRFToken": sessionDetails?.csrfToken,
"Content-Type": "application/json",
};
const requestOptions = {
method: "POST",
url: `/api/v1/unstract/${sessionDetails?.orgId}/adapter/default_triad/`,
headers: header,
data: body,
};
axiosPrivate(requestOptions)
.then((res) => {
setAlertDetails({
type: "success",
content: "Default triad setting saved successfully",
});
fetchData();
setIsSubmitEnabled(false);
})
.catch((err) => {
setAlertDetails(
handleException(err, "Failed to update Default Triads")
);
})
.finally(() => {});
Comment thread
jaags-dev marked this conversation as resolved.
Outdated
};

return (
Expand All @@ -131,37 +175,41 @@ function DefaultTriad() {
</div>
<div className="plt-set-layout">
<IslandLayout>
<div className="plt-set-layout-2 form-width">
{desiredOrder.map((type) => (
<SpaceWrapper key={type}>
<Typography className="triad-select">
{labelMap[type]}
</Typography>
<Select
placeholder={`Select ${labelMap[type]}`}
value={selectedValues[type] || undefined}
onChange={(value) => handleDropdownChange(type, value)}
style={{ width: "100%" }}
>
{dropdownData
.filter((data) => data.adapter_type === type)
.map((data) => (
<Option key={data.id} value={data.id}>
{data.adapter_name}
</Option>
))}
</Select>
</SpaceWrapper>
))}
<CustomButton
type="primary"
className="triad-select"
onClick={handleSubmit}
disabled={!isSubmitEnabled}
>
Save
</CustomButton>
</div>
{isLoading ? (
<SpinnerLoader />
) : (
<div className="plt-set-layout-2 form-width">
{desiredOrder.map((type) => (
<SpaceWrapper key={type}>
<Typography className="triad-select">
{labelMap[type]}
</Typography>
<Select
placeholder={`Select ${labelMap[type]}`}
value={selectedValues[type] || undefined}
onChange={(value) => handleDropdownChange(type, value)}
style={{ width: "100%" }}
>
{dropdownData
.filter((data) => data.adapter_type === type)
.map((data) => (
<Option key={data.id} value={data.id}>
{data.adapter_name}
Comment thread
jaags-dev marked this conversation as resolved.
Outdated
</Option>
))}
</Select>
</SpaceWrapper>
))}
<CustomButton
type="primary"
className="triad-select"
onClick={handleSubmit}
disabled={!isSubmitEnabled}
>
Save
</CustomButton>
</div>
)}
</IslandLayout>
</div>
</>
Expand Down