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
c148d890
Commit
c148d890
authored
Feb 26, 2016
by
Torkel Ödegaard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(plugins): progress on plugins page
parent
b98e5690
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
253 additions
and
106 deletions
+253
-106
pkg/api/dtos/plugins.go
+1
-0
pkg/api/plugin_setting.go
+1
-0
pkg/plugins/frontend_plugin.go
+4
-0
public/app/features/plugins/edit_ctrl.ts
+2
-0
public/app/features/plugins/partials/edit.html
+143
-88
public/sass/_grafana.scss
+2
-1
public/sass/_variables.dark.scss
+2
-0
public/sass/_variables.light.scss
+2
-0
public/sass/_variables.scss
+5
-0
public/sass/base/_type.scss
+1
-1
public/sass/components/_tabs.scss
+1
-1
public/sass/layout/_lists.scss
+14
-0
public/sass/layout/_page.scss
+37
-15
public/sass/pages/_dashboard.scss
+11
-0
public/sass/pages/_plugins.scss
+27
-0
No files found.
pkg/api/dtos/plugins.go
View file @
c148d890
...
...
@@ -4,6 +4,7 @@ import "github.com/grafana/grafana/pkg/plugins"
type
PluginSetting
struct
{
Name
string
`json:"name"`
Type
string
`json:"type"`
PluginId
string
`json:"pluginId"`
Enabled
bool
`json:"enabled"`
Pinned
bool
`json:"pinned"`
...
...
pkg/api/plugin_setting.go
View file @
c148d890
...
...
@@ -42,6 +42,7 @@ func GetPluginSettingById(c *middleware.Context) Response {
return
ApiError
(
404
,
"Plugin not found, no installed plugin with that id"
,
nil
)
}
else
{
dto
:=
&
dtos
.
PluginSetting
{
Type
:
def
.
Type
,
PluginId
:
def
.
Id
,
Name
:
def
.
Name
,
Info
:
&
def
.
Info
,
...
...
pkg/plugins/frontend_plugin.go
View file @
c148d890
...
...
@@ -56,6 +56,10 @@ func (fp *FrontendPluginBase) handleModuleDefaults() {
}
func
evalRelativePluginUrlPath
(
pathStr
string
,
pluginId
string
)
string
{
if
pathStr
==
""
{
return
""
}
u
,
_
:=
url
.
Parse
(
pathStr
)
if
u
.
IsAbs
()
{
return
pathStr
...
...
public/app/features/plugins/edit_ctrl.ts
View file @
c148d890
...
...
@@ -8,11 +8,13 @@ export class PluginEditCtrl {
pluginId
:
any
;
includedPanels
:
any
;
includedDatasources
:
any
;
tabIndex
:
number
;
/** @ngInject */
constructor
(
private
backendSrv
:
any
,
private
$routeParams
:
any
)
{
this
.
model
=
{};
this
.
pluginId
=
$routeParams
.
pluginId
;
this
.
tabIndex
=
0
;
this
.
backendSrv
.
get
(
`/api/org/plugins/
${
this
.
pluginId
}
/settings`
).
then
(
result
=>
{
this
.
model
=
result
;
...
...
public/app/features/plugins/partials/edit.html
View file @
c148d890
<navbar
title=
"Plugins"
title-url=
"plugins"
icon=
"icon-gf icon-gf-apps"
>
<a
href=
"plugins/apps"
class=
"navbar-page-btn"
>
<i
class=
"fa fa-c
ubes
"
></i>
<i
class=
"fa fa-c
hevron-right
"
></i>
Apps
</a>
</navbar>
<div
class=
"page-container"
>
<div
class=
"page-header"
>
<img
class=
"page-header-logo"
src=
"{{ctrl.model.info.logos.large}}"
>
<h1>
{{ctrl.model.name}}
</h1>
<div
class=
"plugin-header"
>
<span
ng-show=
"ctrl.model.info.logos.large"
class=
"plugin-header-logo"
>
<img
src=
"{{ctrl.model.info.logos.large}}"
>
</span>
<div
class=
"plugin-header-info-block"
>
<h1
class=
"plugin-header-name"
>
{{ctrl.model.name}}
</h1>
<div
class=
"plugin-header-author"
>
By {{ctrl.model.info.author.name}}
</div>
<div
class=
"plugin-header-stamps"
>
<span
class=
"plugin-header-stamps-type"
>
<i
class=
"icon-gf icon-gf-apps"
></i>
{{ctrl.model.type}}
</span>
</div>
</div>
</div>
<div
class=
"flex-container"
>
<div
class=
"app-edit-description"
>
{{ctrl.model.info.description}}
<br>
<span
style=
"small"
>
Version: {{ctrl.model.info.version}}
Updated: {{ctrl.model.info.updated}}
</span>
<ul
class=
"nav nav-tabs nav-tabs-alt"
>
<li
ng-repeat=
"tab in ::['Overview', 'Details', 'Config']"
ng-class=
"{active: ctrl.tabIndex === $index}"
>
<a
ng-click=
"ctrl.tabIndex= $index"
>
{{::tab}}
</a>
</li>
</ul>
<div
class=
"page-body"
>
<div
class=
"tab-content page-content-with-sidebar"
ng-if=
"ctrl.tabIndex === 0"
>
README.md
</div>
<div
class=
"form-inline"
>
<div
class=
"tab-content page-content-with-sidebar"
ng-if=
"ctrl.tabIndex === 1"
>
Details
</div>
<div
class=
"tab-content page-content-with-sidebar"
ng-if=
"ctrl.tabIndex === 2"
>
<div
class=
"gf-form-inline"
>
<div
class=
"gf-form"
>
<editor-checkbox
text=
"Enabled"
model=
"ctrl.model.enabled"
change=
"ctrl.toggleEnabled()"
></editor-checkbox>
</div>
<div
class=
"gf-form"
>
<editor-checkbox
text=
"Pinned"
model=
"ctrl.model.pinned"
change=
"ctrl.togglePinned()"
></editor-checkbox>
</div>
</div>
<div
class=
"flex-column"
>
<ul
class=
"app-edit-links"
>
<li>
By
<a
href=
"{{ctrl.model.info.author.url}}"
class=
"external-link"
target=
"_blank"
>
{{ctrl.model.info.author.name}}
</a>
</li>
</div>
<aside
class=
"page-sidebar"
>
<section
class=
"page-sidebar-section"
>
<h4>
Version
</h4>
<span>
1.0.1
</span>
</section>
<section
class=
"page-sidebar-section"
ng-show=
"ctrl.model.type === 'app'"
>
<h5>
Includes
</h4>
<span>
TODO
</span>
</section>
<section
class=
"page-sidebar-section"
>
<h5>
Dependencies
</h4>
<span>
TODO
</span>
</section>
<section
class=
"page-sidebar-section"
>
<h5>
Links
</h4>
<ul
class=
"ui-list"
>
<li
ng-repeat=
"link in ctrl.model.info.links"
>
<a
href=
"{{link.url}}"
class=
"external-link"
target=
"_blank"
>
{{link.name}}
</a>
</li>
</ul>
</section>
</aside>
</div>
</div>
</div>
<!-- <section class="simple-box"> -->
<!-- <h3 class="simple-box-header">Included with app:</h3> -->
<!-- <div class="flex-container"> -->
<!-- <div class="simple-box-body simple-box-column"> -->
<!-- <div class="simple-box-column-header"> -->
<!-- <i class="fa fa-th-large"></i> -->
<!-- Dashboards -->
<!-- </div> -->
<!-- <ul> -->
<!-- <li><em class="small">None</em></li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- <div class="simple-box-body simple-box-column"> -->
<!-- <div class="simple-box-column-header"> -->
<!-- <i class="fa fa-line-chart"></i> -->
<!-- Panels -->
<!-- </div> -->
<!-- <ul> -->
<!-- <li ng-show="!ctrl.includedPanels.length"><em class="small">None</em></li> -->
<!-- <li ng-repeat="panel in ctrl.includedPanels"> -->
<!-- {{panel.name}} -->
<!-- </li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- <div class="simple-box-body simple-box-column"> -->
<!-- <div class="simple-box-column-header"> -->
<!-- <i class="fa fa-database"></i> -->
<!-- Datasources -->
<!-- </div> -->
<!-- <ul> -->
<!-- <li ng-show="!ctrl.includedDatasources.length"><em class="small">None</em></li> -->
<!-- <li ng-repeat="ds in ctrl.includedDatasources"> -->
<!-- {{ds.name}} -->
<!-- </li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- <div class="simple-box-body simple-box-column"> -->
<!-- <div class="simple-box-column-header"> -->
<!-- <i class="fa fa-files-o"></i> -->
<!-- Pages -->
<!-- </div> -->
<!-- <ul> -->
<!-- <li ng-repeat="page in ctrl.model.pages"> -->
<!-- <a href="apps/{{ctrl.appId}}/page/{{page.slug}}" class="external-link">{{page.name}}</a> -->
<!-- </li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- -->
<!-- </div> -->
<!-- </section> -->
<!-- -->
<!-- <section class="simple-box"> -->
<!-- <h3 class="simple-box-header">Dependencies:</h3> -->
<!-- <div class="simple-box-body"> -->
<!-- Grafana 2.6.x -->
<!-- </div> -->
<!-- </section> -->
<!-- -->
<!-- <section class="simple-box"> -->
<!-- <h3 class="simple-box-header">Configuration:</h3> -->
<!-- <div class="simple-box-body"> -->
<!-- <div ng-if="ctrl.model.appId"> -->
<!-- <plugin-component type="app-config-ctrl"></plugin-component> -->
<!-- <div class="clearfix"></div> -->
<!-- <button type="submit" class="btn btn-success" ng-click="ctrl.update()">Save</button> -->
<!-- </div> -->
<!-- </div> -->
<!-- </section> -->
<!-- -->
<!-- <div class="app-edit-description"> -->
<!-- {{ctrl.model.info.description}}<br> -->
<!-- <span style="small"> -->
<!-- Version: {{ctrl.model.info.version}} &nbsp; &nbsp; Updated: {{ctrl.model.info.updated}} -->
<!-- </span> -->
<!-- </div> -->
<!-- -->
<!-- </div> -->
<!-- <div class="flex-column"> -->
<!-- <ul class="app-edit-links"> -->
<!-- <li> -->
<!-- By <a href="{{ctrl.model.info.author.url}}" class="external-link" target="_blank">{{ctrl.model.info.author.name}}</a> -->
<!-- </li> -->
<!-- <li ng-repeat="link in ctrl.model.info.links"> -->
<!-- <a href="{{link.url}}" class="external-link" target="_blank">{{link.name}}</a> -->
<!-- </li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- <section class="simple-box"> -->
<!-- <h3 class="simple-box-header">Included with app:</h3> -->
<!-- <div class="flex-container"> -->
<!-- <div class="simple-box-body simple-box-column"> -->
<!-- <div class="simple-box-column-header"> -->
<!-- <i class="fa fa-th-large"></i> -->
<!-- Dashboards -->
<!-- </div> -->
<!-- <ul> -->
<!-- <li><em class="small">None</em></li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- <div class="simple-box-body simple-box-column"> -->
<!-- <div class="simple-box-column-header"> -->
<!-- <i class="fa fa-line-chart"></i> -->
<!-- Panels -->
<!-- </div> -->
<!-- <ul> -->
<!-- <li ng-show="!ctrl.includedPanels.length"><em class="small">None</em></li> -->
<!-- <li ng-repeat="panel in ctrl.includedPanels"> -->
<!-- {{panel.name}} -->
<!-- </li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- <div class="simple-box-body simple-box-column"> -->
<!-- <div class="simple-box-column-header"> -->
<!-- <i class="fa fa-database"></i> -->
<!-- Datasources -->
<!-- </div> -->
<!-- <ul> -->
<!-- <li ng-show="!ctrl.includedDatasources.length"><em class="small">None</em></li> -->
<!-- <li ng-repeat="ds in ctrl.includedDatasources"> -->
<!-- {{ds.name}} -->
<!-- </li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- <div class="simple-box-body simple-box-column"> -->
<!-- <div class="simple-box-column-header"> -->
<!-- <i class="fa fa-files-o"></i> -->
<!-- Pages -->
<!-- </div> -->
<!-- <ul> -->
<!-- <li ng-repeat="page in ctrl.model.pages"> -->
<!-- <a href="apps/{{ctrl.appId}}/page/{{page.slug}}" class="external-link">{{page.name}}</a> -->
<!-- </li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- -->
<!-- </div> -->
<!-- </section> -->
<!-- -->
<!-- <section class="simple-box"> -->
<!-- <h3 class="simple-box-header">Dependencies:</h3> -->
<!-- <div class="simple-box-body"> -->
<!-- Grafana 2.6.x -->
<!-- </div> -->
<!-- </section> -->
<!-- -->
<!-- <section class="simple-box"> -->
<!-- <h3 class="simple-box-header">Configuration:</h3> -->
<!-- <div class="simple-box-body"> -->
<!-- <div ng-if="ctrl.model.appId"> -->
<!-- <plugin-component type="app-config-ctrl"></plugin-component> -->
<!-- <div class="clearfix"></div> -->
<!-- <button type="submit" class="btn btn-success" ng-click="ctrl.update()">Save</button> -->
<!-- </div> -->
<!-- </div> -->
<!-- </section> -->
<!-- -->
<!-- -->
<!-- </div> -->
public/sass/_grafana.scss
View file @
c148d890
...
...
@@ -26,6 +26,7 @@
@import
"utils/widths"
;
// LAYOUTS
@import
"layout/lists"
;
@import
"layout/page"
;
// COMPONENTS
...
...
@@ -44,7 +45,6 @@
@import
"components/tagsinput"
;
@import
"components/tables_lists"
;
@import
"components/search"
;
@import
"components/dashboard"
;
@import
"components/tightform"
;
@import
"components/gf-form"
;
@import
"components/sidemenu"
;
...
...
@@ -69,6 +69,7 @@
// PAGES
@import
"pages/login"
;
@import
"pages/dashboard"
;
@import
"pages/playlist"
;
@import
"pages/admin"
;
@import
"pages/alerting"
;
...
...
public/sass/_variables.dark.scss
View file @
c148d890
...
...
@@ -52,6 +52,8 @@ $body-bg: rgb(20,20,20);
$page-bg
:
$dark-2
;
$body-color
:
$gray-4
;
$text-color
:
$gray-4
;
$text-color-strong
:
$white
;
$text-color-weak
:
$gray-1
;
// gradients
$brand-gradient
:
linear-gradient
(
to
right
,
rgba
(
255
,
213
,
0
,
0
.7
)
0%
,
rgba
(
255
,
68
,
0
,
0
.7
)
99%
,
rgba
(
255
,
68
,
0
,
0
.7
)
100%
);
...
...
public/sass/_variables.light.scss
View file @
c148d890
...
...
@@ -58,6 +58,8 @@ $body-bg: $white;
$page-bg
:
$white
;
$body-color
:
$gray-1
;
$text-color
:
$gray-1
;
$text-color-strong
:
$white
;
$text-color-weak
:
$gray-1
;
// gradients
$brand-gradient
:
linear-gradient
(
to
right
,
rgba
(
255
,
213
,
0
,
1
.0
)
0%
,
rgba
(
255
,
68
,
0
,
1
.0
)
99%
,
rgba
(
255
,
68
,
0
,
1
.0
)
100%
);
...
...
public/sass/_variables.scss
View file @
c148d890
...
...
@@ -141,6 +141,11 @@ $border-radius-sm: 0.1rem !default;
$caret-width
:
.3em
!
default
;
$caret-width-lg
:
$caret-width
!
default
;
// Page
$page-sidebar-width
:
10rem
;
$page-sidebar-margin
:
5rem
;
// Links
// -------------------------
$link-decoration
:
none
!
default
;
...
...
public/sass/base/_type.scss
View file @
c148d890
...
...
@@ -65,7 +65,7 @@ h1, h2, h3, h4, h5, h6,
color
:
$headings-color
;
}
h1
,
.h1
{
font-size
:
$font-size-h1
;
}
h1
,
.h1
{
font-size
:
$font-size-h1
;
font-style
:
italic
;
}
h2
,
.h2
{
font-size
:
$font-size-h2
;
}
h3
,
.h3
{
font-size
:
$font-size-h3
;
}
h4
,
.h4
{
font-size
:
$font-size-h4
;
}
...
...
public/sass/components/_tabs.scss
View file @
c148d890
...
...
@@ -13,7 +13,7 @@
@include
border-radius
(
3px
);
border
:
1px
solid
$divider-border-color
;
background-color
:
transparent
;
border-bottom
:
1px
solid
$pa
nel
-bg
;
border-bottom
:
1px
solid
$pa
ge
-bg
;
color
:
$link-color
;
}
...
...
public/sass/layout/_lists.scss
0 → 100644
View file @
c148d890
.ui-list
{
margin
:
0
;
padding
:
0
;
list-style
:
none
;
>
li
{
margin-bottom
:
0
.3125rem
;
&
:last-child
{
margin-bottom
:
0
;
}
}
}
public/sass/layout/_page.scss
View file @
c148d890
...
...
@@ -3,21 +3,10 @@
height
:
100%
;
}
.dashboard-container
{
padding
:
$dashboard-padding
;
width
:
100%
;
}
.main-view
{
height
:
100%
;
}
.page-dashboard
{
.main-view
{
background-image
:
none
;
}
}
.page-container
{
background-color
:
$page-bg
;
padding
:
(
$spacer
*
2
)
(
$spacer
*
4
);
...
...
@@ -27,12 +16,29 @@
background-image
:
linear-gradient
(
60deg
,
transparent
70%
,
darken
(
$page-bg
,
4%
)
98%
)
}
.page-header-logo
{
max-width
:
7rem
;
.page-body
{
@include
media-breakpoint-up
(
md
)
{
display
:
flex
;
flex-direction
:
row
;
flex-wrap
:
wrap
;
}
}
.page-content-with-sidebar
{
width
:
calc
(
100%
-
#{
$page-sidebar-width
+
$page-sidebar-margin
}
);
// sidebar width + margin
}
.page-sidebar
{
@include
media-breakpoint-up
(
md
)
{
width
:
$page-sidebar-width
;
margin-left
:
$page-sidebar-margin
;
}
}
.page-header
{
padding
:
$spacer
0
$spacer
/
2
0
;
margin-bottom
:
2rem
;
display
:
flex
;
justify-content
:
flex-end
;
align-items
:
flex-end
;
...
...
@@ -40,13 +46,12 @@
@include
brand-bottom-border
();
h1
{
font-style
:
italic
;
flex-grow
:
1
;
}
button
,
a
{
margin-left
:
$spacer
;
}
margin-bottom
:
2rem
;
}
.page-heading
{
...
...
@@ -75,3 +80,20 @@
}
}
.page-sidebar
{
color
:
$text-color-weak
;
h4
{
font-size
:
$font-size-base
;
font-weight
:
$font-weight-semi-bold
;
color
:
$text-color-strong
;
}
h5
{
font-size
:
$font-size-base
;
color
:
$text-color-weak
;
font-weight
:
$font-weight-semi-bold
;
}
}
.page-sidebar-section
{
margin-bottom
:
$spacer
*
2
;
}
public/sass/
component
s/_dashboard.scss
→
public/sass/
page
s/_dashboard.scss
View file @
c148d890
.dashboard-container
{
padding
:
$dashboard-padding
;
width
:
100%
;
}
.page-dashboard
{
.main-view
{
background-image
:
none
;
}
}
.template-variable
{
color
:
$variable
;
}
...
...
public/sass/pages/_plugins.scss
View file @
c148d890
.plugin-header
{
@include
clearfix
();
padding
:
$spacer
0
$spacer
/
2
0
;
margin-bottom
:
2rem
;
}
.plugin-header-logo
{
float
:
left
;
width
:
7rem
;
img
{
width
:
7rem
;
}
margin-right
:
$spacer
;
}
.plugin-header-info-block
{
padding-top
:
$spacer
;
}
.plugin-header-author
{
}
.plugin-header-stamps-type
{
color
:
$link-color-disabled
;
text-transform
:
uppercase
;
}
// .app-edit-logo-box {
// padding: 1.2rem;
...
...
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