Jump to content

zilav

uniGUI Subscriber
  • Posts

    573
  • Joined

  • Last visited

  • Days Won

    43

Posts posted by zilav

  1. Что-то тебя уже совсем понесло :) Какой кейс может быть у коннекта именно с определенной ноде если все они посути экземпляры одного и того же приложения.

  2. По мне так запрос от нежелательного ip вообще не должен дойти до гипера, доступ к стандартному фаерволу встроенному в windows получить несложно при наличии прав на это.

  3. 11 hours ago, x11 said:

    Я же написал:

    например, чтобы можно было передать гиперсерверу(ам) список белых/черных IP адресов

    Это задача не для гиперсервера, а для фаервола.

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

    а обновление файлов по идее ты можешь встроить и в сам сервер при необходимости кстати

    • Thanks 1
  5. Логично, у тебя есть полный доступ к папке cache, вот и переложи нужный лог-файл туда, после чего скачивай его уже оттуда

    я вообще не вижу папки logs в твоем URI, он лезет в папку cache, но есть ли у тебя там этот файл я хз

    http://localhost:8077/cache/programmaweb_exe/3sLWWMZKnZ10936FFA4/$$$/A2021-10-22.log
  6. 6 hours ago, OlegTimkiv said:

    Планируется от 1000 до 2000 подключений, один гипер должен справиться.  Сейчас на всякий случай смотрю как сбалансировать на другой сервер.     

    Столько у вас по идее и на одном сервере должно выдержать, но была заявлена поддержка фермы (нескольких серверов), но когда она точно будет никто точно не скажет.

    В составе дистрибутива идет утилита для стресс тестирования, попробуйте ей нагрузите какой-нибудь Ваш прототип и прикиньте какое железо понадобится для поддержки вашего количества клиентов.

  7. Планирую добавить еще пару типов фильтров

    1) фильтр TUniCombobox с поддержкой заполнения из другого датасета для работы на лукап полях

    2) фильтр для чекбоксов, но чтобы значения анализировались не из текущего поля, а из другого поля датасета, а то у меня есть поля в одном из которых нормально 0/1, а поле которое отображается в самом гриде, представляет собой сформированный html с иконками

     

  8. Да ладно, я и так поделюсь, только чур не смеяться, код писался под себя и по качеству ближе всего находится к понятию "гов...код" :) Доделать под себя никаких проблем нет, я там старался как можно проще в лоб все решать, да и доделал еще только вчера. В общем кину в личку, вроде тут очереди особой нет, а мне по идее все равно стыдно. Там попутно в хелпере еще пара функций для сохранения/восстановления настроек колонок в json.

    Использовать так, в создание формы пишем

      grd.InstallFilters;
      grd.CreateFilter_String(hidden,'fldString'); // просто TUniEdit с поиском вхождения подстроки
      grd.CreateFilter_Combobox(hidden,'fldCombobox'); // TUniCombobox, заполняется содержимым самого поля
      grd.CreateFilter_Date(hidden,'fldDateTime'); // TUniEdit с поддержкой диапазона дат и значений: сегодня, вчера, завтра, текущая неделя, прошлая неделя, следующая неделя, прошлый месяц, текущий месяц, следующий месяц, текущий год, прошлый год + дописать любые обработчики типа тех же кварталов никаких проблем нет
      grd.CreateFilter_Float(hidden,'fldFloat'); // TUniEdit с поддержкой диапазона, т.е можно написать и 2.34 и 2-10.34
      grd.CreateFilter_Boolean(hidden,'fldBool','Нет','Да'); // TUniCombobox с 2 значениями для true и false, поле должно быть типа ftBoolean
      grd.CreateFilter_Boolean(hidden,'fldBoolInt','-','+'); // посути предыдущий фильтр но работает с ftInteger 0/1


    Так же гриду добавляется свойство JSON, соответственно чтение/запись настроек колонок

    На уничтожение формы просто добавляем  

    grd.RemoveFilters;

     

     

  9. да, reconfigure нормально задал в рантайме, изначально неверно завал. Надо было через AddPair

        reconfigure:=
        'function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts)'+
        '{'+
        '    columns.forEach(function(col) {'+
        '        if (col.fedit && col.fedit.getTriggers() && col.fedit.getTriggers().clear) {'+
        '            col.fedit.getTriggers().clear.el.addListener(''click'', function(event) {'+
        '                event.keyCode = 13;'+
        '                col.fedit.fireEvent(''keydown'', col.fedit, event);'+
        '            })'+
        '        }'+
        '    });'+
        '}';
    
      Self.ClientEvents.ExtEvents.AddPair('reconfigure',reconfigure);

     

  10. 3 minutes ago, Sherzod said:
    10 minutes ago, zilav said:

    пользователи начали лепить вашу скульптуру из папье-маше в натуральную величину :)

    😂

    Я бы сильно не рассчитывал, меня они тоже начинали так лепить, а сейчас смотрю на столах только мои куклы вуду, утыканные острыми предметами :)

  11. Шерзод, работает, огромное спасибо, пользователи начали лепить вашу скульптуру из папье-маше в натуральную величину :)

    Пара доп. вопросов если можно:

    1. Работает при задании в дизайн-тайме, перевешивание на добавление в рантайме к сожалению сходу не работает, это вообще возможно технически?
    2. Очистка работает на каждой колонке отдельно, но есть еще кнопка полной очистки фильтров, появляющаяся при включенном фильтре, на ней все осталось по-старому, очищаются только сами контролы фильтров, без отработки нажатия Enter, туда встроить нажатие можно?
  12. 1 minute ago, Sherzod said:

    Здравствуйте,

    Простите, уточните пожалуйста.

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

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

    Контролы для фильтров у меня создаются автоматом, например вот для даты

    function TUniDbGridHelper.CreateFilter_Date(ParentPanel: TUniHiddenPanel; FieldName: string): TUniEdit;
    var
      col: TUniBaseDbGridColumn;
      ds: TDataset;
    begin
      col:= self.Columns.ColumnFromFieldName(FieldName);
      ds:= self.DataSource.DataSet;
    
      result := TUniEdit.Create(ParentPanel);
      Result.Name:= 'edtFilter_'+FieldName;
      result.Parent := ParentPanel;
    
      Result.CharEOL:= #13;
      result.ClearButton := True;
    
      col.Filtering.ChangeDelay:= 800;
      col.Filtering.Editor:= Result;
      col.Filtering.Enabled:= true;
    
    end;

    Вот этот самый Result.CharEOL:= :13 фактически отключает автофильтр и делает его включение строго на Enter

  13. Сейчас вот сижу и думаю как бы на кнопку очистки еще и нажатие кнопки Enter сразу прибить, а то получается что я нажимаю кнопку очистки у контрола, но фильтр по факту не сбрасывается, а только очищается, для сброса приходится ставить курсор в контрол и руками Enter нажимать. 

    Пока по форуму нашел либо вот этот вариант

    UniEdit1.JSInterface.JSCode(#1'.plugins.forEach(function(p) {if (p.alias[0] == "plugin.clearbutton") {p.clearButtonEl.dom.click()}});');

    либо вообще вешаться на триггер и делать уже на сервере, как описано тут

    Trigger ClearButton - General - uniGUI Discussion Forums

    но тут посути лишний раз сервер дергаться будет, поэтому первый вариант выполняющийся прямо на сервере предпочтительнее.

  14. Нет, я сам себе написал универсальный хелпер к гриду, он позволяет цеплять вот типа таких фильтров на разные типы полей, там по идее даже смешнее есть фильтры на дату, "вчера", "прошлая неделя", "прошлый месяц" и т.д. Для нумерик полей поддерживается запись диапазонов тоже например "2-7,62" (от 2.00 до 7.62). Для чекбокс полей 2 тоже свой фильтр, позволяет задать значения которые будут отображаться в комбобоксе фильтра для true и false, ну или 0 и 1 (мало ли поле не типа ftBoolean).

  15. Уважаемый Шерзод, есть пара вопросов. Я реализовал свои алгоритмы фильтрации в гриде, так как у тех же дат например есть готовые шаблоны типа "прошлый месяц" я убрал автоматическую фильтрацию и оставил включение фильтрации по нажатию Enter. На uniEdit выводится значок очистки, но он он только очищает значение контрола, а Enter приходится нажимать руками. Соответственно первый вопрос, как можно перехватить очистку контрола и сделать помимо очистки еще и принудительное нажатие Enter?

    Вопрос второй, при наложении фильтра в гриде есть значок сброса фильтра, но он опять же только чистит значение контролов-фильтров, но при этом Enter опять же приходится нажимать самому. Как перехватить нажатие на эту очистку фильтров и тоже сделать нормальную полную автоматическую очистку фильтров?

    2021-04-28_13-07-28.png.6851b4a1609a6730583b5a97ccd4bc49.png

×
×
  • Create New...