diff --git a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_appcache.xml b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_appcache.xml
index 52568130206eecc46b03935ba34a81867c6a1763..b2e4070ced450fe0fb94d087f6052643d8788d29 100644
--- a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_appcache.xml
+++ b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_appcache.xml
@@ -112,7 +112,7 @@
         <item>
             <key> <string>text_content</string> </key>
             <value> <string>CACHE MANIFEST\n
-# v1.0.0\n
+# v1.0.1\n
 CACHE:\n
 font-awesome/font-awesome-webfont.woff2\n
 echarts-all.js\n
diff --git a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_homepage_html.html b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_homepage_html.html
index ec2c85167253896d0d885e9b46a2a06e8227c4d8..d334055d1aafea77bbced475bed09486f5cf3a53 100644
--- a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_homepage_html.html
+++ b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_homepage_html.html
@@ -15,37 +15,34 @@
     <!-- custom script -->
     <script src="gadget_erp5_page_homepage.js" type="text/javascript"></script>
     <link rel="stylesheet" type="text/css" href="gadget_erp5_page_homepage.css">
-    
+
   </head>
   <body>
-    <form>
-      <div class='ui-field-contain'>
-        <div class='bottom'>
-          <input class='first-line-buttons' id="createSR" data-theme="b" data-inline="true" type="submit" data-i18n="[value]Submit New Support Request" value="Submit New Support Request" data-icon="check"/>
-          <input class='first-line-buttons' id="generateRSS" data-theme="b" data-inline="true" type="submit" data-i18n="[value]Generate RSS" value="Generate RSS" data-icon="check"/>
-          <a id="generate-rss" href="#" target="_blank">RSS Link</a>
+      <div class="ui-field-contain">
+        <div class="bottom">
+          <a><input type="submit" class="first-line-buttons ui-disabled" data-i18n="[value]Submit New Support Request" value="Submit New Support Request" disabled /></a>
+          <a target="_blank"><input class="first-line-buttons ui-disabled" type="submit" data-i18n="[value]Generate RSS" value="Generate RSS" disabled /></a>
         </div>
       </div>
 
-      <div class='ui-field-contain'>
-        <div class='left' style="height:50%; width:100%">
+      <div class="ui-field-contain">
+        <div class="left" style="height:50%; width:100%">
           <div class="ui-icon-spinner ui-btn-icon-notext first-loader graph-spinner"></div>
           <div id="wrap1" style="height:300px;"></div>
         </div>
-              
-        <div class='right' style="height:50%; width:100%">
+
+        <div class="right" style="height:50%; width:100%">
           <div class="ui-icon-spinner ui-btn-icon-notext first-loader graph-spinner"></div>
           <div id="wrap2" style="height:300px;"></div>
         </div>
       </div>
 
-      <div class='bottom'>
-        <button class='restore-button'id="restoreButton" data-i18n="[value]Restore Filter" disabled="disabled">Restore Filter</button>
+      <div class="bottom">
+        <input type="submit" class="ui-disabled" data-i18n="[value]Restore Filter" value="Restore Filter" disabled />
       </div>
       <div data-gadget-url="gadget_erp5_page_form.html" data-gadget-scope="last"></div>
 
       <h1 data-i18n="Support Requests" class="ui-title ui-override-theme worklist-title">Support Requests WorkList</h1>
       <div data-gadget-url="gadget_supportrequest_page_worklist.html" data-gadget-scope="worklist"></div>
-    </form>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_homepage_js.js b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_homepage_js.js
index fc5e7d1b40ac8398961179da283eb3800ef9c69f..4ffea967538f15e66cdab9735229412769ee814c 100644
--- a/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_homepage_js.js
+++ b/bt5/erp5_officejs_support_request_ui/PathTemplateItem/web_page_module/gadget_supportrequest_homepage_js.js
@@ -1,8 +1,38 @@
-/*global document, window, Option, rJS, RSVP*/
+/*global document, window, Option, rJS, RSVP, promiseEventListener, loopEventListener */
 /*jslint nomen: true, indent: 2, maxerr: 3 */
-(function (window, rJS, RSVP) {
+(function (window, rJS, RSVP, promiseEventListener, loopEventListener) {
   "use strict";
 
+  function getActionListByName(action_object, name) {
+    // Usage:
+    //   getActionListByName(erp5_document._links.action_object_view, "view")
+    //   -> [{name: "view", ...}]
+    //   getActionListByName(erp5_document._links.action_object_view, ["web_view", "view"])
+    //   -> [{name: "web_view", ...}, {name: "view", ...}]
+    //   getActionListByName(erp5_document._links.action_object_view, "not found")
+    //   -> throws
+    var iname = 0,
+      iaction = 0,
+      error_list = [],
+      result = null;
+    if (!(Array.isArray(action_object))) { action_object = [action_object]; }
+    if (!(Array.isArray(name))) { name = [name]; }
+    result = new Array(name.length);
+    for (iname = 0; iname < name.length; iname += 1) {
+      for (iaction = 0; iaction < action_object.length; iaction += 1) {
+        if (name[iname] === action_object[iaction].name) {
+          result[iname] = action_object[iaction];
+          break;
+        }
+      }
+      if (!result[iname]) { error_list.push(name[iname]); }
+    }
+    if (error_list.length) {
+      throw new Error("getActionListByName: names not found: " + error_list.join(", "));
+    }
+    return result;
+  }
+
   rJS(window)
     .ready(function (gadget) {
       gadget.property_dict = {};
@@ -78,8 +108,9 @@
           throw error;
         })
         .push(function () {
-          var restore = document.getElementById("restoreButton");
-          restore.removeAttribute('disabled');
+          var restore_filter_input = gadget.element.querySelectorAll("input")[2];
+          restore_filter_input.disabled = false;
+          restore_filter_input.classList.remove("ui-disabled");
         });
       // method code
     })
@@ -128,7 +159,7 @@
             gadget.declareGadget(
               option_dict.graph_gadget,
               {
-                scope: "graph",
+                scope: "graph2",
                 sandbox: "iframe",
                 element: gadget.property_dict.element.querySelector("#wrap2")
               }
@@ -237,21 +268,64 @@
           });
         });
     })
-    .declareJob("renderRestoreButton", function () {
+    .declareService(function () {
       var gadget = this,
-        restore = document.getElementById('restoreButton');
+        restore_filter_input = gadget.element.querySelectorAll("input")[2];
       return gadget.getUrlParameter('extended_search')
         .push(function (result) {
           if (result !== undefined) {
-            restore.removeAttribute("disabled");
+            restore_filter_input.disabled = false;
+            restore_filter_input.classList.remove("ui-disabled");
           }
         });
     })
+    .declareService(function () {
+      var gadget = this;
+      return new RSVP.Queue()
+        .push(function () {
+          var generate_rss_input = gadget.element.querySelectorAll("input")[1],
+            restore_filter_input = gadget.element.querySelectorAll("input")[2],
+            one = new RSVP.Queue().push(function () {
+              return promiseEventListener(generate_rss_input, "click", false);
+            }).push(function () {
+              generate_rss_input.disabled = true;
+              generate_rss_input.classList.add("ui-disabled");
+              return gadget.getSetting("hateoas_url")
+                .push(function (hateoas_url) {
+                  return gadget.jio_getAttachment(
+                    'support_request_module',
+                    hateoas_url + 'support_request_module'
+                      + "/SupportRequestModule_generateRSSLinkAsJson"
+                  );
+                })
+                .push(function (result) {
+                  generate_rss_input.parentNode.href = result.restricted_access_url;
+                  generate_rss_input.value = "RSS Link";
+                  generate_rss_input.disabled = false;
+                  generate_rss_input.classList.remove("ui-disabled");
+                });
+            }),
+            two = loopEventListener(restore_filter_input, "click", false, function () {
+              restore_filter_input.disabled = true;
+              restore_filter_input.classList.add("ui-disabled");
+              return gadget.redirect({
+                command: "change",
+                options: {
+                  extended_search: undefined,
+                  field_listbox_begin_from: undefined
+                }
+              });
+            }, true);
+
+          generate_rss_input.disabled = false;
+          generate_rss_input.classList.remove("ui-disabled");
+          return RSVP.all([one, two]);
+        });
+    })
     .onStateChange(function () {
-      var gadget = this,
-        queue = new RSVP.Queue();
+      var gadget = this;
 
-      queue
+      return new RSVP.Queue()
         .push(function () {
           return RSVP.all([
             gadget.jio_getAttachment("support_request_module", "links"),
@@ -260,130 +334,43 @@
           ]);
         })
         .push(function (result_list) {
-          var i,
-            erp5_document = result_list[0],
-            view_list = erp5_document._links.action_object_view || [],
-            last_href;
-
-          if (view_list.constructor !== Array) {
-            view_list = [view_list];
-          }
-
-          for (i = 0; i < view_list.length; i += 1) {
-            if (view_list[i].name === 'view_last_support_request') {
-              last_href = view_list[i].href;
-            }
-          }
-
-          if (last_href === undefined) {
-            throw new Error('Cant find the list document view');
-          }
+          var erp5_document = result_list[0],
+            worklist_gadget = result_list[1],
+            field_listbox_begin_from = result_list[2],
+            view_list = erp5_document._links.action_object_view || [];
 
           gadget.property_dict.option_dict = {
-            graph_gadget: "unsafe/gadget_field_graph_echarts.html",
-            listbox_gadget: last_href,
+            // graph_gadget: Keep ending slash to be consistent with the automatically set "base" tag
+            graph_gadget: "unsafe/gadget_field_graph_echarts.html/",
+            listbox_gadget: getActionListByName(view_list, "view_last_support_request")[0].href,
             listbox_jio_key: "support_request_module",
-            field_listbox_begin_from: result_list[2]
+            field_listbox_begin_from: field_listbox_begin_from
           };
 
           return RSVP.all([
-            result_list[1].render(),
-            gadget.renderRestoreButton(),
-            gadget.renderGraph() //Launched as service, not blocking
-          ]);
-        });
-      return queue;
-    })
-    .onEvent('change', function (evt) {
-      if (evt.target.id === "field_your_project") {
-        var gadget = this;
-        return gadget.getSetting("hateoas_url")
-          .push(function (hateoas_url) {
-            return gadget.jio_getAttachment(
-              'support_request_module',
-              hateoas_url + 'support_request_module'
-                + "/SupportRequest_getSupportTypeList"
-                + "?project_id=" + evt.target.value + "&json_flag=True"
-            );
-          })
-          .push(function (sp_list) {
-            var i,
-              j,
-              sp_select = document.getElementById('field_your_resource');
-            for (i = sp_select.options.length - 1; i >= 0; i -= 1) {
-              sp_select.remove(i);
-            }
-
-            for (j = 0; j < sp_list.length; j += 1) {
-              sp_select.options[j] = new Option(sp_list[j][0], sp_list[j][1]);
-            }
-          });
-      }
-    }, false, false)
-    .onEvent('click', function (event) {
-      var gadget = this, rss_link = gadget.element.querySelector("#generate-rss"),
-        generate_button = gadget.element.querySelector("#generateRSS"),
-        restore = document.getElementById("restoreButton");
-
-      if (event.target.id === "restoreButton") {
-        restore.setAttribute("disabled", "disabled");
-
-        return gadget.redirect({command: 'change', options: {extended_search: undefined,
-          field_listbox_begin_from: undefined}});
-      }
-
-      if (event.target.id === "generateRSS") {
-        if (rss_link.getAttribute("href") === '#') {
-          return gadget.getSetting("hateoas_url")
-            .push(function (hateoas_url) {
-              return gadget.jio_getAttachment(
-                'support_request_module',
-                hateoas_url + 'support_request_module'
-                  + "/SupportRequestModule_generateRSSLinkAsJson"
-              )
-                .push(function (result) {
-                  rss_link.href = result.restricted_access_url;
-                  rss_link.style.display = "inline-block";
-                  generate_button.style.display = "none";
-                });
-            });
-        }
-      } else if (event.target.id === "createSR") {
-        return gadget.jio_getAttachment('support_request_module', 'links')
-          .push(function (links) {
-            var fast_create_url = links._links.view[2].href;
-            return gadget.getUrlFor({
-              command: 'display',
+            worklist_gadget,
+            gadget.renderGraph(), //Launched as service, not blocking
+            gadget.getUrlFor({
+              command: "display",
               options: {
                 jio_key: "support_request_module",
-                view: fast_create_url,
-                page: 'support_request_fast_view_dialog'
+                view: getActionListByName(view_list, "fast_input")[0].href,
+                page: "support_request_fast_view_dialog"
               }
-            });
-          })
-          .push(function (url) {
-            window.location.href = url;
-          });
-      }
-      event.returnValue = true;
-    })
-    .onEvent('submit', function () {
-      var gadget = this;
-      return gadget.jio_getAttachment('support_request_module', 'links')
-        .push(function (links) {
-          var fast_create_url = links._links.view[2].href;
-          return gadget.getUrlFor({
-            command: 'display',
-            options: {
-              jio_key: "support_request_module",
-              view: fast_create_url,
-              page: 'support_request_fast_view_dialog'
-            }
-          });
+            })
+          ]);
         })
-        .push(function (url) {
-          window.location.href = url;
+        .push(function (result_list) {
+          var worklist_gadget = result_list[0],
+            create_sr_href = result_list[2],
+            create_sr_input = gadget.element.querySelectorAll("input")[0];
+
+          create_sr_input.parentNode.href = create_sr_href;
+          create_sr_input.disabled = false;
+          create_sr_input.classList.remove("ui-disabled");
+
+          return worklist_gadget.render();
         });
     });
 
-}(window, rJS, RSVP));
\ No newline at end of file
+}(window, rJS, RSVP, promiseEventListener, loopEventListener));