Skip to content

Commit b57ff5a

Browse files
feat(schemaBrowser): add read-only property (#6130)
* feat: add readOnly property to FieldSelector * feat: add readOnly property to TagSelector * chore: derive readOnly from `resource.data.language` * chore: move down readOnly check to selector level
1 parent ec96477 commit b57ff5a

File tree

4 files changed

+58
-5
lines changed

4 files changed

+58
-5
lines changed

src/dataExplorer/components/FieldSelector.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {PersistanceContext} from 'src/dataExplorer/context/persistance'
2020

2121
// Types
2222
import {RemoteDataState} from 'src/types'
23+
import {LanguageType} from 'src/dataExplorer/components/resources'
2324

2425
// Syles
2526
import './Schema.scss'
@@ -39,7 +40,7 @@ conceptually similar to a non-indexed column and value.`
3940
const FieldSelector: FC = () => {
4041
const {fields, loading} = useContext(FieldsContext)
4142
const {selectField, searchTerm} = useContext(FluxQueryBuilderContext)
42-
const {selection} = useContext(PersistanceContext)
43+
const {selection, resource} = useContext(PersistanceContext)
4344
const [fieldsToShow, setFieldsToShow] = useState([])
4445

4546
const handleSelectField = (field: string) => {
@@ -83,7 +84,18 @@ const FieldSelector: FC = () => {
8384
</div>
8485
)
8586
} else if (loading === RemoteDataState.Done && fieldsToShow.length) {
86-
if (isFlagEnabled('schemaComposition')) {
87+
if (resource?.data?.language === LanguageType.SQL) {
88+
// readOnly
89+
list = fieldsToShow.map(field => (
90+
<dd
91+
key={field}
92+
className="field-selector--list-item--readonly"
93+
data-testid="field-selector--list-item--readonly"
94+
>
95+
<code>{field}</code>
96+
</dd>
97+
))
98+
} else if (isFlagEnabled('schemaComposition')) {
8799
list = (
88100
<SelectorList
89101
items={fieldsToShow}

src/dataExplorer/components/Schema.scss

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,28 @@
104104
text-overflow: ellipsis;
105105
}
106106

107+
.field-selector--list-item--readonly,
108+
.tag-selector-value--list-item--readonly {
109+
padding: $cf-space-2xs;
110+
height: $cf-form-xs-height;
111+
line-height: $cf-form-xs-height;
112+
font-family: $cf-code-font;
113+
font-weight: $cf-font-weight--regular;
114+
display: flex;
115+
align-items: center;
116+
justify-content: space-between;
117+
118+
> code {
119+
font-size: $cf-form-sm-font;
120+
border-radius: $cf-radius-sm;
121+
padding: 0 $cf-space-2xs;
122+
white-space: nowrap;
123+
overflow: hidden;
124+
text-overflow: ellipsis;
125+
color: $cf-grey-85;
126+
}
127+
}
128+
107129
.field-selector--list-item--selectable,
108130
.tag-selector-value--list-item--selectable {
109131
padding: $cf-space-2xs;

src/dataExplorer/components/TagSelector.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ import SelectorList from 'src/timeMachine/components/SelectorList'
99
// Contexts
1010
import {FluxQueryBuilderContext} from 'src/dataExplorer/context/fluxQueryBuilder'
1111
import {TagsContext} from 'src/dataExplorer/context/tags'
12+
import {PersistanceContext} from 'src/dataExplorer/context/persistance'
1213

1314
// Types
1415
import {RemoteDataState} from 'src/types'
16+
import {LanguageType} from 'src/dataExplorer/components/resources'
1517

1618
// Utils
1719
import {
@@ -25,20 +27,21 @@ const TAG_KEYS_TOOLTIP = `Tags and Tag Values are indexed key values \
2527
pairs within a measurement. For SQL users, this is conceptually \
2628
similar to an indexed column and value.`
2729

28-
interface Prop {
30+
interface TagValuesProps {
2931
loading: RemoteDataState
3032
tagKey: string
3133
tagValues: string[]
3234
}
3335

34-
const TagValues: FC<Prop> = ({loading, tagKey, tagValues}) => {
36+
const TagValues: FC<TagValuesProps> = ({loading, tagKey, tagValues}) => {
3537
const {
3638
selectedBucket,
3739
selectedMeasurement,
3840
selectedTagValues,
3941
selectTagValue,
4042
searchTerm,
4143
} = useContext(FluxQueryBuilderContext)
44+
const {resource} = useContext(PersistanceContext)
4245
const {getTagValues} = useContext(TagsContext)
4346
const [valuesToShow, setValuesToShow] = useState([])
4447

@@ -82,7 +85,18 @@ const TagValues: FC<Prop> = ({loading, tagKey, tagValues}) => {
8285
</div>
8386
)
8487
} else if (loading === RemoteDataState.Done && valuesToShow.length) {
85-
if (isFlagEnabled('schemaComposition')) {
88+
if (resource?.data?.language === LanguageType.SQL) {
89+
// readOnly
90+
list = valuesToShow.map(value => (
91+
<dd
92+
key={value}
93+
className="tag-selector-value--list-item--readonly"
94+
data-testid="tag-selector-value--list-item--readonly"
95+
>
96+
<code>{value}</code>
97+
</dd>
98+
))
99+
} else if (isFlagEnabled('schemaComposition')) {
86100
list = (
87101
<SelectorList
88102
items={valuesToShow}

src/dataExplorer/components/resources/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,8 @@ export const RESOURCES: Resources = {}
3636
}
3737
})
3838
})
39+
40+
export enum LanguageType {
41+
FLUX = 'flux',
42+
SQL = 'sql',
43+
}

0 commit comments

Comments
 (0)