CCT Dynamic Strings

CCT Documentation

All of the text in CCT is formatted as dynamic strings. Dynamic strings can be used as plaintext, but can also access statistics that CCT keeps track of. Using dynamic strings, you can get CCT to display just the information that you are interested in.

Here's a simple example: "Your best time: $$session.time(best)$$". If your best time is 15.77 seconds, this will be formatted by CCT as "Your best time: 15.77". However, to make it easy to translate your xml layout, you can externalize the "Your best time" string as well. The dynamic string would then become "%%besttimemessage%%: $$session.time(best)$$. If your layout is called "MyAwesomeLayout.xml", then you must also create "MyAwesomeLayout.properties" containing this line: "besttimemessage=Your best time". NOTE: This will not work if your xml layout file contains more than one period. See CCT Readme for a more detailed description of properties files and internationalization.

What follows is a list of all the $$ properties accessible within CCT. As described above, to distinguish the keys from plaintext, surround them with $$ and $$, for example: $$session.solvecount(pop)$$. To print "$$session.solvecount(pop)$$" as plaintext, just use "\$\$session.solvecount(pops)\$\$" Some keys may require a numeric argument specifying which RA you are interested in. Remember that CCT keeps track of all the statistics for two rolling average lengths. For example, to get the latest average for a given RA number, use $$ra(0, recent)$$ or $$ra(0, recent)$$. For any key ending in #, the # should be replaced with the number of the desired RA.

NOTE: Standard deviations for trimmed (rolling) averages are computed over only the solves included in the average.
FURTHER NOTE: Capitalization of the $$ keywords does not matter.

$$ Keyword Description
session.average This will be replaced with the average of all non infinite solves in the times list (current session).
session.sd This is the standard deviation of all non infinite solves in the current session.
session.time(progress) The difference between the most recent solve and the solve before it.
ra(#).progress The difference between the most recent RA # and the previous RA #.
session.time(progress)|parens This formats session.time(progress) between parenthesis, and will be an empty string if the difference was infinite.
ra(#).progress|parens see session.time(progress)|parens
session.time(best) This is the best time in the current session, or N/A if there are no solves.
ra(#).size The is the size of RA #.
ra(#, best) The is the best rolling average of RA #.
ra(#, best).sd This is the standard deviation of the best average of RA #.
ra(#).sd(best) The is the best standard deviation of RA #. Not necessarily the same as ra(#, best).sd, for example, you could have a slower average with very little variation.
session.time(worst) This is the worst, finite time in the current session.
ra(#, worst) This is the worst average of RA #.
ra(#, worst).sd The standard deviation of the worst average in RA #.
ra(#).sd(worst) This is the worst standard deviation of all rolling averages in RA #.
session.time(recent) The most recent time.
ra(#, recent) The current average of RA #.
ra(#, recent).sd The standard deviation of the current average of RA #.
session.time(last) This is the time before the session.time(recent).
ra(#, last) This is the 2nd most recent average of RA #.
ra(#, last).sd This is the standard deviation of the average in lastAverage#.
ra(#, recent).time(best) The best time of the most recent RA #.
ra(#, recent).time(worst) Straightforward.
ra(#, best).time(best) Straightforward.
ra(#, best).time(worst) Straightforward.
ra(#, worst).time(best) Straightforward.
ra(#, worst).time(worst) Straightforward.
session.average.progress This is the difference between the current session average and the one before it.
session.sd.progress This is the difference between the SD of the current session and the one before it.
session.average.progress|parens This formats progressAverageSD nicely.
session.sd.progress|parens This formats progressSessionSD nicely.
ra(#, best).list A comma separated list of the times in the best average of RA #. The best and worst times are surrounded with parenthesis.
ra(#, recent).list see ra(#, best).list
session.list see ra(#, best).list
ra(#, worst).list see bestAverageList#
ra(#, best).stats This enumerates the times of the best average of RA #, and appends their scramble and comment.
ra(#, recent).stats see ra(#, best).stats
session.stats see ra(#, best).stats
ra(#, best).stats|splits This enumerates the times of the best average of RA #, and appends their scramble, splits, and comment.
ra(#, recent).stats|splits see ra(#, best).stats|splits
session.stats|splits see ra(#, best).stats|splits
The following allow access to global statistics. That is, statistics about every solve you have ever done of the current scramble customization.
global.time(best) This is the best time of all the sessions of the current scramble customization.
global.ra(#, best) The best RA of RA # of all the sessions of the current scramble customization.
global.average The average of all solves of all the sessions of the current scramble customization.
Misc
date This is the current date and time. This will not be updated every second.
Solve tags and counts. SOLVETAG can be any of SOLVED, ATTEMPT, POP, DNF, +2, or any solve tags defined within CCT. See the Readme for more details.
session.solvecount(SOLVETAG) This is a count of the number of solves of type SOLVETAG in the current session.
global.solvecount(SOLVETAG) This is a global count of the number of solves of type SOLVETAG.