You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mc...@apache.org on 2017/01/20 21:19:34 UTC
[01/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Repository: nifi
Updated Branches:
refs/heads/master 516075de0 -> dc934cbb8
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates.js
index da5785b..15af39c 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates.js
@@ -15,14 +15,39 @@
* limitations under the License.
*/
-/* global nf, top */
-
-$(document).ready(function () {
- // initialize the templates page
- nf.Templates.init();
-});
-
-nf.Templates = (function () {
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.TemplatesTable',
+ 'nf.ErrorHandler',
+ 'nf.Storage'],
+ function ($, common, templatesTable, errorHandler, storage) {
+ return (nf.Templates = factory($, common, templatesTable, errorHandler, storage));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Templates =
+ factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.TemplatesTable'),
+ require('nf.ErrorHandler'),
+ require('nf.Storage')));
+ } else {
+ nf.Templates = factory(root.$,
+ root.nf.Common,
+ root.nf.TemplatesTable,
+ root.nf.ErrorHandler,
+ root.nf.Storage);
+ }
+}(this, function ($, common, templatesTable, errorHandler, storage) {
+ 'use strict';
+
+ $(document).ready(function () {
+ // initialize the templates page
+ nfTemplates.init();
+ });
/**
* Configuration object used to hold a number of configuration items.
@@ -44,8 +69,8 @@ nf.Templates = (function () {
url: config.urls.currentUser,
dataType: 'json'
}).done(function (currentUser) {
- nf.Common.setCurrentUser(currentUser);
- }).fail(nf.Common.handleAjaxError);
+ common.setCurrentUser(currentUser);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -54,7 +79,7 @@ nf.Templates = (function () {
var initializeTemplatesPage = function () {
// define mouse over event for the refresh button
$('#refresh-button').click(function () {
- nf.TemplatesTable.loadTemplatesTable();
+ templatesTable.loadTemplatesTable();
});
// get the banners if we're not in the shell
@@ -66,8 +91,8 @@ nf.Templates = (function () {
dataType: 'json'
}).done(function (response) {
// ensure the banners response is specified
- if (nf.Common.isDefinedAndNotNull(response.banners)) {
- if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
+ if (common.isDefinedAndNotNull(response.banners)) {
+ if (common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
// update the header text
var bannerHeader = $('#banner-header').text(response.banners.headerText).show();
@@ -81,7 +106,7 @@ nf.Templates = (function () {
updateTop('templates');
}
- if (nf.Common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
+ if (common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
// update the footer text and show it
var bannerFooter = $('#banner-footer').text(response.banners.footerText).show();
@@ -97,7 +122,7 @@ nf.Templates = (function () {
deferred.resolve();
}).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
+ errorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
} else {
@@ -106,21 +131,21 @@ nf.Templates = (function () {
}).promise();
};
- return {
+ var nfTemplates = {
/**
* Initializes the templates page.
*/
init: function () {
- nf.Storage.init();
+ storage.init();
// load the current user
loadCurrentUser().done(function () {
// create the templates table
- nf.TemplatesTable.init();
+ templatesTable.init();
// load the table
- nf.TemplatesTable.loadTemplatesTable().done(function () {
+ templatesTable.loadTemplatesTable().done(function () {
// once the table is initialized, finish initializing the page
initializeTemplatesPage().done(function () {
var setBodySize = function () {
@@ -137,7 +162,7 @@ nf.Templates = (function () {
}
// configure the initial grid height
- nf.TemplatesTable.resetTableSize();
+ templatesTable.resetTableSize();
};
// get the about details
@@ -155,15 +180,15 @@ nf.Templates = (function () {
// set the initial size
setBodySize();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
$(window).on('resize', function (e) {
setBodySize();
// resize dialogs when appropriate
var dialogs = $('.dialog');
for (var i = 0, len = dialogs.length; i < len; i++) {
- if ($(dialogs[i]).is(':visible')){
- setTimeout(function(dialog){
+ if ($(dialogs[i]).is(':visible')) {
+ setTimeout(function (dialog) {
dialog.modal('resize');
}, 50, $(dialogs[i]));
}
@@ -172,8 +197,8 @@ nf.Templates = (function () {
// resize grids when appropriate
var gridElements = $('*[class*="slickgrid_"]');
for (var j = 0, len = gridElements.length; j < len; j++) {
- if ($(gridElements[j]).is(':visible')){
- setTimeout(function(gridElement){
+ if ($(gridElements[j]).is(':visible')) {
+ setTimeout(function (gridElement) {
gridElement.data('gridInstance').resizeCanvas();
}, 50, $(gridElements[j]));
}
@@ -183,12 +208,12 @@ nf.Templates = (function () {
var tabsContainers = $('.tab-container');
var tabsContents = [];
for (var k = 0, len = tabsContainers.length; k < len; k++) {
- if ($(tabsContainers[k]).is(':visible')){
+ if ($(tabsContainers[k]).is(':visible')) {
tabsContents.push($('#' + $(tabsContainers[k]).attr('id') + '-content'));
}
}
$.each(tabsContents, function (index, tabsContent) {
- nf.Common.toggleScrollable(tabsContent.get(0));
+ common.toggleScrollable(tabsContent.get(0));
});
});
});
@@ -196,4 +221,6 @@ nf.Templates = (function () {
});
}
};
-}());
\ No newline at end of file
+
+ return nfTemplates;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js
index 4a1f78d..13cff49 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js
@@ -15,9 +15,34 @@
* limitations under the License.
*/
-/* global nf, Slick */
-
-nf.UsersTable = (function () {
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'Slick',
+ 'nf.Common',
+ 'nf.Client',
+ 'nf.ErrorHandler'],
+ function ($, Slick, common, client, errorHandler) {
+ return (nf.UsersTable = factory($, Slick, common, client, errorHandler));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.UsersTable =
+ factory(require('jquery'),
+ require('Slick'),
+ require('nf.Common'),
+ require('nf.Client'),
+ require('nf.ErrorHandler')));
+ } else {
+ nf.UsersTable = factory(root.$,
+ root.Slick,
+ root.nf.Common,
+ root.nf.Client,
+ root.nf.ErrorHandler);
+ }
+}(this, function ($, Slick, common, client, errorHandler) {
+ 'use strict';
/**
* Configuration object used to hold a number of configuration items.
@@ -51,11 +76,11 @@ nf.UsersTable = (function () {
// update the user
$.ajax({
type: 'DELETE',
- url: user.uri + '?' + $.param(nf.Client.getRevision(user)),
+ url: user.uri + '?' + $.param(client.getRevision(user)),
dataType: 'json'
}).done(function () {
- nf.UsersTable.loadUsersTable();
- }).fail(nf.Common.handleAjaxError);
+ self.loadUsersTable();
+ }).fail(errorHandler.handleAjaxError);
// hide the dialog
$('#user-delete-dialog').modal('hide');
@@ -144,7 +169,7 @@ nf.UsersTable = (function () {
// build the request entity
var updatedGroupEntity = {
- 'revision': nf.Client.getRevision(groupEntity),
+ 'revision': client.getRevision(groupEntity),
'component': $.extend({}, groupEntity.component, {
'users': groupMembers
})
@@ -182,7 +207,7 @@ nf.UsersTable = (function () {
// build the request entity
var updatedGroupEntity = {
- 'revision': nf.Client.getRevision(groupEntity),
+ 'revision': client.getRevision(groupEntity),
'component': $.extend({}, groupEntity.component, {
'users': groupMembers
})
@@ -208,7 +233,7 @@ nf.UsersTable = (function () {
// get the grid and data
var usersGrid = $('#users-table').data('gridInstance');
var usersData = usersGrid.getData();
-
+
// create the user
var userXhr = $.ajax({
type: 'POST',
@@ -225,16 +250,16 @@ nf.UsersTable = (function () {
var groupEntity = usersData.getItemById(selectedGroup.id)
xhrs.push(addUserToGroup(groupEntity, userEntity));
});
-
+
$.when.apply(window, xhrs).always(function () {
- nf.UsersTable.loadUsersTable().done(function () {
+ self.loadUsersTable().done(function () {
// select the new user
var row = usersData.getRowById(userEntity.id);
usersGrid.setSelectedRows([row]);
usersGrid.scrollRowIntoView(row);
});
- }).fail(nf.Common.handleAjaxError);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -251,7 +276,7 @@ nf.UsersTable = (function () {
var userEntity = usersData.getItemById(userId);
var updatedUserEntity = {
- 'revision': nf.Client.getRevision(userEntity),
+ 'revision': client.getRevision(userEntity),
'component': {
'id': userId,
'identity': userIdentity
@@ -268,11 +293,11 @@ nf.UsersTable = (function () {
});
userXhr.done(function (updatedUserEntity) {
-
+
// determine what to add/remove
var groupsAdded = [];
var groupsRemoved = [];
- $.each(updatedUserEntity.component.userGroups, function(_, currentGroup) {
+ $.each(updatedUserEntity.component.userGroups, function (_, currentGroup) {
var isSelected = $.grep(selectedGroups, function (group) {
return group.id === currentGroup.id;
});
@@ -282,7 +307,7 @@ nf.UsersTable = (function () {
groupsRemoved.push(currentGroup);
}
});
- $.each(selectedGroups, function(_, selectedGroup) {
+ $.each(selectedGroups, function (_, selectedGroup) {
var isSelected = $.grep(updatedUserEntity.component.userGroups, function (group) {
return group.id === selectedGroup.id;
});
@@ -305,9 +330,9 @@ nf.UsersTable = (function () {
});
$.when.apply(window, xhrs).always(function () {
- nf.UsersTable.loadUsersTable();
- }).fail(nf.Common.handleAjaxError);
- }).fail(nf.Common.handleAjaxError);
+ self.loadUsersTable();
+ }).fail(errorHandler.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -324,7 +349,7 @@ nf.UsersTable = (function () {
dataType: 'json',
contentType: 'application/json'
}).done(function (groupEntity) {
- nf.UsersTable.loadUsersTable().done(function () {
+ self.loadUsersTable().done(function () {
// add the user
var usersGrid = $('#users-table').data('gridInstance');
var usersData = usersGrid.getData();
@@ -334,7 +359,7 @@ nf.UsersTable = (function () {
usersGrid.setSelectedRows([row]);
usersGrid.scrollRowIntoView(row);
});
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
var updateGroup = function (groupId, groupIdentity, selectedUsers) {
@@ -344,7 +369,7 @@ nf.UsersTable = (function () {
var groupEntity = usersData.getItemById(groupId);
var updatedGroupoEntity = {
- 'revision': nf.Client.getRevision(groupEntity),
+ 'revision': client.getRevision(groupEntity),
'component': {
'id': groupId,
'identity': groupIdentity,
@@ -360,8 +385,8 @@ nf.UsersTable = (function () {
dataType: 'json',
contentType: 'application/json'
}).done(function (groupEntity) {
- nf.UsersTable.loadUsersTable();
- }).fail(nf.Common.handleAjaxError);
+ self.loadUsersTable();
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -385,7 +410,7 @@ nf.UsersTable = (function () {
// see if we should create or update this user
if ($.trim(userId) === '') {
var tenantEntity = {
- 'revision': nf.Client.getRevision({
+ 'revision': client.getRevision({
'revision': {
'version': 0
}
@@ -499,7 +524,7 @@ nf.UsersTable = (function () {
*/
var globalResourceParser = function (dataContext) {
return 'Global policy to ' +
- nf.Common.getPolicyTypeListing(nf.Common.substringAfterFirst(dataContext.component.resource, '/')).text;
+ common.getPolicyTypeListing(common.substringAfterFirst(dataContext.component.resource, '/')).text;
};
/**
@@ -514,13 +539,13 @@ nf.UsersTable = (function () {
//determine policy type
if (resource.startsWith('/policies')) {
- resource = nf.Common.substringAfterFirst(resource, '/policies');
+ resource = common.substringAfterFirst(resource, '/policies');
policyLabel += 'Admin policy for ';
} else if (resource.startsWith('/data-transfer')) {
- resource = nf.Common.substringAfterFirst(resource, '/data-transfer');
+ resource = common.substringAfterFirst(resource, '/data-transfer');
policyLabel += 'Site to site policy for ';
} else if (resource.startsWith('/data')) {
- resource = nf.Common.substringAfterFirst(resource, '/data');
+ resource = common.substringAfterFirst(resource, '/data');
policyLabel += 'Data policy for ';
} else {
policyLabel += 'Component policy for ';
@@ -567,7 +592,7 @@ nf.UsersTable = (function () {
// if the user has permission to the policy
if (dataContext.permissions.canRead === true) {
// check if Global policy
- if (nf.Common.isUndefinedOrNull(dataContext.component.componentReference)) {
+ if (common.isUndefinedOrNull(dataContext.component.componentReference)) {
return globalResourceParser(dataContext);
}
// not a global policy... check if user has access to the component reference
@@ -582,7 +607,7 @@ nf.UsersTable = (function () {
var markup = '';
if (dataContext.permissions.canRead === true) {
- if (nf.Common.isDefinedAndNotNull(dataContext.component.componentReference)) {
+ if (common.isDefinedAndNotNull(dataContext.component.componentReference)) {
if (dataContext.component.resource.indexOf('/processors') >= 0) {
markup += '<div title="Go To" class="pointer go-to-component fa fa-long-arrow-right" style="float: left;"></div>';
} else if (dataContext.component.resource.indexOf('/controller-services') >= 0) {
@@ -622,13 +647,34 @@ nf.UsersTable = (function () {
};
var userPoliciesColumns = [
- {id: 'policy', name: 'Policy', sortable: true, resizable: true, formatter: policyDisplayNameFormatter, width: 150},
- {id: 'action', name: 'Action', sortable: true, resizable: false, formatter: actionFormatter, width: 50}
+ {
+ id: 'policy',
+ name: 'Policy',
+ sortable: true,
+ resizable: true,
+ formatter: policyDisplayNameFormatter,
+ width: 150
+ },
+ {
+ id: 'action',
+ name: 'Action',
+ sortable: true,
+ resizable: false,
+ formatter: actionFormatter,
+ width: 50
+ }
];
// add the actions if we're in the shell
if (top !== window) {
- userPoliciesColumns.push({id: 'actions', name: ' ', sortable: false, resizable: false, formatter: actionsFormatter, width: 25});
+ userPoliciesColumns.push({
+ id: 'actions',
+ name: ' ',
+ sortable: false,
+ resizable: false,
+ formatter: actionsFormatter,
+ width: 25
+ });
}
var userPoliciesOptions = {
@@ -737,12 +783,12 @@ nf.UsersTable = (function () {
var membersGroupsFormatter = function (row, cell, value, columnDef, dataContext) {
if (dataContext.type === 'group') {
return 'Members: <b>' + dataContext.component.users.map(function (user) {
- return user.component.identity;
- }).join('</b>, <b>') + '</b>';
+ return user.component.identity;
+ }).join('</b>, <b>') + '</b>';
} else {
return 'Member of: <b>' + dataContext.component.userGroups.map(function (group) {
- return group.component.identity;
- }).join('</b>, <b>') + '</b>';
+ return group.component.identity;
+ }).join('</b>, <b>') + '</b>';
}
};
@@ -751,12 +797,12 @@ nf.UsersTable = (function () {
var markup = '';
// ensure user can modify the user
- if (nf.Common.canModifyTenants()) {
+ if (common.canModifyTenants()) {
markup += '<div title="Edit" class="pointer edit-user fa fa-pencil" style="margin-right: 3px;"></div>';
markup += '<div title="Remove" class="pointer delete-user fa fa-trash"></div>';
}
- if (!nf.Common.isEmpty(dataContext.component.accessPolicies)) {
+ if (!common.isEmpty(dataContext.component.accessPolicies)) {
markup += '<div title="View User Policies" class="pointer view-user-policies fa fa-key" style="margin-left: 3px;"></div>';
}
@@ -765,10 +811,32 @@ nf.UsersTable = (function () {
// initialize the templates table
var usersColumns = [
- {id: 'identity', name: 'User', sortable: true, resizable: true, formatter: identityFormatter},
- {id: 'membersGroups', name: ' ', sortable: true, defaultSortAsc: false, resizable: true, formatter: membersGroupsFormatter},
- {id: 'actions', name: ' ', sortable: false, resizable: false, formatter: actionFormatter, width: 100, maxWidth: 100}
+ {
+ id: 'identity',
+ name: 'User',
+ sortable: true,
+ resizable: true,
+ formatter: identityFormatter
+ },
+ {
+ id: 'membersGroups',
+ name: ' ',
+ sortable: true,
+ defaultSortAsc: false,
+ resizable: true,
+ formatter: membersGroupsFormatter
+ },
+ {
+ id: 'actions',
+ name: ' ',
+ sortable: false,
+ resizable: false,
+ formatter: actionFormatter,
+ width: 100,
+ maxWidth: 100
+ }
];
+
var usersOptions = {
forceFitColumns: true,
enableTextSelectionOnCells: true,
@@ -854,15 +922,15 @@ nf.UsersTable = (function () {
var userSort = function (sortDetails, data) {
// defines a function for sorting
var comparer = function (a, b) {
- if(a.permissions.canRead && b.permissions.canRead) {
- var aString = nf.Common.isDefinedAndNotNull(a.component[sortDetails.columnId]) ? a.component[sortDetails.columnId] : '';
- var bString = nf.Common.isDefinedAndNotNull(b.component[sortDetails.columnId]) ? b.component[sortDetails.columnId] : '';
+ if (a.permissions.canRead && b.permissions.canRead) {
+ var aString = common.isDefinedAndNotNull(a.component[sortDetails.columnId]) ? a.component[sortDetails.columnId] : '';
+ var bString = common.isDefinedAndNotNull(b.component[sortDetails.columnId]) ? b.component[sortDetails.columnId] : '';
return aString === bString ? 0 : aString > bString ? 1 : -1;
} else {
- if (!a.permissions.canRead && !b.permissions.canRead){
+ if (!a.permissions.canRead && !b.permissions.canRead) {
return 0;
}
- if(a.permissions.canRead){
+ if (a.permissions.canRead) {
return 1;
} else {
return -1;
@@ -883,10 +951,10 @@ nf.UsersTable = (function () {
var userPolicySort = function (sortDetails, data) {
// defines a function for sorting
var comparer = function (a, b) {
- if(a.permissions.canRead && b.permissions.canRead) {
+ if (a.permissions.canRead && b.permissions.canRead) {
if (sortDetails.columnId === 'action') {
- var aString = nf.Common.isDefinedAndNotNull(a.component[sortDetails.columnId]) ? a.component[sortDetails.columnId] : '';
- var bString = nf.Common.isDefinedAndNotNull(b.component[sortDetails.columnId]) ? b.component[sortDetails.columnId] : '';
+ var aString = common.isDefinedAndNotNull(a.component[sortDetails.columnId]) ? a.component[sortDetails.columnId] : '';
+ var bString = common.isDefinedAndNotNull(b.component[sortDetails.columnId]) ? b.component[sortDetails.columnId] : '';
return aString === bString ? 0 : aString > bString ? 1 : -1;
} else if (sortDetails.columnId === 'policy') {
var aString = '';
@@ -895,7 +963,7 @@ nf.UsersTable = (function () {
// if the user has permission to the policy
if (a.permissions.canRead === true) {
// check if Global policy
- if (nf.Common.isUndefinedOrNull(a.component.componentReference)) {
+ if (common.isUndefinedOrNull(a.component.componentReference)) {
aString = globalResourceParser(a);
} else {
// not a global policy... check if user has access to the component reference
@@ -908,9 +976,9 @@ nf.UsersTable = (function () {
// if the user has permission to the policy
if (b.permissions.canRead === true) {
// check if Global policy
- if (nf.Common.isUndefinedOrNull(b.component.componentReference)) {
+ if (common.isUndefinedOrNull(b.component.componentReference)) {
bString = globalResourceParser(b);
- }else {
+ } else {
// not a global policy... check if user has access to the component reference
bString = componentResourceParser(b);
}
@@ -921,10 +989,10 @@ nf.UsersTable = (function () {
return aString === bString ? 0 : aString > bString ? 1 : -1;
}
} else {
- if (!a.permissions.canRead && !b.permissions.canRead){
+ if (!a.permissions.canRead && !b.permissions.canRead) {
return 0;
}
- if(a.permissions.canRead){
+ if (a.permissions.canRead) {
return 1;
} else {
return -1;
@@ -953,7 +1021,7 @@ nf.UsersTable = (function () {
var usersGrid = $('#users-table').data('gridInstance');
// ensure the grid has been initialized
- if (nf.Common.isDefinedAndNotNull(usersGrid)) {
+ if (common.isDefinedAndNotNull(usersGrid)) {
var usersData = usersGrid.getData();
// update the search criteria
@@ -998,7 +1066,7 @@ nf.UsersTable = (function () {
// add a row for each user
var count = 0;
- $.each(usersData.getItems(), function(_, user) {
+ $.each(usersData.getItems(), function (_, user) {
if (user.type === 'user') {
// checkbox
var checkbox = $('<div class="user-check nf-checkbox checkbox-unchecked"></div>').addClass('group-user-' + user.id);
@@ -1031,14 +1099,14 @@ nf.UsersTable = (function () {
// add a row for each user
var count = 0;
- $.each(usersData.getItems(), function(_, group) {
+ $.each(usersData.getItems(), function (_, group) {
if (group.type === 'group') {
// checkbox
var checkbox = $('<div class="group-check nf-checkbox checkbox-unchecked"></div>').addClass('user-group-' + group.id);
// group id
var groupId = $('<span class="group-id hidden"></span>').text(group.id);
-
+
// icon
var groupIcon = $('<div class="fa fa-users" style="margin-top: 6px;"></div>');
@@ -1127,7 +1195,7 @@ nf.UsersTable = (function () {
userPoliciesData.beginUpdate();
// set the rows
- if (nf.Common.isDefinedAndNotNull(user.component.accessPolicies)) {
+ if (common.isDefinedAndNotNull(user.component.accessPolicies)) {
userPoliciesData.setItems(user.component.accessPolicies);
}
@@ -1146,7 +1214,7 @@ nf.UsersTable = (function () {
userPoliciesGrid.resizeCanvas();
};
- return {
+ var nfUsersTable = {
init: function () {
initUserDialog();
initUserPoliciesDialog();
@@ -1154,7 +1222,7 @@ nf.UsersTable = (function () {
initUserDeleteDialog();
initUsersTable();
- if (nf.Common.canModifyTenants()) {
+ if (common.canModifyTenants()) {
$('#new-user-button').on('click', function () {
buildUsersList();
buildGroupsList();
@@ -1179,7 +1247,7 @@ nf.UsersTable = (function () {
var usersTable = $('#users-table');
if (usersTable.is(':visible')) {
var grid = usersTable.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
+ if (common.isDefinedAndNotNull(grid)) {
grid.resizeCanvas();
}
}
@@ -1242,7 +1310,9 @@ nf.UsersTable = (function () {
usersGrid.getSelectionModel().setSelectedRows([]);
$('#total-users').text(usersData.getLength());
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
}
};
-}());
\ No newline at end of file
+
+ return nfUsersTable;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users.js
index 34476a2..8cad6cf 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users.js
@@ -14,18 +14,50 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-$(document).ready(function () {
- // initialize the counters page
- nf.Users.init();
-
- //alter styles if we're not in the shell
- if (top === window) {
- $('#users').css('top', 20);
- $('#users-refresh-container').css('bottom', 20);
+
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.UsersTable',
+ 'nf.ErrorHandler',
+ 'nf.Storage',
+ 'nf.Client'],
+ function ($, common, usersTable, errorHandler, storage, client) {
+ return (nf.Users = factory($, common, usersTable, errorHandler, storage, client));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Users =
+ factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.UsersTable'),
+ require('nf.ErrorHandler'),
+ require('nf.Storage'),
+ require('nf.Client')));
+ } else {
+ nf.Users =
+ factory(root.$,
+ root.nf.Common,
+ root.nf.UsersTable,
+ root.nf.ErrorHandler,
+ root.nf.Storage,
+ root.nf.Client);
}
-});
+}(this, function ($, common, usersTable, errorHandler, storage, client) {
+ 'use strict';
+
+ $(document).ready(function () {
+ // initialize the counters page
+ nfUsers.init();
-nf.Users = (function () {
+ //alter styles if we're not in the shell
+ if (top === window) {
+ $('#users').css('top', 20);
+ $('#users-refresh-container').css('bottom', 20);
+ }
+ });
/**
* Configuration object used to hold a number of configuration items.
@@ -47,14 +79,14 @@ nf.Users = (function () {
url: config.urls.currentUser,
dataType: 'json'
}).done(function (currentUser) {
- nf.Common.setCurrentUser(currentUser);
- }).fail(nf.Common.handleAjaxError);
+ common.setCurrentUser(currentUser);
+ }).fail(errorHandler.handleAjaxError);
};
var initializeUsersPage = function () {
// define mouse over event for the refresh button
- nf.Common.addHoverEffect('#user-refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
- nf.UsersTable.loadUsersTable();
+ common.addHoverEffect('#user-refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
+ usersTable.loadUsersTable();
});
// get the banners if we're not in the shell
@@ -66,8 +98,8 @@ nf.Users = (function () {
dataType: 'json'
}).done(function (bannerResponse) {
// ensure the banners response is specified
- if (nf.Common.isDefinedAndNotNull(bannerResponse.banners)) {
- if (nf.Common.isDefinedAndNotNull(bannerResponse.banners.headerText) && bannerResponse.banners.headerText !== '') {
+ if (common.isDefinedAndNotNull(bannerResponse.banners)) {
+ if (common.isDefinedAndNotNull(bannerResponse.banners.headerText) && bannerResponse.banners.headerText !== '') {
// update the header text
var bannerHeader = $('#banner-header').text(bannerResponse.banners.headerText).show();
@@ -81,7 +113,7 @@ nf.Users = (function () {
updateTop('users');
}
- if (nf.Common.isDefinedAndNotNull(bannerResponse.banners.footerText) && bannerResponse.banners.footerText !== '') {
+ if (common.isDefinedAndNotNull(bannerResponse.banners.footerText) && bannerResponse.banners.footerText !== '') {
// update the footer text and show it
var bannerFooter = $('#banner-footer').text(bannerResponse.banners.footerText).show();
@@ -97,7 +129,7 @@ nf.Users = (function () {
deferred.resolve();
}).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
+ errorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
} else {
@@ -106,30 +138,30 @@ nf.Users = (function () {
});
};
- return {
+ var nfUsers = {
/**
* Initializes the counters page.
*/
init: function () {
- nf.Storage.init();
+ storage.init();
// initialize the client
- nf.Client.init();
+ client.init();
// load the users authorities
ensureAccess().done(function () {
// create the counters table
- nf.UsersTable.init();
+ usersTable.init();
// load the users table
- nf.UsersTable.loadUsersTable().done(function () {
+ usersTable.loadUsersTable().done(function () {
// finish initializing users page
initializeUsersPage().done(function () {
// listen for browser resize events to update the page size
- $(window).resize(nf.UsersTable.resetTableSize);
-
+ $(window).resize(usersTable.resetTableSize);
+
// configure the initial grid height
- nf.UsersTable.resetTableSize();
+ usersTable.resetTableSize();
// get the about details
$.ajax({
@@ -143,15 +175,15 @@ nf.Users = (function () {
// set the document title and the about title
document.title = countersTitle;
$('#users-header-text').text(countersTitle);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
});
$(window).on('resize', function (e) {
// resize dialogs when appropriate
var dialogs = $('.dialog');
for (var i = 0, len = dialogs.length; i < len; i++) {
- if ($(dialogs[i]).is(':visible')){
- setTimeout(function(dialog){
+ if ($(dialogs[i]).is(':visible')) {
+ setTimeout(function (dialog) {
dialog.modal('resize');
}, 50, $(dialogs[i]));
}
@@ -160,8 +192,8 @@ nf.Users = (function () {
// resize grids when appropriate
var gridElements = $('*[class*="slickgrid_"]');
for (var j = 0, len = gridElements.length; j < len; j++) {
- if ($(gridElements[j]).is(':visible')){
- setTimeout(function(gridElement){
+ if ($(gridElements[j]).is(':visible')) {
+ setTimeout(function (gridElement) {
gridElement.data('gridInstance').resizeCanvas();
}, 50, $(gridElements[j]));
}
@@ -171,4 +203,6 @@ nf.Users = (function () {
});
}
};
-}());
\ No newline at end of file
+
+ return nfUsers;
+}));
\ No newline at end of file
[09/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js
index f91d735..93fff60 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js
@@ -15,9 +15,34 @@
* limitations under the License.
*/
-/* global nf, Slick */
-
-nf.ClusterTable = (function () {
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'Slick',
+ 'nf.Common',
+ 'nf.Dialog',
+ 'nf.ErrorHandler'],
+ function ($, Slick, common, dialog, errorHandler) {
+ return (nf.ClusterTable = factory($, Slick, common, dialog, errorHandler));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ClusterTable =
+ factory(require('jquery'),
+ require('Slick'),
+ require('nf.Common'),
+ require('nf.Dialog'),
+ require('nf.ErrorHandler')));
+ } else {
+ nf.ClusterTable = factory(root.$,
+ root.Slick,
+ root.nf.Common,
+ root.nf.Dialog,
+ root.nf.ErrorHandler);
+ }
+}(this, function ($, Slick, common, dialog, errorHandler) {
+ 'use strict';
/**
* Configuration object used to hold a number of configuration items.
@@ -31,14 +56,14 @@ nf.ClusterTable = (function () {
systemDiagnostics: '../nifi-api/system-diagnostics'
},
data: [{
- name: 'cluster',
- update: refreshClusterData,
- isAuthorized: nf.Common.canAccessController
- },{
- name: 'systemDiagnostics',
- update: refreshSystemDiagnosticsData,
- isAuthorized: nf.Common.canAccessSystem
- }
+ name: 'cluster',
+ update: refreshClusterData,
+ isAuthorized: common.canAccessController
+ }, {
+ name: 'systemDiagnostics',
+ update: refreshSystemDiagnosticsData,
+ isAuthorized: common.canAccessSystem
+ }
]
};
@@ -51,7 +76,7 @@ nf.ClusterTable = (function () {
rowHeight: 24
};
- var nodesTab = {
+ var nodesTab = {
name: 'Nodes',
data: {
dataSet: 'cluster',
@@ -85,14 +110,78 @@ nf.ClusterTable = (function () {
tableId: 'cluster-jvm-table',
tableColumnModel: [
{id: 'node', field: 'node', name: 'Node Address', sortable: true, resizable: true},
- {id: 'heapMax', field: 'maxHeap', name: 'Heap Max', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'heapTotal', field: 'totalHeap', name: 'Heap Total', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'heapUsed', field: 'usedHeap', name: 'Heap Used', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'heapUtilPct', field: 'heapUtilization', name: 'Heap Utilization', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'nonHeapTotal', field: 'totalNonHeap', name: 'Non-Heap Total', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'nonHeapUsed', field: 'usedNonHeap', name: 'Non-Heap Used', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'gcOldGen', field: 'gcOldGen', name: 'G1 Old Generation', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'gcNewGen', field: 'gcNewGen', name: 'G1 Young Generation', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'}
+ {
+ id: 'heapMax',
+ field: 'maxHeap',
+ name: 'Heap Max',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'heapTotal',
+ field: 'totalHeap',
+ name: 'Heap Total',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'heapUsed',
+ field: 'usedHeap',
+ name: 'Heap Used',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'heapUtilPct',
+ field: 'heapUtilization',
+ name: 'Heap Utilization',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'nonHeapTotal',
+ field: 'totalNonHeap',
+ name: 'Non-Heap Total',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'nonHeapUsed',
+ field: 'usedNonHeap',
+ name: 'Non-Heap Used',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'gcOldGen',
+ field: 'gcOldGen',
+ name: 'G1 Old Generation',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'gcNewGen',
+ field: 'gcNewGen',
+ name: 'G1 Young Generation',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ }
],
tableIdColumn: 'id',
tableOptions: commonTableOptions,
@@ -116,10 +205,42 @@ nf.ClusterTable = (function () {
tableId: 'cluster-system-table',
tableColumnModel: [
{id: 'node', field: 'node', name: 'Node Address', sortable: true, resizable: true},
- {id: 'processors', field: 'processors', name: 'Processors', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'processorLoadAverage', field: 'processorLoadAverage', name: 'Processor Load Average', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'totalThreads', field: 'totalThreads', name: 'Total Threads', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'daemonThreads', field: 'daemonThreads', name: 'Daemon Threads', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'}
+ {
+ id: 'processors',
+ field: 'processors',
+ name: 'Processors',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'processorLoadAverage',
+ field: 'processorLoadAverage',
+ name: 'Processor Load Average',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'totalThreads',
+ field: 'totalThreads',
+ name: 'Total Threads',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'daemonThreads',
+ field: 'daemonThreads',
+ name: 'Daemon Threads',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ }
],
tableIdColumn: 'id',
tableOptions: commonTableOptions,
@@ -143,10 +264,42 @@ nf.ClusterTable = (function () {
tableId: 'cluster-flowfile-table',
tableColumnModel: [
{id: 'node', field: 'node', name: 'Node Address', sortable: true, resizable: true},
- {id: 'ffRepoTotal', field: 'ffRepoTotal', name: 'Total Space', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'ffRepoUsed', field: 'ffRepoUsed', name: 'Used Space', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'ffRepoFree', field: 'ffRepoFree', name: 'Free Space', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'ffStoreUtil', field: 'ffRepoUtil', name: 'Utilization', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'}
+ {
+ id: 'ffRepoTotal',
+ field: 'ffRepoTotal',
+ name: 'Total Space',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'ffRepoUsed',
+ field: 'ffRepoUsed',
+ name: 'Used Space',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'ffRepoFree',
+ field: 'ffRepoFree',
+ name: 'Free Space',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'ffStoreUtil',
+ field: 'ffRepoUtil',
+ name: 'Utilization',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ }
],
tableIdColumn: 'id',
tableOptions: commonTableOptions,
@@ -171,10 +324,42 @@ nf.ClusterTable = (function () {
tableColumnModel: [
{id: 'node', field: 'node', name: 'Node Address', sortable: true, resizable: true},
{id: 'contentRepoId', field: 'contentRepoId', name: 'Content Repository', sortable: true, resizable: true},
- {id: 'contentRepoTotal', field: 'contentRepoTotal', name: 'Total Space', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'contentRepoUsed', field: 'contentRepoUsed', name: 'Used Space', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'contentRepoFree', field: 'contentRepoFree', name: 'Free Space', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'},
- {id: 'contentRepoUtil', field: 'contentRepoUtil', name: 'Utilization', sortable: true, resizable: true, cssClass: 'cell-right', headerCssClass: 'header-right'}
+ {
+ id: 'contentRepoTotal',
+ field: 'contentRepoTotal',
+ name: 'Total Space',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'contentRepoUsed',
+ field: 'contentRepoUsed',
+ name: 'Used Space',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'contentRepoFree',
+ field: 'contentRepoFree',
+ name: 'Free Space',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ },
+ {
+ id: 'contentRepoUtil',
+ field: 'contentRepoUtil',
+ name: 'Utilization',
+ sortable: true,
+ resizable: true,
+ cssClass: 'cell-right',
+ headerCssClass: 'header-right'
+ }
],
tableIdColumn: 'id',
tableOptions: commonTableOptions,
@@ -186,9 +371,9 @@ nf.ClusterTable = (function () {
text: 'by address',
value: 'node'
}, {
- text: 'by repository',
- value: 'contentRepoId'
- }]
+ text: 'by repository',
+ value: 'contentRepoId'
+ }]
};
var versionTab = {
@@ -227,7 +412,7 @@ nf.ClusterTable = (function () {
/**
* Click handler for the Nodes table options.
*/
- function nodesTableOnClick (e, args, target, item) {
+ function nodesTableOnClick(e, args, target, item) {
if (nodesTab.grid.getColumns()[args.cell].id === 'actions') {
if (target.hasClass('prompt-for-connect')) {
promptForConnect(item);
@@ -246,7 +431,7 @@ nf.ClusterTable = (function () {
/**
* Creates the Slick Grid column model for the Nodes table.
*/
- function createNodeTableColumnModel () {
+ function createNodeTableColumnModel() {
var moreDetailsFormatter = function (row, cell, value, columnDef, dataContext) {
return '<div title="View Details" class="pointer show-node-details fa fa-info-circle" style="margin-top: 2px;"></div>';
};
@@ -258,7 +443,7 @@ nf.ClusterTable = (function () {
// function for formatting the last accessed time
var valueFormatter = function (row, cell, value, columnDef, dataContext) {
- return nf.Common.formatValue(value);
+ return common.formatValue(value);
};
// define a custom formatter for the status column
@@ -267,17 +452,69 @@ nf.ClusterTable = (function () {
};
var columnModel = [
- {id: 'moreDetails', name: ' ', sortable: false, resizable: false, formatter: moreDetailsFormatter, width: 50, maxWidth: 50},
- {id: 'formattedNodeAddress', field: 'formattedNodeAddress', name: 'Node Address', formatter: nodeFormatter, resizable: true, sortable: true},
- {id: 'activeThreadCount', field: 'activeThreadCount', name: 'Active Thread Count', resizable: true, sortable: true, defaultSortAsc: false},
- {id: 'queued', field: 'queued', name: '<span class="queued-title">Queue</span> / <span class="queued-size-title">Size</span>', resizable: true, sortable: true, defaultSortAsc: false},
- {id: 'status', field: 'status', name: 'Status', formatter: statusFormatter, resizable: true, sortable: true},
- {id: 'uptime', field: 'nodeStartTime', name: 'Uptime', formatter: valueFormatter, resizable: true, sortable: true, defaultSortAsc: false},
- {id: 'heartbeat', field: 'heartbeat', name: 'Last Heartbeat', formatter: valueFormatter, resizable: true, sortable: true, defaultSortAsc: false}
+ {
+ id: 'moreDetails',
+ name: ' ',
+ sortable: false,
+ resizable: false,
+ formatter: moreDetailsFormatter,
+ width: 50,
+ maxWidth: 50
+ },
+ {
+ id: 'formattedNodeAddress',
+ field: 'formattedNodeAddress',
+ name: 'Node Address',
+ formatter: nodeFormatter,
+ resizable: true,
+ sortable: true
+ },
+ {
+ id: 'activeThreadCount',
+ field: 'activeThreadCount',
+ name: 'Active Thread Count',
+ resizable: true,
+ sortable: true,
+ defaultSortAsc: false
+ },
+ {
+ id: 'queued',
+ field: 'queued',
+ name: '<span class="queued-title">Queue</span> / <span class="queued-size-title">Size</span>',
+ resizable: true,
+ sortable: true,
+ defaultSortAsc: false
+ },
+ {
+ id: 'status',
+ field: 'status',
+ name: 'Status',
+ formatter: statusFormatter,
+ resizable: true,
+ sortable: true
+ },
+ {
+ id: 'uptime',
+ field: 'nodeStartTime',
+ name: 'Uptime',
+ formatter: valueFormatter,
+ resizable: true,
+ sortable: true,
+ defaultSortAsc: false
+ },
+ {
+ id: 'heartbeat',
+ field: 'heartbeat',
+ name: 'Last Heartbeat',
+ formatter: valueFormatter,
+ resizable: true,
+ sortable: true,
+ defaultSortAsc: false
+ }
];
// only allow the admin to modify the cluster
- if (nf.Common.canModifyController()) {
+ if (common.canModifyController()) {
var actionFormatter = function (row, cell, value, columnDef, dataContext) {
var canDisconnect = false;
var canConnect = false;
@@ -299,7 +536,15 @@ nf.ClusterTable = (function () {
}
};
- columnModel.push({id: 'actions', label: ' ', formatter: actionFormatter, resizable: false, sortable: false, width: 80, maxWidth: 80});
+ columnModel.push({
+ id: 'actions',
+ label: ' ',
+ formatter: actionFormatter,
+ resizable: false,
+ sortable: false,
+ width: 80,
+ maxWidth: 80
+ });
}
return columnModel;
@@ -313,12 +558,12 @@ nf.ClusterTable = (function () {
* @param {object} sortDetails
* @param {object} data
*/
- function sort (sortDetails, dataView, tab) {
+ function sort(sortDetails, dataView, tab) {
// defines a function for sorting
var comparer = function (a, b) {
if (sortDetails.columnId === 'heartbeat' || sortDetails.columnId === 'uptime') {
- var aDate = nf.Common.parseDateTime(a[sortDetails.columnId]);
- var bDate = nf.Common.parseDateTime(b[sortDetails.columnId]);
+ var aDate = common.parseDateTime(a[sortDetails.columnId]);
+ var bDate = common.parseDateTime(b[sortDetails.columnId]);
return aDate.getTime() - bDate.getTime();
} else if (sortDetails.columnId === 'queued') {
var aSplit = a[sortDetails.columnId].split(/ \/ /);
@@ -326,33 +571,33 @@ nf.ClusterTable = (function () {
var mod = count % 4;
if (mod < 2) {
$('#cluster-nodes-table span.queued-title').addClass('sorted');
- var aCount = nf.Common.parseCount(aSplit[0]);
- var bCount = nf.Common.parseCount(bSplit[0]);
+ var aCount = common.parseCount(aSplit[0]);
+ var bCount = common.parseCount(bSplit[0]);
return aCount - bCount;
} else {
$('#cluster-nodes-table span.queued-size-title').addClass('sorted');
- var aSize = nf.Common.parseSize(aSplit[1]);
- var bSize = nf.Common.parseSize(bSplit[1]);
+ var aSize = common.parseSize(aSplit[1]);
+ var bSize = common.parseSize(bSplit[1]);
return aSize - bSize;
}
} else if (sortDetails.columnId === 'maxHeap' || sortDetails.columnId === 'totalHeap' || sortDetails.columnId === 'usedHeap'
- || sortDetails.columnId === 'totalNonHeap' || sortDetails.columnId === 'usedNonHeap'
- || sortDetails.columnId === 'ffRepoTotal' || sortDetails.columnId === 'ffRepoUsed'
- || sortDetails.columnId === 'ffRepoFree' || sortDetails.columnId === 'contentRepoTotal'
- || sortDetails.columnId === 'contentRepoUsed' || sortDetails.columnId === 'contentRepoFree') {
- var aSize = nf.Common.parseSize(a[sortDetails.columnId]);
- var bSize = nf.Common.parseSize(b[sortDetails.columnId]);
+ || sortDetails.columnId === 'totalNonHeap' || sortDetails.columnId === 'usedNonHeap'
+ || sortDetails.columnId === 'ffRepoTotal' || sortDetails.columnId === 'ffRepoUsed'
+ || sortDetails.columnId === 'ffRepoFree' || sortDetails.columnId === 'contentRepoTotal'
+ || sortDetails.columnId === 'contentRepoUsed' || sortDetails.columnId === 'contentRepoFree') {
+ var aSize = common.parseSize(a[sortDetails.columnId]);
+ var bSize = common.parseSize(b[sortDetails.columnId]);
return aSize - bSize;
} else if (sortDetails.columnId === 'totalThreads' || sortDetails.columnId === 'daemonThreads'
- || sortDetails.columnId === 'processors') {
- var aCount = nf.Common.parseCount(a[sortDetails.columnId]);
- var bCount = nf.Common.parseCount(b[sortDetails.columnId]);
+ || sortDetails.columnId === 'processors') {
+ var aCount = common.parseCount(a[sortDetails.columnId]);
+ var bCount = common.parseCount(b[sortDetails.columnId]);
return aCount - bCount;
} else if (sortDetails.columnId === 'gcOldGen' || sortDetails.columnId === 'gcNewGen') {
var aSplit = a[sortDetails.columnId].split(/ /);
var bSplit = b[sortDetails.columnId].split(/ /);
- var aCount = nf.Common.parseCount(aSplit[0]);
- var bCount = nf.Common.parseCount(bSplit[0]);
+ var aCount = common.parseCount(aSplit[0]);
+ var bCount = common.parseCount(bSplit[0]);
return aCount - bCount;
} else if (sortDetails.columnId === 'status') {
var aStatus = formatNodeStatus(a);
@@ -363,8 +608,8 @@ nf.ClusterTable = (function () {
var bNode = formatNodeAddress(b);
return aNode === bNode ? 0 : aNode > bNode ? 1 : -1;
} else {
- var aString = nf.Common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
- var bString = nf.Common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
+ var aString = common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
+ var bString = common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
return aString === bString ? 0 : aString > bString ? 1 : -1;
}
};
@@ -394,7 +639,7 @@ nf.ClusterTable = (function () {
* @returns {string}
*/
var formatNodeAddress = function (node) {
- return nf.Common.escapeHtml(node.address) + ':' + nf.Common.escapeHtml(node.apiPort);
+ return common.escapeHtml(node.address) + ':' + common.escapeHtml(node.apiPort);
};
/**
@@ -421,7 +666,7 @@ nf.ClusterTable = (function () {
*/
var promptForConnect = function (node) {
// prompt to connect
- nf.Dialog.showYesNoDialog({
+ dialog.showYesNoDialog({
headerText: 'Connect Node',
dialogContent: 'Connect \'' + formatNodeAddress(node) + '\' to this cluster?',
yesHandler: function () {
@@ -455,7 +700,7 @@ nf.ClusterTable = (function () {
var clusterGrid = $('#cluster-nodes-table').data('gridInstance');
var clusterData = clusterGrid.getData();
clusterData.updateItem(node.nodeId, node);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -465,7 +710,7 @@ nf.ClusterTable = (function () {
*/
var promptForDisconnect = function (node) {
// prompt for disconnect
- nf.Dialog.showYesNoDialog({
+ dialog.showYesNoDialog({
headerText: 'Disconnect Node',
dialogContent: 'Disconnect \'' + formatNodeAddress(node) + '\' from the cluster?',
yesHandler: function () {
@@ -500,7 +745,7 @@ nf.ClusterTable = (function () {
var clusterGrid = $('#cluster-nodes-table').data('gridInstance');
var clusterData = clusterGrid.getData();
clusterData.updateItem(node.nodeId, node);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -510,7 +755,7 @@ nf.ClusterTable = (function () {
*/
var promptForRemoval = function (node) {
// prompt for disconnect
- nf.Dialog.showYesNoDialog({
+ dialog.showYesNoDialog({
headerText: 'Remove Node',
dialogContent: 'Remove \'' + formatNodeAddress(node) + '\' from the cluster?',
yesHandler: function () {
@@ -534,7 +779,7 @@ nf.ClusterTable = (function () {
var clusterGrid = $('#cluster-nodes-table').data('gridInstance');
var clusterData = clusterGrid.getData();
clusterData.deleteItem(nodeId);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -558,7 +803,7 @@ nf.ClusterTable = (function () {
var grid = visibleTab.grid;
// ensure the grid has been initialized
- if (nf.Common.isDefinedAndNotNull(grid)) {
+ if (common.isDefinedAndNotNull(grid)) {
var gridData = grid.getData();
// update the search criteria
@@ -614,7 +859,7 @@ nf.ClusterTable = (function () {
/**
* Updates count of displayed and total rows.
*/
- function updateFilterStats (selectedTab) {
+ function updateFilterStats(selectedTab) {
if (!selectedTab) {
selectedTab = getSelectedTab();
}
@@ -658,22 +903,22 @@ nf.ClusterTable = (function () {
$.each(node.events, function (i, event) {
eventMessages.push(event.timestamp + ": " + event.message);
});
- $('<div></div>').append(nf.Common.formatUnorderedList(eventMessages)).appendTo(events);
+ $('<div></div>').append(common.formatUnorderedList(eventMessages)).appendTo(events);
} else {
events.append('<div><span class="unset">None</span></div>');
}
// show the dialog
$('#node-details-dialog').modal('show');
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
* Applies system diagnostics data to the JVM tab.
*/
- function updateJvmTableData (systemDiagnosticsResponse) {
- if (nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
- && nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
+ function updateJvmTableData(systemDiagnosticsResponse) {
+ if (common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
+ && common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
var jvmTableRows = [];
systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots.forEach(function (nodeSnapshot) {
@@ -697,9 +942,9 @@ nf.ClusterTable = (function () {
totalNonHeap: snapshot.totalNonHeap,
usedNonHeap: snapshot.usedNonHeap,
gcOldGen: garbageCollection[0].collectionCount + ' times (' +
- garbageCollection[0].collectionTime + ')',
+ garbageCollection[0].collectionTime + ')',
gcNewGen: garbageCollection[1].collectionCount + ' times (' +
- garbageCollection[1].collectionTime + ')'
+ garbageCollection[1].collectionTime + ')'
});
});
jvmTab.rowCount = jvmTableRows.length;
@@ -714,9 +959,9 @@ nf.ClusterTable = (function () {
/**
* Applies system diagnostics data to the System tab.
*/
- function updateSystemTableData (systemDiagnosticsResponse) {
- if (nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
- && nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
+ function updateSystemTableData(systemDiagnosticsResponse) {
+ if (common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
+ && common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
var systemTableRows = [];
systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots.forEach(function (nodeSnapshot) {
@@ -743,9 +988,9 @@ nf.ClusterTable = (function () {
/**
* Applies system diagnostics data to the FlowFile Storage tab.
*/
- function updateFlowFileTableData (systemDiagnosticsResponse) {
- if (nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
- && nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
+ function updateFlowFileTableData(systemDiagnosticsResponse) {
+ if (common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
+ && common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
var flowFileTableRows = [];
systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots.forEach(function (nodeSnapshot) {
@@ -772,9 +1017,9 @@ nf.ClusterTable = (function () {
/**
* Applies system diagnostics data to the Content Storage tab.
*/
- function updateContentTableData (systemDiagnosticsResponse) {
- if (nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
- && nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
+ function updateContentTableData(systemDiagnosticsResponse) {
+ if (common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
+ && common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
var contentStorageTableRows = [];
systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots.forEach(function (nodeSnapshot) {
@@ -805,9 +1050,9 @@ nf.ClusterTable = (function () {
/**
* Applies system diagnostics data to the Versions tab.
*/
- function updateVersionTableData (systemDiagnosticsResponse) {
- if (nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
- && nf.Common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
+ function updateVersionTableData(systemDiagnosticsResponse) {
+ if (common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics)
+ && common.isDefinedAndNotNull(systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots)) {
var versionTableRows = [];
systemDiagnosticsResponse.systemDiagnostics.nodeSnapshots.forEach(function (nodeSnapshot) {
@@ -834,7 +1079,7 @@ nf.ClusterTable = (function () {
/**
* Loads system diagnostics data for the cluster.
*/
- function refreshSystemDiagnosticsData () {
+ function refreshSystemDiagnosticsData() {
var systemDiagnosticsUri = config.urls.systemDiagnostics
var loadPromise = $.ajax({
type: 'GET',
@@ -848,14 +1093,14 @@ nf.ClusterTable = (function () {
handlers.forEach(function (handler) {
handler(systemDiagnosticsResponse);
});
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
return loadPromise;
};
/**
* Generic initialization for Slick Grid tables
*/
- function commonTableInit (tab) {
+ function commonTableInit(tab) {
var dataView = new Slick.Data.DataView({
inlineFilters: false
});
@@ -917,11 +1162,11 @@ nf.ClusterTable = (function () {
/**
* Apply the cluster nodes data set to the table.
*/
- function updateNodesTableData (clusterResponse) {
+ function updateNodesTableData(clusterResponse) {
var cluster = clusterResponse.cluster;
// ensure there are groups specified
- if (nf.Common.isDefinedAndNotNull(cluster.nodes)) {
+ if (common.isDefinedAndNotNull(cluster.nodes)) {
var clusterGrid = nodesTab.grid;
var clusterData = clusterGrid.getData();
@@ -941,7 +1186,7 @@ nf.ClusterTable = (function () {
/**
* Refreshes cluster data sets from the server.
*/
- function refreshClusterData () {
+ function refreshClusterData() {
var clusterNodesDataPromise = $.ajax({
type: 'GET',
url: config.urls.cluster,
@@ -951,17 +1196,17 @@ nf.ClusterTable = (function () {
handlers.forEach(function (handler) {
handler(response);
});
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
return clusterNodesDataPromise;
}
/**
* Event handler triggered when the user switches tabs.
*/
- function onSelectTab (tab) {
+ function onSelectTab(tab) {
// Resize table
var tabGrid = tab.grid;
- if (nf.Common.isDefinedAndNotNull(tabGrid)) {
+ if (common.isDefinedAndNotNull(tabGrid)) {
tabGrid.resizeCanvas();
}
@@ -979,7 +1224,7 @@ nf.ClusterTable = (function () {
updateFilterStats(tab);
}
- return {
+ var nfClusterTable = {
/**
* Initializes the cluster list.
*/
@@ -1066,7 +1311,7 @@ nf.ClusterTable = (function () {
// listen for browser resize events to update the page size
$(window).resize(function () {
- nf.ClusterTable.resetTableSize();
+ nfClusterTable.resetTableSize();
});
// initialize tabs
@@ -1106,4 +1351,5 @@ nf.ClusterTable = (function () {
}
};
-}());
\ No newline at end of file
+ return nfClusterTable;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster.js
index 2e988cb..32e7bb0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster.js
@@ -15,14 +15,39 @@
* limitations under the License.
*/
-/* global nf, top */
-
-$(document).ready(function () {
- // initialize the counters page
- nf.Cluster.init();
-});
-
-nf.Cluster = (function () {
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.ClusterTable',
+ 'nf.ErrorHandler',
+ 'nf.Storage'],
+ function ($, common, clusterTable, errorHandler, storage) {
+ return (nf.Cluster = factory($, common, clusterTable, errorHandler, storage));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Cluster =
+ factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.ClusterTable'),
+ require('nf.ErrorHandler'),
+ require('nf.Storage')));
+ } else {
+ nf.Cluster = factory(root.$,
+ root.nf.Common,
+ root.nf.ClusterTable,
+ root.nf.ErrorHandler,
+ root.nf.Storage);
+ }
+}(this, function ($, common, clusterTable, errorHandler, storage) {
+ 'use strict';
+
+ $(document).ready(function () {
+ // initialize the counters page
+ nfCluster.init();
+ });
/**
* Configuration object used to hold a number of configuration items.
@@ -44,8 +69,8 @@ nf.Cluster = (function () {
url: config.urls.currentUser,
dataType: 'json'
}).done(function (currentUser) {
- nf.Common.setCurrentUser(currentUser);
- }).fail(nf.Common.handleAjaxError);
+ common.setCurrentUser(currentUser);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -54,7 +79,7 @@ nf.Cluster = (function () {
var initializeClusterPage = function () {
// define mouse over event for the refresh button
$('#refresh-button').click(function () {
- nf.ClusterTable.loadClusterTable();
+ clusterTable.loadClusterTable();
});
// return a deferred for page initialization
@@ -67,8 +92,8 @@ nf.Cluster = (function () {
dataType: 'json'
}).done(function (bannerResponse) {
// ensure the banners response is specified
- if (nf.Common.isDefinedAndNotNull(bannerResponse.banners)) {
- if (nf.Common.isDefinedAndNotNull(bannerResponse.banners.headerText) && bannerResponse.banners.headerText !== '') {
+ if (common.isDefinedAndNotNull(bannerResponse.banners)) {
+ if (common.isDefinedAndNotNull(bannerResponse.banners.headerText) && bannerResponse.banners.headerText !== '') {
// update the header text
var bannerHeader = $('#banner-header').text(bannerResponse.banners.headerText).show();
@@ -82,7 +107,7 @@ nf.Cluster = (function () {
updateTop('counters');
}
- if (nf.Common.isDefinedAndNotNull(bannerResponse.banners.footerText) && bannerResponse.banners.footerText !== '') {
+ if (common.isDefinedAndNotNull(bannerResponse.banners.footerText) && bannerResponse.banners.footerText !== '') {
// update the footer text and show it
var bannerFooter = $('#banner-footer').text(bannerResponse.banners.footerText).show();
@@ -98,7 +123,7 @@ nf.Cluster = (function () {
deferred.resolve();
}).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
+ errorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
} else {
@@ -107,13 +132,13 @@ nf.Cluster = (function () {
}).promise();
};
- return {
+ var nfCluster = {
/**
* Initializes the counters page.
*/
init: function () {
- nf.Storage.init();
-
+ storage.init();
+
// load the current user
loadCurrentUser().done(function () {
var setBodySize = function () {
@@ -134,13 +159,13 @@ nf.Cluster = (function () {
setBodySize();
// create the cluster table
- nf.ClusterTable.init();
+ clusterTable.init();
// resize to fit
- nf.ClusterTable.resetTableSize();
+ clusterTable.resetTableSize();
// load the table
- nf.ClusterTable.loadClusterTable().done(function () {
+ clusterTable.loadClusterTable().done(function () {
// once the table is initialized, finish initializing the page
initializeClusterPage().done(function () {
@@ -156,15 +181,15 @@ nf.Cluster = (function () {
// set the document title and the about title
document.title = countersTitle;
$('#counters-header-text').text(countersTitle);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
$(window).on('resize', function (e) {
setBodySize();
// resize dialogs when appropriate
var dialogs = $('.dialog');
for (var i = 0, len = dialogs.length; i < len; i++) {
- if ($(dialogs[i]).is(':visible')){
- setTimeout(function(dialog){
+ if ($(dialogs[i]).is(':visible')) {
+ setTimeout(function (dialog) {
dialog.modal('resize');
}, 50, $(dialogs[i]));
}
@@ -173,8 +198,8 @@ nf.Cluster = (function () {
// resize grids when appropriate
var gridElements = $('*[class*="slickgrid_"]');
for (var j = 0, len = gridElements.length; j < len; j++) {
- if ($(gridElements[j]).is(':visible')){
- setTimeout(function(gridElement){
+ if ($(gridElements[j]).is(':visible')) {
+ setTimeout(function (gridElement) {
gridElement.data('gridInstance').resizeCanvas();
}, 50, $(gridElements[j]));
}
@@ -184,12 +209,12 @@ nf.Cluster = (function () {
var tabsContainers = $('.tab-container');
var tabsContents = [];
for (var k = 0, len = tabsContainers.length; k < len; k++) {
- if ($(tabsContainers[k]).is(':visible')){
+ if ($(tabsContainers[k]).is(':visible')) {
tabsContents.push($('#' + $(tabsContainers[k]).attr('id') + '-content'));
}
}
$.each(tabsContents, function (index, tabsContent) {
- nf.Common.toggleScrollable(tabsContent.get(0));
+ common.toggleScrollable(tabsContent.get(0));
});
});
});
@@ -197,4 +222,6 @@ nf.Cluster = (function () {
});
}
};
-}());
\ No newline at end of file
+
+ return nfCluster;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js
index ec9bace..ade8236 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js
@@ -15,9 +15,31 @@
* limitations under the License.
*/
-/* global nf, Slick */
-
-nf.CountersTable = (function () {
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'Slick',
+ 'nf.Common',
+ 'nf.ErrorHandler'],
+ function ($, Slick, common, errorHandler) {
+ return (nf.CountersTable = factory($, Slick, common, errorHandler));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.CountersTable =
+ factory(require('jquery'),
+ require('Slick'),
+ require('nf.Common'),
+ require('nf.ErrorHandler')));
+ } else {
+ nf.CountersTable = factory(root.$,
+ root.Slick,
+ root.nf.Common,
+ root.nf.ErrorHandler);
+ }
+}(this, function ($, Slick, common, errorHandler) {
+ 'use strict';
/**
* Configuration object used to hold a number of configuration items.
@@ -30,7 +52,7 @@ nf.CountersTable = (function () {
/**
* Sorts the specified data using the specified sort details.
- *
+ *
* @param {object} sortDetails
* @param {object} data
*/
@@ -38,12 +60,12 @@ nf.CountersTable = (function () {
// defines a function for sorting
var comparer = function (a, b) {
if (sortDetails.columnId === 'value') {
- var aCount = nf.Common.parseCount(a[sortDetails.columnId]);
- var bCount = nf.Common.parseCount(b[sortDetails.columnId]);
+ var aCount = common.parseCount(a[sortDetails.columnId]);
+ var bCount = common.parseCount(b[sortDetails.columnId]);
return aCount - bCount;
} else {
- var aString = nf.Common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
- var bString = nf.Common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
+ var aString = common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
+ var bString = common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
return aString === bString ? 0 : aString > bString ? 1 : -1;
}
};
@@ -69,7 +91,7 @@ nf.CountersTable = (function () {
var countersGrid = $('#counters-table').data('gridInstance');
// ensure the grid has been initialized
- if (nf.Common.isDefinedAndNotNull(countersGrid)) {
+ if (common.isDefinedAndNotNull(countersGrid)) {
var countersData = countersGrid.getData();
// update the search criteria
@@ -83,7 +105,7 @@ nf.CountersTable = (function () {
/**
* Performs the filtering.
- *
+ *
* @param {object} item The item subject to filtering
* @param {object} args Filter arguments
* @returns {Boolean} Whether or not to include the item
@@ -104,10 +126,10 @@ nf.CountersTable = (function () {
// perform the filter
return item[args.property].search(filterExp) >= 0;
};
-
+
/**
* Resets the specified counter.
- *
+ *
* @argument {object} item The counter item
*/
var resetCounter = function (item) {
@@ -122,7 +144,7 @@ nf.CountersTable = (function () {
var countersGrid = $('#counters-table').data('gridInstance');
var countersData = countersGrid.getData();
countersData.updateItem(counter.id, counter);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
return {
@@ -138,12 +160,12 @@ nf.CountersTable = (function () {
// filter type
$('#counters-filter-type').combo({
options: [{
- text: 'by name',
- value: 'name'
- }, {
- text: 'by context',
- value: 'context'
- }],
+ text: 'by name',
+ value: 'name'
+ }, {
+ text: 'by context',
+ value: 'context'
+ }],
select: function (option) {
applyFilter();
}
@@ -151,20 +173,47 @@ nf.CountersTable = (function () {
// initialize the templates table
var countersColumns = [
- {id: 'context', name: 'Context', field: 'context', sortable: true, resizable: true},
- {id: 'name', name: 'Name', field: 'name', sortable: true, resizable: true},
- {id: 'value', name: 'Value', field: 'value', sortable: true, resizable: true, defaultSortAsc: false}
+ {
+ id: 'context',
+ name: 'Context',
+ field: 'context',
+ sortable: true,
+ resizable: true
+ },
+ {
+ id: 'name',
+ name: 'Name',
+ field: 'name',
+ sortable: true,
+ resizable: true
+ },
+ {
+ id: 'value',
+ name: 'Value',
+ field: 'value',
+ sortable: true,
+ resizable: true,
+ defaultSortAsc: false
+ }
];
// only allow dfm's to reset counters
- if (nf.Common.canModifyCounters()) {
+ if (common.canModifyCounters()) {
// function for formatting the actions column
var actionFormatter = function (row, cell, value, columnDef, dataContext) {
return '<div title="Reset Counter" class="pointer reset-counter fa fa-undo" style="margin-top: 2px;"></div>';
};
// add the action column
- countersColumns.push({id: 'actions', name: ' ', sortable: false, resizable: false, formatter: actionFormatter, width: 100, maxWidth: 100});
+ countersColumns.push({
+ id: 'actions',
+ name: ' ',
+ sortable: false,
+ resizable: false,
+ formatter: actionFormatter,
+ width: 100,
+ maxWidth: 100
+ });
}
var countersOptions = {
@@ -204,7 +253,7 @@ nf.CountersTable = (function () {
sortAsc: args.sortAsc
}, countersData);
});
-
+
// configure a click listener
countersGrid.onClick.subscribe(function (e, args) {
var target = $(e.target);
@@ -239,17 +288,17 @@ nf.CountersTable = (function () {
// initialize the number of display items
$('#displayed-counters').text('0');
},
-
+
/**
* Update the size of the grid based on its container's current size.
*/
resetTableSize: function () {
var countersGrid = $('#counters-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(countersGrid)) {
+ if (common.isDefinedAndNotNull(countersGrid)) {
countersGrid.resizeCanvas();
}
},
-
+
/**
* Load the processor counters table.
*/
@@ -263,7 +312,7 @@ nf.CountersTable = (function () {
var aggregateSnapshot = report.aggregateSnapshot;
// ensure there are groups specified
- if (nf.Common.isDefinedAndNotNull(aggregateSnapshot.counters)) {
+ if (common.isDefinedAndNotNull(aggregateSnapshot.counters)) {
var countersGrid = $('#counters-table').data('gridInstance');
var countersData = countersGrid.getData();
@@ -280,7 +329,7 @@ nf.CountersTable = (function () {
} else {
$('#total-counters').text('0');
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
}
};
-}());
\ No newline at end of file
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters.js
index c18b9b3..be321e6 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters.js
@@ -15,14 +15,39 @@
* limitations under the License.
*/
-/* global nf, top */
-
-$(document).ready(function () {
- // initialize the counters page
- nf.Counters.init();
-});
-
-nf.Counters = (function () {
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.CountersTable',
+ 'nf.ErrorHandler',
+ 'nf.Storage'],
+ function ($, common, countersTable, errorHandler, storage) {
+ return (nf.Counters = factory($, common, countersTable, errorHandler, storage));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Counters =
+ factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.CountersTable'),
+ require('nf.ErrorHandler'),
+ require('nf.Storage')));
+ } else {
+ nf.Counters = factory(root.$,
+ root.nf.Common,
+ root.nf.CountersTable,
+ root.nf.ErrorHandler,
+ root.nf.Storage);
+ }
+}(this, function ($, common, countersTable, errorHandler, storage) {
+ 'use strict';
+
+ $(document).ready(function () {
+ // initialize the counters page
+ nfCounters.init();
+ });
/**
* Configuration object used to hold a number of configuration items.
@@ -44,9 +69,9 @@ nf.Counters = (function () {
url: config.urls.currentUser,
dataType: 'json'
}).done(function (currentUser) {
- nf.Common.setCurrentUser(currentUser);
+ common.setCurrentUser(currentUser);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -55,7 +80,7 @@ nf.Counters = (function () {
var initializeCountersPage = function () {
// define mouse over event for the refresh button
$('#refresh-button').click(function () {
- nf.CountersTable.loadCountersTable();
+ countersTable.loadCountersTable();
});
// return a deferred for page initialization
@@ -68,8 +93,8 @@ nf.Counters = (function () {
dataType: 'json'
}).done(function (response) {
// ensure the banners response is specified
- if (nf.Common.isDefinedAndNotNull(response.banners)) {
- if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
+ if (common.isDefinedAndNotNull(response.banners)) {
+ if (common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
// update the header text
var bannerHeader = $('#banner-header').text(response.banners.headerText).show();
@@ -83,7 +108,7 @@ nf.Counters = (function () {
updateTop('counters');
}
- if (nf.Common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
+ if (common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
// update the footer text and show it
var bannerFooter = $('#banner-footer').text(response.banners.footerText).show();
@@ -99,7 +124,7 @@ nf.Counters = (function () {
deferred.resolve();
}).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
+ errorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
} else {
@@ -108,20 +133,20 @@ nf.Counters = (function () {
}).promise();
};
- return {
+ var nfCounters = {
/**
* Initializes the counters page.
*/
init: function () {
- nf.Storage.init();
-
+ storage.init();
+
// load the current user
loadCurrentUser().done(function () {
// create the counters table
- nf.CountersTable.init();
+ countersTable.init();
// load the table
- nf.CountersTable.loadCountersTable().done(function () {
+ countersTable.loadCountersTable().done(function () {
// once the table is initialized, finish initializing the page
initializeCountersPage().done(function () {
var setBodySize = function () {
@@ -131,14 +156,14 @@ nf.Counters = (function () {
'height': $(window).height() + 'px',
'width': $(window).width() + 'px'
});
-
+
$('#counters').css('margin', 40);
$('#counters-table').css('bottom', 127);
$('#counters-refresh-container').css('margin', 40);
}
// configure the initial grid height
- nf.CountersTable.resetTableSize();
+ countersTable.resetTableSize();
};
// get the about details
@@ -156,15 +181,15 @@ nf.Counters = (function () {
// set the initial size
setBodySize();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
$(window).on('resize', function (e) {
setBodySize();
// resize dialogs when appropriate
var dialogs = $('.dialog');
for (var i = 0, len = dialogs.length; i < len; i++) {
- if ($(dialogs[i]).is(':visible')){
- setTimeout(function(dialog){
+ if ($(dialogs[i]).is(':visible')) {
+ setTimeout(function (dialog) {
dialog.modal('resize');
}, 50, $(dialogs[i]));
}
@@ -173,8 +198,8 @@ nf.Counters = (function () {
// resize grids when appropriate
var gridElements = $('*[class*="slickgrid_"]');
for (var j = 0, len = gridElements.length; j < len; j++) {
- if ($(gridElements[j]).is(':visible')){
- setTimeout(function(gridElement){
+ if ($(gridElements[j]).is(':visible')) {
+ setTimeout(function (gridElement) {
gridElement.data('gridInstance').resizeCanvas();
}, 50, $(gridElements[j]));
}
@@ -184,12 +209,12 @@ nf.Counters = (function () {
var tabsContainers = $('.tab-container');
var tabsContents = [];
for (var k = 0, len = tabsContainers.length; k < len; k++) {
- if ($(tabsContainers[k]).is(':visible')){
+ if ($(tabsContainers[k]).is(':visible')) {
tabsContents.push($('#' + $(tabsContainers[k]).attr('id') + '-content'));
}
}
$.each(tabsContents, function (index, tabsContent) {
- nf.Common.toggleScrollable(tabsContent.get(0));
+ common.toggleScrollable(tabsContent.get(0));
});
});
});
@@ -197,4 +222,6 @@ nf.Counters = (function () {
});
}
};
-}());
\ No newline at end of file
+
+ return nfCounters;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-model.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-model.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-model.js
index 366a275..a2132ec 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-model.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-model.js
@@ -15,207 +15,225 @@
* limitations under the License.
*/
-/* global Slick, nf */
-
-(function ($) {
-
- function HistoryModel() {
- // private
- var PAGESIZE = 50;
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'Slick',
+ 'nf.Common',
+ 'nf.ErrorHandler'],
+ function ($, Slick, common, errorHandler) {
+ return (nf.HistoryModel = factory($, Slick, common, errorHandler));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.HistoryModel =
+ factory(require('jquery'),
+ require('Slick'),
+ require('nf.Common'),
+ require('nf.ErrorHandler')));
+ } else {
+ nf.HistoryModel = factory(root.$,
+ root.Slick,
+ root.nf.Common,
+ root.nf.ErrorHandler);
+ }
+}(this, function ($, Slick, common, errorHandler) {
+ 'use strict';
- var data = {
- length: 0
- };
+ // private
+ var PAGESIZE = 50;
- var filter = {};
- var sortcol = null;
- var sortdir = 1;
+ var data = {
+ length: 0
+ };
- var h_request = null;
- var xhr = null; // ajax request
+ var filter = {};
+ var sortcol = null;
+ var sortdir = 1;
- // events
- var onDataLoading = new Slick.Event();
- var onDataLoaded = new Slick.Event();
+ var h_request = null;
+ var xhr = null; // ajax request
- var init = function () {
- };
+ // events
+ var onDataLoading = new Slick.Event();
+ var onDataLoaded = new Slick.Event();
- var isDataLoaded = function (from, to) {
- for (var i = from; i <= to; i++) {
- if (data[i] === undefined || data[i] === null) {
- return false;
- }
+ var isDataLoaded = function (from, to) {
+ for (var i = from; i <= to; i++) {
+ if (data[i] === undefined || data[i] === null) {
+ return false;
}
-
- return true;
- };
-
- var clear = function () {
- for (var key in data) {
- delete data[key];
+ }
+
+ return true;
+ };
+
+ var clear = function () {
+ for (var key in data) {
+ delete data[key];
+ }
+ data.length = 0;
+ };
+
+ var ensureData = function (from, to) {
+ if (xhr) {
+ xhr.abort();
+ for (var i = xhr.fromPage; i <= xhr.toPage; i++) {
+ data[i * PAGESIZE] = undefined;
}
- data.length = 0;
- };
-
- var ensureData = function (from, to) {
- if (xhr) {
- xhr.abort();
- for (var i = xhr.fromPage; i <= xhr.toPage; i++) {
- data[i * PAGESIZE] = undefined;
- }
+ }
+
+ if (from < 0) {
+ from = 0;
+ }
+
+ var fromPage = Math.floor(from / PAGESIZE);
+ var toPage = Math.floor(to / PAGESIZE);
+
+ while (data[fromPage * PAGESIZE] !== undefined && fromPage < toPage) {
+ fromPage++;
+ }
+
+ while (data[toPage * PAGESIZE] !== undefined && fromPage < toPage) {
+ toPage--;
+ }
+
+ if (fromPage > toPage || ((fromPage === toPage) && data[fromPage * PAGESIZE] !== undefined)) {
+ // TODO: look-ahead
+ return;
+ }
+
+ var query = {};
+
+ // add the start and end date to the query params
+ query = $.extend({
+ count: ((toPage - fromPage) * PAGESIZE) + PAGESIZE,
+ offset: fromPage * PAGESIZE
+ }, query);
+
+ // conditionally add the sort details
+ if (sortcol !== null) {
+ query['sortColumn'] = sortcol;
+ query['sortOrder'] = (sortdir > 0) ? "asc" : "desc";
+ }
+
+ // add the filter
+ query = $.extend(query, filter);
+
+ // if there is an request currently scheduled, cancel it
+ if (h_request !== null) {
+ clearTimeout(h_request);
+ }
+
+ // schedule the request for data
+ h_request = setTimeout(function () {
+ for (var i = fromPage; i <= toPage; i++) {
+ data[i * PAGESIZE] = null; // null indicates a 'requested but not available yet'
}
- if (from < 0) {
- from = 0;
- }
+ // notify that loading is about to occur
+ onDataLoading.notify({
+ from: from,
+ to: to
+ });
+
+ // perform query...
+ var xhr = $.ajax({
+ type: 'GET',
+ url: '../nifi-api/flow/history',
+ data: query,
+ dataType: 'json'
+ }).done(function (response) {
+ var history = response.history;
+
+ // calculate the indices
+ var from = fromPage * PAGESIZE;
+ var to = from + history.actions.length;
+
+ // update the data length
+ data.length = history.total;
+
+ // populate the history actions
+ for (var i = 0; i < history.actions.length; i++) {
+ data[from + i] = history.actions[i];
+ data[from + i].index = from + i;
+ }
- var fromPage = Math.floor(from / PAGESIZE);
- var toPage = Math.floor(to / PAGESIZE);
+ // update the stats last refreshed timestamp
+ $('#history-last-refreshed').text(history.lastRefreshed);
- while (data[fromPage * PAGESIZE] !== undefined && fromPage < toPage) {
- fromPage++;
- }
+ // set the timezone for the start and end time
+ $('.timezone').text(common.substringAfterLast(history.lastRefreshed, ' '));
- while (data[toPage * PAGESIZE] !== undefined && fromPage < toPage) {
- toPage--;
- }
+ // show the filter message if applicable
+ if (query['sourceId'] || query['userIdentity'] || query['startDate'] || query['endDate']) {
+ $('#history-filter-overview').css('visibility', 'visible');
+ } else {
+ $('#history-filter-overview').css('visibility', 'hidden');
+ }
- if (fromPage > toPage || ((fromPage === toPage) && data[fromPage * PAGESIZE] !== undefined)) {
- // TODO: look-ahead
- return;
- }
+ // clear the current request
+ xhr = null;
- var query = {};
+ // notify data loaded
+ onDataLoaded.notify({
+ from: from,
+ to: to
+ });
+ }).fail(errorHandler.handleAjaxError);
+ xhr.fromPage = fromPage;
+ xhr.toPage = toPage;
- // add the start and end date to the query params
- query = $.extend({
- count: ((toPage - fromPage) * PAGESIZE) + PAGESIZE,
- offset: fromPage * PAGESIZE
- }, query);
+ }, 50);
+ };
- // conditionally add the sort details
- if (sortcol !== null) {
- query['sortColumn'] = sortcol;
- query['sortOrder'] = (sortdir > 0) ? "asc" : "desc";
- }
+ var reloadData = function (from, to) {
+ for (var i = from; i <= to; i++)
+ delete data[i];
- // add the filter
- query = $.extend(query, filter);
+ ensureData(from, to);
+ };
- // if there is an request currently scheduled, cancel it
- if (h_request !== null) {
- clearTimeout(h_request);
- }
+ var setSort = function (column, dir) {
+ sortcol = column;
+ sortdir = dir;
+ clear();
+ };
- // schedule the request for data
- h_request = setTimeout(function () {
- for (var i = fromPage; i <= toPage; i++) {
- data[i * PAGESIZE] = null; // null indicates a 'requested but not available yet'
- }
+ var setFilterArgs = function (newFilter) {
+ filter = newFilter;
+ clear();
+ };
- // notify that loading is about to occur
- onDataLoading.notify({
- from: from,
- to: to
- });
+ var getItem = function (i) {
+ return data[i];
+ };
- // perform query...
- var xhr = $.ajax({
- type: 'GET',
- url: '../nifi-api/flow/history',
- data: query,
- dataType: 'json'
- }).done(function (response) {
- var history = response.history;
-
- // calculate the indices
- var from = fromPage * PAGESIZE;
- var to = from + history.actions.length;
-
- // update the data length
- data.length = history.total;
-
- // populate the history actions
- for (var i = 0; i < history.actions.length; i++) {
- data[from + i] = history.actions[i];
- data[from + i].index = from + i;
- }
-
- // update the stats last refreshed timestamp
- $('#history-last-refreshed').text(history.lastRefreshed);
-
- // set the timezone for the start and end time
- $('.timezone').text(nf.Common.substringAfterLast(history.lastRefreshed, ' '));
-
- // show the filter message if applicable
- if (query['sourceId'] || query['userIdentity'] || query['startDate'] || query['endDate']) {
- $('#history-filter-overview').css('visibility', 'visible');
- } else {
- $('#history-filter-overview').css('visibility', 'hidden');
- }
-
- // clear the current request
- xhr = null;
-
- // notify data loaded
- onDataLoaded.notify({
- from: from,
- to: to
- });
- }).fail(nf.Common.handleAjaxError);
- xhr.fromPage = fromPage;
- xhr.toPage = toPage;
-
- }, 50);
- };
-
- var reloadData = function (from, to) {
- for (var i = from; i <= to; i++)
- delete data[i];
-
- ensureData(from, to);
- };
-
- var setSort = function (column, dir) {
- sortcol = column;
- sortdir = dir;
- clear();
- };
-
- var setFilterArgs = function (newFilter) {
- filter = newFilter;
- clear();
- };
-
- var getItem = function (i) {
- return data[i];
- };
-
- var getLength = function () {
- return data.length;
- };
-
- init();
-
- return {
- // properties
- data: data,
- // methods
- clear: clear,
- isDataLoaded: isDataLoaded,
- ensureData: ensureData,
- reloadData: reloadData,
- setSort: setSort,
- setFilterArgs: setFilterArgs,
- getItem: getItem,
- getLength: getLength,
- // events
- onDataLoading: onDataLoading,
- onDataLoaded: onDataLoaded
- };
+ var getLength = function () {
+ return data.length;
+ };
+
+ function HistoryModel() {
+ }
+
+ HistoryModel.prototype = {
+ constructor: HistoryModel,
+ // properties
+ data: data,
+ // methods
+ clear: clear,
+ isDataLoaded: isDataLoaded,
+ ensureData: ensureData,
+ reloadData: reloadData,
+ setSort: setSort,
+ setFilterArgs: setFilterArgs,
+ getItem: getItem,
+ getLength: getLength,
+ // events
+ onDataLoading: onDataLoading,
+ onDataLoaded: onDataLoaded
}
- // nf.HistoryModel
- $.extend(true, window, {nf: {HistoryModel: HistoryModel}});
-})(jQuery);
\ No newline at end of file
+ return HistoryModel;
+}));
\ No newline at end of file
[06/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-processor-details.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-processor-details.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-processor-details.js
index e5dd2a6..829490f 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-processor-details.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-processor-details.js
@@ -15,9 +15,40 @@
* limitations under the License.
*/
-/* global nf */
-
-nf.ProcessorDetails = (function () {
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.UniversalCapture',
+ 'nf.Dialog',
+ 'nf.ErrorHandler',
+ 'nf.CustomUi',
+ 'nf.ClusterSummary'],
+ function ($, common, universalCapture, dialog, errorHandler, customUi, clusterSummary) {
+ return (nf.ProcessorDetails = factory($, common, universalCapture, dialog, errorHandler, customUi, clusterSummary));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ProcessorDetails =
+ factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.UniversalCapture'),
+ require('nf.Dialog'),
+ require('nf.ErrorHandler'),
+ require('nf.CustomUi'),
+ require('nf.ClusterSummary')));
+ } else {
+ nf.ProcessorDetails = factory(root.$,
+ root.nf.Common,
+ root.nf.UniversalCapture,
+ root.nf.Dialog,
+ root.nf.ErrorHandler,
+ root.nf.CustomUi,
+ root.nf.ClusterSummary);
+ }
+}(this, function ($, common, universalCapture, dialog, errorHandler, customUi, clusterSummary) {
+ 'use strict';
/**
* Creates an option for the specified relationship name.
@@ -34,7 +65,7 @@ nf.ProcessorDetails = (function () {
// build the relationship container element
var relationshipContainerElement = $('<div class="processor-relationship-container"></div>').append(relationshipLabel).appendTo('#read-only-auto-terminate-relationship-names');
- if (!nf.Common.isBlank(relationship.description)) {
+ if (!common.isBlank(relationship.description)) {
var relationshipDescription = $('<div class="relationship-description"></div>').text(relationship.description);
relationshipContainerElement.append(relationshipDescription);
}
@@ -46,7 +77,8 @@ nf.ProcessorDetails = (function () {
/**
* Initializes the processor details dialog.
*/
- init: function () {
+ init: function (supportsGoTo) {
+
// initialize the properties tabs
$('#processor-details-tabs').tabbs({
tabStyle: 'tab',
@@ -67,7 +99,7 @@ nf.ProcessorDetails = (function () {
}],
select: function () {
// remove all property detail dialogs
- nf.UniversalCapture.removeAllPropertyDetailDialogs();
+ universalCapture.removeAllPropertyDetailDialogs();
// resize the property grid in case this is the first time its rendered
if ($(this).text() === 'Properties') {
@@ -95,31 +127,32 @@ nf.ProcessorDetails = (function () {
$('#read-only-processor-properties').propertytable('clear');
// clear the processor details
- nf.Common.clearField('read-only-processor-id');
- nf.Common.clearField('read-only-processor-type');
- nf.Common.clearField('read-only-processor-name');
- nf.Common.clearField('read-only-concurrently-schedulable-tasks');
- nf.Common.clearField('read-only-scheduling-period');
- nf.Common.clearField('read-only-penalty-duration');
- nf.Common.clearField('read-only-yield-duration');
- nf.Common.clearField('read-only-run-duration');
- nf.Common.clearField('read-only-bulletin-level');
- nf.Common.clearField('read-only-execution-node');
- nf.Common.clearField('read-only-execution-status');
- nf.Common.clearField('read-only-processor-comments');
+ common.clearField('read-only-processor-id');
+ common.clearField('read-only-processor-type');
+ common.clearField('read-only-processor-name');
+ common.clearField('read-only-concurrently-schedulable-tasks');
+ common.clearField('read-only-scheduling-period');
+ common.clearField('read-only-penalty-duration');
+ common.clearField('read-only-yield-duration');
+ common.clearField('read-only-run-duration');
+ common.clearField('read-only-bulletin-level');
+ common.clearField('read-only-execution-node');
+ common.clearField('read-only-execution-status');
+ common.clearField('read-only-processor-comments');
// removed the cached processor details
$('#processor-details').removeData('processorDetails');
$('#processor-details').removeData('processorHistory');
},
open: function () {
- nf.Common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
+ common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
}
}
});
// initialize the properties
$('#read-only-processor-properties').propertytable({
+ supportsGoTo: supportsGoTo,
readOnly: true
});
},
@@ -137,7 +170,7 @@ nf.ProcessorDetails = (function () {
url: '../nifi-api/processors/' + encodeURIComponent(processorId),
dataType: 'json'
}).done(function (response) {
- if (nf.Common.isDefinedAndNotNull(response.component)) {
+ if (common.isDefinedAndNotNull(response.component)) {
// get the processor details
var details = response.component;
@@ -145,16 +178,16 @@ nf.ProcessorDetails = (function () {
$('#processor-details').data('processorDetails', details);
// populate the processor settings
- nf.Common.populateField('read-only-processor-id', details['id']);
- nf.Common.populateField('read-only-processor-type', nf.Common.substringAfterLast(details['type'], '.'));
- nf.Common.populateField('read-only-processor-name', details['name']);
- nf.Common.populateField('read-only-concurrently-schedulable-tasks', details.config['concurrentlySchedulableTaskCount']);
- nf.Common.populateField('read-only-scheduling-period', details.config['schedulingPeriod']);
- nf.Common.populateField('read-only-penalty-duration', details.config['penaltyDuration']);
- nf.Common.populateField('read-only-yield-duration', details.config['yieldDuration']);
- nf.Common.populateField('read-only-run-duration', nf.Common.formatDuration(details.config['runDurationMillis']));
- nf.Common.populateField('read-only-bulletin-level', details.config['bulletinLevel']);
- nf.Common.populateField('read-only-processor-comments', details.config['comments']);
+ common.populateField('read-only-processor-id', details['id']);
+ common.populateField('read-only-processor-type', common.substringAfterLast(details['type'], '.'));
+ common.populateField('read-only-processor-name', details['name']);
+ common.populateField('read-only-concurrently-schedulable-tasks', details.config['concurrentlySchedulableTaskCount']);
+ common.populateField('read-only-scheduling-period', details.config['schedulingPeriod']);
+ common.populateField('read-only-penalty-duration', details.config['penaltyDuration']);
+ common.populateField('read-only-yield-duration', details.config['yieldDuration']);
+ common.populateField('read-only-run-duration', common.formatDuration(details.config['runDurationMillis']));
+ common.populateField('read-only-bulletin-level', details.config['bulletinLevel']);
+ common.populateField('read-only-processor-comments', details.config['comments']);
var showRunSchedule = true;
@@ -171,7 +204,7 @@ nf.ProcessorDetails = (function () {
} else {
schedulingStrategy = "On primary node";
}
- nf.Common.populateField('read-only-scheduling-strategy', schedulingStrategy);
+ common.populateField('read-only-scheduling-strategy', schedulingStrategy);
// only show the run schedule when applicable
if (showRunSchedule === true) {
@@ -183,13 +216,13 @@ nf.ProcessorDetails = (function () {
var executionNode = details.config['executionNode'];
// only show the execution-node when applicable
- if (nf.Canvas.isClustered() || executionNode === 'PRIMARY') {
+ if (clusterSummary.isClustered() || executionNode === 'PRIMARY') {
if (executionNode === 'ALL') {
executionNode = "All nodes";
} else if (executionNode === 'PRIMARY') {
executionNode = "Primary node only";
}
- nf.Common.populateField('read-only-execution-node', executionNode);
+ common.populateField('read-only-execution-node', executionNode);
$('#read-only-execution-node-options').show();
} else {
@@ -197,7 +230,7 @@ nf.ProcessorDetails = (function () {
}
// load the relationship list
- if (!nf.Common.isEmpty(details.relationships)) {
+ if (!common.isEmpty(details.relationships)) {
$.each(details.relationships, function (i, relationship) {
createRelationshipOption(relationship);
});
@@ -245,7 +278,7 @@ nf.ProcessorDetails = (function () {
}];
// determine if we should show the advanced button
- if (nf.Common.isDefinedAndNotNull(nf.CustomUi) && nf.Common.isDefinedAndNotNull(processor.config.customUiUrl) && processor.config.customUiUrl !== '') {
+ if (top === window && common.isDefinedAndNotNull(customUi) && common.isDefinedAndNotNull(processor.config.customUiUrl) && processor.config.customUiUrl !== '') {
buttons.push({
buttonText: 'Advanced',
clazz: 'fa fa-cog button-icon',
@@ -260,7 +293,7 @@ nf.ProcessorDetails = (function () {
$('#processor-details').modal('hide');
// show the custom ui
- nf.CustomUi.showCustomUi(processorResponse, processor.config.customUiUrl, false);
+ customUi.showCustomUi(processorResponse, processor.config.customUiUrl, false);
}
}
});
@@ -279,14 +312,14 @@ nf.ProcessorDetails = (function () {
}
}).fail(function (xhr, status, error) {
if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409) {
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'Error',
- dialogContent: nf.Common.escapeHtml(xhr.responseText)
+ dialogContent: common.escapeHtml(xhr.responseText)
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ errorHandler.handleAjaxError(xhr, status, error);
}
});
}
};
-}());
+}));
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-shell.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-shell.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-shell.js
index c51f03f..d3644ad 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-shell.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-shell.js
@@ -15,46 +15,64 @@
* limitations under the License.
*/
-/* global nf */
-
-$(document).ready(function () {
- // configure the dialog
- $('#shell-dialog').modal({
- scrollableContentStyle: 'scrollable',
- header: false,
- footer: false,
- responsive: {
- x: false,
- y: false
- }
- });
-
- // register a listener when the frame is closed
- $('#shell-close-button').click(function () {
- // close the shell
- $('#shell-dialog').modal('hide');
- });
-
- // register a listener when the frame is undocked
- $('#shell-undock-button').click(function () {
- var uri = $('#shell-iframe').attr('src');
- if (!nf.Common.isBlank(uri)) {
- // open the page and close the shell
- window.open(uri);
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.ContextMenu'],
+ function ($, common, contextMenu) {
+ return (nf.Shell = factory($, common, contextMenu));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Shell = factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.ContextMenu')));
+ } else {
+ nf.Shell = factory(root.$,
+ root.nf.Common,
+ root.nf.ContextMenu);
+ }
+}(this, function ($, common, contextMenu) {
+ 'use strict';
+
+ $(document).ready(function () {
+ // configure the dialog
+ $('#shell-dialog').modal({
+ scrollableContentStyle: 'scrollable',
+ header: false,
+ footer: false,
+ responsive: {
+ x: false,
+ y: false
+ }
+ });
+ // register a listener when the frame is closed
+ $('#shell-close-button').click(function () {
// close the shell
$('#shell-dialog').modal('hide');
- }
- });
-});
+ });
-nf.Shell = (function () {
+ // register a listener when the frame is undocked
+ $('#shell-undock-button').click(function () {
+ var uri = $('#shell-iframe').attr('src');
+ if (!common.isBlank(uri)) {
+ // open the page and close the shell
+ window.open(uri);
+
+ // close the shell
+ $('#shell-dialog').modal('hide');
+ }
+ });
+ });
var showPageResize = null;
var showContentResize = null;
return {
-
+
resizeContent: function (shell) {
var contentContainer = shell.find('.shell-content-container');
contentContainer.css({
@@ -73,24 +91,24 @@ nf.Shell = (function () {
});
shell.trigger("shell:iframe:resize");
},
-
+
/**
* Shows a page in the shell.
- *
+ *
* @argument {string} uri The URI to show
* @argument {boolean} canUndock Whether or not the shell is undockable
*/
showPage: function (uri, canUndock) {
// if the context menu is on this page, attempt to close
- if (nf.Common.isDefinedAndNotNull(nf.ContextMenu)) {
- nf.ContextMenu.hide();
+ if (common.isDefinedAndNotNull(contextMenu)) {
+ contextMenu.hide();
}
-
+
return $.Deferred(function (deferred) {
var shell = $('#shell');
// default undockable to true
- if (nf.Common.isNull(canUndock) || nf.Common.isUndefined(canUndock)) {
+ if (common.isNull(canUndock) || common.isUndefined(canUndock)) {
canUndock = true;
}
@@ -103,7 +121,7 @@ nf.Shell = (function () {
// register a new open handler
$('#shell-dialog').modal('setOpenHandler', function () {
- nf.Common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
+ common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
});
// show the custom processor ui
@@ -127,19 +145,19 @@ nf.Shell = (function () {
}).appendTo(shell);
}).promise();
},
-
+
/**
* Shows the specified content in the shell. When the shell is closed, the content
* will be hidden and returned to its previous location in the dom.
- *
+ *
* @argument {string} domId The id of the element to show in the shell
*/
showContent: function (domId) {
// if the context menu is on this page, attempt to close
- if (nf.Common.isDefinedAndNotNull(nf.ContextMenu)) {
- nf.ContextMenu.hide();
+ if (common.isDefinedAndNotNull(contextMenu)) {
+ contextMenu.hide();
}
-
+
return $.Deferred(function (deferred) {
var content = $(domId);
if (content.length) {
@@ -154,7 +172,7 @@ nf.Shell = (function () {
// close any open combos
var combos = $('.combo');
for (var i = 0, len = combos.length; i < len; i++) {
- if ($(combos[i]).is(':visible')){
+ if ($(combos[i]).is(':visible')) {
$(combos[i]).combo('close');
}
}
@@ -179,11 +197,11 @@ nf.Shell = (function () {
width: shell.width(),
height: shell.height()
}).append(content).appendTo(shell);
-
+
// show the content
content.show();
}
}).promise();
}
};
-}());
+}));
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js
index 17d40d8..04fbf00 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js
@@ -15,9 +15,32 @@
* limitations under the License.
*/
-/* global nf, d3 */
-
-nf.StatusHistory = (function () {
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'd3',
+ 'nf.Common',
+ 'nf.Dialog',
+ 'nf.ErrorHandler'],
+ function ($, d3, common, dialog, errorHandler) {
+ return (nf.StatusHistory = factory($, d3, common, dialog, errorHandler));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.StatusHistory = factory(require('jquery'),
+ require('d3'),
+ require('nf.Common'),
+ require('nf.Dialog'),
+ require('nf.ErrorHandler')));
+ } else {
+ nf.StatusHistory = factory(root.$,
+ root.d3,
+ root.nf.Common,
+ root.nf.Dialog,
+ root.nf.ErrorHandler);
+ }
+}(this, function ($, d3, common, dialog, errorHandler) {
var config = {
nifiInstanceId: 'nifi-instance-id',
nifiInstanceLabel: 'NiFi',
@@ -42,19 +65,19 @@ nf.StatusHistory = (function () {
*/
var formatters = {
'DURATION': function (d) {
- return nf.Common.formatDuration(d);
+ return common.formatDuration(d);
},
'COUNT': function (d) {
// need to handle floating point number since this formatter
// will also be used for average values
if (d % 1 === 0) {
- return nf.Common.formatInteger(d);
+ return common.formatInteger(d);
} else {
- return nf.Common.formatFloat(d);
+ return common.formatFloat(d);
}
},
'DATA_SIZE': function (d) {
- return nf.Common.formatDataSize(d);
+ return common.formatDataSize(d);
}
};
@@ -102,10 +125,10 @@ nf.StatusHistory = (function () {
// get the descriptors
var descriptors = componentStatusHistory.fieldDescriptors;
statusHistory.details = componentStatusHistory.componentDetails;
- statusHistory.selectedDescriptor = nf.Common.isUndefined(selectedDescriptor) ? descriptors[0] : selectedDescriptor;
+ statusHistory.selectedDescriptor = common.isUndefined(selectedDescriptor) ? descriptors[0] : selectedDescriptor;
// ensure enough status snapshots
- if (nf.Common.isDefinedAndNotNull(componentStatusHistory.aggregateSnapshots) && componentStatusHistory.aggregateSnapshots.length > 1) {
+ if (common.isDefinedAndNotNull(componentStatusHistory.aggregateSnapshots) && componentStatusHistory.aggregateSnapshots.length > 1) {
statusHistory.instances.push({
id: config.nifiInstanceId,
label: config.nifiInstanceLabel,
@@ -119,7 +142,7 @@ nf.StatusHistory = (function () {
// get the status for each node in the cluster if applicable
$.each(componentStatusHistory.nodeSnapshots, function (_, nodeSnapshots) {
// ensure enough status snapshots
- if (nf.Common.isDefinedAndNotNull(nodeSnapshots.statusSnapshots) && nodeSnapshots.statusSnapshots.length > 1) {
+ if (common.isDefinedAndNotNull(nodeSnapshots.statusSnapshots) && nodeSnapshots.statusSnapshots.length > 1) {
statusHistory.instances.push({
id: nodeSnapshots.nodeId,
label: nodeSnapshots.address + ':' + nodeSnapshots.apiPort,
@@ -145,7 +168,7 @@ nf.StatusHistory = (function () {
*/
var insufficientHistory = function () {
// notify the user
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'Status History',
dialogContent: 'Insufficient history, please try again later.'
});
@@ -193,7 +216,7 @@ nf.StatusHistory = (function () {
options.push({
text: d.label,
value: d.field,
- description: nf.Common.escapeHtml(d.description)
+ description: common.escapeHtml(d.description)
});
});
@@ -306,7 +329,7 @@ nf.StatusHistory = (function () {
// go through each instance of this status history
$.each(statusHistory.instances, function (_, instance) {
// if this is the first time this instance is being rendered, make it visible
- if (nf.Common.isUndefinedOrNull(instances[instance.id])) {
+ if (common.isUndefinedOrNull(instances[instance.id])) {
instances[instance.id] = true;
}
@@ -363,7 +386,7 @@ nf.StatusHistory = (function () {
var chartContainer = $('#status-history-chart-container').empty();
if (chartContainer.hasClass('ui-resizable')) {
chartContainer.resizable('destroy');
- chartContainer.removeAttr( "style" );
+ chartContainer.removeAttr("style");
}
// calculate the dimensions
@@ -440,8 +463,8 @@ nf.StatusHistory = (function () {
return s.timestamp;
});
});
- addDetailItem(detailsContainer, 'Start', nf.Common.formatDateTime(minDate));
- addDetailItem(detailsContainer, 'End', nf.Common.formatDateTime(maxDate));
+ addDetailItem(detailsContainer, 'Start', common.formatDateTime(minDate));
+ addDetailItem(detailsContainer, 'End', common.formatDateTime(maxDate));
// determine the x axis range
x.domain([minDate, maxDate]);
@@ -721,7 +744,7 @@ nf.StatusHistory = (function () {
.on('brush', brushed);
// conditionally set the brush extent
- if (nf.Common.isDefinedAndNotNull(brushExtent)) {
+ if (common.isDefinedAndNotNull(brushExtent)) {
brush = brush.extent(brushExtent);
}
@@ -902,7 +925,7 @@ nf.StatusHistory = (function () {
// -----------
dialog = $('#status-history-dialog');
var nfDialog = {};
- if (nf.Common.isDefinedAndNotNull(dialog.data('nf-dialog'))) {
+ if (common.isDefinedAndNotNull(dialog.data('nf-dialog'))) {
nfDialog = dialog.data('nf-dialog');
}
nfDialog['min-width'] = (dialog.width() / $(window).width()) * 100 + '%';
@@ -1019,12 +1042,12 @@ nf.StatusHistory = (function () {
$('<div class="setting-name"></div>').text(label).appendTo(detailContainer);
var detailElement = $('<div class="setting-field"></div>').text(value).appendTo(detailContainer);
- if (nf.Common.isDefinedAndNotNull(valueElementId)) {
+ if (common.isDefinedAndNotNull(valueElementId)) {
detailElement.attr('id', valueElementId);
}
};
- return {
+ var nfStatusHistory = {
/**
* Initializes the lineage graph.
*
@@ -1037,13 +1060,13 @@ nf.StatusHistory = (function () {
var statusHistory = $('#status-history-dialog').data('status-history');
if (statusHistory !== null) {
if (statusHistory.type === config.type.processor) {
- nf.StatusHistory.showProcessorChart(statusHistory.groupId, statusHistory.id, statusHistory.selectedDescriptor);
+ nfStatusHistory.showProcessorChart(statusHistory.groupId, statusHistory.id, statusHistory.selectedDescriptor);
} else if (statusHistory.type === config.type.processGroup) {
- nf.StatusHistory.showProcessGroupChart(statusHistory.groupId, statusHistory.id, statusHistory.selectedDescriptor);
+ nfStatusHistory.showProcessGroupChart(statusHistory.groupId, statusHistory.id, statusHistory.selectedDescriptor);
} else if (statusHistory.type === config.type.remoteProcessGroup) {
- nf.StatusHistory.showRemoteProcessGroupChart(statusHistory.groupId, statusHistory.id, statusHistory.selectedDescriptor);
+ nfStatusHistory.showRemoteProcessGroupChart(statusHistory.groupId, statusHistory.id, statusHistory.selectedDescriptor);
} else {
- nf.StatusHistory.showConnectionChart(statusHistory.groupId, statusHistory.id, statusHistory.selectedDescriptor);
+ nfStatusHistory.showConnectionChart(statusHistory.groupId, statusHistory.id, statusHistory.selectedDescriptor);
}
}
});
@@ -1088,7 +1111,7 @@ nf.StatusHistory = (function () {
if (e.target === window) {
updateChart();
}
- nf.Common.toggleScrollable($('#status-history-details').get(0));
+ common.toggleScrollable($('#status-history-details').get(0));
})
},
@@ -1106,7 +1129,7 @@ nf.StatusHistory = (function () {
dataType: 'json'
}).done(function (response) {
handleStatusHistoryResponse(groupId, connectionId, response.statusHistory, config.type.connection, selectedDescriptor);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
},
/**
@@ -1123,7 +1146,7 @@ nf.StatusHistory = (function () {
dataType: 'json'
}).done(function (response) {
handleStatusHistoryResponse(groupId, processorId, response.statusHistory, config.type.processor, selectedDescriptor);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
},
/**
@@ -1140,7 +1163,7 @@ nf.StatusHistory = (function () {
dataType: 'json'
}).done(function (response) {
handleStatusHistoryResponse(groupId, processGroupId, response.statusHistory, config.type.processGroup, selectedDescriptor);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
},
/**
@@ -1157,7 +1180,9 @@ nf.StatusHistory = (function () {
dataType: 'json'
}).done(function (response) {
handleStatusHistoryResponse(groupId, remoteProcessGroupId, response.statusHistory, config.type.remoteProcessGroup, selectedDescriptor);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
}
};
-}());
\ No newline at end of file
+
+ return nfStatusHistory;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js
index efb90fe..b96d61e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js
@@ -15,9 +15,19 @@
* limitations under the License.
*/
-/* global nf, d3 */
+/* global nf, define, module, require, exports */
-nf.Storage = (function () {
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([], function () {
+ return (nf.Storage = factory());
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Storage = factory());
+ } else {
+ nf.Storage = factory();
+ }
+}(this, function () {
// Store items for two days before being eligible for removal.
var MILLIS_PER_DAY = 86400000;
@@ -37,7 +47,7 @@ nf.Storage = (function () {
/**
* Checks the expiration for the specified entry.
- *
+ *
* @param {object} entry
* @returns {boolean}
*/
@@ -53,10 +63,10 @@ nf.Storage = (function () {
return false;
}
};
-
+
/**
* Gets an enty for the key. The entry expiration is not checked.
- *
+ *
* @param {string} key
*/
var getEntry = function (key) {
@@ -74,7 +84,7 @@ nf.Storage = (function () {
return null;
}
};
-
+
return {
/**
* Initializes the storage. Items will be persisted for two days. Once the scripts runs
@@ -85,17 +95,17 @@ nf.Storage = (function () {
try {
// get the next item
var key = localStorage.key(i);
-
+
// attempt to get the item which will expire if necessary
- nf.Storage.getItem(key);
+ this.getItem(key);
} catch (e) {
}
}
},
-
+
/**
* Stores the specified item.
- *
+ *
* @param {string} key
* @param {object} item
* @param {integer} expires
@@ -113,23 +123,23 @@ nf.Storage = (function () {
// store the item
localStorage.setItem(key, JSON.stringify(entry));
},
-
+
/**
* Returns whether there is an entry for this key. This will not check the expiration. If
* the entry is expired, it will return null on a subsequent getItem invocation.
- *
+ *
* @param {string} key
* @returns {boolean}
*/
hasItem: function (key) {
return getEntry(key) !== null;
},
-
+
/**
* Gets the item with the specified key. If an item with this key does
* not exist, null is returned. If an item exists but cannot be parsed
* or is malformed/unrecognized, null is returned.
- *
+ *
* @param {type} key
*/
getItem: function (key) {
@@ -140,7 +150,7 @@ nf.Storage = (function () {
// if the entry is expired, drop it and return null
if (checkExpiration(entry)) {
- nf.Storage.removeItem(key);
+ this.removeItem(key);
return null;
}
@@ -151,11 +161,11 @@ nf.Storage = (function () {
return null;
}
},
-
+
/**
* Gets the expiration for the specified item. This will not check the expiration. If
* the entry is expired, it will return null on a subsequent getItem invocation.
- *
+ *
* @param {string} key
* @returns {integer}
*/
@@ -172,14 +182,14 @@ nf.Storage = (function () {
return null;
}
},
-
+
/**
* Removes the item with the specified key.
- *
+ *
* @param {type} key
*/
removeItem: function (key) {
localStorage.removeItem(key);
}
};
-}());
\ No newline at end of file
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-universal-capture.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-universal-capture.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-universal-capture.js
index 6db1cc5..ffadf64 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-universal-capture.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-universal-capture.js
@@ -15,108 +15,122 @@
* limitations under the License.
*/
-/**
- * Captures keydown on the window to ensure certain keystrokes are handled in a consistent manner, particularly those
- * that can lead to browser navigation/reload.
- */
-$(document).ready(function ($) {
- // setup a listener to ensure keystrokes are being overridden in a consistent manner
- $(window).on('keydown', function (evt) {
- // consider escape, before checking dialogs
- var isCtrl = evt.ctrlKey || evt.metaKey;
- if (!isCtrl && evt.keyCode === 27) {
- // esc
-
- // prevent escape when editing a property with allowable values - that component does not handle key
- // events so it can bubble up to here. once here we are unable to cancel the current edit so we simply
- // return. this is not an issue for viewing in read only mode as the table is not in an edit mode. this
- // is not an issue for other fields as they can handle key events locally and cancel the edit appropriately
- var visibleCombo = $('div.value-combo');
- if (visibleCombo.is(':visible') && visibleCombo.parent().hasClass('combo-editor')) {
- return;
- }
+/* global nf, define, module, require, exports */
- // consider property detail dialogs
- if ($('div.property-detail').is(':visible')) {
- nf.UniversalCapture.removeAllPropertyDetailDialogs();
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery'], function ($) {
+ return (nf.UniversalCapture = factory($));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.UniversalCapture = factory(require('jquery')));
+ } else {
+ nf.UniversalCapture = factory(root.$);
+ }
+}(this, function ($) {
+ 'use strict';
- // prevent further bubbling as we're already handled it
- evt.stopImmediatePropagation();
- evt.preventDefault();
- } else {
- var target = $(evt.target);
- if (target.length) {
- // special handling for body as the target
- var cancellables = $('.cancellable');
- if (cancellables.length) {
- var zIndexMax = null;
- var dialogMax = null;
-
- // identify the top most cancellable
- $.each(cancellables, function (_, cancellable) {
- var dialog = $(cancellable);
- var zIndex = dialog.css('zIndex');
-
- // if the dialog has a zIndex consider it
- if (dialog.is(':visible') && (zIndex !== null && typeof zIndex !== 'undefined')) {
- zIndex = parseInt(zIndex, 10);
- if (zIndexMax === null || zIndex > zIndexMax) {
- zIndexMax = zIndex;
- dialogMax = dialog;
+ /**
+ * Captures keydown on the window to ensure certain keystrokes are handled in a consistent manner, particularly those
+ * that can lead to browser navigation/reload.
+ */
+ $(document).ready(function ($) {
+ // setup a listener to ensure keystrokes are being overridden in a consistent manner
+ $(window).on('keydown', function (evt) {
+ // consider escape, before checking dialogs
+ var isCtrl = evt.ctrlKey || evt.metaKey;
+ if (!isCtrl && evt.keyCode === 27) {
+ // esc
+
+ // prevent escape when editing a property with allowable values - that component does not handle key
+ // events so it can bubble up to here. once here we are unable to cancel the current edit so we simply
+ // return. this is not an issue for viewing in read only mode as the table is not in an edit mode. this
+ // is not an issue for other fields as they can handle key events locally and cancel the edit appropriately
+ var visibleCombo = $('div.value-combo');
+ if (visibleCombo.is(':visible') && visibleCombo.parent().hasClass('combo-editor')) {
+ return;
+ }
+
+ // consider property detail dialogs
+ if ($('div.property-detail').is(':visible')) {
+ nfUniversalDialog.removeAllPropertyDetailDialogs();
+
+ // prevent further bubbling as we're already handled it
+ evt.stopImmediatePropagation();
+ evt.preventDefault();
+ } else {
+ var target = $(evt.target);
+ if (target.length) {
+ // special handling for body as the target
+ var cancellables = $('.cancellable');
+ if (cancellables.length) {
+ var zIndexMax = null;
+ var dialogMax = null;
+
+ // identify the top most cancellable
+ $.each(cancellables, function (_, cancellable) {
+ var dialog = $(cancellable);
+ var zIndex = dialog.css('zIndex');
+
+ // if the dialog has a zIndex consider it
+ if (dialog.is(':visible') && (zIndex !== null && typeof zIndex !== 'undefined')) {
+ zIndex = parseInt(zIndex, 10);
+ if (zIndexMax === null || zIndex > zIndexMax) {
+ zIndexMax = zIndex;
+ dialogMax = dialog;
+ }
}
- }
- });
-
- // if we've identified a dialog to close do so and stop propagation
- if (dialogMax !== null) {
- // hide the cancellable
- if (dialogMax.hasClass('modal')) {
- dialogMax.modal('hide');
- } else {
- dialogMax.hide();
- }
+ });
- // prevent further bubbling as we're already handled it
- evt.stopImmediatePropagation();
- evt.preventDefault();
+ // if we've identified a dialog to close do so and stop propagation
+ if (dialogMax !== null) {
+ // hide the cancellable
+ if (dialogMax.hasClass('modal')) {
+ dialogMax.modal('hide');
+ } else {
+ dialogMax.hide();
+ }
- return;
+ // prevent further bubbling as we're already handled it
+ evt.stopImmediatePropagation();
+ evt.preventDefault();
+
+ return;
+ }
}
- }
- // now see if we're in a frame
- if (top !== window) {
- // and our parent has shell defined
- if (typeof parent.nf !== 'undefined' && typeof parent.nf.Shell !== 'undefined') {
- parent.$('#shell-close-button').click();
+ // now see if we're in a frame
+ if (top !== window) {
+ // and our parent has shell defined
+ if (typeof parent.nf !== 'undefined' && typeof parent.nf.Shell !== 'undefined') {
+ parent.$('#shell-close-button').click();
- // prevent further bubbling as we're already handled it
- evt.stopImmediatePropagation();
- evt.preventDefault();
+ // prevent further bubbling as we're already handled it
+ evt.stopImmediatePropagation();
+ evt.preventDefault();
- return;
+ return;
+ }
}
}
}
- }
- } else {
- if (isCtrl) {
- if (evt.keyCode === 82) {
- // ctrl-r
- evt.preventDefault();
- }
} else {
- if (!$('input, textarea').is(':focus') && (evt.keyCode == 8 || evt.keyCode === 46)) {
- // backspace or delete
- evt.preventDefault();
+ if (isCtrl) {
+ if (evt.keyCode === 82) {
+ // ctrl-r
+ evt.preventDefault();
+ }
+ } else {
+ if (!$('input, textarea').is(':focus') && (evt.keyCode == 8 || evt.keyCode === 46)) {
+ // backspace or delete
+ evt.preventDefault();
+ }
}
}
- }
+ });
});
-});
-nf.UniversalCapture = (function() {
- return {
+ var nfUniversalDialog = {
/**
* Removes all read only property detail dialogs.
*/
@@ -127,4 +141,6 @@ nf.UniversalCapture = (function() {
propertyDetails.hide().remove();
}
};
-}());
\ No newline at end of file
+
+ return nfUniversalDialog;
+}));
\ No newline at end of file
[04/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js
index 7da8593..2826e3a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js
@@ -15,1446 +15,1508 @@
* limitations under the License.
*/
-/* global nf, top, Slick */
-
-nf.ng.ProvenanceTable = function (provenanceLineageCtrl) {
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'Slick',
+ 'nf.Common',
+ 'nf.Dialog',
+ 'nf.ErrorHandler',
+ 'nf.Storage',
+ 'nf.ng.Bridge'],
+ function ($, Slick, common, dialog, errorHandler, storage, angularBridge) {
+ return (nf.ng.ProvenanceTable = factory($, Slick, common, dialog, errorHandler, storage, angularBridge));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.ProvenanceTable =
+ factory(require('jquery'),
+ require('Slick'),
+ require('nf.Common'),
+ require('nf.Dialog'),
+ require('nf.ErrorHandler'),
+ require('nf.Storage'),
+ require('nf.ng.Bridge')));
+ } else {
+ nf.ng.ProvenanceTable = factory(root.$,
+ root.Slick,
+ root.nf.Common,
+ root.nf.Dialog,
+ root.nf.ErrorHandler,
+ root.nf.Storage,
+ root.nf.ng.Bridge);
+ }
+}(this, function ($, Slick, common, dialog, errorHandler, storage, angularBridge) {
'use strict';
- /**
- * Configuration object used to hold a number of configuration items.
- */
- var config = {
- maxResults: 1000,
- defaultStartTime: '00:00:00',
- defaultEndTime: '23:59:59',
- styles: {
- hidden: 'hidden'
- },
- urls: {
- searchOptions: '../nifi-api/provenance/search-options',
- replays: '../nifi-api/provenance-events/replays',
- provenance: '../nifi-api/provenance',
- provenanceEvents: '../nifi-api/provenance-events/',
- clusterSearch: '../nifi-api/flow/cluster/search-results',
- d3Script: 'js/d3/d3.min.js',
- lineageScript: 'js/nf/provenance/nf-provenance-lineage.js',
- uiExtensionToken: '../nifi-api/access/ui-extension-token',
- downloadToken: '../nifi-api/access/download-token'
- }
- };
+ var nfProvenanceTable = function (provenanceLineageCtrl) {
+ 'use strict';
- /**
- * The last search performed
- */
- var cachedQuery = {};
-
- /**
- * Downloads the content for the provenance event that is currently loaded in the specified direction.
- *
- * @param {string} direction
- */
- var downloadContent = function (direction) {
- var eventId = $('#provenance-event-id').text();
-
- // build the url
- var dataUri = config.urls.provenanceEvents + encodeURIComponent(eventId) + '/content/' + encodeURIComponent(direction);
-
- // perform the request once we've received a token
- nf.Common.getAccessToken(config.urls.downloadToken).done(function (downloadToken) {
- var parameters = {};
-
- // conditionally include the ui extension token
- if (!nf.Common.isBlank(downloadToken)) {
- parameters['access_token'] = downloadToken;
+ /**
+ * Configuration object used to hold a number of configuration items.
+ */
+ var config = {
+ maxResults: 1000,
+ defaultStartTime: '00:00:00',
+ defaultEndTime: '23:59:59',
+ styles: {
+ hidden: 'hidden'
+ },
+ urls: {
+ searchOptions: '../nifi-api/provenance/search-options',
+ replays: '../nifi-api/provenance-events/replays',
+ provenance: '../nifi-api/provenance',
+ provenanceEvents: '../nifi-api/provenance-events/',
+ clusterSearch: '../nifi-api/flow/cluster/search-results',
+ d3Script: 'js/d3/d3.min.js',
+ lineageScript: 'js/nf/provenance/nf-provenance-lineage.js',
+ uiExtensionToken: '../nifi-api/access/ui-extension-token',
+ downloadToken: '../nifi-api/access/download-token'
}
+ };
- // conditionally include the cluster node id
- var clusterNodeId = $('#provenance-event-cluster-node-id').text();
- if (!nf.Common.isBlank(clusterNodeId)) {
- parameters['clusterNodeId'] = clusterNodeId;
- }
+ /**
+ * The last search performed
+ */
+ var cachedQuery = {};
- // open the url
- if ($.isEmptyObject(parameters)) {
- window.open(dataUri);
- } else {
- window.open(dataUri + '?' + $.param(parameters));
- }
- }).fail(function () {
- nf.Dialog.showOkDialog({
- headerText: 'Provenance',
- dialogContent: 'Unable to generate access token for downloading content.'
- });
- });
- };
+ /**
+ * Downloads the content for the provenance event that is currently loaded in the specified direction.
+ *
+ * @param {string} direction
+ */
+ var downloadContent = function (direction) {
+ var eventId = $('#provenance-event-id').text();
- /**
- * Views the content for the provenance event that is currently loaded in the specified direction.
- *
- * @param {string} direction
- */
- var viewContent = function (direction) {
- var controllerUri = $('#nifi-controller-uri').text();
- var eventId = $('#provenance-event-id').text();
-
- // build the uri to the data
- var dataUri = controllerUri + 'provenance-events/' + encodeURIComponent(eventId) + '/content/' + encodeURIComponent(direction);
-
- // generate tokens as necessary
- var getAccessTokens = $.Deferred(function (deferred) {
- if (nf.Storage.hasItem('jwt')) {
- // generate a token for the ui extension and another for the callback
- var uiExtensionToken = $.ajax({
- type: 'POST',
- url: config.urls.uiExtensionToken
- });
- var downloadToken = $.ajax({
- type: 'POST',
- url: config.urls.downloadToken
+ // build the url
+ var dataUri = config.urls.provenanceEvents + encodeURIComponent(eventId) + '/content/' + encodeURIComponent(direction);
+
+ // perform the request once we've received a token
+ common.getAccessToken(config.urls.downloadToken).done(function (downloadToken) {
+ var parameters = {};
+
+ // conditionally include the ui extension token
+ if (!common.isBlank(downloadToken)) {
+ parameters['access_token'] = downloadToken;
+ }
+
+ // conditionally include the cluster node id
+ var clusterNodeId = $('#provenance-event-cluster-node-id').text();
+ if (!common.isBlank(clusterNodeId)) {
+ parameters['clusterNodeId'] = clusterNodeId;
+ }
+
+ // open the url
+ if ($.isEmptyObject(parameters)) {
+ window.open(dataUri);
+ } else {
+ window.open(dataUri + '?' + $.param(parameters));
+ }
+ }).fail(function () {
+ dialog.showOkDialog({
+ headerText: 'Provenance',
+ dialogContent: 'Unable to generate access token for downloading content.'
});
+ });
+ };
- // wait for each token
- $.when(uiExtensionToken, downloadToken).done(function (uiExtensionTokenResult, downloadTokenResult) {
- var uiExtensionToken = uiExtensionTokenResult[0];
- var downloadToken = downloadTokenResult[0];
- deferred.resolve(uiExtensionToken, downloadToken);
- }).fail(function () {
- nf.Dialog.showOkDialog({
- headerText: 'Provenance',
- dialogContent: 'Unable to generate access token for viewing content.'
+ /**
+ * Views the content for the provenance event that is currently loaded in the specified direction.
+ *
+ * @param {string} direction
+ */
+ var viewContent = function (direction) {
+ var controllerUri = $('#nifi-controller-uri').text();
+ var eventId = $('#provenance-event-id').text();
+
+ // build the uri to the data
+ var dataUri = controllerUri + 'provenance-events/' + encodeURIComponent(eventId) + '/content/' + encodeURIComponent(direction);
+
+ // generate tokens as necessary
+ var getAccessTokens = $.Deferred(function (deferred) {
+ if (storage.hasItem('jwt')) {
+ // generate a token for the ui extension and another for the callback
+ var uiExtensionToken = $.ajax({
+ type: 'POST',
+ url: config.urls.uiExtensionToken
+ });
+ var downloadToken = $.ajax({
+ type: 'POST',
+ url: config.urls.downloadToken
});
- deferred.reject();
- });
- } else {
- deferred.resolve('', '');
- }
- }).promise();
- // perform the request after we've received the tokens
- getAccessTokens.done(function (uiExtensionToken, downloadToken) {
- var dataUriParameters = {};
+ // wait for each token
+ $.when(uiExtensionToken, downloadToken).done(function (uiExtensionTokenResult, downloadTokenResult) {
+ var uiExtensionToken = uiExtensionTokenResult[0];
+ var downloadToken = downloadTokenResult[0];
+ deferred.resolve(uiExtensionToken, downloadToken);
+ }).fail(function () {
+ dialog.showOkDialog({
+ headerText: 'Provenance',
+ dialogContent: 'Unable to generate access token for viewing content.'
+ });
+ deferred.reject();
+ });
+ } else {
+ deferred.resolve('', '');
+ }
+ }).promise();
- // conditionally include the cluster node id
- var clusterNodeId = $('#provenance-event-cluster-node-id').text();
- if (!nf.Common.isBlank(clusterNodeId)) {
- dataUriParameters['clusterNodeId'] = clusterNodeId;
- }
+ // perform the request after we've received the tokens
+ getAccessTokens.done(function (uiExtensionToken, downloadToken) {
+ var dataUriParameters = {};
- // include the download token if applicable
- if (!nf.Common.isBlank(downloadToken)) {
- dataUriParameters['access_token'] = downloadToken;
- }
+ // conditionally include the cluster node id
+ var clusterNodeId = $('#provenance-event-cluster-node-id').text();
+ if (!common.isBlank(clusterNodeId)) {
+ dataUriParameters['clusterNodeId'] = clusterNodeId;
+ }
- // include parameters if necessary
- if ($.isEmptyObject(dataUriParameters) === false) {
- dataUri = dataUri + '?' + $.param(dataUriParameters);
- }
+ // include the download token if applicable
+ if (!common.isBlank(downloadToken)) {
+ dataUriParameters['access_token'] = downloadToken;
+ }
- // open the content viewer
- var contentViewerUrl = $('#nifi-content-viewer-url').text();
+ // include parameters if necessary
+ if ($.isEmptyObject(dataUriParameters) === false) {
+ dataUri = dataUri + '?' + $.param(dataUriParameters);
+ }
- // if there's already a query string don't add another ?... this assumes valid
- // input meaning that if the url has already included a ? it also contains at
- // least one query parameter
- if (contentViewerUrl.indexOf('?') === -1) {
- contentViewerUrl += '?';
- } else {
- contentViewerUrl += '&';
- }
+ // open the content viewer
+ var contentViewerUrl = $('#nifi-content-viewer-url').text();
- var contentViewerParameters = {
- 'ref': dataUri
- };
+ // if there's already a query string don't add another ?... this assumes valid
+ // input meaning that if the url has already included a ? it also contains at
+ // least one query parameter
+ if (contentViewerUrl.indexOf('?') === -1) {
+ contentViewerUrl += '?';
+ } else {
+ contentViewerUrl += '&';
+ }
- // include the download token if applicable
- if (!nf.Common.isBlank(uiExtensionToken)) {
- contentViewerParameters['access_token'] = uiExtensionToken;
- }
+ var contentViewerParameters = {
+ 'ref': dataUri
+ };
- // open the content viewer
- window.open(contentViewerUrl + $.param(contentViewerParameters));
- });
- };
+ // include the download token if applicable
+ if (!common.isBlank(uiExtensionToken)) {
+ contentViewerParameters['access_token'] = uiExtensionToken;
+ }
- /**
- * Initializes the details dialog.
- */
- var initDetailsDialog = function () {
- // initialize the properties tabs
- $('#event-details-tabs').tabbs({
- tabStyle: 'tab',
- selectedTabStyle: 'selected-tab',
- scrollableTabContentStyle: 'scrollable',
- tabs: [{
- name: 'Details',
- tabContentId: 'event-details-tab-content'
- }, {
- name: 'Attributes',
- tabContentId: 'attributes-tab-content'
- }, {
- name: 'Content',
- tabContentId: 'content-tab-content'
- }]
- });
-
- $('#event-details-dialog').modal({
- scrollableContentStyle: 'scrollable',
- headerText: 'Provenance Event',
- buttons: [{
- buttonText: 'Ok',
- color: {
- base: '#728E9B',
- hover: '#004849',
- text: '#ffffff'
- },
+ // open the content viewer
+ window.open(contentViewerUrl + $.param(contentViewerParameters));
+ });
+ };
+
+ /**
+ * Initializes the details dialog.
+ */
+ var initDetailsDialog = function () {
+ // initialize the properties tabs
+ $('#event-details-tabs').tabbs({
+ tabStyle: 'tab',
+ selectedTabStyle: 'selected-tab',
+ scrollableTabContentStyle: 'scrollable',
+ tabs: [{
+ name: 'Details',
+ tabContentId: 'event-details-tab-content'
+ }, {
+ name: 'Attributes',
+ tabContentId: 'attributes-tab-content'
+ }, {
+ name: 'Content',
+ tabContentId: 'content-tab-content'
+ }]
+ });
+
+ $('#event-details-dialog').modal({
+ scrollableContentStyle: 'scrollable',
+ headerText: 'Provenance Event',
+ buttons: [{
+ buttonText: 'Ok',
+ color: {
+ base: '#728E9B',
+ hover: '#004849',
+ text: '#ffffff'
+ },
+ handler: {
+ click: function () {
+ $('#event-details-dialog').modal('hide');
+ }
+ }
+ }],
handler: {
- click: function () {
- $('#event-details-dialog').modal('hide');
+ close: function () {
+ // clear the details
+ $('#additional-provenance-details').empty();
+ $('#attributes-container').empty();
+ $('#parent-flowfiles-container').empty();
+ $('#child-flowfiles-container').empty();
+ $('#provenance-event-cluster-node-id').text('');
+ $('#modified-attribute-toggle').removeClass('checkbox-checked').addClass('checkbox-unchecked');
+ },
+ open: function () {
+ common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
}
}
- }],
- handler: {
- close: function () {
- // clear the details
- $('#additional-provenance-details').empty();
- $('#attributes-container').empty();
- $('#parent-flowfiles-container').empty();
- $('#child-flowfiles-container').empty();
- $('#provenance-event-cluster-node-id').text('');
- $('#modified-attribute-toggle').removeClass('checkbox-checked').addClass('checkbox-unchecked');
- },
- open: function () {
- nf.Common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
- }
- }
- });
-
- // toggle which attributes are visible
- $('#modified-attribute-toggle').on('click', function () {
- var unmodifiedAttributes = $('#attributes-container div.attribute-unmodified');
- if (unmodifiedAttributes.is(':visible')) {
- $('#attributes-container div.attribute-unmodified').hide();
- } else {
- $('#attributes-container div.attribute-unmodified').show();
- }
- });
-
- // input download
- $('#input-content-download').on('click', function () {
- downloadContent('input');
- });
-
- // output download
- $('#output-content-download').on('click', function () {
- downloadContent('output');
- });
-
- // if a content viewer url is specified, use it
- if (nf.Common.isContentViewConfigured()) {
- // input view
- $('#input-content-view').on('click', function () {
- viewContent('input');
});
- // output view
- $('#output-content-view').on('click', function () {
- viewContent('output');
+ // toggle which attributes are visible
+ $('#modified-attribute-toggle').on('click', function () {
+ var unmodifiedAttributes = $('#attributes-container div.attribute-unmodified');
+ if (unmodifiedAttributes.is(':visible')) {
+ $('#attributes-container div.attribute-unmodified').hide();
+ } else {
+ $('#attributes-container div.attribute-unmodified').show();
+ }
});
- }
- // handle the replay and downloading
- $('#replay-content').on('click', function () {
- var replayEntity = {
- 'eventId': $('#provenance-event-id').text()
- };
+ // input download
+ $('#input-content-download').on('click', function () {
+ downloadContent('input');
+ });
- // conditionally include the cluster node id
- var clusterNodeId = $('#provenance-event-cluster-node-id').text();
- if (!nf.Common.isBlank(clusterNodeId)) {
- replayEntity['clusterNodeId'] = clusterNodeId;
- }
+ // output download
+ $('#output-content-download').on('click', function () {
+ downloadContent('output');
+ });
- $.ajax({
- type: 'POST',
- url: config.urls.replays,
- data: JSON.stringify(replayEntity),
- dataType: 'json',
- contentType: 'application/json'
- }).done(function (response) {
- nf.Dialog.showOkDialog({
- headerText: 'Provenance',
- dialogContent: 'Successfully submitted replay request.'
+ // if a content viewer url is specified, use it
+ if (common.isContentViewConfigured()) {
+ // input view
+ $('#input-content-view').on('click', function () {
+ viewContent('input');
});
- }).fail(nf.Common.handleAjaxError);
- $('#event-details-dialog').modal('hide');
- });
+ // output view
+ $('#output-content-view').on('click', function () {
+ viewContent('output');
+ });
+ }
- // show the replay panel
- $('#replay-details').show();
- };
+ // handle the replay and downloading
+ $('#replay-content').on('click', function () {
+ var replayEntity = {
+ 'eventId': $('#provenance-event-id').text()
+ };
- /**
- * Initializes the search dialog.
- *
- * @param {boolean} isClustered Whether or not this NiFi clustered
- */
- var initSearchDialog = function (isClustered, provenanceTableCtrl) {
- // configure the start and end date picker
- $('#provenance-search-start-date, #provenance-search-end-date').datepicker({
- showAnim: '',
- showOtherMonths: true,
- selectOtherMonths: true
- });
-
- // initialize the default start date/time
- $('#provenance-search-start-date').datepicker('setDate', '+0d');
- $('#provenance-search-end-date').datepicker('setDate', '+0d');
- $('#provenance-search-start-time').val('00:00:00');
- $('#provenance-search-end-time').val('23:59:59');
-
- // initialize the default file sizes
- $('#provenance-search-minimum-file-size').val('');
- $('#provenance-search-maximum-file-size').val('');
-
- // allow users to be able to search a specific node
- if (isClustered) {
- // make the dialog larger to support the select location
- $('#provenance-search-dialog').height(575);
-
- // get the nodes in the cluster
- $.ajax({
- type: 'GET',
- url: config.urls.clusterSearch,
- dataType: 'json'
- }).done(function (response) {
- var nodeResults = response.nodeResults;
-
- // create the searchable options
- var searchableOptions = [{
- text: 'cluster',
- value: null
- }];
-
- // sort the nodes
- nodeResults.sort(function (a, b) {
- var compA = a.address.toUpperCase();
- var compB = b.address.toUpperCase();
- return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
- });
+ // conditionally include the cluster node id
+ var clusterNodeId = $('#provenance-event-cluster-node-id').text();
+ if (!common.isBlank(clusterNodeId)) {
+ replayEntity['clusterNodeId'] = clusterNodeId;
+ }
- // add each node
- $.each(nodeResults, function (_, nodeResult) {
- searchableOptions.push({
- text: nodeResult.address,
- value: nodeResult.id
+ $.ajax({
+ type: 'POST',
+ url: config.urls.replays,
+ data: JSON.stringify(replayEntity),
+ dataType: 'json',
+ contentType: 'application/json'
+ }).done(function (response) {
+ dialog.showOkDialog({
+ headerText: 'Provenance',
+ dialogContent: 'Successfully submitted replay request.'
});
- });
+ }).fail(errorHandler.handleAjaxError);
- // populate the combo
- $('#provenance-search-location').combo({
- options: searchableOptions
- });
- }).fail(nf.Common.handleAjaxError);
+ $('#event-details-dialog').modal('hide');
+ });
- // show the node search combo
- $('#provenance-search-location-container').show();
- }
+ // show the replay panel
+ $('#replay-details').show();
+ };
- // configure the search dialog
- $('#provenance-search-dialog').modal({
- scrollableContentStyle: 'scrollable',
- headerText: 'Search Events',
- buttons: [{
- buttonText: 'Search',
- color: {
- base: '#728E9B',
- hover: '#004849',
- text: '#ffffff'
- },
- handler: {
- click: function () {
- $('#provenance-search-dialog').modal('hide');
-
- var search = {};
-
- // extract the start date time
- var startDate = $.trim($('#provenance-search-start-date').val());
- var startTime = $.trim($('#provenance-search-start-time').val());
- if (startDate !== '') {
- if (startTime === '') {
- startTime = config.defaultStartTime;
- $('#provenance-search-start-time').val(startTime);
- }
- search['startDate'] = startDate + ' ' + startTime + ' ' + $('.timezone:first').text();
- }
+ /**
+ * Initializes the search dialog.
+ *
+ * @param {boolean} isClustered Whether or not this NiFi clustered
+ */
+ var initSearchDialog = function (isClustered, provenanceTableCtrl) {
+ // configure the start and end date picker
+ $('#provenance-search-start-date, #provenance-search-end-date').datepicker({
+ showAnim: '',
+ showOtherMonths: true,
+ selectOtherMonths: true
+ });
- // extract the end date time
- var endDate = $.trim($('#provenance-search-end-date').val());
- var endTime = $.trim($('#provenance-search-end-time').val());
- if (endDate !== '') {
- if (endTime === '') {
- endTime = config.defaultEndTime;
- $('#provenance-search-end-time').val(endTime);
- }
- search['endDate'] = endDate + ' ' + endTime + ' ' + $('.timezone:first').text();
- }
+ // initialize the default start date/time
+ $('#provenance-search-start-date').datepicker('setDate', '+0d');
+ $('#provenance-search-end-date').datepicker('setDate', '+0d');
+ $('#provenance-search-start-time').val('00:00:00');
+ $('#provenance-search-end-time').val('23:59:59');
- // extract the min/max file size
- var minFileSize = $.trim($('#provenance-search-minimum-file-size').val());
- if (minFileSize !== '') {
- search['minimumFileSize'] = minFileSize;
- }
+ // initialize the default file sizes
+ $('#provenance-search-minimum-file-size').val('');
+ $('#provenance-search-maximum-file-size').val('');
- var maxFileSize = $.trim($('#provenance-search-maximum-file-size').val());
- if (maxFileSize !== '') {
- search['maximumFileSize'] = maxFileSize;
- }
+ // allow users to be able to search a specific node
+ if (isClustered) {
+ // make the dialog larger to support the select location
+ $('#provenance-search-dialog').height(575);
+
+ // get the nodes in the cluster
+ $.ajax({
+ type: 'GET',
+ url: config.urls.clusterSearch,
+ dataType: 'json'
+ }).done(function (response) {
+ var nodeResults = response.nodeResults;
+
+ // create the searchable options
+ var searchableOptions = [{
+ text: 'cluster',
+ value: null
+ }];
+
+ // sort the nodes
+ nodeResults.sort(function (a, b) {
+ var compA = a.address.toUpperCase();
+ var compB = b.address.toUpperCase();
+ return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
+ });
- // limit search to a specific node
- if (isClustered) {
- var searchLocation = $('#provenance-search-location').combo('getSelectedOption');
- if (searchLocation.value !== null) {
- search['clusterNodeId'] = searchLocation.value;
- }
- }
+ // add each node
+ $.each(nodeResults, function (_, nodeResult) {
+ searchableOptions.push({
+ text: nodeResult.address,
+ value: nodeResult.id
+ });
+ });
- // add the search criteria
- search['searchTerms'] = getSearchCriteria();
+ // populate the combo
+ $('#provenance-search-location').combo({
+ options: searchableOptions
+ });
+ }).fail(errorHandler.handleAjaxError);
- // reload the table
- provenanceTableCtrl.loadProvenanceTable(search);
- }
- }
- },
- {
- buttonText: 'Cancel',
+ // show the node search combo
+ $('#provenance-search-location-container').show();
+ }
+
+ // configure the search dialog
+ $('#provenance-search-dialog').modal({
+ scrollableContentStyle: 'scrollable',
+ headerText: 'Search Events',
+ buttons: [{
+ buttonText: 'Search',
color: {
- base: '#E3E8EB',
- hover: '#C7D2D7',
- text: '#004849'
+ base: '#728E9B',
+ hover: '#004849',
+ text: '#ffffff'
},
handler: {
click: function () {
$('#provenance-search-dialog').modal('hide');
+
+ var search = {};
+
+ // extract the start date time
+ var startDate = $.trim($('#provenance-search-start-date').val());
+ var startTime = $.trim($('#provenance-search-start-time').val());
+ if (startDate !== '') {
+ if (startTime === '') {
+ startTime = config.defaultStartTime;
+ $('#provenance-search-start-time').val(startTime);
+ }
+ search['startDate'] = startDate + ' ' + startTime + ' ' + $('.timezone:first').text();
+ }
+
+ // extract the end date time
+ var endDate = $.trim($('#provenance-search-end-date').val());
+ var endTime = $.trim($('#provenance-search-end-time').val());
+ if (endDate !== '') {
+ if (endTime === '') {
+ endTime = config.defaultEndTime;
+ $('#provenance-search-end-time').val(endTime);
+ }
+ search['endDate'] = endDate + ' ' + endTime + ' ' + $('.timezone:first').text();
+ }
+
+ // extract the min/max file size
+ var minFileSize = $.trim($('#provenance-search-minimum-file-size').val());
+ if (minFileSize !== '') {
+ search['minimumFileSize'] = minFileSize;
+ }
+
+ var maxFileSize = $.trim($('#provenance-search-maximum-file-size').val());
+ if (maxFileSize !== '') {
+ search['maximumFileSize'] = maxFileSize;
+ }
+
+ // limit search to a specific node
+ if (isClustered) {
+ var searchLocation = $('#provenance-search-location').combo('getSelectedOption');
+ if (searchLocation.value !== null) {
+ search['clusterNodeId'] = searchLocation.value;
+ }
+ }
+
+ // add the search criteria
+ search['searchTerms'] = getSearchCriteria();
+
+ // reload the table
+ provenanceTableCtrl.loadProvenanceTable(search);
}
}
- }]
- });
-
- return $.ajax({
- type: 'GET',
- url: config.urls.searchOptions,
- dataType: 'json'
- }).done(function (response) {
- var provenanceOptions = response.provenanceOptions;
-
- // load all searchable fields
- $.each(provenanceOptions.searchableFields, function (_, field) {
- appendSearchableField(field);
+ },
+ {
+ buttonText: 'Cancel',
+ color: {
+ base: '#E3E8EB',
+ hover: '#C7D2D7',
+ text: '#004849'
+ },
+ handler: {
+ click: function () {
+ $('#provenance-search-dialog').modal('hide');
+ }
+ }
+ }]
});
- });
- };
- /**
- * Initializes the provenance query dialog.
- */
- var initProvenanceQueryDialog = function () {
- // initialize the dialog
- $('#provenance-query-dialog').modal({
- scrollableContentStyle: 'scrollable',
- headerText: 'Searching provenance events...'
- });
- };
+ return $.ajax({
+ type: 'GET',
+ url: config.urls.searchOptions,
+ dataType: 'json'
+ }).done(function (response) {
+ var provenanceOptions = response.provenanceOptions;
- /**
- * Appends the specified searchable field to the search dialog.
- *
- * @param {type} field The searchable field
- */
- var appendSearchableField = function (field) {
- var searchableField = $('<div class="searchable-field"></div>').appendTo('#searchable-fields-container');
- $('<span class="searchable-field-id hidden"></span>').text(field.id).appendTo(searchableField);
- $('<div class="searchable-field-name"></div>').text(field.label).appendTo(searchableField);
- $('<div class="searchable-field-value"><input type="text" class="searchable-field-input"/></div>').appendTo(searchableField);
- $('<div class="clear"></div>').appendTo(searchableField);
-
- // make the searchable accessible for populating
- if (field.id === 'ProcessorID') {
- searchableField.find('input').addClass('searchable-component-id');
- } else if (field.id === 'FlowFileUUID') {
- searchableField.find('input').addClass('searchable-flowfile-uuid');
- }
+ // load all searchable fields
+ $.each(provenanceOptions.searchableFields, function (_, field) {
+ appendSearchableField(field);
+ });
+ });
+ };
- // ensure the no searchable fields message is hidden
- $('#no-searchable-fields').hide();
- };
+ /**
+ * Initializes the provenance query dialog.
+ */
+ var initProvenanceQueryDialog = function () {
+ // initialize the dialog
+ $('#provenance-query-dialog').modal({
+ scrollableContentStyle: 'scrollable',
+ headerText: 'Searching provenance events...'
+ });
+ };
- /**
- * Gets the search criteria that the user has specified.
- */
- var getSearchCriteria = function () {
- var searchCriteria = {};
- $('#searchable-fields-container').children('div.searchable-field').each(function () {
- var searchableField = $(this);
- var fieldId = searchableField.children('span.searchable-field-id').text();
- var searchValue = $.trim(searchableField.find('input.searchable-field-input').val());
-
- // if the field isn't blank include it in the search
- if (!nf.Common.isBlank(searchValue)) {
- searchCriteria[fieldId] = searchValue;
+ /**
+ * Appends the specified searchable field to the search dialog.
+ *
+ * @param {type} field The searchable field
+ */
+ var appendSearchableField = function (field) {
+ var searchableField = $('<div class="searchable-field"></div>').appendTo('#searchable-fields-container');
+ $('<span class="searchable-field-id hidden"></span>').text(field.id).appendTo(searchableField);
+ $('<div class="searchable-field-name"></div>').text(field.label).appendTo(searchableField);
+ $('<div class="searchable-field-value"><input type="text" class="searchable-field-input"/></div>').appendTo(searchableField);
+ $('<div class="clear"></div>').appendTo(searchableField);
+
+ // make the searchable accessible for populating
+ if (field.id === 'ProcessorID') {
+ searchableField.find('input').addClass('searchable-component-id');
+ } else if (field.id === 'FlowFileUUID') {
+ searchableField.find('input').addClass('searchable-flowfile-uuid');
}
- });
- return searchCriteria;
- };
- /**
- * Initializes the provenance table.
- *
- * @param {boolean} isClustered Whether or not this instance is clustered
- */
- var initProvenanceTable = function (isClustered, provenanceTableCtrl) {
- // define the function for filtering the list
- $('#provenance-filter').keyup(function () {
- applyFilter();
- });
-
- // filter options
- var filterOptions = [{
- text: 'by component name',
- value: 'componentName'
- }, {
- text: 'by component type',
- value: 'componentType'
- }, {
- text: 'by type',
- value: 'eventType'
- }];
-
- // if clustered, allowing filtering by node id
- if (isClustered) {
- filterOptions.push({
- text: 'by node',
- value: 'clusterNodeAddress'
+ // ensure the no searchable fields message is hidden
+ $('#no-searchable-fields').hide();
+ };
+
+ /**
+ * Gets the search criteria that the user has specified.
+ */
+ var getSearchCriteria = function () {
+ var searchCriteria = {};
+ $('#searchable-fields-container').children('div.searchable-field').each(function () {
+ var searchableField = $(this);
+ var fieldId = searchableField.children('span.searchable-field-id').text();
+ var searchValue = $.trim(searchableField.find('input.searchable-field-input').val());
+
+ // if the field isn't blank include it in the search
+ if (!common.isBlank(searchValue)) {
+ searchCriteria[fieldId] = searchValue;
+ }
});
- }
+ return searchCriteria;
+ };
- // initialize the filter combo
- $('#provenance-filter-type').combo({
- options: filterOptions,
- select: function (option) {
+ /**
+ * Initializes the provenance table.
+ *
+ * @param {boolean} isClustered Whether or not this instance is clustered
+ */
+ var initProvenanceTable = function (isClustered, provenanceTableCtrl) {
+ // define the function for filtering the list
+ $('#provenance-filter').keyup(function () {
applyFilter();
- }
- });
-
- // clear the current search
- $('#clear-provenance-search').click(function () {
- // clear each searchable field
- $('#searchable-fields-container').find('input.searchable-field-input').each(function () {
- $(this).val('');
});
- // reset the default start date/time
- $('#provenance-search-start-date').datepicker('setDate', '+0d');
- $('#provenance-search-end-date').datepicker('setDate', '+0d');
- $('#provenance-search-start-time').val('00:00:00');
- $('#provenance-search-end-time').val('23:59:59');
-
- // reset the minimum and maximum file size
- $('#provenance-search-minimum-file-size').val('');
- $('#provenance-search-maximum-file-size').val('');
+ // filter options
+ var filterOptions = [{
+ text: 'by component name',
+ value: 'componentName'
+ }, {
+ text: 'by component type',
+ value: 'componentType'
+ }, {
+ text: 'by type',
+ value: 'eventType'
+ }];
- // if we are clustered reset the selected option
+ // if clustered, allowing filtering by node id
if (isClustered) {
- $('#provenance-search-location').combo('setSelectedOption', {
- text: 'cluster'
+ filterOptions.push({
+ text: 'by node',
+ value: 'clusterNodeAddress'
});
}
- // reset the stored query
- cachedQuery = {};
-
- // reload the table
- provenanceTableCtrl.loadProvenanceTable();
- });
-
- // add hover effect and click handler for opening the dialog
- $('#provenance-search-button').click(function () {
- $('#provenance-search-dialog').modal('show');
-
- // adjust the field width for a potential scrollbar
- var searchFieldContainer = $('#searchable-fields-container');
- if (searchFieldContainer.get(0).scrollHeight > searchFieldContainer.innerHeight()) {
- $('input.searchable-field-input').width(245);
- } else {
- $('input.searchable-field-input').width(260);
- }
- });
+ // initialize the filter combo
+ $('#provenance-filter-type').combo({
+ options: filterOptions,
+ select: function (option) {
+ applyFilter();
+ }
+ });
- // define a custom formatter for the more details column
- var moreDetailsFormatter = function (row, cell, value, columnDef, dataContext) {
- return '<div title="View Details" class="pointer show-event-details fa fa-info-circle"></div>';
- };
+ // clear the current search
+ $('#clear-provenance-search').click(function () {
+ // clear each searchable field
+ $('#searchable-fields-container').find('input.searchable-field-input').each(function () {
+ $(this).val('');
+ });
- // define how general values are formatted
- var valueFormatter = function (row, cell, value, columnDef, dataContext) {
- return nf.Common.formatValue(value);
- };
+ // reset the default start date/time
+ $('#provenance-search-start-date').datepicker('setDate', '+0d');
+ $('#provenance-search-end-date').datepicker('setDate', '+0d');
+ $('#provenance-search-start-time').val('00:00:00');
+ $('#provenance-search-end-time').val('23:59:59');
- // determine if the this page is in the shell
- var isInShell = (top !== window);
+ // reset the minimum and maximum file size
+ $('#provenance-search-minimum-file-size').val('');
+ $('#provenance-search-maximum-file-size').val('');
- // define how the column is formatted
- var showLineageFormatter = function (row, cell, value, columnDef, dataContext) {
- var markup = '';
+ // if we are clustered reset the selected option
+ if (isClustered) {
+ $('#provenance-search-location').combo('setSelectedOption', {
+ text: 'cluster'
+ });
+ }
- // conditionally include the cluster node id
- if (nf.Common.SUPPORTS_SVG) {
- markup += '<div title="Show Lineage" class="pointer show-lineage icon icon-lineage" style="margin-right: 3px;"></div>';
- }
+ // reset the stored query
+ cachedQuery = {};
- // conditionally support going to the component
- var isRemotePort = dataContext.componentType === 'Remote Input Port' || dataContext.componentType === 'Remote Output Port';
- if (isInShell && nf.Common.isDefinedAndNotNull(dataContext.groupId) && isRemotePort === false) {
- markup += '<div class="pointer go-to fa fa-long-arrow-right" title="Go To"></div>';
- }
+ // reload the table
+ provenanceTableCtrl.loadProvenanceTable();
+ });
- return markup;
- };
+ // add hover effect and click handler for opening the dialog
+ $('#provenance-search-button').click(function () {
+ $('#provenance-search-dialog').modal('show');
- // initialize the provenance table
- var provenanceColumns = [
- {
- id: 'moreDetails',
- name: ' ',
- sortable: false,
- resizable: false,
- formatter: moreDetailsFormatter,
- width: 50,
- maxWidth: 50
- },
- {
- id: 'eventTime',
- name: 'Date/Time',
- field: 'eventTime',
- sortable: true,
- defaultSortAsc: false,
- resizable: true
- },
- {id: 'eventType', name: 'Type', field: 'eventType', sortable: true, resizable: true},
- {id: 'flowFileUuid', name: 'FlowFile Uuid', field: 'flowFileUuid', sortable: true, resizable: true},
- {id: 'fileSize', name: 'Size', field: 'fileSize', sortable: true, defaultSortAsc: false, resizable: true},
- {
- id: 'componentName',
- name: 'Component Name',
- field: 'componentName',
- sortable: true,
- resizable: true,
- formatter: valueFormatter
- },
- {id: 'componentType', name: 'Component Type', field: 'componentType', sortable: true, resizable: true}
- ];
-
- // conditionally show the cluster node identifier
- if (isClustered) {
- provenanceColumns.push({
- id: 'clusterNodeAddress',
- name: 'Node',
- field: 'clusterNodeAddress',
- sortable: true,
- resizable: true
+ // adjust the field width for a potential scrollbar
+ var searchFieldContainer = $('#searchable-fields-container');
+ if (searchFieldContainer.get(0).scrollHeight > searchFieldContainer.innerHeight()) {
+ $('input.searchable-field-input').width(245);
+ } else {
+ $('input.searchable-field-input').width(260);
+ }
});
- }
- // conditionally show the action column
- if (nf.Common.SUPPORTS_SVG || isInShell) {
- provenanceColumns.push({
- id: 'actions',
- name: ' ',
- formatter: showLineageFormatter,
- resizable: false,
- sortable: false,
- width: 50,
- maxWidth: 50
- });
- }
+ // define a custom formatter for the more details column
+ var moreDetailsFormatter = function (row, cell, value, columnDef, dataContext) {
+ return '<div title="View Details" class="pointer show-event-details fa fa-info-circle"></div>';
+ };
- var provenanceOptions = {
- forceFitColumns: true,
- enableTextSelectionOnCells: true,
- enableCellNavigation: true,
- enableColumnReorder: false,
- autoEdit: false,
- multiSelect: false,
- rowHeight: 24
- };
+ // define how general values are formatted
+ var valueFormatter = function (row, cell, value, columnDef, dataContext) {
+ return common.formatValue(value);
+ };
- // create the remote model
- var provenanceData = new Slick.Data.DataView({
- inlineFilters: false
- });
- provenanceData.setItems([]);
- provenanceData.setFilterArgs({
- searchString: '',
- property: 'name'
- });
- provenanceData.setFilter(filter);
-
- // initialize the sort
- sort({
- columnId: 'eventTime',
- sortAsc: false
- }, provenanceData);
-
- // initialize the grid
- var provenanceGrid = new Slick.Grid('#provenance-table', provenanceData, provenanceColumns, provenanceOptions);
- provenanceGrid.setSelectionModel(new Slick.RowSelectionModel());
- provenanceGrid.registerPlugin(new Slick.AutoTooltips());
-
- // initialize the grid sorting
- provenanceGrid.setSortColumn('eventTime', false);
- provenanceGrid.onSort.subscribe(function (e, args) {
- sort({
- columnId: args.sortCol.field,
- sortAsc: args.sortAsc
- }, provenanceData);
- });
+ // determine if the this page is in the shell
+ var isInShell = (top !== window);
- // configure a click listener
- provenanceGrid.onClick.subscribe(function (e, args) {
- var target = $(e.target);
+ // define how the column is formatted
+ var showLineageFormatter = function (row, cell, value, columnDef, dataContext) {
+ var markup = '';
- // get the node at this row
- var item = provenanceData.getItem(args.row);
+ // conditionally include the cluster node id
+ if (common.SUPPORTS_SVG) {
+ markup += '<div title="Show Lineage" class="pointer show-lineage icon icon-lineage" style="margin-right: 3px;"></div>';
+ }
- // determine the desired action
- if (provenanceGrid.getColumns()[args.cell].id === 'actions') {
- if (target.hasClass('show-lineage')) {
- provenanceLineageCtrl.showLineage(item.flowFileUuid, item.eventId.toString(), item.clusterNodeId, provenanceTableCtrl);
- } else if (target.hasClass('go-to')) {
- goTo(item);
+ // conditionally support going to the component
+ var isRemotePort = dataContext.componentType === 'Remote Input Port' || dataContext.componentType === 'Remote Output Port';
+ if (isInShell && common.isDefinedAndNotNull(dataContext.groupId) && isRemotePort === false) {
+ markup += '<div class="pointer go-to fa fa-long-arrow-right" title="Go To"></div>';
}
- } else if (provenanceGrid.getColumns()[args.cell].id === 'moreDetails') {
- if (target.hasClass('show-event-details')) {
- provenanceTableCtrl.showEventDetails(item.eventId, item.clusterNodeId);
+
+ return markup;
+ };
+
+ // initialize the provenance table
+ var provenanceColumns = [
+ {
+ id: 'moreDetails',
+ name: ' ',
+ sortable: false,
+ resizable: false,
+ formatter: moreDetailsFormatter,
+ width: 50,
+ maxWidth: 50
+ },
+ {
+ id: 'eventTime',
+ name: 'Date/Time',
+ field: 'eventTime',
+ sortable: true,
+ defaultSortAsc: false,
+ resizable: true
+ },
+ {
+ id: 'eventType',
+ name: 'Type',
+ field: 'eventType',
+ sortable: true,
+ resizable: true
+ },
+ {
+ id: 'flowFileUuid',
+ name: 'FlowFile Uuid',
+ field: 'flowFileUuid',
+ sortable: true,
+ resizable: true
+ },
+ {
+ id: 'fileSize',
+ name: 'Size',
+ field: 'fileSize',
+ sortable: true,
+ defaultSortAsc: false,
+ resizable: true
+ },
+ {
+ id: 'componentName',
+ name: 'Component Name',
+ field: 'componentName',
+ sortable: true,
+ resizable: true,
+ formatter: valueFormatter
+ },
+ {
+ id: 'componentType',
+ name: 'Component Type',
+ field: 'componentType',
+ sortable: true,
+ resizable: true
}
+ ];
+
+ // conditionally show the cluster node identifier
+ if (isClustered) {
+ provenanceColumns.push({
+ id: 'clusterNodeAddress',
+ name: 'Node',
+ field: 'clusterNodeAddress',
+ sortable: true,
+ resizable: true
+ });
}
- });
-
- // wire up the dataview to the grid
- provenanceData.onRowCountChanged.subscribe(function (e, args) {
- provenanceGrid.updateRowCount();
- provenanceGrid.render();
-
- // update the total number of displayed events if necessary
- $('#displayed-events').text(nf.Common.formatInteger(args.current));
- });
- provenanceData.onRowsChanged.subscribe(function (e, args) {
- provenanceGrid.invalidateRows(args.rows);
- provenanceGrid.render();
- });
-
- // hold onto an instance of the grid
- $('#provenance-table').data('gridInstance', provenanceGrid);
-
- // initialize the number of displayed items
- $('#displayed-events').text('0');
- $('#total-events').text('0');
- };
- /**
- * Applies the filter found in the filter expression text field.
- */
- var applyFilter = function () {
- // get the dataview
- var provenanceGrid = $('#provenance-table').data('gridInstance');
+ // conditionally show the action column
+ if (common.SUPPORTS_SVG || isInShell) {
+ provenanceColumns.push({
+ id: 'actions',
+ name: ' ',
+ formatter: showLineageFormatter,
+ resizable: false,
+ sortable: false,
+ width: 50,
+ maxWidth: 50
+ });
+ }
- // ensure the grid has been initialized
- if (nf.Common.isDefinedAndNotNull(provenanceGrid)) {
- var provenanceData = provenanceGrid.getData();
+ var provenanceOptions = {
+ forceFitColumns: true,
+ enableTextSelectionOnCells: true,
+ enableCellNavigation: true,
+ enableColumnReorder: false,
+ autoEdit: false,
+ multiSelect: false,
+ rowHeight: 24
+ };
- // update the search criteria
+ // create the remote model
+ var provenanceData = new Slick.Data.DataView({
+ inlineFilters: false
+ });
+ provenanceData.setItems([]);
provenanceData.setFilterArgs({
- searchString: getFilterText(),
- property: $('#provenance-filter-type').combo('getSelectedOption').value
+ searchString: '',
+ property: 'name'
});
- provenanceData.refresh();
- }
- };
+ provenanceData.setFilter(filter);
- /**
- * Get the text out of the filter field. If the filter field doesn't
- * have any text it will contain the text 'filter list' so this method
- * accounts for that.
- */
- var getFilterText = function () {
- return $('#provenance-filter').val();
- };
+ // initialize the sort
+ sort({
+ columnId: 'eventTime',
+ sortAsc: false
+ }, provenanceData);
- /**
- * Performs the provenance filtering.
- *
- * @param {object} item The item subject to filtering
- * @param {object} args Filter arguments
- * @returns {Boolean} Whether or not to include the item
- */
- var filter = function (item, args) {
- if (args.searchString === '') {
- return true;
- }
+ // initialize the grid
+ var provenanceGrid = new Slick.Grid('#provenance-table', provenanceData, provenanceColumns, provenanceOptions);
+ provenanceGrid.setSelectionModel(new Slick.RowSelectionModel());
+ provenanceGrid.registerPlugin(new Slick.AutoTooltips());
+
+ // initialize the grid sorting
+ provenanceGrid.setSortColumn('eventTime', false);
+ provenanceGrid.onSort.subscribe(function (e, args) {
+ sort({
+ columnId: args.sortCol.field,
+ sortAsc: args.sortAsc
+ }, provenanceData);
+ });
- try {
- // perform the row filtering
- var filterExp = new RegExp(args.searchString, 'i');
- } catch (e) {
- // invalid regex
- return false;
- }
+ // configure a click listener
+ provenanceGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
- return item[args.property].search(filterExp) >= 0;
- };
+ // get the node at this row
+ var item = provenanceData.getItem(args.row);
- /**
- * Sorts the data according to the sort details.
- *
- * @param {type} sortDetails
- * @param {type} data
- */
- var sort = function (sortDetails, data) {
- // defines a function for sorting
- var comparer = function (a, b) {
- if (sortDetails.columnId === 'eventTime') {
- var aTime = nf.Common.parseDateTime(a[sortDetails.columnId]).getTime();
- var bTime = nf.Common.parseDateTime(b[sortDetails.columnId]).getTime();
- if (aTime === bTime) {
- return a['id'] - b['id'];
- } else {
- return aTime - bTime;
- }
- } else if (sortDetails.columnId === 'fileSize') {
- var aSize = nf.Common.parseSize(a[sortDetails.columnId]);
- var bSize = nf.Common.parseSize(b[sortDetails.columnId]);
- if (aSize === bSize) {
- return a['id'] - b['id'];
- } else {
- return aSize - bSize;
- }
- } else {
- var aString = nf.Common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
- var bString = nf.Common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
- if (aString === bString) {
- return a['id'] - b['id'];
- } else {
- return aString === bString ? 0 : aString > bString ? 1 : -1;
+ // determine the desired action
+ if (provenanceGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('show-lineage')) {
+ provenanceLineageCtrl.showLineage(item.flowFileUuid, item.eventId.toString(), item.clusterNodeId, provenanceTableCtrl);
+ } else if (target.hasClass('go-to')) {
+ goTo(item);
+ }
+ } else if (provenanceGrid.getColumns()[args.cell].id === 'moreDetails') {
+ if (target.hasClass('show-event-details')) {
+ provenanceTableCtrl.showEventDetails(item.eventId, item.clusterNodeId);
+ }
}
- }
- };
+ });
- // perform the sort
- data.sort(comparer, sortDetails.sortAsc);
- };
+ // wire up the dataview to the grid
+ provenanceData.onRowCountChanged.subscribe(function (e, args) {
+ provenanceGrid.updateRowCount();
+ provenanceGrid.render();
- /**
- * Submits a new provenance query.
- *
- * @argument {object} provenance The provenance query
- * @returns {deferred}
- */
- var submitProvenance = function (provenance) {
- var provenanceEntity = {
- 'provenance': {
- 'request': $.extend({
- maxResults: config.maxResults,
- summarize: true,
- incrementalResults: false
- }, provenance)
- }
- };
+ // update the total number of displayed events if necessary
+ $('#displayed-events').text(common.formatInteger(args.current));
+ });
+ provenanceData.onRowsChanged.subscribe(function (e, args) {
+ provenanceGrid.invalidateRows(args.rows);
+ provenanceGrid.render();
+ });
- // submit the provenance request
- return $.ajax({
- type: 'POST',
- url: config.urls.provenance,
- data: JSON.stringify(provenanceEntity),
- dataType: 'json',
- contentType: 'application/json'
- }).fail(nf.Common.handleAjaxError);
- };
+ // hold onto an instance of the grid
+ $('#provenance-table').data('gridInstance', provenanceGrid);
- /**
- * Gets the results from the provenance query for the specified id.
- *
- * @param {object} provenance
- * @returns {deferred}
- */
- var getProvenance = function (provenance) {
- var url = provenance.uri;
- if (nf.Common.isDefinedAndNotNull(provenance.request.clusterNodeId)) {
- url += '?' + $.param({
- clusterNodeId: provenance.request.clusterNodeId,
- summarize: true,
- incrementalResults: false
- });
- } else {
- url += '?' + $.param({
- summarize: true,
- incrementalResults: false
- });
- }
+ // initialize the number of displayed items
+ $('#displayed-events').text('0');
+ $('#total-events').text('0');
+ };
- return $.ajax({
- type: 'GET',
- url: url,
- dataType: 'json'
- }).fail(nf.Common.handleAjaxError);
- };
+ /**
+ * Applies the filter found in the filter expression text field.
+ */
+ var applyFilter = function () {
+ // get the dataview
+ var provenanceGrid = $('#provenance-table').data('gridInstance');
- /**
- * Cancels the specified provenance query.
- *
- * @param {object} provenance
- * @return {deferred}
- */
- var cancelProvenance = function (provenance) {
- var url = provenance.uri;
- if (nf.Common.isDefinedAndNotNull(provenance.request.clusterNodeId)) {
- url += '?' + $.param({
- clusterNodeId: provenance.request.clusterNodeId
- });
- }
+ // ensure the grid has been initialized
+ if (common.isDefinedAndNotNull(provenanceGrid)) {
+ var provenanceData = provenanceGrid.getData();
- return $.ajax({
- type: 'DELETE',
- url: url,
- dataType: 'json'
- }).fail(nf.Common.handleAjaxError);
- };
+ // update the search criteria
+ provenanceData.setFilterArgs({
+ searchString: getFilterText(),
+ property: $('#provenance-filter-type').combo('getSelectedOption').value
+ });
+ provenanceData.refresh();
+ }
+ };
- /**
- * Checks the results of the specified provenance.
- *
- * @param {object} provenance
- */
- var loadProvenanceResults = function (provenance, provenanceTableCtrl) {
- var provenanceRequest = provenance.request;
- var provenanceResults = provenance.results;
-
- // ensure there are groups specified
- if (nf.Common.isDefinedAndNotNull(provenanceResults.provenanceEvents)) {
- var provenanceTable = $('#provenance-table').data('gridInstance');
- var provenanceData = provenanceTable.getData();
-
- // set the items
- provenanceData.setItems(provenanceResults.provenanceEvents);
- provenanceData.reSort();
- provenanceTable.invalidate();
-
- // update the stats last refreshed timestamp
- $('#provenance-last-refreshed').text(provenanceResults.generated);
-
- // update the oldest event available
- $('#oldest-event').html(nf.Common.formatValue(provenanceResults.oldestEvent));
-
- // record the server offset
- provenanceTableCtrl.serverTimeOffset = provenanceResults.timeOffset;
-
- // determines if the specified query is blank (no search terms, start or end date)
- var isBlankQuery = function (query) {
- return nf.Common.isUndefinedOrNull(query.startDate) && nf.Common.isUndefinedOrNull(query.endDate) && $.isEmptyObject(query.searchTerms);
- };
+ /**
+ * Get the text out of the filter field. If the filter field doesn't
+ * have any text it will contain the text 'filter list' so this method
+ * accounts for that.
+ */
+ var getFilterText = function () {
+ return $('#provenance-filter').val();
+ };
- // update the filter message based on the request
- if (isBlankQuery(provenanceRequest)) {
- var message = 'Showing the most recent ';
- if (provenanceResults.totalCount >= config.maxResults) {
- message += (nf.Common.formatInteger(config.maxResults) + ' of ' + provenanceResults.total + ' events, please refine the search.');
- } else {
- message += ('events.');
- }
- $('#provenance-query-message').text(message);
- $('#clear-provenance-search').hide();
- } else {
- var message = 'Showing ';
- if (provenanceResults.totalCount >= config.maxResults) {
- message += (nf.Common.formatInteger(config.maxResults) + ' of ' + provenanceResults.total + ' events that match the specified query, please refine the search.');
- } else {
- message += ('the events that match the specified query.');
- }
- $('#provenance-query-message').text(message);
- $('#clear-provenance-search').show();
+ /**
+ * Performs the provenance filtering.
+ *
+ * @param {object} item The item subject to filtering
+ * @param {object} args Filter arguments
+ * @returns {Boolean} Whether or not to include the item
+ */
+ var filter = function (item, args) {
+ if (args.searchString === '') {
+ return true;
}
- // update the total number of events
- $('#total-events').text(nf.Common.formatInteger(provenanceResults.provenanceEvents.length));
- } else {
- $('#total-events').text('0');
- }
- };
-
- /**
- * Goes to the specified component if possible.
- *
- * @argument {object} item The event it
- */
- var goTo = function (item) {
- // ensure the component is still present in the flow
- if (nf.Common.isDefinedAndNotNull(item.groupId)) {
- // only attempt this if we're within a frame
- if (top !== window) {
- // and our parent has canvas utils and shell defined
- if (nf.Common.isDefinedAndNotNull(parent.nf) && nf.Common.isDefinedAndNotNull(parent.nf.CanvasUtils) && nf.Common.isDefinedAndNotNull(parent.nf.Shell)) {
- parent.nf.CanvasUtils.showComponent(item.groupId, item.componentId);
- parent.$('#shell-close-button').click();
- }
+ try {
+ // perform the row filtering
+ var filterExp = new RegExp(args.searchString, 'i');
+ } catch (e) {
+ // invalid regex
+ return false;
}
- }
- };
- function ProvenanceTableCtrl() {
+ return item[args.property].search(filterExp) >= 0;
+ };
/**
- * The server time offset
+ * Sorts the data according to the sort details.
+ *
+ * @param {type} sortDetails
+ * @param {type} data
*/
- this.serverTimeOffset = null;
- }
+ var sort = function (sortDetails, data) {
+ // defines a function for sorting
+ var comparer = function (a, b) {
+ if (sortDetails.columnId === 'eventTime') {
+ var aTime = common.parseDateTime(a[sortDetails.columnId]).getTime();
+ var bTime = common.parseDateTime(b[sortDetails.columnId]).getTime();
+ if (aTime === bTime) {
+ return a['id'] - b['id'];
+ } else {
+ return aTime - bTime;
+ }
+ } else if (sortDetails.columnId === 'fileSize') {
+ var aSize = common.parseSize(a[sortDetails.columnId]);
+ var bSize = common.parseSize(b[sortDetails.columnId]);
+ if (aSize === bSize) {
+ return a['id'] - b['id'];
+ } else {
+ return aSize - bSize;
+ }
+ } else {
+ var aString = common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
+ var bString = common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
+ if (aString === bString) {
+ return a['id'] - b['id'];
+ } else {
+ return aString === bString ? 0 : aString > bString ? 1 : -1;
+ }
+ }
+ };
- ProvenanceTableCtrl.prototype = {
- constructor: ProvenanceTableCtrl,
+ // perform the sort
+ data.sort(comparer, sortDetails.sortAsc);
+ };
/**
- * Initializes the provenance table. Returns a deferred that will indicate when/if the table has initialized successfully.
+ * Submits a new provenance query.
*
- * @param {boolean} isClustered Whether or not this instance is clustered
+ * @argument {object} provenance The provenance query
+ * @returns {deferred}
*/
- init: function (isClustered) {
- var self = this;
- return $.Deferred(function (deferred) {
- // handles init failure
- var failure = function (xhr, status, error) {
- deferred.reject();
- nf.Common.handleAjaxError(xhr, status, error);
- };
-
- // initialize the lineage view
- provenanceLineageCtrl.init();
+ var submitProvenance = function (provenance) {
+ var provenanceEntity = {
+ 'provenance': {
+ 'request': $.extend({
+ maxResults: config.maxResults,
+ summarize: true,
+ incrementalResults: false
+ }, provenance)
+ }
+ };
- // initialize the table view
- initDetailsDialog();
- initProvenanceQueryDialog();
- initProvenanceTable(isClustered, self);
- initSearchDialog(isClustered, self).done(function () {
- deferred.resolve();
- }).fail(failure);
- }).promise();
- },
+ // submit the provenance request
+ return $.ajax({
+ type: 'POST',
+ url: config.urls.provenance,
+ data: JSON.stringify(provenanceEntity),
+ dataType: 'json',
+ contentType: 'application/json'
+ }).fail(errorHandler.handleAjaxError);
+ };
/**
- * Update the size of the grid based on its container's current size.
+ * Gets the results from the provenance query for the specified id.
+ *
+ * @param {object} provenance
+ * @returns {deferred}
*/
- resetTableSize: function () {
- var provenanceGrid = $('#provenance-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(provenanceGrid)) {
- provenanceGrid.resizeCanvas();
+ var getProvenance = function (provenance) {
+ var url = provenance.uri;
+ if (common.isDefinedAndNotNull(provenance.request.clusterNodeId)) {
+ url += '?' + $.param({
+ clusterNodeId: provenance.request.clusterNodeId,
+ summarize: true,
+ incrementalResults: false
+ });
+ } else {
+ url += '?' + $.param({
+ summarize: true,
+ incrementalResults: false
+ });
}
- },
+
+ return $.ajax({
+ type: 'GET',
+ url: url,
+ dataType: 'json'
+ }).fail(errorHandler.handleAjaxError);
+ };
/**
- * Updates the value of the specified progress bar.
+ * Cancels the specified provenance query.
*
- * @param {jQuery} progressBar
- * @param {integer} value
- * @returns {undefined}
+ * @param {object} provenance
+ * @return {deferred}
*/
- updateProgress: function (progressBar, value) {
- // remove existing labels
- progressBar.find('div.progress-label').remove();
- progressBar.find('md-progress-linear').remove();
+ var cancelProvenance = function (provenance) {
+ var url = provenance.uri;
+ if (common.isDefinedAndNotNull(provenance.request.clusterNodeId)) {
+ url += '?' + $.param({
+ clusterNodeId: provenance.request.clusterNodeId
+ });
+ }
- // update the progress bar
- var label = $('<div class="progress-label"></div>').text(value + '%');
- (nf.ng.Bridge.injector.get('$compile')($('<md-progress-linear ng-cloak ng-value="' + value + '" class="md-hue-2" md-mode="determinate" aria-label="Progress"></md-progress-linear>'))(nf.ng.Bridge.rootScope)).appendTo(progressBar);
- progressBar.append(label);
- },
+ return $.ajax({
+ type: 'DELETE',
+ url: url,
+ dataType: 'json'
+ }).fail(errorHandler.handleAjaxError);
+ };
/**
- * Loads the provenance table with events according to the specified optional
- * query. If not query is specified or it is empty, the most recent entries will
- * be returned.
+ * Checks the results of the specified provenance.
*
- * @param {object} query
+ * @param {object} provenance
*/
- loadProvenanceTable: function (query) {
- var self = this;
- var provenanceProgress = $('#provenance-percent-complete');
-
- // add support to cancel outstanding requests - when the button is pressed we
- // could be in one of two stages, 1) waiting to GET the status or 2)
- // in the process of GETting the status. Handle both cases by cancelling
- // the setTimeout (1) and by setting a flag to indicate that a request has
- // been request so we can ignore the results (2).
-
- var cancelled = false;
- var provenance = null;
- var provenanceTimer = null;
-
- // update the progress bar value
- self.updateProgress(provenanceProgress, 0);
-
- // show the 'searching...' dialog
- $('#provenance-query-dialog').modal('setButtonModel', [{
- buttonText: 'Cancel',
- color: {
- base: '#E3E8EB',
- hover: '#C7D2D7',
- text: '#004849'
- },
- handler: {
- click: function () {
- cancelled = true;
+ var loadProvenanceResults = function (provenance, provenanceTableCtrl) {
+ var provenanceRequest = provenance.request;
+ var provenanceResults = provenance.results;
- // we are waiting for the next poll attempt
- if (provenanceTimer !== null) {
- // cancel it
- clearTimeout(provenanceTimer);
+ // ensure there are groups specified
+ if (common.isDefinedAndNotNull(provenanceResults.provenanceEvents)) {
+ var provenanceTable = $('#provenance-table').data('gridInstance');
+ var provenanceData = provenanceTable.getData();
- // cancel the provenance
- closeDialog();
- }
+ // set the items
+ provenanceData.setItems(provenanceResults.provenanceEvents);
+ provenanceData.reSort();
+ provenanceTable.invalidate();
+
+ // update the stats last refreshed timestamp
+ $('#provenance-last-refreshed').text(provenanceResults.generated);
+
+ // update the oldest event available
+ $('#oldest-event').html(common.formatValue(provenanceResults.oldestEvent));
+
+ // record the server offset
+ provenanceTableCtrl.serverTimeOffset = provenanceResults.timeOffset;
+
+ // determines if the specified query is blank (no search terms, start or end date)
+ var isBlankQuery = function (query) {
+ return common.isUndefinedOrNull(query.startDate) && common.isUndefinedOrNull(query.endDate) && $.isEmptyObject(query.searchTerms);
+ };
+
+ // update the filter message based on the request
+ if (isBlankQuery(provenanceRequest)) {
+ var message = 'Showing the most recent ';
+ if (provenanceResults.totalCount >= config.maxResults) {
+ message += (common.formatInteger(config.maxResults) + ' of ' + provenanceResults.total + ' events, please refine the search.');
+ } else {
+ message += ('events.');
+ }
+ $('#provenance-query-message').text(message);
+ $('#clear-provenance-search').hide();
+ } else {
+ var message = 'Showing ';
+ if (provenanceResults.totalCount >= config.maxResults) {
+ message += (common.formatInteger(config.maxResults) + ' of ' + provenanceResults.total + ' events that match the specified query, please refine the search.');
+ } else {
+ message += ('the events that match the specified query.');
}
+ $('#provenance-query-message').text(message);
+ $('#clear-provenance-search').show();
}
- }]).modal('show');
-
- // -----------------------------
- // determine the provenance query
- // -----------------------------
-
- // handle the specified query appropriately
- if (nf.Common.isDefinedAndNotNull(query)) {
- // store the last query performed
- cachedQuery = query;
- } else if (!$.isEmptyObject(cachedQuery)) {
- // use the last query performed
- query = cachedQuery;
+
+ // update the total number of events
+ $('#total-events').text(common.formatInteger(provenanceResults.provenanceEvents.length));
} else {
- // don't use a query
- query = {};
+ $('#total-events').text('0');
}
+ };
- // closes the searching dialog and cancels the query on the server
- var closeDialog = function () {
- // cancel the provenance results since we've successfully processed the results
- if (nf.Common.isDefinedAndNotNull(provenance)) {
- cancelProvenance(provenance);
+ /**
+ * Goes to the specified component if possible.
+ *
+ * @argument {object} item The event it
+ */
+ var goTo = function (item) {
+ // ensure the component is still present in the flow
+ if (common.isDefinedAndNotNull(item.groupId)) {
+ // only attempt this if we're within a frame
+ if (top !== window) {
+ // and our parent has canvas utils and shell defined
+ if (common.isDefinedAndNotNull(parent.nf) && common.isDefinedAndNotNull(parent.nf.CanvasUtils) && common.isDefinedAndNotNull(parent.nf.Shell)) {
+ parent.nf.CanvasUtils.showComponent(item.groupId, item.componentId);
+ parent.$('#shell-close-button').click();
+ }
}
+ }
+ };
- // close the dialog
- $('#provenance-query-dialog').modal('hide');
- };
+ function ProvenanceTableCtrl() {
- // polls the server for the status of the provenance
- var pollProvenance = function () {
- getProvenance(provenance).done(function (response) {
- // update the provenance
- provenance = response.provenance;
+ /**
- // process the provenance
- processProvenanceResponse();
- }).fail(closeDialog);
- };
+ * The server time offset
+ */
+ this.serverTimeOffset = null;
+ }
+
+ ProvenanceTableCtrl.prototype = {
+ constructor: ProvenanceTableCtrl,
+
+ /**
+ * Initializes the provenance table. Returns a deferred that will indicate when/if the table has initialized successfully.
+ *
+ * @param {boolean} isClustered Whether or not this instance is clustered
+ */
+ init: function (isClustered) {
+ var provenanceTableCtrl = this;
+ return $.Deferred(function (deferred) {
+ // handles init failure
+ var failure = function (xhr, status, error) {
+ deferred.reject();
+ errorHandler.handleAjaxError(xhr, status, error);
+ };
+
+ // initialize the lineage view
+ provenanceLineageCtrl.init();
+
+ // initialize the table view
+ initDetailsDialog();
+ initProvenanceQueryDialog();
+ initProvenanceTable(isClustered, provenanceTableCtrl);
+ initSearchDialog(isClustered, provenanceTableCtrl).done(function () {
+ deferred.resolve();
+ }).fail(failure);
+
<TRUNCATED>
[12/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
[NIFI-3359] Modularize all of nifi-web-ui except canvas directory
- Removing shell.jsp from summary.jsp.
- This closes #1428
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/dc934cbb
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/dc934cbb
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/dc934cbb
Branch: refs/heads/master
Commit: dc934cbb8e4ad7078de555a112d92f05fd1e879f
Parents: 516075d
Author: Scott Aslan <sc...@gmail.com>
Authored: Fri Jan 20 15:55:31 2017 -0500
Committer: Matt Gilman <ma...@gmail.com>
Committed: Fri Jan 20 16:18:08 2017 -0500
----------------------------------------------------------------------
.../nifi-framework/nifi-web/nifi-web-ui/pom.xml | 115 +-
.../resources/filters/bulletin-board.properties | 7 +-
.../main/resources/filters/canvas.properties | 21 +-
.../main/resources/filters/cluster.properties | 11 +-
.../main/resources/filters/counters.properties | 11 +-
.../main/resources/filters/history.properties | 12 +-
.../src/main/resources/filters/login.properties | 7 +-
.../resources/filters/provenance.properties | 16 +-
.../main/resources/filters/summary.properties | 18 +-
.../main/resources/filters/templates.properties | 11 +-
.../src/main/resources/filters/users.properties | 9 +-
.../src/main/webapp/WEB-INF/pages/canvas.jsp | 4 +-
.../src/main/webapp/WEB-INF/pages/summary.jsp | 2 +-
.../src/main/webapp/WEB-INF/pages/users.jsp | 2 +-
.../WEB-INF/partials/canvas/about-dialog.jsp | 2 +-
.../WEB-INF/partials/canvas/flow-status.jsp | 2 +-
.../main/webapp/js/jquery/combo/jquery.combo.js | 3 +
.../js/jquery/nfeditor/jquery.nfeditor.js | 84 +-
.../webapp/js/jquery/nfeditor/languages/nfel.js | 24 +-
.../propertytable/jquery.propertytable.js | 318 ++-
.../js/jquery/tagcloud/jquery.tagcloud.js | 2 +-
.../js/nf/bulletin-board/nf-bulletin-board.js | 779 +++---
.../nf-ng-canvas-flow-status-controller.js | 52 +-
.../nf-ng-canvas-global-menu-controller.js | 8 +-
.../nf-ng-canvas-header-controller.js | 6 +-
.../header/components/nf-ng-funnel-component.js | 2 +-
.../header/components/nf-ng-group-component.js | 12 +-
.../components/nf-ng-input-port-component.js | 8 +-
.../header/components/nf-ng-label-component.js | 2 +-
.../components/nf-ng-output-port-component.js | 8 +-
.../components/nf-ng-processor-component.js | 28 +-
.../nf-ng-remote-process-group-component.js | 6 +-
.../components/nf-ng-template-component.js | 14 +-
.../src/main/webapp/js/nf/canvas/nf-actions.js | 14 +-
.../js/nf/canvas/nf-canvas-error-handler.js | 60 +
.../src/main/webapp/js/nf/canvas/nf-canvas.js | 93 +-
.../webapp/js/nf/canvas/nf-component-state.js | 22 +-
.../js/nf/canvas/nf-connection-configuration.js | 14 +-
.../main/webapp/js/nf/canvas/nf-connection.js | 4 +-
.../js/nf/canvas/nf-controller-service.js | 24 +-
.../js/nf/canvas/nf-controller-services.js | 64 +-
.../main/webapp/js/nf/canvas/nf-custom-ui.js | 100 +-
.../main/webapp/js/nf/canvas/nf-draggable.js | 4 +-
.../src/main/webapp/js/nf/canvas/nf-go-to.js | 4 +-
.../js/nf/canvas/nf-label-configuration.js | 2 +-
.../webapp/js/nf/canvas/nf-policy-management.js | 35 +-
.../js/nf/canvas/nf-port-configuration.js | 2 +-
.../nf/canvas/nf-process-group-configuration.js | 4 +-
.../js/nf/canvas/nf-processor-configuration.js | 11 +-
.../webapp/js/nf/canvas/nf-queue-listing.js | 24 +-
.../nf-remote-process-group-configuration.js | 2 +-
.../nf/canvas/nf-remote-process-group-ports.js | 6 +-
.../webapp/js/nf/canvas/nf-reporting-task.js | 15 +-
.../src/main/webapp/js/nf/canvas/nf-settings.js | 25 +-
.../webapp/js/nf/cluster/nf-cluster-table.js | 460 +++-
.../src/main/webapp/js/nf/cluster/nf-cluster.js | 85 +-
.../webapp/js/nf/counters/nf-counters-table.js | 111 +-
.../main/webapp/js/nf/counters/nf-counters.js | 87 +-
.../webapp/js/nf/history/nf-history-model.js | 378 +--
.../webapp/js/nf/history/nf-history-table.js | 152 +-
.../src/main/webapp/js/nf/history/nf-history.js | 123 +-
.../src/main/webapp/js/nf/login/nf-login.js | 75 +-
.../src/main/webapp/js/nf/nf-ajax-setup.js | 54 +-
.../src/main/webapp/js/nf/nf-client.js | 30 +-
.../src/main/webapp/js/nf/nf-cluster-summary.js | 81 +
.../src/main/webapp/js/nf/nf-common.js | 584 ++--
.../main/webapp/js/nf/nf-connection-details.js | 56 +-
.../src/main/webapp/js/nf/nf-dialog.js | 83 +-
.../src/main/webapp/js/nf/nf-error-handler.js | 147 +
.../src/main/webapp/js/nf/nf-ng-app-config.js | 168 +-
.../main/webapp/js/nf/nf-ng-app-controller.js | 50 +-
.../src/main/webapp/js/nf/nf-ng-bridge.js | 20 +-
.../main/webapp/js/nf/nf-ng-service-provider.js | 61 +-
.../main/webapp/js/nf/nf-processor-details.js | 113 +-
.../src/main/webapp/js/nf/nf-shell.js | 110 +-
.../src/main/webapp/js/nf/nf-status-history.js | 85 +-
.../src/main/webapp/js/nf/nf-storage.js | 50 +-
.../main/webapp/js/nf/nf-universal-capture.js | 188 +-
.../js/nf/provenance/nf-provenance-lineage.js | 2447 ++++++++---------
.../js/nf/provenance/nf-provenance-table.js | 2556 +++++++++---------
.../webapp/js/nf/provenance/nf-provenance.js | 553 ++--
.../webapp/js/nf/summary/nf-cluster-search.js | 50 +-
.../webapp/js/nf/summary/nf-summary-table.js | 353 +--
.../src/main/webapp/js/nf/summary/nf-summary.js | 162 +-
.../js/nf/templates/nf-templates-table.js | 151 +-
.../main/webapp/js/nf/templates/nf-templates.js | 83 +-
.../main/webapp/js/nf/users/nf-users-table.js | 204 +-
.../src/main/webapp/js/nf/users/nf-users.js | 98 +-
88 files changed, 6873 insertions(+), 5270 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
index b38a2f0..d04f207 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
@@ -422,18 +422,23 @@
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/nf/canvas/nf-canvas-all.js</output>
<includes>
- <include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
- <include>${staging.dir}/js/nf/canvas/nf-canvas-utils.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
- <include>${staging.dir}/js/nf/nf-shell.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-client.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/canvas/nf-context-menu.js</include>
+ <include>${staging.dir}/js/nf/nf-ng-bridge.js</include>
+ <include>${staging.dir}/js/nf/nf-cluster-summary.js</include>
+ <include>${staging.dir}/js/nf/canvas/nf-canvas.js</include>
+ <include>${staging.dir}/js/nf/canvas/nf-canvas-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
+ <include>${staging.dir}/js/nf/nf-shell.js</include>
<include>${staging.dir}/js/nf/canvas/nf-snippet.js</include>
- <include>${staging.dir}/js/nf/canvas/nf-custom-ui.js</include>
<include>${staging.dir}/js/nf/canvas/nf-queue-listing.js</include>
<include>${staging.dir}/js/nf/canvas/nf-component-state.js</include>
+ <include>${staging.dir}/js/nf/canvas/nf-custom-ui.js</include>
<include>${staging.dir}/js/nf/canvas/nf-controller-service.js</include>
<include>${staging.dir}/js/nf/canvas/nf-controller-services.js</include>
<include>${staging.dir}/js/nf/canvas/nf-reporting-task.js</include>
@@ -449,6 +454,7 @@
<include>${staging.dir}/js/nf/canvas/nf-label-configuration.js</include>
<include>${staging.dir}/js/nf/canvas/nf-connection-configuration.js</include>
<include>${staging.dir}/js/nf/nf-connection-details.js</include>
+ <include>${staging.dir}/js/nf/nf-status-history.js</include>
<include>${staging.dir}/js/nf/canvas/nf-graph.js</include>
<include>${staging.dir}/js/nf/canvas/nf-processor.js</include>
<include>${staging.dir}/js/nf/canvas/nf-label.js</include>
@@ -458,18 +464,14 @@
<include>${staging.dir}/js/nf/canvas/nf-funnel.js</include>
<include>${staging.dir}/js/nf/canvas/nf-connection.js</include>
<include>${staging.dir}/js/nf/canvas/nf-draggable.js</include>
- <include>${staging.dir}/js/nf/canvas/nf-selectable.js</include>
<include>${staging.dir}/js/nf/canvas/nf-connectable.js</include>
+ <include>${staging.dir}/js/nf/canvas/nf-selectable.js</include>
<include>${staging.dir}/js/nf/canvas/nf-birdseye.js</include>
<include>${staging.dir}/js/nf/canvas/nf-settings.js</include>
<include>${staging.dir}/js/nf/canvas/nf-go-to.js</include>
<include>${staging.dir}/js/nf/canvas/nf-actions.js</include>
- <include>${staging.dir}/js/nf/canvas/nf-context-menu.js</include>
- <include>${staging.dir}/js/nf/nf-status-history.js</include>
- <include>${staging.dir}/js/nf/canvas/nf-canvas.js</include>
<include>${staging.dir}/js/nf/canvas/nf-clipboard.js</include>
- <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
- <include>${staging.dir}/js/nf/nf-ng-app-controller.js</include>
+ <include>${staging.dir}/js/nf/nf-ng-service-provider.js</include>
<include>${staging.dir}/js/nf/canvas/controllers/nf-ng-breadcrumbs-controller.js</include>
<include>${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-header-controller.js</include>
<include>${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-toolbox-controller.js</include>
@@ -488,78 +490,84 @@
<include>${staging.dir}/js/nf/canvas/header/components/nf-ng-label-component.js</include>
<include>${staging.dir}/js/nf/canvas/directives/nf-ng-breadcrumbs-directive.js</include>
<include>${staging.dir}/js/nf/canvas/directives/nf-ng-draggable-directive.js</include>
- <include>${staging.dir}/js/nf/nf-ng-bridge.js</include>
- <include>${staging.dir}/js/nf/nf-ng-service-provider.js</include>
+ <include>${staging.dir}/js/nf/nf-ng-app-controller.js</include>
+ <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
+ <include>${staging.dir}/js/nf/canvas/nf-canvas-utils.js</include>
</includes>
</aggregation>
<aggregation>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/nf/history/nf-history-all.js</output>
<includes>
- <include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
- <include>${staging.dir}/js/nf/history/nf-history.js</include>
- <include>${staging.dir}/js/nf/history/nf-history-table.js</include>
+ <include>${staging.dir}/js/nf/nf-cluster-summary.js</include>
<include>${staging.dir}/js/nf/history/nf-history-model.js</include>
+ <include>${staging.dir}/js/nf/history/nf-history-table.js</include>
+ <include>${staging.dir}/js/nf/history/nf-history.js</include>
</includes>
</aggregation>
<aggregation>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/nf/provenance/nf-provenance-all.js</output>
<includes>
- <include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
<include>${staging.dir}/js/nf/nf-ng-bridge.js</include>
- <include>${staging.dir}/js/nf/nf-ng-service-provider.js</include>
- <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
<include>${staging.dir}/js/nf/nf-ng-app-controller.js</include>
- <include>${staging.dir}/js/nf/provenance/nf-provenance.js</include>
+ <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
<include>${staging.dir}/js/nf/provenance/nf-provenance-table.js</include>
<include>${staging.dir}/js/nf/provenance/nf-provenance-lineage.js</include>
+ <include>${staging.dir}/js/nf/provenance/nf-provenance.js</include>
</includes>
</aggregation>
<aggregation>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/nf/summary/nf-summary-all.js</output>
<includes>
- <include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
+ <include>${staging.dir}/js/nf/nf-client.js</include>
+ <include>${staging.dir}/js/nf/canvas/nf-custom-ui.js</include>
+ <include>${staging.dir}/js/nf/nf-cluster-summary.js</include>
<include>${staging.dir}/js/nf/nf-processor-details.js</include>
+ <include>${staging.dir}/js/nf/canvas/nf-settings.js</include>
+ <include>${staging.dir}/js/nf/canvas/nf-process-group-configuration.js</include>
<include>${staging.dir}/js/nf/nf-connection-details.js</include>
<include>${staging.dir}/js/nf/nf-status-history.js</include>
<include>${staging.dir}/js/nf/nf-ng-bridge.js</include>
+ <include>${staging.dir}/js/nf/summary/nf-summary-table.js</include>
+ <include>${staging.dir}/js/nf/summary/nf-cluster-search.js</include>
<include>${staging.dir}/js/nf/nf-ng-service-provider.js</include>
- <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
<include>${staging.dir}/js/nf/nf-ng-app-controller.js</include>
+ <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
<include>${staging.dir}/js/nf/summary/nf-summary.js</include>
- <include>${staging.dir}/js/nf/summary/nf-summary-table.js</include>
- <include>${staging.dir}/js/nf/summary/nf-cluster-search.js</include>
</includes>
</aggregation>
<aggregation>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/nf/counters/nf-counters-all.js</output>
<includes>
- <include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
- <include>${staging.dir}/js/nf/counters/nf-counters.js</include>
<include>${staging.dir}/js/nf/counters/nf-counters-table.js</include>
+ <include>${staging.dir}/js/nf/counters/nf-counters.js</include>
</includes>
</aggregation>
<aggregation>
@@ -567,57 +575,58 @@
<output>${project.build.directory}/${project.build.finalName}/js/nf/users/nf-users-all.js</output>
<includes>
<include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
- <include>${staging.dir}/js/nf/users/nf-users.js</include>
<include>${staging.dir}/js/nf/users/nf-users-table.js</include>
+ <include>${staging.dir}/js/nf/users/nf-users.js</include>
</includes>
</aggregation>
<aggregation>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/nf/templates/nf-templates-all.js</output>
<includes>
- <include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
- <include>${staging.dir}/js/nf/templates/nf-templates.js</include>
<include>${staging.dir}/js/nf/templates/nf-templates-table.js</include>
+ <include>${staging.dir}/js/nf/templates/nf-templates.js</include>
</includes>
</aggregation>
<aggregation>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/nf/cluster/nf-cluster-all.js</output>
<includes>
- <include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
- <include>${staging.dir}/js/nf/cluster/nf-cluster.js</include>
<include>${staging.dir}/js/nf/cluster/nf-cluster-table.js</include>
+ <include>${staging.dir}/js/nf/cluster/nf-cluster.js</include>
</includes>
</aggregation>
<aggregation>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/nf/bulletin-board/nf-bulletin-board-all.js</output>
<includes>
- <include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
<include>${staging.dir}/js/nf/nf-ng-bridge.js</include>
<include>${staging.dir}/js/nf/nf-ng-service-provider.js</include>
- <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
<include>${staging.dir}/js/nf/nf-ng-app-controller.js</include>
+ <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
<include>${staging.dir}/js/nf/bulletin-board/nf-bulletin-board.js</include>
</includes>
</aggregation>
@@ -625,11 +634,11 @@
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/nf/login/nf-login-all.js</output>
<includes>
- <include>${staging.dir}/js/nf/nf-client.js</include>
- <include>${staging.dir}/js/nf/nf-common.js</include>
- <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-dialog.js</include>
<include>${staging.dir}/js/nf/nf-storage.js</include>
+ <include>${staging.dir}/js/nf/nf-common.js</include>
+ <include>${staging.dir}/js/nf/nf-error-handler.js</include>
+ <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
<include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
<include>${staging.dir}/js/nf/login/nf-login.js</include>
</includes>
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board.properties
index a24e743..328622f 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/bulletin-board.properties
@@ -13,10 +13,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-nf.bulletin.board.script.tags=<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
+nf.bulletin.board.script.tags=<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ng-bridge.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ng-service-provider.js?${project.version}"></script>\n\
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
index 738abc1..dbc2ac2 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
@@ -13,14 +13,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-nf.canvas.script.tags=<script type="text/javascript" src="js/nf/nf-client.js?${project.version}"></script>\n\
+nf.canvas.script.tags=<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-client.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/canvas/nf-context-menu.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-ng-bridge.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-cluster-summary.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/canvas/nf-canvas.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/canvas/nf-canvas-error-handler.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/canvas/nf-canvas-utils.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-shell.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/canvas/nf-snippet.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/canvas/nf-queue-listing.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/canvas/nf-component-state.js?${project.version}"></script>\n\
@@ -56,10 +61,7 @@ nf.canvas.script.tags=<script type="text/javascript" src="js/nf/nf-client.js?${p
<script type="text/javascript" src="js/nf/canvas/nf-settings.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/canvas/nf-go-to.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/canvas/nf-actions.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/canvas/nf-context-menu.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/canvas/nf-canvas.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/canvas/nf-clipboard.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-ng-bridge.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ng-service-provider.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/canvas/controllers/nf-ng-breadcrumbs-controller.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/canvas/controllers/nf-ng-canvas-header-controller.js?${project.version}"></script>\n\
@@ -80,6 +82,7 @@ nf.canvas.script.tags=<script type="text/javascript" src="js/nf/nf-client.js?${p
<script type="text/javascript" src="js/nf/canvas/directives/nf-ng-breadcrumbs-directive.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/canvas/directives/nf-ng-draggable-directive.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ng-app-controller.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-ng-app-config.js?${project.version}"></script>
+<script type="text/javascript" src="js/nf/nf-ng-app-config.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/canvas/nf-canvas-utils.js?${project.version}"></script>
nf.canvas.style.tags=<link rel="stylesheet" href="css/canvas.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/common-ui.css?${project.version}" type="text/css" />
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster.properties
index 4c57327..b909227 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/cluster.properties
@@ -13,13 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-nf.cluster.script.tags=<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
+nf.cluster.script.tags=<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/cluster/nf-cluster.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/cluster/nf-cluster-table.js?${project.version}"></script>
+<script type="text/javascript" src="js/nf/cluster/nf-cluster-table.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/cluster/nf-cluster.js?${project.version}"></script>
nf.cluster.style.tags=<link rel="stylesheet" href="css/main.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/banner.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/dialog.css?${project.version}" type="text/css" />\n\
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters.properties
index dd4b89d..60f923b 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/counters.properties
@@ -13,13 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-nf.counters.script.tags=<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
+nf.counters.script.tags=<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/counters/nf-counters.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/counters/nf-counters-table.js?${project.version}"></script>
+<script type="text/javascript" src="js/nf/counters/nf-counters-table.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/counters/nf-counters.js?${project.version}"></script>
nf.counters.style.tags=<link rel="stylesheet" href="css/main.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/common-ui.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/banner.css?${project.version}" type="text/css" />\n\
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history.properties
index 63da6bf..092c1b7 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/history.properties
@@ -13,14 +13,16 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-nf.history.script.tags=<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
+nf.history.script.tags=<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/history/nf-history.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-cluster-summary.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/history/nf-history-model.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/history/nf-history-table.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/history/nf-history-model.js?${project.version}"></script>
+<script type="text/javascript" src="js/nf/history/nf-history.js?${project.version}"></script>
nf.history.style.tags=<link rel="stylesheet" href="css/main.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/common-ui.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/banner.css?${project.version}" type="text/css" />\n\
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login.properties
index c3754b3..333bd37 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/login.properties
@@ -13,10 +13,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-nf.login.script.tags=<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
+nf.login.script.tags=<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/login/nf-login.js?${project.version}"></script>
nf.login.style.tags=<link rel="stylesheet" href="css/main.css?${project.version}" type="text/css" />\n\
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance.properties
index a8c5815..909e901 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/provenance.properties
@@ -13,18 +13,18 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-nf.provenance.script.tags=<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
+nf.provenance.script.tags=<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/provenance/nf-provenance.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/provenance/nf-provenance-table.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/provenance/nf-provenance-lineage.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ng-bridge.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-ng-service-provider.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ng-app-controller.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-ng-app-config.js?${project.version}"></script>
+<script type="text/javascript" src="js/nf/nf-ng-app-config.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/provenance/nf-provenance-table.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/provenance/nf-provenance-lineage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/provenance/nf-provenance.js?${project.version}"></script>
nf.provenance.style.tags=<link rel="stylesheet" href="css/main.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/common-ui.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/banner.css?${project.version}" type="text/css" />\n\
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary.properties
index 1786454..40d180a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/summary.properties
@@ -13,21 +13,27 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-nf.summary.script.tags=<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
+nf.summary.script.tags=<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-client.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/canvas/nf-custom-ui.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-cluster-summary.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-processor-details.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/canvas/nf-settings.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/canvas/nf-process-group-configuration.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-connection-details.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-status-history.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/summary/nf-summary.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-ng-bridge.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/summary/nf-summary-table.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/summary/nf-cluster-search.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-ng-bridge.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ng-service-provider.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ng-app-controller.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-ng-app-config.js?${project.version}"></script>
+<script type="text/javascript" src="js/nf/nf-ng-app-config.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/summary/nf-summary.js?${project.version}"></script>
nf.summary.style.tags=<link rel="stylesheet" href="css/main.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/common-ui.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/banner.css?${project.version}" type="text/css" />\n\
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/templates.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/templates.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/templates.properties
index 5528874..cb036e0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/templates.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/templates.properties
@@ -13,13 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-nf.templates.script.tags=<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
+nf.templates.script.tags=<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/templates/nf-templates.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/templates/nf-templates-table.js?${project.version}"></script>
+<script type="text/javascript" src="js/nf/templates/nf-templates-table.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/templates/nf-templates.js?${project.version}"></script>
nf.templates.style.tags=<link rel="stylesheet" href="css/main.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/common-ui.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/banner.css?${project.version}" type="text/css" />\n\
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users.properties
index 256cb72..ed8ff5d 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/users.properties
@@ -14,13 +14,14 @@
# limitations under the License.
nf.users.script.tags=<script type="text/javascript" src="js/nf/nf-client.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-dialog.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-storage.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-common.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-error-handler.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/nf-universal-capture.js?${project.version}"></script>\n\
<script type="text/javascript" src="js/nf/nf-ajax-setup.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/users/nf-users.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/users/nf-users-table.js?${project.version}"></script>
+<script type="text/javascript" src="js/nf/users/nf-users-table.js?${project.version}"></script>\n\
+<script type="text/javascript" src="js/nf/users/nf-users.js?${project.version}"></script>
nf.users.style.tags=<link rel="stylesheet" href="css/main.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/common-ui.css?${project.version}" type="text/css" />\n\
<link rel="stylesheet" href="css/banner.css?${project.version}" type="text/css" />\n\
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
index 3626ba4..3ecead7 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
@@ -52,8 +52,6 @@
<script type="text/javascript" src="assets/jquery-form/jquery.form.js"></script>
<script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
- <script type="text/javascript" src="js/jquery/propertytable/jquery.propertytable.js?${project.version}"></script>
- <script type="text/javascript" src="js/jquery/tagcloud/jquery.tagcloud.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="assets/jquery-minicolors/jquery.minicolors.min.js"></script>
<script type="text/javascript" src="assets/qtip2/dist/jquery.qtip.min.js"></script>
@@ -81,6 +79,8 @@
${nf.canvas.script.tags}
<script type="text/javascript" src="js/jquery/nfeditor/languages/nfel.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/nfeditor/jquery.nfeditor.js?${project.version}"></script>
+ <script type="text/javascript" src="js/jquery/propertytable/jquery.propertytable.js?${project.version}"></script>
+ <script type="text/javascript" src="js/jquery/tagcloud/jquery.tagcloud.js?${project.version}"></script>
</head>
<body ng-controller="ngCanvasAppCtrl" id="canvas-body">
<div id="splash">
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp
index 490e42b..81394d0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp
@@ -46,7 +46,6 @@
<script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
- <script type="text/javascript" src="js/jquery/propertytable/jquery.propertytable.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script>
@@ -73,6 +72,7 @@
${nf.summary.script.tags}
<script type="text/javascript" src="js/jquery/nfeditor/languages/nfel.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/nfeditor/jquery.nfeditor.js?${project.version}"></script>
+ <script type="text/javascript" src="js/jquery/propertytable/jquery.propertytable.js?${project.version}"></script>
</head>
<body ng-controller="ngSummaryAppCtrl">
<jsp:include page="/WEB-INF/partials/message-pane.jsp"/>
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp
index 6bd353b..19a6146 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp
@@ -39,7 +39,6 @@
<script type="text/javascript" src="js/jquery/jquery.center.js"></script>
<script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
- <script type="text/javascript" src="js/jquery/propertytable/jquery.propertytable.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
<script type="text/javascript" src="js/jquery/jquery.each.js"></script>
@@ -57,6 +56,7 @@
<script type="text/javascript" src="js/nf/nf-namespace.js?${project.version}"></script>
<script type="text/javascript" src="js/nf/nf-ng-namespace.js?${project.version}"></script>
${nf.users.script.tags}
+ <script type="text/javascript" src="js/jquery/propertytable/jquery.propertytable.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/nfeditor/languages/nfel.js?${project.version}"></script>
<script type="text/javascript" src="js/jquery/nfeditor/jquery.nfeditor.js?${project.version}"></script>
</head>
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/about-dialog.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/about-dialog.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/about-dialog.jsp
index 0d99aaa..6453da6 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/about-dialog.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/about-dialog.jsp
@@ -35,7 +35,7 @@
</div>
<p>
Apache NiFi is a framework to support highly scalable and flexible dataflows.
- It can be run on on laptops up through clusters of enterprise class servers.
+ It can be run on laptops up through clusters of enterprise class servers.
Instead of dictating a particular dataflow or behavior it empowers you to design your own
optimal dataflow tailored to your specific environment.
</p>
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-status.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-status.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-status.jsp
index 63ecd3a..81e9ef0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-status.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/flow-status.jsp
@@ -17,7 +17,7 @@
<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %>
<div id="flow-status" flex layout="row" layout-align="space-between center">
<div id="flow-status-container" layout="row" layout-align="space-around center">
- <div class="fa fa-cubes" ng-if="appCtrl.nf.Canvas.isClustered()"><span id="connected-nodes-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.connectedNodesCount}}</span></div>
+ <div class="fa fa-cubes" ng-if="appCtrl.nf.ClusterSummary.isClustered()"><span id="connected-nodes-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.connectedNodesCount}}</span></div>
<div class="icon icon-threads"><span id="active-thread-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.activeThreadCount}}</span></div>
<div class="fa fa-list"><span id="total-queued">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.totalQueued}}</span></div>
<div class="fa fa-bullseye"><span id="controller-transmitting-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerTransmittingCount}}</span></div>
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.js
index c025ddd..b6d324b 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/combo/jquery.combo.js
@@ -14,6 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
+/* requires qtip plugin to be loaded first*/
+
/**
* Create a new combo box. The options are specified in the following
* format:
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.js
index 41353d7..ba673a4 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/jquery.nfeditor.js
@@ -15,27 +15,26 @@
* limitations under the License.
*/
-/* global CodeMirror, nf */
-
-/**
- * Create a new nf editor. The options are specified in the following
- * format:
- *
- * {
- * languageId: 'nfel',
- * resizable: true,
- * sensitive: false,
- * readOnly: false,
- * content: '${attribute}',
- * width: 200,
- * height: 200,
- * minWidth: 150,
- * minHeight: 150
- * }
- *
- * @param {type} $
- */
-(function ($) {
+/* global define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'CodeMirror',
+ 'nf'],
+ function ($, common) {
+ factory($, common);
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ factory(require('jquery'),
+ require('CodeMirror'),
+ require('nf'));
+ } else {
+ factory(root.$,
+ root.CodeMirror,
+ root.nf);
+ }
+}(this, function ($, CodeMirror, nf) {
var isUndefined = function (obj) {
return typeof obj === 'undefined';
@@ -58,10 +57,23 @@
};
var methods = {
-
+
/**
- * Initializes the nf editor.
- *
+ * Create a new nf editor. The options are specified in the following
+ * format:
+ *
+ * {
+ * languageId: 'nfel',
+ * resizable: true,
+ * sensitive: false,
+ * readOnly: false,
+ * content: '${attribute}',
+ * width: 200,
+ * height: 200,
+ * minWidth: 150,
+ * minHeight: 150
+ * }
+ *
* @param {object} options The options for this editor.
*/
init: function (options) {
@@ -118,7 +130,7 @@
}
}
});
-
+
// set the size
var width = null;
if (isDefinedAndNotNull(options.width)) {
@@ -192,7 +204,7 @@
}
});
},
-
+
/**
* Refreshes the editor.
*/
@@ -206,10 +218,10 @@
}
});
},
-
+
/**
* Sets the size of the editor.
- *
+ *
* @param {integer} width
* @param {integer} height
*/
@@ -223,7 +235,7 @@
}
});
},
-
+
/**
* Gets the value of the editor in the first matching selector.
*/
@@ -243,10 +255,10 @@
return value;
},
-
+
/**
* Sets the value of the editor.
- *
+ *
* @param {string} value
*/
setValue: function (value) {
@@ -262,7 +274,7 @@
}
});
},
-
+
/**
* Sets the focus.
*/
@@ -276,7 +288,7 @@
}
});
},
-
+
/**
* Sets the focus.
*/
@@ -290,7 +302,7 @@
}
});
},
-
+
/**
* Gets whether the value of the editor in the first matching selector has been modified.
*/
@@ -304,7 +316,7 @@
return modified;
},
-
+
/**
* Destroys the editor.
*/
@@ -320,4 +332,4 @@
return methods.init.apply(this, arguments);
}
};
-})(jQuery);
\ No newline at end of file
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js
index 9635337..807cf11 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/nfeditor/languages/nfel.js
@@ -15,9 +15,27 @@
* limitations under the License.
*/
-/* global nf, CodeMirror */
+/* global nf, define, module, require, exports */
-nf.nfel = (function() {
+/* requires qtip plugin to be loaded first*/
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'CodeMirror'],
+ function ($, CodeMirror) {
+ return (nf.nfel = factory($, CodeMirror));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.nfel =
+ factory(require('jquery'),
+ require('CodeMirror')));
+ } else {
+ nf.nfel = factory(root.$,
+ root.CodeMirror);
+ }
+}(this, function ($, CodeMirror) {
+ 'use strict';
/**
* Formats the specified arguments for the EL function tooltip.
@@ -853,4 +871,4 @@ nf.nfel = (function() {
return completions;
}
};
-}());
\ No newline at end of file
+}));
\ No newline at end of file
[08/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js
index 5de2440..38f21e8 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js
@@ -15,9 +15,37 @@
* limitations under the License.
*/
-/* global nf, Slick */
-
-nf.HistoryTable = (function () {
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'Slick',
+ 'nf.Common',
+ 'nf.Dialog',
+ 'nf.ErrorHandler',
+ 'nf.HistoryModel'],
+ function ($, Slick, common, dialog, errorHandler, HistoryModel) {
+ return (nf.HistoryTable = factory($, Slick, common, dialog, errorHandler, HistoryModel));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.HistoryTable =
+ factory(require('jquery'),
+ require('Slick'),
+ require('nf.Common'),
+ require('nf.Dialog'),
+ require('nf.ErrorHandler'),
+ require('nf.HistoryModel')));
+ } else {
+ nf.HistoryTable = factory(root.$,
+ root.Slick,
+ root.nf.Common,
+ root.nf.Dialog,
+ root.nf.ErrorHandler,
+ root.nf.HistoryModel);
+ }
+}(this, function ($, Slick, common, dialog, errorHandler, HistoryModel) {
+ 'use strict';
/**
* Configuration object used to hold a number of configuration items.
@@ -151,7 +179,7 @@ nf.HistoryTable = (function () {
historyModel.setFilterArgs(filter);
// reload the table
- nf.HistoryTable.loadHistoryTable();
+ nfHistoryTable.loadHistoryTable();
}
}
},
@@ -212,15 +240,15 @@ nf.HistoryTable = (function () {
}
var endDateTime = endDate + ' ' + endTime;
var timezone = $('.timezone:first').text();
- nf.Dialog.showYesNoDialog({
+ dialog.showYesNoDialog({
headerText: 'History',
- dialogContent: "Are you sure you want to delete all history before '" + nf.Common.escapeHtml(endDateTime) + " " + nf.Common.escapeHtml(timezone) + "'?",
+ dialogContent: "Are you sure you want to delete all history before '" + common.escapeHtml(endDateTime) + " " + common.escapeHtml(timezone) + "'?",
yesHandler: function () {
purgeHistory(endDateTime);
}
});
} else {
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'History',
dialogContent: 'The end date must be specified.'
});
@@ -262,7 +290,7 @@ nf.HistoryTable = (function () {
historyModel.setFilterArgs({});
// refresh the table
- nf.HistoryTable.loadHistoryTable();
+ nfHistoryTable.loadHistoryTable();
});
// add hover effect and click handler for opening the dialog
@@ -272,7 +300,7 @@ nf.HistoryTable = (function () {
// define a custom formatter for the more details column
var moreDetailsFormatter = function (row, cell, value, columnDef, dataContext) {
- if(dataContext.canRead === true) {
+ if (dataContext.canRead === true) {
return '<div title="View Details" class="pointer show-action-details fa fa-info-circle" style="margin-top: 4px;"></div>';
}
return "";
@@ -280,10 +308,10 @@ nf.HistoryTable = (function () {
// define how general values are formatted
var valueFormatter = function (row, cell, value, columnDef, dataContext) {
- if(dataContext.canRead !== true) {
+ if (dataContext.canRead !== true) {
return '<span class="unset" style="font-size: 13px; padding-top: 2px;">Not authorized</span>';
}
- return nf.Common.formatValue(dataContext.action[columnDef.field]);
+ return common.formatValue(dataContext.action[columnDef.field]);
};
// initialize the templates table
@@ -297,12 +325,48 @@ nf.HistoryTable = (function () {
width: 50,
maxWidth: 50
},
- {id: 'timestamp', name: 'Date/Time', field: 'timestamp', sortable: true, resizable: true, formatter: valueFormatter},
- {id: 'sourceName', name: 'Name', field: 'sourceName', sortable: true, resizable: true, formatter: valueFormatter},
- {id: 'sourceType', name: 'Type', field: 'sourceType', sortable: true, resizable: true, formatter: valueFormatter},
- {id: 'operation', name: 'Operation', field: 'operation', sortable: true, resizable: true, formatter: valueFormatter},
- {id: 'userIdentity', name: 'User', field: 'userIdentity', sortable: true, resizable: true, formatter: valueFormatter}
+ {
+ id: 'timestamp',
+ name: 'Date/Time',
+ field: 'timestamp',
+ sortable: true,
+ resizable: true,
+ formatter: valueFormatter
+ },
+ {
+ id: 'sourceName',
+ name: 'Name',
+ field: 'sourceName',
+ sortable: true,
+ resizable: true,
+ formatter: valueFormatter
+ },
+ {
+ id: 'sourceType',
+ name: 'Type',
+ field: 'sourceType',
+ sortable: true,
+ resizable: true,
+ formatter: valueFormatter
+ },
+ {
+ id: 'operation',
+ name: 'Operation',
+ field: 'operation',
+ sortable: true,
+ resizable: true,
+ formatter: valueFormatter
+ },
+ {
+ id: 'userIdentity',
+ name: 'User',
+ field: 'userIdentity',
+ sortable: true,
+ resizable: true,
+ formatter: valueFormatter
+ }
];
+
var historyOptions = {
forceFitColumns: true,
enableTextSelectionOnCells: true,
@@ -313,7 +377,7 @@ nf.HistoryTable = (function () {
};
// create the remote model
- var historyModel = new nf.HistoryModel();
+ var historyModel = new HistoryModel();
// initialize the grid
var historyGrid = new Slick.Grid('#history-table', historyModel, historyColumns, historyOptions);
@@ -365,7 +429,7 @@ nf.HistoryTable = (function () {
$('#history-table').data('gridInstance', historyGrid);
// add the purge button if appropriate
- if (nf.Common.canModifyController()) {
+ if (common.canModifyController()) {
$('#history-purge-button').on('click', function () {
$('#history-purge-dialog').modal('show');
}).show();
@@ -385,8 +449,8 @@ nf.HistoryTable = (function () {
}),
dataType: 'json'
}).done(function () {
- nf.HistoryTable.loadHistoryTable();
- }).fail(nf.Common.handleAjaxError);
+ nfHistoryTable.loadHistoryTable();
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -397,19 +461,19 @@ nf.HistoryTable = (function () {
var showActionDetails = function (action) {
// create the markup for the dialog
var detailsMarkup = $('<div></div>').append(
- $('<div class="action-detail"><div class="history-details-name">Id</div>' + nf.Common.escapeHtml(action.sourceId) + '</div>'));
+ $('<div class="action-detail"><div class="history-details-name">Id</div>' + common.escapeHtml(action.sourceId) + '</div>'));
// get any component details
var componentDetails = action.componentDetails;
// inspect the operation to determine if there are any component details
- if (nf.Common.isDefinedAndNotNull(componentDetails)) {
+ if (common.isDefinedAndNotNull(componentDetails)) {
if (action.sourceType === 'Processor' || action.sourceType === 'ControllerService' || action.sourceType === 'ReportingTask') {
detailsMarkup.append(
- $('<div class="action-detail"><div class="history-details-name">Type</div>' + nf.Common.escapeHtml(componentDetails.type) + '</div>'));
+ $('<div class="action-detail"><div class="history-details-name">Type</div>' + common.escapeHtml(componentDetails.type) + '</div>'));
} else if (action.sourceType === 'RemoteProcessGroup') {
detailsMarkup.append(
- $('<div class="action-detail"><div class="history-details-name">Uri</div>' + nf.Common.formatValue(componentDetails.uri) + '</div>'));
+ $('<div class="action-detail"><div class="history-details-name">Uri</div>' + common.formatValue(componentDetails.uri) + '</div>'));
}
}
@@ -417,30 +481,30 @@ nf.HistoryTable = (function () {
var actionDetails = action.actionDetails;
// inspect the operation to determine if there are any action details
- if (nf.Common.isDefinedAndNotNull(actionDetails)) {
+ if (common.isDefinedAndNotNull(actionDetails)) {
if (action.operation === 'Configure') {
detailsMarkup.append(
- $('<div class="action-detail"><div class="history-details-name">Name</div>' + nf.Common.formatValue(actionDetails.name) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Value</div>' + nf.Common.formatValue(actionDetails.value) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Previous Value</div>' + nf.Common.formatValue(actionDetails.previousValue) + '</div>'));
+ $('<div class="action-detail"><div class="history-details-name">Name</div>' + common.formatValue(actionDetails.name) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Value</div>' + common.formatValue(actionDetails.value) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Previous Value</div>' + common.formatValue(actionDetails.previousValue) + '</div>'));
} else if (action.operation === 'Connect' || action.operation === 'Disconnect') {
detailsMarkup.append(
- $('<div class="action-detail"><div class="history-details-name">Source Id</div>' + nf.Common.escapeHtml(actionDetails.sourceId) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Source Name</div>' + nf.Common.formatValue(actionDetails.sourceName) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Source Type</div>' + nf.Common.escapeHtml(actionDetails.sourceType) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Relationship(s)</div>' + nf.Common.formatValue(actionDetails.relationship) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Destination Id</div>' + nf.Common.escapeHtml(actionDetails.destinationId) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Destination Name</div>' + nf.Common.formatValue(actionDetails.destinationName) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Destination Type</div>' + nf.Common.escapeHtml(actionDetails.destinationType) + '</div>'));
+ $('<div class="action-detail"><div class="history-details-name">Source Id</div>' + common.escapeHtml(actionDetails.sourceId) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Source Name</div>' + common.formatValue(actionDetails.sourceName) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Source Type</div>' + common.escapeHtml(actionDetails.sourceType) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Relationship(s)</div>' + common.formatValue(actionDetails.relationship) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Destination Id</div>' + common.escapeHtml(actionDetails.destinationId) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Destination Name</div>' + common.formatValue(actionDetails.destinationName) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Destination Type</div>' + common.escapeHtml(actionDetails.destinationType) + '</div>'));
} else if (action.operation === 'Move') {
detailsMarkup.append(
- $('<div class="action-detail"><div class="history-details-name">Group</div>' + nf.Common.formatValue(actionDetails.group) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Group Id</div>' + nf.Common.escapeHtml(actionDetails.groupId) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Previous Group</div>' + nf.Common.formatValue(actionDetails.previousGroup) + '</div>')).append(
- $('<div class="action-detail"><div class="history-details-name">Previous Group Id</div>' + nf.Common.escapeHtml(actionDetails.previousGroupId) + '</div>'));
+ $('<div class="action-detail"><div class="history-details-name">Group</div>' + common.formatValue(actionDetails.group) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Group Id</div>' + common.escapeHtml(actionDetails.groupId) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Previous Group</div>' + common.formatValue(actionDetails.previousGroup) + '</div>')).append(
+ $('<div class="action-detail"><div class="history-details-name">Previous Group Id</div>' + common.escapeHtml(actionDetails.previousGroupId) + '</div>'));
} else if (action.operation === 'Purge') {
detailsMarkup.append(
- $('<div class="action-detail"><div class="history-details-name">End Date</div>' + nf.Common.escapeHtml(actionDetails.endDate) + '</div>'));
+ $('<div class="action-detail"><div class="history-details-name">End Date</div>' + common.escapeHtml(actionDetails.endDate) + '</div>'));
}
}
@@ -451,7 +515,7 @@ nf.HistoryTable = (function () {
$('#action-details-dialog').modal('show');
};
- return {
+ var nfHistoryTable = {
init: function () {
initDetailsDialog();
initFilterDialog();
@@ -464,7 +528,7 @@ nf.HistoryTable = (function () {
*/
resetTableSize: function () {
var historyGrid = $('#history-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(historyGrid)) {
+ if (common.isDefinedAndNotNull(historyGrid)) {
historyGrid.resizeCanvas();
}
},
@@ -483,4 +547,6 @@ nf.HistoryTable = (function () {
historyGrid.onViewportChanged.notify();
}
};
-}());
+
+ return nfHistoryTable;
+}));
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history.js
index 0f436e9..7f73724 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history.js
@@ -15,14 +15,42 @@
* limitations under the License.
*/
-/* global nf, top */
-
-$(document).ready(function () {
- // initialize the status page
- nf.History.init();
-});
-
-nf.History = (function () {
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.HistoryTable',
+ 'nf.ErrorHandler',
+ 'nf.Storage',
+ 'nf.ClusterSummary'],
+ function ($, common, historyTable, errorHandler, storage, clusterSummary) {
+ return (nf.History = factory($, common, historyTable, errorHandler, storage, clusterSummary));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.History =
+ factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.HistoryTable'),
+ require('nf.ErrorHandler'),
+ require('nf.Storage'),
+ require('nf.ClusterSummary')));
+ } else {
+ nf.History = factory(root.$,
+ root.nf.Common,
+ root.nf.HistoryTable,
+ root.nf.ErrorHandler,
+ root.nf.Storage,
+ root.nf.ClusterSummary);
+ }
+}(this, function ($, common, historyTable, errorHandler, storage, clusterSummary) {
+ 'use strict';
+
+ $(document).ready(function () {
+ // initialize the status page
+ nfHistory.init();
+ });
/**
* Configuration object used to hold a number of configuration items.
@@ -31,8 +59,7 @@ nf.History = (function () {
urls: {
banners: '../nifi-api/flow/banners',
about: '../nifi-api/flow/about',
- currentUser: '../nifi-api/flow/current-user',
- clusterSummary: '../nifi-api/flow/cluster/summary'
+ currentUser: '../nifi-api/flow/current-user'
}
};
@@ -45,28 +72,8 @@ nf.History = (function () {
url: config.urls.currentUser,
dataType: 'json'
}).done(function (currentUser) {
- nf.Common.setCurrentUser(currentUser);
- }).fail(nf.Common.handleAjaxError);
- };
-
- /**
- * Loads the flow configuration and updated the cluster state.
- *
- * @returns xhr
- */
- var loadClusterSummary = function () {
- return $.ajax({
- type: 'GET',
- url: config.urls.clusterSummary,
- dataType: 'json'
- }).done(function (response) {
- var clusterSummary = response.clusterSummary;
-
- // if clustered, show message to indicate location of actions
- if (clusterSummary.clustered === true) {
- $('#cluster-history-message').show();
- }
- });
+ common.setCurrentUser(currentUser);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -75,7 +82,7 @@ nf.History = (function () {
var initializeHistoryPage = function () {
// define mouse over event for the refresh button
$('#refresh-button').click(function () {
- nf.HistoryTable.loadHistoryTable();
+ historyTable.loadHistoryTable();
});
// return a deferred for page initialization
@@ -88,8 +95,8 @@ nf.History = (function () {
dataType: 'json'
}).done(function (response) {
// ensure the banners response is specified
- if (nf.Common.isDefinedAndNotNull(response.banners)) {
- if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
+ if (common.isDefinedAndNotNull(response.banners)) {
+ if (common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
// update the header text
var bannerHeader = $('#banner-header').text(response.banners.headerText).show();
@@ -103,7 +110,7 @@ nf.History = (function () {
updateTop('history');
}
- if (nf.Common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
+ if (common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
// update the footer text and show it
var bannerFooter = $('#banner-footer').text(response.banners.footerText).show();
@@ -119,7 +126,7 @@ nf.History = (function () {
deferred.resolve();
}).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
+ errorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
} else {
@@ -128,22 +135,28 @@ nf.History = (function () {
}).promise();
};
- return {
+ var nfHistory = {
/**
* Initializes the status page.
*/
init: function () {
- nf.Storage.init();
-
// load the current user
- loadCurrentUser().done(function () {
- loadClusterSummary();
+ var currentUser = loadCurrentUser()
+
+ storage.init();
+
+ // ensure the config requests are loaded
+ $.when(currentUser).done(function (currentUserResult) {
+ // if clustered, show message to indicate location of actions
+ if (clusterSummary.isClustered() === true) {
+ $('#cluster-history-message').show();
+ }
// create the history table
- nf.HistoryTable.init();
+ historyTable.init();
// load the history table
- nf.HistoryTable.loadHistoryTable();
+ historyTable.loadHistoryTable();
// once the table is initialized, finish initializing the page
initializeHistoryPage().done(function () {
@@ -154,13 +167,13 @@ nf.History = (function () {
'height': $(window).height() + 'px',
'width': $(window).width() + 'px'
});
-
+
$('#history').css('margin', 40);
$('#history-refresh-container').css('margin', 40);
}
// configure the initial grid height
- nf.HistoryTable.resetTableSize();
+ historyTable.resetTableSize();
};
// get the about details
@@ -178,15 +191,15 @@ nf.History = (function () {
// set the initial size
setBodySize();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
$(window).on('resize', function (e) {
setBodySize();
// resize dialogs when appropriate
var dialogs = $('.dialog');
for (var i = 0, len = dialogs.length; i < len; i++) {
- if ($(dialogs[i]).is(':visible')){
- setTimeout(function(dialog){
+ if ($(dialogs[i]).is(':visible')) {
+ setTimeout(function (dialog) {
dialog.modal('resize');
}, 50, $(dialogs[i]));
}
@@ -195,8 +208,8 @@ nf.History = (function () {
// resize grids when appropriate
var gridElements = $('*[class*="slickgrid_"]');
for (var j = 0, len = gridElements.length; j < len; j++) {
- if ($(gridElements[j]).is(':visible')){
- setTimeout(function(gridElement){
+ if ($(gridElements[j]).is(':visible')) {
+ setTimeout(function (gridElement) {
gridElement.data('gridInstance').resizeCanvas();
}, 50, $(gridElements[j]));
}
@@ -206,16 +219,18 @@ nf.History = (function () {
var tabsContainers = $('.tab-container');
var tabsContents = [];
for (var k = 0, len = tabsContainers.length; k < len; k++) {
- if ($(tabsContainers[k]).is(':visible')){
+ if ($(tabsContainers[k]).is(':visible')) {
tabsContents.push($('#' + $(tabsContainers[k]).attr('id') + '-content'));
}
}
$.each(tabsContents, function (index, tabsContent) {
- nf.Common.toggleScrollable(tabsContent.get(0));
+ common.toggleScrollable(tabsContent.get(0));
});
});
});
});
}
};
-}());
\ No newline at end of file
+
+ return nfHistory;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/login/nf-login.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/login/nf-login.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/login/nf-login.js
index 11faba5..a18d5d7 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/login/nf-login.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/login/nf-login.js
@@ -15,13 +15,32 @@
* limitations under the License.
*/
-/* global nf, top */
-
-$(document).ready(function () {
- nf.Login.init();
-});
-
-nf.Login = (function () {
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.Dialog',
+ 'nf.Storage'],
+ function ($, common, dialog, storage) {
+ return (nf.Login = factory($, common, dialog, storage));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Login =
+ factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.Dialog'),
+ require('nf.Storage')));
+ } else {
+ nf.Login = factory(root.$, root.nf.Common, root.nf.Dialog, root.nf.Storage);
+ }
+}(this, function ($, common, dialog, storage) {
+ 'use strict';
+
+ $(document).ready(function () {
+ nfLogin.init();
+ });
var config = {
urls: {
@@ -62,12 +81,12 @@ nf.Login = (function () {
var login = function () {
// remove focus
$('#username, #password').blur();
-
+
// show the logging message...
$('#login-progress-label').text('Logging in...');
$('#login-progress-container').show();
$('#login-submission-container').hide();
-
+
// login submit
$.ajax({
type: 'POST',
@@ -78,9 +97,9 @@ nf.Login = (function () {
}
}).done(function (jwt) {
// get the payload and store the token with the appropirate expiration
- var token = nf.Common.getJwtPayload(jwt);
- var expiration = parseInt(token['exp'], 10) * nf.Common.MILLIS_PER_SECOND;
- nf.Storage.setItem('jwt', jwt, expiration);
+ var token = common.getJwtPayload(jwt);
+ var expiration = parseInt(token['exp'], 10) * common.MILLIS_PER_SECOND;
+ storage.setItem('jwt', jwt, expiration);
// check to see if they actually have access now
$.ajax({
@@ -89,10 +108,10 @@ nf.Login = (function () {
dataType: 'json'
}).done(function (response) {
var accessStatus = response.accessStatus;
-
+
// update the logout link appropriately
showLogoutLink();
-
+
// update according to the access status
if (accessStatus.status === 'ACTIVE') {
// reload as appropriate - no need to schedule token refresh as the page is reloading
@@ -122,9 +141,9 @@ nf.Login = (function () {
$('#login-message-container').show();
});
}).fail(function (xhr, status, error) {
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'Login',
- dialogContent: nf.Common.escapeHtml(xhr.responseText)
+ dialogContent: common.escapeHtml(xhr.responseText)
});
// update the form visibility
@@ -134,20 +153,20 @@ nf.Login = (function () {
};
var showLogoutLink = function () {
- nf.Common.showLogoutLink();
+ common.showLogoutLink();
};
- return {
+ var nfLogin = {
/**
* Initializes the login page.
*/
init: function () {
- nf.Storage.init();
+ storage.init();
- if (nf.Storage.getItem('jwt') !== null) {
+ if (storage.getItem('jwt') !== null) {
showLogoutLink();
}
-
+
// supporting logging in via enter press
$('#username, #password').on('keyup', function (e) {
var code = e.keyCode ? e.keyCode : e.which;
@@ -166,7 +185,7 @@ nf.Login = (function () {
$('#login-message').text(xhr.responseText);
initializeMessage();
});
-
+
// access config
var accessConfigXhr = $.ajax({
type: 'GET',
@@ -180,22 +199,22 @@ nf.Login = (function () {
var accessConfigResponse = accessConfigResult[0];
var accessConfig = accessConfigResponse.config;
-
+
// possible login states
var needsLogin = true;
var showMessage = false;
-
+
// handle the status appropriately
if (accessStatus.status === 'UNKNOWN') {
needsLogin = true;
} else if (accessStatus.status === 'ACTIVE') {
showMessage = true;
needsLogin = false;
-
+
$('#login-message-title').text('Success');
$('#login-message').text(accessStatus.message);
}
-
+
// if login is required, verify its supported
if (accessConfig.supportsLogin === false && needsLogin === true) {
$('#login-message-title').text('Access Denied');
@@ -214,4 +233,6 @@ nf.Login = (function () {
});
}
};
-}());
\ No newline at end of file
+
+ return nfLogin;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ajax-setup.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ajax-setup.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ajax-setup.js
index ad540b8..eaf61cf 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ajax-setup.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ajax-setup.js
@@ -15,25 +15,43 @@
* limitations under the License.
*/
-/**
- * Performs ajax setup for use within NiFi.
- */
-$(document).ready(function ($) {
- // include jwt when possible
- $.ajaxSetup({
- 'beforeSend': function(xhr) {
- var hadToken = nf.Storage.hasItem('jwt');
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Storage'],
+ function ($, storage) {
+ return (nf.AjaxSetup = factory($, storage));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.AjaxSetup = factory(require('jquery'),
+ require('nf.Storage')));
+ } else {
+ nf.AjaxSetup = factory(root.$,
+ root.nf.Storage);
+ }
+}(this, function ($, storage) {
+ /**
+ * Performs ajax setup for use within NiFi.
+ */
+ $(document).ready(function ($) {
+ // include jwt when possible
+ $.ajaxSetup({
+ 'beforeSend': function (xhr) {
+ var hadToken = storage.hasItem('jwt');
- // get the token to include in all requests
- var token = nf.Storage.getItem('jwt');
- if (token !== null) {
- xhr.setRequestHeader('Authorization', 'Bearer ' + token);
- } else {
- // if the current user was logged in with a token and the token just expired, cancel the request
- if (hadToken === true) {
- return false;
+ // get the token to include in all requests
+ var token = storage.getItem('jwt');
+ if (token !== null) {
+ xhr.setRequestHeader('Authorization', 'Bearer ' + token);
+ } else {
+ // if the current user was logged in with a token and the token just expired, cancel the request
+ if (hadToken === true) {
+ return false;
+ }
}
}
- }
+ });
});
-});
\ No newline at end of file
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-client.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-client.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-client.js
index 3cf9fdf..aedd555 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-client.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-client.js
@@ -15,15 +15,33 @@
* limitations under the License.
*/
-/* global nf */
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common'],
+ function ($, common) {
+ return (nf.Client = factory($, common));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Client =
+ factory(require('jquery'),
+ require('nf.Common')));
+ } else {
+ nf.Client =
+ factory(root.$,
+ root.nf.Common);
+ }
+}(this, function ($, common) {
+ 'use strict';
-nf.Client = (function() {
var clientId = null;
-
+
return {
/**
* Initializes the client.
- *
+ *
* @returns deferred
*/
init: function () {
@@ -55,7 +73,7 @@ nf.Client = (function() {
* @return {boolean} whether proposedData is newer than currentData
*/
isNewerRevision: function (currentData, proposedData) {
- if (nf.Common.isDefinedAndNotNull(currentData)) {
+ if (common.isDefinedAndNotNull(currentData)) {
var currentRevision = currentData.revision;
var proposedRevision = proposedData.revision;
@@ -66,4 +84,4 @@ nf.Client = (function() {
}
}
};
-}());
\ No newline at end of file
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-cluster-summary.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-cluster-summary.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-cluster-summary.js
new file mode 100644
index 0000000..1352843
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-cluster-summary.js
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery'], function ($) {
+ return (nf.ClusterSummary = factory($));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ClusterSummary =
+ factory(require('jquery')));
+ } else {
+ nf.ClusterSummary = factory(root.$);
+ }
+}(this, function ($) {
+ var clustered = false;
+ var connectedToCluster = false;
+
+ var config = {
+ urls: {
+ clusterSummary: '../nifi-api/flow/cluster/summary'
+ }
+ };
+
+ return {
+
+ /**
+ * Loads the flow configuration and updated the cluster state.
+ *
+ * @returns xhr
+ */
+ loadClusterSummary: function () {
+ return $.ajax({
+ type: 'GET',
+ url: config.urls.clusterSummary,
+ dataType: 'json'
+ }).done(function (clusterSummaryResult) {
+ var clusterSummaryResponse = clusterSummaryResult;
+ var clusterSummary = clusterSummaryResponse.clusterSummary;
+
+ // establish the initial cluster state
+ clustered = clusterSummary.clustered;
+ connectedToCluster = clusterSummary.connectedToCluster;
+ });
+ },
+
+ /**
+ * Return whether this instance of NiFi is clustered.
+ *
+ * @returns {Boolean}
+ */
+ isClustered: function () {
+ return clustered === true;
+ },
+
+ /**
+ * Return whether this instance is connected to a cluster.
+ *
+ * @returns {boolean}
+ */
+ isConnectedToCluster: function () {
+ return connectedToCluster === true;
+ }
+ };
+}));
\ No newline at end of file
[11/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
index 006a41b..dacd8a0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
@@ -15,34 +15,71 @@
* limitations under the License.
*/
-/* global nf, Slick */
-
-/**
- * Create a property table. The options are specified in the following
- * format:
- *
- * {
- * readOnly: true,
- * dialogContainer: 'body',
- * descriptorDeferred: function () {
- * return $.Deferred(function (deferred) {
- * deferred.resolve();
- * }).promise;
- * },
- * goToServiceDeferred: function () {
- * return $.Deferred(function (deferred) {
- * deferred.resolve();
- * }).promise;
- * }
- * }
- */
+/* global define, module, require, exports */
+
+/* requires modal, combo, qtip, and nfeditor plugins to be loaded first*/
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'Slick',
+ 'nf.Common',
+ 'nf.UniversalCapture',
+ 'nf.Dialog',
+ 'nf.Client',
+ 'nf.ErrorHandler',
+ 'nf.ProcessGroupConfiguration',
+ 'nf.Settings'],
+ function ($,
+ Slick,
+ common,
+ universalCapture,
+ dialog,
+ client,
+ errorHandler,
+ processGroupConfiguration,
+ settings) {
+ factory($,
+ Slick,
+ common,
+ universalCapture,
+ dialog,
+ client,
+ errorHandler,
+ processGroupConfiguration,
+ settings);
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ factory(require('jquery'),
+ require('Slick'),
+ require('nf.Common'),
+ require('nf.UniversalCapture'),
+ require('nf.Dialog'),
+ require('nf.Client'),
+ require('nf.ErrorHandler'),
+ require('nf.ProcessGroupConfiguration'),
+ require('nf.Settings'));
+ } else {
+ factory(root.$,
+ root.Slick,
+ root.nf.Common,
+ root.nf.UniversalCapture,
+ root.nf.Dialog,
+ root.nf.Client,
+ root.nf.ErrorHandler,
+ root.nf.ProcessGroupConfiguration,
+ root.nf.Settings);
+ }
+}(this, function ($,
+ Slick,
+ common,
+ universalCapture,
+ dialog,
+ client,
+ errorHandler,
+ processGroupConfiguration,
+ settings) {
-/**
- * jQuery plugin for a property table.
- *
- * @param {type} $
- */
-(function ($) {
var languageId = 'nfel';
var editorClass = languageId + '-editor';
var groupId = null;
@@ -182,12 +219,12 @@
this.loadValue = function (item) {
// determine if this is a sensitive property
var isEmptyChecked = false;
- var sensitive = nf.Common.isSensitiveProperty(propertyDescriptor);
+ var sensitive = common.isSensitiveProperty(propertyDescriptor);
// determine the value to use when populating the text field
- if (nf.Common.isDefinedAndNotNull(item[args.column.field])) {
+ if (common.isDefinedAndNotNull(item[args.column.field])) {
if (sensitive) {
- initialValue = nf.Common.config.sensitiveText;
+ initialValue = common.config.sensitiveText;
} else {
initialValue = item[args.column.field];
isEmptyChecked = initialValue === '';
@@ -204,7 +241,7 @@
var sensitiveInput = $(this);
if (sensitiveInput.hasClass('sensitive')) {
sensitiveInput.removeClass('sensitive');
- if (sensitiveInput.val() === nf.Common.config.sensitiveText) {
+ if (sensitiveInput.val() === common.config.sensitiveText) {
sensitiveInput.val('');
}
}
@@ -223,8 +260,8 @@
return '';
} else {
// otherwise if the property is required
- if (nf.Common.isRequiredProperty(propertyDescriptor)) {
- if (nf.Common.isBlank(propertyDescriptor.defaultValue)) {
+ if (common.isRequiredProperty(propertyDescriptor)) {
+ if (common.isBlank(propertyDescriptor.defaultValue)) {
return previousValue;
} else {
return propertyDescriptor.defaultValue;
@@ -285,7 +322,7 @@
propertyDescriptor = descriptors[args.item.property];
// determine if this is a sensitive property
- var sensitive = nf.Common.isSensitiveProperty(propertyDescriptor);
+ var sensitive = common.isSensitiveProperty(propertyDescriptor);
// record the previous value
previousValue = args.item[args.column.field];
@@ -402,12 +439,12 @@
this.loadValue = function (item) {
// determine if this is a sensitive property
var isEmptyChecked = false;
- var sensitive = nf.Common.isSensitiveProperty(propertyDescriptor);
+ var sensitive = common.isSensitiveProperty(propertyDescriptor);
// determine the value to use when populating the text field
- if (nf.Common.isDefinedAndNotNull(item[args.column.field])) {
+ if (common.isDefinedAndNotNull(item[args.column.field])) {
if (sensitive) {
- initialValue = nf.Common.config.sensitiveText;
+ initialValue = common.config.sensitiveText;
} else {
initialValue = item[args.column.field];
isEmptyChecked = initialValue === '';
@@ -431,8 +468,8 @@
return '';
} else {
// otherwise if the property is required
- if (nf.Common.isRequiredProperty(propertyDescriptor)) {
- if (nf.Common.isBlank(propertyDescriptor.defaultValue)) {
+ if (common.isRequiredProperty(propertyDescriptor)) {
+ if (common.isBlank(propertyDescriptor.defaultValue)) {
return previousValue;
} else {
return propertyDescriptor.defaultValue;
@@ -516,7 +553,7 @@
}).appendTo(container);
// check for allowable values which will drive which editor to use
- var allowableValues = nf.Common.getAllowableValues(propertyDescriptor);
+ var allowableValues = common.getAllowableValues(propertyDescriptor);
// show the output port options
var options = [];
@@ -534,7 +571,7 @@
text: allowableValue.displayName,
value: allowableValue.value,
disabled: allowableValueEntity.canRead === false && allowableValue.value !== args.item['previousValue'],
- description: nf.Common.escapeHtml(allowableValue.description)
+ description: common.escapeHtml(allowableValue.description)
});
});
}
@@ -550,7 +587,7 @@
}
// if this descriptor identifies a controller service, provide a way to create one
- if (nf.Common.isDefinedAndNotNull(propertyDescriptor.identifiesControllerService)) {
+ if (common.isDefinedAndNotNull(propertyDescriptor.identifiesControllerService)) {
options.push({
text: 'Create new service...',
value: undefined,
@@ -579,7 +616,8 @@
}).css({
'margin-top': '10px',
'margin-bottom': '10px',
- 'width': ((position.width - 16) < 212) ? 212 : (position.width - 16) + 'px'}).appendTo(wrapper);
+ 'width': ((position.width - 16) < 212) ? 212 : (position.width - 16) + 'px'
+ }).appendTo(wrapper);
// add buttons for handling user input
var cancel = $('<div class="secondary-button">Cancel</div>').css({
@@ -647,13 +685,13 @@
this.loadValue = function (item) {
// select as appropriate
- if (!nf.Common.isUndefined(item.value)) {
+ if (!common.isUndefined(item.value)) {
initialValue = item.value;
combo.combo('setSelectedOption', {
value: item.value
});
- } else if (nf.Common.isDefinedAndNotNull(propertyDescriptor.defaultValue)) {
+ } else if (common.isDefinedAndNotNull(propertyDescriptor.defaultValue)) {
initialValue = propertyDescriptor.defaultValue;
combo.combo('setSelectedOption', {
@@ -697,20 +735,20 @@
*/
var showPropertyValue = function (propertyGrid, descriptors, row, cell) {
// remove any currently open detail dialogs
- nf.UniversalCapture.removeAllPropertyDetailDialogs();
+ universalCapture.removeAllPropertyDetailDialogs();
// get the property in question
var propertyData = propertyGrid.getData();
var property = propertyData.getItem(row);
// ensure there is a value
- if (nf.Common.isDefinedAndNotNull(property.value)) {
+ if (common.isDefinedAndNotNull(property.value)) {
// get the descriptor to insert the description tooltip
var propertyDescriptor = descriptors[property.property];
// ensure we're not dealing with a sensitive property
- if (!nf.Common.isSensitiveProperty(propertyDescriptor)) {
+ if (!common.isSensitiveProperty(propertyDescriptor)) {
// get details about the location of the cell
var cellNode = $(propertyGrid.getCellNode(row, cell));
@@ -731,7 +769,7 @@
'left': offset.left - 20
}).appendTo('body');
- var allowableValues = nf.Common.getAllowableValues(propertyDescriptor);
+ var allowableValues = common.getAllowableValues(propertyDescriptor);
if ($.isArray(allowableValues)) {
// prevent dragging over the combo
wrapper.draggable({
@@ -746,7 +784,7 @@
options.push({
text: allowableValue.displayName,
value: allowableValue.value,
- description: nf.Common.escapeHtml(allowableValue.description),
+ description: common.escapeHtml(allowableValue.description),
disabled: true
});
});
@@ -795,7 +833,7 @@
var editor = null;
// so the nfel editor is appropriate
- if (nf.Common.supportsEl(propertyDescriptor)) {
+ if (common.supportsEl(propertyDescriptor)) {
var languageId = 'nfel';
var editorClass = languageId + '-editor';
@@ -919,41 +957,41 @@
var options = [];
$.each(response.controllerServiceTypes, function (i, controllerServiceType) {
options.push({
- text: nf.Common.substringAfterLast(controllerServiceType.type, '.'),
+ text: common.substringAfterLast(controllerServiceType.type, '.'),
value: controllerServiceType.type,
- description: nf.Common.escapeHtml(controllerServiceType.description)
+ description: common.escapeHtml(controllerServiceType.description)
});
});
// ensure there are some applicable controller services
if (options.length === 0) {
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'Controller Service',
dialogContent: 'No controller service types found that are applicable for this property.'
});
} else {
var newControllerServiceDialogMarkup =
'<div id="new-inline-controller-service-dialog" class="hidden dialog medium-dialog cancellable">' +
- '<div class="dialog-content">' +
- '<div>' +
- '<div class="setting-name">Controller Service</div>' +
- '<div class="setting-field">' +
- '<div class="new-inline-controller-service-combo"></div>' +
- '</div>' +
- '</div>' +
- '<div>' +
- '<div class="setting-name">Tags</div>' +
- '<div class="setting-field">' +
- '<div class="new-inline-controller-service-tags"></div>' +
- '</div>' +
- '</div>' +
- '<div>' +
- '<div class="setting-name">Description</div>' +
- '<div class="setting-field">' +
- '<div class="new-inline-controller-service-description"></div>' +
- '</div>' +
- '</div>' +
- '</div>' +
+ '<div class="dialog-content">' +
+ '<div>' +
+ '<div class="setting-name">Controller Service</div>' +
+ '<div class="setting-field">' +
+ '<div class="new-inline-controller-service-combo"></div>' +
+ '</div>' +
+ '</div>' +
+ '<div>' +
+ '<div class="setting-name">Tags</div>' +
+ '<div class="setting-field">' +
+ '<div class="new-inline-controller-service-tags"></div>' +
+ '</div>' +
+ '</div>' +
+ '<div>' +
+ '<div class="setting-name">Description</div>' +
+ '<div class="setting-field">' +
+ '<div class="new-inline-controller-service-description"></div>' +
+ '</div>' +
+ '</div>' +
+ '</div>' +
'</div>';
var newControllerServiceDialog = $(newControllerServiceDialogMarkup).appendTo(configurationOptions.dialogContainer);
@@ -1015,7 +1053,7 @@
// build the controller service entity
var controllerServiceEntity = {
- 'revision': nf.Client.getRevision({
+ 'revision': client.getRevision({
'revision': {
'version': 0,
}
@@ -1027,7 +1065,7 @@
// determine the appropriate uri for creating the controller service
var uri = '../nifi-api/controller/controller-services';
- if (nf.Common.isDefinedAndNotNull(groupId)) {
+ if (common.isDefinedAndNotNull(groupId)) {
uri = '../nifi-api/process-groups/' + encodeURIComponent(groupId) + '/controller-services';
}
@@ -1045,7 +1083,7 @@
// store the descriptor for use later
var descriptors = gridContainer.data('descriptors');
- if (!nf.Common.isUndefined(descriptors)) {
+ if (!common.isUndefined(descriptors)) {
descriptors[descriptor.name] = descriptor;
}
@@ -1054,7 +1092,7 @@
data.updateItem(item.id, $.extend(item, {
value: response.component.id
}));
-
+
// close the dialog
newControllerServiceDialog.modal('hide');
});
@@ -1063,7 +1101,7 @@
if (typeof configurationOptions.controllerServiceCreatedDeferred === 'function') {
configurationOptions.controllerServiceCreatedDeferred(response);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
var cancel = function () {
@@ -1072,7 +1110,7 @@
newControllerServiceDialog.modal('show');
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
var initPropertiesTable = function (table, options) {
@@ -1092,8 +1130,8 @@
var propertyDescriptor = descriptors[dataContext.property];
// show the property description if applicable
- if (nf.Common.isDefinedAndNotNull(propertyDescriptor)) {
- if (!nf.Common.isBlank(propertyDescriptor.description) || !nf.Common.isBlank(propertyDescriptor.defaultValue) || !nf.Common.isBlank(propertyDescriptor.supportsEl)) {
+ if (common.isDefinedAndNotNull(propertyDescriptor)) {
+ if (!common.isBlank(propertyDescriptor.description) || !common.isBlank(propertyDescriptor.defaultValue) || !common.isBlank(propertyDescriptor.supportsEl)) {
$('<div class="fa fa-question-circle" alt="Info" style="float: right; margin-right: 6px; margin-top: 4px;"></div>').appendTo(cellContent);
$('<span class="hidden property-descriptor-name"></span>').text(dataContext.property).appendTo(cellContent);
nameWidthOffset = 46; // 10 + icon width (10) + icon margin (6) + padding (20)
@@ -1110,17 +1148,17 @@
// function for formatting the property value
var valueFormatter = function (row, cell, value, columnDef, dataContext) {
var valueMarkup;
- if (nf.Common.isDefinedAndNotNull(value)) {
+ if (common.isDefinedAndNotNull(value)) {
// get the property descriptor
var descriptors = table.data('descriptors');
var propertyDescriptor = descriptors[dataContext.property];
// determine if the property is sensitive
- if (nf.Common.isSensitiveProperty(propertyDescriptor)) {
+ if (common.isSensitiveProperty(propertyDescriptor)) {
valueMarkup = '<span class="table-cell sensitive">Sensitive value set</span>';
} else {
// if there are allowable values, attempt to swap out for the display name
- var allowableValues = nf.Common.getAllowableValues(propertyDescriptor);
+ var allowableValues = common.getAllowableValues(propertyDescriptor);
if ($.isArray(allowableValues)) {
$.each(allowableValues, function (_, allowableValueEntity) {
var allowableValue = allowableValueEntity.allowableValue;
@@ -1134,7 +1172,7 @@
if (value === '') {
valueMarkup = '<span class="table-cell blank">Empty string set</span>';
} else {
- valueMarkup = '<div class="table-cell value"><pre class="ellipsis">' + nf.Common.escapeHtml(value) + '</pre></div>';
+ valueMarkup = '<div class="table-cell value"><pre class="ellipsis">' + common.escapeHtml(value) + '</pre></div>';
}
}
} else {
@@ -1182,12 +1220,11 @@
var descriptors = table.data('descriptors');
var propertyDescriptor = descriptors[dataContext.property];
- var identifiesControllerService = nf.Common.isDefinedAndNotNull(propertyDescriptor.identifiesControllerService);
- var isConfigured = nf.Common.isDefinedAndNotNull(dataContext.value);
- var isOnCanvas = nf.Common.isDefinedAndNotNull(nf.Canvas);
+ var identifiesControllerService = common.isDefinedAndNotNull(propertyDescriptor.identifiesControllerService);
+ var isConfigured = common.isDefinedAndNotNull(dataContext.value);
// check to see if we should provide a button for going to a controller service
- if (identifiesControllerService && isConfigured && isOnCanvas) {
+ if (identifiesControllerService && isConfigured && (options.supportsGoTo === true)) {
// ensure the configured value is referencing a valid service
$.each(propertyDescriptor.allowableValues, function (_, allowableValueEntity) {
var allowableValue = allowableValueEntity.allowableValue;
@@ -1236,7 +1273,7 @@
var propertyDescriptor = descriptors[item.property];
// support el if specified or unsure yet (likely a dynamic property)
- if (nf.Common.isUndefinedOrNull(propertyDescriptor) || nf.Common.supportsEl(propertyDescriptor)) {
+ if (common.isUndefinedOrNull(propertyDescriptor) || common.supportsEl(propertyDescriptor)) {
return {
columns: {
value: {
@@ -1246,7 +1283,7 @@
};
} else {
// check for allowable values which will drive which editor to use
- var allowableValues = nf.Common.getAllowableValues(propertyDescriptor);
+ var allowableValues = common.getAllowableValues(propertyDescriptor);
if ($.isArray(allowableValues)) {
return {
columns: {
@@ -1283,37 +1320,37 @@
var controllerService = controllerServiceEntity.component;
$.Deferred(function (deferred) {
- if (nf.Common.isDefinedAndNotNull(controllerService.parentGroupId)) {
+ if (common.isDefinedAndNotNull(controllerService.parentGroupId)) {
if ($('#process-group-configuration').is(':visible')) {
- nf.ProcessGroupConfiguration.loadConfiguration(controllerService.parentGroupId).done(function () {
+ processGroupConfiguration.loadConfiguration(controllerService.parentGroupId).done(function () {
deferred.resolve();
});
} else {
- nf.ProcessGroupConfiguration.showConfiguration(controllerService.parentGroupId).done(function () {
+ processGroupConfiguration.showConfiguration(controllerService.parentGroupId).done(function () {
deferred.resolve();
});
}
} else {
if ($('#settings').is(':visible')) {
// reload the settings
- nf.Settings.loadSettings().done(function () {
+ settings.loadSettings().done(function () {
deferred.resolve();
});
} else {
// reload the settings and show
- nf.Settings.showSettings().done(function () {
+ settings.showSettings().done(function () {
deferred.resolve();
});
}
}
}).done(function () {
- if (nf.Common.isDefinedAndNotNull(controllerService.parentGroupId)) {
- nf.ProcessGroupConfiguration.selectControllerService(property.value);
+ if (common.isDefinedAndNotNull(controllerService.parentGroupId)) {
+ processGroupConfiguration.selectControllerService(property.value);
} else {
- nf.Settings.selectControllerService(property.value);
+ settings.selectControllerService(property.value);
}
});
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
// initialize the grid
@@ -1396,11 +1433,11 @@
var propertyHistory = history[property];
// format the tooltip
- var tooltip = nf.Common.formatPropertyTooltip(propertyDescriptor, propertyHistory);
+ var tooltip = common.formatPropertyTooltip(propertyDescriptor, propertyHistory);
- if (nf.Common.isDefinedAndNotNull(tooltip)) {
+ if (common.isDefinedAndNotNull(tooltip)) {
infoIcon.qtip($.extend({},
- nf.Common.config.tooltipConfig,
+ common.config.tooltipConfig,
{
content: tooltip
}));
@@ -1412,7 +1449,7 @@
var saveRow = function (table) {
// get the property grid to commit the current edit
var propertyGrid = table.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(propertyGrid)) {
+ if (common.isDefinedAndNotNull(propertyGrid)) {
var editController = propertyGrid.getEditController();
editController.commitCurrentEdit();
}
@@ -1449,7 +1486,7 @@
var propertyData = propertyGrid.getData();
// generate the properties
- if (nf.Common.isDefinedAndNotNull(properties)) {
+ if (common.isDefinedAndNotNull(properties)) {
propertyData.beginUpdate();
var i = 0;
@@ -1460,10 +1497,10 @@
// determine the property type
var type = 'userDefined';
var displayName = name;
- if (nf.Common.isDefinedAndNotNull(descriptor)) {
- if (nf.Common.isRequiredProperty(descriptor)) {
+ if (common.isDefinedAndNotNull(descriptor)) {
+ if (common.isRequiredProperty(descriptor)) {
type = 'required';
- } else if (nf.Common.isDynamicProperty(descriptor)) {
+ } else if (common.isDynamicProperty(descriptor)) {
type = 'userDefined';
} else {
type = 'optional';
@@ -1473,7 +1510,7 @@
displayName = descriptor.displayName;
// determine the value
- if (nf.Common.isNull(value) && nf.Common.isDefinedAndNotNull(descriptor.defaultValue)) {
+ if (common.isNull(value) && common.isDefinedAndNotNull(descriptor.defaultValue)) {
value = descriptor.defaultValue;
}
}
@@ -1502,10 +1539,10 @@
var clear = function (propertyTableContainer) {
var options = propertyTableContainer.data('options');
if (options.readOnly === true) {
- nf.UniversalCapture.removeAllPropertyDetailDialogs();
+ universalCapture.removeAllPropertyDetailDialogs();
} else {
// clear any existing new property dialogs
- if (nf.Common.isDefinedAndNotNull(options.dialogContainer)) {
+ if (common.isDefinedAndNotNull(options.dialogContainer)) {
$('#new-property-dialog').modal("hide");
}
}
@@ -1515,7 +1552,7 @@
table.removeData('descriptors history');
// clean up any tooltips that may have been generated
- nf.Common.cleanUpTooltips(table, 'div.fa-question-circle');
+ common.cleanUpTooltips(table, 'div.fa-question-circle');
// clear the data in the grid
var propertyGrid = table.data('gridInstance');
@@ -1525,14 +1562,31 @@
var methods = {
/**
- * Initializes the tag cloud.
+ * Create a property table. The options are specified in the following
+ * format:
+ *
+ * {
+ * readOnly: true,
+ * dialogContainer: 'body',
+ * descriptorDeferred: function () {
+ * return $.Deferred(function (deferred) {
+ * deferred.resolve();
+ * }).promise;
+ * },
+ * supportsGoTo: true,
+ * goToServiceDeferred: function () {
+ * return $.Deferred(function (deferred) {
+ * deferred.resolve();
+ * }).promise;
+ * }
+ * }
*
* @argument {object} options The options for the tag cloud
*/
init: function (options) {
return this.each(function () {
// ensure the options have been properly specified
- if (nf.Common.isDefinedAndNotNull(options)) {
+ if (common.isDefinedAndNotNull(options)) {
// get the tag cloud
var propertyTableContainer = $(this);
@@ -1547,18 +1601,18 @@
var table = $('<div class="property-table"></div>').appendTo(propertyTableContainer);
// optionally add a add new property button
- if (options.readOnly !== true && nf.Common.isDefinedAndNotNull(options.dialogContainer)) {
+ if (options.readOnly !== true && common.isDefinedAndNotNull(options.dialogContainer)) {
// build the new property dialog
var newPropertyDialogMarkup =
'<div id="new-property-dialog" class="dialog cancellable small-dialog hidden">' +
- '<div class="dialog-content">' +
- '<div>' +
- '<div class="setting-name">Property name</div>' +
- '<div class="setting-field new-property-name-container">' +
- '<input class="new-property-name" type="text"/>' +
- '</div>' +
- '</div>' +
- '</div>' +
+ '<div class="dialog-content">' +
+ '<div>' +
+ '<div class="setting-name">Property name</div>' +
+ '<div class="setting-field new-property-name-container">' +
+ '<input class="new-property-name" type="text"/>' +
+ '</div>' +
+ '</div>' +
+ '</div>' +
'</div>';
var newPropertyDialog = $(newPropertyDialogMarkup).appendTo(options.dialogContainer);
@@ -1619,7 +1673,7 @@
// store the descriptor for use later
var descriptors = table.data('descriptors');
- if (!nf.Common.isUndefined(descriptors)) {
+ if (!common.isUndefined(descriptors)) {
descriptors[descriptor.name] = descriptor;
}
@@ -1654,7 +1708,7 @@
propertyGrid.setActiveCell(row, propertyGrid.getColumnIndex('value'));
propertyGrid.editActiveCell();
} else {
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'Property Exists',
dialogContent: 'A property with this name already exists.'
});
@@ -1666,7 +1720,7 @@
}
}
} else {
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'Property Name',
dialogContent: 'Property name must be specified.'
});
@@ -1749,7 +1803,7 @@
return this.each(function () {
var table = $(this).find('div.property-table');
var propertyGrid = table.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(propertyGrid)) {
+ if (common.isDefinedAndNotNull(propertyGrid)) {
propertyGrid.resizeCanvas();
}
});
@@ -1762,7 +1816,7 @@
return this.each(function () {
var table = $(this).find('div.property-table');
var propertyGrid = table.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(propertyGrid)) {
+ if (common.isDefinedAndNotNull(propertyGrid)) {
var editController = propertyGrid.getEditController();
editController.cancelCurrentEdit();
}
@@ -1777,12 +1831,12 @@
var propertyTableContainer = $(this);
var options = propertyTableContainer.data('options');
- if (nf.Common.isDefinedAndNotNull(options)) {
+ if (common.isDefinedAndNotNull(options)) {
// clear the property table container
clear(propertyTableContainer);
// clear any existing new property dialogs
- if (nf.Common.isDefinedAndNotNull(options.dialogContainer)) {
+ if (common.isDefinedAndNotNull(options.dialogContainer)) {
$('#new-property-dialog').modal("hide");
$(options.dialogContainer).children('div.new-inline-controller-service-dialog').remove();
}
@@ -1870,4 +1924,4 @@
return methods.init.apply(this, arguments);
}
};
-})(jQuery);
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/tagcloud/jquery.tagcloud.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/tagcloud/jquery.tagcloud.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/tagcloud/jquery.tagcloud.js
index 2eb551c..526a64c 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/tagcloud/jquery.tagcloud.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/tagcloud/jquery.tagcloud.js
@@ -127,7 +127,7 @@
$.each(options.tags, function (i, tag) {
var normalizedTagName = tag.toLowerCase();
- if (nf.Common.isDefinedAndNotNull(tagCloud[normalizedTagName])) {
+ if (isDefinedAndNotNull(tagCloud[normalizedTagName])) {
tagCloud[normalizedTagName].count = tagCloud[normalizedTagName].count + 1;
} else {
var tagCloudEntry = {
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/bulletin-board/nf-bulletin-board.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/bulletin-board/nf-bulletin-board.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/bulletin-board/nf-bulletin-board.js
index 58d8f79..c36296b 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/bulletin-board/nf-bulletin-board.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/bulletin-board/nf-bulletin-board.js
@@ -15,421 +15,480 @@
* limitations under the License.
*/
-/* global nf, top */
-
-$(document).ready(function () {
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'angular',
+ 'nf.Common',
+ 'nf.ng.AppConfig',
+ 'nf.ng.AppCtrl',
+ 'nf.ng.ServiceProvider',
+ 'nf.ng.Bridge',
+ 'nf.ErrorHandler',
+ 'nf.Storage'],
+ function ($,
+ angular,
+ common,
+ appConfig,
+ appCtrl,
+ serviceProvider,
+ angularBridge,
+ errorHandler,
+ storage) {
+ return (nf.ng.BulletinBoardCtrl =
+ factory($,
+ angular,
+ common,
+ appConfig,
+ appCtrl,
+ serviceProvider,
+ angularBridge,
+ errorHandler,
+ storage));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.BulletinBoardCtrl =
+ factory(require('jquery'),
+ require('angular'),
+ require('nf.Common'),
+ require('nf.ng.AppConfig'),
+ require('nf.ng.AppCtrl'),
+ require('nf.ng.ServiceProvider'),
+ require('nf.ng.Bridge'),
+ require('nf.ErrorHandler'),
+ require('nf.Storage')));
+ } else {
+ nf.ng.BulletinBoardCtrl = factory(root.$,
+ root.angular,
+ root.nf.Common,
+ root.nf.ng.AppConfig,
+ root.nf.ng.AppCtrl,
+ root.nf.ng.ServiceProvider,
+ root.nf.ng.Bridge,
+ root.nf.ErrorHandler,
+ root.nf.Storage);
+ }
+}(this, function ($, angular, common, appConfig, appCtrl, serviceProvider, angularBridge, errorHandler, storage) {
+ 'use strict';
- //Create Angular App
- var app = angular.module('ngBulletinBoardApp', ['ngResource', 'ngRoute', 'ngMaterial', 'ngMessages']);
+ $(document).ready(function () {
- //Define Dependency Injection Annotations
- nf.ng.AppConfig.$inject = ['$mdThemingProvider', '$compileProvider'];
- nf.ng.AppCtrl.$inject = ['$scope', 'serviceProvider', 'bulletinBoardCtrl'];
- nf.ng.BulletinBoardCtrl.$inject = ['serviceProvider'];
- nf.ng.ServiceProvider.$inject = [];
+ //Create Angular App
+ var app = angular.module('ngBulletinBoardApp', ['ngResource', 'ngRoute', 'ngMaterial', 'ngMessages']);
- //Configure Angular App
- app.config(nf.ng.AppConfig);
+ //Define Dependency Injection Annotations
+ appConfig.$inject = ['$mdThemingProvider', '$compileProvider'];
+ appCtrl.$inject = ['$scope', 'serviceProvider', 'bulletinBoardCtrl'];
+ nfBulletinBoard.$inject = ['serviceProvider'];
+ serviceProvider.$inject = [];
- //Define Angular App Controllers
- app.controller('ngBulletinBoardAppCtrl', nf.ng.AppCtrl);
+ //Configure Angular App
+ app.config(appConfig);
- //Define Angular App Services
- app.service('serviceProvider', nf.ng.ServiceProvider);
- app.service('bulletinBoardCtrl', nf.ng.BulletinBoardCtrl);
+ //Define Angular App Controllers
+ app.controller('ngBulletinBoardAppCtrl', appCtrl);
- //Manually Boostrap Angular App
- nf.ng.Bridge.injector = angular.bootstrap($('body'), ['ngBulletinBoardApp'], { strictDi: true });
+ //Define Angular App Services
+ app.service('serviceProvider', serviceProvider);
+ app.service('bulletinBoardCtrl', nfBulletinBoard);
- // initialize the bulletin board
- nf.ng.Bridge.injector.get('bulletinBoardCtrl').init();
-});
+ //Manually Boostrap Angular App
+ angularBridge.injector = angular.bootstrap($('body'), ['ngBulletinBoardApp'], {strictDi: true});
-nf.ng.BulletinBoardCtrl = function (serviceProvider) {
- 'use strict';
+ // initialize the bulletin board
+ angularBridge.injector.get('bulletinBoardCtrl').init();
+ });
- /**
- * Configuration object used to hold a number of configuration items.
- */
- var config = {
- pollInterval: 3,
- maxBulletins: 1000,
- urls: {
- banners: '../nifi-api/flow/banners',
- about: '../nifi-api/flow/about',
- bulletinBoard: '../nifi-api/flow/bulletin-board'
- }
- };
+ var nfBulletinBoard = function (serviceProvider) {
- var lastBulletin = null;
- var filterText = null;
- var filterType = null;
-
- /**
- * Initializes the bulletin board.
- */
- var initializePage = function () {
- // add hover effect and click handler for clearing the bulletins
- $('#clear-bulletins-button').click(function () {
- $('#bulletin-board-container').empty();
- });
-
- // filter type
- $('#bulletin-board-filter-type').combo({
- options: [{
- text: 'by message',
- value: 'message'
- }, {
- text: 'by name',
- value: 'sourceName'
- }, {
- text: 'by id',
- value: 'sourceId'
- }, {
- text: 'by group id',
- value: 'groupId'
- }]
- });
-
- // get the about details
- var getTitle = $.ajax({
- type: 'GET',
- url: config.urls.about,
- dataType: 'json'
- }).done(function (response) {
- var aboutDetails = response.about;
- var bulletinBoardTitle = aboutDetails.title + ' Bulletin Board';
-
- // set the document title and the about title
- document.title = bulletinBoardTitle;
- $('#bulletin-board-header-text').text(bulletinBoardTitle);
- }).fail(nf.Common.handleAjaxError);
-
- // get the banners if we're not in the shell
- var loadBanners = $.Deferred(function (deferred) {
- if (top === window) {
- $.ajax({
- type: 'GET',
- url: config.urls.banners,
- dataType: 'json'
- }).done(function (response) {
- // ensure the banners response is specified
- if (nf.Common.isDefinedAndNotNull(response.banners)) {
- if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
- // update the header text
- var bannerHeader = $('#banner-header').text(response.banners.headerText).show();
-
- // show the banner
- var updateTop = function (elementId) {
- var element = $('#' + elementId);
- element.css('top', (parseInt(bannerHeader.css('height'), 10) + parseInt(element.css('top'), 10)) + 'px');
- };
-
- // update the position of elements affected by top banners
- updateTop('bulletin-board');
- }
-
- if (nf.Common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
- // update the footer text and show it
- var bannerFooter = $('#banner-footer').text(response.banners.footerText).show();
-
- var updateBottom = function (elementId) {
- var element = $('#' + elementId);
- element.css('bottom', parseInt(bannerFooter.css('height'), 10) + 'px');
- };
-
- // update the position of elements affected by bottom banners
- updateBottom('bulletin-board');
- }
- }
-
- deferred.resolve();
- }).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
- deferred.reject();
- });
- } else {
- deferred.resolve();
+ /**
+ * Configuration object used to hold a number of configuration items.
+ */
+ var config = {
+ pollInterval: 3,
+ maxBulletins: 1000,
+ urls: {
+ banners: '../nifi-api/flow/banners',
+ about: '../nifi-api/flow/about',
+ bulletinBoard: '../nifi-api/flow/bulletin-board'
}
- });
-
- return $.Deferred(function (deferred) {
- $.when(getTitle, loadBanners).done(function () {
- deferred.resolve();
- }).fail(function () {
- deferred.reject();
- });
- }).promise();
- };
+ };
- /**
- * Starts polling for new bulletins.
- */
- var start = function () {
- var refreshButton = $('#refresh-button');
- var bulletinContainer = $('#bulletin-board-container');
+ var lastBulletin = null;
+ var filterText = null;
+ var filterType = null;
- appendAndScroll(bulletinContainer, '<div class="bulletin-action">Auto refresh started</div>');
+ /**
+ * Initializes the bulletin board.
+ */
+ var initializePage = function () {
+ // add hover effect and click handler for clearing the bulletins
+ $('#clear-bulletins-button').click(function () {
+ $('#bulletin-board-container').empty();
+ });
- // clear any error messages
- $('#bulletin-error-message').text('').hide();
- poll();
- };
+ // filter type
+ $('#bulletin-board-filter-type').combo({
+ options: [{
+ text: 'by message',
+ value: 'message'
+ }, {
+ text: 'by name',
+ value: 'sourceName'
+ }, {
+ text: 'by id',
+ value: 'sourceId'
+ }, {
+ text: 'by group id',
+ value: 'groupId'
+ }]
+ });
- /**
- * Stops polling for new bulletins.
- */
- var stop = function () {
- var refreshButton = $('#refresh-button');
- var bulletinContainer = $('#bulletin-board-container');
+ // get the about details
+ var getTitle = $.ajax({
+ type: 'GET',
+ url: config.urls.about,
+ dataType: 'json'
+ }).done(function (response) {
+ var aboutDetails = response.about;
+ var bulletinBoardTitle = aboutDetails.title + ' Bulletin Board';
+
+ // set the document title and the about title
+ document.title = bulletinBoardTitle;
+ $('#bulletin-board-header-text').text(bulletinBoardTitle);
+ }).fail(errorHandler.handleAjaxError);
+
+ // get the banners if we're not in the shell
+ var loadBanners = $.Deferred(function (deferred) {
+ if (top === window) {
+ $.ajax({
+ type: 'GET',
+ url: config.urls.banners,
+ dataType: 'json'
+ }).done(function (response) {
+ // ensure the banners response is specified
+ if (common.isDefinedAndNotNull(response.banners)) {
+ if (common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
+ // update the header text
+ var bannerHeader = $('#banner-header').text(response.banners.headerText).show();
+
+ // show the banner
+ var updateTop = function (elementId) {
+ var element = $('#' + elementId);
+ element.css('top', (parseInt(bannerHeader.css('height'), 10) + parseInt(element.css('top'), 10)) + 'px');
+ };
+
+ // update the position of elements affected by top banners
+ updateTop('bulletin-board');
+ }
- appendAndScroll(bulletinContainer, '<div class="bulletin-action">Auto refresh stopped</div>');
+ if (common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
+ // update the footer text and show it
+ var bannerFooter = $('#banner-footer').text(response.banners.footerText).show();
- // reset state
- lastBulletin = null;
- filterText = null;
- filterType = null;
- };
+ var updateBottom = function (elementId) {
+ var element = $('#' + elementId);
+ element.css('bottom', parseInt(bannerFooter.css('height'), 10) + 'px');
+ };
- /**
- * Polls for new bulletins
- */
- var poll = function () {
- // if the page is no longer open, stop polling
- var isOpen = $('#bulletin-board').is(':visible');
- if (!isOpen) {
- bulletinBoardCtrl.polling = false;
- }
+ // update the position of elements affected by bottom banners
+ updateBottom('bulletin-board');
+ }
+ }
- // if polling, reload the bulletins
- if (bulletinBoardCtrl.polling) {
- bulletinBoardCtrl.loadBulletins().done(function () {
- if (bulletinBoardCtrl.polling) {
- setTimeout(poll, config.pollInterval * 1000);
+ deferred.resolve();
+ }).fail(function (xhr, status, error) {
+ errorHandler.handleAjaxError(xhr, status, error);
+ deferred.reject();
+ });
+ } else {
+ deferred.resolve();
}
});
- }
- };
-
- /**
- * Appends the specified string to the specified container and scrolls to the bottom.
- *
- * @argument {jQuery} bulletinContainer The container for the bulletins
- * @argument {string} content The content to added to the bulletin container
- */
- var appendAndScroll = function (bulletinContainer, content) {
- bulletinContainer.append(content).animate({scrollTop: bulletinContainer[0].scrollHeight}, 'slow');
- };
- /**
- * Goes to the specified source on the graph.
- *
- * @argument {string} groupId The id of the group
- * @argument {string} sourceId The id of the source component
- */
- var goToSource = function (groupId, sourceId) {
- // only attempt this if we're within a frame
- if (top !== window) {
- // and our parent has canvas utils and shell defined
- if (nf.Common.isDefinedAndNotNull(parent.nf) && nf.Common.isDefinedAndNotNull(parent.nf.CanvasUtils) && nf.Common.isDefinedAndNotNull(parent.nf.Shell)) {
- parent.nf.CanvasUtils.showComponent(groupId, sourceId);
- parent.$('#shell-close-button').click();
- }
- }
- };
+ return $.Deferred(function (deferred) {
+ $.when(getTitle, loadBanners).done(function () {
+ deferred.resolve();
+ }).fail(function () {
+ deferred.reject();
+ });
+ }).promise();
+ };
- function BulletinBoardCtrl() {
/**
- * Toggle state
+ * Starts polling for new bulletins.
*/
- this.polling = true;
- }
- BulletinBoardCtrl.prototype = {
- constructor: BulletinBoardCtrl,
+ var start = function () {
+ var refreshButton = $('#refresh-button');
+ var bulletinContainer = $('#bulletin-board-container');
+
+ appendAndScroll(bulletinContainer, '<div class="bulletin-action">Auto refresh started</div>');
+
+ // clear any error messages
+ $('#bulletin-error-message').text('').hide();
+ poll();
+ };
/**
- * Register the bulletin board controller.
+ * Stops polling for new bulletins.
*/
- register: function() {
- if (serviceProvider.bulletinBoardCtrl === undefined) {
- serviceProvider.register('bulletinBoardCtrl', bulletinBoardCtrl);
- }
- },
+ var stop = function () {
+ var refreshButton = $('#refresh-button');
+ var bulletinContainer = $('#bulletin-board-container');
+
+ appendAndScroll(bulletinContainer, '<div class="bulletin-action">Auto refresh stopped</div>');
+
+ // reset state
+ lastBulletin = null;
+ filterText = null;
+ filterType = null;
+ };
/**
- * Initializes the bulletin board page.
+ * Polls for new bulletins
*/
- init: function () {
- //alter styles if we're not in the shell
- if (top === window) {
- $('#bulletin-board').css({
- "position": "absolute",
- "bottom": "40px",
- "left": "40px",
- "right": "40px",
- "top": "40px"
- });
- $('#bulletin-board-refresh-container').css({
- "position": "absolute",
- "bottom": "40px",
- "left": "40px",
- "right": "40px"
+ var poll = function () {
+ // if the page is no longer open, stop polling
+ var isOpen = $('#bulletin-board').is(':visible');
+ if (!isOpen) {
+ bulletinBoardCtrl.polling = false;
+ }
+
+ // if polling, reload the bulletins
+ if (bulletinBoardCtrl.polling) {
+ bulletinBoardCtrl.loadBulletins().done(function () {
+ if (bulletinBoardCtrl.polling) {
+ setTimeout(poll, config.pollInterval * 1000);
+ }
});
}
-
- nf.Storage.init();
+ };
- initializePage().done(function () {
- start();
- });
- },
+ /**
+ * Appends the specified string to the specified container and scrolls to the bottom.
+ *
+ * @argument {jQuery} bulletinContainer The container for the bulletins
+ * @argument {string} content The content to added to the bulletin container
+ */
+ var appendAndScroll = function (bulletinContainer, content) {
+ bulletinContainer.append(content).animate({scrollTop: bulletinContainer[0].scrollHeight}, 'slow');
+ };
/**
- * Loads the bulletins since the last refresh.
+ * Goes to the specified source on the graph.
+ *
+ * @argument {string} groupId The id of the group
+ * @argument {string} sourceId The id of the source component
*/
- loadBulletins: function () {
- var data = {};
-
- // include the timestamp if appropriate
- if (nf.Common.isDefinedAndNotNull(lastBulletin)) {
- data['after'] = lastBulletin;
- } else {
- data['limit'] = 10;
+ var goToSource = function (groupId, sourceId) {
+ // only attempt this if we're within a frame
+ if (top !== window) {
+ // and our parent has canvas utils and shell defined
+ if (common.isDefinedAndNotNull(parent.nf) && common.isDefinedAndNotNull(parent.nf.CanvasUtils) && common.isDefinedAndNotNull(parent.nf.Shell)) {
+ parent.nf.CanvasUtils.showComponent(groupId, sourceId);
+ parent.$('#shell-close-button').click();
+ }
}
+ };
- var bulletinContainer = $('#bulletin-board-container');
+ function BulletinBoardCtrl() {
+ /**
+ * Toggle state
+ */
+ this.polling = true;
+ }
+
+ BulletinBoardCtrl.prototype = {
+ constructor: BulletinBoardCtrl,
- // get the filter text
- var filter = $('#bulletin-board-filter').val();
- if (filter !== '') {
- // determine which field to filter on
- var filterOption = $('#bulletin-board-filter-type').combo('getSelectedOption');
- data[filterOption.value] = filter;
-
- // append filtering message if necessary
- if (filterText !== filter || filterType !== filterOption.text) {
- var filterContent = $('<div class="bulletin-action"></div>').text('Filter ' + filterOption.text + ' matching \'' + filter + '\'');
- appendAndScroll(bulletinContainer, filterContent.get(0));
- filterText = filter;
- filterType = filterOption.text;
+ /**
+ * Register the bulletin board controller.
+ */
+ register: function () {
+ if (serviceProvider.bulletinBoardCtrl === undefined) {
+ serviceProvider.register('bulletinBoardCtrl', bulletinBoardCtrl);
+ }
+ },
+
+ /**
+ * Initializes the bulletin board page.
+ */
+ init: function () {
+ //alter styles if we're not in the shell
+ if (top === window) {
+ $('#bulletin-board').css({
+ "position": "absolute",
+ "bottom": "40px",
+ "left": "40px",
+ "right": "40px",
+ "top": "40px"
+ });
+ $('#bulletin-board-refresh-container').css({
+ "position": "absolute",
+ "bottom": "40px",
+ "left": "40px",
+ "right": "40px"
+ });
}
- } else if (filterText !== null) {
- appendAndScroll(bulletinContainer, '<div class="bulletin-action">Filter removed</div>');
- filterText = null;
- filterType = null;
- }
- return $.ajax({
- type: 'GET',
- url: config.urls.bulletinBoard,
- data: data,
- dataType: 'json'
- }).done(function (response) {
- // ensure the bulletin board was specified
- if (nf.Common.isDefinedAndNotNull(response.bulletinBoard)) {
- var bulletinBoard = response.bulletinBoard;
-
- // update the stats last refreshed timestamp
- $('#bulletin-board-last-refreshed').text(bulletinBoard.generated);
-
- // process the bulletins
- var bulletinEntities = response.bulletinBoard.bulletins;
- var content = [];
-
- // append each bulletin
- $.each(bulletinEntities, function (i, bulletinEntity) {
- if (bulletinEntity.canRead === true) {
- var bulletin = bulletinEntity.bulletin;
-
- // format the severity
- var severityStyle = 'bulletin-normal';
- if (bulletin.level === 'ERROR') {
- severityStyle = 'bulletin-error';
- } else if (bulletin.level === 'WARN' || bulletin.level === 'WARNING') {
- severityStyle = 'bulletin-warn';
- }
+ storage.init();
- // format the source id
- var source;
- if (nf.Common.isDefinedAndNotNull(bulletin.sourceId) && nf.Common.isDefinedAndNotNull(bulletin.groupId) && top !== window) {
- source = $('<div class="bulletin-source bulletin-link"></div>').text(bulletin.sourceId).on('click', function () {
- goToSource(bulletin.groupId, bulletin.sourceId);
- });
- } else {
- var sourceId = bulletin.sourceId;
- if (nf.Common.isUndefined(sourceId) || nf.Common.isNull(sourceId)) {
- sourceId = '';
+ initializePage().done(function () {
+ start();
+ });
+ },
+
+ /**
+ * Loads the bulletins since the last refresh.
+ */
+ loadBulletins: function () {
+ var data = {};
+
+ // include the timestamp if appropriate
+ if (common.isDefinedAndNotNull(lastBulletin)) {
+ data['after'] = lastBulletin;
+ } else {
+ data['limit'] = 10;
+ }
+
+ var bulletinContainer = $('#bulletin-board-container');
+
+ // get the filter text
+ var filter = $('#bulletin-board-filter').val();
+ if (filter !== '') {
+ // determine which field to filter on
+ var filterOption = $('#bulletin-board-filter-type').combo('getSelectedOption');
+ data[filterOption.value] = filter;
+
+ // append filtering message if necessary
+ if (filterText !== filter || filterType !== filterOption.text) {
+ var filterContent = $('<div class="bulletin-action"></div>').text('Filter ' + filterOption.text + ' matching \'' + filter + '\'');
+ appendAndScroll(bulletinContainer, filterContent.get(0));
+ filterText = filter;
+ filterType = filterOption.text;
+ }
+ } else if (filterText !== null) {
+ appendAndScroll(bulletinContainer, '<div class="bulletin-action">Filter removed</div>');
+ filterText = null;
+ filterType = null;
+ }
+
+ return $.ajax({
+ type: 'GET',
+ url: config.urls.bulletinBoard,
+ data: data,
+ dataType: 'json'
+ }).done(function (response) {
+ // ensure the bulletin board was specified
+ if (common.isDefinedAndNotNull(response.bulletinBoard)) {
+ var bulletinBoard = response.bulletinBoard;
+
+ // update the stats last refreshed timestamp
+ $('#bulletin-board-last-refreshed').text(bulletinBoard.generated);
+
+ // process the bulletins
+ var bulletinEntities = response.bulletinBoard.bulletins;
+ var content = [];
+
+ // append each bulletin
+ $.each(bulletinEntities, function (i, bulletinEntity) {
+ if (bulletinEntity.canRead === true) {
+ var bulletin = bulletinEntity.bulletin;
+
+ // format the severity
+ var severityStyle = 'bulletin-normal';
+ if (bulletin.level === 'ERROR') {
+ severityStyle = 'bulletin-error';
+ } else if (bulletin.level === 'WARN' || bulletin.level === 'WARNING') {
+ severityStyle = 'bulletin-warn';
+ }
+
+ // format the source id
+ var source;
+ if (common.isDefinedAndNotNull(bulletin.sourceId) && common.isDefinedAndNotNull(bulletin.groupId) && top !== window) {
+ source = $('<div class="bulletin-source bulletin-link"></div>').text(bulletin.sourceId).on('click', function () {
+ goToSource(bulletin.groupId, bulletin.sourceId);
+ });
+ } else {
+ var sourceId = bulletin.sourceId;
+ if (common.isUndefined(sourceId) || common.isNull(sourceId)) {
+ sourceId = '';
+ }
+ source = $('<div class="bulletin-source"></div>').text(sourceId);
}
- source = $('<div class="bulletin-source"></div>').text(sourceId);
- }
- // build the markup for this bulletin
- var bulletinMarkup = $('<div class="bulletin"></div>');
+ // build the markup for this bulletin
+ var bulletinMarkup = $('<div class="bulletin"></div>');
- // build the markup for this bulletins info
- var bulletinInfoMarkup = $('<div class="bulletin-info"></div>').appendTo(bulletinMarkup);
- $('<div class="bulletin-timestamp"></div>').text(bulletin.timestamp).appendTo(bulletinInfoMarkup);
- $('<div class="bulletin-severity"></div>').addClass(severityStyle).text(bulletin.level).appendTo(bulletinInfoMarkup);
- source.appendTo(bulletinInfoMarkup);
- $('<div class="clear"></div>').appendTo(bulletinInfoMarkup);
+ // build the markup for this bulletins info
+ var bulletinInfoMarkup = $('<div class="bulletin-info"></div>').appendTo(bulletinMarkup);
+ $('<div class="bulletin-timestamp"></div>').text(bulletin.timestamp).appendTo(bulletinInfoMarkup);
+ $('<div class="bulletin-severity"></div>').addClass(severityStyle).text(bulletin.level).appendTo(bulletinInfoMarkup);
+ source.appendTo(bulletinInfoMarkup);
+ $('<div class="clear"></div>').appendTo(bulletinInfoMarkup);
- // format the node address if applicable
- if (nf.Common.isDefinedAndNotNull(bulletin.nodeAddress)) {
- $('<div class="bulletin-node"></div>').text(bulletin.nodeAddress).appendTo(bulletinMarkup);
- }
+ // format the node address if applicable
+ if (common.isDefinedAndNotNull(bulletin.nodeAddress)) {
+ $('<div class="bulletin-node"></div>').text(bulletin.nodeAddress).appendTo(bulletinMarkup);
+ }
- // add the bulletin message (treat as text)
- $('<pre class="bulletin-message"></pre>').text(bulletin.message).appendTo(bulletinMarkup);
- $('<div class="clear"></div>').appendTo(bulletinMarkup);
+ // add the bulletin message (treat as text)
+ $('<pre class="bulletin-message"></pre>').text(bulletin.message).appendTo(bulletinMarkup);
+ $('<div class="clear"></div>').appendTo(bulletinMarkup);
- // append the content
- content.push(bulletinMarkup.get(0));
- }
+ // append the content
+ content.push(bulletinMarkup.get(0));
+ }
- // record the id of the last bulletin in this request
- if (i + 1 === bulletinEntities.length) {
- lastBulletin = bulletinEntity.id;
- }
- });
+ // record the id of the last bulletin in this request
+ if (i + 1 === bulletinEntities.length) {
+ lastBulletin = bulletinEntity.id;
+ }
+ });
- // add the content to the scroll pane
- appendAndScroll(bulletinContainer, content);
+ // add the content to the scroll pane
+ appendAndScroll(bulletinContainer, content);
- // trim the container as necessary
- var contents = bulletinContainer.contents();
- var length = contents.length;
- if (length > config.maxBulletins) {
- contents.slice(0, length - config.maxBulletins).remove();
- bulletinContainer.prepend('<div class="bulletin-action">…</div>');
+ // trim the container as necessary
+ var contents = bulletinContainer.contents();
+ var length = contents.length;
+ if (length > config.maxBulletins) {
+ contents.slice(0, length - config.maxBulletins).remove();
+ bulletinContainer.prepend('<div class="bulletin-action">…</div>');
+ }
}
- }
- }).fail(function (xhr, status, error) {
- // likely caused by a invalid regex
- if (xhr.status === 404) {
- $('#bulletin-error-message').text(xhr.responseText).show();
-
- // stop future polling
- togglePolling();
+ }).fail(function (xhr, status, error) {
+ // likely caused by a invalid regex
+ if (xhr.status === 404) {
+ $('#bulletin-error-message').text(xhr.responseText).show();
+
+ // stop future polling
+ bulletinBoardCtrl.togglePolling();
+ } else {
+ errorHandler.handleAjaxError(xhr, status, error);
+ }
+ });
+ },
+
+ /**
+ * Toggles whether the page is actively polling for new bulletins.
+ */
+ togglePolling: function () {
+ // conditionally start or stop
+ if (bulletinBoardCtrl.polling === true) {
+ start();
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ stop();
}
- });
- },
-
- /**
- * Toggles whether the page is actively polling for new bulletins.
- */
- togglePolling: function () {
- // conditionally start or stop
- if (bulletinBoardCtrl.polling === true) {
- start();
- } else {
- stop();
}
}
- }
- var bulletinBoardCtrl = new BulletinBoardCtrl();
- bulletinBoardCtrl.register();
- return bulletinBoardCtrl;
-};
\ No newline at end of file
+ var bulletinBoardCtrl = new BulletinBoardCtrl();
+ bulletinBoardCtrl.register();
+ return bulletinBoardCtrl;
+ };
+
+ return nfBulletinBoard;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-flow-status-controller.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-flow-status-controller.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-flow-status-controller.js
index 0db667c..95b6ac0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-flow-status-controller.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-flow-status-controller.js
@@ -71,7 +71,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
*/
init: function () {
- var self = this;
+ var searchCtrl = this;
// Create new jQuery UI widget
$.widget('nf.searchAutocomplete', $.ui.autocomplete, {
@@ -92,7 +92,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
return items;
},
_renderMenu: function (ul, items) {
- var self = this;
+ var nfSearchAutocomplete = this;
// the object that holds the search results is normalized into a single element array
var searchResults = items[0];
@@ -101,7 +101,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
if (!nf.Common.isEmpty(searchResults.processorResults)) {
ul.append('<li class="search-header"><div class="search-result-icon icon icon-processor"></div>Processors</li>');
$.each(searchResults.processorResults, function (i, processorMatch) {
- self._renderItem(ul, processorMatch);
+ nfSearchAutocomplete._renderItem(ul, processorMatch);
});
}
@@ -109,7 +109,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
if (!nf.Common.isEmpty(searchResults.processGroupResults)) {
ul.append('<li class="search-header"><div class="search-result-icon icon icon-group"></div>Process Groups</li>');
$.each(searchResults.processGroupResults, function (i, processGroupMatch) {
- self._renderItem(ul, processGroupMatch);
+ nfSearchAutocomplete._renderItem(ul, processGroupMatch);
});
}
@@ -117,7 +117,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
if (!nf.Common.isEmpty(searchResults.remoteProcessGroupResults)) {
ul.append('<li class="search-header"><div class="search-result-icon icon icon-group-remote"></div>Remote Process Groups</li>');
$.each(searchResults.remoteProcessGroupResults, function (i, remoteProcessGroupMatch) {
- self._renderItem(ul, remoteProcessGroupMatch);
+ nfSearchAutocomplete._renderItem(ul, remoteProcessGroupMatch);
});
}
@@ -125,7 +125,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
if (!nf.Common.isEmpty(searchResults.connectionResults)) {
ul.append('<li class="search-header"><div class="search-result-icon icon icon-connect"></div>Connections</li>');
$.each(searchResults.connectionResults, function (i, connectionMatch) {
- self._renderItem(ul, connectionMatch);
+ nfSearchAutocomplete._renderItem(ul, connectionMatch);
});
}
@@ -133,7 +133,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
if (!nf.Common.isEmpty(searchResults.inputPortResults)) {
ul.append('<li class="search-header"><div class="search-result-icon icon icon-port-in"></div>Input Ports</li>');
$.each(searchResults.inputPortResults, function (i, inputPortMatch) {
- self._renderItem(ul, inputPortMatch);
+ nfSearchAutocomplete._renderItem(ul, inputPortMatch);
});
}
@@ -141,7 +141,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
if (!nf.Common.isEmpty(searchResults.outputPortResults)) {
ul.append('<li class="search-header"><div class="search-result-icon icon icon-port-out"></div>Output Ports</li>');
$.each(searchResults.outputPortResults, function (i, outputPortMatch) {
- self._renderItem(ul, outputPortMatch);
+ nfSearchAutocomplete._renderItem(ul, outputPortMatch);
});
}
@@ -149,7 +149,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
if (!nf.Common.isEmpty(searchResults.funnelResults)) {
ul.append('<li class="search-header"><div class="search-result-icon icon icon-funnel"></div>Funnels</li>');
$.each(searchResults.funnelResults, function (i, funnelMatch) {
- self._renderItem(ul, funnelMatch);
+ nfSearchAutocomplete._renderItem(ul, funnelMatch);
});
}
@@ -194,7 +194,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
// show the selected component
nf.CanvasUtils.showComponent(item.groupId, item.id);
- self.getInputElement().val('').blur();
+ searchCtrl.getInputElement().val('').blur();
// stop event propagation
return false;
@@ -208,7 +208,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
close: function (event, ui) {
// set the input text to '' and reset the cached term
$(this).searchAutocomplete('reset');
- self.getInputElement().val('');
+ searchCtrl.getInputElement().val('');
// remove the glass pane
$('div.search-glass-pane').remove();
@@ -216,38 +216,38 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
});
// hide the search input
- self.toggleSearchField();
+ searchCtrl.toggleSearchField();
},
/**
* Toggle/Slide the search field open/closed.
*/
toggleSearchField: function () {
- var self = this;
+ var searchCtrl = this;
// hide the context menu if necessary
nf.ContextMenu.hide();
- var isVisible = self.getInputElement().is(':visible');
+ var isVisible = searchCtrl.getInputElement().is(':visible');
var display = 'none';
var class1 = 'search-container-opened';
var class2 = 'search-container-closed';
if (!isVisible) {
- self.getButtonElement().css('background-color', '#FFFFFF');
+ searchCtrl.getButtonElement().css('background-color', '#FFFFFF');
display = 'inline-block';
class1 = 'search-container-closed';
class2 = 'search-container-opened';
} else {
- self.getInputElement().css('display', display);
+ searchCtrl.getInputElement().css('display', display);
}
this.getSearchContainerElement().switchClass(class1, class2, 500, function () {
- self.getInputElement().css('display', display);
+ searchCtrl.getInputElement().css('display', display);
if (!isVisible) {
- self.getButtonElement().css('background-color', '#FFFFFF');
- self.getInputElement().focus();
+ searchCtrl.getButtonElement().css('background-color', '#FFFFFF');
+ searchCtrl.getInputElement().focus();
} else {
- self.getButtonElement().css('background-color', '#E3E8EB');
+ searchCtrl.getButtonElement().css('background-color', '#E3E8EB');
}
});
}
@@ -327,7 +327,7 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
* Reloads the current status of the flow.
*/
reloadFlowStatus: function () {
- var self = this;
+ var flowStatusCtrl = this;
return $.ajax({
type: 'GET',
@@ -336,9 +336,9 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
}).done(function (response) {
// report the updated status
if (nf.Common.isDefinedAndNotNull(response.controllerStatus)) {
- self.update(response.controllerStatus);
+ flowStatusCtrl.update(response.controllerStatus);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
/**
@@ -348,11 +348,11 @@ nf.ng.Canvas.FlowStatusCtrl = function (serviceProvider) {
*/
updateClusterSummary: function (clusterSummary) {
// see if this node has been (dis)connected
- if (nf.Canvas.isConnectedToCluster() !== clusterSummary.connectedToCluster) {
+ if (nf.ClusterSummary.isConnectedToCluster() !== clusterSummary.connectedToCluster) {
if (clusterSummary.connectedToCluster) {
- nf.Canvas.showConnectedToClusterMessage();
+ nf.Dialog.showConnectedToClusterMessage();
} else {
- nf.Canvas.showDisconnectedFromClusterMessage();
+ nf.Dialog.showDisconnectedFromClusterMessage();
}
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js
index 9981a32..6d0a304 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js
@@ -139,7 +139,7 @@ nf.ng.Canvas.GlobalMenuCtrl = function (serviceProvider) {
* @returns {*|boolean}
*/
visible: function () {
- return nf.Canvas.isConnectedToCluster();
+ return nf.ClusterSummary.isConnectedToCluster();
},
/**
@@ -304,7 +304,7 @@ nf.ng.Canvas.GlobalMenuCtrl = function (serviceProvider) {
$('#nifi-content-viewer-url').text(aboutDetails.contentViewerUrl);
nf.QueueListing.initFlowFileDetailsDialog();
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
this.modal.init();
},
@@ -327,7 +327,7 @@ nf.ng.Canvas.GlobalMenuCtrl = function (serviceProvider) {
* Initialize the modal.
*/
init: function () {
- var self = this;
+ var aboutModal = this;
var resizeAbout = function(){
var dialog = $(this);
@@ -350,7 +350,7 @@ nf.ng.Canvas.GlobalMenuCtrl = function (serviceProvider) {
},
handler: {
click: function () {
- self.hide();
+ aboutModal.hide();
}
}
}]
[02/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js
index fba8b93..c61dee5 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js
@@ -14,9 +14,43 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* global nf, top, Slick */
-
-nf.SummaryTable = (function () {
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'Slick',
+ 'nf.Common',
+ 'nf.ErrorHandler',
+ 'nf.StatusHistory',
+ 'nf.ProcessorDetails',
+ 'nf.ConnectionDetails',
+ 'nf.ng.Bridge'],
+ function ($, Slick, common, errorHandler, statusHistory, processorDetails, connectionDetails, angularBridge) {
+ return (nf.SummaryTable = factory($, Slick, common, errorHandler, statusHistory, processorDetails, connectionDetails, angularBridge));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.SummaryTable =
+ factory(require('jquery'),
+ require('Slick'),
+ require('nf.Common'),
+ require('nf.ErrorHandler'),
+ require('nf.StatusHistory'),
+ require('nf.ProcessorDetails'),
+ require('nf.ConnectionDetails'),
+ require('nf.ng.Bridge')));
+ } else {
+ nf.SummaryTable = factory(root.$,
+ root.Slick,
+ root.nf.Common,
+ root.nf.ErrorHandler,
+ root.nf.StatusHistory,
+ root.nf.ProcessorDetails,
+ root.nf.ConnectionDetails,
+ root.nf.ng.Bridge);
+ }
+}(this, function ($, Slick, common, errorHandler, statusHistory, processorDetails, connectionDetails, angularBridge) {
+ 'use strict';
/**
* Configuration object used to hold a number of configuration items.
@@ -40,7 +74,7 @@ nf.SummaryTable = (function () {
// only attempt this if we're within a frame
if (top !== window) {
// and our parent has canvas utils and shell defined
- if (nf.Common.isDefinedAndNotNull(parent.nf) && nf.Common.isDefinedAndNotNull(parent.nf.CanvasUtils) && nf.Common.isDefinedAndNotNull(parent.nf.Shell)) {
+ if (common.isDefinedAndNotNull(parent.nf) && common.isDefinedAndNotNull(parent.nf.CanvasUtils) && common.isDefinedAndNotNull(parent.nf.Shell)) {
parent.nf.CanvasUtils.showComponent(groupId, componentId);
parent.$('#shell-close-button').click();
}
@@ -87,12 +121,12 @@ nf.SummaryTable = (function () {
if (tab === 'Processors') {
// ensure the processor table is sized properly
var processorsGrid = $('#processor-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(processorsGrid)) {
+ if (common.isDefinedAndNotNull(processorsGrid)) {
processorsGrid.resizeCanvas();
// update the total number of processors
- $('#displayed-items').text(nf.Common.formatInteger(processorsGrid.getData().getLength()));
- $('#total-items').text(nf.Common.formatInteger(processorsGrid.getData().getLength()));
+ $('#displayed-items').text(common.formatInteger(processorsGrid.getData().getLength()));
+ $('#total-items').text(common.formatInteger(processorsGrid.getData().getLength()));
}
// update the combo for processors
@@ -111,12 +145,12 @@ nf.SummaryTable = (function () {
} else if (tab === 'Connections') {
// ensure the connection table is size properly
var connectionsGrid = $('#connection-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(connectionsGrid)) {
+ if (common.isDefinedAndNotNull(connectionsGrid)) {
connectionsGrid.resizeCanvas();
// update the total number of connections
- $('#displayed-items').text(nf.Common.formatInteger(connectionsGrid.getData().getLength()));
- $('#total-items').text(nf.Common.formatInteger(connectionsGrid.getData().getLength()));
+ $('#displayed-items').text(common.formatInteger(connectionsGrid.getData().getLength()));
+ $('#total-items').text(common.formatInteger(connectionsGrid.getData().getLength()));
}
// update the combo for connections
@@ -138,12 +172,12 @@ nf.SummaryTable = (function () {
} else if (tab === 'Input Ports') {
// ensure the connection table is size properly
var inputPortsGrid = $('#input-port-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(inputPortsGrid)) {
+ if (common.isDefinedAndNotNull(inputPortsGrid)) {
inputPortsGrid.resizeCanvas();
// update the total number of input ports
- $('#displayed-items').text(nf.Common.formatInteger(inputPortsGrid.getData().getLength()));
- $('#total-items').text(nf.Common.formatInteger(inputPortsGrid.getData().getLength()));
+ $('#displayed-items').text(common.formatInteger(inputPortsGrid.getData().getLength()));
+ $('#total-items').text(common.formatInteger(inputPortsGrid.getData().getLength()));
}
// update the combo for input ports
@@ -159,12 +193,12 @@ nf.SummaryTable = (function () {
} else if (tab === 'Output Ports') {
// ensure the connection table is size properly
var outputPortsGrid = $('#output-port-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(outputPortsGrid)) {
+ if (common.isDefinedAndNotNull(outputPortsGrid)) {
outputPortsGrid.resizeCanvas();
// update the total number of output ports
- $('#displayed-items').text(nf.Common.formatInteger(outputPortsGrid.getData().getLength()));
- $('#total-items').text(nf.Common.formatInteger(outputPortsGrid.getData().getLength()));
+ $('#displayed-items').text(common.formatInteger(outputPortsGrid.getData().getLength()));
+ $('#total-items').text(common.formatInteger(outputPortsGrid.getData().getLength()));
}
// update the combo for output ports
@@ -180,12 +214,12 @@ nf.SummaryTable = (function () {
} else if (tab === 'Remote Process Groups') {
// ensure the connection table is size properly
var remoteProcessGroupsGrid = $('#remote-process-group-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(remoteProcessGroupsGrid)) {
+ if (common.isDefinedAndNotNull(remoteProcessGroupsGrid)) {
remoteProcessGroupsGrid.resizeCanvas();
// update the total number of remote process groups
- $('#displayed-items').text(nf.Common.formatInteger(remoteProcessGroupsGrid.getData().getLength()));
- $('#total-items').text(nf.Common.formatInteger(remoteProcessGroupsGrid.getData().getLength()));
+ $('#displayed-items').text(common.formatInteger(remoteProcessGroupsGrid.getData().getLength()));
+ $('#total-items').text(common.formatInteger(remoteProcessGroupsGrid.getData().getLength()));
}
// update the combo for remote process groups
@@ -204,12 +238,12 @@ nf.SummaryTable = (function () {
} else {
// ensure the connection table is size properly
var processGroupGrid = $('#process-group-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(processGroupGrid)) {
+ if (common.isDefinedAndNotNull(processGroupGrid)) {
processGroupGrid.resizeCanvas();
// update the total number of process groups
- $('#displayed-items').text(nf.Common.formatInteger(processGroupGrid.getData().getLength()));
- $('#total-items').text(nf.Common.formatInteger(processGroupGrid.getData().getLength()));
+ $('#displayed-items').text(common.formatInteger(processGroupGrid.getData().getLength()));
+ $('#total-items').text(common.formatInteger(processGroupGrid.getData().getLength()));
}
// update the combo for process groups
@@ -235,8 +269,8 @@ nf.SummaryTable = (function () {
var markup = '<div title="View Processor Details" class="pointer show-processor-details fa fa-info-circle" style="margin-right: 3px;"></div>';
// if there are bulletins, render them on the graph
- if (!nf.Common.isEmpty(dataContext.bulletins)) {
- markup += '<div class="has-bulletins fa fa-sticky-note-o"></div><span class="hidden row-id">' + nf.Common.escapeHtml(dataContext.id) + '</span>';
+ if (!common.isEmpty(dataContext.bulletins)) {
+ markup += '<div class="has-bulletins fa fa-sticky-note-o"></div><span class="hidden row-id">' + common.escapeHtml(dataContext.id) + '</span>';
}
return markup;
@@ -249,22 +283,22 @@ nf.SummaryTable = (function () {
// formatter for tasks
var taskTimeFormatter = function (row, cell, value, columnDef, dataContext) {
- return nf.Common.formatInteger(dataContext.tasks) + ' / ' + dataContext.tasksDuration;
+ return common.formatInteger(dataContext.tasks) + ' / ' + dataContext.tasksDuration;
};
// function for formatting the last accessed time
var valueFormatter = function (row, cell, value, columnDef, dataContext) {
- return nf.Common.formatValue(value);
+ return common.formatValue(value);
};
// define a custom formatter for the run status column
var runStatusFormatter = function (row, cell, value, columnDef, dataContext) {
var activeThreadCount = '';
- if (nf.Common.isDefinedAndNotNull(dataContext.activeThreadCount) && dataContext.activeThreadCount > 0) {
+ if (common.isDefinedAndNotNull(dataContext.activeThreadCount) && dataContext.activeThreadCount > 0) {
activeThreadCount = '(' + dataContext.activeThreadCount + ')';
}
- var classes = nf.Common.escapeHtml(value.toLowerCase());
- switch(nf.Common.escapeHtml(value.toLowerCase())) {
+ var classes = common.escapeHtml(value.toLowerCase());
+ switch (common.escapeHtml(value.toLowerCase())) {
case 'running':
classes += ' fa fa-play running';
break;
@@ -284,7 +318,7 @@ nf.SummaryTable = (function () {
classes += '';
}
var formattedValue = '<div layout="row"><div class="' + classes + '"></div>';
- return formattedValue + '<div class="status-text" style="margin-top: 4px;">' + nf.Common.escapeHtml(value) + '</div><div style="float: left; margin-left: 4px;">' + nf.Common.escapeHtml(activeThreadCount) + '</div></div>';
+ return formattedValue + '<div class="status-text" style="margin-top: 4px;">' + common.escapeHtml(value) + '</div><div style="float: left; margin-left: 4px;">' + common.escapeHtml(activeThreadCount) + '</div></div>';
};
// define the input, read, written, and output columns (reused between both tables)
@@ -357,16 +391,11 @@ nf.SummaryTable = (function () {
tasksTimeColumn
];
- // initialize the search field if applicable
- if (isClustered) {
- nf.ClusterSearch.init();
- }
-
// determine if the this page is in the shell
var isInShell = (top !== window);
// add an action column if appropriate
- if (isClustered || isInShell || nf.Common.SUPPORTS_SVG) {
+ if (isClustered || isInShell || common.SUPPORTS_SVG) {
// define how the column is formatted
var processorActionFormatter = function (row, cell, value, columnDef, dataContext) {
var markup = '';
@@ -375,7 +404,7 @@ nf.SummaryTable = (function () {
markup += '<div class="pointer go-to fa fa-long-arrow-right" title="Go To Processor" style="margin-right: 3px;"></div>';
}
- if (nf.Common.SUPPORTS_SVG) {
+ if (common.SUPPORTS_SVG) {
markup += '<div class="pointer show-processor-status-history fa fa-area-chart" title="View Status History" style="margin-right: 3px;"></div>';
}
@@ -450,7 +479,7 @@ nf.SummaryTable = (function () {
if (target.hasClass('go-to')) {
goTo(item.groupId, item.id);
} else if (target.hasClass('show-processor-status-history')) {
- nf.StatusHistory.showProcessorChart(item.groupId, item.id);
+ statusHistory.showProcessorChart(item.groupId, item.id);
} else if (target.hasClass('show-cluster-processor-summary')) {
// load the cluster processor summary
loadClusterProcessorSummary(item.groupId, item.id);
@@ -466,7 +495,7 @@ nf.SummaryTable = (function () {
}
} else if (processorsGrid.getColumns()[args.cell].id === 'moreDetails') {
if (target.hasClass('show-processor-details')) {
- nf.ProcessorDetails.showDetails(item.groupId, item.id);
+ processorDetails.showDetails(item.groupId, item.id);
}
}
});
@@ -478,7 +507,7 @@ nf.SummaryTable = (function () {
// update the total number of displayed processors if necessary
if ($('#processor-summary-table').is(':visible')) {
- $('#displayed-items').text(nf.Common.formatInteger(args.current));
+ $('#displayed-items').text(common.formatInteger(args.current));
}
});
processorsData.onRowsChanged.subscribe(function (e, args) {
@@ -496,12 +525,12 @@ nf.SummaryTable = (function () {
var item = processorsData.getItemById(processorId);
// format the tooltip
- var bulletins = nf.Common.getFormattedBulletins(item.bulletins);
- var tooltip = nf.Common.formatUnorderedList(bulletins);
+ var bulletins = common.getFormattedBulletins(item.bulletins);
+ var tooltip = common.formatUnorderedList(bulletins);
// show the tooltip
- if (nf.Common.isDefinedAndNotNull(tooltip)) {
- bulletinIcon.qtip($.extend({}, nf.Common.config.tooltipConfig, {
+ if (common.isDefinedAndNotNull(tooltip)) {
+ bulletinIcon.qtip($.extend({}, common.config.tooltipConfig, {
content: tooltip,
position: {
container: $('#summary'),
@@ -617,11 +646,11 @@ nf.SummaryTable = (function () {
var backpressureFormatter = function (row, cell, value, columnDef, dataContext) {
var percentUseCount = 'NA';
- if (nf.Common.isDefinedAndNotNull(dataContext.percentUseCount)) {
+ if (common.isDefinedAndNotNull(dataContext.percentUseCount)) {
percentUseCount = dataContext.percentUseCount + '%';
}
var percentUseBytes = 'NA';
- if (nf.Common.isDefinedAndNotNull(dataContext.percentUseBytes)) {
+ if (common.isDefinedAndNotNull(dataContext.percentUseBytes)) {
percentUseBytes = dataContext.percentUseBytes + '%';
}
return percentUseCount + ' / ' + percentUseBytes;
@@ -675,7 +704,7 @@ nf.SummaryTable = (function () {
];
// add an action column if appropriate
- if (isClustered || isInShell || nf.Common.SUPPORTS_SVG) {
+ if (isClustered || isInShell || common.SUPPORTS_SVG) {
// define how the column is formatted
var connectionActionFormatter = function (row, cell, value, columnDef, dataContext) {
var markup = '';
@@ -684,7 +713,7 @@ nf.SummaryTable = (function () {
markup += '<div class="pointer go-to fa fa-long-arrow-right" title="Go To Connection" style="margin-right: 3px;"></div>';
}
- if (nf.Common.SUPPORTS_SVG) {
+ if (common.SUPPORTS_SVG) {
markup += '<div class="pointer show-connection-status-history fa fa-area-chart" title="View Status History" style="margin-right: 3px;"></div>';
}
@@ -759,7 +788,7 @@ nf.SummaryTable = (function () {
if (target.hasClass('go-to')) {
goTo(item.groupId, item.id);
} else if (target.hasClass('show-connection-status-history')) {
- nf.StatusHistory.showConnectionChart(item.groupId, item.id);
+ statusHistory.showConnectionChart(item.groupId, item.id);
} else if (target.hasClass('show-cluster-connection-summary')) {
// load the cluster processor summary
loadClusterConnectionSummary(item.groupId, item.id);
@@ -775,7 +804,7 @@ nf.SummaryTable = (function () {
}
} else if (connectionsGrid.getColumns()[args.cell].id === 'moreDetails') {
if (target.hasClass('show-connection-details')) {
- nf.ConnectionDetails.showDetails(item.groupId, item.id);
+ connectionDetails.showDetails(item.groupId, item.id);
}
}
});
@@ -787,7 +816,7 @@ nf.SummaryTable = (function () {
// update the total number of displayed processors, if necessary
if ($('#connection-summary-table').is(':visible')) {
- $('#displayed-items').text(nf.Common.formatInteger(args.current));
+ $('#displayed-items').text(common.formatInteger(args.current));
}
});
connectionsData.onRowsChanged.subscribe(function (e, args) {
@@ -895,8 +924,8 @@ nf.SummaryTable = (function () {
var markup = '';
// if there are bulletins, render them on the graph
- if (!nf.Common.isEmpty(dataContext.bulletins)) {
- markup += '<div class="has-bulletins fa fa-sticky-note-o" style="margin-top: 5px; margin-left: 5px; float: left;"></div><span class="hidden row-id">' + nf.Common.escapeHtml(dataContext.id) + '</span>';
+ if (!common.isEmpty(dataContext.bulletins)) {
+ markup += '<div class="has-bulletins fa fa-sticky-note-o" style="margin-top: 5px; margin-left: 5px; float: left;"></div><span class="hidden row-id">' + common.escapeHtml(dataContext.id) + '</span>';
}
return markup;
@@ -954,7 +983,7 @@ nf.SummaryTable = (function () {
];
// add an action column if appropriate
- if (isClustered || isInShell || nf.Common.SUPPORTS_SVG) {
+ if (isClustered || isInShell || common.SUPPORTS_SVG) {
// define how the column is formatted
var processGroupActionFormatter = function (row, cell, value, columnDef, dataContext) {
var markup = '';
@@ -963,7 +992,7 @@ nf.SummaryTable = (function () {
markup += '<div class="pointer go-to fa fa-long-arrow-right" title="Go To Process Group" style="margin-right: 3px;"></div>';
}
- if (nf.Common.SUPPORTS_SVG) {
+ if (common.SUPPORTS_SVG) {
markup += '<div class="pointer show-process-group-status-history fa fa-area-chart" title="View Status History" style="margin-right: 3px;"></div>';
}
@@ -1036,12 +1065,12 @@ nf.SummaryTable = (function () {
// determine the desired action
if (processGroupsGrid.getColumns()[args.cell].id === 'actions') {
if (target.hasClass('go-to')) {
- if (nf.Common.isDefinedAndNotNull(parent.nf) && nf.Common.isDefinedAndNotNull(parent.nf.CanvasUtils) && nf.Common.isDefinedAndNotNull(parent.nf.Shell)) {
+ if (common.isDefinedAndNotNull(parent.nf) && common.isDefinedAndNotNull(parent.nf.CanvasUtils) && common.isDefinedAndNotNull(parent.nf.Shell)) {
parent.nf.CanvasUtils.enterGroup(item.id);
parent.$('#shell-close-button').click();
}
} else if (target.hasClass('show-process-group-status-history')) {
- nf.StatusHistory.showProcessGroupChart(item.groupId, item.id);
+ statusHistory.showProcessGroupChart(item.groupId, item.id);
} else if (target.hasClass('show-cluster-process-group-summary')) {
// load the cluster processor summary
loadClusterProcessGroupSummary(item.id);
@@ -1065,7 +1094,7 @@ nf.SummaryTable = (function () {
// update the total number of displayed process groups if necessary
if ($('#process-group-summary-table').is(':visible')) {
- $('#displayed-items').text(nf.Common.formatInteger(args.current));
+ $('#displayed-items').text(common.formatInteger(args.current));
}
});
processGroupsData.onRowsChanged.subscribe(function (e, args) {
@@ -1083,12 +1112,12 @@ nf.SummaryTable = (function () {
var item = processGroupsData.getItemById(processGroupId);
// format the tooltip
- var bulletins = nf.Common.getFormattedBulletins(item.bulletins);
- var tooltip = nf.Common.formatUnorderedList(bulletins);
+ var bulletins = common.getFormattedBulletins(item.bulletins);
+ var tooltip = common.formatUnorderedList(bulletins);
// show the tooltip
- if (nf.Common.isDefinedAndNotNull(tooltip)) {
- bulletinIcon.qtip($.extend({}, nf.Common.config.tooltipConfig, {
+ if (common.isDefinedAndNotNull(tooltip)) {
+ bulletinIcon.qtip($.extend({}, common.config.tooltipConfig, {
content: tooltip,
position: {
container: $('#summary'),
@@ -1309,7 +1338,7 @@ nf.SummaryTable = (function () {
// update the total number of displayed processors, if necessary
if ($('#input-port-summary-table').is(':visible')) {
- $('#display-items').text(nf.Common.formatInteger(args.current));
+ $('#display-items').text(common.formatInteger(args.current));
}
});
inputPortsData.onRowsChanged.subscribe(function (e, args) {
@@ -1327,12 +1356,12 @@ nf.SummaryTable = (function () {
var item = inputPortsData.getItemById(portId);
// format the tooltip
- var bulletins = nf.Common.getFormattedBulletins(item.bulletins);
- var tooltip = nf.Common.formatUnorderedList(bulletins);
+ var bulletins = common.getFormattedBulletins(item.bulletins);
+ var tooltip = common.formatUnorderedList(bulletins);
// show the tooltip
- if (nf.Common.isDefinedAndNotNull(tooltip)) {
- bulletinIcon.qtip($.extend({}, nf.Common.config.tooltipConfig, {
+ if (common.isDefinedAndNotNull(tooltip)) {
+ bulletinIcon.qtip($.extend({}, common.config.tooltipConfig, {
content: tooltip,
position: {
container: $('#summary'),
@@ -1549,7 +1578,7 @@ nf.SummaryTable = (function () {
// update the total number of displayed processors, if necessary
if ($('#output-port-summary-table').is(':visible')) {
- $('#display-items').text(nf.Common.formatInteger(args.current));
+ $('#display-items').text(common.formatInteger(args.current));
}
});
outputPortsData.onRowsChanged.subscribe(function (e, args) {
@@ -1567,12 +1596,12 @@ nf.SummaryTable = (function () {
var item = outputPortsData.getItemById(portId);
// format the tooltip
- var bulletins = nf.Common.getFormattedBulletins(item.bulletins);
- var tooltip = nf.Common.formatUnorderedList(bulletins);
+ var bulletins = common.getFormattedBulletins(item.bulletins);
+ var tooltip = common.formatUnorderedList(bulletins);
// show the tooltip
- if (nf.Common.isDefinedAndNotNull(tooltip)) {
- bulletinIcon.qtip($.extend({}, nf.Common.config.tooltipConfig, {
+ if (common.isDefinedAndNotNull(tooltip)) {
+ bulletinIcon.qtip($.extend({}, common.config.tooltipConfig, {
content: tooltip,
position: {
container: $('#summary'),
@@ -1681,7 +1710,7 @@ nf.SummaryTable = (function () {
// define a custom formatter for the run status column
var transmissionStatusFormatter = function (row, cell, value, columnDef, dataContext) {
var activeThreadCount = '';
- if (nf.Common.isDefinedAndNotNull(dataContext.activeThreadCount) && dataContext.activeThreadCount > 0) {
+ if (common.isDefinedAndNotNull(dataContext.activeThreadCount) && dataContext.activeThreadCount > 0) {
activeThreadCount = '(' + dataContext.activeThreadCount + ')';
}
@@ -1698,7 +1727,7 @@ nf.SummaryTable = (function () {
// generate the mark up
var formattedValue = '<div layout="row"><div class="' + transmissionClass + '"></div>';
- return formattedValue + '<div class="status-text" style="margin-top: 4px;">' + transmissionLabel + '</div><div style="float: left; margin-left: 4px;">' + nf.Common.escapeHtml(activeThreadCount) + '</div></div>';
+ return formattedValue + '<div class="status-text" style="margin-top: 4px;">' + transmissionLabel + '</div><div style="float: left; margin-left: 4px;">' + common.escapeHtml(activeThreadCount) + '</div></div>';
};
var transmissionStatusColumn = {
@@ -1738,7 +1767,7 @@ nf.SummaryTable = (function () {
];
// add an action column if appropriate
- if (isClustered || isInShell || nf.Common.SUPPORTS_SVG) {
+ if (isClustered || isInShell || common.SUPPORTS_SVG) {
// define how the column is formatted
var remoteProcessGroupActionFormatter = function (row, cell, value, columnDef, dataContext) {
var markup = '';
@@ -1747,7 +1776,7 @@ nf.SummaryTable = (function () {
markup += '<div class="pointer go-to fa fa-long-arrow-right" title="Go To Process Group" style="margin-right: 3px;"></div>';
}
- if (nf.Common.SUPPORTS_SVG) {
+ if (common.SUPPORTS_SVG) {
markup += '<div class="pointer show-remote-process-group-status-history fa fa-area-chart" title="View Status History" style="margin-right: 3px;"></div>';
}
@@ -1822,7 +1851,7 @@ nf.SummaryTable = (function () {
if (target.hasClass('go-to')) {
goTo(item.groupId, item.id);
} else if (target.hasClass('show-remote-process-group-status-history')) {
- nf.StatusHistory.showRemoteProcessGroupChart(item.groupId, item.id);
+ statusHistory.showRemoteProcessGroupChart(item.groupId, item.id);
} else if (target.hasClass('show-cluster-remote-process-group-summary')) {
// load the cluster processor summary
loadClusterRemoteProcessGroupSummary(item.groupId, item.id);
@@ -1846,7 +1875,7 @@ nf.SummaryTable = (function () {
// update the total number of displayed processors, if necessary
if ($('#remote-process-group-summary-table').is(':visible')) {
- $('#displayed-items').text(nf.Common.formatInteger(args.current));
+ $('#displayed-items').text(common.formatInteger(args.current));
}
});
remoteProcessGroupsData.onRowsChanged.subscribe(function (e, args) {
@@ -1864,12 +1893,12 @@ nf.SummaryTable = (function () {
var item = remoteProcessGroupsData.getItemById(remoteProcessGroupId);
// format the tooltip
- var bulletins = nf.Common.getFormattedBulletins(item.bulletins);
- var tooltip = nf.Common.formatUnorderedList(bulletins);
+ var bulletins = common.getFormattedBulletins(item.bulletins);
+ var tooltip = common.formatUnorderedList(bulletins);
// show the tooltip
- if (nf.Common.isDefinedAndNotNull(tooltip)) {
- bulletinIcon.qtip($.extend({}, nf.Common.config.tooltipConfig, {
+ if (common.isDefinedAndNotNull(tooltip)) {
+ bulletinIcon.qtip($.extend({}, common.config.tooltipConfig, {
content: tooltip,
position: {
container: $('#summary'),
@@ -2027,7 +2056,7 @@ nf.SummaryTable = (function () {
$('#summary-loading-container').show();
},
open: function () {
- nf.Common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
+ common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
}
}
});
@@ -2052,7 +2081,7 @@ nf.SummaryTable = (function () {
*/
var sort = function (tableId, sortDetails, data) {
// ensure there is a state object for this table
- if (nf.Common.isUndefined(sortState[tableId])) {
+ if (common.isUndefined(sortState[tableId])) {
sortState[tableId] = {};
}
@@ -2060,17 +2089,17 @@ nf.SummaryTable = (function () {
var comparer = function (a, b) {
if (sortDetails.columnId === 'moreDetails') {
var aBulletins = 0;
- if (!nf.Common.isEmpty(a.bulletins)) {
+ if (!common.isEmpty(a.bulletins)) {
aBulletins = a.bulletins.length;
}
var bBulletins = 0;
- if (!nf.Common.isEmpty(b.bulletins)) {
+ if (!common.isEmpty(b.bulletins)) {
bBulletins = b.bulletins.length;
}
return aBulletins - bBulletins;
} else if (sortDetails.columnId === 'runStatus' || sortDetails.columnId === 'transmissionStatus') {
- var aString = nf.Common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
- var bString = nf.Common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
+ var aString = common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
+ var bString = common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
if (aString === bString) {
return a.activeThreadCount - b.activeThreadCount;
} else {
@@ -2080,26 +2109,26 @@ nf.SummaryTable = (function () {
var mod = sortState[tableId].count % 4;
if (mod < 2) {
$('#' + tableId + ' span.queued-title').addClass('sorted');
- var aQueueCount = nf.Common.parseCount(a['queuedCount']);
- var bQueueCount = nf.Common.parseCount(b['queuedCount']);
+ var aQueueCount = common.parseCount(a['queuedCount']);
+ var bQueueCount = common.parseCount(b['queuedCount']);
return aQueueCount - bQueueCount;
} else {
$('#' + tableId + ' span.queued-size-title').addClass('sorted');
- var aQueueSize = nf.Common.parseSize(a['queuedSize']);
- var bQueueSize = nf.Common.parseSize(b['queuedSize']);
+ var aQueueSize = common.parseSize(a['queuedSize']);
+ var bQueueSize = common.parseSize(b['queuedSize']);
return aQueueSize - bQueueSize;
}
} else if (sortDetails.columnId === 'backpressure') {
var mod = sortState[tableId].count % 4;
if (mod < 2) {
$('#' + tableId + ' span.backpressure-object-title').addClass('sorted');
- var aPercentUseObject = nf.Common.isDefinedAndNotNull(a['percentUseCount']) ? a['percentUseCount'] : -1;
- var bPercentUseObject = nf.Common.isDefinedAndNotNull(b['percentUseCount']) ? b['percentUseCount'] : -1;
+ var aPercentUseObject = common.isDefinedAndNotNull(a['percentUseCount']) ? a['percentUseCount'] : -1;
+ var bPercentUseObject = common.isDefinedAndNotNull(b['percentUseCount']) ? b['percentUseCount'] : -1;
return aPercentUseObject - bPercentUseObject;
} else {
$('#' + tableId + ' span.backpressure-data-size-title').addClass('sorted');
- var aPercentUseDataSize = nf.Common.isDefinedAndNotNull(a['percentUseBytes']) ? a['percentUseBytes'] : -1;
- var bPercentUseDataSize = nf.Common.isDefinedAndNotNull(b['percentUseBytes']) ? b['percentUseBytes'] : -1;
+ var aPercentUseDataSize = common.isDefinedAndNotNull(a['percentUseBytes']) ? a['percentUseBytes'] : -1;
+ var bPercentUseDataSize = common.isDefinedAndNotNull(b['percentUseBytes']) ? b['percentUseBytes'] : -1;
return aPercentUseDataSize - bPercentUseDataSize;
}
} else if (sortDetails.columnId === 'sent' || sortDetails.columnId === 'received' || sortDetails.columnId === 'input' || sortDetails.columnId === 'output' || sortDetails.columnId === 'transferred') {
@@ -2108,44 +2137,44 @@ nf.SummaryTable = (function () {
var mod = sortState[tableId].count % 4;
if (mod < 2) {
$('#' + tableId + ' span.' + sortDetails.columnId + '-title').addClass('sorted');
- var aCount = nf.Common.parseCount(aSplit[0]);
- var bCount = nf.Common.parseCount(bSplit[0]);
+ var aCount = common.parseCount(aSplit[0]);
+ var bCount = common.parseCount(bSplit[0]);
return aCount - bCount;
} else {
$('#' + tableId + ' span.' + sortDetails.columnId + '-size-title').addClass('sorted');
- var aSize = nf.Common.parseSize(aSplit[1]);
- var bSize = nf.Common.parseSize(bSplit[1]);
+ var aSize = common.parseSize(aSplit[1]);
+ var bSize = common.parseSize(bSplit[1]);
return aSize - bSize;
}
} else if (sortDetails.columnId === 'io') {
var mod = sortState[tableId].count % 4;
if (mod < 2) {
$('#' + tableId + ' span.read-title').addClass('sorted');
- var aReadSize = nf.Common.parseSize(a['read']);
- var bReadSize = nf.Common.parseSize(b['read']);
+ var aReadSize = common.parseSize(a['read']);
+ var bReadSize = common.parseSize(b['read']);
return aReadSize - bReadSize;
} else {
$('#' + tableId + ' span.written-title').addClass('sorted');
- var aWriteSize = nf.Common.parseSize(a['written']);
- var bWriteSize = nf.Common.parseSize(b['written']);
+ var aWriteSize = common.parseSize(a['written']);
+ var bWriteSize = common.parseSize(b['written']);
return aWriteSize - bWriteSize;
}
} else if (sortDetails.columnId === 'tasks') {
var mod = sortState[tableId].count % 4;
if (mod < 2) {
$('#' + tableId + ' span.tasks-title').addClass('sorted');
- var aTasks = nf.Common.parseCount(a['tasks']);
- var bTasks = nf.Common.parseCount(b['tasks']);
+ var aTasks = common.parseCount(a['tasks']);
+ var bTasks = common.parseCount(b['tasks']);
return aTasks - bTasks;
} else {
$('#' + tableId + ' span.time-title').addClass('sorted');
- var aDuration = nf.Common.parseDuration(a['tasksDuration']);
- var bDuration = nf.Common.parseDuration(b['tasksDuration']);
+ var aDuration = common.parseDuration(a['tasksDuration']);
+ var bDuration = common.parseDuration(b['tasksDuration']);
return aDuration - bDuration;
}
} else {
- var aString = nf.Common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
- var bString = nf.Common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
+ var aString = common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
+ var bString = common.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
return aString === bString ? 0 : aString > bString ? 1 : -1;
}
};
@@ -2215,7 +2244,7 @@ nf.SummaryTable = (function () {
// add the parameter if appropriate
var parameters = {};
- if (!nf.Common.isNull(clusterNodeId)) {
+ if (!common.isNull(clusterNodeId)) {
parameters['clusterNodeId'] = clusterNodeId;
}
@@ -2239,7 +2268,7 @@ nf.SummaryTable = (function () {
$('#free-heap').text(aggregateSnapshot.freeHeap);
// ensure the heap utilization could be calculated
- if (nf.Common.isDefinedAndNotNull(aggregateSnapshot.heapUtilization)) {
+ if (common.isDefinedAndNotNull(aggregateSnapshot.heapUtilization)) {
$('#utilization-heap').text('(' + aggregateSnapshot.heapUtilization + ')');
} else {
$('#utilization-heap').text('');
@@ -2252,7 +2281,7 @@ nf.SummaryTable = (function () {
$('#free-non-heap').text(aggregateSnapshot.freeNonHeap);
// enure the non heap utilization could be calculated
- if (nf.Common.isDefinedAndNotNull(aggregateSnapshot.nonHeapUtilization)) {
+ if (common.isDefinedAndNotNull(aggregateSnapshot.nonHeapUtilization)) {
$('#utilization-non-heap').text('(' + aggregateSnapshot.nonHeapUtilization + ')');
} else {
$('#utilization-non-heap').text('');
@@ -2260,9 +2289,9 @@ nf.SummaryTable = (function () {
// garbage collection
var garbageCollectionContainer = $('#garbage-collection-table tbody').empty();
- if (nf.Common.isDefinedAndNotNull(aggregateSnapshot.garbageCollection)) {
+ if (common.isDefinedAndNotNull(aggregateSnapshot.garbageCollection)) {
// sort the garbage collections
- var sortedGarbageCollection = aggregateSnapshot.garbageCollection.sort(function(a, b) {
+ var sortedGarbageCollection = aggregateSnapshot.garbageCollection.sort(function (a, b) {
return a.name === b.name ? 0 : a.name > b.name ? 1 : -1;
});
// add each to the UI
@@ -2275,10 +2304,10 @@ nf.SummaryTable = (function () {
$('#available-processors').text(aggregateSnapshot.availableProcessors);
// load
- if (nf.Common.isDefinedAndNotNull(aggregateSnapshot.processorLoadAverage)) {
- $('#processor-load-average').text(nf.Common.formatFloat(aggregateSnapshot.processorLoadAverage));
+ if (common.isDefinedAndNotNull(aggregateSnapshot.processorLoadAverage)) {
+ $('#processor-load-average').text(common.formatFloat(aggregateSnapshot.processorLoadAverage));
} else {
- $('#processor-load-average').html(nf.Common.formatValue(aggregateSnapshot.processorLoadAverage));
+ $('#processor-load-average').html(common.formatValue(aggregateSnapshot.processorLoadAverage));
}
// flow file storage usage
@@ -2287,9 +2316,9 @@ nf.SummaryTable = (function () {
// content repo storage usage
var contentRepositoryUsageContainer = $('#content-repository-storage-usage-container').empty();
- if (nf.Common.isDefinedAndNotNull(aggregateSnapshot.contentRepositoryStorageUsage)) {
+ if (common.isDefinedAndNotNull(aggregateSnapshot.contentRepositoryStorageUsage)) {
// sort the content repos
- var sortedContentRepositoryStorageUsage = aggregateSnapshot.contentRepositoryStorageUsage.sort(function(a, b) {
+ var sortedContentRepositoryStorageUsage = aggregateSnapshot.contentRepositoryStorageUsage.sort(function (a, b) {
return a.identifier === b.identifier ? 0 : a.identifier > b.identifier ? 1 : -1;
});
// add each to the UI
@@ -2311,7 +2340,7 @@ nf.SummaryTable = (function () {
'#version-os-version': aggregateSnapshot.versionInfo.osVersion,
'#version-os-arch': aggregateSnapshot.versionInfo.osArchitecture
};
- for (versionSpanSelector in versionSpanSelectorToFieldMap) {
+ for (var versionSpanSelector in versionSpanSelectorToFieldMap) {
var dataField = versionSpanSelectorToFieldMap[versionSpanSelector];
if (dataField) {
$(versionSpanSelector).text(dataField);
@@ -2322,7 +2351,7 @@ nf.SummaryTable = (function () {
// update the stats last refreshed timestamp
$('#system-diagnostics-last-refreshed').text(aggregateSnapshot.statsLastRefreshed);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -2351,14 +2380,14 @@ nf.SummaryTable = (function () {
var storage = $('<div class="storage-identifier setting-name"></div>');
storage.text('Usage:');
- if (nf.Common.isDefinedAndNotNull(storageUsage.identifier)) {
+ if (common.isDefinedAndNotNull(storageUsage.identifier)) {
storage.text('Usage for ' + storageUsage.identifier + ':');
}
storage.appendTo(storageUsageContainer);
- (nf.ng.Bridge.injector.get('$compile')($('<md-progress-linear class="md-hue-2" md-mode="determinate" value="' + (used/total)*100 + '" aria-label="FlowFile Repository Storage Usage"></md-progress-linear>'))(nf.ng.Bridge.rootScope)).appendTo(storageUsageContainer);
+ (angularBridge.injector.get('$compile')($('<md-progress-linear class="md-hue-2" md-mode="determinate" value="' + (used / total) * 100 + '" aria-label="FlowFile Repository Storage Usage"></md-progress-linear>'))(angularBridge.rootScope)).appendTo(storageUsageContainer);
- var usageDetails = $('<div class="storage-usage-details"></div>').text(' (' + storageUsage.usedSpace + ' of ' + storageUsage.totalSpace + ')').prepend($('<b></b>').text(Math.round((used/total)*100) + '%'));
+ var usageDetails = $('<div class="storage-usage-details"></div>').text(' (' + storageUsage.usedSpace + ' of ' + storageUsage.totalSpace + ')').prepend($('<b></b>').text(Math.round((used / total) * 100) + '%'));
$('<div class="storage-usage-header"></div>').append(usageDetails).append('<div class="clear"></div>').appendTo(storageUsageContainer);
};
@@ -2437,7 +2466,7 @@ nf.SummaryTable = (function () {
}
// ensure the grid has been initialized
- if (nf.Common.isDefinedAndNotNull(grid)) {
+ if (common.isDefinedAndNotNull(grid)) {
var data = grid.getData();
// update the search criteria
@@ -2465,7 +2494,7 @@ nf.SummaryTable = (function () {
},
dataType: 'json'
}).done(function (response) {
- if (nf.Common.isDefinedAndNotNull(response.processorStatus)) {
+ if (common.isDefinedAndNotNull(response.processorStatus)) {
var processorStatus = response.processorStatus;
var clusterProcessorsGrid = $('#cluster-processor-summary-table').data('gridInstance');
@@ -2504,7 +2533,7 @@ nf.SummaryTable = (function () {
// update the stats last refreshed timestamp
$('#cluster-processor-summary-last-refreshed').text(processorStatus.statsLastRefreshed);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -2523,7 +2552,7 @@ nf.SummaryTable = (function () {
},
dataType: 'json'
}).done(function (response) {
- if (nf.Common.isDefinedAndNotNull(response.connectionStatus)) {
+ if (common.isDefinedAndNotNull(response.connectionStatus)) {
var connectionStatus = response.connectionStatus;
var clusterConnectionsGrid = $('#cluster-connection-summary-table').data('gridInstance');
@@ -2561,7 +2590,7 @@ nf.SummaryTable = (function () {
// update the stats last refreshed timestamp
$('#cluster-connection-summary-last-refreshed').text(connectionStatus.statsLastRefreshed);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -2580,7 +2609,7 @@ nf.SummaryTable = (function () {
},
dataType: 'json'
}).done(function (response) {
- if (nf.Common.isDefinedAndNotNull(response.processGroupStatus)) {
+ if (common.isDefinedAndNotNull(response.processGroupStatus)) {
var processGroupStatus = response.processGroupStatus;
var clusterProcessGroupsGrid = $('#cluster-process-group-summary-table').data('gridInstance');
@@ -2621,7 +2650,7 @@ nf.SummaryTable = (function () {
// update the stats last refreshed timestamp
$('#cluster-process-group-summary-last-refreshed').text(processGroupStatus.statsLastRefreshed);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -2640,7 +2669,7 @@ nf.SummaryTable = (function () {
},
dataType: 'json'
}).done(function (response) {
- if (nf.Common.isDefinedAndNotNull(response.portStatus)) {
+ if (common.isDefinedAndNotNull(response.portStatus)) {
var inputPortStatus = response.portStatus;
var clusterInputPortsGrid = $('#cluster-input-port-summary-table').data('gridInstance');
@@ -2674,7 +2703,7 @@ nf.SummaryTable = (function () {
// update the stats last refreshed timestamp
$('#cluster-input-port-summary-last-refreshed').text(inputPortStatus.statsLastRefreshed);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -2693,7 +2722,7 @@ nf.SummaryTable = (function () {
},
dataType: 'json'
}).done(function (response) {
- if (nf.Common.isDefinedAndNotNull(response.portStatus)) {
+ if (common.isDefinedAndNotNull(response.portStatus)) {
var outputPortStatus = response.portStatus;
var clusterOutputPortsGrid = $('#cluster-output-port-summary-table').data('gridInstance');
@@ -2727,7 +2756,7 @@ nf.SummaryTable = (function () {
// update the stats last refreshed timestamp
$('#cluster-output-port-summary-last-refreshed').text(outputPortStatus.statsLastRefreshed);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -2746,7 +2775,7 @@ nf.SummaryTable = (function () {
},
dataType: 'json'
}).done(function (response) {
- if (nf.Common.isDefinedAndNotNull(response.remoteProcessGroupStatus)) {
+ if (common.isDefinedAndNotNull(response.remoteProcessGroupStatus)) {
var remoteProcessGroupStatus = response.remoteProcessGroupStatus;
var clusterRemoteProcessGroupsGrid = $('#cluster-remote-process-group-summary-table').data('gridInstance');
@@ -2782,7 +2811,7 @@ nf.SummaryTable = (function () {
// update the stats last refreshed timestamp
$('#cluster-remote-process-group-summary-last-refreshed').text(remoteProcessGroupStatus.statsLastRefreshed);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
var clusterNodeId = null;
@@ -2805,11 +2834,11 @@ nf.SummaryTable = (function () {
var configDetails = configResponse.flowConfiguration;
// initialize the chart
- nf.StatusHistory.init(configDetails.timeOffset);
+ statusHistory.init(configDetails.timeOffset);
// initialize the processor/connection details dialog
- nf.ProcessorDetails.init(false);
- nf.ConnectionDetails.init();
+ processorDetails.init(false);
+ connectionDetails.init();
initSummaryTable(isClustered);
deferred.resolve();
@@ -2835,7 +2864,7 @@ nf.SummaryTable = (function () {
var processorsTable = $('#processor-summary-table');
if (processorsTable.is(':visible')) {
var processorsGrid = processorsTable.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(processorsGrid)) {
+ if (common.isDefinedAndNotNull(processorsGrid)) {
processorsGrid.resizeCanvas();
}
}
@@ -2843,7 +2872,7 @@ nf.SummaryTable = (function () {
var connectionsTable = $('#connection-summary-table');
if (connectionsTable.is(':visible')) {
var connectionsGrid = connectionsTable.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(connectionsGrid)) {
+ if (common.isDefinedAndNotNull(connectionsGrid)) {
connectionsGrid.resizeCanvas();
}
}
@@ -2851,7 +2880,7 @@ nf.SummaryTable = (function () {
var processGroupsTable = $('#process-group-summary-table');
if (processGroupsTable.is(':visible')) {
var processGroupsGrid = processGroupsTable.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(processGroupsGrid)) {
+ if (common.isDefinedAndNotNull(processGroupsGrid)) {
processGroupsGrid.resizeCanvas();
}
}
@@ -2859,7 +2888,7 @@ nf.SummaryTable = (function () {
var inputPortsTable = $('#input-port-summary-table');
if (inputPortsTable.is(':visible')) {
var inputPortGrid = inputPortsTable.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(inputPortGrid)) {
+ if (common.isDefinedAndNotNull(inputPortGrid)) {
inputPortGrid.resizeCanvas();
}
}
@@ -2867,7 +2896,7 @@ nf.SummaryTable = (function () {
var outputPortsTable = $('#output-port-summary-table');
if (outputPortsTable.is(':visible')) {
var outputPortGrid = outputPortsTable.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(outputPortGrid)) {
+ if (common.isDefinedAndNotNull(outputPortGrid)) {
outputPortGrid.resizeCanvas();
}
}
@@ -2875,7 +2904,7 @@ nf.SummaryTable = (function () {
var remoteProcessGroupsTable = $('#remote-process-group-summary-table');
if (remoteProcessGroupsTable.is(':visible')) {
var remoteProcessGroupGrid = remoteProcessGroupsTable.data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(remoteProcessGroupGrid)) {
+ if (common.isDefinedAndNotNull(remoteProcessGroupGrid)) {
remoteProcessGroupGrid.resizeCanvas();
}
}
@@ -2889,7 +2918,7 @@ nf.SummaryTable = (function () {
// add the parameter if appropriate
var parameters = {};
- if (!nf.Common.isNull(clusterNodeId)) {
+ if (!common.isNull(clusterNodeId)) {
parameters['clusterNodeId'] = clusterNodeId;
}
@@ -2909,10 +2938,10 @@ nf.SummaryTable = (function () {
var processGroupStatus = response.processGroupStatus;
var aggregateSnapshot = processGroupStatus.aggregateSnapshot;
- if (nf.Common.isDefinedAndNotNull(aggregateSnapshot)) {
+ if (common.isDefinedAndNotNull(aggregateSnapshot)) {
// remove any tooltips from the processor table
var processorsGridElement = $('#processor-summary-table');
- nf.Common.cleanUpTooltips(processorsGridElement, 'div.has-bulletins');
+ common.cleanUpTooltips(processorsGridElement, 'div.has-bulletins');
// get the processor grid/data
var processorsGrid = processorsGridElement.data('gridInstance');
@@ -2924,7 +2953,7 @@ nf.SummaryTable = (function () {
// remove any tooltips from the process group table
var processGroupGridElement = $('#process-group-summary-table');
- nf.Common.cleanUpTooltips(processGroupGridElement, 'div.has-bulletins');
+ common.cleanUpTooltips(processGroupGridElement, 'div.has-bulletins');
// get the process group grid/data
var processGroupGrid = processGroupGridElement.data('gridInstance');
@@ -2932,7 +2961,7 @@ nf.SummaryTable = (function () {
// remove any tooltips from the input port table
var inputPortsGridElement = $('#input-port-summary-table');
- nf.Common.cleanUpTooltips(inputPortsGridElement, 'div.has-bulletins');
+ common.cleanUpTooltips(inputPortsGridElement, 'div.has-bulletins');
// get the input ports grid/data
var inputPortsGrid = inputPortsGridElement.data('gridInstance');
@@ -2940,7 +2969,7 @@ nf.SummaryTable = (function () {
// remove any tooltips from the output port table
var outputPortsGridElement = $('#output-port-summary-table');
- nf.Common.cleanUpTooltips(outputPortsGridElement, 'div.has-bulletins');
+ common.cleanUpTooltips(outputPortsGridElement, 'div.has-bulletins');
// get the output ports grid/data
var outputPortsGrid = outputPortsGridElement.data('gridInstance');
@@ -2948,7 +2977,7 @@ nf.SummaryTable = (function () {
// remove any tooltips from the remote process group table
var remoteProcessGroupsGridElement = $('#remote-process-group-summary-table');
- nf.Common.cleanUpTooltips(remoteProcessGroupsGridElement, 'div.has-bulletins');
+ common.cleanUpTooltips(remoteProcessGroupsGridElement, 'div.has-bulletins');
// get the remote process groups grid
var remoteProcessGroupsGrid = remoteProcessGroupsGridElement.data('gridInstance');
@@ -2999,22 +3028,22 @@ nf.SummaryTable = (function () {
// update the total number of processors
if ($('#processor-summary-table').is(':visible')) {
- $('#total-items').text(nf.Common.formatInteger(processorItems.length));
+ $('#total-items').text(common.formatInteger(processorItems.length));
} else if ($('#connection-summary-table').is(':visible')) {
- $('#total-items').text(nf.Common.formatInteger(connectionItems.length));
+ $('#total-items').text(common.formatInteger(connectionItems.length));
} else if ($('#input-port-summary-table').is(':visible')) {
- $('#total-items').text(nf.Common.formatInteger(inputPortItems.length));
+ $('#total-items').text(common.formatInteger(inputPortItems.length));
} else if ($('#output-port-summary-table').is(':visible')) {
- $('#total-items').text(nf.Common.formatInteger(outputPortItems.length));
+ $('#total-items').text(common.formatInteger(outputPortItems.length));
} else if ($('#process-group-summary-table').is(':visible')) {
- $('#total-items').text(nf.Common.formatInteger(processGroupItems.length));
+ $('#total-items').text(common.formatInteger(processGroupItems.length));
} else {
- $('#total-items').text(nf.Common.formatInteger(remoteProcessGroupItems.length));
+ $('#total-items').text(common.formatInteger(remoteProcessGroupItems.length));
}
} else {
$('#total-items').text('0');
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
}
};
-}());
\ No newline at end of file
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js
index 7e68316..826c4a9 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js
@@ -15,34 +15,106 @@
* limitations under the License.
*/
-/* global nf */
+/* global nf, define, module, require, exports */
-$(document).ready(function () {
- //Create Angular App
- var app = angular.module('ngSummaryApp', ['ngResource', 'ngRoute', 'ngMaterial', 'ngMessages']);
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'angular',
+ 'nf.Common',
+ 'nf.ClusterSummary',
+ 'nf.ClusterSearch',
+ 'nf.ng.AppConfig',
+ 'nf.ng.AppCtrl',
+ 'nf.ng.ServiceProvider',
+ 'nf.ng.Bridge',
+ 'nf.ErrorHandler',
+ 'nf.Storage',
+ 'nf.SummaryTable'],
+ function ($,
+ angular,
+ common,
+ clusterSummary,
+ clusterSearch,
+ appConfig,
+ appCtrl,
+ serviceProvider,
+ provenanceTable,
+ angularBridge,
+ errorHandler,
+ storage,
+ summaryTable) {
+ return (nf.Summary =
+ factory($,
+ angular,
+ common,
+ clusterSummary,
+ clusterSearch,
+ appConfig,
+ appCtrl,
+ serviceProvider,
+ angularBridge,
+ errorHandler,
+ storage,
+ summaryTable));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Summary =
+ factory(require('jquery'),
+ require('angular'),
+ require('nf.Common'),
+ require('nf.ClusterSummary'),
+ require('nf.ClusterSearch'),
+ require('nf.ng.AppConfig'),
+ require('nf.ng.AppCtrl'),
+ require('nf.ng.ServiceProvider'),
+ require('nf.ng.Bridge'),
+ require('nf.ErrorHandler'),
+ require('nf.Storage'),
+ require('nf.SummaryTable')));
+ } else {
+ nf.Summary = factory(root.$,
+ root.angular,
+ root.nf.Common,
+ root.nf.ClusterSummary,
+ root.nf.ClusterSearch,
+ root.nf.ng.AppConfig,
+ root.nf.ng.AppCtrl,
+ root.nf.ng.ServiceProvider,
+ root.nf.ng.Bridge,
+ root.nf.ErrorHandler,
+ root.nf.Storage,
+ root.nf.SummaryTable);
+ }
+}(this, function ($, angular, common, clusterSummary, clusterSearch, appConfig, appCtrl, serviceProvider, angularBridge, errorHandler, storage, summaryTable) {
+ 'use strict';
- //Define Dependency Injection Annotations
- nf.ng.AppConfig.$inject = ['$mdThemingProvider', '$compileProvider'];
- nf.ng.AppCtrl.$inject = ['$scope', 'serviceProvider'];
- nf.ng.ServiceProvider.$inject = [];
+ $(document).ready(function () {
+ //Create Angular App
+ var app = angular.module('ngSummaryApp', ['ngResource', 'ngRoute', 'ngMaterial', 'ngMessages']);
- //Configure Angular App
- app.config(nf.ng.AppConfig);
+ //Define Dependency Injection Annotations
+ appConfig.$inject = ['$mdThemingProvider', '$compileProvider'];
+ appCtrl.$inject = ['$scope', 'serviceProvider'];
+ serviceProvider.$inject = [];
- //Define Angular App Controllers
- app.controller('ngSummaryAppCtrl', nf.ng.AppCtrl);
+ //Configure Angular App
+ app.config(appConfig);
- //Define Angular App Services
- app.service('serviceProvider', nf.ng.ServiceProvider);
+ //Define Angular App Controllers
+ app.controller('ngSummaryAppCtrl', appCtrl);
- //Manually Boostrap Angular App
- nf.ng.Bridge.injector = angular.bootstrap($('body'), ['ngSummaryApp'], { strictDi: true });
+ //Define Angular App Services
+ app.service('serviceProvider', serviceProvider);
- // initialize the summary page
- nf.Summary.init();
-});
+ //Manually Boostrap Angular App
+ angularBridge.injector = angular.bootstrap($('body'), ['ngSummaryApp'], {strictDi: true});
-nf.Summary = (function () {
+ // initialize the summary page
+ clusterSummary.loadClusterSummary().done(function () {
+ nfSummary.init();
+ });
+ });
/**
* Configuration object used to hold a number of configuration items.
@@ -64,12 +136,16 @@ nf.Summary = (function () {
type: 'GET',
url: config.urls.clusterSummary
}).done(function (response) {
- nf.SummaryTable.init(response.clusterSummary.connectedToCluster).done(function () {
+ summaryTable.init(response.clusterSummary.connectedToCluster).done(function () {
+ // initialize the search field if applicable
+ if (response.clusterSummary.connectedToCluster) {
+ clusterSearch.init();
+ }
deferred.resolve();
}).fail(function () {
deferred.reject();
});
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
}).promise();
};
@@ -79,7 +155,9 @@ nf.Summary = (function () {
var initializeSummaryPage = function () {
// define mouse over event for the refresh buttons
$('#refresh-button').click(function () {
- nf.SummaryTable.loadSummaryTable();
+ clusterSummary.loadClusterSummary().done(function () {
+ summaryTable.loadSummaryTable();
+ });
});
// return a deferred for page initialization
@@ -92,8 +170,8 @@ nf.Summary = (function () {
dataType: 'json'
}).done(function (response) {
// ensure the banners response is specified
- if (nf.Common.isDefinedAndNotNull(response.banners)) {
- if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
+ if (common.isDefinedAndNotNull(response.banners)) {
+ if (common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
// update the header text
var bannerHeader = $('#banner-header').text(response.banners.headerText).show();
@@ -107,7 +185,7 @@ nf.Summary = (function () {
updateTop('summary');
}
- if (nf.Common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
+ if (common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
// update the footer text and show it
var bannerFooter = $('#banner-footer').text(response.banners.footerText).show();
@@ -123,7 +201,7 @@ nf.Summary = (function () {
deferred.resolve();
}).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
+ errorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
} else {
@@ -132,17 +210,17 @@ nf.Summary = (function () {
}).promise();
};
- return {
+ var nfSummary = {
/**
* Initializes the status page.
*/
init: function () {
- nf.Storage.init();
-
+ storage.init();
+
// intialize the summary table
initializeSummaryTable().done(function () {
// load the table
- nf.SummaryTable.loadSummaryTable().done(function () {
+ summaryTable.loadSummaryTable().done(function () {
// once the table is initialized, finish initializing the page
initializeSummaryPage().done(function () {
@@ -153,7 +231,7 @@ nf.Summary = (function () {
'height': $(window).height() + 'px',
'width': $(window).width() + 'px'
});
-
+
$('#summary').css('margin', 40);
$('div.summary-table').css('bottom', 127);
$('#flow-summary-refresh-container').css({
@@ -163,7 +241,7 @@ nf.Summary = (function () {
});
}
- nf.SummaryTable.resetTableSize();
+ summaryTable.resetTableSize();
};
// get the about details
@@ -181,15 +259,15 @@ nf.Summary = (function () {
// set the initial size
setBodySize();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
$(window).on('resize', function (e) {
setBodySize();
// resize dialogs when appropriate
var dialogs = $('.dialog');
for (var i = 0, len = dialogs.length; i < len; i++) {
- if ($(dialogs[i]).is(':visible')){
- setTimeout(function(dialog){
+ if ($(dialogs[i]).is(':visible')) {
+ setTimeout(function (dialog) {
dialog.modal('resize');
}, 50, $(dialogs[i]));
}
@@ -198,8 +276,8 @@ nf.Summary = (function () {
// resize grids when appropriate
var gridElements = $('*[class*="slickgrid_"]');
for (var j = 0, len = gridElements.length; j < len; j++) {
- if ($(gridElements[j]).is(':visible')){
- setTimeout(function(gridElement){
+ if ($(gridElements[j]).is(':visible')) {
+ setTimeout(function (gridElement) {
gridElement.data('gridInstance').resizeCanvas();
}, 50, $(gridElements[j]));
}
@@ -209,12 +287,12 @@ nf.Summary = (function () {
var tabsContainers = $('.tab-container');
var tabsContents = [];
for (var k = 0, len = tabsContainers.length; k < len; k++) {
- if ($(tabsContainers[k]).is(':visible')){
+ if ($(tabsContainers[k]).is(':visible')) {
tabsContents.push($('#' + $(tabsContainers[k]).attr('id') + '-content'));
}
}
$.each(tabsContents, function (index, tabsContent) {
- nf.Common.toggleScrollable(tabsContent.get(0));
+ common.toggleScrollable(tabsContent.get(0));
});
});
});
@@ -222,4 +300,6 @@ nf.Summary = (function () {
});
}
};
-}());
\ No newline at end of file
+
+ return nfSummary;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js
index 627bc05..33722b5 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js
@@ -15,9 +15,34 @@
* limitations under the License.
*/
-/* global nf, Slick */
-
-nf.TemplatesTable = (function () {
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'Slick',
+ 'nf.Common',
+ 'nf.Dialog',
+ 'nf.ErrorHandler'],
+ function ($, Slick, common, dialog, errorHandler) {
+ return (nf.TemplatesTable = factory($, Slick, common, dialog, errorHandler));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.TemplatesTable =
+ factory(require('jquery'),
+ require('Slick'),
+ require('nf.Common'),
+ require('nf.Dialog'),
+ require('nf.ErrorHandler')));
+ } else {
+ nf.TemplatesTable = factory(root.$,
+ root.Slick,
+ root.nf.Common,
+ root.nf.Dialog,
+ root.nf.ErrorHandler);
+ }
+}(this, function ($, Slick, common, dialog, errorHandler) {
+ 'use strict';
/**
* Configuration object used to hold a number of configuration items.
@@ -31,28 +56,28 @@ nf.TemplatesTable = (function () {
/**
* Sorts the specified data using the specified sort details.
- *
+ *
* @param {object} sortDetails
* @param {object} data
*/
var sort = function (sortDetails, data) {
// defines a function for sorting
var comparer = function (a, b) {
- if(a.permissions.canRead && b.permissions.canRead) {
+ if (a.permissions.canRead && b.permissions.canRead) {
if (sortDetails.columnId === 'timestamp') {
- var aDate = nf.Common.parseDateTime(a.template[sortDetails.columnId]);
- var bDate = nf.Common.parseDateTime(b.template[sortDetails.columnId]);
+ var aDate = common.parseDateTime(a.template[sortDetails.columnId]);
+ var bDate = common.parseDateTime(b.template[sortDetails.columnId]);
return aDate.getTime() - bDate.getTime();
} else {
- var aString = nf.Common.isDefinedAndNotNull(a.template[sortDetails.columnId]) ? a.template[sortDetails.columnId] : '';
- var bString = nf.Common.isDefinedAndNotNull(b.template[sortDetails.columnId]) ? b.template[sortDetails.columnId] : '';
+ var aString = common.isDefinedAndNotNull(a.template[sortDetails.columnId]) ? a.template[sortDetails.columnId] : '';
+ var bString = common.isDefinedAndNotNull(b.template[sortDetails.columnId]) ? b.template[sortDetails.columnId] : '';
return aString === bString ? 0 : aString > bString ? 1 : -1;
}
} else {
- if (!a.permissions.canRead && !b.permissions.canRead){
+ if (!a.permissions.canRead && !b.permissions.canRead) {
return 0;
}
- if(a.permissions.canRead){
+ if (a.permissions.canRead) {
return 1;
} else {
return -1;
@@ -66,14 +91,14 @@ nf.TemplatesTable = (function () {
/**
* Prompts the user before attempting to delete the specified template.
- *
+ *
* @argument {object} templateEntity The template
*/
var promptToDeleteTemplate = function (templateEntity) {
// prompt for deletion
- nf.Dialog.showYesNoDialog({
+ dialog.showYesNoDialog({
headerText: 'Delete Template',
- dialogContent: 'Delete template \'' + nf.Common.escapeHtml(templateEntity.template.name) + '\'?',
+ dialogContent: 'Delete template \'' + common.escapeHtml(templateEntity.template.name) + '\'?',
yesHandler: function () {
deleteTemplate(templateEntity);
}
@@ -82,14 +107,14 @@ nf.TemplatesTable = (function () {
/**
* Opens the access policies for the specified template.
- *
+ *
* @param templateEntity
*/
var openAccessPolicies = function (templateEntity) {
// only attempt this if we're within a frame
if (top !== window) {
// and our parent has canvas utils and shell defined
- if (nf.Common.isDefinedAndNotNull(parent.nf) && nf.Common.isDefinedAndNotNull(parent.nf.PolicyManagement) && nf.Common.isDefinedAndNotNull(parent.nf.Shell)) {
+ if (common.isDefinedAndNotNull(parent.nf) && common.isDefinedAndNotNull(parent.nf.PolicyManagement) && common.isDefinedAndNotNull(parent.nf.Shell)) {
parent.nf.PolicyManagement.showTemplatePolicy(templateEntity);
parent.$('#shell-close-button').click();
}
@@ -98,7 +123,7 @@ nf.TemplatesTable = (function () {
/**
* Deletes the template with the specified id.
- *
+ *
* @argument {string} templateEntity The template
*/
var deleteTemplate = function (templateEntity) {
@@ -110,10 +135,10 @@ nf.TemplatesTable = (function () {
var templatesGrid = $('#templates-table').data('gridInstance');
var templatesData = templatesGrid.getData();
templatesData.deleteItem(templateEntity.id);
-
+
// update the total number of templates
$('#total-templates').text(templatesData.getItems().length);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
};
/**
@@ -133,7 +158,7 @@ nf.TemplatesTable = (function () {
var templatesGrid = $('#templates-table').data('gridInstance');
// ensure the grid has been initialized
- if (nf.Common.isDefinedAndNotNull(templatesGrid)) {
+ if (common.isDefinedAndNotNull(templatesGrid)) {
var templatesData = templatesGrid.getData();
// update the search criteria
@@ -147,7 +172,7 @@ nf.TemplatesTable = (function () {
/**
* Performs the filtering.
- *
+ *
* @param {object} item The item subject to filtering
* @param {object} args Filter arguments
* @returns {Boolean} Whether or not to include the item
@@ -175,11 +200,11 @@ nf.TemplatesTable = (function () {
* @param {object} templateEntity The template
*/
var downloadTemplate = function (templateEntity) {
- nf.Common.getAccessToken(config.urls.downloadToken).done(function (downloadToken) {
+ common.getAccessToken(config.urls.downloadToken).done(function (downloadToken) {
var parameters = {};
// conditionally include the download token
- if (!nf.Common.isBlank(downloadToken)) {
+ if (!common.isBlank(downloadToken)) {
parameters['access_token'] = downloadToken;
}
@@ -190,7 +215,7 @@ nf.TemplatesTable = (function () {
window.open(templateEntity.template.uri + '/download' + '?' + $.param(parameters));
}
}).fail(function () {
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'Download Template',
dialogContent: 'Unable to generate access token for downloading content.'
});
@@ -210,12 +235,12 @@ nf.TemplatesTable = (function () {
// filter type
$('#templates-filter-type').combo({
options: [{
- text: 'by name',
- value: 'name'
- }, {
- text: 'by description',
- value: 'description'
- }],
+ text: 'by name',
+ value: 'name'
+ }, {
+ text: 'by description',
+ value: 'description'
+ }],
select: function (option) {
applyFilter();
}
@@ -242,7 +267,7 @@ nf.TemplatesTable = (function () {
return '';
}
- return nf.Common.formatValue(dataContext.template.description);
+ return common.formatValue(dataContext.template.description);
};
var groupIdFormatter = function (row, cell, value, columnDef, dataContext) {
@@ -266,9 +291,9 @@ nf.TemplatesTable = (function () {
markup += '<div title="Remove Template" class="pointer prompt-to-delete-template fa fa-trash" style="margin-top: 2px; margin-right: 3px;"></div>';
}
- // allow policy configuration conditionally
- if (top !== window && nf.Common.canAccessTenants()) {
- if (nf.Common.isDefinedAndNotNull(parent.nf) && nf.Common.isDefinedAndNotNull(parent.nf.Canvas) && parent.nf.Canvas.isConfigurableAuthorizer()) {
+ // allow policy configuration conditionally if embedded in
+ if (top !== window && common.canAccessTenants()) {
+ if (common.isDefinedAndNotNull(parent.nf) && common.isDefinedAndNotNull(parent.nf.Canvas) && parent.nf.Canvas.isConfigurableAuthorizer()) {
markup += '<div title="Access Policies" class="pointer edit-access-policies fa fa-key" style="margin-top: 2px;"></div>';
}
}
@@ -278,12 +303,48 @@ nf.TemplatesTable = (function () {
// initialize the templates table
var templatesColumns = [
- {id: 'timestamp', name: 'Date/Time', sortable: true, defaultSortAsc: false, resizable: false, formatter: timestampFormatter, width: 225, maxWidth: 225},
- {id: 'name', name: 'Name', sortable: true, resizable: true, formatter: nameFormatter},
- {id: 'description', name: 'Description', sortable: true, resizable: true, formatter: descriptionFormatter},
- {id: 'groupId', name: 'Process Group Id', sortable: true, resizable: true, formatter: groupIdFormatter},
- {id: 'actions', name: ' ', sortable: false, resizable: false, formatter: actionFormatter, width: 100, maxWidth: 100}
+ {
+ id: 'timestamp',
+ name: 'Date/Time',
+ sortable: true,
+ defaultSortAsc: false,
+ resizable: false,
+ formatter: timestampFormatter,
+ width: 225,
+ maxWidth: 225
+ },
+ {
+ id: 'name',
+ name: 'Name',
+ sortable: true,
+ resizable: true,
+ formatter: nameFormatter
+ },
+ {
+ id: 'description',
+ name: 'Description',
+ sortable: true,
+ resizable: true,
+ formatter: descriptionFormatter
+ },
+ {
+ id: 'groupId',
+ name: 'Process Group Id',
+ sortable: true,
+ resizable: true,
+ formatter: groupIdFormatter
+ },
+ {
+ id: 'actions',
+ name: ' ',
+ sortable: false,
+ resizable: false,
+ formatter: actionFormatter,
+ width: 100,
+ maxWidth: 100
+ }
];
+
var templatesOptions = {
forceFitColumns: true,
enableTextSelectionOnCells: true,
@@ -360,17 +421,17 @@ nf.TemplatesTable = (function () {
// initialize the number of displayed items
$('#displayed-templates').text('0');
},
-
+
/**
* Update the size of the grid based on its container's current size.
*/
resetTableSize: function () {
var templateGrid = $('#templates-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(templateGrid)) {
+ if (common.isDefinedAndNotNull(templateGrid)) {
templateGrid.resizeCanvas();
}
},
-
+
/**
* Load the processor templates table.
*/
@@ -381,7 +442,7 @@ nf.TemplatesTable = (function () {
dataType: 'json'
}).done(function (response) {
// ensure there are groups specified
- if (nf.Common.isDefinedAndNotNull(response.templates)) {
+ if (common.isDefinedAndNotNull(response.templates)) {
var templatesGrid = $('#templates-table').data('gridInstance');
var templatesData = templatesGrid.getData();
@@ -398,7 +459,7 @@ nf.TemplatesTable = (function () {
} else {
$('#total-templates').text('0');
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
}
};
-}());
\ No newline at end of file
+}));
\ No newline at end of file
[10/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-header-controller.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-header-controller.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-header-controller.js
index 3f9c5ea..903cea9 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-header-controller.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-header-controller.js
@@ -42,7 +42,7 @@ nf.ng.Canvas.HeaderCtrl = function (serviceProvider, toolboxCtrl, globalMenuCtrl
* Initialize the login controller.
*/
init: function () {
- var self = this;
+ var loginCtrl = this;
// if the user is not anonymous or accessing via http
if ($('#current-user').text() !== nf.Common.ANONYMOUS_USER_TEXT || location.protocol === 'http:') {
@@ -62,8 +62,8 @@ nf.ng.Canvas.HeaderCtrl = function (serviceProvider, toolboxCtrl, globalMenuCtrl
});
$.when(loginXhr).done(function (loginResult) {
- self.supportsLogin = loginResult.config.supportsLogin;
- }).fail(nf.Common.handleAjaxError);
+ loginCtrl.supportsLogin = loginResult.config.supportsLogin;
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
/**
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-funnel-component.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-funnel-component.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-funnel-component.js
index b35f209..334a3fe 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-funnel-component.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-funnel-component.js
@@ -107,7 +107,7 @@ nf.ng.FunnelComponent = function (serviceProvider) {
// update the birdseye
nf.Birdseye.refresh();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-group-component.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-group-component.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-group-component.js
index 01a1194..f654560 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-group-component.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-group-component.js
@@ -62,7 +62,7 @@ nf.ng.GroupComponent = function (serviceProvider) {
// update the birdseye
nf.Birdseye.refresh();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
function GroupComponent() {
@@ -178,14 +178,14 @@ nf.ng.GroupComponent = function (serviceProvider) {
* @argument {object} pt The point that the group was dropped.
*/
promptForGroupName: function (pt) {
- var self = this;
+ var groupComponent = this;
return $.Deferred(function (deferred) {
var addGroup = function () {
// get the name of the group and clear the textfield
var groupName = $('#new-process-group-name').val();
// hide the dialog
- self.modal.hide();
+ groupComponent.modal.hide();
// create the group and resolve the deferred accordingly
createGroup(groupName, pt).done(function (response) {
@@ -195,7 +195,7 @@ nf.ng.GroupComponent = function (serviceProvider) {
});
};
- self.modal.update('setButtonModel', [{
+ groupComponent.modal.update('setButtonModel', [{
buttonText: 'Add',
color: {
base: '#728E9B',
@@ -219,13 +219,13 @@ nf.ng.GroupComponent = function (serviceProvider) {
deferred.reject();
// close the dialog
- self.modal.hide();
+ groupComponent.modal.hide();
}
}
}]);
// show the dialog
- self.modal.show();
+ groupComponent.modal.show();
// set up the focus and key handlers
$('#new-process-group-name').focus().off('keyup').on('keyup', function (e) {
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-input-port-component.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-input-port-component.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-input-port-component.js
index 6ec1d6c..64d310e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-input-port-component.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-input-port-component.js
@@ -62,7 +62,7 @@ nf.ng.InputPortComponent = function (serviceProvider) {
// update the birdseye
nf.Birdseye.refresh();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
function InputPortComponent() {
@@ -178,13 +178,13 @@ nf.ng.InputPortComponent = function (serviceProvider) {
* @argument {object} pt The point that the input port was dropped.
*/
promptForInputPortName: function (pt) {
- var self = this;
+ var inputPortComponent = this;
var addInputPort = function () {
// get the name of the input port and clear the textfield
var portName = $('#new-port-name').val();
// hide the dialog
- self.modal.hide();
+ inputPortComponent.modal.hide();
// create the input port
createInputPort(portName, pt);
@@ -210,7 +210,7 @@ nf.ng.InputPortComponent = function (serviceProvider) {
},
handler: {
click: function () {
- self.modal.hide();
+ inputPortComponent.modal.hide();
}
}
}]);
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-label-component.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-label-component.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-label-component.js
index a0fabb3..a77739e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-label-component.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-label-component.js
@@ -109,7 +109,7 @@ nf.ng.LabelComponent = function (serviceProvider) {
// update the birdseye
nf.Birdseye.refresh();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-output-port-component.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-output-port-component.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-output-port-component.js
index 7c37bfa..d856691 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-output-port-component.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-output-port-component.js
@@ -62,7 +62,7 @@ nf.ng.OutputPortComponent = function (serviceProvider) {
// update the birdseye
nf.Birdseye.refresh();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
function OutputPortComponent() {
@@ -169,13 +169,13 @@ nf.ng.OutputPortComponent = function (serviceProvider) {
* @argument {object} pt The point that the output port was dropped.
*/
promptForOutputPortName: function (pt) {
- var self = this;
+ var outputPortComponent = this;
var addOutputPort = function () {
// get the name of the output port and clear the textfield
var portName = $('#new-port-name').val();
// hide the dialog
- self.modal.hide();
+ outputPortComponent.modal.hide();
// create the output port
createOutputPort(portName, pt);
@@ -201,7 +201,7 @@ nf.ng.OutputPortComponent = function (serviceProvider) {
},
handler: {
click: function () {
- self.modal.hide();
+ outputPortComponent.modal.hide();
}
}
}]);
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js
index 21e76f5..ad011ca 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js
@@ -235,7 +235,7 @@ nf.ng.ProcessorComponent = function (serviceProvider) {
// update the birdseye
nf.Birdseye.refresh();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
@@ -269,9 +269,23 @@ nf.ng.ProcessorComponent = function (serviceProvider) {
init: function () {
// initialize the processor type table
var processorTypesColumns = [
- {id: 'type', name: 'Type', field: 'label', formatter: nf.Common.typeFormatter, sortable: true, resizable: true},
- {id: 'tags', name: 'Tags', field: 'tags', sortable: true, resizable: true}
+ {
+ id: 'type',
+ name: 'Type',
+ field: 'label',
+ formatter: nf.Common.typeFormatter,
+ sortable: true,
+ resizable: true
+ },
+ {
+ id: 'tags',
+ name: 'Tags',
+ field: 'tags',
+ sortable: true,
+ resizable: true
+ }
];
+
var processorTypesOptions = {
forceFitColumns: true,
enableTextSelectionOnCells: true,
@@ -426,7 +440,7 @@ nf.ng.ProcessorComponent = function (serviceProvider) {
select: applyFilter,
remove: applyFilter
});
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
},
@@ -443,8 +457,6 @@ nf.ng.ProcessorComponent = function (serviceProvider) {
* Initialize the modal.
*/
init: function () {
- var self = this;
-
this.filter.init();
// configure the new processor dialog
@@ -539,7 +551,7 @@ nf.ng.ProcessorComponent = function (serviceProvider) {
* @argument {object} pt The point that the processor was dropped
*/
promptForProcessorType: function (pt) {
- var self = this;
+ var processorComponent = this;
// handles adding the selected processor at the specified point
var addProcessor = function () {
@@ -559,7 +571,7 @@ nf.ng.ProcessorComponent = function (serviceProvider) {
}
// hide the dialog
- self.modal.hide();
+ processorComponent.modal.hide();
};
// get the grid reference
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-remote-process-group-component.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-remote-process-group-component.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-remote-process-group-component.js
index 90e67b6..8985f16 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-remote-process-group-component.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-remote-process-group-component.js
@@ -88,7 +88,7 @@ nf.ng.RemoteProcessGroupComponent = function (serviceProvider) {
headerText: 'Configuration Error'
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
});
};
@@ -230,7 +230,7 @@ nf.ng.RemoteProcessGroupComponent = function (serviceProvider) {
* @argument {object} pt The point that the remote group was dropped.
*/
promptForRemoteProcessGroupUri: function (pt) {
- var self = this;
+ var remoteProcessGroupComponent = this;
var addRemoteProcessGroup = function () {
// create the remote process group
createRemoteProcessGroup(pt);
@@ -256,7 +256,7 @@ nf.ng.RemoteProcessGroupComponent = function (serviceProvider) {
},
handler: {
click: function () {
- self.modal.hide();
+ remoteProcessGroupComponent.modal.hide();
}
}
}]);
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-template-component.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-template-component.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-template-component.js
index c671a1c..a4945f6 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-template-component.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-template-component.js
@@ -51,7 +51,7 @@ nf.ng.TemplateComponent = function (serviceProvider) {
// update the birdseye
nf.Birdseye.refresh();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
function TemplateComponent() {
@@ -162,7 +162,7 @@ nf.ng.TemplateComponent = function (serviceProvider) {
* @argument {object} pt The point that the template was dropped.
*/
promptForTemplate: function (pt) {
- var self = this;
+ var templateComponent = this;
$.ajax({
type: 'GET',
url: serviceProvider.headerCtrl.toolboxCtrl.config.urls.api + '/flow/templates',
@@ -197,7 +197,7 @@ nf.ng.TemplateComponent = function (serviceProvider) {
});
// update the button model
- self.modal.update('setButtonModel', [{
+ templateComponent.modal.update('setButtonModel', [{
buttonText: 'Add',
color: {
base: '#728E9B',
@@ -211,7 +211,7 @@ nf.ng.TemplateComponent = function (serviceProvider) {
var templateId = selectedOption.value;
// hide the dialog
- self.modal.hide();
+ templateComponent.modal.hide();
// instantiate the specified template
createTemplate(templateId, pt);
@@ -227,13 +227,13 @@ nf.ng.TemplateComponent = function (serviceProvider) {
},
handler: {
click: function () {
- self.modal.hide();
+ templateComponent.modal.hide();
}
}
}]);
// show the dialog
- self.modal.show();
+ templateComponent.modal.show();
} else {
nf.Dialog.showOkDialog({
headerText: 'Instantiate Template',
@@ -241,7 +241,7 @@ nf.ng.TemplateComponent = function (serviceProvider) {
});
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
index b27e291..52786b6 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
@@ -827,7 +827,7 @@ nf.Actions = (function () {
nf.Birdseye.refresh();
// inform Angular app values have changed
nf.ng.Bridge.digest();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
} else {
// create a snippet for the specified component and link to the data flow
var snippet = nf.Snippet.marshal(selection);
@@ -877,8 +877,8 @@ nf.Actions = (function () {
// inform Angular app values have changed
nf.ng.Bridge.digest();
- }).fail(nf.Common.handleAjaxError);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
}
},
@@ -1033,7 +1033,7 @@ nf.Actions = (function () {
processDropRequest(nextDelay);
}).fail(function (xhr, status, error) {
if (xhr.status === 403) {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
} else {
completeDropRequest()
}
@@ -1058,7 +1058,7 @@ nf.Actions = (function () {
processDropRequest(1);
}).fail(function (xhr, status, error) {
if (xhr.status === 403) {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
} else {
completeDropRequest()
}
@@ -1417,8 +1417,8 @@ nf.Actions = (function () {
// clear the template dialog fields
$('#new-template-name').val('');
$('#new-template-description').val('');
- }).fail(nf.Common.handleAjaxError);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
}
}, {
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-error-handler.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-error-handler.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-error-handler.js
new file mode 100644
index 0000000..88dc4ec
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-error-handler.js
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['nf.ErrorHandler', 'nf.Common', 'nf.Canvas', 'nf.ContextMenu'], function (ajaxErrorHandler, common, canvas, contextMenu) {
+ return (nf.ErrorHandler = factory(ajaxErrorHandler, common, canvas, contextMenu));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ErrorHandler = factory(require('nf.ErrorHandler'), require('nf.Common'), require('nf.Canvas'), require('nf.ContextMenu')));
+ } else {
+ nf.ErrorHandler = factory(root.nf.ErrorHandler, root.nf.Common, root.nf.Canvas, root.nf.ContextMenu);
+ }
+}(this, function (ajaxErrorHandler, common, canvas, contextMenu) {
+ 'use strict';
+
+ return {
+ /**
+ * Method for handling ajax errors. This also closes the canvas.
+ *
+ * @argument {object} xhr The XmlHttpRequest
+ * @argument {string} status The status of the request
+ * @argument {string} error The error
+ */
+ handleAjaxError: function (xhr, status, error) {
+ ajaxErrorHandler.handleAjaxError(xhr, status, error);
+ common.showLogoutLink();
+
+ // hide the splash screen if required
+ if ($('#splash').is(':visible')) {
+ canvas.hideSplash();
+ }
+
+ // hide the context menu
+ contextMenu.hide();
+
+ // shut off the auto refresh
+ canvas.stopPolling();
+
+ // allow page refresh with ctrl-r
+ canvas.disableRefreshHotKey();
+ }
+ };
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
index c118ece..be4dde8 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
@@ -117,8 +117,6 @@ nf.Canvas = (function () {
var groupName = null;
var permissions = null;
var parentGroupId = null;
- var clustered = false;
- var connectedToCluster = false;
var configurableAuthorizer = false;
var svg = null;
var canvas = null;
@@ -134,9 +132,7 @@ nf.Canvas = (function () {
kerberos: '../nifi-api/access/kerberos',
revision: '../nifi-api/flow/revision',
banners: '../nifi-api/flow/banners',
- flowConfig: '../nifi-api/flow/config',
- clusterSummary: '../nifi-api/flow/cluster/summary',
- cluster: '../nifi-api/controller/cluster'
+ flowConfig: '../nifi-api/flow/config'
}
};
@@ -659,7 +655,7 @@ nf.Canvas = (function () {
// update the graph dimensions
updateGraphSize();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
@@ -720,7 +716,7 @@ nf.Canvas = (function () {
// update the birdseye
nf.Birdseye.refresh();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
@@ -740,19 +736,6 @@ nf.Canvas = (function () {
});
};
- /**
- * Loads the flow configuration and updated the cluster state.
- *
- * @returns xhr
- */
- var loadClusterSummary = function () {
- return $.ajax({
- type: 'GET',
- url: config.urls.clusterSummary,
- dataType: 'json'
- });
- };
-
return {
CANVAS_OFFSET: 0,
@@ -800,15 +783,11 @@ nf.Canvas = (function () {
}).done(function (response) {
nf.ng.Bridge.injector.get('flowStatusCtrl').updateBulletins(response);
});
- var clusterSummary = loadClusterSummary().done(function (response) {
+ var clusterSummary = nf.ClusterSummary.loadClusterSummary().done(function (response) {
var clusterSummary = response.clusterSummary;
// update the cluster summary
nf.ng.Bridge.injector.get('flowStatusCtrl').updateClusterSummary(clusterSummary);
-
- // update the clustered flag
- clustered = clusterSummary.clustered;
- connectedToCluster = clusterSummary.connectedToCluster;
});
// wait for all requests to complete
@@ -825,26 +804,6 @@ nf.Canvas = (function () {
},
/**
- * Shows a message when disconnected from the cluster.
- */
- showDisconnectedFromClusterMessage: function () {
- nf.Dialog.showOkDialog({
- headerText: 'Cluster Connection',
- dialogContent: 'This node is currently not connected to the cluster. Any modifications to the data flow made here will not replicate across the cluster.'
- });
- },
-
- /**
- * Shows a message when connected to the cluster.
- */
- showConnectedToClusterMessage: function () {
- nf.Dialog.showOkDialog({
- headerText: 'Cluster Connection',
- dialogContent: 'This node just joined the cluster. Any modifications to the data flow made here will replicate across the cluster.'
- });
- },
-
- /**
* Initialize NiFi.
*/
init: function () {
@@ -909,13 +868,9 @@ nf.Canvas = (function () {
dataType: 'json'
});
- // get the initial cluster summary
- var clusterSummary = loadClusterSummary();
-
// ensure the config requests are loaded
- $.when(configXhr, clusterSummary, userXhr, clientXhr).done(function (configResult, clusterSummaryResult) {
+ $.when(configXhr, nf.ClusterSummary.loadClusterSummary(), userXhr, clientXhr).done(function (configResult) {
var configResponse = configResult[0];
- var clusterSummaryResponse = clusterSummaryResult[0];
// calculate the canvas offset
var canvasContainer = $('#canvas-container');
@@ -923,20 +878,12 @@ nf.Canvas = (function () {
// get the config details
var configDetails = configResponse.flowConfiguration;
- var clusterSummary = clusterSummaryResponse.clusterSummary;
// show disconnected message on load if necessary
- if (clusterSummary.clustered && !clusterSummary.connectedToCluster) {
- nf.Canvas.showDisconnectedFromClusterMessage();
+ if (nf.ClusterSummary.isClustered() && !nf.ClusterSummary.isConnectedToCluster()) {
+ nf.Dialog.showDisconnectedFromClusterMessage();
}
- // establish the initial cluster state
- clustered = clusterSummary.clustered;
- connectedToCluster = clusterSummary.connectedToCluster;
-
- // update the cluster summary
- nf.ng.Bridge.injector.get('flowStatusCtrl').updateClusterSummary(clusterSummary);
-
// get the auto refresh interval
var autoRefreshIntervalSeconds = parseInt(configDetails.autoRefreshIntervalSeconds, 10);
@@ -978,7 +925,7 @@ nf.Canvas = (function () {
nf.RemoteProcessGroupPorts.init();
nf.PortConfiguration.init();
nf.LabelConfiguration.init();
- nf.ProcessorDetails.init();
+ nf.ProcessorDetails.init(true);
nf.PortDetails.init();
nf.ConnectionDetails.init();
nf.RemoteProcessGroupDetails.init();
@@ -996,27 +943,9 @@ nf.Canvas = (function () {
// hide the splash screen
nf.Canvas.hideSplash();
- }).fail(nf.Common.handleAjaxError);
- }).fail(nf.Common.handleAjaxError);
- }).fail(nf.Common.handleAjaxError);
- },
-
- /**
- * Return whether this instance of NiFi is clustered.
- *
- * @returns {Boolean}
- */
- isClustered: function () {
- return clustered === true;
- },
-
- /**
- * Return whether this instance is connected to a cluster.
- *
- * @returns {boolean}
- */
- isConnectedToCluster: function () {
- return connectedToCluster === true;
+ }).fail(nf.ErrorHandler.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
/**
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js
index c71981e..0d5c198 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js
@@ -253,7 +253,7 @@ nf.ComponentState = (function () {
// reload the table with no state
loadComponentState()
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
} else {
nf.Dialog.showOkDialog({
headerText: 'Component State',
@@ -265,12 +265,24 @@ nf.ComponentState = (function () {
// initialize the queue listing table
var componentStateColumns = [
- {id: 'key', field: 'key', name: 'Key', sortable: true, resizable: true},
- {id: 'value', field: 'value', name: 'Value', sortable: true, resizable: true}
+ {
+ id: 'key',
+ field: 'key',
+ name: 'Key',
+ sortable: true,
+ resizable: true
+ },
+ {
+ id: 'value',
+ field: 'value',
+ name: 'Value',
+ sortable: true,
+ resizable: true
+ }
];
// conditionally show the cluster node identifier
- if (nf.Canvas.isClustered()) {
+ if (nf.ClusterSummary.isClustered()) {
componentStateColumns.push({
id: 'scope',
field: 'scope',
@@ -378,7 +390,7 @@ nf.ComponentState = (function () {
// reset the grid size
var componentStateGrid = componentStateTable.data('gridInstance');
componentStateGrid.resizeCanvas();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
};
}());
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js
index 74fc03d..df943fb 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js
@@ -340,7 +340,7 @@ nf.ConnectionConfiguration = (function () {
}
}).fail(function (xhr, status, error) {
// handle the error
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
@@ -416,7 +416,7 @@ nf.ConnectionConfiguration = (function () {
}
}).fail(function (xhr, status, error) {
// handle the error
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
@@ -565,7 +565,7 @@ nf.ConnectionConfiguration = (function () {
}
}).fail(function (xhr, status, error) {
// handle the error
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
@@ -641,7 +641,7 @@ nf.ConnectionConfiguration = (function () {
}
}).fail(function (xhr, status, error) {
// handle the error
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
deferred.reject();
});
@@ -926,7 +926,7 @@ nf.ConnectionConfiguration = (function () {
nf.Birdseye.refresh();
}).fail(function (xhr, status, error) {
// handle the error
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
});
}
};
@@ -1000,7 +1000,7 @@ nf.ConnectionConfiguration = (function () {
dialogContent: nf.Common.escapeHtml(xhr.responseText),
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
});
} else {
@@ -1179,7 +1179,7 @@ nf.ConnectionConfiguration = (function () {
opacity: 0.6
});
$('#prioritizer-available, #prioritizer-selected').disableSelection();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
/**
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js
index a6bbef7..e6252cb 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js
@@ -1483,7 +1483,7 @@ nf.Connection = (function () {
dialogContent: nf.Common.escapeHtml(xhr.responseText)
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
});
};
@@ -1706,7 +1706,7 @@ nf.Connection = (function () {
'updateLabel': false
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
});
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
index aee3622..444fe52 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
@@ -52,7 +52,7 @@ nf.ControllerService = (function () {
headerText: 'Controller Service'
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
};
@@ -140,7 +140,7 @@ nf.ControllerService = (function () {
dataType: 'json'
}).done(function (response) {
renderControllerService(serviceTable, response);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
@@ -583,7 +583,7 @@ nf.ControllerService = (function () {
sourceId: ids
},
dataType: 'json'
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
@@ -612,7 +612,7 @@ nf.ControllerService = (function () {
contentType: 'application/json'
}).done(function (response) {
renderControllerService(serviceTable, response);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
// wait until the polling of each service finished
return $.Deferred(function (deferred) {
@@ -730,7 +730,7 @@ nf.ControllerService = (function () {
data: JSON.stringify(referenceEntity),
dataType: 'json',
contentType: 'application/json'
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
// Note: updated revisions will be retrieved after updateReferencingSchedulableComponents is invoked
@@ -810,7 +810,7 @@ nf.ControllerService = (function () {
conditionMet(serviceResponse.component, bulletinResponse.bulletinBoard.bulletins);
}).fail(function (xhr, status, error) {
deferred.reject();
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
});
};
@@ -832,7 +832,7 @@ nf.ControllerService = (function () {
conditionMet(controllerService, response.bulletinBoard.bulletins);
}).fail(function (xhr, status, error) {
deferred.reject();
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
});
}).promise();
};
@@ -1002,7 +1002,7 @@ nf.ControllerService = (function () {
data: JSON.stringify(referenceEntity),
dataType: 'json',
contentType: 'application/json'
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
// Note: updated revisions will be retrieved after updateReferencingServices is invoked
@@ -1448,7 +1448,7 @@ nf.ControllerService = (function () {
propertyName: propertyName
},
dataType: 'json'
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
@@ -1737,6 +1737,7 @@ nf.ControllerService = (function () {
// initialize the property table
$('#controller-service-properties').propertytable('destroy').propertytable({
readOnly: false,
+ supportsGoTo: true,
dialogContainer: '#new-controller-service-property-container',
descriptorDeferred: getControllerServicePropertyDescriptor,
controllerServiceCreatedDeferred: function(response) {
@@ -1909,7 +1910,7 @@ nf.ControllerService = (function () {
updateReferencingComponentsBorder(referenceContainer);
$('#controller-service-properties').propertytable('resetTableSize');
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
/**
@@ -1927,6 +1928,7 @@ nf.ControllerService = (function () {
// initialize the property table
$('#controller-service-properties').propertytable('destroy').propertytable({
+ supportsGoTo: true,
readOnly: true
});
@@ -2108,7 +2110,7 @@ nf.ControllerService = (function () {
if (controllerServiceEntity.permissions.canRead) {
reloadControllerServiceReferences(serviceTable, controllerServiceEntity.component);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
};
}());
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js
index 5fdc8c9..5010013 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js
@@ -252,7 +252,7 @@ nf.ControllerServices = (function () {
var row = controllerServicesData.getRowById(controllerServiceEntity.id);
controllerServicesGrid.setSelectedRows([row]);
controllerServicesGrid.scrollRowIntoView(row);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
// hide the dialog
$('#new-controller-service-dialog').modal('hide');
@@ -266,8 +266,21 @@ nf.ControllerServices = (function () {
var initNewControllerServiceDialog = function () {
// initialize the processor type table
var controllerServiceTypesColumns = [
- {id: 'type', name: 'Type', field: 'label', formatter: nf.Common.typeFormatter, sortable: false, resizable: true},
- {id: 'tags', name: 'Tags', field: 'tags', sortable: false, resizable: true}
+ {
+ id: 'type',
+ name: 'Type',
+ field: 'label',
+ formatter: nf.Common.typeFormatter,
+ sortable: false,
+ resizable: true
+ },
+ {
+ id: 'tags',
+ name: 'Tags',
+ field: 'tags',
+ sortable: false,
+ resizable: true
+ }
];
// initialize the dataview
@@ -403,7 +416,7 @@ nf.ControllerServices = (function () {
select: applyControllerServiceTypeFilter,
remove: applyControllerServiceTypeFilter
});
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
// initialize the controller service dialog
$('#new-controller-service-dialog').modal({
@@ -651,11 +664,44 @@ nf.ControllerServices = (function () {
// define the column model for the controller services table
var controllerServicesColumns = [
- {id: 'moreDetails', name: ' ', resizable: false, formatter: moreControllerServiceDetails, sortable: true, width: 90, maxWidth: 90, toolTip: 'Sorts based on presence of bulletins'},
- {id: 'name', name: 'Name', formatter: nameFormatter, sortable: true, resizable: true},
- {id: 'type', name: 'Type', formatter: typeFormatter, sortable: true, resizable: true},
- {id: 'state', name: 'State', formatter: controllerServiceStateFormatter, sortable: true, resizeable: true},
- {id: 'parentGroupId', name: 'Process Group', formatter: groupIdFormatter, sortable: true, resizeable: true}
+ {
+ id: 'moreDetails',
+ name: ' ',
+ resizable: false,
+ formatter: moreControllerServiceDetails,
+ sortable: true,
+ width: 90,
+ maxWidth: 90,
+ toolTip: 'Sorts based on presence of bulletins'
+ },
+ {
+ id: 'name',
+ name: 'Name',
+ formatter: nameFormatter,
+ sortable: true,
+ resizable: true
+ },
+ {
+ id: 'type',
+ name: 'Type',
+ formatter: typeFormatter,
+ sortable: true,
+ resizable: true
+ },
+ {
+ id: 'state',
+ name: 'State',
+ formatter: controllerServiceStateFormatter,
+ sortable: true,
+ resizeable: true
+ },
+ {
+ id: 'parentGroupId',
+ name: 'Process Group',
+ formatter: groupIdFormatter,
+ sortable: true,
+ resizeable: true
+ }
];
// action column should always be last
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-custom-ui.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-custom-ui.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-custom-ui.js
index fafc76f..4d82308 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-custom-ui.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-custom-ui.js
@@ -15,48 +15,74 @@
* limitations under the License.
*/
-/* global nf */
+/* global nf, define, module, require, exports */
-nf.CustomUi = {
- /**
- * Shows the custom ui.
- *
- * @argument {object} entity The component id
- * @arugment {string} uri The custom ui uri
- * @argument {boolean} editable Whether the custom ui should support editing
- */
- showCustomUi: function (entity, uri, editable) {
- return $.Deferred(function (deferred) {
- nf.Common.getAccessToken('../nifi-api/access/ui-extension-token').done(function (uiExtensionToken) {
- // record the processor id
- $('#shell-close-button');
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.Shell',
+ 'nf.Dialog',
+ 'nf.Client'], function ($, common, shell, dialog, client) {
+ return (nf.CustomUi = factory($, common, shell, dialog, client));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.CustomUi = factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.Shell'),
+ require('nf.Dialog'),
+ require('nf.Client')));
+ } else {
+ nf.CustomUi = factory(root.$,
+ root.nf.Common,
+ root.nf.Shell,
+ root.nf.Dialog,
+ root.nf.Client);
+ }
+}(this, function ($, common, shell, dialog, client) {
+ 'use strict';
+
+ return {
+ /**
+ * Shows the custom ui.
+ *
+ * @argument {object} entity The component id
+ * @arugment {string} uri The custom ui uri
+ * @argument {boolean} editable Whether the custom ui should support editing
+ */
+ showCustomUi: function (entity, uri, editable) {
+ return $.Deferred(function (deferred) {
+ common.getAccessToken('../nifi-api/access/ui-extension-token').done(function (uiExtensionToken) {
+ // record the processor id
+ $('#shell-close-button');
- var revision = nf.Client.getRevision(entity);
+ var revision = client.getRevision(entity);
- // build the customer ui params
- var customUiParams = {
- 'id': entity.id,
- 'revision': revision.version,
- 'clientId': revision.clientId,
- 'editable': editable
- };
+ // build the customer ui params
+ var customUiParams = {
+ 'id': entity.id,
+ 'revision': revision.version,
+ 'clientId': revision.clientId,
+ 'editable': editable
+ };
- // conditionally include the ui extension token
- if (!nf.Common.isBlank(uiExtensionToken)) {
- customUiParams['access_token'] = uiExtensionToken;
- }
+ // conditionally include the ui extension token
+ if (!common.isBlank(uiExtensionToken)) {
+ customUiParams['access_token'] = uiExtensionToken;
+ }
- // show the shell
- nf.Shell.showPage('..' + uri + '?' + $.param(customUiParams), false).done(function () {
+ // show the shell
+ shell.showPage('..' + uri + '?' + $.param(customUiParams), false).done(function () {
+ deferred.resolve();
+ });
+ }).fail(function () {
+ dialog.showOkDialog({
+ headerText: 'Advanced Configuration',
+ dialogContent: 'Unable to generate access token for accessing the advanced configuration dialog.'
+ });
deferred.resolve();
});
- }).fail(function () {
- nf.Dialog.showOkDialog({
- headerText: 'Advanced Configuration',
- dialogContent: 'Unable to generate access token for accessing the advanced configuration dialog.'
- });
- deferred.resolve();
- });
- }).promise();
+ }).promise();
+ }
}
-};
\ No newline at end of file
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js
index 08b4590..a771fc5 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js
@@ -248,7 +248,7 @@ nf.Draggable = (function () {
dialogContent: nf.Common.escapeHtml(xhr.responseText)
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
deferred.reject();
@@ -309,7 +309,7 @@ nf.Draggable = (function () {
dialogContent: nf.Common.escapeHtml(xhr.responseText)
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
deferred.reject();
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-go-to.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-go-to.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-go-to.js
index 2b23b1a..5e387ef 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-go-to.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-go-to.js
@@ -683,7 +683,7 @@ nf.GoTo = (function () {
// show the upstream dialog
$('#connections-dialog').modal('setHeaderText', 'Upstream Connections').modal('show');
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
/**
@@ -734,7 +734,7 @@ nf.GoTo = (function () {
// show the downstream dialog
$('#connections-dialog').modal('setHeaderText', 'Downstream Connections').modal('show');
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
/**
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label-configuration.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label-configuration.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label-configuration.js
index 8963fa4..0eba38e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label-configuration.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label-configuration.js
@@ -71,7 +71,7 @@ nf.LabelConfiguration = (function () {
// inform Angular app values have changed
nf.ng.Bridge.digest();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
// reset and hide the dialog
this.modal('hide');
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-policy-management.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-policy-management.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-policy-management.js
index dc40c95..b19d033 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-policy-management.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-policy-management.js
@@ -129,11 +129,11 @@ nf.PolicyManagement = (function () {
var allowedGroups = getAllAllowedGroups();
var allowedUsers = getAllAllowedUsers();
- var self = this;
+ var nfUserSearchAutocomplete = this;
$.each(searchResults.userGroups, function (_, tenant) {
// see if this match is not already selected
if ($.inArray(tenant.id, allowedGroups) === -1) {
- self._renderGroup(ul, $.extend({
+ nfUserSearchAutocomplete._renderGroup(ul, $.extend({
type: 'group'
}, tenant));
}
@@ -141,7 +141,7 @@ nf.PolicyManagement = (function () {
$.each(searchResults.users, function (_, tenant) {
// see if this match is not already selected
if ($.inArray(tenant.id, allowedUsers) === -1) {
- self._renderUser(ul, $.extend({
+ nfUserSearchAutocomplete._renderUser(ul, $.extend({
type: 'user'
}, tenant));
}
@@ -504,9 +504,24 @@ nf.PolicyManagement = (function () {
// initialize the templates table
var usersColumns = [
- {id: 'identity', name: 'User', sortable: true, resizable: true, formatter: identityFormatter},
- {id: 'actions', name: ' ', sortable: false, resizable: false, formatter: actionFormatter, width: 100, maxWidth: 100}
+ {
+ id: 'identity',
+ name: 'User',
+ sortable: true,
+ resizable: true,
+ formatter: identityFormatter
+ },
+ {
+ id: 'actions',
+ name: ' ',
+ sortable: false,
+ resizable: false,
+ formatter: actionFormatter,
+ width: 100,
+ maxWidth: 100
+ }
];
+
var usersOptions = {
forceFitColumns: true,
enableTextSelectionOnCells: true,
@@ -669,7 +684,7 @@ nf.PolicyManagement = (function () {
}).done(function () {
loadPolicy();
}).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
resetPolicy();
loadPolicy();
});
@@ -896,7 +911,7 @@ nf.PolicyManagement = (function () {
resetPolicy();
deferred.reject();
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
});
}).promise();
@@ -954,7 +969,7 @@ nf.PolicyManagement = (function () {
resetPolicy();
deferred.reject();
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
});
}).promise();
@@ -1022,7 +1037,7 @@ nf.PolicyManagement = (function () {
resetPolicy();
loadPolicy();
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
@@ -1077,7 +1092,7 @@ nf.PolicyManagement = (function () {
loadPolicy();
}
}).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
resetPolicy();
loadPolicy();
}).always(function () {
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port-configuration.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port-configuration.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port-configuration.js
index 420febb..a49290a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port-configuration.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port-configuration.js
@@ -103,7 +103,7 @@ nf.PortConfiguration = (function () {
$('#port-configuration').modal('hide');
// handle the error
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
});
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js
index aa37034..7311f07 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group-configuration.js
@@ -86,7 +86,7 @@ nf.ProcessGroupConfiguration = (function () {
});
nf.Canvas.reload();
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
@@ -179,7 +179,7 @@ nf.ProcessGroupConfiguration = (function () {
// update the current time
$('#process-group-configuration-last-refreshed').text(controllerServicesResponse.currentTime);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
index a9a51f5..bf13707 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
@@ -87,7 +87,7 @@ nf.ProcessorConfiguration = (function () {
text: 'Primary node',
value: 'PRIMARY',
description: 'Processor will be scheduled to run only on the primary node',
- disabled: !nf.Canvas.isClustered() && processor.config['executionNode'] === 'PRIMARY'
+ disabled: !nf.ClusterSummary.isClustered() && processor.config['executionNode'] === 'PRIMARY'
}];
};
@@ -114,7 +114,7 @@ nf.ProcessorConfiguration = (function () {
headerText: 'Processor Configuration'
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
};
@@ -562,6 +562,7 @@ nf.ProcessorConfiguration = (function () {
// initialize the property table
$('#processor-properties').propertytable({
readOnly: false,
+ supportsGoTo: true,
dialogContainer: '#new-processor-property-container',
descriptorDeferred: function (propertyName) {
var processor = $('#processor-configuration').data('processorDetails');
@@ -573,7 +574,7 @@ nf.ProcessorConfiguration = (function () {
propertyName: propertyName
},
dataType: 'json'
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
goToServiceDeferred: goToServiceFromProperty
});
@@ -689,7 +690,7 @@ nf.ProcessorConfiguration = (function () {
});
// show the execution node option if we're cluster or we're currently configured to run on the primary node only
- if (nf.Canvas.isClustered() || executionNode === 'PRIMARY') {
+ if (nf.ClusterSummary.isClustered() || executionNode === 'PRIMARY') {
$('#execution-node-options').show();
} else {
$('#execution-node-options').hide();
@@ -852,7 +853,7 @@ nf.ProcessorConfiguration = (function () {
if (processorRelationships.is(':visible') && processorRelationships.get(0).scrollHeight > processorRelationships.innerHeight()) {
processorRelationships.css('border-width', '1px');
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
}
};
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js
index 641fc6f..0dac31a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js
@@ -316,7 +316,7 @@ nf.QueueListing = (function () {
}).done(function (response) {
listingRequest = response.listingRequest;
processListingRequest(nextDelay);
- }).fail(completeListingRequest).fail(nf.Common.handleAjaxError);
+ }).fail(completeListingRequest).fail(nf.ErrorHandler.handleAjaxError);
};
// issue the request to list the flow files
@@ -335,7 +335,7 @@ nf.QueueListing = (function () {
// process the drop request
listingRequest = response.listingRequest;
processListingRequest(1);
- }).fail(completeListingRequest).fail(nf.Common.handleAjaxError);
+ }).fail(completeListingRequest).fail(nf.ErrorHandler.handleAjaxError);
}).promise();
};
@@ -436,7 +436,7 @@ nf.QueueListing = (function () {
// show the dialog
$('#flowfile-details-dialog').modal('show');
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
return {
@@ -496,8 +496,20 @@ nf.QueueListing = (function () {
width: 75,
maxWidth: 75
},
- {id: 'uuid', name: 'UUID', field: 'uuid', sortable: false, resizable: true},
- {id: 'filename', name: 'Filename', field: 'filename', sortable: false, resizable: true},
+ {
+ id: 'uuid',
+ name: 'UUID',
+ field: 'uuid',
+ sortable: false,
+ resizable: true
+ },
+ {
+ id: 'filename',
+ name: 'Filename',
+ field: 'filename',
+ sortable: false,
+ resizable: true
+ },
{
id: 'size',
name: 'File Size',
@@ -536,7 +548,7 @@ nf.QueueListing = (function () {
];
// conditionally show the cluster node identifier
- if (nf.Canvas.isClustered()) {
+ if (nf.ClusterSummary.isClustered()) {
queueListingColumns.push({
id: 'clusterNodeAddress',
name: 'Node',
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-configuration.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-configuration.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-configuration.js
index ece8be6..d012be4 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-configuration.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-configuration.js
@@ -82,7 +82,7 @@ nf.RemoteProcessGroupConfiguration = (function () {
headerText: 'Remote Process Group Configuration'
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
});
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-ports.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-ports.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-ports.js
index d5c9ae7..7c75aa2 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-ports.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group-ports.js
@@ -100,7 +100,7 @@ nf.RemoteProcessGroupPorts = (function () {
headerText: 'Remote Process Group Ports'
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
}).always(function () {
// close the dialog
@@ -351,7 +351,7 @@ nf.RemoteProcessGroupPorts = (function () {
dialogContent: content
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
});
});
@@ -548,7 +548,7 @@ nf.RemoteProcessGroupPorts = (function () {
// show the details
$('#remote-process-group-ports').modal('show');
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
}
};
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-reporting-task.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-reporting-task.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-reporting-task.js
index f134b69..cf94ba2 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-reporting-task.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-reporting-task.js
@@ -62,7 +62,7 @@ nf.ReportingTask = (function () {
headerText: 'Reporting Task'
});
} else {
- nf.Common.handleAjaxError(xhr, status, error);
+ nf.ErrorHandler.handleAjaxError(xhr, status, error);
}
};
@@ -219,7 +219,7 @@ nf.ReportingTask = (function () {
// update the task
renderReportingTask(response);
nf.ControllerService.reloadReferencedServices(getControllerServicesTable(), response.component);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
@@ -299,7 +299,7 @@ nf.ReportingTask = (function () {
propertyName: propertyName
},
dataType: 'json'
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
return {
@@ -363,6 +363,7 @@ nf.ReportingTask = (function () {
// initialize the property table
$('#reporting-task-properties').propertytable({
readOnly: false,
+ supportsGoTo: true,
dialogContainer: '#new-reporting-task-property-container',
descriptorDeferred: getReportingTaskPropertyDescriptor,
controllerServiceCreatedDeferred: function(response){
@@ -387,6 +388,7 @@ nf.ReportingTask = (function () {
// initialize the property table
$('#reporting-task-properties').propertytable('destroy').propertytable({
readOnly: false,
+ supportsGoTo: true,
dialogContainer: '#new-reporting-task-property-container',
descriptorDeferred: getReportingTaskPropertyDescriptor,
controllerServiceCreatedDeferred: function(response){
@@ -581,7 +583,7 @@ nf.ReportingTask = (function () {
$('#reporting-task-configuration').modal('show');
$('#reporting-task-properties').propertytable('resetTableSize');
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
/**
@@ -598,6 +600,7 @@ nf.ReportingTask = (function () {
// initialize the property table
$('#reporting-task-properties').propertytable('destroy').propertytable({
+ supportsGoTo: true,
readOnly: true
});
@@ -733,7 +736,7 @@ nf.ReportingTask = (function () {
dataType: 'json'
}).done(function (response) {
renderReportingTask(response);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
},
/**
@@ -773,7 +776,7 @@ nf.ReportingTask = (function () {
var reportingTaskGrid = $('#reporting-tasks-table').data('gridInstance');
var reportingTaskData = reportingTaskGrid.getData();
reportingTaskData.deleteItem(reportingTaskEntity.id);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
};
}());
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js
index 295c428..65f222d 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js
@@ -83,7 +83,7 @@ nf.Settings = (function () {
$('#settings-save').off('click').on('click', function () {
saveSettings(response.revision.version);
});
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
}
/**
@@ -402,7 +402,7 @@ nf.Settings = (function () {
var row = reportingTaskData.getRowById(reportingTaskEntity.id);
reportingTaskGrid.setSelectedRows([row]);
reportingTaskGrid.scrollRowIntoView(row);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
// hide the dialog
$('#new-reporting-task-dialog').modal('hide');
@@ -436,8 +436,21 @@ nf.Settings = (function () {
// initialize the processor type table
var reportingTaskTypesColumns = [
- {id: 'type', name: 'Type', field: 'label', formatter: nf.Common.typeFormatter, sortable: false, resizable: true},
- {id: 'tags', name: 'Tags', field: 'tags', sortable: false, resizable: true}
+ {
+ id: 'type',
+ name: 'Type',
+ field: 'label',
+ formatter: nf.Common.typeFormatter,
+ sortable: false,
+ resizable: true
+ },
+ {
+ id: 'tags',
+ name: 'Tags',
+ field: 'tags',
+ sortable: false,
+ resizable: true
+ }
];
// initialize the dataview
@@ -580,7 +593,7 @@ nf.Settings = (function () {
select: applyReportingTaskTypeFilter,
remove: applyReportingTaskTypeFilter
});
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
// initialize the reporting task dialog
$('#new-reporting-task-dialog').modal({
@@ -980,7 +993,7 @@ nf.Settings = (function () {
// update the current time
$('#settings-last-refreshed').text(controllerServicesResponse.currentTime);
- }).fail(nf.Common.handleAjaxError);
+ }).fail(nf.ErrorHandler.handleAjaxError);
};
/**
[05/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js
index d20737c..ddada58 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js
@@ -15,1383 +15,1416 @@
* limitations under the License.
*/
-/* global nf, d3 */
-
-nf.ng.ProvenanceLineage = function () {
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'd3',
+ 'nf.Common',
+ 'nf.Dialog',
+ 'nf.ErrorHandler'],
+ function ($, d3, common, dialog, errorHandler) {
+ return (nf.ng.ProvenanceLineage = factory($, d3, common, dialog, errorHandler));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.ProvenanceLineage =
+ factory(require('jquery'),
+ require('d3'),
+ require('nf.Common'),
+ require('nf.Dialog'),
+ require('nf.ErrorHandler')));
+ } else {
+ nf.ng.ProvenanceLineage = factory(root.$,
+ root.d3,
+ root.nf.Common,
+ root.nf.Dialog,
+ root.nf.ErrorHandler);
+ }
+}(this, function ($, d3, common, dialog, errorHandler) {
'use strict';
- /**
- * Configuration object used to hold a number of configuration items.
- */
- var config = {
- sliderTickCount: 75,
- urls: {
- lineage: '../nifi-api/provenance/lineage'
- }
- };
+ var mySelf = function () {
+ 'use strict';
- /**
- * Initializes the lineage query dialog.
- */
- var initLineageQueryDialog = function () {
- // initialize the dialog
- $('#lineage-query-dialog').modal({
- scrollableContentStyle: 'scrollable',
- headerText: 'Computing FlowFile lineage...'
- });
- };
+ /**
+ * Configuration object used to hold a number of configuration items.
+ */
+ var config = {
+ sliderTickCount: 75,
+ urls: {
+ lineage: '../nifi-api/provenance/lineage'
+
+ }
+ };
+
+ /**
+ * Initializes the lineage query dialog.
+ */
+ var initLineageQueryDialog = function () {
+ // initialize the dialog
+ $('#lineage-query-dialog').modal({
+ scrollableContentStyle: 'scrollable',
+ headerText: 'Computing FlowFile lineage...'
+ });
+ };
- var downloadSvgFile = function(svgString){
- var link = document.getElementById("image-download-link");
- var downloadSupported = typeof link.download != 'undefined';
- var fileName ='lineage.svg';
+ var downloadSvgFile = function (svgString) {
+ var link = document.getElementById("image-download-link");
+ var downloadSupported = typeof link.download != 'undefined';
+ var fileName = 'lineage.svg';
- if (downloadSupported) {
- var DOMURL = self.URL || self.webkitURL || self;
- var svg = new Blob([svgString], {type: "image/svg+xml;charset=utf-8"});
+ if (downloadSupported) {
+ var DOMURL = self.URL || self.webkitURL || self;
+ var svg = new Blob([svgString], {type: "image/svg+xml;charset=utf-8"});
- if (window.navigator.msSaveOrOpenBlob) {
- window.navigator.msSaveOrOpenBlob(svg, fileName);
+ if (window.navigator.msSaveOrOpenBlob) {
+ window.navigator.msSaveOrOpenBlob(svg, fileName);
+ } else {
+ var url = DOMURL.createObjectURL(svg);
+ link.href = url;
+ link.download = fileName;
+ link.click();
+ }
} else {
- var url = DOMURL.createObjectURL(svg);
- link.href = url;
- link.download = fileName;
- link.click();
+ window.open('data:image/svg+xml;charset=utf-8,' + encodeURI(svgString));
}
- } else {
- window.open('data:image/svg+xml;charset=utf-8,' + encodeURI(svgString));
- }
- };
+ };
- /**
- * Appends the items to the context menu.
- *
- * items = [{class: ..., text: ..., click: function() {...}}, ...]
- *
- * @param {array} items
- */
- var addContextMenuItems = function (items) {
- var contextMenu = $('#provenance-lineage-context-menu');
-
- $.each(items, function (_, item) {
- if (typeof item.click === 'function') {
- var menuItem = $('<div class="context-menu-item"></div>').on('click', item.click).on('mouseenter', function () {
- $(this).addClass('hover');
- }).on('mouseleave', function () {
- $(this).removeClass('hover');
- }).appendTo(contextMenu);
-
- // add the img and the text
- $('<div class="context-menu-item-img"></div>').addClass(item['class']).appendTo(menuItem);
- $('<div class="context-menu-item-text"></div>').text(item['text']).appendTo(menuItem);
- $('<div class="clear"></div>').appendTo(menuItem);
- }
- });
- };
+ /**
+ * Appends the items to the context menu.
+ *
+ * items = [{class: ..., text: ..., click: function() {...}}, ...]
+ *
+ * @param {array} items
+ */
+ var addContextMenuItems = function (items) {
+ var contextMenu = $('#provenance-lineage-context-menu');
+
+ $.each(items, function (_, item) {
+ if (typeof item.click === 'function') {
+ var menuItem = $('<div class="context-menu-item"></div>').on('click', item.click).on('mouseenter', function () {
+ $(this).addClass('hover');
+ }).on('mouseleave', function () {
+ $(this).removeClass('hover');
+ }).appendTo(contextMenu);
+
+ // add the img and the text
+ $('<div class="context-menu-item-img"></div>').addClass(item['class']).appendTo(menuItem);
+ $('<div class="context-menu-item-text"></div>').text(item['text']).appendTo(menuItem);
+ $('<div class="clear"></div>').appendTo(menuItem);
+ }
+ });
+ };
+
+ /**
+ * Submits the specified lineage request.
+ *
+ * @param {type} lineageRequest
+ * @returns {deferred}
+ */
+ var submitLineage = function (lineageRequest) {
+ var lineageEntity = {
+ 'lineage': {
+ 'request': lineageRequest
+ }
+ };
+
+ return $.ajax({
+ type: 'POST',
+ url: config.urls.lineage,
+ data: JSON.stringify(lineageEntity),
+ dataType: 'json',
+ contentType: 'application/json'
+ }).fail(errorHandler.handleAjaxError);
+ };
- /**
- * Submits the specified lineage request.
- *
- * @param {type} lineageRequest
- * @returns {deferred}
- */
- var submitLineage = function (lineageRequest) {
- var lineageEntity = {
- 'lineage': {
- 'request': lineageRequest
+ /**
+ * Gets the specified lineage.
+ *
+ * @param {type} lineage
+ * @returns {deferred}
+ */
+ var getLineage = function (lineage) {
+ var url = lineage.uri;
+ if (common.isDefinedAndNotNull(lineage.request.clusterNodeId)) {
+ url += '?' + $.param({
+ clusterNodeId: lineage.request.clusterNodeId
+ });
}
+
+ return $.ajax({
+ type: 'GET',
+ url: url,
+ dataType: 'json'
+ }).fail(errorHandler.handleAjaxError);
};
- return $.ajax({
- type: 'POST',
- url: config.urls.lineage,
- data: JSON.stringify(lineageEntity),
- dataType: 'json',
- contentType: 'application/json'
- }).fail(nf.Common.handleAjaxError);
- };
+ /**
+ * Cancels the specified lineage.
+ *
+ * @param {type} lineage
+ * @returns {deferred}
+ */
+ var cancelLineage = function (lineage) {
+ var url = lineage.uri;
+ if (common.isDefinedAndNotNull(lineage.request.clusterNodeId)) {
+ url += '?' + $.param({
+ clusterNodeId: lineage.request.clusterNodeId
+ });
+ }
- /**
- * Gets the specified lineage.
- *
- * @param {type} lineage
- * @returns {deferred}
- */
- var getLineage = function (lineage) {
- var url = lineage.uri;
- if (nf.Common.isDefinedAndNotNull(lineage.request.clusterNodeId)) {
- url += '?' + $.param({
- clusterNodeId: lineage.request.clusterNodeId
- });
- }
+ return $.ajax({
+ type: 'DELETE',
+ url: url,
+ dataType: 'json'
+ }).fail(errorHandler.handleAjaxError);
+ };
- return $.ajax({
- type: 'GET',
- url: url,
- dataType: 'json'
- }).fail(nf.Common.handleAjaxError);
- };
+ var DEFAULT_NODE_SPACING = 100;
+ var DEFAULT_LEVEL_DIFFERENCE = 120;
- /**
- * Cancels the specified lineage.
- *
- * @param {type} lineage
- * @returns {deferred}
- */
- var cancelLineage = function (lineage) {
- var url = lineage.uri;
- if (nf.Common.isDefinedAndNotNull(lineage.request.clusterNodeId)) {
- url += '?' + $.param({
- clusterNodeId: lineage.request.clusterNodeId
- });
- }
+ /**
+ * Renders the lineage in the specified results.
+ *
+ * @param {object} lineageResults
+ * @param {integer} eventId
+ * @param {string} clusterNodeId The id of the node in the cluster where this event/flowfile originated
+ */
+ var renderLineage = function (lineageResults, eventId, clusterNodeId, provenanceTableCtrl) {
+ // get the container
+ var lineageContainer = $('#provenance-lineage');
+ var width = lineageContainer.width();
+ var height = lineageContainer.height();
+
+ // record the min/max event time
+ var minMillis;
+ var minTimestamp;
+ var maxMillis;
+
+ // data lookups
+ var nodeLookup = d3.map();
+ var linkLookup = d3.map();
+
+ var locateDescendants = function (nodeIds, descendants, depth) {
+ $.each(nodeIds, function (_, nodeId) {
+ var node = nodeLookup.get(nodeId);
- return $.ajax({
- type: 'DELETE',
- url: url,
- dataType: 'json'
- }).fail(nf.Common.handleAjaxError);
- };
+ var children = [];
+ $.each(node.outgoing, function (_, link) {
+ children.push(link.target.id);
+ descendants.add(link.target.id);
+ });
- var DEFAULT_NODE_SPACING = 100;
- var DEFAULT_LEVEL_DIFFERENCE = 120;
-
- /**
- * Renders the lineage in the specified results.
- *
- * @param {object} lineageResults
- * @param {integer} eventId
- * @param {string} clusterNodeId The id of the node in the cluster where this event/flowfile originated
- */
- var renderLineage = function (lineageResults, eventId, clusterNodeId, provenanceTableCtrl) {
- // get the container
- var lineageContainer = $('#provenance-lineage');
- var width = lineageContainer.width();
- var height = lineageContainer.height();
-
- // record the min/max event time
- var minMillis;
- var minTimestamp;
- var maxMillis;
-
- // data lookups
- var nodeLookup = d3.map();
- var linkLookup = d3.map();
-
- var locateDescendants = function (nodeIds, descendants, depth) {
- $.each(nodeIds, function (_, nodeId) {
- var node = nodeLookup.get(nodeId);
-
- var children = [];
- $.each(node.outgoing, function (_, link) {
- children.push(link.target.id);
- descendants.add(link.target.id);
+ if (common.isUndefined(depth)) {
+ locateDescendants(children, descendants);
+ } else if (depth > 1) {
+ locateDescendants(children, descendants, depth - 1);
+ }
});
+ };
- if (nf.Common.isUndefined(depth)) {
- locateDescendants(children, descendants);
- } else if (depth > 1) {
- locateDescendants(children, descendants, depth - 1);
- }
- });
- };
+ var positionNodes = function (nodeIds, depth, parents, levelDifference) {
+ var immediateSet = d3.set(nodeIds);
+ var childSet = d3.set();
+ var descendantSet = d3.set();
- var positionNodes = function (nodeIds, depth, parents, levelDifference) {
- var immediateSet = d3.set(nodeIds);
- var childSet = d3.set();
- var descendantSet = d3.set();
+ // locate children
+ locateDescendants(nodeIds, childSet, 1);
- // locate children
- locateDescendants(nodeIds, childSet, 1);
+ // locate all descendants (including children)
+ locateDescendants(nodeIds, descendantSet);
- // locate all descendants (including children)
- locateDescendants(nodeIds, descendantSet);
+ // push off processing a node until its deepest point
+ // by removing any descendants from the immediate nodes.
+ // in this case, a link is panning multiple levels
+ descendantSet.forEach(function (d) {
+ immediateSet.remove(d);
+ });
- // push off processing a node until its deepest point
- // by removing any descendants from the immediate nodes.
- // in this case, a link is panning multiple levels
- descendantSet.forEach(function (d) {
- immediateSet.remove(d);
- });
+ // convert the children to an array to ensure consistent
+ // order when performing index of checks below
+ var children = childSet.values().sort(d3.descending);
- // convert the children to an array to ensure consistent
- // order when performing index of checks below
- var children = childSet.values().sort(d3.descending);
+ // convert the immediate to allow for sorting below
+ var immediate = immediateSet.values();
- // convert the immediate to allow for sorting below
- var immediate = immediateSet.values();
+ // attempt to identify fan in/out cases
+ var nodesWithTwoParents = 0;
+ $.each(immediate, function (_, nodeId) {
+ var node = nodeLookup.get(nodeId);
- // attempt to identify fan in/out cases
- var nodesWithTwoParents = 0;
- $.each(immediate, function (_, nodeId) {
- var node = nodeLookup.get(nodeId);
+ // identify fanning cases
+ if (node.incoming.length > 3) {
+ levelDifference = DEFAULT_LEVEL_DIFFERENCE;
+ } else if (node.incoming.length >= 2) {
+ nodesWithTwoParents++;
+ }
+ });
- // identify fanning cases
- if (node.incoming.length > 3) {
+ // increate the level difference if more than two nodes have two or more parents
+ if (nodesWithTwoParents > 2) {
levelDifference = DEFAULT_LEVEL_DIFFERENCE;
- } else if (node.incoming.length >= 2) {
- nodesWithTwoParents++;
}
- });
- // increate the level difference if more than two nodes have two or more parents
- if (nodesWithTwoParents > 2) {
- levelDifference = DEFAULT_LEVEL_DIFFERENCE;
- }
-
- // attempt to sort the nodes to provide an optimum layout
- if (parents.length === 1) {
- immediate = immediate.sort(function (one, two) {
- var oneNode = nodeLookup.get(one);
- var twoNode = nodeLookup.get(two);
-
- // try to order by children
- if (oneNode.outgoing.length > 0 && twoNode.outgoing.length > 0) {
- var oneIndex = children.indexOf(oneNode.outgoing[0].target.id);
- var twoIndex = children.indexOf(twoNode.outgoing[0].target.id);
- if (oneIndex !== twoIndex) {
- return oneIndex - twoIndex;
+ // attempt to sort the nodes to provide an optimum layout
+ if (parents.length === 1) {
+ immediate = immediate.sort(function (one, two) {
+ var oneNode = nodeLookup.get(one);
+ var twoNode = nodeLookup.get(two);
+
+ // try to order by children
+ if (oneNode.outgoing.length > 0 && twoNode.outgoing.length > 0) {
+ var oneIndex = children.indexOf(oneNode.outgoing[0].target.id);
+ var twoIndex = children.indexOf(twoNode.outgoing[0].target.id);
+ if (oneIndex !== twoIndex) {
+ return oneIndex - twoIndex;
+ }
}
- }
- // try to order by parents
- if (oneNode.incoming.length > 0 && twoNode.incoming.length > 0) {
- var oneIndex = oneNode.incoming[0].source.index;
- var twoIndex = twoNode.incoming[0].source.index;
- if (oneIndex !== twoIndex) {
- return oneIndex - twoIndex;
+ // try to order by parents
+ if (oneNode.incoming.length > 0 && twoNode.incoming.length > 0) {
+ var oneIndex = oneNode.incoming[0].source.index;
+ var twoIndex = twoNode.incoming[0].source.index;
+ if (oneIndex !== twoIndex) {
+ return oneIndex - twoIndex;
+ }
}
- }
- // type of node
- if (oneNode.type !== twoNode.type) {
- return oneNode.type > twoNode.type ? 1 : -1;
- }
-
- // type of event
- if (oneNode.eventType !== twoNode.eventType) {
- return oneNode.eventType > twoNode.eventType ? 1 : -1;
- }
+ // type of node
+ if (oneNode.type !== twoNode.type) {
+ return oneNode.type > twoNode.type ? 1 : -1;
+ }
- // timestamp
- return oneNode.millis - twoNode.millis;
- });
- } else if (parents.length > 1) {
- immediate = immediate.sort(function (one, two) {
- var oneNode = nodeLookup.get(one);
- var twoNode = nodeLookup.get(two);
-
- // try to order by parents
- if (oneNode.incoming.length > 0 && twoNode.incoming.length > 0) {
- var oneIndex = oneNode.incoming[0].source.index;
- var twoIndex = twoNode.incoming[0].source.index;
- if (oneIndex !== twoIndex) {
- return oneIndex - twoIndex;
+ // type of event
+ if (oneNode.eventType !== twoNode.eventType) {
+ return oneNode.eventType > twoNode.eventType ? 1 : -1;
}
- }
- // try to order by children
- if (oneNode.outgoing.length > 0 && twoNode.outgoing.length > 0) {
- var oneIndex = children.indexOf(oneNode.outgoing[0].target.id);
- var twoIndex = children.indexOf(twoNode.outgoing[0].target.id);
- if (oneIndex !== twoIndex) {
- return oneIndex - twoIndex;
+ // timestamp
+ return oneNode.millis - twoNode.millis;
+ });
+ } else if (parents.length > 1) {
+ immediate = immediate.sort(function (one, two) {
+ var oneNode = nodeLookup.get(one);
+ var twoNode = nodeLookup.get(two);
+
+ // try to order by parents
+ if (oneNode.incoming.length > 0 && twoNode.incoming.length > 0) {
+ var oneIndex = oneNode.incoming[0].source.index;
+ var twoIndex = twoNode.incoming[0].source.index;
+ if (oneIndex !== twoIndex) {
+ return oneIndex - twoIndex;
+ }
}
- }
- // node type
- if (oneNode.type !== twoNode.type) {
- return oneNode.type > twoNode.type ? 1 : -1;
- }
+ // try to order by children
+ if (oneNode.outgoing.length > 0 && twoNode.outgoing.length > 0) {
+ var oneIndex = children.indexOf(oneNode.outgoing[0].target.id);
+ var twoIndex = children.indexOf(twoNode.outgoing[0].target.id);
+ if (oneIndex !== twoIndex) {
+ return oneIndex - twoIndex;
+ }
+ }
- // event type
- if (oneNode.eventType !== twoNode.eventType) {
- return oneNode.eventType > twoNode.eventType ? 1 : -1;
- }
+ // node type
+ if (oneNode.type !== twoNode.type) {
+ return oneNode.type > twoNode.type ? 1 : -1;
+ }
- // timestamp
- return oneNode.millis - twoNode.millis;
- });
- }
+ // event type
+ if (oneNode.eventType !== twoNode.eventType) {
+ return oneNode.eventType > twoNode.eventType ? 1 : -1;
+ }
- var originX = width / 2;
- if (parents.length > 0) {
- originX = d3.mean(parents, function (parentId) {
- var parent = nodeLookup.get(parentId);
- return parent.x;
- });
- }
+ // timestamp
+ return oneNode.millis - twoNode.millis;
+ });
+ }
- var depthWidth = (immediate.length - 1) * DEFAULT_NODE_SPACING;
- $.each(immediate, function (i, nodeId) {
- var node = nodeLookup.get(nodeId);
+ var originX = width / 2;
+ if (parents.length > 0) {
+ originX = d3.mean(parents, function (parentId) {
+ var parent = nodeLookup.get(parentId);
+ return parent.x;
+ });
+ }
- // set the y position based on the depth
- node.y = levelDifference + depth - 25;
+ var depthWidth = (immediate.length - 1) * DEFAULT_NODE_SPACING;
+ $.each(immediate, function (i, nodeId) {
+ var node = nodeLookup.get(nodeId);
- // ensure the children won't position on top of one another
- // based on the number of parent nodes
- if (immediate.length <= parents.length) {
- if (node.incoming.length === 1) {
- var parent = node.incoming[0].source;
- if (parent.outgoing.length === 1) {
- node.x = parent.x;
+ // set the y position based on the depth
+ node.y = levelDifference + depth - 25;
+
+ // ensure the children won't position on top of one another
+ // based on the number of parent nodes
+ if (immediate.length <= parents.length) {
+ if (node.incoming.length === 1) {
+ var parent = node.incoming[0].source;
+ if (parent.outgoing.length === 1) {
+ node.x = parent.x;
+ return;
+ }
+ } else if (node.incoming.length > 1) {
+ var nodesOnPreviousLevel = $.grep(node.incoming, function (link) {
+ return (node.y - link.source.y) <= DEFAULT_LEVEL_DIFFERENCE;
+ });
+ node.x = d3.mean(nodesOnPreviousLevel, function (link) {
+ return link.source.x;
+ });
return;
}
- } else if (node.incoming.length > 1) {
- var nodesOnPreviousLevel = $.grep(node.incoming, function (link) {
- return (node.y - link.source.y) <= DEFAULT_LEVEL_DIFFERENCE;
- });
- node.x = d3.mean(nodesOnPreviousLevel, function (link) {
- return link.source.x;
- });
- return;
}
- }
- // evenly space the nodes under the origin
- node.x = (i * DEFAULT_NODE_SPACING) + originX - (depthWidth / 2);
- });
+ // evenly space the nodes under the origin
+ node.x = (i * DEFAULT_NODE_SPACING) + originX - (depthWidth / 2);
+ });
- // sort the immediate nodes after positioning by the x coordinate
- // so they can be shifted accordingly if necessary
- var sortedImmediate = immediate.slice().sort(function (one, two) {
- var nodeOne = nodeLookup.get(one);
- var nodeTwo = nodeLookup.get(two);
- return nodeOne.x - nodeTwo.x;
- });
+ // sort the immediate nodes after positioning by the x coordinate
+ // so they can be shifted accordingly if necessary
+ var sortedImmediate = immediate.slice().sort(function (one, two) {
+ var nodeOne = nodeLookup.get(one);
+ var nodeTwo = nodeLookup.get(two);
+ return nodeOne.x - nodeTwo.x;
+ });
- // adjust the x positioning if necessary to avoid positioning on top
- // of one another, only need to consider the x coordinate since the
- // y coordinate will be the same for each node on this row
- for (var i = 0; i < sortedImmediate.length - 1; i++) {
- var first = nodeLookup.get(sortedImmediate[i]);
- var second = nodeLookup.get(sortedImmediate[i + 1]);
- var difference = second.x - first.x;
+ // adjust the x positioning if necessary to avoid positioning on top
+ // of one another, only need to consider the x coordinate since the
+ // y coordinate will be the same for each node on this row
+ for (var i = 0; i < sortedImmediate.length - 1; i++) {
+ var first = nodeLookup.get(sortedImmediate[i]);
+ var second = nodeLookup.get(sortedImmediate[i + 1]);
+ var difference = second.x - first.x;
- if (difference < DEFAULT_NODE_SPACING) {
- second.x += (DEFAULT_NODE_SPACING - difference);
+ if (difference < DEFAULT_NODE_SPACING) {
+ second.x += (DEFAULT_NODE_SPACING - difference);
+ }
}
- }
- // if there are children to position
- if (children.length > 0) {
- var childLevelDifference = DEFAULT_LEVEL_DIFFERENCE / 3;
+ // if there are children to position
+ if (children.length > 0) {
+ var childLevelDifference = DEFAULT_LEVEL_DIFFERENCE / 3;
- // resort the immediate values after each node has been positioned
- immediate = immediate.sort(function (one, two) {
- var oneNode = nodeLookup.get(one);
- var twoNode = nodeLookup.get(two);
- return oneNode.x - twoNode.x;
- });
+ // resort the immediate values after each node has been positioned
+ immediate = immediate.sort(function (one, two) {
+ var oneNode = nodeLookup.get(one);
+ var twoNode = nodeLookup.get(two);
+ return oneNode.x - twoNode.x;
+ });
- // mark each nodes index so subsequent recursive calls can position children accordingly
- var nodesWithTwoChildren = 0;
- $.each(immediate, function (i, nodeId) {
- var node = nodeLookup.get(nodeId);
- node.index = i;
+ // mark each nodes index so subsequent recursive calls can position children accordingly
+ var nodesWithTwoChildren = 0;
+ $.each(immediate, function (i, nodeId) {
+ var node = nodeLookup.get(nodeId);
+ node.index = i;
+
+ // precompute the next level difference since we have easy access to going here
+ if (node.outgoing.length > 3) {
+ childLevelDifference = DEFAULT_LEVEL_DIFFERENCE;
+ } else if (node.outgoing.length >= 2) {
+ nodesWithTwoChildren++;
+ }
+ });
- // precompute the next level difference since we have easy access to going here
- if (node.outgoing.length > 3) {
+ // if there are at least two immediate nodes with two or more children, increase the level difference
+ if (nodesWithTwoChildren > 2) {
childLevelDifference = DEFAULT_LEVEL_DIFFERENCE;
- } else if (node.outgoing.length >= 2) {
- nodesWithTwoChildren++;
}
- });
- // if there are at least two immediate nodes with two or more children, increase the level difference
- if (nodesWithTwoChildren > 2) {
- childLevelDifference = DEFAULT_LEVEL_DIFFERENCE;
+ // position the children
+ positionNodes(children, levelDifference + depth, immediate, childLevelDifference);
}
+ };
- // position the children
- positionNodes(children, levelDifference + depth, immediate, childLevelDifference);
- }
- };
+ var addLineage = function (nodes, links, provenanceTableCtrl) {
+ // add the new nodes
+ $.each(nodes, function (_, node) {
+ if (nodeLookup.has(node.id)) {
+ return;
+ }
- var addLineage = function (nodes, links, provenanceTableCtrl) {
- // add the new nodes
- $.each(nodes, function (_, node) {
- if (nodeLookup.has(node.id)) {
- return;
- }
+ // add values to the node to support rendering
+ $.extend(node, {
+ x: 0,
+ y: 0,
+ visible: true
+ });
- // add values to the node to support rendering
- $.extend(node, {
- x: 0,
- y: 0,
- visible: true
+ // store the node in a lookup
+ nodeLookup.set(node.id, node);
});
- // store the node in a lookup
- nodeLookup.set(node.id, node);
- });
-
- // add the new links
- $.each(links, function (_, link) {
- // create the link object
- var linkObj = {
- id: link.sourceId + '-' + link.targetId,
- source: nodeLookup.get(link.sourceId),
- target: nodeLookup.get(link.targetId),
- flowFileUuid: link.flowFileUuid,
- millis: link.millis,
- visible: true
- };
-
- linkLookup.set(linkObj.id, linkObj);
- });
-
- refresh(provenanceTableCtrl);
- };
+ // add the new links
+ $.each(links, function (_, link) {
+ // create the link object
+ var linkObj = {
+ id: link.sourceId + '-' + link.targetId,
+ source: nodeLookup.get(link.sourceId),
+ target: nodeLookup.get(link.targetId),
+ flowFileUuid: link.flowFileUuid,
+ millis: link.millis,
+ visible: true
+ };
+
+ linkLookup.set(linkObj.id, linkObj);
+ });
- var refresh = function (provenanceTableCtrl) {
- // consider all nodes as starting points
- var startNodes = d3.set(nodeLookup.keys());
+ refresh(provenanceTableCtrl);
+ };
- // go through the nodes to reset their outgoing links
- nodeLookup.forEach(function (id, node) {
- node.outgoing = [];
- node.incoming = [];
+ var refresh = function (provenanceTableCtrl) {
+ // consider all nodes as starting points
+ var startNodes = d3.set(nodeLookup.keys());
- // ensure this event has an event time
- if (nf.Common.isUndefined(minMillis) || minMillis > node.millis) {
- minMillis = node.millis;
- minTimestamp = node.timestamp;
- }
- if (nf.Common.isUndefined(maxMillis) || maxMillis < node.millis) {
- maxMillis = node.millis;
- }
- });
+ // go through the nodes to reset their outgoing links
+ nodeLookup.forEach(function (id, node) {
+ node.outgoing = [];
+ node.incoming = [];
- // go through the links in order to compute the new layout
- linkLookup.forEach(function (id, link) {
- // updating the nodes connections
- link.source.outgoing.push(link);
- link.target.incoming.push(link);
+ // ensure this event has an event time
+ if (common.isUndefined(minMillis) || minMillis > node.millis) {
+ minMillis = node.millis;
+ minTimestamp = node.timestamp;
+ }
+ if (common.isUndefined(maxMillis) || maxMillis < node.millis) {
+ maxMillis = node.millis;
+ }
+ });
- // remove the target from being a potential starting node
- startNodes.remove(link.target.id);
- });
+ // go through the links in order to compute the new layout
+ linkLookup.forEach(function (id, link) {
+ // updating the nodes connections
+ link.source.outgoing.push(link);
+ link.target.incoming.push(link);
- // position the nodes
- positionNodes(startNodes.values(), 1, [], 50);
+ // remove the target from being a potential starting node
+ startNodes.remove(link.target.id);
+ });
- // update the slider min/max/step values
- var step = (maxMillis - minMillis) / config.sliderTickCount;
- slider.slider('option', 'min', minMillis).slider('option', 'max', maxMillis).slider('option', 'step', step).slider('value', maxMillis);
+ // position the nodes
+ positionNodes(startNodes.values(), 1, [], 50);
- // populate the event timeline
- $('#event-time').text(formatEventTime(maxMillis, provenanceTableCtrl));
+ // update the slider min/max/step values
+ var step = (maxMillis - minMillis) / config.sliderTickCount;
+ slider.slider('option', 'min', minMillis).slider('option', 'max', maxMillis).slider('option', 'step', step).slider('value', maxMillis);
- // update the layout
- update(provenanceTableCtrl);
- };
+ // populate the event timeline
+ $('#event-time').text(formatEventTime(maxMillis, provenanceTableCtrl));
- // formats the specified millis
- var formatEventTime = function (millis, provenanceTableCtrl) {
- // get the current user time to properly convert the server time
- var now = new Date();
+ // update the layout
+ update(provenanceTableCtrl);
+ };
- // conver the user offset to millis
- var userTimeOffset = now.getTimezoneOffset() * 60 * 1000;
+ // formats the specified millis
+ var formatEventTime = function (millis, provenanceTableCtrl) {
+ // get the current user time to properly convert the server time
+ var now = new Date();
- // create the proper date by adjusting by the offsets
- var date = new Date(millis + userTimeOffset + provenanceTableCtrl.serverTimeOffset);
- return nf.Common.formatDateTime(date);
- };
+ // conver the user offset to millis
+ var userTimeOffset = now.getTimezoneOffset() * 60 * 1000;
- // handle context menu clicks...
- $('#provenance-lineage-context-menu').on('click', function () {
- $(this).hide().empty();
- });
-
- // handle zoom behavior
- var lineageZoom = d3.behavior.zoom()
- .scaleExtent([0.2, 8])
- .on('zoom', function () {
- d3.select('g.lineage').attr('transform', function () {
- return 'translate(' + d3.event.translate + ') scale(' + d3.event.scale + ')';
- });
- });
-
- // build the svg img
- var svg = d3.select('#provenance-lineage-container').append('svg:svg')
- .attr('width', '100%')
- .attr('height', '100%')
- .call(lineageZoom)
- .on('dblclick.zoom', null)
- .on('mousedown', function (d) {
- // hide the context menu if necessary
- d3.selectAll('circle.context').classed('context', false);
- $('#provenance-lineage-context-menu').hide().empty();
- })
- .on('contextmenu', function () {
- var contextMenu = $('#provenance-lineage-context-menu');
-
- // if there is something to show in the context menu
- if (!contextMenu.is(':empty')) {
- var position = d3.mouse(this);
-
- // show the context menu
- contextMenu.css({
- 'left': position[0] + 'px',
- 'top': position[1] + 'px'
- }).show();
- }
+ // create the proper date by adjusting by the offsets
+ var date = new Date(millis + userTimeOffset + provenanceTableCtrl.serverTimeOffset);
+ return common.formatDateTime(date);
+ };
- // prevent the native default context menu
- d3.event.preventDefault();
+ // handle context menu clicks...
+ $('#provenance-lineage-context-menu').on('click', function () {
+ $(this).hide().empty();
});
- svg.append('rect')
- .attr({
- 'width': '100%',
- 'height': '100%',
- 'fill': '#f9fafb'
- });
+ // handle zoom behavior
+ var lineageZoom = d3.behavior.zoom()
+ .scaleExtent([0.2, 8])
+ .on('zoom', function () {
+ d3.select('g.lineage').attr('transform', function () {
+ return 'translate(' + d3.event.translate + ') scale(' + d3.event.scale + ')';
+ });
+ });
- svg.append('defs').selectAll('marker')
- .data(['FLOWFILE', 'FLOWFILE-SELECTED', 'EVENT', 'EVENT-SELECTED'])
- .enter().append('marker')
- .attr({
- 'id': function (d) {
- return d;
- },
- 'viewBox': '0 -3 6 6',
- 'refX': function (d) {
- if (d.indexOf('FLOWFILE') >= 0) {
- return 16;
- } else {
- return 11;
- }
- },
- 'refY': 0,
- 'markerWidth': 6,
- 'markerHeight': 6,
- 'orient': 'auto',
- 'fill': function (d) {
- if (d.indexOf('SELECTED') >= 0) {
- return '#ba554a';
- } else {
- return '#000000';
+ // build the svg img
+ var svg = d3.select('#provenance-lineage-container').append('svg:svg')
+ .attr('width', '100%')
+ .attr('height', '100%')
+ .call(lineageZoom)
+ .on('dblclick.zoom', null)
+ .on('mousedown', function (d) {
+ // hide the context menu if necessary
+ d3.selectAll('circle.context').classed('context', false);
+ $('#provenance-lineage-context-menu').hide().empty();
+ })
+ .on('contextmenu', function () {
+ var contextMenu = $('#provenance-lineage-context-menu');
+
+ // if there is something to show in the context menu
+ if (!contextMenu.is(':empty')) {
+ var position = d3.mouse(this);
+
+ // show the context menu
+ contextMenu.css({
+ 'left': position[0] + 'px',
+ 'top': position[1] + 'px'
+ }).show();
}
- }
- })
- .append('path')
- .attr('d', 'M0,-3 L6,0 L0,3');
-
- // group everything together
- var lineageContainer = svg.append('g')
- .attr({
- 'transform': 'translate(0, 0) scale(1)',
- 'pointer-events': 'all',
- 'class': 'lineage'
- });
-
- // select the nodes and links
- var nodes = lineageContainer.selectAll('g.node');
- var links = lineageContainer.selectAll('path.link');
-
- var previousMillis = maxMillis;
- var slide = function (event, ui) {
- if (previousMillis > ui.value) {
- // the slider is descending
- // determine the nodes to hide
- var nodesToHide = nodes.filter(function (d) {
- return d.millis > ui.value && d.millis <= previousMillis;
+ // prevent the native default context menu
+ d3.event.preventDefault();
});
- var linksToHide = links.filter(function (d) {
- return d.millis > ui.value && d.millis <= previousMillis;
+
+ svg.append('rect')
+ .attr({
+ 'width': '100%',
+ 'height': '100%',
+ 'fill': '#f9fafb'
});
- // hide applicable nodes and lines
- linksToHide.transition().duration(400).style('opacity', 0);
- nodesToHide.transition().delay(200).duration(400).style('opacity', 0);
- } else {
- // the slider is ascending
+ svg.append('defs').selectAll('marker')
+ .data(['FLOWFILE', 'FLOWFILE-SELECTED', 'EVENT', 'EVENT-SELECTED'])
+ .enter().append('marker')
+ .attr({
+ 'id': function (d) {
+ return d;
+ },
+ 'viewBox': '0 -3 6 6',
+ 'refX': function (d) {
+ if (d.indexOf('FLOWFILE') >= 0) {
+ return 16;
+ } else {
+ return 11;
+ }
+ },
+ 'refY': 0,
+ 'markerWidth': 6,
+ 'markerHeight': 6,
+ 'orient': 'auto',
+ 'fill': function (d) {
+ if (d.indexOf('SELECTED') >= 0) {
+ return '#ba554a';
+ } else {
+ return '#000000';
+ }
+ }
+ })
+ .append('path')
+ .attr('d', 'M0,-3 L6,0 L0,3');
- // determine the nodes to show
- var nodesToShow = nodes.filter(function (d) {
- return d.millis <= ui.value && d.millis > previousMillis;
- });
- var linksToShow = links.filter(function (d) {
- return d.millis <= ui.value && d.millis > previousMillis;
+ // group everything together
+ var lineageContainer = svg.append('g')
+ .attr({
+ 'transform': 'translate(0, 0) scale(1)',
+ 'pointer-events': 'all',
+ 'class': 'lineage'
});
- // show applicable nodes and lines
- nodesToShow.transition().duration(400).style('opacity', 1);
- linksToShow.transition().delay(200).duration(400).style('opacity', 1);
- }
+ // select the nodes and links
+ var nodes = lineageContainer.selectAll('g.node');
+ var links = lineageContainer.selectAll('path.link');
- // update the event time
- $('#event-time').text(formatEventTime(ui.value, provenanceTableCtrl));
+ var previousMillis = maxMillis;
+ var slide = function (event, ui) {
+ if (previousMillis > ui.value) {
+ // the slider is descending
- // update the previous value
- previousMillis = ui.value;
- };
+ // determine the nodes to hide
+ var nodesToHide = nodes.filter(function (d) {
+ return d.millis > ui.value && d.millis <= previousMillis;
+ });
+ var linksToHide = links.filter(function (d) {
+ return d.millis > ui.value && d.millis <= previousMillis;
+ });
- // set up a slider for the showing the timeline of events
- var slider = $('#provenance-lineage-slider').slider({
- min: minMillis,
- max: maxMillis,
- step: (maxMillis - minMillis) / config.sliderTickCount,
- value: maxMillis,
- change: slide,
- slide: slide
- });
-
- // renders flowfile nodes
- var renderFlowFile = function (flowfiles) {
- flowfiles.classed('flowfile', true);
-
- // node
- flowfiles.append('circle')
- .attr({
- 'r': 16,
- 'fill': '#fff',
- 'stroke': '#000',
- 'stroke-width': 1.0
- })
- .on('mousedown', function (d) {
- // empty context menu if necessary
- $('#provenance-lineage-context-menu').hide().empty();
+ // hide applicable nodes and lines
+ linksToHide.transition().duration(400).style('opacity', 0);
+ nodesToHide.transition().delay(200).duration(400).style('opacity', 0);
+ } else {
+ // the slider is ascending
- // prevents the drag event when something other than the
- // left button is clicked
- if (d3.event.button !== 0) {
- d3.event.stopPropagation();
- }
- }, true)
- .on('mouseover', function (d) {
- links.filter(function (linkDatum) {
- return d.id === linkDatum.flowFileUuid;
- })
- .classed('selected', true)
- .attr('marker-end', function (d) {
- return 'url(#' + d.target.type + '-SELECTED)';
- });
- })
- .on('mouseout', function (d) {
- links.filter(function (linkDatum) {
- return d.id === linkDatum.flowFileUuid;
- }).classed('selected', false)
- .attr('marker-end', function (d) {
- return 'url(#' + d.target.type + ')';
- });
- });
+ // determine the nodes to show
+ var nodesToShow = nodes.filter(function (d) {
+ return d.millis <= ui.value && d.millis > previousMillis;
+ });
+ var linksToShow = links.filter(function (d) {
+ return d.millis <= ui.value && d.millis > previousMillis;
+ });
- var icon = flowfiles.append('g')
- .attr({
- 'class': 'flowfile-icon',
- 'transform': function (d) {
- return 'translate(-9,-9)';
- }
- }).append('text')
- .attr({
- 'font-family': 'flowfont',
- 'font-size': '18px',
- 'fill': '#ad9897',
- 'transform': function (d) {
- return 'translate(0,15)';
- }
- })
- .on('mousedown', function (d) {
- // empty context menu if necessary
- $('#provenance-lineage-context-menu').hide().empty();
+ // show applicable nodes and lines
+ nodesToShow.transition().duration(400).style('opacity', 1);
+ linksToShow.transition().delay(200).duration(400).style('opacity', 1);
+ }
- // prevents the drag event when something other than the
- // left button is clicked
- if (d3.event.button !== 0) {
- d3.event.stopPropagation();
- }
- }, true)
- .on('mouseover', function (d) {
- links.filter(function (linkDatum) {
- return d.id === linkDatum.flowFileUuid;
- })
- .classed('selected', true)
- .attr('marker-end', function (d) {
- return 'url(#' + d.target.type + '-SELECTED)';
- });
- })
- .on('mouseout', function (d) {
- links.filter(function (linkDatum) {
- return d.id === linkDatum.flowFileUuid;
- }).classed('selected', false)
- .attr('marker-end', function (d) {
- return 'url(#' + d.target.type + ')';
- });
- })
- .text(function(d) { return '\ue808' });
- };
+ // update the event time
+ $('#event-time').text(formatEventTime(ui.value, provenanceTableCtrl));
- // renders event nodes
- var renderEvent = function (events, provenanceTableCtrl) {
- events
- .classed('event', true)
- .append('circle')
- .classed('selected', function (d) {
- return d.id === eventId;
- })
- .attr({
- 'r': 8,
- 'fill': '#aabbc3',
- 'stroke': '#000',
- 'stroke-width': 1.0,
- 'id': function (d) {
- return 'event-node-' + d.id;
- }
- })
- .on('contextmenu', function (d) {
- // select the current node for a visible cue
- d3.select(this).classed('context', true);
+ // update the previous value
+ previousMillis = ui.value;
+ };
- // empty an previous contents - in case they right click on the
- // node twice without closing the previous context menu
- $('#provenance-lineage-context-menu').hide().empty();
+ // set up a slider for the showing the timeline of events
+ var slider = $('#provenance-lineage-slider').slider({
+ min: minMillis,
+ max: maxMillis,
+ step: (maxMillis - minMillis) / config.sliderTickCount,
+ value: maxMillis,
+ change: slide,
+ slide: slide
+ });
- var menuItems = [{
- 'class': 'lineage-view-event',
- 'text': 'View details',
- 'click': function () {
- provenanceTableCtrl.showEventDetails(d.id, clusterNodeId);
+ // renders flowfile nodes
+ var renderFlowFile = function (flowfiles) {
+ flowfiles.classed('flowfile', true);
+
+ // node
+ flowfiles.append('circle')
+ .attr({
+ 'r': 16,
+ 'fill': '#fff',
+ 'stroke': '#000',
+ 'stroke-width': 1.0
+ })
+ .on('mousedown', function (d) {
+ // empty context menu if necessary
+ $('#provenance-lineage-context-menu').hide().empty();
+
+ // prevents the drag event when something other than the
+ // left button is clicked
+ if (d3.event.button !== 0) {
+ d3.event.stopPropagation();
}
- }];
-
- // if this is a spawn event show appropriate actions
- if (d.eventType === 'SPAWN' || d.eventType === 'CLONE' || d.eventType === 'FORK' || d.eventType === 'JOIN' || d.eventType === 'REPLAY') {
- // starts the lineage expansion process
- var expandLineage = function (lineageRequest) {
- var lineageProgress = $('#lineage-percent-complete');
-
- // add support to cancel outstanding requests - when the button is pressed we
- // could be in one of two stages, 1) waiting to GET the status or 2)
- // in the process of GETting the status. Handle both cases by cancelling
- // the setTimeout (1) and by setting a flag to indicate that a request has
- // been request so we can ignore the results (2).
-
- var cancelled = false;
- var lineage = null;
- var lineageTimer = null;
-
- // update the progress bar value
- provenanceTableCtrl.updateProgress(lineageProgress, 0);
-
- // show the 'searching...' dialog
- $('#lineage-query-dialog').modal('setButtonModel', [{
- buttonText: 'Cancel',
- color: {
- base: '#E3E8EB',
- hover: '#C7D2D7',
- text: '#004849'
- },
- handler: {
- click: function () {
- cancelled = true;
-
- // we are waiting for the next poll attempt
- if (lineageTimer !== null) {
- // cancel it
- clearTimeout(lineageTimer);
-
- // cancel the provenance
- closeDialog();
- }
- }
- }
- }]).modal('show');
+ }, true)
+ .on('mouseover', function (d) {
+ links.filter(function (linkDatum) {
+ return d.id === linkDatum.flowFileUuid;
+ })
+ .classed('selected', true)
+ .attr('marker-end', function (d) {
+ return 'url(#' + d.target.type + '-SELECTED)';
+ });
+ })
+ .on('mouseout', function (d) {
+ links.filter(function (linkDatum) {
+ return d.id === linkDatum.flowFileUuid;
+ }).classed('selected', false)
+ .attr('marker-end', function (d) {
+ return 'url(#' + d.target.type + ')';
+ });
+ });
+ var icon = flowfiles.append('g')
+ .attr({
+ 'class': 'flowfile-icon',
+ 'transform': function (d) {
+ return 'translate(-9,-9)';
+ }
+ }).append('text')
+ .attr({
+ 'font-family': 'flowfont',
+ 'font-size': '18px',
+ 'fill': '#ad9897',
+ 'transform': function (d) {
+ return 'translate(0,15)';
+ }
+ })
+ .on('mousedown', function (d) {
+ // empty context menu if necessary
+ $('#provenance-lineage-context-menu').hide().empty();
+
+ // prevents the drag event when something other than the
+ // left button is clicked
+ if (d3.event.button !== 0) {
+ d3.event.stopPropagation();
+ }
+ }, true)
+ .on('mouseover', function (d) {
+ links.filter(function (linkDatum) {
+ return d.id === linkDatum.flowFileUuid;
+ })
+ .classed('selected', true)
+ .attr('marker-end', function (d) {
+ return 'url(#' + d.target.type + '-SELECTED)';
+ });
+ })
+ .on('mouseout', function (d) {
+ links.filter(function (linkDatum) {
+ return d.id === linkDatum.flowFileUuid;
+ }).classed('selected', false)
+ .attr('marker-end', function (d) {
+ return 'url(#' + d.target.type + ')';
+ });
+ })
+ .text(function (d) {
+ return '\ue808'
+ });
+ };
- // closes the searching dialog and cancels the query on the server
- var closeDialog = function () {
- // cancel the provenance results since we've successfully processed the results
- if (nf.Common.isDefinedAndNotNull(lineage)) {
- cancelLineage(lineage);
- }
+ // renders event nodes
+ var renderEvent = function (events, provenanceTableCtrl) {
+ events
+ .classed('event', true)
+ .append('circle')
+ .classed('selected', function (d) {
+ return d.id === eventId;
+ })
+ .attr({
+ 'r': 8,
+ 'fill': '#aabbc3',
+ 'stroke': '#000',
+ 'stroke-width': 1.0,
+ 'id': function (d) {
+ return 'event-node-' + d.id;
+ }
+ })
+ .on('contextmenu', function (d) {
+ // select the current node for a visible cue
+ d3.select(this).classed('context', true);
- // close the dialog
- $('#lineage-query-dialog').modal('hide');
- };
+ // empty an previous contents - in case they right click on the
+ // node twice without closing the previous context menu
+ $('#provenance-lineage-context-menu').hide().empty();
- // polls for the event lineage
- var pollLineage = function () {
- getLineage(lineage).done(function (response) {
- lineage = response.lineage;
+ var menuItems = [{
+ 'class': 'lineage-view-event',
+ 'text': 'View details',
+ 'click': function () {
+ provenanceTableCtrl.showEventDetails(d.id, clusterNodeId);
+ }
+ }];
+
+ // if this is a spawn event show appropriate actions
+ if (d.eventType === 'SPAWN' || d.eventType === 'CLONE' || d.eventType === 'FORK' || d.eventType === 'JOIN' || d.eventType === 'REPLAY') {
+ // starts the lineage expansion process
+ var expandLineage = function (lineageRequest) {
+ var lineageProgress = $('#lineage-percent-complete');
+
+ // add support to cancel outstanding requests - when the button is pressed we
+ // could be in one of two stages, 1) waiting to GET the status or 2)
+ // in the process of GETting the status. Handle both cases by cancelling
+ // the setTimeout (1) and by setting a flag to indicate that a request has
+ // been request so we can ignore the results (2).
+
+ var cancelled = false;
+ var lineage = null;
+ var lineageTimer = null;
+
+ // update the progress bar value
+ provenanceTableCtrl.updateProgress(lineageProgress, 0);
+
+ // show the 'searching...' dialog
+ $('#lineage-query-dialog').modal('setButtonModel', [{
+ buttonText: 'Cancel',
+ color: {
+ base: '#E3E8EB',
+ hover: '#C7D2D7',
+ text: '#004849'
+ },
+ handler: {
+ click: function () {
+ cancelled = true;
+
+ // we are waiting for the next poll attempt
+ if (lineageTimer !== null) {
+ // cancel it
+ clearTimeout(lineageTimer);
+
+ // cancel the provenance
+ closeDialog();
+ }
+ }
+ }
+ }]).modal('show');
- // process the lineage
- processLineage();
- }).fail(closeDialog);
- };
- // processes the event lineage
- var processLineage = function () {
- // if the request was cancelled just ignore the current response
- if (cancelled === true) {
- closeDialog();
- return;
- }
+ // closes the searching dialog and cancels the query on the server
+ var closeDialog = function () {
+ // cancel the provenance results since we've successfully processed the results
+ if (common.isDefinedAndNotNull(lineage)) {
+ cancelLineage(lineage);
+ }
- // close the dialog if the results contain an error
- if (!nf.Common.isEmpty(lineage.results.errors)) {
- var errors = lineage.results.errors;
- nf.Dialog.showOkDialog({
- headerText: 'Process Lineage',
- dialogContent: nf.Common.formatUnorderedList(errors)
- });
+ // close the dialog
+ $('#lineage-query-dialog').modal('hide');
+ };
- closeDialog();
- return;
- }
+ // polls for the event lineage
+ var pollLineage = function () {
+ getLineage(lineage).done(function (response) {
+ lineage = response.lineage;
- // update the precent complete
- provenanceTableCtrl.updateProgress(lineageProgress, lineage.percentCompleted);
+ // process the lineage
+ processLineage();
+ }).fail(closeDialog);
+ };
- // process the results if they are finished
- if (lineage.finished === true) {
- var results = lineage.results;
+ // processes the event lineage
+ var processLineage = function () {
+ // if the request was cancelled just ignore the current response
+ if (cancelled === true) {
+ closeDialog();
+ return;
+ }
- // ensure the events haven't aged off
- if (results.nodes.length > 0) {
- // update the lineage graph
- renderEventLineage(results);
- } else {
- // inform the user that no results were found
- nf.Dialog.showOkDialog({
- headerText: 'Lineage Results',
- dialogContent: 'The lineage search has completed successfully but there no results were found. The events may have aged off.'
+ // close the dialog if the results contain an error
+ if (!common.isEmpty(lineage.results.errors)) {
+ var errors = lineage.results.errors;
+ dialog.showOkDialog({
+ headerText: 'Process Lineage',
+ dialogContent: common.formatUnorderedList(errors)
});
- }
- // close the searching.. dialog
- closeDialog();
- } else {
- lineageTimer = setTimeout(function () {
- // clear the timer since we've been invoked
- lineageTimer = null;
+ closeDialog();
+ return;
+ }
- // for the lineage
- pollLineage();
- }, 2000);
- }
- };
+ // update the precent complete
+ provenanceTableCtrl.updateProgress(lineageProgress, lineage.percentCompleted);
+
+ // process the results if they are finished
+ if (lineage.finished === true) {
+ var results = lineage.results;
+
+ // ensure the events haven't aged off
+ if (results.nodes.length > 0) {
+ // update the lineage graph
+ renderEventLineage(results);
+ } else {
+ // inform the user that no results were found
+ dialog.showOkDialog({
+ headerText: 'Lineage Results',
+ dialogContent: 'The lineage search has completed successfully but there no results were found. The events may have aged off.'
+ });
+ }
- // once the query is submitted wait until its finished
- submitLineage(lineageRequest).done(function (response) {
- lineage = response.lineage;
-
- // process the lineage, if its not done computing wait 1 second before checking again
- processLineage(1);
- }).fail(closeDialog);
- };
-
- // handles updating the lineage graph
- var renderEventLineage = function (lineageResults) {
- addLineage(lineageResults.nodes, lineageResults.links, provenanceTableCtrl);
- };
-
- // collapses the lineage for the specified event in the specified direction
- var collapseLineage = function (eventId, provenanceTableCtrl) {
- // get the event in question and collapse in the appropriate direction
- provenanceTableCtrl.getEventDetails(eventId, clusterNodeId).done(function (response) {
- var provenanceEvent = response.provenanceEvent;
- var eventUuid = provenanceEvent.flowFileUuid;
- var eventUuids = d3.set(provenanceEvent.childUuids);
-
- // determines if the specified event should be removable based on if the collapsing is fanning in/out
- var allowEventRemoval = function (fanIn, node) {
- if (fanIn) {
- return node.id !== eventId;
+ // close the searching.. dialog
+ closeDialog();
} else {
- return node.flowFileUuid !== eventUuid && $.inArray(eventUuid, node.parentUuids) === -1;
- }
- };
+ lineageTimer = setTimeout(function () {
+ // clear the timer since we've been invoked
+ lineageTimer = null;
- // determines if the specified link should be removable based on if the collapsing is fanning in/out
- var allowLinkRemoval = function (fanIn, link) {
- if (fanIn) {
- return true;
- } else {
- return link.flowFileUuid !== eventUuid;
+ // for the lineage
+ pollLineage();
+ }, 2000);
}
};
- // the event is fan in if the flowfile uuid is in the children
- var fanIn = $.inArray(eventUuid, provenanceEvent.childUuids) >= 0;
+ // once the query is submitted wait until its finished
+ submitLineage(lineageRequest).done(function (response) {
+ lineage = response.lineage;
- // collapses the specified uuids
- var collapse = function (uuids) {
- var newUuids = false;
+ // process the lineage, if its not done computing wait 1 second before checking again
+ processLineage(1);
+ }).fail(closeDialog);
+ };
- // consider each node for being collapsed
- $.each(nodeLookup.values(), function (_, node) {
- // if this node is in the uuids remove it unless its the original event or is part of this and another lineage
- if (uuids.has(node.flowFileUuid) && allowEventRemoval(fanIn, node)) {
- // remove it from the look lookup
- nodeLookup.remove(node.id);
+ // handles updating the lineage graph
+ var renderEventLineage = function (lineageResults) {
+ addLineage(lineageResults.nodes, lineageResults.links, provenanceTableCtrl);
+ };
- // include all related outgoing flow file uuids
- $.each(node.outgoing, function (_, outgoing) {
- if (!uuids.has(outgoing.flowFileUuid)) {
- uuids.add(outgoing.flowFileUuid);
- newUuids = true;
- }
- });
+ // collapses the lineage for the specified event in the specified direction
+ var collapseLineage = function (eventId, provenanceTableCtrl) {
+ // get the event in question and collapse in the appropriate direction
+ provenanceTableCtrl.getEventDetails(eventId, clusterNodeId).done(function (response) {
+ var provenanceEvent = response.provenanceEvent;
+ var eventUuid = provenanceEvent.flowFileUuid;
+ var eventUuids = d3.set(provenanceEvent.childUuids);
+
+ // determines if the specified event should be removable based on if the collapsing is fanning in/out
+ var allowEventRemoval = function (fanIn, node) {
+ if (fanIn) {
+ return node.id !== eventId;
+ } else {
+ return node.flowFileUuid !== eventUuid && $.inArray(eventUuid, node.parentUuids) === -1;
}
- });
+ };
+
+ // determines if the specified link should be removable based on if the collapsing is fanning in/out
+ var allowLinkRemoval = function (fanIn, link) {
+ if (fanIn) {
+ return true;
+ } else {
+ return link.flowFileUuid !== eventUuid;
+ }
+ };
+
+ // the event is fan in if the flowfile uuid is in the children
+ var fanIn = $.inArray(eventUuid, provenanceEvent.childUuids) >= 0;
+
+ // collapses the specified uuids
+ var collapse = function (uuids) {
+ var newUuids = false;
+
+ // consider each node for being collapsed
+ $.each(nodeLookup.values(), function (_, node) {
+ // if this node is in the uuids remove it unless its the original event or is part of this and another lineage
+ if (uuids.has(node.flowFileUuid) && allowEventRemoval(fanIn, node)) {
+ // remove it from the look lookup
+ nodeLookup.remove(node.id);
+
+ // include all related outgoing flow file uuids
+ $.each(node.outgoing, function (_, outgoing) {
+ if (!uuids.has(outgoing.flowFileUuid)) {
+ uuids.add(outgoing.flowFileUuid);
+ newUuids = true;
+ }
+ });
+ }
+ });
- // update the link data
- $.each(linkLookup.values(), function (_, link) {
- // if this link is in the uuids remove it
- if (uuids.has(link.flowFileUuid) && allowLinkRemoval(fanIn, link)) {
- // remove it from the link lookup
- linkLookup.remove(link.id);
-
- // add a related uuid that needs to be collapse
- var next = link.target;
- if (!uuids.has(next.flowFileUuid)) {
- uuids.add(next.flowFileUuid);
- newUuids = true;
+ // update the link data
+ $.each(linkLookup.values(), function (_, link) {
+ // if this link is in the uuids remove it
+ if (uuids.has(link.flowFileUuid) && allowLinkRemoval(fanIn, link)) {
+ // remove it from the link lookup
+ linkLookup.remove(link.id);
+
+ // add a related uuid that needs to be collapse
+ var next = link.target;
+ if (!uuids.has(next.flowFileUuid)) {
+ uuids.add(next.flowFileUuid);
+ newUuids = true;
+ }
}
+ });
+
+ // collapse any related uuids
+ if (newUuids) {
+ collapse(uuids);
}
- });
+ };
- // collapse any related uuids
- if (newUuids) {
- collapse(uuids);
- }
- };
+ // collapse the specified uuids
+ collapse(eventUuids);
- // collapse the specified uuids
- collapse(eventUuids);
+ // update the layout
+ refresh(provenanceTableCtrl);
+ });
+ };
- // update the layout
- refresh(provenanceTableCtrl);
+ // add menu items
+ menuItems.push({
+ 'class': 'lineage-view-parents',
+ 'text': 'Find parents',
+ 'click': function () {
+ expandLineage({
+ lineageRequestType: 'PARENTS',
+ eventId: d.id,
+ clusterNodeId: clusterNodeId
+ });
+ }
+ }, {
+ 'class': 'lineage-view-children',
+ 'text': 'Expand',
+ 'click': function () {
+ expandLineage({
+ lineageRequestType: 'CHILDREN',
+ eventId: d.id,
+ clusterNodeId: clusterNodeId
+ });
+ }
+ }, {
+ 'class': 'lineage-collapse-children',
+ 'text': 'Collapse',
+ 'click': function () {
+ // collapse the children lineage
+ collapseLineage(d.id, provenanceTableCtrl);
+ }
});
- };
+ }
- // add menu items
- menuItems.push({
- 'class': 'lineage-view-parents',
- 'text': 'Find parents',
- 'click': function () {
- expandLineage({
- lineageRequestType: 'PARENTS',
- eventId: d.id,
- clusterNodeId: clusterNodeId
- });
- }
- }, {
- 'class': 'lineage-view-children',
- 'text': 'Expand',
- 'click': function () {
- expandLineage({
- lin
<TRUNCATED>
[07/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js
index faecda7..7ae237a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js
@@ -15,66 +15,82 @@
* limitations under the License.
*/
-/* global nf, parseFloat */
-
-$(document).ready(function () {
- // preload the image for the error page - this is preloaded because the system
- // may be unavailable to return the image when the error page is rendered
- var imgSrc = 'images/bg-error.png';
- $('<img/>').attr('src', imgSrc).on('load', function () {
- $('div.message-pane').css('background-image', imgSrc);
- });
-
- // mouse over for links
- $(document).on('mouseenter', 'span.link', function () {
- $(this).addClass('link-over');
- }).on('mouseleave', 'span.link', function () {
- $(this).removeClass('link-over');
- });
+/* global nf, define, module, require, exports, parseFloat */
- // setup custom checkbox
- $(document).on('click', 'div.nf-checkbox', function () {
- var checkbox = $(this);
- if (checkbox.hasClass('checkbox-unchecked')) {
- checkbox.removeClass('checkbox-unchecked').addClass('checkbox-checked');
- } else {
- checkbox.removeClass('checkbox-checked').addClass('checkbox-unchecked');
- }
- });
-
- // show the loading icon when appropriate
- $(document).ajaxStart(function () {
- // show the loading indicator
- $('div.loading-container').addClass('ajax-loading');
- }).ajaxStop(function () {
- // hide the loading indicator
- $('div.loading-container').removeClass('ajax-loading');
- });
-
- // shows the logout link in the message-pane when appropriate and schedule token refresh
- if (nf.Storage.getItem('jwt') !== null) {
- $('#user-logout-container').css('display', 'block');
- nf.Common.scheduleTokenRefresh();
+// Define a common utility class used across the entire application.
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Storage'],
+ function ($, storage) {
+ return (nf.Common = factory($, storage));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Common = factory(require('jquery'),
+ require('nf.Storage')));
+ } else {
+ nf.Common = factory(root.$,
+ root.nf.Storage);
}
-
- // handle logout
- $('#user-logout').on('click', function () {
- nf.Storage.removeItem('jwt');
- window.location = '/nifi/login';
- });
-
- // handle home
- $('#user-home').on('click', function () {
- if (top !== window) {
- parent.window.location = '/nifi';
- } else {
- window.location = '/nifi';
+}(this, function ($, storage) {
+ 'use strict';
+
+ $(document).ready(function () {
+ // preload the image for the error page - this is preloaded because the system
+ // may be unavailable to return the image when the error page is rendered
+ var imgSrc = 'images/bg-error.png';
+ $('<img/>').attr('src', imgSrc).on('load', function () {
+ $('div.message-pane').css('background-image', imgSrc);
+ });
+
+ // mouse over for links
+ $(document).on('mouseenter', 'span.link', function () {
+ $(this).addClass('link-over');
+ }).on('mouseleave', 'span.link', function () {
+ $(this).removeClass('link-over');
+ });
+
+ // setup custom checkbox
+ $(document).on('click', 'div.nf-checkbox', function () {
+ var checkbox = $(this);
+ if (checkbox.hasClass('checkbox-unchecked')) {
+ checkbox.removeClass('checkbox-unchecked').addClass('checkbox-checked');
+ } else {
+ checkbox.removeClass('checkbox-checked').addClass('checkbox-unchecked');
+ }
+ });
+
+ // show the loading icon when appropriate
+ $(document).ajaxStart(function () {
+ // show the loading indicator
+ $('div.loading-container').addClass('ajax-loading');
+ }).ajaxStop(function () {
+ // hide the loading indicator
+ $('div.loading-container').removeClass('ajax-loading');
+ });
+
+ // shows the logout link in the message-pane when appropriate and schedule token refresh
+ if (storage.getItem('jwt') !== null) {
+ $('#user-logout-container').css('display', 'block');
+ nfCommon.scheduleTokenRefresh();
}
+
+ // handle logout
+ $('#user-logout').on('click', function () {
+ storage.removeItem('jwt');
+ window.location = '/nifi/login';
+ });
+
+ // handle home
+ $('#user-home').on('click', function () {
+ if (top !== window) {
+ parent.window.location = '/nifi';
+ } else {
+ window.location = '/nifi';
+ }
+ });
});
-});
-// Define a common utility class used across the entire application.
-nf.Common = (function () {
// interval for cancelling token refresh when necessary
var tokenRefreshInterval = null;
@@ -120,7 +136,7 @@ nf.Common = (function () {
description: 'Allows users to view/modify Counters'
}];
- return {
+ var nfCommon = {
ANONYMOUS_USER_TEXT: 'Anonymous user',
config: {
@@ -131,12 +147,12 @@ nf.Common = (function () {
},
show: {
solo: true,
- effect: function(offset) {
+ effect: function (offset) {
$(this).slideDown(100);
}
},
hide: {
- effect: function(offset) {
+ effect: function (offset) {
$(this).slideUp(100);
}
},
@@ -174,8 +190,8 @@ nf.Common = (function () {
var markup = '';
// restriction
- if (nf.Common.isBlank(dataContext.usageRestriction) === false) {
- markup += '<div class="view-usage-restriction fa fa-shield"></div><span class="hidden row-id">' + nf.Common.escapeHtml(dataContext.id) + '</span>';
+ if (nfCommon.isBlank(dataContext.usageRestriction) === false) {
+ markup += '<div class="view-usage-restriction fa fa-shield"></div><span class="hidden row-id">' + nfCommon.escapeHtml(dataContext.id) + '</span>';
} else {
markup += '<div class="fa"></div>';
}
@@ -188,11 +204,11 @@ nf.Common = (function () {
/**
* Sets the current user.
- *
+ *
* @param currentUser
*/
setCurrentUser: function (currentUser) {
- nf.Common.currentUser = currentUser;
+ nfCommon.currentUser = currentUser;
},
/**
@@ -203,12 +219,12 @@ nf.Common = (function () {
if (tokenRefreshInterval !== null) {
clearInterval(tokenRefreshInterval);
}
-
+
// set the interval to one hour
- var interval = nf.Common.MILLIS_PER_MINUTE;
-
+ var interval = nfCommon.MILLIS_PER_MINUTE;
+
var checkExpiration = function () {
- var expiration = nf.Storage.getItemExpiration('jwt');
+ var expiration = storage.getItemExpiration('jwt');
// ensure there is an expiration and token present
if (expiration !== null) {
@@ -216,11 +232,11 @@ nf.Common = (function () {
var now = new Date();
// get the time remainging plus a little bonus time to reload the token
- var timeRemaining = expirationDate.valueOf() - now.valueOf() - (30 * nf.Common.MILLIS_PER_SECOND);
+ var timeRemaining = expirationDate.valueOf() - now.valueOf() - (30 * nfCommon.MILLIS_PER_SECOND);
if (timeRemaining < interval) {
- if ($('#current-user').text() !== nf.Common.ANONYMOUS_USER_TEXT && !$('#anonymous-user-alert').is(':visible')) {
+ if ($('#current-user').text() !== nfCommon.ANONYMOUS_USER_TEXT && !$('#anonymous-user-alert').is(':visible')) {
// if the token will expire before the next interval minus some bonus time, notify the user to re-login
- $('#anonymous-user-alert').show().qtip($.extend({}, nf.Common.config.tooltipConfig, {
+ $('#anonymous-user-alert').show().qtip($.extend({}, nfCommon.config.tooltipConfig, {
content: 'Your session will expire soon. Please log in again to avoid being automatically logged out.',
position: {
my: 'top right',
@@ -231,10 +247,10 @@ nf.Common = (function () {
}
}
};
-
+
// perform initial check
checkExpiration();
-
+
// schedule subsequent checks
tokenRefreshInterval = setInterval(checkExpiration, interval);
},
@@ -247,9 +263,9 @@ nf.Common = (function () {
if (anonymousUserAlert.data('qtip')) {
anonymousUserAlert.qtip('api').destroy(true);
}
-
+
// alert user's of anonymous access
- anonymousUserAlert.show().qtip($.extend({}, nf.Common.config.tooltipConfig, {
+ anonymousUserAlert.show().qtip($.extend({}, nfCommon.config.tooltipConfig, {
content: 'You are accessing with limited authority. Log in or request an account to access with additional authority granted to you by an administrator.',
position: {
my: 'top right',
@@ -258,18 +274,18 @@ nf.Common = (function () {
}));
// render the anonymous user text
- $('#current-user').text(nf.Common.ANONYMOUS_USER_TEXT).show();
+ $('#current-user').text(nfCommon.ANONYMOUS_USER_TEXT).show();
},
/**
* Extracts the subject from the specified jwt. If the jwt is not as expected
* an empty string is returned.
- *
+ *
* @param {string} jwt
* @returns {string}
*/
getJwtPayload: function (jwt) {
- if (nf.Common.isDefinedAndNotNull(jwt)) {
+ if (nfCommon.isDefinedAndNotNull(jwt)) {
var segments = jwt.split(/\./);
if (segments.length !== 3) {
return '';
@@ -278,7 +294,7 @@ nf.Common = (function () {
var rawPayload = $.base64.atob(segments[1]);
var payload = JSON.parse(rawPayload);
- if (nf.Common.isDefinedAndNotNull(payload)) {
+ if (nfCommon.isDefinedAndNotNull(payload)) {
return payload;
} else {
return null;
@@ -290,12 +306,12 @@ nf.Common = (function () {
/**
* Determines whether the current user can access provenance.
- *
+ *
* @returns {boolean}
*/
canAccessProvenance: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.provenancePermissions.canRead === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.provenancePermissions.canRead === true;
} else {
return false;
}
@@ -307,8 +323,8 @@ nf.Common = (function () {
* @returns {boolean}
*/
canAccessRestrictedComponents: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.restrictedComponentsPermissions.canWrite === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.restrictedComponentsPermissions.canWrite === true;
} else {
return false;
}
@@ -316,12 +332,12 @@ nf.Common = (function () {
/**
* Determines whether the current user can access counters.
- *
+ *
* @returns {boolean}
*/
canAccessCounters: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.countersPermissions.canRead === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.countersPermissions.canRead === true;
} else {
return false;
}
@@ -329,12 +345,12 @@ nf.Common = (function () {
/**
* Determines whether the current user can modify counters.
- *
+ *
* @returns {boolean}
*/
canModifyCounters: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.countersPermissions.canRead === true && nf.Common.currentUser.countersPermissions.canWrite === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.countersPermissions.canRead === true && nfCommon.currentUser.countersPermissions.canWrite === true;
} else {
return false;
}
@@ -346,8 +362,8 @@ nf.Common = (function () {
* @returns {boolean}
*/
canAccessTenants: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.tenantsPermissions.canRead === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.tenantsPermissions.canRead === true;
} else {
return false;
}
@@ -359,8 +375,8 @@ nf.Common = (function () {
* @returns {boolean}
*/
canModifyTenants: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.tenantsPermissions.canRead === true && nf.Common.currentUser.tenantsPermissions.canWrite === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.tenantsPermissions.canRead === true && nfCommon.currentUser.tenantsPermissions.canWrite === true;
} else {
return false;
}
@@ -372,8 +388,8 @@ nf.Common = (function () {
* @returns {boolean}
*/
canAccessPolicies: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.policiesPermissions.canRead === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.policiesPermissions.canRead === true;
} else {
return false;
}
@@ -385,8 +401,8 @@ nf.Common = (function () {
* @returns {boolean}
*/
canModifyPolicies: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.policiesPermissions.canRead === true && nf.Common.currentUser.policiesPermissions.canWrite === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.policiesPermissions.canRead === true && nfCommon.currentUser.policiesPermissions.canWrite === true;
} else {
return false;
}
@@ -398,8 +414,8 @@ nf.Common = (function () {
* @returns {boolean}
*/
canAccessController: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.controllerPermissions.canRead === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.controllerPermissions.canRead === true;
} else {
return false;
}
@@ -411,8 +427,8 @@ nf.Common = (function () {
* @returns {boolean}
*/
canModifyController: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.controllerPermissions.canRead === true && nf.Common.currentUser.controllerPermissions.canWrite === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.controllerPermissions.canRead === true && nfCommon.currentUser.controllerPermissions.canWrite === true;
} else {
return false;
}
@@ -424,8 +440,8 @@ nf.Common = (function () {
* @returns {boolean}
*/
canAccessSystem: function () {
- if (nf.Common.isDefinedAndNotNull(nf.Common.currentUser)) {
- return nf.Common.currentUser.systemPermissions.canRead === true;
+ if (nfCommon.isDefinedAndNotNull(nfCommon.currentUser)) {
+ return nfCommon.currentUser.systemPermissions.canRead === true;
} else {
return false;
}
@@ -434,7 +450,7 @@ nf.Common = (function () {
/**
* Adds a mouse over effect for the specified selector using
* the specified styles.
- *
+ *
* @argument {string} selector The selector for the element to add a hover effect for
* @argument {string} normalStyle The css style for the normal state
* @argument {string} overStyle The css style for the over state
@@ -454,7 +470,7 @@ nf.Common = (function () {
* @param {HTMLElement} element The DOM element to toggle .scrollable upon.
*/
toggleScrollable: function (element) {
- if ($(element).is(':visible')){
+ if ($(element).is(':visible')) {
if (element.offsetHeight < element.scrollHeight ||
element.offsetWidth < element.scrollWidth) {
// your element has overflow
@@ -471,158 +487,18 @@ nf.Common = (function () {
* @param {string} hex The hex color to test.
* @returns {string} The contrasting color string.
*/
- determineContrastColor: function (hex){
- if (parseInt(hex, 16) > 0xffffff/1.5) {
+ determineContrastColor: function (hex) {
+ if (parseInt(hex, 16) > 0xffffff / 1.5) {
return '#000000';
}
return '#ffffff';
},
-
- /**
- * Method for handling ajax errors.
- *
- * @argument {object} xhr The XmlHttpRequest
- * @argument {string} status The status of the request
- * @argument {string} error The error
- */
- handleAjaxError: function (xhr, status, error) {
- if (status === 'canceled') {
- if ($('#splash').is(':visible')) {
- $('#message-title').text('Session Expired');
- $('#message-content').text('Your session has expired. Please reload to log in again.');
-
- // show the error pane
- $('#message-pane').show();
- } else {
- nf.Dialog.showOkDialog({
- headerText: 'Session Expired',
- dialogContent: 'Your session has expired. Please press Ok to log in again.',
- okHandler: function () {
- window.location = '/nifi';
- }
- });
- }
-
- // close the canvas
- nf.Common.closeCanvas();
- return;
- }
-
- // if an error occurs while the splash screen is visible close the canvas show the error message
- if ($('#splash').is(':visible')) {
- if (xhr.status === 401) {
- $('#message-title').text('Unauthorized');
- } else if (xhr.status === 403) {
- $('#message-title').text('Insufficient Permissions');
- } else if (xhr.status === 409) {
- $('#message-title').text('Invalid State');
- } else {
- $('#message-title').text('An unexpected error has occurred');
- }
-
- if ($.trim(xhr.responseText) === '') {
- $('#message-content').text('Please check the logs.');
- } else {
- $('#message-content').text(xhr.responseText);
- }
-
- // show the error pane
- $('#message-pane').show();
-
- // close the canvas
- nf.Common.closeCanvas();
- return;
- }
-
- // status code 400, 404, and 409 are expected response codes for common errors.
- if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409 || xhr.status === 503) {
- nf.Dialog.showOkDialog({
- headerText: 'Error',
- dialogContent: nf.Common.escapeHtml(xhr.responseText)
- });
- } else if (xhr.status === 403) {
- nf.Dialog.showOkDialog({
- headerText: 'Insufficient Permissions',
- dialogContent: nf.Common.escapeHtml(xhr.responseText)
- });
- } else {
- if (xhr.status < 99 || xhr.status === 12007 || xhr.status === 12029) {
- var content = 'Please ensure the application is running and check the logs for any errors.';
- if (nf.Common.isDefinedAndNotNull(status)) {
- if (status === 'timeout') {
- content = 'Request has timed out. Please ensure the application is running and check the logs for any errors.';
- } else if (status === 'abort') {
- content = 'Request has been aborted.';
- } else if (status === 'No Transport') {
- content = 'Request transport mechanism failed. Please ensure the host where the application is running is accessible.';
- }
- }
- $('#message-title').text('Unable to communicate with NiFi');
- $('#message-content').text(content);
- } else if (xhr.status === 401) {
- $('#message-title').text('Unauthorized');
- if ($.trim(xhr.responseText) === '') {
- $('#message-content').text('Authentication is required to use this NiFi.');
- } else {
- $('#message-content').text(xhr.responseText);
- }
- } else if (xhr.status === 500) {
- $('#message-title').text('An unexpected error has occurred');
- if ($.trim(xhr.responseText) === '') {
- $('#message-content').text('An error occurred communicating with the application core. Please check the logs and fix any configuration issues before restarting.');
- } else {
- $('#message-content').text(xhr.responseText);
- }
- } else if (xhr.status === 200 || xhr.status === 201) {
- $('#message-title').text('Parse Error');
- if ($.trim(xhr.responseText) === '') {
- $('#message-content').text('Unable to interpret response from NiFi.');
- } else {
- $('#message-content').text(xhr.responseText);
- }
- } else {
- $('#message-title').text(xhr.status + ': Unexpected Response');
- $('#message-content').text('An unexpected error has occurred. Please check the logs.');
- }
-
- // show the error pane
- $('#message-pane').show();
-
- // close the canvas
- nf.Common.closeCanvas();
- }
- },
-
- /**
- * Closes the canvas by removing the splash screen and stats poller.
- */
- closeCanvas: function () {
- nf.Common.showLogoutLink();
-
- // ensure this javascript has been loaded in the nf canvas page
- if (nf.Common.isDefinedAndNotNull(nf.Canvas)) {
- // hide the splash screen if required
- if ($('#splash').is(':visible')) {
- nf.Canvas.hideSplash();
- }
-
- // hide the context menu
- nf.ContextMenu.hide();
-
- // shut off the auto refresh
- nf.Canvas.stopPolling();
-
- // allow page refresh with ctrl-r
- nf.Canvas.disableRefreshHotKey();
- }
- },
-
/**
* Shows the logout link if appropriate.
*/
showLogoutLink: function () {
- if (nf.Storage.getItem('jwt') === null) {
+ if (storage.getItem('jwt') === null) {
$('#user-logout-container').css('display', 'none');
} else {
$('#user-logout-container').css('display', 'block');
@@ -636,19 +512,19 @@ nf.Common = (function () {
*/
isContentViewConfigured: function () {
var contentViewerUrl = $('#nifi-content-viewer-url').text();
- return !nf.Common.isBlank(contentViewerUrl);
+ return !nfCommon.isBlank(contentViewerUrl);
},
/**
- * Populates the specified field with the specified value. If the value is
+ * Populates the specified field with the specified value. If the value is
* undefined, the field will read 'No value set.' If the value is an empty
* string, the field will read 'Empty string set.'
- *
+ *
* @argument {string} target The dom Id of the target
* @argument {string} value The value
*/
populateField: function (target, value) {
- if (nf.Common.isUndefined(value) || nf.Common.isNull(value)) {
+ if (nfCommon.isUndefined(value) || nfCommon.isNull(value)) {
return $('#' + target).addClass('unset').text('No value set');
} else if (value === '') {
return $('#' + target).addClass('blank').text('Empty string set');
@@ -660,7 +536,7 @@ nf.Common = (function () {
/**
* Clears the specified field. Removes any style that may have been applied
* by a preceeding call to populateField.
- *
+ *
* @argument {string} target The dom Id of the target
*/
clearField: function (target) {
@@ -669,11 +545,11 @@ nf.Common = (function () {
/**
* Cleans up any tooltips that have been created for the specified container.
- *
+ *
* @param {jQuery} container
* @param {string} tooltipTarget
*/
- cleanUpTooltips: function(container, tooltipTarget) {
+ cleanUpTooltips: function (container, tooltipTarget) {
container.find(tooltipTarget).each(function () {
var tip = $(this);
if (tip.data('qtip')) {
@@ -685,7 +561,7 @@ nf.Common = (function () {
/**
* Formats the tooltip for the specified property.
- *
+ *
* @param {object} propertyDescriptor The property descriptor
* @param {object} propertyHistory The property history
* @returns {string}
@@ -694,23 +570,23 @@ nf.Common = (function () {
var tipContent = [];
// show the property description if applicable
- if (nf.Common.isDefinedAndNotNull(propertyDescriptor)) {
- if (!nf.Common.isBlank(propertyDescriptor.description)) {
- tipContent.push(nf.Common.escapeHtml(propertyDescriptor.description));
+ if (nfCommon.isDefinedAndNotNull(propertyDescriptor)) {
+ if (!nfCommon.isBlank(propertyDescriptor.description)) {
+ tipContent.push(nfCommon.escapeHtml(propertyDescriptor.description));
}
- if (!nf.Common.isBlank(propertyDescriptor.defaultValue)) {
- tipContent.push('<b>Default value:</b> ' + nf.Common.escapeHtml(propertyDescriptor.defaultValue));
+ if (!nfCommon.isBlank(propertyDescriptor.defaultValue)) {
+ tipContent.push('<b>Default value:</b> ' + nfCommon.escapeHtml(propertyDescriptor.defaultValue));
}
- if (!nf.Common.isBlank(propertyDescriptor.supportsEl)) {
- tipContent.push('<b>Supports expression language:</b> ' + nf.Common.escapeHtml(propertyDescriptor.supportsEl));
+ if (!nfCommon.isBlank(propertyDescriptor.supportsEl)) {
+ tipContent.push('<b>Supports expression language:</b> ' + nfCommon.escapeHtml(propertyDescriptor.supportsEl));
}
}
- if (nf.Common.isDefinedAndNotNull(propertyHistory)) {
- if (!nf.Common.isEmpty(propertyHistory.previousValues)) {
+ if (nfCommon.isDefinedAndNotNull(propertyHistory)) {
+ if (!nfCommon.isEmpty(propertyHistory.previousValues)) {
var history = [];
$.each(propertyHistory.previousValues, function (_, previousValue) {
- history.push('<li>' + nf.Common.escapeHtml(previousValue.previousValue) + ' - ' + nf.Common.escapeHtml(previousValue.timestamp) + ' (' + nf.Common.escapeHtml(previousValue.userIdentity) + ')</li>');
+ history.push('<li>' + nfCommon.escapeHtml(previousValue.previousValue) + ' - ' + nfCommon.escapeHtml(previousValue.timestamp) + ' (' + nfCommon.escapeHtml(previousValue.userIdentity) + ')</li>');
});
tipContent.push('<b>History:</b><ul class="property-info">' + history.join('') + '</ul>');
}
@@ -725,25 +601,25 @@ nf.Common = (function () {
/**
* Formats the specified property (name and value) accordingly.
- *
+ *
* @argument {string} name The name of the property
* @argument {string} value The value of the property
*/
formatProperty: function (name, value) {
- return '<div><span class="label">' + nf.Common.formatValue(name) + ': </span>' + nf.Common.formatValue(value) + '</div>';
+ return '<div><span class="label">' + nfCommon.formatValue(name) + ': </span>' + nfCommon.formatValue(value) + '</div>';
},
/**
* Formats the specified value accordingly.
- *
+ *
* @argument {string} value The value of the property
*/
formatValue: function (value) {
- if (nf.Common.isDefinedAndNotNull(value)) {
+ if (nfCommon.isDefinedAndNotNull(value)) {
if (value === '') {
return '<span class="blank" style="font-size: 13px; padding-top: 2px;">Empty string set</span>';
} else {
- return nf.Common.escapeHtml(value);
+ return nfCommon.escapeHtml(value);
}
} else {
return '<span class="unset" style="font-size: 13px; padding-top: 2px;">No value set</span>';
@@ -751,9 +627,9 @@ nf.Common = (function () {
},
/**
- * HTML escapes the specified string. If the string is null
+ * HTML escapes the specified string. If the string is null
* or undefined, an empty string is returned.
- *
+ *
* @returns {string}
*/
escapeHtml: (function () {
@@ -767,7 +643,7 @@ nf.Common = (function () {
};
return function (string) {
- if (nf.Common.isDefinedAndNotNull(string)) {
+ if (nfCommon.isDefinedAndNotNull(string)) {
return String(string).replace(/[&<>"'\/]/g, function (s) {
return entityMap[s];
});
@@ -779,11 +655,11 @@ nf.Common = (function () {
/**
* Determines if the specified property is sensitive.
- *
+ *
* @argument {object} propertyDescriptor The property descriptor
*/
isSensitiveProperty: function (propertyDescriptor) {
- if (nf.Common.isDefinedAndNotNull(propertyDescriptor)) {
+ if (nfCommon.isDefinedAndNotNull(propertyDescriptor)) {
return propertyDescriptor.sensitive === true;
} else {
return false;
@@ -792,11 +668,11 @@ nf.Common = (function () {
/**
* Determines if the specified property is required.
- *
+ *
* @param {object} propertyDescriptor The property descriptor
*/
isRequiredProperty: function (propertyDescriptor) {
- if (nf.Common.isDefinedAndNotNull(propertyDescriptor)) {
+ if (nfCommon.isDefinedAndNotNull(propertyDescriptor)) {
return propertyDescriptor.required === true;
} else {
return false;
@@ -805,11 +681,11 @@ nf.Common = (function () {
/**
* Determines if the specified property is required.
- *
+ *
* @param {object} propertyDescriptor The property descriptor
*/
isDynamicProperty: function (propertyDescriptor) {
- if (nf.Common.isDefinedAndNotNull(propertyDescriptor)) {
+ if (nfCommon.isDefinedAndNotNull(propertyDescriptor)) {
return propertyDescriptor.dynamic === true;
} else {
return false;
@@ -818,11 +694,11 @@ nf.Common = (function () {
/**
* Gets the allowable values for the specified property.
- *
+ *
* @argument {object} propertyDescriptor The property descriptor
*/
getAllowableValues: function (propertyDescriptor) {
- if (nf.Common.isDefinedAndNotNull(propertyDescriptor)) {
+ if (nfCommon.isDefinedAndNotNull(propertyDescriptor)) {
return propertyDescriptor.allowableValues;
} else {
return null;
@@ -831,11 +707,11 @@ nf.Common = (function () {
/**
* Returns whether the specified property supports EL.
- *
+ *
* @param {object} propertyDescriptor The property descriptor
*/
supportsEl: function (propertyDescriptor) {
- if (nf.Common.isDefinedAndNotNull(propertyDescriptor)) {
+ if (nfCommon.isDefinedAndNotNull(propertyDescriptor)) {
return propertyDescriptor.supportsEl === true;
} else {
return false;
@@ -843,9 +719,9 @@ nf.Common = (function () {
},
/**
- * Formats the specified array as an unordered list. If the array is not an
+ * Formats the specified array as an unordered list. If the array is not an
* array, null is returned.
- *
+ *
* @argument {array} array The array to convert into an unordered list
*/
formatUnorderedList: function (array) {
@@ -869,7 +745,7 @@ nf.Common = (function () {
* Extracts the contents of the specified str after the strToFind. If the
* strToFind is not found or the last part of the str, an empty string is
* returned.
- *
+ *
* @argument {string} str The full string
* @argument {string} strToFind The substring to find
*/
@@ -913,7 +789,7 @@ nf.Common = (function () {
* @argument {string} str The full string
* @argument {string} strToFind The substring to find
*/
- substringBeforeFirst: function(str, strToFind) {
+ substringBeforeFirst: function (str, strToFind) {
var result = '';
var indexOfStrToFind = str.indexOf(strToFind);
if (indexOfStrToFind >= 0) {
@@ -924,7 +800,7 @@ nf.Common = (function () {
/**
* Updates the mouse pointer.
- *
+ *
* @argument {string} domId The id of the element for the new cursor style
* @argument {boolean} isMouseOver Whether or not the mouse is over the element
*/
@@ -944,7 +820,7 @@ nf.Common = (function () {
*/
getAccessToken: function (accessTokenUrl) {
return $.Deferred(function (deferred) {
- if (nf.Storage.hasItem('jwt')) {
+ if (storage.hasItem('jwt')) {
$.ajax({
type: 'POST',
url: accessTokenUrl
@@ -969,7 +845,7 @@ nf.Common = (function () {
/**
* Formats the specified duration.
- *
+ *
* @param {integer} duration in millis
*/
formatDuration: function (duration) {
@@ -977,35 +853,35 @@ nf.Common = (function () {
duration = duration < 1 ? 0 : duration;
// determine the number of days in the specified duration
- var days = duration / nf.Common.MILLIS_PER_DAY;
+ var days = duration / nfCommon.MILLIS_PER_DAY;
days = days >= 1 ? parseInt(days, 10) : 0;
- duration %= nf.Common.MILLIS_PER_DAY;
+ duration %= nfCommon.MILLIS_PER_DAY;
// remaining duration should be less than 1 day, get number of hours
- var hours = duration / nf.Common.MILLIS_PER_HOUR;
+ var hours = duration / nfCommon.MILLIS_PER_HOUR;
hours = hours >= 1 ? parseInt(hours, 10) : 0;
- duration %= nf.Common.MILLIS_PER_HOUR;
+ duration %= nfCommon.MILLIS_PER_HOUR;
// remaining duration should be less than 1 hour, get number of minutes
- var minutes = duration / nf.Common.MILLIS_PER_MINUTE;
+ var minutes = duration / nfCommon.MILLIS_PER_MINUTE;
minutes = minutes >= 1 ? parseInt(minutes, 10) : 0;
- duration %= nf.Common.MILLIS_PER_MINUTE;
+ duration %= nfCommon.MILLIS_PER_MINUTE;
// remaining duration should be less than 1 minute, get number of seconds
- var seconds = duration / nf.Common.MILLIS_PER_SECOND;
+ var seconds = duration / nfCommon.MILLIS_PER_SECOND;
seconds = seconds >= 1 ? parseInt(seconds, 10) : 0;
// remaining duration is the number millis (don't support sub millisecond resolution)
- duration = Math.floor(duration % nf.Common.MILLIS_PER_SECOND);
+ duration = Math.floor(duration % nfCommon.MILLIS_PER_SECOND);
// format the time
- var time = nf.Common.pad(hours, 2, '0') +
- ':' +
- nf.Common.pad(minutes, 2, '0') +
- ':' +
- nf.Common.pad(seconds, 2, '0') +
- '.' +
- nf.Common.pad(duration, 3, '0');
+ var time = nfCommon.pad(hours, 2, '0') +
+ ':' +
+ nfCommon.pad(minutes, 2, '0') +
+ ':' +
+ nfCommon.pad(seconds, 2, '0') +
+ '.' +
+ nfCommon.pad(duration, 3, '0');
// only include days if appropriate
if (days > 0) {
@@ -1025,31 +901,31 @@ nf.Common = (function () {
/**
* Formats the specified number of bytes into a human readable string.
- *
+ *
* @param {integer} dataSize
* @returns {string}
*/
formatDataSize: function (dataSize) {
// check terabytes
- var dataSizeToFormat = parseFloat(dataSize / nf.Common.BYTES_IN_TERABYTE);
+ var dataSizeToFormat = parseFloat(dataSize / nfCommon.BYTES_IN_TERABYTE);
if (dataSizeToFormat > 1) {
return dataSizeToFormat.toFixed(2) + " TB";
}
// check gigabytes
- dataSizeToFormat = parseFloat(dataSize / nf.Common.BYTES_IN_GIGABYTE);
+ dataSizeToFormat = parseFloat(dataSize / nfCommon.BYTES_IN_GIGABYTE);
if (dataSizeToFormat > 1) {
return dataSizeToFormat.toFixed(2) + " GB";
}
// check megabytes
- dataSizeToFormat = parseFloat(dataSize / nf.Common.BYTES_IN_MEGABYTE);
+ dataSizeToFormat = parseFloat(dataSize / nfCommon.BYTES_IN_MEGABYTE);
if (dataSizeToFormat > 1) {
return dataSizeToFormat.toFixed(2) + " MB";
}
// check kilobytes
- dataSizeToFormat = parseFloat(dataSize / nf.Common.BYTES_IN_KILOBYTE);
+ dataSizeToFormat = parseFloat(dataSize / nfCommon.BYTES_IN_KILOBYTE);
if (dataSizeToFormat > 1) {
return dataSizeToFormat.toFixed(2) + " KB";
}
@@ -1061,7 +937,7 @@ nf.Common = (function () {
/**
* Formats the specified integer as a string (adding commas). At this
* point this does not take into account any locales.
- *
+ *
* @param {integer} integer
*/
formatInteger: function (integer) {
@@ -1075,11 +951,11 @@ nf.Common = (function () {
/**
* Formats the specified float using two demical places.
- *
+ *
* @param {float} f
*/
formatFloat: function (f) {
- if (nf.Common.isUndefinedOrNull(f)) {
+ if (nfCommon.isUndefinedOrNull(f)) {
return 0.00 + '';
}
return f.toFixed(2) + '';
@@ -1089,7 +965,7 @@ nf.Common = (function () {
* Pads the specified value to the specified width with the specified character.
* If the specified value is already wider than the specified width, the original
* value is returned.
- *
+ *
* @param {integer} value
* @param {integer} width
* @param {string} character
@@ -1108,37 +984,37 @@ nf.Common = (function () {
/**
* Formats the specified DateTime.
- *
+ *
* @param {Date} date
* @returns {String}
*/
formatDateTime: function (date) {
- return nf.Common.pad(date.getMonth() + 1, 2, '0') +
- '/' +
- nf.Common.pad(date.getDate(), 2, '0') +
- '/' +
- nf.Common.pad(date.getFullYear(), 2, '0') +
- ' ' +
- nf.Common.pad(date.getHours(), 2, '0') +
- ':' +
- nf.Common.pad(date.getMinutes(), 2, '0') +
- ':' +
- nf.Common.pad(date.getSeconds(), 2, '0') +
- '.' +
- nf.Common.pad(date.getMilliseconds(), 3, '0');
+ return nfCommon.pad(date.getMonth() + 1, 2, '0') +
+ '/' +
+ nfCommon.pad(date.getDate(), 2, '0') +
+ '/' +
+ nfCommon.pad(date.getFullYear(), 2, '0') +
+ ' ' +
+ nfCommon.pad(date.getHours(), 2, '0') +
+ ':' +
+ nfCommon.pad(date.getMinutes(), 2, '0') +
+ ':' +
+ nfCommon.pad(date.getSeconds(), 2, '0') +
+ '.' +
+ nfCommon.pad(date.getMilliseconds(), 3, '0');
},
/**
* Parses the specified date time into a Date object. The resulting
* object does not account for timezone and should only be used for
* performing relative comparisons.
- *
+ *
* @param {string} rawDateTime
* @returns {Date}
*/
parseDateTime: function (rawDateTime) {
// handle non date values
- if (!nf.Common.isDefinedAndNotNull(rawDateTime)) {
+ if (!nfCommon.isDefinedAndNotNull(rawDateTime)) {
return new Date();
}
if (rawDateTime === 'No value set') {
@@ -1176,7 +1052,7 @@ nf.Common = (function () {
/**
* Parses the specified duration and returns the total number of millis.
- *
+ *
* @param {string} rawDuration
* @returns {number} The number of millis
*/
@@ -1199,7 +1075,7 @@ nf.Common = (function () {
/**
* Parses the specified size.
- *
+ *
* @param {string} rawSize
* @returns {int}
*/
@@ -1223,7 +1099,7 @@ nf.Common = (function () {
/**
* Parses the specified count.
- *
+ *
* @param {string} rawCount
* @returns {int}
*/
@@ -1248,25 +1124,25 @@ nf.Common = (function () {
/**
* Determines if the specified object is defined and not null.
- *
+ *
* @argument {object} obj The object to test
*/
isDefinedAndNotNull: function (obj) {
- return !nf.Common.isUndefined(obj) && !nf.Common.isNull(obj);
+ return !nfCommon.isUndefined(obj) && !nfCommon.isNull(obj);
},
/**
* Determines if the specified object is undefined or null.
- *
+ *
* @param {object} obj The object to test
*/
isUndefinedOrNull: function (obj) {
- return nf.Common.isUndefined(obj) || nf.Common.isNull(obj);
+ return nfCommon.isUndefined(obj) || nfCommon.isNull(obj);
},
/**
* Determines if the specified object is undefined.
- *
+ *
* @argument {object} obj The object to test
*/
isUndefined: function (obj) {
@@ -1275,16 +1151,16 @@ nf.Common = (function () {
/**
* Determines whether the specified string is blank (or null or undefined).
- *
+ *
* @argument {string} str The string to test
*/
isBlank: function (str) {
- return nf.Common.isUndefined(str) || nf.Common.isNull(str) || $.trim(str) === '';
+ return nfCommon.isUndefined(str) || nfCommon.isNull(str) || $.trim(str) === '';
},
/**
* Determines if the specified object is null.
- *
+ *
* @argument {object} obj The object to test
*/
isNull: function (obj) {
@@ -1294,7 +1170,7 @@ nf.Common = (function () {
/**
* Determines if the specified array is empty. If the specified arg is not an
* array, then true is returned.
- *
+ *
* @argument {array} arr The array to test
*/
isEmpty: function (arr) {
@@ -1304,7 +1180,7 @@ nf.Common = (function () {
/**
* Determines if these are the same bulletins. If both arguments are not
* arrays, false is returned.
- *
+ *
* @param {array} bulletins
* @param {array} otherBulletins
* @returns {boolean}
@@ -1328,7 +1204,7 @@ nf.Common = (function () {
/**
* Formats the specified bulletin list.
- *
+ *
* @argument {array} bulletins The bulletins
* @return {array} The jQuery objects
*/
@@ -1340,8 +1216,8 @@ nf.Common = (function () {
// format the node address
var nodeAddress = '';
- if (nf.Common.isDefinedAndNotNull(bulletin.nodeAddress)) {
- nodeAddress = '- ' + nf.Common.escapeHtml(bulletin.nodeAddress) + ' - ';
+ if (nfCommon.isDefinedAndNotNull(bulletin.nodeAddress)) {
+ nodeAddress = '- ' + nfCommon.escapeHtml(bulletin.nodeAddress) + ' - ';
}
// set the bulletin message (treat as text)
@@ -1351,10 +1227,10 @@ nf.Common = (function () {
// create the bulletin message
var formattedBulletin = $('<div>' +
- nf.Common.escapeHtml(bulletin.timestamp) + ' ' +
- nodeAddress + ' ' +
- '<b>' + nf.Common.escapeHtml(bulletin.level) + '</b> ' +
- '</div>').append(bulletinMessage);
+ nfCommon.escapeHtml(bulletin.timestamp) + ' ' +
+ nodeAddress + ' ' +
+ '<b>' + nfCommon.escapeHtml(bulletin.level) + '</b> ' +
+ '</div>').append(bulletinMessage);
formattedBulletinEntities.push(formattedBulletin);
}
@@ -1364,9 +1240,13 @@ nf.Common = (function () {
getPolicyTypeListing: function (value) {
var nest = d3.nest()
- .key(function(d) { return d.value; })
+ .key(function (d) {
+ return d.value;
+ })
.map(policyTypeListing, d3.map);
return nest.get(value)[0];
}
};
-}());
+
+ return nfCommon;
+}));
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-connection-details.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-connection-details.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-connection-details.js
index 1479023..4527c50 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-connection-details.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-connection-details.js
@@ -15,9 +15,27 @@
* limitations under the License.
*/
-/* global nf */
-
-nf.ConnectionDetails = (function () {
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.ErrorHandler'],
+ function ($, common, errorHandler) {
+ return (nf.ConnectionDetails = factory($, common, errorHandler));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ConnectionDetails = factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.ErrorHandler')));
+ } else {
+ nf.ConnectionDetails = factory(root.$,
+ root.nf.Common,
+ root.nf.ErrorHandler);
+ }
+}(this, function ($, common, errorHandler) {
+ 'use strict';
/**
* Initialize the details for the source of the connection.
@@ -54,7 +72,7 @@ nf.ConnectionDetails = (function () {
}).done(function (response) {
var processor = response.component;
var processorName = $('<div class="label"></div>').text(processor.name).addClass('ellipsis').attr('title', processor.name);
- var processorType = $('<div></div>').text(nf.Common.substringAfterLast(processor.type, '.')).addClass('ellipsis').attr('title', nf.Common.substringAfterLast(processor.type, '.'));
+ var processorType = $('<div></div>').text(common.substringAfterLast(processor.type, '.')).addClass('ellipsis').attr('title', common.substringAfterLast(processor.type, '.'));
// populate source processor details
$('#read-only-connection-source-label').text('From processor');
@@ -214,7 +232,7 @@ nf.ConnectionDetails = (function () {
}).done(function (response) {
var processor = response.component;
var processorName = $('<div class="label"></div>').text(processor.name).addClass('ellipsis').attr('title', processor.name);
- var processorType = $('<div></div>').text(nf.Common.substringAfterLast(processor.type, '.')).addClass('ellipsis').attr('title', nf.Common.substringAfterLast(processor.type, '.'));
+ var processorType = $('<div></div>').text(common.substringAfterLast(processor.type, '.')).addClass('ellipsis').attr('title', common.substringAfterLast(processor.type, '.'));
// populate destination processor details
$('#read-only-connection-target-label').text('To processor');
@@ -392,8 +410,8 @@ nf.ConnectionDetails = (function () {
$('#read-only-relationship-names').empty();
// clear the connection details
- nf.Common.clearField('read-only-connection-name');
- nf.Common.clearField('read-only-connection-id');
+ common.clearField('read-only-connection-name');
+ common.clearField('read-only-connection-id');
// clear the connection source details
$('#read-only-connection-source-label').text('');
@@ -415,7 +433,7 @@ nf.ConnectionDetails = (function () {
$('#read-only-prioritizers').empty();
},
open: function () {
- nf.Common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
+ common.toggleScrollable($('#' + this.find('.tab-container').attr('id') + '-content').get(0));
}
}
});
@@ -465,7 +483,7 @@ nf.ConnectionDetails = (function () {
var selectedRelationships = connection.selectedRelationships;
// show the available relationship if applicable
- if (nf.Common.isDefinedAndNotNull(availableRelationships) || nf.Common.isDefinedAndNotNull(selectedRelationships)) {
+ if (common.isDefinedAndNotNull(availableRelationships) || common.isDefinedAndNotNull(selectedRelationships)) {
// populate the available connections
$.each(availableRelationships, function (i, name) {
createRelationshipOption(name);
@@ -498,17 +516,17 @@ nf.ConnectionDetails = (function () {
}
// set the connection details
- nf.Common.populateField('read-only-connection-name', connection.name);
- nf.Common.populateField('read-only-connection-id', connection.id);
- nf.Common.populateField('read-only-flow-file-expiration', connection.flowFileExpiration);
- nf.Common.populateField('read-only-back-pressure-object-threshold', connection.backPressureObjectThreshold);
- nf.Common.populateField('read-only-back-pressure-data-size-threshold', connection.backPressureDataSizeThreshold);
+ common.populateField('read-only-connection-name', connection.name);
+ common.populateField('read-only-connection-id', connection.id);
+ common.populateField('read-only-flow-file-expiration', connection.flowFileExpiration);
+ common.populateField('read-only-back-pressure-object-threshold', connection.backPressureObjectThreshold);
+ common.populateField('read-only-back-pressure-data-size-threshold', connection.backPressureDataSizeThreshold);
// prioritizers
- if (nf.Common.isDefinedAndNotNull(connection.prioritizers) && connection.prioritizers.length > 0) {
+ if (common.isDefinedAndNotNull(connection.prioritizers) && connection.prioritizers.length > 0) {
var prioritizerList = $('<ol></ol>').css('list-style', 'decimal inside none');
$.each(connection.prioritizers, function (i, type) {
- prioritizerList.append($('<li></li>').text(nf.Common.substringAfterLast(type, '.')));
+ prioritizerList.append($('<li></li>').text(common.substringAfterLast(type, '.')));
});
$('#read-only-prioritizers').append(prioritizerList);
} else {
@@ -527,9 +545,9 @@ nf.ConnectionDetails = (function () {
if (relationshipNames.is(':visible') && relationshipNames.get(0).scrollHeight > relationshipNames.innerHeight()) {
relationshipNames.css('border-width', '1px');
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
}
- }).fail(nf.Common.handleAjaxError);
+ }).fail(errorHandler.handleAjaxError);
}
};
-}());
\ No newline at end of file
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-dialog.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-dialog.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-dialog.js
index 50aa704..ed6667c 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-dialog.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-dialog.js
@@ -15,36 +15,47 @@
* limitations under the License.
*/
-/* global nf */
+/* global nf, define, module, require, exports */
-$(document).ready(function () {
- // configure the ok dialog
- $('#nf-ok-dialog').modal({
- scrollableContentStyle: 'scrollable',
- handler: {
- close: function () {
- // clear the content
- $('#nf-ok-dialog-content').empty();
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery'], function ($) {
+ return (nf.Dialog = factory($));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.Dialog = factory(require('jquery')));
+ } else {
+ nf.Dialog = factory(root.$);
+ }
+}(this, function ($) {
+ 'use strict';
+
+ $(document).ready(function () {
+ // configure the ok dialog
+ $('#nf-ok-dialog').modal({
+ scrollableContentStyle: 'scrollable',
+ handler: {
+ close: function () {
+ // clear the content
+ $('#nf-ok-dialog-content').empty();
+ }
}
- }
- });
+ });
- // configure the yes/no dialog
- $('#nf-yes-no-dialog').modal({
- scrollableContentStyle: 'scrollable',
- handler: {
- close: function () {
- // clear the content and reset the button model
- $('#nf-yes-no-dialog-content').empty();
- $('#nf-yes-no-dialog').modal('setButtonModel', []);
+ // configure the yes/no dialog
+ $('#nf-yes-no-dialog').modal({
+ scrollableContentStyle: 'scrollable',
+ handler: {
+ close: function () {
+ // clear the content and reset the button model
+ $('#nf-yes-no-dialog-content').empty();
+ $('#nf-yes-no-dialog').modal('setButtonModel', []);
+ }
}
- }
+ });
});
-});
-nf.Dialog = (function () {
-
- return {
+ var nfDialog = {
/**
* Shows an general dialog with an Okay button populated with the
* specified dialog content.
@@ -140,6 +151,28 @@ nf.Dialog = (function () {
// show the dialog
$('#nf-yes-no-dialog').modal('setHeaderText', options.headerText).modal('show');
+ },
+
+ /**
+ * Shows a message when disconnected from the cluster.
+ */
+ showDisconnectedFromClusterMessage: function () {
+ nfDialog.showOkDialog({
+ headerText: 'Cluster Connection',
+ dialogContent: 'This node is currently not connected to the cluster. Any modifications to the data flow made here will not replicate across the cluster.'
+ });
+ },
+
+ /**
+ * Shows a message when connected to the cluster.
+ */
+ showConnectedToClusterMessage: function () {
+ nfDialog.showOkDialog({
+ headerText: 'Cluster Connection',
+ dialogContent: 'This node just joined the cluster. Any modifications to the data flow made here will replicate across the cluster.'
+ });
}
};
-}());
\ No newline at end of file
+
+ return nfDialog;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-error-handler.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-error-handler.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-error-handler.js
new file mode 100644
index 0000000..f604fec
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-error-handler.js
@@ -0,0 +1,147 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Dialog',
+ 'nf.Common'],
+ function ($, dialog, common) {
+ return (nf.ErrorHandler = factory($, dialog, common));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ErrorHandler = factory(require('jquery'),
+ require('nf.Dialog'),
+ require('nf.Common')));
+ } else {
+ nf.ErrorHandler = factory(root.$,
+ root.nf.Dialog,
+ root.nf.Common);
+ }
+}(this, function ($, dialog, common) {
+ 'use strict';
+
+ return {
+ /**
+ * Method for handling ajax errors.
+ *
+ * @argument {object} xhr The XmlHttpRequest
+ * @argument {string} status The status of the request
+ * @argument {string} error The error
+ */
+ handleAjaxError: function (xhr, status, error) {
+ if (status === 'canceled') {
+ if ($('#splash').is(':visible')) {
+ $('#message-title').text('Session Expired');
+ $('#message-content').text('Your session has expired. Please reload to log in again.');
+
+ // show the error pane
+ $('#message-pane').show();
+ } else {
+ dialog.showOkDialog({
+ headerText: 'Session Expired',
+ dialogContent: 'Your session has expired. Please press Ok to log in again.',
+ okHandler: function () {
+ window.location = '/nifi';
+ }
+ });
+ }
+ return;
+ }
+
+ // if an error occurs while the splash screen is visible close the canvas show the error message
+ if ($('#splash').is(':visible')) {
+ if (xhr.status === 401) {
+ $('#message-title').text('Unauthorized');
+ } else if (xhr.status === 403) {
+ $('#message-title').text('Insufficient Permissions');
+ } else if (xhr.status === 409) {
+ $('#message-title').text('Invalid State');
+ } else {
+ $('#message-title').text('An unexpected error has occurred');
+ }
+
+ if ($.trim(xhr.responseText) === '') {
+ $('#message-content').text('Please check the logs.');
+ } else {
+ $('#message-content').text(xhr.responseText);
+ }
+
+ // show the error pane
+ $('#message-pane').show();
+ return;
+ }
+
+ // status code 400, 404, and 409 are expected response codes for common errors.
+ if (xhr.status === 400 || xhr.status === 404 || xhr.status === 409 || xhr.status === 503) {
+ dialog.showOkDialog({
+ headerText: 'Error',
+ dialogContent: common.escapeHtml(xhr.responseText)
+ });
+ } else if (xhr.status === 403) {
+ dialog.showOkDialog({
+ headerText: 'Insufficient Permissions',
+ dialogContent: common.escapeHtml(xhr.responseText)
+ });
+ } else {
+ if (xhr.status < 99 || xhr.status === 12007 || xhr.status === 12029) {
+ var content = 'Please ensure the application is running and check the logs for any errors.';
+ if (common.isDefinedAndNotNull(status)) {
+ if (status === 'timeout') {
+ content = 'Request has timed out. Please ensure the application is running and check the logs for any errors.';
+ } else if (status === 'abort') {
+ content = 'Request has been aborted.';
+ } else if (status === 'No Transport') {
+ content = 'Request transport mechanism failed. Please ensure the host where the application is running is accessible.';
+ }
+ }
+ $('#message-title').text('Unable to communicate with NiFi');
+ $('#message-content').text(content);
+ } else if (xhr.status === 401) {
+ $('#message-title').text('Unauthorized');
+ if ($.trim(xhr.responseText) === '') {
+ $('#message-content').text('Authentication is required to use this NiFi.');
+ } else {
+ $('#message-content').text(xhr.responseText);
+ }
+ } else if (xhr.status === 500) {
+ $('#message-title').text('An unexpected error has occurred');
+ if ($.trim(xhr.responseText) === '') {
+ $('#message-content').text('An error occurred communicating with the application core. Please check the logs and fix any configuration issues before restarting.');
+ } else {
+ $('#message-content').text(xhr.responseText);
+ }
+ } else if (xhr.status === 200 || xhr.status === 201) {
+ $('#message-title').text('Parse Error');
+ if ($.trim(xhr.responseText) === '') {
+ $('#message-content').text('Unable to interpret response from NiFi.');
+ } else {
+ $('#message-content').text(xhr.responseText);
+ }
+ } else {
+ $('#message-title').text(xhr.status + ': Unexpected Response');
+ $('#message-content').text('An unexpected error has occurred. Please check the logs.');
+ }
+
+ // show the error pane
+ $('#message-pane').show();
+ }
+ }
+ };
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-config.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-config.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-config.js
index 54dccde..b0406aa 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-config.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-config.js
@@ -15,81 +15,95 @@
* limitations under the License.
*/
-/* global nf, d3 */
+/* global nf, define, module, require, exports */
-nf.ng.AppConfig = function ($mdThemingProvider, $compileProvider) {
- //Enable production mode, to re-enable debug mode open up a
- //console and call 'angular.reloadWithDebugInfo();'
- $compileProvider.debugInfoEnabled(false);
- //Define app palettes
- $mdThemingProvider.definePalette('basePalette', {
- '50': '728E9B',
- '100': '728E9B',
- '200': '004849', /* link-color */
- '300': '775351', /* value-color */
- '400': '728E9B',
- '500': '728E9B', /* base-color */
- '600': '728E9B',
- '700': '728E9B',
- '800': '728E9B',
- '900': 'rgba(249,250,251,0.97)', /* tint base-color 96% */
- 'A100': '728E9B',
- 'A200': '728E9B',
- 'A400': '728E9B',
- 'A700': '728E9B',
- 'contrastDefaultColor': 'light',
- 'contrastDarkColors': ['A100'],
- 'contrastLightColors': undefined
- });
- $mdThemingProvider.definePalette('tintPalette', {
- '50': '728E9B',
- '100': '728E9B',
- '200': 'CCDADB', /* tint link-color 20% */
- '300': '728E9B',
- '400': 'AABBC3', /* tint base-color 40% */
- '500': '728E9B',
- '600': 'C7D2D7', /* tint base-color 60% */
- '700': '728E9B',
- '800': 'E3E8EB', /* tint base-color 80% */
- '900': '728E9B',
- 'A100': '728E9B',
- 'A200': '728E9B',
- 'A400': '728E9B',
- 'A700': '728E9B',
- 'contrastDefaultColor': 'light',
- 'contrastDarkColors': ['A100'],
- 'contrastLightColors': undefined
- });
- $mdThemingProvider.definePalette('warnPalette', {
- '50': 'BA554A',
- '100': 'BA554A',
- '200': 'BA554A',
- '300': 'BA554A',
- '400': 'BA554A',
- '500': 'BA554A', /* warn-color */
- '600': 'BA554A',
- '700': 'BA554A',
- '800': 'BA554A',
- '900': 'BA554A',
- 'A100': 'BA554A',
- 'A200': 'BA554A',
- 'A400': 'BA554A',
- 'A700': 'BA554A',
- 'contrastDefaultColor': 'light',
- 'contrastDarkColors': ['A100'],
- 'contrastLightColors': undefined
- });
- $mdThemingProvider.theme("default").primaryPalette("basePalette", {
- "default": "500",
- "hue-1": "200",
- "hue-2": "300",
- "hue-3": "900"
- }).accentPalette("tintPalette", {
- "default": "200",
- "hue-1": "400",
- "hue-2": "600",
- "hue-3": "800"
- }).warnPalette("warnPalette", {
- "default": "500"
- });
-};
\ No newline at end of file
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([], function () {
+ return (nf.ng.AppConfig = factory());
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.AppConfig = factory());
+ } else {
+ nf.ng.AppConfig = factory();
+ }
+}(this, function () {
+ 'use strict';
+
+ return function ($mdThemingProvider, $compileProvider) {
+ //Enable production mode, to re-enable debug mode open up a
+ //console and call 'angular.reloadWithDebugInfo();'
+ $compileProvider.debugInfoEnabled(false);
+ //Define app palettes
+ $mdThemingProvider.definePalette('basePalette', {
+ '50': '728E9B',
+ '100': '728E9B',
+ '200': '004849', /* link-color */
+ '300': '775351', /* value-color */
+ '400': '728E9B',
+ '500': '728E9B', /* base-color */
+ '600': '728E9B',
+ '700': '728E9B',
+ '800': '728E9B',
+ '900': 'rgba(249,250,251,0.97)', /* tint base-color 96% */
+ 'A100': '728E9B',
+ 'A200': '728E9B',
+ 'A400': '728E9B',
+ 'A700': '728E9B',
+ 'contrastDefaultColor': 'light',
+ 'contrastDarkColors': ['A100'],
+ 'contrastLightColors': undefined
+ });
+ $mdThemingProvider.definePalette('tintPalette', {
+ '50': '728E9B',
+ '100': '728E9B',
+ '200': 'CCDADB', /* tint link-color 20% */
+ '300': '728E9B',
+ '400': 'AABBC3', /* tint base-color 40% */
+ '500': '728E9B',
+ '600': 'C7D2D7', /* tint base-color 60% */
+ '700': '728E9B',
+ '800': 'E3E8EB', /* tint base-color 80% */
+ '900': '728E9B',
+ 'A100': '728E9B',
+ 'A200': '728E9B',
+ 'A400': '728E9B',
+ 'A700': '728E9B',
+ 'contrastDefaultColor': 'light',
+ 'contrastDarkColors': ['A100'],
+ 'contrastLightColors': undefined
+ });
+ $mdThemingProvider.definePalette('warnPalette', {
+ '50': 'BA554A',
+ '100': 'BA554A',
+ '200': 'BA554A',
+ '300': 'BA554A',
+ '400': 'BA554A',
+ '500': 'BA554A', /* warn-color */
+ '600': 'BA554A',
+ '700': 'BA554A',
+ '800': 'BA554A',
+ '900': 'BA554A',
+ 'A100': 'BA554A',
+ 'A200': 'BA554A',
+ 'A400': 'BA554A',
+ 'A700': 'BA554A',
+ 'contrastDefaultColor': 'light',
+ 'contrastDarkColors': ['A100'],
+ 'contrastLightColors': undefined
+ });
+ $mdThemingProvider.theme("default").primaryPalette("basePalette", {
+ "default": "500",
+ "hue-1": "200",
+ "hue-2": "300",
+ "hue-3": "900"
+ }).accentPalette("tintPalette", {
+ "default": "200",
+ "hue-1": "400",
+ "hue-2": "600",
+ "hue-3": "800"
+ }).warnPalette("warnPalette", {
+ "default": "500"
+ });
+ }
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-controller.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-controller.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-controller.js
index 1b9f0d0..ae93c95 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-controller.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-app-controller.js
@@ -15,25 +15,41 @@
* limitations under the License.
*/
-/* global nf, d3 */
+/* global nf, define, module, require, exports */
-nf.ng.AppCtrl = function ($scope, serviceProvider) {
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['nf.ng.Bridge'],
+ function (angularBridge) {
+ return (nf.ng.AppCtrl = factory(angularBridge));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.AppCtrl = factory(require('nf.ng.Bridge')));
+ } else {
+ nf.ng.AppCtrl = factory(root.nf.ng.Bridge);
+ }
+}(this, function (angularBridge) {
'use strict';
- function AppCtrl(serviceProvider) {
- //global nf namespace for reference throughout angular app
- this.nf = nf;
- //any registered angular service is available through the serviceProvider
- this.serviceProvider = serviceProvider;
- }
- AppCtrl.prototype = {
- constructor: AppCtrl
- }
+ return function ($scope, serviceProvider) {
+ 'use strict';
- var appCtrl = new AppCtrl(serviceProvider);
- $scope.appCtrl = appCtrl;
+ function AppCtrl(serviceProvider) {
+ //global nf namespace for reference throughout angular app
+ this.nf = nf;
+ //any registered angular service is available through the serviceProvider
+ this.serviceProvider = serviceProvider;
+ }
- //For production angular applications .scope() is unavailable so we set
- //the root scope of the bootstrapped app on the bridge
- nf.ng.Bridge.rootScope = $scope;
-};
\ No newline at end of file
+ AppCtrl.prototype = {
+ constructor: AppCtrl
+ }
+
+ var appCtrl = new AppCtrl(serviceProvider);
+ $scope.appCtrl = appCtrl;
+
+ //For production angular applications .scope() is unavailable so we set
+ //the root scope of the bootstrapped app on the bridge
+ angularBridge.rootScope = $scope;
+ }
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-bridge.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-bridge.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-bridge.js
index bc78f15..92de4ec 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-bridge.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-bridge.js
@@ -15,9 +15,19 @@
* limitations under the License.
*/
-/* global nf, d3 */
+/* global nf, define, module, require, exports */
-nf.ng.Bridge = (function () {
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['angular'], function (angular) {
+ return (nf.ng.Bridge = factory(angular));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.Bridge = factory(require('angular')));
+ } else {
+ nf.ng.Bridge = factory(root.angular);
+ }
+}(this, function (angular) {
'use strict';
function AngularBridge() {
@@ -84,7 +94,5 @@ nf.ng.Bridge = (function () {
}
};
- var angularBridge = new AngularBridge();
-
- return angularBridge;
-}());
\ No newline at end of file
+ return new AngularBridge();
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-service-provider.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-service-provider.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-service-provider.js
index 5ebc9aa..acdaba5 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-service-provider.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-ng-service-provider.js
@@ -15,37 +15,48 @@
* limitations under the License.
*/
-/* global nf, d3 */
+/* global nf, define, module, require, exports */
-nf.ng.ServiceProvider = function () {
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([], function () {
+ return (nf.ng.ServiceProvider = factory());
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.ServiceProvider = factory());
+ } else {
+ nf.ng.ServiceProvider = factory();
+ }
+}(this, function () {
'use strict';
- function ServiceProvider() {
+ return function () {
+ function ServiceProvider() {
+ }
- }
- ServiceProvider.prototype = {
- constructor: ServiceProvider,
+ ServiceProvider.prototype = {
+ constructor: ServiceProvider,
- /**
- * Registers the given `object` by `name`.
- *
- * @param {string} name The lookup name of the object being registered
- * @param {object} object The object to register
- */
- register: function(name, object) {
- serviceProvider[name] = object;
- },
+ /**
+ * Registers the given `object` by `name`.
+ *
+ * @param {string} name The lookup name of the object being registered
+ * @param {object} object The object to register
+ */
+ register: function (name, object) {
+ this[name] = object;
+ },
- /**
- * Removes the given object from the registry.
- *
- * @param {string objectName The lookup name of the object to remove from the registry
+ /**
+ * Removes the given object from the registry.
+ *
+ * @param {string} objectName The lookup name of the object to remove from the registry
*/
- remove: function(objectName) {
- delete serviceProvider[objectName];
+ remove: function (objectName) {
+ delete this[objectName];
+ }
}
- }
- var serviceProvider = new ServiceProvider();
- return serviceProvider;
-};
\ No newline at end of file
+ return new ServiceProvider();
+ }
+}));
\ No newline at end of file
[03/12] nifi git commit: [NIFI-3359] Modularize all of nifi-web-ui
except canvas directory - Removing shell.jsp from summary.jsp. - This closes
#1428
Posted by mc...@apache.org.
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance.js
index 9e5d457..9dd9983 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance.js
@@ -15,285 +15,348 @@
* limitations under the License.
*/
-/* global nf, top */
+/* global nf, top, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'angular',
+ 'nf.Common',
+ 'nf.ng.AppConfig',
+ 'nf.ng.AppCtrl',
+ 'nf.ng.ProvenanceLineage',
+ 'nf.ng.ProvenanceTable',
+ 'nf.ng.Bridge',
+ 'nf.ErrorHandler',
+ 'nf.Storage'],
+ function ($,
+ angular,
+ common,
+ appConfig,
+ appCtrl,
+ provenanceLineage,
+ provenanceTable,
+ angularBridge,
+ errorHandler,
+ storage) {
+ return (nf.ng.Provenance =
+ factory($,
+ angular,
+ common,
+ appConfig,
+ appCtrl,
+ provenanceLineage,
+ provenanceTable,
+ angularBridge,
+ errorHandler,
+ storage));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.Provenance =
+ factory(require('jquery'),
+ require('angular'),
+ require('nf.Common'),
+ require('nf.ng.AppConfig'),
+ require('nf.ng.AppCtrl'),
+ require('nf.ng.ProvenanceLineage'),
+ require('nf.ng.ProvenanceTable'),
+ require('nf.ng.Bridge'),
+ require('nf.ErrorHandler'),
+ require('nf.Storage')));
+ } else {
+ nf.ng.Provenance = factory(root.$,
+ root.angular,
+ root.nf.Common,
+ root.nf.ng.AppConfig,
+ root.nf.ng.AppCtrl,
+ root.nf.ng.ProvenanceLineage,
+ root.nf.ng.ProvenanceTable,
+ root.nf.ng.Bridge,
+ root.nf.ErrorHandler,
+ root.nf.Storage);
+ }
+}(this, function ($, angular, common, appConfig, appCtrl, provenanceLineage, provenanceTable, angularBridge, errorHandler, storage) {
+ 'use strict';
-$(document).ready(function () {
- //Create Angular App
- var app = angular.module('ngProvenanceApp', ['ngResource', 'ngRoute', 'ngMaterial', 'ngMessages']);
+ $(document).ready(function () {
+ //Create Angular App
+ var app = angular.module('ngProvenanceApp', ['ngResource', 'ngRoute', 'ngMaterial', 'ngMessages']);
- //Define Dependency Injection Annotations
- nf.ng.AppConfig.$inject = ['$mdThemingProvider', '$compileProvider'];
- nf.ng.AppCtrl.$inject = ['$scope'];
- nf.ng.Provenance.$inject = ['provenanceTableCtrl'];
- nf.ng.ProvenanceLineage.$inject = [];
- nf.ng.ProvenanceTable.$inject = ['provenanceLineageCtrl'];
+ //Define Dependency Injection Annotations
+ appConfig.$inject = ['$mdThemingProvider', '$compileProvider'];
+ appCtrl.$inject = ['$scope'];
+ nfProvenance.$inject = ['provenanceTableCtrl'];
+ provenanceLineage.$inject = [];
+ provenanceTable.$inject = ['provenanceLineageCtrl'];
- //Configure Angular App
- app.config(nf.ng.AppConfig);
+ //Configure Angular App
+ app.config(appConfig);
- //Define Angular App Controllers
- app.controller('ngProvenanceAppCtrl', nf.ng.AppCtrl);
+ //Define Angular App Controllers
+ app.controller('ngProvenanceAppCtrl', appCtrl);
- //Define Angular App Services
- app.service('provenanceCtrl', nf.ng.Provenance);
- app.service('provenanceLineageCtrl', nf.ng.ProvenanceLineage);
- app.service('provenanceTableCtrl', nf.ng.ProvenanceTable);
+ //Define Angular App Services
+ app.service('provenanceCtrl', nfProvenance);
+ app.service('provenanceLineageCtrl', provenanceLineage);
+ app.service('provenanceTableCtrl', provenanceTable);
- //Manually Boostrap Angular App
- nf.ng.Bridge.injector = angular.bootstrap($('body'), ['ngProvenanceApp'], { strictDi: true });
+ //Manually Boostrap Angular App
+ angularBridge.injector = angular.bootstrap($('body'), ['ngProvenanceApp'], {strictDi: true});
- // initialize the status page
- nf.ng.Bridge.injector.get('provenanceCtrl').init();
-});
+ // initialize the status page
+ angularBridge.injector.get('provenanceCtrl').init();
+ });
-nf.ng.Provenance = function (provenanceTableCtrl) {
- 'use strict';
+ var nfProvenance = function (provenanceTableCtrl) {
- /**
- * Configuration object used to hold a number of configuration items.
- */
- var config = {
- urls: {
- clusterSummary: '../nifi-api/flow/cluster/summary',
- banners: '../nifi-api/flow/banners',
- about: '../nifi-api/flow/about',
- currentUser: '../nifi-api/flow/current-user'
- }
- };
-
- /**
- * Whether or not this NiFi is clustered.
- */
- var isClustered = null;
-
- /**
- * Determines if this NiFi is clustered.
- */
- var detectedCluster = function () {
- return $.ajax({
- type: 'GET',
- url: config.urls.clusterSummary
- }).done(function (response) {
- isClustered = response.clusterSummary.connectedToCluster;
- }).fail(nf.Common.handleAjaxError);
- };
-
- /**
- * Loads the controller configuration.
- */
- var loadAbout = function () {
- // get the about details
- return $.ajax({
- type: 'GET',
- url: config.urls.about,
- dataType: 'json'
- }).done(function (response) {
- var aboutDetails = response.about;
- var provenanceTitle = aboutDetails.title + ' Data Provenance';
-
- // store the controller name
- $('#nifi-controller-uri').text(aboutDetails.uri);
-
- // set the timezone for the start and end time
- $('.timezone').text(aboutDetails.timezone);
-
- // store the content viewer url if available
- if (!nf.Common.isBlank(aboutDetails.contentViewerUrl)) {
- $('#nifi-content-viewer-url').text(aboutDetails.contentViewerUrl);
+ /**
+ * Configuration object used to hold a number of configuration items.
+ */
+ var config = {
+ urls: {
+ clusterSummary: '../nifi-api/flow/cluster/summary',
+ banners: '../nifi-api/flow/banners',
+ about: '../nifi-api/flow/about',
+ currentUser: '../nifi-api/flow/current-user'
}
+ };
- // set the document title and the about title
- document.title = provenanceTitle;
- $('#provenance-header-text').text(provenanceTitle);
- }).fail(nf.Common.handleAjaxError);
- };
-
- /**
- * Loads the current user.
- */
- var loadCurrentUser = function () {
- return $.ajax({
- type: 'GET',
- url: config.urls.currentUser,
- dataType: 'json'
- }).done(function (currentUser) {
- nf.Common.setCurrentUser(currentUser);
- }).fail(nf.Common.handleAjaxError);
- };
-
- /**
- * Initializes the provenance page.
- */
- var initializeProvenancePage = function () {
- // define mouse over event for the refresh button
- $('#refresh-button').click(function () {
- provenanceTableCtrl.loadProvenanceTable();
- });
-
- // return a deferred for page initialization
- return $.Deferred(function (deferred) {
- // get the banners if we're not in the shell
- if (top === window) {
- $.ajax({
- type: 'GET',
- url: config.urls.banners,
- dataType: 'json'
- }).done(function (response) {
- // ensure the banners response is specified
- if (nf.Common.isDefinedAndNotNull(response.banners)) {
- if (nf.Common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
- // update the header text
- var bannerHeader = $('#banner-header').text(response.banners.headerText).show();
-
- // show the banner
- var updateTop = function (elementId) {
- var element = $('#' + elementId);
- element.css('top', (parseInt(bannerHeader.css('height'), 10) + parseInt(element.css('top'), 10)) + 'px');
- };
-
- // update the position of elements affected by top banners
- updateTop('provenance');
- }
+ /**
+ * Whether or not this NiFi is clustered.
+ */
+ var isClustered = null;
+
+ /**
+ * Determines if this NiFi is clustered.
+ */
+ var detectedCluster = function () {
+ return $.ajax({
+ type: 'GET',
+ url: config.urls.clusterSummary
+ }).done(function (response) {
+ isClustered = response.clusterSummary.connectedToCluster;
+ }).fail(errorHandler.handleAjaxError);
+ };
- if (nf.Common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
- // update the footer text and show it
- var bannerFooter = $('#banner-footer').text(response.banners.footerText).show();
+ /**
+ * Loads the controller configuration.
+ */
+ var loadAbout = function () {
+ // get the about details
+ return $.ajax({
+ type: 'GET',
+ url: config.urls.about,
+ dataType: 'json'
+ }).done(function (response) {
+ var aboutDetails = response.about;
+ var provenanceTitle = aboutDetails.title + ' Data Provenance';
+
+ // store the controller name
+ $('#nifi-controller-uri').text(aboutDetails.uri);
+
+ // set the timezone for the start and end time
+ $('.timezone').text(aboutDetails.timezone);
+
+ // store the content viewer url if available
+ if (!common.isBlank(aboutDetails.contentViewerUrl)) {
+ $('#nifi-content-viewer-url').text(aboutDetails.contentViewerUrl);
+ }
+
+ // set the document title and the about title
+ document.title = provenanceTitle;
+ $('#provenance-header-text').text(provenanceTitle);
+ }).fail(errorHandler.handleAjaxError);
+ };
- var updateBottom = function (elementId) {
- var element = $('#' + elementId);
- element.css('bottom', parseInt(bannerFooter.css('height'), 10) + 'px');
- };
+ /**
+ * Loads the current user.
+ */
+ var loadCurrentUser = function () {
+ return $.ajax({
+ type: 'GET',
+ url: config.urls.currentUser,
+ dataType: 'json'
+ }).done(function (currentUser) {
+ common.setCurrentUser(currentUser);
+ }).fail(errorHandler.handleAjaxError);
+ };
- // update the position of elements affected by bottom banners
- updateBottom('provenance');
+ /**
+ * Initializes the provenance page.
+ */
+ var initializeProvenancePage = function () {
+ // define mouse over event for the refresh button
+ $('#refresh-button').click(function () {
+ provenanceTableCtrl.loadProvenanceTable();
+ });
+
+ // return a deferred for page initialization
+ return $.Deferred(function (deferred) {
+ // get the banners if we're not in the shell
+ if (top === window) {
+ $.ajax({
+ type: 'GET',
+ url: config.urls.banners,
+ dataType: 'json'
+ }).done(function (response) {
+ // ensure the banners response is specified
+ if (common.isDefinedAndNotNull(response.banners)) {
+ if (common.isDefinedAndNotNull(response.banners.headerText) && response.banners.headerText !== '') {
+ // update the header text
+ var bannerHeader = $('#banner-header').text(response.banners.headerText).show();
+
+ // show the banner
+ var updateTop = function (elementId) {
+ var element = $('#' + elementId);
+ element.css('top', (parseInt(bannerHeader.css('height'), 10) + parseInt(element.css('top'), 10)) + 'px');
+ };
+
+ // update the position of elements affected by top banners
+ updateTop('provenance');
+ }
+
+ if (common.isDefinedAndNotNull(response.banners.footerText) && response.banners.footerText !== '') {
+ // update the footer text and show it
+ var bannerFooter = $('#banner-footer').text(response.banners.footerText).show();
+
+ var updateBottom = function (elementId) {
+ var element = $('#' + elementId);
+ element.css('bottom', parseInt(bannerFooter.css('height'), 10) + 'px');
+ };
+
+ // update the position of elements affected by bottom banners
+ updateBottom('provenance');
+ }
}
- }
+ deferred.resolve();
+ }).fail(function (xhr, status, error) {
+ errorHandler.handleAjaxError(xhr, status, error);
+ deferred.reject();
+ });
+ } else {
deferred.resolve();
- }).fail(function (xhr, status, error) {
- nf.Common.handleAjaxError(xhr, status, error);
- deferred.reject();
- });
- } else {
- deferred.resolve();
- }
- }).promise();
- };
+ }
+ }).promise();
+ };
- function ProvenanceCtrl() {
- }
+ function ProvenanceCtrl() {
+ }
- ProvenanceCtrl.prototype = {
- constructor: ProvenanceCtrl,
+ ProvenanceCtrl.prototype = {
+ constructor: ProvenanceCtrl,
+
+ /**
+ * Initializes the status page.
+ */
+ init: function () {
+ storage.init();
+
+ // load the user and detect if the NiFi is clustered
+ $.when(loadAbout(), loadCurrentUser(), detectedCluster()).done(function () {
+ // create the provenance table
+ provenanceTableCtrl.init(isClustered).done(function () {
+ var searchTerms = {};
+
+ // look for a processor id in the query search
+ var initialComponentId = $('#initial-component-query').text();
+ if ($.trim(initialComponentId) !== '') {
+ // populate initial search component
+ $('input.searchable-component-id').val(initialComponentId);
+
+ // build the search criteria
+ searchTerms['ProcessorID'] = initialComponentId;
+ }
- /**
- * Initializes the status page.
- */
- init: function () {
- nf.Storage.init();
-
- // load the user and detect if the NiFi is clustered
- $.when(loadAbout(), loadCurrentUser(), detectedCluster()).done(function () {
- // create the provenance table
- provenanceTableCtrl.init(isClustered).done(function () {
- var searchTerms = {};
-
- // look for a processor id in the query search
- var initialComponentId = $('#initial-component-query').text();
- if ($.trim(initialComponentId) !== '') {
- // populate initial search component
- $('input.searchable-component-id').val(initialComponentId);
-
- // build the search criteria
- searchTerms['ProcessorID'] = initialComponentId;
- }
-
- // look for a flowfile uuid in the query search
- var initialFlowFileUuid = $('#initial-flowfile-query').text();
- if ($.trim(initialFlowFileUuid) !== '') {
- // populate initial search component
- $('input.searchable-flowfile-uuid').val(initialFlowFileUuid);
-
- // build the search criteria
- searchTerms['FlowFileUUID'] = initialFlowFileUuid;
- }
-
- // load the provenance table
- if ($.isEmptyObject(searchTerms)) {
- // load the provenance table
- provenanceTableCtrl.loadProvenanceTable();
- } else {
- // load the provenance table
- provenanceTableCtrl.loadProvenanceTable({
- 'searchTerms': searchTerms
- });
- }
-
- var setBodySize = function () {
- //alter styles if we're not in the shell
- if (top === window) {
- $('body').css({
- 'height': $(window).height() + 'px',
- 'width': $(window).width() + 'px'
- });
+ // look for a flowfile uuid in the query search
+ var initialFlowFileUuid = $('#initial-flowfile-query').text();
+ if ($.trim(initialFlowFileUuid) !== '') {
+ // populate initial search component
+ $('input.searchable-flowfile-uuid').val(initialFlowFileUuid);
+
+ // build the search criteria
+ searchTerms['FlowFileUUID'] = initialFlowFileUuid;
+ }
- $('#provenance').css('margin', 40);
- $('#provenance-refresh-container').css({
- 'bottom': '0px',
- 'left': '0px',
- 'right': '0px'
+ // load the provenance table
+ if ($.isEmptyObject(searchTerms)) {
+ // load the provenance table
+ provenanceTableCtrl.loadProvenanceTable();
+ } else {
+ // load the provenance table
+ provenanceTableCtrl.loadProvenanceTable({
+ 'searchTerms': searchTerms
});
}
- // configure the initial grid height
- provenanceTableCtrl.resetTableSize();
- };
+ var setBodySize = function () {
+ //alter styles if we're not in the shell
+ if (top === window) {
+ $('body').css({
+ 'height': $(window).height() + 'px',
+ 'width': $(window).width() + 'px'
+ });
+
+ $('#provenance').css('margin', 40);
+ $('#provenance-refresh-container').css({
+ 'bottom': '0px',
+ 'left': '0px',
+ 'right': '0px'
+ });
+ }
- // once the table is initialized, finish initializing the page
- initializeProvenancePage().done(function () {
- // set the initial size
- setBodySize();
- });
+ // configure the initial grid height
+ provenanceTableCtrl.resetTableSize();
+ };
- $(window).on('resize', function (e) {
- setBodySize();
- // resize dialogs when appropriate
- var dialogs = $('.dialog');
- for (var i = 0, len = dialogs.length; i < len; i++) {
- if ($(dialogs[i]).is(':visible')){
- setTimeout(function(dialog){
- dialog.modal('resize');
- }, 50, $(dialogs[i]));
+ // once the table is initialized, finish initializing the page
+ initializeProvenancePage().done(function () {
+ // set the initial size
+ setBodySize();
+ });
+
+ $(window).on('resize', function (e) {
+ setBodySize();
+ // resize dialogs when appropriate
+ var dialogs = $('.dialog');
+ for (var i = 0, len = dialogs.length; i < len; i++) {
+ if ($(dialogs[i]).is(':visible')) {
+ setTimeout(function (dialog) {
+ dialog.modal('resize');
+ }, 50, $(dialogs[i]));
+ }
}
- }
- // resize grids when appropriate
- var gridElements = $('*[class*="slickgrid_"]');
- for (var j = 0, len = gridElements.length; j < len; j++) {
- if ($(gridElements[j]).is(':visible')){
- setTimeout(function(gridElement){
- gridElement.data('gridInstance').resizeCanvas();
- }, 50, $(gridElements[j]));
+ // resize grids when appropriate
+ var gridElements = $('*[class*="slickgrid_"]');
+ for (var j = 0, len = gridElements.length; j < len; j++) {
+ if ($(gridElements[j]).is(':visible')) {
+ setTimeout(function (gridElement) {
+ gridElement.data('gridInstance').resizeCanvas();
+ }, 50, $(gridElements[j]));
+ }
}
- }
- // toggle tabs .scrollable when appropriate
- var tabsContainers = $('.tab-container');
- var tabsContents = [];
- for (var k = 0, len = tabsContainers.length; k < len; k++) {
- if ($(tabsContainers[k]).is(':visible')){
- tabsContents.push($('#' + $(tabsContainers[k]).attr('id') + '-content'));
+ // toggle tabs .scrollable when appropriate
+ var tabsContainers = $('.tab-container');
+ var tabsContents = [];
+ for (var k = 0, len = tabsContainers.length; k < len; k++) {
+ if ($(tabsContainers[k]).is(':visible')) {
+ tabsContents.push($('#' + $(tabsContainers[k]).attr('id') + '-content'));
+ }
}
- }
- $.each(tabsContents, function (index, tabsContent) {
- nf.Common.toggleScrollable(tabsContent.get(0));
+ $.each(tabsContents, function (index, tabsContent) {
+ common.toggleScrollable(tabsContent.get(0));
+ });
});
});
});
- });
+ }
}
+
+ var provenanceCtrl = new ProvenanceCtrl();
+ return provenanceCtrl;
}
- var provenanceCtrl = new ProvenanceCtrl();
- return provenanceCtrl;
-};
\ No newline at end of file
+ return nfProvenance;
+}));
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/dc934cbb/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-cluster-search.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-cluster-search.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-cluster-search.js
index a12b536..b4fa88b 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-cluster-search.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-cluster-search.js
@@ -14,7 +14,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-nf.ClusterSearch = (function () {
+
+/* global nf, define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.Dialog',
+ 'nf.SummaryTable'],
+ function ($, common, dialog, summaryTable) {
+ return (nf.ClusterSearch = factory($, common, dialog, summaryTable));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ClusterSearch =
+ factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.Dialog'),
+ require('nf.SummaryTable')));
+ } else {
+ nf.ClusterSearch = factory(root.$,
+ root.nf.Common,
+ root.nf.Dialog,
+ root.nf.SummaryTable);
+ }
+}(this, function ($, common, dialog, summaryTable) {
+ 'use strict';
+
/**
* Configuration object used to hold a number of configuration items.
*/
@@ -59,10 +85,10 @@ nf.ClusterSearch = (function () {
// selects the specified node
var selectNode = function (node) {
// update the urls to point to this specific node of the cluster
- nf.SummaryTable.setClusterNodeId(node.id);
+ summaryTable.setClusterNodeId(node.id);
// load the summary for the selected node
- nf.SummaryTable.loadSummaryTable();
+ summaryTable.loadSummaryTable();
// update the header
$('#summary-header-text').text(node.address + ' Summary');
@@ -70,9 +96,9 @@ nf.ClusterSearch = (function () {
// ensure the search found some results
if (!$.isArray(searchResults) || searchResults.length === 0) {
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'Cluster Search',
- dialogContent: 'No nodes match \'' + nf.Common.escapeHtml(clusterSearchTerm) + '\'.'
+ dialogContent: 'No nodes match \'' + common.escapeHtml(clusterSearchTerm) + '\'.'
});
} else if (searchResults.length > 1) {
var exactMatch = false;
@@ -91,9 +117,9 @@ nf.ClusterSearch = (function () {
// close the dialog
$('#view-single-node-dialog').modal('hide');
} else {
- nf.Dialog.showOkDialog({
+ dialog.showOkDialog({
headerText: 'Cluster Search',
- dialogContent: 'More than one node matches \'' + nf.Common.escapeHtml(clusterSearchTerm) + '\'.'
+ dialogContent: 'More than one node matches \'' + common.escapeHtml(clusterSearchTerm) + '\'.'
});
}
} else if (searchResults.length === 1) {
@@ -146,9 +172,9 @@ nf.ClusterSearch = (function () {
// results are normalized into a single element array
var searchResults = items[0];
- var self = this;
+ var nfClusterSearchAutocomplete = this;
$.each(searchResults.nodeResults, function (_, node) {
- self._renderItem(ul, {
+ nfClusterSearchAutocomplete._renderItem(ul, {
label: node.address,
value: node.address
});
@@ -208,8 +234,8 @@ nf.ClusterSearch = (function () {
// handle the view cluster click event
$('#view-cluster-link').click(function () {
// reset the urls and refresh the table
- nf.SummaryTable.setClusterNodeId(null);
- nf.SummaryTable.loadSummaryTable();
+ summaryTable.setClusterNodeId(null);
+ summaryTable.loadSummaryTable();
// update the header
$('#summary-header-text').text('NiFi Summary');
@@ -219,4 +245,4 @@ nf.ClusterSearch = (function () {
$('#view-options-container').show();
}
};
-}());
\ No newline at end of file
+}));
\ No newline at end of file