• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы alexas
  • Дата начала
A

alexas

Есть 2 фрейма: в левом - док на редактировании, в правом - View.
Из View, LS изменяет левый док. Надо, сразу после изменений сделать RefreshHideFormulas в доке слева (в идеале Refresh).
Как попроще?
 
D

Dragon108

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

Попробуйте в этом скрипте Evaluat-ом выполнять @SetTargetFrame и @Command([RefreshFrame])


Попробовал:

Код:
@SetTargetFrame("Frame1");
@Command([EditDocument]; "0"; 1)

Должно работать
 
A

alexas

@Command([RefreshFrame]; "FrameName") не рефрешит док к сожалению
 
D

Dragon108

@Command([RefreshFrame]; "FrameName") не рефрешит док к сожалению

Также

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

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

alexas

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

Dragon108

К сожалению, это не мой случай. Это открывает док из View в PreviewPane: у меня "левый" док - просто абстрактный док, к докам из View правого фрейма не относящийся и фрейм не PreviewPane :(

Ну из изначальной поставноки вопроса я понял что у вас как раз стандартный фреймсет поделенный надвое - однин фрейм: вьюшка, в другом фрейме: отображаемый оттуда документ. ну да ладно :mellow: Я так понимаю ваш этот абстрактный док берет данные из этих обрабатываемых документов в представлении?

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

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

alexas

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

savl

Lotus Team
28.10.2011
2 597
310
BIT
177
А если сохранить UNID дока в левом фрейме в notes.ini
Затем переполучить его и открыть именно в этом фрейме открытого фреймсета?
 
D

Dragon108

А как у вас открывается док во фрейме? В результате чего он туда грузится?

Добавлено:
Мне надо получить UI уже открытого дока, а не перезагрузить его в в фрейм.

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

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

alexas

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

savl

Lotus Team
28.10.2011
2 597
310
BIT
177
А если эту галочку выставить?
 

Вложения

  • fp.png
    fp.png
    7,7 КБ · Просмотры: 526
A

alexas

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

savl

Lotus Team
28.10.2011
2 597
310
BIT
177
JS таймер на форме? Старт на событии OnLoad. Скрытая HTML-кнопка с Refresh.
Запустить таймер и каждые 5 сек обновлять.
Тормозить наверное правда будет.
 
A

alexas

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

savl

Lotus Team
28.10.2011
2 597
310
BIT
177
Попросить переоткрыть форму после работы более Х времени...
Предложить сохранить текущую форму и переоткрыть.
Можно проверить про утечку памяти на себе, открыть на пару часов и заполнять.
Может и обойдется, хотя всего не предусмотреть.
 
A

alexas

Попросить переоткрыть форму после работы более Х времени...
Как память убегает в диспетчере визуально видно. Единицы килобайт считает зараза.
Переоткрытие формы память не освободит, по-моему.
 
A

alexas

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

Тема закрыта.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!