Обновить UI-док во фрейме из другого фрейма

alexas

Well-Known Member
10.06.2009
214
0
Москва
#1
Есть 2 фрейма: в левом - док на редактировании, в правом - View.
Из View, LS изменяет левый док. Надо, сразу после изменений сделать RefreshHideFormulas в доке слева (в идеале Refresh).
Как попроще?
 

Dragon108

Well-Known Member
19.01.2010
265
0
30
Россия
#3
Есть 2 фрейма: в левом - док на редактировании, в правом - View.
Из View, LS изменяет левый док. Надо, сразу после изменений сделать RefreshHideFormulas в доке слева (в идеале Refresh).
Как попроще?
Попробуйте в этом скрипте Evaluat-ом выполнять @SetTargetFrame и @Command([RefreshFrame])


Попробовал:

Код:
@SetTargetFrame("Frame1");
@Command([EditDocument]; "0"; 1)
Должно работать
 

Dragon108

Well-Known Member
19.01.2010
265
0
30
Россия
#5
@Command([RefreshFrame]; "FrameName") не рефрешит док к сожалению
Также

Код:
Call notesUIWorkspace.ReloadWindow( )
- В принципе довольно нормально работает

а вот это:
Код:
ws.SetTargetFrame("Frame1")
ws.EditDocument False, doc
вообще на ура
:) :mellow:
 

alexas

Well-Known Member
10.06.2009
214
0
Москва
#6
@SetTargetFrame("Frame1");
@Command([EditDocument]; "0"; 1)
К сожалению, это не мой случай. Это открывает док из View в PreviewPane: у меня "левый" док - просто абстрактный док, к докам из View правого фрейма не относящийся и фрейм не PreviewPane :mellow:
 

Dragon108

Well-Known Member
19.01.2010
265
0
30
Россия
#7
К сожалению, это не мой случай. Это открывает док из View в PreviewPane: у меня "левый" док - просто абстрактный док, к докам из View правого фрейма не относящийся и фрейм не PreviewPane :(
Ну из изначальной поставноки вопроса я понял что у вас как раз стандартный фреймсет поделенный надвое - однин фрейм: вьюшка, в другом фрейме: отображаемый оттуда документ. ну да ладно :mellow: Я так понимаю ваш этот абстрактный док берет данные из этих обрабатываемых документов в представлении?

В таком случае попробуйте Call notesUIWorkspace.ReloadWindow() - если уж и это не поможет, то тогда можно хардкорно переоткрывать целиком базу :)

А вообще, если не секрет, зачем вам такое нужно? может этот абстрактный док, обновлять отдельно? (по кнопке, ссылке и т.д.)
 

alexas

Well-Known Member
10.06.2009
214
0
Москва
#8
1. Call notesUIWorkspace.ReloadWindow( )
........
2. ws.SetTargetFrame("Frame1")
ws.EditDocument False, doc
1. Изначально - левый фрейм пустой, потом туда грузится док. ReloadWindow( ) вызовет открытие пустого левого фрейма, конечно туда можно опять подгрузить нужный док но это не быстрые операции - моргание экрана бъет по глазам и закрытие-открытие вкладок то-же не эстетично. Мне надо получить UI уже открытого дока, а не перезагрузить его в в фрейм.
2. Этот вариант мог бы иметь место, если-бы док не был открыт во фрейме - newInstance = False в фрейм не работает - откроется еще один экземпляр дока в новой вкладке :mellow:
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#10
А если сохранить UNID дока в левом фрейме в notes.ini
Затем переполучить его и открыть именно в этом фрейме открытого фреймсета?
 

Dragon108

Well-Known Member
19.01.2010
265
0
30
Россия
#11
А как у вас открывается док во фрейме? В результате чего он туда грузится?

Добавлено:
Мне надо получить UI уже открытого дока, а не перезагрузить его в в фрейм.
NotesUIDocument - это текущий документ, это UI, получить его не находясь на нем - нельзя; нельзя перейти от NotesDocument к NotesUIDocument - только наооборот.

Поэтому боюсь вам придется только перегружать фрейм ... тем самым работая с NotesUIWorkspace
 

alexas

Well-Known Member
10.06.2009
214
0
Москва
#12
.....Затем переполучить его и открыть именно в этом фрейме открытого фреймсета?
Постоянная перезагрузка дока в фрейм во время работы - не айс, сильно по глазам бъет.
не секрет, зачем вам такое нужно? может этот абстрактный док, обновлять отдельно? (по кнопке, ссылке и т.д.)
Ну базу-то обновлять - это уж совсем...
Абстрактный док это, в общепринятой терминологии, "отчет" по части данных из разнотипных доков в View правого фрейма. Отчет формируется автоматом при открытии левого дока и автоматом обновляется при изменении критериев формирования отчета (при редактировании левого дока) и при именении правых доков (RealTime) пока юзер даботает в этом FrameSet-е.
Измененные данные в левый док записываются и отображаются нормально. сводные данные (собственно отчет) можно расчитать скритптом и уже сформированные, записать в левый док, это без проблем. Но! Надо изменить док в соответствии с критериями видимости различных параграфов. Т.е. надо RefreshHideFormulas, как минимум, в уже показанном на мониторе документе для обеспечения нормального юзабилити.
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#13
А если эту галочку выставить?
 

Вложения

  • 15.7 КБ Просмотры: 120

alexas

Well-Known Member
10.06.2009
214
0
Москва
#14
А если эту галочку выставить?
Это сработает, если буду по полям бегать, а надо при изменении дока со стороны LS из View.
Я из за индусских ограничений даже кнопку рефрешную программно нажать не могу!!! - ...URLOpen( "java script:... не работает в фреймах!!!
Но чувствую какое-то решение должно быть! Стандартное хочу :mellow: , прикручивать сюда хепаги на пустом месте уж очень не хочется, да и там проблемы будут точно.
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#16
JS таймер на форме? Старт на событии OnLoad. Скрытая HTML-кнопка с Refresh.
Запустить таймер и каждые 5 сек обновлять.
Тормозить наверное правда будет.
 

alexas

Well-Known Member
10.06.2009
214
0
Москва
#17
JS таймер на форме? Старт на событии OnLoad. Скрытая HTML-кнопка с Refresh.
Запустить таймер и каждые 5 сек обновлять.
Тормозить наверное правда будет.
Точно! Спасибо! Нормальный рефреш из-за тормозов не сделать, а HideFormulas должно прокатить (там и милисекунды можно).
Но будет утечка памяти, вдруг юзер час сидеть за формой будет? Как с этим справиться, может кто знает?
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#18
Попросить переоткрыть форму после работы более Х времени...
Предложить сохранить текущую форму и переоткрыть.
Можно проверить про утечку памяти на себе, открыть на пару часов и заполнять.
Может и обойдется, хотя всего не предусмотреть.
 

alexas

Well-Known Member
10.06.2009
214
0
Москва
#19
Попросить переоткрыть форму после работы более Х времени...
Как память убегает в диспетчере визуально видно. Единицы килобайт считает зараза.
Переоткрытие формы память не освободит, по-моему.
 

alexas

Well-Known Member
10.06.2009
214
0
Москва
#20
savl, еще раз спасибо за дельный совет в нужное время.
Сделал так:
UI не получаю. На форме, JS проверяет значение управляющего поля "NeedRefresh" каждые 100мс. После внесения изменений в дос в бекграунде, записываю в управляющее поле код который определяет, что надо сделать в UI. JS видит "NeedRefresh" !=0 и нажимает нужную кнопку (раньше мог только сделать какие-то действия в UI получив дос через ws.EditDocument и то с большими ограничениями - например Refresh - нельзя, падает клиент).
Т.о. док сам себя обновляет когда надо, такой типа AJAX. Не тормозит, редактировать не мешает, утечка памяти не замечена. Можно навесить таймеров на кучу доков без проблем - таймер работает только в доке на котором фокус.

Тема закрыта.