mirror of
https://github.com/grafana/grafana.git
synced 2024-11-28 03:34:15 -06:00
bd95856ff9
* Add UMLs
* Add rendered diagrams
* Move QueryCtrl to flux
* Remove redundant param in the reducer
* Use named imports for lodash and fix typing for GraphiteTagOperator
* Add missing async/await
* Extract providers to a separate file
* Clean up async await
* Rename controller functions back to main
* Simplify creating actions
* Re-order controller functions
* Separate helpers from actions
* Rename vars
* Simplify helpers
* Move controller methods to state reducers
* Remove docs (they are added in design doc)
* Move actions.ts to state folder
* Add docs
* Add old methods stubs for easier review
* Check how state dependencies will be mapped
* Rename state to store
* Rename state to store
* Rewrite spec tests for Graphite Query Controller
* Update docs
* Update docs
* Add GraphiteTextEditor
* Add play button
* Add AddGraphiteFunction
* Use Segment to simplify AddGraphiteFunction
* Memoize function defs
* Fix useCallback deps
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/helpers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Update public/app/plugins/datasource/graphite/state/providers.ts
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
* Add more type definitions
* Remove submitOnClickAwayOption
This behavior is actually needed to remove parameters in functions
* Load function definitions before parsing the target on initial load
* Add button padding
* Fix loading function definitions
* Change targetChanged to updateQuery to avoid mutating state directly
It's also needed for extra refresh/runQuery execution as handleTargetChanged doesn't handle changing the raw query
* Fix updating query after adding a function
* Simplify updating function params
* Migrate function editor to react
* Simplify setting Segment Select min width
* Remove unnecessary changes to SegmentInput
* Extract view logic to a helper and update types definitions
* Clean up types
* Update FuncDef types and add tests
* Show red border for unknown functions
* Autofocus on new params
* Extract params mapping to a helper
* Split code between params and function editor
* Focus on the first param when a function is added even if it's an optional argument
* Add function editor tests
* Remove todo marker
* Fix adding new functions
* Allow empty value in selects for removing function params
* Add placeholders and fix styling
* Add more docs
* Create basic implementation for metrics and tags
* Post merge fixes
These files are not .ts
* Remove mapping to Angular dropdowns
* Simplify mapping tag names, values and operators
* Simplify mapping metrics
* Fix removing tags and autocomplete
* Simplify debouncing providers
* Ensure options are loaded twice and segment is opened
* Remove focusing new segments logic (not supported by React's segment)
* Clean up
* Move debouncing to components
* Simplify mapping to selectable options
* Add docs
* Group all components
* Remove unused controller methods
* Create Dispatch context
* Group Series and Tags Sections
* Create Functions section
* Create Section component
* use getStyles
* remove redundant async/await
* Remove
* remove redundant async/await
* Remove console.log and silent test console output
* Do not display the name of the selected dropdown option
* Move Section to grafana-ui
* Update storybook
* Simplify SectionLabel
* Fix Influx tests
* Fix API Extractor warnings
* Fix API Extractor warnings
* Do not show hidden functions
* Use block docs for better doc generation
* Handle undefined values provided for autocomplete
* Basic integration
* Move creating state to context.tsx
* Update tests
* Rename test
* Clean up dependencies
panel.targets is not needed for interpolation - it happens in the data source itself. It was used only to show query ref in the the dropdown for the segment.
* Update time range when it changes
* Change action name
* Simplify segments cloning
* Remove redundant variable
* Use styles instead of direct css
* Update docs
* Remove angular wrappers
* Remove redundant tests
* Section -> SegmentSection
* Simplify section styling
* Remove redundant div
* Fix unit tests
* Simplify SegmentSection component
* Use theme.spacing
* Use empty label instead of a single space label
* Remove targetFull
It was used in the past two store the query interpolated with sub-queries inside the model and send both to the backed (interpolated and not interpolated). This has been changed though - the logic has been moved away from model to the data source where interpolation happens and now only interpolated query is passed meaning targetFull is not needed anymore.
* Revert "Remove targetFull"
This reverts commit 499f8b33
* Bring back calculating targetFull
* Clean up
* Add missing dep
* Add missing dep in tests
* Fix time range synchronization
* Fix warning message
* Remove unused type
* Synchronize changes to the query
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
204 lines
7.2 KiB
TypeScript
204 lines
7.2 KiB
TypeScript
import { react2AngularDirective } from 'app/core/utils/react2angular';
|
|
import { QueryEditor as CloudMonitoringQueryEditor } from 'app/plugins/datasource/cloud-monitoring/components/QueryEditor';
|
|
import { AnnotationQueryEditor as CloudMonitoringAnnotationQueryEditor } from 'app/plugins/datasource/cloud-monitoring/components/AnnotationQueryEditor';
|
|
import { AnnotationQueryEditor as CloudWatchAnnotationQueryEditor } from 'app/plugins/datasource/cloudwatch/components/AnnotationQueryEditor';
|
|
import PageHeader from './components/PageHeader/PageHeader';
|
|
import EmptyListCTA from './components/EmptyListCTA/EmptyListCTA';
|
|
import { TagFilter } from './components/TagFilter/TagFilter';
|
|
import { MetricSelect } from './components/Select/MetricSelect';
|
|
import {
|
|
ColorPicker,
|
|
DataLinksInlineEditor,
|
|
DataSourceHttpSettings,
|
|
GraphContextMenu,
|
|
Icon,
|
|
LegacyForms,
|
|
SeriesColorPickerPopoverWithTheme,
|
|
Spinner,
|
|
UnitPicker,
|
|
} from '@grafana/ui';
|
|
import { LokiAnnotationsQueryEditor } from '../plugins/datasource/loki/components/AnnotationsQueryEditor';
|
|
import { HelpModal } from './components/help/HelpModal';
|
|
import { Footer } from './components/Footer/Footer';
|
|
import { FolderPicker } from 'app/core/components/Select/FolderPicker';
|
|
import { SearchField, SearchResults, SearchResultsFilter } from '../features/search';
|
|
import { TimePickerSettings } from 'app/features/dashboard/components/DashboardSettings/TimePickerSettings';
|
|
import QueryEditor from 'app/plugins/datasource/grafana-azure-monitor-datasource/components/QueryEditor/QueryEditor';
|
|
|
|
const { SecretFormField } = LegacyForms;
|
|
|
|
export function registerAngularDirectives() {
|
|
react2AngularDirective('footer', Footer, []);
|
|
react2AngularDirective('icon', Icon, [
|
|
'name',
|
|
'size',
|
|
'type',
|
|
['onClick', { watchDepth: 'reference', wrapApply: true }],
|
|
]);
|
|
react2AngularDirective('spinner', Spinner, ['inline']);
|
|
react2AngularDirective('helpModal', HelpModal, []);
|
|
react2AngularDirective('pageHeader', PageHeader, ['model', 'noTabs']);
|
|
react2AngularDirective('emptyListCta', EmptyListCTA, [
|
|
'title',
|
|
'buttonIcon',
|
|
'buttonLink',
|
|
'buttonTitle',
|
|
['onClick', { watchDepth: 'reference', wrapApply: true }],
|
|
'proTip',
|
|
'proTipLink',
|
|
'proTipLinkTitle',
|
|
'proTipTarget',
|
|
'infoBox',
|
|
'infoBoxTitle',
|
|
]);
|
|
//Search
|
|
react2AngularDirective('searchField', SearchField, [
|
|
'query',
|
|
'autoFocus',
|
|
['onChange', { watchDepth: 'reference' }],
|
|
['onKeyDown', { watchDepth: 'reference' }],
|
|
]);
|
|
react2AngularDirective('searchResults', SearchResults, [
|
|
'results',
|
|
'editable',
|
|
'selectors',
|
|
['onSelectionChanged', { watchDepth: 'reference' }],
|
|
['onTagSelected', { watchDepth: 'reference' }],
|
|
['onFolderExpanding', { watchDepth: 'reference' }],
|
|
['onToggleSelection', { watchDepth: 'reference' }],
|
|
]);
|
|
react2AngularDirective('searchFilters', SearchResultsFilter, [
|
|
'allChecked',
|
|
'canMove',
|
|
'canDelete',
|
|
'tagFilterOptions',
|
|
'selectedStarredFilter',
|
|
'selectedTagFilter',
|
|
['onSelectAllChanged', { watchDepth: 'reference' }],
|
|
['deleteItem', { watchDepth: 'reference' }],
|
|
['moveTo', { watchDepth: 'reference' }],
|
|
['onStarredFilterChange', { watchDepth: 'reference' }],
|
|
['onTagFilterChange', { watchDepth: 'reference' }],
|
|
]);
|
|
react2AngularDirective('tagFilter', TagFilter, [
|
|
'tags',
|
|
['onChange', { watchDepth: 'reference' }],
|
|
['tagOptions', { watchDepth: 'reference' }],
|
|
]);
|
|
react2AngularDirective('colorPicker', ColorPicker, [
|
|
'color',
|
|
['onChange', { watchDepth: 'reference', wrapApply: true }],
|
|
]);
|
|
react2AngularDirective('seriesColorPickerPopover', SeriesColorPickerPopoverWithTheme, [
|
|
'color',
|
|
'series',
|
|
'onColorChange',
|
|
'onToggleAxis',
|
|
]);
|
|
react2AngularDirective('unitPicker', UnitPicker, [
|
|
'value',
|
|
'width',
|
|
['onChange', { watchDepth: 'reference', wrapApply: true }],
|
|
]);
|
|
react2AngularDirective('metricSelect', MetricSelect, [
|
|
'options',
|
|
'onChange',
|
|
'value',
|
|
'isSearchable',
|
|
'className',
|
|
'placeholder',
|
|
['variables', { watchDepth: 'reference' }],
|
|
]);
|
|
react2AngularDirective('cloudMonitoringQueryEditor', CloudMonitoringQueryEditor, [
|
|
'target',
|
|
'onQueryChange',
|
|
'onExecuteQuery',
|
|
['events', { watchDepth: 'reference' }],
|
|
['datasource', { watchDepth: 'reference' }],
|
|
['templateSrv', { watchDepth: 'reference' }],
|
|
]);
|
|
react2AngularDirective('cloudMonitoringAnnotationQueryEditor', CloudMonitoringAnnotationQueryEditor, [
|
|
'target',
|
|
'onQueryChange',
|
|
['datasource', { watchDepth: 'reference' }],
|
|
['templateSrv', { watchDepth: 'reference' }],
|
|
]);
|
|
react2AngularDirective('cloudwatchAnnotationQueryEditor', CloudWatchAnnotationQueryEditor, [
|
|
'query',
|
|
'onChange',
|
|
['datasource', { watchDepth: 'reference' }],
|
|
]);
|
|
react2AngularDirective('secretFormField', SecretFormField, [
|
|
'value',
|
|
'isConfigured',
|
|
'inputWidth',
|
|
'labelWidth',
|
|
['onReset', { watchDepth: 'reference', wrapApply: true }],
|
|
['onChange', { watchDepth: 'reference', wrapApply: true }],
|
|
]);
|
|
react2AngularDirective('graphContextMenu', GraphContextMenu, [
|
|
'x',
|
|
'y',
|
|
'itemsGroup',
|
|
['onClose', { watchDepth: 'reference', wrapApply: true }],
|
|
['getContextMenuSource', { watchDepth: 'reference', wrapApply: true }],
|
|
['timeZone', { watchDepth: 'reference', wrapApply: true }],
|
|
]);
|
|
|
|
// We keep the drilldown terminology here because of as using data-* directive
|
|
// being in conflict with HTML data attributes
|
|
react2AngularDirective('drilldownLinksEditor', DataLinksInlineEditor, [
|
|
'value',
|
|
'links',
|
|
'suggestions',
|
|
['onChange', { watchDepth: 'reference', wrapApply: true }],
|
|
]);
|
|
|
|
react2AngularDirective('lokiAnnotationsQueryEditor', LokiAnnotationsQueryEditor, [
|
|
'expr',
|
|
'maxLines',
|
|
'instant',
|
|
'onChange',
|
|
['datasource', { watchDepth: 'reference' }],
|
|
]);
|
|
react2AngularDirective('datasourceHttpSettingsNext', DataSourceHttpSettings, [
|
|
'defaultUrl',
|
|
'showAccessOptions',
|
|
'dataSourceConfig',
|
|
'showForwardOAuthIdentityOption',
|
|
['onChange', { watchDepth: 'reference', wrapApply: true }],
|
|
]);
|
|
react2AngularDirective('folderPicker', FolderPicker, [
|
|
'labelClass',
|
|
'rootName',
|
|
'enableCreateNew',
|
|
'enableReset',
|
|
'initialTitle',
|
|
'initialFolderId',
|
|
'dashboardId',
|
|
'onCreateFolder',
|
|
['enterFolderCreation', { watchDepth: 'reference', wrapApply: true }],
|
|
['exitFolderCreation', { watchDepth: 'reference', wrapApply: true }],
|
|
['onLoad', { watchDepth: 'reference', wrapApply: true }],
|
|
['onChange', { watchDepth: 'reference', wrapApply: true }],
|
|
]);
|
|
|
|
react2AngularDirective('timePickerSettings', TimePickerSettings, [
|
|
'renderCount',
|
|
'refreshIntervals',
|
|
'timePickerHidden',
|
|
'nowDelay',
|
|
'timezone',
|
|
['onTimeZoneChange', { watchDepth: 'reference', wrapApply: true }],
|
|
['onRefreshIntervalChange', { watchDepth: 'reference', wrapApply: true }],
|
|
['onNowDelayChange', { watchDepth: 'reference', wrapApply: true }],
|
|
['onHideTimePickerChange', { watchDepth: 'reference', wrapApply: true }],
|
|
]);
|
|
|
|
react2AngularDirective('azureMonitorQueryEditor', QueryEditor, [
|
|
'query',
|
|
['datasource', { watchDepth: 'reference' }],
|
|
'onChange',
|
|
]);
|
|
}
|