From 5c62afc314bfbff55e36c0f7f8e9aec0cc9246c4 Mon Sep 17 00:00:00 2001 From: Tomas Jelinek Date: Wed, 2 Sep 2015 14:04:55 +0200 Subject: [PATCH] web UI: mark unsaved permissions forms --- pcsd/public/js/pcsd.js | 36 ++++++++++++++++++++++++++++++++++++ pcsd/views/_permissions_cluster.erb | 5 ++++- pcsd/views/permissions.erb | 8 +++++++- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/pcsd/public/js/pcsd.js b/pcsd/public/js/pcsd.js index 2c71e6b..879b533 100644 --- a/pcsd/public/js/pcsd.js +++ b/pcsd/public/js/pcsd.js @@ -2205,6 +2205,7 @@ function permissions_load_cluster(cluster_name, callback) { $("#" + element_id + " :checkbox").each(function(key, checkbox) { permissions_fix_dependent_checkboxes(checkbox); }); + permissions_cluster_dirty_flag(cluster_name, false); if (callback) { callback(); } @@ -2259,8 +2260,27 @@ function permissions_save_cluster(form) { }); } +function permissions_cluster_dirty_flag(cluster_name, flag) { + var cluster_row = permissions_get_cluster_row(cluster_name); + if (cluster_row) { + var dirty_elem = cluster_row.find("span[class=unsaved_changes]"); + if (dirty_elem) { + if (flag) { + dirty_elem.show(); + } + else { + dirty_elem.hide(); + } + } + } +} + function permission_remove_row(button) { + var cluster_name = permissions_get_clustername( + $(button).parents("form").first() + ); $(button).parent().parent().remove(); + permissions_cluster_dirty_flag(cluster_name, true); } function permissions_add_row(template_row) { @@ -2268,6 +2288,9 @@ function permissions_add_row(template_row) { var user_type = permissions_get_row_type(template_row); var max_key = -1; var exists = false; + var cluster_name = permissions_get_clustername( + $(template_row).parents("form").first() + ); if("" == user_name) { alert("Please enter the name"); @@ -2326,6 +2349,8 @@ function permissions_add_row(template_row) { template_inputs.removeAttr("checked").removeAttr("selected"); template_inputs.removeAttr("disabled").removeAttr("readonly"); $(template_row).find(":input[type=text]").val(""); + + permissions_cluster_dirty_flag(cluster_name, true); } function permissions_get_dependent_checkboxes(checkbox) { @@ -2400,3 +2425,14 @@ function permissions_get_checkbox_permission(checkbox) { return ""; } +function permissions_get_cluster_row(cluster_name) { + var cluster_row = null; + $('#cluster_list td[class=node_name]').each(function(index, elem) { + var jq_elem = $(elem); + if (jq_elem.text().trim() == cluster_name.trim()) { + cluster_row = jq_elem.parents("tr").first(); + } + }); + return cluster_row; +} + diff --git a/pcsd/views/_permissions_cluster.erb b/pcsd/views/_permissions_cluster.erb index 232a5de..4048366 100644 --- a/pcsd/views/_permissions_cluster.erb +++ b/pcsd/views/_permissions_cluster.erb @@ -58,7 +58,10 @@ <% if user['allow'].include?(perm['code']) %> checked="checked" <% end %> - onchange="permissions_fix_dependent_checkboxes(this);" + onchange=" + permissions_fix_dependent_checkboxes(this); + permissions_cluster_dirty_flag('<%= h(@cluster_name) %>', true); + " > <% } %> diff --git a/pcsd/views/permissions.erb b/pcsd/views/permissions.erb index b02d9d3..1e38d7e 100644 --- a/pcsd/views/permissions.erb +++ b/pcsd/views/permissions.erb @@ -16,7 +16,8 @@ - + + <% @clusters.each do |c| %> @@ -28,6 +29,11 @@ + -- 1.9.1
CLUSTER NAME CLUSTER NAME
+ + <%= h(c.name) %>