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
00c0b71f
Commit
00c0b71f
authored
Sep 05, 2018
by
Torkel Ödegaard
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '12918-only-arrow-functions4'
parents
99133c4f
dc4f547a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
192 additions
and
190 deletions
+192
-190
public/app/core/components/code_editor/code_editor.ts
+2
-2
public/app/core/components/colorpicker/spectrum_picker.ts
+1
-1
public/app/core/components/json_explorer/json_explorer.ts
+2
-2
public/app/core/components/jsontree/jsontree.ts
+1
-1
public/app/core/directives/dash_class.ts
+5
-5
public/app/core/directives/dropdown_typeahead.ts
+30
-30
public/app/core/directives/give_focus.ts
+5
-5
public/app/core/directives/metric_segment.ts
+20
-20
public/app/core/directives/misc.ts
+13
-13
public/app/core/directives/ng_model_on_blur.ts
+7
-7
public/app/core/directives/rebuild_on_change.ts
+3
-3
public/app/core/directives/tags.ts
+5
-5
public/app/core/directives/value_select_dropdown.ts
+3
-3
public/app/core/jquery_extended.ts
+2
-2
public/app/core/partials.ts
+1
-1
public/app/core/profiler.ts
+3
-3
public/app/core/services/analytics.ts
+1
-0
public/app/core/services/context_srv.ts
+1
-1
public/app/core/services/ng_react.ts
+14
-13
public/app/core/table_model.ts
+1
-1
public/app/core/utils/file_export.ts
+2
-2
public/app/core/utils/flatten.ts
+1
-1
public/app/core/utils/kbn.ts
+0
-0
public/app/core/utils/outline.ts
+4
-4
public/app/core/utils/rangeutil.ts
+1
-1
public/app/core/utils/url.ts
+3
-3
public/app/features/dashboard/dashboard_migration.ts
+14
-14
public/app/features/dashboard/dashboard_model.ts
+3
-3
public/app/features/panel/panel_ctrl.ts
+1
-1
public/app/plugins/datasource/graphite/add_graphite_func.ts
+12
-12
public/app/plugins/datasource/graphite/datasource.ts
+8
-8
public/app/plugins/datasource/graphite/func_editor.ts
+11
-11
public/app/plugins/datasource/graphite/gfunc.ts
+2
-2
public/app/plugins/datasource/opentsdb/specs/datasource.test.ts
+9
-9
public/app/stores/FolderStore/FolderStore.ts
+1
-1
No files found.
public/app/core/components/code_editor/code_editor.ts
View file @
00c0b71f
...
...
@@ -97,7 +97,7 @@ function link(scope, elem, attrs) {
textarea
.
addClass
(
'gf-form-input'
);
if
(
scope
.
codeEditorFocus
)
{
setTimeout
(
function
()
{
setTimeout
(
()
=>
{
textarea
.
focus
();
const
domEl
=
textarea
[
0
];
if
(
domEl
.
setSelectionRange
)
{
...
...
@@ -119,7 +119,7 @@ function link(scope, elem, attrs) {
scope
.
$watch
(
'content'
,
(
newValue
,
oldValue
)
=>
{
const
editorValue
=
codeEditor
.
getValue
();
if
(
newValue
!==
editorValue
&&
newValue
!==
oldValue
)
{
scope
.
$$postDigest
(
function
()
{
scope
.
$$postDigest
(
()
=>
{
setEditorContent
(
newValue
);
});
}
...
...
public/app/core/components/colorpicker/spectrum_picker.ts
View file @
00c0b71f
...
...
@@ -13,7 +13,7 @@ export function spectrumPicker() {
scope
:
true
,
replace
:
true
,
template
:
'<color-picker color="ngModel.$viewValue" onChange="onColorChange"></color-picker>'
,
link
:
function
(
scope
,
element
,
attrs
,
ngModel
)
{
link
:
(
scope
,
element
,
attrs
,
ngModel
)
=>
{
scope
.
ngModel
=
ngModel
;
scope
.
onColorChange
=
color
=>
{
ngModel
.
$setViewValue
(
color
);
...
...
public/app/core/components/json_explorer/json_explorer.ts
View file @
00c0b71f
...
...
@@ -14,10 +14,10 @@ const MAX_ANIMATED_TOGGLE_ITEMS = 10;
const
requestAnimationFrame
=
window
.
requestAnimationFrame
||
function
(
cb
:
()
=>
void
)
{
((
cb
:
()
=>
void
)
=>
{
cb
();
return
0
;
};
}
)
;
export
interface
JsonExplorerConfig
{
animateOpen
?:
boolean
;
...
...
public/app/core/components/jsontree/jsontree.ts
View file @
00c0b71f
...
...
@@ -10,7 +10,7 @@ coreModule.directive('jsonTree', [
startExpanded
:
'@'
,
rootName
:
'@'
,
},
link
:
function
(
scope
,
elem
)
{
link
:
(
scope
,
elem
)
=>
{
const
jsonExp
=
new
JsonExplorer
(
scope
.
object
,
3
,
{
animateOpen
:
true
,
});
...
...
public/app/core/directives/dash_class.ts
View file @
00c0b71f
...
...
@@ -4,19 +4,19 @@ import coreModule from '../core_module';
/** @ngInject */
export
function
dashClass
()
{
return
{
link
:
function
(
$scope
,
elem
)
{
$scope
.
onAppEvent
(
'panel-fullscreen-enter'
,
function
()
{
link
:
(
$scope
,
elem
)
=>
{
$scope
.
onAppEvent
(
'panel-fullscreen-enter'
,
()
=>
{
elem
.
toggleClass
(
'panel-in-fullscreen'
,
true
);
});
$scope
.
onAppEvent
(
'panel-fullscreen-exit'
,
function
()
{
$scope
.
onAppEvent
(
'panel-fullscreen-exit'
,
()
=>
{
elem
.
toggleClass
(
'panel-in-fullscreen'
,
false
);
});
$scope
.
$watch
(
'ctrl.dashboardViewState.state.editview'
,
function
(
newValue
)
{
$scope
.
$watch
(
'ctrl.dashboardViewState.state.editview'
,
newValue
=>
{
if
(
newValue
)
{
elem
.
toggleClass
(
'dashboard-page--settings-opening'
,
_
.
isString
(
newValue
));
setTimeout
(
function
()
{
setTimeout
(
()
=>
{
elem
.
toggleClass
(
'dashboard-page--settings-open'
,
_
.
isString
(
newValue
));
},
10
);
}
else
{
...
...
public/app/core/directives/dropdown_typeahead.ts
View file @
00c0b71f
...
...
@@ -20,7 +20,7 @@ export function dropdownTypeahead($compile) {
dropdownTypeaheadOnSelect
:
'&dropdownTypeaheadOnSelect'
,
model
:
'=ngModel'
,
},
link
:
function
(
$scope
,
elem
,
attrs
)
{
link
:
(
$scope
,
elem
,
attrs
)
=>
{
const
$input
=
$
(
inputTemplate
);
const
$button
=
$
(
buttonTemplate
);
$input
.
appendTo
(
elem
);
...
...
@@ -31,9 +31,9 @@ export function dropdownTypeahead($compile) {
}
if
(
attrs
.
ngModel
)
{
$scope
.
$watch
(
'model'
,
function
(
newValue
)
{
_
.
each
(
$scope
.
menuItems
,
function
(
item
)
{
_
.
each
(
item
.
submenu
,
function
(
subItem
)
{
$scope
.
$watch
(
'model'
,
newValue
=>
{
_
.
each
(
$scope
.
menuItems
,
item
=>
{
_
.
each
(
item
.
submenu
,
subItem
=>
{
if
(
subItem
.
value
===
newValue
)
{
$button
.
html
(
subItem
.
text
);
}
...
...
@@ -44,12 +44,12 @@ export function dropdownTypeahead($compile) {
const
typeaheadValues
=
_
.
reduce
(
$scope
.
menuItems
,
function
(
memo
,
value
,
index
)
{
(
memo
,
value
,
index
)
=>
{
if
(
!
value
.
submenu
)
{
value
.
click
=
'menuItemSelected('
+
index
+
')'
;
memo
.
push
(
value
.
text
);
}
else
{
_
.
each
(
value
.
submenu
,
function
(
item
,
subIndex
)
{
_
.
each
(
value
.
submenu
,
(
item
,
subIndex
)
=>
{
item
.
click
=
'menuItemSelected('
+
index
+
','
+
subIndex
+
')'
;
memo
.
push
(
value
.
text
+
' '
+
item
.
text
);
});
...
...
@@ -59,7 +59,7 @@ export function dropdownTypeahead($compile) {
[]
);
$scope
.
menuItemSelected
=
function
(
index
,
subIndex
)
{
$scope
.
menuItemSelected
=
(
index
,
subIndex
)
=>
{
const
menuItem
=
$scope
.
menuItems
[
index
];
const
payload
:
any
=
{
$item
:
menuItem
};
if
(
menuItem
.
submenu
&&
subIndex
!==
void
0
)
{
...
...
@@ -73,10 +73,10 @@ export function dropdownTypeahead($compile) {
source
:
typeaheadValues
,
minLength
:
1
,
items
:
10
,
updater
:
function
(
value
)
{
updater
:
value
=>
{
const
result
:
any
=
{};
_
.
each
(
$scope
.
menuItems
,
function
(
menuItem
)
{
_
.
each
(
menuItem
.
submenu
,
function
(
submenuItem
)
{
_
.
each
(
$scope
.
menuItems
,
menuItem
=>
{
_
.
each
(
menuItem
.
submenu
,
submenuItem
=>
{
if
(
value
===
menuItem
.
text
+
' '
+
submenuItem
.
text
)
{
result
.
$subItem
=
submenuItem
;
result
.
$item
=
menuItem
;
...
...
@@ -85,7 +85,7 @@ export function dropdownTypeahead($compile) {
});
if
(
result
.
$item
)
{
$scope
.
$apply
(
function
()
{
$scope
.
$apply
(
()
=>
{
$scope
.
dropdownTypeaheadOnSelect
(
result
);
});
}
...
...
@@ -95,24 +95,24 @@ export function dropdownTypeahead($compile) {
},
});
$button
.
click
(
function
()
{
$button
.
click
(
()
=>
{
$button
.
hide
();
$input
.
show
();
$input
.
focus
();
});
$input
.
keyup
(
function
()
{
$input
.
keyup
(
()
=>
{
elem
.
toggleClass
(
'open'
,
$input
.
val
()
===
''
);
});
$input
.
blur
(
function
()
{
$input
.
blur
(
()
=>
{
$input
.
hide
();
$input
.
val
(
''
);
$button
.
show
();
$button
.
focus
();
// clicking the function dropdown menu won't
// work if you remove class at once
setTimeout
(
function
()
{
setTimeout
(
()
=>
{
elem
.
removeClass
(
'open'
);
},
200
);
});
...
...
@@ -138,7 +138,7 @@ export function dropdownTypeahead2($compile) {
dropdownTypeaheadOnSelect
:
'&dropdownTypeaheadOnSelect'
,
model
:
'=ngModel'
,
},
link
:
function
(
$scope
,
elem
,
attrs
)
{
link
:
(
$scope
,
elem
,
attrs
)
=>
{
const
$input
=
$
(
inputTemplate
);
const
$button
=
$
(
buttonTemplate
);
$input
.
appendTo
(
elem
);
...
...
@@ -149,9 +149,9 @@ export function dropdownTypeahead2($compile) {
}
if
(
attrs
.
ngModel
)
{
$scope
.
$watch
(
'model'
,
function
(
newValue
)
{
_
.
each
(
$scope
.
menuItems
,
function
(
item
)
{
_
.
each
(
item
.
submenu
,
function
(
subItem
)
{
$scope
.
$watch
(
'model'
,
newValue
=>
{
_
.
each
(
$scope
.
menuItems
,
item
=>
{
_
.
each
(
item
.
submenu
,
subItem
=>
{
if
(
subItem
.
value
===
newValue
)
{
$button
.
html
(
subItem
.
text
);
}
...
...
@@ -162,12 +162,12 @@ export function dropdownTypeahead2($compile) {
const
typeaheadValues
=
_
.
reduce
(
$scope
.
menuItems
,
function
(
memo
,
value
,
index
)
{
(
memo
,
value
,
index
)
=>
{
if
(
!
value
.
submenu
)
{
value
.
click
=
'menuItemSelected('
+
index
+
')'
;
memo
.
push
(
value
.
text
);
}
else
{
_
.
each
(
value
.
submenu
,
function
(
item
,
subIndex
)
{
_
.
each
(
value
.
submenu
,
(
item
,
subIndex
)
=>
{
item
.
click
=
'menuItemSelected('
+
index
+
','
+
subIndex
+
')'
;
memo
.
push
(
value
.
text
+
' '
+
item
.
text
);
});
...
...
@@ -177,7 +177,7 @@ export function dropdownTypeahead2($compile) {
[]
);
$scope
.
menuItemSelected
=
function
(
index
,
subIndex
)
{
$scope
.
menuItemSelected
=
(
index
,
subIndex
)
=>
{
const
menuItem
=
$scope
.
menuItems
[
index
];
const
payload
:
any
=
{
$item
:
menuItem
};
if
(
menuItem
.
submenu
&&
subIndex
!==
void
0
)
{
...
...
@@ -191,10 +191,10 @@ export function dropdownTypeahead2($compile) {
source
:
typeaheadValues
,
minLength
:
1
,
items
:
10
,
updater
:
function
(
value
)
{
updater
:
value
=>
{
const
result
:
any
=
{};
_
.
each
(
$scope
.
menuItems
,
function
(
menuItem
)
{
_
.
each
(
menuItem
.
submenu
,
function
(
submenuItem
)
{
_
.
each
(
$scope
.
menuItems
,
menuItem
=>
{
_
.
each
(
menuItem
.
submenu
,
submenuItem
=>
{
if
(
value
===
menuItem
.
text
+
' '
+
submenuItem
.
text
)
{
result
.
$subItem
=
submenuItem
;
result
.
$item
=
menuItem
;
...
...
@@ -203,7 +203,7 @@ export function dropdownTypeahead2($compile) {
});
if
(
result
.
$item
)
{
$scope
.
$apply
(
function
()
{
$scope
.
$apply
(
()
=>
{
$scope
.
dropdownTypeaheadOnSelect
(
result
);
});
}
...
...
@@ -213,24 +213,24 @@ export function dropdownTypeahead2($compile) {
},
});
$button
.
click
(
function
()
{
$button
.
click
(
()
=>
{
$button
.
hide
();
$input
.
show
();
$input
.
focus
();
});
$input
.
keyup
(
function
()
{
$input
.
keyup
(
()
=>
{
elem
.
toggleClass
(
'open'
,
$input
.
val
()
===
''
);
});
$input
.
blur
(
function
()
{
$input
.
blur
(
()
=>
{
$input
.
hide
();
$input
.
val
(
''
);
$button
.
show
();
$button
.
focus
();
// clicking the function dropdown menu won't
// work if you remove class at once
setTimeout
(
function
()
{
setTimeout
(
()
=>
{
elem
.
removeClass
(
'open'
);
},
200
);
});
...
...
public/app/core/directives/give_focus.ts
View file @
00c0b71f
import
coreModule
from
'../core_module'
;
coreModule
.
directive
(
'giveFocus'
,
function
()
{
return
function
(
scope
,
element
,
attrs
)
{
element
.
click
(
function
(
e
)
{
coreModule
.
directive
(
'giveFocus'
,
()
=>
{
return
(
scope
,
element
,
attrs
)
=>
{
element
.
click
(
e
=>
{
e
.
stopPropagation
();
});
scope
.
$watch
(
attrs
.
giveFocus
,
function
(
newValue
)
{
newValue
=>
{
if
(
!
newValue
)
{
return
;
}
setTimeout
(
function
()
{
setTimeout
(
()
=>
{
element
.
focus
();
const
domEl
=
element
[
0
];
if
(
domEl
.
setSelectionRange
)
{
...
...
public/app/core/directives/metric_segment.ts
View file @
00c0b71f
...
...
@@ -24,7 +24,7 @@ export function metricSegment($compile, $sce) {
onChange
:
'&'
,
debounce
:
'@'
,
},
link
:
function
(
$scope
,
elem
)
{
link
:
(
$scope
,
elem
)
=>
{
const
$input
=
$
(
inputTemplate
);
const
segment
=
$scope
.
segment
;
const
$button
=
$
(
segment
.
selectMode
?
selectTemplate
:
linkTemplate
);
...
...
@@ -36,14 +36,14 @@ export function metricSegment($compile, $sce) {
$input
.
appendTo
(
elem
);
$button
.
appendTo
(
elem
);
$scope
.
updateVariableValue
=
function
(
value
)
{
$scope
.
updateVariableValue
=
value
=>
{
if
(
value
===
''
||
segment
.
value
===
value
)
{
return
;
}
value
=
_
.
unescape
(
value
);
$scope
.
$apply
(
function
()
{
$scope
.
$apply
(
()
=>
{
const
selected
=
_
.
find
(
$scope
.
altSegments
,
{
value
:
value
});
if
(
selected
)
{
segment
.
value
=
selected
.
value
;
...
...
@@ -65,7 +65,7 @@ export function metricSegment($compile, $sce) {
});
};
$scope
.
switchToLink
=
f
unction
(
fromClick
)
{
$scope
.
switchToLink
=
f
romClick
=>
{
if
(
linkMode
&&
!
fromClick
)
{
return
;
}
...
...
@@ -78,17 +78,17 @@ export function metricSegment($compile, $sce) {
$scope
.
updateVariableValue
(
$input
.
val
());
};
$scope
.
inputBlur
=
function
()
{
$scope
.
inputBlur
=
()
=>
{
// happens long before the click event on the typeahead options
// need to have long delay because the blur
cancelBlur
=
setTimeout
(
$scope
.
switchToLink
,
200
);
};
$scope
.
source
=
function
(
query
,
callback
)
{
$scope
.
$apply
(
function
()
{
$scope
.
getOptions
({
$query
:
query
}).
then
(
function
(
altSegments
)
{
$scope
.
source
=
(
query
,
callback
)
=>
{
$scope
.
$apply
(
()
=>
{
$scope
.
getOptions
({
$query
:
query
}).
then
(
altSegments
=>
{
$scope
.
altSegments
=
altSegments
;
options
=
_
.
map
(
$scope
.
altSegments
,
function
(
alt
)
{
options
=
_
.
map
(
$scope
.
altSegments
,
alt
=>
{
return
_
.
escape
(
alt
.
value
);
});
...
...
@@ -104,7 +104,7 @@ export function metricSegment($compile, $sce) {
});
};
$scope
.
updater
=
function
(
value
)
{
$scope
.
updater
=
value
=>
{
if
(
value
===
segment
.
value
)
{
clearTimeout
(
cancelBlur
);
$input
.
focus
();
...
...
@@ -152,14 +152,14 @@ export function metricSegment($compile, $sce) {
typeahead
.
lookup
=
_
.
debounce
(
typeahead
.
lookup
,
500
,
{
leading
:
true
});
}
$button
.
keydown
(
function
(
evt
)
{
$button
.
keydown
(
evt
=>
{
// trigger typeahead on down arrow or enter key
if
(
evt
.
keyCode
===
40
||
evt
.
keyCode
===
13
)
{
$button
.
click
();
}
});
$button
.
click
(
function
()
{
$button
.
click
(
()
=>
{
options
=
null
;
$input
.
css
(
'width'
,
Math
.
max
(
$button
.
width
(),
80
)
+
16
+
'px'
);
...
...
@@ -199,7 +199,7 @@ export function metricSegmentModel(uiSegmentSrv, $q) {
pre
:
function
postLink
(
$scope
,
elem
,
attrs
)
{
let
cachedOptions
;
$scope
.
valueToSegment
=
function
(
value
)
{
$scope
.
valueToSegment
=
value
=>
{
const
option
=
_
.
find
(
$scope
.
options
,
{
value
:
value
});
const
segment
=
{
cssClass
:
attrs
.
cssClass
,
...
...
@@ -211,18 +211,18 @@ export function metricSegmentModel(uiSegmentSrv, $q) {
return
uiSegmentSrv
.
newSegment
(
segment
);
};
$scope
.
getOptionsInternal
=
function
()
{
$scope
.
getOptionsInternal
=
()
=>
{
if
(
$scope
.
options
)
{
cachedOptions
=
$scope
.
options
;
return
$q
.
when
(
_
.
map
(
$scope
.
options
,
function
(
option
)
{
_
.
map
(
$scope
.
options
,
option
=>
{
return
{
value
:
option
.
text
};
})
);
}
else
{
return
$scope
.
getOptions
().
then
(
function
(
options
)
{
return
$scope
.
getOptions
().
then
(
options
=>
{
cachedOptions
=
options
;
return
_
.
map
(
options
,
function
(
option
)
{
return
_
.
map
(
options
,
option
=>
{
if
(
option
.
html
)
{
return
option
;
}
...
...
@@ -232,7 +232,7 @@ export function metricSegmentModel(uiSegmentSrv, $q) {
}
};
$scope
.
onSegmentChange
=
function
()
{
$scope
.
onSegmentChange
=
()
=>
{
if
(
cachedOptions
)
{
const
option
=
_
.
find
(
cachedOptions
,
{
text
:
$scope
.
segment
.
value
});
if
(
option
&&
option
.
value
!==
$scope
.
property
)
{
...
...
@@ -246,8 +246,8 @@ export function metricSegmentModel(uiSegmentSrv, $q) {
// needs to call this after digest so
// property is synced with outerscope
$scope
.
$$postDigest
(
function
()
{
$scope
.
$apply
(
function
()
{
$scope
.
$$postDigest
(
()
=>
{
$scope
.
$apply
(
()
=>
{
$scope
.
onChange
();
});
});
...
...
public/app/core/directives/misc.ts
View file @
00c0b71f
...
...
@@ -8,7 +8,7 @@ import { appEvents } from 'app/core/core';
function
tip
(
$compile
)
{
return
{
restrict
:
'E'
,
link
:
function
(
scope
,
elem
,
attrs
)
{
link
:
(
scope
,
elem
,
attrs
)
=>
{
let
_t
=
'<i class="grafana-tip fa fa-'
+
(
attrs
.
icon
||
'question-circle'
)
+
...
...
@@ -26,9 +26,9 @@ function clipboardButton() {
scope
:
{
getText
:
'&clipboardButton'
,
},
link
:
function
(
scope
,
elem
)
{
link
:
(
scope
,
elem
)
=>
{
scope
.
clipboard
=
new
Clipboard
(
elem
[
0
],
{
text
:
function
()
{
text
:
()
=>
{
return
scope
.
getText
();
},
});
...
...
@@ -37,7 +37,7 @@ function clipboardButton() {
appEvents
.
emit
(
'alert-success'
,
[
'Content copied to clipboard'
]);
});
scope
.
$on
(
'$destroy'
,
function
()
{
scope
.
$on
(
'$destroy'
,
()
=>
{
if
(
scope
.
clipboard
)
{
scope
.
clipboard
.
destroy
();
}
...
...
@@ -50,12 +50,12 @@ function clipboardButton() {
function
compile
(
$compile
)
{
return
{
restrict
:
'A'
,
link
:
function
(
scope
,
element
,
attrs
)
{
link
:
(
scope
,
element
,
attrs
)
=>
{
scope
.
$watch
(
function
(
scope
)
{
scope
=>
{
return
scope
.
$eval
(
attrs
.
compile
);
},
function
(
value
)
{
value
=>
{
element
.
html
(
value
);
$compile
(
element
.
contents
())(
scope
);
}
...
...
@@ -67,9 +67,9 @@ function compile($compile) {
function
watchChange
()
{
return
{
scope
:
{
onchange
:
'&watchChange'
},
link
:
function
(
scope
,
element
)
{
element
.
on
(
'input'
,
function
()
{
scope
.
$apply
(
function
()
{
link
:
(
scope
,
element
)
=>
{
element
.
on
(
'input'
,
()
=>
{
scope
.
$apply
(
()
=>
{
scope
.
onchange
({
inputValue
:
element
.
val
()
});
});
});
...
...
@@ -81,7 +81,7 @@ function watchChange() {
function
editorOptBool
(
$compile
)
{
return
{
restrict
:
'E'
,
link
:
function
(
scope
,
elem
,
attrs
)
{
link
:
(
scope
,
elem
,
attrs
)
=>
{
const
ngchange
=
attrs
.
change
?
' ng-change="'
+
attrs
.
change
+
'"'
:
''
;
const
tip
=
attrs
.
tip
?
' <tip>'
+
attrs
.
tip
+
'</tip>'
:
''
;
const
showIf
=
attrs
.
showIf
?
' ng-show="'
+
attrs
.
showIf
+
'" '
:
''
;
...
...
@@ -118,7 +118,7 @@ function editorOptBool($compile) {
function
editorCheckbox
(
$compile
,
$interpolate
)
{
return
{
restrict
:
'E'
,
link
:
function
(
scope
,
elem
,
attrs
)
{
link
:
(
scope
,
elem
,
attrs
)
=>
{
const
text
=
$interpolate
(
attrs
.
text
)(
scope
);
const
model
=
$interpolate
(
attrs
.
model
)(
scope
);
const
ngchange
=
attrs
.
change
?
' ng-change="'
+
attrs
.
change
+
'"'
:
''
;
...
...
@@ -194,7 +194,7 @@ function gfDropdown($parse, $compile, $timeout) {
link
:
function
postLink
(
scope
,
iElement
,
iAttrs
)
{
const
getter
=
$parse
(
iAttrs
.
gfDropdown
),
items
=
getter
(
scope
);
$timeout
(
function
()
{
$timeout
(
()
=>
{
const
placement
=
iElement
.
data
(
'placement'
);
const
dropdown
=
angular
.
element
(
buildTemplate
(
items
,
placement
).
join
(
''
));
dropdown
.
insertAfter
(
iElement
);
...
...
public/app/core/directives/ng_model_on_blur.ts
View file @
00c0b71f
...
...
@@ -6,14 +6,14 @@ function ngModelOnBlur() {
restrict
:
'A'
,
priority
:
1
,
require
:
'ngModel'
,
link
:
function
(
scope
,
elm
,
attr
,
ngModelCtrl
)
{
link
:
(
scope
,
elm
,
attr
,
ngModelCtrl
)
=>
{
if
(
attr
.
type
===
'radio'
||
attr
.
type
===
'checkbox'
)
{
return
;
}
elm
.
off
(
'input keydown change'
);
elm
.
bind
(
'blur'
,
function
()
{
scope
.
$apply
(
function
()
{
elm
.
bind
(
'blur'
,
()
=>
{
scope
.
$apply
(
()
=>
{
ngModelCtrl
.
$setViewValue
(
elm
.
val
());
});
});
...
...
@@ -25,8 +25,8 @@ function emptyToNull() {
return
{
restrict
:
'A'
,
require
:
'ngModel'
,
link
:
function
(
scope
,
elm
,
attrs
,
ctrl
)
{
ctrl
.
$parsers
.
push
(
function
(
viewValue
)
{
link
:
(
scope
,
elm
,
attrs
,
ctrl
)
=>
{
ctrl
.
$parsers
.
push
(
viewValue
=>
{
if
(
viewValue
===
''
)
{
return
null
;
}
...
...
@@ -39,8 +39,8 @@ function emptyToNull() {
function
validTimeSpan
()
{
return
{
require
:
'ngModel'
,
link
:
function
(
scope
,
elm
,
attrs
,
ctrl
)
{
ctrl
.
$validators
.
integer
=
function
(
modelValue
,
viewValue
)
{
link
:
(
scope
,
elm
,
attrs
,
ctrl
)
=>
{
ctrl
.
$validators
.
integer
=
(
modelValue
,
viewValue
)
=>
{
if
(
ctrl
.
$isEmpty
(
modelValue
))
{
return
true
;
}
...
...
public/app/core/directives/rebuild_on_change.ts
View file @
00c0b71f
...
...
@@ -26,7 +26,7 @@ function rebuildOnChange($animate) {
transclude
:
true
,
priority
:
600
,
restrict
:
'E'
,
link
:
function
(
scope
,
elem
,
attrs
,
ctrl
,
transclude
)
{
link
:
(
scope
,
elem
,
attrs
,
ctrl
,
transclude
)
=>
{
let
block
,
childScope
,
previousElements
;
function
cleanUp
()
{
...
...
@@ -40,7 +40,7 @@ function rebuildOnChange($animate) {
}
if
(
block
)
{
previousElements
=
getBlockNodes
(
block
.
clone
);
$animate
.
leave
(
previousElements
).
then
(
function
()
{
$animate
.
leave
(
previousElements
).
then
(
()
=>
{
previousElements
=
null
;
});
block
=
null
;
...
...
@@ -53,7 +53,7 @@ function rebuildOnChange($animate) {
}
if
(
!
childScope
&&
(
value
||
attrs
.
showNull
))
{
transclude
(
function
(
clone
,
newScope
)
{
transclude
(
(
clone
,
newScope
)
=>
{
childScope
=
newScope
;
clone
[
clone
.
length
++
]
=
document
.
createComment
(
' end rebuild on change '
);
block
=
{
clone
:
clone
};
...
...
public/app/core/directives/tags.ts
View file @
00c0b71f
...
...
@@ -13,7 +13,7 @@ function setColor(name, element) {
function
tagColorFromName
()
{
return
{
scope
:
{
tagColorFromName
:
'='
},
link
:
function
(
scope
,
element
)
{
link
:
(
scope
,
element
)
=>
{
setColor
(
scope
.
tagColorFromName
,
element
);
},
};
...
...
@@ -29,7 +29,7 @@ function bootstrapTagsinput() {
return
scope
.
$parent
[
property
];
}
return
function
(
item
)
{
return
item
=>
{
return
item
[
property
];
};
}
...
...
@@ -64,7 +64,7 @@ function bootstrapTagsinput() {
itemText
:
getItemProperty
(
scope
,
attrs
.
itemtext
),
tagClass
:
angular
.
isFunction
(
scope
.
$parent
[
attrs
.
tagclass
])
?
scope
.
$parent
[
attrs
.
tagclass
]
:
function
()
{
:
()
=>
{
return
attrs
.
tagclass
;
},
});
...
...
@@ -85,7 +85,7 @@ function bootstrapTagsinput() {
setColor
(
event
.
item
,
tagElement
);
});
select
.
on
(
'itemRemoved'
,
function
(
event
)
{
select
.
on
(
'itemRemoved'
,
event
=>
{
const
idx
=
scope
.
model
.
indexOf
(
event
.
item
);
if
(
idx
!==
-
1
)
{
scope
.
model
.
splice
(
idx
,
1
);
...
...
@@ -97,7 +97,7 @@ function bootstrapTagsinput() {
scope
.
$watch
(
'model'
,
function
()
{
()
=>
{
if
(
!
angular
.
isArray
(
scope
.
model
))
{
scope
.
model
=
[];
}
...
...
public/app/core/directives/value_select_dropdown.ts
View file @
00c0b71f
...
...
@@ -245,7 +245,7 @@ export function valueSelectDropdown($compile, $window, $timeout, $rootScope) {
controller
:
'ValueSelectDropdownCtrl'
,
controllerAs
:
'vm'
,
bindToController
:
true
,
link
:
function
(
scope
,
elem
)
{
link
:
(
scope
,
elem
)
=>
{
const
bodyEl
=
angular
.
element
(
$window
.
document
.
body
);
const
linkEl
=
elem
.
find
(
'.variable-value-link'
);
const
inputEl
=
elem
.
find
(
'input'
);
...
...
@@ -258,7 +258,7 @@ export function valueSelectDropdown($compile, $window, $timeout, $rootScope) {
inputEl
.
focus
();
$timeout
(
function
()
{
()
=>
{
bodyEl
.
on
(
'click'
,
bodyOnClick
);
},
0
,
...
...
@@ -274,7 +274,7 @@ export function valueSelectDropdown($compile, $window, $timeout, $rootScope) {
function
bodyOnClick
(
e
)
{
if
(
elem
.
has
(
e
.
target
).
length
===
0
)
{
scope
.
$apply
(
function
()
{
scope
.
$apply
(
()
=>
{
scope
.
vm
.
commitChanges
();
});
}
...
...
public/app/core/jquery_extended.ts
View file @
00c0b71f
...
...
@@ -4,7 +4,7 @@ import _ from 'lodash';
const
$win
=
$
(
window
);
$
.
fn
.
place_tt
=
(
function
()
{
$
.
fn
.
place_tt
=
(
()
=>
{
const
defaults
=
{
offset
:
5
,
};
...
...
@@ -28,7 +28,7 @@ $.fn.place_tt = (function() {
.
invoke
([
'$compile'
,
'$rootScope'
,
function
(
$compile
,
$rootScope
)
{
(
$compile
,
$rootScope
)
=>
{
const
tmpScope
=
$rootScope
.
$new
(
true
);
_
.
extend
(
tmpScope
,
opts
.
scopeData
);
...
...
public/app/core/partials.ts
View file @
00c0b71f
let
templates
=
(
require
as
any
).
context
(
'../'
,
true
,
/
\.
html$/
);
templates
.
keys
().
forEach
(
function
(
key
)
{
templates
.
keys
().
forEach
(
key
=>
{
templates
(
key
);
});
public/app/core/profiler.ts
View file @
00c0b71f
...
...
@@ -82,15 +82,15 @@ export class Profiler {
let
scopes
=
0
;
const
root
=
$
(
document
.
getElementsByTagName
(
'body'
));
const
f
=
function
(
element
)
{
const
f
=
element
=>
{
if
(
element
.
data
().
hasOwnProperty
(
'$scope'
))
{
scopes
++
;
angular
.
forEach
(
element
.
data
().
$scope
.
$$watchers
,
function
()
{
angular
.
forEach
(
element
.
data
().
$scope
.
$$watchers
,
()
=>
{
count
++
;
});
}
angular
.
forEach
(
element
.
children
(),
function
(
childElement
)
{
angular
.
forEach
(
element
.
children
(),
childElement
=>
{
f
(
$
(
childElement
));
});
};
...
...
public/app/core/services/analytics.ts
View file @
00c0b71f
...
...
@@ -15,6 +15,7 @@ export class Analytics {
const
ga
=
((
window
as
any
).
ga
=
(
window
as
any
).
ga
||
function
()
{
//tslint:disable-line:only-arrow-functions
(
ga
.
q
=
ga
.
q
||
[]).
push
(
arguments
);
});
ga
.
l
=
+
new
Date
();
...
...
public/app/core/services/context_srv.ts
View file @
00c0b71f
...
...
@@ -64,6 +64,6 @@ export class ContextSrv {
const
contextSrv
=
new
ContextSrv
();
export
{
contextSrv
};
coreModule
.
factory
(
'contextSrv'
,
function
()
{
coreModule
.
factory
(
'contextSrv'
,
()
=>
{
return
contextSrv
;
});
public/app/core/services/ng_react.ts
View file @
00c0b71f
...
...
@@ -34,7 +34,7 @@ function getReactComponent(name, $injector) {
if
(
!
reactComponent
)
{
try
{
reactComponent
=
name
.
split
(
'.'
).
reduce
(
function
(
current
,
namePart
)
{
reactComponent
=
name
.
split
(
'.'
).
reduce
(
(
current
,
namePart
)
=>
{
return
current
[
namePart
];
},
window
);
}
catch
(
e
)
{}
...
...
@@ -53,12 +53,13 @@ function applied(fn, scope) {
return
fn
;
}
const
wrapped
:
any
=
function
()
{
//tslint:disable-line:only-arrow-functions
const
args
=
arguments
;
const
phase
=
scope
.
$root
.
$$phase
;
if
(
phase
===
'$apply'
||
phase
===
'$digest'
)
{
return
fn
.
apply
(
null
,
args
);
}
else
{
return
scope
.
$apply
(
function
()
{
return
scope
.
$apply
(
()
=>
{
return
fn
.
apply
(
null
,
args
);
});
}
...
...
@@ -80,7 +81,7 @@ function applied(fn, scope) {
* @returns {Object} props with the functions wrapped in scope.$apply
*/
function
applyFunctions
(
obj
,
scope
,
propsConfig
?)
{
return
Object
.
keys
(
obj
||
{}).
reduce
(
function
(
prev
,
key
)
{
return
Object
.
keys
(
obj
||
{}).
reduce
(
(
prev
,
key
)
=>
{
const
value
=
obj
[
key
];
const
config
=
(
propsConfig
||
{})[
key
]
||
{};
/**
...
...
@@ -108,7 +109,7 @@ function watchProps(watchDepth, scope, watchExpressions, listener) {
const
watchGroupExpressions
=
[];
watchExpressions
.
forEach
(
function
(
expr
)
{
watchExpressions
.
forEach
(
expr
=>
{
const
actualExpr
=
getPropExpression
(
expr
);
const
exprWatchDepth
=
getPropWatchDepth
(
watchDepth
,
expr
);
...
...
@@ -134,7 +135,7 @@ function watchProps(watchDepth, scope, watchExpressions, listener) {
// render React component, with scope[attrs.props] being passed in as the component props
function
renderComponent
(
component
,
props
,
scope
,
elem
)
{
scope
.
$evalAsync
(
function
()
{
scope
.
$evalAsync
(
()
=>
{
ReactDOM
.
render
(
React
.
createElement
(
component
,
props
),
elem
[
0
]);
});
}
...
...
@@ -156,7 +157,7 @@ function getPropExpression(prop) {
// find the normalized attribute knowing that React props accept any type of capitalization
function
findAttribute
(
attrs
,
propName
)
{
const
index
=
Object
.
keys
(
attrs
).
filter
(
function
(
attr
)
{
const
index
=
Object
.
keys
(
attrs
).
filter
(
attr
=>
{
return
attr
.
toLowerCase
()
===
propName
.
toLowerCase
();
})[
0
];
return
attrs
[
index
];
...
...
@@ -186,14 +187,14 @@ function getPropWatchDepth(defaultWatch, prop) {
// }
// }));
//
const
reactComponent
=
function
(
$injector
)
{
const
reactComponent
=
$injector
=>
{
return
{
restrict
:
'E'
,
replace
:
true
,
link
:
function
(
scope
,
elem
,
attrs
)
{
const
reactComponent
=
getReactComponent
(
attrs
.
name
,
$injector
);
const
renderMyComponent
=
function
()
{
const
renderMyComponent
=
()
=>
{
const
scopeProps
=
scope
.
$eval
(
attrs
.
props
);
const
props
=
applyFunctions
(
scopeProps
,
scope
);
...
...
@@ -243,8 +244,8 @@ const reactComponent = function($injector) {
//
// <hello name="name"/>
//
const
reactDirective
=
function
(
$injector
)
{
return
function
(
reactComponentName
,
props
,
conf
,
injectableProps
)
{
const
reactDirective
=
$injector
=>
{
return
(
reactComponentName
,
props
,
conf
,
injectableProps
)
=>
{
const
directive
=
{
restrict
:
'E'
,
replace
:
true
,
...
...
@@ -255,11 +256,11 @@ const reactDirective = function($injector) {
props
=
props
||
Object
.
keys
(
reactComponent
.
propTypes
||
{});
// for each of the properties, get their scope value and set it to scope.props
const
renderMyComponent
=
function
()
{
const
renderMyComponent
=
()
=>
{
let
scopeProps
=
{};
const
config
=
{};
props
.
forEach
(
function
(
prop
)
{
props
.
forEach
(
prop
=>
{
const
propName
=
getPropName
(
prop
);
scopeProps
[
propName
]
=
scope
.
$eval
(
findAttribute
(
attrs
,
propName
));
config
[
propName
]
=
getPropConfig
(
prop
);
...
...
@@ -272,7 +273,7 @@ const reactDirective = function($injector) {
// watch each property name and trigger an update whenever something changes,
// to update scope.props with new values
const
propExpressions
=
props
.
map
(
function
(
prop
)
{
const
propExpressions
=
props
.
map
(
prop
=>
{
return
Array
.
isArray
(
prop
)
?
[
attrs
[
getPropName
(
prop
)],
getPropConfig
(
prop
)]
:
attrs
[
prop
];
});
...
...
public/app/core/table_model.ts
View file @
00c0b71f
...
...
@@ -26,7 +26,7 @@ export default class TableModel {
return
;
}
this
.
rows
.
sort
(
function
(
a
,
b
)
{
this
.
rows
.
sort
(
(
a
,
b
)
=>
{
a
=
a
[
options
.
col
];
b
=
b
[
options
.
col
];
// Sort null or undefined seperately from comparable values
...
...
public/app/core/utils/file_export.ts
View file @
00c0b71f
...
...
@@ -84,7 +84,7 @@ export function convertSeriesListToCsvColumns(seriesList, dateTimeFormat = DEFAU
formatSpecialHeader
(
excel
)
+
formatRow
(
[
'Time'
].
concat
(
seriesList
.
map
(
function
(
val
)
{
seriesList
.
map
(
val
=>
{
return
val
.
alias
;
})
)
...
...
@@ -97,7 +97,7 @@ export function convertSeriesListToCsvColumns(seriesList, dateTimeFormat = DEFAU
const
timestamp
=
moment
(
seriesList
[
0
].
datapoints
[
i
][
POINT_TIME_INDEX
]).
format
(
dateTimeFormat
);
text
+=
formatRow
(
[
timestamp
].
concat
(
seriesList
.
map
(
function
(
series
)
{
seriesList
.
map
(
series
=>
{
return
series
.
datapoints
[
i
][
POINT_VALUE_INDEX
];
})
),
...
...
public/app/core/utils/flatten.ts
View file @
00c0b71f
...
...
@@ -10,7 +10,7 @@ export default function flatten(target, opts): any {
const
output
=
{};
function
step
(
object
,
prev
)
{
Object
.
keys
(
object
).
forEach
(
function
(
key
)
{
Object
.
keys
(
object
).
forEach
(
key
=>
{
const
value
=
object
[
key
];
const
isarray
=
opts
.
safe
&&
Array
.
isArray
(
value
);
const
type
=
Object
.
prototype
.
toString
.
call
(
value
);
...
...
public/app/core/utils/kbn.ts
View file @
00c0b71f
This diff is collapsed.
Click to expand it.
public/app/core/utils/outline.ts
View file @
00c0b71f
...
...
@@ -5,7 +5,7 @@ function outlineFixer() {
const
styleElement
=
d
.
createElement
(
'STYLE'
);
const
domEvents
=
'addEventListener'
in
d
;
const
addEventListener
=
function
(
type
,
callback
)
{
const
addEventListener
=
(
type
,
callback
)
=>
{
// Basic cross-browser event handling
if
(
domEvents
)
{
d
.
addEventListener
(
type
,
callback
);
...
...
@@ -14,7 +14,7 @@ function outlineFixer() {
}
};
const
setCss
=
function
(
cssText
)
{
const
setCss
=
cssText
=>
{
// Handle setting of <style> element contents in IE8
!!
styleElement
.
styleSheet
?
(
styleElement
.
styleSheet
.
cssText
=
cssText
)
:
(
styleElement
.
innerHTML
=
cssText
);
};
...
...
@@ -22,11 +22,11 @@ function outlineFixer() {
d
.
getElementsByTagName
(
'HEAD'
)[
0
].
appendChild
(
styleElement
);
// Using mousedown instead of mouseover, so that previously focused elements don't lose focus ring on mouse move
addEventListener
(
'mousedown'
,
function
()
{
addEventListener
(
'mousedown'
,
()
=>
{
setCss
(
':focus{outline:0 !important}::-moz-focus-inner{border:0;}'
);
});
addEventListener
(
'keydown'
,
function
()
{
addEventListener
(
'keydown'
,
()
=>
{
setCss
(
''
);
});
}
...
...
public/app/core/utils/rangeutil.ts
View file @
00c0b71f
...
...
@@ -61,7 +61,7 @@ const rangeOptions = [
const
absoluteFormat
=
'MMM D, YYYY HH:mm:ss'
;
const
rangeIndex
=
{};
_
.
each
(
rangeOptions
,
f
unction
(
frame
)
{
_
.
each
(
rangeOptions
,
f
rame
=>
{
rangeIndex
[
frame
.
from
+
' to '
+
frame
.
to
]
=
frame
;
});
...
...
public/app/core/utils/url.ts
View file @
00c0b71f
...
...
@@ -6,11 +6,11 @@ export function toUrlParams(a) {
const
s
=
[];
const
rbracket
=
/
\[\]
$/
;
const
isArray
=
function
(
obj
)
{
const
isArray
=
obj
=>
{
return
Object
.
prototype
.
toString
.
call
(
obj
)
===
'[object Array]'
;
};
const
add
=
function
(
k
,
v
)
{
const
add
=
(
k
,
v
)
=>
{
v
=
typeof
v
===
'function'
?
v
()
:
v
===
null
?
''
:
v
===
undefined
?
''
:
v
;
if
(
typeof
v
!==
'boolean'
)
{
s
[
s
.
length
]
=
encodeURIComponent
(
k
)
+
'='
+
encodeURIComponent
(
v
);
...
...
@@ -19,7 +19,7 @@ export function toUrlParams(a) {
}
};
const
buildParams
=
function
(
prefix
,
obj
)
{
const
buildParams
=
(
prefix
,
obj
)
=>
{
let
i
,
len
,
key
;
if
(
prefix
)
{
...
...
public/app/features/dashboard/dashboard_migration.ts
View file @
00c0b71f
...
...
@@ -36,7 +36,7 @@ export class DashboardMigrator {
}
}
panelUpgrades
.
push
(
function
(
panel
)
{
panelUpgrades
.
push
(
panel
=>
{
// rename panel type
if
(
panel
.
type
===
'graphite'
)
{
panel
.
type
=
'graph'
;
...
...
@@ -84,7 +84,7 @@ export class DashboardMigrator {
if
(
oldVersion
<
3
)
{
// ensure panel ids
let
maxId
=
this
.
dashboard
.
getNextPanelId
();
panelUpgrades
.
push
(
function
(
panel
)
{
panelUpgrades
.
push
(
panel
=>
{
if
(
!
panel
.
id
)
{
panel
.
id
=
maxId
;
maxId
+=
1
;
...
...
@@ -95,11 +95,11 @@ export class DashboardMigrator {
// schema version 4 changes
if
(
oldVersion
<
4
)
{
// move aliasYAxis changes
panelUpgrades
.
push
(
function
(
panel
)
{
panelUpgrades
.
push
(
panel
=>
{
if
(
panel
.
type
!==
'graph'
)
{
return
;
}
_
.
each
(
panel
.
aliasYAxis
,
function
(
value
,
key
)
{
_
.
each
(
panel
.
aliasYAxis
,
(
value
,
key
)
=>
{
panel
.
seriesOverrides
=
[{
alias
:
key
,
yaxis
:
value
}];
});
delete
panel
.
aliasYAxis
;
...
...
@@ -150,15 +150,15 @@ export class DashboardMigrator {
}
if
(
oldVersion
<
8
)
{
panelUpgrades
.
push
(
function
(
panel
)
{
_
.
each
(
panel
.
targets
,
function
(
target
)
{
panelUpgrades
.
push
(
panel
=>
{
_
.
each
(
panel
.
targets
,
target
=>
{
// update old influxdb query schema
if
(
target
.
fields
&&
target
.
tags
&&
target
.
groupBy
)
{
if
(
target
.
rawQuery
)
{
delete
target
.
fields
;
delete
target
.
fill
;
}
else
{
target
.
select
=
_
.
map
(
target
.
fields
,
f
unction
(
field
)
{
target
.
select
=
_
.
map
(
target
.
fields
,
f
ield
=>
{
const
parts
=
[];
parts
.
push
({
type
:
'field'
,
params
:
[
field
.
name
]
});
parts
.
push
({
type
:
field
.
func
,
params
:
[]
});
...
...
@@ -171,7 +171,7 @@ export class DashboardMigrator {
return
parts
;
});
delete
target
.
fields
;
_
.
each
(
target
.
groupBy
,
function
(
part
)
{
_
.
each
(
target
.
groupBy
,
part
=>
{
if
(
part
.
type
===
'time'
&&
part
.
interval
)
{
part
.
params
=
[
part
.
interval
];
delete
part
.
interval
;
...
...
@@ -195,7 +195,7 @@ export class DashboardMigrator {
// schema version 9 changes
if
(
oldVersion
<
9
)
{
// move aliasYAxis changes
panelUpgrades
.
push
(
function
(
panel
)
{
panelUpgrades
.
push
(
panel
=>
{
if
(
panel
.
type
!==
'singlestat'
&&
panel
.
thresholds
!==
''
)
{
return
;
}
...
...
@@ -214,12 +214,12 @@ export class DashboardMigrator {
// schema version 10 changes
if
(
oldVersion
<
10
)
{
// move aliasYAxis changes
panelUpgrades
.
push
(
function
(
panel
)
{
panelUpgrades
.
push
(
panel
=>
{
if
(
panel
.
type
!==
'table'
)
{
return
;
}
_
.
each
(
panel
.
styles
,
function
(
style
)
{
_
.
each
(
panel
.
styles
,
style
=>
{
if
(
style
.
thresholds
&&
style
.
thresholds
.
length
>=
3
)
{
const
k
=
style
.
thresholds
;
k
.
shift
();
...
...
@@ -231,7 +231,7 @@ export class DashboardMigrator {
if
(
oldVersion
<
12
)
{
// update template variables
_
.
each
(
this
.
dashboard
.
templating
.
list
,
function
(
templateVariable
)
{
_
.
each
(
this
.
dashboard
.
templating
.
list
,
templateVariable
=>
{
if
(
templateVariable
.
refresh
)
{
templateVariable
.
refresh
=
1
;
}
...
...
@@ -248,7 +248,7 @@ export class DashboardMigrator {
if
(
oldVersion
<
12
)
{
// update graph yaxes changes
panelUpgrades
.
push
(
function
(
panel
)
{
panelUpgrades
.
push
(
panel
=>
{
if
(
panel
.
type
!==
'graph'
)
{
return
;
}
...
...
@@ -297,7 +297,7 @@ export class DashboardMigrator {
if
(
oldVersion
<
13
)
{
// update graph yaxes changes
panelUpgrades
.
push
(
function
(
panel
)
{
panelUpgrades
.
push
(
panel
=>
{
if
(
panel
.
type
!==
'graph'
)
{
return
;
}
...
...
public/app/features/dashboard/dashboard_model.ts
View file @
00c0b71f
...
...
@@ -258,7 +258,7 @@ export class DashboardModel {
}
sortPanelsByGridPos
()
{
this
.
panels
.
sort
(
function
(
panelA
,
panelB
)
{
this
.
panels
.
sort
(
(
panelA
,
panelB
)
=>
{
if
(
panelA
.
gridPos
.
y
===
panelB
.
gridPos
.
y
)
{
return
panelA
.
gridPos
.
x
-
panelB
.
gridPos
.
x
;
}
else
{
...
...
@@ -775,8 +775,8 @@ export class DashboardModel {
getNextQueryLetter
(
panel
)
{
const
letters
=
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
;
return
_
.
find
(
letters
,
function
(
refId
)
{
return
_
.
every
(
panel
.
targets
,
function
(
other
)
{
return
_
.
find
(
letters
,
refId
=>
{
return
_
.
every
(
panel
.
targets
,
other
=>
{
return
other
.
refId
!==
refId
;
});
});
...
...
public/app/features/panel/panel_ctrl.ts
View file @
00c0b71f
...
...
@@ -126,7 +126,7 @@ export class PanelCtrl {
const
editorTab
=
{
title
,
directiveFn
};
if
(
_
.
isString
(
directiveFn
))
{
editorTab
.
directiveFn
=
function
()
{
editorTab
.
directiveFn
=
()
=>
{
return
{
templateUrl
:
directiveFn
};
};
}
...
...
public/app/plugins/datasource/graphite/add_graphite_func.ts
View file @
00c0b71f
...
...
@@ -24,7 +24,7 @@ export function graphiteAddFunc($compile) {
$input
.
appendTo
(
elem
);
$button
.
appendTo
(
elem
);
ctrl
.
datasource
.
getFuncDefs
().
then
(
func
tion
(
funcDefs
)
{
ctrl
.
datasource
.
getFuncDefs
().
then
(
func
Defs
=>
{
const
allFunctions
=
_
.
map
(
funcDefs
,
'name'
).
sort
();
$scope
.
functionMenu
=
createFunctionDropDownMenu
(
funcDefs
);
...
...
@@ -34,12 +34,12 @@ export function graphiteAddFunc($compile) {
source
:
allFunctions
,
minLength
:
1
,
items
:
10
,
updater
:
function
(
value
)
{
updater
:
value
=>
{
let
funcDef
=
ctrl
.
datasource
.
getFuncDef
(
value
);
if
(
!
funcDef
)
{
// try find close match
value
=
value
.
toLowerCase
();
funcDef
=
_
.
find
(
allFunctions
,
func
tion
(
funcName
)
{
funcDef
=
_
.
find
(
allFunctions
,
func
Name
=>
{
return
funcName
.
toLowerCase
().
indexOf
(
value
)
===
0
;
});
...
...
@@ -48,7 +48,7 @@ export function graphiteAddFunc($compile) {
}
}
$scope
.
$apply
(
function
()
{
$scope
.
$apply
(
()
=>
{
ctrl
.
addFunction
(
funcDef
);
});
...
...
@@ -57,20 +57,20 @@ export function graphiteAddFunc($compile) {
},
});
$button
.
click
(
function
()
{
$button
.
click
(
()
=>
{
$button
.
hide
();
$input
.
show
();
$input
.
focus
();
});
$input
.
keyup
(
function
()
{
$input
.
keyup
(
()
=>
{
elem
.
toggleClass
(
'open'
,
$input
.
val
()
===
''
);
});
$input
.
blur
(
function
()
{
$input
.
blur
(
()
=>
{
// clicking the function dropdown menu won't
// work if you remove class at once
setTimeout
(
function
()
{
setTimeout
(
()
=>
{
$input
.
val
(
''
);
$input
.
hide
();
$button
.
show
();
...
...
@@ -82,7 +82,7 @@ export function graphiteAddFunc($compile) {
});
let
drop
;
const
cleanUpDrop
=
function
()
{
const
cleanUpDrop
=
()
=>
{
if
(
drop
)
{
drop
.
destroy
();
drop
=
null
;
...
...
@@ -121,7 +121,7 @@ export function graphiteAddFunc($compile) {
});
}
})
.
on
(
'mouseout'
,
'ul.dropdown-menu li'
,
function
()
{
.
on
(
'mouseout'
,
'ul.dropdown-menu li'
,
()
=>
{
cleanUpDrop
();
});
...
...
@@ -135,7 +135,7 @@ angular.module('grafana.directives').directive('graphiteAddFunc', graphiteAddFun
function
createFunctionDropDownMenu
(
funcDefs
)
{
const
categories
=
{};
_
.
forEach
(
funcDefs
,
func
tion
(
funcDef
)
{
_
.
forEach
(
funcDefs
,
func
Def
=>
{
if
(
!
funcDef
.
category
)
{
return
;
}
...
...
@@ -149,7 +149,7 @@ function createFunctionDropDownMenu(funcDefs) {
});
return
_
.
sortBy
(
_
.
map
(
categories
,
function
(
submenu
,
category
)
{
_
.
map
(
categories
,
(
submenu
,
category
)
=>
{
return
{
text
:
category
,
submenu
:
_
.
sortBy
(
submenu
,
'text'
),
...
...
public/app/plugins/datasource/graphite/datasource.ts
View file @
00c0b71f
...
...
@@ -16,7 +16,7 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv,
this
.
funcDefs
=
null
;
this
.
funcDefsPromise
=
null
;
this
.
getQueryOptionsInfo
=
function
()
{
this
.
getQueryOptionsInfo
=
()
=>
{
return
{
maxDataPoints
:
true
,
cacheTimeout
:
true
,
...
...
@@ -70,7 +70,7 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv,
}
};
this
.
convertDataPointsToMs
=
function
(
result
)
{
this
.
convertDataPointsToMs
=
result
=>
{
if
(
!
result
||
!
result
.
data
)
{
return
[];
}
...
...
@@ -83,7 +83,7 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv,
return
result
;
};
this
.
parseTags
=
function
(
tagString
)
{
this
.
parseTags
=
tagString
=>
{
let
tags
=
[];
tags
=
tagString
.
split
(
','
);
if
(
tags
.
length
===
1
)
{
...
...
@@ -106,7 +106,7 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv,
maxDataPoints
:
100
,
};
return
this
.
query
(
graphiteQuery
).
then
(
function
(
result
)
{
return
this
.
query
(
graphiteQuery
).
then
(
result
=>
{
const
list
=
[];
for
(
let
i
=
0
;
i
<
result
.
data
.
length
;
i
++
)
{
...
...
@@ -175,11 +175,11 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv,
}
};
this
.
targetContainsTemplate
=
function
(
target
)
{
this
.
targetContainsTemplate
=
target
=>
{
return
templateSrv
.
variableExists
(
target
.
target
);
};
this
.
translateTime
=
function
(
date
,
roundUp
)
{
this
.
translateTime
=
(
date
,
roundUp
)
=>
{
if
(
_
.
isString
(
date
))
{
if
(
date
===
'now'
)
{
return
'now'
;
...
...
@@ -467,7 +467,7 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv,
targets
:
[{
target
:
'constantLine(100)'
}],
maxDataPoints
:
300
,
};
return
this
.
query
(
query
).
then
(
function
()
{
return
this
.
query
(
query
).
then
(
()
=>
{
return
{
status
:
'success'
,
message
:
'Data source is working'
};
});
};
...
...
@@ -539,7 +539,7 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv,
}
}
_
.
each
(
options
,
function
(
value
,
key
)
{
_
.
each
(
options
,
(
value
,
key
)
=>
{
if
(
_
.
indexOf
(
graphiteOptions
,
key
)
===
-
1
)
{
return
;
}
...
...
public/app/plugins/datasource/graphite/func_editor.ts
View file @
00c0b71f
...
...
@@ -57,7 +57,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
if
(
!
scheduledRelink
)
{
scheduledRelink
=
true
;
setTimeout
(
function
()
{
setTimeout
(
()
=>
{
relink
();
scheduledRelink
=
false
;
},
200
);
...
...
@@ -93,7 +93,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
scheduledRelinkIfNeeded
();
$scope
.
$apply
(
function
()
{
$scope
.
$apply
(
()
=>
{
ctrl
.
targetChanged
();
});
...
...
@@ -113,7 +113,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
const
inputElem
=
this
;
// happens long before the click event on the typeahead options
// need to have long delay because the blur
cancelBlur
=
setTimeout
(
function
()
{
cancelBlur
=
setTimeout
(
()
=>
{
switchToLink
(
inputElem
,
paramIndex
);
},
200
);
}
...
...
@@ -135,7 +135,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
let
options
=
paramDef
(
paramIndex
).
options
;
if
(
paramDef
(
paramIndex
).
type
===
'int'
)
{
options
=
_
.
map
(
options
,
function
(
val
)
{
options
=
_
.
map
(
options
,
val
=>
{
return
val
.
toString
();
});
}
...
...
@@ -144,7 +144,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
source
:
options
,
minLength
:
0
,
items
:
20
,
updater
:
function
(
value
)
{
updater
:
value
=>
{
$input
.
val
(
value
);
switchToLink
(
$input
[
0
],
paramIndex
);
return
value
;
...
...
@@ -185,7 +185,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
defParams
.
push
(
_
.
assign
({},
lastParam
,
{
optional
:
true
}));
}
_
.
each
(
defParams
,
function
(
param
,
index
)
{
_
.
each
(
defParams
,
(
param
,
index
)
=>
{
if
(
param
.
optional
&&
func
.
params
.
length
<
index
)
{
return
false
;
}
...
...
@@ -236,7 +236,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
function
ifJustAddedFocusFirstParam
()
{
if
(
$scope
.
func
.
added
)
{
$scope
.
func
.
added
=
false
;
setTimeout
(
function
()
{
setTimeout
(
()
=>
{
elem
.
find
(
'.graphite-func-param-link'
)
.
first
()
...
...
@@ -250,18 +250,18 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
}
function
registerFuncControlsActions
()
{
$funcControls
.
click
(
function
(
e
)
{
$funcControls
.
click
(
e
=>
{
const
$target
=
$
(
e
.
target
);
if
(
$target
.
hasClass
(
'fa-remove'
))
{
toggleFuncControls
();
$scope
.
$apply
(
function
()
{
$scope
.
$apply
(
()
=>
{
ctrl
.
removeFunction
(
$scope
.
func
);
});
return
;
}
if
(
$target
.
hasClass
(
'fa-arrow-left'
))
{
$scope
.
$apply
(
function
()
{
$scope
.
$apply
(
()
=>
{
_
.
move
(
ctrl
.
queryModel
.
functions
,
$scope
.
$index
,
$scope
.
$index
-
1
);
ctrl
.
targetChanged
();
});
...
...
@@ -269,7 +269,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
}
if
(
$target
.
hasClass
(
'fa-arrow-right'
))
{
$scope
.
$apply
(
function
()
{
$scope
.
$apply
(
()
=>
{
_
.
move
(
ctrl
.
queryModel
.
functions
,
$scope
.
$index
,
$scope
.
$index
+
1
);
ctrl
.
targetChanged
();
});
...
...
public/app/plugins/datasource/graphite/gfunc.ts
View file @
00c0b71f
...
...
@@ -1058,10 +1058,10 @@ function getFuncDef(name, idx?) {
function
getFuncDefs
(
graphiteVersion
,
idx
?)
{
const
funcs
=
{};
_
.
forEach
(
idx
||
index
,
func
tion
(
funcDef
)
{
_
.
forEach
(
idx
||
index
,
func
Def
=>
{
if
(
isVersionRelatedFunction
(
funcDef
,
graphiteVersion
))
{
funcs
[
funcDef
.
name
]
=
_
.
assign
({},
funcDef
,
{
params
:
_
.
filter
(
funcDef
.
params
,
function
(
param
)
{
params
:
_
.
filter
(
funcDef
.
params
,
param
=>
{
return
isVersionRelatedFunction
(
param
,
graphiteVersion
);
}),
});
...
...
public/app/plugins/datasource/opentsdb/specs/datasource.test.ts
View file @
00c0b71f
...
...
@@ -20,16 +20,16 @@ describe('opentsdb', () => {
let
requestOptions
;
beforeEach
(
async
()
=>
{
ctx
.
backendSrv
.
datasourceRequest
=
await
function
(
options
)
{
ctx
.
backendSrv
.
datasourceRequest
=
await
(
options
=>
{
requestOptions
=
options
;
return
Promise
.
resolve
({
data
:
[{
target
:
'prod1.count'
,
datapoints
:
[[
10
,
1
],
[
12
,
1
]]
}],
});
};
}
)
;
});
it
(
'metrics() should generate api suggest query'
,
()
=>
{
ctx
.
ctrl
.
metricFindQuery
(
'metrics(pew)'
).
then
(
function
(
data
)
{
ctx
.
ctrl
.
metricFindQuery
(
'metrics(pew)'
).
then
(
data
=>
{
results
=
data
;
});
expect
(
requestOptions
.
url
).
toBe
(
'/api/suggest'
);
...
...
@@ -39,7 +39,7 @@ describe('opentsdb', () => {
});
it
(
'tag_names(cpu) should generate lookup query'
,
()
=>
{
ctx
.
ctrl
.
metricFindQuery
(
'tag_names(cpu)'
).
then
(
function
(
data
)
{
ctx
.
ctrl
.
metricFindQuery
(
'tag_names(cpu)'
).
then
(
data
=>
{
results
=
data
;
});
expect
(
requestOptions
.
url
).
toBe
(
'/api/search/lookup'
);
...
...
@@ -47,7 +47,7 @@ describe('opentsdb', () => {
});
it
(
'tag_values(cpu, test) should generate lookup query'
,
()
=>
{
ctx
.
ctrl
.
metricFindQuery
(
'tag_values(cpu, hostname)'
).
then
(
function
(
data
)
{
ctx
.
ctrl
.
metricFindQuery
(
'tag_values(cpu, hostname)'
).
then
(
data
=>
{
results
=
data
;
});
expect
(
requestOptions
.
url
).
toBe
(
'/api/search/lookup'
);
...
...
@@ -55,7 +55,7 @@ describe('opentsdb', () => {
});
it
(
'tag_values(cpu, test) should generate lookup query'
,
()
=>
{
ctx
.
ctrl
.
metricFindQuery
(
'tag_values(cpu, hostname, env=$env)'
).
then
(
function
(
data
)
{
ctx
.
ctrl
.
metricFindQuery
(
'tag_values(cpu, hostname, env=$env)'
).
then
(
data
=>
{
results
=
data
;
});
expect
(
requestOptions
.
url
).
toBe
(
'/api/search/lookup'
);
...
...
@@ -63,7 +63,7 @@ describe('opentsdb', () => {
});
it
(
'tag_values(cpu, test) should generate lookup query'
,
()
=>
{
ctx
.
ctrl
.
metricFindQuery
(
'tag_values(cpu, hostname, env=$env, region=$region)'
).
then
(
function
(
data
)
{
ctx
.
ctrl
.
metricFindQuery
(
'tag_values(cpu, hostname, env=$env, region=$region)'
).
then
(
data
=>
{
results
=
data
;
});
expect
(
requestOptions
.
url
).
toBe
(
'/api/search/lookup'
);
...
...
@@ -71,7 +71,7 @@ describe('opentsdb', () => {
});
it
(
'suggest_tagk() should generate api suggest query'
,
()
=>
{
ctx
.
ctrl
.
metricFindQuery
(
'suggest_tagk(foo)'
).
then
(
function
(
data
)
{
ctx
.
ctrl
.
metricFindQuery
(
'suggest_tagk(foo)'
).
then
(
data
=>
{
results
=
data
;
});
expect
(
requestOptions
.
url
).
toBe
(
'/api/suggest'
);
...
...
@@ -80,7 +80,7 @@ describe('opentsdb', () => {
});
it
(
'suggest_tagv() should generate api suggest query'
,
()
=>
{
ctx
.
ctrl
.
metricFindQuery
(
'suggest_tagv(bar)'
).
then
(
function
(
data
)
{
ctx
.
ctrl
.
metricFindQuery
(
'suggest_tagv(bar)'
).
then
(
data
=>
{
results
=
data
;
});
expect
(
requestOptions
.
url
).
toBe
(
'/api/suggest'
);
...
...
public/app/stores/FolderStore/FolderStore.ts
View file @
00c0b71f
...
...
@@ -36,7 +36,7 @@ export const FolderStore = types
return
res
;
}),
setTitle
:
function
(
originalTitle
:
string
,
title
:
string
)
{
setTitle
:
(
originalTitle
:
string
,
title
:
string
)
=>
{
self
.
folder
.
title
=
title
;
self
.
folder
.
hasChanged
=
originalTitle
.
toLowerCase
()
!==
title
.
trim
().
toLowerCase
()
&&
title
.
trim
().
length
>
0
;
},
...
...
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