Skip to content

Commit

Permalink
Merge "Closes-Bug: #1425421 UI-Need pagination in control node routes"
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed May 20, 2016
2 parents d3f7d5f + 59de77f commit 74c5781
Show file tree
Hide file tree
Showing 7 changed files with 291 additions and 30 deletions.
2 changes: 2 additions & 0 deletions webroot/common/ui/js/controller.labels.js
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,8 @@ define([
"control_node_alarms_grid_view_id";
this.CONTROL_NODE_ALARMS_GRID_SECTION_ID =
"control_node_alarms_grid_section_id";
this.CONTROLNODE_ROUTER_TITLE =
"Search Routes"

//vRouter summary page labels
this.VROUTER_VIEWPATH_PREFIX =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,19 @@ define([
this.UVEModuleIds['SERVICE_MONITOR'],
this.UVEModuleIds['SCHEMA']];
this.defaultIntrospectPort = '8085';
this.controlRouteAddressFamily = [{ id:"enet", text:"enet" },
{ id:"ermvpn", text:"ermvpn" },
{ id:"evpn", text:"evpn" },
{ id:"inet", text:"inet" },
{ id:"inetvpn", text:"inetvpn" },
{ id:"inet6", text:"inet6" },
{ id:"l3vpn", text:"l3vpn" },
{ id:"rtarget", text:"rtarget" }];
this.controlRouteProtocol = [{ id:"XMPP", text:"XMPP" },
{ id:"BGP", text:"BGP" },
{ id:"ServiceChain", text:"ServiceChain" },
{ id:"Static", text:"Static" },
{ id:"Local", text:"Local" }];

};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1748,7 +1748,48 @@ define([
}
gridHeaderTextElem.find('span').text(pageInfoTitle);
}

self.bindPaginationListeners = function(cfg) {
var cfg = ifNull(cfg,{});
var gridSel = cfg['gridSel'];
gridSel.find('i.icon-forward').parent().click(function() {
controlNodePrevNextClick(cfg['obj'], { gridSel: gridSel,
getUrlFn: cfg['getUrlFn'], step: 'forward',
parseFn: cfg['parseFn']});
});
gridSel.find('i.icon-backward').parent().click(function() {
controlNodePrevNextClick(cfg['obj'], { gridSel: gridSel,
getUrlFn: cfg['getUrlFn'], step: 'backward',
parseFn: cfg['parseFn']});
});
}
function controlNodePrevNextClick(obj,cfg) {
var gridSel = $(cfg['gridSel']);
if(gridSel.length == 0) {
return;
}
var newAjaxConfig = "";
var cfg = ifNull(cfg,{});
var parseFn = cfg['parseFn'];
var getUrlFn = ifNull(cfg['getUrlFn'],$.noop);
var gridInst = gridSel.data('contrailGrid');
var urlObj = getUrlFn(cfg.step);
if(urlObj !== undefined){
newAjaxConfig = {
url: urlObj,
type:'Get'
};
if(gridInst != null) {
$.ajax(newAjaxConfig).done(function(response) {
var retData = response;
if(typeof(parseFn) == 'function') {
retData = parseFn(response);
}
if(gridInst._dataView != null)
gridInst._dataView.setData(retData);
});
}
}
}
self.bindGridPrevNextListeners = function(cfg) {
var cfg = ifNull(cfg,{});
var gridSel = cfg['gridSel'];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,9 @@ function getControlNodeRoutes (req, res, appData)
var peerSource = queryData.query['peerSource'];
var addrFamily = queryData.query['addrFamily'];
var protocol = queryData.query['protocol'];
var startRoutingTable = commonUtils.getValueByJsonPath(queryData, 'query;startRoutingTable','');
var startRoutingInstance = commonUtils.getValueByJsonPath(queryData, 'query;startRoutingInstance','');
var startPrefix = commonUtils.getValueByJsonPath(queryData, 'query;startPrefix','');
var dataObjArr = [];

if (null == routingInst) {
Expand All @@ -665,8 +668,8 @@ function getControlNodeRoutes (req, res, appData)
url = '/Snh_ShowRouteReq?routing_table=' + encodeURIComponent(routingTable) +
'&routing_instance=' + encodeURIComponent(routingInst) +
'&prefix=' + encodeURIComponent(prefix) + '&longer_match=&count=' +
count + '&start_routing_table=' +
'&start_routing_instance=&start_prefix=';
count + '&start_routing_table=' + startRoutingTable +
'&start_routing_instance=' + startRoutingInstance + '&start_prefix=' + startPrefix;

var resultJSON = [];
var bgpRtrRestAPI =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ define([
'monitor/infrastructure/controlnode/ui/js/models/ControlNodeRoutesModel'
//Remove all query references once it is moved to core
], function (_, Knockback, ContrailView, ContrailListModel, ControlNodeRoutesModel) {
var routingInstancesDropdownList = [{text:'All',value:'All'}];
var routingInstancesDropdownList = [{text:'All',value:'All'}],
backwardRouteStack = [], forwardRouteStack = [];
var ControlNodeRoutesFormView = ContrailView.extend({
render: function (options) {
var self = this, viewConfig = self.attributes.viewConfig,
Expand All @@ -22,7 +23,7 @@ define([
widgetConfig = contrail.checkIfExist(viewConfig.widgetConfig) ?
viewConfig.widgetConfig : null,
routesFormId = "#" + prefix + "-form";

monitorInfraUtils.appendHostNameInWidgetTitleForUnderlayPage(viewConfig);
self.model = controlNodeRoutesModel;
self.$el.append(routesTmpl({prefix: prefix}));

Expand Down Expand Up @@ -70,7 +71,9 @@ define([

//Making the Routes call here as the result also needs to be update
//prefix value in this form
var routesQueryString = self.model.getControlRoutesQueryString();
var routesQueryString = self.model.getControlRoutesQueryString()
var limit = parseInt(routesQueryString.limit) + 1;
routesQueryString.limit = limit.toString();
var routesRemoteConfig = {
url: monitorInfraConstants.
monitorInfraUrls['CONTROLNODE_ROUTES'] +
Expand All @@ -83,6 +86,8 @@ define([
ajaxConfig : routesRemoteConfig,
dataParser : function (response) {
var selValues = {};
backwardRoutes(response);
forwardRoutes(response);
var parsedData = monitorInfraParsers.
parseRoutes(response,routesQueryString);
//TODO need to update the prefix autocomplete
Expand All @@ -91,6 +96,7 @@ define([
prefixArray.push(d.dispPrefix);
});
$('#prefix').find('input').autocomplete( "option", "source" ,prefixArray);
parsedData.pop();
return parsedData;

}
Expand All @@ -99,9 +105,98 @@ define([
// ucid: ctwc.CACHE_CONFIGNODE
}
};
var controlRoutesListModel = new ContrailListModel(listModelConfig);
var backwardRoutes = function(model){
var routingTable, showRoute, routingInstance, prefix,
showRouteTable = model[0].ShowRouteResp.tables.list.ShowRouteTable;
if(showRouteTable.constructor().length === undefined){
routingTable = showRouteTable.routing_table_name;
routingInstance = showRouteTable.routing_instance;
showRoute = showRouteTable.routes.list.ShowRoute;
}else{
routingTable = showRouteTable[0].routing_table_name;
routingInstance = showRouteTable[0].routing_instance;
showRoute = showRouteTable[0].routes.list.ShowRoute
}
if(showRoute.constructor().length === undefined){
prefix = showRoute.prefix;
}else{
prefix = showRoute[0].prefix;
}
backwardRouteStack.push({
limit: routesQueryString.limit,
startRoutingTable: routingTable,
startRoutingInstance: routingInstance,
startPrefix: prefix
});
};
var forwardRoutes = function(model){
var routingTable, showRoute, routingInstance, prefix,
showRouteTable = model[0].ShowRouteResp.tables.list.ShowRouteTable;
if(showRouteTable.constructor().length === undefined){
routingTable = showRouteTable.routing_table_name;
routingInstance = showRouteTable.routing_instance;
showRoute = showRouteTable.routes.list.ShowRoute;
}else{
routingTable = showRouteTable[showRouteTable.length - 1].routing_table_name;
routingInstance = showRouteTable[showRouteTable.length - 1].routing_instance;
showRoute = showRouteTable[showRouteTable.length - 1].routes.list.ShowRoute;
}
if(showRoute.constructor().length === undefined){
prefix = showRoute.prefix;
}else{
prefix = showRoute[showRoute.length - 1].prefix;
}
forwardRouteStack.push({
limit: routesQueryString.limit,
startRoutingTable: routingTable,
startRoutingInstance: routingInstance,
startPrefix: prefix
});
};
var model = new ContrailListModel(listModelConfig);
self.renderView4Config($(self.$el).find(queryResultId),
controlRoutesListModel, responseViewConfig);
model, responseViewConfig,null,null,null,function() {
monitorInfraUtils.bindPaginationListeners({
gridSel: $('#' + ctwl.CONTROLNODE_ROUTES_RESULTS),
model: self.model,
obj:viewConfig,
parseFn: function(response) {
backwardRoutes(response);
forwardRoutes(response);
var parsedData = monitorInfraParsers.
parseRoutes(response, routesQueryString);
//check for last data in the grid
if(parsedData.length < routesQueryString.limit){
if((parsedData.length + 1) != routesQueryString.limit){
forwardRouteStack.pop();
}
}
if(parsedData.length >= routesQueryString.limit){
parsedData.pop();
}
return parsedData;
},
getUrlFn: function(step) {
var urlparm;
if(step === 'forward' && forwardRouteStack.length !== 0){
urlParm = forwardRouteStack.pop();
return monitorInfraConstants.
monitorInfraUrls['CONTROLNODE_ROUTES'] +
'?ip=' + hostname +
'&' + $.param(urlParm);
}
if(step === 'backward' && backwardRouteStack.length !== 1){
backwardRouteStack.splice(backwardRouteStack.length - 1, 1);
urlParm = backwardRouteStack.pop();
forwardRouteStack.pop();
return monitorInfraConstants.
monitorInfraUrls['CONTROLNODE_ROUTES'] +
'?ip=' + hostname +
'&' + $.param(urlParm);
}
}
});
});
},

getViewConfig: function (options,viewConfig) {
Expand Down Expand Up @@ -138,14 +233,15 @@ define([
}
},
{
elementId: 'address_family',
view: "FormDropdownView",
elementId: 'prefix',
view: "FormAutoCompleteTextBoxView",
viewConfig: {
path: 'address_family',
dataBindValue: 'address_family',
path: 'prefix',
placeHolder:'Prefix',
dataBindValue: 'prefix',
class: "span2",
elementConfig: {
data: addressFamilyList
source : []
}
}
},
Expand All @@ -166,7 +262,7 @@ define([
}
]
},
{
/*{
columns: [
{
elementId: 'peer_source',
Expand Down Expand Up @@ -195,15 +291,14 @@ define([
}
},
{
elementId: 'prefix',
view: "FormAutoCompleteTextBoxView",
elementId: 'address_family',
view: "FormDropdownView",
viewConfig: {
path: 'prefix',
placeHolder:'Prefix',
dataBindValue: 'prefix',
path: 'address_family',
dataBindValue: 'address_family',
class: "span2",
elementConfig: {
source : []
data: addressFamilyList
}
}
},
Expand All @@ -220,7 +315,7 @@ define([
}
}
]
},
},*/
{
columns: [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,26 @@ define([
viewPathPrefix:
ctwl.CONTROLNODE_VIEWPATH_PREFIX,
app: cowc.APP_CONTRAIL_CONTROLLER,
viewConfig: viewConfig,
viewConfig: $.extend({},viewConfig,{
widgetConfig: {
elementId: ctwl.CONTROLNODE_ROUTES_RESULTS + '-widget',
view: "WidgetView",
viewConfig: {
header: {
title: ctwl.CONTROLNODE_ROUTER_TITLE,
// iconClass: "icon-search"
},
controls: {
top: {
default: {
collapseable: true,
collapsedOnLoad:true
}
}
}
}
}
}),
tabConfig: {
activate: function(event, ui) {
if ($('#' + ctwl.CONTROLNODE_ROUTES_RESULTS).data('contrailGrid')) {
Expand Down

0 comments on commit 74c5781

Please sign in to comment.