diff --git a/src/sview/part_info.c b/src/sview/part_info.c
index 98b62acd8f834cf902d19c3113d14efaf3637f4a..39d90fced425f4096edcb743947ae1283b8a8296 100644
--- a/src/sview/part_info.c
+++ b/src/sview/part_info.c
@@ -35,10 +35,7 @@ typedef struct {
 	partition_info_t* part_ptr;
 	uint16_t node_state;
 
-	uint32_t nodes_alloc;
-	uint32_t nodes_idle;
-	uint32_t nodes_other;
-	uint32_t nodes_tot;
+	uint32_t node_cnt;
 	uint32_t min_cpus;
 	uint32_t max_cpus;
 	uint32_t min_disk;
@@ -77,8 +74,10 @@ enum {
 	SORTID_NODES, 
 	SORTID_CPUS, 
 	SORTID_DISK, 
-	SORTID_NODELIST, 
+	SORTID_MEM, 
 	SORTID_STATE,
+	SORTID_WEIGHT,
+	SORTID_NODELIST, 
 	SORTID_STATE_NUM,
 	SORTID_UPDATED, 
 	SORTID_CNT
@@ -97,14 +96,16 @@ static display_data_t display_data_part[] = {
 	{G_TYPE_STRING, SORTID_GROUPS, "Groups", FALSE, -1, refresh_part},
 	{G_TYPE_STRING, SORTID_NODES, "Nodes", TRUE, -1, refresh_part},
 	{G_TYPE_STRING, SORTID_CPUS, "CPUs", FALSE, -1, refresh_part},
-	{G_TYPE_STRING, SORTID_DISK, "Disk", FALSE, -1, refresh_part},
+	{G_TYPE_STRING, SORTID_DISK, "Temp Disk", FALSE, -1, refresh_part},
+	{G_TYPE_STRING, SORTID_MEM, "MEM", FALSE, -1, refresh_part},
 	{G_TYPE_STRING, SORTID_STATE, "State", TRUE, -1, refresh_part},
-	{G_TYPE_INT, SORTID_STATE, NULL, FALSE, -1, refresh_part},
+	{G_TYPE_STRING, SORTID_WEIGHT, "Weight", TRUE, -1, refresh_part},
 #ifdef HAVE_BG
 	{G_TYPE_STRING, SORTID_NODELIST, "BP List", TRUE, -1, refresh_part},
 #else
 	{G_TYPE_STRING, SORTID_NODELIST, "NodeList", TRUE, -1, refresh_part},
 #endif
+	{G_TYPE_INT, SORTID_STATE_NUM, NULL, FALSE, -1, refresh_part},
 	{G_TYPE_INT, SORTID_UPDATED, NULL, FALSE, -1, refresh_part},
 
 	{G_TYPE_NONE, -1, NULL, FALSE, -1}
@@ -155,6 +156,22 @@ _build_min_max_string(char *buffer, int buf_size, int min, int max, bool range)
 		return snprintf(buffer, buf_size, "%s+", tmp_min);
 }
 
+/*
+ * _str_tolower - convert string to all lower case
+ * upper_str IN - upper case input string
+ * RET - lower case version of upper_str, caller must be xfree
+ */ 
+static char *_str_tolower(char *upper_str)
+{
+	int i = strlen(upper_str) + 1;
+	char *lower_str = xmalloc(i);
+
+	for (i=0; upper_str[i]; i++)
+		lower_str[i] = tolower((int) upper_str[i]);
+
+	return lower_str;
+}
+
 static void _subdivide_part(sview_part_info_t *sview_part_info,
 			    GtkTreeModel *model, 
 			    GtkTreeIter *sub_iter,
@@ -320,8 +337,9 @@ static void _update_part_sub_record(sview_part_sub_t *sview_part_sub,
 	char time_buf[20];
 	char tmp_cnt[7];
 	partition_info_t *part_ptr = sview_part_sub->part_ptr;
-			     
-	
+	char *upper = NULL, *lower = NULL;		     
+	char tmp[1024];
+
 	gtk_tree_store_set(treestore, iter, SORTID_NAME, part_ptr->name, -1);
 
 	if(part_ptr->default_part)
@@ -332,43 +350,40 @@ static void _update_part_sub_record(sview_part_sub_t *sview_part_sub,
 	else
 		gtk_tree_store_set(treestore, iter, SORTID_AVAIL, "down", -1);
 		
-	if (part_ptr->max_time == INFINITE)
-		snprintf(time_buf, sizeof(time_buf), "infinite");
-	else {
-		snprint_time(time_buf, sizeof(time_buf), 
-			     (part_ptr->max_time * 60));
-	}
+	upper = node_state_string_compact(sview_part_sub->node_state);
+	lower = _str_tolower(upper);
+	gtk_tree_store_set(treestore, iter, SORTID_STATE, 
+			   lower, -1);
+	xfree(lower);
+	gtk_tree_store_set(treestore, iter, SORTID_STATE_NUM,
+			   sview_part_sub->node_state, -1);
 	
-	gtk_tree_store_set(treestore, iter, SORTID_TIMELIMIT, time_buf, -1);
+	_build_min_max_string(time_buf, sizeof(time_buf), 
+			      sview_part_sub->min_cpus, 
+			      sview_part_sub->max_cpus, false);
+	gtk_tree_store_set(treestore, iter, SORTID_CPUS, time_buf, -1);
 	
 	_build_min_max_string(time_buf, sizeof(time_buf), 
-			      part_ptr->min_nodes, 
-			      part_ptr->max_nodes, true);
-	gtk_tree_store_set(treestore, iter, SORTID_JOB_SIZE, time_buf, -1);
+			      sview_part_sub->min_disk, 
+			      sview_part_sub->max_disk, false);
+	gtk_tree_store_set(treestore, iter, SORTID_DISK, time_buf, -1);
 
-	if(part_ptr->root_only)
-		gtk_tree_store_set(treestore, iter, SORTID_ROOT, "yes", -1);
-	else
-		gtk_tree_store_set(treestore, iter, SORTID_ROOT, "no", -1);
-	
-	if(part_ptr->shared > 1)
-		gtk_tree_store_set(treestore, iter, SORTID_SHARE, "force", -1);
-	else if(part_ptr->shared)
-		gtk_tree_store_set(treestore, iter, SORTID_SHARE, "yes", -1);
-	else
-		gtk_tree_store_set(treestore, iter, SORTID_SHARE, "no", -1);
-	
-	if(part_ptr->allow_groups)
-		gtk_tree_store_set(treestore, iter, SORTID_GROUPS,
-				   part_ptr->allow_groups, -1);
-	else
-		gtk_tree_store_set(treestore, iter, SORTID_GROUPS, "all", -1);
+	_build_min_max_string(time_buf, sizeof(time_buf), 
+			      sview_part_sub->min_mem, 
+			      sview_part_sub->max_mem, false);
+	gtk_tree_store_set(treestore, iter, SORTID_MEM, time_buf, -1);
 
-	convert_num_unit((float)part_ptr->total_nodes, tmp_cnt, UNIT_NONE);
-	gtk_tree_store_set(treestore, iter, SORTID_NODES, tmp_cnt, -1);
+	_build_min_max_string(time_buf, sizeof(time_buf), 
+			      sview_part_sub->min_weight, 
+			      sview_part_sub->max_weight, false);
+	gtk_tree_store_set(treestore, iter, SORTID_WEIGHT, time_buf, -1);
 
+	convert_num_unit((float)sview_part_sub->node_cnt, tmp_cnt, UNIT_NONE);
+	gtk_tree_store_set(treestore, iter, SORTID_NODES, tmp_cnt, -1);
+	
+	hostlist_ranged_string(sview_part_sub->hl, sizeof(tmp), tmp);
 	gtk_tree_store_set(treestore, iter, SORTID_NODELIST, 
-			   part_ptr->nodes, -1);
+			   tmp, -1);
 	gtk_tree_store_set(treestore, iter, SORTID_UPDATED, 1, -1);	
 	
 		
@@ -576,14 +591,12 @@ static void _update_sview_part_sub(sview_part_sub_t *sview_part_sub,
 				   node_info_t *node_ptr, 
 				   int node_scaling)
 {
-	uint16_t base_state;
-	
 	list_append(sview_part_sub->node_ptr_list, node_ptr);
 
 	if(!node_scaling)
 		node_scaling = 1;
 	
-	if (sview_part_sub->nodes_tot == 0) {	/* first node added */
+	if (sview_part_sub->node_cnt == 0) {	/* first node added */
 		sview_part_sub->node_state = node_ptr->node_state;
 		sview_part_sub->features   = node_ptr->features;
 		sview_part_sub->reason     = node_ptr->reason;
@@ -622,17 +635,8 @@ static void _update_sview_part_sub(sview_part_sub_t *sview_part_sub,
 			sview_part_sub->max_weight = node_ptr->weight;
 	}
 
-	base_state = node_ptr->node_state & NODE_STATE_BASE;
-	if (node_ptr->node_state & NODE_STATE_DRAIN)
-		sview_part_sub->nodes_other += node_scaling;
-	else if ((base_state == NODE_STATE_ALLOCATED)
-	||       (node_ptr->node_state & NODE_STATE_COMPLETING))
-		sview_part_sub->nodes_alloc += node_scaling;
-	else if (base_state == NODE_STATE_IDLE)
-		sview_part_sub->nodes_idle += node_scaling;
-	else 
-		sview_part_sub->nodes_other += node_scaling;
-	sview_part_sub->nodes_tot += node_scaling;
+	sview_part_sub->node_cnt += node_scaling;
+	hostlist_push(sview_part_sub->hl, node_ptr->name);
 }
 
 /* 
@@ -646,7 +650,6 @@ static sview_part_sub_t *_create_sview_part_sub(partition_info_t *part_ptr,
 {
 	sview_part_sub_t *sview_part_sub_ptr = 
 		xmalloc(sizeof(sview_part_sub_t));
-	uint16_t base_state;
 	
 	if(!node_scaling)
 		node_scaling = 1;
@@ -663,16 +666,9 @@ static sview_part_sub_t *_create_sview_part_sub(partition_info_t *part_ptr,
 	}
 	sview_part_sub_ptr->part_ptr = part_ptr;
 		
-	base_state = node_ptr->node_state & NODE_STATE_BASE;
 	sview_part_sub_ptr->node_state = node_ptr->node_state;
-	if ((base_state == NODE_STATE_ALLOCATED)
-	    ||  (node_ptr->node_state & NODE_STATE_COMPLETING))
-		sview_part_sub_ptr->nodes_alloc = node_scaling;
-	else if (base_state == NODE_STATE_IDLE)
-		sview_part_sub_ptr->nodes_idle = node_scaling;
-	else 
-		sview_part_sub_ptr->nodes_other = node_scaling;
-	sview_part_sub_ptr->nodes_tot = node_scaling;
+	sview_part_sub_ptr->node_cnt = node_scaling;
+	
 	sview_part_sub_ptr->min_cpus = node_ptr->cpus;
 	sview_part_sub_ptr->max_cpus = node_ptr->cpus;