Skip to content

Commit b7f15de

Browse files
PR comments
1 parent 3de2f74 commit b7f15de

File tree

4 files changed

+38
-15
lines changed

4 files changed

+38
-15
lines changed

src/components/projects/projectId/attributes/attributeId/AttributeCalculations.tsx

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Statuses from "@/src/components/shared/statuses/Statuses";
22
import { selectAllLookupLists, setAllLookupLists } from "@/src/reduxStore/states/pages/lookup-lists";
33
import { selectAttributes, selectVisibleAttributeAC, setAllAttributes, setLabelingTasksAll, updateAttributeById } from "@/src/reduxStore/states/pages/settings";
44
import { selectProjectId } from "@/src/reduxStore/states/project"
5-
import { Attribute, AttributeState, AttributeWithOnClick, LLMConfig } from "@/src/types/components/projects/projectId/settings/data-schema";
5+
import { Attribute, AttributeState, AttributeVisibility, AttributeWithOnClick, LLMConfig } from "@/src/types/components/projects/projectId/settings/data-schema";
66
import { DataTypeEnum } from "@/src/types/shared/general";
77
import { LLM_PROVIDER_OPTIONS, postProcessCurrentAttribute } from "@/src/util/components/projects/projectId/settings/attribute-calculation-helper";
88
import { ATTRIBUTES_VISIBILITY_STATES, DATA_TYPES, getTooltipVisibilityState } from "@/src/util/components/projects/projectId/settings/data-schema-helper";
@@ -40,6 +40,7 @@ import { simpleDictCompare } from "@/submodules/javascript-functions/validations
4040
import { LLM_CODE_TEMPLATE_EXAMPLES, LLM_CODE_TEMPLATE_OPTIONS } from "./LLM/llmTemplates";
4141
import KernButton from "@/submodules/react-components/components/kern-button/KernButton";
4242
import { MemoIconAlertTriangleFilled, MemoIconArrowLeft, MemoIconCircleCheckFilled } from "@/submodules/react-components/components/kern-icons/icons";
43+
import { LookupListWithOnClick } from "@/src/types/components/projects/projectId/lookup-lists";
4344

4445
const EDITOR_OPTIONS = { theme: 'vs-light', language: 'python', readOnly: false };
4546

@@ -197,10 +198,11 @@ export default function AttributeCalculation() {
197198

198199
}
199200

201+
const attributesRef = useRefFor(attributes);
200202
const changeAttributeName = useCallback((name: string) => {
201203
if (name == currentAttributeRef.current.name) return;
202204
if (name == '') return;
203-
const duplicateNameExists = attributes.find((attribute) => attribute.name == name);
205+
const duplicateNameExists = attributesRef.current.find((attribute) => attribute.name == name);
204206
if (duplicateNameExists) {
205207
setDuplicateNameExists(true);
206208
setAttributeName(currentAttributeRef.current.name);
@@ -217,10 +219,10 @@ export default function AttributeCalculation() {
217219
}, null, null, attributeNew.name);
218220
}, []);
219221

220-
const updateVisibility = useCallback((option: any) => {
222+
const updateVisibility = useCallback((option: { name: string, value: string }) => {
221223
const attributeNew = { ...currentAttributeRef.current };
222-
attributeNew.visibility = option.value;
223-
attributeNew.visibilityIndex = ATTRIBUTES_VISIBILITY_STATES.findIndex((state) => state.name === option);
224+
attributeNew.visibility = option.value as AttributeVisibility;
225+
attributeNew.visibilityIndex = ATTRIBUTES_VISIBILITY_STATES.findIndex((state) => state.name === option.name);
224226
attributeNew.visibilityName = option.name;
225227
attributeNew.saveSourceCode = false;
226228
updateAttribute(projectId, currentAttributeRef.current.id, (res) => {
@@ -229,7 +231,7 @@ export default function AttributeCalculation() {
229231
}, null, null, null, null, attributeNew.visibility);
230232
}, []);
231233

232-
const updateDataType = useCallback((option: any) => {
234+
const updateDataType = useCallback((option: { name: string, value: string }) => {
233235
const attributeNew = { ...currentAttributeRef.current };
234236
attributeNew.dataType = option.value;
235237
attributeNew.dataTypeName = option.name;
@@ -322,6 +324,10 @@ export default function AttributeCalculation() {
322324
{ ...attribute, onClick: copyToClipboardFunc(attribute.name) }
323325
)), [usableAttributes]);
324326

327+
const lookupListsFinal = useMemo(() => lookupLists.map((lookupList) => (
328+
{ ...lookupList, onClick: copyToClipboardFunc("from knowledge import " + lookupList.pythonVariable) }
329+
)), [lookupLists]);
330+
325331
const disabledOptions = useMemo(() => {
326332
if (!currentAttribute || currentAttribute.dataType == DataTypeEnum.LLM_RESPONSE) return undefined;
327333
return DATA_TYPES.map((e) => e.value == DataTypeEnum.LLM_RESPONSE);
@@ -404,11 +410,11 @@ export default function AttributeCalculation() {
404410
</div>
405411

406412
<div className="text-sm leading-5 font-medium text-gray-700 inline-block">
407-
{lookupLists.length == 0 ? 'No lookup lists in project' : 'Lookup lists'}</div>
413+
{lookupListsFinal.length == 0 ? 'No lookup lists in project' : 'Lookup lists'}</div>
408414
<div className="flex flex-row items-center">
409-
{lookupLists.map((lookupList) => (
415+
{lookupListsFinal.map((lookupList: LookupListWithOnClick) => (
410416
<Tooltip key={lookupList.id} content={TOOLTIPS_DICT.GENERAL.IMPORT_STATEMENT} color="invert" placement="top">
411-
<span onClick={copyToClipboardFunc("from knowledge import " + lookupList.pythonVariable)}>
417+
<span onClick={lookupList.onClick}>
412418
<div className="cursor-pointer border items-center px-2 py-0.5 rounded text-xs font-medium text-center mr-2">
413419
{lookupList.pythonVariable} - {lookupList.termCount}
414420
</div>

src/components/projects/projectId/attributes/attributeId/ExecutionContainer.tsx

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { AttributeState } from "@/src/types/components/projects/projectId/settin
66
import { ModalEnum } from "@/src/types/shared/modal";
77
import { postProcessRecordByRecordId } from "@/src/util/components/projects/projectId/settings/attribute-calculation-helper";
88
import { Tooltip } from "@nextui-org/react";
9-
import { useCallback, useEffect, useState } from "react";
9+
import { useCallback, useEffect, useMemo, useState } from "react";
1010
import { useDispatch, useSelector } from "react-redux";
1111
import { TOOLTIPS_DICT } from "@/src/util/tooltip-constants";
1212
import ConfirmExecutionModal from "./ConfirmExecutionModal";
@@ -61,8 +61,9 @@ export default function ExecutionContainer(props: ExecutionContainerProps) {
6161
});
6262
}
6363

64+
const requestedSomethingRef = useRefFor(requestedSomething);
6465
const executeAttribute = useCallback(() => {
65-
dispatch(setModalStates(ModalEnum.EXECUTE_ATTRIBUTE_CALCULATION, { open: true, requestedSomething: requestedSomething }));
66+
dispatch(setModalStates(ModalEnum.EXECUTE_ATTRIBUTE_CALCULATION, { open: true, requestedSomething: requestedSomethingRef.current }));
6667
}, []);
6768

6869
const sampleRecordsRef = useRefFor(sampleRecords);
@@ -71,6 +72,18 @@ export default function ExecutionContainer(props: ExecutionContainerProps) {
7172
recordByRecordId(sampleRecordsRef.current.recordIds[index]);
7273
}, []);
7374

75+
const sampleRecordsFinal = useMemo(() => {
76+
if (sampleRecords && sampleRecords.calculatedAttributesDisplay) {
77+
return sampleRecords.calculatedAttributesDisplay.map((record: any) => {
78+
return {
79+
...record,
80+
onClick: viewRecordDetails(record.id)
81+
}
82+
}
83+
);
84+
}
85+
}, [sampleRecords]);
86+
7487
return (<div>
7588
<div className="mt-8 text-sm leading-5">
7689
<div className="text-gray-700 font-medium mr-2">
@@ -112,12 +125,12 @@ export default function ExecutionContainer(props: ExecutionContainerProps) {
112125
</div>
113126
</div>
114127

115-
{sampleRecords && sampleRecords.calculatedAttributesDisplay.length > 0 && <div className="mt-4 flex flex-col">
128+
{sampleRecordsFinal && sampleRecordsFinal.length > 0 && <div className="mt-4 flex flex-col">
116129
<div className="overflow-x-auto">
117130
<div className="inline-block min-w-full align-middle">
118131
<div className="overflow-hidden shadow ring-1 ring-black ring-opacity-5 md:rounded-lg">
119132
<div className="min-w-full border divide-y divide-gray-300">
120-
{sampleRecords.calculatedAttributesDisplay.map((record: any, index: number) => (
133+
{sampleRecordsFinal.map((record: any, index: number) => (
121134
<div key={record.id} className="divide-y divide-gray-200 bg-white">
122135
<div className="flex-shrink-0 border-b border-gray-200 shadow-sm flex justify-between items-center">
123136
<div className="flex items-center text-xs leading-5 text-gray-500 font-normal mx-4 my-3 text-justify">
@@ -126,7 +139,7 @@ export default function ExecutionContainer(props: ExecutionContainerProps) {
126139
<div className="flex items-center justify-center mr-5 ml-auto">
127140
<KernButton
128141
text="View"
129-
onClick={viewRecordDetails(index)}
142+
onClick={record.onClick}
130143
/>
131144
</div>
132145
</div>

src/types/components/projects/projectId/lookup-lists.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ export type LookupList = {
1111
pythonVariable: string;
1212
}
1313

14+
export type LookupListWithOnClick = LookupList & {
15+
onClick: () => void;
16+
}
17+
1418
export type Term = {
1519
blacklisted: boolean;
1620
comment: string;

0 commit comments

Comments
 (0)