]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
show sofia status on portal
authorSeven Du <dujinfang@gmail.com>
Tue, 11 Mar 2014 15:55:58 +0000 (23:55 +0800)
committerSeven Du <dujinfang@gmail.com>
Tue, 11 Mar 2014 15:55:58 +0000 (23:55 +0800)
htdocs/portal/assets/js/fsportal.js
htdocs/portal/index.html

index b2086652d18aac2645e8122da0944350d78e6865..a36a86c3ed085ef8ee4839b0fe55a88f85524839 100644 (file)
@@ -218,6 +218,12 @@ App.newUserRoute = Ember.Route.extend({
        }
 });
 
+App.SofiaStatusRoute = Ember.Route.extend({
+       setupController: function(controller) {
+               App.sofiaStatusController.load();
+       }
+});
+
 App.Router.map(function(){
        this.route("calls");
        this.route("channels");
@@ -241,6 +247,8 @@ App.Router.map(function(){
        this.route("show");
        this.route("users");
        this.route("newUser");
+       this.route("sofiaStatus");
+       this.route("addGateway");
        this.route("about", { path: "/about" });
 });
 
@@ -778,6 +786,95 @@ App.UsersController = Ember.ObjectController.extend({
   }
 });
 
+App.sofiaStatusController = Ember.ArrayController.create({
+       content: [],
+       init: function(){
+       },
+       load: function() {
+               var me = this;
+               $.get("/xmlapi/sofia?xmlstatus", function(data){
+                       console.log(data);
+                       var row_count = 0;
+                       var aliases = data.getElementsByTagName("alias");
+                       var profiles = data.getElementsByTagName("profile");
+                       var gateways = data.getElementsByTagName("gateway");
+
+                       me.content.clear();
+
+                       for (var i=0; i<aliases.length; i++) {
+                               var row = {};
+                               row.name = aliases[i].getElementsByTagName("name")[0].textContent;
+                               row.type = aliases[i].getElementsByTagName("type")[0].textContent;
+                               row.data = aliases[i].getElementsByTagName("data")[0].textContent;
+                               row.state = aliases[i].getElementsByTagName("state")[0].textContent;
+                               console.log(row)
+                               row_count++;
+                               me.pushObject(row);
+                       }
+
+                       for (var i=0; i<profiles.length; i++) {
+                               var row = {};
+                               row.name = profiles[i].getElementsByTagName("name")[0].textContent;
+                               row.type = profiles[i].getElementsByTagName("type")[0].textContent;
+                               row.data = profiles[i].getElementsByTagName("data")[0].textContent;
+                               row.state = profiles[i].getElementsByTagName("state")[0].textContent;
+                               row.actions = "Start | Stop | Restart | More ...";
+                               console.log(row)
+                               row_count++;
+                               me.pushObject(row);
+                       }
+
+                       for (var i=0; i<gateways.length; i++) {
+                               var row = {};
+                               row.name = gateways[i].getElementsByTagName("name")[0].textContent;
+                               row.type = gateways[i].getElementsByTagName("type")[0].textContent;
+                               row.data = gateways[i].getElementsByTagName("data")[0].textContent;
+                               row.state = gateways[i].getElementsByTagName("state")[0].textContent;
+                               row.actions = "Reg | UnReg | Delete";
+                               console.log(row)
+                               row_count++;
+                               me.pushObject(row);
+                       }
+
+                       me.set('total', row_count);
+               });
+
+       }
+});
+
+App.SofiaStatusController = Ember.ObjectController.extend({
+       newGatewayButtons: [
+               {title: 'Submit', clicked: "submit"},
+               {title: 'Cancel', clicked: "cancel", dismiss: 'modal'}
+       ],
+
+       actions: {
+               //Submit the modal
+               submit: function() {
+                       alert("Not implemented");
+                       return false;
+                       $.post("/txtapi/lua?create_gw.lua%20" + $("#gateway_name").val(), {
+                               success: function() { },
+                               error: function(e) { }
+                       });
+
+                       // Bootstrap.NM.push('Successfully submitted modal', 'success');
+                       return Bootstrap.ModalManager.hide('newUserForm');
+               },
+
+               //Cancel the modal, we don't need to hide the model manually because we set {..., dismiss: 'modal'} on the button meta data
+               cancel: function() {
+                       Bootstrap.ModalManager.hide('newUserForm');
+                       return Bootstrap.NM.push('Modal was cancelled', 'info');
+               },
+
+               //Show the modal
+               addGateway: function() {
+                       return Bootstrap.ModalManager.show('newUserForm');
+               }
+       }
+});
+
 // App.initialize();
 var global_debug_event = false;
 var global_background_job = false;
index 2c231b0b5273c11a6ad31bfc06d32ad6c93bf0ae..5e80287a3d24fd9a95b4f196525832df0a2ee4ac 100644 (file)
@@ -92,6 +92,7 @@
                                        <li><a id="menu-calls" href="#calls">Calls</a></li>
                                        <li><a id="menu-channels" href="#channels">Channels</a></li>
                                        <li><a href="#show">Show</a></li>
+                                       <li><a href="#sofiaStatus">Sofia</a></li>
                                        <li><a href="#about">About</a></li>
                                </ul>
                        </nav>
                </div>
        </script>
 
+       <script type="text/x-handlebars" data-template-name="sofiaStatus">
+               <div class="pull-right">
+                       {{#bs-button type="primary" clicked="addGateway"}}Add Gateway{{/bs-button}}
+               </div>
+
+               {{#bs-modal name="newUserForm" fade="true" footerButtonsBinding="addGatewayButtons" title="Add Gateway"}}
+                       <div class="control-group">
+                               <label class="control-label" for="gateway_name">Name</label>
+                               <div class="controls">
+                                       <input type="text" class="input-xlarge" name="gateway_name" value="">
+                               </div>
+                       </div>
+                       <div class="control-group">
+                               <label class="control-label" for="gateway_realm">Realm</label>
+                               <div class="controls">
+                                       <input type="text" class="input-xlarge" name="gateway_realm" value="">
+                               </div>
+                       </div>
+                       <div class="control-group">
+                               <label class="control-label" for="gateway_name">Username</label>
+                               <div class="controls">
+                                       <input type="text" class="input-xlarge" name="gateway_username" value="">
+                               </div>
+                       </div>
+                       <div class="control-group">
+                               <label class="control-label" for="gateway_name">Password</label>
+                               <div class="controls">
+                                       <input type="text" class="input-xlarge" name="gateway_password" value="">
+                               </div>
+                       </div>
+                       <div class="modal-footer">
+                               {{#bs-button type="primary" clicked="submit"}}Add{{/bs-button}}
+                               {{#bs-button clicked="cancel"}}Cancel{{/bs-button}}
+                       </div>
+               {{/bs-modal}}
+
+               <h1>Sofia Status</h1>
+
+               <div>
+                       <table class="table">
+                       <tr>
+                               <th>Type</th>
+                               <th>Name</th>
+                               <th>Data</th>
+                               <th>State</th>
+                               <th>Action</th>
+                       </tr>
+                       {{#each App.sofiaStatusController.content}}
+                       <tr>
+                               <td>{{ type }}</td>
+                               <td>{{ name }}</td>
+                               <td>{{ data }}</td>
+                               <td>{{ state }}</td>
+                               <td>{{ actions }}</td>
+                       </tr>
+                       {{/each}}
+                       </table>
+               </div>
+       </script>
+
        <script type="text/x-handlebars" data-template-name="calls">
        <div class="pull-right">
                <label><input type="checkbox" id="auto_update_calls" value="1" onclick="auto_update_calls();">Auto Update</label>