added asciibox component type
This commit is contained in:
parent
bd3ed07a5b
commit
8bdaccf58f
|
@ -0,0 +1,924 @@
|
||||||
|
flf2a$ 9 6 30 1 5
|
||||||
|
larry3d.flf by Larry Gelberg (larryg@avs.com)
|
||||||
|
(stolen liberally from Juan Car's puffy.flf)
|
||||||
|
tweaked by Glenn Chappell <ggc@uiuc.edu>
|
||||||
|
Version 1.2 2/24/94
|
||||||
|
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \_\ @
|
||||||
|
\/\_\@
|
||||||
|
\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \\ \ @
|
||||||
|
\ \_\\_\ @
|
||||||
|
\/_//_/$ @
|
||||||
|
$ $ @
|
||||||
|
$ $@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
_\ \\ \__ @
|
||||||
|
/\__ _ _\ @
|
||||||
|
\/_L\ \\ \L_ @
|
||||||
|
/\_ _ _\@
|
||||||
|
\/_/\_\\_\/@
|
||||||
|
\/_//_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ \_ @
|
||||||
|
\/'__`\ @
|
||||||
|
/\ \_\_\ @
|
||||||
|
\ \____ \ @
|
||||||
|
\/\ \_\ \@
|
||||||
|
\ `\_ _/@
|
||||||
|
`\_/\_\@
|
||||||
|
\/_/@@
|
||||||
|
__ __ @
|
||||||
|
/\_\ / / @
|
||||||
|
\/_/ / / @
|
||||||
|
/ / @
|
||||||
|
/ / __ @
|
||||||
|
/_/ /\_\@
|
||||||
|
/_/ \/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/| _ \ @
|
||||||
|
|/\ | @
|
||||||
|
\// __`\/\ @
|
||||||
|
/| \L> <_@
|
||||||
|
| \_____/\/@
|
||||||
|
\/____/\/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\ \/$ @
|
||||||
|
\/ $ @
|
||||||
|
$ $ @
|
||||||
|
$ $@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
_ @
|
||||||
|
/' \ @
|
||||||
|
/\ ,/' @
|
||||||
|
\ \ \ @
|
||||||
|
\ \ `\ @
|
||||||
|
\ `\__\@
|
||||||
|
`\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ `\ @
|
||||||
|
\`\ \ @
|
||||||
|
`\`\ \ @
|
||||||
|
`\/' \@
|
||||||
|
/\__/@
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
_\ \ _ @
|
||||||
|
/\_` ' \ @
|
||||||
|
\/_> <_ @
|
||||||
|
/\_, ,_\@
|
||||||
|
\/_/\_\/@
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\_\ \___ @
|
||||||
|
/\___ __\@
|
||||||
|
\/__/\ \_/@
|
||||||
|
\ \_\ @
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/\ \@
|
||||||
|
\ \/@
|
||||||
|
\/ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_______ @
|
||||||
|
/\______\@
|
||||||
|
\/______/@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/\_\@
|
||||||
|
\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__@
|
||||||
|
/ /@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/_/ @
|
||||||
|
/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/'__`\ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \ \_\ \ @
|
||||||
|
\ \____/ @
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
_ @
|
||||||
|
/' \ @
|
||||||
|
/\_, \ @
|
||||||
|
\/_/\ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \_\ @
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
___ @
|
||||||
|
/'___`\ @
|
||||||
|
/\_\ /\ \ @
|
||||||
|
\/_/// /__ @
|
||||||
|
// /_\ \@
|
||||||
|
/\______/@
|
||||||
|
\/_____/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/'__`\ @
|
||||||
|
/\_\L\ \ @
|
||||||
|
\/_/_\_<_ @
|
||||||
|
/\ \L\ \ @
|
||||||
|
\ \____/ @
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \\ \ @
|
||||||
|
\ \ \\ \ @
|
||||||
|
\ \ \\ \_ @
|
||||||
|
\ \__ ,_\@
|
||||||
|
\/_/\_\/@
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
______ @
|
||||||
|
/\ ___\ @
|
||||||
|
\ \ \__/ @
|
||||||
|
\ \___``\ @
|
||||||
|
\/\ \L\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/'___\ @
|
||||||
|
/\ \__/ @
|
||||||
|
\ \ _``\ @
|
||||||
|
\ \ \L\ \ @
|
||||||
|
\ \____/ @
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
________ @
|
||||||
|
/\_____ \ @
|
||||||
|
\/___//'/' @
|
||||||
|
/' /' @
|
||||||
|
/' /' @
|
||||||
|
/\_/ @
|
||||||
|
\// @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/'_ `\ @
|
||||||
|
/\ \L\ \ @
|
||||||
|
\/_> _ <_ @
|
||||||
|
/\ \L\ \ @
|
||||||
|
\ \____/ @
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/'_ `\ @
|
||||||
|
/\ \L\ \ @
|
||||||
|
\ \___, \ @
|
||||||
|
\/__,/\ \ @
|
||||||
|
\ \_\@
|
||||||
|
\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/\_\ @
|
||||||
|
\/_/_ @
|
||||||
|
/\_\@
|
||||||
|
\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/\_\ @
|
||||||
|
\/_/_ @
|
||||||
|
/\ \@
|
||||||
|
\ \/@
|
||||||
|
\/ @
|
||||||
|
@@
|
||||||
|
___ @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/< < @
|
||||||
|
\ `\ `\ @
|
||||||
|
`\ `\_|@
|
||||||
|
`\// @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
_______ @
|
||||||
|
/\______\ @
|
||||||
|
\/______/_ @
|
||||||
|
/\______\@
|
||||||
|
\/______/@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ `\ @
|
||||||
|
\ `\ `\ @
|
||||||
|
`\ > >@
|
||||||
|
/ / @
|
||||||
|
/\_/ @
|
||||||
|
\// @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
_ @
|
||||||
|
/'_`\ @
|
||||||
|
/\_\/\`\@
|
||||||
|
\/_//'/'@
|
||||||
|
/\_\ @
|
||||||
|
\/\_\@
|
||||||
|
\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/'_`\_ @
|
||||||
|
/'/'_` \ @
|
||||||
|
/\ \ \L\ \ @
|
||||||
|
\ \ `\__,_\@
|
||||||
|
\ `\_____\@
|
||||||
|
`\/_____/@
|
||||||
|
@@
|
||||||
|
______ @
|
||||||
|
/\ _ \ @
|
||||||
|
\ \ \L\ \ @
|
||||||
|
\ \ __ \ @
|
||||||
|
\ \ \/\ \ @
|
||||||
|
\ \_\ \_\@
|
||||||
|
\/_/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _`\ @
|
||||||
|
\ \ \L\ \ @
|
||||||
|
\ \ _ <' @
|
||||||
|
\ \ \L\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _`\ @
|
||||||
|
\ \ \/\_\ @
|
||||||
|
\ \ \/_/_ @
|
||||||
|
\ \ \L\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _`\ @
|
||||||
|
\ \ \/\ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \ \_\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _`\ @
|
||||||
|
\ \ \L\_\ @
|
||||||
|
\ \ _\L @
|
||||||
|
\ \ \L\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _`\ @
|
||||||
|
\ \ \L\_\@
|
||||||
|
\ \ _\/@
|
||||||
|
\ \ \/ @
|
||||||
|
\ \_\ @
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _`\ @
|
||||||
|
\ \ \L\_\ @
|
||||||
|
\ \ \L_L @
|
||||||
|
\ \ \/, \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ \_\ \ @
|
||||||
|
\ \ _ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \_\ \_\@
|
||||||
|
\/_/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
______ @
|
||||||
|
/\__ _\ @
|
||||||
|
\/_/\ \/ @
|
||||||
|
\ \ \ @
|
||||||
|
\_\ \__ @
|
||||||
|
/\_____\@
|
||||||
|
\/_____/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
_____ @
|
||||||
|
/\___ \ @
|
||||||
|
\/__/\ \ @
|
||||||
|
_\ \ \ @
|
||||||
|
/\ \_\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ \/'/' @
|
||||||
|
\ \ , < @
|
||||||
|
\ \ \\`\ @
|
||||||
|
\ \_\ \_\@
|
||||||
|
\/_/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \ \ __ @
|
||||||
|
\ \ \L\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
/'\_/`\ @
|
||||||
|
/\ \ @
|
||||||
|
\ \ \__\ \ @
|
||||||
|
\ \ \_/\ \ @
|
||||||
|
\ \_\\ \_\@
|
||||||
|
\/_/ \/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ `\\ \ @
|
||||||
|
\ \ , ` \ @
|
||||||
|
\ \ \`\ \ @
|
||||||
|
\ \_\ \_\@
|
||||||
|
\/_/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
_____ @
|
||||||
|
/\ __`\ @
|
||||||
|
\ \ \/\ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \ \_\ \ @
|
||||||
|
\ \_____\@
|
||||||
|
\/_____/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _`\ @
|
||||||
|
\ \ \L\ \@
|
||||||
|
\ \ ,__/@
|
||||||
|
\ \ \/ @
|
||||||
|
\ \_\ @
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
_____ @
|
||||||
|
/\ __`\ @
|
||||||
|
\ \ \/\ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \ \\'\\ @
|
||||||
|
\ \___\_\@
|
||||||
|
\/__//_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _`\ @
|
||||||
|
\ \ \L\ \ @
|
||||||
|
\ \ , / @
|
||||||
|
\ \ \\ \ @
|
||||||
|
\ \_\ \_\@
|
||||||
|
\/_/\/ /@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _`\ @
|
||||||
|
\ \,\L\_\ @
|
||||||
|
\/_\__ \ @
|
||||||
|
/\ \L\ \ @
|
||||||
|
\ `\____\@
|
||||||
|
\/_____/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
______ @
|
||||||
|
/\__ _\ @
|
||||||
|
\/_/\ \/ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \_\@
|
||||||
|
\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \ \_\ \ @
|
||||||
|
\ \_____\@
|
||||||
|
\/_____/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \ \_/ \@
|
||||||
|
\ `\___/@
|
||||||
|
`\/__/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \ __/\ \ @
|
||||||
|
\ \ \/\ \ \ \ @
|
||||||
|
\ \ \ \ \ \ \ @
|
||||||
|
\ \ \_/ \_\ \@
|
||||||
|
\ `\___x___/@
|
||||||
|
'\/__//__/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \ /\ \ @
|
||||||
|
\ `\`\/'/' @
|
||||||
|
`\/ > < @
|
||||||
|
\/'/\`\ @
|
||||||
|
/\_\\ \_\@
|
||||||
|
\/_/ \/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\ \ /\ \@
|
||||||
|
\ `\`\\/'/@
|
||||||
|
`\ `\ /' @
|
||||||
|
`\ \ \ @
|
||||||
|
\ \_\@
|
||||||
|
\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
________ @
|
||||||
|
/\_____ \ @
|
||||||
|
\/____//'/' @
|
||||||
|
//'/' @
|
||||||
|
//'/'___ @
|
||||||
|
/\_______\@
|
||||||
|
\/_______/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\ _\ @
|
||||||
|
\ \ \/ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \ \_ @
|
||||||
|
\ \___\@
|
||||||
|
\/___/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ `\ @
|
||||||
|
\`\ `\ @
|
||||||
|
`\`\ `\ @
|
||||||
|
`\`\ `\ @
|
||||||
|
`\`\__\@
|
||||||
|
`\/__/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
____ @
|
||||||
|
/\__ \ @
|
||||||
|
\/_/\ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\_\ \ @
|
||||||
|
/\___\@
|
||||||
|
\/___/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/ `\ @
|
||||||
|
/\_/\_\ @
|
||||||
|
\//\// $ @
|
||||||
|
$ $ @
|
||||||
|
$ $@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$ $ @
|
||||||
|
$_______ @
|
||||||
|
/\______\@
|
||||||
|
\/______/@@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\ \\$ @
|
||||||
|
\// $ @
|
||||||
|
$ $ @
|
||||||
|
$ $@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/'__`\ @
|
||||||
|
/\ \L\.\_ @
|
||||||
|
\ \__/.\_\@
|
||||||
|
\/__/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\ \ \____ @
|
||||||
|
\ \ '__`\ @
|
||||||
|
\ \ \L\ \@
|
||||||
|
\ \_,__/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
/'___\ @
|
||||||
|
/\ \__/ @
|
||||||
|
\ \____\@
|
||||||
|
\/____/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\_\ \ @
|
||||||
|
/'_` \ @
|
||||||
|
/\ \L\ \ @
|
||||||
|
\ \___,_\@
|
||||||
|
\/__,_ /@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/'__`\ @
|
||||||
|
/\ __/ @
|
||||||
|
\ \____\@
|
||||||
|
\/____/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
___ @
|
||||||
|
/'___\ @
|
||||||
|
/\ \__/ @
|
||||||
|
\ \ ,__\@
|
||||||
|
\ \ \_/@
|
||||||
|
\ \_\ @
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/'_ `\ @
|
||||||
|
/\ \L\ \ @
|
||||||
|
\ \____ \ @
|
||||||
|
\/___L\ \@
|
||||||
|
/\____/@
|
||||||
|
\_/__/ @@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\ \ \___ @
|
||||||
|
\ \ _ `\ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \_\ \_\@
|
||||||
|
\/_/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/\_\ @
|
||||||
|
\/\ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \_\@
|
||||||
|
\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/\_\ @
|
||||||
|
\/\ \ @
|
||||||
|
\ \ \ @
|
||||||
|
_\ \ \ @
|
||||||
|
/\ \_\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\ \ \/'\ @
|
||||||
|
\ \ , < @
|
||||||
|
\ \ \\`\ @
|
||||||
|
\ \_\ \_\@
|
||||||
|
\/_/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
___ @
|
||||||
|
/\_ \ @
|
||||||
|
\//\ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\_\ \_ @
|
||||||
|
/\____\@
|
||||||
|
\/____/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ ___ @
|
||||||
|
/' __` __`\ @
|
||||||
|
/\ \/\ \/\ \ @
|
||||||
|
\ \_\ \_\ \_\@
|
||||||
|
\/_/\/_/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
/' _ `\ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \_\ \_\@
|
||||||
|
\/_/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
/ __`\ @
|
||||||
|
/\ \L\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_____ @
|
||||||
|
/\ '__`\ @
|
||||||
|
\ \ \L\ \@
|
||||||
|
\ \ ,__/@
|
||||||
|
\ \ \/ @
|
||||||
|
\ \_\ @
|
||||||
|
\/_/ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
/'__`\ @
|
||||||
|
/\ \L\ \ @
|
||||||
|
\ \___, \ @
|
||||||
|
\/___/\ \ @
|
||||||
|
\ \_\@
|
||||||
|
\/_/@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_ __ @
|
||||||
|
/\`'__\@
|
||||||
|
\ \ \/ @
|
||||||
|
\ \_\ @
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
____ @
|
||||||
|
/',__\ @
|
||||||
|
/\__, `\@
|
||||||
|
\/\____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ \__ @
|
||||||
|
\ \ ,_\ @
|
||||||
|
\ \ \/ @
|
||||||
|
\ \ \_ @
|
||||||
|
\ \__\@
|
||||||
|
\/__/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ __ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ \_\ \@
|
||||||
|
\ \____/@
|
||||||
|
\/___/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ __ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ \_/ |@
|
||||||
|
\ \___/ @
|
||||||
|
\/__/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ __ __ @
|
||||||
|
/\ \/\ \/\ \ @
|
||||||
|
\ \ \_/ \_/ \@
|
||||||
|
\ \___x___/'@
|
||||||
|
\/__//__/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ _ @
|
||||||
|
/\ \/'\ @
|
||||||
|
\/> </ @
|
||||||
|
/\_/\_\@
|
||||||
|
\//\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ __ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ \_\ \ @
|
||||||
|
\/`____ \ @
|
||||||
|
`/___/> \@
|
||||||
|
/\___/@
|
||||||
|
\/__/ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
____ @
|
||||||
|
/\_ ,`\ @
|
||||||
|
\/_/ /_ @
|
||||||
|
/\____\@
|
||||||
|
\/____/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
_ @
|
||||||
|
/' \@
|
||||||
|
\ ,/'@
|
||||||
|
<' \ @
|
||||||
|
< \ `\ @
|
||||||
|
\`\__\@
|
||||||
|
\/__/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ @
|
||||||
|
/\ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \ \ @
|
||||||
|
\ \_\@
|
||||||
|
\/_/@@
|
||||||
|
__ @
|
||||||
|
/\ `\ @
|
||||||
|
\`\ \ @
|
||||||
|
\ \ `>@
|
||||||
|
//' \ @
|
||||||
|
/\__/' @
|
||||||
|
\/_/ @
|
||||||
|
@
|
||||||
|
@ @
|
||||||
|
_ _ @
|
||||||
|
/' \/' \ @
|
||||||
|
/\_/\__//$ @
|
||||||
|
\//\/__/ $ @
|
||||||
|
$ $@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\_\/\_\ @
|
||||||
|
\/\ _ \ @
|
||||||
|
\ \ \L\ \ @
|
||||||
|
\ \ __ \ @
|
||||||
|
\ \_\/\_\@
|
||||||
|
\/_/\/_/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\_\/\_\ @
|
||||||
|
\/\ __ \ @
|
||||||
|
\ \ \/\ \ @
|
||||||
|
\ \ \_\ \ @
|
||||||
|
\ \_____\@
|
||||||
|
\/_____/@
|
||||||
|
@
|
||||||
|
@ @
|
||||||
|
__ __ @
|
||||||
|
/\_\/\_\ @
|
||||||
|
\/\ \/\ \ @
|
||||||
|
\ \ \ \ \ @
|
||||||
|
\ \ \_\ \ @
|
||||||
|
\ \_____\@
|
||||||
|
\/_____/@
|
||||||
|
@
|
||||||
|
@ @
|
||||||
|
__ __ @
|
||||||
|
/\_\/\_\ @
|
||||||
|
\/_/\/_/_ @
|
||||||
|
/'_` \ @
|
||||||
|
/\ \L\ \ @
|
||||||
|
\ `\__,_\@
|
||||||
|
`\/_,__/@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\_\/\_\ @
|
||||||
|
\/_/\/_/ @
|
||||||
|
/'_`\ @
|
||||||
|
/\ \L\ \@
|
||||||
|
\ `\___/@
|
||||||
|
`\/__/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
__ __ @
|
||||||
|
/\_\ \_\ @
|
||||||
|
\/_/\/_/_ @
|
||||||
|
/\ \/\ \ @
|
||||||
|
\ \ \_\ \@
|
||||||
|
\ `\___/@
|
||||||
|
`\/__/ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
______ @
|
||||||
|
/\ __ \ @
|
||||||
|
\ \ \/\ \ @
|
||||||
|
\ \ \<_<_ @
|
||||||
|
\ \ \ \ \@
|
||||||
|
\ \ \\_/@
|
||||||
|
\ \_\/ @
|
||||||
|
\/_/ @
|
||||||
|
@@
|
File diff suppressed because it is too large
Load Diff
38
config.yml
38
config.yml
|
@ -1,30 +1,26 @@
|
||||||
runcharts:
|
runcharts:
|
||||||
- title: SEARCH ENGINE RESPONSE TIME (sec)
|
- title: SEARCH ENGINE RESPONSE TIME (sec)
|
||||||
precision: 3
|
|
||||||
position:
|
position:
|
||||||
w: 0
|
w: 0
|
||||||
h: 0
|
h: 0
|
||||||
size:
|
size:
|
||||||
w: 30
|
w: 50
|
||||||
h: 20
|
h: 14
|
||||||
|
precision: 3
|
||||||
items:
|
items:
|
||||||
- label: GOOGLE
|
- label: GOOGLE
|
||||||
script: curl -o /dev/null -s -w '%{time_total}' https://www.google.com
|
script: curl -o /dev/null -s -w '%{time_total}' https://www.google.com
|
||||||
- label: YAHOO
|
- label: YAHOO
|
||||||
script: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com
|
script: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com
|
||||||
- label: YANDEX
|
|
||||||
script: curl -o /dev/null -s -w '%{time_total}' https://yandex.com
|
|
||||||
- label: BING
|
- label: BING
|
||||||
script: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com
|
script: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com
|
||||||
- label: DDGO
|
|
||||||
script: curl -o /dev/null -s -w '%{time_total}' https://duckduckgo.com
|
|
||||||
- title: SEARCH ENGINE RESPONSE TIME 2 (sec)
|
- title: SEARCH ENGINE RESPONSE TIME 2 (sec)
|
||||||
refresh-rate-ms: 5000
|
refresh-rate-ms: 5000
|
||||||
position:
|
position:
|
||||||
w: 0
|
w: 0
|
||||||
h: 20
|
h: 14
|
||||||
size:
|
size:
|
||||||
w: 15
|
w: 17
|
||||||
h: 10
|
h: 10
|
||||||
legend:
|
legend:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
@ -38,11 +34,29 @@ runcharts:
|
||||||
script: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com
|
script: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com
|
||||||
- title: MONGO COLLECTIONS COUNT
|
- title: MONGO COLLECTIONS COUNT
|
||||||
position:
|
position:
|
||||||
w: 15
|
w: 17
|
||||||
h: 20
|
h: 14
|
||||||
size:
|
size:
|
||||||
w: 15
|
w: 17
|
||||||
h: 10
|
h: 10
|
||||||
items:
|
items:
|
||||||
- label: POSTS
|
- label: POSTS
|
||||||
script: mongo --quiet --host=localhost blog --eval "db.getCollection('post').find({}).size()"
|
script: mongo --quiet --host=localhost blog --eval "db.getCollection('post').find({}).size()"
|
||||||
|
asciiboxes:
|
||||||
|
- title: COUNT
|
||||||
|
position:
|
||||||
|
w: 34
|
||||||
|
h: 14
|
||||||
|
size:
|
||||||
|
w: 16
|
||||||
|
h: 4
|
||||||
|
script: date +%r
|
||||||
|
- title: MODE
|
||||||
|
position:
|
||||||
|
w: 34
|
||||||
|
h: 18
|
||||||
|
size:
|
||||||
|
w: 16
|
||||||
|
h: 6
|
||||||
|
script: date +%r
|
||||||
|
font: 3d
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/sqshq/sampler/console"
|
"github.com/sqshq/sampler/console"
|
||||||
"github.com/sqshq/sampler/data"
|
"github.com/sqshq/sampler/data"
|
||||||
|
"github.com/sqshq/sampler/widgets/asciibox"
|
||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
|
@ -11,14 +12,14 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Theme *console.Theme `yaml:"theme,omitempty"`
|
Theme *console.Theme `yaml:"theme,omitempty"`
|
||||||
RunCharts []RunChartConfig `yaml:"runcharts,omitempty"`
|
RunCharts []RunChartConfig `yaml:"runcharts,omitempty"`
|
||||||
|
AsciiBoxes []AsciiBoxConfig `yaml:"asciiboxes,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ComponentConfig struct {
|
type ComponentConfig struct {
|
||||||
Title string `yaml:"title"`
|
Title string `yaml:"title"`
|
||||||
RefreshRateMs *int `yaml:"refresh-rate-ms,omitempty"`
|
RefreshRateMs *int `yaml:"refresh-rate-ms,omitempty"`
|
||||||
Precision *int `yaml:"precision,omitempty"`
|
|
||||||
Position Position `yaml:"position"`
|
Position Position `yaml:"position"`
|
||||||
Size Size `yaml:"size"`
|
Size Size `yaml:"size"`
|
||||||
}
|
}
|
||||||
|
@ -26,9 +27,16 @@ type ComponentConfig struct {
|
||||||
type RunChartConfig struct {
|
type RunChartConfig struct {
|
||||||
ComponentConfig `yaml:",inline"`
|
ComponentConfig `yaml:",inline"`
|
||||||
Legend *LegendConfig `yaml:"legend,omitempty"`
|
Legend *LegendConfig `yaml:"legend,omitempty"`
|
||||||
|
Precision *int `yaml:"precision,omitempty"`
|
||||||
Items []data.Item `yaml:"items"`
|
Items []data.Item `yaml:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type AsciiBoxConfig struct {
|
||||||
|
ComponentConfig `yaml:",inline"`
|
||||||
|
data.Item `yaml:",inline"`
|
||||||
|
Font *asciibox.AsciiFont `yaml:"font,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
type LegendConfig struct {
|
type LegendConfig struct {
|
||||||
Enabled bool `yaml:"enabled"`
|
Enabled bool `yaml:"enabled"`
|
||||||
Details bool `yaml:"details"`
|
Details bool `yaml:"details"`
|
||||||
|
@ -49,6 +57,8 @@ type ComponentType rune
|
||||||
const (
|
const (
|
||||||
TypeRunChart ComponentType = 0
|
TypeRunChart ComponentType = 0
|
||||||
TypeBarChart ComponentType = 1
|
TypeBarChart ComponentType = 1
|
||||||
|
TypeTextBox ComponentType = 2
|
||||||
|
TypeAsciiBox ComponentType = 3
|
||||||
)
|
)
|
||||||
|
|
||||||
type ComponentSettings struct {
|
type ComponentSettings struct {
|
||||||
|
@ -91,6 +101,12 @@ func (c *Config) findComponent(componentType ComponentType, componentTitle strin
|
||||||
return &c.RunCharts[i].ComponentConfig
|
return &c.RunCharts[i].ComponentConfig
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case TypeAsciiBox:
|
||||||
|
for i, component := range c.AsciiBoxes {
|
||||||
|
if component.Title == componentTitle {
|
||||||
|
return &c.AsciiBoxes[i].ComponentConfig
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
panic(fmt.Sprintf(
|
panic(fmt.Sprintf(
|
||||||
|
|
|
@ -2,10 +2,11 @@ package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/sqshq/sampler/console"
|
"github.com/sqshq/sampler/console"
|
||||||
|
"github.com/sqshq/sampler/widgets/asciibox"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
defaultRefreshRateMs = 300
|
defaultRefreshRateMs = 1000
|
||||||
defaultPrecision = 1
|
defaultPrecision = 1
|
||||||
defaultTheme = console.ThemeDark
|
defaultTheme = console.ThemeDark
|
||||||
)
|
)
|
||||||
|
@ -38,6 +39,26 @@ func (c *Config) setDefaultValues() {
|
||||||
}
|
}
|
||||||
c.RunCharts[i] = chart
|
c.RunCharts[i] = chart
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for i, box := range c.AsciiBoxes {
|
||||||
|
if box.RefreshRateMs == nil {
|
||||||
|
r := defaultRefreshRateMs
|
||||||
|
box.RefreshRateMs = &r
|
||||||
|
}
|
||||||
|
if box.Label == nil {
|
||||||
|
label := string(i)
|
||||||
|
box.Label = &label
|
||||||
|
}
|
||||||
|
if box.Font == nil {
|
||||||
|
font := asciibox.AsciiFontFlat
|
||||||
|
box.Font = &font
|
||||||
|
}
|
||||||
|
if box.Color == nil {
|
||||||
|
color := console.ColorWhite
|
||||||
|
box.Color = &color
|
||||||
|
}
|
||||||
|
c.AsciiBoxes[i] = box
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Config) setDefaultLayout() {
|
func (c *Config) setDefaultLayout() {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Item struct {
|
type Item struct {
|
||||||
Label string `yaml:"label"`
|
Label *string `yaml:"label,omitempty"`
|
||||||
Script string `yaml:"script"`
|
Script string `yaml:"script"`
|
||||||
Color *ui.Color `yaml:"color,omitempty"`
|
Color *ui.Color `yaml:"color,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,14 +25,7 @@ func NewSampler(consumer Consumer, item Item, rateMs int) Sampler {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Sampler) sample() {
|
func (self *Sampler) sample() {
|
||||||
|
|
||||||
value, err := self.item.nextValue()
|
value, err := self.item.nextValue()
|
||||||
|
sample := Sample{Value: value, Error: err, Label: *self.item.Label}
|
||||||
sample := Sample{
|
|
||||||
Value: value,
|
|
||||||
Error: err,
|
|
||||||
Label: self.item.Label,
|
|
||||||
}
|
|
||||||
|
|
||||||
self.consumer.ConsumeSample(sample)
|
self.consumer.ConsumeSample(sample)
|
||||||
}
|
}
|
||||||
|
|
1
go.mod
1
go.mod
|
@ -4,6 +4,7 @@ require (
|
||||||
github.com/hajimehoshi/go-mp3 v0.1.1
|
github.com/hajimehoshi/go-mp3 v0.1.1
|
||||||
github.com/hajimehoshi/oto v0.1.1
|
github.com/hajimehoshi/oto v0.1.1
|
||||||
github.com/mattn/go-runewidth v0.0.4 // indirect
|
github.com/mattn/go-runewidth v0.0.4 // indirect
|
||||||
|
github.com/mbndr/figlet4go v0.0.0-20170909125910-47ded4d17030
|
||||||
github.com/mitchellh/go-wordwrap v1.0.0 // indirect
|
github.com/mitchellh/go-wordwrap v1.0.0 // indirect
|
||||||
github.com/sqshq/termui v0.0.0-20190125032456-731556c09f2c
|
github.com/sqshq/termui v0.0.0-20190125032456-731556c09f2c
|
||||||
gopkg.in/yaml.v2 v2.2.2
|
gopkg.in/yaml.v2 v2.2.2
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -11,6 +11,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
|
||||||
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
|
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
|
||||||
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
|
github.com/mbndr/figlet4go v0.0.0-20170909125910-47ded4d17030 h1:TSUoxTASZ3DmI7VDNX7/cbGlwz0OCp9RW07tUDnx3TQ=
|
||||||
|
github.com/mbndr/figlet4go v0.0.0-20170909125910-47ded4d17030/go.mod h1:QzTGLGoOqLHUBK8/EZ0v4Fa4CdyXmdyRwCHcl0YbeO4=
|
||||||
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
||||||
github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=
|
github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=
|
||||||
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
||||||
|
|
9
main.go
9
main.go
|
@ -6,6 +6,7 @@ import (
|
||||||
"github.com/sqshq/sampler/data"
|
"github.com/sqshq/sampler/data"
|
||||||
"github.com/sqshq/sampler/event"
|
"github.com/sqshq/sampler/event"
|
||||||
"github.com/sqshq/sampler/widgets"
|
"github.com/sqshq/sampler/widgets"
|
||||||
|
"github.com/sqshq/sampler/widgets/asciibox"
|
||||||
"github.com/sqshq/sampler/widgets/runchart"
|
"github.com/sqshq/sampler/widgets/runchart"
|
||||||
ui "github.com/sqshq/termui"
|
ui "github.com/sqshq/termui"
|
||||||
"time"
|
"time"
|
||||||
|
@ -28,11 +29,17 @@ func main() {
|
||||||
layout.AddComponent(chart, c.Title, c.Position, c.Size, config.TypeRunChart)
|
layout.AddComponent(chart, c.Title, c.Position, c.Size, config.TypeRunChart)
|
||||||
|
|
||||||
for _, item := range c.Items {
|
for _, item := range c.Items {
|
||||||
chart.AddLine(item.Label, *item.Color)
|
chart.AddLine(*item.Label, *item.Color)
|
||||||
data.NewSampler(chart, item, *c.RefreshRateMs)
|
data.NewSampler(chart, item, *c.RefreshRateMs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, a := range cfg.AsciiBoxes {
|
||||||
|
box := asciibox.NewAsciiBox(a.Title, *a.Font, *a.Item.Color)
|
||||||
|
layout.AddComponent(box, a.Title, a.Position, a.Size, config.TypeAsciiBox)
|
||||||
|
data.NewSampler(box, a.Item, *a.RefreshRateMs)
|
||||||
|
}
|
||||||
|
|
||||||
handler := event.Handler{
|
handler := event.Handler{
|
||||||
Layout: layout,
|
Layout: layout,
|
||||||
RenderEvents: time.NewTicker(console.RenderRate).C,
|
RenderEvents: time.NewTicker(console.RenderRate).C,
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
package asciibox
|
||||||
|
|
||||||
|
import (
|
||||||
|
fl "github.com/mbndr/figlet4go"
|
||||||
|
"github.com/sqshq/sampler/data"
|
||||||
|
ui "github.com/sqshq/termui"
|
||||||
|
"image"
|
||||||
|
)
|
||||||
|
|
||||||
|
type AsciiBox struct {
|
||||||
|
ui.Block
|
||||||
|
text string
|
||||||
|
ascii string
|
||||||
|
style ui.Style
|
||||||
|
render *fl.AsciiRender
|
||||||
|
options *fl.RenderOptions
|
||||||
|
}
|
||||||
|
|
||||||
|
type AsciiFont string
|
||||||
|
|
||||||
|
const (
|
||||||
|
AsciiFontFlat AsciiFont = "flat"
|
||||||
|
AsciiFont3D AsciiFont = "3d"
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewAsciiBox(title string, font AsciiFont, color ui.Color) *AsciiBox {
|
||||||
|
|
||||||
|
block := *ui.NewBlock()
|
||||||
|
block.Title = title
|
||||||
|
|
||||||
|
render := fl.NewAsciiRender()
|
||||||
|
err := render.LoadFont("asset/")
|
||||||
|
if err != nil {
|
||||||
|
panic("Can't load fonts: " + err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
options := fl.NewRenderOptions()
|
||||||
|
options.FontName = string(font)
|
||||||
|
|
||||||
|
return &AsciiBox{
|
||||||
|
Block: block,
|
||||||
|
style: ui.NewStyle(color),
|
||||||
|
render: render,
|
||||||
|
options: options,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AsciiBox) ConsumeSample(sample data.Sample) {
|
||||||
|
a.text = sample.Value
|
||||||
|
a.ascii, _ = a.render.RenderOpts(sample.Value, a.options)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AsciiBox) Draw(buffer *ui.Buffer) {
|
||||||
|
|
||||||
|
buffer.Fill(ui.NewCell(' ', ui.NewStyle(ui.ColorBlack)), a.GetRect())
|
||||||
|
a.Block.Draw(buffer)
|
||||||
|
|
||||||
|
point := a.Inner.Min
|
||||||
|
cells := ui.ParseText(a.ascii, a.style)
|
||||||
|
|
||||||
|
for i := 0; i < len(cells) && point.Y < a.Inner.Max.Y; i++ {
|
||||||
|
if cells[i].Rune == '\n' {
|
||||||
|
point = image.Pt(a.Inner.Min.X, point.Y+1)
|
||||||
|
} else if point.In(a.Inner) {
|
||||||
|
buffer.SetCell(cells[i], point)
|
||||||
|
point = point.Add(image.Pt(1, 0))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,7 +27,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
columnsCount = 30
|
columnsCount = 50
|
||||||
rowsCount = 30
|
rowsCount = 30
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,9 @@ func (m *Menu) up() {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if m.option == MenuOptionPinpoint && m.component.Type != config.TypeRunChart {
|
||||||
|
m.up()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Menu) down() {
|
func (m *Menu) down() {
|
||||||
|
@ -79,6 +82,9 @@ func (m *Menu) down() {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if m.option == MenuOptionPinpoint && m.component.Type != config.TypeRunChart {
|
||||||
|
m.down()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Menu) moveOrResize() {
|
func (m *Menu) moveOrResize() {
|
||||||
|
@ -92,11 +98,8 @@ func (m *Menu) Draw(buffer *ui.Buffer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
m.updateDimensions()
|
m.updateDimensions()
|
||||||
|
buffer.Fill(ui.NewCell(' ', ui.NewStyle(ui.ColorBlack)), m.GetRect())
|
||||||
buffer.Fill(
|
m.drawInnerBorder(buffer)
|
||||||
ui.NewCell(' ', ui.NewStyle(ui.ColorBlack)),
|
|
||||||
m.GetRect(),
|
|
||||||
)
|
|
||||||
|
|
||||||
switch m.mode {
|
switch m.mode {
|
||||||
case MenuModeHighlight:
|
case MenuModeHighlight:
|
||||||
|
@ -107,7 +110,6 @@ func (m *Menu) Draw(buffer *ui.Buffer) {
|
||||||
m.renderOptions(buffer)
|
m.renderOptions(buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
m.drawInnerBorder(buffer)
|
|
||||||
m.Block.Draw(buffer)
|
m.Block.Draw(buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,5 +107,9 @@ func getDiffWithPreviousValue(line TimeLine) float64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getCurrentValue(line TimeLine) float64 {
|
func getCurrentValue(line TimeLine) float64 {
|
||||||
return line.points[len(line.points)-1].value
|
if len(line.points) == 0 {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return line.points[len(line.points)-1].value
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue