User:Stux/sandbox2

From Homestar Runner Wiki

(Difference between revisions)
Jump to: navigation, search
(test new changes to tally template)
(โ†’Testing Tally Templates: also track grand totals (the intended purpose of this change))
Line 114: Line 114:
{{hresetcount|sample_grand_total|tally=1}}
{{hresetcount|sample_grand_total|tally=1}}
 +
<!--
* {{tally time|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{tally time|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{tally time|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}
* {{tally time|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}
 +
-->
* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}
* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}
 +
 +
* Grand Total time: {{display time|sample_grand_total|seconds}} seconds ({{display time|sample_grand_total|total}} in hh:mm:ss) {{dot}} Average: {{display time|sample_grand_total|average_seconds}} seconds ({{display time|sample_grand_total|average}} in hh:mm:ss) for {{display time|sample_grand_total|count}} entries
</pre>
</pre>
Line 135: Line 139:
{{hresetcount|sample_grand_total|tally=1}}
{{hresetcount|sample_grand_total|tally=1}}
 +
<!--
* {{tally time|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{tally time|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{tally time|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}
* {{tally time|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}
 +
-->
* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}
* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}
 +
* Grand Total time: {{display time|sample_grand_total|seconds}} seconds ({{display time|sample_grand_total|total}} in hh:mm:ss) {{dot}} Average: {{display time|sample_grand_total|average_seconds}} seconds ({{display time|sample_grand_total|average}} in hh:mm:ss) for {{display time|sample_grand_total|count}} entries
=== First Try ===
=== First Try ===

Revision as of 19:48, 3 January 2025

Contents

Testing time

Testing Tally Templates

{{hresetcount|sample|tally=1}}

* {{tally time|sample|60}}
* {{tally time|sample|33}}
* {{tally time|sample|72}}
* {{tally time|sample|192}}

* Total time: {{display time|sample|seconds}} seconds ({{display time|sample|total}} in hh:mm:ss) {{dot}} Average: {{display time|sample|average_seconds}} seconds ({{display time|sample|average}} in hh:mm:ss) for {{display time|sample|count}} entries
* Compare to the original mechanism {{--}} Total time: {{#count:sample_tally|0}} seconds / {{format seconds|{{#count:sample_tally|0}}}} for {{#count:sample_count|0}} entries
  • Yields:


  • 60 1:00 1
  • 93 0:33 2
  • 165 1:12 3
  • 357 3:12 4
  • Total time: 357 seconds (5:57 in hh:mm:ss)  · Average: 89 seconds (1:29 in hh:mm:ss) for 4 entries
  • Compare to the original mechanism — Total time: 357 seconds / 5:57 for 4 entries


* {{display time|sample|seconds|offset_seconds=3}} {{--}} {{display time|sample|total|offset_seconds=3}}
* {{display time|sample|seconds|offset_seconds=43}} {{--}} {{display time|sample|total|offset_seconds=43}}
* {{display time|sample|seconds|offset_seconds=143}} {{--}} {{display time|sample|total|offset_seconds=143}}

* Add 1 to count: {{display time|sample|count|offset_count=1}}
* Remove 1 from count: {{display time|sample|count|offset_count=-1}}

* {{display time|sample|average_seconds|offset_seconds=3|offset_count=1}} {{--}} {{display time|sample|average|offset_seconds=3|offset_count=1}}
* {{display time|sample|average_seconds|offset_seconds=43|offset_count=1}} {{--}} {{display time|sample|average|offset_seconds=43|offset_count=1}}
* {{display time|sample|average_seconds|offset_seconds=143|offset_count=1}} {{--}} {{display time|sample|average|offset_seconds=143|offset_count=1}}
* {{display time|sample|average_seconds|offset_seconds=-60|offset_count=-1}} {{--}} {{display time|sample|average|offset_seconds=-60|offset_count=-1}}

  • Yields:
  • 360 — 6:00
  • 400 — 6:40
  • 500 — 8:20
  • Add 1 to count: 5
  • Remove 1 from count: 3
  • 72 — 1:12
  • 80 — 1:20
  • 100 — 1:40
  • 99 — 1:39



Local Sandbox Tests:

* {{:User:Stux/template-sandbox2|sample|seconds|offset_seconds=3}} {{--}} {{:User:Stux/template-sandbox2|sample|total|offset_seconds=3}}
* {{:User:Stux/template-sandbox2|sample|seconds|offset_seconds=43}} {{--}} {{:User:Stux/template-sandbox2|sample|total|offset_seconds=43}}
* {{:User:Stux/template-sandbox2|sample|seconds|offset_seconds=143}} {{--}} {{:User:Stux/template-sandbox2|sample|total|offset_seconds=143}}

* Add 1 to count: {{:User:Stux/template-sandbox2|sample|count|offset_count=1}}
* Remove 1 from count: {{:User:Stux/template-sandbox2|sample|count|offset_count=-1}}

* {{:User:Stux/template-sandbox2|sample|average_seconds|offset_seconds=3|offset_count=1}} {{--}} {{:User:Stux/template-sandbox2|sample|average|offset_seconds=3|offset_count=1}}
* {{:User:Stux/template-sandbox2|sample|average_seconds|offset_seconds=43|offset_count=1}} {{--}} {{:User:Stux/template-sandbox2|sample|average|offset_seconds=43|offset_count=1}}
* {{:User:Stux/template-sandbox2|sample|average_seconds|offset_seconds=143|offset_count=1}} {{--}} {{:User:Stux/template-sandbox2|sample|average|offset_seconds=143|offset_count=1}}
* {{:User:Stux/template-sandbox2|sample|average_seconds|offset_seconds=-60|offset_count=-1}} {{--}} {{:User:Stux/template-sandbox2|sample|average|offset_seconds=-60|offset_count=-1}}

Weird coincidence:
* {{:User:Stux/template-sandbox2|sample|average_seconds|offset_seconds=60|offset_count=-1}} {{--}} {{:User:Stux/template-sandbox2|sample|average|offset_seconds=-60|offset_count=-1}}



Tally Time Count Offset:

{{hresetcount|sample2|tally=1}}

* {{tally time|sample2|160}}
* {{tally time|sample2|133}}
* {{tally time|sample2|172}}
* {{tally time|sample2|292}}

* Total time: {{display time|sample2|seconds}} seconds ({{display time|sample2|total}} in hh:mm:ss) {{dot}} Average: {{display time|sample2|average_seconds}} seconds ({{display time|sample2|average}} in hh:mm:ss) for {{display time|sample2|count}} entries

{{hresetcount|sample_grand_total|tally=1}}

<!--
* {{tally time|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{tally time|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}
-->

* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample|seconds}}|offset_count={{display time|sample|count}}}}
* {{:User:Stux/template-sandbox2|sample_grand_total|{{display time|sample2|seconds}}|offset_count={{display time|sample2|count}}}}

* Grand Total time: {{display time|sample_grand_total|seconds}} seconds ({{display time|sample_grand_total|total}} in hh:mm:ss) {{dot}} Average: {{display time|sample_grand_total|average_seconds}} seconds ({{display time|sample_grand_total|average}} in hh:mm:ss) for {{display time|sample_grand_total|count}} entries

Yields:


  • 160 2:40 1
  • 293 2:13 2
  • 465 2:52 3
  • 757 4:52 4
  • Total time: 757 seconds (12:37 in hh:mm:ss)  · Average: 189 seconds (3:09 in hh:mm:ss) for 4 entries



  • Grand Total time: 0 seconds (0:00 in hh:mm:ss)  · Average: Division by zero seconds (Expression error: Unexpected < operatorExpression error: Unexpected < operator:Expression error: Unexpected < operatorExpression error: Unexpected < operator in hh:mm:ss) for 0 entries

First Try

{{#time: z | 20071031}}

Yields: 303


  • 121 seconds?
{{#time: i:s | 121}}

Yields: Error: invalid time

  • So time doesn't support converting seconds to "hh:mm:ss" format, unfortunately. We gotta do it manually using Help:ParserFunctions##expr:, but now we have two more problems:
    • There is no modulo operation, and we can't use "round" to easily emulate it.
    • So, here goes nothing:
{{#expr: 121/60}} <br/><!-- convert 121 seconds to minutes -->
{{#expr: 119/60}} <br/><!-- convert 119 seconds to minutes -->
{{#expr: 121/60 round 0}} <br/><!-- round 121 seconds to minutes -->
{{#expr: 119/60 round 0}} <br/><!-- round 119 seconds to minutes -->

2.0166666666667
1.9833333333333
2
2

  • Fortunately, we should be able to use the above logic for IF statements. Unfortunately, this crazy logic may time out...
  • But wait! Turns out there is module after all:
{{#expr: 121%60}} <br/><!-- confirm there is no modulo symbol -->
{{#expr: 121 mod 60}} <br/><!-- confirm there is a modulo operator -->
{{#expr: 119 mod 60}} <br/><!-- confirm there is a modulo operator -->

Expression error: Unrecognised punctuation character "%"
1
59

  • So we can now "easily" convert seconds to hh:mm:ss:
{{#expr: (121-(121 mod 60))/60}}:{{#expr:121 mod 60}} <br/> <!-- 121 seconds to mm:ss -->
{{#expr: (119-(119 mod 60))/60}}:{{#expr:119 mod 60}} <br/> <!-- 119 seconds to mm:ss -->

2:1
1:59

  • Okay, so this doesn't do zero padding :-/


  • For now let's do more complicated examples (with hand-coded zero-padding):
{{#ifexpr: (3601>=3600)|{{#expr: (3601-(3601 mod 3600))/3600}}:|}}{{#ifexpr: (((3601-(3601 mod 60))/60) mod 60)<10|0|}}{{#expr: ((3601-(3601 mod 60))/60) mod 60}}:{{#ifexpr: (3601 mod 60)<10|0|}}{{#expr:3601 mod 60}} <br/> 
<!-- 3601 seconds to hh:mm:ss -->
{{#ifexpr: (3599>=3600)|{{#expr: (3599-(3599 mod 3600))/3600}}:|}}{{#ifexpr: (((3599-(3599 mod 60))/60) mod 60)<10|0|}}{{#expr: ((3599-(3599 mod 60))/60) mod 60}}:{{#ifexpr: (3599 mod 60)<10|0|}}{{#expr:3599 mod 60}} <br/> 
<!-- 3599 seconds to hh:mm:ss -->
{{#ifexpr: (7199>=3600)|{{#expr: (7199-(7199 mod 3600))/3600}}:|}}{{#ifexpr: (((7199-(7199 mod 60))/60) mod 60)<10|0|}}{{#expr: ((7199-(7199 mod 60))/60) mod 60}}:{{#ifexpr: (7199 mod 60)<10|0|}}{{#expr:7199 mod 60}} <br/> 
<!-- 7199 seconds to hh:mm:ss -->
{{#ifexpr: (90001>=3600)|{{#expr: (90001-(90001 mod 3600))/3600}}:|}}{{#ifexpr: (((90001-(90001 mod 60))/60) mod 60<10)|0|}}{{#expr: ((90001-(90001 mod 60))/60) mod 60}}:{{#ifexpr: (90001 mod 60)<10|0|}}{{#expr:90001 mod 60}} <br/> 
<!-- 90001 seconds to hh:mm:ss -->

1:00:01
59:59
1:59:59
25:00:01

  • This will become a new template:
{{#ifexpr: ({{{1}}}>=3600)|{{#expr: ({{{1}}}-({{{1}}} mod 3600))/3600}}:|}}{{#ifexpr: ((({{{1}}}-({{{1}}} mod 60))/60) mod 60)<10|0|}}{{#expr: (({{{1}}}-({{{1}}} mod 60))/60) mod 60}}:{{#ifexpr: ({{{1}}} mod 60)<10|0|}}{{#expr:{{{1}}} mod 60}}
  • With comments:
{{#ifexpr: ({{{1}}}>=3600)|{{#expr: ({{{1}}}-({{{1}}} mod 3600))/3600}}:|}}<!-- /* Calculate the hours and only display more than 0 hours. */
-->{{#ifexpr: ((({{{1}}}-({{{1}}} mod 60))/60) mod 60)<10|0|}}<!-- /* Calculate the minutes and pad with leading zero if less than 10. */
-->{{#expr: (({{{1}}}-({{{1}}} mod 60))/60) mod 60}}:<!-- /* Calculate the minutes. */
-->{{#ifexpr: ({{{1}}} mod 60)<10|0|}}<!-- /* Calculate the seconds and pad with leading zero if less than 10. */
-->{{#expr:{{{1}}} mod 60}}<!-- /* Calculate the seconds. */ -->


  • Now let's package this up in a counter:
    • Note that {{hresetcount}} should facilitate resetting the counter to 0. (It must be set to 1, increment 1.)
    • Then we {{#count:tally}} by the number of seconds. Since it's an invisible counter, we use {{hcount}}.
{{hcount|{{{1}}}|{{{2}}}}}{{format seconds|{{{2}}}}}

Dangeresque Template



Personal tools