]> git.sesse.net Git - vlc/blobdiff - share/http/js/vlm.js
* also do vlm options fix on sout.
[vlc] / share / http / js / vlm.js
index 835040ce6c390e5760ab8a93ebc49d1fd6fbfc45..40c5df1933188d8439f6e4efedcae92ec4504125 100644 (file)
@@ -36,7 +36,7 @@ function vlm_input_edit( dest )
 
 function vlm_input_change()
 {
-    document.getElementById( value( 'input_dest' ) ).value = value( 'input_mrl' );
+    document.getElementById( value( 'input_dest' ) ).value = value( 'input_mrl' ).replace( /\ :/g, " option " );
     hide( 'input' );
     document.getElementById( value( 'input_dest' ) ).focus();
 }
@@ -49,7 +49,7 @@ function vlm_output_edit( dest )
 
 function vlm_output_change()
 {
-    document.getElementById( value( 'sout_dest' ) ).value = value( 'sout_mrl' ).substr(6); /* substr <-> remove :sout= */
+    document.getElementById( value( 'sout_dest' ) ).value = value( 'sout_mrl' ).substr(6).replace( /\ :/g, " option " ); /* substr <-> remove :sout= */
     hide( 'sout' );
     document.getElementById( value( 'sout_dest' ) ).focus();
 }
@@ -59,6 +59,7 @@ function hide_vlm_add()
     document.getElementById( 'vlm_add_broadcast' ).style.display = 'none';
     document.getElementById( 'vlm_add_vod' ).style.display = 'none';
     document.getElementById( 'vlm_add_schedule' ).style.display = 'none';
+    document.getElementById( 'vlm_add_other' ).style.display = 'none';
 }
 
 function toggle_schedule_date()
@@ -109,9 +110,9 @@ function toggle_schedule_repeat()
 
 function vlm_schedule_type_change( name )
 {
-    act = document.getElementById( 'vlm_elt_' + name + '_action' ).value;
-    itemname = document.getElementById( 'vlm_elt_' + name + '_name' );
-    opt = document.getElementById( 'vlm_elt_' + name + '_opt' );
+    var act = document.getElementById( 'vlm_elt_' + name + '_action' ).value;
+    var itemname = document.getElementById( 'vlm_elt_' + name + '_name' );
+    var opt = document.getElementById( 'vlm_elt_' + name + '_opt' );
     if( act == "play" || act == "pause" || act == "stop" )
     {
         itemname.style.display = "";
@@ -131,7 +132,7 @@ function vlm_schedule_type_change( name )
 
 function update_vlm_add_broadcast()
 {
-    cmd = document.getElementById( 'vlm_command' );
+    var cmd = document.getElementById( 'vlm_command' );
 
     if( value( 'vlm_broadcast_name' ) )
     {
@@ -166,7 +167,7 @@ function update_vlm_add_broadcast()
 
 function update_vlm_add_vod()
 {
-    cmd = document.getElementById( 'vlm_command' );
+    var cmd = document.getElementById( 'vlm_command' );
 
     if( value( 'vlm_vod_name' ) )
     {
@@ -196,7 +197,7 @@ function update_vlm_add_vod()
 
 function update_vlm_add_schedule()
 {
-    cmd = document.getElementById( 'vlm_command' );
+    var cmd = document.getElementById( 'vlm_command' );
 
     check_and_replace_int( 'vlm_schedule_year', '0000' );
     check_and_replace_int( 'vlm_schedule_month', '00' );
@@ -246,6 +247,12 @@ function update_vlm_add_schedule()
     }
 }
 
+function update_vlm_add_other()
+{
+    var cmd = document.getElementById( 'vlm_command' );
+    cmd.value = "";
+}
+
 function clear_vlm_add()
 {
     document.getElementById( 'vlm_command' ).value = "";
@@ -253,16 +260,9 @@ function clear_vlm_add()
     document.getElementById( 'vlm_vod_name' ).value = "";
 }
 
-function clear_children( elt )
-{
-    if( elt )
-        while( elt.hasChildNodes() )
-            elt.removeChild( elt.firstChild );
-}
-
 function create_button( caption, action )
 {
-    link = document.createElement( "input" );
+    var link = document.createElement( "input" );
     link.setAttribute( 'type', 'button' );
     link.setAttribute( 'onclick', action );
     link.setAttribute( 'value', caption );
@@ -270,7 +270,7 @@ function create_button( caption, action )
 }
 function create_option( caption, value )
 {
-    opt = document.createElement( 'option' );
+    var opt = document.createElement( 'option' );
     opt.setAttribute( 'value', value );
     opt.appendChild( document.createTextNode( caption ) );
     return opt;
@@ -282,9 +282,9 @@ function parse_vlm_cmd()
     {
         if( req.status == 200 )
         {
-            vlm_answer = req.responseXML.documentElement;
-            error_tag = vlm_answer.getElementsByTagName( 'error' )[0];
-            vlme = document.getElementById( 'vlm_error' );
+            var vlm_answer = req.responseXML.documentElement;
+            var error_tag = vlm_answer.getElementsByTagName( 'error' )[0];
+            var vlme = document.getElementById( 'vlm_error' );
             clear_children( vlme );
             if( error_tag.hasChildNodes() )
             {
@@ -310,9 +310,9 @@ function parse_vlm_elements()
     {
         if( req.status == 200 )
         {
-            vlmb = document.getElementById( 'vlm_broadcast_list' );
-            vlmv = document.getElementById( 'vlm_vod_list' );
-            vlms = document.getElementById( 'vlm_schedule_list' );
+            var vlmb = document.getElementById( 'vlm_broadcast_list' );
+            var vlmv = document.getElementById( 'vlm_vod_list' );
+            var vlms = document.getElementById( 'vlm_schedule_list' );
 
             clear_children( vlmb );
             clear_children( vlmv );
@@ -320,13 +320,13 @@ function parse_vlm_elements()
 
             answer = req.responseXML.documentElement;
 
-            elt = answer.firstChild;
+            var elt = answer.firstChild;
 
             while( elt )
             {
                 if( elt.nodeName == "broadcast" || elt.nodeName == "vod" )
                 {
-                    nb = document.createElement( 'div' );
+                    var nb = document.createElement( 'div' );
                     nb.setAttribute( 'class', 'list_element' );
                     if( elt.nodeName == "broadcast" )
                     {
@@ -336,11 +336,11 @@ function parse_vlm_elements()
                     {
                         vlmv.appendChild( nb );
                     }
-                    nbname = document.createElement( 'b' );
+                    var nbname = document.createElement( 'b' );
                     nbname.appendChild( document.createTextNode( elt.getAttribute( 'name' ) ) );
                     nb.appendChild( nbname );
                     
-                    link = document.createElement( 'input' );
+                    var link = document.createElement( 'input' );
                     link.setAttribute( 'type', 'button' );
                     if( elt.getAttribute( 'enabled' ) == 'yes' )
                     {
@@ -392,34 +392,41 @@ function parse_vlm_elements()
                     nb.appendChild( document.createTextNode( " " ) );
                     nb.appendChild( create_button( 'Delete', 'vlm_delete("'+elt.getAttribute( 'name' ) + '");' ) );
 
-                    list = document.createElement( "ul" );
-                    /* begin input list */
-                    inputs = elt.getElementsByTagName( 'input' );
-                    for( i = 0; i < inputs.length; i++ )
-                    {
-                        item = document.createElement( "li" );
-                        item.appendChild( document.createTextNode( "Input: " + inputs[i].firstChild.data + " " ) );
-                        item.appendChild( create_button( "Delete", 'vlm_delete_input("' + elt.getAttribute( 'name' ) + '", '+(i+1)+' );' ) );
-                        list.appendChild( item );
-                    }
+                    var list = document.createElement( "ul" );
 
-                    /* Add input */
-                    item = document.createElement( "li" );
-                    text = document.createElement( "input" );
+                    /* begin input list */
+                    var item = document.createElement( "li" );
+                    list.appendChild( item );
+                    item.appendChild( document.createTextNode( "Inputs: " ) );
+                    var text = document.createElement( "input" );
                     text.setAttribute( 'type', 'text' );
                     text.setAttribute( 'size', '40' );
                     text.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_input' );
+                    text.setAttribute( 'onkeypress', 'if( event.keyCode == 13 ) vlm_add_input("'+elt.getAttribute('name')+'",document.getElementById("vlm_elt_'+elt.getAttribute('name')+'_input").value );' );
                     item.appendChild( text );
                     item.appendChild( document.createTextNode( ' ' ) );
                     item.appendChild( create_button( 'Edit', 'vlm_input_edit("vlm_elt_'+elt.getAttribute('name')+'_input");') );
                     item.appendChild( document.createTextNode( ' ' ) );
                     item.appendChild( create_button( 'Add input', 'vlm_add_input("'+elt.getAttribute('name')+'",document.getElementById("vlm_elt_'+elt.getAttribute('name')+'_input").value );' ) );
                     
-                    list.appendChild( item );
+                    var inputs = elt.getElementsByTagName( 'input' );
+                    if( inputs.length > 0 )
+                    {
+                        var ilist = document.createElement( "ol" );
+                        ilist.setAttribute( 'start', '1' );
+                        item.appendChild( ilist );
+                        for( i = 0; i < inputs.length; i++ )
+                        {
+                            var item = document.createElement( "li" );
+                            item.appendChild( document.createTextNode( inputs[i].firstChild.data + " " ) );
+                            item.appendChild( create_button( "Delete", 'vlm_delete_input("' + elt.getAttribute( 'name' ) + '", '+(i+1)+' );' ) );
+                            ilist.appendChild( item );
+                        }
+                    }
                     /* end of input list */
                     
                     /* output */
-                    item = document.createElement( "li" );
+                    var item = document.createElement( "li" );
                     outputelt = elt.getElementsByTagName( 'output' )[0];
                     if( outputelt.hasChildNodes() )
                     {
@@ -430,10 +437,11 @@ function parse_vlm_elements()
                         output = "";
                     }
                     item.appendChild( document.createTextNode( 'Output: ' ) );
-                    text = document.createElement( "input" );
+                    var text = document.createElement( "input" );
                     text.setAttribute( 'type', 'text' );
                     text.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_output' );
                     text.setAttribute( 'value', output );
+                    text.setAttribute( 'onkeypress', 'if( event.keyCode == 13 )  vlm_output("'+elt.getAttribute( 'name' )+ '",document.getElementById("vlm_elt_'+elt.getAttribute( 'name' )+'_output").value);' );
                     item.appendChild( text );
 
                     item.appendChild( document.createTextNode( ' ' ) );
@@ -445,42 +453,76 @@ function parse_vlm_elements()
                     /* end of output */
 
                     /* begin options list */
-                    options = elt.getElementsByTagName( 'option' );
-                    for( i = 0; i < options.length; i++ )
-                    {
-                        item = document.createElement( "li" );
-                        item.appendChild( document.createTextNode( "Option: " + options[i].firstChild.data ) );
-                        list.appendChild( item );
-                    }
-
+                    var item = document.createElement( "li" );
+                    list.appendChild( item );
+                    item.appendChild( document.createTextNode( "Options: " ) );
                     /* Add option */
-                    item = document.createElement( "li" );
-                    item.appendChild( document.createTextNode( ' ' ) );
-                    text = document.createElement( "input" );
+                    var text = document.createElement( "input" );
                     text.setAttribute( 'type', 'text' );
                     text.setAttribute( 'size', '40' );
                     text.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_option' );
+                    text.setAttribute( 'onkeypress', 'if( event.keyCode == 13 ) vlm_option("'+elt.getAttribute('name')+'",document.getElementById("vlm_elt_'+elt.getAttribute('name')+'_option").value );' );
                     item.appendChild( text );
                     item.appendChild( document.createTextNode( ' ' ) );
                     item.appendChild( create_button( 'Add option', 'vlm_option("'+elt.getAttribute('name')+'",document.getElementById("vlm_elt_'+elt.getAttribute('name')+'_option").value );' ) );
                     
-                    list.appendChild( item );
+                    var options = elt.getElementsByTagName( 'option' );
+                    if( options.length > 0 )
+                    {
+                        var olist = document.createElement( "ul" );
+                        item.appendChild( olist );
+                        for( i = 0; i < options.length; i++ )
+                        {
+                            var item = document.createElement( "li" );
+                            item.appendChild( document.createTextNode( options[i].firstChild.data ) );
+                            olist.appendChild( item );
+                        }
+                    }
                     /* end of options */
+
+                    /* Instances list */
+                    var instances = elt.getElementsByTagName( 'instance' );
+                    if( instances.length > 0 )
+                    {
+                        var item = document.createElement("li");
+                        var ilist = document.createElement("ul");
+                        list.appendChild( item );
+                        item.appendChild(document.createTextNode("Instances:")); 
+                        item.appendChild( ilist );
+                        for( i = 0; i < instances.length; i++ )
+                        {
+                            var iname = instances[i].getAttribute( 'name' );
+                            var istate = instances[i].getAttribute( 'state' );
+                            var iposition = Number( instances[i].getAttribute( 'position' ) * 100);
+                            var itime = Math.floor( instances[i].getAttribute( 'time' ) / 1000000);
+                            var ilength = Math.floor( instances[i].getAttribute( 'length' ) / 1000000);
+                            var irate = instances[i].getAttribute( 'rate' );
+                            var ititle = instances[i].getAttribute( 'title' );
+                            var ichapter = instances[i].getAttribute( 'chapter' );
+                            var iseekable = instances[i].getAttribute( 'seekable' );
+                            var iplaylistindex = instances[i].getAttribute( 'playlistindex' );
+                            
+                            var item = document.createElement( "li" );
+                            item.appendChild( document.createTextNode( iname + ": " + istate + " (" + iplaylistindex + ") " + (iposition.toFixed(2)) + "%" + " " + format_time( itime ) + "/" + format_time( ilength ) ) );
+                            ilist.appendChild( item );
+                        }
+                    }
+                    /* end of instances list */
                     
                     nb.appendChild( list );
                     
                 }
                 else if( elt.nodeName == "schedule" )
                 {
-                    nb = document.createElement( 'div' );
+                    var nb = document.createElement( 'div' );
                     nb.setAttribute( 'class', 'list_element' );
                     vlms.appendChild( nb );
 
-                    nbname = document.createElement( 'b' );
+                    var nbname = document.createElement( 'b' );
                     nbname.appendChild( document.createTextNode( elt.getAttribute( 'name' ) ) );
                     nb.appendChild( nbname );
                     
-                    link = document.createElement( 'input' );
+                    var link = document.createElement( 'input' );
                     link.setAttribute( 'type', 'button' );
                     if( elt.getAttribute( 'enabled' ) == 'yes' )
                     {
@@ -499,17 +541,17 @@ function parse_vlm_elements()
                     nb.appendChild( document.createTextNode( " " ) );
                     nb.appendChild( create_button( "Delete", 'vlm_delete("'+elt.getAttribute( 'name' ) + '");' ) );
 
-                    list = document.createElement( 'ul' );
+                    var list = document.createElement( 'ul' );
 
-                    item = document.createElement( 'li' );
+                    var item = document.createElement( 'li' );
                     item.appendChild( document.createTextNode( "Date: " + elt.getAttribute( 'date' ) ) );
                     list.appendChild( item );
 
-                    item = document.createElement( 'li' );
+                    var item = document.createElement( 'li' );
                     item.appendChild( document.createTextNode( "Period (in seconds): " + elt.getAttribute( 'period' ) ) );
                     list.appendChild( item );
                     
-                    item = document.createElement( 'li' );
+                    var item = document.createElement( 'li' );
                     if( elt.getAttribute( 'repeat' ) == -1 )
                     {
                         item.appendChild( document.createTextNode( "Number of repeats left: for ever" ) );
@@ -520,16 +562,16 @@ function parse_vlm_elements()
                     }
                     list.appendChild( item );
                     
-                    commands = elt.getElementsByTagName( 'command' );
+                    var commands = elt.getElementsByTagName( 'command' );
                     for( i = 0; i < commands.length; i++ )
                     {
-                        item = document.createElement( "li" );
+                        var item = document.createElement( "li" );
                         item.appendChild( document.createTextNode( "Command: " + commands[i].firstChild.data + " " ) );
                         list.appendChild( item );
                     }
                     
-                    item = document.createElement( 'li' );
-                    sel = document.createElement( 'select' );
+                    var item = document.createElement( 'li' );
+                    var sel = document.createElement( 'select' );
                     sel.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_action' );
                     sel.setAttribute( 'onchange', 'vlm_schedule_type_change("'+elt.getAttribute('name')+'");');
                     sel.appendChild( create_option( 'play', 'play' ) );
@@ -540,7 +582,7 @@ function parse_vlm_elements()
                     item.appendChild( sel );
 
                     item.appendChild( document.createTextNode( " " ) );
-                    text = document.createElement( 'input' );
+                    var text = document.createElement( 'input' );
                     text.setAttribute( 'type', 'text' );
                     text.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_name' );
                     text.setAttribute( 'size', '10' );
@@ -657,13 +699,26 @@ function vlm_option( name, option )
     vlm_cmd( value( 'vlm_command' ) );
 }
 
+function vlm_batch( batch )
+{
+    var i;
+    var commands = batch.split( '\n' );
+    for( i = 0; i < commands.length; i++ )
+    {
+        document.getElementById( 'vlm_command' ).value = commands[i];
+        vlm_cmd( value( 'vlm_command' ) );
+    }
+}
+
 function vlm_schedule_append( name )
 {
-    act = document.getElementById( 'vlm_elt_' + name + '_action' ).value;
+    var act = document.getElementById( 'vlm_elt_' + name + '_action' ).value;
     document.getElementById( 'vlm_command' ).value = "setup " + name + " append ";
-    itemname = document.getElementById( 'vlm_elt_' + name + '_name' ).value;
+
+    var itemname = document.getElementById( 'vlm_elt_' + name + '_name' ).value;
     if( itemname == "(name)" ) itemname = "";
-    opt = document.getElementById( 'vlm_elt_' + name + '_opt' ).value;
+
+    var opt = document.getElementById( 'vlm_elt_' + name + '_opt' ).value;
     if( opt == "(options)" ) opt = "";
         
     if( act == '' )