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
ca7bc25c
Commit
ca7bc25c
authored
Dec 16, 2016
by
Torkel Ödegaard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(panel): working on panel help text, #4079 , #6847
parent
467ddc19
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
111 additions
and
41 deletions
+111
-41
public/app/features/dashboard/model.ts
+2
-2
public/app/features/dashboard/partials/inspector.html
+2
-1
public/app/features/dashboard/partials/panel_info.html
+18
-0
public/app/features/panel/metrics_panel_ctrl.ts
+0
-1
public/app/features/panel/panel_ctrl.ts
+14
-6
public/app/features/panel/panel_directive.ts
+47
-4
public/app/features/panel/panel_menu.js
+1
-19
public/sass/components/_alerts.scss
+2
-2
public/sass/components/_drop.scss
+1
-1
public/sass/components/_view_states.scss
+1
-0
public/sass/pages/_dashboard.scss
+23
-5
No files found.
public/app/features/dashboard/model.ts
View file @
ca7bc25c
...
...
@@ -51,7 +51,7 @@ export class DashboardModel {
this
.
style
=
data
.
style
||
"dark"
;
this
.
timezone
=
data
.
timezone
||
''
;
this
.
editable
=
data
.
editable
!==
false
;
this
.
graphTooltip
=
data
.
graphTooltip
||
false
;
this
.
graphTooltip
=
data
.
graphTooltip
||
0
;
this
.
hideControls
=
data
.
hideControls
||
false
;
this
.
time
=
data
.
time
||
{
from
:
'now-6h'
,
to
:
'now'
};
this
.
timepicker
=
data
.
timepicker
||
{};
...
...
@@ -272,7 +272,7 @@ export class DashboardModel {
}
sharedTooltipModeEnabled
()
{
return
this
.
graphTooltip
!==
0
;
return
this
.
graphTooltip
>
0
;
}
sharedCrosshairModeOnly
()
{
...
...
public/app/partials/inspector.html
→
public/app/
features/dashboard/
partials/inspector.html
View file @
ca7bc25c
<div
class=
"modal-body"
ng-controller=
"InspectCtrl"
ng-init=
"init()"
>
<div
class=
"modal-header"
>
<h2
class=
"modal-header-title"
>
Inspector
<i
class=
"fa fa-frown-o"
></i>
<span
class=
"p-l-1"
>
Inspector
</span>
</h2>
<ul
class=
"gf-tabs"
>
...
...
public/app/features/dashboard/partials/panel_info.html
0 → 100644
View file @
ca7bc25c
<div
class=
"modal-body"
>
<div
class=
"modal-header"
>
<h2
class=
"modal-header-title"
>
<i
class=
"fa fa-info-circle"
></i>
<span
class=
"p-l-1"
>
Panel Description
</span>
</h2>
<a
class=
"modal-header-close"
ng-click=
"dismiss();"
>
<i
class=
"fa fa-remove"
></i>
</a>
</div>
<div
class=
"modal-content"
>
{{panel.description}}
</div>
</div>
public/app/features/panel/metrics_panel_ctrl.ts
View file @
ca7bc25c
...
...
@@ -12,7 +12,6 @@ import * as dateMath from 'app/core/utils/datemath';
import
{
Subject
}
from
'vendor/npm/rxjs/Subject'
;
class
MetricsPanelCtrl
extends
PanelCtrl
{
error
:
any
;
loading
:
boolean
;
datasource
:
any
;
datasourceName
:
any
;
...
...
public/app/features/panel/panel_ctrl.ts
View file @
ca7bc25c
...
...
@@ -15,6 +15,7 @@ import {Emitter} from 'app/core/core';
export
class
PanelCtrl
{
panel
:
any
;
error
:
any
;
row
:
any
;
dashboard
:
any
;
editorTabIndex
:
number
;
...
...
@@ -243,15 +244,22 @@ export class PanelCtrl {
});
}
openIn
spector
()
{
openIn
fo
()
{
var
modalScope
=
this
.
$scope
.
$new
();
modalScope
.
panel
=
this
.
panel
;
modalScope
.
dashboard
=
this
.
dashboard
;
modalScope
.
inspector
=
$
.
extend
(
true
,
{},
this
.
inspector
);
this
.
publishAppEvent
(
'show-modal'
,
{
src
:
'public/app/partials/inspector.html'
,
scope
:
modalScope
});
if
(
this
.
error
)
{
modalScope
.
inspector
=
$
.
extend
(
true
,
{},
this
.
inspector
);
this
.
publishAppEvent
(
'show-modal'
,
{
src
:
'public/app/features/dashboard/partials/inspector.html'
,
scope
:
modalScope
});
}
else
{
this
.
publishAppEvent
(
'show-modal'
,
{
src
:
'public/app/features/dashboard/partials/panel_info.html'
,
scope
:
modalScope
});
}
}
}
public/app/features/panel/panel_directive.ts
View file @
ca7bc25c
...
...
@@ -2,16 +2,17 @@
import
angular
from
'angular'
;
import
$
from
'jquery'
;
import
_
from
'lodash'
;
import
Drop
from
'tether-drop'
;
var
module
=
angular
.
module
(
'grafana.directives'
);
var
panelTemplate
=
`
<div class="panel-container">
<div class="panel-header">
<span class="alert-error panel-error small pointer" ng-if="ctrl.error" ng-click="ctrl.openInspector()">
<span data-placement="top" bs-tooltip="ctrl.error">
<i class="fa fa-exclamation"></i><span class="panel-error-arrow"></span>
</span>
<span class="panel-info-corner" ng-click="ctrl.openInfo()">
<i class="fa"></i>
<span class="panel-info-corner-inner"></span>
</span>
<span class="panel-loading" ng-show="ctrl.loading">
...
...
@@ -64,7 +65,9 @@ module.directive('grafanaPanel', function($rootScope) {
scope
:
{
ctrl
:
"="
},
link
:
function
(
scope
,
elem
)
{
var
panelContainer
=
elem
.
find
(
'.panel-container'
);
var
cornerInfoElem
=
elem
.
find
(
'.panel-info-corner'
);
var
ctrl
=
scope
.
ctrl
;
var
infoDrop
;
// the reason for handling these classes this way is for performance
// limit the watchers on panels etc
...
...
@@ -139,11 +142,36 @@ module.directive('grafanaPanel', function($rootScope) {
}
},
scope
);
// panel corner info
scope
.
$watchGroup
([
'ctrl.error'
,
'ctrl.panel.description'
],
function
()
{
cornerInfoElem
.
toggleClass
(
'panel-info-corner--has-desc'
,
!!
ctrl
.
panel
.
description
);
cornerInfoElem
.
toggleClass
(
'panel-info-corner--has-error'
,
!!
ctrl
.
error
);
if
(
ctrl
.
error
||
ctrl
.
panel
.
description
)
{
if
(
infoDrop
)
{
infoDrop
.
destroy
();
}
infoDrop
=
new
Drop
({
target
:
cornerInfoElem
[
0
],
content
:
ctrl
.
error
||
ctrl
.
panel
.
description
,
position
:
'right middle'
,
classes
:
'drop-help'
,
openOn
:
'hover'
,
hoverOpenDelay
:
400
,
});
}
});
elem
.
on
(
'mouseenter'
,
mouseEnter
);
elem
.
on
(
'mouseleave'
,
mouseLeave
);
scope
.
$on
(
'$destroy'
,
function
()
{
elem
.
off
();
if
(
infoDrop
)
{
infoDrop
.
destroy
();
}
});
}
};
...
...
@@ -233,4 +261,19 @@ module.directive('panelResizer', function($rootScope) {
};
});
module
.
directive
(
'panelHelpCorner'
,
function
(
$rootScope
)
{
return
{
restrict
:
'E'
,
template
:
`
<span class="alert-error panel-error small pointer" ng-if="ctrl.error" ng-click="ctrl.openInspector()">
<span data-placement="top" bs-tooltip="ctrl.error">
<i class="fa fa-exclamation"></i><span class="panel-error-arrow"></span>
</span>
</span>
`
,
link
:
function
(
scope
,
elem
)
{
}
};
});
public/app/features/panel/panel_menu.js
View file @
ca7bc25c
...
...
@@ -9,26 +9,15 @@ function (angular, $, _, Tether) {
angular
.
module
(
'grafana.directives'
)
.
directive
(
'panelMenu'
,
function
(
$
sanitize
,
$
compile
,
linkSrv
)
{
.
directive
(
'panelMenu'
,
function
(
$compile
,
linkSrv
)
{
var
linkTemplate
=
'<span class="panel-title drag-handle pointer">'
+
'<span class="icon-gf panel-alert-icon"></span>'
+
'<span class="panel-title-text drag-handle">{{ctrl.panel.title | interpolateTemplateVars:this}}</span>'
+
'<span class="panel-help-text"><info-popover mode="bold">{{ctrl.panel.description}}</info-popover></span>'
+
'<span class="panel-links-btn"><i class="fa fa-external-link"></i></span>'
+
'<span class="panel-time-info" ng-show="ctrl.timeInfo"><i class="fa fa-clock-o"></i> {{ctrl.timeInfo}}</span>'
+
'</span>'
;
function
sanitizeString
(
str
)
{
try
{
return
$sanitize
(
str
);
}
catch
(
err
)
{
console
.
log
(
'Could not sanitize annotation string, html escaping instead'
);
return
_
.
escape
(
str
);
}
}
function
createExternalLinkMenu
(
ctrl
)
{
var
template
=
'<div class="panel-menu small">'
;
template
+=
'<div class="panel-menu-row">'
;
...
...
@@ -89,7 +78,6 @@ function (angular, $, _, Tether) {
var
$link
=
$
(
linkTemplate
);
var
$panelLinksBtn
=
$link
.
find
(
".panel-links-btn"
);
var
$panelContainer
=
elem
.
parents
(
".panel-container"
);
var
$panelHelpDrop
=
$link
.
find
(
".panel-help-text"
);
var
menuScope
=
null
;
var
ctrl
=
$scope
.
ctrl
;
var
timeout
=
null
;
...
...
@@ -104,12 +92,6 @@ function (angular, $, _, Tether) {
$panelLinksBtn
.
css
({
display
:
showIcon
?
'inline'
:
'none'
});
});
$scope
.
$watch
(
'ctrl.panel.description'
,
function
(
description
)
{
description
=
sanitizeString
(
description
);
var
showIcon
=
(
description
?
description
.
length
>
0
:
false
)
&&
ctrl
.
panel
.
title
!==
''
;
$panelHelpDrop
.
css
({
display
:
showIcon
?
'inline'
:
'none'
});
});
function
dismiss
(
time
,
force
)
{
clearTimeout
(
timeout
);
timeout
=
null
;
...
...
public/sass/components/_alerts.scss
View file @
ca7bc25c
...
...
@@ -6,8 +6,6 @@
// Base styles
// -------------------------
.alert
{
padding
:
0
.5rem
2rem
0
.5rem
1rem
;
margin-bottom
:
$line-height-base
;
...
...
@@ -30,9 +28,11 @@
.alert-error
{
background-color
:
$errorBackground
;
}
.alert-info
{
background-color
:
$infoBackground
;
}
.alert-warning
{
background-color
:
$state-warning-bg
;
}
...
...
public/sass/components/_drop.scss
View file @
ca7bc25c
...
...
@@ -15,7 +15,6 @@ $easing: cubic-bezier(0, 0, 0.265, 1.00);
&
.drop-open
{
display
:
block
;
}
}
.drop-element
,
.drop-element
*
{
...
...
@@ -41,6 +40,7 @@ $easing: cubic-bezier(0, 0, 0.265, 1.00);
display
:
none
;
}
}
@include
drop-theme
(
"help"
,
$popover-help-bg
,
$popover-help-color
);
@include
drop-theme
(
"popover"
,
$popover-bg
,
$popover-color
);
...
...
public/sass/components/_view_states.scss
View file @
ca7bc25c
...
...
@@ -29,6 +29,7 @@
.dashnav-refresh-action
,
.dashnav-zoom-out
,
.dashnav-action-icons
,
.panel-info-corner--has-desc
,
.dashnav-move-timeframe
{
opacity
:
0
;
transition
:
all
1
.5s
ease-in-out
1s
;
...
...
public/sass/pages/_dashboard.scss
View file @
ca7bc25c
...
...
@@ -75,7 +75,7 @@ div.flot-text {
.panel-help-text
{
margin-left
:
10px
;
display
:
none
;
display
:
none
;
}
.panel-loading
{
...
...
@@ -89,9 +89,11 @@ div.flot-text {
text-align
:
center
;
}
.panel-error
{
color
:
$white
;
.panel-info-corner
{
color
:
$text-color
;
cursor
:
pointer
;
position
:
absolute
;
display
:
none
;
left
:
0
;
padding
:
0px
17px
6px
5px
;
top
:
0
;
...
...
@@ -100,15 +102,31 @@ div.flot-text {
position
:
relative
;
top
:
-2px
;
}
&
--has-desc
{
display
:
block
;
background
:
$blue-dark
;
.fa
:before
{
content
:
"\f129"
;
}
}
&
--has-error
{
display
:
block
;
background
:
$errorBackground
!
important
;
.fa
:before
{
content
:
"\f12a"
;
}
}
}
.panel-
error-arrow
{
.panel-
info-corner-inner
{
width
:
0
;
height
:
0
;
position
:
absolute
;
border-left
:
31px
solid
transparent
;
border-right
:
30px
solid
transparent
;
border-bottom
:
27
px
solid
$panel-bg
;
border-bottom
:
31
px
solid
$panel-bg
;
left
:
0
;
bottom
:
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