Index: /branches/rel_avx_2_7_3/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/interface/sys_interface/sys_interface.controller.js
===================================================================
--- /branches/rel_avx_2_7_3/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/interface/sys_interface/sys_interface.controller.js	(revision 8906)
+++ /branches/rel_avx_2_7_3/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/interface/sys_interface/sys_interface.controller.js	(working copy)
@@ -36,6 +36,9 @@
             resourceViewModel.work_mode = false;
             resourceViewModel.system_index = 0;
             resourceViewModel.system_detail_index = 1;
+            resourceViewModel.is_update_interface_setting = false; // To check only show progress bar once
+            resourceViewModel.update_interface_setting_count = 0; // Count if all changes are updated
+            resourceViewModel.refresh_for_update_interface_setting = false; // To check only refresh page once
 
             resourceViewModel.get_work_mode = function(port_name) {
                 netResourceService
@@ -49,17 +52,34 @@
             };
 
             resourceViewModel.set_work_mode = function(port_name, enable) {
-                showProgressBar();
+                if (resourceViewModel.work_mode_origin == enable) {
+                    // No changes, don't call API, and plus updated count
+                    resourceViewModel.update_interface_setting_count++;
+                    return;
+                }
+                if (!resourceViewModel.is_update_interface_setting) {
+                    showProgressBar();
+                    resourceViewModel.is_update_interface_setting = true;
+                }
                 netResourceService
                     .set_work_mode(port_name, enable)
                     .then(function(res) {
-                        $rootScope.$broadcast('endLoading', true);
+                        resourceViewModel.update_interface_setting_count++;
+                        if (resourceViewModel.update_interface_setting_count >= 3) {
+                            // all changes are successful, close the progress bar
+                            $rootScope.$broadcast('endLoading', true);
+                            resourceViewModel.update_interface_setting_count = 0;
+                            resourceViewModel.is_update_interface_setting = false;
+                        }
                         if (res && res.status === 200) {
                             if (!res.data[0]) {
                                 alert(res.data[1]);
                                 resourceViewModel.get_work_mode(port_name);
                             } else {
-                                $state.go("index.network.interface.sys_interface", {}, {reload:true})
+                                if (!resourceViewModel.refresh_for_update_interface_setting) {
+                                    $state.go("index.network.interface.sys_interface", {}, {reload:true})
+                                    resourceViewModel.refresh_for_update_interface_setting = true;
+                                }
                             }
                         }
                     });
@@ -78,17 +98,33 @@
 
             resourceViewModel.set_shutdown = function(port_name, enable) {
                 if (resourceViewModel.shutdown_origin == enable) {
+                    // No changes, don't call API, and plus updated count
+                    resourceViewModel.update_interface_setting_count++;
                     return;
                 }
+                if (!resourceViewModel.is_update_interface_setting) {
+                    showProgressBar();
+                    resourceViewModel.is_update_interface_setting = true;
+                }
                 netResourceService
                     .set_shutdown(port_name, enable)
                     .then(function(res) {
+                        resourceViewModel.update_interface_setting_count++;
+                        if (resourceViewModel.update_interface_setting_count >= 3) {
+                            // all changes are successful, close the progress bar
+                            $rootScope.$broadcast('endLoading', true);
+                            resourceViewModel.update_interface_setting_count = 0;
+                            resourceViewModel.is_update_interface_setting = false;
+                        }
                         if (res && res.status === 200) {
                             if (!res.data[0]) {
                                 alert(res.data[1]);
                                 resourceViewModel.get_shutdown(port_name);
                             } else {
-                                $state.go("index.network.interface.sys_interface", {}, {reload:true})
+                                if (!resourceViewModel.refresh_for_update_interface_setting) {
+                                    $state.go("index.network.interface.sys_interface", {}, {reload:true})
+                                    resourceViewModel.refresh_for_update_interface_setting = true;
+                                }
                             }
                         }
                     });
@@ -107,17 +143,33 @@
 
             resourceViewModel.set_description = function(port_name, description) {
                 if (description == resourceViewModel.description_origin) {
+                    // No changes, don't call API, and plus updated count
+                    resourceViewModel.update_interface_setting_count++;
                     return;
                 }
+                if (!resourceViewModel.is_update_interface_setting) {
+                    showProgressBar();
+                    resourceViewModel.is_update_interface_setting = true;
+                }
                 netResourceService
                     .set_description(port_name, description)
                     .then(function(res) {
+                        resourceViewModel.update_interface_setting_count++;
+                        if (resourceViewModel.update_interface_setting_count >= 3) {
+                            // all changes are successful, close the progress bar
+                            $rootScope.$broadcast('endLoading', true);
+                            resourceViewModel.is_update_interface_setting = false;
+                            resourceViewModel.update_interface_setting_count = 0;
+                        }
                         if (res && res.status === 200) {
                             if (!res.data[0]) {
                                 alert(res.data[1]);
                                 resourceViewModel.get_description(port_name);
                             } else {
-                                $state.go("index.network.interface.sys_interface", {}, {reload:true})
+                                if (!resourceViewModel.refresh_for_update_interface_setting) {
+                                    $state.go("index.network.interface.sys_interface", {}, {reload:true})
+                                    resourceViewModel.refresh_for_update_interface_setting = true;
+                                }
                             }
                         }
                     });
