Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не хватает изобретательности. Заморочка с label. / 14 сообщений из 14, страница 1 из 1
21.11.2012, 07:20
    #38046321
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хватает изобретательности. Заморочка с label.
Работаю с компонентом 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
21.11.2012, 08:28
    #38046344
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хватает изобретательности. Заморочка с label.
Аленочка , JS однопоточный... И если ты хочешь делать некую "анимацию", то показывать/прятать метку должен один поток... А обратное действие выполнять уже другой.
http://javascript.ru/blog/Andrej-Paranichev/Osnovy-programmnoj-animacii-JavaScript

Хотя сам ЗЕН как-то странно на такое реагировал... Хтя пробовал давно.
В CSP проблем нет вообще.
...
Рейтинг: 0 / 0
21.11.2012, 08:32
    #38046345
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хватает изобретательности. Заморочка с label.
Делай что-то типа этого
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
21.11.2012, 08:44
    #38046356
2acid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хватает изобретательности. Заморочка с label.
Аленочка,
У меня на 10.2 отрабатывает без проблем ваш вариант.
...
Рейтинг: 0 / 0
21.11.2012, 09:51
    #38046416
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хватает изобретательности. Заморочка с label.
Аленочка,
хочу поделиться личным опытом. У меня однажды была в точности такая же проблема, как и у Вас, а причина оказалась следующая. label (в моем случае это было нечто другое, но суть не в этом) стояла внутри некоего div. После прихода ответа от сервера (в Вашем случае - это ответ о результатах выгрузки отчета), содержимое этого ответа заполняло в callback-функции div как-то через div.innerHTML=... И мой label затирался. Поэтому при первом обращении к серверу label появлялся, при последующих - нет. Проверьте, может быть у Вас такая же причина.
...
Рейтинг: 0 / 0
21.11.2012, 12:04
    #38046657
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хватает изобретательности. Заморочка с label.
Аленочка ,

Попробуйте исправленный вариант, предложенный 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
22.11.2012, 02:57
    #38048034
Аленочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хватает изобретательности. Заморочка с label.
2acidАленочка,
У меня на 10.2 отрабатывает без проблем ваш вариант.

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


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

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

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


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


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