From c308b36ea55e4a084ada13ed42b89491f4f3c54a Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Thu, 23 Apr 2009 17:05:27 +0000 Subject: [PATCH] only highlight nodes in current reservation. display a reservation's duration --- src/sview/resv_info.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/sview/resv_info.c b/src/sview/resv_info.c index 76897415446..c20f15dd963 100644 --- a/src/sview/resv_info.c +++ b/src/sview/resv_info.c @@ -48,6 +48,7 @@ enum { SORTID_POS = POS_LOC, SORTID_ACCOUNTS, SORTID_ACTION, + SORTID_DURATION, SORTID_END_TIME, SORTID_FEATURES, SORTID_FLAGS, @@ -77,9 +78,11 @@ static display_data_t display_data_resv[] = { refresh_resv, create_model_resv, admin_edit_resv}, {G_TYPE_STRING, SORTID_NODE_LIST, "NodeList", TRUE, EDIT_TEXTBOX, refresh_resv, create_model_resv, admin_edit_resv}, - {G_TYPE_STRING, SORTID_START_TIME, "StartTime", FALSE, EDIT_TEXTBOX, + {G_TYPE_STRING, SORTID_START_TIME, "StartTime", TRUE, EDIT_TEXTBOX, refresh_resv, create_model_resv, admin_edit_resv}, - {G_TYPE_STRING, SORTID_END_TIME, "EndTime", FALSE, EDIT_TEXTBOX, + {G_TYPE_STRING, SORTID_END_TIME, "EndTime", TRUE, EDIT_TEXTBOX, + refresh_resv, create_model_resv, admin_edit_resv}, + {G_TYPE_STRING, SORTID_DURATION, "Duration", FALSE, EDIT_TEXTBOX, refresh_resv, create_model_resv, admin_edit_resv}, {G_TYPE_STRING, SORTID_ACCOUNTS, "Accounts", FALSE, EDIT_TEXTBOX, refresh_resv, create_model_resv, admin_edit_resv}, @@ -230,6 +233,14 @@ static const char *_set_resv_msg(resv_desc_msg_t *resv_msg, else got_edit_signal = xstrdup(new_text); break; + case SORTID_DURATION: + temp_int = strtol(new_text, (char **)NULL, 10); + + type = "duration"; + if(temp_int <= 0) + goto return_error; + resv_msg->duration = temp_int; + break; case SORTID_END_TIME: resv_msg->end_time = parse_time((char *)new_text, 0); type = "end time"; @@ -467,6 +478,14 @@ static void _layout_resv_record(GtkTreeView *treeview, SORTID_END_TIME), time_buf); + secs2time_str((uint32_t)difftime(resv_ptr->end_time, + resv_ptr->start_time), + time_buf, sizeof(time_buf)); + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_resv, + SORTID_DURATION), + time_buf); + add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_resv, SORTID_ACCOUNTS), @@ -508,6 +527,11 @@ static void _update_resv_record(sview_resv_info_t *sview_resv_info_ptr, gtk_tree_store_set(treestore, iter, SORTID_ACCOUNTS, resv_ptr->accounts, -1); + secs2time_str((uint32_t)difftime(resv_ptr->end_time, + resv_ptr->start_time), + tmp_char, sizeof(tmp_char)); + gtk_tree_store_set(treestore, iter, SORTID_DURATION, tmp_char, -1); + slurm_make_time_str((time_t *)&resv_ptr->end_time, tmp_char, sizeof(tmp_char)); gtk_tree_store_set(treestore, iter, SORTID_END_TIME, tmp_char, -1); @@ -907,6 +931,7 @@ extern void get_info_resv(GtkTable *table, display_data_t *display_data) ListIterator itr = NULL; sview_resv_info_t *sview_resv_info_ptr = NULL; reserve_info_t *resv_ptr = NULL; + time_t now = time(NULL); if(display_data) local_display_data = display_data; @@ -946,6 +971,9 @@ display_it: itr = list_iterator_create(info_list); while ((sview_resv_info_ptr = list_next(itr))) { resv_ptr = sview_resv_info_ptr->resv_ptr; + if ((resv_ptr->start_time > now) || + (resv_ptr->end_time < now)) + continue; /* only map current reservations */ j=0; while(resv_ptr->node_inx[j] >= 0) { sview_resv_info_ptr->color = -- GitLab