Ver Fonte

Restore Page Footer after migration to new scrollbar #9652

Marcus Efraimsson há 8 anos atrás
pai
commit
6c5748203d

+ 28 - 29
public/app/features/admin/partials/configuration_home.html

@@ -1,33 +1,32 @@
-<div class="scroll-canvas" grafana-scrollbar>
-	<navbar model="ctrl.navModel"></navbar>
-	<div class="page-container">
-		<div class="page-header">
-			<page-h1 model="ctrl.navModel"></page-h1>
-		</div>
+<navbar model="ctrl.navModel"></navbar>
+<div class="page-container">
+	<div class="page-header">
+		<page-h1 model="ctrl.navModel"></page-h1>
+	</div>
 
-		<section class="card-section card-list-layout-grid">
-			<ol class="card-list" >
-				<li class="card-item-wrapper" ng-repeat="navItem in ctrl.navModel.node.children">
-					<a class="card-item" ng-href="{{::navItem.url}}">
-						<div class="card-item-header">
-							<div class="card-item-type">
-							</div>
+	<section class="card-section card-list-layout-grid">
+		<ol class="card-list">
+			<li class="card-item-wrapper" ng-repeat="navItem in ctrl.navModel.node.children">
+				<a class="card-item" ng-href="{{::navItem.url}}">
+					<div class="card-item-header">
+						<div class="card-item-type">
 						</div>
-						<div class="card-item-body">
-							<figure class="card-item-figure">
-								<i class="{{navItem.icon}}"></i>
-							</figure>
-							<div class="card-item-details">
-								<div class="card-item-name">
-									{{navItem.text}}
-								</div>
-								<div class="card-item-sub-name">
-									{{navItem.description}}
-								</div>
+					</div>
+					<div class="card-item-body">
+						<figure class="card-item-figure">
+							<i class="{{navItem.icon}}"></i>
+						</figure>
+						<div class="card-item-details">
+							<div class="card-item-name">
+								{{navItem.text}}
+							</div>
+							<div class="card-item-sub-name">
+								{{navItem.description}}
 							</div>
 						</div>
-					</a>
-				</li>
-			</ol>
-		</section>
-	</div>
+					</div>
+				</a>
+			</li>
+		</ol>
+	</section>
+</div>

+ 118 - 146
public/app/features/dashboard/partials/dashboardList.html

@@ -1,163 +1,135 @@
-<div class="scroll-canvas" grafana-scrollbar>
-  <navbar model="ctrl.navModel"></navbar>
-  <div class="page-container" style="height: 95%">
-    <div class="page-header">
-      <h1>Dashboards</h1>
+<navbar model="ctrl.navModel"></navbar>
+<div class="page-container" style="height: 95%">
+  <div class="page-header">
+    <h1>Dashboards</h1>
 
-      <a class="btn btn-inverse" href="/dashboard/new">
-        <i class="gicon gicon-dashboard-new"></i>
-        Dashboard
-      </a>
-      <a class="btn btn-inverse" href="/dashboard/new/?editview=new-folder">
-        <i class="gicon gicon-folder-new"></i>
-        Folder
-      </a>
-    </div>
-    <div class="gf-form-group">
-      <div class="gf-form width-15">
-        <span style="position: relative;">
-          <input type="text" class="gf-form-input" placeholder="Find Dashboard by name" tabindex="1" give-focus="true"
-            ng-model="ctrl.query.query" ng-model-options="{ debounce: 500 }" spellcheck='false' ng-change="ctrl.onQueryChange()" />
-        </span>
-      </div>
-    </div>
-
-    <div class="gf-form" ng-if="ctrl.query.tag.length">
-      Filters:
-      <span ng-repeat="tagName in ctrl.query.tag">
-        <a ng-click="ctrl.removeTag(tagName, $event)" tag-color-from-name="tagName" class="label label-tag">
-          <i class="fa fa-remove"></i>
-          {{tagName}}
-        </a>
+    <a class="btn btn-inverse" href="/dashboard/new">
+      <i class="gicon gicon-dashboard-new"></i>
+      Dashboard
+    </a>
+    <a class="btn btn-inverse" href="/dashboard/new/?editview=new-folder">
+      <i class="gicon gicon-folder-new"></i>
+      Folder
+    </a>
+  </div>
+  <div class="gf-form-group">
+    <div class="gf-form width-15">
+      <span style="position: relative;">
+        <input type="text" class="gf-form-input" placeholder="Find Dashboard by name" tabindex="1" give-focus="true"
+          ng-model="ctrl.query.query" ng-model-options="{ debounce: 500 }" spellcheck='false' ng-change="ctrl.onQueryChange()" />
       </span>
     </div>
+  </div>
 
-    <div class="gf-form">
-        <div class="gf-form-button-row"
-          ng-show="ctrl.hasFilters">
-          <button
-            type="button"
-            class="btn gf-form-button btn-inverse btn-small"
-            ng-click="ctrl.clearFilters()">
-            <i class="fa fa-close"></i> Clear current search query and filters
-        </button>
-        </div>
+  <div class="gf-form" ng-if="ctrl.query.tag.length">
+    Filters:
+    <span ng-repeat="tagName in ctrl.query.tag">
+      <a ng-click="ctrl.removeTag(tagName, $event)" tag-color-from-name="tagName" class="label label-tag">
+        <i class="fa fa-remove"></i>
+        {{tagName}}
+      </a>
+    </span>
+  </div>
+
+  <div class="gf-form">
+      <div class="gf-form-button-row"
+        ng-show="ctrl.hasFilters">
+        <button
+          type="button"
+          class="btn gf-form-button btn-inverse btn-small"
+          ng-click="ctrl.clearFilters()">
+          <i class="fa fa-close"></i> Clear current search query and filters
+      </button>
+      </div>
+  </div>
+
+  <div class="gf-form-group">
+    <div class="gf-form-button-row">
+      <button	type="button"
+          class="btn gf-form-button btn-secondary"
+          ng-disabled="!ctrl.canMove"
+          ng-click="ctrl.moveTo()"
+          bs-tooltip="ctrl.canMove ? '' : 'Select a dashboard to move (cannot move folders)'" data-placement="bottom">
+        <i class="fa fa-exchange"></i>&nbsp;&nbsp;Move to...
+      </button>
+      <button  type="button"
+          class="btn gf-form-button btn-inverse"
+          ng-click="ctrl.delete()"
+          ng-disabled="!ctrl.canDelete">
+          <i class="fa fa-trash"></i>&nbsp;&nbsp;Delete
+      </button>
     </div>
+  </div>
 
-    <div class="gf-form-group">
-      <div class="gf-form-button-row">
-        <button	type="button"
-            class="btn gf-form-button btn-secondary"
-            ng-disabled="!ctrl.canMove"
-            ng-click="ctrl.moveTo()"
-            bs-tooltip="ctrl.canMove ? '' : 'Select a dashboard to move (cannot move folders)'" data-placement="bottom">
-          <i class="fa fa-exchange"></i>&nbsp;&nbsp;Move to...
-        </button>
-        <button  type="button"
-            class="btn gf-form-button btn-inverse"
-            ng-click="ctrl.delete()"
-            ng-disabled="!ctrl.canDelete">
-            <i class="fa fa-trash"></i>&nbsp;&nbsp;Delete
-        </button>
+  <div class="dashboard-list">
+    <div class="search-results-filter-row">
+      <gf-form-switch
+        on-change="ctrl.onSelectAllChanged()"
+        checked="ctrl.selectAllChecked"
+      />
+      <div class="search-results-filter-row__filters">
+        <select
+          class="search-results-filter-row__filters-item gf-form-input"
+          ng-model="ctrl.selectedStarredFilter"
+          ng-options="t.text disable when t.disabled for t in ctrl.starredFilterOptions"
+          ng-change="ctrl.onStarredFilterChange()"
+        />
+        <select
+          class="search-results-filter-row__filters-item gf-form-input"
+          ng-model="ctrl.selectedTagFilter"
+          ng-options="t.term disable when t.disabled for t in ctrl.tagFilterOptions"
+          ng-change="ctrl.onTagFilterChange()"
+        />
       </div>
     </div>
+    <div class="search-results-container" ng-show="ctrl.sections.length > 0" grafana-scrollbar>
+      <div ng-repeat="section in ctrl.sections" class="search-section">
 
-      <div class="dashboard-list">
-        <div class="search-results-filter-row">
-            <gf-form-switch
-              on-change="ctrl.onSelectAllChanged()"
-              checked="ctrl.selectAllChecked"
-            />
-          <div class="search-results-filter-row__filters">
-            <select
-              class="search-results-filter-row__filters-item gf-form-input"
-              ng-model="ctrl.selectedStarredFilter"
-              ng-options="t.text disable when t.disabled for t in ctrl.starredFilterOptions"
-              ng-change="ctrl.onStarredFilterChange()"
-            />
-            <select
-              class="search-results-filter-row__filters-item gf-form-input"
-              ng-model="ctrl.selectedTagFilter"
-              ng-options="t.term disable when t.disabled for t in ctrl.tagFilterOptions"
-              ng-change="ctrl.onTagFilterChange()"
-            />
-          </div>
+        <div class="search-section__header__with-checkbox" ng-hide="section.hideHeader">
+          <gf-form-switch
+            on-change="ctrl.selectionChanged()"
+            checked="section.checked">
+          </gf-form-switch>
+          <a  class="search-section__header pointer" ng-click="ctrl.toggleFolder(section)" ng-hide="section.hideHeader">
+            <i class="search-section__header__icon" ng-class="section.icon"></i>
+            <span class="search-section__header__text">{{::section.title}}</span>
+            <i class="fa fa-minus search-section__header__toggle" ng-show="section.expanded"></i>
+            <i class="fa fa-plus search-section__header__toggle" ng-hide="section.expanded"></i>
+          </a>
         </div>
-        <div class="search-results-container" ng-show="ctrl.sections.length > 0" grafana-scrollbar>
-          <div ng-repeat="section in ctrl.sections" class="search-section">
 
-            <div class="search-section__header__with-checkbox" ng-hide="section.hideHeader">
-              <gf-form-switch
-                on-change="ctrl.selectionChanged()"
-                checked="section.checked">
-              </gf-form-switch>
-              <a  class="search-section__header pointer" ng-click="ctrl.toggleFolder(section)" ng-hide="section.hideHeader">
-                <i class="search-section__header__icon" ng-class="section.icon"></i>
-                <span class="search-section__header__text">{{::section.title}}</span>
-                <i class="fa fa-minus search-section__header__toggle" ng-show="section.expanded"></i>
-                <i class="fa fa-plus search-section__header__toggle" ng-hide="section.expanded"></i>
-              </a>
-            </div>
-
-            <div ng-if="section.expanded">
-              <div ng-repeat="item in section.items" class="search-item__with-checkbox" ng-class="{'selected': item.selected}">
-                <gf-form-switch
-                  on-change="ctrl.selectionChanged()"
-                  checked="item.checked" />
-                <a ng-href="{{::item.url}}" class="search-item">
-                  <span class="search-item__icon">
-                    <i class="fa fa-th-large"></i>
-                  </span>
-                  <span class="search-item__body">
-                    <div class="search-item__body-title">{{::item.title}}</div>
-                    <div class="search-item__body-sub-title" ng-show="item.folderTitle && section.hideHeader">
-                      <i class="fa fa-folder-o"></i>
-                      {{::item.folderTitle}}
-                    </div>
-                  </span>
-                  <span class="search-item__tags">
-                    <span ng-click="ctrl.filterByTag(tag, $event)" ng-repeat="tag in item.tags" tag-color-from-name="tag"  class="label label-tag">
-                      {{tag}}
-                    </span>
-                  </span>
-                  <span class="search-item__actions">
-                    <i class="fa" ng-class="{'fa-star': item.isStarred, 'fa-star-o': !item.isStarred}"></i>
-                  </span>
-                </a>
-              </div>
-            </div>
-          </div>
-
-            <!-- <div bindonce class="search-section" ng-repeat="dashboard in ctrl.dashboards">
-                <gf-form-switch
-                    switch-class="gf-form-switch--table-cell"
-                    on-change="ctrl.selectionChanged()"
-                    checked="dashboard.checked">
-                </gf-form-switch>
-                <a class="search-item pointer "
-                  bo-href-i="{{dashboard.url}}">
-                  <span class="search-item__icon">
-                    <i class="fa fa-th-large"></i>
-                  </span>
-                  <span class="search-result-tags">
-                    <span ng-click="ctrl.filterByTag(tag, $event)" bindonce ng-repeat="tag in dashboard.tags" tag-color-from-name="tag"  class="label label-tag">
-                      {{tag}}
-                    </span>
-                    <i class="fa" bo-class="{'fa-star': dashboard.isStarred, 'fa-star-o': !dashboard.isStarred}"></i>
-                  </span>
-                  <span class="search-result-link">
-                    <i class="fa search-result-icon"></i>
-                    <span bo-text="dashboard.title" />
-                  </span>
-                </a>
-            </div> -->
+        <div ng-if="section.expanded">
+          <div ng-repeat="item in section.items" class="search-item__with-checkbox" ng-class="{'selected': item.selected}">
+            <gf-form-switch
+              on-change="ctrl.selectionChanged()"
+              checked="item.checked" />
+            <a ng-href="{{::item.url}}" class="search-item">
+              <span class="search-item__icon">
+                <i class="fa fa-th-large"></i>
+              </span>
+              <span class="search-item__body">
+                <div class="search-item__body-title">{{::item.title}}</div>
+                <div class="search-item__body-sub-title" ng-show="item.folderTitle && section.hideHeader">
+                  <i class="fa fa-folder-o"></i>
+                  {{::item.folderTitle}}
+                </div>
+              </span>
+              <span class="search-item__tags">
+                <span ng-click="ctrl.filterByTag(tag, $event)" ng-repeat="tag in item.tags" tag-color-from-name="tag"  class="label label-tag">
+                  {{tag}}
+                </span>
+              </span>
+              <span class="search-item__actions">
+                <i class="fa" ng-class="{'fa-star': item.isStarred, 'fa-star-o': !item.isStarred}"></i>
+              </span>
+            </a>
           </div>
         </div>
       </div>
-
-    <em class="muted" ng-hide="ctrl.sections.length > 0">
-      No Dashboards or Folders found.
-    </em>
+    </div>
   </div>
 </div>
 
+<em class="muted" ng-hide="ctrl.sections.length > 0">
+  No Dashboards or Folders found.
+</em>

+ 71 - 73
public/app/features/plugins/partials/ds_edit.html

@@ -1,91 +1,89 @@
-<div class="scroll-canvas" grafana-scrollbar>
-	<navbar model="ctrl.navModel"></navbar>
-	<div class="page-container">
-		<div class="page-header">
-			<page-h1 model="ctrl.navModel"></page-h1>
+<navbar model="ctrl.navModel"></navbar>
+<div class="page-container">
+	<div class="page-header">
+		<page-h1 model="ctrl.navModel"></page-h1>
 
-			<div ng-if="ctrl.current.readOnly" class="grafana-info-box span8">Disclaimer. This datasource was added by config and cannot be modified using the UI. Please contact your server admin to update this datasource.</div>
+		<div ng-if="ctrl.current.readOnly" class="grafana-info-box span8">Disclaimer. This datasource was added by config and cannot be modified using the UI. Please contact your server admin to update this datasource.</div>
 
-			<div class="page-header-tabs" ng-show="ctrl.hasDashboards">
-				<ul class="gf-tabs">
-					<li class="gf-tabs-item">
-						<a class="gf-tabs-link" ng-click="ctrl.tabIndex = 0" ng-class="{active: ctrl.tabIndex === 0}">
-							Config
-						</a>
-					</li>
-					<li class="gf-tabs-item">
-						<a class="gf-tabs-link" ng-click="ctrl.tabIndex = 1" ng-class="{active: ctrl.tabIndex === 1}">
-							Dashboards
-						</a>
-					</li>
-				</ul>
-			</div>
+		<div class="page-header-tabs" ng-show="ctrl.hasDashboards">
+			<ul class="gf-tabs">
+				<li class="gf-tabs-item">
+					<a class="gf-tabs-link" ng-click="ctrl.tabIndex = 0" ng-class="{active: ctrl.tabIndex === 0}">
+						Config
+					</a>
+				</li>
+				<li class="gf-tabs-item">
+					<a class="gf-tabs-link" ng-click="ctrl.tabIndex = 1" ng-class="{active: ctrl.tabIndex === 1}">
+						Dashboards
+					</a>
+				</li>
+			</ul>
 		</div>
+	</div>
 
-		<div ng-if="ctrl.tabIndex === 0" class="tab-content">
+	<div ng-if="ctrl.tabIndex === 0" class="tab-content">
 
-			<form name="ctrl.editForm" ng-if="ctrl.current">
-				<div class="gf-form-group">
-					<div class="gf-form-inline">
-						<div class="gf-form max-width-30">
-							<span class="gf-form-label width-7">Name</span>
-							<input class="gf-form-input max-width-23" type="text" ng-model="ctrl.current.name" placeholder="name" required>
-							<info-popover offset="0px -135px" mode="right-absolute">
-								The name is used when you select the data source in panels.
-								The <em>Default</em> data source is preselected in new
-								panels.
-							</info-popover>
-						</div>
-						<gf-form-switch class="gf-form" label="Default" checked="ctrl.current.isDefault" switch-class="max-width-6"></gf-form-switch>
+		<form name="ctrl.editForm" ng-if="ctrl.current">
+			<div class="gf-form-group">
+				<div class="gf-form-inline">
+					<div class="gf-form max-width-30">
+						<span class="gf-form-label width-7">Name</span>
+						<input class="gf-form-input max-width-23" type="text" ng-model="ctrl.current.name" placeholder="name" required>
+						<info-popover offset="0px -135px" mode="right-absolute">
+							The name is used when you select the data source in panels.
+							The <em>Default</em> data source is preselected in new
+							panels.
+						</info-popover>
 					</div>
+					<gf-form-switch class="gf-form" label="Default" checked="ctrl.current.isDefault" switch-class="max-width-6"></gf-form-switch>
+				</div>
 
-					<div class="gf-form">
-						<span class="gf-form-label width-7">Type</span>
-						<div class="gf-form-select-wrapper max-width-23">
-							<select class="gf-form-input" ng-model="ctrl.current.type" ng-options="v.id as v.name for v in ctrl.types" ng-change="ctrl.userChangedType()"></select>
-						</div>
+				<div class="gf-form">
+					<span class="gf-form-label width-7">Type</span>
+					<div class="gf-form-select-wrapper max-width-23">
+						<select class="gf-form-input" ng-model="ctrl.current.type" ng-options="v.id as v.name for v in ctrl.types" ng-change="ctrl.userChangedType()"></select>
 					</div>
 				</div>
+			</div>
 
-				<div class="alert alert-info gf-form-group" ng-if="ctrl.datasourceMeta.state === 'alpha'">
-					This plugin is marked as being in alpha state, which means it is in early development phase and
-					updates will include breaking changes.
-				</div>
+			<div class="alert alert-info gf-form-group" ng-if="ctrl.datasourceMeta.state === 'alpha'">
+				This plugin is marked as being in alpha state, which means it is in early development phase and
+				updates will include breaking changes.
+			</div>
 
-				<rebuild-on-change property="ctrl.datasourceMeta.id">
-					<plugin-component type="datasource-config-ctrl">
-					</plugin-component>
-				</rebuild-on-change>
+			<rebuild-on-change property="ctrl.datasourceMeta.id">
+				<plugin-component type="datasource-config-ctrl">
+				</plugin-component>
+			</rebuild-on-change>
 
-				<div ng-if="ctrl.testing" class="gf-form-group section">
-					<h5 ng-show="!ctrl.testing.done">Testing.... <i class="fa fa-spiner fa-spin"></i></h5>
-					<div class="alert-{{ctrl.testing.status}} alert" ng-show="ctrl.testing.done">
-						<div class="alert-icon">
-							<i class="fa fa-exclamation-triangle" ng-show="ctrl.testing.status === 'error'"></i>
-							<i class="fa fa-check" ng-show="ctrl.testing.status !== 'error'"></i>
-						</div>
-						<div class="alert-body">
-							<div class="alert-title">{{ctrl.testing.message}}</div>
-						</div>
+			<div ng-if="ctrl.testing" class="gf-form-group section">
+				<h5 ng-show="!ctrl.testing.done">Testing.... <i class="fa fa-spiner fa-spin"></i></h5>
+				<div class="alert-{{ctrl.testing.status}} alert" ng-show="ctrl.testing.done">
+					<div class="alert-icon">
+						<i class="fa fa-exclamation-triangle" ng-show="ctrl.testing.status === 'error'"></i>
+						<i class="fa fa-check" ng-show="ctrl.testing.status !== 'error'"></i>
+					</div>
+					<div class="alert-body">
+						<div class="alert-title">{{ctrl.testing.message}}</div>
 					</div>
 				</div>
+			</div>
 
-				<div class="gf-form-button-row">
-					<button type="submit" class="btn btn-success" ng-disabled="ctrl.current.readOnly"  ng-click="ctrl.saveChanges()">Save</button>
-					<button type="submit" class="btn btn-danger" ng-disabled="ctrl.current.readOnly"  ng-show="!ctrl.isNew" ng-click="ctrl.delete()">
-						Delete
-					</button>
-					<a class="btn btn-link" href="datasources">Cancel</a>
-				</div>
+			<div class="gf-form-button-row">
+				<button type="submit" class="btn btn-success" ng-disabled="ctrl.current.readOnly"  ng-click="ctrl.saveChanges()">Save</button>
+				<button type="submit" class="btn btn-danger" ng-disabled="ctrl.current.readOnly"  ng-show="!ctrl.isNew" ng-click="ctrl.delete()">
+					Delete
+				</button>
+				<a class="btn btn-link" href="datasources">Cancel</a>
+			</div>
 
-				<br />
-				<br />
-				<br />
+			<br />
+			<br />
+			<br />
 
-			</form>
-    </div>
-    <div ng-if="ctrl.tabIndex === 1" class="tab-content">
-      <dashboard-import-list plugin="ctrl.datasourceMeta" datasource="ctrl.current"></dashboard-import-list>
-    </div>
-  </div>
+		</form>
+	</div>
+	<div ng-if="ctrl.tabIndex === 1" class="tab-content">
+		<dashboard-import-list plugin="ctrl.datasourceMeta" datasource="ctrl.current"></dashboard-import-list>
+	</div>
 </div>

+ 38 - 40
public/app/features/plugins/partials/ds_list.html

@@ -1,48 +1,46 @@
-<div class="scroll-canvas" grafana-scrollbar>
-	<navbar model="ctrl.navModel"></navbar>
-	<div class="page-container">
-		<div class="page-header">
-			<page-h1 model="ctrl.navModel"></page-h1>
+<navbar model="ctrl.navModel"></navbar>
+<div class="page-container">
+	<div class="page-header">
+		<page-h1 model="ctrl.navModel"></page-h1>
 
-			<a class="page-header__cta btn btn-success" href="datasources/new">
-				Add data source
-			</a>
-		</div>
+		<a class="page-header__cta btn btn-success" href="datasources/new">
+			Add data source
+		</a>
+	</div>
 
-		<section class="card-section" layout-mode>
-			<layout-selector></layout-selector>
+	<section class="card-section" layout-mode>
+		<layout-selector></layout-selector>
 
-			<ol class="card-list" >
-				<li class="card-item-wrapper" ng-repeat="ds in ctrl.datasources">
-					<a class="card-item" href="datasources/edit/{{ds.id}}/">
-						<div class="card-item-header">
-							<div class="card-item-type">
-								{{ds.type}}
-							</div>
+		<ol class="card-list">
+			<li class="card-item-wrapper" ng-repeat="ds in ctrl.datasources">
+				<a class="card-item" href="datasources/edit/{{ds.id}}/">
+					<div class="card-item-header">
+						<div class="card-item-type">
+							{{ds.type}}
 						</div>
-						<div class="card-item-body">
-							<figure class="card-item-figure">
-								<img ng-src="{{ds.typeLogoUrl}}">
-							</figure>
-							<div class="card-item-details">
-								<div class="card-item-name">
-									{{ds.name}}
-									<span ng-if="ds.isDefault">
-										<span class="btn btn-secondary btn-mini">default</span>
-									</span>
-								</div>
-								<div class="card-item-sub-name">
-									{{ds.url}}
-								</div>
+					</div>
+					<div class="card-item-body">
+						<figure class="card-item-figure">
+							<img ng-src="{{ds.typeLogoUrl}}">
+						</figure>
+						<div class="card-item-details">
+							<div class="card-item-name">
+								{{ds.name}}
+								<span ng-if="ds.isDefault">
+									<span class="btn btn-secondary btn-mini">default</span>
+								</span>
+							</div>
+							<div class="card-item-sub-name">
+								{{ds.url}}
 							</div>
 						</div>
-					</a>
-				</li>
-			</ol>
-		</section>
+					</div>
+				</a>
+			</li>
+		</ol>
+	</section>
 
-		<div ng-if="ctrl.datasources.length === 0">
-			<em>No data sources defined</em>
-		</div>
+	<div ng-if="ctrl.datasources.length === 0">
+		<em>No data sources defined</em>
 	</div>
-</div>
+</div>

+ 54 - 56
public/app/features/plugins/partials/plugin_list.html

@@ -1,65 +1,63 @@
-<div class="scroll-canvas" grafana-scrollbar>
-	<navbar model="ctrl.navModel"></navbar>
+<navbar model="ctrl.navModel"></navbar>
 
-	<div class="page-container">
-		<div class="page-header">
-			<h1>
-				<i class="icon-gf icon-gf-apps"></i>
-				Plugins <span class="muted small">(currently installed)</span>
-			</h1>
+<div class="page-container">
+	<div class="page-header">
+		<h1>
+			<i class="icon-gf icon-gf-apps"></i>
+			Plugins <span class="muted small">(currently installed)</span>
+		</h1>
 
-			<div class="page-header-tabs">
-				<ul class="gf-tabs">
-					<li class="gf-tabs-item">
-						<a class="gf-tabs-link" href="plugins?type=panel" ng-class="{active: ctrl.tabIndex === 0}">
-							Panels
-						</a>
-					</li>
-					<li class="gf-tabs-item">
-						<a class="gf-tabs-link" href="plugins?type=datasource" ng-class="{active: ctrl.tabIndex === 1}">
-							Data sources
-						</a>
-					</li>
-					<li class="gf-tabs-item">
-						<a class="gf-tabs-link" href="plugins?type=app" ng-class="{active: ctrl.tabIndex === 2}">
-							Apps
-						</a>
-					</li>
-				</ul>
+		<div class="page-header-tabs">
+			<ul class="gf-tabs">
+				<li class="gf-tabs-item">
+					<a class="gf-tabs-link" href="plugins?type=panel" ng-class="{active: ctrl.tabIndex === 0}">
+						Panels
+					</a>
+				</li>
+				<li class="gf-tabs-item">
+					<a class="gf-tabs-link" href="plugins?type=datasource" ng-class="{active: ctrl.tabIndex === 1}">
+						Data sources
+					</a>
+				</li>
+				<li class="gf-tabs-item">
+					<a class="gf-tabs-link" href="plugins?type=app" ng-class="{active: ctrl.tabIndex === 2}">
+						Apps
+					</a>
+				</li>
+			</ul>
 
-				<a class="get-more-plugins-link" href="https://grafana.com/plugins?utm_source=grafana_plugin_list" target="_blank">
-					Find more <img src="public/img/icn-plugins-tiny.svg" />plugins on Grafana.com
-				</a>
-			</div>
+			<a class="get-more-plugins-link" href="https://grafana.com/plugins?utm_source=grafana_plugin_list" target="_blank">
+				Find more <img src="public/img/icn-plugins-tiny.svg" />plugins on Grafana.com
+			</a>
 		</div>
+	</div>
 
-		<section class="card-section" layout-mode>
-			<layout-selector></layout-selector>
+	<section class="card-section" layout-mode>
+		<layout-selector></layout-selector>
 
-			<ol class="card-list" >
-				<li class="card-item-wrapper" ng-repeat="plugin in ctrl.plugins">
-					<a class="card-item" href="plugins/{{plugin.id}}/edit">
-						<div class="card-item-header">
-							<div class="card-item-type">
-								<i class="icon-gf icon-gf-{{plugin.type}}"></i>
-								{{plugin.type}}
-							</div>
-							<div class="card-item-notice" ng-show="plugin.hasUpdate">
-								<span bs-tooltip="plugin.latestVersion">Update available!</span>
-							</div>
+		<ol class="card-list" >
+			<li class="card-item-wrapper" ng-repeat="plugin in ctrl.plugins">
+				<a class="card-item" href="plugins/{{plugin.id}}/edit">
+					<div class="card-item-header">
+						<div class="card-item-type">
+							<i class="icon-gf icon-gf-{{plugin.type}}"></i>
+							{{plugin.type}}
 						</div>
-						<div class="card-item-body">
-							<figure class="card-item-figure">
-								<img ng-src="{{plugin.info.logos.small}}">
-							</figure>
-							<div class="card-item-details">
-								<div class="card-item-name">{{plugin.name}}</div>
-								<div class="card-item-sub-name">By {{plugin.info.author.name}}</div>
-							</div>
+						<div class="card-item-notice" ng-show="plugin.hasUpdate">
+							<span bs-tooltip="plugin.latestVersion">Update available!</span>
 						</div>
-					</a>
-				</li>
-			</ol>
-		</section>
-	</div>
+					</div>
+					<div class="card-item-body">
+						<figure class="card-item-figure">
+							<img ng-src="{{plugin.info.logos.small}}">
+						</figure>
+						<div class="card-item-details">
+							<div class="card-item-name">{{plugin.name}}</div>
+							<div class="card-item-sub-name">By {{plugin.info.author.name}}</div>
+						</div>
+					</div>
+				</a>
+			</li>
+		</ol>
+	</section>
 </div>

+ 1 - 1
public/sass/_variables.dark.scss

@@ -299,7 +299,7 @@ $checkboxImageUrl: '../img/checkbox.png';
 $info-box-background: linear-gradient(100deg, #1a4552, #00374a);
 
 // footer
-$footer-link-color:   $gray-1;
+$footer-link-color:   $gray-2;
 $footer-link-hover:   $gray-4;
 
 // collapse box

+ 39 - 37
public/views/index.template.html

@@ -35,44 +35,46 @@
 				</div>
 			</div>
 
-			<div  class="main-view">
-        <div ng-view></div>
+			<div class="main-view">
+          <div class="scroll-canvas" grafana-scrollbar>
+            <div ng-view></div>
 
-        <!-- <footer class="footer"> -->
-        <!--   <div class="row text&#45;center"> -->
-        <!--     <ul> -->
-        <!--       <li> -->
-        <!--         <a href="http://docs.grafana.org" target="_blank"> -->
-        <!--           <i class="fa fa&#45;file&#45;code&#45;o"></i> -->
-        <!--           Docs -->
-        <!--         </a> -->
-        <!--       </li> -->
-        <!--       <li> -->
-        <!--         <a href="https://grafana.com/services/support" target="_blank"> -->
-        <!--           <i class="fa fa&#45;support"></i> -->
-        <!--           Support Plans -->
-        <!--         </a> -->
-        <!--       </li> -->
-        <!--       <li> -->
-        <!--         <a href="https://community.grafana.com/" target="_blank"> -->
-        <!--           <i class="fa fa&#45;comments&#45;o"></i> -->
-        <!--           Community -->
-        <!--         </a> -->
-        <!--       </li> -->
-        <!--       <li> -->
-        <!--         <a href="https://grafana.com" target="_blank">Grafana</a> -->
-        <!--         <span>v[[.BuildVersion]] (commit: [[.BuildCommit]])</span> -->
-        <!--       </li> -->
-        <!--       [[if .NewGrafanaVersionExists]] -->
-        <!--       <li> -->
-        <!--         <a href="https://grafana.com/get" target="_blank" bs&#45;tooltip="'[[.NewGrafanaVersion]]'"> -->
-        <!--           New version available! -->
-        <!--         </a> -->
-        <!--       </li> -->
-        <!--       [[end]] -->
-        <!--     </ul> -->
-        <!--   </div> -->
-        <!-- </footer> -->
+            <footer class="footer">
+              <div class="row text&#45;center">
+                <ul>
+                  <li>
+                    <a href="http://docs.grafana.org" target="_blank">
+                      <i class="fa fa&#45;file&#45;code&#45;o"></i>
+                      Docs
+                    </a>
+                  </li>
+                  <li>
+                    <a href="https://grafana.com/services/support" target="_blank">
+                      <i class="fa fa&#45;support"></i>
+                      Support Plans
+                    </a>
+                  </li>
+                  <li>
+                    <a href="https://community.grafana.com/" target="_blank">
+                      <i class="fa fa&#45;comments&#45;o"></i>
+                      Community
+                    </a>
+                  </li>
+                  <li>
+                    <a href="https://grafana.com" target="_blank">Grafana</a>
+                    <span>v[[.BuildVersion]] (commit: [[.BuildCommit]])</span>
+                  </li>
+                  [[if .NewGrafanaVersionExists]]
+                  <li>
+                    <a href="https://grafana.com/get" target="_blank" bs&#45;tooltip="'[[.NewGrafanaVersion]]'">
+                      New version available!
+                    </a>
+                  </li>
+                  [[end]]
+                </ul>
+              </div>
+            </footer>
+          </div>
       </div>
     </grafana-app>