Newer
Older
NocodeToolOnRDL / src / types / action.ts
@Sakoda2269 Sakoda2269 11 days ago 1 KB initial commit

export type Action = ButtonAction

export const ButtonActionTypeMap = {
    navigate: {} as ButtonNavigateAction,
    addData: {} as ButtonAddDataAction,
    updateData: {} as ButtonUpdateDataAction,
    deleteData: {} as ButtonDeleteDataAction,
    searchData: {} as ButtonSearchDataAction
} as const

export type ButtonActionType = keyof typeof ButtonActionTypeMap

export type ButtonAction = {
    [K in ButtonActionType]: {
        type: K;
        action: typeof ButtonActionTypeMap[K]
    }
}[ButtonActionType];

export interface ButtonNavigateAction {
    nextScreenName: string
}

export interface ButtonAddDataAction {
    tableName: string,
    newData: { [k: string]: string }, //key: column, value: componentName
    successScreenName: string,
    failScreenName: string
}

export interface ButtonUpdateDataAction {
    tableName: string,
    newData: { [k: string]: string },
    successScreenName: string,
    failScreenName: string
}

export interface ButtonDeleteDataAction {
    tableName: string,
    deleteData: { [key: string]: string },
    successScreenName: string,
    failScreenName: string
}

export interface ButtonSearchDataAction {
    tableName: string,
    searchData: { [k: string]: string },
    targetComponentName: string,
}