1
0
Fork 0
mirror of https://gitlab.com/bramw/baserow.git synced 2025-04-17 10:22:36 +00:00

Resolve "Fix web-frontend not loading for IE and Safari versions less than 16.4"

This commit is contained in:
Nigel Gott 2023-07-20 15:55:53 +00:00
parent ba13b341b9
commit a4e9087663
5 changed files with 45 additions and 30 deletions
backend/src/baserow/contrib/database/search
changelog/entries/unreleased/bug
e2e-tests
web-frontend/modules/database/search

View file

@ -5,14 +5,14 @@ These regexes must be kept in sync with web-frontend/modules/database/search/reg
import re
RE_ONE_OR_MORE_WHITESPACE = re.compile(r"\s+", re.UNICODE)
RE_TO_REMOVE_EMAIL_URL_AND_POSITIVE_INT_PUNCTUATION = r"[@:/+]"
RE_DASH_OR_DOT_NOT_FOLLOWED_BY_DIGIT = r"[-.](?!\d)"
RE_DASH_OR_DOT_PRECEDED_BY_NON_WHITESPACE_AND_FOLLOWED_BY_DIGIT = r"(?<=\S)[-\.](?=\d)"
RE_TO_REMOVE_EMAIL_URL_AND_POSITIVE_INT_PUNCTUATION = r"[@:/+.]"
RE_DASH_NOT_FOLLOWED_BY_DIGIT = r"-(?!\d)"
RE_DASH_PRECEDED_BY_NON_WHITESPACE_AND_FOLLOWED_BY_DIGIT = r"(?<=\S)-(?=\d)"
RE_STANDALONE_DASH = r"\b-\b"
RE_MATCH_ALL_DASH_AND_DOTS_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS = "|".join(
RE_MATCH_ALL_DASH_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS = "|".join(
[
RE_DASH_OR_DOT_NOT_FOLLOWED_BY_DIGIT,
RE_DASH_OR_DOT_PRECEDED_BY_NON_WHITESPACE_AND_FOLLOWED_BY_DIGIT,
RE_DASH_NOT_FOLLOWED_BY_DIGIT,
RE_DASH_PRECEDED_BY_NON_WHITESPACE_AND_FOLLOWED_BY_DIGIT,
RE_STANDALONE_DASH,
]
)
@ -31,13 +31,13 @@ RE_REMOVE_NON_SEARCHABLE_PUNCTUATION_FROM_TSVECTOR_DATA = re.compile(
"|".join(
[
RE_TO_REMOVE_EMAIL_URL_AND_POSITIVE_INT_PUNCTUATION,
RE_MATCH_ALL_DASH_AND_DOTS_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS,
RE_MATCH_ALL_DASH_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS,
]
),
re.UNICODE,
)
RE_ALL_NON_WHITESPACE_OR_WORD_CHARACTERS_EXCLUDING_DASH_OR_DOT = r"[^\w\s\-.]"
RE_ALL_NON_WHITESPACE_OR_WORD_CHARACTERS_EXCLUDING_DASH = r"[^\w\s\-]"
"""
This regex is used on search terms provided by users before we construct a value
@ -61,9 +61,9 @@ then join with <->!
RE_REMOVE_ALL_PUNCTUATION_ALREADY_REMOVED_FROM_TSVS_FOR_QUERY = re.compile(
"|".join(
[
RE_ALL_NON_WHITESPACE_OR_WORD_CHARACTERS_EXCLUDING_DASH_OR_DOT,
RE_ALL_NON_WHITESPACE_OR_WORD_CHARACTERS_EXCLUDING_DASH,
"_",
RE_MATCH_ALL_DASH_AND_DOTS_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS,
RE_MATCH_ALL_DASH_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS,
]
),
re.UNICODE,

View file

@ -0,0 +1,7 @@
{
"type": "bug",
"message": "fix web frontend not loading for ie and safari versions less than 16 4",
"issue_number": 1866,
"bullet_points": [],
"created_at": "2023-07-20"
}

View file

@ -160,6 +160,11 @@ export class TablePage extends BaserowPage {
}
async waitForFirstCellNotBeBlank() {
await this.page.evaluate(() => {
return new Promise((resolve) => {
setTimeout(resolve, 1000); // Sleep for 1000 milliseconds (1 second)
});
});
await expect(this.firstNonPrimaryCell.locator('*')).not.toHaveCount(0)
}

View file

@ -15,7 +15,6 @@ import {
updateField
} from "../../fixtures/field";
import {updateRows} from "../../fixtures/rows";
import ro from "@faker-js/faker/locales/ro";
let user = null;
let sharedPageTestData: SharedTestData = null;
@ -436,6 +435,7 @@ const fieldTypes = [
doesNotMatch('-', '-'),
// Email cases
matches('test@google.com', '.com', 'test', 'google'),
matches('a.b', 'a', 'b', 'a/b'),
// Date cases
matches('10-20-2023', '10', '20', '2023', '10-20', '10-20-2023', '20-2023', '10/20/2023'),
doesNotMatch('10-20-2023', '23', '0', '3'),

View file

@ -4,45 +4,48 @@
* more detail on what these regexes are being used for.
*/
const RE_ONE_OR_MORE_WHITESPACE = /\s+/g
const RE_DASH_OR_DOT_NOT_FOLLOWED_BY_DIGIT = '[-.](?!\\d)'
const RE_DASH_OR_DOT_PRECEDED_BY_NON_WHITESPACE_AND_FOLLOWED_BY_DIGIT =
'(?<=\\S)[-\\.](?=\\d)'
const RE_STANDALONE_DASH = '\\b-\\b'
const RE_MATCH_ALL_DASH_AND_DOTS_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS =
[
RE_DASH_OR_DOT_NOT_FOLLOWED_BY_DIGIT,
RE_DASH_OR_DOT_PRECEDED_BY_NON_WHITESPACE_AND_FOLLOWED_BY_DIGIT,
function getSearchRegex() {
const RE_DASH_NOT_FOLLOWED_BY_DIGIT = '-(?!\\d)'
const RE_STANDALONE_DASH = '\\b-\\b'
// The backend RE_DASH_PRECEDED_BY_NON_WHITESPACE_AND_FOLLOWED_BY_DIGIT is
// implemented by a second replace call
const RE_MATCH_ALL_DASH_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS = [
RE_DASH_NOT_FOLLOWED_BY_DIGIT,
RE_STANDALONE_DASH,
].join('|')
// Note that \w in python is translated the equivilant unicode word matching javascript
// regex \\p{L}\\p{M}
const RE_ALL_NON_WHITESPACE_OR_WORD_CHARACTERS_EXCLUDING_DASH_OR_DOT =
'[^\\p{L}\\p{M}\\p{N}\\s\\-.]'
const RE_REMOVE_ALL_PUNCTUATION_ALREADY_REMOVED_FROM_TSVS_FOR_QUERY =
new RegExp(
// Note that \w in python is translated the equivilant unicode word matching javascript
// regex \\p{L}\\p{M}
const RE_ALL_NON_WHITESPACE_OR_WORD_CHARACTERS_EXCLUDING_DASH =
'[^\\p{L}\\p{M}\\p{N}\\s\\-]'
return new RegExp(
[
RE_ALL_NON_WHITESPACE_OR_WORD_CHARACTERS_EXCLUDING_DASH_OR_DOT,
RE_ALL_NON_WHITESPACE_OR_WORD_CHARACTERS_EXCLUDING_DASH,
'_',
RE_MATCH_ALL_DASH_AND_DOTS_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS,
RE_MATCH_ALL_DASH_OTHER_THAN_NEGATIVE_NUMBERS_AND_DECIMAL_NUMBERS,
].join('|'),
'gu'
)
}
export function convertStringToMatchBackendTsvectorData(inputString) {
if (inputString === null || inputString === undefined) {
return ''
}
const RE_ONE_OR_MORE_WHITESPACE = /\s+/g
// Some browsers don't support look behinds so use a replace with capture groups
// instead.
const RE_DASH_PRECEDED_BY_NON_WHITESPACE_AND_FOLLOWED_BY_DIGIT = /(\S)-(\d)/gu
const initialTrimmedLoweredInputString = inputString
.toString()
.trim()
.toLowerCase()
const punctuationStrippedValueMatchingBackendTsvColumnData =
initialTrimmedLoweredInputString
.replace(getSearchRegex(), ' ')
.replace(
RE_REMOVE_ALL_PUNCTUATION_ALREADY_REMOVED_FROM_TSVS_FOR_QUERY,
' '
RE_DASH_PRECEDED_BY_NON_WHITESPACE_AND_FOLLOWED_BY_DIGIT,
'$1 $2'
)
.toLowerCase()
return punctuationStrippedValueMatchingBackendTsvColumnData