Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

UX: Workspace Schedule Form is too top-down restricted #1958

Closed
Assignees
greyscaled
Labels
siteArea: frontend dashboard
@greyscaled

Description

@greyscaled

User Story 👥

A real user story (thanks@ammario 🎉):

Allow setting "Days of Week" when "Start time" is unset
This one confused me. We shouldn't assume that users will fill out the form in top to bottom order.

Implementation Notes

Under the hood, the form has logic like:

disabled={form.isSubmitting||isLoading||!form.values.startTime}

At the parent level, whereby the form values are transformed into an API request, nothing should change:

exportconstformValuesToAutoStartRequest=(
values:WorkspaceScheduleFormValues,
):TypesGen.UpdateWorkspaceAutostartRequest=>{
if(!values.startTime){
return{
schedule:"",
}
}
const[HH,mm]=values.startTime.split(":")
// Note: Space after CRON_TZ if timezone is defined
constpreparedTZ=values.timezone ?`CRON_TZ=${values.timezone} ` :""
constmakeCronString=(dow:string)=>`${preparedTZ}${mm}${HH} * *${dow}`
constdays=[
values.sunday,
values.monday,
values.tuesday,
values.wednesday,
values.thursday,
values.friday,
values.saturday,
]
constisEveryDay=days.every((day)=>day)
constisMonThroughFri=
!values.sunday&&
values.monday&&
values.tuesday&&
values.wednesday&&
values.thursday&&
values.friday&&
!values.saturday&&
!values.sunday
// Handle special cases, falling through to comma-separation
if(isEveryDay){
return{
schedule:makeCronString("*"),
}
}elseif(isMonThroughFri){
return{
schedule:makeCronString("1-5"),
}
}else{
constdow=days.reduce((previous,current,idx)=>{
if(!current){
returnprevious
}else{
constprefix=previous ?"," :""
returnprevious+prefix+idx
}
},"")
return{
schedule:makeCronString(dow),
}
}
}
exportconstformValuesToTTLRequest=(values:WorkspaceScheduleFormValues):TypesGen.UpdateWorkspaceTTLRequest=>{
return{
// minutes to nanoseconds
ttl:values.ttl ?values.ttl*60*60*1000*1_000_000 :undefined,
}
}

Metadata

Metadata

Assignees

Labels

siteArea: frontend dashboard

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions


    [8]ページ先頭

    ©2009-2025 Movatter.jp