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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

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

D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Не сомневаюсь, что сам код сортировки работает, но именно при использовании большой базы, в которой если заменить

Код:
"e":"Компьютерные термины"

на

Код:
"e":"Компьютерные термины|термины"

то у меня ни сортировка не работает, ни прокрутка в окне фильтра не срабатывает.

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 02:52 14-04-2022
Mavrikii

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

Цитата:
то у меня ни сортировка не работает, ни прокрутка в окне фильтра не срабатывает.

чяднт?
 
   
ps: ну, ок, "термины" не туда влезли. дело не в сортировке.
это код обрабатывает порциями по 20 штук.

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 03:01 14-04-2022 | Исправлено: Mavrikii, 03:11 14-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Прокрутка вижу у вас работает, но обратите внимание на предпоследний пункт на вашем скрине — буква Т затесалась между буквами Н.
 
Добавлено:

Цитата:
дело не в сортировке.

А в чём?

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 03:06 14-04-2022
Mavrikii

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

Цитата:
А в чём?


Цитата:
это код обрабатывает порциями по 20 штук.

поэтому, при прокрутке, он подгружает остальные из списка, и этот кусок сортирует самостоятельно, а не все вместе.
 
https://js.devexpress.com/Documentation/ApiReference/Data_Layer/DataSource/Configuration/

Цитата:
pageSize
Specifies the maximum number of data items per page. Applies only if paginate is true.

можно добавить

Цитата:
                        options.dataSource.pageSize = 2000;
                        options.dataSource.postProcess = function (results) {

тогда сейчас сразу обрабатывает все 62 записи

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 03:11 14-04-2022 | Исправлено: Mavrikii, 03:16 14-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Сразу и весь список можно прокручивать без подгрузки) Спасибо!

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 03:24 14-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
там так и написано
https://js.devexpress.com/Documentation/ApiReference/Data_Layer/DataSource/Configuration/#paginate

Цитата:
NOTE
When the paginate property is enabled, the postProcess function handles only data available for the selected page. If you need to access all data, process data before it is passed to the store.

поэтому может проще отключить формирование страниц или обрабатывать до.
ну или такой вот костыль, на макс 2000 результатов.

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 03:30 14-04-2022 | Исправлено: Mavrikii, 03:30 14-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Интересно, что прописано в этой замене?

Код:
replace(/(?<!\.)\*/g, '[\\u0400-\\u04FF\\w]*');


Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 11:53 14-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
Замена части регулярного выражения (которое пока как строка) на другое выражение, захватывающее диапазон уникод символов. По умолчанию у  .* могут быть проблемы с уникод языковыми знвчениями.  
 

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 13:04 14-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
А в этой части выражения просто символы перечисляются? Это фрагмент кода для поиска по частям слов для виджета, написанный фрилансером. Я закомментил его строчку и ниже прописал 2 новые (с запятыми вместо подстановочных знаков):
 

Код:
    if (target === "filterRow" && selectedFilterOperations == 'contains') // && selectedFilterOperations == 'contains'
    {
        return [function(dataItem) {
            var pattern = getter(value);
            //pattern = pattern.replace(/(?<!\.)\*/g, '[\\u0400-\\u04FF\\w]*');
            pattern = pattern.replace(/\./g, '[\\u0400-\\u04FF\\w]');
            pattern = pattern.replace(/,,/g, '.*');
            pattern = pattern.replace(/,/g, '[\\u0400-\\u04FF\\w]*');
            pattern = `(^|\\s|[^\\u0400-\\u04FF\\w]|\\b)${pattern}(?=\\s|[^\\u0400-\\u04FF\\w]|\\b|$)`;
            pattern = new RegExp(pattern, 'miu');
            var cell = getter(dataItem[self.dataField]);
            if (cell.match(pattern)) {
                return true;
            } else {
                return false;
            }
        }, "=", true];
    } else {
        return [function(dataItem) {
            return getter(dataItem[self.dataField]);
        }, selectedFilterOperations || 'contains', value];
    }
 

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 13:39 14-04-2022 | Исправлено: D1D1D1D, 13:41 14-04-2022
Mavrikii

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

Цитата:
А в этой части выражения просто символы перечисляются

Где и что именно? Где "эта" часть? Если речь о квадратных скобках - да, уникодовая кириллица.

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 17:31 14-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Выше вы упомянули часть рег. выражения, которое заменяется на другое выражение. Интересует, что именно обозначено в этой части, с каким шаблоном текста она работает

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 19:26 14-04-2022 | Исправлено: D1D1D1D, 19:27 14-04-2022
Mavrikii

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

Цитата:
Интересует, что именно обозначено в этой части, с каким шаблоном текста она работает

да я же сказал уже.
.* переделывается в [\\u0400-\\u04FF\\w]*, то есть чтобы считать только кириллические уникодовые буквы и ASCII буквы.

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 22:19 14-04-2022
D1D1D1D

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

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 23:01 14-04-2022
Mavrikii

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

Цитата:
А угловая скобка, вопр. и воскл. знаки там для чего?

есть тема javascript регулярные выражения
+ https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Regular_Expressions
там все написано.
в частности - https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Regular_Expressions/Assertions

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 23:33 14-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Правильно ли понимаю, что в коде, который я выше приводил, работа рег. выражений зависит от соответствия паттерну? —

Код:
pattern = `(^|\\s|[^\\u0400-\\u04FF\\w]|\\b)${pattern}(?=\\s|[^\\u0400-\\u04FF\\w]|\\b|$)`;

Почему-то не срабатывает то, что со старым кодом работало. С этим:

Код:
    if (target === "filterRow" && selectedFilterOperations == 'contains') // && selectedFilterOperations == 'contains'
    {
        return [function(dataItem)
        {
            var pattern = new RegExp(getter(value), 'i'),
                cell = getter(dataItem[self.dataField]);
            if (cell.match(pattern))
            {
                return true;
            }
            else
            {
                return false;
            }
        }, "=", true];
    }
    else
    {
        return [function(dataItem) { return getter(dataItem[self.dataField]); }, selectedFilterOperations || 'contains', value];
    }

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 00:05 15-04-2022
Mavrikii

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

Цитата:
который я выше приводил, работа рег. выражений зависит от соответствия паттерну

если есть совпадение - возвращает true, если нет - false
 

Цитата:
pattern = `(^|\\s|[^\\u0400-\\u04FF\\w]|\\b)${pattern}(?=\\s|[^\\u0400-\\u04FF\\w]|\\b|$)`;

я не знаю где вы это вводите.

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 00:14 15-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Вот например следующий шаблон работает на старом коде —

Код:
\d+(?!\.)

На новом — даёт ошибку.

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 01:16 15-04-2022
Mavrikii

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

Цитата:
Вот например следующий шаблон работает на старом коде

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

Цитата:
На новом — даёт ошибку

какую?

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 01:29 15-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
В новом коде (в котором паттерн прописан и поиск частей слов) ошибка такая:
   

Всего записей: 1470 | Зарегистр. 05-04-2010 | Отправлено: 02:16 15-04-2022
Mavrikii

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

Цитата:
ошибка такая

правильно, там и есть ошибка.
экранируется \[, а закрытие ] - нет

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 02:20 15-04-2022 | Исправлено: Mavrikii, 02:20 15-04-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru