serverData.rb #1

  • //
  • guest/
  • matt_attaway/
  • treemap/
  • main/
  • serverData.rb
  • View
  • Commits
  • Open Download .zip Download (2 KB)
#!/usr/bin/ruby

$:.unshift File.join( File.dirname( $0 ), "p4ruby", RUBY_PLATFORM )
$:.unshift "/Library/Ruby/Gems/1.8/gems/json-1.1.3/lib/"

require 'P4'
require 'json'
require 'cgi'

load File.join( File.dirname( $0 ), "treemapCoreData.rb" )


def pruneTree( json, depth )

	if( depth == 0 )
		if( json["children"] != nil )
			json["children"].clear()
		end
		
		return
	end

	if( json["children"] != nil )
		json["children"].each do |c|
			pruneTree( c, depth.to_i()-1 )
		end
	end
end


def getSubtree( json, id )
	names = id.split( '/' )
	st = json
	
	names.each do |n|
		st["children"].each do |c|
			if( c["name"] == n )
				st = c;
				break;
			end
		end
	end

	return st
end



log = File.new( 'serverData.log', 'a+' )
log.puts "Beginning new run..."

server = "perforce:1666"
areaType = "filesize"
shadingType = "filecount"
id = server

cgi = CGI.new

# give server info on empty request
if( !cgi.has_key?( 'server' ) )
	data = {}
	data["areaTypes"]    = getAreaTypes()
	data["shadingTypes"] = getShadingTypes()
	data["prettyAreaTypes"]    = getPrettyAreaTypes()
	data["prettyShadingTypes"] = getPrettyShadingTypes()
	data["servers"]       = getServers()
	data["prettyServers"] = getPrettyServers()

	cgi.out( "type" => "application/json",
			 "status" => "OK"
			) { JSON.pretty_generate( data ) }
	log.puts "\tdelivered server data"
	log.puts "...and done."
	Process.exit()
end

if( cgi.has_key?( 'server' ) )
	server = id = cgi['server']
	log.puts "\tserver set to " + cgi['server']
end

if( cgi.has_key?( 'id' ) )
	id = cgi['id']
	log.puts "\tid set to " + cgi['id']
end

if( cgi.has_key?( 'areaType' ) )
	areaType = cgi['areaType']
	log.puts "\tareaType set to " + cgi['areaType']
end

if( cgi.has_key?( 'shadingType' ) )
	shadingType = cgi['shadingType']
	log.puts "\tshadingType set to " + cgi['shadingType']
end

datafile = ""
if( cgi.has_key?( 'data' ) )
	datafile = server.delete( ':' ) + "-" + areaType + "-" + shadingType + '.dat'
	log.puts "\tserving up query data for " + datafile
else
	datafile = server.delete( ':' ) + "-" + areaType + "-" + shadingType + '.json'
	log.puts "\tserving up json for " + datafile
end 

Dir.chdir( "sdata" )
if( File.file?( datafile ) )
	json = IO.read( datafile )
	
	rj = JSON.parse( json );
	
	if( !cgi.has_key?( 'data' ) )

		if( rj["name"] != id )
			log.puts "\tGetting subtree for #{id}"
			rj = getSubtree( rj, id )
		end

		pruneTree( rj, "1" );
	end

	cgi.out( "type" => "application/json",
			 "status" => "OK"
			) { JSON.pretty_generate( rj ) }
end

log.puts "...and done."



# Change User Description Committed
#1 16613 Matt Attaway Initial add of an dataviz experiment I did with treemaps in Helix