Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
a6c438c8
Unverified
Commit
a6c438c8
authored
Sep 20, 2018
by
Marcus Efraimsson
Committed by
GitHub
Sep 20, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #13367 from grafana/davkal/explore-julius-fixes
Explore: Query field fixes
parents
d8b566a1
9e86809a
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
47 additions
and
3 deletions
+47
-3
public/app/containers/Explore/Legend.tsx
+3
-1
public/app/containers/Explore/PromQueryField.tsx
+3
-1
public/app/containers/Explore/slate-plugins/braces.test.ts
+18
-0
public/app/containers/Explore/slate-plugins/braces.ts
+16
-0
public/app/plugins/datasource/prometheus/datasource.ts
+1
-1
public/app/plugins/datasource/prometheus/specs/datasource.test.ts
+6
-0
No files found.
public/app/containers/Explore/Legend.tsx
View file @
a6c438c8
...
...
@@ -5,7 +5,9 @@ const LegendItem = ({ series }) => (
<
div
className=
"graph-legend-icon"
>
<
i
className=
"fa fa-minus pointer"
style=
{
{
color
:
series
.
color
}
}
/>
</
div
>
<
a
className=
"graph-legend-alias pointer"
>
{
series
.
alias
}
</
a
>
<
a
className=
"graph-legend-alias pointer"
title=
{
series
.
alias
}
>
{
series
.
alias
}
</
a
>
</
div
>
);
...
...
public/app/containers/Explore/PromQueryField.tsx
View file @
a6c438c8
...
...
@@ -255,6 +255,8 @@ class PromQueryField extends React.Component<PromQueryFieldProps, PromQueryField
// Keep this DOM-free for testing
getTypeahead
({
prefix
,
wrapperClasses
,
text
}:
PromTypeaheadInput
):
TypeaheadOutput
{
// Syntax spans have 3 classes by default. More indicate a recognized token
const
tokenRecognized
=
wrapperClasses
.
length
>
3
;
// Determine candidates by CSS context
if
(
_
.
includes
(
wrapperClasses
,
'context-range'
))
{
// Suggestions for metric[|]
...
...
@@ -266,7 +268,7 @@ class PromQueryField extends React.Component<PromQueryFieldProps, PromQueryField
return
this
.
getAggregationTypeahead
.
apply
(
this
,
arguments
);
}
else
if
(
// Non-empty but not inside known token
(
prefix
&&
!
_
.
includes
(
wrapperClasses
,
'token'
)
)
||
(
prefix
&&
!
tokenRecognized
)
||
(
prefix
===
''
&&
!
text
.
match
(
/^
[
)
\s]
+$/
))
||
// Empty context or after ')'
text
.
match
(
/
[
+
\-
*
/
^%
]
/
)
// After binary operator
)
{
...
...
public/app/containers/Explore/slate-plugins/braces.test.ts
View file @
a6c438c8
...
...
@@ -53,4 +53,22 @@ describe('braces', () => {
handler
(
event
,
change
);
expect
(
Plain
.
serialize
(
change
.
value
)).
toEqual
(
'sum(rate(metric{namespace="dev", cluster="c1"}[2m]))'
);
});
it
(
'removes closing brace when opening brace is removed'
,
()
=>
{
const
change
=
Plain
.
deserialize
(
'time()'
).
change
();
let
event
;
change
.
move
(
5
);
event
=
new
window
.
KeyboardEvent
(
'keydown'
,
{
key
:
'Backspace'
});
handler
(
event
,
change
);
expect
(
Plain
.
serialize
(
change
.
value
)).
toEqual
(
'time'
);
});
it
(
'keeps closing brace when opening brace is removed and inner values exist'
,
()
=>
{
const
change
=
Plain
.
deserialize
(
'time(value)'
).
change
();
let
event
;
change
.
move
(
5
);
event
=
new
window
.
KeyboardEvent
(
'keydown'
,
{
key
:
'Backspace'
});
const
handled
=
handler
(
event
,
change
);
expect
(
handled
).
toBeFalsy
();
});
});
public/app/containers/Explore/slate-plugins/braces.ts
View file @
a6c438c8
...
...
@@ -43,6 +43,22 @@ export default function BracesPlugin() {
return
true
;
}
case
'Backspace'
:
{
const
text
=
value
.
anchorText
.
text
;
const
offset
=
value
.
anchorOffset
;
const
previousChar
=
text
[
offset
-
1
];
const
nextChar
=
text
[
offset
];
if
(
BRACES
[
previousChar
]
&&
BRACES
[
previousChar
]
===
nextChar
)
{
event
.
preventDefault
();
// Remove closing brace if directly following
change
.
deleteBackward
()
.
deleteForward
()
.
focus
();
return
true
;
}
}
default
:
{
break
;
}
...
...
public/app/plugins/datasource/prometheus/datasource.ts
View file @
a6c438c8
...
...
@@ -46,7 +46,7 @@ export function determineQueryHints(series: any[], datasource?: any): any[] {
// Check for monotony
const
datapoints
:
number
[][]
=
s
.
datapoints
;
if
(
datapoints
.
length
>
1
)
{
if
(
query
.
indexOf
(
'rate('
)
===
-
1
&&
datapoints
.
length
>
1
)
{
let
increasing
=
false
;
const
monotonic
=
datapoints
.
filter
(
dp
=>
dp
[
0
]
!==
null
).
every
((
dp
,
index
)
=>
{
if
(
index
===
0
)
{
...
...
public/app/plugins/datasource/prometheus/specs/datasource.test.ts
View file @
a6c438c8
...
...
@@ -247,6 +247,12 @@ describe('PrometheusDatasource', () => {
});
});
it
(
'returns no rate hint for a monotonously increasing series that already has a rate'
,
()
=>
{
const
series
=
[{
datapoints
:
[[
23
,
1000
],
[
24
,
1001
]],
query
:
'rate(metric[1m])'
,
responseIndex
:
0
}];
const
hints
=
determineQueryHints
(
series
);
expect
(
hints
).
toEqual
([
null
]);
});
it
(
'returns a rate hint w/o action for a complex monotonously increasing series'
,
()
=>
{
const
series
=
[{
datapoints
:
[[
23
,
1000
],
[
24
,
1001
]],
query
:
'sum(metric)'
,
responseIndex
:
0
}];
const
hints
=
determineQueryHints
(
series
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment