diff --git a/spring-shell-docs/modules/ROOT/examples/tui-progress-1.cast b/spring-shell-docs/modules/ROOT/examples/tui-progress-1.cast new file mode 100644 index 000000000..124a3b3e4 --- /dev/null +++ b/spring-shell-docs/modules/ROOT/examples/tui-progress-1.cast @@ -0,0 +1,209 @@ +{"version": 2, "width": 102, "height": 35, "timestamp": 1708183052, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}} +[0.859792, "o", "\u001b[?1h\u001b=\u001b[?25l\u001b[?1005h\u001b[?1000h"] +[0.865588, "o", "\u001b[?25l desc - 0% \r"] +[0.893952, "o", "\u001b[?25l desc - 0% \r"] +[0.902345, "o", "\u001b[?25l desc - 1% \r"] +[0.943403, "o", "\u001b[?25l desc - 1% \r"] +[0.953261, "o", "\u001b[?25l desc - 2% \r"] +[0.993774, "o", "\u001b[?25l desc \\ 2% \r"] +[1.004375, "o", "\u001b[?25l desc \\ 3% \r"] +[1.043579, "o", "\u001b[?25l desc \\ 3% \r"] +[1.056166, "o", "\u001b[?25l desc \\ 4% \r"] +[1.093647, "o", "\u001b[?25l desc \\ 4% \r"] +[1.107956, "o", "\u001b[?25l desc | 5% \r"] +[1.143602, "o", "\u001b[?25l desc | 5% \r"] +[1.159699, "o", "\u001b[?25l desc | 6% \r"] +[1.193589, "o", "\u001b[?25l desc | 6% \r"] +[1.211604, "o", "\u001b[?25l desc | 7% \r"] +[1.243689, "o", "\u001b[?25l desc / 7% \r"] +[1.263467, "o", "\u001b[?25l desc / 8% \r"] +[1.293737, "o", "\u001b[?25l desc / 8% \r"] +[1.316157, "o", "\u001b[?25l desc / 9% \r"] +[1.343585, "o", "\u001b[?25l desc / 9% \r"] +[1.368106, "o", "\u001b[?25l desc - 10% \r"] +[1.393528, "o", "\u001b[?25l desc - 10% \r"] +[1.419898, "o", "\u001b[?25l desc - 11% \r"] +[1.443568, "o", "\u001b[?25l desc - 11% \r"] +[1.471733, "o", "\u001b[?25l desc - 12% \r"] +[1.493737, "o", "\u001b[?25l desc \\ 12% \r"] +[1.52348, "o", "\u001b[?25l desc \\ 13% \r"] +[1.543573, "o", "\u001b[?25l desc \\ 13% \r"] +[1.575246, "o", "\u001b[?25l desc \\ 14% \r"] +[1.593557, "o", "\u001b[?25l desc \\ 14% \r"] +[1.626971, "o", "\u001b[?25l desc | 15% \r"] +[1.643512, "o", "\u001b[?25l desc | 15% \r"] +[1.678542, "o", "\u001b[?25l desc | 16% \r"] +[1.693412, "o", "\u001b[?25l desc | 16% \r"] +[1.730198, "o", "\u001b[?25l desc | 17% \r"] +[1.743396, "o", "\u001b[?25l desc | 17% \r"] +[1.781925, "o", "\u001b[?25l desc / 18% \r"] +[1.7935, "o", "\u001b[?25l desc / 18% \r"] +[1.833694, "o", "\u001b[?25l desc / 19% \r"] +[1.843405, "o", "\u001b[?25l desc / 19% \r"] +[1.885361, "o", "\u001b[?25l desc - 20% \r"] +[1.893472, "o", "\u001b[?25l desc - 20% \r"] +[1.937131, "o", "\u001b[?25l desc - 21% \r"] +[1.943291, "o", "\u001b[?25l desc - 21% \r"] +[1.988807, "o", "\u001b[?25l desc - 22% \r"] +[1.993379, "o", "\u001b[?25l desc - 22% \r"] +[2.040452, "o", "\u001b[?25l desc \\ 23% \r"] +[2.04333, "o", "\u001b[?25l desc \\ 23% \r"] +[2.092046, "o", "\u001b[?25l desc \\ 24% \r"] +[2.093341, "o", "\u001b[?25l desc \\ 24% \r"] +[2.143247, "o", "\u001b[?25l desc | 25% \r"] +[2.153865, "o", "\u001b[?25l desc | 25% \r"] +[2.19333, "o", "\u001b[?25l desc | 25% \r"] +[2.204895, "o", "\u001b[?25l desc | 26% \r"] +[2.243292, "o", "\u001b[?25l desc | 26% \r"] +[2.255659, "o", "\u001b[?25l desc | 27% \r"] +[2.293379, "o", "\u001b[?25l desc / 27% \r"] +[2.307138, "o", "\u001b[?25l desc / 28% \r"] +[2.343457, "o", "\u001b[?25l desc / 28% \r"] +[2.358645, "o", "\u001b[?25l desc / 29% \r"] +[2.39284, "o", "\u001b[?25l desc / 29% \r"] +[2.409991, "o", "\u001b[?25l desc - 30% \r"] +[2.442707, "o", "\u001b[?25l desc - 30% \r"] +[2.461467, "o", "\u001b[?25l desc - 31% \r"] +[2.493433, "o", "\u001b[?25l desc - 31% \r"] +[2.512886, "o", "\u001b[?25l desc - 32% \r"] +[2.543085, "o", "\u001b[?25l desc \\ 32% \r"] +[2.56409, "o", "\u001b[?25l desc \\ 33% \r"] +[2.593175, "o", "\u001b[?25l desc \\ 33% \r"] +[2.615502, "o", "\u001b[?25l desc \\ 34% \r"] +[2.643152, "o", "\u001b[?25l desc \\ 34% \r"] +[2.666739, "o", "\u001b[?25l desc | 35% \r"] +[2.693077, "o", "\u001b[?25l desc | 35% \r"] +[2.717971, "o", "\u001b[?25l desc | 36% \r"] +[2.743056, "o", "\u001b[?25l desc | 36% \r"] +[2.769278, "o", "\u001b[?25l desc | 37% \r"] +[2.793192, "o", "\u001b[?25l desc / 37% \r"] +[2.820528, "o", "\u001b[?25l desc / 38% \r"] +[2.843087, "o", "\u001b[?25l desc / 38% \r"] +[2.871813, "o", "\u001b[?25l desc / 39% \r"] +[2.893088, "o", "\u001b[?25l desc / 39% \r"] +[2.923045, "o", "\u001b[?25l desc - 40% \r"] +[2.943043, "o", "\u001b[?25l desc - 40% \r"] +[2.974283, "o", "\u001b[?25l desc - 41% \r"] +[2.993066, "o", "\u001b[?25l desc - 41% \r"] +[2.025571, "o", "\u001b[?25l desc - 42% \r"] +[2.043176, "o", "\u001b[?25l desc - 42% \r"] +[2.076833, "o", "\u001b[?25l desc \\ 43% \r"] +[2.093079, "o", "\u001b[?25l desc \\ 43% \r"] +[2.128356, "o", "\u001b[?25l desc \\ 44% \r"] +[2.143059, "o", "\u001b[?25l desc \\ 44% \r"] +[2.179533, "o", "\u001b[?25l desc | 45% \r"] +[2.193383, "o", "\u001b[?25l desc | 45% \r"] +[2.230768, "o", "\u001b[?25l desc | 46% \r"] +[2.243026, "o", "\u001b[?25l desc | 46% \r"] +[2.281994, "o", "\u001b[?25l desc | 47% \r"] +[2.293177, "o", "\u001b[?25l desc | 47% \r"] +[2.333309, "o", "\u001b[?25l desc / 48% \r"] +[2.342975, "o", "\u001b[?25l desc / 48% \r"] +[2.384442, "o", "\u001b[?25l desc / 49% \r"] +[2.393007, "o", "\u001b[?25l desc / 49% \r"] +[2.435694, "o", "\u001b[?25l desc - 50% \r"] +[2.443048, "o", "\u001b[?25l desc - 50% \r"] +[2.486821, "o", "\u001b[?25l desc - 51% \r"] +[2.492994, "o", "\u001b[?25l desc - 51% \r"] +[2.538294, "o", "\u001b[?25l desc - 52% \r"] +[2.543074, "o", "\u001b[?25l desc - 52% \r"] +[2.589259, "o", "\u001b[?25l desc \\ 53% \r"] +[2.592458, "o", "\u001b[?25l desc \\ 53% \r"] +[2.640675, "o", "\u001b[?25l desc \\ 54% \r"] +[2.642908, "o", "\u001b[?25l desc \\ 54% \r"] +[2.691914, "o", "\u001b[?25l desc \\ 55% \r"] +[2.693084, "o", "\u001b[?25l desc \\ 55% \r"] +[2.742886, "o", "\u001b[?25l desc | 56% \r"] +[2.753233, "o", "\u001b[?25l desc | 56% \r"] +[2.792936, "o", "\u001b[?25l desc | 56% \r"] +[2.804555, "o", "\u001b[?25l desc | 57% \r"] +[2.842958, "o", "\u001b[?25l desc / 57% \r"] +[2.855668, "o", "\u001b[?25l desc / 58% \r"] +[2.893123, "o", "\u001b[?25l desc / 58% \r"] +[2.906878, "o", "\u001b[?25l desc / 59% \r"] +[2.943331, "o", "\u001b[?25l desc / 59% \r"] +[2.958064, "o", "\u001b[?25l desc - 60% \r"] +[2.993058, "o", "\u001b[?25l desc - 60% \r"] +[3.009183, "o", "\u001b[?25l desc - 61% \r"] +[3.042894, "o", "\u001b[?25l desc - 61% \r"] +[3.060266, "o", "\u001b[?25l desc - 62% \r"] +[3.093029, "o", "\u001b[?25l desc \\ 62% \r"] +[3.111526, "o", "\u001b[?25l desc \\ 63% \r"] +[3.143031, "o", "\u001b[?25l desc \\ 63% \r"] +[3.16259, "o", "\u001b[?25l desc \\ 64% \r"] +[3.192779, "o", "\u001b[?25l desc \\ 64% \r"] +[3.213466, "o", "\u001b[?25l desc \\ 65% \r"] +[3.242732, "o", "\u001b[?25l desc | 65% \r"] +[3.264414, "o", "\u001b[?25l desc | 66% \r"] +[3.292872, "o", "\u001b[?25l desc | 66% \r"] +[3.31535, "o", "\u001b[?25l desc | 67% \r"] +[3.34275, "o", "\u001b[?25l desc | 67% \r"] +[3.36626, "o", "\u001b[?25l desc / 68% \r"] +[3.392783, "o", "\u001b[?25l desc / 68% \r"] +[3.417231, "o", "\u001b[?25l desc / 69% \r"] +[3.442744, "o", "\u001b[?25l desc / 69% \r"] +[3.468096, "o", "\u001b[?25l desc / 70% \r"] +[3.492789, "o", "\u001b[?25l desc - 70% \r"] +[3.519008, "o", "\u001b[?25l desc - 71% \r"] +[3.542798, "o", "\u001b[?25l desc - 71% \r"] +[3.569998, "o", "\u001b[?25l desc - 72% \r"] +[3.59279, "o", "\u001b[?25l desc - 72% \r"] +[3.620906, "o", "\u001b[?25l desc \\ 73% \r"] +[3.642756, "o", "\u001b[?25l desc \\ 73% \r"] +[3.671842, "o", "\u001b[?25l desc \\ 74% \r"] +[3.692844, "o", "\u001b[?25l desc \\ 74% \r"] +[3.722752, "o", "\u001b[?25l desc \\ 75% \r"] +[3.7428, "o", "\u001b[?25l desc | 75% \r"] +[3.773609, "o", "\u001b[?25l desc | 76% \r"] +[3.792842, "o", "\u001b[?25l desc | 76% \r"] +[3.824613, "o", "\u001b[?25l desc | 77% \r"] +[3.842778, "o", "\u001b[?25l desc | 77% \r"] +[3.875535, "o", "\u001b[?25l desc / 78% \r"] +[3.892868, "o", "\u001b[?25l desc / 78% \r"] +[3.926509, "o", "\u001b[?25l desc / 79% \r"] +[3.942708, "o", "\u001b[?25l desc / 79% \r"] +[3.97744, "o", "\u001b[?25l desc / 80% \r"] +[3.992856, "o", "\u001b[?25l desc / 80% \r"] +[4.028356, "o", "\u001b[?25l desc - 81% \r"] +[4.042788, "o", "\u001b[?25l desc - 81% \r"] +[4.079369, "o", "\u001b[?25l desc - 82% \r"] +[4.092775, "o", "\u001b[?25l desc - 82% \r"] +[4.13022, "o", "\u001b[?25l desc \\ 83% \r"] +[4.142812, "o", "\u001b[?25l desc \\ 83% \r"] +[4.181414, "o", "\u001b[?25l desc \\ 84% \r"] +[4.192874, "o", "\u001b[?25l desc \\ 84% \r"] +[4.232415, "o", "\u001b[?25l desc \\ 85% \r"] +[4.2428, "o", "\u001b[?25l desc \\ 85% \r"] +[4.283361, "o", "\u001b[?25l desc | 86% \r"] +[4.292738, "o", "\u001b[?25l desc | 86% \r"] +[4.334205, "o", "\u001b[?25l desc | 87% \r"] +[4.34267, "o", "\u001b[?25l desc | 87% \r"] +[4.385079, "o", "\u001b[?25l desc | 88% \r"] +[4.392757, "o", "\u001b[?25l desc / 88% \r"] +[4.435972, "o", "\u001b[?25l desc / 89% \r"] +[4.442841, "o", "\u001b[?25l desc / 89% \r"] +[4.486932, "o", "\u001b[?25l desc / 90% \r"] +[4.49272, "o", "\u001b[?25l desc / 90% \r"] +[4.537838, "o", "\u001b[?25l desc - 91% \r"] +[4.542722, "o", "\u001b[?25l desc - 91% \r"] +[4.588743, "o", "\u001b[?25l desc - 92% \r"] +[4.592815, "o", "\u001b[?25l desc - 92% \r"] +[4.640385, "o", "\u001b[?25l desc - 93% \r"] +[4.642609, "o", "\u001b[?25l desc - 93% \r"] +[4.69132, "o", "\u001b[?25l desc \\ 94% \r"] +[4.692733, "o", "\u001b[?25l desc \\ 94% \r"] +[4.742335, "o", "\u001b[?25l desc \\ 95% \r"] +[4.752935, "o", "\u001b[?25l desc \\ 95% \r"] +[4.792737, "o", "\u001b[?25l desc | 95% \r"] +[4.80323, "o", "\u001b[?25l desc | 96% \r"] +[4.842609, "o", "\u001b[?25l desc | 96% \r"] +[4.854009, "o", "\u001b[?25l desc | 97% \r"] +[4.892601, "o", "\u001b[?25l desc | 97% \r"] +[4.904868, "o", "\u001b[?25l desc | 98% \r"] +[4.942635, "o", "\u001b[?25l desc / 98% \r"] +[4.955631, "o", "\u001b[?25l desc / 99% \r"] +[4.992563, "o", "\u001b[?25l desc / 99% \r"] +[5.00646, "o", "\u001b[?25l desc / 100% \r"] +[5.042593, "o", "\u001b[?25l desc - 100% \r"] +[5.084391, "o", "\u001b[?12l\u001b[?25h\u001b[?1000l"] +[5.08445, "o", "\u001b[?1l\u001b>\u001b[K"] diff --git a/spring-shell-docs/modules/ROOT/examples/tui-progress-2.cast b/spring-shell-docs/modules/ROOT/examples/tui-progress-2.cast new file mode 100644 index 000000000..31b0f8c88 --- /dev/null +++ b/spring-shell-docs/modules/ROOT/examples/tui-progress-2.cast @@ -0,0 +1,207 @@ +{"version": 2, "width": 102, "height": 35, "timestamp": 1708184396, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}} +[0.220063, "o", "\u001b[?1h\u001b=\u001b[?25l\u001b[?1005h\u001b[?1000h"] +[0.22511, "o", "\u001b[?25ldesc - 0%\r"] +[0.255729, "o", "\u001b[?25ldesc - 0%\r"] +[0.264626, "o", "\u001b[?25ldesc - 1%\r"] +[0.305158, "o", "\u001b[?25ldesc - 1%\r"] +[0.315596, "o", "\u001b[?25ldesc - 2%\r"] +[0.355545, "o", "\u001b[?25ldesc \\ 2%\r"] +[0.366585, "o", "\u001b[?25ldesc \\ 3%\r"] +[0.405243, "o", "\u001b[?25ldesc \\ 3%\r"] +[0.417593, "o", "\u001b[?25ldesc \\ 4%\r"] +[0.455377, "o", "\u001b[?25ldesc \\ 4%\r"] +[0.468929, "o", "\u001b[?25ldesc | 5%\r"] +[0.505322, "o", "\u001b[?25ldesc | 5%\r"] +[0.521283, "o", "\u001b[?25ldesc | 6%\r"] +[0.555371, "o", "\u001b[?25ldesc | 6%\r"] +[0.573536, "o", "\u001b[?25ldesc | 7%\r"] +[0.605425, "o", "\u001b[?25ldesc / 7%\r"] +[0.625322, "o", "\u001b[?25ldesc / 8%\r"] +[0.655768, "o", "\u001b[?25ldesc / 8%\r"] +[0.677075, "o", "\u001b[?25ldesc / 9%\r"] +[0.705357, "o", "\u001b[?25ldesc / 9%\r"] +[0.728849, "o", "\u001b[?25ldesc - 10%\r"] +[0.755288, "o", "\u001b[?25ldesc - 10%\r"] +[0.780606, "o", "\u001b[?25ldesc - 11%\r"] +[0.805983, "o", "\u001b[?25ldesc - 11%\r"] +[0.832468, "o", "\u001b[?25ldesc - 12%\r"] +[0.855361, "o", "\u001b[?25ldesc \\ 12%\r"] +[0.884189, "o", "\u001b[?25ldesc \\ 13%\r"] +[0.905215, "o", "\u001b[?25ldesc \\ 13%\r"] +[0.935896, "o", "\u001b[?25ldesc \\ 14%\r"] +[0.955146, "o", "\u001b[?25ldesc \\ 14%\r"] +[0.988262, "o", "\u001b[?25ldesc | 15%\r"] +[1.005504, "o", "\u001b[?25ldesc | 15%\r"] +[1.039976, "o", "\u001b[?25ldesc | 16%\r"] +[1.055153, "o", "\u001b[?25ldesc | 16%\r"] +[1.091609, "o", "\u001b[?25ldesc | 17%\r"] +[1.105145, "o", "\u001b[?25ldesc | 17%\r"] +[1.143111, "o", "\u001b[?25ldesc / 18%\r"] +[1.155181, "o", "\u001b[?25ldesc / 18%\r"] +[1.195135, "o", "\u001b[?25ldesc / 19%\r"] +[1.205139, "o", "\u001b[?25ldesc / 19%\r"] +[1.246612, "o", "\u001b[?25ldesc - 20%\r"] +[1.255504, "o", "\u001b[?25ldesc - 20%\r"] +[1.298381, "o", "\u001b[?25ldesc - 21%\r"] +[1.305068, "o", "\u001b[?25ldesc - 21%\r"] +[1.349872, "o", "\u001b[?25ldesc - 22%\r"] +[1.355096, "o", "\u001b[?25ldesc - 22%\r"] +[1.401506, "o", "\u001b[?25ldesc \\ 23%\r"] +[1.40507, "o", "\u001b[?25ldesc \\ 23%\r"] +[1.453165, "o", "\u001b[?25ldesc \\ 24%\r"] +[1.454958, "o", "\u001b[?25ldesc \\ 24%\r"] +[1.504919, "o", "\u001b[?25ldesc | 25%\r"] +[1.515236, "o", "\u001b[?25ldesc | 25%\r"] +[1.555136, "o", "\u001b[?25ldesc | 25%\r"] +[1.566684, "o", "\u001b[?25ldesc | 26%\r"] +[1.605009, "o", "\u001b[?25ldesc | 26%\r"] +[1.618134, "o", "\u001b[?25ldesc | 27%\r"] +[1.655061, "o", "\u001b[?25ldesc / 27%\r"] +[1.669748, "o", "\u001b[?25ldesc / 28%\r"] +[1.704971, "o", "\u001b[?25ldesc / 28%\r"] +[1.722053, "o", "\u001b[?25ldesc / 29%\r"] +[1.754979, "o", "\u001b[?25ldesc / 29%\r"] +[1.773459, "o", "\u001b[?25ldesc - 30%\r"] +[1.805037, "o", "\u001b[?25ldesc - 30%\r"] +[1.824831, "o", "\u001b[?25ldesc - 31%\r"] +[1.855225, "o", "\u001b[?25ldesc - 31%\r"] +[1.876165, "o", "\u001b[?25ldesc - 32%\r"] +[1.9049, "o", "\u001b[?25ldesc \\ 32%\r"] +[1.927466, "o", "\u001b[?25ldesc \\ 33%\r"] +[1.955328, "o", "\u001b[?25ldesc \\ 33%\r"] +[1.978766, "o", "\u001b[?25ldesc \\ 34%\r"] +[2.004866, "o", "\u001b[?25ldesc \\ 34%\r"] +[2.030061, "o", "\u001b[?25ldesc | 35%\r"] +[2.054849, "o", "\u001b[?25ldesc | 35%\r"] +[2.08134, "o", "\u001b[?25ldesc | 36%\r"] +[2.104803, "o", "\u001b[?25ldesc | 36%\r"] +[2.132602, "o", "\u001b[?25ldesc | 37%\r"] +[2.154891, "o", "\u001b[?25ldesc / 37%\r"] +[2.183885, "o", "\u001b[?25ldesc / 38%\r"] +[2.204864, "o", "\u001b[?25ldesc / 38%\r"] +[2.235102, "o", "\u001b[?25ldesc / 39%\r"] +[2.254837, "o", "\u001b[?25ldesc / 39%\r"] +[2.286564, "o", "\u001b[?25ldesc - 40%\r"] +[2.304787, "o", "\u001b[?25ldesc - 40%\r"] +[2.338345, "o", "\u001b[?25ldesc - 41%\r"] +[2.355478, "o", "\u001b[?25ldesc - 41%\r"] +[2.390298, "o", "\u001b[?25ldesc - 42%\r"] +[2.404961, "o", "\u001b[?25ldesc - 42%\r"] +[2.441554, "o", "\u001b[?25ldesc \\ 43%\r"] +[2.454879, "o", "\u001b[?25ldesc \\ 43%\r"] +[2.492871, "o", "\u001b[?25ldesc \\ 44%\r"] +[2.504802, "o", "\u001b[?25ldesc \\ 44%\r"] +[2.544141, "o", "\u001b[?25ldesc | 45%\r"] +[2.556138, "o", "\u001b[?25ldesc | 45%\r"] +[2.595446, "o", "\u001b[?25ldesc | 46%\r"] +[2.605257, "o", "\u001b[?25ldesc | 46%\r"] +[2.646735, "o", "\u001b[?25ldesc | 47%\r"] +[2.655347, "o", "\u001b[?25ldesc | 47%\r"] +[2.697953, "o", "\u001b[?25ldesc / 48%\r"] +[2.705077, "o", "\u001b[?25ldesc / 48%\r"] +[2.749146, "o", "\u001b[?25ldesc / 49%\r"] +[2.755201, "o", "\u001b[?25ldesc / 49%\r"] +[2.800349, "o", "\u001b[?25ldesc - 50%\r"] +[2.805176, "o", "\u001b[?25ldesc - 50%\r"] +[2.851501, "o", "\u001b[?25ldesc - 51%\r"] +[2.855095, "o", "\u001b[?25ldesc - 51%\r"] +[2.902899, "o", "\u001b[?25ldesc - 52%\r"] +[2.905177, "o", "\u001b[?25ldesc - 52%\r"] +[2.954528, "o", "\u001b[?25ldesc \\ 53%\r"] +[2.964807, "o", "\u001b[?25ldesc \\ 53%\r"] +[3.004634, "o", "\u001b[?25ldesc \\ 53%\r"] +[3.00596, "o", "\u001b[?25ldesc \\ 54%\r"] +[3.054813, "o", "\u001b[?25ldesc \\ 54%\r"] +[3.057049, "o", "\u001b[?25ldesc | 55%\r"] +[3.104652, "o", "\u001b[?25ldesc | 55%\r"] +[3.108082, "o", "\u001b[?25ldesc | 56%\r"] +[3.154489, "o", "\u001b[?25ldesc | 56%\r"] +[3.159143, "o", "\u001b[?25ldesc | 57%\r"] +[3.204556, "o", "\u001b[?25ldesc / 57%\r"] +[3.210079, "o", "\u001b[?25ldesc / 58%\r"] +[3.254518, "o", "\u001b[?25ldesc / 58%\r"] +[3.261216, "o", "\u001b[?25ldesc / 59%\r"] +[3.304889, "o", "\u001b[?25ldesc / 59%\r"] +[3.312266, "o", "\u001b[?25ldesc / 60%\r"] +[3.354561, "o", "\u001b[?25ldesc - 60%\r"] +[3.363442, "o", "\u001b[?25ldesc - 61%\r"] +[3.404636, "o", "\u001b[?25ldesc - 61%\r"] +[3.414518, "o", "\u001b[?25ldesc - 62%\r"] +[3.454799, "o", "\u001b[?25ldesc \\ 62%\r"] +[3.465827, "o", "\u001b[?25ldesc \\ 63%\r"] +[3.504797, "o", "\u001b[?25ldesc \\ 63%\r"] +[3.516884, "o", "\u001b[?25ldesc \\ 64%\r"] +[3.554565, "o", "\u001b[?25ldesc \\ 64%\r"] +[3.567842, "o", "\u001b[?25ldesc \\ 65%\r"] +[3.604554, "o", "\u001b[?25ldesc | 65%\r"] +[3.618789, "o", "\u001b[?25ldesc | 66%\r"] +[3.654586, "o", "\u001b[?25ldesc | 66%\r"] +[3.669789, "o", "\u001b[?25ldesc | 67%\r"] +[3.704538, "o", "\u001b[?25ldesc | 67%\r"] +[3.721267, "o", "\u001b[?25ldesc / 68%\r"] +[3.754549, "o", "\u001b[?25ldesc / 68%\r"] +[3.772147, "o", "\u001b[?25ldesc / 69%\r"] +[3.804493, "o", "\u001b[?25ldesc / 69%\r"] +[3.82314, "o", "\u001b[?25ldesc / 70%\r"] +[3.854491, "o", "\u001b[?25ldesc - 70%\r"] +[3.8741, "o", "\u001b[?25ldesc - 71%\r"] +[3.904552, "o", "\u001b[?25ldesc - 71%\r"] +[3.925115, "o", "\u001b[?25ldesc - 72%\r"] +[3.954557, "o", "\u001b[?25ldesc - 72%\r"] +[3.976042, "o", "\u001b[?25ldesc \\ 73%\r"] +[4.004511, "o", "\u001b[?25ldesc \\ 73%\r"] +[4.026969, "o", "\u001b[?25ldesc \\ 74%\r"] +[4.054799, "o", "\u001b[?25ldesc \\ 74%\r"] +[4.07792, "o", "\u001b[?25ldesc \\ 75%\r"] +[4.104469, "o", "\u001b[?25ldesc | 75%\r"] +[4.128793, "o", "\u001b[?25ldesc | 76%\r"] +[4.154508, "o", "\u001b[?25ldesc | 76%\r"] +[4.179705, "o", "\u001b[?25ldesc | 77%\r"] +[4.204568, "o", "\u001b[?25ldesc | 77%\r"] +[4.230655, "o", "\u001b[?25ldesc / 78%\r"] +[4.254614, "o", "\u001b[?25ldesc / 78%\r"] +[4.281604, "o", "\u001b[?25ldesc / 79%\r"] +[4.304553, "o", "\u001b[?25ldesc / 79%\r"] +[4.332491, "o", "\u001b[?25ldesc / 80%\r"] +[4.354504, "o", "\u001b[?25ldesc / 80%\r"] +[4.383381, "o", "\u001b[?25ldesc - 81%\r"] +[4.404541, "o", "\u001b[?25ldesc - 81%\r"] +[4.434397, "o", "\u001b[?25ldesc - 82%\r"] +[4.454499, "o", "\u001b[?25ldesc - 82%\r"] +[4.485276, "o", "\u001b[?25ldesc - 83%\r"] +[4.504654, "o", "\u001b[?25ldesc \\ 83%\r"] +[4.536418, "o", "\u001b[?25ldesc \\ 84%\r"] +[4.554602, "o", "\u001b[?25ldesc \\ 84%\r"] +[4.587377, "o", "\u001b[?25ldesc \\ 85%\r"] +[4.604496, "o", "\u001b[?25ldesc \\ 85%\r"] +[4.638431, "o", "\u001b[?25ldesc | 86%\r"] +[4.654544, "o", "\u001b[?25ldesc | 86%\r"] +[4.689288, "o", "\u001b[?25ldesc | 87%\r"] +[4.704378, "o", "\u001b[?25ldesc | 87%\r"] +[4.740099, "o", "\u001b[?25ldesc | 88%\r"] +[4.754424, "o", "\u001b[?25ldesc / 88%\r"] +[4.79097, "o", "\u001b[?25ldesc / 89%\r"] +[4.804562, "o", "\u001b[?25ldesc / 89%\r"] +[4.841993, "o", "\u001b[?25ldesc / 90%\r"] +[4.854477, "o", "\u001b[?25ldesc / 90%\r"] +[4.89288, "o", "\u001b[?25ldesc - 91%\r"] +[4.904375, "o", "\u001b[?25ldesc - 91%\r"] +[4.943687, "o", "\u001b[?25ldesc - 92%\r"] +[4.954405, "o", "\u001b[?25ldesc - 92%\r"] +[4.995416, "o", "\u001b[?25ldesc - 93%\r"] +[5.004317, "o", "\u001b[?25ldesc - 93%\r"] +[5.046319, "o", "\u001b[?25ldesc \\ 94%\r"] +[5.054573, "o", "\u001b[?25ldesc \\ 94%\r"] +[5.097275, "o", "\u001b[?25ldesc \\ 95%\r"] +[5.104393, "o", "\u001b[?25ldesc \\ 95%\r"] +[5.14811, "o", "\u001b[?25ldesc | 96%\r"] +[5.154359, "o", "\u001b[?25ldesc | 96%\r"] +[5.198893, "o", "\u001b[?25ldesc | 97%\r"] +[5.204293, "o", "\u001b[?25ldesc | 97%\r"] +[5.249699, "o", "\u001b[?25ldesc | 98%\r"] +[5.254341, "o", "\u001b[?25ldesc | 98%\r"] +[5.300451, "o", "\u001b[?25ldesc / 99%\r"] +[5.304275, "o", "\u001b[?25ldesc / 99%\r"] +[5.351256, "o", "\u001b[?25ldesc / 100%\r"] +[5.354331, "o", "\u001b[?25ldesc / 100%\r"] +[5.43375, "o", "\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1l\u001b>\u001b[K"] diff --git a/spring-shell-docs/modules/ROOT/nav.adoc b/spring-shell-docs/modules/ROOT/nav.adoc index 19c8de928..714eacf40 100644 --- a/spring-shell-docs/modules/ROOT/nav.adoc +++ b/spring-shell-docs/modules/ROOT/nav.adoc @@ -66,6 +66,7 @@ *** xref:tui/views/list.adoc[] *** xref:tui/views/menu.adoc[] *** xref:tui/views/menubar.adoc[] +*** xref:tui/views/progress.adoc[] *** xref:tui/views/statusbar.adoc[] ** xref:tui/events/index.adoc[] *** xref:tui/events/eventloop.adoc[] diff --git a/spring-shell-docs/modules/ROOT/pages/tui/views/progress.adoc b/spring-shell-docs/modules/ROOT/pages/tui/views/progress.adoc new file mode 100644 index 000000000..a1d2c2429 --- /dev/null +++ b/spring-shell-docs/modules/ROOT/pages/tui/views/progress.adoc @@ -0,0 +1,81 @@ +[[tui-views-progress]] += ProgressView +:page-section-summary-toc: 1 + +ifndef::snippets[:snippets: ../../../../../src/test/java/org/springframework/shell/docs] + +_ProgressView_ is a base implementation providing functionality to draw a progress info. +Inherits xref:tui/views/box.adoc[]. + +_ProgressView_ draws its content using concepts described below + +* _ProgressState_ contains various info about a runtime state +** _tickStart_ Lower bound of tick value +** _tickEnd_ Upper bound of tick value +** _tickValue_ Current tick value +** _running_ Running state, either true or false +** _startTime_ Start time in millis when progress was started +** _updateTime_ Last known time in millis when progress has updated +* _ProgressContext_ is a context used with _ProgressViewItem_ +** _description_ The description given to progress +** _state_ The _ProgressState_ +** _view_ The owning _ProgressView_ +** _spinner_ The _Spinner_ representation used with _ProgressView_ +** Other methods to help with item drawing +* _ProgressViewItem_ is a representation of a cell used in _ProgressView_ + +There are few build-in items namely `text`, `spinner` and `percent`. + +Default _ProgressView_ gives you `text`, `spinner` and `percent`. + +[source, java, indent=0] +---- +include::{snippets}/ProgressViewSnippets.java[tag=default] +---- + +And looks like: + +[asciinema,rows=1] +---- +include::example$tui-progress-1.cast[] +---- + +== Customisation + +Here's some examples for various customisations: + +[source, java, indent=0] +---- +include::{snippets}/ProgressViewSnippets.java[tag=allmixedalignandsize] +---- + +Align `text` and `spinner` to left and give them less space. Align `percent` to right +and give it remaining space. + +[asciinema,rows=1] +---- +include::example$tui-progress-2.cast[] +---- + +== Default Bindings +Does not have any default bindings. + +== Events + +Events are sent depending on a state of a progress. + +.ProgressView Events +|=== +|Event |Description + +|ProgressViewStartEvent +|Progress tracking has started + +|ProgressViewEndEvent +|Progress tracking has stopped + +|ProgressViewStateChangeEvent +|Progress tracking state has changed + + +|=== diff --git a/spring-shell-docs/src/test/java/org/springframework/shell/docs/ProgressViewSnippets.java b/spring-shell-docs/src/test/java/org/springframework/shell/docs/ProgressViewSnippets.java new file mode 100644 index 000000000..5ba49c0d2 --- /dev/null +++ b/spring-shell-docs/src/test/java/org/springframework/shell/docs/ProgressViewSnippets.java @@ -0,0 +1,45 @@ +/* + * Copyright 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.shell.docs; + +import org.springframework.shell.component.view.control.ProgressView; +import org.springframework.shell.component.view.control.ProgressView.ProgressViewItem; +import org.springframework.shell.geom.HorizontalAlign; + +public class ProgressViewSnippets { + + class Dump1 { + + void dump1() { + // tag::default[] + ProgressView view = new ProgressView(); + view.start(); + // end::default[] + } + + void dump2() { + // tag::allmixedalignandsize[] + ProgressView view = new ProgressView( + ProgressViewItem.ofText(10, HorizontalAlign.LEFT), + ProgressViewItem.ofSpinner(3, HorizontalAlign.LEFT), + ProgressViewItem.ofPercent(0, HorizontalAlign.RIGHT)); + view.start(); + // end::allmixedalignandsize[] + } + + } + +}