On 01/14/2011 03:12 AM, Endi Sukma Dewata wrote:
On 1/14/2011 2:35 AM, Adam Young wrote:



Mostly fine except these minor things:

1. Everytime you click Update on details facet the primary key will
   be prepended to the header. See details.js:664:

      $('h1',that.container).prepend(that.pkey);

2. The hide_activity_icon() invocations in the following methods:
    - ajax_error_handler()
    - http_error_handler()
    - ipa_error_handler()
   are unnecessary because it's been invoked earlier by success_handler
   or error_handler.

Updated
From fe32a392f531e608800c0e3ef515778a4d4fb2be Mon Sep 17 00:00:00 2001
From: Adam Young <ayo...@redhat.com>
Date: Mon, 10 Jan 2011 21:14:51 -0500
Subject: [PATCH] spinning wheel
 display a spinning icon gif during network traffic.
 Fixes the following from first patch:
    1  primary key set in span as opposed to appended, so it only appears once.
    2. call hide for the network activity icon only in success or failure functions, not multiple times

---
 install/static/Makefile.am        |    3 ++
 install/static/details.js         |   12 ++++++++--
 install/static/index.html         |    5 +++-
 install/static/ipa.css            |   18 +++++++++++++++++
 install/static/ipa.js             |   38 ++++++++++++++++++++++++++++++++----
 install/static/search.js          |    2 +
 install/static/spinner_header.gif |  Bin 0 -> 2841 bytes
 install/static/spinner_large.gif  |  Bin 0 -> 6030 bytes
 install/static/spinner_small.gif  |  Bin 0 -> 3532 bytes
 install/static/widget.js          |    2 +
 ipa.spec.in                       |    1 +
 11 files changed, 72 insertions(+), 9 deletions(-)
 create mode 100644 install/static/spinner_header.gif
 create mode 100644 install/static/spinner_large.gif
 create mode 100644 install/static/spinner_small.gif

diff --git a/install/static/Makefile.am b/install/static/Makefile.am
index a539eb8bc399c9149686b88858de6e04b7ed02f1..c1a5a75550a7e8f43654fef533690667d9ea9db7 100644
--- a/install/static/Makefile.am
+++ b/install/static/Makefile.am
@@ -70,6 +70,9 @@ app_DATA =                              \
 	ui-icons_ffffff_256x240.png \
 	FreeWay.otf \
 	FreeWay-Bold.otf \
+	spinner_header.gif \
+	spinner_large.gif \
+	spinner_small.gif \
 	$(NULL)
 
 EXTRA_DIST =                            \
diff --git a/install/static/details.js b/install/static/details.js
index 84dbe8b521906b99fc2f59753fe9840da8f760ad..b5c74a62c7677ef76f3eeb191f35071fab0808f6 100644
--- a/install/static/details.js
+++ b/install/static/details.js
@@ -554,6 +554,11 @@ IPA.details_facet = function (spec) {
 
         container.attr('title', that.entity_name);
 
+        $('<h1/>',{
+            html: "<span id='headerpkey' />"+that.entity_name + ' Settings'
+        }).append(IPA.create_network_spinner()).
+            appendTo(container);
+
         var details = $('<div/>', {
             'class': 'content'
         }).appendTo(container);
@@ -573,8 +578,6 @@ IPA.details_facet = function (spec) {
             'name': 'update'
         }).appendTo(buttons);
 
-        details.append('<br/>');
-        details.append('<hr/>');
 
         for (var i = 0; i < that.sections.length; ++i) {
             var section = that.sections[i];
@@ -651,14 +654,17 @@ IPA.details_facet = function (spec) {
 
     function load(record) {
         that.record = record;
-
         for (var i=0; i<that.sections.length; i++) {
             var section = that.sections[i];
             section.load(record);
         }
+        if (that.pkey){
+            $('h1 #headerpkey',that.container).html(that.pkey+": ");
+        }
     }
 
     function reset() {
+
         for (var i=0; i<that.sections.length; i++) {
             var section = that.sections[i];
             section.reset();
diff --git a/install/static/index.html b/install/static/index.html
index d63bfc106abe45432f62fd103271e0d9ba61f3c6..7ee4aa61cf29c3d6d205e07ff8585733b31a31f9 100644
--- a/install/static/index.html
+++ b/install/static/index.html
@@ -45,12 +45,15 @@
     <link rel="stylesheet" type="text/css" href="ipa.css" />
 </head>
 
-<body>
+<body> 
   <div class="center-container">
     <div class="header" >
       <span class="header-logo">
         <a href="#"><img src="ipalogo.png" /></a>
       </span>
+      <span id="header-network-activity-indicator" class="network-activity-indicator">
+        <img src="spinner_header.gif" />
+      </span>
       <span id="loggedinas" class="header-loggedinas">
         <a href="#"><span id="login_header">Logged in as</span>: <strong>u...@freeip.org</strong></a>
       </span>
diff --git a/install/static/ipa.css b/install/static/ipa.css
index 38b68dd0572ab47ee4d99f71ab7010b0d0de943f..2e61d6d9d911df012facbb3497e2315853fcd5c1 100644
--- a/install/static/ipa.css
+++ b/install/static/ipa.css
@@ -22,6 +22,10 @@ body{
     margin: 0;
 }
 
+.network-activity-indicator{
+    display:none;
+}
+
 .center-container {
         margin-left: auto;
         margin-right: auto;
@@ -133,6 +137,20 @@ div.content div.content-buttons img {
     border: 0;
 }
 
+
+.entity-container h1{
+    -moz-border-radius: 0.3em;
+    font-family: "FreeWayBold", "Liberation Sans", Arial, sans-serif;
+    color: #333333;
+    margin: 0;
+    background: #EEEEEE;
+    margin-top: 0.5em;
+    padding: .5em;
+    text-transform: uppercase;
+    font-size: 1.2em;
+}
+
+
 h2 {
     font-family: "FreeWayBold","Liberation Sans", Arial, sans-serif;
     font-size: 1.5em;
diff --git a/install/static/ipa.js b/install/static/ipa.js
index f84028b89bbf15d0facf60323fe767c7692f7327..ed43d550ac56304259b31af320ae890fb46f25a3 100644
--- a/install/static/ipa.js
+++ b/install/static/ipa.js
@@ -229,6 +229,7 @@ IPA.batch_command = function (spec) {
             that.args,
             that.options,
             function(data, text_status, xhr) {
+
                 for (var i=0; i<that.commands.length; i++) {
                     var command = that.commands[i];
                     var result = data.result.results[i];
@@ -283,6 +284,20 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c
 {
     var default_json_url = '/ipa/json';
 
+    var network_call_count = 0;
+    function display_activity_icon(){
+        network_call_count += 1;
+        $('.network-activity-indicator').css('display','inline');
+    }
+
+    function hide_activity_icon(){
+        network_call_count -= 1;
+
+        if (0 === network_call_count){
+            $('.network-activity-indicator').css('display','none');
+        }
+    }
+
     function dialog_open(xhr, text_status, error_thrown) {
         var that = this;
 
@@ -292,11 +307,15 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c
             buttons: {
                 'Retry': function () {
                     IPA.error_dialog.dialog('close');
-                    IPA.cmd(name, args, options, win_callback, fail_callback, objname, command_name);
+                    IPA.cmd(name, args, options, win_callback, fail_callback,
+                            objname, command_name);
                 },
                 'Cancel': function () {
                     IPA.error_dialog.dialog('close');
-                    if (fail_callback) fail_callback.call(that, xhr, text_status, error_thrown);
+                    if (fail_callback) {
+                        fail_callback.call(that, xhr, text_status,
+                                           error_thrown);
+                    }
                 }
             }
         });
@@ -312,7 +331,7 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c
     }
 
     function error_handler(xhr, text_status, error_thrown) {
-
+        hide_activity_icon();
         if (!error_thrown) {
             error_thrown = {
                 name: xhr.responseText || 'Unknown Error',
@@ -349,7 +368,9 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c
         dialog_open.call(this, xhr, text_status, error_thrown);
     }
 
-    function error_handler(xhr, text_status, error_thrown) {
+    //Think this should be removed
+    function alt_error_handler(xhr, text_status, error_thrown) {
+        hide_activity_icon();
         IPA.error_dialog.empty();
         IPA.error_dialog.attr('title', error_thrown.title);
 
@@ -360,6 +381,7 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c
 
 
     function success_handler(data, text_status, xhr) {
+        hide_activity_icon();
         if (!data) {
             var error_thrown = {
                 title: 'HTTP Error '+xhr.status,
@@ -408,7 +430,7 @@ IPA.cmd = function (name, args, options, win_callback, fail_callback, objname, c
         success: success_handler,
         error: error_handler
     };
-
+    display_activity_icon();
     $.ajax(request);
 
     return (id);
@@ -455,3 +477,9 @@ IPA.get_member_attribute = function (obj_name, member)
     }
     return null;
 }
+
+IPA.create_network_spinner = function(){
+    return $('<span />',{
+        'class':'network-activity-indicator',
+        html: '<img src="spinner_small.gif" />'});
+}
diff --git a/install/static/search.js b/install/static/search.js
index d449a8e190e696eb13ff37defdb1e152cf4b9be6..535ad3fcff555aa9221eb989727f744ac73309fb 100644
--- a/install/static/search.js
+++ b/install/static/search.js
@@ -41,6 +41,8 @@ IPA.search_widget =  function (spec) {
             'name': 'search-filter'
         }).appendTo(search_controls);
 
+        search_controls.append(IPA.create_network_spinner());
+
         this.filter = $('<input/>', {
             'type': 'text',
             'name': 'search-' + that.entity_name + '-filter'
diff --git a/install/static/spinner_header.gif b/install/static/spinner_header.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ba9fb781893f916f200f6ea93941a5ea3c81652d
GIT binary patch
literal 2841
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
Pa3Sa?mK;P{e7FAq8*5Kq

literal 0
HcmV?d00001

diff --git a/install/static/spinner_large.gif b/install/static/spinner_large.gif
new file mode 100644
index 0000000000000000000000000000000000000000..276dd5a77d6baf37bb9518d4d231f997803ba333
GIT binary patch
literal 6030
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

literal 0
HcmV?d00001

diff --git a/install/static/spinner_small.gif b/install/static/spinner_small.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1a2da81c22d6d63098512302dd295b9ad0d80269
GIT binary patch
literal 3532
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
Vat9)pvmEPd%!O*p4!%_C{{UOjK05#a

literal 0
HcmV?d00001

diff --git a/install/static/widget.js b/install/static/widget.js
index 297a44acc8bdc5bbf16a41960238330b00533837..f26ee2a1ee3ca1d13e687490797a369fd1cafff4 100644
--- a/install/static/widget.js
+++ b/install/static/widget.js
@@ -1105,6 +1105,8 @@ IPA.adder_dialog = function (spec) {
 
         label.appendTo(search_panel);
 
+        search_panel.append(IPA.create_network_spinner());
+
         var results_panel = $('<div/>', {
             'class': 'adder-dialog-results'
         }).appendTo(that.container);
diff --git a/ipa.spec.in b/ipa.spec.in
index 2d6eda26e1ebe928acd08ed600764ed9b1b11a2f..5662d7dbe403979602aeb66d3af1af6520e7b0d1 100644
--- a/ipa.spec.in
+++ b/ipa.spec.in
@@ -398,6 +398,7 @@ fi
 %dir %{_usr}/share/ipa/static
 %{_usr}/share/ipa/static/index.html
 %{_usr}/share/ipa/static/*.png
+%{_usr}/share/ipa/static/*.gif
 %{_usr}/share/ipa/static/*.css
 %{_usr}/share/ipa/static/*.js
 %{_usr}/share/ipa/static/*.otf
-- 
1.7.3.4

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to