Last active
February 17, 2022 21:58
-
-
Save moukrea/1b0bb09ab957c16e54279ae2badf1f24 to your computer and use it in GitHub Desktop.
Pujie Black custom complications
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * ############################################## | |
| * COMMON | |
| * ############################################## | |
| * @info All layers need this piece of code, except "Full circle". For shadow, please set "is_shadow" to true | |
| */ | |
| // Stored complication values in variables for debugging purposes | |
| var value_now = [cvalue]; | |
| var value_min = [cmin] <= value_now ? [cmin] : value_now; | |
| var value_max = [cmax]; | |
| // Convert complication values in percentages | |
| // /!\ Do not change the scale as it would break logic in bellow steps | |
| var percent_min = 0; | |
| var percent_max = 100; | |
| var percent_now = ( (value_now - value_min) / (value_max - value_min) ) * (percent_max - percent_min) + percent_min; | |
| // Only to be set to true in Shadow layer | |
| var is_shadow = false; | |
| // Special case when value is higher than maximum expected value (over-achievement) | |
| if (percent_now > percent_max || (is_shadow == true && percent_now > ( percent_max - 10 ))) { | |
| var percent_over = percent_now - percent_max; | |
| } | |
| // Over-over-achiever edge case | |
| if (typeof percent_over !== 'undefined' && (percent_over > percent_max || (is_shadow == true && percent_over > ( percent_max - 10 )))) { | |
| percent_over = percent_now - percent_max; | |
| do { | |
| percent_over = percent_over - percent_max; | |
| } while (percent_over > percent_max && percent_over - percent_max > 0) | |
| } | |
| /** | |
| * ############################################## | |
| * LAYER: First half | |
| * ############################################## | |
| * @type Arc layer | |
| * @startAngle 270 | |
| * @sweepAngle Automated | |
| * @partAngle 300,00 | |
| * @gapAngle 2,000 | |
| * @strokeStyle #1 | |
| */ | |
| // First half visibility | |
| return percent_now >= 0 && percent_now <= 150 ? true : false; | |
| // First half processing | |
| if (percent_now > percent_max) { | |
| return 180; | |
| } else { | |
| return ( percent_now / percent_max ) * 360; | |
| } | |
| /** | |
| * ############################################## | |
| * LAYER: Second half | |
| * ############################################## | |
| * @type Arc layer | |
| * @startAngle 90 | |
| * @sweepAngle Automated | |
| * @partAngle 300,00 | |
| * @gapAngle 2,000 | |
| * @strokeStyle #1 | |
| */ | |
| // Second half visibility | |
| if (percent_now > percent_max) { | |
| return percent_over >= 50 && percent_over <= 100 ? true : false; | |
| } else { | |
| return percent_now >= 50 && percent_now <= 100 ? true : false; | |
| } | |
| // Second half processing | |
| if (percent_now > percent_max) { | |
| return ( (percent_over / percent_max) * 360 ) - 180; | |
| } else { | |
| return ( (percent_now / percent_max) * 360 ) - 180; | |
| } | |
| /** | |
| * ############################################## | |
| * LAYER: First half +X | |
| * ############################################## | |
| * @type Arc layer | |
| * @startAngle 270 | |
| * @sweepAngle Automated | |
| * @partAngle 300,00 | |
| * @gapAngle 2,000 | |
| * @strokeStyle #1 | |
| */ | |
| // First half +X visibility | |
| if (percent_now > percent_max) { | |
| return percent_over <= 50 ? true : false; | |
| } else { | |
| return false; | |
| } | |
| // First half +X processing | |
| if (typeof percent_over != 'undefined') { | |
| return ( percent_over / percent_max ) * 360; | |
| } else { | |
| return 0; | |
| } | |
| /** | |
| * ############################################## | |
| * LAYER: Shadow | |
| * ############################################## | |
| * @info This layer need the variable "is_shadow" from common code to be sete to true | |
| * | |
| * @type Arc layer | |
| * @startAngle Automated | |
| * @sweepAngle 0,100 | |
| * @partAngle 300,00 | |
| * @gapAngle 2,000 | |
| * @strokeStyle #1 | |
| */ | |
| // Shadow visibility | |
| return percent_now + 2 > percent_max ? true : false; | |
| // Shadow processing (Start angle) | |
| if (typeof percent_over != 'undefined') { | |
| return ( (percent_over / percent_max) * 360 ) - 88; | |
| } else { | |
| return 0; | |
| } | |
| /** | |
| * ############################################## | |
| * LAYER: Full circle | |
| * ############################################## | |
| * @info This layer doesn't need any of the common code | |
| * | |
| * @type Arc layer | |
| * @startAngle 270 | |
| * @sweepAngle 360 | |
| * @partAngle 300,00 | |
| * @gapAngle 2,000 | |
| * @strokeStyle #1 | |
| */ | |
| // Full circle visibility | |
| return [cvalue] > [cmax]; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment