aboutsummaryrefslogblamecommitdiffstats
path: root/data/empathy-log-window.html
blob: 88159252082018df7f88c47483945413bd1b1ffb (plain) (tree)
1
2
3
4
5
6
7
8



                                               


                           
             




                    



                   
              
 




                        









                    




               




                         

                                   

                                               
























                                                  




                                      
                                





















                                             







                                            
                                      









                                                     













                                                                     















                                                     



                                                     
 


                                                             





                                              




                                             
     
                                                   
                                   
          
                                    
      
 

                                       



                                                 

 
                                            



                                                     





                                       
                                          
































                                                     















                                                                         
 
















                                                     
























                                                     







                       
<?xml version="1.0">
<html
 xmlns="http://www.w3.org/TR/html4/"
 xmlns:empathy="http://live.gnome.org/Empathy">
  <head>
    <style type="text/css">
html, body, div, p {
  padding: 0;
  margin: 1px;
}

body {
  margin-left: -1em;
}

div.row {
  margin-left: 1em;
  clear: both;
}

div.row p {
  display: inline;
  white-space: pre-wrap;
}

span.open:after {
  content: "\25BE";
  margin-right: 2px;
}

span.closed:after {
  content: "\25B8";
  margin-right: 2px;
}

span.date {
  float: right;
  color: gray;
}

img.icon {
  vertical-align: middle;
  padding-right: 1px;
}
    </style>
    <script type="text/javascript">
var EMPATHY_NS='http://live.gnome.org/Empathy';

function filterNodes (node, tagName)
{
  var out = new Array();

  for (var i = 0; i < node.childNodes.length; i++)
    {
      var elem = node.childNodes[i];

      if (elem.tagName == tagName)
        out.push(elem);
    }

  return out;
}

function getNodes(node)
{
  return filterNodes(node, 'DIV');
}

function getContent(node)
{
  return filterNodes(node, 'P')[0];
}

function getToggle(node)
{
  return filterNodes(node, 'SPAN')[0];
}

function setExpander(node, open)
{
  var toggle = getToggle(node);
  var display;
  var nodes;

  if (open)
    {
      toggle.setAttribute('class', 'open');
      display = 'block';
    }
  else
    {
      toggle.setAttribute('class', 'closed');
      display = 'none';
    }

  nodes = getNodes(node);

  for (var i = 0; i < nodes.length; i++)
    nodes[i].style.display = display;
}

function expandAll()
{
  function expandAllRecurse(node)
    {
      var nodes = getNodes(node);

      for (var i = 0; i < nodes.length; i++)
        {
          setExpander(nodes[i], true);

          expandAllRecurse(nodes[i]);
        }
    }

  var treeview = document.getElementById('treeview');

  expandAllRecurse(treeview);
}

function setContent (contents, text, icon, date_)
{
  contents.innerHTML = "";

  if (icon != "")
    {
      contents.innerHTML += '<img class="icon" src="' + icon + '"/>';
    }

  contents.innerHTML += text;
  contents.innerHTML += '<span class="date">' + date_ + '</span>';
}

function insertRow (path, text, icon, date_)
{
  var treeview = document.getElementById('treeview');
  var parentnode = treeview;
  var i;

  // walk the tree
  for (i = 0; i < path.length - 1; i++)
    parentnode = getNodes(parentnode)[path[i]];

  // create a new node
  var newnode = document.createElement('div');
  newnode.setAttribute('class', 'row');

  // insert the new node into the tree
  var nodes = getNodes(parentnode);

  if (path[i] >= nodes.length)
    parentnode.appendChild(newnode);
  else
    parentnode.insertBefore(newnode, nodes[path[i]]);

  // set the path
  newnode.setAttributeNS(EMPATHY_NS, 'path', path.join(':'));

  // add an expander
  var toggle = document.createElement('span');
  newnode.appendChild(toggle);
  toggle.setAttribute('class', 'closed');
  toggle.style.display = 'none';

  var contents = document.createElement('p');
  newnode.appendChild(contents);
  setContent(contents, text, icon, date_);

  function toggleExpander (e)
    {
      if (toggle.getAttribute('class') == 'closed')
        setExpander(newnode, true);
      else
        setExpander(newnode, false);
    };

  toggle.onclick = toggleExpander;
  contents.ondblclick = toggleExpander;

  // if the node is not a top-level node, hide it
  if (parentnode != treeview)
    newnode.style.display = 'none';
}

function changeRow (path, text, icon, date_)
{
  var treeview = document.getElementById('treeview');
  var node = treeview;

  // walk the tree
  for (var i = 0; i < path.length; i++)
    node = getNodes(node)[path[i]];

  // set the contents
  var contents = getContent(node);
  setContent(contents, text, icon, date_);
}

function deleteRow (path)
{
  var treeview = document.getElementById('treeview');
  var node = treeview;

  // walk the tree
  for (var i = 0; i < path.length; i++)
    node = getNodes(node)[path[i]];

  node.parentNode.removeChild(node);
}

function reorderRows (path, new_order)
{
  var treeview = document.getElementById('treeview');
  var node = treeview;

  // walk the tree
  for (var i = 0; i < path.length; i++)
    node = getNodes(node)[path[i]];

  var nodes = getNodes(node);

  // remove all the nodes from the DOM
  for (var i = 0; i < nodes.length; i++)
    node.removeChild(nodes[i]);

  // put them back in the new order
  // For reference: new_order[new_pos] = old_pos
  for (var i = 0; i < nodes.length; i++)
    node.appendChild(nodes[new_order[i]]);

  // recursively update the path
  function updatePaths(path, node)
    {
      var nodes = getNodes(node);

      for (var i = 0; i < nodes.length; i++)
        {
          var newpath = path.concat([i]);

          nodes[i].setAttributeNS(EMPATHY_NS, 'path', newpath.join(':'));
          updatePaths(newpath, nodes[i]);
        }
    }

  updatePaths(path, node);
}

function hasChildRows (path, has_children)
{
  var treeview = document.getElementById('treeview');
  var node = treeview;

  // walk the tree
  for (var i = 0; i < path.length; i++)
    node = getNodes(node)[path[i]];

  var toggle = getToggle(node);

  if (has_children)
    toggle.style.display = 'inline';
  else
    toggle.style.display = 'none';
}

function getOffset (node)
{
  var y = 0;

  while (node != null && !isNaN(node.offsetTop))
    {
      y += node.offsetTop - node.scrollTop;
      node = node.offsetParent;
    }

  return y;
}

function scrollToRow (path)
{
  var treeview = document.getElementById('treeview');
  var node = treeview;

  // walk the tree
  for (var i = 0; i < path.length; i++)
    node = getNodes(node)[path[i]];

  window.scrollTo(0, getOffset(node));
}
    </script>
  </head>

  <body>
    <div id="treeview">
    </div>
  </body>
</html>