mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
Merge pull request #10504 from bcbroussard/explore-updates
Update Web UI Explore page
This commit is contained in:
commit
7689391c68
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1042,7 +1042,7 @@ app.controller('GroupCtrl', [
|
|||||||
$scope.clearSelector = function(grouping) { $location.path("/dashboard/groups/" + grouping + "/selector/"); };
|
$scope.clearSelector = function(grouping) { $location.path("/dashboard/groups/" + grouping + "/selector/"); };
|
||||||
|
|
||||||
$scope.changeGroupBy = function() {
|
$scope.changeGroupBy = function() {
|
||||||
var grouping = $scope.selectedGroupBy;
|
var grouping = encodeURIComponent($scope.selectedGroupBy);
|
||||||
|
|
||||||
var s = _.clone($location.search());
|
var s = _.clone($location.search());
|
||||||
if ($scope.routeParams.grouping != grouping)
|
if ($scope.routeParams.grouping != grouping)
|
||||||
@ -1067,14 +1067,16 @@ app.controller('GroupCtrl', [
|
|||||||
$scope.groupBy = parts;
|
$scope.groupBy = parts;
|
||||||
$scope.loading = true;
|
$scope.loading = true;
|
||||||
$scope.selector = selector;
|
$scope.selector = selector;
|
||||||
|
$scope.selectorName = decodeURIComponent(selector);
|
||||||
var args = [];
|
var args = [];
|
||||||
var type = "";
|
var type = "";
|
||||||
|
var selectedHost = "";
|
||||||
if (selector && selector.length > 0) {
|
if (selector && selector.length > 0) {
|
||||||
$scope.selectorPieces = selector.split(",");
|
$scope.selectorPieces = selector.split(",");
|
||||||
var labels = [];
|
var labels = [];
|
||||||
var fields = [];
|
var fields = [];
|
||||||
for (var i = 0; i < $scope.selectorPieces.length; i++) {
|
for (var i = 0; i < $scope.selectorPieces.length; i++) {
|
||||||
var piece = $scope.selectorPieces[i];
|
var piece = decodeURIComponent($scope.selectorPieces[i]);
|
||||||
if (piece[0] == '$') {
|
if (piece[0] == '$') {
|
||||||
fields.push(piece.slice(2));
|
fields.push(piece.slice(2));
|
||||||
} else {
|
} else {
|
||||||
@ -1083,13 +1085,21 @@ app.controller('GroupCtrl', [
|
|||||||
if (labelParts.length > 1) {
|
if (labelParts.length > 1) {
|
||||||
type = labelParts[1];
|
type = labelParts[1];
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else if (piece.indexOf("host=") === 0){
|
||||||
|
var labelParts = piece.split("=");
|
||||||
|
if (labelParts.length > 1) {
|
||||||
|
selectedHost = labelParts[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
labels.push(piece);
|
labels.push(piece);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (labels.length > 0) {
|
if (labels.length > 0) {
|
||||||
args.push("labels=" + encodeURI(labels.join(",")));
|
args.push("labelSelector=" + encodeURI(labels.join(",")));
|
||||||
}
|
}
|
||||||
if (fields.length > 0) {
|
if (fields.length > 0) {
|
||||||
args.push("fields=" + encodeURI(fields.join(",")));
|
args.push("fields=" + encodeURI(fields.join(",")));
|
||||||
@ -1098,6 +1108,9 @@ app.controller('GroupCtrl', [
|
|||||||
var query = "?" + args.join("&");
|
var query = "?" + args.join("&");
|
||||||
var list = [];
|
var list = [];
|
||||||
var count = type.length > 0 ? 1 : 3;
|
var count = type.length > 0 ? 1 : 3;
|
||||||
|
|
||||||
|
$scope.selectedGroupByName = decodeURIComponent($routeParams.grouping)
|
||||||
|
|
||||||
var barrier = $scope.createBarrier(count, function() {
|
var barrier = $scope.createBarrier(count, function() {
|
||||||
$scope.groups = $scope.groupData(list, 0);
|
$scope.groups = $scope.groupData(list, 0);
|
||||||
$scope.loading = false;
|
$scope.loading = false;
|
||||||
@ -1109,8 +1122,9 @@ app.controller('GroupCtrl', [
|
|||||||
k8sApi.getPods(query).success(function(data) {
|
k8sApi.getPods(query).success(function(data) {
|
||||||
$scope.addLabel("type", "pod", data.items);
|
$scope.addLabel("type", "pod", data.items);
|
||||||
for (var i = 0; data.items && i < data.items.length; ++i) {
|
for (var i = 0; data.items && i < data.items.length; ++i) {
|
||||||
data.items[i].metadata.labels.host = data.items[i].spec.host;
|
data.items[i].metadata.labels.host = data.items[i].spec.nodeName;
|
||||||
list.push(data.items[i]);
|
if(selectedHost.length == 0 || selectedHost == data.items[i].metadata.labels.host)
|
||||||
|
list.push(data.items[i]);
|
||||||
}
|
}
|
||||||
barrier();
|
barrier();
|
||||||
}).error($scope.handleError);
|
}).error($scope.handleError);
|
||||||
@ -1141,7 +1155,7 @@ app.controller('GroupCtrl', [
|
|||||||
}
|
}
|
||||||
for (var i = 0; i < items.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
if (!items[i].metadata.labels) {
|
if (!items[i].metadata.labels) {
|
||||||
items[i].metadata.labels = [];
|
items[i].metadata.labels = {};
|
||||||
}
|
}
|
||||||
items[i].metadata.labels[key] = value;
|
items[i].metadata.labels[key] = value;
|
||||||
}
|
}
|
||||||
@ -1153,7 +1167,7 @@ app.controller('GroupCtrl', [
|
|||||||
"kind": "grouping"
|
"kind": "grouping"
|
||||||
};
|
};
|
||||||
for (var i = 0; i < items.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
key = items[i].metadata.labels[$scope.groupBy[index]];
|
key = items[i].metadata.labels[decodeURIComponent($scope.groupBy[index])];
|
||||||
if (!key) {
|
if (!key) {
|
||||||
key = "";
|
key = "";
|
||||||
}
|
}
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
<div class="header" layout="row">
|
<div class="header" layout="row">
|
||||||
<div class="">Group by: </div>
|
<div class="">Group by: </div>
|
||||||
|
|
||||||
<md-select placeholder="{{routeParams.grouping}}" class="select-group-by" ng-model="selectedGroupBy" ng-change="changeGroupBy()">
|
<md-select placeholder="{{selectedGroupByName}}" class="select-group-by" ng-model="selectedGroupBy" ng-change="changeGroupBy()">
|
||||||
<md-option ng-value="g.value" ng-repeat="g in groupByOptions">{{g.name}}</md-option>
|
<md-option ng-value="g.value" ng-repeat="g in groupByOptions">{{g.name}}</md-option>
|
||||||
</md-select>
|
</md-select>
|
||||||
|
|
||||||
<div ng-if="selector" layout="row" class="selector-area">
|
<div ng-if="selector" layout="row" class="selector-area">
|
||||||
<div class="filter-label">Filter:</div>
|
<div class="filter-label">Filter:</div>
|
||||||
|
|
||||||
<div class="filter-text">{{selector}}</div>
|
<div class="filter-text">{{selectorName}}</div>
|
||||||
<div class="filter-area" ng-if="selector && selector.length > 0">
|
<div class="filter-area" ng-if="selector && selector.length > 0">
|
||||||
|
|
||||||
<button ng-click="clearSelector(routeParams.grouping)" class="md-button cancel-button">
|
<button ng-click="clearSelector(routeParams.grouping)" class="md-button cancel-button">
|
||||||
@ -27,6 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="group-item" ng-repeat="(groupName,group) in groups.items" ng-include="'components/dashboard/views/partials/groupBox.html'"></div>
|
<div class="group-item" ng-repeat="(groupName,group) in groups.items" ng-include="'components/dashboard/views/partials/groupBox.html'"></div>
|
||||||
</md-content>
|
</md-content>
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="server-overview" layout="column">
|
<div class="server-overview" layout="column">
|
||||||
<!-- subheader -->
|
<!-- subheader -->
|
||||||
<div class="group-heading" layout="row">
|
<div class="group-heading" layout="row">
|
||||||
<div class="label">{{routeParams.grouping | ucfirst}}: <span class="bold">{{ (groupName) || "blank" }}</span></div>
|
<div class="label">{{selectedGroupByName | ucfirst}}: <span class="bold">{{ (groupName) || "blank" }}</span></div>
|
||||||
</div>
|
</div>
|
||||||
<!-- render group data -->
|
<!-- render group data -->
|
||||||
<div ng-include="'components/dashboard/views/partials/groupItem.html'"></div>
|
<div ng-include="'components/dashboard/views/partials/groupItem.html'"></div>
|
||||||
|
@ -24,12 +24,17 @@
|
|||||||
<div ng-switch-default>{{item.metadata.name}}</div>
|
<div ng-switch-default>{{item.metadata.name}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<md-select ng-model="selectedFilter" ng-change="changeFilterBy(selectedFilter)" class="selectFilter">
|
|
||||||
<md-optgroup label="FILTER">
|
<div class="selectFilter">
|
||||||
<md-option ng-value="'{{key}}={{value}}'" ng-repeat="(key, value) in item.metadata.labels">{{key}}: {{value}}</md-option>
|
<md-select ng-model="selectedFilter" ng-change="changeFilterBy(selectedFilter)">
|
||||||
</md-option-group>
|
<md-optgroup label="FILTER">
|
||||||
</md-optgroup>
|
<md-option ng-value="'{{key | uriComponentEncode}}={{value | uriComponentEncode}}'" ng-repeat="(key, value) in item.metadata.labels">{{key}}: {{value}}</md-option>
|
||||||
</md-select>
|
</md-option-group>
|
||||||
|
</md-optgroup>
|
||||||
|
</md-select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- This is the official button design, but requires a custom dialog. Fix up after the demo. -->
|
<!-- This is the official button design, but requires a custom dialog. Fix up after the demo. -->
|
||||||
<!-- <md-button ng-click="" class="filter-button" style="padding:0">
|
<!-- <md-button ng-click="" class="filter-button" style="padding:0">
|
||||||
<md-icon md-svg-src="components/dashboard/img/icons/ic_arrow_drop_down_18px.svg" class="filter-icon" aria-label="" alt="Filter"></md-icon>
|
<md-icon md-svg-src="components/dashboard/img/icons/ic_arrow_drop_down_18px.svg" class="filter-icon" aria-label="" alt="Filter"></md-icon>
|
||||||
|
@ -38,7 +38,7 @@ app.controller('GroupCtrl', [
|
|||||||
$scope.clearSelector = function(grouping) { $location.path("/dashboard/groups/" + grouping + "/selector/"); };
|
$scope.clearSelector = function(grouping) { $location.path("/dashboard/groups/" + grouping + "/selector/"); };
|
||||||
|
|
||||||
$scope.changeGroupBy = function() {
|
$scope.changeGroupBy = function() {
|
||||||
var grouping = $scope.selectedGroupBy;
|
var grouping = encodeURIComponent($scope.selectedGroupBy);
|
||||||
|
|
||||||
var s = _.clone($location.search());
|
var s = _.clone($location.search());
|
||||||
if ($scope.routeParams.grouping != grouping)
|
if ($scope.routeParams.grouping != grouping)
|
||||||
@ -63,14 +63,16 @@ app.controller('GroupCtrl', [
|
|||||||
$scope.groupBy = parts;
|
$scope.groupBy = parts;
|
||||||
$scope.loading = true;
|
$scope.loading = true;
|
||||||
$scope.selector = selector;
|
$scope.selector = selector;
|
||||||
|
$scope.selectorName = decodeURIComponent(selector);
|
||||||
var args = [];
|
var args = [];
|
||||||
var type = "";
|
var type = "";
|
||||||
|
var selectedHost = "";
|
||||||
if (selector && selector.length > 0) {
|
if (selector && selector.length > 0) {
|
||||||
$scope.selectorPieces = selector.split(",");
|
$scope.selectorPieces = selector.split(",");
|
||||||
var labels = [];
|
var labels = [];
|
||||||
var fields = [];
|
var fields = [];
|
||||||
for (var i = 0; i < $scope.selectorPieces.length; i++) {
|
for (var i = 0; i < $scope.selectorPieces.length; i++) {
|
||||||
var piece = $scope.selectorPieces[i];
|
var piece = decodeURIComponent($scope.selectorPieces[i]);
|
||||||
if (piece[0] == '$') {
|
if (piece[0] == '$') {
|
||||||
fields.push(piece.slice(2));
|
fields.push(piece.slice(2));
|
||||||
} else {
|
} else {
|
||||||
@ -79,13 +81,21 @@ app.controller('GroupCtrl', [
|
|||||||
if (labelParts.length > 1) {
|
if (labelParts.length > 1) {
|
||||||
type = labelParts[1];
|
type = labelParts[1];
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else if (piece.indexOf("host=") === 0){
|
||||||
|
var labelParts = piece.split("=");
|
||||||
|
if (labelParts.length > 1) {
|
||||||
|
selectedHost = labelParts[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
labels.push(piece);
|
labels.push(piece);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (labels.length > 0) {
|
if (labels.length > 0) {
|
||||||
args.push("labels=" + encodeURI(labels.join(",")));
|
args.push("labelSelector=" + encodeURI(labels.join(",")));
|
||||||
}
|
}
|
||||||
if (fields.length > 0) {
|
if (fields.length > 0) {
|
||||||
args.push("fields=" + encodeURI(fields.join(",")));
|
args.push("fields=" + encodeURI(fields.join(",")));
|
||||||
@ -94,6 +104,9 @@ app.controller('GroupCtrl', [
|
|||||||
var query = "?" + args.join("&");
|
var query = "?" + args.join("&");
|
||||||
var list = [];
|
var list = [];
|
||||||
var count = type.length > 0 ? 1 : 3;
|
var count = type.length > 0 ? 1 : 3;
|
||||||
|
|
||||||
|
$scope.selectedGroupByName = decodeURIComponent($routeParams.grouping)
|
||||||
|
|
||||||
var barrier = $scope.createBarrier(count, function() {
|
var barrier = $scope.createBarrier(count, function() {
|
||||||
$scope.groups = $scope.groupData(list, 0);
|
$scope.groups = $scope.groupData(list, 0);
|
||||||
$scope.loading = false;
|
$scope.loading = false;
|
||||||
@ -105,8 +118,9 @@ app.controller('GroupCtrl', [
|
|||||||
k8sApi.getPods(query).success(function(data) {
|
k8sApi.getPods(query).success(function(data) {
|
||||||
$scope.addLabel("type", "pod", data.items);
|
$scope.addLabel("type", "pod", data.items);
|
||||||
for (var i = 0; data.items && i < data.items.length; ++i) {
|
for (var i = 0; data.items && i < data.items.length; ++i) {
|
||||||
data.items[i].metadata.labels.host = data.items[i].spec.host;
|
data.items[i].metadata.labels.host = data.items[i].spec.nodeName;
|
||||||
list.push(data.items[i]);
|
if(selectedHost.length == 0 || selectedHost == data.items[i].metadata.labels.host)
|
||||||
|
list.push(data.items[i]);
|
||||||
}
|
}
|
||||||
barrier();
|
barrier();
|
||||||
}).error($scope.handleError);
|
}).error($scope.handleError);
|
||||||
@ -137,7 +151,7 @@ app.controller('GroupCtrl', [
|
|||||||
}
|
}
|
||||||
for (var i = 0; i < items.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
if (!items[i].metadata.labels) {
|
if (!items[i].metadata.labels) {
|
||||||
items[i].metadata.labels = [];
|
items[i].metadata.labels = {};
|
||||||
}
|
}
|
||||||
items[i].metadata.labels[key] = value;
|
items[i].metadata.labels[key] = value;
|
||||||
}
|
}
|
||||||
@ -149,7 +163,7 @@ app.controller('GroupCtrl', [
|
|||||||
"kind": "grouping"
|
"kind": "grouping"
|
||||||
};
|
};
|
||||||
for (var i = 0; i < items.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
key = items[i].metadata.labels[$scope.groupBy[index]];
|
key = items[i].metadata.labels[decodeURIComponent($scope.groupBy[index])];
|
||||||
if (!key) {
|
if (!key) {
|
||||||
key = "";
|
key = "";
|
||||||
}
|
}
|
||||||
|
@ -104,7 +104,7 @@
|
|||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
}
|
}
|
||||||
.selectFilter {
|
.selectFilter {
|
||||||
padding-top: 10px;
|
padding-top: 7px;
|
||||||
margin-right: 30px;
|
margin-right: 30px;
|
||||||
|
|
||||||
.md-select-label {
|
.md-select-label {
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
<div class="header" layout="row">
|
<div class="header" layout="row">
|
||||||
<div class="">Group by: </div>
|
<div class="">Group by: </div>
|
||||||
|
|
||||||
<md-select placeholder="{{routeParams.grouping}}" class="select-group-by" ng-model="selectedGroupBy" ng-change="changeGroupBy()">
|
<md-select placeholder="{{selectedGroupByName}}" class="select-group-by" ng-model="selectedGroupBy" ng-change="changeGroupBy()">
|
||||||
<md-option ng-value="g.value" ng-repeat="g in groupByOptions">{{g.name}}</md-option>
|
<md-option ng-value="g.value" ng-repeat="g in groupByOptions">{{g.name}}</md-option>
|
||||||
</md-select>
|
</md-select>
|
||||||
|
|
||||||
<div ng-if="selector" layout="row" class="selector-area">
|
<div ng-if="selector" layout="row" class="selector-area">
|
||||||
<div class="filter-label">Filter:</div>
|
<div class="filter-label">Filter:</div>
|
||||||
|
|
||||||
<div class="filter-text">{{selector}}</div>
|
<div class="filter-text">{{selectorName}}</div>
|
||||||
<div class="filter-area" ng-if="selector && selector.length > 0">
|
<div class="filter-area" ng-if="selector && selector.length > 0">
|
||||||
|
|
||||||
<button ng-click="clearSelector(routeParams.grouping)" class="md-button cancel-button">
|
<button ng-click="clearSelector(routeParams.grouping)" class="md-button cancel-button">
|
||||||
@ -27,6 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="group-item" ng-repeat="(groupName,group) in groups.items" ng-include="'components/dashboard/views/partials/groupBox.html'"></div>
|
<div class="group-item" ng-repeat="(groupName,group) in groups.items" ng-include="'components/dashboard/views/partials/groupBox.html'"></div>
|
||||||
</md-content>
|
</md-content>
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="server-overview" layout="column">
|
<div class="server-overview" layout="column">
|
||||||
<!-- subheader -->
|
<!-- subheader -->
|
||||||
<div class="group-heading" layout="row">
|
<div class="group-heading" layout="row">
|
||||||
<div class="label">{{routeParams.grouping | ucfirst}}: <span class="bold">{{ (groupName) || "blank" }}</span></div>
|
<div class="label">{{selectedGroupByName | ucfirst}}: <span class="bold">{{ (groupName) || "blank" }}</span></div>
|
||||||
</div>
|
</div>
|
||||||
<!-- render group data -->
|
<!-- render group data -->
|
||||||
<div ng-include="'components/dashboard/views/partials/groupItem.html'"></div>
|
<div ng-include="'components/dashboard/views/partials/groupItem.html'"></div>
|
||||||
|
@ -24,12 +24,17 @@
|
|||||||
<div ng-switch-default>{{item.metadata.name}}</div>
|
<div ng-switch-default>{{item.metadata.name}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<md-select ng-model="selectedFilter" ng-change="changeFilterBy(selectedFilter)" class="selectFilter">
|
|
||||||
<md-optgroup label="FILTER">
|
<div class="selectFilter">
|
||||||
<md-option ng-value="'{{key}}={{value}}'" ng-repeat="(key, value) in item.metadata.labels">{{key}}: {{value}}</md-option>
|
<md-select ng-model="selectedFilter" ng-change="changeFilterBy(selectedFilter)">
|
||||||
</md-option-group>
|
<md-optgroup label="FILTER">
|
||||||
</md-optgroup>
|
<md-option ng-value="'{{key | uriComponentEncode}}={{value | uriComponentEncode}}'" ng-repeat="(key, value) in item.metadata.labels">{{key}}: {{value}}</md-option>
|
||||||
</md-select>
|
</md-option-group>
|
||||||
|
</md-optgroup>
|
||||||
|
</md-select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- This is the official button design, but requires a custom dialog. Fix up after the demo. -->
|
<!-- This is the official button design, but requires a custom dialog. Fix up after the demo. -->
|
||||||
<!-- <md-button ng-click="" class="filter-button" style="padding:0">
|
<!-- <md-button ng-click="" class="filter-button" style="padding:0">
|
||||||
<md-icon md-svg-src="components/dashboard/img/icons/ic_arrow_drop_down_18px.svg" class="filter-icon" aria-label="" alt="Filter"></md-icon>
|
<md-icon md-svg-src="components/dashboard/img/icons/ic_arrow_drop_down_18px.svg" class="filter-icon" aria-label="" alt="Filter"></md-icon>
|
||||||
|
Loading…
Reference in New Issue
Block a user