From 6b6eedd7c40a86372048c287e4f1f201e9081d70 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Fri, 15 Oct 2010 20:19:57 +0000
Subject: [PATCH] more fixes to the col list

---
 src/sview/block_info.c |  9 +++----
 src/sview/common.c     | 34 +++++++++++++++-----------
 src/sview/defaults.c   | 54 +++++++++++++++++++++++-------------------
 src/sview/job_info.c   |  5 ++--
 src/sview/node_info.c  |  4 ++--
 src/sview/part_info.c  |  4 ++--
 src/sview/resv_info.c  |  4 ++--
 src/sview/sview.h      |  3 +--
 8 files changed, 63 insertions(+), 54 deletions(-)

diff --git a/src/sview/block_info.c b/src/sview/block_info.c
index 2bab9194cba..f939c99ac68 100644
--- a/src/sview/block_info.c
+++ b/src/sview/block_info.c
@@ -87,8 +87,8 @@ enum {
 
 /*these are the settings to apply for the user
  * on the first startup after a fresh slurm install.*/
-static char *_initial_page_opts = ",Block ID,State,JobID,User,Node Count,"
-	"Connection Type,BP List,Partition";
+static char *_initial_page_opts = "Block_ID,State,JobID,User,Node_Count,"
+	"Node_Use,BP_List,Partition";
 
 static display_data_t display_data_block[] = {
 	{G_TYPE_INT, SORTID_POS, NULL, FALSE, EDIT_NONE, refresh_block,
@@ -124,7 +124,7 @@ static display_data_t display_data_block[] = {
 	{G_TYPE_STRING, SORTID_IMAGERAMDISK, "Image Ramdisk",
 	 FALSE, EDIT_NONE, refresh_block, create_model_block, admin_edit_block},
 #else
-	{G_TYPE_STRING, SORTID_USE, NULL, TRUE, EDIT_NONE, refresh_block,
+	{G_TYPE_STRING, SORTID_USE, NULL, FALSE, EDIT_NONE, refresh_block,
 	 create_model_block, admin_edit_block},
 	{G_TYPE_STRING, SORTID_IMAGEBLRTS, NULL,
 	 FALSE, EDIT_NONE, refresh_block, create_model_block, admin_edit_block},
@@ -1463,7 +1463,6 @@ extern void cluster_change_block()
 			switch(display_data->id) {
 			case SORTID_USE:
 				display_data->name = "Node Use";
-				display_data->show = TRUE;
 				break;
 			case SORTID_IMAGEBLRTS:
 				display_data->name = "Image Blrt";
@@ -1481,11 +1480,9 @@ extern void cluster_change_block()
 			switch(display_data->id) {
 			case SORTID_USE:
 				display_data->name = NULL;
-				display_data->show = FALSE;
 				break;
 			case SORTID_IMAGEBLRTS:
 				display_data->name = NULL;
-				display_data->show = FALSE;
 				break;
 			case SORTID_IMAGELINUX:
 				display_data->name = "Image Cnload";
diff --git a/src/sview/common.c b/src/sview/common.c
index 2496ab2525e..b3c12913601 100644
--- a/src/sview/common.c
+++ b/src/sview/common.c
@@ -837,14 +837,11 @@ extern int find_col(display_data_t *display_data, int type)
 
 extern const char *find_col_name(display_data_t *display_data, int type)
 {
-	int i = 0;
-
 	while (display_data++) {
 		if (display_data->id == -1)
 			break;
 		if (display_data->id == type)
 			return display_data->name;
-		i++;
 	}
 	return NULL;
 }
@@ -887,7 +884,7 @@ extern void make_fields_menu(popup_info_t *popup_win, GtkMenu *menu,
 			 NULL);
 
 	for(i=0; i<count; i++) {
-		while(display_data++) {
+		while (display_data++) {
 			if(display_data->id == -1)
 				break;
 			if(!display_data->name)
@@ -925,27 +922,36 @@ extern void set_page_opts(int page, display_data_t *display_data,
 			  int count, char* initial_opts)
 {
 	page_opts_t *page_opts;
-	int j= 0;
+	ListIterator itr = NULL;
+	char *col_name = NULL;
 
 	xassert(page < PAGE_CNT);
 
 	page_opts = &working_sview_config.page_opts[page];
 	if (!page_opts->col_list) {
 		page_opts->def_col_list = 1;
-		page_opts->col_list = xstrdup(initial_opts);
+		page_opts->col_list = list_create(slurm_destroy_char);
+		slurm_addto_char_list(page_opts->col_list, initial_opts);
 	}
 
 	page_opts->display_data = display_data;
-	page_opts->count = count;
-	for (j=0; j<count; j++) {
-		if (display_data->id == -1)
-			break;
-		if (display_data->name
-		    && strstr(page_opts->col_list, display_data->name))
-			display_data->show = TRUE;
 
-		display_data++;
+	itr = list_iterator_create(page_opts->col_list);
+	while ((col_name = list_next(itr))) {
+		replus(col_name);
+		while (display_data++) {
+			if (display_data->id == -1)
+				break;
+			if (!display_data->name)
+				continue;
+			if (!strcasecmp(col_name, display_data->name)) {
+				display_data->show = TRUE;
+				break;
+			}
+		}
+		display_data = page_opts->display_data;
 	}
+	list_iterator_destroy(itr);
 }
 
 
diff --git a/src/sview/defaults.c b/src/sview/defaults.c
index 7f9a808344c..a60203b556f 100644
--- a/src/sview/defaults.c
+++ b/src/sview/defaults.c
@@ -234,7 +234,6 @@ static const char *_set_sview_config(sview_config_t *sview_config,
 			sview_config->show_hidden = 1;
 		else
 			sview_config->show_hidden = 0;
-		g_print("got hidden of %d\n", sview_config->show_hidden);
 		break;
 	case SORTID_SAVE_PAGE_OPTS:
 		type = "Save Page Settings";
@@ -656,7 +655,6 @@ extern int load_defaults()
 		char *col_list = NULL;
 		char *page_name = page_to_str(i);
 		page_opts_t *page_opts = &default_sview_config.page_opts[i];
-
 		if (!page_name)
 			continue;
 		memset(page_opts, 0, sizeof(page_opts_t));
@@ -665,8 +663,9 @@ extern int load_defaults()
 		s_p_get_string(&col_list, tmp_str, hashtbl);
 		xfree(tmp_str);
 		if (col_list) {
-			page_opts->col_list = col_list;
-			replus(page_opts->col_list);
+			page_opts->col_list = list_create(slurm_destroy_char);
+			slurm_addto_char_list(page_opts->col_list, col_list);
+			xfree(col_list);
 		}
 	}
 
@@ -675,7 +674,7 @@ extern int load_defaults()
 
 end_it:
 	/* copy it all into the working struct (memory will work out
-	 * in the end the col_list and def_col_list don't change) */
+	 * in the end the col_list doesn't change) */
 	memcpy(&working_sview_config, &default_sview_config,
 	       sizeof(sview_config_t));
 
@@ -691,7 +690,6 @@ extern int save_defaults(bool final_save)
 	char *tmp_str = NULL, *tmp_str2 = NULL;
 	int fd = 0;
 	int i = 0;
-	int j = 0;
 	display_data_t *display_data;
 
 	if(!home)
@@ -844,29 +842,37 @@ extern int save_defaults(bool final_save)
 			continue;
 
 		if (working_sview_config.save_page_opts) {
-			if (page_opts->display_data) {
-				display_data = page_opts->display_data;
-				for (j=0; j<page_opts->count; j++) {
-					if (display_data->id == -1)
-						break;
-					if (display_data->name
-					    && display_data->show)
-						xstrfmtcat(tmp_str2, ",%s",
-							   display_data->name);
-					display_data++;
-				} //spin the menu options ^^
-				replspace(tmp_str2);
-			} //have a display struct ^^
-			//save new option set ^^
-		} else if (!page_opts->def_col_list && page_opts->col_list) {
+			display_data = page_opts->display_data;
+			while (display_data++) {
+				if (display_data->id == -1)
+					break;
+				if (!display_data->name || !display_data->show)
+					continue;
+
+				if (tmp_str2)
+					xstrcat(tmp_str2, ",");
+				xstrfmtcat(tmp_str2, "%s", display_data->name);
+			} //spin the menu options ^^
+		} else if (!page_opts->def_col_list
+			   && page_opts->col_list
+			   && list_count(page_opts->col_list)) {
+			ListIterator itr =
+				list_iterator_create(page_opts->col_list);
+			char *col_name = NULL;
 			//user requested no save of page options
-			g_print("using default\n");
-			tmp_str2 = xstrdup(page_opts->col_list);
+			while ((col_name = list_next(itr))) {
+				if (tmp_str2)
+					xstrcat(tmp_str2, ",");
+				xstrfmtcat(tmp_str2, "%s", col_name);
+			}
+			list_iterator_destroy(itr);
 		}
 
-		xfree(page_opts->col_list);
+		list_destroy(page_opts->col_list);
+		page_opts->col_list = NULL;
 
 		if (tmp_str2) {
+			replspace(tmp_str2);
 			tmp_str = xstrdup_printf("PageOpts%s=%s\n",
 						 page_opts->page_name,
 						 tmp_str2);
diff --git a/src/sview/job_info.c b/src/sview/job_info.c
index b8f8d08c098..ffd48e98659 100644
--- a/src/sview/job_info.c
+++ b/src/sview/job_info.c
@@ -174,8 +174,9 @@ enum {
  * take place.  If you choose EDIT_MODEL (means only display a set of
  * known options) create it in function create_model_*.
  */
-static char *_initial_page_opts = (",JobID,Partition,UserID,Name,"
-				   "State,Time Running,Node Count,NodeList,");
+static char *_initial_page_opts = ("JobID,Partition,BG_Block,"
+				   "ALPS_Resv_ID,UserID,Name,"
+				   "State,Time_Running,Node_Count,NodeList");
 
 static display_data_t display_data_job[] = {
 	{G_TYPE_INT, SORTID_POS, NULL, FALSE, EDIT_NONE, refresh_job,
diff --git a/src/sview/node_info.c b/src/sview/node_info.c
index 76275c947e9..e724d3323e0 100644
--- a/src/sview/node_info.c
+++ b/src/sview/node_info.c
@@ -72,8 +72,8 @@ typedef struct {
 
 /*these are the settings to apply for the user
  * on the first startup after a fresh slurm install.*/
-static char *_initial_page_opts = ",Name,State,CPU Count,Used CPU Count,"
-	"Error CPU Count,Cores,Sockets,Threads,Real Memory,Tmp Disk,";
+static char *_initial_page_opts = "Name,State,CPU_Count,Used_CPU_Count,"
+	"Error_CPU_Count,Cores,Sockets,Threads,Real_Memory,Tmp_Disk";
 
 static display_data_t display_data_node[] = {
 	{G_TYPE_INT, SORTID_POS, NULL, FALSE, EDIT_NONE, refresh_node,
diff --git a/src/sview/part_info.c b/src/sview/part_info.c
index c9c7b8af09f..dd059622fe3 100644
--- a/src/sview/part_info.c
+++ b/src/sview/part_info.c
@@ -107,8 +107,8 @@ enum {
 
 /*these are the settings to apply for the user
  * on the first startup after a fresh slurm install.*/
-static char *_initial_page_opts = ",Partition,Default,Part State,"
-	"Time Limit,Node State,NodeList,";
+static char *_initial_page_opts = "Partition,Default,Part_State,"
+	"Time_Limit,Node_Count,Node_State,NodeList";
 
 static display_data_t display_data_part[] = {
 	{G_TYPE_INT, SORTID_POS, NULL, FALSE, EDIT_NONE, refresh_part},
diff --git a/src/sview/resv_info.c b/src/sview/resv_info.c
index 8c80e443ad5..b8b05317673 100644
--- a/src/sview/resv_info.c
+++ b/src/sview/resv_info.c
@@ -73,8 +73,8 @@ enum {
 /*these are the settings to apply for the user
  * on the first startup after a fresh slurm install.
  * s/b a const probably*/
-static char *_initial_page_opts = ",Name,Node Count,NodeList,"
-	"Time Start,Time End,";
+static char *_initial_page_opts = "Name,Node_Count,NodeList,"
+	"Time_Start,Time_End";
 
 static display_data_t display_data_resv[] = {
 	{G_TYPE_INT, SORTID_POS, NULL, FALSE, EDIT_NONE,
diff --git a/src/sview/sview.h b/src/sview/sview.h
index 0c689481d7b..e76d84f2200 100644
--- a/src/sview/sview.h
+++ b/src/sview/sview.h
@@ -175,8 +175,7 @@ typedef struct  {
 } switch_record_bitmaps_t;
 
 typedef struct {
-	char *col_list;
-	int count;
+	List col_list;
 	bool def_col_list;
 	display_data_t *display_data;
 	char *page_name;
-- 
GitLab