From 3cfa41db9e41acedd75c74ab8cb707e8b16ac749 Mon Sep 17 00:00:00 2001
From: Robert Anderson <randerson@lbsd.net>
Date: Thu, 6 Aug 2009 08:16:55 +0000
Subject: [PATCH] Use pruneModifiedRecords instead of checking each item to see
 if it should be added

---
 webgui/js/app/windows/WiSPUsers.js | 81 ++++++++----------------------
 1 file changed, 20 insertions(+), 61 deletions(-)

diff --git a/webgui/js/app/windows/WiSPUsers.js b/webgui/js/app/windows/WiSPUsers.js
index 120bef4b..475a5efc 100644
--- a/webgui/js/app/windows/WiSPUsers.js
+++ b/webgui/js/app/windows/WiSPUsers.js
@@ -256,6 +256,7 @@ function showWiSPUserAddEditWindow(id) {
 	// If this is an update we need to pull in record
 	if (id) {
 		attributeStore = new Ext.ux.JsonStore({
+			pruneModifiedRecords: true,
 			baseParams: {
 				ID: id,
 				SOAPUsername: globalConfig.soap.username,
@@ -268,6 +269,7 @@ function showWiSPUserAddEditWindow(id) {
 		});
 	} else {
 		attributeStore = new Ext.data.SimpleStore({
+			pruneModifiedRecords: true,
 			fields: ['ID', 'Name', 'Operator', 'Value', 'Modifer']
 		});
 	}
@@ -282,6 +284,7 @@ function showWiSPUserAddEditWindow(id) {
 	// If this is an update we need to pull in record
 	if (id) {
 		groupStore = new Ext.ux.JsonStore({
+			pruneModifiedRecords: true,
 			baseParams: {
 				ID: id,
 				SOAPUsername: globalConfig.soap.username,
@@ -294,6 +297,7 @@ function showWiSPUserAddEditWindow(id) {
 		});
 	} else {
 		groupStore = new Ext.data.SimpleStore({
+			pruneModifiedRecords: true,
 			fields: [
 				'Name'
 			]
@@ -332,54 +336,29 @@ function showWiSPUserAddEditWindow(id) {
 				// Set attributes we will be adding
 				for (var i = 0, len = attributes.length; i < len; i++) {
 					var attribute = attributes[i];
-					var attributeRemoved = 0;
-
-					// Check to see if this attribute shouldnt be added
-					for (var c = 0; c < RemovedAttributes.length; c++) {
-						if (attribute.get('ID') == RemovedAttributes[i]) {
-							attributeRemoved = 1;
-						}
-					}
 
 					// Safe to add this attribute
-					if (attributeRemoved == 0) {
-						ret['Attributes['+i+'][ID]'] = attribute.get('ID');
-						ret['Attributes['+i+'][Name]'] = attribute.get('Name');
-						ret['Attributes['+i+'][Operator]'] = attribute.get('Operator');
-						ret['Attributes['+i+'][Value]'] = attribute.get('Value');
-						ret['Attributes['+i+'][Modifier]'] = attribute.get('Modifier');
-					}
+					ret['Attributes['+i+'][ID]'] = attribute.get('ID');
+					ret['Attributes['+i+'][Name]'] = attribute.get('Name');
+					ret['Attributes['+i+'][Operator]'] = attribute.get('Operator');
+					ret['Attributes['+i+'][Value]'] = attribute.get('Value');
+					ret['Attributes['+i+'][Modifier]'] = attribute.get('Modifier');
 				}
 				// Set groups we will be adding
 				for (var i = 0, len = groups.length; i < len; i++) {
 					var group = groups[i];
-					var groupRemoved = 0;
-
-					// Check to see if this group was added then removed
-					for (var c = 0; c < RemovedGroups.length; c++) {
-						if (group.get('ID') == RemovedGroups[i]) {
-							groupRemoved = 1;
-						}
-					}
-
-					// Check to see if this is really unmodified
-					if (group.get('ID') >= 0 && group.get('ID') == group.get('Name')) {
-						groupRemoved = 1;
-					}
 
 					// Safe to add this attribute
-					if (groupRemoved == 0) {
-						ret['Groups['+i+'][Name]'] = group.get('Name');
-					}
+					ret['Groups['+i+'][Name]'] = group.get('Name');
 				}
 
 				// Add removed attributes
-				if (RemovedAttributes.length > 0) {
+				if ((id) && (RemovedAttributes.length > 0)) {
 					var c = 0;
 					var len = RemovedAttributes.length;
 					for (var i = 0; i < len; i++) {
 						// If this is a new add then the user has no attributes
-						if ((id) && (RemovedAttributes[i] >= 0)) {
+						if (RemovedAttributes[i] >= 0) {
 							ret['RAttributes['+c+']'] = RemovedAttributes[i];
 							c++;
 						}
@@ -387,12 +366,12 @@ function showWiSPUserAddEditWindow(id) {
 				}
 
 				// Add removed groups
-				if (RemovedGroups.length > 0) {
+				if ((id) && (RemovedGroups.length > 0)) {
 					var c = 0;
 					var len = RemovedGroups.length;
 					for (var i = 0; i < len; i++) {
 						// If this is a new add then the user has no attributes
-						if ((id) && (RemovedGroups[i] >= 0)) {
+						if (RemovedGroups[i] >= 0) {
 							ret['RGroups['+c+']'] = RemovedGroups[i];
 							c++;
 						}
@@ -432,40 +411,20 @@ function showWiSPUserAddEditWindow(id) {
 				// Set attributes we will be adding
 				for (var i = 0, len = attributes.length; i < len; i++) {
 					var attribute = attributes[i];
-					var attributeRemoved = 0;
-
-					// Check to see if this attribute shouldnt be added
-					for (var c = 0; c < RemovedAttributes.length; c++) {
-						if (attribute.get('ID') == RemovedAttributes[i]) {
-							attributeRemoved = 1;
-						}
-					}
 
 					// Safe to add this attribute
-					if (attributeRemoved == 0) {
-						ret['Attributes['+i+'][ID]'] = attribute.get('ID');
-						ret['Attributes['+i+'][Name]'] = attribute.get('Name');
-						ret['Attributes['+i+'][Operator]'] = attribute.get('Operator');
-						ret['Attributes['+i+'][Value]'] = attribute.get('Value');
-						ret['Attributes['+i+'][Modifier]'] = attribute.get('Modifier');
-					}
+					ret['Attributes['+i+'][ID]'] = attribute.get('ID');
+					ret['Attributes['+i+'][Name]'] = attribute.get('Name');
+					ret['Attributes['+i+'][Operator]'] = attribute.get('Operator');
+					ret['Attributes['+i+'][Value]'] = attribute.get('Value');
+					ret['Attributes['+i+'][Modifier]'] = attribute.get('Modifier');
 				}
 				// Set groups we will be adding
 				for (var i = 0, len = groups.length; i < len; i++) {
 					var group = groups[i];
-					var groupRemoved = 0;
-
-					// Check to see if this group was added then removed
-					for (var c = 0; c < RemovedGroups.length; c++) {
-						if (group.get('ID') == RemovedGroups[i]) {
-							groupRemoved = 1;
-						}
-					}
 
 					// Safe to add this attribute
-					if (groupRemoved == 0) {
-						ret['Groups['+i+'][Name]'] = group.get('Name');
-					}
+					ret['Groups['+i+'][Name]'] = group.get('Name');
 				}
 				return ret;
 			}
-- 
GitLab