visualculture
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

test_browser.html
text/html

Download raw (2.9 KB)

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="en-us" />
    <title>{{ title }}</title>
    
    <style>
    .repo,.dir{
	cursor:pointer;
	font-weight:bold;
    }
    .repo span:hover{
	border-bottom:1px solid blue;
    }
    .dir span:hover{
	border-bottom:1px solid blue;
    }
    
    .files{
	margin-top:1em;
	cursor:pointer;
    }
    </style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js"></script>
<script>
$(document).ready(function(){
	
	
	function service(p, obj, cb)
	{
		var s = 'http://127.0.0.1:8000/api/';
		$.ajax({
			url:s + p,
			dataType: "json",
			success: function(jqXHR, status, responseText)
			{
				var data = JSON.parse(responseText.responseText);
				cb.apply(obj, [data, status, jqXHR]);
			}
		});
	}
	
	var browser = $('#browser');
	var title = $('#title')
	
	function blob(e){
		
	}
	
	function files(e)
	{
		var parents = e.data.parents.slice();
		browser.text('');
		title.text(e.data.rn + ' ('+e.data.hex+')');
		service( [e.data.rn, e.data.hex].join('/'), browser,function(data){
			var that = $(this);
			var parent = $('<div class="dir"><span>..</span></dir>');
			if(parents.length > 0)
			{
				var pc = parents.slice();
				pc.pop();
				parent.on('click', {rn:data.repo_name, hex:parents[parents.length - 1], parents:pc}, files);
			}
			else
			{
				parent.on('click', {rn:data.repo_name}, repo);
			}
			that.append(parent);
			
			parents.push(e.data.hex);
			$.each(data.dirs, function(idx,el){
					var i = $('<div class="dir"><span>'+el.name+'</span></dir>');
					i.on('click',{rn:data.repo_name, hex:el.hex, parents:parents}, files);
					that.append(i);
				});
			$.each(data.files, function(idx,el){
					var i = $('<div class="file"><a target="_blank"href="http://127.0.0.1:8000/vc/'+data.repo_name+'/'+el.hex+'/">'+el.name+'</a></dir>');
// 					i.on('click',{rn:data.slug, hex:el.hex}, blob);
					that.append(i);
				});
		});
	}
	
	function repo(e)
	{
		var rn = e.data.slug;
		browser.text('');
		service(rn, browser, function(data){
			var that = $(this);
			title.text(data.slug);
			that.append('<h4>'+data.commits[0].author+'</h4>');
			that.append('<em>'+data.commits[0].message+'</em>');
			
			var f = $('<div class="files">FILES</div>');
			f.on('click', {rn:data.slug, hex:data.commits[0].files, parents:[]}, files);
			that.append(f);
			
		});
		
	}
	
	function index()
	{
		service('', browser, function(data){
			var repos = data['repos'];
			var that = $(this);
			$.each(repos,function(idx, elem){
				var i = $('<div class="repo"><span>'+elem+'</span></div>');
				i.on('click', {slug:elem}, repo);
				that.append(i);
			});
		});
	};
	
	index();
	
});

</script>

  </head>
  <body>
  <h1 id="title">/</h1>
  <div id="browser">
  </div>
  </body>
</html>