Gantt ve Scheduler için AllowAdding vs...

This commit is contained in:
Sedat Öztürk 2025-12-02 23:54:56 +03:00
parent aa3a3c7684
commit 0420f1a3e5
8 changed files with 556 additions and 376 deletions

View file

@ -63,7 +63,22 @@ public class GanttOptionDto
/// İlerleme ifadesi (örn: "%50")
/// </summary>
public string ProgressExpr { get; set; }
/// <summary>
/// Düzenlemeye izin verilsin mi
/// </summary>
public bool AllowEditing { get; set; } = false;
/// <summary>
/// Task eklemeye izin verilsin mi
/// </summary>
public bool AllowTaskAdding { get; set; } = false;
/// <summary>
/// Task güncellemeye izin verilsin mi
/// </summary>
public bool AllowTaskUpdating { get; set; } = false;
/// <summary>
/// Task silmeye izin verilsin mi
/// </summary>
public bool AllowTaskDeleting { get; set; } = false;
/// <summary>
/// Bağlantılar için kullanılan field adı (örn: "predecessors")
/// </summary>

View file

@ -45,7 +45,7 @@ public class SchedulerOptionDto
/// Tüm gün panelini gösterme durumu
/// </summary>
public bool ShowAllDayPanel { get; set; } = true;
/// <summary>
/// <summary>
/// Hücre süresi (dakika cinsinden, örn: 30)
/// </summary>
public int CellDuration { get; set; } = 30;
@ -65,4 +65,16 @@ public class SchedulerOptionDto
/// Etkinliklerin sürüklenip bırakılmasına izin verilip verilmediğini belirtir
/// </summary>
public bool AllowDragging { get; set; } = false;
/// <summary>
/// Etkinlik eklemeye izin verilip verilmediğini belirtir
/// </summary>
public bool AllowDeleting { get; set; } = false;
/// <summary>
/// Etkinlik güncellemeye izin verilip verilmediğini belirtir
/// </summary>
public bool AllowUpdating { get; set; } = false;
/// <summary>
/// Etkinlik eklemeye izin verilip verilmediğini belirtir
/// </summary>
public bool AllowAdding { get; set; } = false;
}

View file

@ -4651,6 +4651,30 @@
"en": "Auto Expand All",
"tr": "Otomatik Tümünü Genişlet"
},
{
"resourceName": "Platform",
"key": "ListForms.ListFormEdit.AllowEditing",
"en": "Allow Editing",
"tr": "Düzenlemeye İzin Ver"
},
{
"resourceName": "Platform",
"key": "ListForms.ListFormEdit.AllowTaskAdding",
"en": "Allow Task Adding",
"tr": "Görev Ekleme İzni"
},
{
"resourceName": "Platform",
"key": "ListForms.ListFormEdit.AllowTaskDeleting",
"en": "Allow Task Deleting",
"tr": "Görev Silme İzni"
},
{
"resourceName": "Platform",
"key": "ListForms.ListFormEdit.AllowTaskUpdating",
"en": "Allow Task Updating",
"tr": "Görev Güncelleme İzni"
},
{
"resourceName": "Platform",
"key": "ListForms.ListFormEdit.AllowDependencyAdding",
@ -10165,6 +10189,24 @@
"tr": "Sürüklemeye İzin Ver",
"en": "Allow Dragging"
},
{
"resourceName": "Platform",
"key": "ListForms.SchedulerOptions.AllowAdding",
"tr": "Ekleme İzin Ver",
"en": "Allow Adding"
},
{
"resourceName": "Platform",
"key": "ListForms.SchedulerOptions.AllowUpdating",
"tr": "Güncellemeye İzin Ver",
"en": "Allow Updating"
},
{
"resourceName": "Platform",
"key": "ListForms.SchedulerOptions.AllowDeleting",
"tr": "Silmeye İzin Ver",
"en": "Allow Deleting"
},
{
"resourceName": "Platform",
"key": "ListForms.SchedulerOptions.Day",

View file

@ -402,6 +402,10 @@ export interface GanttOptionDto {
endExpr?: string
progressExpr?: string
scaleType: GanttScaleType
allowEditing?: boolean
allowTaskAdding?: boolean
allowTaskUpdating?: boolean
allowTaskDeleting?: boolean
allowDependencyAdding?: boolean
allowDependencyDeleting?: boolean
allowResourceAdding?: boolean
@ -424,6 +428,9 @@ export interface SchedulerOptionDto {
firstDayOfWeek?: number
allowResizing?: boolean
allowDragging?: boolean
allowDeleting?: boolean
allowUpdating?: boolean
allowAdding?: boolean
resources?: SchedulerResourceDto[]
}

View file

@ -83,293 +83,376 @@ function FormTabGantt(props: FormEditProps) {
{({ touched, errors, isSubmitting, values }) => (
<Form>
<FormContainer size="sm">
<FormItem
label={translate('::ListForms.ListFormEdit.DatabaseDataSourceKeyFieldName')}
invalid={errors.ganttOptionDto?.keyExpr && touched.ganttOptionDto?.keyExpr}
errorMessage={errors.ganttOptionDto?.keyExpr}
>
<Field
type="text"
name="ganttOptionDto.keyExpr"
placeholder={translate('::ListForms.ListFormEdit.DatabaseDataSourceKeyFieldName')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.keyExpr,
<div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<Card className="mt-4">
<h5 className="mb-4">{translate('::ListForms.SchedulerOptions.BasicSettings')}</h5>
<FormItem
label={translate('::ListForms.ListFormEdit.DatabaseDataSourceKeyFieldName')}
invalid={errors.ganttOptionDto?.keyExpr && touched.ganttOptionDto?.keyExpr}
errorMessage={errors.ganttOptionDto?.keyExpr}
>
<Field
type="text"
name="ganttOptionDto.keyExpr"
placeholder={translate(
'::ListForms.ListFormEdit.DatabaseDataSourceKeyFieldName',
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.ParentIdExpr')}
invalid={errors.ganttOptionDto?.parentIdExpr && touched.ganttOptionDto?.parentIdExpr}
errorMessage={errors.ganttOptionDto?.parentIdExpr}
>
<Field
type="text"
name="ganttOptionDto.parentIdExpr"
placeholder={translate('::ListForms.ListFormEdit.ParentIdExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.parentIdExpr,
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.keyExpr,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.HasItemsExpr')}
invalid={errors.ganttOptionDto?.hasItemsExpr && touched.ganttOptionDto?.hasItemsExpr}
errorMessage={errors.ganttOptionDto?.hasItemsExpr}
>
<Field
type="text"
autoComplete="off"
name="ganttOptionDto.hasItemsExpr"
placeholder={translate('::ListForms.ListFormEdit.HasItemsExpr')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.RootValue')}
invalid={!!(errors.ganttOptionDto?.rootValue && touched.ganttOptionDto?.rootValue)}
errorMessage={errors.ganttOptionDto?.rootValue as string}
>
<Field
type="text"
autoComplete="off"
name="ganttOptionDto.rootValue"
placeholder={translate('::ListForms.ListFormEdit.RootValue')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AutoExpandAll')}
invalid={
errors.ganttOptionDto?.autoExpandAll && touched.ganttOptionDto?.autoExpandAll
}
errorMessage={errors.ganttOptionDto?.autoExpandAll}
>
<Field
name="ganttOptionDto.autoExpandAll"
placeholder={translate('::ListForms.ListFormEdit.AutoExpandAll')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.RecursiveSelection')}
invalid={
errors.ganttOptionDto?.recursiveSelection &&
touched.ganttOptionDto?.recursiveSelection
}
errorMessage={errors.ganttOptionDto?.recursiveSelection}
>
<Field
name="ganttOptionDto.recursiveSelection"
placeholder={translate('::ListForms.ListFormEdit.RecursiveSelection')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.ScaleType')}
invalid={errors.ganttOptionDto?.scaleType && touched.ganttOptionDto?.scaleType}
errorMessage={errors.ganttOptionDto?.scaleType}
>
<Field
type="text"
name="ganttOptionDto.scaleType"
placeholder={translate('::ListForms.ListFormEdit.ScaleType')}
>
{({ field, form }: FieldProps<GanttScaleType>) => (
<Select
field={field}
form={form}
isClearable={true}
options={gantScaleOptions}
value={gantScaleOptions?.filter(
(option) => option.value === values.ganttOptionDto.scaleType,
<FormItem
label={translate('::ListForms.ListFormEdit.ParentIdExpr')}
invalid={
errors.ganttOptionDto?.parentIdExpr && touched.ganttOptionDto?.parentIdExpr
}
errorMessage={errors.ganttOptionDto?.parentIdExpr}
>
<Field
type="text"
name="ganttOptionDto.parentIdExpr"
placeholder={translate('::ListForms.ListFormEdit.ParentIdExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.parentIdExpr,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.TitleExpr')}
invalid={errors.ganttOptionDto?.titleExpr && touched.ganttOptionDto?.titleExpr}
errorMessage={errors.ganttOptionDto?.titleExpr}
>
<Field
type="text"
name="ganttOptionDto.titleExpr"
placeholder={translate('::ListForms.ListFormEdit.TitleExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.titleExpr,
<FormItem
label={translate('::ListForms.ListFormEdit.HasItemsExpr')}
invalid={
errors.ganttOptionDto?.hasItemsExpr && touched.ganttOptionDto?.hasItemsExpr
}
errorMessage={errors.ganttOptionDto?.hasItemsExpr}
>
<Field
type="text"
autoComplete="off"
name="ganttOptionDto.hasItemsExpr"
placeholder={translate('::ListForms.ListFormEdit.HasItemsExpr')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.RootValue')}
invalid={
!!(errors.ganttOptionDto?.rootValue && touched.ganttOptionDto?.rootValue)
}
errorMessage={errors.ganttOptionDto?.rootValue as string}
>
<Field
type="text"
autoComplete="off"
name="ganttOptionDto.rootValue"
placeholder={translate('::ListForms.ListFormEdit.RootValue')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AutoExpandAll')}
invalid={
errors.ganttOptionDto?.autoExpandAll && touched.ganttOptionDto?.autoExpandAll
}
errorMessage={errors.ganttOptionDto?.autoExpandAll}
>
<Field
name="ganttOptionDto.autoExpandAll"
placeholder={translate('::ListForms.ListFormEdit.AutoExpandAll')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.RecursiveSelection')}
invalid={
errors.ganttOptionDto?.recursiveSelection &&
touched.ganttOptionDto?.recursiveSelection
}
errorMessage={errors.ganttOptionDto?.recursiveSelection}
>
<Field
name="ganttOptionDto.recursiveSelection"
placeholder={translate('::ListForms.ListFormEdit.RecursiveSelection')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.ScaleType')}
invalid={errors.ganttOptionDto?.scaleType && touched.ganttOptionDto?.scaleType}
errorMessage={errors.ganttOptionDto?.scaleType}
>
<Field
type="text"
name="ganttOptionDto.scaleType"
placeholder={translate('::ListForms.ListFormEdit.ScaleType')}
>
{({ field, form }: FieldProps<GanttScaleType>) => (
<Select
field={field}
form={form}
isClearable={true}
options={gantScaleOptions}
value={gantScaleOptions?.filter(
(option) => option.value === values.ganttOptionDto.scaleType,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.StartExpr')}
invalid={errors.ganttOptionDto?.startExpr && touched.ganttOptionDto?.startExpr}
errorMessage={errors.ganttOptionDto?.startExpr}
>
<Field
type="text"
name="ganttOptionDto.startExpr"
placeholder={translate('::ListForms.ListFormEdit.StartExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.startExpr,
<FormItem
label={translate('::ListForms.ListFormEdit.TitleExpr')}
invalid={errors.ganttOptionDto?.titleExpr && touched.ganttOptionDto?.titleExpr}
errorMessage={errors.ganttOptionDto?.titleExpr}
>
<Field
type="text"
name="ganttOptionDto.titleExpr"
placeholder={translate('::ListForms.ListFormEdit.TitleExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.titleExpr,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EndExpr')}
invalid={errors.ganttOptionDto?.endExpr && touched.ganttOptionDto?.endExpr}
errorMessage={errors.ganttOptionDto?.endExpr}
>
<Field
type="text"
name="ganttOptionDto.endExpr"
placeholder={translate('::ListForms.ListFormEdit.EndExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.endExpr,
<FormItem
label={translate('::ListForms.ListFormEdit.StartExpr')}
invalid={errors.ganttOptionDto?.startExpr && touched.ganttOptionDto?.startExpr}
errorMessage={errors.ganttOptionDto?.startExpr}
>
<Field
type="text"
name="ganttOptionDto.startExpr"
placeholder={translate('::ListForms.ListFormEdit.StartExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.startExpr,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.ProgressExpr')}
invalid={errors.ganttOptionDto?.progressExpr && touched.ganttOptionDto?.progressExpr}
errorMessage={errors.ganttOptionDto?.progressExpr}
>
<Field
type="text"
name="ganttOptionDto.progressExpr"
placeholder={translate('::ListForms.ListFormEdit.ProgressExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.progressExpr,
<FormItem
label={translate('::ListForms.ListFormEdit.EndExpr')}
invalid={errors.ganttOptionDto?.endExpr && touched.ganttOptionDto?.endExpr}
errorMessage={errors.ganttOptionDto?.endExpr}
>
<Field
type="text"
name="ganttOptionDto.endExpr"
placeholder={translate('::ListForms.ListFormEdit.EndExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.endExpr,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.ProgressExpr')}
invalid={
errors.ganttOptionDto?.progressExpr && touched.ganttOptionDto?.progressExpr
}
errorMessage={errors.ganttOptionDto?.progressExpr}
>
<Field
type="text"
name="ganttOptionDto.progressExpr"
placeholder={translate('::ListForms.ListFormEdit.ProgressExpr')}
>
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
field={field}
form={form}
isClearable={true}
options={fieldList}
value={fieldList?.filter(
(option) => option.value === values.ganttOptionDto.progressExpr,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
</Card>
<Card className="mt-4">
<h5 className="mb-4">
{translate('::ListForms.SchedulerOptions.InteractionSettings')}
</h5>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowEditing')}
invalid={
errors.ganttOptionDto?.allowEditing && touched.ganttOptionDto?.allowEditing
}
errorMessage={errors.ganttOptionDto?.allowEditing}
>
<Field
name="ganttOptionDto.allowEditing"
placeholder={translate('::ListForms.ListFormEdit.AllowEditing')}
component={Checkbox}
/>
)}
</Field>
</FormItem>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowDependencyAdding')}
invalid={
errors.ganttOptionDto?.allowDependencyAdding && touched.ganttOptionDto?.allowDependencyAdding
}
errorMessage={errors.ganttOptionDto?.allowDependencyAdding}
>
<Field
name="ganttOptionDto.allowDependencyAdding"
placeholder={translate('::ListForms.ListFormEdit.AllowDependencyAdding')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowTaskAdding')}
invalid={
errors.ganttOptionDto?.allowTaskAdding &&
touched.ganttOptionDto?.allowTaskAdding
}
errorMessage={errors.ganttOptionDto?.allowTaskAdding}
>
<Field
name="ganttOptionDto.allowTaskAdding"
placeholder={translate('::ListForms.ListFormEdit.AllowTaskAdding')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowDependencyDeleting')}
invalid={
errors.ganttOptionDto?.allowDependencyDeleting && touched.ganttOptionDto?.allowDependencyDeleting
}
errorMessage={errors.ganttOptionDto?.allowDependencyDeleting}
>
<Field
name="ganttOptionDto.allowDependencyDeleting"
placeholder={translate('::ListForms.ListFormEdit.AllowDependencyDeleting')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowTaskUpdating')}
invalid={
errors.ganttOptionDto?.allowTaskUpdating &&
touched.ganttOptionDto?.allowTaskUpdating
}
errorMessage={errors.ganttOptionDto?.allowTaskUpdating}
>
<Field
name="ganttOptionDto.allowTaskUpdating"
placeholder={translate('::ListForms.ListFormEdit.AllowTaskUpdating')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowResourceAdding')}
invalid={
errors.ganttOptionDto?.allowResourceAdding && touched.ganttOptionDto?.allowResourceAdding
}
errorMessage={errors.ganttOptionDto?.allowResourceAdding}
>
<Field
name="ganttOptionDto.allowResourceAdding"
placeholder={translate('::ListForms.ListFormEdit.AllowResourceAdding')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowTaskDeleting')}
invalid={
errors.ganttOptionDto?.allowTaskDeleting &&
touched.ganttOptionDto?.allowTaskDeleting
}
errorMessage={errors.ganttOptionDto?.allowTaskDeleting}
>
<Field
name="ganttOptionDto.allowTaskDeleting"
placeholder={translate('::ListForms.ListFormEdit.AllowTaskDeleting')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowResourceDeleting')}
invalid={
errors.ganttOptionDto?.allowResourceDeleting && touched.ganttOptionDto?.allowResourceDeleting
}
errorMessage={errors.ganttOptionDto?.allowResourceDeleting}
>
<Field
name="ganttOptionDto.allowResourceDeleting"
placeholder={translate('::ListForms.ListFormEdit.AllowResourceDeleting')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowDependencyAdding')}
invalid={
errors.ganttOptionDto?.allowDependencyAdding &&
touched.ganttOptionDto?.allowDependencyAdding
}
errorMessage={errors.ganttOptionDto?.allowDependencyAdding}
>
<Field
name="ganttOptionDto.allowDependencyAdding"
placeholder={translate('::ListForms.ListFormEdit.AllowDependencyAdding')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowDependencyDeleting')}
invalid={
errors.ganttOptionDto?.allowDependencyDeleting &&
touched.ganttOptionDto?.allowDependencyDeleting
}
errorMessage={errors.ganttOptionDto?.allowDependencyDeleting}
>
<Field
name="ganttOptionDto.allowDependencyDeleting"
placeholder={translate('::ListForms.ListFormEdit.AllowDependencyDeleting')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowResourceAdding')}
invalid={
errors.ganttOptionDto?.allowResourceAdding &&
touched.ganttOptionDto?.allowResourceAdding
}
errorMessage={errors.ganttOptionDto?.allowResourceAdding}
>
<Field
name="ganttOptionDto.allowResourceAdding"
placeholder={translate('::ListForms.ListFormEdit.AllowResourceAdding')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.AllowResourceDeleting')}
invalid={
errors.ganttOptionDto?.allowResourceDeleting &&
touched.ganttOptionDto?.allowResourceDeleting
}
errorMessage={errors.ganttOptionDto?.allowResourceDeleting}
>
<Field
name="ganttOptionDto.allowResourceDeleting"
placeholder={translate('::ListForms.ListFormEdit.AllowResourceDeleting')}
component={Checkbox}
/>
</FormItem>
</Card>
</div>
<Button block variant="solid" loading={isSubmitting} type="submit" className="my-2">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')}

View file

@ -83,7 +83,7 @@ function FormTabScheduler(props: FormEditProps) {
<Form>
<FormContainer size="sm">
<div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<Card>
<Card className="mt-4">
<h5 className="mb-4">{translate('::ListForms.SchedulerOptions.BasicSettings')}</h5>
<FormItem
@ -181,6 +181,98 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem>
</Card>
<Card className="mt-4">
<h5 className="mb-4">{translate('::ListForms.SchedulerOptions.ViewSettings')}</h5>
<FormItem label={translate('::ListForms.SchedulerOptions.DefaultView')}>
<Field name="schedulerOptionDto.defaultView">
{({ field, form }: FieldProps) => (
<Select
field={field}
form={form}
options={schedulerViewOptions}
value={schedulerViewOptions.find(
(option) => option.value === values.schedulerOptionDto?.defaultView,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.FirstDayOfWeek')}>
<Field name="schedulerOptionDto.firstDayOfWeek">
{({ field, form }: FieldProps) => (
<Select
field={field}
form={form}
options={firstDayOfWeekOptions}
value={firstDayOfWeekOptions.find(
(option) => option.value === values.schedulerOptionDto?.firstDayOfWeek,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.SchedulerOptions.StartDayHour')}
invalid={
errors.schedulerOptionDto?.startDayHour &&
touched.schedulerOptionDto?.startDayHour
}
errorMessage={errors.schedulerOptionDto?.startDayHour}
>
<Field
type="number"
autoComplete="off"
name="schedulerOptionDto.startDayHour"
placeholder="8"
component={Input}
min={0}
max={23}
/>
</FormItem>
<FormItem
label={translate('::ListForms.SchedulerOptions.EndDayHour')}
invalid={
errors.schedulerOptionDto?.endDayHour && touched.schedulerOptionDto?.endDayHour
}
errorMessage={errors.schedulerOptionDto?.endDayHour}
>
<Field
type="number"
autoComplete="off"
name="schedulerOptionDto.endDayHour"
placeholder="18"
component={Input}
min={0}
max={24}
/>
</FormItem>
<FormItem
label={translate('::ListForms.SchedulerOptions.CellDuration')}
invalid={
errors.schedulerOptionDto?.cellDuration &&
touched.schedulerOptionDto?.cellDuration
}
errorMessage={errors.schedulerOptionDto?.cellDuration}
>
<Field
type="number"
autoComplete="off"
name="schedulerOptionDto.cellDuration"
component={Input}
placeholder="30"
min={5}
step={5}
/>
</FormItem>
</Card>
<Card className="mt-4">
<h5 className="mb-4">
{translate('::ListForms.SchedulerOptions.RecurrenceSettings')}
@ -237,95 +329,10 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem>
</Card>
<Card className="mt-4">
<h5 className="mb-4">{translate('::ListForms.SchedulerOptions.ViewSettings')}</h5>
<FormItem label={translate('::ListForms.SchedulerOptions.DefaultView')}>
<Field name="schedulerOptionDto.defaultView">
{({ field, form }: FieldProps) => (
<Select
field={field}
form={form}
options={schedulerViewOptions}
value={schedulerViewOptions.find(
(option) => option.value === values.schedulerOptionDto?.defaultView,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.FirstDayOfWeek')}>
<Field name="schedulerOptionDto.firstDayOfWeek">
{({ field, form }: FieldProps) => (
<Select
field={field}
form={form}
options={firstDayOfWeekOptions}
value={firstDayOfWeekOptions.find(
(option) => option.value === values.schedulerOptionDto?.firstDayOfWeek,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.SchedulerOptions.StartDayHour')}
invalid={errors.schedulerOptionDto?.startDayHour && touched.schedulerOptionDto?.startDayHour}
errorMessage={errors.schedulerOptionDto?.startDayHour}
>
<Field
type="number"
autoComplete="off"
name="schedulerOptionDto.startDayHour"
placeholder="8"
component={Input}
min={0}
max={23}
/>
</FormItem>
<FormItem
label={translate('::ListForms.SchedulerOptions.EndDayHour')}
invalid={errors.schedulerOptionDto?.endDayHour && touched.schedulerOptionDto?.endDayHour}
errorMessage={errors.schedulerOptionDto?.endDayHour}
>
<Field
type="number"
autoComplete="off"
name="schedulerOptionDto.endDayHour"
placeholder="18"
component={Input}
min={0}
max={24}
/>
</FormItem>
<FormItem
label={translate('::ListForms.SchedulerOptions.CellDuration')}
invalid={errors.schedulerOptionDto?.cellDuration && touched.schedulerOptionDto?.cellDuration}
errorMessage={errors.schedulerOptionDto?.cellDuration}
>
<Field
type="number"
autoComplete="off"
name="schedulerOptionDto.cellDuration"
component={Input}
placeholder="30"
min={5}
step={5}
/>
</FormItem>
</Card>
<Card className="mt-4">
<h5 className="mb-4">
{translate('::ListForms.SchedulerOptions.InteractionSettings')}
</h5>
<FormItem label={translate('::ListForms.SchedulerOptions.ShowAllDayPanel')}>
<Field name="schedulerOptionDto.showAllDayPanel" component={Checkbox} />
@ -342,13 +349,24 @@ function FormTabScheduler(props: FormEditProps) {
<FormItem label={translate('::ListForms.SchedulerOptions.AllowDragging')}>
<Field name="schedulerOptionDto.allowDragging" component={Checkbox} />
</FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.AllowAdding')}>
<Field name="schedulerOptionDto.allowAdding" component={Checkbox} />
</FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.AllowUpdating')}>
<Field name="schedulerOptionDto.allowUpdating" component={Checkbox} />
</FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.AllowDeleting')}>
<Field name="schedulerOptionDto.allowDeleting" component={Checkbox} />
</FormItem>
</Card>
</div>
<FormItem className="mt-4">
<Button variant="solid" type="submit" loading={isSubmitting}>
{translate('::Submit')}
</Button>
</FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit" className="my-2">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')}
</Button>{' '}
</FormContainer>
</Form>
)}

View file

@ -249,8 +249,8 @@ const GanttView = (props: GanttViewProps) => {
<Item name="separator" />
<Item name="collapseAll" />
<Item name="expandAll" />
{gridDto.gridOptions.editingOptionDto?.allowAdding && <Item name="addTask" />}
{gridDto.gridOptions.editingOptionDto?.allowDeleting && (
{gridDto.gridOptions.ganttOptionDto?.allowTaskAdding && <Item name="addTask" />}
{gridDto.gridOptions.ganttOptionDto?.allowTaskDeleting && (
<Item name="deleteTask" />
)}
<Item name="separator" />
@ -285,14 +285,17 @@ const GanttView = (props: GanttViewProps) => {
</Toolbar>
<Editing
enabled={gridDto.gridOptions.editingOptionDto?.allowUpdating}
allowTaskAdding={gridDto.gridOptions.editingOptionDto?.allowAdding}
allowTaskUpdating={gridDto.gridOptions.editingOptionDto?.allowUpdating}
allowTaskDeleting={gridDto.gridOptions.editingOptionDto?.allowDeleting}
allowDependencyAdding={false}
allowDependencyDeleting={false}
allowResourceAdding={false}
allowResourceDeleting={false}
enabled={gridDto.gridOptions.ganttOptionDto?.allowEditing}
allowTaskAdding={gridDto.gridOptions.ganttOptionDto?.allowTaskAdding}
allowTaskUpdating={gridDto.gridOptions.ganttOptionDto?.allowTaskUpdating}
allowTaskDeleting={gridDto.gridOptions.ganttOptionDto?.allowTaskDeleting}
allowDependencyAdding={gridDto.gridOptions.ganttOptionDto?.allowDependencyAdding}
allowDependencyDeleting={
gridDto.gridOptions.ganttOptionDto?.allowDependencyDeleting
}
allowResourceAdding={gridDto.gridOptions.ganttOptionDto?.allowResourceAdding}
allowResourceDeleting={gridDto.gridOptions.ganttOptionDto?.allowResourceDeleting}
/>
<FilterRow visible={gridDto.gridOptions.filterRowDto?.visible}></FilterRow>

View file

@ -257,9 +257,9 @@ const SchedulerView = (props: SchedulerViewProps) => {
</Toolbar>
<Editing
allowAdding={gridDto.gridOptions.editingOptionDto?.allowAdding ?? false}
allowUpdating={gridDto.gridOptions.editingOptionDto?.allowUpdating ?? false}
allowDeleting={gridDto.gridOptions.editingOptionDto?.allowDeleting ?? false}
allowAdding={gridDto.gridOptions.schedulerOptionDto?.allowAdding ?? false}
allowUpdating={gridDto.gridOptions.schedulerOptionDto?.allowUpdating ?? false}
allowDeleting={gridDto.gridOptions.schedulerOptionDto?.allowDeleting ?? false}
allowResizing={gridDto.gridOptions.schedulerOptionDto?.allowResizing ?? false}
allowDragging={gridDto.gridOptions.schedulerOptionDto?.allowDragging ?? false}
/>