Таймер

Тема в разделе "Lotus - Программирование", создана пользователем NickProstoNick, 24 мар 2010.

  1. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    И снова здравствуйте!
    Ребята, вот какой вопрос.
    Можно ли на каждый открытый документ навесить свой таймер?
    Событие таймера должно возникать через определенное кол-во секунд/минут до тех пор пока документ открыт
    Если можно - прошу помочь (как, что и где надо писать ). Что-то до меня не доходит с чего начинать ковырять таймер :ya_lamo:
     
  2. Klido

    Klido Гость

    загугли что-то типа NotesTimer - класс такой точно в нескольких вариациях есть... про навесить на каждый док - лучше бы этого не делать :ya_lamo:
     
  3. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Согласен, но пока не вижу варианта как можно было бы обновлять документ
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    сморя что обновлять - может можно и JS обойтись (искать типа "бегущая строка")
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    открыт в каком клиенте?
    обновлять в документе что? изменения в бекенде, полученном с УИ, влекут за собой автоматические изменения на УИ, если не отключено и не РТ-поле.
    со справки ) NotesTimer не такой и большой и сложный
     
  6. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    +1
    setTimeout, setInterval
    из js можно вызвать скриптовую функцию эмулируя нажатие кнопки
    делаем кнопку с кодом, на последней закладке присваиваем ей name=id="myBtn"

    в jsheader засунуть
    Код (Text):
    var myInterval;
    var periodInSeconds = 5*1000;
    function myFunction(){
    alert( periodInSeconds + ' секунд прошло. пора жать кнопку');
    document.forms[0].myBtn.click();
    clearInterval( myInterval );
    myInterval = setInterval('myFunction()' , periodInSeconds )

    }
    и на onLoad формы: myInterval = setInterval('myFunction()' , periodInSeconds );
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    с одним документом можно попрбовать, а вот с кучей как-то оно кривовато будет, имхо.
    что-то типа такого: на квериопен сохранить уи-док, создать таймер, потом по аларму таймера пересчитывать какие-то поля или релоадить?

    Добавлено: а это вообще в вебе надо или вы к лотус-клиенту js-подвязываете?
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    код кот. привел turumbay будет работать и в клиенте
     
  9. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    проблема вот собственно в чем.
    Часто бывает ситуация, когда над одним и тем же документом работают 2-3 человека одновременно.
    Есть желание организовать блокировку документа на редактирование для последующих желающих его открыть и перехват полных прав на документ по требованию одного из пользователей.
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    в пределах одного сервера она и так должна быть, зачем мудрить?..
     
  11. Klido

    Klido Гость

    оно автоматом не даст им открыть с сообщением "Документ уже редактируется таким-то" в пределах сервера и в пределах реплик, если включить блокировку в свойствах базы

    пройдитесь по форуму - тема недавно обсуждалась...
     
  12. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    если я не ошибаюсь, то в свойствах базы включается возможность включать блокировку пользователем и работает оно не только пока документ открыт, а пока блок не снимут. а та блокировка сама по себе.
     
  13. Klido

    Klido Гость

    Akupaka
    2 типа блокировки - ручная и временная (как там написано, реально хард&софт :)) , ручная (открытие на редактирование) при включенной опции на базе "Allow document locking" заблокирует док для редактировани явно всех репликах (что круто) и более того - если был запрос из другой реплики на редактирование - репликация пройдет моментально при внесении изменений в измененный док - вне рамок обычной репликации (что тоже круто)
    к сожалению, блокировки частенько глючат, потому надо ваять всякие обработчики...
     
  14. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    NickProstoNick
    всё можно, я такой таймер на каждый док повесил, создал подформочку в неё прописал код на пост опен и установил интервал раз в 30 минут, при первом же "тике" проверяю если док в режиме редактирования, перевожу его в режим чтения, дабы кто-то другой тоже мог поработать с этим доком
     
  15. Klido

    Klido Гость

    ToxaRat
    супер просто - а что ты делаешь с изменениями за 30мин? когда чел отвлекся не телефон или на перекур в процессе работы???
     
  16. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    и кроме того, что, если этот документ никем не востребован? О.о

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    ммм... как бы это объяснить.
    В документе есть набор хотспотов, которые запрограммированы на определенные действия. Запрограммированы как на @formula так и на скрипте.
    Хотспоты работают и в состоянии просмотра документа.
    И получается что несколько человек может выполнить разные действия, что собственно недопустимо.
    Вот собственно к этим хотспотам и надо ограничить доступ. Просто прятать их в режиме просмотра нельзя.
    Монопольно отдавать права на хотспоты первому открывшему документ тоже нельзя (пользователи часто открывают документ и могут "держать" его долгое время) Нужна возможность перехватить документ.
    Потому я склоняюсь к какому-нить списку открытых сейчас документов через который и будет организовано блокирование (скрытие) хотспотов и перехват прав на них.
    В случае перехвата прав всем открывшим один и тот же документ - документ надо перегрузить или попросту закрыть. Как это организовать на удаленных машинах - не знаю.
    Вижу 2 варианта:
    1. Опрос списка открытых документов по таймеру
    2. Как-то попробовать разобрать команду админки "Drop", но вот только дропать надо доступ не ко всей базе, а к одному документу. И мне кажется что это не реально
    Более оригинального ничего не могу придумать :)

    Добавлено:
    Ну у меня проще немного... как такового доступа на редактирование к документу нет. Просто согласно данных в документе пользователю предлагается определенный набор действий.
     
  18. Klido

    Klido Гость

    Akupaka
    ну да - я так сразу и написал :) остальное - предмет отдельных манипуляций...
    NickProstoNick
    режим редактирования - специально для внесения изменений в док, почему же не логично спрятать что-то, что вносит изменения в режим чтения?

    перехваты редактируемых доков - жесть. я бы идеологически на такое не пошел.. надо юзеру док - ему там написано кто редактирует - пусть пинают сами (кроме "крастоы" вроде "Документ уже кем-то редактируется" - без указания имени ;)), а то отгребать придется за самостоятельное поведение доков у юзера :)
     
  19. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ты забыл уточнить, что именно выполняется по этим кнопкам :)
    если изменения текущего документа, то как вариант - делать очередь изменений, т.е. ряд каких-то документов, которые будет обрабатывать механизм внесения изменений в документ, если их нельзя внести в момент выполнения операции.
     
  20. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Я тоже за такой вариант. А таймер, мягко говоря - это решение через задницу.
     
Загрузка...
Похожие Темы - Таймер
  1. Shouldercannon
    Ответов:
    0
    Просмотров:
    645
  2. Aris
    Ответов:
    0
    Просмотров:
    997
  3. масенький
    Ответов:
    0
    Просмотров:
    1.119
  4. shilovec5377
    Ответов:
    0
    Просмотров:
    1.572
  5. shilovec5377
    Ответов:
    0
    Просмотров:
    1.201

Поделиться этой страницей