| 
									
										
										
										
											2019-12-12 00:40:56 +08:00
										 |  |  | import React from 'react'; | 
					
						
							|  |  |  | import { css } from 'emotion'; | 
					
						
							| 
									
										
										
										
											2020-02-11 20:48:36 +08:00
										 |  |  | import { Button, DataLinkBuiltInVars, stylesFactory, useTheme } from '@grafana/ui'; | 
					
						
							|  |  |  | import { GrafanaTheme, VariableOrigin } from '@grafana/data'; | 
					
						
							| 
									
										
										
										
											2019-12-12 00:40:56 +08:00
										 |  |  | import { DataLinkConfig } from '../types'; | 
					
						
							|  |  |  | import { DataLink } from './DataLink'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const getStyles = stylesFactory((theme: GrafanaTheme) => ({ | 
					
						
							|  |  |  |   infoText: css`
 | 
					
						
							|  |  |  |     padding-bottom: ${theme.spacing.md}; | 
					
						
							|  |  |  |     color: ${theme.colors.textWeak}; | 
					
						
							|  |  |  |   `,
 | 
					
						
							|  |  |  |   dataLink: css`
 | 
					
						
							|  |  |  |     margin-bottom: ${theme.spacing.sm}; | 
					
						
							|  |  |  |   `,
 | 
					
						
							|  |  |  | })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type Props = { | 
					
						
							|  |  |  |   value?: DataLinkConfig[]; | 
					
						
							|  |  |  |   onChange: (value: DataLinkConfig[]) => void; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | export const DataLinks = (props: Props) => { | 
					
						
							|  |  |  |   const { value, onChange } = props; | 
					
						
							|  |  |  |   const theme = useTheme(); | 
					
						
							|  |  |  |   const styles = getStyles(theme); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return ( | 
					
						
							|  |  |  |     <> | 
					
						
							|  |  |  |       <h3 className="page-heading">Data links</h3> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <div className={styles.infoText}> | 
					
						
							|  |  |  |         Add links to existing fields. Links will be shown in log row details next to the field value. | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <div className="gf-form-group"> | 
					
						
							|  |  |  |         {value && | 
					
						
							|  |  |  |           value.map((field, index) => { | 
					
						
							|  |  |  |             return ( | 
					
						
							|  |  |  |               <DataLink | 
					
						
							|  |  |  |                 className={styles.dataLink} | 
					
						
							|  |  |  |                 key={index} | 
					
						
							|  |  |  |                 value={field} | 
					
						
							|  |  |  |                 onChange={newField => { | 
					
						
							|  |  |  |                   const newDataLinks = [...value]; | 
					
						
							|  |  |  |                   newDataLinks.splice(index, 1, newField); | 
					
						
							|  |  |  |                   onChange(newDataLinks); | 
					
						
							|  |  |  |                 }} | 
					
						
							|  |  |  |                 onDelete={() => { | 
					
						
							|  |  |  |                   const newDataLinks = [...value]; | 
					
						
							|  |  |  |                   newDataLinks.splice(index, 1); | 
					
						
							|  |  |  |                   onChange(newDataLinks); | 
					
						
							|  |  |  |                 }} | 
					
						
							|  |  |  |                 suggestions={[ | 
					
						
							|  |  |  |                   { | 
					
						
							|  |  |  |                     value: DataLinkBuiltInVars.valueRaw, | 
					
						
							|  |  |  |                     label: 'Raw value', | 
					
						
							|  |  |  |                     documentation: 'Raw value of the field', | 
					
						
							|  |  |  |                     origin: VariableOrigin.Value, | 
					
						
							|  |  |  |                   }, | 
					
						
							|  |  |  |                 ]} | 
					
						
							|  |  |  |               /> | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |           })} | 
					
						
							|  |  |  |         <div> | 
					
						
							|  |  |  |           <Button | 
					
						
							| 
									
										
										
										
											2020-03-26 18:50:27 +08:00
										 |  |  |             variant={'secondary'} | 
					
						
							| 
									
										
										
										
											2019-12-12 00:40:56 +08:00
										 |  |  |             className={css`
 | 
					
						
							|  |  |  |               margin-right: 10px; | 
					
						
							|  |  |  |             `}
 | 
					
						
							| 
									
										
											  
											
												@grafana/ui: Create Icon component and replace part of the icons (#23402)
* Part1: Unicons implementation (#23197)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on  main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Remove color prop from icon, remove color implemetation in mono icons
* Update navbar styling
* Move toPascalCase to utils/string
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Resolve type errors resulted from merge
* Part2: Unicons implementation (#23266)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on  main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Implment icons in Tabs
* Implement icons in search items and  empty  list
* Update buttons
* Update button-related snapshot tests
* Update icons in modals and page headers
* Create anfular wrapper and update all icons on search screen
* Update sizing, remove colors, update snapshot tests
* Remove color prop from icon, remove color implemetation in mono icons
* Remove color props from monochrome icons
* Complete update of icons for search screen
* Update icons for infor tooltips, playlist, permissions
* Support temporarly font awesome icons used in enterprise grafana
* Part1: Unicons implementation (#23197)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on  main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Remove color prop from icon, remove color implemetation in mono icons
* Update navbar styling
* Move toPascalCase to utils/string
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Icons update
* Add optional chaining to for isFontAwesome variable
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Part3:  Unicons implementation (#23356)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on  main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Implment icons in Tabs
* Implement icons in search items and  empty  list
* Update buttons
* Update button-related snapshot tests
* Update icons in modals and page headers
* Create anfular wrapper and update all icons on search screen
* Update sizing, remove colors, update snapshot tests
* Remove color prop from icon, remove color implemetation in mono icons
* Remove color props from monochrome icons
* Complete update of icons for search screen
* Update icons for infor tooltips, playlist, permissions
* Support temporarly font awesome icons used in enterprise grafana
* Part1: Unicons implementation (#23197)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on  main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Remove color prop from icon, remove color implemetation in mono icons
* Update navbar styling
* Move toPascalCase to utils/string
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Update icons in Explore
* Update icons in alerting
* Update + and x buttons
* Update icons in configurations and settings
* Update close icons
* Update icons in rich history
* Update alert messages
* Add optional chaining to for isFontAwesome variable
* Remove icon mock, set up jest.config
* Fix navbar plus icon
* Fir enable-bacground to enableBackgournd
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Merge remote branch origin master to icons-unicons
* Revert "Merge remote branch origin master to icons-unicons"
This reverts commit 3f25d50a39a940883fefe73ce51219139c1ed37f.
* Size-up dashnav icons
* Fix alerting icons, panel headers, update tests
* Fix typecheck error
* Adjustments - add panel icon, spacing
* Set TerserPlugin sourceMap to false to prevent running out of memory when publishing storybook
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
											
										 
											2020-04-08 20:33:31 +08:00
										 |  |  |             icon="plus-circle" | 
					
						
							| 
									
										
										
										
											2019-12-12 00:40:56 +08:00
										 |  |  |             onClick={event => { | 
					
						
							|  |  |  |               event.preventDefault(); | 
					
						
							|  |  |  |               const newDataLinks = [...(value || []), { field: '', url: '' }]; | 
					
						
							|  |  |  |               onChange(newDataLinks); | 
					
						
							|  |  |  |             }} | 
					
						
							|  |  |  |           > | 
					
						
							|  |  |  |             Add | 
					
						
							|  |  |  |           </Button> | 
					
						
							|  |  |  |         </div> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |     </> | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | }; |