powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не хватает изобретательности. Заморочка с label.
14 сообщений из 14, страница 1 из 1
Не хватает изобретательности. Заморочка с label.
    #38046321
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работаю с компонентом label.
Суть задачи: Нажимаем кнопку "Выгрузить отчет в Excel", показываем label типа "Подождите, идет выгрузка в Excel". Отчет формируется. Сформировался - label прячем.
Проблема: при первой выгрузке все ОК, при последующих - label не показывается вообще.

Делаю так:

ClientMethod exportToExcel() [ Language = javascript ]
{
  var zsm = zenSynchronousMode;
  zenSynchronousMode=true;
  
  zenSetProp("lblExcelReportInformer","hidden",false); //злосчастная метка
  
  var tmp = zenPage.createExcelTemplate("/xlt/Template.xlt");
  if (tmp==1) {
    //...  
    var tmp = zenPage.sExportToExcel("...");
    if (tmp!="") { 
      alert(tmp); 
      zenPage.ExcelApp.DisplayAlerts = false;
      zenPage.ExcelApp.Quit();
      zenPage.ExcelApp = null; 
    } else {
      zenPage.ExcelApp.Visible = true;
    }
  }  
  
  zenSetProp("lblExcelReportInformer","hidden",true);

  zenSynchronousMode=zsm;
  return;
}


Как же заставить label показываться каждый раз без перезагрузки странички.
Пока только вот это помогает :( window.location.reload(true);


-----------------------------------------------
А мы тут плюшками балуемся...

Аленочка тм
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38046344
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка , JS однопоточный... И если ты хочешь делать некую "анимацию", то показывать/прятать метку должен один поток... А обратное действие выполнять уже другой.
http://javascript.ru/blog/Andrej-Paranichev/Osnovy-programmnoj-animacii-JavaScript

Хотя сам ЗЕН как-то странно на такое реагировал... Хтя пробовал давно.
В CSP проблем нет вообще.
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38046345
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай что-то типа этого
ClientMethod start() [ Language = javascript ]
{
  zenSetProp("lblExcelReportInformer","hidden",false); //злосчастная метка
  setTimeout(exportToExcel,1);
}
ClientMethod exportToExcel() [ Language = javascript ]
{
  var zsm = zenSynchronousMode;
  zenSynchronousMode=true;
  
  //zenSetProp("lblExcelReportInformer","hidden",false); //злосчастная метка
  
  var tmp = zenPage.createExcelTemplate("/xlt/Template.xlt");
  if (tmp==1) {
    //...  
    var tmp = zenPage.sExportToExcel("...");
    if (tmp!="") { 
      alert(tmp); 
      zenPage.ExcelApp.DisplayAlerts = false;
      zenPage.ExcelApp.Quit();
      zenPage.ExcelApp = null; 
    } else {
      zenPage.ExcelApp.Visible = true;
    }
  }  
  
  zenSetProp("lblExcelReportInformer","hidden",true);

  zenSynchronousMode=zsm;
  return;
}
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38046356
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Аленочка,
У меня на 10.2 отрабатывает без проблем ваш вариант.
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38046416
EvLaUy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка,
хочу поделиться личным опытом. У меня однажды была в точности такая же проблема, как и у Вас, а причина оказалась следующая. label (в моем случае это было нечто другое, но суть не в этом) стояла внутри некоего div. После прихода ответа от сервера (в Вашем случае - это ответ о результатах выгрузки отчета), содержимое этого ответа заполняло в callback-функции div как-то через div.innerHTML=... И мой label затирался. Поэтому при первом обращении к серверу label появлялся, при последующих - нет. Проверьте, может быть у Вас такая же причина.
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38046657
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка ,

Попробуйте исправленный вариант, предложенный krvsa :
Class test.test Extends %ZEN.Component.page
{

/// Этот блок Style содержит определение CSS-стиля страницы.
XData Style
{
<style type="text/css">
</style>
}

XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
<label id="lblExcelReportInformer" label="Подождите, идет выгрузка в Excel" hidden="true"/>
<button caption="Экспорт" onclick="zenPage.start();"/>
</page>
}

ClientMethod start() [ Language = javascript ]
{
  zenSetProp('lblExcelReportInformer','hidden',false); //злосчастная метка
  zenSetDeferredAction(new Function("zenPage.exportToExcel();"),200);
}

ClientMethod exportToExcel() [ Language = javascript ]
{
  var tmp=zenPage.sExportToExcel(1);
  if (tmp!="") {
    zenAlert(tmp);
  }
  
  zenSetProp('lblExcelReportInformer','hidden',true);
}

ClassMethod sExportToExcel(sec) As %String [ ZenMethod ]
{
  hang sec
  q "excel"
}

}
2acidАленочка,
У меня на 10.2 отрабатывает без проблем ваш вариант.От браузера зависит:
под Opera 12.11, IE 10, Chrome 23 я наблюдаю такую последовательность: жду n-секунд, потом метка появляется, затем alert и потом метка исчезает, что не есть правильно.

под Firefox 16 последовательность правильная: я вижу появляющуюся метку, потом жду n-секунд, потом alert, затем метка пропадает.
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38048034
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2acidАленочка,
У меня на 10.2 отрабатывает без проблем ваш вариант.

у меня Cache for Windows (x86-32) 2012.1.2 (Build 702) Fri May 4 2012 13:49:30 EDT
первый раз у меня тоже отрабатывает, а вот второй и последующий разы - нет.
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38048043
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
servit


спасибо. заработало как надо)

по поводу zenSetDeferredAction - не нашла описания в документации
но эффект от выполнения один и тот же:

zenSetDeferredAction(new Function("zenPage.exportToExcel();"),200);
window.setTimeout('zenPage.exportToExcel();',200);
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38048045
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvLaUy , спасибо за информацию
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38048139
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочкапо поводу zenSetDeferredAction - не нашла описания в документации
но эффект от выполнения один и тот же:
Т.е. с обычным
Код: javascript
1.
setTimeout()


так же работает?
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38048179
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочкапо поводу zenSetDeferredAction - не нашла описания в документацииЦитата из документацииBecause the library is written in JavaScript, which does not facilitate generated class documentation, there is no Class Reference documentation for it in the InterSystems online documentation system. Refer to this chapter for all details.
источник Смотрите документацию в файле zenutils.js . Там Вы найдёте много полезных методов.

Аленочкано эффект от выполнения один и тот же:Конечно, ведь в конечном итоге zenSetDeferredAction использует setTimeout .

krvsaТ.е. с обычным
Код: javascript
1.
setTimeout()

так же работает?Почему бы и нет, если только синтаксис вызова подправить.
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38048572
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitПочему бы и нет, если только синтаксис вызова подправить.
Так вот у меня в каком-то примере не работало... В csp проблем не имел.
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38048636
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaservitПочему бы и нет, если только синтаксис вызова подправить.
Так вот у меня в каком-то примере не работало... В csp проблем не имел.Пример в студию.
...
Рейтинг: 0 / 0
Не хватает изобретательности. Заморочка с label.
    #38049031
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitПример в студию.
Я с ЗЕНом сейчас вообще не работаю...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не хватает изобретательности. Заморочка с label.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]