Example #1
0
export const cloneDashboard = (dashboard: Dashboard) => async (
  dispatch,
  getState: GetState
): Promise<void> => {
  try {
    const {
      orgs: {org},
      dashboards,
    } = getState()

    const allDashboardNames = dashboards.list.map(d => d.name)

    const clonedName = incrementCloneName(allDashboardNames, dashboard.name)

    const data = await client.dashboards.clone(dashboard.id, clonedName, org.id)

    dispatch(checkDashboardLimits())
    dispatch(push(`/orgs/${org.id}/dashboards/${data.id}`))
  } catch (error) {
    console.error(error)
    if (isLimitError(error)) {
      dispatch(notify(copy.resourceLimitReached('dashboards')))
    } else {
      dispatch(notify(copy.dashboardCreateFailed()))
    }
  }
}
Example #2
0
export const createDashboard = () => async (
  dispatch,
  getState: GetState
): Promise<void> => {
  try {
    const {
      orgs: {org},
    } = getState()

    const newDashboard = {
      name: DEFAULT_DASHBOARD_NAME,
      cells: [],
      orgID: org.id,
    }

    const data = await createDashboardAJAX(newDashboard)
    dispatch(push(`/orgs/${org.id}/dashboards/${data.id}`))
    dispatch(checkDashboardLimits())
  } catch (error) {
    console.error(error)

    if (isLimitError(error)) {
      dispatch(notify(copy.resourceLimitReached('dashboards')))
    } else {
      dispatch(notify(copy.dashboardCreateFailed()))
    }
  }
}
Example #3
0
export const saveNewScript = (script: string, preamble: string) => async (
  dispatch,
  getState: GetStateFunc
): Promise<void> => {
  try {
    const fluxScript = await insertPreambleInScript(script, preamble)

    const {
      orgs: {org},
    } = getState()

    await client.tasks.createByOrgID(org.id, fluxScript)

    dispatch(setNewScript(''))
    dispatch(clearTask())
    dispatch(getTasks())
    dispatch(goToTasks())
    dispatch(notify(taskCreatedSuccess()))
    dispatch(checkTaskLimits())
  } catch (error) {
    console.error(error)
    if (isLimitError(error)) {
      dispatch(notify(copy.resourceLimitReached('tasks')))
    } else {
      const message = getErrorMessage(error)
      dispatch(notify(taskNotCreated(message)))
    }
  }
}
Example #4
0
export const cloneTask = (task: Task, _) => async dispatch => {
  try {
    await client.tasks.clone(task.id)

    dispatch(notify(taskCloneSuccess(task.name)))
    dispatch(getTasks())
    dispatch(checkTaskLimits())
  } catch (error) {
    console.error(error)
    if (isLimitError(error)) {
      dispatch(notify(copy.resourceLimitReached('tasks')))
    } else {
      const message = getErrorMessage(error)
      dispatch(notify(taskCloneFailed(task.name, message)))
    }
  }
}
Example #5
0
) => async (dispatch, getState: GetState) => {
  try {
    const {
      orgs: {org},
    } = getState()

    await createDashboardFromTemplateAJAX(template, org.id)

    const dashboards = await getDashboardsAJAX(org.id)

    dispatch(setDashboards(RemoteDataState.Done, dashboards))
    dispatch(notify(copy.importDashboardSucceeded()))
    dispatch(checkDashboardLimits())
  } catch (error) {
    if (isLimitError(error)) {
      dispatch(notify(copy.resourceLimitReached('dashboards')))
    } else {
      dispatch(notify(copy.importDashboardFailed(error)))
    }
  }
}
Example #6
0
export const createTaskFromTemplate = (template: ITaskTemplate) => async (
  dispatch,
  getState: GetStateFunc
): Promise<void> => {
  try {
    const {
      orgs: {org},
    } = await getState()

    await createTaskFromTemplateAJAX(template, org.id)

    dispatch(getTasks())
    dispatch(notify(importTaskSucceeded()))
    dispatch(checkTaskLimits())
  } catch (error) {
    if (isLimitError(error)) {
      dispatch(notify(copy.resourceLimitReached('tasks')))
    } else {
      dispatch(notify(importTaskFailed(error)))
    }
  }
}