Changeset 6269

Show
Ignore:
Timestamp:
10/11/10 23:54:35 (3 years ago)
Author:
jow
Message:

libs/cbi: interface with service control backend to trigger service reload asynchronously

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • luci/trunk/libs/cbi/luasrc/view/cbi/map.htm

    r5520 r6269  
    2020        <fieldset class="cbi-section" id="cbi-apply-<%=self.config%>"> 
    2121            <legend><%:Applying changes%></legend> 
    22             <ul class="cbi-apply"><%- 
    23                 local fp = self._apply() 
    24                 self._apply = nil 
    25                 local line = fp:read() 
    26                 while line do 
    27                     write("<li>" .. pcdata(line) .. "</li>\n") 
    28                     line = fp:read() 
    29                 end 
    30                 fp:close() 
    31             -%></ul> 
     22            <script type="text/javascript"><![CDATA[ 
     23                var apply_xhr = new XHR(); 
     24 
     25                apply_xhr.get('<%=luci.dispatcher.build_url("servicectl", "restart", table.concat(self.parsechain, ","))%>', null, 
     26                    function() { 
     27                        var intv = window.setInterval( 
     28                            function() { 
     29                                apply_xhr.abort(); 
     30                                apply_xhr.get('<%=luci.dispatcher.build_url("servicectl", "status")%>', null, 
     31                                    function(x) { 
     32                                        if( x.responseText == 'finish' ) 
     33                                        { 
     34                                            window.clearInterval(intv); 
     35 
     36                                            var e = document.getElementById('cbi-apply-<%=self.config%>-status'); 
     37                                            if( e ) 
     38                                            { 
     39                                                e.innerHTML = '<%:Configuration applied.%>'; 
     40                                                window.setTimeout(function() { e.parentNode.style.display = 'none' }, 1000); 
     41                                            } 
     42                                        } 
     43                                        else 
     44                                        { 
     45                                            var e = document.getElementById('cbi-apply-<%=self.config%>-status'); 
     46                                            if( e && x.responseText ) e.innerHTML = x.responseText; 
     47 
     48                                        } 
     49                                    } 
     50                                ); 
     51                            }, 1000 
     52                        ) 
     53                    } 
     54                ); 
     55            ]]></script> 
     56 
     57            <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> 
     58            <span id="cbi-apply-<%=self.config%>-status"><%:Waiting for router...%></span> 
    3259        </fieldset> 
    33         <script type="text/javascript"> 
    34             window.setTimeout(function() { 
    35                 var e = document.getElementById('cbi-apply-<%=self.config%>'); 
    36                 if(e) e.style.display = 'none'; 
    37             }, 750); 
    38         </script> 
    3960    <%- end -%> 
    4061    <%- self:render_children() %>