From 5c62afc314bfbff55e36c0f7f8e9aec0cc9246c4 Mon Sep 17 00:00:00 2001
From: Tomas Jelinek <tojeline@redhat.com>
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);
+ "
>
</td>
<% } %>
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 @@
<table cellpadding="0" cellspacing="0" style="width:100%;">
<tr>
<th> </th>
- <th>CLUSTER NAME</th>
+ <th> </th>
+ <th>CLUSTER NAME</th>
<th style="padding-right: 16px;"> </th>
</tr>
<% @clusters.each do |c| %>
@@ -28,6 +29,11 @@
<td class="node_list_sprite">
<div class="check sprites"></div>
</td>
+ <td style="min-width:1em; padding-right:0.5em;">
+ <span class="unsaved_changes" style="display:none;"
+ title="There are unsaved changes in the form"
+ >(*)</span>
+ </td>
<td nowrap class="node_name">
<%= h(c.name) %>
</td>
--
1.9.1