Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Мощный поиск по локальной базе через браузер

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет. Имеется скрипт Filtering для браузера, в котором можно быстро искать по нескольким колонкам в пределах десятков тысяч строк, находящимся в js-скрипте. Дано ли добавить возможность поиска по регулярным выражениям, если это предусмотрено в jQuery?
 

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 11:19 04-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
https://supportcenter.devexpress.com/Ticket/Details/T805828/datagrid-how-to-search-using-regular-expressions

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:45 05-04-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Как понял, надо отдельно внедрять. Ясно, спасибо.

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 04:56 05-04-2020 | Исправлено: D1D1D1D, 04:56 05-04-2020
Prelestnica

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо внедрять отдельно

Всего записей: 1 | Зарегистр. 08-04-2020 | Отправлено: 15:43 08-04-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В какое место кода следует добавить функцию заменяющую при вводе в поиск, одни символы — на другие? К примеру, если пользователь вводит в поиске по колонке слово с буквой «O», чтобы она заменялась на цифру «0»? —
Код:
function onItemFiltering(s, e) {
    if (!e.isFit) {
        e.isFit = e.item.text.toLowerCase()
            .replace(/\u00fc/gi, "u")
            .replace(/\u00e4/gi, "a")
            .replace(/\u00f6/gi, "o")
            .indexOf(e.filter.toLowerCase()) > -1;
    }
}
function onCustomHighlighting(s, e) {
    e.highlighting = new RegExp(e.filter
        .replace(/u/gi, "(u|\u00fc)")
        .replace(/a/gi, "(a|\u00e4)")
        .replace(/o/gi, "(o|\u00f6)")
        , "gi");
}

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 12:44 09-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
Указанные функции к этому не имеют отношение.
Вам нужно смотреть символ по keypress и менять, если нужно.
https://stackoverflow.com/questions/44209666/javascript-replace-keypress-on-input
 
Либо править все содержимое поля после ввода символа (keyup), заменяя необходимые.
К примеру так - https://jsfiddle.net/f1bpy3s2/
Но в случае большого количества "слушателей" событий, что то может срабатывать раньше, что то позже и эффект может быть иным.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 15:56 09-04-2020 | Исправлено: Mavrikii, 20:09 09-04-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо! Но мне к сожалению так и не удалось добавить эту настройку в первоначальный скрипт Filtering. Искал в кодах все "<input" и вставлял после них — но результата не давало. Не могли бы Вы подсказать, как это задействовать применительно к коду из архива?

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 08:24 10-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Не могли бы Вы подсказать, как это задействовать применительно к коду из архива?

честно говоря, мне не хочется разбираться в чужих виджетах.
https://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxinput/jquery-input-api.htm?search=
обработка события change

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 08:30 10-04-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Оказалось, что я во второй скрипт функцию забыл вставить) Всё сработало, спасибо большое!
 
Добавлено:

Цитата:
Но в случае большого количества "слушателей" событий, что то может срабатывать раньше, что то позже и эффект может быть иным.

Что имелось в виду под большим количеством "слушателей" событий?

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 09:21 10-04-2020 | Исправлено: D1D1D1D, 09:25 10-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Что имелось в виду под большим количеством "слушателей" событий?

основы js - https://learn.javascript.ru/introduction-browser-events

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 09:35 10-04-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет. Нашел вот тут http://gooor.github.io/ пример реализации с поиском по регулярным выражениям, но никак не удаётся извлечь со страницы этот код, для локальной работы. Просьба подсказать, как его запустить.

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 09:12 08-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Просьба подсказать, как его запустить.

https://github.com/gooor/go.grid
https://github.com/gooor/go.grid/tree/master/build

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 09:29 08-10-2020 | Исправлено: Mavrikii, 09:31 08-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Дело в том, что если скачать этот архив с Гитхаба и запустить HTML-файл, пример не работает. Так же он не работает, если добавить коды html/js со страницы  http://gooor.github.io/ в файлы из Гитхаб-архива sample.js и index.html, соответственно.

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 20:45 08-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
в файлы из Гитхаб-архива sample.js и index.html, соответственно.

потому, что sample.js использует еще библиотеку angular и кучу других, которые видны в списке в index.html

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:09 08-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Все эти библиотеки из папки "bower_components" я тоже подключал, все равно не работает — https://yadi.sk/d/3hgjGeiFHKw4zQ?w=1
 
Самое главное — не понятно, где эти пункты из базы находятся.

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 22:33 08-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
не понятно, где эти пункты из базы находятся.

генерятся случайным образом в sample.js

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:41 08-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
То есть, сделано так, чтобы на своих пунктах нельзя было пользоваться?

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 23:55 08-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
сделано так, чтобы на своих пунктах нельзя было пользоваться?

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

Код:
      <div class="col-md-9" style="height: 400px; position: relative;">
        <div style="position: absolute; top: 20px; left: 20px; right: 20px; bottom: 20px; ">
          <div go-grid data-source="items" infinite on-select="select()" name="demo">
 
            <filters>
              <search-filter fields="field1,field2,field3,field4,field5,field6,field7,field9" name="query"></search-filter>
            </filters>
 
            <columns>
              <checkbox-column width="40" field="selected"></checkbox-column>
              <column width="40" name="id" header="ID" sort resize right>
                <a ng-href="#/{{item.id}}" class="office-thumbail">{{ item.id }}</a>
              </column>
              <column width="120" name="field1" header="Field 1" sort resize>
                <strong>{{ item.field1 }} {{ item.field2 }}</strong>
              </column>
              <column width="120" name="field2" header="Field 2" sort resize>
                <span class="label label-info">{{item.field6}}</span>
              </column>
              <column width="120" name="field3" header="Field 3" sort resize></column>
              <column width="120" name="field4" header="Field 4" sort resize></column>
              <column width="120" name="field5" header="Field 5" sort resize></column>
              <column width="120" name="field6" header="Field 6" sort resize></column>
              <column width="120" name="field9" header="Field 7" sort resize right></column>
              <column width="120" name="field7" header="Field 8" sort resize></column>
              <column width="120" name="field12" header="Field 11" sort resize></column>
 
            </columns>
          </div>
        </div>
      </div>
    </div>

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:58 08-10-2020 | Исправлено: Mavrikii, 00:02 09-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Просто для моих задач, если проект выполняет поиск по регуляркам — то вполне годится) По какой же причине не получается воспроизвести локально этот скрипт?  
 
 
Добавлено:
Mavrikii
 
Получается, поиск будет вестись по таблице, которая в виде HTML-кода будет прописана в этом файле?

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 00:03 09-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
которая в виде HTML-кода будет прописана в этом файле

да. но для интерактивности потребуется использовать angular все равно.
 

Цитата:
По какой же причине не получается воспроизвести локально этот скрипт?

ну откуда я знаю, когда скрипт хочет слишком много всего я его даже не рассматриваю.
возможно подключается не в том порядке или еще что.
оно не стоит того.
 
поиск по регулярке вы можете и сами написать, хранить все данные в виде массива, по нему и искать. и отдельно логика для отрисовки нужной таблицы.
 
например, просто по быстрому накидал. не оптимально, есть что исправить, улучшить и так далее (искать не по всем столбцам, к примеру, сделать задержку, чтобы искал не сразу после ввода символа либо с отдельной кнопкой запуска фильтрации, сделать постраничный вывод) - https://jsfiddle.net/fxdoa4yp/1/
 
можно не перерисовывать таблицу, а прятать строки
https://jsfiddle.net/ybotx4g1/2/

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:22 09-10-2020 | Исправлено: Mavrikii, 01:51 09-10-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Интернет » Web-программирование » Мощный поиск по локальной базе через браузер


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru