getAvailableTrainings

Возвращает список доступных текущему пользователю тренингов

function getAvailableTrainings( 
  ctx: app.Ctx, 
  props: { 
    parentId?: string, // если не указано - вернет все дерево от корня. если указать - вернутся только дочерние к указанному тренингу
    buildTree?: boolean // если указать - вернет в ответ в виде дерева
  }
) : Promise<TrainingBasicInfo[]>

// Результат: массив объектов следующего типа
export type TrainingBasicInfo = {
  id: number
  parent_id: number | null
  lesson_count: number
  title: string
  description: string
  image: string | null
  image_hash: string | null
  image_url: string | null
  children?: TrainingBasicInfo[]
}

Аргументы

Параметр Тип Описание
ctx app.Ctx Контекст запроса
props object Свойства описаны ниже
props.parentId string Id родительского тренинга. Может быть пустым
props.buildTree boolean Если не указан - выдает плоский список. Если указать true - выдаст объект с вложенными подобъектами

Примеры

Вернуть список тренингов в виде JSON

import {getAvailableTrainings} from '@getcourse/sdk'

// Вернуть список тренингов в виде JSON
app.get('/', async(ctx,req) => {
  const trainings = await getAvailableTrainings(ctx, {buildTree: true});
  return trainings 
})

HTML-экран со списком тренингов

import {getAvailableTrainings} from '@getcourse/sdk'
import {jsx} from '@app/html-jsx'

// Список тренингов в HTML виде
app.html(ctx, async(ctx, req) => {
  const trainings = await getAvailableTrainings(ctx)
  return <html>
    {trainings.map( training => 
      <a href={`/teach/control/training/id/${training.id}`}>
        {training.title}
      </a>
     )}
  </html>
})

Мобильный экран со списком тренингов

import {getAvailableTrainings} from '@getcourse/sdk'

app.html(ctx, async(ctx, req) => {
  const trainings = await getAvailableTrainings(ctx)
  return <screen>
    {trainings.map( training => <list-item
      icon={{
        text: training.title.substring(0,1),
        url: training.image_url,
        style: {
          backgroundColor: '#34495e',
          color: 'white',
          borderRadius: 10,
        },
        size: 'lg',
      }}
      content={{
        title: training.title,
        subTitle: training.description
      }}/>
     )}
  </screen>
})

❤️ Made with love on Chatium

ООО "Чатиум"

Информация о компании