Всем привет!
В этом видео я покажу пример реализации универсального виджета для просмотра истории изменения статусов у элемента приложения.
Дотягиваться до истории изменения статусов будем при помощи глобальной константы Imports, о которой рассказал ранее.
Все подробности в ролике, а ниже код, который был использован для получения истории:
Код:
declare const console: any
/** Функция инициализации */
async function onInit(): Promise<void> {
try {
const app = await Context.data.application?.fetch() as BaseApplicationItem<any, any>
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<any, any, any>
if (!application) return
const status_changes = await application.statusHistory().where((f, g) => 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(f => {
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