Задача: У нас есть стандартный отчет по работе оборудования, он нас устраивает, но при формировании этого отчета необходимо указывать дату и выбирать наш цех. Мы хотим приложение, в котором отчет будет открываться сразу за сегодняшнее число, за наш цех, и показывал всегда актуальную информацию, мы его повесим на телевизор в цеху и трогать не будем.
Решение:Создаем пустое приложение из шаблона, или просто пустое приложение.
Добавляем пустой контейнер. Для удобства прописываем в поле данные еще один контейнер:
Код:
<div width = '100%' height = '100%' id = fullscreen></div>Теперь посмотрим на отчет, который мы хотим видеть в приложении:
Посмотрим год непосредственно самого отчета и увидим откуда он берется
Для того чтобы вставить в приложение готовый отчет используется функция baseUtils.injectIntoPage,
ƒ injectIntoPage(
url – берем из параметра injectedurl на том элементе, который хотим повторить, я взял отчет по загрузке и меняю в нем параметры, а так же дату
, injectId – куда будем вставлять результат
, checkAuth – нужно ли быть авторизованным для получения результата (если поставить false, то функция будет работать только там, где не требуется авторизация, в нашем случае используются данные из приложения, а у него есть пользователи)
, callBack – далее все как обычно
, callBackError)
Теперь рассмотрим атрибут injected_url, в нем написан адрес запроса, его же мы и будем использовать как параметр url.
/Winnum/views/pages/app/agw.jsp?rpc=winnum.views.pages.app.cnc.reports.calendar.TagPriorityWorkReport
&men=streamWorkReportsTable
&appid=winnum.org.app.WNApplicationInstance:8
&oid=winnum.org.domain.WNAdministrativeDomain%3A1
&oid_id=__ref_inputoid&oid_type=text_reference&oid_value2=
&date=03.05.2024
&date_id=__text_date_inputdate
&date_type=text-date
&date_value2=
&formid=report_settings_form
&count=2
&mode=yes
Очевидно, что его можно исправить в таких аргументах как date, oid, appid.
oid и appid нас устраивает, осталось только сделать сегодняшний день и запустить отчет в цикле, обновляя его каждые пять минут. Значит создаем событие loop (проигрывание в цикле) и пишем:
Код:
//get today
var today = new Date();
var dd = today.getDate();
if (dd < 10){dd = '0' + dd}
var mm = today.getMonth() + 1;
if (mm < 10){mm = '0' + mm}
var yyyy = today.getFullYear();
var thisday = dd + '.' + mm + '.' + yyyy;
var appid = 'winnum.org.app.WNApplicationInstance:8';
var oid = 'winnum.org.domain.WNAdministrativeDomain%3A1';
var containerId = fullscreen.id;
baseUtils.injectIntoPage('/Winnum/views/pages/app/agw.jsp?rpc=winnum.views.pages.app.cnc.reports.calendar.TagPriorityWorkReport&men=streamWorkReportsTable&appid=' + appid + '&oid=' + oid + '&oid_id=__ref_inputoid&oid_type=text_reference&oid_value2=&date=' + thisday + '&date_id=__text_date_inputdate&date_type=text-date&date_value2=&formid=report_settings_form&count=2&mode=yes', containerId, true);Теперь сделаем все на весь экран:
Создаем событие "изменен размер"
Код:
//page id:7CB5B62C-0810-4735-8936-E43D6BDA422F
//element id:FA74BB0F-2A80-4EDB-8E86-5CF88D21D7AC
//ON_RESIZE
$(window).resize(function(event){
$('#FA74BB0F-2A80-4EDB-8E86-5CF88D21D7AC').css({
width: $(window).width() + 'px',
height: 85 + 'px',
left: $(window).width()*0 + 'px',
top: $(window).height()*0 + 'px',
overflow: 'visible',
});
$('#882AEF86-12F4-4383-977F-DAC9FC53FEC7').css({overflow: 'visible'}); // слой
$('#7CB5B62C-0810-4735-8936-E43D6BDA422F').css({overflow: 'visible'}); // страница
$('#63EC5ED4-9C93-4EA2-9EDF-36573CB1EEFC').css({width: $(window).width() + 'px'}); // верхнее меню
});В результате получится приложение, которое открывает отчет по нагрузке за весь домен и обновляет его каждые 300 секунд, данные берутся из приложения 8. Чтобы получить свой цех - нужно поменять oid на соответствующую ему папку.
Во вложении самообновляемый отчет, который позволяет выбрать участок или весь цех, а так же выбрать приложение для построения графика из выпадающего списка
Hello World!:
- Сообщений не найдено.

