Useful tags, tips, tricks etc. cheatsheet

Hi gang.

Having migrated after 20+ years with Apple to Samsung A34 + Galaxy Watch 6 Classic I was thrilled to know of WFS as a keen amateur designer. Over the last 4 months I have self-taught, and also with the help of many of you via this community, managed to create some pretty awesome faces with various levels of interactivity, animation etc.

Knowing what I know now, I wish there was a cheatsheet or list of super useful things available to reference when creating faces. To this end, I have listed below a number of things that may be of use to some of you guys out there or may inspire you to try something different. It would be great if you could contribute to this thread in the comments anything you think may be good for others to know, and please do feel free to add as you learn so we are all making the most out of WFS:

Date +(plus) 1 (also catering for leap years and moving to 1 when date is the last of the month): (([MON]==1)([DAY_1_31]==31)?1:(([YEAR]%4)==0)([MON]==2)([DAY_1_31]==29)?1:(([YEAR]%4)!=0)([MON]==2)([DAY_1_31]==28)?1:([MON]==3)([DAY_1_31]==31)?1:([MON]==4)([DAY_1_31]==30)?1:([MON]==5)([DAY_1_31]==31)?1:([MON]==6)([DAY_1_31]==30)?1:([MON]==7)([DAY_1_31]==31)?1:([MON]==8)([DAY_1_31]==31)?1:([MON]==9)([DAY_1_31]==30)?1:([MON]==10)([DAY_1_31]==31)?1:([MON]==11)([DAY_1_31]==30)?1:([MON]==12)*([DAY_1_31]==31)?1:[DAY_1_31]+1)

Date -(minus) 1 (again catering for leap years and ensuring the correct date on the 1st of the month), thank you @Knightwing : (([DAY_1_31])-1==0? ((([DAY_1_31]-1)==0)*((([MON]-1)==0)31))+((([DAY_1_31]-1)==0)((([MON]-1)==1)31))+((([YEAR]%4)==0? (([DAY_1_31]-1)==0)((([MON]-1)==2)29):((([DAY_1_31]-1)==0)((([MON]-1)==2)28))))+((([DAY_1_31]-1)==0)((([MON]-1)==3)31))+((([DAY_1_31]-1)==0)((([MON]-1)==4)30))+((([DAY_1_31]-1)==0)((([MON]-1)==5)31))+((([DAY_1_31]-1)==0)((([MON]-1)==6)30))+((([DAY_1_31]-1)==0)((([MON]-1)==7)31))+((([DAY_1_31]-1)==0)((([MON]-1)==8)31))+((([DAY_1_31]-1)==0)((([MON]-1)==9)30))+((([DAY_1_31]-1)==0)((([MON]-1)==10)31))+((([DAY_1_31]-1)==0)((([MON]-1)==11)30))+((([DAY_1_31]-1)==0)((([MON]-1)==12)*31)):[DAY_1_31]-1)

Rotate month hand (replace values with where you want it to rotate to): ([MON] == 1)? 150: ([MON] == 2)? 171: ([MON] == 3)? 192: ([MON] == 4)? 213: ([MON] == 5)? 235: ([MON] == 6)? 255: ([MON] == 7)? 276: ([MON] == 8)? 297: ([MON] == 9)? 318: ([MON] == 10)? 339: ([MON] == 11)? 360: ([MON] == 12)? 360: 0

Comma for thousands of steps e.g. 2,500 instead of 2500: (numberFormat(β€œ0”, ([SC]/1000))),(numberFormat(β€œ000”,[SC]%1000))

Flashing colon between hours and minutes (add : as its own layer and add this to opacity % after setting initially to 0): [SEC_MSEC]%1<0.5?100:0 for every half second, [SEC]%2<0.5?100:0 to show every other second

Day of week show as single letter (or you can change the copy in " to whatever you want, useful where space is tight wherever you want to display it): (([DAY_WEEK]==1)? β€œS”: ([DAY_WEEK]==2)? β€œM”: ([DAY_WEEK]==3)? β€œT”: ([DAY_WEEK]==4)? β€œW”: ([DAY_WEEK]==5)? β€œT”: ([DAY_WEEK]==6)? β€œF”: β€œS”)

Rotate anything once in a minute (add to rotate angle box): (([SEC_MSEC]*360)/60)

Go careful getting copy curve and adding an action to it, see below it adds a whole circular layer to it meaning if it is a front most layer clicking anywhere in the circle uses that action, found this out the hard way when working out why I couldn’t press alarm to add an alarm. Advice, if using make sure all the other layers are in front of it:

Previous advice given a number of times on other threads, be really careful with the complication layouts you use to ensure a. it follows the one you want, and b. to remove/hide all other layouts to ensure you get the result you want on the watch itself. A fair bit of trial and error on this and make a note of which one is what you want ready for the next time you use it.

In project settings, data, ID_Label you can add a default value which is what the watch face will be named in the wearable app down in the download section, remember to update this with each new project you see fit otherwise all your faces will have the same name in the wearable app.

I have turned the default notification symbol (little orange dot on left) off in settings and on all watch faces have a layer with a β€˜!’ icon that only shows when I have a notification, that way I can put it where I want.

Shout out @amoledwatchfaces their phone battery complication/app is super useful.

Name and re-name/group layers, it is easy to get lost making adjustments if you have copy of copy of copy of the same layers. Also grouping and naming allows you to move a group in one go rather try and align each item individually.

That’s it off the top of my head, I’ll continue to add as I go, it would be great if you could contribute and tag anyone you think would have some nuggets of info that would be useful to the community.

Thanks.

Joe.

1 Like

To add simple caculation for days in a specific months

For shorter code

Remember month 1

Is 31 days

Month 3 to 7 inclusive
If the month number is %2 (even numbers) == 0 its 30 days
Else 31 days

For months 8 to 12 inclusive
%2 == 0 (even numbers)
Its 31 days else 30 days

And for month 2 leap years is 29 days else 28 days

Hi @jsmith88 , your preview shows 00 instead of 01?

Formula still needs fixing?

That is seconds, and a different face than I have been working on from the other thread, thank you though :slight_smile:

Formula to -1 to date

(([DAY_1_31])-1==0? ((([DAY_1_31]-1)==0)*((([MON]-1)==0)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==1)*31))+((([YEAR]%4)==0? (([DAY_1_31]-1)==0)*((([MON]-1)==2)*29):((([DAY_1_31]-1)==0)*((([MON]-1)==2)*28))))+((([DAY_1_31]-1)==0)*((([MON]-1)==3)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==4)*30))+((([DAY_1_31]-1)==0)*((([MON]-1)==5)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==6)*30))+((([DAY_1_31]-1)==0)*((([MON]-1)==7)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==8)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==9)*30))+((([DAY_1_31]-1)==0)*((([MON]-1)==10)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==11)*30))+((([DAY_1_31]-1)==0)*((([MON]-1)==12)*31)):[DAY_1_31]-1)

For easy copy and paste

(([DAY_1_31])-1==0? ((([DAY_1_31]-1)==0)*((([MON]-1)==0)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==1)*31))+((([YEAR]%4)==0? (([DAY_1_31]-1)==0)*((([MON]-1)==2)*29):((([DAY_1_31]-1)==0)*((([MON]-1)==2)*28))))+((([DAY_1_31]-1)==0)*((([MON]-1)==3)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==4)*30))+((([DAY_1_31]-1)==0)*((([MON]-1)==5)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==6)*30))+((([DAY_1_31]-1)==0)*((([MON]-1)==7)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==8)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==9)*30))+((([DAY_1_31]-1)==0)*((([MON]-1)==10)*31))+((([DAY_1_31]-1)==0)*((([MON]-1)==11)*30))+((([DAY_1_31]-1)==0)*((([MON]-1)==12)*31)):[DAY_1_31]-1)

Formula to + 1 to date

(([MON]==1)*([DAY_1_31]==31)?1:(([YEAR]%4)==0)*([MON]==2)*([DAY_1_31]==29)?1:(([YEAR]%4)!=0)*([MON]==2)*([DAY_1_31]==28)?1:([MON]==3)*([DAY_1_31]==31)?1:([MON]==4)*([DAY_1_31]==30)?1:([MON]==5)*([DAY_1_31]==31)?1:([MON]==6)*([DAY_1_31]==30)?1:([MON]==7)*([DAY_1_31]==31)?1:([MON]==8)*([DAY_1_31]==31)?1:([MON]==9)*([DAY_1_31]==30)?1:([MON]==10)*([DAY_1_31]==31)?1:([MON]==11)*([DAY_1_31]==30)?1:([MON]==12)*([DAY_1_31]==31)?1:[DAY_1_31]+1)

For easy copy and paste

(([MON]==1)*([DAY_1_31]==31)?1:(([YEAR]%4)==0)*([MON]==2)*([DAY_1_31]==29)?1:(([YEAR]%4)!=0)*([MON]==2)*([DAY_1_31]==28)?1:([MON]==3)*([DAY_1_31]==31)?1:([MON]==4)*([DAY_1_31]==30)?1:([MON]==5)*([DAY_1_31]==31)?1:([MON]==6)*([DAY_1_31]==30)?1:([MON]==7)*([DAY_1_31]==31)?1:([MON]==8)*([DAY_1_31]==31)?1:([MON]==9)*([DAY_1_31]==30)?1:([MON]==10)*([DAY_1_31]==31)?1:([MON]==11)*([DAY_1_31]==30)?1:([MON]==12)*([DAY_1_31]==31)?1:[DAY_1_31]+1)

Reformated the formula to display * properly

1 Like

It might be a better to create Individual Guide or Tutorial topics then add them by links in the cheat sheet like below.
That way discussion about them is in that guide and not in the listing. This cheat sheet is already hard to follow. :slight_smile:

Ron
Samsung Developer Relations

1 Like

A guide I did for the sub -1 from date and +1 from date.