...

Универсальный виджет для просмотра истории изменения статусов (использование Imports)

Тема в разделе "Примеры решений и дополнительных модулей", создана пользователем ksannikov, 8 дек 2025 в 12:54.

  1. ksannikov

    ksannikov Активный участник

    Всем привет!

    В этом видео я покажу пример реализации универсального виджета для просмотра истории изменения статусов у элемента приложения.

    Дотягиваться до истории изменения статусов будем при помощи глобальной константы Imports, о которой рассказал ранее.

    Все подробности в ролике, а ниже код, который был использован для получения истории:

    Код:
    
    declare const consoleany

    /** Функция инициализации */
    async function onInit(): Promise<void> {
        try {
            const 
    app await Context.data.application?.fetch() as BaseApplicationItem<anyany>
            if (!
    app) return
            const 
    statuses = (app.fields.__status as any)?.all
            
    if (!statuses) return
            const 
    ns = (Imports as any)[app.namespace]
            if (!
    ns) return
            const 
    application ns.app[app.code] as Application<anyanyany>
            if (!
    application) return
            const 
    status_changes await application.statusHistory().where((fg) => g.and(
                
    f.item.link(app)
            )).
    size(10000).all()

            if (!
    status_changes?.length) return
          
            
    let last_change status_changes[status_changes.length 1];
            
    Context.data.change_date last_change.data.__createdAt
            Context
    .data.change_author last_change.data.__createdBy
            status_changes
    .forEach(=> {
                
    let row Context.data.history!.insert()
                
    row.old_status statuses.find((item:any) => item.id === f.data.source)?.name ?? ''
                
    row.new_status statuses.find((item:any) => item.id === f.data.target)?.name ?? ''
                
    row.change_date f.data.__createdAt
                row
    .author f.data.__createdBy
            
    })
            
    Context.data.history Context.data.history

        
    } catch (e) {
            
    console.log(e)
        }

    }
    /** Функция открытия модального окна */
    async function openModalWindow(): Promise<void> {
        
    Context.data.show_modal_window true
    }
    Еще больше полезной информации в ТГ канале WhatDaELMA365