Add separators and CONT QUERIES to query template dropdown
parent
0fdb2cc8a2
commit
f3bf34e28a
|
@ -11,10 +11,13 @@ export const INFLUXQL_FUNCTIONS = [
|
||||||
'stddev',
|
'stddev',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const SEPARATOR = 'SEPARATOR'
|
||||||
|
|
||||||
export const QUERY_TEMPLATES = [
|
export const QUERY_TEMPLATES = [
|
||||||
{text: 'Show Databases', query: 'SHOW DATABASES'},
|
{text: 'Show Databases', query: 'SHOW DATABASES'},
|
||||||
{text: 'Create Database', query: 'CREATE DATABASE "db_name"'},
|
{text: 'Create Database', query: 'CREATE DATABASE "db_name"'},
|
||||||
{text: 'Drop Database', query: 'DROP DATABASE "db_name"'},
|
{text: 'Drop Database', query: 'DROP DATABASE "db_name"'},
|
||||||
|
{text: `${SEPARATOR}`},
|
||||||
{text: 'Show Measurements', query: 'SHOW MEASUREMENTS ON "db_name"'},
|
{text: 'Show Measurements', query: 'SHOW MEASUREMENTS ON "db_name"'},
|
||||||
{
|
{
|
||||||
text: 'Show Tag Keys',
|
text: 'Show Tag Keys',
|
||||||
|
@ -24,6 +27,7 @@ export const QUERY_TEMPLATES = [
|
||||||
text: 'Show Tag Values',
|
text: 'Show Tag Values',
|
||||||
query: 'SHOW TAG VALUES ON "db_name" FROM "measurement_name" WITH KEY = "tag_key"',
|
query: 'SHOW TAG VALUES ON "db_name" FROM "measurement_name" WITH KEY = "tag_key"',
|
||||||
},
|
},
|
||||||
|
{text: `${SEPARATOR}`},
|
||||||
{
|
{
|
||||||
text: 'Show Retention Policies',
|
text: 'Show Retention Policies',
|
||||||
query: 'SHOW RETENTION POLICIES on "db_name"',
|
query: 'SHOW RETENTION POLICIES on "db_name"',
|
||||||
|
@ -36,6 +40,11 @@ export const QUERY_TEMPLATES = [
|
||||||
text: 'Drop Retention Policy',
|
text: 'Drop Retention Policy',
|
||||||
query: 'DROP RETENTION POLICY "rp_name" ON "db_name"',
|
query: 'DROP RETENTION POLICY "rp_name" ON "db_name"',
|
||||||
},
|
},
|
||||||
|
{text: `${SEPARATOR}`},
|
||||||
|
{
|
||||||
|
text: 'Show Continuos Queries',
|
||||||
|
query: 'SHOW CONTINUOUS QUERIES',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
text: 'Create Continuous Query',
|
text: 'Create Continuous Query',
|
||||||
query: 'CREATE CONTINUOUS QUERY "cq_name" ON "db_name" BEGIN SELECT min("field") INTO "target_measurement" FROM "current_measurement" GROUP BY time(30m) END',
|
query: 'CREATE CONTINUOUS QUERY "cq_name" ON "db_name" BEGIN SELECT min("field") INTO "target_measurement" FROM "current_measurement" GROUP BY time(30m) END',
|
||||||
|
@ -44,6 +53,7 @@ export const QUERY_TEMPLATES = [
|
||||||
text: 'Drop Continuous Query',
|
text: 'Drop Continuous Query',
|
||||||
query: 'DROP CONTINUOUS QUERY "cq_name" ON "db_name"',
|
query: 'DROP CONTINUOUS QUERY "cq_name" ON "db_name"',
|
||||||
},
|
},
|
||||||
|
{text: `${SEPARATOR}`},
|
||||||
{text: 'Show Users', query: 'SHOW USERS'},
|
{text: 'Show Users', query: 'SHOW USERS'},
|
||||||
{
|
{
|
||||||
text: 'Create User',
|
text: 'Create User',
|
||||||
|
@ -54,6 +64,7 @@ export const QUERY_TEMPLATES = [
|
||||||
query: 'CREATE USER "username" WITH PASSWORD \'password\' WITH ALL PRIVILEGES',
|
query: 'CREATE USER "username" WITH PASSWORD \'password\' WITH ALL PRIVILEGES',
|
||||||
},
|
},
|
||||||
{text: 'Drop User', query: 'DROP USER "username"'},
|
{text: 'Drop User', query: 'DROP USER "username"'},
|
||||||
|
{text: `${SEPARATOR}`},
|
||||||
{text: 'Show Stats', query: 'SHOW STATS'},
|
{text: 'Show Stats', query: 'SHOW STATS'},
|
||||||
{text: 'Show Diagnostics', query: 'SHOW DIAGNOSTICS'},
|
{text: 'Show Diagnostics', query: 'SHOW DIAGNOSTICS'},
|
||||||
]
|
]
|
||||||
|
|
|
@ -46,70 +46,93 @@ class Dropdown extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const {items, selected, className, iconName, actions, addNew, buttonSize, buttonColor, menuWidth} = this.props
|
const {
|
||||||
|
items,
|
||||||
|
selected,
|
||||||
|
className,
|
||||||
|
iconName,
|
||||||
|
actions,
|
||||||
|
addNew,
|
||||||
|
buttonSize,
|
||||||
|
buttonColor,
|
||||||
|
menuWidth,
|
||||||
|
} = this.props
|
||||||
const {isOpen} = this.state
|
const {isOpen} = this.state
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div onClick={this.toggleMenu} className={classnames(`dropdown ${className}`, {open: isOpen})}>
|
<div
|
||||||
|
onClick={this.toggleMenu}
|
||||||
|
className={classnames(`dropdown ${className}`, {open: isOpen})}
|
||||||
|
>
|
||||||
<div className={`btn dropdown-toggle ${buttonSize} ${buttonColor}`}>
|
<div className={`btn dropdown-toggle ${buttonSize} ${buttonColor}`}>
|
||||||
{iconName ? <span className={classnames('icon', {[iconName]: true})}></span> : null}
|
{iconName
|
||||||
|
? <span className={classnames('icon', {[iconName]: true})} />
|
||||||
|
: null}
|
||||||
<span className="dropdown-selected">{selected}</span>
|
<span className="dropdown-selected">{selected}</span>
|
||||||
<span className="caret" />
|
<span className="caret" />
|
||||||
</div>
|
</div>
|
||||||
{isOpen ?
|
{isOpen
|
||||||
<ul className="dropdown-menu" style={{width: menuWidth}}>
|
? <ul className="dropdown-menu" style={{width: menuWidth}}>
|
||||||
{items.map((item, i) => {
|
{items.map((item, i) => {
|
||||||
return (
|
if (item.text === 'SEPARATOR') {
|
||||||
<li className="dropdown-item" key={i}>
|
return <li key={i} role="separator" className="divider" />
|
||||||
<a href="#" onClick={() => this.handleSelection(item)}>
|
}
|
||||||
{item.text}
|
return (
|
||||||
</a>
|
<li className="dropdown-item" key={i}>
|
||||||
{actions.length > 0 ?
|
<a href="#" onClick={() => this.handleSelection(item)}>
|
||||||
<div className="dropdown-item__actions">
|
{item.text}
|
||||||
{actions.map((action) => {
|
</a>
|
||||||
return (
|
{actions.length > 0
|
||||||
<button key={action.text} className="dropdown-item__action" onClick={(e) => this.handleAction(e, action, item)}>
|
? <div className="dropdown-item__actions">
|
||||||
<span title={action.text} className={`icon ${action.icon}`}></span>
|
{actions.map(action => {
|
||||||
</button>
|
return (
|
||||||
)
|
<button
|
||||||
})}
|
key={action.text}
|
||||||
</div>
|
className="dropdown-item__action"
|
||||||
: null}
|
onClick={e =>
|
||||||
</li>
|
this.handleAction(e, action, item)}
|
||||||
)
|
>
|
||||||
})}
|
<span
|
||||||
{
|
title={action.text}
|
||||||
addNew ?
|
className={`icon ${action.icon}`}
|
||||||
<li>
|
/>
|
||||||
<Link to={addNew.url}>
|
</button>
|
||||||
{addNew.text}
|
)
|
||||||
</Link>
|
})}
|
||||||
</li> :
|
</div>
|
||||||
null
|
: null}
|
||||||
}
|
</li>
|
||||||
</ul>
|
)
|
||||||
|
})}
|
||||||
|
{addNew
|
||||||
|
? <li>
|
||||||
|
<Link to={addNew.url}>
|
||||||
|
{addNew.text}
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
: null}
|
||||||
|
</ul>
|
||||||
: null}
|
: null}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const {
|
const {arrayOf, shape, string, func} = PropTypes
|
||||||
arrayOf,
|
|
||||||
shape,
|
|
||||||
string,
|
|
||||||
func,
|
|
||||||
} = PropTypes
|
|
||||||
|
|
||||||
Dropdown.propTypes = {
|
Dropdown.propTypes = {
|
||||||
actions: arrayOf(shape({
|
actions: arrayOf(
|
||||||
icon: string.isRequired,
|
shape({
|
||||||
text: string.isRequired,
|
icon: string.isRequired,
|
||||||
handler: func.isRequired,
|
text: string.isRequired,
|
||||||
})),
|
handler: func.isRequired,
|
||||||
items: arrayOf(shape({
|
})
|
||||||
text: string.isRequired,
|
),
|
||||||
})).isRequired,
|
items: arrayOf(
|
||||||
|
shape({
|
||||||
|
text: string.isRequired,
|
||||||
|
})
|
||||||
|
).isRequired,
|
||||||
onChoose: func.isRequired,
|
onChoose: func.isRequired,
|
||||||
addNew: shape({
|
addNew: shape({
|
||||||
url: string.isRequired,
|
url: string.isRequired,
|
||||||
|
|
|
@ -103,4 +103,7 @@
|
||||||
min-width: $query-editor--templates-menu-width;
|
min-width: $query-editor--templates-menu-width;
|
||||||
max-width: $query-editor--templates-menu-width;
|
max-width: $query-editor--templates-menu-width;
|
||||||
}
|
}
|
||||||
|
.divider {
|
||||||
|
background: linear-gradient(to right, #00C9FF 0%, #22ADF6 100%);
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue