@finos/legend-query-builder 4.19.22 → 4.19.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/lib/components/QueryBuilder.d.ts.map +1 -1
  2. package/lib/components/QueryBuilder.js +65 -50
  3. package/lib/components/QueryBuilder.js.map +1 -1
  4. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts +2 -1
  5. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts.map +1 -1
  6. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js +2 -2
  7. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js.map +1 -1
  8. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
  9. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +11 -7
  10. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
  11. package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
  12. package/lib/components/shared/LambdaEditor.js +4 -13
  13. package/lib/components/shared/LambdaEditor.js.map +1 -1
  14. package/lib/components/sql-playground/SQLPlaygroundEditor.d.ts.map +1 -1
  15. package/lib/components/sql-playground/SQLPlaygroundEditor.js +4 -4
  16. package/lib/components/sql-playground/SQLPlaygroundEditor.js.map +1 -1
  17. package/lib/data-access-overview.css +1 -1
  18. package/lib/index.css +1 -1
  19. package/lib/index.d.ts +1 -0
  20. package/lib/index.d.ts.map +1 -1
  21. package/lib/index.js +1 -0
  22. package/lib/index.js.map +1 -1
  23. package/lib/package.json +1 -1
  24. package/lib/stores/query-workflow/QueryBuilderWorkFlowState.d.ts +10 -0
  25. package/lib/stores/query-workflow/QueryBuilderWorkFlowState.d.ts.map +1 -1
  26. package/lib/stores/query-workflow/QueryBuilderWorkFlowState.js +16 -0
  27. package/lib/stores/query-workflow/QueryBuilderWorkFlowState.js.map +1 -1
  28. package/package.json +8 -8
  29. package/src/components/QueryBuilder.tsx +392 -365
  30. package/src/components/__test-utils__/QueryBuilderComponentTestUtils.tsx +3 -1
  31. package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +383 -371
  32. package/src/components/shared/LambdaEditor.tsx +10 -13
  33. package/src/components/sql-playground/SQLPlaygroundEditor.tsx +6 -5
  34. package/src/index.ts +1 -0
  35. package/src/stores/query-workflow/QueryBuilderWorkFlowState.ts +19 -0
@@ -705,377 +705,404 @@ export const QueryBuilder = observer(
705
705
  {actionConfig.renderer(queryBuilderState)}
706
706
  </Fragment>
707
707
  ))}
708
- <ControlledDropdownMenu
709
- className="query-builder__header__advanced-dropdown"
710
- title="Show Advanced Menu..."
711
- content={
712
- <MenuContent>
713
- <MenuContentItem
714
- onClick={toggleShowFunctionPanel}
715
- disabled={!queryBuilderState.isQuerySupported}
716
- >
717
- <MenuContentItemIcon>
718
- {queryBuilderState.showFunctionsExplorerPanel ? (
719
- <CheckIcon />
720
- ) : null}
721
- </MenuContentItemIcon>
722
- <MenuContentItemLabel>
723
- Show Function(s)
724
- </MenuContentItemLabel>
725
- </MenuContentItem>
726
- {!queryBuilderState.isParameterSupportDisabled && (
727
- <MenuContentItem
728
- onClick={toggleShowParameterPanel}
729
- disabled={
730
- !queryBuilderState.isQuerySupported ||
731
- queryBuilderState.parametersState.parameterStates.filter(
732
- (paramState) =>
733
- !queryBuilderState.milestoningState.isMilestoningParameter(
734
- paramState.parameter,
735
- ),
736
- ).length > 0
737
- }
738
- >
739
- <MenuContentItemIcon>
740
- {queryBuilderState.showParametersPanel ? (
741
- <CheckIcon />
742
- ) : null}
743
- </MenuContentItemIcon>
744
- <MenuContentItemLabel>
745
- Show Parameter(s)
746
- </MenuContentItemLabel>
747
- </MenuContentItem>
748
- )}
749
- {
750
- <MenuContentItem
751
- onClick={toggleConstantPanel}
752
- disabled={
753
- !queryBuilderState.isQuerySupported ||
754
- queryBuilderState.constantState.constants.length > 0
755
- }
756
- >
757
- <MenuContentItemIcon>
758
- {queryBuilderState.constantState
759
- .showConstantPanel ? (
760
- <CheckIcon />
761
- ) : null}
762
- </MenuContentItemIcon>
763
- <MenuContentItemLabel>
764
- Show Constant(s)
765
- </MenuContentItemLabel>
766
- </MenuContentItem>
767
- }
768
- <MenuContentItem
769
- onClick={toggleShowFilterPanel}
770
- disabled={
771
- !queryBuilderState.isQuerySupported ||
772
- Array.from(
773
- queryBuilderState.filterState.nodes.values(),
774
- ).length > 0
775
- }
776
- >
777
- <MenuContentItemIcon>
778
- {queryBuilderState.filterState.showPanel ? (
779
- <CheckIcon />
780
- ) : null}
781
- </MenuContentItemIcon>
782
- <MenuContentItemLabel>Show Filter</MenuContentItemLabel>
783
- </MenuContentItem>
784
- <MenuContentItem
785
- onClick={onChangeFetchStructureImplementation(
786
- isTDSState
787
- ? FETCH_STRUCTURE_IMPLEMENTATION.GRAPH_FETCH
788
- : FETCH_STRUCTURE_IMPLEMENTATION.TABULAR_DATA_STRUCTURE,
789
- fetchStructureState,
790
- )}
791
- disabled={!queryBuilderState.isQuerySupported}
792
- >
793
- <MenuContentItemIcon>
794
- {isTDSState ? <CheckIcon /> : null}
795
- </MenuContentItemIcon>
796
- <MenuContentItemLabel>
797
- Tabular Data Structure
798
- </MenuContentItemLabel>
799
- </MenuContentItem>
800
- <MenuContentDivider />
801
- <MenuContentItem
802
- onClick={toggleShowOLAPGroupByPanel}
803
- disabled={
804
- !queryBuilderState.isQuerySupported ||
805
- !(
806
- queryBuilderState.fetchStructureState
807
- .implementation instanceof QueryBuilderTDSState
808
- ) ||
809
- queryBuilderState.fetchStructureState.implementation
810
- .windowState.windowColumns.length > 0
811
- }
812
- >
813
- <MenuContentItemIcon>
814
- {isTDSState &&
815
- guaranteeType(
816
- queryBuilderState.fetchStructureState
817
- .implementation,
818
- QueryBuilderTDSState,
819
- ).showWindowFuncPanel ? (
820
- <CheckIcon />
821
- ) : null}
822
- </MenuContentItemIcon>
823
- <MenuContentItemLabel>
824
- Show Window Function(s)
825
- </MenuContentItemLabel>
826
- </MenuContentItem>
827
- <MenuContentItem
828
- onClick={toggleShowPostFilterPanel}
829
- disabled={
830
- !queryBuilderState.isQuerySupported ||
831
- !(
832
- queryBuilderState.fetchStructureState
833
- .implementation instanceof QueryBuilderTDSState
834
- ) ||
835
- Array.from(
836
- queryBuilderState.fetchStructureState.implementation.postFilterState.nodes.values(),
837
- ).length > 0
838
- }
839
- >
840
- <MenuContentItemIcon>
841
- {queryBuilderState.fetchStructureState
842
- .implementation instanceof QueryBuilderTDSState &&
843
- queryBuilderState.fetchStructureState.implementation
844
- .showPostFilterPanel ? (
845
- <CheckIcon />
846
- ) : null}
847
- </MenuContentItemIcon>
848
- <MenuContentItemLabel>
849
- Show Post-Filter
850
- </MenuContentItemLabel>
851
- </MenuContentItem>
852
- <MenuContentItem
853
- onClick={toggleEnableCalendar}
854
- disabled={
855
- !queryBuilderState.isQuerySupported ||
856
- !(
857
- queryBuilderState.fetchStructureState
858
- .implementation instanceof QueryBuilderTDSState
859
- )
860
- }
861
- >
862
- <MenuContentItemIcon>
863
- {queryBuilderState.isCalendarEnabled ? (
864
- <CheckIcon />
865
- ) : (
866
- <CalendarClockIcon />
708
+ {queryBuilderState.workflowState.showHeaderMenus && (
709
+ <>
710
+ <ControlledDropdownMenu
711
+ className="query-builder__header__advanced-dropdown"
712
+ title="Show Advanced Menu..."
713
+ content={
714
+ <MenuContent>
715
+ <MenuContentItem
716
+ onClick={toggleShowFunctionPanel}
717
+ disabled={!queryBuilderState.isQuerySupported}
718
+ >
719
+ <MenuContentItemIcon>
720
+ {queryBuilderState.showFunctionsExplorerPanel ? (
721
+ <CheckIcon />
722
+ ) : null}
723
+ </MenuContentItemIcon>
724
+ <MenuContentItemLabel>
725
+ Show Function(s)
726
+ </MenuContentItemLabel>
727
+ </MenuContentItem>
728
+ {!queryBuilderState.isParameterSupportDisabled && (
729
+ <MenuContentItem
730
+ onClick={toggleShowParameterPanel}
731
+ disabled={
732
+ !queryBuilderState.isQuerySupported ||
733
+ queryBuilderState.parametersState.parameterStates.filter(
734
+ (paramState) =>
735
+ !queryBuilderState.milestoningState.isMilestoningParameter(
736
+ paramState.parameter,
737
+ ),
738
+ ).length > 0
739
+ }
740
+ >
741
+ <MenuContentItemIcon>
742
+ {queryBuilderState.showParametersPanel ? (
743
+ <CheckIcon />
744
+ ) : null}
745
+ </MenuContentItemIcon>
746
+ <MenuContentItemLabel>
747
+ Show Parameter(s)
748
+ </MenuContentItemLabel>
749
+ </MenuContentItem>
867
750
  )}
868
- </MenuContentItemIcon>
869
- <MenuContentItemLabel>
870
- Enable Calendar
871
- </MenuContentItemLabel>
872
- </MenuContentItem>
873
- <MenuContentItem
874
- onClick={toggleTypedRelation}
875
- disabled={
876
- !queryBuilderState.isQuerySupported ||
877
- !(
878
- queryBuilderState.fetchStructureState
879
- .implementation instanceof QueryBuilderTDSState
880
- )
881
- }
882
- >
883
- <MenuContentItemIcon>
884
- {queryBuilderState.isFetchStructureTyped ? (
885
- <CheckIcon />
886
- ) : null}
887
- </MenuContentItemIcon>
888
- <MenuContentItemLabel>
889
- Enable Typed TDS (BETA)
890
- </MenuContentItemLabel>
891
- </MenuContentItem>
892
- <MenuContentDivider />
893
- {!(
894
- queryBuilderState instanceof
895
- DataProductQueryBuilderState
896
- ) && (
897
- <MenuContentItem
898
- onClick={openCheckEntitlmentsEditor}
899
- disabled={
900
- (queryBuilderState.isQuerySupported &&
751
+ {
752
+ <MenuContentItem
753
+ onClick={toggleConstantPanel}
754
+ disabled={
755
+ !queryBuilderState.isQuerySupported ||
756
+ queryBuilderState.constantState.constants
757
+ .length > 0
758
+ }
759
+ >
760
+ <MenuContentItemIcon>
761
+ {queryBuilderState.constantState
762
+ .showConstantPanel ? (
763
+ <CheckIcon />
764
+ ) : null}
765
+ </MenuContentItemIcon>
766
+ <MenuContentItemLabel>
767
+ Show Constant(s)
768
+ </MenuContentItemLabel>
769
+ </MenuContentItem>
770
+ }
771
+ <MenuContentItem
772
+ onClick={toggleShowFilterPanel}
773
+ disabled={
774
+ !queryBuilderState.isQuerySupported ||
775
+ Array.from(
776
+ queryBuilderState.filterState.nodes.values(),
777
+ ).length > 0
778
+ }
779
+ >
780
+ <MenuContentItemIcon>
781
+ {queryBuilderState.filterState.showPanel ? (
782
+ <CheckIcon />
783
+ ) : null}
784
+ </MenuContentItemIcon>
785
+ <MenuContentItemLabel>
786
+ Show Filter
787
+ </MenuContentItemLabel>
788
+ </MenuContentItem>
789
+ <MenuContentItem
790
+ onClick={onChangeFetchStructureImplementation(
791
+ isTDSState
792
+ ? FETCH_STRUCTURE_IMPLEMENTATION.GRAPH_FETCH
793
+ : FETCH_STRUCTURE_IMPLEMENTATION.TABULAR_DATA_STRUCTURE,
794
+ fetchStructureState,
795
+ )}
796
+ disabled={!queryBuilderState.isQuerySupported}
797
+ >
798
+ <MenuContentItemIcon>
799
+ {isTDSState ? <CheckIcon /> : null}
800
+ </MenuContentItemIcon>
801
+ <MenuContentItemLabel>
802
+ Tabular Data Structure
803
+ </MenuContentItemLabel>
804
+ </MenuContentItem>
805
+ <MenuContentDivider />
806
+ <MenuContentItem
807
+ onClick={toggleShowOLAPGroupByPanel}
808
+ disabled={
809
+ !queryBuilderState.isQuerySupported ||
810
+ !(
811
+ queryBuilderState.fetchStructureState
812
+ .implementation instanceof
813
+ QueryBuilderTDSState
814
+ ) ||
901
815
  queryBuilderState.fetchStructureState
816
+ .implementation.windowState.windowColumns
817
+ .length > 0
818
+ }
819
+ >
820
+ <MenuContentItemIcon>
821
+ {isTDSState &&
822
+ guaranteeType(
823
+ queryBuilderState.fetchStructureState
824
+ .implementation,
825
+ QueryBuilderTDSState,
826
+ ).showWindowFuncPanel ? (
827
+ <CheckIcon />
828
+ ) : null}
829
+ </MenuContentItemIcon>
830
+ <MenuContentItemLabel>
831
+ Show Window Function(s)
832
+ </MenuContentItemLabel>
833
+ </MenuContentItem>
834
+ <MenuContentItem
835
+ onClick={toggleShowPostFilterPanel}
836
+ disabled={
837
+ !queryBuilderState.isQuerySupported ||
838
+ !(
839
+ queryBuilderState.fetchStructureState
840
+ .implementation instanceof
841
+ QueryBuilderTDSState
842
+ ) ||
843
+ Array.from(
844
+ queryBuilderState.fetchStructureState.implementation.postFilterState.nodes.values(),
845
+ ).length > 0
846
+ }
847
+ >
848
+ <MenuContentItemIcon>
849
+ {queryBuilderState.fetchStructureState
902
850
  .implementation instanceof
903
851
  QueryBuilderTDSState &&
904
852
  queryBuilderState.fetchStructureState
905
- .implementation.projectionColumns.length ===
906
- 0) ||
907
- !queryBuilderState.canBuildQuery
908
- }
909
- title={
910
- !queryBuilderState.canBuildQuery
911
- ? 'Please fix query errors to check entitlements'
912
- : ''
913
- }
914
- >
915
- <MenuContentItemIcon>
916
- <DataAccessIcon />
917
- </MenuContentItemIcon>
918
- <MenuContentItemLabel>
919
- Check Entitlements
920
- </MenuContentItemLabel>
921
- </MenuContentItem>
922
- )}
923
- <MenuContentItem
924
- onClick={editPure}
925
- disabled={!queryBuilderState.canBuildQuery}
926
- title={
927
- !queryBuilderState.canBuildQuery
928
- ? 'Please fix query errors to edit in Pure'
929
- : undefined
930
- }
931
- >
932
- <MenuContentItemIcon>
933
- <HackerIcon />
934
- </MenuContentItemIcon>
935
- <MenuContentItemLabel>Edit Pure</MenuContentItemLabel>
936
- </MenuContentItem>
937
- <MenuContentItem
938
- onClick={showPure}
939
- disabled={!queryBuilderState.canBuildQuery}
940
- title={
941
- !queryBuilderState.canBuildQuery
942
- ? 'Please fix query errors to edit in Pure'
943
- : undefined
944
- }
945
- >
946
- <MenuContentItemIcon>
947
- <CodeIcon />
948
- </MenuContentItemIcon>
949
- <MenuContentItemLabel>Show Pure</MenuContentItemLabel>
950
- </MenuContentItem>
951
- <MenuContentItem
952
- onClick={showProtocol}
953
- disabled={!queryBuilderState.canBuildQuery}
954
- title={
955
- !queryBuilderState.canBuildQuery
956
- ? 'Please fix query errors to show query protocol'
957
- : undefined
958
- }
959
- >
960
- <MenuContentItemIcon>
961
- <SerializeIcon />
962
- </MenuContentItemIcon>
963
- <MenuContentItemLabel>
964
- Show Protocol
965
- </MenuContentItemLabel>
966
- </MenuContentItem>
967
- <MenuContentItem onClick={compileQuery}>
968
- <MenuContentItemIcon>
969
- <HammerIcon />
970
- </MenuContentItemIcon>
971
- <MenuContentItemLabel>
972
- Compile Query (F9)
973
- </MenuContentItemLabel>
974
- </MenuContentItem>
975
- {queryBuilderState.changeDetectionState.initState
976
- .hasCompleted && (
977
- <MenuContentItem
978
- disabled={
979
- !queryBuilderState.changeDetectionState.hasChanged
980
- }
981
- onClick={showDiff}
982
- title={
983
- queryBuilderState.changeDetectionState.hasChanged
984
- ? 'Show changes'
985
- : 'Query has not been changed'
986
- }
987
- >
988
- <MenuContentItemIcon>
989
- <DiffIcon />
990
- </MenuContentItemIcon>
991
- <MenuContentItemLabel>
992
- Show Query Diff
993
- </MenuContentItemLabel>
994
- </MenuContentItem>
995
- )}
996
- </MenuContent>
997
- }
998
- menuProps={{
999
- anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
1000
- transformOrigin: { vertical: 'top', horizontal: 'right' },
1001
- elevation: 7,
1002
- }}
1003
- >
1004
- <div className="query-builder__header__advanced-dropdown__label">
1005
- Advanced
1006
- </div>
1007
- <CaretDownIcon className="query-builder__header__advanced-dropdown__icon" />
1008
- </ControlledDropdownMenu>
1009
- <ControlledDropdownMenu
1010
- className="query-builder__header__advanced-dropdown"
1011
- content={
1012
- <MenuContent>
1013
- {extraHelpMenuContentItems}
1014
- {queryDocEntry && (
1015
- <MenuContentItem onClick={openQueryTutorial}>
1016
- <MenuContentItemIcon>
1017
- <DocumentationIcon />
1018
- </MenuContentItemIcon>
1019
- <MenuContentItemLabel>
1020
- Open Documentation
1021
- </MenuContentItemLabel>
1022
- </MenuContentItem>
1023
- )}
1024
- {frequentlyAskedQuestionEntry && (
1025
- <MenuContentItem onClick={openFrequentlyAskedQuestions}>
1026
- <MenuContentItemIcon>
1027
- <QuestionIcon />
1028
- </MenuContentItemIcon>
1029
- <MenuContentItemLabel>
1030
- Frequently Asked Questions
1031
- </MenuContentItemLabel>
1032
- </MenuContentItem>
1033
- )}
1034
- {supportTicketsEntry && (
1035
- <MenuContentItem onClick={openSupportTickets}>
1036
- <MenuContentItemIcon>
1037
- <QuestionIcon />
1038
- </MenuContentItemIcon>
1039
- <MenuContentItemLabel>
1040
- Open Support Tickets
1041
- </MenuContentItemLabel>
1042
- </MenuContentItem>
1043
- )}
1044
- <MenuContentItem
1045
- onClick={toggleAssistant}
1046
- disabled={
1047
- queryBuilderState.applicationStore.assistantService
1048
- .isDisabled
1049
- }
1050
- title={
1051
- queryBuilderState.applicationStore.assistantService
1052
- .isDisabled
1053
- ? 'Virtual Assistant is disabled'
1054
- : ''
1055
- }
1056
- >
1057
- <MenuContentItemIcon>
1058
- {!applicationStore.assistantService.isHidden ? (
1059
- <CheckIcon />
1060
- ) : (
1061
- <AssistantIcon />
853
+ .implementation.showPostFilterPanel ? (
854
+ <CheckIcon />
855
+ ) : null}
856
+ </MenuContentItemIcon>
857
+ <MenuContentItemLabel>
858
+ Show Post-Filter
859
+ </MenuContentItemLabel>
860
+ </MenuContentItem>
861
+ <MenuContentItem
862
+ onClick={toggleEnableCalendar}
863
+ disabled={
864
+ !queryBuilderState.isQuerySupported ||
865
+ !(
866
+ queryBuilderState.fetchStructureState
867
+ .implementation instanceof
868
+ QueryBuilderTDSState
869
+ )
870
+ }
871
+ >
872
+ <MenuContentItemIcon>
873
+ {queryBuilderState.isCalendarEnabled ? (
874
+ <CheckIcon />
875
+ ) : (
876
+ <CalendarClockIcon />
877
+ )}
878
+ </MenuContentItemIcon>
879
+ <MenuContentItemLabel>
880
+ Enable Calendar
881
+ </MenuContentItemLabel>
882
+ </MenuContentItem>
883
+ <MenuContentItem
884
+ onClick={toggleTypedRelation}
885
+ disabled={
886
+ !queryBuilderState.isQuerySupported ||
887
+ !(
888
+ queryBuilderState.fetchStructureState
889
+ .implementation instanceof
890
+ QueryBuilderTDSState
891
+ )
892
+ }
893
+ >
894
+ <MenuContentItemIcon>
895
+ {queryBuilderState.isFetchStructureTyped ? (
896
+ <CheckIcon />
897
+ ) : null}
898
+ </MenuContentItemIcon>
899
+ <MenuContentItemLabel>
900
+ Enable Typed TDS (BETA)
901
+ </MenuContentItemLabel>
902
+ </MenuContentItem>
903
+ <MenuContentDivider />
904
+ {!(
905
+ queryBuilderState instanceof
906
+ DataProductQueryBuilderState
907
+ ) && (
908
+ <MenuContentItem
909
+ onClick={openCheckEntitlmentsEditor}
910
+ disabled={
911
+ (queryBuilderState.isQuerySupported &&
912
+ queryBuilderState.fetchStructureState
913
+ .implementation instanceof
914
+ QueryBuilderTDSState &&
915
+ queryBuilderState.fetchStructureState
916
+ .implementation.projectionColumns.length ===
917
+ 0) ||
918
+ !queryBuilderState.canBuildQuery
919
+ }
920
+ title={
921
+ !queryBuilderState.canBuildQuery
922
+ ? 'Please fix query errors to check entitlements'
923
+ : ''
924
+ }
925
+ >
926
+ <MenuContentItemIcon>
927
+ <DataAccessIcon />
928
+ </MenuContentItemIcon>
929
+ <MenuContentItemLabel>
930
+ Check Entitlements
931
+ </MenuContentItemLabel>
932
+ </MenuContentItem>
1062
933
  )}
1063
- </MenuContentItemIcon>
1064
- <MenuContentItemLabel>
1065
- Show Virtual Assistant
1066
- </MenuContentItemLabel>
1067
- </MenuContentItem>
1068
- </MenuContent>
1069
- }
1070
- >
1071
- <div
1072
- className="query-builder__header__advanced-dropdown__label"
1073
- title="See more options"
1074
- >
1075
- Help...
1076
- </div>
1077
- <CaretDownIcon className="query-builder__header__advanced-dropdown__icon" />
1078
- </ControlledDropdownMenu>
934
+ <MenuContentItem
935
+ onClick={editPure}
936
+ disabled={!queryBuilderState.canBuildQuery}
937
+ title={
938
+ !queryBuilderState.canBuildQuery
939
+ ? 'Please fix query errors to edit in Pure'
940
+ : undefined
941
+ }
942
+ >
943
+ <MenuContentItemIcon>
944
+ <HackerIcon />
945
+ </MenuContentItemIcon>
946
+ <MenuContentItemLabel>
947
+ Edit Pure
948
+ </MenuContentItemLabel>
949
+ </MenuContentItem>
950
+ <MenuContentItem
951
+ onClick={showPure}
952
+ disabled={!queryBuilderState.canBuildQuery}
953
+ title={
954
+ !queryBuilderState.canBuildQuery
955
+ ? 'Please fix query errors to edit in Pure'
956
+ : undefined
957
+ }
958
+ >
959
+ <MenuContentItemIcon>
960
+ <CodeIcon />
961
+ </MenuContentItemIcon>
962
+ <MenuContentItemLabel>
963
+ Show Pure
964
+ </MenuContentItemLabel>
965
+ </MenuContentItem>
966
+ <MenuContentItem
967
+ onClick={showProtocol}
968
+ disabled={!queryBuilderState.canBuildQuery}
969
+ title={
970
+ !queryBuilderState.canBuildQuery
971
+ ? 'Please fix query errors to show query protocol'
972
+ : undefined
973
+ }
974
+ >
975
+ <MenuContentItemIcon>
976
+ <SerializeIcon />
977
+ </MenuContentItemIcon>
978
+ <MenuContentItemLabel>
979
+ Show Protocol
980
+ </MenuContentItemLabel>
981
+ </MenuContentItem>
982
+ <MenuContentItem onClick={compileQuery}>
983
+ <MenuContentItemIcon>
984
+ <HammerIcon />
985
+ </MenuContentItemIcon>
986
+ <MenuContentItemLabel>
987
+ Compile Query (F9)
988
+ </MenuContentItemLabel>
989
+ </MenuContentItem>
990
+ {queryBuilderState.changeDetectionState.initState
991
+ .hasCompleted && (
992
+ <MenuContentItem
993
+ disabled={
994
+ !queryBuilderState.changeDetectionState
995
+ .hasChanged
996
+ }
997
+ onClick={showDiff}
998
+ title={
999
+ queryBuilderState.changeDetectionState
1000
+ .hasChanged
1001
+ ? 'Show changes'
1002
+ : 'Query has not been changed'
1003
+ }
1004
+ >
1005
+ <MenuContentItemIcon>
1006
+ <DiffIcon />
1007
+ </MenuContentItemIcon>
1008
+ <MenuContentItemLabel>
1009
+ Show Query Diff
1010
+ </MenuContentItemLabel>
1011
+ </MenuContentItem>
1012
+ )}
1013
+ </MenuContent>
1014
+ }
1015
+ menuProps={{
1016
+ anchorOrigin: {
1017
+ vertical: 'bottom',
1018
+ horizontal: 'right',
1019
+ },
1020
+ transformOrigin: {
1021
+ vertical: 'top',
1022
+ horizontal: 'right',
1023
+ },
1024
+ elevation: 7,
1025
+ }}
1026
+ >
1027
+ <div className="query-builder__header__advanced-dropdown__label">
1028
+ Advanced
1029
+ </div>
1030
+ <CaretDownIcon className="query-builder__header__advanced-dropdown__icon" />
1031
+ </ControlledDropdownMenu>
1032
+ <ControlledDropdownMenu
1033
+ className="query-builder__header__advanced-dropdown"
1034
+ content={
1035
+ <MenuContent>
1036
+ {extraHelpMenuContentItems}
1037
+ {queryDocEntry && (
1038
+ <MenuContentItem onClick={openQueryTutorial}>
1039
+ <MenuContentItemIcon>
1040
+ <DocumentationIcon />
1041
+ </MenuContentItemIcon>
1042
+ <MenuContentItemLabel>
1043
+ Open Documentation
1044
+ </MenuContentItemLabel>
1045
+ </MenuContentItem>
1046
+ )}
1047
+ {frequentlyAskedQuestionEntry && (
1048
+ <MenuContentItem
1049
+ onClick={openFrequentlyAskedQuestions}
1050
+ >
1051
+ <MenuContentItemIcon>
1052
+ <QuestionIcon />
1053
+ </MenuContentItemIcon>
1054
+ <MenuContentItemLabel>
1055
+ Frequently Asked Questions
1056
+ </MenuContentItemLabel>
1057
+ </MenuContentItem>
1058
+ )}
1059
+ {supportTicketsEntry && (
1060
+ <MenuContentItem onClick={openSupportTickets}>
1061
+ <MenuContentItemIcon>
1062
+ <QuestionIcon />
1063
+ </MenuContentItemIcon>
1064
+ <MenuContentItemLabel>
1065
+ Open Support Tickets
1066
+ </MenuContentItemLabel>
1067
+ </MenuContentItem>
1068
+ )}
1069
+ <MenuContentItem
1070
+ onClick={toggleAssistant}
1071
+ disabled={
1072
+ queryBuilderState.applicationStore
1073
+ .assistantService.isDisabled
1074
+ }
1075
+ title={
1076
+ queryBuilderState.applicationStore
1077
+ .assistantService.isDisabled
1078
+ ? 'Virtual Assistant is disabled'
1079
+ : ''
1080
+ }
1081
+ >
1082
+ <MenuContentItemIcon>
1083
+ {!applicationStore.assistantService.isHidden ? (
1084
+ <CheckIcon />
1085
+ ) : (
1086
+ <AssistantIcon />
1087
+ )}
1088
+ </MenuContentItemIcon>
1089
+ <MenuContentItemLabel>
1090
+ Show Virtual Assistant
1091
+ </MenuContentItemLabel>
1092
+ </MenuContentItem>
1093
+ </MenuContent>
1094
+ }
1095
+ >
1096
+ <div
1097
+ className="query-builder__header__advanced-dropdown__label"
1098
+ title="See more options"
1099
+ >
1100
+ Help...
1101
+ </div>
1102
+ <CaretDownIcon className="query-builder__header__advanced-dropdown__icon" />
1103
+ </ControlledDropdownMenu>
1104
+ </>
1105
+ )}
1079
1106
  </div>
1080
1107
  </div>
1081
1108
  <div className="query-builder__main">