From 2af2fbb377b5b252893a7c2e2fe09fc763d63505 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Wed, 30 Sep 2026 15:53:54 +0700 Subject: [PATCH 01/11] feat: Add support for group-by:violation-approver --- src/CONST/index.ts | 21 + .../Search/FilterDropdowns/DisplayPopup.tsx | 2 +- .../SearchList/ListItem/GroupHeader.tsx | 9 + .../ListItem/TransactionGroupListItem.tsx | 22 +- .../ViolationApproverListItemHeader.tsx | 200 +++++++++ .../Search/SearchList/ListItem/types.ts | 9 + src/components/Search/SearchTableHeader.tsx | 25 ++ src/components/Search/chartGroupByConfig.ts | 5 + .../Search/hooks/useUpdateFilterQuery.tsx | 25 +- src/components/Search/types.ts | 25 +- src/languages/de.ts | 4 + src/languages/el.ts | 4 + src/languages/en.ts | 4 + src/languages/es.ts | 4 + src/languages/fr.ts | 4 + src/languages/it.ts | 4 + src/languages/ja.ts | 4 + src/languages/nl.ts | 4 + src/languages/pl.ts | 4 + src/languages/pt-BR.ts | 4 + src/languages/zh-hans.ts | 4 + src/libs/SearchParser/autocompleteParser.js | 389 +++++++++++------ src/libs/SearchParser/baseRules.peggy | 6 + src/libs/SearchParser/searchParser.js | 391 ++++++++++++------ src/libs/SearchParser/searchParser.peggy | 2 + src/libs/SearchUIUtils.ts | 123 +++++- src/pages/Search/SearchColumnsPage.tsx | 26 +- src/styles/utils/index.ts | 3 + src/types/onyx/SearchResults.ts | 14 + tests/unit/Search/ColumnAvailabilityTest.ts | 3 + tests/unit/Search/SearchQueryUtilsTest.ts | 35 ++ tests/unit/Search/SearchUIUtilsTest.ts | 36 ++ tests/unit/SearchParserTest.ts | 23 ++ tests/unit/hooks/useUpdateFilterQuery.test.ts | 22 + 34 files changed, 1159 insertions(+), 301 deletions(-) create mode 100644 src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx diff --git a/src/CONST/index.ts b/src/CONST/index.ts index e3658b132257..0a83dd586fef 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -7461,6 +7461,7 @@ const CONST = { WEEK: 'week', YEAR: 'year', QUARTER: 'quarter', + VIOLATION_APPROVER: 'violation-approver', }, /** * Single source of truth for which transaction-level columns are available in each column-picker surface: @@ -7783,6 +7784,13 @@ const CONST = { EXPENSES: this.TABLE_COLUMNS.GROUP_EXPENSES, TOTAL: this.TABLE_COLUMNS.GROUP_TOTAL, }, + VIOLATION_APPROVER: { + AVATAR: this.TABLE_COLUMNS.AVATAR, + VIOLATION_APPROVER: this.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, + EXPENSES: this.TABLE_COLUMNS.GROUP_EXPENSES, + APPROVAL_COUNT: this.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, + APPROVED_TOTAL: this.TABLE_COLUMNS.GROUP_APPROVED_TOTAL, + }, }; }, get TYPE_DEFAULT_COLUMNS() { @@ -7836,6 +7844,13 @@ const CONST = { WEEK: [this.TABLE_COLUMNS.GROUP_WEEK, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL], YEAR: [this.TABLE_COLUMNS.GROUP_YEAR, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL], QUARTER: [this.TABLE_COLUMNS.GROUP_QUARTER, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL], + VIOLATION_APPROVER: [ + this.TABLE_COLUMNS.AVATAR, + this.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, + this.TABLE_COLUMNS.GROUP_EXPENSES, + this.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, + this.TABLE_COLUMNS.GROUP_APPROVED_TOTAL, + ], }; }, BOOLEAN: { @@ -7955,6 +7970,9 @@ const CONST = { GROUP_WITHDRAWAL_STATUS: 'groupWithdrawalStatus', GROUP_AMOUNT_DEBITED: 'groupAmountDebited', GROUP_AMOUNT_REIMBURSED: 'groupAmountReimbursed', + GROUP_VIOLATION_APPROVER: 'groupViolationApprover', + GROUP_APPROVAL_COUNT: 'groupApprovalCount', + GROUP_APPROVED_TOTAL: 'groupApprovedTotal', }, SYNTAX_OPERATORS: { AND: 'and', @@ -8200,6 +8218,9 @@ const CONST = { [this.TABLE_COLUMNS.GROUP_WITHDRAWAL_STATUS]: 'group-withdrawal-status', [this.TABLE_COLUMNS.GROUP_AMOUNT_DEBITED]: 'group-amount-debited', [this.TABLE_COLUMNS.GROUP_AMOUNT_REIMBURSED]: 'group-amount-reimbursed', + [this.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER]: 'group-violation-approver', + [this.TABLE_COLUMNS.GROUP_APPROVAL_COUNT]: 'group-approval-count', + [this.TABLE_COLUMNS.GROUP_APPROVED_TOTAL]: 'group-approved-total', [this.TABLE_COLUMNS.AMOUNT_DEBITED]: 'amount-debited', [this.TABLE_COLUMNS.AMOUNT_REIMBURSED]: 'amount-reimbursed', }; diff --git a/src/components/Search/FilterDropdowns/DisplayPopup.tsx b/src/components/Search/FilterDropdowns/DisplayPopup.tsx index 55a52d0474c7..94a6ce0f1569 100644 --- a/src/components/Search/FilterDropdowns/DisplayPopup.tsx +++ b/src/components/Search/FilterDropdowns/DisplayPopup.tsx @@ -57,7 +57,7 @@ function DisplayPopup({queryJSON, searchResults, closeOverlay, onSort}: DisplayP | null >(null); - const groupBySections = getGroupBySections(translate); + const groupBySections = getGroupBySections(translate, queryJSON); const groupBy = groupBySections.flatMap((section) => section.options).find((option) => option.value === queryJSON.groupBy) ?? null; const viewOptions = getViewOptions(translate); const view = viewOptions.find((option) => option.value === queryJSON.view) ?? viewOptions.at(0); diff --git a/src/components/Search/SearchList/ListItem/GroupHeader.tsx b/src/components/Search/SearchList/ListItem/GroupHeader.tsx index a30dadc0bdb1..064da44a865f 100644 --- a/src/components/Search/SearchList/ListItem/GroupHeader.tsx +++ b/src/components/Search/SearchList/ListItem/GroupHeader.tsx @@ -52,6 +52,7 @@ import QuarterListItemHeader from './QuarterListItemHeader'; import ReportListItemHeader from './ReportListItemHeader'; import TagListItemHeader from './TagListItemHeader'; import {useGroupCheckboxState} from './useGroupChildren'; +import ViolationApproverListItemHeader from './ViolationApproverListItemHeader'; import WeekListItemHeader from './WeekListItemHeader'; import WithdrawalIDListItemHeader from './WithdrawalIDListItemHeader'; import YearListItemHeader from './YearListItemHeader'; @@ -321,6 +322,14 @@ function GroupHeader({ {...commonProps} /> ); + case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: + return ( + + ); default: return null; } diff --git a/src/components/Search/SearchList/ListItem/TransactionGroupListItem.tsx b/src/components/Search/SearchList/ListItem/TransactionGroupListItem.tsx index 1e17f785ecce..a60f2783a579 100644 --- a/src/components/Search/SearchList/ListItem/TransactionGroupListItem.tsx +++ b/src/components/Search/SearchList/ListItem/TransactionGroupListItem.tsx @@ -21,7 +21,7 @@ import type {TransactionPreviewData} from '@libs/actions/Search'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import type {ModifiedMouseEvent} from '@libs/Navigation/helpers/openInternalRouteInNewTab'; import {getLoginByAccountID} from '@libs/PersonalDetailsUtils'; -import {isTransactionDayGroupListItemType} from '@libs/SearchUIUtils'; +import {isTransactionDayGroupListItemType, isTransactionViolationApproverGroupListItemType} from '@libs/SearchUIUtils'; import {getVisibleTransactionViolations, isTransactionPendingDelete} from '@libs/TransactionUtils'; import variables from '@styles/variables'; @@ -70,6 +70,7 @@ import TagListItemHeader from './TagListItemHeader'; import TransactionGroupListExpandedItem from './TransactionGroupListExpanded'; import useGroupChildren from './useGroupChildren'; import useLiveRowCapabilities from './useLiveRowCapabilities'; +import ViolationApproverListItemHeader from './ViolationApproverListItemHeader'; import WeekListItemHeader from './WeekListItemHeader'; import WithdrawalIDListItemHeader from './WithdrawalIDListItemHeader'; import YearListItemHeader from './YearListItemHeader'; @@ -461,6 +462,25 @@ function TransactionGroupListItemImpl({ isExpanded={isExpanded} /> ), + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: (() => { + if (!isTransactionViolationApproverGroupListItemType(groupItem)) { + return null; + } + return ( + + ); + })(), }; if (searchType === CONST.SEARCH.DATA_TYPES.EXPENSE_REPORT) { diff --git a/src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx b/src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx new file mode 100644 index 000000000000..f7dfbc5d4528 --- /dev/null +++ b/src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx @@ -0,0 +1,200 @@ +import UserAvatar from '@components/Avatar/UserAvatar'; +import Checkbox from '@components/Checkbox'; +import type {SearchColumnType} from '@components/Search/types'; +import type {ListItem} from '@components/SelectionList/types'; +import TextWithTooltip from '@components/TextWithTooltip'; +import UserDetailsTooltip from '@components/UserDetailsTooltip'; + +import useLocalize from '@hooks/useLocalize'; +import useStyleUtils from '@hooks/useStyleUtils'; +import useThemeStyles from '@hooks/useThemeStyles'; + +import {temporaryGetDisplayNameOrDefault} from '@libs/PersonalDetailsUtils'; + +import CONST from '@src/CONST'; + +import type {ReactNode} from 'react'; + +import React from 'react'; +import {View} from 'react-native'; + +import type {TransactionViolationApproverGroupListItemType} from './types'; + +import ExpandCollapseArrowButton from './ExpandCollapseArrowButton'; +import TextCell from './TextCell'; +import TotalCell from './TotalCell'; + +type ViolationApproverListItemHeaderProps = { + violationApprover: TransactionViolationApproverGroupListItemType; + onCheckboxPress?: (item: ListItem) => void; + + /** Whether this section items disabled for selection */ + isDisabled?: boolean | null; + + /** Whether selecting multiple transactions at once is allowed */ + canSelectMultiple: boolean | undefined; + + /** Whether all transactions are selected */ + isSelectAllChecked?: boolean; + + /** Whether only some transactions are selected */ + isIndeterminate?: boolean; + + onDownArrowClick?: () => void; + + /** Whether the down arrow is expanded */ + isExpanded?: boolean; + + /** The visible columns for the header */ + columns?: SearchColumnType[]; + + isLargeScreenWidth?: boolean; +}; + +/** + * Kept non-generic so OXC's React Compiler can memoize the component. + * OXC bails on type params inside components ("Unsupported declaration type for hoisting"). + */ +function ViolationApproverListItemHeader({ + violationApprover: violationApproverItem, + onCheckboxPress, + isDisabled, + canSelectMultiple, + isSelectAllChecked, + isIndeterminate, + isExpanded, + onDownArrowClick, + columns, + isLargeScreenWidth, +}: ViolationApproverListItemHeaderProps) { + const styles = useThemeStyles(); + const StyleUtils = useStyleUtils(); + const {translate, formatPhoneNumber} = useLocalize(); + const formattedDisplayName = temporaryGetDisplayNameOrDefault({ + passedPersonalDetails: violationApproverItem, + translate, + formatPhoneNumber, + }); + const formattedLogin = formatPhoneNumber(violationApproverItem.login ?? ''); + + const columnComponents: Partial> = { + [CONST.SEARCH.TABLE_COLUMNS.AVATAR]: ( + + + + + + + + ), + [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER]: ( + + + + + + + ), + [CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES]: ( + + + + ), + [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT]: ( + + + + ), + [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL]: ( + + + + ), + }; + + return ( + + + + {!!canSelectMultiple && ( + onCheckboxPress?.(violationApproverItem)} + isChecked={isSelectAllChecked} + isIndeterminate={isIndeterminate} + disabled={!!isDisabled || violationApproverItem.isDisabledCheckbox} + accessibilityLabel={translate('common.select')} + containerStyle={styles.m0} + /> + )} + {!isLargeScreenWidth && ( + + + + + + + + + + + + )} + {!!isLargeScreenWidth && columns?.map((column) => columnComponents[column])} + + {!isLargeScreenWidth && ( + + + {!!onDownArrowClick && ( + + )} + + )} + + + ); +} + +export default ViolationApproverListItemHeader; diff --git a/src/components/Search/SearchList/ListItem/types.ts b/src/components/Search/SearchList/ListItem/types.ts index 9c23075d11ee..99f0054c0633 100644 --- a/src/components/Search/SearchList/ListItem/types.ts +++ b/src/components/Search/SearchList/ListItem/types.ts @@ -34,6 +34,7 @@ import type { SearchTagGroup, SearchTask, SearchTransactionAction, + SearchViolationApproverGroup, SearchWeekGroup, SearchWithdrawalIDGroup, SearchYearGroup, @@ -477,6 +478,12 @@ type TransactionQuarterGroupListItemType = TransactionGroupListItemType & {group sortKey: number; }; +type TransactionViolationApproverGroupListItemType = TransactionGroupListItemType & {groupedBy: typeof CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER} & PersonalDetails & + SearchViolationApproverGroup & { + /** Final and formatted approver name used for displaying and sorting */ + formattedViolationApprover?: string; + }; + type TransactionListItemProps = ListItemProps & SearchListActionProps & { /** Whether the item's action is loading */ @@ -543,6 +550,7 @@ type GroupHeaderItemType = | (TransactionWeekGroupListItemType & GroupHeaderListItemType) | (TransactionYearGroupListItemType & GroupHeaderListItemType) | (TransactionQuarterGroupListItemType & GroupHeaderListItemType) + | (TransactionViolationApproverGroupListItemType & GroupHeaderListItemType) | (TransactionGroupListItemType & GroupHeaderListItemType); type GroupChildrenContainerItemType = TransactionGroupListItemType & { @@ -600,6 +608,7 @@ export type { TransactionWeekGroupListItemType, TransactionYearGroupListItemType, TransactionQuarterGroupListItemType, + TransactionViolationApproverGroupListItemType, TransactionWithdrawalIDGroupListItemType, TransactionGroupListItemProps, TransactionGroupListExpandedProps, diff --git a/src/components/Search/SearchTableHeader.tsx b/src/components/Search/SearchTableHeader.tsx index b1477a3c0545..97018495a51a 100644 --- a/src/components/Search/SearchTableHeader.tsx +++ b/src/components/Search/SearchTableHeader.tsx @@ -513,6 +513,31 @@ const getTransactionGroupHeaders = (groupBy: SearchGroupBy, icons: SearchHeaderI }, ...commonGroupHeaders, ]; + case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: + return [ + { + columnName: CONST.SEARCH.TABLE_COLUMNS.AVATAR, + translationKey: undefined, + icon: icons.Profile, + isColumnSortable: false, + }, + { + columnName: CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, + translationKey: 'search.filters.groupBy.violation-approver', + isColumnSortable: true, + }, + groupExpensesHeader, + { + columnName: CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, + translationKey: 'search.filters.approvalCount', + isColumnSortable: true, + }, + { + columnName: CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL, + translationKey: 'search.filters.approvedTotal', + isColumnSortable: true, + }, + ]; default: return []; } diff --git a/src/components/Search/chartGroupByConfig.ts b/src/components/Search/chartGroupByConfig.ts index ebba66b83c34..6a74ff670e03 100644 --- a/src/components/Search/chartGroupByConfig.ts +++ b/src/components/Search/chartGroupByConfig.ts @@ -111,6 +111,11 @@ const CHART_GROUP_BY_CONFIG: Record = { return `date>=${start} date<=${end}`; }, }, + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: { + titleIconName: 'Users', + getLabel: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER ? (item.formattedViolationApprover ?? '') : ''), + getFilterQuery: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER ? `violation-approver:${item.accountID}` : ''), + }, }; export default CHART_GROUP_BY_CONFIG; diff --git a/src/components/Search/hooks/useUpdateFilterQuery.tsx b/src/components/Search/hooks/useUpdateFilterQuery.tsx index 5752151e3967..9fe72ec97a0f 100644 --- a/src/components/Search/hooks/useUpdateFilterQuery.tsx +++ b/src/components/Search/hooks/useUpdateFilterQuery.tsx @@ -9,6 +9,7 @@ import {markQueryAsRefinement} from '@libs/SearchQueryRefinement'; import {buildFilterQueryWithSortDefaults, buildSearchQueryJSON} from '@libs/SearchQueryUtils'; import {filterValidHasValues} from '@libs/SearchUIUtils'; +import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type {SearchAdvancedFiltersForm} from '@src/types/form'; import {getEmptyObject} from '@src/types/utils/EmptyObject'; @@ -37,6 +38,11 @@ function useUpdateFilterQuery(queryJSON: SearchQueryJSON | undefined) { updatedFilterFormValues.columns = []; } + if (updatedFilterFormValues.groupBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER && !updatedFilterFormValues.has?.includes(CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION)) { + updatedFilterFormValues.groupBy = undefined; + updatedFilterFormValues.columns = []; + } + return updatedFilterFormValues; } @@ -44,7 +50,10 @@ function useUpdateFilterQuery(queryJSON: SearchQueryJSON | undefined) { const queryString = buildFilterQueryWithSortDefaults( values, - {view: searchAdvancedFiltersForm.view, groupBy: searchAdvancedFiltersForm.groupBy}, + { + view: searchAdvancedFiltersForm.view, + groupBy: searchAdvancedFiltersForm.groupBy, + }, {sortBy: queryJSON?.sortBy, sortOrder: queryJSON?.sortOrder}, policies, ) ?? ''; @@ -57,14 +66,24 @@ function useUpdateFilterQuery(queryJSON: SearchQueryJSON | undefined) { const shouldResetSearchKey = !!values.type && values.type !== searchAdvancedFiltersForm.type; - Navigation.setParams({q: queryString, rawQuery: undefined, ...(shouldResetSearchKey && {searchKey: getSearchKeyForQuery(buildSearchQueryJSON(queryString))})}); + Navigation.setParams({ + q: queryString, + rawQuery: undefined, + ...(shouldResetSearchKey && { + searchKey: getSearchKeyForQuery(buildSearchQueryJSON(queryString)), + }), + }); } function updateFilterQueryParams(values: Partial) { setFilterQueryParams(getUpdatedFilterFormValues(searchAdvancedFiltersForm, values)); } - return {getUpdatedFilterFormValues, setFilterQueryParams, updateFilterQueryParams}; + return { + getUpdatedFilterFormValues, + setFilterQueryParams, + updateFilterQueryParams, + }; } export default useUpdateFilterQuery; diff --git a/src/components/Search/types.ts b/src/components/Search/types.ts index 068dd72ef120..a36b9e737dd2 100644 --- a/src/components/Search/types.ts +++ b/src/components/Search/types.ts @@ -28,6 +28,7 @@ import type { TransactionMonthGroupListItemType, TransactionQuarterGroupListItemType, TransactionTagGroupListItemType, + TransactionViolationApproverGroupListItemType, TransactionWeekGroupListItemType, TransactionWithdrawalIDGroupListItemType, TransactionYearGroupListItemType, @@ -179,20 +180,13 @@ type SearchWithdrawalStatus = Array>; type SyntaxFilterKey = ValueOf; -type SearchCustomColumnIds = - | ValueOf - | ValueOf - | ValueOf - | ValueOf - | ValueOf - | ValueOf - | ValueOf - | ValueOf - | ValueOf - | ValueOf - | ValueOf - | ValueOf - | ValueOf; +/** Column ids from one search column-picker map (`TYPE_CUSTOM_COLUMNS` or `GROUP_CUSTOM_COLUMNS`). */ +type CollectColumnIds = { + [K in keyof T]: ValueOf; +}[keyof T]; + +// The union of every type-picker and group-picker column, so a new group by picks up its columns without another manual member. +type SearchCustomColumnIds = CollectColumnIds | CollectColumnIds; type SearchQueryContextValue = { currentSearchHash: number; @@ -457,7 +451,8 @@ type GroupedItem = | TransactionMonthGroupListItemType | TransactionWeekGroupListItemType | TransactionYearGroupListItemType - | TransactionQuarterGroupListItemType; + | TransactionQuarterGroupListItemType + | TransactionViolationApproverGroupListItemType; type SearchChartDataRow = { /** The point plotted on the chart */ diff --git a/src/languages/de.ts b/src/languages/de.ts index 8c81ffbc2324..5adcb312ef24 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -9851,6 +9851,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc [CONST.SEARCH.GROUP_BY.WEEK]: 'Woche', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jahr', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quartal', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Verstoßgenehmiger', }, feed: 'Feed', withdrawalType: { @@ -9860,6 +9861,8 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc }, is: 'Ist', has: {submittedViolation: 'Eingereichter Verstoß', approvedViolation: 'Genehmigter Verstoß'}, + approvalCount: 'Anzahl der Genehmigungen', + approvedTotal: 'Genehmigter Gesamtbetrag', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Senden', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Genehmigen', @@ -9903,6 +9906,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc [CONST.SEARCH.GROUP_BY.WEEK]: 'Wochen', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jahre', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quartale', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Verstoßgenehmiger', }, moneyRequestReport: {emptyStateTitle: 'Noch keine Ausgaben', accessPlaceHolder: 'Für Details öffnen'}, noCategory: 'Keine Kategorie', diff --git a/src/languages/el.ts b/src/languages/el.ts index 6f4635c59470..16016f691a14 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -10060,6 +10060,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Εβδομάδα', [CONST.SEARCH.GROUP_BY.YEAR]: 'Έτος', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Τρίμηνο', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Εγκριτής παραβάσεων', }, feed: 'Ροή', withdrawalType: { @@ -10075,6 +10076,8 @@ ${reportName}`, [CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Εξαγωγή', }, has: {submittedViolation: 'Υποβληθείσα παράβαση', approvedViolation: 'Εγκεκριμένη παράβαση'}, + approvalCount: 'Αριθμός εγκρίσεων', + approvedTotal: 'Εγκεκριμένο σύνολο', filterType: { label: 'Τύπος φίλτρου', has: {positive: 'έχει', negative: 'δεν έχει'}, @@ -10116,6 +10119,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Εβδομάδες', [CONST.SEARCH.GROUP_BY.YEAR]: 'Έτη', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Τρίμηνα', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Εγκριτές παραβάσεων', }, moneyRequestReport: { emptyStateTitle: 'Καμία δαπάνη ακόμη', diff --git a/src/languages/en.ts b/src/languages/en.ts index e6238285d594..a6f5bd88227e 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -10051,6 +10051,7 @@ const translations = { [CONST.SEARCH.GROUP_BY.WEEK]: 'Week', [CONST.SEARCH.GROUP_BY.YEAR]: 'Year', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quarter', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Violation approver', }, feed: 'Feed', transactionStatus: { @@ -10069,6 +10070,8 @@ const translations = { submittedViolation: 'Submitted violation', approvedViolation: 'Approved violation', }, + approvalCount: 'Approval count', + approvedTotal: 'Approved total', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Submit', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Approve', @@ -10116,6 +10119,7 @@ const translations = { [CONST.SEARCH.GROUP_BY.WEEK]: 'Weeks', [CONST.SEARCH.GROUP_BY.YEAR]: 'Years', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quarters', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Violation approvers', }, moneyRequestReport: { emptyStateTitle: 'No expenses yet', diff --git a/src/languages/es.ts b/src/languages/es.ts index 080f2174e63f..5eca947d3101 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -9706,6 +9706,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Semana', [CONST.SEARCH.GROUP_BY.YEAR]: 'Año', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprobador de infracciones', }, feed: 'Feed', withdrawalType: { @@ -9715,6 +9716,8 @@ ${reportName}`, }, is: 'Es', has: {submittedViolation: 'Infracción enviada', approvedViolation: 'Infracción aprobada'}, + approvalCount: 'Número de aprobaciones', + approvedTotal: 'Total aprobado', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Enviar', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Aprobar', @@ -9744,6 +9747,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Semanas', [CONST.SEARCH.GROUP_BY.YEAR]: 'Años', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestres', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprobadores de infracciones', }, moneyRequestReport: {emptyStateTitle: 'Aún no hay gastos', accessPlaceHolder: 'Abrir para ver detalles'}, noCategory: 'Sin categoría', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index b5bcd63e4b41..22f5189b0442 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -9876,6 +9876,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e [CONST.SEARCH.GROUP_BY.WEEK]: 'Semaine', [CONST.SEARCH.GROUP_BY.YEAR]: 'Année', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approbateur des violations', }, feed: 'Fil', withdrawalType: { @@ -9885,6 +9886,8 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e }, is: 'Est', has: {submittedViolation: 'Infraction soumise', approvedViolation: 'Violation approuvée'}, + approvalCount: 'Nombre d’approbations', + approvedTotal: 'Total approuvé', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Soumettre', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Approuver', @@ -9928,6 +9931,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e [CONST.SEARCH.GROUP_BY.WEEK]: 'Semaines', [CONST.SEARCH.GROUP_BY.YEAR]: 'Années', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestres', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approbateurs des violations', }, moneyRequestReport: {emptyStateTitle: 'Aucune dépense pour l’instant', accessPlaceHolder: 'Ouvrir pour plus de détails'}, noCategory: 'Aucune catégorie', diff --git a/src/languages/it.ts b/src/languages/it.ts index 56fe331ecfa1..9b2b9796a2f1 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -9806,6 +9806,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Settimana', [CONST.SEARCH.GROUP_BY.YEAR]: 'Anno', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approvatore delle violazioni', }, feed: 'Feed', withdrawalType: { @@ -9815,6 +9816,8 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, }, is: 'È', has: {submittedViolation: 'Violazione inviata', approvedViolation: 'Violazione approvata'}, + approvalCount: 'Numero di approvazioni', + approvedTotal: 'Totale approvato', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Invia', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Approva', @@ -9858,6 +9861,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Settimane', [CONST.SEARCH.GROUP_BY.YEAR]: 'Anni', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestri', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approvatori delle violazioni', }, moneyRequestReport: {emptyStateTitle: 'Nessuna spesa ancora', accessPlaceHolder: 'Apri per i dettagli'}, noCategory: 'Nessuna categoria', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 7850d66531b1..66e349c19b7d 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -9667,6 +9667,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: '週', [CONST.SEARCH.GROUP_BY.YEAR]: '年', [CONST.SEARCH.GROUP_BY.QUARTER]: '四半期', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: '違反承認者', }, feed: 'フィード', withdrawalType: { @@ -9676,6 +9677,8 @@ ${reportName}`, }, is: 'は', has: {submittedViolation: '違反を送信しました', approvedViolation: '承認済みの違反'}, + approvalCount: '承認件数', + approvedTotal: '承認合計', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: '送信', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: '承認', @@ -9713,6 +9716,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: '週数', [CONST.SEARCH.GROUP_BY.YEAR]: '年数', [CONST.SEARCH.GROUP_BY.QUARTER]: '四半期', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: '違反承認者', }, moneyRequestReport: {emptyStateTitle: 'まだ経費がありません', accessPlaceHolder: '詳細を開く'}, noCategory: 'カテゴリなし', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 6bb1673c11a2..0cb310978151 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -9774,6 +9774,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Week', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jaar', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartaal', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Overtredingsgoedkeurder', }, feed: 'Feed', withdrawalType: { @@ -9783,6 +9784,8 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, }, is: 'Is', has: {submittedViolation: 'Ingediende overtreding', approvedViolation: 'Goedgekeurde schending'}, + approvalCount: 'Aantal goedkeuringen', + approvedTotal: 'Goedgekeurd totaal', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Verzenden', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Goedkeuren', @@ -9870,6 +9873,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Weken', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jaren', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartalen', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Overtredingsgoedkeurders', }, spendOverTime: 'Uitgaven in de tijd', tabs: { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index fcc5823641ae..b80f88e553a4 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -9790,6 +9790,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Tydzień', [CONST.SEARCH.GROUP_BY.YEAR]: 'Rok', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartał', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Osoba zatwierdzająca naruszenia', }, feed: 'Kanał', withdrawalType: { @@ -9799,6 +9800,8 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, }, is: 'Jest', has: {submittedViolation: 'Zgłoszone naruszenie', approvedViolation: 'Zatwierdzone naruszenie'}, + approvalCount: 'Liczba zatwierdzeń', + approvedTotal: 'Zatwierdzona suma', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Wyślij', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Zatwierdź', @@ -9842,6 +9845,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Tygodnie', [CONST.SEARCH.GROUP_BY.YEAR]: 'Lata', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartały', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Osoby zatwierdzające naruszenia', }, moneyRequestReport: {emptyStateTitle: 'Brak wydatków', accessPlaceHolder: 'Otwórz, aby zobaczyć szczegóły'}, noCategory: 'Brak kategorii', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index b5ee0d2ded75..b4448548159b 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -9772,6 +9772,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Semana', [CONST.SEARCH.GROUP_BY.YEAR]: 'Ano', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprovador de violações', }, feed: 'Feed', withdrawalType: { @@ -9781,6 +9782,8 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, }, is: 'É', has: {submittedViolation: 'Violação enviada', approvedViolation: 'Violação aprovada'}, + approvalCount: 'Contagem de aprovações', + approvedTotal: 'Total aprovado', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Enviar', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Aprovar', @@ -9864,6 +9867,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Semanas', [CONST.SEARCH.GROUP_BY.YEAR]: 'Anos', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestres', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprovadores de violações', }, moneyRequestReport: {emptyStateTitle: 'Ainda não há despesas', accessPlaceHolder: 'Abrir para ver detalhes'}, errors: { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index d7ca18f91645..5951d57667ea 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -9403,6 +9403,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: '周', [CONST.SEARCH.GROUP_BY.YEAR]: '年份', [CONST.SEARCH.GROUP_BY.QUARTER]: '季度', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: '违规审批人', }, feed: '动态', withdrawalType: { @@ -9412,6 +9413,8 @@ ${reportName}`, }, is: '是', has: {submittedViolation: '已提交违规', approvedViolation: '已批准违规'}, + approvalCount: '审批次数', + approvedTotal: '已审批总额', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: '提交', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: '批准', @@ -9449,6 +9452,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: '周', [CONST.SEARCH.GROUP_BY.YEAR]: '年', [CONST.SEARCH.GROUP_BY.QUARTER]: '季度', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: '违规审批人', }, moneyRequestReport: {emptyStateTitle: '暂时没有报销费用', accessPlaceHolder: '展开查看详情'}, noCategory: '无类别', diff --git a/src/libs/SearchParser/autocompleteParser.js b/src/libs/SearchParser/autocompleteParser.js index aff5fc529fc3..0ef4f2d71f33 100644 --- a/src/libs/SearchParser/autocompleteParser.js +++ b/src/libs/SearchParser/autocompleteParser.js @@ -301,15 +301,18 @@ function peg$parse(input, options) { var peg$c115 = "group-week"; var peg$c116 = "group-year"; var peg$c117 = "group-quarter"; - var peg$c118 = "!="; - var peg$c119 = ">="; - var peg$c120 = ">"; - var peg$c121 = "<="; - var peg$c122 = "<"; - var peg$c123 = "\\"; - var peg$c124 = "\u201C"; - var peg$c125 = "\u201D"; - var peg$c126 = "\""; + var peg$c118 = "group-violation-approver"; + var peg$c119 = "group-approval-count"; + var peg$c120 = "group-approved-total"; + var peg$c121 = "!="; + var peg$c122 = ">="; + var peg$c123 = ">"; + var peg$c124 = "<="; + var peg$c125 = "<"; + var peg$c126 = "\\"; + var peg$c127 = "\u201C"; + var peg$c128 = "\u201D"; + var peg$c129 = "\""; var peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; var peg$r1 = /^[:=]/; @@ -448,31 +451,34 @@ function peg$parse(input, options) { var peg$e119 = peg$literalExpectation("group-week", true); var peg$e120 = peg$literalExpectation("group-year", true); var peg$e121 = peg$literalExpectation("group-quarter", true); - var peg$e122 = peg$otherExpectation("operator"); - var peg$e123 = peg$literalExpectation("!=", false); - var peg$e124 = peg$literalExpectation(">=", false); - var peg$e125 = peg$literalExpectation(">", false); - var peg$e126 = peg$literalExpectation("<=", false); - var peg$e127 = peg$literalExpectation("<", false); - var peg$e128 = peg$literalExpectation("\\", false); - var peg$e129 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); - var peg$e130 = peg$otherExpectation("word"); - var peg$e131 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e132 = peg$otherExpectation("whitespace"); - var peg$e133 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e134 = peg$otherExpectation("quote"); - var peg$e135 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e136 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e137 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e138 = peg$literalExpectation("\u201C", false); - var peg$e139 = peg$literalExpectation("\u201D", false); - var peg$e140 = peg$literalExpectation("\"", false); - var peg$e141 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e142 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e143 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e144 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e145 = peg$classExpectation([","], false, false); - var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e122 = peg$literalExpectation("group-violation-approver", true); + var peg$e123 = peg$literalExpectation("group-approval-count", true); + var peg$e124 = peg$literalExpectation("group-approved-total", true); + var peg$e125 = peg$otherExpectation("operator"); + var peg$e126 = peg$literalExpectation("!=", false); + var peg$e127 = peg$literalExpectation(">=", false); + var peg$e128 = peg$literalExpectation(">", false); + var peg$e129 = peg$literalExpectation("<=", false); + var peg$e130 = peg$literalExpectation("<", false); + var peg$e131 = peg$literalExpectation("\\", false); + var peg$e132 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); + var peg$e133 = peg$otherExpectation("word"); + var peg$e134 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e135 = peg$otherExpectation("whitespace"); + var peg$e136 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e137 = peg$otherExpectation("quote"); + var peg$e138 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e139 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e140 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e141 = peg$literalExpectation("\u201C", false); + var peg$e142 = peg$literalExpectation("\u201D", false); + var peg$e143 = peg$literalExpectation("\"", false); + var peg$e144 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e145 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e147 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e148 = peg$classExpectation([","], false, false); + var peg$e149 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(ranges) { return { autocomplete, ranges }; }; var peg$f1 = function(filters) { return filters.filter(Boolean).flat(); }; @@ -637,33 +643,36 @@ function peg$parse(input, options) { var peg$f102 = function() { return "groupweek"; }; var peg$f103 = function() { return "groupyear"; }; var peg$f104 = function() { return "groupquarter"; }; - var peg$f105 = function() { return "eq"; }; - var peg$f106 = function() { return "neq"; }; - var peg$f107 = function() { return "gte"; }; - var peg$f108 = function() { return "gt"; }; - var peg$f109 = function() { return "lte"; }; - var peg$f110 = function() { return "lt"; }; - var peg$f111 = function(o) { + var peg$f105 = function() { return "groupViolationApprover"; }; + var peg$f106 = function() { return "groupApprovalCount"; }; + var peg$f107 = function() { return "groupApprovedTotal"; }; + var peg$f108 = function() { return "eq"; }; + var peg$f109 = function() { return "neq"; }; + var peg$f110 = function() { return "gte"; }; + var peg$f111 = function() { return "gt"; }; + var peg$f112 = function() { return "lte"; }; + var peg$f113 = function() { return "lt"; }; + var peg$f114 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f112 = function(c) { return c; }; - var peg$f113 = function(chars) { return chars.join("").trim(); }; - var peg$f114 = function() { + var peg$f115 = function(c) { return c; }; + var peg$f116 = function(chars) { return chars.join("").trim(); }; + var peg$f117 = function() { isColumnsContext = false; return "and"; }; - var peg$f115 = function() { return expectingNestedQuote; }; - var peg$f116 = function(start, inner, end) { //handle no-breaking space + var peg$f118 = function() { return expectingNestedQuote; }; + var peg$f119 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f117 = function(start) {return "“"}; - var peg$f118 = function(start) {return "”"}; - var peg$f119 = function(start) {return "\""}; - var peg$f120 = function(start, inner, end) { + var peg$f120 = function(start) {return "“"}; + var peg$f121 = function(start) {return "”"}; + var peg$f122 = function(start) {return "\""}; + var peg$f123 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -2875,6 +2884,15 @@ function peg$parse(input, options) { s0 = peg$parsegroupYear(); if (s0 === peg$FAILED) { s0 = peg$parsegroupQuarter(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupViolationApprover(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupApprovalCount(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupApprovedTotal(); + } + } + } } } } @@ -4272,6 +4290,117 @@ function peg$parse(input, options) { return s0; } + function peg$parsegroupViolationApprover() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 24); + if (s1.toLowerCase() === peg$c118) { + peg$currPos += 24; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e122); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f105(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupApprovalCount() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 20); + if (s1.toLowerCase() === peg$c119) { + peg$currPos += 20; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e123); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f106(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupApprovedTotal() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 20); + if (s1.toLowerCase() === peg$c120) { + peg$currPos += 20; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e124); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f107(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + function peg$parseoperator() { var s0, s1; @@ -4286,77 +4415,77 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f105(); + s1 = peg$f108(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c118) { - s1 = peg$c118; + if (input.substr(peg$currPos, 2) === peg$c121) { + s1 = peg$c121; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f106(); + s1 = peg$f109(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c119) { - s1 = peg$c119; + if (input.substr(peg$currPos, 2) === peg$c122) { + s1 = peg$c122; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f107(); + s1 = peg$f110(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c120; + s1 = peg$c123; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f108(); + s1 = peg$f111(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c121) { - s1 = peg$c121; + if (input.substr(peg$currPos, 2) === peg$c124) { + s1 = peg$c124; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f109(); + s1 = peg$f112(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c122; + s1 = peg$c125; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f110(); + s1 = peg$f113(); } s0 = s1; } @@ -4367,7 +4496,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } return s0; @@ -4380,7 +4509,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f111(s1); + s1 = peg$f114(s1); } s0 = s1; @@ -4392,11 +4521,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c123; + s1 = peg$c126; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s1 !== peg$FAILED) { s2 = input.charAt(peg$currPos); @@ -4404,11 +4533,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f112(s2); + s0 = peg$f115(s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4434,7 +4563,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } } if (s2 !== peg$FAILED) { @@ -4447,7 +4576,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } } } @@ -4456,13 +4585,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f113(s1); + s1 = peg$f116(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } return s0; @@ -4474,7 +4603,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f114(); + s1 = peg$f117(); s0 = s1; return s0; @@ -4490,7 +4619,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4499,12 +4628,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } return s0; } @@ -4514,7 +4643,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f115(); + s1 = peg$f118(); if (s1) { s1 = undefined; } else { @@ -4551,7 +4680,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4560,7 +4689,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } s2 = input.charAt(peg$currPos); @@ -4568,7 +4697,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4579,7 +4708,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } while (s4 !== peg$FAILED) { @@ -4591,7 +4720,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } } @@ -4600,7 +4729,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4609,7 +4738,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4618,11 +4747,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } } peg$savedPos = s0; - s0 = peg$f116(s1, s3, s5); + s0 = peg$f119(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4634,7 +4763,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } return s0; @@ -4651,7 +4780,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4660,7 +4789,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } s2 = input.charAt(peg$currPos); @@ -4668,7 +4797,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4679,7 +4808,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4695,15 +4824,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c124; + s6 = peg$c127; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f117(s1); + s4 = peg$f120(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4726,15 +4855,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c125; + s6 = peg$c128; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f118(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4757,15 +4886,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c126; + s6 = peg$c129; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f119(s1); + s4 = peg$f122(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4787,7 +4916,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4803,15 +4932,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c124; + s6 = peg$c127; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f117(s1); + s4 = peg$f120(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4834,15 +4963,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c125; + s6 = peg$c128; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f118(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4865,15 +4994,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c126; + s6 = peg$c129; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f119(s1); + s4 = peg$f122(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4890,7 +5019,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f120(s1, s3, s4); + s0 = peg$f123(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4902,7 +5031,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } return s0; @@ -4917,7 +5046,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4955,7 +5084,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4964,7 +5093,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } } s2 = []; @@ -4973,7 +5102,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -4982,7 +5111,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } } s3 = []; @@ -4991,7 +5120,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -5000,7 +5129,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } } s4 = peg$parseoperator(); @@ -5019,7 +5148,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5028,7 +5157,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } } s2 = peg$currPos; @@ -5075,7 +5204,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } } } @@ -5091,7 +5220,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } if (s0 === peg$FAILED) { s0 = peg$currPos; diff --git a/src/libs/SearchParser/baseRules.peggy b/src/libs/SearchParser/baseRules.peggy index 5077ae7f8862..01455557adcd 100644 --- a/src/libs/SearchParser/baseRules.peggy +++ b/src/libs/SearchParser/baseRules.peggy @@ -149,6 +149,9 @@ columnsValues / groupWeek / groupYear / groupQuarter + / groupViolationApprover + / groupApprovalCount + / groupApprovedTotal perDiem = "per-diem"i &wordBoundary { return "perDiem"; } draft = ("drafts"i / "draft"i) &wordBoundary { return "drafts"; } @@ -188,6 +191,9 @@ groupMonth = "group-month"i &wordBoundary { return "gr groupWeek = "group-week"i &wordBoundary { return "groupweek"; } groupYear = "group-year"i &wordBoundary { return "groupyear"; } groupQuarter = "group-quarter"i &wordBoundary { return "groupquarter"; } +groupViolationApprover = "group-violation-approver"i &wordBoundary { return "groupViolationApprover"; } +groupApprovalCount = "group-approval-count"i &wordBoundary { return "groupApprovalCount"; } +groupApprovedTotal = "group-approved-total"i &wordBoundary { return "groupApprovedTotal"; } operator "operator" diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index edaa43a60119..9189b46dcfe9 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -302,15 +302,18 @@ function peg$parse(input, options) { var peg$c115 = "group-week"; var peg$c116 = "group-year"; var peg$c117 = "group-quarter"; - var peg$c118 = "!="; - var peg$c119 = ">="; - var peg$c120 = ">"; - var peg$c121 = "<="; - var peg$c122 = "<"; - var peg$c123 = "\\"; - var peg$c124 = "\u201C"; - var peg$c125 = "\u201D"; - var peg$c126 = "\""; + var peg$c118 = "group-violation-approver"; + var peg$c119 = "group-approval-count"; + var peg$c120 = "group-approved-total"; + var peg$c121 = "!="; + var peg$c122 = ">="; + var peg$c123 = ">"; + var peg$c124 = "<="; + var peg$c125 = "<"; + var peg$c126 = "\\"; + var peg$c127 = "\u201C"; + var peg$c128 = "\u201D"; + var peg$c129 = "\""; var peg$r0 = /^[^ \t\r\n\xA0]/; var peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; @@ -452,31 +455,34 @@ function peg$parse(input, options) { var peg$e121 = peg$literalExpectation("group-week", true); var peg$e122 = peg$literalExpectation("group-year", true); var peg$e123 = peg$literalExpectation("group-quarter", true); - var peg$e124 = peg$otherExpectation("operator"); - var peg$e125 = peg$literalExpectation("!=", false); - var peg$e126 = peg$literalExpectation(">=", false); - var peg$e127 = peg$literalExpectation(">", false); - var peg$e128 = peg$literalExpectation("<=", false); - var peg$e129 = peg$literalExpectation("<", false); - var peg$e130 = peg$literalExpectation("\\", false); - var peg$e131 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); - var peg$e132 = peg$otherExpectation("word"); - var peg$e133 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e134 = peg$otherExpectation("whitespace"); - var peg$e135 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e136 = peg$otherExpectation("quote"); - var peg$e137 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e138 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e139 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e140 = peg$literalExpectation("\u201C", false); - var peg$e141 = peg$literalExpectation("\u201D", false); - var peg$e142 = peg$literalExpectation("\"", false); - var peg$e143 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e144 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e145 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e147 = peg$classExpectation([","], false, false); - var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e124 = peg$literalExpectation("group-violation-approver", true); + var peg$e125 = peg$literalExpectation("group-approval-count", true); + var peg$e126 = peg$literalExpectation("group-approved-total", true); + var peg$e127 = peg$otherExpectation("operator"); + var peg$e128 = peg$literalExpectation("!=", false); + var peg$e129 = peg$literalExpectation(">=", false); + var peg$e130 = peg$literalExpectation(">", false); + var peg$e131 = peg$literalExpectation("<=", false); + var peg$e132 = peg$literalExpectation("<", false); + var peg$e133 = peg$literalExpectation("\\", false); + var peg$e134 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); + var peg$e135 = peg$otherExpectation("word"); + var peg$e136 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e137 = peg$otherExpectation("whitespace"); + var peg$e138 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e139 = peg$otherExpectation("quote"); + var peg$e140 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e141 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e142 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e143 = peg$literalExpectation("\u201C", false); + var peg$e144 = peg$literalExpectation("\u201D", false); + var peg$e145 = peg$literalExpectation("\"", false); + var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e147 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e149 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e150 = peg$classExpectation([","], false, false); + var peg$e151 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(filters) { return applyDefaults(filters); }; var peg$f1 = function(head, tail) { @@ -663,33 +669,36 @@ function peg$parse(input, options) { var peg$f102 = function() { return "groupweek"; }; var peg$f103 = function() { return "groupyear"; }; var peg$f104 = function() { return "groupquarter"; }; - var peg$f105 = function() { return "eq"; }; - var peg$f106 = function() { return "neq"; }; - var peg$f107 = function() { return "gte"; }; - var peg$f108 = function() { return "gt"; }; - var peg$f109 = function() { return "lte"; }; - var peg$f110 = function() { return "lt"; }; - var peg$f111 = function(o) { + var peg$f105 = function() { return "groupViolationApprover"; }; + var peg$f106 = function() { return "groupApprovalCount"; }; + var peg$f107 = function() { return "groupApprovedTotal"; }; + var peg$f108 = function() { return "eq"; }; + var peg$f109 = function() { return "neq"; }; + var peg$f110 = function() { return "gte"; }; + var peg$f111 = function() { return "gt"; }; + var peg$f112 = function() { return "lte"; }; + var peg$f113 = function() { return "lt"; }; + var peg$f114 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f112 = function(c) { return c; }; - var peg$f113 = function(chars) { return chars.join("").trim(); }; - var peg$f114 = function() { + var peg$f115 = function(c) { return c; }; + var peg$f116 = function(chars) { return chars.join("").trim(); }; + var peg$f117 = function() { isColumnsContext = false; return "and"; }; - var peg$f115 = function() { return expectingNestedQuote; }; - var peg$f116 = function(start, inner, end) { //handle no-breaking space + var peg$f118 = function() { return expectingNestedQuote; }; + var peg$f119 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f117 = function(start) {return "“"}; - var peg$f118 = function(start) {return "”"}; - var peg$f119 = function(start) {return "\""}; - var peg$f120 = function(start, inner, end) { + var peg$f120 = function(start) {return "“"}; + var peg$f121 = function(start) {return "”"}; + var peg$f122 = function(start) {return "\""}; + var peg$f123 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -3056,6 +3065,15 @@ function peg$parse(input, options) { s0 = peg$parsegroupYear(); if (s0 === peg$FAILED) { s0 = peg$parsegroupQuarter(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupViolationApprover(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupApprovalCount(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupApprovedTotal(); + } + } + } } } } @@ -4453,6 +4471,117 @@ function peg$parse(input, options) { return s0; } + function peg$parsegroupViolationApprover() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 24); + if (s1.toLowerCase() === peg$c118) { + peg$currPos += 24; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e124); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f105(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupApprovalCount() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 20); + if (s1.toLowerCase() === peg$c119) { + peg$currPos += 20; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e125); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f106(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupApprovedTotal() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 20); + if (s1.toLowerCase() === peg$c120) { + peg$currPos += 20; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e126); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f107(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + function peg$parseoperator() { var s0, s1; @@ -4467,77 +4596,77 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f105(); + s1 = peg$f108(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c118) { - s1 = peg$c118; + if (input.substr(peg$currPos, 2) === peg$c121) { + s1 = peg$c121; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f106(); + s1 = peg$f109(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c119) { - s1 = peg$c119; + if (input.substr(peg$currPos, 2) === peg$c122) { + s1 = peg$c122; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f107(); + s1 = peg$f110(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c120; + s1 = peg$c123; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f108(); + s1 = peg$f111(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c121) { - s1 = peg$c121; + if (input.substr(peg$currPos, 2) === peg$c124) { + s1 = peg$c124; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f109(); + s1 = peg$f112(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c122; + s1 = peg$c125; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f110(); + s1 = peg$f113(); } s0 = s1; } @@ -4548,7 +4677,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } return s0; @@ -4561,7 +4690,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f111(s1); + s1 = peg$f114(s1); } s0 = s1; @@ -4573,11 +4702,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c123; + s1 = peg$c126; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } if (s1 !== peg$FAILED) { s2 = input.charAt(peg$currPos); @@ -4585,11 +4714,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f112(s2); + s0 = peg$f115(s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4615,7 +4744,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } } if (s2 !== peg$FAILED) { @@ -4628,7 +4757,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } } } @@ -4637,13 +4766,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f113(s1); + s1 = peg$f116(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } return s0; @@ -4655,7 +4784,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f114(); + s1 = peg$f117(); s0 = s1; return s0; @@ -4671,7 +4800,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4680,12 +4809,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } return s0; } @@ -4695,7 +4824,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f115(); + s1 = peg$f118(); if (s1) { s1 = undefined; } else { @@ -4732,7 +4861,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4741,7 +4870,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } s2 = input.charAt(peg$currPos); @@ -4749,7 +4878,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4760,7 +4889,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } } while (s4 !== peg$FAILED) { @@ -4772,7 +4901,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } } } @@ -4781,7 +4910,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4790,7 +4919,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4799,11 +4928,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } } peg$savedPos = s0; - s0 = peg$f116(s1, s3, s5); + s0 = peg$f119(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4815,7 +4944,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } return s0; @@ -4832,7 +4961,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4841,7 +4970,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } s2 = input.charAt(peg$currPos); @@ -4849,7 +4978,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4860,7 +4989,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4876,15 +5005,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c124; + s6 = peg$c127; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f117(s1); + s4 = peg$f120(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4907,15 +5036,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c125; + s6 = peg$c128; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f118(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4938,15 +5067,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c126; + s6 = peg$c129; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f119(s1); + s4 = peg$f122(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4968,7 +5097,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4984,15 +5113,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c124; + s6 = peg$c127; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f117(s1); + s4 = peg$f120(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5015,15 +5144,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c125; + s6 = peg$c128; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f118(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5046,15 +5175,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c126; + s6 = peg$c129; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f119(s1); + s4 = peg$f122(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5071,7 +5200,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f120(s1, s3, s4); + s0 = peg$f123(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -5083,7 +5212,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } return s0; @@ -5098,7 +5227,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -5136,7 +5265,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5145,7 +5274,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } } s2 = []; @@ -5154,7 +5283,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -5163,7 +5292,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } } s3 = []; @@ -5172,7 +5301,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -5181,7 +5310,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } } s4 = peg$parseoperator(); @@ -5200,7 +5329,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5209,7 +5338,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } } s2 = peg$currPos; @@ -5256,7 +5385,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e150); } } } } @@ -5272,7 +5401,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e151); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -5309,6 +5438,7 @@ function peg$parse(input, options) { week: "groupweek", year: "groupyear", quarter: "groupquarter", + "violation-approver": "groupExpenses", }; const GROUP_BY_DEFAULT_SORT_ORDER = { @@ -5323,6 +5453,7 @@ function peg$parse(input, options) { week: "desc", year: "desc", quarter: "desc", + "violation-approver": "desc", }; const DEFAULT_SORT_BY_VALUES = new Set([...Object.values(GROUP_BY_DEFAULT_SORT), "date"]); diff --git a/src/libs/SearchParser/searchParser.peggy b/src/libs/SearchParser/searchParser.peggy index 09585572ecd6..6785990e8c99 100644 --- a/src/libs/SearchParser/searchParser.peggy +++ b/src/libs/SearchParser/searchParser.peggy @@ -40,6 +40,7 @@ week: "groupweek", year: "groupyear", quarter: "groupquarter", + "violation-approver": "groupExpenses", }; const GROUP_BY_DEFAULT_SORT_ORDER = { @@ -54,6 +55,7 @@ week: "desc", year: "desc", quarter: "desc", + "violation-approver": "desc", }; const DEFAULT_SORT_BY_VALUES = new Set([...Object.values(GROUP_BY_DEFAULT_SORT), "date"]); diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 13e142a428c7..8130e33a8510 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -24,6 +24,7 @@ import type { TransactionQuarterGroupListItemType, TransactionReportGroupListItemType, TransactionTagGroupListItemType, + TransactionViolationApproverGroupListItemType, TransactionWeekGroupListItemType, TransactionWithdrawalIDGroupListItemType, TransactionYearGroupListItemType, @@ -277,6 +278,7 @@ type TransactionMonthGroupSorting = ColumnSortMapping; type TransactionYearGroupSorting = ColumnSortMapping; type TransactionQuarterGroupSorting = ColumnSortMapping; +type TransactionViolationApproverGroupSorting = ColumnSortMapping; type GetReportSectionsParams = { data: OnyxTypes.SearchResults['data']; @@ -446,6 +448,14 @@ const transactionQuarterGroupColumnNamesToSortingProperty: TransactionQuarterGro ...transactionGroupBaseSortingProperties, }; +const transactionViolationApproverGroupColumnNamesToSortingProperty: TransactionViolationApproverGroupSorting = { + [CONST.SEARCH.TABLE_COLUMNS.AVATAR]: null, + [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER]: 'formattedViolationApprover' as const, + [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT]: 'approvalCount' as const, + [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL]: 'approvedTotal' as const, + ...transactionGroupBaseSortingProperties, +}; + type TaskStatusPredicate = (taskReport?: OnyxTypes.Report | SearchTask) => boolean; const taskStatusActionMapping: Record = { @@ -954,6 +964,10 @@ function isTransactionQuarterGroupListItemType(item: ListItem): item is Transact return isTransactionGroupListItemType(item) && 'groupedBy' in item && item.groupedBy === CONST.SEARCH.GROUP_BY.QUARTER; } +function isTransactionViolationApproverGroupListItemType(item: ListItem): item is TransactionViolationApproverGroupListItemType { + return isTransactionGroupListItemType(item) && 'groupedBy' in item && item.groupedBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER; +} + /** * Type guard that checks if a list of search items contains grouped transaction data. * When a search has a groupBy parameter, all items share the same shape, so checking the first element is sufficient. @@ -3150,6 +3164,20 @@ function getActiveGroupSearchHashes(data: OnyxTypes.SearchResults['data'] | unde } break; } + case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: { + if ('approvalCount' in group && typeof group.accountID === 'number') { + transactionsQueryJSON = buildSearchQueryJSON( + `${buildSearchQueryString({ + ...queryJSON, + groupBy: undefined, + limit: undefined, + sortBy: CONST.SEARCH.TABLE_COLUMNS.DATE, + sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + })} violation-approver:${group.accountID}`, + ); + } + break; + } default: break; } @@ -3659,6 +3687,58 @@ function getQuarterSections( return [quarterSectionsValues, quarterSectionsValues.length, hasDeletedTransactionInData(data)]; } +/** + * @private + * Organizes data into List Sections grouped by violation approver for display. + * + * Do not use directly, use only via `getSections()` facade. + */ +function getViolationApproverSections( + data: OnyxTypes.SearchResults['data'], + queryJSON: SearchQueryJSON | undefined, + formatPhoneNumber: LocaleContextProps['formatPhoneNumber'], + translate: LocalizedTranslate, + onyxPersonalDetailsList?: OnyxTypes.PersonalDetailsList, +): [TransactionViolationApproverGroupListItemType[], number, boolean] { + const violationApproverSections: Record = {}; + + for (const key in data) { + if (isGroupEntry(key)) { + const violationApproverGroup = data[key]; + if (!('accountID' in violationApproverGroup) || !violationApproverGroup.accountID || !('approvalCount' in violationApproverGroup)) { + continue; + } + + const personalDetails = data.personalDetailsList?.[violationApproverGroup.accountID] ?? onyxPersonalDetailsList?.[violationApproverGroup.accountID] ?? emptyPersonalDetails; + const transactionsQueryJSON = + queryJSON && violationApproverGroup.accountID + ? buildSearchQueryJSON( + `${buildSearchQueryString({ + ...queryJSON, + groupBy: undefined, + limit: undefined, + sortBy: CONST.SEARCH.TABLE_COLUMNS.DATE, + sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + })} violation-approver:${violationApproverGroup.accountID}`, + ) + : undefined; + + violationApproverSections[key] = { + groupedBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, + transactions: [], + transactionsQueryJSON, + ...personalDetails, + ...violationApproverGroup, + formattedViolationApprover: temporaryGetDisplayNameOrDefault({passedPersonalDetails: personalDetails, translate, formatPhoneNumber}), + keyForList: key, + }; + } + } + + const violationApproverSectionsValues = Object.values(violationApproverSections); + return [violationApproverSectionsValues, violationApproverSectionsValues.length, hasDeletedTransactionInData(data)]; +} + /** * Organizes data into appropriate list sections for display based on the type of search results. */ @@ -3744,6 +3824,8 @@ function getSections({ return getYearSections(data, queryJSON); case CONST.SEARCH.GROUP_BY.QUARTER: return getQuarterSections(data, queryJSON, dateFnsLocale); + case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: + return getViolationApproverSections(data, queryJSON, formatPhoneNumber, translate, onyxPersonalDetailsList); } } @@ -3802,9 +3884,13 @@ const groupBySortFunction: Record = { [CONST.SEARCH.GROUP_BY.WEEK]: createGroupSortFunction(transactionWeekGroupColumnNamesToSortingProperty, (a, b, lc) => lc(a.week, b.week)), [CONST.SEARCH.GROUP_BY.YEAR]: createGroupSortFunction(transactionYearGroupColumnNamesToSortingProperty, (a, b) => a.year - b.year), [CONST.SEARCH.GROUP_BY.QUARTER]: createGroupSortFunction(transactionQuarterGroupColumnNamesToSortingProperty, (a, b) => a.sortKey - b.sortKey), + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: createGroupSortFunction( + transactionViolationApproverGroupColumnNamesToSortingProperty, + (a, b, lc) => lc(a.formattedViolationApprover ?? '', b.formattedViolationApprover ?? ''), + ), }; -const groupByRequiredColumns: Partial> = { +const groupByRequiredColumns: Partial> = { [CONST.SEARCH.GROUP_BY.FROM]: [CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM], [CONST.SEARCH.GROUP_BY.CARD]: [CONST.SEARCH.TABLE_COLUMNS.GROUP_CARD], [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: [CONST.SEARCH.TABLE_COLUMNS.GROUP_WITHDRAWAL_ID], @@ -3816,6 +3902,7 @@ const groupByRequiredColumns: Partial> [CONST.SEARCH.GROUP_BY.WEEK]: [CONST.SEARCH.TABLE_COLUMNS.GROUP_WEEK], [CONST.SEARCH.GROUP_BY.YEAR]: [CONST.SEARCH.TABLE_COLUMNS.GROUP_YEAR], [CONST.SEARCH.GROUP_BY.QUARTER]: [CONST.SEARCH.TABLE_COLUMNS.GROUP_QUARTER], + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER], }; /** @@ -4364,6 +4451,8 @@ function getCustomColumns(value?: SearchDataTypes | SearchGroupBy): SearchCustom return Object.values(CONST.SEARCH.GROUP_CUSTOM_COLUMNS.YEAR); case CONST.SEARCH.GROUP_BY.QUARTER: return Object.values(CONST.SEARCH.GROUP_CUSTOM_COLUMNS.QUARTER); + case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: + return Object.values(CONST.SEARCH.GROUP_CUSTOM_COLUMNS.VIOLATION_APPROVER); default: return []; } @@ -4405,6 +4494,8 @@ function getCustomColumnDefault(value?: SearchDataTypes | SearchGroupBy): Search return CONST.SEARCH.GROUP_DEFAULT_COLUMNS.YEAR; case CONST.SEARCH.GROUP_BY.QUARTER: return CONST.SEARCH.GROUP_DEFAULT_COLUMNS.QUARTER; + case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: + return CONST.SEARCH.GROUP_DEFAULT_COLUMNS.VIOLATION_APPROVER; default: return []; } @@ -4550,6 +4641,12 @@ function getSearchColumnTranslationKey(column: SearchSortBy, type?: SearchDataTy return 'common.year'; case CONST.SEARCH.TABLE_COLUMNS.GROUP_QUARTER: return 'common.quarter'; + case CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER: + return 'search.filters.groupBy.violation-approver'; + case CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT: + return 'search.filters.approvalCount'; + case CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL: + return 'search.filters.approvedTotal'; case CONST.SEARCH.TABLE_COLUMNS.GROUP_WITHDRAWN: return 'search.filters.withdrawn'; case CONST.SEARCH.TABLE_COLUMNS.GROUP_FEED: @@ -5264,12 +5361,15 @@ function getSortOrderOptions(translate: LocalizedTranslate) { return Object.values(CONST.SEARCH.SORT_ORDER).map>((value) => ({text: translate(`search.filters.sortOrder.${value}`), value})); } -function getGroupBySections(translate: LocalizedTranslate): GroupBySection[] { +function getGroupBySections(translate: LocalizedTranslate, queryJSON?: SearchQueryJSON): GroupBySection[] { const getOption = (groupBy: SearchGroupBy): SingleSelectItem => ({ text: translate(`search.filters.groupBy.${groupBy}`), value: groupBy, }); - return [ + const {value: hasValues, isNegated} = getFilterFromQuery(queryJSON, CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS); + const shouldIncludeViolationApprover = !isNegated && !!hasValues?.includes(CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION); + + const sections: Array> = [ { options: [getOption(CONST.SEARCH.GROUP_BY.FROM), getOption(CONST.SEARCH.GROUP_BY.CARD)], }, @@ -5288,7 +5388,15 @@ function getGroupBySections(translate: LocalizedTranslate): GroupBySection[] { { options: [getOption(CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID)], }, - ].map((section, sectionIndex) => ({ + ]; + + if (shouldIncludeViolationApprover) { + sections.push({ + options: [getOption(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER)], + }); + } + + return sections.map((section, sectionIndex) => ({ ...section, sectionIndex, })); @@ -6454,6 +6562,7 @@ function getColumnsToShow({ [CONST.SEARCH.GROUP_BY.WEEK]: CONST.SEARCH.GROUP_CUSTOM_COLUMNS.WEEK, [CONST.SEARCH.GROUP_BY.YEAR]: CONST.SEARCH.GROUP_CUSTOM_COLUMNS.YEAR, [CONST.SEARCH.GROUP_BY.QUARTER]: CONST.SEARCH.GROUP_CUSTOM_COLUMNS.QUARTER, + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: CONST.SEARCH.GROUP_CUSTOM_COLUMNS.VIOLATION_APPROVER, }[groupBy]; const defaultCustomColumns = { @@ -6468,6 +6577,7 @@ function getColumnsToShow({ [CONST.SEARCH.GROUP_BY.WEEK]: CONST.SEARCH.GROUP_DEFAULT_COLUMNS.WEEK, [CONST.SEARCH.GROUP_BY.YEAR]: CONST.SEARCH.GROUP_DEFAULT_COLUMNS.YEAR, [CONST.SEARCH.GROUP_BY.QUARTER]: CONST.SEARCH.GROUP_DEFAULT_COLUMNS.QUARTER, + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: CONST.SEARCH.GROUP_DEFAULT_COLUMNS.VIOLATION_APPROVER, }[groupBy]; const filteredVisibleColumns = customColumns ? visibleColumns.filter((column) => Object.values(customColumns).includes(column as ValueOf)) : []; @@ -7244,6 +7354,9 @@ function isTransactionMatchWithGroupItem(transaction: OnyxTypes.Transaction, gro const transactionQuarter = Math.floor((transactionMonth - 1) / 3) + 1; return transactionYear === quarterGroup.year && transactionQuarter === quarterGroup.quarter; } + if (groupBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER) { + return !!transaction.transactionID; + } return false; } @@ -7268,6 +7381,7 @@ export { isTransactionWeekGroupListItemType, isTransactionYearGroupListItemType, isTransactionQuarterGroupListItemType, + isTransactionViolationApproverGroupListItemType, isGroupedItemArray, isGroupEntry, isSearchResultsEmpty, @@ -7326,6 +7440,7 @@ export { getCustomColumns, getCustomColumnDefault, filterValidHasValues, + groupByRequiredColumns, navigateToSearchRHP, shouldShowDeleteOption, getToFieldValueForTransaction, diff --git a/src/pages/Search/SearchColumnsPage.tsx b/src/pages/Search/SearchColumnsPage.tsx index 585c44834169..34ffabb1e422 100644 --- a/src/pages/Search/SearchColumnsPage.tsx +++ b/src/pages/Search/SearchColumnsPage.tsx @@ -7,7 +7,7 @@ import useOnyx from '@hooks/useOnyx'; import Navigation from '@libs/Navigation/Navigation'; import {buildQueryStringFromFilterFormValues, getCurrentSearchQueryJSON, hasValuesIncludeViolationFilter} from '@libs/SearchQueryUtils'; -import {getCustomColumnDefault, getCustomColumns, insertColumnBeforeTotalAmount} from '@libs/SearchUIUtils'; +import {getCustomColumnDefault, getCustomColumns, groupByRequiredColumns, insertColumnBeforeTotalAmount} from '@libs/SearchUIUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -39,21 +39,7 @@ function SearchColumnsPage() { // We need at least one element with flex1 in the table to ensure the table looks good in the UI, so we don't allow removing the total columns // since it makes sense for them to show up in an expense management App and it fixes the layout issues. - const requiredColumns = new Set([ - CONST.SEARCH.TABLE_COLUMNS.TOTAL_AMOUNT, - CONST.SEARCH.TABLE_COLUMNS.TOTAL, - CONST.SEARCH.TABLE_COLUMNS.GROUP_CARD, - CONST.SEARCH.TABLE_COLUMNS.GROUP_WITHDRAWAL_ID, - CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM, - CONST.SEARCH.TABLE_COLUMNS.GROUP_CATEGORY, - CONST.SEARCH.TABLE_COLUMNS.GROUP_MERCHANT, - CONST.SEARCH.TABLE_COLUMNS.GROUP_TAG, - CONST.SEARCH.TABLE_COLUMNS.GROUP_DAY, - CONST.SEARCH.TABLE_COLUMNS.GROUP_MONTH, - CONST.SEARCH.TABLE_COLUMNS.GROUP_WEEK, - CONST.SEARCH.TABLE_COLUMNS.GROUP_YEAR, - CONST.SEARCH.TABLE_COLUMNS.GROUP_QUARTER, - ]); + const requiredColumns = new Set([CONST.SEARCH.TABLE_COLUMNS.TOTAL_AMOUNT, CONST.SEARCH.TABLE_COLUMNS.TOTAL, ...Object.values(groupByRequiredColumns).flat()]); if (shouldRequireViolationsColumn) { requiredColumns.add(CONST.SEARCH.TABLE_COLUMNS.VIOLATIONS); @@ -77,7 +63,13 @@ function SearchColumnsPage() { // Only the columns change, so it's still the same search - carry the key over rather than letting it be // re-derived from the new query. - Navigation.navigate(ROUTES.SEARCH_ROOT.getRoute({query: queryString, searchKey: currentSearchKey}), {forceReplace: true}); + Navigation.navigate( + ROUTES.SEARCH_ROOT.getRoute({ + query: queryString, + searchKey: currentSearchKey, + }), + {forceReplace: true}, + ); }; return ( diff --git a/src/styles/utils/index.ts b/src/styles/utils/index.ts index d6a406ef8dbc..d8b422269344 100644 --- a/src/styles/utils/index.ts +++ b/src/styles/utils/index.ts @@ -2085,6 +2085,7 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({ break; case CONST.SEARCH.TABLE_COLUMNS.EXPENSES: case CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES: + case CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT: columnWidth = {...getWidthStyle(variables.w130)}; break; case CONST.SEARCH.TABLE_COLUMNS.GROUP_AMOUNT_DEBITED: @@ -2099,6 +2100,7 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({ case CONST.SEARCH.TABLE_COLUMNS.ORIGINAL_AMOUNT: case CONST.SEARCH.TABLE_COLUMNS.TOTAL_AMOUNT: case CONST.SEARCH.TABLE_COLUMNS.GROUP_TOTAL: + case CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL: case CONST.SEARCH.TABLE_COLUMNS.TOTAL_PER_ATTENDEE: case CONST.SEARCH.TABLE_COLUMNS.TOTAL: columnWidth = { @@ -2148,6 +2150,7 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({ case CONST.SEARCH.TABLE_COLUMNS.GROUP_WITHDRAWAL_ID: case CONST.SEARCH.TABLE_COLUMNS.GROUP_CARD: case CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM: + case CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER: case CONST.SEARCH.TABLE_COLUMNS.FEED: case CONST.SEARCH.TABLE_COLUMNS.BANK_ACCOUNT: case CONST.SEARCH.TABLE_COLUMNS.WITHDRAWAL_ID: diff --git a/src/types/onyx/SearchResults.ts b/src/types/onyx/SearchResults.ts index 80bdf7788ddc..7fe63c734478 100644 --- a/src/types/onyx/SearchResults.ts +++ b/src/types/onyx/SearchResults.ts @@ -270,6 +270,18 @@ type SearchQuarterGroup = SearchGroupBase & { quarter: number; }; +/** Model of violation-approver grouped search result */ +type SearchViolationApproverGroup = SearchGroupBase & { + /** Account ID of the approver who approved the violation */ + accountID: number; + + /** How many expenses this approver approved */ + approvalCount: number; + + /** Total amount of expenses this approver approved, in cents */ + approvedTotal: number; +}; + /** SearchResultDataType */ type SearchResultDataType = PrefixedRecord & Partial | undefined>> & @@ -292,6 +304,7 @@ type SearchResultDataType = PrefixedRecord; /** Model of search results */ @@ -327,4 +340,5 @@ export type { SearchWeekGroup, SearchYearGroup, SearchQuarterGroup, + SearchViolationApproverGroup, }; diff --git a/tests/unit/Search/ColumnAvailabilityTest.ts b/tests/unit/Search/ColumnAvailabilityTest.ts index fa2b76501de2..a283ab9c77cf 100644 --- a/tests/unit/Search/ColumnAvailabilityTest.ts +++ b/tests/unit/Search/ColumnAvailabilityTest.ts @@ -60,6 +60,9 @@ describe('Column availability single source of truth', () => { TABLE_COLUMNS.GROUP_WITHDRAWAL_STATUS, TABLE_COLUMNS.GROUP_AMOUNT_DEBITED, TABLE_COLUMNS.GROUP_AMOUNT_REIMBURSED, + TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, + TABLE_COLUMNS.GROUP_APPROVAL_COUNT, + TABLE_COLUMNS.GROUP_APPROVED_TOTAL, ]); test('every TABLE_COLUMNS value is classified in COLUMN_AVAILABILITY or owned by another surface', () => { diff --git a/tests/unit/Search/SearchQueryUtilsTest.ts b/tests/unit/Search/SearchQueryUtilsTest.ts index cfe2fd320291..87aa548675fe 100644 --- a/tests/unit/Search/SearchQueryUtilsTest.ts +++ b/tests/unit/Search/SearchQueryUtilsTest.ts @@ -3250,6 +3250,41 @@ describe('SearchQueryUtils', () => { expect(queryJSON?.sortBy).toBe(CONST.SEARCH.TABLE_COLUMNS.GROUP_WEEK); expect(queryJSON?.sortOrder).toBe(CONST.SEARCH.SORT_ORDER.DESC); }); + + test('switching to violation-approver from the Display menu derives sort-by:group-expenses and sort-order:desc', () => { + // Given a category grouping whose sort is the category default + // When the Display menu switches group by to violation approver + const result = buildFilterQueryWithSortDefaults( + {type: 'expense', groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, view: CONST.SEARCH.VIEW.TABLE}, + {view: CONST.SEARCH.VIEW.TABLE, groupBy: CONST.SEARCH.GROUP_BY.CATEGORY}, + {sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_CATEGORY, sortOrder: CONST.SEARCH.SORT_ORDER.ASC}, + ); + const queryJSON = buildSearchQueryJSON(result ?? ''); + + // Then the parser re-derives the violation-approver defaults from GROUP_BY_DEFAULT_SORT and GROUP_BY_DEFAULT_SORT_ORDER + expect(queryJSON?.sortBy).toBe(CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES); + expect(queryJSON?.sortOrder).toBe(CONST.SEARCH.SORT_ORDER.DESC); + }); + }); + + describe('group-by:violation-approver parser round trip', () => { + test('round-trips group-by:violation-approver and a customized group column list', () => { + // Given a query that groups by violation approver and customizes the new group columns + const query = `type:expense group-by:${CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER} columns:group-violation-approver,group-approval-count,group-approved-total`; + + // When it is parsed and then rebuilt into a query string and parsed again + const parsed = buildSearchQueryJSON(query); + const rebuilt = buildSearchQueryString(parsed); + const roundTripped = buildSearchQueryJSON(rebuilt); + + // Then the group by and customized columns survive the round trip + expect(roundTripped?.groupBy).toBe(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER); + expect(roundTripped?.columns).toEqual([ + CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, + CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, + CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL, + ]); + }); }); describe('shouldResetSort', () => { diff --git a/tests/unit/Search/SearchUIUtilsTest.ts b/tests/unit/Search/SearchUIUtilsTest.ts index 4f74dc81ab82..ef7a711b97c2 100644 --- a/tests/unit/Search/SearchUIUtilsTest.ts +++ b/tests/unit/Search/SearchUIUtilsTest.ts @@ -14892,3 +14892,39 @@ describe('hasFilterContentValuesChanged', () => { } }); }); + +describe('getGroupBySections', () => { + function getGroupByValues(query: string) { + const queryJSON = buildSearchQueryJSON(query); + return SearchUIUtils.getGroupBySections(translateLocal, queryJSON) + .flatMap((section) => section.options) + .map((option) => option.value); + } + + it('offers violation approver only when the query carries a non-negated has:approved-violation', () => { + // Given a spend query that includes has:approved-violation + // When the Display menu builds its group-by sections + const options = getGroupByValues(`type:expense has:${CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION}`); + + // Then violation approver is offered because Auth accepts that grouping + expect(options).toContain(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER); + }); + + it('does not offer violation approver when the query has no approved-violation filter', () => { + // Given a spend query without has:approved-violation + // When the Display menu builds its group-by sections + const options = getGroupByValues('type:expense'); + + // Then violation approver is omitted so the UI cannot send a grouping Auth would reject + expect(options).not.toContain(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER); + }); + + it('does not offer violation approver when has:approved-violation is negated', () => { + // Given a spend query that excludes approved violations + // When the Display menu builds its group-by sections + const options = getGroupByValues(`type:expense -has:${CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION}`); + + // Then violation approver is omitted because Auth only accepts the positive has filter + expect(options).not.toContain(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER); + }); +}); diff --git a/tests/unit/SearchParserTest.ts b/tests/unit/SearchParserTest.ts index fed36462ff0c..60d5f9916081 100644 --- a/tests/unit/SearchParserTest.ts +++ b/tests/unit/SearchParserTest.ts @@ -848,6 +848,29 @@ const tests = [ filters: null, }, }, + { + query: 'type:expense group-by:violation-approver', + expected: { + type: CONST.SEARCH.DATA_TYPES.EXPENSE, + sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES, + sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', + groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, + filters: null, + }, + }, + { + query: 'type:expense group-by:violation-approver columns:group-violation-approver,group-approval-count,group-approved-total', + expected: { + type: CONST.SEARCH.DATA_TYPES.EXPENSE, + sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES, + sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', + groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, + columns: [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL], + filters: null, + }, + }, { query: 'type:chat is:read', expected: { diff --git a/tests/unit/hooks/useUpdateFilterQuery.test.ts b/tests/unit/hooks/useUpdateFilterQuery.test.ts index d4df7ec92cb0..7097bc202252 100644 --- a/tests/unit/hooks/useUpdateFilterQuery.test.ts +++ b/tests/unit/hooks/useUpdateFilterQuery.test.ts @@ -101,4 +101,26 @@ describe('useUpdateFilterQuery', () => { expect(getSetParamsCall()).not.toHaveProperty('searchKey'); }); }); + + describe('getUpdatedFilterFormValues', () => { + it('clears groupBy and columns when approved-violation is removed from the has filter', () => { + // Given a query grouped by violation approver with a customized column list + const {result} = renderHook(() => useUpdateFilterQuery(queryJSON)); + + // When approved-violation is removed from the has filter + const updated = result.current.getUpdatedFilterFormValues( + { + type: CONST.SEARCH.DATA_TYPES.EXPENSE, + groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, + has: [CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION], + columns: [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT], + }, + {has: []}, + ); + + // Then both the group by and the columns are cleared so Auth is not sent a grouping it would reject + expect(updated.groupBy).toBeUndefined(); + expect(updated.columns).toEqual([]); + }); + }); }); From c7bd8c95651cfd22ec32591983ee2bf5d53ac0b9 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Thu, 1 Oct 2026 11:40:04 +0700 Subject: [PATCH 02/11] update transaction query --- src/CONST/index.ts | 2 + .../ViolationApproverListItemHeader.tsx | 4 +- src/components/Search/chartGroupByConfig.ts | 2 +- src/libs/SearchParser/autocompleteParser.js | 935 ++++++++--------- .../SearchParser/autocompleteParser.peggy | 1 + src/libs/SearchParser/baseRules.peggy | 1 + src/libs/SearchParser/searchParser.js | 953 +++++++++--------- src/libs/SearchParser/searchParser.peggy | 1 + src/libs/SearchUIUtils.ts | 29 +- src/types/onyx/SearchResults.ts | 3 - tests/unit/Search/SearchUIUtilsTest.ts | 86 ++ tests/unit/SearchParserTest.ts | 22 + 12 files changed, 1104 insertions(+), 935 deletions(-) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 2dd2f99ce880..0f40471e5937 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -8092,6 +8092,7 @@ const CONST = { SUBMITTER_USER_ID: 'submitterUserID', SUBMITTER_PAYROLL_ID: 'submitterPayrollID', ORDER_DEAL_NUMBERS: 'orderDealNumbers', + VIOLATION_APPROVER: 'violationApprover', }, REPORT_FIELD: { // All report fields start with this, so use this to check if a search key is a report field @@ -8175,6 +8176,7 @@ const CONST = { SUBMITTER_USER_ID: 'submitter-user-id', SUBMITTER_PAYROLL_ID: 'submitter-payroll-id', ORDER_DEAL_NUMBERS: 'order-deal-numbers', + VIOLATION_APPROVER: 'violation-approver', COLUMNS: 'columns', LIMIT: 'limit', COMPARE: 'compare', diff --git a/src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx b/src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx index f7dfbc5d4528..49e1fae22224 100644 --- a/src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx +++ b/src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx @@ -133,7 +133,7 @@ function ViolationApproverListItemHeader({ style={StyleUtils.getReportTableColumnStyles(CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL, {shouldRemoveTotalColumnFlex: true})} > @@ -181,7 +181,7 @@ function ViolationApproverListItemHeader({ {!isLargeScreenWidth && ( {!!onDownArrowClick && ( diff --git a/src/components/Search/chartGroupByConfig.ts b/src/components/Search/chartGroupByConfig.ts index 6a74ff670e03..91fa473ae7a5 100644 --- a/src/components/Search/chartGroupByConfig.ts +++ b/src/components/Search/chartGroupByConfig.ts @@ -114,7 +114,7 @@ const CHART_GROUP_BY_CONFIG: Record = { [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: { titleIconName: 'Users', getLabel: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER ? (item.formattedViolationApprover ?? '') : ''), - getFilterQuery: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER ? `violation-approver:${item.accountID}` : ''), + getFilterQuery: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER ? `${CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER}:${item.accountID}` : ''), }, }; diff --git a/src/libs/SearchParser/autocompleteParser.js b/src/libs/SearchParser/autocompleteParser.js index 0ef4f2d71f33..1badb34e8e0b 100644 --- a/src/libs/SearchParser/autocompleteParser.js +++ b/src/libs/SearchParser/autocompleteParser.js @@ -254,65 +254,67 @@ function peg$parse(input, options) { var peg$c68 = "submitter-payroll-id"; var peg$c69 = "orderdealnumbers"; var peg$c70 = "order-deal-numbers"; - var peg$c71 = "assignee"; - var peg$c72 = "createdby"; - var peg$c73 = "created-by"; - var peg$c74 = "action"; - var peg$c75 = "total"; - var peg$c76 = "has"; - var peg$c77 = "is"; - var peg$c78 = "purchaseamount"; - var peg$c79 = "purchase-amount"; - var peg$c80 = "purchasecurrency"; - var peg$c81 = "purchase-currency"; - var peg$c82 = "amountdebited"; - var peg$c83 = "amount-debited"; - var peg$c84 = "amountreimbursed"; - var peg$c85 = "amount-reimbursed"; - var peg$c86 = "columns"; - var peg$c87 = "view"; - var peg$c88 = "compare"; - var peg$c89 = "per-diem"; - var peg$c90 = "drafts"; - var peg$c91 = "draft"; - var peg$c92 = "tax"; - var peg$c93 = "policy-name"; - var peg$c94 = "long-report-id"; - var peg$c95 = "exported-to"; - var peg$c96 = "exportedto"; - var peg$c97 = "exchange-rate"; - var peg$c98 = "reimbursable-total"; - var peg$c99 = "non-reimbursable-total"; - var peg$c100 = "group-from"; - var peg$c101 = "group-expenses"; - var peg$c102 = "group-total"; - var peg$c103 = "group-card"; - var peg$c104 = "group-feed"; - var peg$c105 = "group-bank-account"; - var peg$c106 = "group-withdrawn"; - var peg$c107 = "group-withdrawal-id"; - var peg$c108 = "group-amount-debited"; - var peg$c109 = "group-amount-reimbursed"; - var peg$c110 = "group-category"; - var peg$c111 = "group-tag"; - var peg$c112 = "group-merchant"; - var peg$c113 = "group-day"; - var peg$c114 = "group-month"; - var peg$c115 = "group-week"; - var peg$c116 = "group-year"; - var peg$c117 = "group-quarter"; - var peg$c118 = "group-violation-approver"; - var peg$c119 = "group-approval-count"; - var peg$c120 = "group-approved-total"; - var peg$c121 = "!="; - var peg$c122 = ">="; - var peg$c123 = ">"; - var peg$c124 = "<="; - var peg$c125 = "<"; - var peg$c126 = "\\"; - var peg$c127 = "\u201C"; - var peg$c128 = "\u201D"; - var peg$c129 = "\""; + var peg$c71 = "violationapprover"; + var peg$c72 = "violation-approver"; + var peg$c73 = "assignee"; + var peg$c74 = "createdby"; + var peg$c75 = "created-by"; + var peg$c76 = "action"; + var peg$c77 = "total"; + var peg$c78 = "has"; + var peg$c79 = "is"; + var peg$c80 = "purchaseamount"; + var peg$c81 = "purchase-amount"; + var peg$c82 = "purchasecurrency"; + var peg$c83 = "purchase-currency"; + var peg$c84 = "amountdebited"; + var peg$c85 = "amount-debited"; + var peg$c86 = "amountreimbursed"; + var peg$c87 = "amount-reimbursed"; + var peg$c88 = "columns"; + var peg$c89 = "view"; + var peg$c90 = "compare"; + var peg$c91 = "per-diem"; + var peg$c92 = "drafts"; + var peg$c93 = "draft"; + var peg$c94 = "tax"; + var peg$c95 = "policy-name"; + var peg$c96 = "long-report-id"; + var peg$c97 = "exported-to"; + var peg$c98 = "exportedto"; + var peg$c99 = "exchange-rate"; + var peg$c100 = "reimbursable-total"; + var peg$c101 = "non-reimbursable-total"; + var peg$c102 = "group-from"; + var peg$c103 = "group-expenses"; + var peg$c104 = "group-total"; + var peg$c105 = "group-card"; + var peg$c106 = "group-feed"; + var peg$c107 = "group-bank-account"; + var peg$c108 = "group-withdrawn"; + var peg$c109 = "group-withdrawal-id"; + var peg$c110 = "group-amount-debited"; + var peg$c111 = "group-amount-reimbursed"; + var peg$c112 = "group-category"; + var peg$c113 = "group-tag"; + var peg$c114 = "group-merchant"; + var peg$c115 = "group-day"; + var peg$c116 = "group-month"; + var peg$c117 = "group-week"; + var peg$c118 = "group-year"; + var peg$c119 = "group-quarter"; + var peg$c120 = "group-violation-approver"; + var peg$c121 = "group-approval-count"; + var peg$c122 = "group-approved-total"; + var peg$c123 = "!="; + var peg$c124 = ">="; + var peg$c125 = ">"; + var peg$c126 = "<="; + var peg$c127 = "<"; + var peg$c128 = "\\"; + var peg$c129 = "\u201C"; + var peg$c130 = "\u201D"; + var peg$c131 = "\""; var peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; var peg$r1 = /^[:=]/; @@ -403,82 +405,84 @@ function peg$parse(input, options) { var peg$e71 = peg$literalExpectation("submitter-payroll-id", true); var peg$e72 = peg$literalExpectation("orderDealNumbers", true); var peg$e73 = peg$literalExpectation("order-deal-numbers", true); - var peg$e74 = peg$literalExpectation("assignee", true); - var peg$e75 = peg$literalExpectation("createdBy", true); - var peg$e76 = peg$literalExpectation("created-by", true); - var peg$e77 = peg$literalExpectation("action", true); - var peg$e78 = peg$literalExpectation("total", true); - var peg$e79 = peg$literalExpectation("has", true); - var peg$e80 = peg$literalExpectation("is", true); - var peg$e81 = peg$literalExpectation("purchaseAmount", true); - var peg$e82 = peg$literalExpectation("purchase-amount", true); - var peg$e83 = peg$literalExpectation("purchaseCurrency", true); - var peg$e84 = peg$literalExpectation("purchase-currency", true); - var peg$e85 = peg$literalExpectation("amountDebited", true); - var peg$e86 = peg$literalExpectation("amount-debited", true); - var peg$e87 = peg$literalExpectation("amountReimbursed", true); - var peg$e88 = peg$literalExpectation("amount-reimbursed", true); - var peg$e89 = peg$literalExpectation("columns", true); - var peg$e90 = peg$literalExpectation("view", true); - var peg$e91 = peg$literalExpectation("compare", true); - var peg$e92 = peg$literalExpectation("per-diem", true); - var peg$e93 = peg$literalExpectation("drafts", true); - var peg$e94 = peg$literalExpectation("draft", true); - var peg$e95 = peg$literalExpectation("tax", true); - var peg$e96 = peg$literalExpectation("policy-name", true); - var peg$e97 = peg$literalExpectation("long-report-id", true); - var peg$e98 = peg$literalExpectation("exported-to", true); - var peg$e99 = peg$classExpectation([":", "="], false, false); - var peg$e100 = peg$literalExpectation("exportedTo", true); - var peg$e101 = peg$literalExpectation("exchange-rate", true); - var peg$e102 = peg$literalExpectation("reimbursable-total", true); - var peg$e103 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e104 = peg$literalExpectation("group-from", true); - var peg$e105 = peg$literalExpectation("group-expenses", true); - var peg$e106 = peg$literalExpectation("group-total", true); - var peg$e107 = peg$literalExpectation("group-card", true); - var peg$e108 = peg$literalExpectation("group-feed", true); - var peg$e109 = peg$literalExpectation("group-bank-account", true); - var peg$e110 = peg$literalExpectation("group-withdrawn", true); - var peg$e111 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e112 = peg$literalExpectation("group-amount-debited", true); - var peg$e113 = peg$literalExpectation("group-amount-reimbursed", true); - var peg$e114 = peg$literalExpectation("group-category", true); - var peg$e115 = peg$literalExpectation("group-tag", true); - var peg$e116 = peg$literalExpectation("group-merchant", true); - var peg$e117 = peg$literalExpectation("group-day", true); - var peg$e118 = peg$literalExpectation("group-month", true); - var peg$e119 = peg$literalExpectation("group-week", true); - var peg$e120 = peg$literalExpectation("group-year", true); - var peg$e121 = peg$literalExpectation("group-quarter", true); - var peg$e122 = peg$literalExpectation("group-violation-approver", true); - var peg$e123 = peg$literalExpectation("group-approval-count", true); - var peg$e124 = peg$literalExpectation("group-approved-total", true); - var peg$e125 = peg$otherExpectation("operator"); - var peg$e126 = peg$literalExpectation("!=", false); - var peg$e127 = peg$literalExpectation(">=", false); - var peg$e128 = peg$literalExpectation(">", false); - var peg$e129 = peg$literalExpectation("<=", false); - var peg$e130 = peg$literalExpectation("<", false); - var peg$e131 = peg$literalExpectation("\\", false); - var peg$e132 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); - var peg$e133 = peg$otherExpectation("word"); - var peg$e134 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e135 = peg$otherExpectation("whitespace"); - var peg$e136 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e137 = peg$otherExpectation("quote"); - var peg$e138 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e139 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e140 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e141 = peg$literalExpectation("\u201C", false); - var peg$e142 = peg$literalExpectation("\u201D", false); - var peg$e143 = peg$literalExpectation("\"", false); - var peg$e144 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e145 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e147 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e148 = peg$classExpectation([","], false, false); - var peg$e149 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e74 = peg$literalExpectation("violationApprover", true); + var peg$e75 = peg$literalExpectation("violation-approver", true); + var peg$e76 = peg$literalExpectation("assignee", true); + var peg$e77 = peg$literalExpectation("createdBy", true); + var peg$e78 = peg$literalExpectation("created-by", true); + var peg$e79 = peg$literalExpectation("action", true); + var peg$e80 = peg$literalExpectation("total", true); + var peg$e81 = peg$literalExpectation("has", true); + var peg$e82 = peg$literalExpectation("is", true); + var peg$e83 = peg$literalExpectation("purchaseAmount", true); + var peg$e84 = peg$literalExpectation("purchase-amount", true); + var peg$e85 = peg$literalExpectation("purchaseCurrency", true); + var peg$e86 = peg$literalExpectation("purchase-currency", true); + var peg$e87 = peg$literalExpectation("amountDebited", true); + var peg$e88 = peg$literalExpectation("amount-debited", true); + var peg$e89 = peg$literalExpectation("amountReimbursed", true); + var peg$e90 = peg$literalExpectation("amount-reimbursed", true); + var peg$e91 = peg$literalExpectation("columns", true); + var peg$e92 = peg$literalExpectation("view", true); + var peg$e93 = peg$literalExpectation("compare", true); + var peg$e94 = peg$literalExpectation("per-diem", true); + var peg$e95 = peg$literalExpectation("drafts", true); + var peg$e96 = peg$literalExpectation("draft", true); + var peg$e97 = peg$literalExpectation("tax", true); + var peg$e98 = peg$literalExpectation("policy-name", true); + var peg$e99 = peg$literalExpectation("long-report-id", true); + var peg$e100 = peg$literalExpectation("exported-to", true); + var peg$e101 = peg$classExpectation([":", "="], false, false); + var peg$e102 = peg$literalExpectation("exportedTo", true); + var peg$e103 = peg$literalExpectation("exchange-rate", true); + var peg$e104 = peg$literalExpectation("reimbursable-total", true); + var peg$e105 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e106 = peg$literalExpectation("group-from", true); + var peg$e107 = peg$literalExpectation("group-expenses", true); + var peg$e108 = peg$literalExpectation("group-total", true); + var peg$e109 = peg$literalExpectation("group-card", true); + var peg$e110 = peg$literalExpectation("group-feed", true); + var peg$e111 = peg$literalExpectation("group-bank-account", true); + var peg$e112 = peg$literalExpectation("group-withdrawn", true); + var peg$e113 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e114 = peg$literalExpectation("group-amount-debited", true); + var peg$e115 = peg$literalExpectation("group-amount-reimbursed", true); + var peg$e116 = peg$literalExpectation("group-category", true); + var peg$e117 = peg$literalExpectation("group-tag", true); + var peg$e118 = peg$literalExpectation("group-merchant", true); + var peg$e119 = peg$literalExpectation("group-day", true); + var peg$e120 = peg$literalExpectation("group-month", true); + var peg$e121 = peg$literalExpectation("group-week", true); + var peg$e122 = peg$literalExpectation("group-year", true); + var peg$e123 = peg$literalExpectation("group-quarter", true); + var peg$e124 = peg$literalExpectation("group-violation-approver", true); + var peg$e125 = peg$literalExpectation("group-approval-count", true); + var peg$e126 = peg$literalExpectation("group-approved-total", true); + var peg$e127 = peg$otherExpectation("operator"); + var peg$e128 = peg$literalExpectation("!=", false); + var peg$e129 = peg$literalExpectation(">=", false); + var peg$e130 = peg$literalExpectation(">", false); + var peg$e131 = peg$literalExpectation("<=", false); + var peg$e132 = peg$literalExpectation("<", false); + var peg$e133 = peg$literalExpectation("\\", false); + var peg$e134 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); + var peg$e135 = peg$otherExpectation("word"); + var peg$e136 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e137 = peg$otherExpectation("whitespace"); + var peg$e138 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e139 = peg$otherExpectation("quote"); + var peg$e140 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e141 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e142 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e143 = peg$literalExpectation("\u201C", false); + var peg$e144 = peg$literalExpectation("\u201D", false); + var peg$e145 = peg$literalExpectation("\"", false); + var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e147 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e149 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e150 = peg$classExpectation([","], false, false); + var peg$e151 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(ranges) { return { autocomplete, ranges }; }; var peg$f1 = function(filters) { return filters.filter(Boolean).flat(); }; @@ -590,89 +594,90 @@ function peg$parse(input, options) { var peg$f52 = function() { return "submitterUserID"; }; var peg$f53 = function() { return "submitterPayrollID"; }; var peg$f54 = function() { return "orderDealNumbers"; }; - var peg$f55 = function() { return "assignee"; }; - var peg$f56 = function() { return "createdBy"; }; - var peg$f57 = function() { return "action"; }; - var peg$f58 = function() {return "total"; }; - var peg$f59 = function() {return "has"; }; - var peg$f60 = function() {return "is"; }; - var peg$f61 = function() {return "purchaseAmount"}; - var peg$f62 = function() {return "purchaseCurrency"}; - var peg$f63 = function() {return "amountDebited"}; - var peg$f64 = function() {return "amountReimbursed"}; - var peg$f65 = function() { + var peg$f55 = function() { return "violationApprover"; }; + var peg$f56 = function() { return "assignee"; }; + var peg$f57 = function() { return "createdBy"; }; + var peg$f58 = function() { return "action"; }; + var peg$f59 = function() {return "total"; }; + var peg$f60 = function() {return "has"; }; + var peg$f61 = function() {return "is"; }; + var peg$f62 = function() {return "purchaseAmount"}; + var peg$f63 = function() {return "purchaseCurrency"}; + var peg$f64 = function() {return "amountDebited"}; + var peg$f65 = function() {return "amountReimbursed"}; + var peg$f66 = function() { isColumnsContext = true; return "columns"; }; - var peg$f66 = function() {return "view"}; - var peg$f67 = function() {return "compare"}; - var peg$f68 = function() { return isColumnsContext; }; - var peg$f69 = function() { return "perDiem"; }; - var peg$f70 = function() { return "drafts"; }; - var peg$f71 = function() { return "originalamount"; }; - var peg$f72 = function() { return "taxAmount"; }; - var peg$f73 = function() { return "taxrate"; }; - var peg$f74 = function() { return "policyname"; }; - var peg$f75 = function() { return "withdrawalID"; }; - var peg$f76 = function() { return "bankAccount"; }; - var peg$f77 = function() { return "reportID"; }; - var peg$f78 = function() { return "base62ReportID"; }; - var peg$f79 = function() { return "exportedto"; }; - var peg$f80 = function() { return "exportedTo"; }; + var peg$f67 = function() {return "view"}; + var peg$f68 = function() {return "compare"}; + var peg$f69 = function() { return isColumnsContext; }; + var peg$f70 = function() { return "perDiem"; }; + var peg$f71 = function() { return "drafts"; }; + var peg$f72 = function() { return "originalamount"; }; + var peg$f73 = function() { return "taxAmount"; }; + var peg$f74 = function() { return "taxrate"; }; + var peg$f75 = function() { return "policyname"; }; + var peg$f76 = function() { return "withdrawalID"; }; + var peg$f77 = function() { return "bankAccount"; }; + var peg$f78 = function() { return "reportID"; }; + var peg$f79 = function() { return "base62ReportID"; }; + var peg$f80 = function() { return "exportedto"; }; var peg$f81 = function() { return "exportedTo"; }; - var peg$f82 = function() { return "exchangeRate"; }; - var peg$f83 = function() { return "reimbursableTotal"; }; - var peg$f84 = function() { return "nonReimbursableTotal"; }; - var peg$f85 = function() { return "groupFrom"; }; - var peg$f86 = function() { return "groupExpenses"; }; - var peg$f87 = function() { return "groupTotal"; }; - var peg$f88 = function() { return "groupCard"; }; - var peg$f89 = function() { return "groupFeed"; }; - var peg$f90 = function() { return "groupBankAccount"; }; - var peg$f91 = function() { return "groupWithdrawn"; }; - var peg$f92 = function() { return "groupWithdrawalID"; }; - var peg$f93 = function() { return "groupAmountDebited"; }; - var peg$f94 = function() { return "groupAmountReimbursed"; }; - var peg$f95 = function() { return "amountDebited"; }; - var peg$f96 = function() { return "amountReimbursed"; }; - var peg$f97 = function() { return "groupCategory"; }; - var peg$f98 = function() { return "groupTag"; }; - var peg$f99 = function() { return "groupMerchant"; }; - var peg$f100 = function() { return "groupday"; }; - var peg$f101 = function() { return "groupmonth"; }; - var peg$f102 = function() { return "groupweek"; }; - var peg$f103 = function() { return "groupyear"; }; - var peg$f104 = function() { return "groupquarter"; }; - var peg$f105 = function() { return "groupViolationApprover"; }; - var peg$f106 = function() { return "groupApprovalCount"; }; - var peg$f107 = function() { return "groupApprovedTotal"; }; - var peg$f108 = function() { return "eq"; }; - var peg$f109 = function() { return "neq"; }; - var peg$f110 = function() { return "gte"; }; - var peg$f111 = function() { return "gt"; }; - var peg$f112 = function() { return "lte"; }; - var peg$f113 = function() { return "lt"; }; - var peg$f114 = function(o) { + var peg$f82 = function() { return "exportedTo"; }; + var peg$f83 = function() { return "exchangeRate"; }; + var peg$f84 = function() { return "reimbursableTotal"; }; + var peg$f85 = function() { return "nonReimbursableTotal"; }; + var peg$f86 = function() { return "groupFrom"; }; + var peg$f87 = function() { return "groupExpenses"; }; + var peg$f88 = function() { return "groupTotal"; }; + var peg$f89 = function() { return "groupCard"; }; + var peg$f90 = function() { return "groupFeed"; }; + var peg$f91 = function() { return "groupBankAccount"; }; + var peg$f92 = function() { return "groupWithdrawn"; }; + var peg$f93 = function() { return "groupWithdrawalID"; }; + var peg$f94 = function() { return "groupAmountDebited"; }; + var peg$f95 = function() { return "groupAmountReimbursed"; }; + var peg$f96 = function() { return "amountDebited"; }; + var peg$f97 = function() { return "amountReimbursed"; }; + var peg$f98 = function() { return "groupCategory"; }; + var peg$f99 = function() { return "groupTag"; }; + var peg$f100 = function() { return "groupMerchant"; }; + var peg$f101 = function() { return "groupday"; }; + var peg$f102 = function() { return "groupmonth"; }; + var peg$f103 = function() { return "groupweek"; }; + var peg$f104 = function() { return "groupyear"; }; + var peg$f105 = function() { return "groupquarter"; }; + var peg$f106 = function() { return "groupViolationApprover"; }; + var peg$f107 = function() { return "groupApprovalCount"; }; + var peg$f108 = function() { return "groupApprovedTotal"; }; + var peg$f109 = function() { return "eq"; }; + var peg$f110 = function() { return "neq"; }; + var peg$f111 = function() { return "gte"; }; + var peg$f112 = function() { return "gt"; }; + var peg$f113 = function() { return "lte"; }; + var peg$f114 = function() { return "lt"; }; + var peg$f115 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f115 = function(c) { return c; }; - var peg$f116 = function(chars) { return chars.join("").trim(); }; - var peg$f117 = function() { + var peg$f116 = function(c) { return c; }; + var peg$f117 = function(chars) { return chars.join("").trim(); }; + var peg$f118 = function() { isColumnsContext = false; return "and"; }; - var peg$f118 = function() { return expectingNestedQuote; }; - var peg$f119 = function(start, inner, end) { //handle no-breaking space + var peg$f119 = function() { return expectingNestedQuote; }; + var peg$f120 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f120 = function(start) {return "“"}; - var peg$f121 = function(start) {return "”"}; - var peg$f122 = function(start) {return "\""}; - var peg$f123 = function(start, inner, end) { + var peg$f121 = function(start) {return "“"}; + var peg$f122 = function(start) {return "”"}; + var peg$f123 = function(start) {return "\""}; + var peg$f124 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -1195,11 +1200,14 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = peg$parseorderDealNumbers(); if (s1 === peg$FAILED) { - s1 = peg$parsereportFieldDynamic(); + s1 = peg$parseviolationApprover(); if (s1 === peg$FAILED) { - s1 = peg$parsecolumns(); + s1 = peg$parsereportFieldDynamic(); if (s1 === peg$FAILED) { - s1 = peg$parselimit(); + s1 = peg$parsecolumns(); + if (s1 === peg$FAILED) { + s1 = peg$parselimit(); + } } } } @@ -2479,20 +2487,49 @@ function peg$parse(input, options) { return s0; } + function peg$parseviolationApprover() { + var s0, s1; + + s0 = input.substr(peg$currPos, 17); + if (s0.toLowerCase() === peg$c71) { + peg$currPos += 17; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e74); } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 18); + if (s1.toLowerCase() === peg$c72) { + peg$currPos += 18; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e75); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f55(); + } + s0 = s1; + } + + return s0; + } + function peg$parseassignee() { var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c71) { + if (s1.toLowerCase() === peg$c73) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e74); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f55(); + s1 = peg$f56(); } s0 = s1; @@ -2503,24 +2540,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c72) { + if (s0.toLowerCase() === peg$c74) { peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c73) { + if (s1.toLowerCase() === peg$c75) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f56(); + s1 = peg$f57(); } s0 = s1; } @@ -2533,15 +2570,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c74) { + if (s1.toLowerCase() === peg$c76) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f57(); + s1 = peg$f58(); } s0 = s1; @@ -2553,15 +2590,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f58(); + s1 = peg$f59(); } s0 = s1; @@ -2573,15 +2610,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c76) { + if (s1.toLowerCase() === peg$c78) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f59(); + s1 = peg$f60(); } s0 = s1; @@ -2593,15 +2630,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c79) { peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f60(); + s1 = peg$f61(); } s0 = s1; @@ -2612,24 +2649,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c78) { + if (s0.toLowerCase() === peg$c80) { peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f61(); + s1 = peg$f62(); } s0 = s1; } @@ -2641,24 +2678,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c80) { + if (s0.toLowerCase() === peg$c82) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c83) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f62(); + s1 = peg$f63(); } s0 = s1; } @@ -2670,24 +2707,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 13); - if (s0.toLowerCase() === peg$c82) { + if (s0.toLowerCase() === peg$c84) { peg$currPos += 13; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c85) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f63(); + s1 = peg$f64(); } s0 = s1; } @@ -2699,24 +2736,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c84) { + if (s0.toLowerCase() === peg$c86) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c87) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f64(); + s1 = peg$f65(); } s0 = s1; } @@ -2729,15 +2766,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c86) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f65(); + s1 = peg$f66(); } s0 = s1; @@ -2749,15 +2786,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c89) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f66(); + s1 = peg$f67(); } s0 = s1; @@ -2769,15 +2806,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c88) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f67(); + s1 = peg$f68(); } s0 = s1; @@ -2789,7 +2826,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f68(); + s1 = peg$f69(); if (s1) { s1 = undefined; } else { @@ -2933,11 +2970,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c91) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2952,7 +2989,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f69(); + s0 = peg$f70(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2970,19 +3007,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c90) { + if (s1.toLowerCase() === peg$c92) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c91) { + if (s1.toLowerCase() === peg$c93) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } } if (s1 !== peg$FAILED) { @@ -2998,7 +3035,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f70(); + s0 = peg$f71(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3016,11 +3053,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3035,7 +3072,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f71(); + s0 = peg$f72(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3053,11 +3090,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c92) { + if (s1.toLowerCase() === peg$c94) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3072,7 +3109,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f72(); + s0 = peg$f73(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3109,7 +3146,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f73(); + s0 = peg$f74(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3127,11 +3164,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c93) { + if (s1.toLowerCase() === peg$c95) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3146,7 +3183,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f74(); + s0 = peg$f75(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3183,7 +3220,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f75(); + s0 = peg$f76(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3220,7 +3257,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f76(); + s0 = peg$f77(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3238,11 +3275,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c94) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3257,7 +3294,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f77(); + s0 = peg$f78(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3294,7 +3331,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f78(); + s0 = peg$f79(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3312,11 +3349,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3331,7 +3368,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f79(); + s0 = peg$f80(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3356,7 +3393,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -3375,11 +3412,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c96) { + if (s1.toLowerCase() === peg$c98) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3394,7 +3431,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f80(); + s0 = peg$f81(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3406,11 +3443,11 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3425,7 +3462,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f81(); + s0 = peg$f82(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3444,11 +3481,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c99) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3463,7 +3500,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f82(); + s0 = peg$f83(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3481,11 +3518,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c98) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3500,7 +3537,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f83(); + s0 = peg$f84(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3518,11 +3555,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c101) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3537,7 +3574,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f84(); + s0 = peg$f85(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3555,11 +3592,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c100) { + if (s1.toLowerCase() === peg$c102) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3574,7 +3611,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f85(); + s0 = peg$f86(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3592,11 +3629,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c101) { + if (s1.toLowerCase() === peg$c103) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3611,7 +3648,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f86(); + s0 = peg$f87(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3629,11 +3666,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c102) { + if (s1.toLowerCase() === peg$c104) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3648,7 +3685,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f87(); + s0 = peg$f88(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3666,11 +3703,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c103) { + if (s1.toLowerCase() === peg$c105) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3685,7 +3722,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f88(); + s0 = peg$f89(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3703,11 +3740,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c104) { + if (s1.toLowerCase() === peg$c106) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3722,7 +3759,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f89(); + s0 = peg$f90(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3740,11 +3777,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c105) { + if (s1.toLowerCase() === peg$c107) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3759,7 +3796,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f90(); + s0 = peg$f91(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3777,11 +3814,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c106) { + if (s1.toLowerCase() === peg$c108) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3796,7 +3833,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f91(); + s0 = peg$f92(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3814,11 +3851,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c107) { + if (s1.toLowerCase() === peg$c109) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3833,7 +3870,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f92(); + s0 = peg$f93(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3851,11 +3888,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c108) { + if (s1.toLowerCase() === peg$c110) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3870,7 +3907,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f93(); + s0 = peg$f94(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3888,11 +3925,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 23); - if (s1.toLowerCase() === peg$c109) { + if (s1.toLowerCase() === peg$c111) { peg$currPos += 23; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3907,7 +3944,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f94(); + s0 = peg$f95(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3925,11 +3962,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c85) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3944,7 +3981,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f95(); + s0 = peg$f96(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3962,11 +3999,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c87) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3981,7 +4018,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f96(); + s0 = peg$f97(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3999,11 +4036,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c110) { + if (s1.toLowerCase() === peg$c112) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4018,7 +4055,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f97(); + s0 = peg$f98(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4036,11 +4073,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c111) { + if (s1.toLowerCase() === peg$c113) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4055,7 +4092,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f98(); + s0 = peg$f99(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4073,11 +4110,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c112) { + if (s1.toLowerCase() === peg$c114) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4092,7 +4129,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f99(); + s0 = peg$f100(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4110,11 +4147,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c113) { + if (s1.toLowerCase() === peg$c115) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4129,7 +4166,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f100(); + s0 = peg$f101(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4147,11 +4184,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c114) { + if (s1.toLowerCase() === peg$c116) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4166,7 +4203,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f101(); + s0 = peg$f102(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4184,11 +4221,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c115) { + if (s1.toLowerCase() === peg$c117) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4203,7 +4240,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f102(); + s0 = peg$f103(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4221,11 +4258,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c116) { + if (s1.toLowerCase() === peg$c118) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e122); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4240,7 +4277,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f103(); + s0 = peg$f104(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4258,11 +4295,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c117) { + if (s1.toLowerCase() === peg$c119) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4277,7 +4314,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f104(); + s0 = peg$f105(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4295,11 +4332,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 24); - if (s1.toLowerCase() === peg$c118) { + if (s1.toLowerCase() === peg$c120) { peg$currPos += 24; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e124); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4314,7 +4351,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f105(); + s0 = peg$f106(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4332,11 +4369,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c119) { + if (s1.toLowerCase() === peg$c121) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4351,7 +4388,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f106(); + s0 = peg$f107(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4369,11 +4406,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c120) { + if (s1.toLowerCase() === peg$c122) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4388,7 +4425,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f107(); + s0 = peg$f108(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4411,81 +4448,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f108(); + s1 = peg$f109(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c121) { - s1 = peg$c121; + if (input.substr(peg$currPos, 2) === peg$c123) { + s1 = peg$c123; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f109(); + s1 = peg$f110(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c122) { - s1 = peg$c122; + if (input.substr(peg$currPos, 2) === peg$c124) { + s1 = peg$c124; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f110(); + s1 = peg$f111(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c123; + s1 = peg$c125; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f111(); + s1 = peg$f112(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c124) { - s1 = peg$c124; + if (input.substr(peg$currPos, 2) === peg$c126) { + s1 = peg$c126; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f112(); + s1 = peg$f113(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c125; + s1 = peg$c127; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f113(); + s1 = peg$f114(); } s0 = s1; } @@ -4496,7 +4533,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } return s0; @@ -4509,7 +4546,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f114(s1); + s1 = peg$f115(s1); } s0 = s1; @@ -4521,11 +4558,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c126; + s1 = peg$c128; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } if (s1 !== peg$FAILED) { s2 = input.charAt(peg$currPos); @@ -4533,11 +4570,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f115(s2); + s0 = peg$f116(s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4563,7 +4600,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } } if (s2 !== peg$FAILED) { @@ -4576,7 +4613,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } } } @@ -4585,13 +4622,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f116(s1); + s1 = peg$f117(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } return s0; @@ -4603,7 +4640,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f117(); + s1 = peg$f118(); s0 = s1; return s0; @@ -4619,7 +4656,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4628,12 +4665,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } return s0; } @@ -4643,7 +4680,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f118(); + s1 = peg$f119(); if (s1) { s1 = undefined; } else { @@ -4680,7 +4717,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4689,7 +4726,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } s2 = input.charAt(peg$currPos); @@ -4697,7 +4734,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4708,7 +4745,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } } while (s4 !== peg$FAILED) { @@ -4720,7 +4757,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } } } @@ -4729,7 +4766,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4738,7 +4775,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4747,11 +4784,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } } peg$savedPos = s0; - s0 = peg$f119(s1, s3, s5); + s0 = peg$f120(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4763,7 +4800,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } return s0; @@ -4780,7 +4817,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4789,7 +4826,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } s2 = input.charAt(peg$currPos); @@ -4797,7 +4834,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4808,7 +4845,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4824,15 +4861,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c127; + s6 = peg$c129; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f120(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4855,15 +4892,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c128; + s6 = peg$c130; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f121(s1); + s4 = peg$f122(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4886,15 +4923,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c129; + s6 = peg$c131; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f123(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4916,7 +4953,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4932,15 +4969,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c127; + s6 = peg$c129; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f120(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4963,15 +5000,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c128; + s6 = peg$c130; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f121(s1); + s4 = peg$f122(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4994,15 +5031,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c129; + s6 = peg$c131; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f123(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5019,7 +5056,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f123(s1, s3, s4); + s0 = peg$f124(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -5031,7 +5068,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } return s0; @@ -5046,7 +5083,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -5084,7 +5121,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5093,7 +5130,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } } s2 = []; @@ -5102,7 +5139,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -5111,7 +5148,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } } s3 = []; @@ -5120,7 +5157,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -5129,7 +5166,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } } s4 = peg$parseoperator(); @@ -5148,7 +5185,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5157,7 +5194,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } } s2 = peg$currPos; @@ -5204,7 +5241,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e150); } } } } @@ -5220,7 +5257,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e151); } } if (s0 === peg$FAILED) { s0 = peg$currPos; diff --git a/src/libs/SearchParser/autocompleteParser.peggy b/src/libs/SearchParser/autocompleteParser.peggy index 1a24a98020eb..b069398b9325 100644 --- a/src/libs/SearchParser/autocompleteParser.peggy +++ b/src/libs/SearchParser/autocompleteParser.peggy @@ -131,6 +131,7 @@ autocompleteKey "key" / submitterUserID / submitterPayrollID / orderDealNumbers + / violationApprover / reportFieldDynamic / columns / limit diff --git a/src/libs/SearchParser/baseRules.peggy b/src/libs/SearchParser/baseRules.peggy index 01455557adcd..21a2a19f2f40 100644 --- a/src/libs/SearchParser/baseRules.peggy +++ b/src/libs/SearchParser/baseRules.peggy @@ -93,6 +93,7 @@ title = "title"i { return "title"; } submitterUserID = "submitterUserID"i / "submitter-user-id"i { return "submitterUserID"; } submitterPayrollID = "submitterPayrollID"i / "submitter-payroll-id"i { return "submitterPayrollID"; } orderDealNumbers = "orderDealNumbers"i / "order-deal-numbers"i { return "orderDealNumbers"; } +violationApprover = "violationApprover"i / "violation-approver"i { return "violationApprover"; } assignee = "assignee"i { return "assignee"; } createdBy = "createdBy"i / "created-by"i { return "createdBy"; } action = "action"i { return "action"; } diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index 9189b46dcfe9..2020b7c2ad95 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -255,65 +255,67 @@ function peg$parse(input, options) { var peg$c68 = "submitter-payroll-id"; var peg$c69 = "orderdealnumbers"; var peg$c70 = "order-deal-numbers"; - var peg$c71 = "assignee"; - var peg$c72 = "createdby"; - var peg$c73 = "created-by"; - var peg$c74 = "action"; - var peg$c75 = "total"; - var peg$c76 = "has"; - var peg$c77 = "is"; - var peg$c78 = "purchaseamount"; - var peg$c79 = "purchase-amount"; - var peg$c80 = "purchasecurrency"; - var peg$c81 = "purchase-currency"; - var peg$c82 = "amountdebited"; - var peg$c83 = "amount-debited"; - var peg$c84 = "amountreimbursed"; - var peg$c85 = "amount-reimbursed"; - var peg$c86 = "columns"; - var peg$c87 = "view"; - var peg$c88 = "compare"; - var peg$c89 = "per-diem"; - var peg$c90 = "drafts"; - var peg$c91 = "draft"; - var peg$c92 = "tax"; - var peg$c93 = "policy-name"; - var peg$c94 = "long-report-id"; - var peg$c95 = "exported-to"; - var peg$c96 = "exportedto"; - var peg$c97 = "exchange-rate"; - var peg$c98 = "reimbursable-total"; - var peg$c99 = "non-reimbursable-total"; - var peg$c100 = "group-from"; - var peg$c101 = "group-expenses"; - var peg$c102 = "group-total"; - var peg$c103 = "group-card"; - var peg$c104 = "group-feed"; - var peg$c105 = "group-bank-account"; - var peg$c106 = "group-withdrawn"; - var peg$c107 = "group-withdrawal-id"; - var peg$c108 = "group-amount-debited"; - var peg$c109 = "group-amount-reimbursed"; - var peg$c110 = "group-category"; - var peg$c111 = "group-tag"; - var peg$c112 = "group-merchant"; - var peg$c113 = "group-day"; - var peg$c114 = "group-month"; - var peg$c115 = "group-week"; - var peg$c116 = "group-year"; - var peg$c117 = "group-quarter"; - var peg$c118 = "group-violation-approver"; - var peg$c119 = "group-approval-count"; - var peg$c120 = "group-approved-total"; - var peg$c121 = "!="; - var peg$c122 = ">="; - var peg$c123 = ">"; - var peg$c124 = "<="; - var peg$c125 = "<"; - var peg$c126 = "\\"; - var peg$c127 = "\u201C"; - var peg$c128 = "\u201D"; - var peg$c129 = "\""; + var peg$c71 = "violationapprover"; + var peg$c72 = "violation-approver"; + var peg$c73 = "assignee"; + var peg$c74 = "createdby"; + var peg$c75 = "created-by"; + var peg$c76 = "action"; + var peg$c77 = "total"; + var peg$c78 = "has"; + var peg$c79 = "is"; + var peg$c80 = "purchaseamount"; + var peg$c81 = "purchase-amount"; + var peg$c82 = "purchasecurrency"; + var peg$c83 = "purchase-currency"; + var peg$c84 = "amountdebited"; + var peg$c85 = "amount-debited"; + var peg$c86 = "amountreimbursed"; + var peg$c87 = "amount-reimbursed"; + var peg$c88 = "columns"; + var peg$c89 = "view"; + var peg$c90 = "compare"; + var peg$c91 = "per-diem"; + var peg$c92 = "drafts"; + var peg$c93 = "draft"; + var peg$c94 = "tax"; + var peg$c95 = "policy-name"; + var peg$c96 = "long-report-id"; + var peg$c97 = "exported-to"; + var peg$c98 = "exportedto"; + var peg$c99 = "exchange-rate"; + var peg$c100 = "reimbursable-total"; + var peg$c101 = "non-reimbursable-total"; + var peg$c102 = "group-from"; + var peg$c103 = "group-expenses"; + var peg$c104 = "group-total"; + var peg$c105 = "group-card"; + var peg$c106 = "group-feed"; + var peg$c107 = "group-bank-account"; + var peg$c108 = "group-withdrawn"; + var peg$c109 = "group-withdrawal-id"; + var peg$c110 = "group-amount-debited"; + var peg$c111 = "group-amount-reimbursed"; + var peg$c112 = "group-category"; + var peg$c113 = "group-tag"; + var peg$c114 = "group-merchant"; + var peg$c115 = "group-day"; + var peg$c116 = "group-month"; + var peg$c117 = "group-week"; + var peg$c118 = "group-year"; + var peg$c119 = "group-quarter"; + var peg$c120 = "group-violation-approver"; + var peg$c121 = "group-approval-count"; + var peg$c122 = "group-approved-total"; + var peg$c123 = "!="; + var peg$c124 = ">="; + var peg$c125 = ">"; + var peg$c126 = "<="; + var peg$c127 = "<"; + var peg$c128 = "\\"; + var peg$c129 = "\u201C"; + var peg$c130 = "\u201D"; + var peg$c131 = "\""; var peg$r0 = /^[^ \t\r\n\xA0]/; var peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; @@ -407,82 +409,84 @@ function peg$parse(input, options) { var peg$e73 = peg$literalExpectation("submitter-payroll-id", true); var peg$e74 = peg$literalExpectation("orderDealNumbers", true); var peg$e75 = peg$literalExpectation("order-deal-numbers", true); - var peg$e76 = peg$literalExpectation("assignee", true); - var peg$e77 = peg$literalExpectation("createdBy", true); - var peg$e78 = peg$literalExpectation("created-by", true); - var peg$e79 = peg$literalExpectation("action", true); - var peg$e80 = peg$literalExpectation("total", true); - var peg$e81 = peg$literalExpectation("has", true); - var peg$e82 = peg$literalExpectation("is", true); - var peg$e83 = peg$literalExpectation("purchaseAmount", true); - var peg$e84 = peg$literalExpectation("purchase-amount", true); - var peg$e85 = peg$literalExpectation("purchaseCurrency", true); - var peg$e86 = peg$literalExpectation("purchase-currency", true); - var peg$e87 = peg$literalExpectation("amountDebited", true); - var peg$e88 = peg$literalExpectation("amount-debited", true); - var peg$e89 = peg$literalExpectation("amountReimbursed", true); - var peg$e90 = peg$literalExpectation("amount-reimbursed", true); - var peg$e91 = peg$literalExpectation("columns", true); - var peg$e92 = peg$literalExpectation("view", true); - var peg$e93 = peg$literalExpectation("compare", true); - var peg$e94 = peg$literalExpectation("per-diem", true); - var peg$e95 = peg$literalExpectation("drafts", true); - var peg$e96 = peg$literalExpectation("draft", true); - var peg$e97 = peg$literalExpectation("tax", true); - var peg$e98 = peg$literalExpectation("policy-name", true); - var peg$e99 = peg$literalExpectation("long-report-id", true); - var peg$e100 = peg$literalExpectation("exported-to", true); - var peg$e101 = peg$classExpectation([":", "="], false, false); - var peg$e102 = peg$literalExpectation("exportedTo", true); - var peg$e103 = peg$literalExpectation("exchange-rate", true); - var peg$e104 = peg$literalExpectation("reimbursable-total", true); - var peg$e105 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e106 = peg$literalExpectation("group-from", true); - var peg$e107 = peg$literalExpectation("group-expenses", true); - var peg$e108 = peg$literalExpectation("group-total", true); - var peg$e109 = peg$literalExpectation("group-card", true); - var peg$e110 = peg$literalExpectation("group-feed", true); - var peg$e111 = peg$literalExpectation("group-bank-account", true); - var peg$e112 = peg$literalExpectation("group-withdrawn", true); - var peg$e113 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e114 = peg$literalExpectation("group-amount-debited", true); - var peg$e115 = peg$literalExpectation("group-amount-reimbursed", true); - var peg$e116 = peg$literalExpectation("group-category", true); - var peg$e117 = peg$literalExpectation("group-tag", true); - var peg$e118 = peg$literalExpectation("group-merchant", true); - var peg$e119 = peg$literalExpectation("group-day", true); - var peg$e120 = peg$literalExpectation("group-month", true); - var peg$e121 = peg$literalExpectation("group-week", true); - var peg$e122 = peg$literalExpectation("group-year", true); - var peg$e123 = peg$literalExpectation("group-quarter", true); - var peg$e124 = peg$literalExpectation("group-violation-approver", true); - var peg$e125 = peg$literalExpectation("group-approval-count", true); - var peg$e126 = peg$literalExpectation("group-approved-total", true); - var peg$e127 = peg$otherExpectation("operator"); - var peg$e128 = peg$literalExpectation("!=", false); - var peg$e129 = peg$literalExpectation(">=", false); - var peg$e130 = peg$literalExpectation(">", false); - var peg$e131 = peg$literalExpectation("<=", false); - var peg$e132 = peg$literalExpectation("<", false); - var peg$e133 = peg$literalExpectation("\\", false); - var peg$e134 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); - var peg$e135 = peg$otherExpectation("word"); - var peg$e136 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e137 = peg$otherExpectation("whitespace"); - var peg$e138 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e139 = peg$otherExpectation("quote"); - var peg$e140 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e141 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e142 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e143 = peg$literalExpectation("\u201C", false); - var peg$e144 = peg$literalExpectation("\u201D", false); - var peg$e145 = peg$literalExpectation("\"", false); - var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e147 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e149 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e150 = peg$classExpectation([","], false, false); - var peg$e151 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e76 = peg$literalExpectation("violationApprover", true); + var peg$e77 = peg$literalExpectation("violation-approver", true); + var peg$e78 = peg$literalExpectation("assignee", true); + var peg$e79 = peg$literalExpectation("createdBy", true); + var peg$e80 = peg$literalExpectation("created-by", true); + var peg$e81 = peg$literalExpectation("action", true); + var peg$e82 = peg$literalExpectation("total", true); + var peg$e83 = peg$literalExpectation("has", true); + var peg$e84 = peg$literalExpectation("is", true); + var peg$e85 = peg$literalExpectation("purchaseAmount", true); + var peg$e86 = peg$literalExpectation("purchase-amount", true); + var peg$e87 = peg$literalExpectation("purchaseCurrency", true); + var peg$e88 = peg$literalExpectation("purchase-currency", true); + var peg$e89 = peg$literalExpectation("amountDebited", true); + var peg$e90 = peg$literalExpectation("amount-debited", true); + var peg$e91 = peg$literalExpectation("amountReimbursed", true); + var peg$e92 = peg$literalExpectation("amount-reimbursed", true); + var peg$e93 = peg$literalExpectation("columns", true); + var peg$e94 = peg$literalExpectation("view", true); + var peg$e95 = peg$literalExpectation("compare", true); + var peg$e96 = peg$literalExpectation("per-diem", true); + var peg$e97 = peg$literalExpectation("drafts", true); + var peg$e98 = peg$literalExpectation("draft", true); + var peg$e99 = peg$literalExpectation("tax", true); + var peg$e100 = peg$literalExpectation("policy-name", true); + var peg$e101 = peg$literalExpectation("long-report-id", true); + var peg$e102 = peg$literalExpectation("exported-to", true); + var peg$e103 = peg$classExpectation([":", "="], false, false); + var peg$e104 = peg$literalExpectation("exportedTo", true); + var peg$e105 = peg$literalExpectation("exchange-rate", true); + var peg$e106 = peg$literalExpectation("reimbursable-total", true); + var peg$e107 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e108 = peg$literalExpectation("group-from", true); + var peg$e109 = peg$literalExpectation("group-expenses", true); + var peg$e110 = peg$literalExpectation("group-total", true); + var peg$e111 = peg$literalExpectation("group-card", true); + var peg$e112 = peg$literalExpectation("group-feed", true); + var peg$e113 = peg$literalExpectation("group-bank-account", true); + var peg$e114 = peg$literalExpectation("group-withdrawn", true); + var peg$e115 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e116 = peg$literalExpectation("group-amount-debited", true); + var peg$e117 = peg$literalExpectation("group-amount-reimbursed", true); + var peg$e118 = peg$literalExpectation("group-category", true); + var peg$e119 = peg$literalExpectation("group-tag", true); + var peg$e120 = peg$literalExpectation("group-merchant", true); + var peg$e121 = peg$literalExpectation("group-day", true); + var peg$e122 = peg$literalExpectation("group-month", true); + var peg$e123 = peg$literalExpectation("group-week", true); + var peg$e124 = peg$literalExpectation("group-year", true); + var peg$e125 = peg$literalExpectation("group-quarter", true); + var peg$e126 = peg$literalExpectation("group-violation-approver", true); + var peg$e127 = peg$literalExpectation("group-approval-count", true); + var peg$e128 = peg$literalExpectation("group-approved-total", true); + var peg$e129 = peg$otherExpectation("operator"); + var peg$e130 = peg$literalExpectation("!=", false); + var peg$e131 = peg$literalExpectation(">=", false); + var peg$e132 = peg$literalExpectation(">", false); + var peg$e133 = peg$literalExpectation("<=", false); + var peg$e134 = peg$literalExpectation("<", false); + var peg$e135 = peg$literalExpectation("\\", false); + var peg$e136 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); + var peg$e137 = peg$otherExpectation("word"); + var peg$e138 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e139 = peg$otherExpectation("whitespace"); + var peg$e140 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e141 = peg$otherExpectation("quote"); + var peg$e142 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e143 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e144 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e145 = peg$literalExpectation("\u201C", false); + var peg$e146 = peg$literalExpectation("\u201D", false); + var peg$e147 = peg$literalExpectation("\"", false); + var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e149 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e150 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e151 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e152 = peg$classExpectation([","], false, false); + var peg$e153 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(filters) { return applyDefaults(filters); }; var peg$f1 = function(head, tail) { @@ -616,89 +620,90 @@ function peg$parse(input, options) { var peg$f52 = function() { return "submitterUserID"; }; var peg$f53 = function() { return "submitterPayrollID"; }; var peg$f54 = function() { return "orderDealNumbers"; }; - var peg$f55 = function() { return "assignee"; }; - var peg$f56 = function() { return "createdBy"; }; - var peg$f57 = function() { return "action"; }; - var peg$f58 = function() {return "total"; }; - var peg$f59 = function() {return "has"; }; - var peg$f60 = function() {return "is"; }; - var peg$f61 = function() {return "purchaseAmount"}; - var peg$f62 = function() {return "purchaseCurrency"}; - var peg$f63 = function() {return "amountDebited"}; - var peg$f64 = function() {return "amountReimbursed"}; - var peg$f65 = function() { + var peg$f55 = function() { return "violationApprover"; }; + var peg$f56 = function() { return "assignee"; }; + var peg$f57 = function() { return "createdBy"; }; + var peg$f58 = function() { return "action"; }; + var peg$f59 = function() {return "total"; }; + var peg$f60 = function() {return "has"; }; + var peg$f61 = function() {return "is"; }; + var peg$f62 = function() {return "purchaseAmount"}; + var peg$f63 = function() {return "purchaseCurrency"}; + var peg$f64 = function() {return "amountDebited"}; + var peg$f65 = function() {return "amountReimbursed"}; + var peg$f66 = function() { isColumnsContext = true; return "columns"; }; - var peg$f66 = function() {return "view"}; - var peg$f67 = function() {return "compare"}; - var peg$f68 = function() { return isColumnsContext; }; - var peg$f69 = function() { return "perDiem"; }; - var peg$f70 = function() { return "drafts"; }; - var peg$f71 = function() { return "originalamount"; }; - var peg$f72 = function() { return "taxAmount"; }; - var peg$f73 = function() { return "taxrate"; }; - var peg$f74 = function() { return "policyname"; }; - var peg$f75 = function() { return "withdrawalID"; }; - var peg$f76 = function() { return "bankAccount"; }; - var peg$f77 = function() { return "reportID"; }; - var peg$f78 = function() { return "base62ReportID"; }; - var peg$f79 = function() { return "exportedto"; }; - var peg$f80 = function() { return "exportedTo"; }; + var peg$f67 = function() {return "view"}; + var peg$f68 = function() {return "compare"}; + var peg$f69 = function() { return isColumnsContext; }; + var peg$f70 = function() { return "perDiem"; }; + var peg$f71 = function() { return "drafts"; }; + var peg$f72 = function() { return "originalamount"; }; + var peg$f73 = function() { return "taxAmount"; }; + var peg$f74 = function() { return "taxrate"; }; + var peg$f75 = function() { return "policyname"; }; + var peg$f76 = function() { return "withdrawalID"; }; + var peg$f77 = function() { return "bankAccount"; }; + var peg$f78 = function() { return "reportID"; }; + var peg$f79 = function() { return "base62ReportID"; }; + var peg$f80 = function() { return "exportedto"; }; var peg$f81 = function() { return "exportedTo"; }; - var peg$f82 = function() { return "exchangeRate"; }; - var peg$f83 = function() { return "reimbursableTotal"; }; - var peg$f84 = function() { return "nonReimbursableTotal"; }; - var peg$f85 = function() { return "groupFrom"; }; - var peg$f86 = function() { return "groupExpenses"; }; - var peg$f87 = function() { return "groupTotal"; }; - var peg$f88 = function() { return "groupCard"; }; - var peg$f89 = function() { return "groupFeed"; }; - var peg$f90 = function() { return "groupBankAccount"; }; - var peg$f91 = function() { return "groupWithdrawn"; }; - var peg$f92 = function() { return "groupWithdrawalID"; }; - var peg$f93 = function() { return "groupAmountDebited"; }; - var peg$f94 = function() { return "groupAmountReimbursed"; }; - var peg$f95 = function() { return "amountDebited"; }; - var peg$f96 = function() { return "amountReimbursed"; }; - var peg$f97 = function() { return "groupCategory"; }; - var peg$f98 = function() { return "groupTag"; }; - var peg$f99 = function() { return "groupMerchant"; }; - var peg$f100 = function() { return "groupday"; }; - var peg$f101 = function() { return "groupmonth"; }; - var peg$f102 = function() { return "groupweek"; }; - var peg$f103 = function() { return "groupyear"; }; - var peg$f104 = function() { return "groupquarter"; }; - var peg$f105 = function() { return "groupViolationApprover"; }; - var peg$f106 = function() { return "groupApprovalCount"; }; - var peg$f107 = function() { return "groupApprovedTotal"; }; - var peg$f108 = function() { return "eq"; }; - var peg$f109 = function() { return "neq"; }; - var peg$f110 = function() { return "gte"; }; - var peg$f111 = function() { return "gt"; }; - var peg$f112 = function() { return "lte"; }; - var peg$f113 = function() { return "lt"; }; - var peg$f114 = function(o) { + var peg$f82 = function() { return "exportedTo"; }; + var peg$f83 = function() { return "exchangeRate"; }; + var peg$f84 = function() { return "reimbursableTotal"; }; + var peg$f85 = function() { return "nonReimbursableTotal"; }; + var peg$f86 = function() { return "groupFrom"; }; + var peg$f87 = function() { return "groupExpenses"; }; + var peg$f88 = function() { return "groupTotal"; }; + var peg$f89 = function() { return "groupCard"; }; + var peg$f90 = function() { return "groupFeed"; }; + var peg$f91 = function() { return "groupBankAccount"; }; + var peg$f92 = function() { return "groupWithdrawn"; }; + var peg$f93 = function() { return "groupWithdrawalID"; }; + var peg$f94 = function() { return "groupAmountDebited"; }; + var peg$f95 = function() { return "groupAmountReimbursed"; }; + var peg$f96 = function() { return "amountDebited"; }; + var peg$f97 = function() { return "amountReimbursed"; }; + var peg$f98 = function() { return "groupCategory"; }; + var peg$f99 = function() { return "groupTag"; }; + var peg$f100 = function() { return "groupMerchant"; }; + var peg$f101 = function() { return "groupday"; }; + var peg$f102 = function() { return "groupmonth"; }; + var peg$f103 = function() { return "groupweek"; }; + var peg$f104 = function() { return "groupyear"; }; + var peg$f105 = function() { return "groupquarter"; }; + var peg$f106 = function() { return "groupViolationApprover"; }; + var peg$f107 = function() { return "groupApprovalCount"; }; + var peg$f108 = function() { return "groupApprovedTotal"; }; + var peg$f109 = function() { return "eq"; }; + var peg$f110 = function() { return "neq"; }; + var peg$f111 = function() { return "gte"; }; + var peg$f112 = function() { return "gt"; }; + var peg$f113 = function() { return "lte"; }; + var peg$f114 = function() { return "lt"; }; + var peg$f115 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f115 = function(c) { return c; }; - var peg$f116 = function(chars) { return chars.join("").trim(); }; - var peg$f117 = function() { + var peg$f116 = function(c) { return c; }; + var peg$f117 = function(chars) { return chars.join("").trim(); }; + var peg$f118 = function() { isColumnsContext = false; return "and"; }; - var peg$f118 = function() { return expectingNestedQuote; }; - var peg$f119 = function(start, inner, end) { //handle no-breaking space + var peg$f119 = function() { return expectingNestedQuote; }; + var peg$f120 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f120 = function(start) {return "“"}; - var peg$f121 = function(start) {return "”"}; - var peg$f122 = function(start) {return "\""}; - var peg$f123 = function(start, inner, end) { + var peg$f121 = function(start) {return "“"}; + var peg$f122 = function(start) {return "”"}; + var peg$f123 = function(start) {return "\""}; + var peg$f124 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -1270,29 +1275,32 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = peg$parseorderDealNumbers(); if (s1 === peg$FAILED) { - s1 = peg$parseassignee(); + s1 = peg$parseviolationApprover(); if (s1 === peg$FAILED) { - s1 = peg$parsecreatedBy(); + s1 = peg$parseassignee(); if (s1 === peg$FAILED) { - s1 = peg$parsereimbursable(); + s1 = peg$parsecreatedBy(); if (s1 === peg$FAILED) { - s1 = peg$parsebillable(); + s1 = peg$parsereimbursable(); if (s1 === peg$FAILED) { - s1 = peg$parseaction(); + s1 = peg$parsebillable(); if (s1 === peg$FAILED) { - s1 = peg$parsehas(); + s1 = peg$parseaction(); if (s1 === peg$FAILED) { - s1 = peg$parseis(); + s1 = peg$parsehas(); if (s1 === peg$FAILED) { - s1 = peg$parsepurchaseCurrency(); + s1 = peg$parseis(); if (s1 === peg$FAILED) { - s1 = peg$parsepurchaseAmount(); + s1 = peg$parsepurchaseCurrency(); if (s1 === peg$FAILED) { - s1 = peg$parsepolicyID(); + s1 = peg$parsepurchaseAmount(); if (s1 === peg$FAILED) { - s1 = peg$parsestatus(); + s1 = peg$parsepolicyID(); if (s1 === peg$FAILED) { - s1 = peg$parsereportFieldDynamic(); + s1 = peg$parsestatus(); + if (s1 === peg$FAILED) { + s1 = peg$parsereportFieldDynamic(); + } } } } @@ -2660,20 +2668,49 @@ function peg$parse(input, options) { return s0; } + function peg$parseviolationApprover() { + var s0, s1; + + s0 = input.substr(peg$currPos, 17); + if (s0.toLowerCase() === peg$c71) { + peg$currPos += 17; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e76); } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 18); + if (s1.toLowerCase() === peg$c72) { + peg$currPos += 18; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e77); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f55(); + } + s0 = s1; + } + + return s0; + } + function peg$parseassignee() { var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c71) { + if (s1.toLowerCase() === peg$c73) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f55(); + s1 = peg$f56(); } s0 = s1; @@ -2684,24 +2721,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c72) { + if (s0.toLowerCase() === peg$c74) { peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c73) { + if (s1.toLowerCase() === peg$c75) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f56(); + s1 = peg$f57(); } s0 = s1; } @@ -2714,15 +2751,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c74) { + if (s1.toLowerCase() === peg$c76) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f57(); + s1 = peg$f58(); } s0 = s1; @@ -2734,15 +2771,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f58(); + s1 = peg$f59(); } s0 = s1; @@ -2754,15 +2791,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c76) { + if (s1.toLowerCase() === peg$c78) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f59(); + s1 = peg$f60(); } s0 = s1; @@ -2774,15 +2811,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c79) { peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f60(); + s1 = peg$f61(); } s0 = s1; @@ -2793,24 +2830,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c78) { + if (s0.toLowerCase() === peg$c80) { peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f61(); + s1 = peg$f62(); } s0 = s1; } @@ -2822,24 +2859,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c80) { + if (s0.toLowerCase() === peg$c82) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c83) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f62(); + s1 = peg$f63(); } s0 = s1; } @@ -2851,24 +2888,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 13); - if (s0.toLowerCase() === peg$c82) { + if (s0.toLowerCase() === peg$c84) { peg$currPos += 13; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c85) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f63(); + s1 = peg$f64(); } s0 = s1; } @@ -2880,24 +2917,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c84) { + if (s0.toLowerCase() === peg$c86) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c87) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f64(); + s1 = peg$f65(); } s0 = s1; } @@ -2910,15 +2947,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c86) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f65(); + s1 = peg$f66(); } s0 = s1; @@ -2930,15 +2967,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c89) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f66(); + s1 = peg$f67(); } s0 = s1; @@ -2950,15 +2987,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c88) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f67(); + s1 = peg$f68(); } s0 = s1; @@ -2970,7 +3007,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f68(); + s1 = peg$f69(); if (s1) { s1 = undefined; } else { @@ -3114,11 +3151,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c91) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3133,7 +3170,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f69(); + s0 = peg$f70(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3151,19 +3188,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c90) { + if (s1.toLowerCase() === peg$c92) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c91) { + if (s1.toLowerCase() === peg$c93) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } } if (s1 !== peg$FAILED) { @@ -3179,7 +3216,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f70(); + s0 = peg$f71(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3197,11 +3234,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3216,7 +3253,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f71(); + s0 = peg$f72(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3234,11 +3271,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c92) { + if (s1.toLowerCase() === peg$c94) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3253,7 +3290,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f72(); + s0 = peg$f73(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3290,7 +3327,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f73(); + s0 = peg$f74(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3308,11 +3345,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c93) { + if (s1.toLowerCase() === peg$c95) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3327,7 +3364,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f74(); + s0 = peg$f75(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3364,7 +3401,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f75(); + s0 = peg$f76(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3401,7 +3438,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f76(); + s0 = peg$f77(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3419,11 +3456,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c94) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3438,7 +3475,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f77(); + s0 = peg$f78(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3475,7 +3512,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f78(); + s0 = peg$f79(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3493,11 +3530,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3512,7 +3549,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f79(); + s0 = peg$f80(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3537,7 +3574,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -3556,11 +3593,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c96) { + if (s1.toLowerCase() === peg$c98) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3575,7 +3612,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f80(); + s0 = peg$f81(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3587,11 +3624,11 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3606,7 +3643,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f81(); + s0 = peg$f82(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3625,11 +3662,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c99) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3644,7 +3681,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f82(); + s0 = peg$f83(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3662,11 +3699,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c98) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3681,7 +3718,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f83(); + s0 = peg$f84(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3699,11 +3736,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c101) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3718,7 +3755,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f84(); + s0 = peg$f85(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3736,11 +3773,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c100) { + if (s1.toLowerCase() === peg$c102) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3755,7 +3792,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f85(); + s0 = peg$f86(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3773,11 +3810,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c101) { + if (s1.toLowerCase() === peg$c103) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3792,7 +3829,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f86(); + s0 = peg$f87(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3810,11 +3847,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c102) { + if (s1.toLowerCase() === peg$c104) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3829,7 +3866,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f87(); + s0 = peg$f88(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3847,11 +3884,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c103) { + if (s1.toLowerCase() === peg$c105) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3866,7 +3903,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f88(); + s0 = peg$f89(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3884,11 +3921,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c104) { + if (s1.toLowerCase() === peg$c106) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3903,7 +3940,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f89(); + s0 = peg$f90(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3921,11 +3958,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c105) { + if (s1.toLowerCase() === peg$c107) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3940,7 +3977,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f90(); + s0 = peg$f91(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3958,11 +3995,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c106) { + if (s1.toLowerCase() === peg$c108) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3977,7 +4014,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f91(); + s0 = peg$f92(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3995,11 +4032,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c107) { + if (s1.toLowerCase() === peg$c109) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4014,7 +4051,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f92(); + s0 = peg$f93(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4032,11 +4069,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c108) { + if (s1.toLowerCase() === peg$c110) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4051,7 +4088,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f93(); + s0 = peg$f94(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4069,11 +4106,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 23); - if (s1.toLowerCase() === peg$c109) { + if (s1.toLowerCase() === peg$c111) { peg$currPos += 23; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4088,7 +4125,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f94(); + s0 = peg$f95(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4106,11 +4143,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c85) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4125,7 +4162,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f95(); + s0 = peg$f96(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4143,11 +4180,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c87) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4162,7 +4199,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f96(); + s0 = peg$f97(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4180,11 +4217,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c110) { + if (s1.toLowerCase() === peg$c112) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4199,7 +4236,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f97(); + s0 = peg$f98(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4217,11 +4254,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c111) { + if (s1.toLowerCase() === peg$c113) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4236,7 +4273,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f98(); + s0 = peg$f99(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4254,11 +4291,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c112) { + if (s1.toLowerCase() === peg$c114) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4273,7 +4310,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f99(); + s0 = peg$f100(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4291,11 +4328,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c113) { + if (s1.toLowerCase() === peg$c115) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4310,7 +4347,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f100(); + s0 = peg$f101(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4328,11 +4365,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c114) { + if (s1.toLowerCase() === peg$c116) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e122); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4347,7 +4384,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f101(); + s0 = peg$f102(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4365,11 +4402,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c115) { + if (s1.toLowerCase() === peg$c117) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4384,7 +4421,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f102(); + s0 = peg$f103(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4402,11 +4439,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c116) { + if (s1.toLowerCase() === peg$c118) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e124); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4421,7 +4458,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f103(); + s0 = peg$f104(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4439,11 +4476,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c117) { + if (s1.toLowerCase() === peg$c119) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4458,7 +4495,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f104(); + s0 = peg$f105(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4476,11 +4513,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 24); - if (s1.toLowerCase() === peg$c118) { + if (s1.toLowerCase() === peg$c120) { peg$currPos += 24; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4495,7 +4532,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f105(); + s0 = peg$f106(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4513,11 +4550,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c119) { + if (s1.toLowerCase() === peg$c121) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4532,7 +4569,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f106(); + s0 = peg$f107(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4550,11 +4587,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c120) { + if (s1.toLowerCase() === peg$c122) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4569,7 +4606,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f107(); + s0 = peg$f108(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4592,81 +4629,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f108(); + s1 = peg$f109(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c121) { - s1 = peg$c121; + if (input.substr(peg$currPos, 2) === peg$c123) { + s1 = peg$c123; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f109(); + s1 = peg$f110(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c122) { - s1 = peg$c122; + if (input.substr(peg$currPos, 2) === peg$c124) { + s1 = peg$c124; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f110(); + s1 = peg$f111(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c123; + s1 = peg$c125; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f111(); + s1 = peg$f112(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c124) { - s1 = peg$c124; + if (input.substr(peg$currPos, 2) === peg$c126) { + s1 = peg$c126; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f112(); + s1 = peg$f113(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c125; + s1 = peg$c127; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f113(); + s1 = peg$f114(); } s0 = s1; } @@ -4677,7 +4714,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } return s0; @@ -4690,7 +4727,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f114(s1); + s1 = peg$f115(s1); } s0 = s1; @@ -4702,11 +4739,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c126; + s1 = peg$c128; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } if (s1 !== peg$FAILED) { s2 = input.charAt(peg$currPos); @@ -4714,11 +4751,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f115(s2); + s0 = peg$f116(s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4744,7 +4781,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } if (s2 !== peg$FAILED) { @@ -4757,7 +4794,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } } @@ -4766,13 +4803,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f116(s1); + s1 = peg$f117(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } return s0; @@ -4784,7 +4821,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f117(); + s1 = peg$f118(); s0 = s1; return s0; @@ -4800,7 +4837,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4809,12 +4846,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } return s0; } @@ -4824,7 +4861,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f118(); + s1 = peg$f119(); if (s1) { s1 = undefined; } else { @@ -4861,7 +4898,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4870,7 +4907,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } } s2 = input.charAt(peg$currPos); @@ -4878,7 +4915,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4889,7 +4926,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } } while (s4 !== peg$FAILED) { @@ -4901,7 +4938,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } } } @@ -4910,7 +4947,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4919,7 +4956,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4928,11 +4965,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } peg$savedPos = s0; - s0 = peg$f119(s1, s3, s5); + s0 = peg$f120(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4944,7 +4981,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } return s0; @@ -4961,7 +4998,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4970,7 +5007,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } } s2 = input.charAt(peg$currPos); @@ -4978,7 +5015,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4989,7 +5026,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -5005,15 +5042,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c127; + s6 = peg$c129; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f120(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5036,15 +5073,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c128; + s6 = peg$c130; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f121(s1); + s4 = peg$f122(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5067,15 +5104,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c129; + s6 = peg$c131; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f123(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5097,7 +5134,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -5113,15 +5150,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c127; + s6 = peg$c129; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f120(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5144,15 +5181,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c128; + s6 = peg$c130; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f121(s1); + s4 = peg$f122(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5175,15 +5212,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c129; + s6 = peg$c131; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f123(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5200,7 +5237,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f123(s1, s3, s4); + s0 = peg$f124(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -5212,7 +5249,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } return s0; @@ -5227,7 +5264,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -5265,7 +5302,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5274,7 +5311,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } } s2 = []; @@ -5283,7 +5320,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -5292,7 +5329,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } } s3 = []; @@ -5301,7 +5338,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e150); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -5310,7 +5347,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e150); } } } s4 = peg$parseoperator(); @@ -5329,7 +5366,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e151); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5338,7 +5375,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e151); } } } s2 = peg$currPos; @@ -5385,7 +5422,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e152); } } } } @@ -5401,7 +5438,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e151); } + if (peg$silentFails === 0) { peg$fail(peg$e153); } } if (s0 === peg$FAILED) { s0 = peg$currPos; diff --git a/src/libs/SearchParser/searchParser.peggy b/src/libs/SearchParser/searchParser.peggy index 6785990e8c99..088505ca0d87 100644 --- a/src/libs/SearchParser/searchParser.peggy +++ b/src/libs/SearchParser/searchParser.peggy @@ -302,6 +302,7 @@ key "key" / submitterUserID / submitterPayrollID / orderDealNumbers + / violationApprover / assignee / createdBy / reimbursable diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 613b3873280a..cd41a805f243 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -452,7 +452,7 @@ const transactionViolationApproverGroupColumnNamesToSortingProperty: Transaction [CONST.SEARCH.TABLE_COLUMNS.AVATAR]: null, [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER]: 'formattedViolationApprover' as const, [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT]: 'approvalCount' as const, - [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL]: 'approvedTotal' as const, + [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL]: 'total' as const, ...transactionGroupBaseSortingProperties, }; @@ -3163,15 +3163,7 @@ function getActiveGroupSearchHashes(data: OnyxTypes.SearchResults['data'] | unde } case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: { if ('approvalCount' in group && typeof group.accountID === 'number') { - transactionsQueryJSON = buildSearchQueryJSON( - `${buildSearchQueryString({ - ...queryJSON, - groupBy: undefined, - limit: undefined, - sortBy: CONST.SEARCH.TABLE_COLUMNS.DATE, - sortOrder: CONST.SEARCH.SORT_ORDER.DESC, - })} violation-approver:${group.accountID}`, - ); + transactionsQueryJSON = buildViolationApproverGroupQuery(queryJSON, group.accountID); } break; } @@ -3211,6 +3203,10 @@ function buildDateRangeGroupQuery(queryJSON: SearchQueryJSON, dateRange: {start: return {transactionsQueryJSON, start, end}; } +function buildViolationApproverGroupQuery(queryJSON: SearchQueryJSON, accountID: number): SearchQueryJSON | undefined { + return buildSpecificGroupQuery(queryJSON, CONST.SEARCH.SYNTAX_FILTER_KEYS.VIOLATION_APPROVER, accountID); +} + /** * @private * Organizes data into List Sections grouped by member for display, for the TransactionGroupListItemType of Search Results. @@ -3707,18 +3703,7 @@ function getViolationApproverSections( } const personalDetails = data.personalDetailsList?.[violationApproverGroup.accountID] ?? onyxPersonalDetailsList?.[violationApproverGroup.accountID] ?? emptyPersonalDetails; - const transactionsQueryJSON = - queryJSON && violationApproverGroup.accountID - ? buildSearchQueryJSON( - `${buildSearchQueryString({ - ...queryJSON, - groupBy: undefined, - limit: undefined, - sortBy: CONST.SEARCH.TABLE_COLUMNS.DATE, - sortOrder: CONST.SEARCH.SORT_ORDER.DESC, - })} violation-approver:${violationApproverGroup.accountID}`, - ) - : undefined; + const transactionsQueryJSON = queryJSON ? buildViolationApproverGroupQuery(queryJSON, violationApproverGroup.accountID) : undefined; violationApproverSections[key] = { groupedBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, diff --git a/src/types/onyx/SearchResults.ts b/src/types/onyx/SearchResults.ts index 7fe63c734478..c39c018d5977 100644 --- a/src/types/onyx/SearchResults.ts +++ b/src/types/onyx/SearchResults.ts @@ -277,9 +277,6 @@ type SearchViolationApproverGroup = SearchGroupBase & { /** How many expenses this approver approved */ approvalCount: number; - - /** Total amount of expenses this approver approved, in cents */ - approvedTotal: number; }; /** SearchResultDataType */ diff --git a/tests/unit/Search/SearchUIUtilsTest.ts b/tests/unit/Search/SearchUIUtilsTest.ts index cb27a48d318c..0a0f4393069a 100644 --- a/tests/unit/Search/SearchUIUtilsTest.ts +++ b/tests/unit/Search/SearchUIUtilsTest.ts @@ -748,6 +748,39 @@ const searchResultsGroupByCategory: OnyxTypes.SearchResults = { }, }; +const violationApproverAccountID = 22982540; +const searchResultsGroupByViolationApprover: OnyxTypes.SearchResults = { + data: { + personalDetailsList: { + [violationApproverAccountID]: { + accountID: violationApproverAccountID, + displayName: 'Approver', + login: 'approver@policy.com', + }, + }, + [`${CONST.SEARCH.GROUP_PREFIX}${violationApproverAccountID}` as const]: { + accountID: violationApproverAccountID, + approvalCount: 3, + count: 3, + currency: 'USD', + total: 150, + }, + }, + search: { + count: 3, + currency: 'USD', + hasMoreResults: false, + hasResults: true, + offset: 0, + hash: 0, + sortBy: 'date', + sortOrder: 'desc', + total: 150, + isLoading: false, + type: 'expense', + }, +}; + const withoutReportActionErrors = (reportAction: T): Omit => { const reportActionWithoutErrors = {...reportAction}; delete reportActionWithoutErrors.errors; @@ -3826,6 +3859,59 @@ describe('SearchUIUtils', () => { expect(categorySection.transactionsQueryJSON?.inputQuery).not.toContain('limit:'); }); + it('should build a violationApprover drill-down for a violation-approver group', () => { + // Given a violation-approver grouped query whose limit is meant to bound how many groups are shown + const parsedQuery = buildSearchQueryJSON(`type:expense has:approved-violation group-by:${CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER} limit:10`); + if (!parsedQuery) { + throw new Error('Failed to parse violation-approver grouped search query'); + } + expect(parsedQuery.limit).toBe(10); + + // When the violation-approver sections are built + const [sections] = getSectionsByType( + SearchUIUtils.getSections({ + dateFnsLocale: undefined, + type: CONST.SEARCH.DATA_TYPES.EXPENSE, + data: searchResultsGroupByViolationApprover.data, + currentAccountID: 2074551, + currentUserEmail: '', + translate: translateLocal, + formatPhoneNumber, + bankAccountList: {}, + rules: undefined, + groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, + conciergeReportID: undefined, + convertToDisplayString, + reportAttributesDerivedValue: {}, + queryJSON: {...parsedQuery}, + }), + SearchUIUtils.isTransactionViolationApproverGroupListItemType, + ); + + // Then the per-group query drops the grouping and limit, keeps has:approved-violation, + // and filters by the approver as a syntax filter + const violationApproverSection = sections.at(0); + if (!violationApproverSection) { + throw new Error('Expected a violation-approver group section'); + } + expect(violationApproverSection.transactionsQueryJSON?.groupBy).toBeUndefined(); + expect(violationApproverSection.transactionsQueryJSON?.limit).toBeUndefined(); + expect(violationApproverSection.transactionsQueryJSON?.inputQuery).not.toContain('limit:'); + expect(violationApproverSection.transactionsQueryJSON?.filters).toEqual({ + operator: CONST.SEARCH.SYNTAX_OPERATORS.AND, + left: { + operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, + left: CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS, + right: CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION, + }, + right: { + operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, + left: CONST.SEARCH.SYNTAX_FILTER_KEYS.VIOLATION_APPROVER, + right: String(violationApproverAccountID), + }, + }); + }); + // Every date granularity drills down through the same `buildDateRangeGroupQuery` builder, so they are // covered together: a regression that reintroduced `limit` in that one builder would break all five. it.each([ diff --git a/tests/unit/SearchParserTest.ts b/tests/unit/SearchParserTest.ts index 60d5f9916081..10ae66b7ed61 100644 --- a/tests/unit/SearchParserTest.ts +++ b/tests/unit/SearchParserTest.ts @@ -871,6 +871,28 @@ const tests = [ filters: null, }, }, + { + query: 'type:expense has:approved-violation violation-approver:22982540', + expected: { + type: CONST.SEARCH.DATA_TYPES.EXPENSE, + sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, + sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', + filters: { + operator: CONST.SEARCH.SYNTAX_OPERATORS.AND, + left: { + operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, + left: CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS, + right: CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION, + }, + right: { + operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, + left: CONST.SEARCH.SYNTAX_FILTER_KEYS.VIOLATION_APPROVER, + right: '22982540', + }, + }, + }, + }, { query: 'type:chat is:read', expected: { From 0c036fd73bc7fd9f89c1c97c18d633cd89efe85c Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Thu, 1 Oct 2026 12:20:08 +0700 Subject: [PATCH 03/11] fix unit test --- src/libs/SearchParser/searchParser.js | 7 ++++--- src/libs/SearchParser/searchParser.peggy | 4 +--- tests/unit/TransactionGroupListItemTest.tsx | 1 + 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index 2020b7c2ad95..9310b3b103f9 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -5493,8 +5493,6 @@ function peg$parse(input, options) { "violation-approver": "desc", }; - const DEFAULT_SORT_BY_VALUES = new Set([...Object.values(GROUP_BY_DEFAULT_SORT), "date"]); - const TIME_BASED_GROUP_BY = new Set(["day", "week", "month", "year", "quarter"]); const defaultValues = { @@ -5513,7 +5511,10 @@ function peg$parse(input, options) { ]); function isDefaultSortValue(sortBy) { - return DEFAULT_SORT_BY_VALUES.has(sortBy); + // `date` is the implicit global default. A group-column sort is only implicit when it + // matches the groupBy already applied — so `sort-by:group-expenses` on `group-by:from` + // (Violations by submitter) stays explicit and is not rewritten to `groupFrom`. + return sortBy === "date" || sortBy === GROUP_BY_DEFAULT_SORT[defaultValues.groupBy]; } function getDefaultSortByForGroupBy(groupBy) { diff --git a/src/libs/SearchParser/searchParser.peggy b/src/libs/SearchParser/searchParser.peggy index 088505ca0d87..0b6318140f0a 100644 --- a/src/libs/SearchParser/searchParser.peggy +++ b/src/libs/SearchParser/searchParser.peggy @@ -58,8 +58,6 @@ "violation-approver": "desc", }; - const DEFAULT_SORT_BY_VALUES = new Set([...Object.values(GROUP_BY_DEFAULT_SORT), "date"]); - const TIME_BASED_GROUP_BY = new Set(["day", "week", "month", "year", "quarter"]); const defaultValues = { @@ -78,7 +76,7 @@ ]); function isDefaultSortValue(sortBy) { - return DEFAULT_SORT_BY_VALUES.has(sortBy); + return sortBy === "date" || sortBy === GROUP_BY_DEFAULT_SORT[defaultValues.groupBy]; } function getDefaultSortByForGroupBy(groupBy) { diff --git a/tests/unit/TransactionGroupListItemTest.tsx b/tests/unit/TransactionGroupListItemTest.tsx index a97710435c41..fee25cae4746 100644 --- a/tests/unit/TransactionGroupListItemTest.tsx +++ b/tests/unit/TransactionGroupListItemTest.tsx @@ -56,6 +56,7 @@ jest.mock('@libs/SearchUIUtils', () => ({ getGroupTableScrollLayout: jest.fn(() => ({dataColumns: [], minTableWidth: 0, shouldScrollHorizontally: false})), getViolationsForTransaction: jest.fn(() => ''), isTransactionDayGroupListItemType: jest.fn((item: Record) => item.groupedBy === 'day'), + isTransactionViolationApproverGroupListItemType: jest.fn((item: Record) => item.groupedBy === 'violation-approver'), })); jest.mock('@react-navigation/native', () => ({ From 037288600cbbc18d91473df29eb4176ec9168c2c Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Thu, 1 Oct 2026 12:22:29 +0700 Subject: [PATCH 04/11] update parser --- src/libs/SearchParser/searchParser.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index 9310b3b103f9..baf802f8e609 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -5511,9 +5511,6 @@ function peg$parse(input, options) { ]); function isDefaultSortValue(sortBy) { - // `date` is the implicit global default. A group-column sort is only implicit when it - // matches the groupBy already applied — so `sort-by:group-expenses` on `group-by:from` - // (Violations by submitter) stays explicit and is not rewritten to `groupFrom`. return sortBy === "date" || sortBy === GROUP_BY_DEFAULT_SORT[defaultValues.groupBy]; } From 5c65e7364d4662a699b35d573a53057326844c5d Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Thu, 1 Oct 2026 12:33:28 +0700 Subject: [PATCH 05/11] fix AI review comment --- src/libs/SearchUIUtils.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index cd41a805f243..5540f7f9fd20 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -3681,7 +3681,6 @@ function getQuarterSections( } /** - * @private * Organizes data into List Sections grouped by violation approver for display. * * Do not use directly, use only via `getSections()` facade. From 4f8c0bb03639cb48e7f23fc502658ac911bd04dc Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Thu, 1 Oct 2026 22:00:52 +0700 Subject: [PATCH 06/11] update translation --- src/languages/de.ts | 8 ++++---- src/languages/el.ts | 10 +++++----- src/languages/es.ts | 6 +++--- src/languages/fr.ts | 4 ++-- src/languages/it.ts | 4 ++-- src/languages/ja.ts | 8 ++++---- src/languages/nl.ts | 8 ++++---- src/languages/pl.ts | 2 +- src/languages/pt-BR.ts | 8 ++++---- src/languages/zh-hans.ts | 16 ++++++++-------- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 8eeada0a864b..582f55592d27 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -9943,7 +9943,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc [CONST.SEARCH.GROUP_BY.WEEK]: 'Woche', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jahr', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quartal', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Verstoßgenehmiger', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Verstoßgenehmigende Person', }, feed: 'Feed', withdrawalType: { @@ -9953,8 +9953,8 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc }, is: 'Ist', has: {submittedViolation: 'Eingereichter Verstoß', approvedViolation: 'Genehmigter Verstoß'}, - approvalCount: 'Anzahl der Genehmigungen', - approvedTotal: 'Genehmigter Gesamtbetrag', + approvalCount: 'Genehmigungsanzahl', + approvedTotal: 'Genehmigte Gesamtsumme', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Senden', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Genehmigen', @@ -9998,7 +9998,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc [CONST.SEARCH.GROUP_BY.WEEK]: 'Wochen', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jahre', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quartale', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Verstoßgenehmiger', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Verstoßgenehmigende Personen', }, moneyRequestReport: {emptyStateTitle: 'Noch keine Ausgaben', accessPlaceHolder: 'Für Details öffnen'}, noCategory: 'Keine Kategorie', diff --git a/src/languages/el.ts b/src/languages/el.ts index e185137c203e..37ed8917ac51 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -10151,7 +10151,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Εβδομάδα', [CONST.SEARCH.GROUP_BY.YEAR]: 'Έτος', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Τρίμηνο', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Εγκριτής παραβάσεων', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Εγκρίνων παραβάσεων', }, feed: 'Ροή', withdrawalType: { @@ -10167,8 +10167,8 @@ ${reportName}`, [CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Εξαγωγή', }, has: {submittedViolation: 'Υποβληθείσα παράβαση', approvedViolation: 'Εγκεκριμένη παράβαση'}, - approvalCount: 'Αριθμός εγκρίσεων', - approvedTotal: 'Εγκεκριμένο σύνολο', + approvalCount: 'Μετρητής εγκρίσεων', + approvedTotal: 'Συνολικό εγκεκριμένο ποσό', filterType: { label: 'Τύπος φίλτρου', has: {positive: 'έχει', negative: 'δεν έχει'}, @@ -10208,9 +10208,9 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.DAY]: 'Ημέρες', [CONST.SEARCH.GROUP_BY.MONTH]: 'Μήνες', [CONST.SEARCH.GROUP_BY.WEEK]: 'Εβδομάδες', - [CONST.SEARCH.GROUP_BY.YEAR]: 'Έτη', + [CONST.SEARCH.GROUP_BY.YEAR]: 'Χρόνια', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Τρίμηνα', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Εγκριτές παραβάσεων', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Εγκρίνοντες παραβάσεων', }, moneyRequestReport: { emptyStateTitle: 'Καμία δαπάνη ακόμη', diff --git a/src/languages/es.ts b/src/languages/es.ts index 06e0839695e7..254526869abf 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -9789,9 +9789,9 @@ ${reportName}`, groupBy: { [CONST.SEARCH.GROUP_BY.FROM]: 'De', [CONST.SEARCH.GROUP_BY.CARD]: 'Tarjeta', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID de retiro', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID de retirada', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categoría', - [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comerciante', + [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comercio', [CONST.SEARCH.GROUP_BY.TAG]: 'Etiqueta', [CONST.SEARCH.GROUP_BY.DAY]: 'Día', [CONST.SEARCH.GROUP_BY.MONTH]: 'Mes', @@ -9832,7 +9832,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.CARD]: 'Tarjetas', [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exportaciones', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categorías', - [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comerciantes', + [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comercios', [CONST.SEARCH.GROUP_BY.TAG]: 'Etiquetas', [CONST.SEARCH.GROUP_BY.DAY]: 'Días', [CONST.SEARCH.GROUP_BY.MONTH]: 'Meses', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 37796f6a8bf5..ac2a6f9a3bba 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -10014,7 +10014,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e chartTitles: { [CONST.SEARCH.GROUP_BY.FROM]: 'De', [CONST.SEARCH.GROUP_BY.CARD]: 'Cartes', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exports', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exportations', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Catégories', [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Commerçants', [CONST.SEARCH.GROUP_BY.TAG]: 'Tags', @@ -10023,7 +10023,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e [CONST.SEARCH.GROUP_BY.WEEK]: 'Semaines', [CONST.SEARCH.GROUP_BY.YEAR]: 'Années', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestres', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approbateurs des violations', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approbateurs des infractions', }, moneyRequestReport: {emptyStateTitle: 'Aucune dépense pour l’instant', accessPlaceHolder: 'Ouvrir pour plus de détails'}, noCategory: 'Aucune catégorie', diff --git a/src/languages/it.ts b/src/languages/it.ts index f9bec08e0364..bbb0d6c0840a 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -9898,7 +9898,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Settimana', [CONST.SEARCH.GROUP_BY.YEAR]: 'Anno', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approvatore delle violazioni', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Responsabile violazioni', }, feed: 'Feed', withdrawalType: { @@ -9953,7 +9953,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Settimane', [CONST.SEARCH.GROUP_BY.YEAR]: 'Anni', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestri', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approvatori delle violazioni', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approver delle violazioni', }, moneyRequestReport: {emptyStateTitle: 'Nessuna spesa ancora', accessPlaceHolder: 'Apri per i dettagli'}, noCategory: 'Nessuna categoria', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 1b598b68eddc..2aeb9f400a90 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -9749,7 +9749,7 @@ ${reportName}`, groupBy: { [CONST.SEARCH.GROUP_BY.FROM]: '差出人', [CONST.SEARCH.GROUP_BY.CARD]: 'カード', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '出金ID', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '出金 ID', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'カテゴリ', [CONST.SEARCH.GROUP_BY.MERCHANT]: '加盟店', [CONST.SEARCH.GROUP_BY.TAG]: 'タグ', @@ -9768,8 +9768,8 @@ ${reportName}`, }, is: 'は', has: {submittedViolation: '違反を送信しました', approvedViolation: '承認済みの違反'}, - approvalCount: '承認件数', - approvedTotal: '承認合計', + approvalCount: '承認数', + approvedTotal: '承認済み合計', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: '送信', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: '承認', @@ -9804,7 +9804,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.TAG]: 'タグ', [CONST.SEARCH.GROUP_BY.DAY]: '日数', [CONST.SEARCH.GROUP_BY.MONTH]: '月数', - [CONST.SEARCH.GROUP_BY.WEEK]: '週数', + [CONST.SEARCH.GROUP_BY.WEEK]: '週間', [CONST.SEARCH.GROUP_BY.YEAR]: '年数', [CONST.SEARCH.GROUP_BY.QUARTER]: '四半期', [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: '違反承認者', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 0f8f7e5ca990..ffc4ddcfb13e 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -9858,14 +9858,14 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, [CONST.SEARCH.GROUP_BY.CARD]: 'Kaart', [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Opname-ID', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categorie', - [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Handelaar', + [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Winkelier', [CONST.SEARCH.GROUP_BY.TAG]: 'Label', [CONST.SEARCH.GROUP_BY.DAY]: 'Dag', [CONST.SEARCH.GROUP_BY.MONTH]: 'Maand', [CONST.SEARCH.GROUP_BY.WEEK]: 'Week', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jaar', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartaal', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Overtredingsgoedkeurder', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Schendinggoedkeurder', }, feed: 'Feed', withdrawalType: { @@ -9955,7 +9955,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, chartTitles: { [CONST.SEARCH.GROUP_BY.FROM]: 'Van', [CONST.SEARCH.GROUP_BY.CARD]: 'Kaarten', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exporten', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exports', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categorieën', [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Handelaars', [CONST.SEARCH.GROUP_BY.TAG]: 'Tags', @@ -9964,7 +9964,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Weken', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jaren', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartalen', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Overtredingsgoedkeurders', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Overtredingsfiatteurs', }, spendOverTime: 'Uitgaven in de tijd', tabs: { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 8889d031a518..329d7e1c4182 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -9872,7 +9872,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, groupBy: { [CONST.SEARCH.GROUP_BY.FROM]: 'Od', [CONST.SEARCH.GROUP_BY.CARD]: 'Karta', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Identyfikator wypłaty', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID wypłaty', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Kategoria', [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Sprzedawca', [CONST.SEARCH.GROUP_BY.TAG]: 'Tag', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 7b1f0f6852fa..da7157ed13d7 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -9854,16 +9854,16 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, groupBy: { [CONST.SEARCH.GROUP_BY.FROM]: 'De', [CONST.SEARCH.GROUP_BY.CARD]: 'Cartão', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID do saque', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID de saque', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categoria', - [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Estabelecimento', - [CONST.SEARCH.GROUP_BY.TAG]: 'Etiqueta', + [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comerciante', + [CONST.SEARCH.GROUP_BY.TAG]: 'Tag', [CONST.SEARCH.GROUP_BY.DAY]: 'Dia', [CONST.SEARCH.GROUP_BY.MONTH]: 'Mês', [CONST.SEARCH.GROUP_BY.WEEK]: 'Semana', [CONST.SEARCH.GROUP_BY.YEAR]: 'Ano', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprovador de violações', + [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprovador de violação', }, feed: 'Feed', withdrawalType: { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 6ed0132d2ef4..600f6397edb3 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -9487,11 +9487,11 @@ ${reportName}`, [CONST.SEARCH.SORT_ORDER.DESC]: '降序', }, groupBy: { - [CONST.SEARCH.GROUP_BY.FROM]: '来自', - [CONST.SEARCH.GROUP_BY.CARD]: '卡片', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '提现编号', + [CONST.SEARCH.GROUP_BY.FROM]: '发件人', + [CONST.SEARCH.GROUP_BY.CARD]: '卡', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '提现 ID', [CONST.SEARCH.GROUP_BY.CATEGORY]: '类别', - [CONST.SEARCH.GROUP_BY.MERCHANT]: '商户', + [CONST.SEARCH.GROUP_BY.MERCHANT]: '商家', [CONST.SEARCH.GROUP_BY.TAG]: '标签', [CONST.SEARCH.GROUP_BY.DAY]: '天', [CONST.SEARCH.GROUP_BY.MONTH]: '月', @@ -9508,8 +9508,8 @@ ${reportName}`, }, is: '是', has: {submittedViolation: '已提交违规', approvedViolation: '已批准违规'}, - approvalCount: '审批次数', - approvedTotal: '已审批总额', + approvalCount: '审批数量', + approvedTotal: '已批准总额', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: '提交', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: '批准', @@ -9536,11 +9536,11 @@ ${reportName}`, has: '有', view: {label: '查看', table: '表格', bar: '栏', line: '折线', pie: '饼图'}, chartTitles: { - [CONST.SEARCH.GROUP_BY.FROM]: '来自', + [CONST.SEARCH.GROUP_BY.FROM]: '发件人', [CONST.SEARCH.GROUP_BY.CARD]: '卡片', [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '导出', [CONST.SEARCH.GROUP_BY.CATEGORY]: '类别', - [CONST.SEARCH.GROUP_BY.MERCHANT]: '商家', + [CONST.SEARCH.GROUP_BY.MERCHANT]: '商户', [CONST.SEARCH.GROUP_BY.TAG]: '标签', [CONST.SEARCH.GROUP_BY.DAY]: '天', [CONST.SEARCH.GROUP_BY.MONTH]: '月数', From 284b097e780f6079e56666963c8763c91a557fef Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Tue, 13 Oct 2026 16:02:49 +0700 Subject: [PATCH 07/11] revert unchange code --- .../isDeployChecklistLocked/index.js | 305 ++++++++++-------- .../javascript/proposalPoliceComment/index.js | 305 ++++++++++-------- 2 files changed, 330 insertions(+), 280 deletions(-) diff --git a/.github/actions/javascript/isDeployChecklistLocked/index.js b/.github/actions/javascript/isDeployChecklistLocked/index.js index 9321db05e6d7..cfe1ac778241 100644 --- a/.github/actions/javascript/isDeployChecklistLocked/index.js +++ b/.github/actions/javascript/isDeployChecklistLocked/index.js @@ -3432,6 +3432,7 @@ var require_CONST = __commonJS({ REPLACE_CARD: "replace_card", SHIP_CARD: "ship_card", REPORT_CARD_FRAUD: "report_card_fraud", + APPROVE_DIGITAL_WALLET: "approve_digital_wallet", ISSUE_CARD: "issue_card", UPDATE_CARD: "update_card", UPDATE_PERSONAL_DETAILS: "update_personal_details", @@ -22075,6 +22076,117 @@ var require_str = __commonJS({ } return parameter; } + function compare(strA, strB) { + if (strA < strB) { + return -1; + } + if (strA > strB) { + return 1; + } + return 0; + } + function caseInsensitiveCompare(strA, strB) { + const lowerCaseStrA = strA.toLocaleLowerCase(); + const lowerCaseStrB = strB.toLocaleLowerCase(); + return compare(lowerCaseStrA, lowerCaseStrB); + } + function contains(haystack, needle) { + return haystack.indexOf(needle) !== -1; + } + function cutAfter(str, substr) { + const index = str.indexOf(substr); + if (index !== -1) { + return str.substring(0, index); + } + return str; + } + function cutBefore(str, substr) { + const index = str.indexOf(substr); + if (index !== -1) { + return str.substring(index + substr.length); + } + return str; + } + function extractEmailDomain(email) { + return cutBefore(email, "@"); + } + function getExtension(url) { + var _a, _b; + if (typeof url !== "string") { + Log_1.default.warn("Str.getExtension: url is not a string", { url }); + return void 0; + } + return (_b = (_a = url.split(".").pop()) === null || _a === void 0 ? void 0 : _a.split("?")[0]) === null || _b === void 0 ? void 0 : _b.toLowerCase(); + } + function getRawByteSize(inputChar) { + const onlyChar = String(inputChar); + const c = onlyChar.charCodeAt(0); + if (c < 1 << 7) { + return 1; + } + if (c < 1 << 11) { + return 2; + } + if (c < 1 << 16) { + return 3; + } + if (c < 1 << 21) { + return 4; + } + if (c < 1 << 26) { + return 5; + } + if (c < 1 << 31) { + return 6; + } + return Number.NaN; + } + function htmlDecode(s) { + return HtmlEntities.decode(s); + } + function htmlEncode(s) { + return HtmlEntities.encode(s); + } + function isTypeOf(obj, type) { + return Object.prototype.toString.call(obj) === `[object ${type}]`; + } + function isNumber(obj) { + return isTypeOf(obj, "Number"); + } + function isString(obj) { + return isTypeOf(obj, "String"); + } + function isUndefined(obj) { + return obj === void 0; + } + function isValidE164Phone(phone) { + return Constants.CONST.SMS.E164_REGEX.test(phone); + } + function isValidEmail(str) { + if (!str || typeof str !== "string") { + return false; + } + const unicodeVersion = punycode_1.default.toUnicode(str); + if (String(unicodeVersion).match(Constants.CONST.REG_EXP.EMOJI_RULE)) { + return false; + } + return !!String(str).match(Constants.CONST.REG_EXP.EMAIL); + } + function maskFirstNCharacters(str, num, mask) { + if (!isString(str) || !isString(mask) || str.length === 0 || !isNumber(num)) { + return str; + } + return str.substring(0, num).replaceAll(/./g, mask) + str.substring(num); + } + function removeSMSDomain(text) { + return text.replaceAll(REMOVE_SMS_DOMAIN_PATTERN, ""); + } + function removeTrailingComma(str) { + return str.trim().replaceAll(/(,$)/g, ""); + } + function startsWith(haystack, needle) { + return isString(haystack) && isString(needle) && haystack.substring(0, needle.length) === needle; + } var Str2 = { /** * Return true if the string is ending with the provided suffix @@ -22132,18 +22244,14 @@ var require_str = __commonJS({ * @param s The string to decode. * @returns The decoded string. */ - htmlDecode(s) { - return HtmlEntities.decode(s); - }, + htmlDecode, /** * HTML encodes the given string. * * @param s The string to encode. * @return string @p s HTML encoded. */ - htmlEncode(s) { - return HtmlEntities.encode(s); - }, + htmlEncode, /** * Decodes the given HTML encoded string. * @@ -22185,7 +22293,7 @@ var require_str = __commonJS({ * @returns True when first === second, ignoring HTML encoding */ htmlEncodingInsensitiveEquals(first, second) { - return first === second || this.htmlDecode(first) === second || this.htmlEncode(first) === second; + return first === second || htmlDecode(first) === second || htmlEncode(first) === second; }, /** * Creates an ID that can be used as an HTML attribute from @p str. @@ -22268,36 +22376,14 @@ var require_str = __commonJS({ * one. * @returns Byte size of the character */ - getRawByteSize(inputChar) { - const onlyChar = String(inputChar); - const c = onlyChar.charCodeAt(0); - if (c < 1 << 7) { - return 1; - } - if (c < 1 << 11) { - return 2; - } - if (c < 1 << 16) { - return 3; - } - if (c < 1 << 21) { - return 4; - } - if (c < 1 << 26) { - return 5; - } - if (c < 1 << 31) { - return 6; - } - return Number.NaN; - }, + getRawByteSize, /** * Gets the length of a string in bytes, including non-ASCII characters * @returns The number of bytes used by string */ getByteLength(input) { const stringInput = String(input); - const byteLength = Array.from(stringInput).reduce((acc, char) => acc + this.getRawByteSize(char), 0); + const byteLength = Array.from(stringInput).reduce((acc, char) => acc + getRawByteSize(char), 0); return byteLength; }, /** @@ -22309,7 +22395,7 @@ var require_str = __commonJS({ const stringInput = String(input); let totalByteLength = 0; for (let i = 0; i < stringInput.length; i++) { - const charByteSize = this.getRawByteSize(stringInput[i]); + const charByteSize = getRawByteSize(stringInput[i]); if (charByteSize + totalByteLength > maxSize) { return `${stringInput.substr(0, i - 3)}...`; } @@ -22324,9 +22410,7 @@ var require_str = __commonJS({ * @param needle The case-sensitive string to search for * @returns True if the haystack starts with the needle. */ - startsWith(haystack, needle) { - return this.isString(haystack) && this.isString(needle) && haystack.substring(0, needle.length) === needle; - }, + startsWith, /** * Gets the textual value of the given string. * @@ -22334,7 +22418,7 @@ var require_str = __commonJS({ * @returns The text from within the HTML string. */ stripHTML(str) { - if (!this.isString(str)) { + if (!isString(str)) { return ""; } return str.replaceAll(/<[^>]*>?/gm, ""); @@ -22357,13 +22441,7 @@ var require_str = __commonJS({ * @param substr The substring to search for. * @returns The cut/trimmed string. */ - cutAfter(str, substr) { - const index = str.indexOf(substr); - if (index !== -1) { - return str.substring(0, index); - } - return str; - }, + cutAfter, /** * Returns a string containing all the characters str from after the first * occurrence of substr to the end of the string. @@ -22373,13 +22451,7 @@ var require_str = __commonJS({ * @param substr The substring to search for. * @returns The cut/trimmed string. */ - cutBefore(str, substr) { - const index = str.indexOf(substr); - if (index !== -1) { - return str.substring(index + substr.length); - } - return str; - }, + cutBefore, /** * Checks that the string is a domain name (e.g. example.com) * @@ -22406,16 +22478,7 @@ var require_str = __commonJS({ * * @returns True if the string is an email */ - isValidEmail(str) { - if (!str || typeof str !== "string") { - return false; - } - const unicodeVersion = punycode_1.default.toUnicode(str); - if (String(unicodeVersion).match(Constants.CONST.REG_EXP.EMOJI_RULE)) { - return false; - } - return !!String(str).match(Constants.CONST.REG_EXP.EMAIL); - }, + isValidEmail, /** * Checks if the string is an valid email address formed during comment markdown formation. * @@ -22433,9 +22496,7 @@ var require_str = __commonJS({ * * @returns string with the trailing comma removed */ - removeTrailingComma(str) { - return str.trim().replaceAll(/(,$)/g, ""); - }, + removeTrailingComma, /** * Checks that the string is a list of coma separated email addresss. * @@ -22444,12 +22505,12 @@ var require_str = __commonJS({ * @returns True if all emails are valid or if input is empty */ areValidEmails(str) { - const string = this.removeTrailingComma(str); + const string = removeTrailingComma(str); if (string === "") { return true; } const emails = string.split(","); - const result = emails.every((email) => this.isValidEmail(email.trim())); + const result = emails.every((email) => isValidEmail(email.trim())); return result; }, /** @@ -22466,9 +22527,7 @@ var require_str = __commonJS({ * * @returns The domain name in the email address. */ - extractEmailDomain(email) { - return this.cutBefore(email, "@"); - }, + extractEmailDomain, /** * Tries to extract the company name from the given email address * (e.g. "yelp" for "joe@yelp.co.uk"). @@ -22478,7 +22537,7 @@ var require_str = __commonJS({ * @returns The company name in the email address or null. */ extractCompanyNameFromEmailDomain(email) { - const domain = this.extractEmailDomain(email); + const domain = extractEmailDomain(email); if (!domain) { return null; } @@ -22497,7 +22556,7 @@ var require_str = __commonJS({ * @returns The local part in the email address. */ extractEmailLocalPart(email) { - return this.cutAfter(email, "@"); + return cutAfter(email, "@"); }, /** * Sanitize phone number to return only numbers. Return null if non valid phone number. @@ -22555,13 +22614,13 @@ var require_str = __commonJS({ * @returns true if the length is in the range, false otherwise */ isOfLength(str, minimumLength, maximumLength) { - if (!this.isString(str)) { + if (!isString(str)) { return false; } if (str.length < minimumLength) { return false; } - if (!this.isUndefined(maximumLength) && str.length > maximumLength) { + if (!isUndefined(maximumLength) && str.length > maximumLength) { return false; } return true; @@ -22614,9 +22673,7 @@ var require_str = __commonJS({ * * @returns Returns true if the haystack contains the needle */ - contains(haystack, needle) { - return haystack.indexOf(needle) !== -1; - }, + contains, /** * Returns true if the haystack contains the needle, ignoring case * @@ -22626,7 +22683,7 @@ var require_str = __commonJS({ * @returns Returns true if the haystack contains the needle, ignoring case */ caseInsensitiveContains(haystack, needle) { - return this.contains(haystack.toLowerCase(), needle.toLowerCase()); + return contains(haystack.toLowerCase(), needle.toLowerCase()); }, /** * Case insensitive compare function @@ -22638,11 +22695,7 @@ var require_str = __commonJS({ * 1 if first string > second string * 0 if first string = second string */ - caseInsensitiveCompare(strA, strB) { - const lowerCaseStrA = strA.toLocaleLowerCase(); - const lowerCaseStrB = strB.toLocaleLowerCase(); - return this.compare(lowerCaseStrA, lowerCaseStrB); - }, + caseInsensitiveCompare, /** * Case insensitive equals * @@ -22651,7 +22704,7 @@ var require_str = __commonJS({ * @returns true when first == second except for case */ caseInsensitiveEquals(strA, strB) { - return this.caseInsensitiveCompare(strA, strB) === 0; + return caseInsensitiveCompare(strA, strB) === 0; }, /** * Compare function @@ -22663,15 +22716,7 @@ var require_str = __commonJS({ * 1 if first string > second string * 0 if first string = second string */ - compare(strA, strB) { - if (strA < strB) { - return -1; - } - if (strA > strB) { - return 1; - } - return 0; - }, + compare, /** * Check if a file extension is supported by SmartReports */ @@ -22690,45 +22735,37 @@ var require_str = __commonJS({ const accountNumber = String(num); const len = accountNumber.length; if (len < 6 || len > 20) { - return this.maskFirstNCharacters(accountNumber, len, "X"); + return maskFirstNCharacters(accountNumber, len, "X"); } if (len < 14) { - return this.maskFirstNCharacters(accountNumber, len - 4, "X"); + return maskFirstNCharacters(accountNumber, len - 4, "X"); } const first = accountNumber.substr(0, 6); const last = accountNumber.substr(7); - const masked = this.maskFirstNCharacters(last, len - 11, "X"); + const masked = maskFirstNCharacters(last, len - 11, "X"); return `${first}${masked}`; }, /** * Checks if something is a string * Stolen from underscore */ - isString(obj) { - return this.isTypeOf(obj, "String"); - }, + isString, /** * Checks if something is a number * Stolen from underscore * @param obj */ - isNumber(obj) { - return this.isTypeOf(obj, "Number"); - }, + isNumber, /** * Checks if something is a certain type * Stolen from underscore */ - isTypeOf(obj, type) { - return Object.prototype.toString.call(obj) === `[object ${type}]`; - }, + isTypeOf, /** * Checks to see if something is undefined * Stolen from underscore */ - isUndefined(obj) { - return obj === void 0; - }, + isUndefined, /** * Replace first N characters of the string with maskChar * eg: maskFirstNCharacters( '1234567890', 6, 'X' ) yields XXXXXX7890 @@ -22737,12 +22774,7 @@ var require_str = __commonJS({ * @param mask String we want replace the first N chars with * @returns Masked string */ - maskFirstNCharacters(str, num, mask) { - if (!this.isString(str) || !this.isString(mask) || str.length === 0 || !this.isNumber(num)) { - return str; - } - return str.substring(0, num).replaceAll(/./g, mask) + str.substring(num); - }, + maskFirstNCharacters, /** * Trim a string */ @@ -22754,7 +22786,7 @@ var require_str = __commonJS({ * @param percentageString The percentage as a string */ percentageStringToNumber(percentageString) { - return Number(this.cutAfter(percentageString, "%")); + return Number(cutAfter(percentageString, "%")); }, /** * Remove all the spaces from a string @@ -22798,7 +22830,7 @@ var require_str = __commonJS({ * Converts a value to boolean, case-insensitive. */ toBool(value) { - if (this.isString(value)) { + if (isString(value)) { return value.toLowerCase() === "true"; } return !!value; @@ -22848,9 +22880,7 @@ var require_str = __commonJS({ /** * Check for whether a phone number is valid according to E.164 standard. */ - isValidE164Phone(phone) { - return Constants.CONST.SMS.E164_REGEX.test(phone); - }, + isValidE164Phone, /** * Check for whether a phone number is valid in different formats/standards. For example: * significant: 4404589784 @@ -22876,14 +22906,12 @@ var require_str = __commonJS({ /** * Returns text without our SMS domain */ - removeSMSDomain(text) { - return text.replaceAll(REMOVE_SMS_DOMAIN_PATTERN, ""); - }, + removeSMSDomain, /** * Returns true if the text is a valid E.164 phone number with our SMS domain removed */ isSMSLogin(text) { - return this.isValidE164Phone(this.removeSMSDomain(text)); + return isValidE164Phone(removeSMSDomain(text)); }, /** * This method will return all matches of a single regex like preg_match_all() in PHP. This is not a common part of @@ -22936,7 +22964,7 @@ var require_str = __commonJS({ return url; } const website = match[3] ? match[2] : `${defaultScheme}://${match[2]}`; - return website.toLowerCase() + this.cutBefore(match[1], match[2]); + return website.toLowerCase() + cutBefore(match[1], match[2]); }, /** * Checks if parameter is a string or function @@ -22948,14 +22976,7 @@ var require_str = __commonJS({ * Get file extension for a given url with or * without query parameters */ - getExtension(url) { - var _a, _b; - if (typeof url !== "string") { - Log_1.default.warn("Str.getExtension: url is not a string", { url }); - return void 0; - } - return (_b = (_a = url.split(".").pop()) === null || _a === void 0 ? void 0 : _a.split("?")[0]) === null || _b === void 0 ? void 0 : _b.toLowerCase(); - }, + getExtension, /** * Takes in a URL and checks if the file extension is PDF * @@ -22963,7 +22984,7 @@ var require_str = __commonJS({ * @returns Whether file path is PDF or not */ isPDF(url) { - return this.getExtension(url) === "pdf"; + return getExtension(url) === "pdf"; }, /** * Takes in a URL and checks if the file extension is an image @@ -22974,7 +22995,7 @@ var require_str = __commonJS({ * https://reactnative.dev/docs/image#source */ isImage(url) { - const extension = this.getExtension(url); + const extension = getExtension(url); if (!extension) { return false; } @@ -22990,7 +23011,7 @@ var require_str = __commonJS({ * https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs */ isVideo(url) { - const extension = this.getExtension(url); + const extension = getExtension(url); if (!extension) { return false; } @@ -23003,7 +23024,7 @@ var require_str = __commonJS({ * @returns True if is a domain account email, otherwise false. */ isDomainEmail(email) { - return this.startsWith(email, "+@"); + return startsWith(email, "+@"); }, /** * Find the minimum indentation of any line in the string, @@ -24141,13 +24162,17 @@ ${g2} }, { name: "anchor", - regex: /<(a)[^><]*href\s*=\s*(['"])(.*?)\2(?:".*?"|'.*?'|[^'"><])*>([\s\S]*?)<\/\1>(?![^<]*(<\/pre>|<\/code>))/gi, - replacement: (_extras, _match, _g1, _g2, g3, g4) => { - const email = g3.startsWith("mailto:") ? g3.slice(7) : ""; - if (email === g4) { - return email; + regex: /(\]\()?<(a)[^><]*href\s*=\s*(['"])(.*?)\3(?:".*?"|'.*?'|[^'"><])*>([\s\S]*?)<\/\2>(?![^<]*(<\/pre>|<\/code>))/gi, + replacement: (_extras, _match, g1, _g2, _g3, g4, g5) => { + const incompleteLinkStart = g1 !== null && g1 !== void 0 ? g1 : ""; + const email = g4.startsWith("mailto:") ? g4.slice(7) : ""; + if (email === g5) { + return `${incompleteLinkStart}${email}`; + } + if (incompleteLinkStart && (g4 === g5 || g4 === `https://${g5}`)) { + return `${incompleteLinkStart}${g5}`; } - return `[${g4}](${email || g3})`; + return `${incompleteLinkStart}[${g5}](${email || g4})`; } }, { diff --git a/.github/actions/javascript/proposalPoliceComment/index.js b/.github/actions/javascript/proposalPoliceComment/index.js index beb367dd3ebd..58a12c5fb27a 100644 --- a/.github/actions/javascript/proposalPoliceComment/index.js +++ b/.github/actions/javascript/proposalPoliceComment/index.js @@ -24691,6 +24691,7 @@ var require_CONST = __commonJS({ REPLACE_CARD: "replace_card", SHIP_CARD: "ship_card", REPORT_CARD_FRAUD: "report_card_fraud", + APPROVE_DIGITAL_WALLET: "approve_digital_wallet", ISSUE_CARD: "issue_card", UPDATE_CARD: "update_card", UPDATE_PERSONAL_DETAILS: "update_personal_details", @@ -43334,6 +43335,117 @@ var require_str = __commonJS({ } return parameter; } + function compare(strA, strB) { + if (strA < strB) { + return -1; + } + if (strA > strB) { + return 1; + } + return 0; + } + function caseInsensitiveCompare(strA, strB) { + const lowerCaseStrA = strA.toLocaleLowerCase(); + const lowerCaseStrB = strB.toLocaleLowerCase(); + return compare(lowerCaseStrA, lowerCaseStrB); + } + function contains(haystack, needle) { + return haystack.indexOf(needle) !== -1; + } + function cutAfter(str2, substr) { + const index = str2.indexOf(substr); + if (index !== -1) { + return str2.substring(0, index); + } + return str2; + } + function cutBefore(str2, substr) { + const index = str2.indexOf(substr); + if (index !== -1) { + return str2.substring(index + substr.length); + } + return str2; + } + function extractEmailDomain(email) { + return cutBefore(email, "@"); + } + function getExtension(url) { + var _a3, _b; + if (typeof url !== "string") { + Log_1.default.warn("Str.getExtension: url is not a string", { url }); + return void 0; + } + return (_b = (_a3 = url.split(".").pop()) === null || _a3 === void 0 ? void 0 : _a3.split("?")[0]) === null || _b === void 0 ? void 0 : _b.toLowerCase(); + } + function getRawByteSize(inputChar) { + const onlyChar = String(inputChar); + const c = onlyChar.charCodeAt(0); + if (c < 1 << 7) { + return 1; + } + if (c < 1 << 11) { + return 2; + } + if (c < 1 << 16) { + return 3; + } + if (c < 1 << 21) { + return 4; + } + if (c < 1 << 26) { + return 5; + } + if (c < 1 << 31) { + return 6; + } + return Number.NaN; + } + function htmlDecode(s) { + return HtmlEntities.decode(s); + } + function htmlEncode(s) { + return HtmlEntities.encode(s); + } + function isTypeOf(obj, type) { + return Object.prototype.toString.call(obj) === `[object ${type}]`; + } + function isNumber(obj) { + return isTypeOf(obj, "Number"); + } + function isString(obj) { + return isTypeOf(obj, "String"); + } + function isUndefined(obj) { + return obj === void 0; + } + function isValidE164Phone(phone) { + return Constants.CONST.SMS.E164_REGEX.test(phone); + } + function isValidEmail(str2) { + if (!str2 || typeof str2 !== "string") { + return false; + } + const unicodeVersion = punycode_1.default.toUnicode(str2); + if (String(unicodeVersion).match(Constants.CONST.REG_EXP.EMOJI_RULE)) { + return false; + } + return !!String(str2).match(Constants.CONST.REG_EXP.EMAIL); + } + function maskFirstNCharacters(str2, num, mask) { + if (!isString(str2) || !isString(mask) || str2.length === 0 || !isNumber(num)) { + return str2; + } + return str2.substring(0, num).replaceAll(/./g, mask) + str2.substring(num); + } + function removeSMSDomain(text) { + return text.replaceAll(REMOVE_SMS_DOMAIN_PATTERN, ""); + } + function removeTrailingComma(str2) { + return str2.trim().replaceAll(/(,$)/g, ""); + } + function startsWith(haystack, needle) { + return isString(haystack) && isString(needle) && haystack.substring(0, needle.length) === needle; + } var Str6 = { /** * Return true if the string is ending with the provided suffix @@ -43391,18 +43503,14 @@ var require_str = __commonJS({ * @param s The string to decode. * @returns The decoded string. */ - htmlDecode(s) { - return HtmlEntities.decode(s); - }, + htmlDecode, /** * HTML encodes the given string. * * @param s The string to encode. * @return string @p s HTML encoded. */ - htmlEncode(s) { - return HtmlEntities.encode(s); - }, + htmlEncode, /** * Decodes the given HTML encoded string. * @@ -43444,7 +43552,7 @@ var require_str = __commonJS({ * @returns True when first === second, ignoring HTML encoding */ htmlEncodingInsensitiveEquals(first, second) { - return first === second || this.htmlDecode(first) === second || this.htmlEncode(first) === second; + return first === second || htmlDecode(first) === second || htmlEncode(first) === second; }, /** * Creates an ID that can be used as an HTML attribute from @p str. @@ -43527,36 +43635,14 @@ var require_str = __commonJS({ * one. * @returns Byte size of the character */ - getRawByteSize(inputChar) { - const onlyChar = String(inputChar); - const c = onlyChar.charCodeAt(0); - if (c < 1 << 7) { - return 1; - } - if (c < 1 << 11) { - return 2; - } - if (c < 1 << 16) { - return 3; - } - if (c < 1 << 21) { - return 4; - } - if (c < 1 << 26) { - return 5; - } - if (c < 1 << 31) { - return 6; - } - return Number.NaN; - }, + getRawByteSize, /** * Gets the length of a string in bytes, including non-ASCII characters * @returns The number of bytes used by string */ getByteLength(input) { const stringInput = String(input); - const byteLength = Array.from(stringInput).reduce((acc, char) => acc + this.getRawByteSize(char), 0); + const byteLength = Array.from(stringInput).reduce((acc, char) => acc + getRawByteSize(char), 0); return byteLength; }, /** @@ -43568,7 +43654,7 @@ var require_str = __commonJS({ const stringInput = String(input); let totalByteLength = 0; for (let i = 0; i < stringInput.length; i++) { - const charByteSize = this.getRawByteSize(stringInput[i]); + const charByteSize = getRawByteSize(stringInput[i]); if (charByteSize + totalByteLength > maxSize) { return `${stringInput.substr(0, i - 3)}...`; } @@ -43583,9 +43669,7 @@ var require_str = __commonJS({ * @param needle The case-sensitive string to search for * @returns True if the haystack starts with the needle. */ - startsWith(haystack, needle) { - return this.isString(haystack) && this.isString(needle) && haystack.substring(0, needle.length) === needle; - }, + startsWith, /** * Gets the textual value of the given string. * @@ -43593,7 +43677,7 @@ var require_str = __commonJS({ * @returns The text from within the HTML string. */ stripHTML(str2) { - if (!this.isString(str2)) { + if (!isString(str2)) { return ""; } return str2.replaceAll(/<[^>]*>?/gm, ""); @@ -43616,13 +43700,7 @@ var require_str = __commonJS({ * @param substr The substring to search for. * @returns The cut/trimmed string. */ - cutAfter(str2, substr) { - const index = str2.indexOf(substr); - if (index !== -1) { - return str2.substring(0, index); - } - return str2; - }, + cutAfter, /** * Returns a string containing all the characters str from after the first * occurrence of substr to the end of the string. @@ -43632,13 +43710,7 @@ var require_str = __commonJS({ * @param substr The substring to search for. * @returns The cut/trimmed string. */ - cutBefore(str2, substr) { - const index = str2.indexOf(substr); - if (index !== -1) { - return str2.substring(index + substr.length); - } - return str2; - }, + cutBefore, /** * Checks that the string is a domain name (e.g. example.com) * @@ -43665,16 +43737,7 @@ var require_str = __commonJS({ * * @returns True if the string is an email */ - isValidEmail(str2) { - if (!str2 || typeof str2 !== "string") { - return false; - } - const unicodeVersion = punycode_1.default.toUnicode(str2); - if (String(unicodeVersion).match(Constants.CONST.REG_EXP.EMOJI_RULE)) { - return false; - } - return !!String(str2).match(Constants.CONST.REG_EXP.EMAIL); - }, + isValidEmail, /** * Checks if the string is an valid email address formed during comment markdown formation. * @@ -43692,9 +43755,7 @@ var require_str = __commonJS({ * * @returns string with the trailing comma removed */ - removeTrailingComma(str2) { - return str2.trim().replaceAll(/(,$)/g, ""); - }, + removeTrailingComma, /** * Checks that the string is a list of coma separated email addresss. * @@ -43703,12 +43764,12 @@ var require_str = __commonJS({ * @returns True if all emails are valid or if input is empty */ areValidEmails(str2) { - const string = this.removeTrailingComma(str2); + const string = removeTrailingComma(str2); if (string === "") { return true; } const emails = string.split(","); - const result = emails.every((email) => this.isValidEmail(email.trim())); + const result = emails.every((email) => isValidEmail(email.trim())); return result; }, /** @@ -43725,9 +43786,7 @@ var require_str = __commonJS({ * * @returns The domain name in the email address. */ - extractEmailDomain(email) { - return this.cutBefore(email, "@"); - }, + extractEmailDomain, /** * Tries to extract the company name from the given email address * (e.g. "yelp" for "joe@yelp.co.uk"). @@ -43737,7 +43796,7 @@ var require_str = __commonJS({ * @returns The company name in the email address or null. */ extractCompanyNameFromEmailDomain(email) { - const domain = this.extractEmailDomain(email); + const domain = extractEmailDomain(email); if (!domain) { return null; } @@ -43756,7 +43815,7 @@ var require_str = __commonJS({ * @returns The local part in the email address. */ extractEmailLocalPart(email) { - return this.cutAfter(email, "@"); + return cutAfter(email, "@"); }, /** * Sanitize phone number to return only numbers. Return null if non valid phone number. @@ -43814,13 +43873,13 @@ var require_str = __commonJS({ * @returns true if the length is in the range, false otherwise */ isOfLength(str2, minimumLength, maximumLength) { - if (!this.isString(str2)) { + if (!isString(str2)) { return false; } if (str2.length < minimumLength) { return false; } - if (!this.isUndefined(maximumLength) && str2.length > maximumLength) { + if (!isUndefined(maximumLength) && str2.length > maximumLength) { return false; } return true; @@ -43873,9 +43932,7 @@ var require_str = __commonJS({ * * @returns Returns true if the haystack contains the needle */ - contains(haystack, needle) { - return haystack.indexOf(needle) !== -1; - }, + contains, /** * Returns true if the haystack contains the needle, ignoring case * @@ -43885,7 +43942,7 @@ var require_str = __commonJS({ * @returns Returns true if the haystack contains the needle, ignoring case */ caseInsensitiveContains(haystack, needle) { - return this.contains(haystack.toLowerCase(), needle.toLowerCase()); + return contains(haystack.toLowerCase(), needle.toLowerCase()); }, /** * Case insensitive compare function @@ -43897,11 +43954,7 @@ var require_str = __commonJS({ * 1 if first string > second string * 0 if first string = second string */ - caseInsensitiveCompare(strA, strB) { - const lowerCaseStrA = strA.toLocaleLowerCase(); - const lowerCaseStrB = strB.toLocaleLowerCase(); - return this.compare(lowerCaseStrA, lowerCaseStrB); - }, + caseInsensitiveCompare, /** * Case insensitive equals * @@ -43910,7 +43963,7 @@ var require_str = __commonJS({ * @returns true when first == second except for case */ caseInsensitiveEquals(strA, strB) { - return this.caseInsensitiveCompare(strA, strB) === 0; + return caseInsensitiveCompare(strA, strB) === 0; }, /** * Compare function @@ -43922,15 +43975,7 @@ var require_str = __commonJS({ * 1 if first string > second string * 0 if first string = second string */ - compare(strA, strB) { - if (strA < strB) { - return -1; - } - if (strA > strB) { - return 1; - } - return 0; - }, + compare, /** * Check if a file extension is supported by SmartReports */ @@ -43949,45 +43994,37 @@ var require_str = __commonJS({ const accountNumber = String(num); const len = accountNumber.length; if (len < 6 || len > 20) { - return this.maskFirstNCharacters(accountNumber, len, "X"); + return maskFirstNCharacters(accountNumber, len, "X"); } if (len < 14) { - return this.maskFirstNCharacters(accountNumber, len - 4, "X"); + return maskFirstNCharacters(accountNumber, len - 4, "X"); } const first = accountNumber.substr(0, 6); const last = accountNumber.substr(7); - const masked = this.maskFirstNCharacters(last, len - 11, "X"); + const masked = maskFirstNCharacters(last, len - 11, "X"); return `${first}${masked}`; }, /** * Checks if something is a string * Stolen from underscore */ - isString(obj) { - return this.isTypeOf(obj, "String"); - }, + isString, /** * Checks if something is a number * Stolen from underscore * @param obj */ - isNumber(obj) { - return this.isTypeOf(obj, "Number"); - }, + isNumber, /** * Checks if something is a certain type * Stolen from underscore */ - isTypeOf(obj, type) { - return Object.prototype.toString.call(obj) === `[object ${type}]`; - }, + isTypeOf, /** * Checks to see if something is undefined * Stolen from underscore */ - isUndefined(obj) { - return obj === void 0; - }, + isUndefined, /** * Replace first N characters of the string with maskChar * eg: maskFirstNCharacters( '1234567890', 6, 'X' ) yields XXXXXX7890 @@ -43996,12 +44033,7 @@ var require_str = __commonJS({ * @param mask String we want replace the first N chars with * @returns Masked string */ - maskFirstNCharacters(str2, num, mask) { - if (!this.isString(str2) || !this.isString(mask) || str2.length === 0 || !this.isNumber(num)) { - return str2; - } - return str2.substring(0, num).replaceAll(/./g, mask) + str2.substring(num); - }, + maskFirstNCharacters, /** * Trim a string */ @@ -44013,7 +44045,7 @@ var require_str = __commonJS({ * @param percentageString The percentage as a string */ percentageStringToNumber(percentageString) { - return Number(this.cutAfter(percentageString, "%")); + return Number(cutAfter(percentageString, "%")); }, /** * Remove all the spaces from a string @@ -44057,7 +44089,7 @@ var require_str = __commonJS({ * Converts a value to boolean, case-insensitive. */ toBool(value) { - if (this.isString(value)) { + if (isString(value)) { return value.toLowerCase() === "true"; } return !!value; @@ -44107,9 +44139,7 @@ var require_str = __commonJS({ /** * Check for whether a phone number is valid according to E.164 standard. */ - isValidE164Phone(phone) { - return Constants.CONST.SMS.E164_REGEX.test(phone); - }, + isValidE164Phone, /** * Check for whether a phone number is valid in different formats/standards. For example: * significant: 4404589784 @@ -44135,14 +44165,12 @@ var require_str = __commonJS({ /** * Returns text without our SMS domain */ - removeSMSDomain(text) { - return text.replaceAll(REMOVE_SMS_DOMAIN_PATTERN, ""); - }, + removeSMSDomain, /** * Returns true if the text is a valid E.164 phone number with our SMS domain removed */ isSMSLogin(text) { - return this.isValidE164Phone(this.removeSMSDomain(text)); + return isValidE164Phone(removeSMSDomain(text)); }, /** * This method will return all matches of a single regex like preg_match_all() in PHP. This is not a common part of @@ -44195,7 +44223,7 @@ var require_str = __commonJS({ return url; } const website = match2[3] ? match2[2] : `${defaultScheme}://${match2[2]}`; - return website.toLowerCase() + this.cutBefore(match2[1], match2[2]); + return website.toLowerCase() + cutBefore(match2[1], match2[2]); }, /** * Checks if parameter is a string or function @@ -44207,14 +44235,7 @@ var require_str = __commonJS({ * Get file extension for a given url with or * without query parameters */ - getExtension(url) { - var _a3, _b; - if (typeof url !== "string") { - Log_1.default.warn("Str.getExtension: url is not a string", { url }); - return void 0; - } - return (_b = (_a3 = url.split(".").pop()) === null || _a3 === void 0 ? void 0 : _a3.split("?")[0]) === null || _b === void 0 ? void 0 : _b.toLowerCase(); - }, + getExtension, /** * Takes in a URL and checks if the file extension is PDF * @@ -44222,7 +44243,7 @@ var require_str = __commonJS({ * @returns Whether file path is PDF or not */ isPDF(url) { - return this.getExtension(url) === "pdf"; + return getExtension(url) === "pdf"; }, /** * Takes in a URL and checks if the file extension is an image @@ -44233,7 +44254,7 @@ var require_str = __commonJS({ * https://reactnative.dev/docs/image#source */ isImage(url) { - const extension = this.getExtension(url); + const extension = getExtension(url); if (!extension) { return false; } @@ -44249,7 +44270,7 @@ var require_str = __commonJS({ * https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs */ isVideo(url) { - const extension = this.getExtension(url); + const extension = getExtension(url); if (!extension) { return false; } @@ -44262,7 +44283,7 @@ var require_str = __commonJS({ * @returns True if is a domain account email, otherwise false. */ isDomainEmail(email) { - return this.startsWith(email, "+@"); + return startsWith(email, "+@"); }, /** * Find the minimum indentation of any line in the string, @@ -45400,13 +45421,17 @@ ${g2} }, { name: "anchor", - regex: /<(a)[^><]*href\s*=\s*(['"])(.*?)\2(?:".*?"|'.*?'|[^'"><])*>([\s\S]*?)<\/\1>(?![^<]*(<\/pre>|<\/code>))/gi, - replacement: (_extras, _match, _g1, _g2, g3, g4) => { - const email = g3.startsWith("mailto:") ? g3.slice(7) : ""; - if (email === g4) { - return email; + regex: /(\]\()?<(a)[^><]*href\s*=\s*(['"])(.*?)\3(?:".*?"|'.*?'|[^'"><])*>([\s\S]*?)<\/\2>(?![^<]*(<\/pre>|<\/code>))/gi, + replacement: (_extras, _match, g1, _g2, _g3, g4, g5) => { + const incompleteLinkStart = g1 !== null && g1 !== void 0 ? g1 : ""; + const email = g4.startsWith("mailto:") ? g4.slice(7) : ""; + if (email === g5) { + return `${incompleteLinkStart}${email}`; + } + if (incompleteLinkStart && (g4 === g5 || g4 === `https://${g5}`)) { + return `${incompleteLinkStart}${g5}`; } - return `[${g4}](${email || g3})`; + return `${incompleteLinkStart}[${g5}](${email || g4})`; } }, { From fe1e3d75b94efd1f42fa85fc8f75d6324da197d0 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Tue, 13 Oct 2026 16:23:31 +0700 Subject: [PATCH 08/11] change violation-approver to approver group-by --- src/CONST/index.ts | 29 +- .../Search/FilterDropdowns/DisplayPopup.tsx | 2 +- ...mHeader.tsx => ApproverListItemHeader.tsx} | 64 +- .../SearchList/ListItem/GroupHeader.tsx | 8 +- .../ListItem/TransactionGroupListItem.tsx | 38 +- .../Search/SearchList/ListItem/types.ts | 12 +- src/components/Search/SearchTableHeader.tsx | 18 +- src/components/Search/chartGroupByConfig.ts | 6 +- .../Search/hooks/useGroupedItems.ts | 3 +- .../Search/hooks/useUpdateFilterQuery.tsx | 6 - src/components/Search/types.ts | 4 +- src/languages/de.ts | 6 +- src/languages/el.ts | 6 +- src/languages/en.ts | 6 +- src/languages/es.ts | 6 +- src/languages/fr.ts | 6 +- src/languages/it.ts | 6 +- src/languages/ja.ts | 6 +- src/languages/nl.ts | 6 +- src/languages/pl.ts | 6 +- src/languages/pt-BR.ts | 6 +- src/languages/zh-hans.ts | 6 +- src/libs/SearchParser/autocompleteParser.js | 801 ++++++++--------- .../SearchParser/autocompleteParser.peggy | 2 +- src/libs/SearchParser/baseRules.peggy | 10 +- src/libs/SearchParser/searchParser.js | 805 ++++++++---------- src/libs/SearchParser/searchParser.peggy | 6 +- src/libs/SearchUIUtils.ts | 105 ++- src/styles/utils/index.ts | 4 +- src/types/onyx/SearchResults.ts | 13 +- tests/unit/Search/ColumnAvailabilityTest.ts | 4 +- tests/unit/Search/SearchQueryUtilsTest.ts | 24 +- tests/unit/Search/SearchUIUtilsTest.ts | 97 +-- tests/unit/SearchParserTest.ts | 14 +- tests/unit/TransactionGroupListItemTest.tsx | 2 +- tests/unit/hooks/useUpdateFilterQuery.test.ts | 22 - 36 files changed, 923 insertions(+), 1242 deletions(-) rename src/components/Search/SearchList/ListItem/{ViolationApproverListItemHeader.tsx => ApproverListItemHeader.tsx} (73%) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 7cdbf4950147..bd68ea0964f9 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -7715,7 +7715,7 @@ const CONST = { WEEK: 'week', YEAR: 'year', QUARTER: 'quarter', - VIOLATION_APPROVER: 'violation-approver', + APPROVER: 'approver', }, /** * Single source of truth for which transaction-level columns are available in each column-picker surface: @@ -8038,12 +8038,11 @@ const CONST = { EXPENSES: this.TABLE_COLUMNS.GROUP_EXPENSES, TOTAL: this.TABLE_COLUMNS.GROUP_TOTAL, }, - VIOLATION_APPROVER: { + APPROVER: { AVATAR: this.TABLE_COLUMNS.AVATAR, - VIOLATION_APPROVER: this.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, + APPROVER: this.TABLE_COLUMNS.GROUP_APPROVER, EXPENSES: this.TABLE_COLUMNS.GROUP_EXPENSES, - APPROVAL_COUNT: this.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, - APPROVED_TOTAL: this.TABLE_COLUMNS.GROUP_APPROVED_TOTAL, + TOTAL: this.TABLE_COLUMNS.GROUP_TOTAL, }, }; }, @@ -8098,13 +8097,7 @@ const CONST = { WEEK: [this.TABLE_COLUMNS.GROUP_WEEK, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL], YEAR: [this.TABLE_COLUMNS.GROUP_YEAR, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL], QUARTER: [this.TABLE_COLUMNS.GROUP_QUARTER, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL], - VIOLATION_APPROVER: [ - this.TABLE_COLUMNS.AVATAR, - this.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, - this.TABLE_COLUMNS.GROUP_EXPENSES, - this.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, - this.TABLE_COLUMNS.GROUP_APPROVED_TOTAL, - ], + APPROVER: [this.TABLE_COLUMNS.AVATAR, this.TABLE_COLUMNS.GROUP_APPROVER, this.TABLE_COLUMNS.GROUP_EXPENSES, this.TABLE_COLUMNS.GROUP_TOTAL], }; }, BOOLEAN: { @@ -8224,9 +8217,7 @@ const CONST = { GROUP_WITHDRAWAL_STATUS: 'groupWithdrawalStatus', GROUP_AMOUNT_DEBITED: 'groupAmountDebited', GROUP_AMOUNT_REIMBURSED: 'groupAmountReimbursed', - GROUP_VIOLATION_APPROVER: 'groupViolationApprover', - GROUP_APPROVAL_COUNT: 'groupApprovalCount', - GROUP_APPROVED_TOTAL: 'groupApprovedTotal', + GROUP_APPROVER: 'groupApprover', }, SYNTAX_OPERATORS: { AND: 'and', @@ -8319,7 +8310,7 @@ const CONST = { SUBMITTER_USER_ID: 'submitterUserID', SUBMITTER_PAYROLL_ID: 'submitterPayrollID', ORDER_DEAL_NUMBERS: 'orderDealNumbers', - VIOLATION_APPROVER: 'violationApprover', + APPROVER: 'approver', }, REPORT_FIELD: { // All report fields start with this, so use this to check if a search key is a report field @@ -8403,7 +8394,7 @@ const CONST = { SUBMITTER_USER_ID: 'submitter-user-id', SUBMITTER_PAYROLL_ID: 'submitter-payroll-id', ORDER_DEAL_NUMBERS: 'order-deal-numbers', - VIOLATION_APPROVER: 'violation-approver', + APPROVER: 'approver', COLUMNS: 'columns', LIMIT: 'limit', COMPARE: 'compare', @@ -8477,9 +8468,7 @@ const CONST = { [this.TABLE_COLUMNS.GROUP_WITHDRAWAL_STATUS]: 'group-withdrawal-status', [this.TABLE_COLUMNS.GROUP_AMOUNT_DEBITED]: 'group-amount-debited', [this.TABLE_COLUMNS.GROUP_AMOUNT_REIMBURSED]: 'group-amount-reimbursed', - [this.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER]: 'group-violation-approver', - [this.TABLE_COLUMNS.GROUP_APPROVAL_COUNT]: 'group-approval-count', - [this.TABLE_COLUMNS.GROUP_APPROVED_TOTAL]: 'group-approved-total', + [this.TABLE_COLUMNS.GROUP_APPROVER]: 'group-approver', [this.TABLE_COLUMNS.AMOUNT_DEBITED]: 'amount-debited', [this.TABLE_COLUMNS.AMOUNT_REIMBURSED]: 'amount-reimbursed', }; diff --git a/src/components/Search/FilterDropdowns/DisplayPopup.tsx b/src/components/Search/FilterDropdowns/DisplayPopup.tsx index e438e40690eb..7e454063d78b 100644 --- a/src/components/Search/FilterDropdowns/DisplayPopup.tsx +++ b/src/components/Search/FilterDropdowns/DisplayPopup.tsx @@ -59,7 +59,7 @@ function DisplayPopup({queryJSON, searchResults, closeOverlay, onSort}: DisplayP | null >(null); - const groupBySections = getGroupBySections(translate, queryJSON); + const groupBySections = getGroupBySections(translate); const groupBy = groupBySections.flatMap((section) => section.options).find((option) => option.value === queryJSON.groupBy) ?? null; const viewOptions = getViewOptions(translate); const view = viewOptions.find((option) => option.value === queryJSON.view) ?? viewOptions.at(0); diff --git a/src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx b/src/components/Search/SearchList/ListItem/ApproverListItemHeader.tsx similarity index 73% rename from src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx rename to src/components/Search/SearchList/ListItem/ApproverListItemHeader.tsx index 49e1fae22224..d27a98a00421 100644 --- a/src/components/Search/SearchList/ListItem/ViolationApproverListItemHeader.tsx +++ b/src/components/Search/SearchList/ListItem/ApproverListItemHeader.tsx @@ -18,14 +18,14 @@ import type {ReactNode} from 'react'; import React from 'react'; import {View} from 'react-native'; -import type {TransactionViolationApproverGroupListItemType} from './types'; +import type {TransactionApproverGroupListItemType} from './types'; import ExpandCollapseArrowButton from './ExpandCollapseArrowButton'; import TextCell from './TextCell'; import TotalCell from './TotalCell'; -type ViolationApproverListItemHeaderProps = { - violationApprover: TransactionViolationApproverGroupListItemType; +type ApproverListItemHeaderProps = { + approver: TransactionApproverGroupListItemType; onCheckboxPress?: (item: ListItem) => void; /** Whether this section items disabled for selection */ @@ -55,8 +55,8 @@ type ViolationApproverListItemHeaderProps = { * Kept non-generic so OXC's React Compiler can memoize the component. * OXC bails on type params inside components ("Unsupported declaration type for hoisting"). */ -function ViolationApproverListItemHeader({ - violationApprover: violationApproverItem, +function ApproverListItemHeader({ + approver: approverItem, onCheckboxPress, isDisabled, canSelectMultiple, @@ -66,16 +66,16 @@ function ViolationApproverListItemHeader({ onDownArrowClick, columns, isLargeScreenWidth, -}: ViolationApproverListItemHeaderProps) { +}: ApproverListItemHeaderProps) { const styles = useThemeStyles(); const StyleUtils = useStyleUtils(); const {translate, formatPhoneNumber} = useLocalize(); const formattedDisplayName = temporaryGetDisplayNameOrDefault({ - passedPersonalDetails: violationApproverItem, + passedPersonalDetails: approverItem, translate, formatPhoneNumber, }); - const formattedLogin = formatPhoneNumber(violationApproverItem.login ?? ''); + const formattedLogin = formatPhoneNumber(approverItem.login ?? ''); const columnComponents: Partial> = { [CONST.SEARCH.TABLE_COLUMNS.AVATAR]: ( @@ -83,21 +83,21 @@ function ViolationApproverListItemHeader({ key={CONST.SEARCH.TABLE_COLUMNS.AVATAR} style={StyleUtils.getReportTableColumnStyles(CONST.SEARCH.TABLE_COLUMNS.AVATAR)} > - + ), - [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER]: ( + [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER]: ( - + ), - [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT]: ( + [CONST.SEARCH.TABLE_COLUMNS.GROUP_TOTAL]: ( - - - ), - [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL]: ( - ), @@ -146,21 +138,21 @@ function ViolationApproverListItemHeader({ {!!canSelectMultiple && ( onCheckboxPress?.(violationApproverItem)} + onPress={() => onCheckboxPress?.(approverItem)} isChecked={isSelectAllChecked} isIndeterminate={isIndeterminate} - disabled={!!isDisabled || violationApproverItem.isDisabledCheckbox} + disabled={!!isDisabled || approverItem.isDisabledCheckbox} accessibilityLabel={translate('common.select')} containerStyle={styles.m0} /> )} {!isLargeScreenWidth && ( - + @@ -181,8 +173,8 @@ function ViolationApproverListItemHeader({ {!isLargeScreenWidth && ( {!!onDownArrowClick && ( ); - case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: + case CONST.SEARCH.GROUP_BY.APPROVER: return ( - diff --git a/src/components/Search/SearchList/ListItem/TransactionGroupListItem.tsx b/src/components/Search/SearchList/ListItem/TransactionGroupListItem.tsx index 1febfb9f44ee..97b5567e1599 100644 --- a/src/components/Search/SearchList/ListItem/TransactionGroupListItem.tsx +++ b/src/components/Search/SearchList/ListItem/TransactionGroupListItem.tsx @@ -21,7 +21,7 @@ import type {TransactionPreviewData} from '@libs/actions/Search'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import type {ModifiedMouseEvent} from '@libs/Navigation/helpers/openInternalRouteInNewTab'; import {getLoginByAccountID} from '@libs/PersonalDetailsUtils'; -import {isCashBackWithdrawalGroup, isTransactionDayGroupListItemType} from '@libs/SearchUIUtils'; +import {isCashBackWithdrawalGroup, isTransactionApproverGroupListItemType, isTransactionDayGroupListItemType} from '@libs/SearchUIUtils'; import {getVisibleTransactionViolations, isTransactionPendingDelete} from '@libs/TransactionUtils'; import variables from '@styles/variables'; @@ -55,9 +55,9 @@ import type { TransactionWeekGroupListItemType, TransactionWithdrawalIDGroupListItemType, TransactionYearGroupListItemType, - TransactionViolationApproverGroupListItemType, } from './types'; +import ApproverListItemHeader from './ApproverListItemHeader'; import CardListItemHeader from './CardListItemHeader'; import CategoryListItemHeader from './CategoryListItemHeader'; import DayListItemHeader from './DayListItemHeader'; @@ -72,7 +72,6 @@ import TransactionGroupListExpandedItem from './TransactionGroupListExpanded'; import useGroupChildren from './useGroupChildren'; import useGroupOpenForShiftRange from './useGroupOpenForShiftRange'; import useLiveRowCapabilities from './useLiveRowCapabilities'; -import ViolationApproverListItemHeader from './ViolationApproverListItemHeader'; import WeekListItemHeader from './WeekListItemHeader'; import WithdrawalIDListItemHeader from './WithdrawalIDListItemHeader'; import YearListItemHeader from './YearListItemHeader'; @@ -473,20 +472,25 @@ function TransactionGroupListItemImpl({ isExpanded={isExpanded} /> ), - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: ( - - ), + [CONST.SEARCH.GROUP_BY.APPROVER]: (() => { + if (!isTransactionApproverGroupListItemType(groupItem)) { + return null; + } + return ( + + ); + })(), }; if (searchType === CONST.SEARCH.DATA_TYPES.EXPENSE_REPORT) { diff --git a/src/components/Search/SearchList/ListItem/types.ts b/src/components/Search/SearchList/ListItem/types.ts index cff01a54aef4..cb6d09a3be97 100644 --- a/src/components/Search/SearchList/ListItem/types.ts +++ b/src/components/Search/SearchList/ListItem/types.ts @@ -23,6 +23,7 @@ import type { import type {Attendee} from '@src/types/onyx/IOU'; import type {Errors, Icon} from '@src/types/onyx/OnyxCommon'; import type { + SearchApproverGroup, SearchCardGroup, SearchCategoryGroup, SearchDataTypes, @@ -34,7 +35,6 @@ import type { SearchTagGroup, SearchTask, SearchTransactionAction, - SearchViolationApproverGroup, SearchWeekGroup, SearchWithdrawalIDGroup, SearchYearGroup, @@ -489,10 +489,10 @@ type TransactionQuarterGroupListItemType = TransactionGroupListItemType & {group sortKey: number; }; -type TransactionViolationApproverGroupListItemType = TransactionGroupListItemType & {groupedBy: typeof CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER} & PersonalDetails & - SearchViolationApproverGroup & { +type TransactionApproverGroupListItemType = TransactionGroupListItemType & {groupedBy: typeof CONST.SEARCH.GROUP_BY.APPROVER} & PersonalDetails & + SearchApproverGroup & { /** Final and formatted approver name used for displaying and sorting */ - formattedViolationApprover?: string; + formattedApprover?: string; }; type TransactionListItemProps = ListItemProps & @@ -567,7 +567,7 @@ type GroupHeaderItemType = | (TransactionWeekGroupListItemType & GroupHeaderListItemType) | (TransactionYearGroupListItemType & GroupHeaderListItemType) | (TransactionQuarterGroupListItemType & GroupHeaderListItemType) - | (TransactionViolationApproverGroupListItemType & GroupHeaderListItemType) + | (TransactionApproverGroupListItemType & GroupHeaderListItemType) | (TransactionGroupListItemType & GroupHeaderListItemType); type GroupChildrenContainerItemType = TransactionGroupListItemType & { @@ -625,7 +625,7 @@ export type { TransactionWeekGroupListItemType, TransactionYearGroupListItemType, TransactionQuarterGroupListItemType, - TransactionViolationApproverGroupListItemType, + TransactionApproverGroupListItemType, TransactionWithdrawalIDGroupListItemType, TransactionGroupListItemProps, TransactionGroupListExpandedProps, diff --git a/src/components/Search/SearchTableHeader.tsx b/src/components/Search/SearchTableHeader.tsx index 97018495a51a..f875964cde96 100644 --- a/src/components/Search/SearchTableHeader.tsx +++ b/src/components/Search/SearchTableHeader.tsx @@ -513,7 +513,7 @@ const getTransactionGroupHeaders = (groupBy: SearchGroupBy, icons: SearchHeaderI }, ...commonGroupHeaders, ]; - case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: + case CONST.SEARCH.GROUP_BY.APPROVER: return [ { columnName: CONST.SEARCH.TABLE_COLUMNS.AVATAR, @@ -522,21 +522,11 @@ const getTransactionGroupHeaders = (groupBy: SearchGroupBy, icons: SearchHeaderI isColumnSortable: false, }, { - columnName: CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, - translationKey: 'search.filters.groupBy.violation-approver', - isColumnSortable: true, - }, - groupExpensesHeader, - { - columnName: CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, - translationKey: 'search.filters.approvalCount', - isColumnSortable: true, - }, - { - columnName: CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL, - translationKey: 'search.filters.approvedTotal', + columnName: CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER, + translationKey: 'search.filters.groupBy.approver', isColumnSortable: true, }, + ...commonGroupHeaders, ]; default: return []; diff --git a/src/components/Search/chartGroupByConfig.ts b/src/components/Search/chartGroupByConfig.ts index ab3440a49cc3..3ab05ad06034 100644 --- a/src/components/Search/chartGroupByConfig.ts +++ b/src/components/Search/chartGroupByConfig.ts @@ -119,10 +119,10 @@ const CHART_GROUP_BY_CONFIG: Record = { }, getDateRange: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.QUARTER ? DateUtils.getQuarterDateRange(item.year, item.quarter) : undefined), }, - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: { + [CONST.SEARCH.GROUP_BY.APPROVER]: { titleIconName: 'Users', - getLabel: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER ? (item.formattedViolationApprover ?? '') : ''), - getFilterQuery: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER ? `${CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER}:${item.accountID}` : ''), + getLabel: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.APPROVER ? (item.formattedApprover ?? '') : ''), + getFilterQuery: (item: GroupedItem) => (item.groupedBy === CONST.SEARCH.GROUP_BY.APPROVER ? `${CONST.SEARCH.GROUP_BY.APPROVER}:${item.accountID}` : ''), }, }; diff --git a/src/components/Search/hooks/useGroupedItems.ts b/src/components/Search/hooks/useGroupedItems.ts index 977460020820..7989c9b962ac 100644 --- a/src/components/Search/hooks/useGroupedItems.ts +++ b/src/components/Search/hooks/useGroupedItems.ts @@ -31,7 +31,8 @@ function useGroupedItems(searchResults: OnyxEntry, queryJSON: Rea const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID); const [rules] = useOnyx(ONYXKEYS.COLLECTION.RULE); const groupBy = queryJSON?.groupBy; - const [onyxPersonalDetailsList] = usePersonalDetailsByIDs(groupBy === CONST.SEARCH.GROUP_BY.FROM ? getGroupedAccountIDs(searchResults?.data) : undefined); + const shouldLoadGroupPersonalDetails = groupBy === CONST.SEARCH.GROUP_BY.FROM || groupBy === CONST.SEARCH.GROUP_BY.APPROVER; + const [onyxPersonalDetailsList] = usePersonalDetailsByIDs(shouldLoadGroupPersonalDetails ? getGroupedAccountIDs(searchResults?.data) : undefined); const sortedSections = searchResults?.data && queryJSON && groupBy && login diff --git a/src/components/Search/hooks/useUpdateFilterQuery.tsx b/src/components/Search/hooks/useUpdateFilterQuery.tsx index 9fe72ec97a0f..94ff18d8e501 100644 --- a/src/components/Search/hooks/useUpdateFilterQuery.tsx +++ b/src/components/Search/hooks/useUpdateFilterQuery.tsx @@ -9,7 +9,6 @@ import {markQueryAsRefinement} from '@libs/SearchQueryRefinement'; import {buildFilterQueryWithSortDefaults, buildSearchQueryJSON} from '@libs/SearchQueryUtils'; import {filterValidHasValues} from '@libs/SearchUIUtils'; -import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type {SearchAdvancedFiltersForm} from '@src/types/form'; import {getEmptyObject} from '@src/types/utils/EmptyObject'; @@ -38,11 +37,6 @@ function useUpdateFilterQuery(queryJSON: SearchQueryJSON | undefined) { updatedFilterFormValues.columns = []; } - if (updatedFilterFormValues.groupBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER && !updatedFilterFormValues.has?.includes(CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION)) { - updatedFilterFormValues.groupBy = undefined; - updatedFilterFormValues.columns = []; - } - return updatedFilterFormValues; } diff --git a/src/components/Search/types.ts b/src/components/Search/types.ts index 81031c5ebb08..a65b72a0f631 100644 --- a/src/components/Search/types.ts +++ b/src/components/Search/types.ts @@ -28,7 +28,7 @@ import type { TransactionMonthGroupListItemType, TransactionQuarterGroupListItemType, TransactionTagGroupListItemType, - TransactionViolationApproverGroupListItemType, + TransactionApproverGroupListItemType, TransactionWeekGroupListItemType, TransactionWithdrawalIDGroupListItemType, TransactionYearGroupListItemType, @@ -470,7 +470,7 @@ type GroupedItem = | TransactionWeekGroupListItemType | TransactionYearGroupListItemType | TransactionQuarterGroupListItemType - | TransactionViolationApproverGroupListItemType; + | TransactionApproverGroupListItemType; type SearchChartDataRow = { /** The point plotted on the chart */ diff --git a/src/languages/de.ts b/src/languages/de.ts index c7e7a9b6fc59..bc0dbed9854d 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -10104,7 +10104,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc [CONST.SEARCH.GROUP_BY.WEEK]: 'Woche', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jahr', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quartal', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Verstoßgenehmigende Person', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Genehmiger', }, feed: 'Feed', withdrawalType: { @@ -10114,8 +10114,6 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc }, is: 'Ist', has: {submittedViolation: 'Eingereichter Verstoß', approvedViolation: 'Genehmigter Verstoß'}, - approvalCount: 'Genehmigungsanzahl', - approvedTotal: 'Genehmigte Gesamtsumme', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Senden', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Genehmigen', @@ -10159,7 +10157,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc [CONST.SEARCH.GROUP_BY.WEEK]: 'Wochen', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jahre', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quartale', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Verstoßgenehmigende Personen', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Genehmiger', }, moneyRequestReport: {emptyStateTitle: 'Noch keine Ausgaben', accessPlaceHolder: 'Für Details öffnen'}, noCategory: 'Keine Kategorie', diff --git a/src/languages/el.ts b/src/languages/el.ts index 452afcec4d4e..05afba63cd29 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -10305,7 +10305,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Εβδομάδα', [CONST.SEARCH.GROUP_BY.YEAR]: 'Έτος', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Τρίμηνο', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Εγκρίνων παραβάσεων', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Εγκρίνων', }, feed: 'Ροή', withdrawalType: { @@ -10321,8 +10321,6 @@ ${reportName}`, [CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Εξαγωγή', }, has: {submittedViolation: 'Υποβληθείσα παράβαση', approvedViolation: 'Εγκεκριμένη παράβαση'}, - approvalCount: 'Μετρητής εγκρίσεων', - approvedTotal: 'Συνολικό εγκεκριμένο ποσό', filterType: { label: 'Τύπος φίλτρου', has: {positive: 'έχει', negative: 'δεν έχει'}, @@ -10364,7 +10362,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Εβδομάδες', [CONST.SEARCH.GROUP_BY.YEAR]: 'Χρόνια', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Τρίμηνα', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Εγκρίνοντες παραβάσεων', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Εγκρίνοντες', }, moneyRequestReport: { emptyStateTitle: 'Καμία δαπάνη ακόμη', diff --git a/src/languages/en.ts b/src/languages/en.ts index ac2bf79db294..f6cdbee0a590 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -10348,7 +10348,7 @@ const translations = { [CONST.SEARCH.GROUP_BY.WEEK]: 'Week', [CONST.SEARCH.GROUP_BY.YEAR]: 'Year', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quarter', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Violation approver', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Approver', }, feed: 'Feed', transactionStatus: { @@ -10367,8 +10367,6 @@ const translations = { submittedViolation: 'Submitted violation', approvedViolation: 'Approved violation', }, - approvalCount: 'Approval count', - approvedTotal: 'Approved total', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Submit', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Approve', @@ -10414,7 +10412,7 @@ const translations = { [CONST.SEARCH.GROUP_BY.WEEK]: 'Weeks', [CONST.SEARCH.GROUP_BY.YEAR]: 'Years', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Quarters', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Violation approvers', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Approvers', }, moneyRequestReport: { emptyStateTitle: 'No expenses yet', diff --git a/src/languages/es.ts b/src/languages/es.ts index 1ef4b06fb911..b590a91f68a1 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -9950,7 +9950,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Semana', [CONST.SEARCH.GROUP_BY.YEAR]: 'Año', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprobador de infracciones', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Aprobador', }, feed: 'Feed', withdrawalType: { @@ -9960,8 +9960,6 @@ ${reportName}`, }, is: 'Es', has: {submittedViolation: 'Infracción enviada', approvedViolation: 'Infracción aprobada'}, - approvalCount: 'Número de aprobaciones', - approvedTotal: 'Total aprobado', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Enviar', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Aprobar', @@ -9991,7 +9989,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Semanas', [CONST.SEARCH.GROUP_BY.YEAR]: 'Años', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestres', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprobadores de infracciones', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Aprobadores', }, moneyRequestReport: {emptyStateTitle: 'Aún no hay gastos', accessPlaceHolder: 'Abrir para ver detalles'}, noCategory: 'Sin categoría', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index d86bbff7afb5..5f46f5dd5dc3 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -10128,7 +10128,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e [CONST.SEARCH.GROUP_BY.WEEK]: 'Semaine', [CONST.SEARCH.GROUP_BY.YEAR]: 'Année', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approbateur des violations', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Approbateur', }, feed: 'Fil', withdrawalType: { @@ -10138,8 +10138,6 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e }, is: 'Est', has: {submittedViolation: 'Infraction soumise', approvedViolation: 'Violation approuvée'}, - approvalCount: 'Nombre d’approbations', - approvedTotal: 'Total approuvé', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Soumettre', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Approuver', @@ -10183,7 +10181,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e [CONST.SEARCH.GROUP_BY.WEEK]: 'Semaines', [CONST.SEARCH.GROUP_BY.YEAR]: 'Années', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestres', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approbateurs des infractions', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Approbateurs', }, moneyRequestReport: {emptyStateTitle: 'Aucune dépense pour l’instant', accessPlaceHolder: 'Ouvrir pour plus de détails'}, noCategory: 'Aucune catégorie', diff --git a/src/languages/it.ts b/src/languages/it.ts index 853d39c3d453..0e68314aa95a 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -10056,7 +10056,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Settimana', [CONST.SEARCH.GROUP_BY.YEAR]: 'Anno', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Responsabile violazioni', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Approvatore', }, feed: 'Feed', withdrawalType: { @@ -10066,8 +10066,6 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, }, is: 'È', has: {submittedViolation: 'Violazione inviata', approvedViolation: 'Violazione approvata'}, - approvalCount: 'Numero di approvazioni', - approvedTotal: 'Totale approvato', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Invia', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Approva', @@ -10111,7 +10109,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Settimane', [CONST.SEARCH.GROUP_BY.YEAR]: 'Anni', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestri', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Approver delle violazioni', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Approvatori', }, moneyRequestReport: {emptyStateTitle: 'Nessuna spesa ancora', accessPlaceHolder: 'Apri per i dettagli'}, noCategory: 'Nessuna categoria', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 10836a02c1bc..d720b293adca 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -9915,7 +9915,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: '週', [CONST.SEARCH.GROUP_BY.YEAR]: '年', [CONST.SEARCH.GROUP_BY.QUARTER]: '四半期', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: '違反承認者', + [CONST.SEARCH.GROUP_BY.APPROVER]: '承認者', }, feed: 'フィード', withdrawalType: { @@ -9925,8 +9925,6 @@ ${reportName}`, }, is: 'は', has: {submittedViolation: '違反を送信しました', approvedViolation: '承認済みの違反'}, - approvalCount: '承認数', - approvedTotal: '承認済み合計', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: '送信', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: '承認', @@ -9964,7 +9962,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: '週間', [CONST.SEARCH.GROUP_BY.YEAR]: '年数', [CONST.SEARCH.GROUP_BY.QUARTER]: '四半期', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: '違反承認者', + [CONST.SEARCH.GROUP_BY.APPROVER]: '承認者', }, moneyRequestReport: {emptyStateTitle: 'まだ経費がありません', accessPlaceHolder: '詳細を開く'}, noCategory: 'カテゴリなし', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index acd32c94e539..90b4227a11bb 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -10023,7 +10023,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Week', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jaar', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartaal', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Schendinggoedkeurder', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Goedkeurder', }, feed: 'Feed', withdrawalType: { @@ -10033,8 +10033,6 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, }, is: 'Is', has: {submittedViolation: 'Ingediende overtreding', approvedViolation: 'Goedgekeurde schending'}, - approvalCount: 'Aantal goedkeuringen', - approvedTotal: 'Goedgekeurd totaal', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Verzenden', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Goedkeuren', @@ -10122,7 +10120,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Weken', [CONST.SEARCH.GROUP_BY.YEAR]: 'Jaren', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartalen', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Overtredingsfiatteurs', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Goedkeurders', }, spendOverTime: 'Uitgaven in de tijd', tabs: { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 980db5647d39..93ceb6c19afe 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -10038,7 +10038,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Tydzień', [CONST.SEARCH.GROUP_BY.YEAR]: 'Rok', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartał', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Osoba zatwierdzająca naruszenia', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Osoba zatwierdzająca', }, feed: 'Kanał', withdrawalType: { @@ -10048,8 +10048,6 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, }, is: 'Jest', has: {submittedViolation: 'Zgłoszone naruszenie', approvedViolation: 'Zatwierdzone naruszenie'}, - approvalCount: 'Liczba zatwierdzeń', - approvedTotal: 'Zatwierdzona suma', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Wyślij', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Zatwierdź', @@ -10093,7 +10091,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Tygodnie', [CONST.SEARCH.GROUP_BY.YEAR]: 'Lata', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Kwartały', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Osoby zatwierdzające naruszenia', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Osoby zatwierdzające', }, moneyRequestReport: {emptyStateTitle: 'Brak wydatków', accessPlaceHolder: 'Otwórz, aby zobaczyć szczegóły'}, noCategory: 'Brak kategorii', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index c3a45420b0c7..6e59953a9d6e 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -10021,7 +10021,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Semana', [CONST.SEARCH.GROUP_BY.YEAR]: 'Ano', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestre', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprovador de violação', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Aprovador', }, feed: 'Feed', withdrawalType: { @@ -10031,8 +10031,6 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, }, is: 'É', has: {submittedViolation: 'Violação enviada', approvedViolation: 'Violação aprovada'}, - approvalCount: 'Contagem de aprovações', - approvedTotal: 'Total aprovado', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: 'Enviar', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: 'Aprovar', @@ -10116,7 +10114,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, [CONST.SEARCH.GROUP_BY.WEEK]: 'Semanas', [CONST.SEARCH.GROUP_BY.YEAR]: 'Anos', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Trimestres', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: 'Aprovadores de violações', + [CONST.SEARCH.GROUP_BY.APPROVER]: 'Aprovadores', }, moneyRequestReport: {emptyStateTitle: 'Ainda não há despesas', accessPlaceHolder: 'Abrir para ver detalhes'}, errors: { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index c0997d67d384..b4f5b0d6f821 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -9645,7 +9645,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: '周', [CONST.SEARCH.GROUP_BY.YEAR]: '年份', [CONST.SEARCH.GROUP_BY.QUARTER]: '季度', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: '违规审批人', + [CONST.SEARCH.GROUP_BY.APPROVER]: '审批人', }, feed: '动态', withdrawalType: { @@ -9655,8 +9655,6 @@ ${reportName}`, }, is: '是', has: {submittedViolation: '已提交违规', approvedViolation: '已批准违规'}, - approvalCount: '审批数量', - approvedTotal: '已批准总额', action: { [CONST.SEARCH.ACTION_FILTERS.SUBMIT]: '提交', [CONST.SEARCH.ACTION_FILTERS.APPROVE]: '批准', @@ -9694,7 +9692,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.WEEK]: '周', [CONST.SEARCH.GROUP_BY.YEAR]: '年', [CONST.SEARCH.GROUP_BY.QUARTER]: '季度', - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: '违规审批人', + [CONST.SEARCH.GROUP_BY.APPROVER]: '审批人', }, moneyRequestReport: {emptyStateTitle: '暂时没有报销费用', accessPlaceHolder: '展开查看详情'}, noCategory: '无类别', diff --git a/src/libs/SearchParser/autocompleteParser.js b/src/libs/SearchParser/autocompleteParser.js index 1badb34e8e0b..646bd289581c 100644 --- a/src/libs/SearchParser/autocompleteParser.js +++ b/src/libs/SearchParser/autocompleteParser.js @@ -254,67 +254,64 @@ function peg$parse(input, options) { var peg$c68 = "submitter-payroll-id"; var peg$c69 = "orderdealnumbers"; var peg$c70 = "order-deal-numbers"; - var peg$c71 = "violationapprover"; - var peg$c72 = "violation-approver"; - var peg$c73 = "assignee"; - var peg$c74 = "createdby"; - var peg$c75 = "created-by"; - var peg$c76 = "action"; - var peg$c77 = "total"; - var peg$c78 = "has"; - var peg$c79 = "is"; - var peg$c80 = "purchaseamount"; - var peg$c81 = "purchase-amount"; - var peg$c82 = "purchasecurrency"; - var peg$c83 = "purchase-currency"; - var peg$c84 = "amountdebited"; - var peg$c85 = "amount-debited"; - var peg$c86 = "amountreimbursed"; - var peg$c87 = "amount-reimbursed"; - var peg$c88 = "columns"; - var peg$c89 = "view"; - var peg$c90 = "compare"; - var peg$c91 = "per-diem"; - var peg$c92 = "drafts"; - var peg$c93 = "draft"; - var peg$c94 = "tax"; - var peg$c95 = "policy-name"; - var peg$c96 = "long-report-id"; - var peg$c97 = "exported-to"; - var peg$c98 = "exportedto"; - var peg$c99 = "exchange-rate"; - var peg$c100 = "reimbursable-total"; - var peg$c101 = "non-reimbursable-total"; - var peg$c102 = "group-from"; - var peg$c103 = "group-expenses"; - var peg$c104 = "group-total"; - var peg$c105 = "group-card"; - var peg$c106 = "group-feed"; - var peg$c107 = "group-bank-account"; - var peg$c108 = "group-withdrawn"; - var peg$c109 = "group-withdrawal-id"; - var peg$c110 = "group-amount-debited"; - var peg$c111 = "group-amount-reimbursed"; - var peg$c112 = "group-category"; - var peg$c113 = "group-tag"; - var peg$c114 = "group-merchant"; - var peg$c115 = "group-day"; - var peg$c116 = "group-month"; - var peg$c117 = "group-week"; - var peg$c118 = "group-year"; - var peg$c119 = "group-quarter"; - var peg$c120 = "group-violation-approver"; - var peg$c121 = "group-approval-count"; - var peg$c122 = "group-approved-total"; - var peg$c123 = "!="; - var peg$c124 = ">="; - var peg$c125 = ">"; - var peg$c126 = "<="; - var peg$c127 = "<"; - var peg$c128 = "\\"; - var peg$c129 = "\u201C"; - var peg$c130 = "\u201D"; - var peg$c131 = "\""; + var peg$c71 = "approver"; + var peg$c72 = "assignee"; + var peg$c73 = "createdby"; + var peg$c74 = "created-by"; + var peg$c75 = "action"; + var peg$c76 = "total"; + var peg$c77 = "has"; + var peg$c78 = "is"; + var peg$c79 = "purchaseamount"; + var peg$c80 = "purchase-amount"; + var peg$c81 = "purchasecurrency"; + var peg$c82 = "purchase-currency"; + var peg$c83 = "amountdebited"; + var peg$c84 = "amount-debited"; + var peg$c85 = "amountreimbursed"; + var peg$c86 = "amount-reimbursed"; + var peg$c87 = "columns"; + var peg$c88 = "view"; + var peg$c89 = "compare"; + var peg$c90 = "per-diem"; + var peg$c91 = "drafts"; + var peg$c92 = "draft"; + var peg$c93 = "tax"; + var peg$c94 = "policy-name"; + var peg$c95 = "long-report-id"; + var peg$c96 = "exported-to"; + var peg$c97 = "exportedto"; + var peg$c98 = "exchange-rate"; + var peg$c99 = "reimbursable-total"; + var peg$c100 = "non-reimbursable-total"; + var peg$c101 = "group-from"; + var peg$c102 = "group-expenses"; + var peg$c103 = "group-total"; + var peg$c104 = "group-card"; + var peg$c105 = "group-feed"; + var peg$c106 = "group-bank-account"; + var peg$c107 = "group-withdrawn"; + var peg$c108 = "group-withdrawal-id"; + var peg$c109 = "group-amount-debited"; + var peg$c110 = "group-amount-reimbursed"; + var peg$c111 = "group-category"; + var peg$c112 = "group-tag"; + var peg$c113 = "group-merchant"; + var peg$c114 = "group-day"; + var peg$c115 = "group-month"; + var peg$c116 = "group-week"; + var peg$c117 = "group-year"; + var peg$c118 = "group-quarter"; + var peg$c119 = "group-approver"; + var peg$c120 = "!="; + var peg$c121 = ">="; + var peg$c122 = ">"; + var peg$c123 = "<="; + var peg$c124 = "<"; + var peg$c125 = "\\"; + var peg$c126 = "\u201C"; + var peg$c127 = "\u201D"; + var peg$c128 = "\""; var peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; var peg$r1 = /^[:=]/; @@ -405,84 +402,81 @@ function peg$parse(input, options) { var peg$e71 = peg$literalExpectation("submitter-payroll-id", true); var peg$e72 = peg$literalExpectation("orderDealNumbers", true); var peg$e73 = peg$literalExpectation("order-deal-numbers", true); - var peg$e74 = peg$literalExpectation("violationApprover", true); - var peg$e75 = peg$literalExpectation("violation-approver", true); - var peg$e76 = peg$literalExpectation("assignee", true); - var peg$e77 = peg$literalExpectation("createdBy", true); - var peg$e78 = peg$literalExpectation("created-by", true); - var peg$e79 = peg$literalExpectation("action", true); - var peg$e80 = peg$literalExpectation("total", true); - var peg$e81 = peg$literalExpectation("has", true); - var peg$e82 = peg$literalExpectation("is", true); - var peg$e83 = peg$literalExpectation("purchaseAmount", true); - var peg$e84 = peg$literalExpectation("purchase-amount", true); - var peg$e85 = peg$literalExpectation("purchaseCurrency", true); - var peg$e86 = peg$literalExpectation("purchase-currency", true); - var peg$e87 = peg$literalExpectation("amountDebited", true); - var peg$e88 = peg$literalExpectation("amount-debited", true); - var peg$e89 = peg$literalExpectation("amountReimbursed", true); - var peg$e90 = peg$literalExpectation("amount-reimbursed", true); - var peg$e91 = peg$literalExpectation("columns", true); - var peg$e92 = peg$literalExpectation("view", true); - var peg$e93 = peg$literalExpectation("compare", true); - var peg$e94 = peg$literalExpectation("per-diem", true); - var peg$e95 = peg$literalExpectation("drafts", true); - var peg$e96 = peg$literalExpectation("draft", true); - var peg$e97 = peg$literalExpectation("tax", true); - var peg$e98 = peg$literalExpectation("policy-name", true); - var peg$e99 = peg$literalExpectation("long-report-id", true); - var peg$e100 = peg$literalExpectation("exported-to", true); - var peg$e101 = peg$classExpectation([":", "="], false, false); - var peg$e102 = peg$literalExpectation("exportedTo", true); - var peg$e103 = peg$literalExpectation("exchange-rate", true); - var peg$e104 = peg$literalExpectation("reimbursable-total", true); - var peg$e105 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e106 = peg$literalExpectation("group-from", true); - var peg$e107 = peg$literalExpectation("group-expenses", true); - var peg$e108 = peg$literalExpectation("group-total", true); - var peg$e109 = peg$literalExpectation("group-card", true); - var peg$e110 = peg$literalExpectation("group-feed", true); - var peg$e111 = peg$literalExpectation("group-bank-account", true); - var peg$e112 = peg$literalExpectation("group-withdrawn", true); - var peg$e113 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e114 = peg$literalExpectation("group-amount-debited", true); - var peg$e115 = peg$literalExpectation("group-amount-reimbursed", true); - var peg$e116 = peg$literalExpectation("group-category", true); - var peg$e117 = peg$literalExpectation("group-tag", true); - var peg$e118 = peg$literalExpectation("group-merchant", true); - var peg$e119 = peg$literalExpectation("group-day", true); - var peg$e120 = peg$literalExpectation("group-month", true); - var peg$e121 = peg$literalExpectation("group-week", true); - var peg$e122 = peg$literalExpectation("group-year", true); - var peg$e123 = peg$literalExpectation("group-quarter", true); - var peg$e124 = peg$literalExpectation("group-violation-approver", true); - var peg$e125 = peg$literalExpectation("group-approval-count", true); - var peg$e126 = peg$literalExpectation("group-approved-total", true); - var peg$e127 = peg$otherExpectation("operator"); - var peg$e128 = peg$literalExpectation("!=", false); - var peg$e129 = peg$literalExpectation(">=", false); - var peg$e130 = peg$literalExpectation(">", false); - var peg$e131 = peg$literalExpectation("<=", false); - var peg$e132 = peg$literalExpectation("<", false); - var peg$e133 = peg$literalExpectation("\\", false); - var peg$e134 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); - var peg$e135 = peg$otherExpectation("word"); - var peg$e136 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e137 = peg$otherExpectation("whitespace"); - var peg$e138 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e139 = peg$otherExpectation("quote"); - var peg$e140 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e141 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e142 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e143 = peg$literalExpectation("\u201C", false); - var peg$e144 = peg$literalExpectation("\u201D", false); - var peg$e145 = peg$literalExpectation("\"", false); - var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e147 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e149 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e150 = peg$classExpectation([","], false, false); - var peg$e151 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e74 = peg$literalExpectation("approver", true); + var peg$e75 = peg$literalExpectation("assignee", true); + var peg$e76 = peg$literalExpectation("createdBy", true); + var peg$e77 = peg$literalExpectation("created-by", true); + var peg$e78 = peg$literalExpectation("action", true); + var peg$e79 = peg$literalExpectation("total", true); + var peg$e80 = peg$literalExpectation("has", true); + var peg$e81 = peg$literalExpectation("is", true); + var peg$e82 = peg$literalExpectation("purchaseAmount", true); + var peg$e83 = peg$literalExpectation("purchase-amount", true); + var peg$e84 = peg$literalExpectation("purchaseCurrency", true); + var peg$e85 = peg$literalExpectation("purchase-currency", true); + var peg$e86 = peg$literalExpectation("amountDebited", true); + var peg$e87 = peg$literalExpectation("amount-debited", true); + var peg$e88 = peg$literalExpectation("amountReimbursed", true); + var peg$e89 = peg$literalExpectation("amount-reimbursed", true); + var peg$e90 = peg$literalExpectation("columns", true); + var peg$e91 = peg$literalExpectation("view", true); + var peg$e92 = peg$literalExpectation("compare", true); + var peg$e93 = peg$literalExpectation("per-diem", true); + var peg$e94 = peg$literalExpectation("drafts", true); + var peg$e95 = peg$literalExpectation("draft", true); + var peg$e96 = peg$literalExpectation("tax", true); + var peg$e97 = peg$literalExpectation("policy-name", true); + var peg$e98 = peg$literalExpectation("long-report-id", true); + var peg$e99 = peg$literalExpectation("exported-to", true); + var peg$e100 = peg$classExpectation([":", "="], false, false); + var peg$e101 = peg$literalExpectation("exportedTo", true); + var peg$e102 = peg$literalExpectation("exchange-rate", true); + var peg$e103 = peg$literalExpectation("reimbursable-total", true); + var peg$e104 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e105 = peg$literalExpectation("group-from", true); + var peg$e106 = peg$literalExpectation("group-expenses", true); + var peg$e107 = peg$literalExpectation("group-total", true); + var peg$e108 = peg$literalExpectation("group-card", true); + var peg$e109 = peg$literalExpectation("group-feed", true); + var peg$e110 = peg$literalExpectation("group-bank-account", true); + var peg$e111 = peg$literalExpectation("group-withdrawn", true); + var peg$e112 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e113 = peg$literalExpectation("group-amount-debited", true); + var peg$e114 = peg$literalExpectation("group-amount-reimbursed", true); + var peg$e115 = peg$literalExpectation("group-category", true); + var peg$e116 = peg$literalExpectation("group-tag", true); + var peg$e117 = peg$literalExpectation("group-merchant", true); + var peg$e118 = peg$literalExpectation("group-day", true); + var peg$e119 = peg$literalExpectation("group-month", true); + var peg$e120 = peg$literalExpectation("group-week", true); + var peg$e121 = peg$literalExpectation("group-year", true); + var peg$e122 = peg$literalExpectation("group-quarter", true); + var peg$e123 = peg$literalExpectation("group-approver", true); + var peg$e124 = peg$otherExpectation("operator"); + var peg$e125 = peg$literalExpectation("!=", false); + var peg$e126 = peg$literalExpectation(">=", false); + var peg$e127 = peg$literalExpectation(">", false); + var peg$e128 = peg$literalExpectation("<=", false); + var peg$e129 = peg$literalExpectation("<", false); + var peg$e130 = peg$literalExpectation("\\", false); + var peg$e131 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); + var peg$e132 = peg$otherExpectation("word"); + var peg$e133 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e134 = peg$otherExpectation("whitespace"); + var peg$e135 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e136 = peg$otherExpectation("quote"); + var peg$e137 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e138 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e139 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e140 = peg$literalExpectation("\u201C", false); + var peg$e141 = peg$literalExpectation("\u201D", false); + var peg$e142 = peg$literalExpectation("\"", false); + var peg$e143 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e144 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e145 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e147 = peg$classExpectation([","], false, false); + var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(ranges) { return { autocomplete, ranges }; }; var peg$f1 = function(filters) { return filters.filter(Boolean).flat(); }; @@ -594,7 +588,7 @@ function peg$parse(input, options) { var peg$f52 = function() { return "submitterUserID"; }; var peg$f53 = function() { return "submitterPayrollID"; }; var peg$f54 = function() { return "orderDealNumbers"; }; - var peg$f55 = function() { return "violationApprover"; }; + var peg$f55 = function() { return "approver"; }; var peg$f56 = function() { return "assignee"; }; var peg$f57 = function() { return "createdBy"; }; var peg$f58 = function() { return "action"; }; @@ -648,36 +642,34 @@ function peg$parse(input, options) { var peg$f103 = function() { return "groupweek"; }; var peg$f104 = function() { return "groupyear"; }; var peg$f105 = function() { return "groupquarter"; }; - var peg$f106 = function() { return "groupViolationApprover"; }; - var peg$f107 = function() { return "groupApprovalCount"; }; - var peg$f108 = function() { return "groupApprovedTotal"; }; - var peg$f109 = function() { return "eq"; }; - var peg$f110 = function() { return "neq"; }; - var peg$f111 = function() { return "gte"; }; - var peg$f112 = function() { return "gt"; }; - var peg$f113 = function() { return "lte"; }; - var peg$f114 = function() { return "lt"; }; - var peg$f115 = function(o) { + var peg$f106 = function() { return "groupApprover"; }; + var peg$f107 = function() { return "eq"; }; + var peg$f108 = function() { return "neq"; }; + var peg$f109 = function() { return "gte"; }; + var peg$f110 = function() { return "gt"; }; + var peg$f111 = function() { return "lte"; }; + var peg$f112 = function() { return "lt"; }; + var peg$f113 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f116 = function(c) { return c; }; - var peg$f117 = function(chars) { return chars.join("").trim(); }; - var peg$f118 = function() { + var peg$f114 = function(c) { return c; }; + var peg$f115 = function(chars) { return chars.join("").trim(); }; + var peg$f116 = function() { isColumnsContext = false; return "and"; }; - var peg$f119 = function() { return expectingNestedQuote; }; - var peg$f120 = function(start, inner, end) { //handle no-breaking space + var peg$f117 = function() { return expectingNestedQuote; }; + var peg$f118 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f121 = function(start) {return "“"}; - var peg$f122 = function(start) {return "”"}; - var peg$f123 = function(start) {return "\""}; - var peg$f124 = function(start, inner, end) { + var peg$f119 = function(start) {return "“"}; + var peg$f120 = function(start) {return "”"}; + var peg$f121 = function(start) {return "\""}; + var peg$f122 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -1200,7 +1192,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = peg$parseorderDealNumbers(); if (s1 === peg$FAILED) { - s1 = peg$parseviolationApprover(); + s1 = peg$parseapprover(); if (s1 === peg$FAILED) { s1 = peg$parsereportFieldDynamic(); if (s1 === peg$FAILED) { @@ -2487,31 +2479,22 @@ function peg$parse(input, options) { return s0; } - function peg$parseviolationApprover() { + function peg$parseapprover() { var s0, s1; - s0 = input.substr(peg$currPos, 17); - if (s0.toLowerCase() === peg$c71) { - peg$currPos += 17; + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 8); + if (s1.toLowerCase() === peg$c71) { + peg$currPos += 8; } else { - s0 = peg$FAILED; + s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e74); } } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c72) { - peg$currPos += 18; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f55(); - } - s0 = s1; + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f55(); } + s0 = s1; return s0; } @@ -2521,11 +2504,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c73) { + if (s1.toLowerCase() === peg$c72) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2540,20 +2523,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c74) { + if (s0.toLowerCase() === peg$c73) { peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c74) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2570,11 +2553,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c76) { + if (s1.toLowerCase() === peg$c75) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2590,11 +2573,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c76) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2610,11 +2593,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c78) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2630,11 +2613,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c78) { peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2649,20 +2632,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c80) { + if (s0.toLowerCase() === peg$c79) { peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2678,20 +2661,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c82) { + if (s0.toLowerCase() === peg$c81) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c82) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2707,20 +2690,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 13); - if (s0.toLowerCase() === peg$c84) { + if (s0.toLowerCase() === peg$c83) { peg$currPos += 13; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2736,20 +2719,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c86) { + if (s0.toLowerCase() === peg$c85) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2766,11 +2749,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c88) { + if (s1.toLowerCase() === peg$c87) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2786,11 +2769,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2806,11 +2789,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c90) { + if (s1.toLowerCase() === peg$c89) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2922,13 +2905,7 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$parsegroupQuarter(); if (s0 === peg$FAILED) { - s0 = peg$parsegroupViolationApprover(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupApprovalCount(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupApprovedTotal(); - } - } + s0 = peg$parsegroupApprover(); } } } @@ -2970,11 +2947,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c91) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3007,19 +2984,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c92) { + if (s1.toLowerCase() === peg$c91) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c93) { + if (s1.toLowerCase() === peg$c92) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } } if (s1 !== peg$FAILED) { @@ -3053,11 +3030,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3090,11 +3067,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c94) { + if (s1.toLowerCase() === peg$c93) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3164,11 +3141,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c94) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3275,11 +3252,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c96) { + if (s1.toLowerCase() === peg$c95) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3349,11 +3326,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3393,7 +3370,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -3412,11 +3389,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c98) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3443,11 +3420,11 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3481,11 +3458,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c98) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3518,11 +3495,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c100) { + if (s1.toLowerCase() === peg$c99) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3555,11 +3532,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c101) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3592,11 +3569,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c102) { + if (s1.toLowerCase() === peg$c101) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3629,11 +3606,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c103) { + if (s1.toLowerCase() === peg$c102) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3666,11 +3643,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c104) { + if (s1.toLowerCase() === peg$c103) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3703,11 +3680,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c105) { + if (s1.toLowerCase() === peg$c104) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3740,11 +3717,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c106) { + if (s1.toLowerCase() === peg$c105) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3777,11 +3754,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c107) { + if (s1.toLowerCase() === peg$c106) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3814,11 +3791,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c108) { + if (s1.toLowerCase() === peg$c107) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3851,11 +3828,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c109) { + if (s1.toLowerCase() === peg$c108) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3888,11 +3865,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c110) { + if (s1.toLowerCase() === peg$c109) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3925,11 +3902,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 23); - if (s1.toLowerCase() === peg$c111) { + if (s1.toLowerCase() === peg$c110) { peg$currPos += 23; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3962,11 +3939,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3999,11 +3976,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4036,11 +4013,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c112) { + if (s1.toLowerCase() === peg$c111) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4073,11 +4050,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c113) { + if (s1.toLowerCase() === peg$c112) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4110,11 +4087,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c114) { + if (s1.toLowerCase() === peg$c113) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4147,11 +4124,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c115) { + if (s1.toLowerCase() === peg$c114) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4184,11 +4161,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c116) { + if (s1.toLowerCase() === peg$c115) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4221,11 +4198,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c117) { + if (s1.toLowerCase() === peg$c116) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4258,11 +4235,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c118) { + if (s1.toLowerCase() === peg$c117) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4295,11 +4272,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c119) { + if (s1.toLowerCase() === peg$c118) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e122); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4327,16 +4304,16 @@ function peg$parse(input, options) { return s0; } - function peg$parsegroupViolationApprover() { + function peg$parsegroupApprover() { var s0, s1, s2, s3; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 24); - if (s1.toLowerCase() === peg$c120) { - peg$currPos += 24; + s1 = input.substr(peg$currPos, 14); + if (s1.toLowerCase() === peg$c119) { + peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4364,80 +4341,6 @@ function peg$parse(input, options) { return s0; } - function peg$parsegroupApprovalCount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c121) { - peg$currPos += 20; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f107(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupApprovedTotal() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c122) { - peg$currPos += 20; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f108(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - function peg$parseoperator() { var s0, s1; @@ -4448,81 +4351,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f109(); + s1 = peg$f107(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c123) { - s1 = peg$c123; + if (input.substr(peg$currPos, 2) === peg$c120) { + s1 = peg$c120; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f110(); + s1 = peg$f108(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c124) { - s1 = peg$c124; + if (input.substr(peg$currPos, 2) === peg$c121) { + s1 = peg$c121; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f111(); + s1 = peg$f109(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c125; + s1 = peg$c122; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f112(); + s1 = peg$f110(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c126) { - s1 = peg$c126; + if (input.substr(peg$currPos, 2) === peg$c123) { + s1 = peg$c123; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f113(); + s1 = peg$f111(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c127; + s1 = peg$c124; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f114(); + s1 = peg$f112(); } s0 = s1; } @@ -4533,7 +4436,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e124); } } return s0; @@ -4546,7 +4449,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f115(s1); + s1 = peg$f113(s1); } s0 = s1; @@ -4558,11 +4461,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c128; + s1 = peg$c125; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s1 !== peg$FAILED) { s2 = input.charAt(peg$currPos); @@ -4570,11 +4473,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f116(s2); + s0 = peg$f114(s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4600,7 +4503,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } } if (s2 !== peg$FAILED) { @@ -4613,7 +4516,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } } } @@ -4622,13 +4525,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f117(s1); + s1 = peg$f115(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } return s0; @@ -4640,7 +4543,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f118(); + s1 = peg$f116(); s0 = s1; return s0; @@ -4656,7 +4559,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4665,12 +4568,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } return s0; } @@ -4680,7 +4583,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f119(); + s1 = peg$f117(); if (s1) { s1 = undefined; } else { @@ -4717,7 +4620,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4726,7 +4629,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } } s2 = input.charAt(peg$currPos); @@ -4734,7 +4637,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4745,7 +4648,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } } while (s4 !== peg$FAILED) { @@ -4757,7 +4660,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } } } @@ -4766,7 +4669,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4775,7 +4678,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4784,11 +4687,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } } peg$savedPos = s0; - s0 = peg$f120(s1, s3, s5); + s0 = peg$f118(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4800,7 +4703,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } return s0; @@ -4817,7 +4720,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4826,7 +4729,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } } s2 = input.charAt(peg$currPos); @@ -4834,7 +4737,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4845,7 +4748,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4861,15 +4764,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c129; + s6 = peg$c126; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f121(s1); + s4 = peg$f119(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4892,15 +4795,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c130; + s6 = peg$c127; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f120(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4923,15 +4826,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c131; + s6 = peg$c128; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f123(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4953,7 +4856,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4969,15 +4872,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c129; + s6 = peg$c126; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f121(s1); + s4 = peg$f119(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5000,15 +4903,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c130; + s6 = peg$c127; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f120(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5031,15 +4934,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c131; + s6 = peg$c128; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f123(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5056,7 +4959,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f124(s1, s3, s4); + s0 = peg$f122(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -5068,7 +4971,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } return s0; @@ -5083,7 +4986,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -5121,7 +5024,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5130,7 +5033,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } } s2 = []; @@ -5139,7 +5042,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -5148,7 +5051,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } } s3 = []; @@ -5157,7 +5060,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -5166,7 +5069,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } } s4 = peg$parseoperator(); @@ -5185,7 +5088,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5194,7 +5097,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } } s2 = peg$currPos; @@ -5241,7 +5144,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } } } @@ -5257,7 +5160,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e151); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } if (s0 === peg$FAILED) { s0 = peg$currPos; diff --git a/src/libs/SearchParser/autocompleteParser.peggy b/src/libs/SearchParser/autocompleteParser.peggy index b069398b9325..9062c1d3006c 100644 --- a/src/libs/SearchParser/autocompleteParser.peggy +++ b/src/libs/SearchParser/autocompleteParser.peggy @@ -131,7 +131,7 @@ autocompleteKey "key" / submitterUserID / submitterPayrollID / orderDealNumbers - / violationApprover + / approver / reportFieldDynamic / columns / limit diff --git a/src/libs/SearchParser/baseRules.peggy b/src/libs/SearchParser/baseRules.peggy index 21a2a19f2f40..ac7c9654eeee 100644 --- a/src/libs/SearchParser/baseRules.peggy +++ b/src/libs/SearchParser/baseRules.peggy @@ -93,7 +93,7 @@ title = "title"i { return "title"; } submitterUserID = "submitterUserID"i / "submitter-user-id"i { return "submitterUserID"; } submitterPayrollID = "submitterPayrollID"i / "submitter-payroll-id"i { return "submitterPayrollID"; } orderDealNumbers = "orderDealNumbers"i / "order-deal-numbers"i { return "orderDealNumbers"; } -violationApprover = "violationApprover"i / "violation-approver"i { return "violationApprover"; } +approver = "approver"i { return "approver"; } assignee = "assignee"i { return "assignee"; } createdBy = "createdBy"i / "created-by"i { return "createdBy"; } action = "action"i { return "action"; } @@ -150,9 +150,7 @@ columnsValues / groupWeek / groupYear / groupQuarter - / groupViolationApprover - / groupApprovalCount - / groupApprovedTotal + / groupApprover perDiem = "per-diem"i &wordBoundary { return "perDiem"; } draft = ("drafts"i / "draft"i) &wordBoundary { return "drafts"; } @@ -192,9 +190,7 @@ groupMonth = "group-month"i &wordBoundary { return "gr groupWeek = "group-week"i &wordBoundary { return "groupweek"; } groupYear = "group-year"i &wordBoundary { return "groupyear"; } groupQuarter = "group-quarter"i &wordBoundary { return "groupquarter"; } -groupViolationApprover = "group-violation-approver"i &wordBoundary { return "groupViolationApprover"; } -groupApprovalCount = "group-approval-count"i &wordBoundary { return "groupApprovalCount"; } -groupApprovedTotal = "group-approved-total"i &wordBoundary { return "groupApprovedTotal"; } +groupApprover = "group-approver"i &wordBoundary { return "groupApprover"; } operator "operator" diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index baf802f8e609..085c9adaa9a9 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -255,67 +255,64 @@ function peg$parse(input, options) { var peg$c68 = "submitter-payroll-id"; var peg$c69 = "orderdealnumbers"; var peg$c70 = "order-deal-numbers"; - var peg$c71 = "violationapprover"; - var peg$c72 = "violation-approver"; - var peg$c73 = "assignee"; - var peg$c74 = "createdby"; - var peg$c75 = "created-by"; - var peg$c76 = "action"; - var peg$c77 = "total"; - var peg$c78 = "has"; - var peg$c79 = "is"; - var peg$c80 = "purchaseamount"; - var peg$c81 = "purchase-amount"; - var peg$c82 = "purchasecurrency"; - var peg$c83 = "purchase-currency"; - var peg$c84 = "amountdebited"; - var peg$c85 = "amount-debited"; - var peg$c86 = "amountreimbursed"; - var peg$c87 = "amount-reimbursed"; - var peg$c88 = "columns"; - var peg$c89 = "view"; - var peg$c90 = "compare"; - var peg$c91 = "per-diem"; - var peg$c92 = "drafts"; - var peg$c93 = "draft"; - var peg$c94 = "tax"; - var peg$c95 = "policy-name"; - var peg$c96 = "long-report-id"; - var peg$c97 = "exported-to"; - var peg$c98 = "exportedto"; - var peg$c99 = "exchange-rate"; - var peg$c100 = "reimbursable-total"; - var peg$c101 = "non-reimbursable-total"; - var peg$c102 = "group-from"; - var peg$c103 = "group-expenses"; - var peg$c104 = "group-total"; - var peg$c105 = "group-card"; - var peg$c106 = "group-feed"; - var peg$c107 = "group-bank-account"; - var peg$c108 = "group-withdrawn"; - var peg$c109 = "group-withdrawal-id"; - var peg$c110 = "group-amount-debited"; - var peg$c111 = "group-amount-reimbursed"; - var peg$c112 = "group-category"; - var peg$c113 = "group-tag"; - var peg$c114 = "group-merchant"; - var peg$c115 = "group-day"; - var peg$c116 = "group-month"; - var peg$c117 = "group-week"; - var peg$c118 = "group-year"; - var peg$c119 = "group-quarter"; - var peg$c120 = "group-violation-approver"; - var peg$c121 = "group-approval-count"; - var peg$c122 = "group-approved-total"; - var peg$c123 = "!="; - var peg$c124 = ">="; - var peg$c125 = ">"; - var peg$c126 = "<="; - var peg$c127 = "<"; - var peg$c128 = "\\"; - var peg$c129 = "\u201C"; - var peg$c130 = "\u201D"; - var peg$c131 = "\""; + var peg$c71 = "approver"; + var peg$c72 = "assignee"; + var peg$c73 = "createdby"; + var peg$c74 = "created-by"; + var peg$c75 = "action"; + var peg$c76 = "total"; + var peg$c77 = "has"; + var peg$c78 = "is"; + var peg$c79 = "purchaseamount"; + var peg$c80 = "purchase-amount"; + var peg$c81 = "purchasecurrency"; + var peg$c82 = "purchase-currency"; + var peg$c83 = "amountdebited"; + var peg$c84 = "amount-debited"; + var peg$c85 = "amountreimbursed"; + var peg$c86 = "amount-reimbursed"; + var peg$c87 = "columns"; + var peg$c88 = "view"; + var peg$c89 = "compare"; + var peg$c90 = "per-diem"; + var peg$c91 = "drafts"; + var peg$c92 = "draft"; + var peg$c93 = "tax"; + var peg$c94 = "policy-name"; + var peg$c95 = "long-report-id"; + var peg$c96 = "exported-to"; + var peg$c97 = "exportedto"; + var peg$c98 = "exchange-rate"; + var peg$c99 = "reimbursable-total"; + var peg$c100 = "non-reimbursable-total"; + var peg$c101 = "group-from"; + var peg$c102 = "group-expenses"; + var peg$c103 = "group-total"; + var peg$c104 = "group-card"; + var peg$c105 = "group-feed"; + var peg$c106 = "group-bank-account"; + var peg$c107 = "group-withdrawn"; + var peg$c108 = "group-withdrawal-id"; + var peg$c109 = "group-amount-debited"; + var peg$c110 = "group-amount-reimbursed"; + var peg$c111 = "group-category"; + var peg$c112 = "group-tag"; + var peg$c113 = "group-merchant"; + var peg$c114 = "group-day"; + var peg$c115 = "group-month"; + var peg$c116 = "group-week"; + var peg$c117 = "group-year"; + var peg$c118 = "group-quarter"; + var peg$c119 = "group-approver"; + var peg$c120 = "!="; + var peg$c121 = ">="; + var peg$c122 = ">"; + var peg$c123 = "<="; + var peg$c124 = "<"; + var peg$c125 = "\\"; + var peg$c126 = "\u201C"; + var peg$c127 = "\u201D"; + var peg$c128 = "\""; var peg$r0 = /^[^ \t\r\n\xA0]/; var peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; @@ -409,84 +406,81 @@ function peg$parse(input, options) { var peg$e73 = peg$literalExpectation("submitter-payroll-id", true); var peg$e74 = peg$literalExpectation("orderDealNumbers", true); var peg$e75 = peg$literalExpectation("order-deal-numbers", true); - var peg$e76 = peg$literalExpectation("violationApprover", true); - var peg$e77 = peg$literalExpectation("violation-approver", true); - var peg$e78 = peg$literalExpectation("assignee", true); - var peg$e79 = peg$literalExpectation("createdBy", true); - var peg$e80 = peg$literalExpectation("created-by", true); - var peg$e81 = peg$literalExpectation("action", true); - var peg$e82 = peg$literalExpectation("total", true); - var peg$e83 = peg$literalExpectation("has", true); - var peg$e84 = peg$literalExpectation("is", true); - var peg$e85 = peg$literalExpectation("purchaseAmount", true); - var peg$e86 = peg$literalExpectation("purchase-amount", true); - var peg$e87 = peg$literalExpectation("purchaseCurrency", true); - var peg$e88 = peg$literalExpectation("purchase-currency", true); - var peg$e89 = peg$literalExpectation("amountDebited", true); - var peg$e90 = peg$literalExpectation("amount-debited", true); - var peg$e91 = peg$literalExpectation("amountReimbursed", true); - var peg$e92 = peg$literalExpectation("amount-reimbursed", true); - var peg$e93 = peg$literalExpectation("columns", true); - var peg$e94 = peg$literalExpectation("view", true); - var peg$e95 = peg$literalExpectation("compare", true); - var peg$e96 = peg$literalExpectation("per-diem", true); - var peg$e97 = peg$literalExpectation("drafts", true); - var peg$e98 = peg$literalExpectation("draft", true); - var peg$e99 = peg$literalExpectation("tax", true); - var peg$e100 = peg$literalExpectation("policy-name", true); - var peg$e101 = peg$literalExpectation("long-report-id", true); - var peg$e102 = peg$literalExpectation("exported-to", true); - var peg$e103 = peg$classExpectation([":", "="], false, false); - var peg$e104 = peg$literalExpectation("exportedTo", true); - var peg$e105 = peg$literalExpectation("exchange-rate", true); - var peg$e106 = peg$literalExpectation("reimbursable-total", true); - var peg$e107 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e108 = peg$literalExpectation("group-from", true); - var peg$e109 = peg$literalExpectation("group-expenses", true); - var peg$e110 = peg$literalExpectation("group-total", true); - var peg$e111 = peg$literalExpectation("group-card", true); - var peg$e112 = peg$literalExpectation("group-feed", true); - var peg$e113 = peg$literalExpectation("group-bank-account", true); - var peg$e114 = peg$literalExpectation("group-withdrawn", true); - var peg$e115 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e116 = peg$literalExpectation("group-amount-debited", true); - var peg$e117 = peg$literalExpectation("group-amount-reimbursed", true); - var peg$e118 = peg$literalExpectation("group-category", true); - var peg$e119 = peg$literalExpectation("group-tag", true); - var peg$e120 = peg$literalExpectation("group-merchant", true); - var peg$e121 = peg$literalExpectation("group-day", true); - var peg$e122 = peg$literalExpectation("group-month", true); - var peg$e123 = peg$literalExpectation("group-week", true); - var peg$e124 = peg$literalExpectation("group-year", true); - var peg$e125 = peg$literalExpectation("group-quarter", true); - var peg$e126 = peg$literalExpectation("group-violation-approver", true); - var peg$e127 = peg$literalExpectation("group-approval-count", true); - var peg$e128 = peg$literalExpectation("group-approved-total", true); - var peg$e129 = peg$otherExpectation("operator"); - var peg$e130 = peg$literalExpectation("!=", false); - var peg$e131 = peg$literalExpectation(">=", false); - var peg$e132 = peg$literalExpectation(">", false); - var peg$e133 = peg$literalExpectation("<=", false); - var peg$e134 = peg$literalExpectation("<", false); - var peg$e135 = peg$literalExpectation("\\", false); - var peg$e136 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); - var peg$e137 = peg$otherExpectation("word"); - var peg$e138 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e139 = peg$otherExpectation("whitespace"); - var peg$e140 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e141 = peg$otherExpectation("quote"); - var peg$e142 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e143 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e144 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e145 = peg$literalExpectation("\u201C", false); - var peg$e146 = peg$literalExpectation("\u201D", false); - var peg$e147 = peg$literalExpectation("\"", false); - var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e149 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e150 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e151 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e152 = peg$classExpectation([","], false, false); - var peg$e153 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e76 = peg$literalExpectation("approver", true); + var peg$e77 = peg$literalExpectation("assignee", true); + var peg$e78 = peg$literalExpectation("createdBy", true); + var peg$e79 = peg$literalExpectation("created-by", true); + var peg$e80 = peg$literalExpectation("action", true); + var peg$e81 = peg$literalExpectation("total", true); + var peg$e82 = peg$literalExpectation("has", true); + var peg$e83 = peg$literalExpectation("is", true); + var peg$e84 = peg$literalExpectation("purchaseAmount", true); + var peg$e85 = peg$literalExpectation("purchase-amount", true); + var peg$e86 = peg$literalExpectation("purchaseCurrency", true); + var peg$e87 = peg$literalExpectation("purchase-currency", true); + var peg$e88 = peg$literalExpectation("amountDebited", true); + var peg$e89 = peg$literalExpectation("amount-debited", true); + var peg$e90 = peg$literalExpectation("amountReimbursed", true); + var peg$e91 = peg$literalExpectation("amount-reimbursed", true); + var peg$e92 = peg$literalExpectation("columns", true); + var peg$e93 = peg$literalExpectation("view", true); + var peg$e94 = peg$literalExpectation("compare", true); + var peg$e95 = peg$literalExpectation("per-diem", true); + var peg$e96 = peg$literalExpectation("drafts", true); + var peg$e97 = peg$literalExpectation("draft", true); + var peg$e98 = peg$literalExpectation("tax", true); + var peg$e99 = peg$literalExpectation("policy-name", true); + var peg$e100 = peg$literalExpectation("long-report-id", true); + var peg$e101 = peg$literalExpectation("exported-to", true); + var peg$e102 = peg$classExpectation([":", "="], false, false); + var peg$e103 = peg$literalExpectation("exportedTo", true); + var peg$e104 = peg$literalExpectation("exchange-rate", true); + var peg$e105 = peg$literalExpectation("reimbursable-total", true); + var peg$e106 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e107 = peg$literalExpectation("group-from", true); + var peg$e108 = peg$literalExpectation("group-expenses", true); + var peg$e109 = peg$literalExpectation("group-total", true); + var peg$e110 = peg$literalExpectation("group-card", true); + var peg$e111 = peg$literalExpectation("group-feed", true); + var peg$e112 = peg$literalExpectation("group-bank-account", true); + var peg$e113 = peg$literalExpectation("group-withdrawn", true); + var peg$e114 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e115 = peg$literalExpectation("group-amount-debited", true); + var peg$e116 = peg$literalExpectation("group-amount-reimbursed", true); + var peg$e117 = peg$literalExpectation("group-category", true); + var peg$e118 = peg$literalExpectation("group-tag", true); + var peg$e119 = peg$literalExpectation("group-merchant", true); + var peg$e120 = peg$literalExpectation("group-day", true); + var peg$e121 = peg$literalExpectation("group-month", true); + var peg$e122 = peg$literalExpectation("group-week", true); + var peg$e123 = peg$literalExpectation("group-year", true); + var peg$e124 = peg$literalExpectation("group-quarter", true); + var peg$e125 = peg$literalExpectation("group-approver", true); + var peg$e126 = peg$otherExpectation("operator"); + var peg$e127 = peg$literalExpectation("!=", false); + var peg$e128 = peg$literalExpectation(">=", false); + var peg$e129 = peg$literalExpectation(">", false); + var peg$e130 = peg$literalExpectation("<=", false); + var peg$e131 = peg$literalExpectation("<", false); + var peg$e132 = peg$literalExpectation("\\", false); + var peg$e133 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); + var peg$e134 = peg$otherExpectation("word"); + var peg$e135 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e136 = peg$otherExpectation("whitespace"); + var peg$e137 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e138 = peg$otherExpectation("quote"); + var peg$e139 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e140 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e141 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e142 = peg$literalExpectation("\u201C", false); + var peg$e143 = peg$literalExpectation("\u201D", false); + var peg$e144 = peg$literalExpectation("\"", false); + var peg$e145 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e146 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e147 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e149 = peg$classExpectation([","], false, false); + var peg$e150 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(filters) { return applyDefaults(filters); }; var peg$f1 = function(head, tail) { @@ -620,7 +614,7 @@ function peg$parse(input, options) { var peg$f52 = function() { return "submitterUserID"; }; var peg$f53 = function() { return "submitterPayrollID"; }; var peg$f54 = function() { return "orderDealNumbers"; }; - var peg$f55 = function() { return "violationApprover"; }; + var peg$f55 = function() { return "approver"; }; var peg$f56 = function() { return "assignee"; }; var peg$f57 = function() { return "createdBy"; }; var peg$f58 = function() { return "action"; }; @@ -674,36 +668,34 @@ function peg$parse(input, options) { var peg$f103 = function() { return "groupweek"; }; var peg$f104 = function() { return "groupyear"; }; var peg$f105 = function() { return "groupquarter"; }; - var peg$f106 = function() { return "groupViolationApprover"; }; - var peg$f107 = function() { return "groupApprovalCount"; }; - var peg$f108 = function() { return "groupApprovedTotal"; }; - var peg$f109 = function() { return "eq"; }; - var peg$f110 = function() { return "neq"; }; - var peg$f111 = function() { return "gte"; }; - var peg$f112 = function() { return "gt"; }; - var peg$f113 = function() { return "lte"; }; - var peg$f114 = function() { return "lt"; }; - var peg$f115 = function(o) { + var peg$f106 = function() { return "groupApprover"; }; + var peg$f107 = function() { return "eq"; }; + var peg$f108 = function() { return "neq"; }; + var peg$f109 = function() { return "gte"; }; + var peg$f110 = function() { return "gt"; }; + var peg$f111 = function() { return "lte"; }; + var peg$f112 = function() { return "lt"; }; + var peg$f113 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f116 = function(c) { return c; }; - var peg$f117 = function(chars) { return chars.join("").trim(); }; - var peg$f118 = function() { + var peg$f114 = function(c) { return c; }; + var peg$f115 = function(chars) { return chars.join("").trim(); }; + var peg$f116 = function() { isColumnsContext = false; return "and"; }; - var peg$f119 = function() { return expectingNestedQuote; }; - var peg$f120 = function(start, inner, end) { //handle no-breaking space + var peg$f117 = function() { return expectingNestedQuote; }; + var peg$f118 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f121 = function(start) {return "“"}; - var peg$f122 = function(start) {return "”"}; - var peg$f123 = function(start) {return "\""}; - var peg$f124 = function(start, inner, end) { + var peg$f119 = function(start) {return "“"}; + var peg$f120 = function(start) {return "”"}; + var peg$f121 = function(start) {return "\""}; + var peg$f122 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -1275,7 +1267,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = peg$parseorderDealNumbers(); if (s1 === peg$FAILED) { - s1 = peg$parseviolationApprover(); + s1 = peg$parseapprover(); if (s1 === peg$FAILED) { s1 = peg$parseassignee(); if (s1 === peg$FAILED) { @@ -2668,31 +2660,22 @@ function peg$parse(input, options) { return s0; } - function peg$parseviolationApprover() { + function peg$parseapprover() { var s0, s1; - s0 = input.substr(peg$currPos, 17); - if (s0.toLowerCase() === peg$c71) { - peg$currPos += 17; + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 8); + if (s1.toLowerCase() === peg$c71) { + peg$currPos += 8; } else { - s0 = peg$FAILED; + s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e76); } } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c72) { - peg$currPos += 18; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f55(); - } - s0 = s1; + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f55(); } + s0 = s1; return s0; } @@ -2702,11 +2685,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c73) { + if (s1.toLowerCase() === peg$c72) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2721,20 +2704,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c74) { + if (s0.toLowerCase() === peg$c73) { peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c74) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2751,11 +2734,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c76) { + if (s1.toLowerCase() === peg$c75) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2771,11 +2754,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c76) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2791,11 +2774,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c78) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2811,11 +2794,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c78) { peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2830,20 +2813,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c80) { + if (s0.toLowerCase() === peg$c79) { peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2859,20 +2842,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c82) { + if (s0.toLowerCase() === peg$c81) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c82) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2888,20 +2871,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 13); - if (s0.toLowerCase() === peg$c84) { + if (s0.toLowerCase() === peg$c83) { peg$currPos += 13; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2917,20 +2900,20 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c86) { + if (s0.toLowerCase() === peg$c85) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2947,11 +2930,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c88) { + if (s1.toLowerCase() === peg$c87) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2967,11 +2950,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -2987,11 +2970,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c90) { + if (s1.toLowerCase() === peg$c89) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -3103,13 +3086,7 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$parsegroupQuarter(); if (s0 === peg$FAILED) { - s0 = peg$parsegroupViolationApprover(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupApprovalCount(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupApprovedTotal(); - } - } + s0 = peg$parsegroupApprover(); } } } @@ -3151,11 +3128,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c91) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3188,19 +3165,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c92) { + if (s1.toLowerCase() === peg$c91) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c93) { + if (s1.toLowerCase() === peg$c92) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } } if (s1 !== peg$FAILED) { @@ -3234,11 +3211,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3271,11 +3248,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c94) { + if (s1.toLowerCase() === peg$c93) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3345,11 +3322,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c94) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3456,11 +3433,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c96) { + if (s1.toLowerCase() === peg$c95) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3530,11 +3507,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3574,7 +3551,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -3593,11 +3570,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c98) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3624,11 +3601,11 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3662,11 +3639,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c98) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3699,11 +3676,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c100) { + if (s1.toLowerCase() === peg$c99) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3736,11 +3713,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c101) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3773,11 +3750,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c102) { + if (s1.toLowerCase() === peg$c101) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3810,11 +3787,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c103) { + if (s1.toLowerCase() === peg$c102) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3847,11 +3824,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c104) { + if (s1.toLowerCase() === peg$c103) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3884,11 +3861,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c105) { + if (s1.toLowerCase() === peg$c104) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3921,11 +3898,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c106) { + if (s1.toLowerCase() === peg$c105) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3958,11 +3935,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c107) { + if (s1.toLowerCase() === peg$c106) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3995,11 +3972,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c108) { + if (s1.toLowerCase() === peg$c107) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4032,11 +4009,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c109) { + if (s1.toLowerCase() === peg$c108) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4069,11 +4046,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c110) { + if (s1.toLowerCase() === peg$c109) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4106,11 +4083,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 23); - if (s1.toLowerCase() === peg$c111) { + if (s1.toLowerCase() === peg$c110) { peg$currPos += 23; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4143,11 +4120,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4180,11 +4157,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4217,11 +4194,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c112) { + if (s1.toLowerCase() === peg$c111) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4254,11 +4231,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c113) { + if (s1.toLowerCase() === peg$c112) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4291,11 +4268,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c114) { + if (s1.toLowerCase() === peg$c113) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4328,11 +4305,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c115) { + if (s1.toLowerCase() === peg$c114) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4365,11 +4342,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c116) { + if (s1.toLowerCase() === peg$c115) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4402,11 +4379,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c117) { + if (s1.toLowerCase() === peg$c116) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e122); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4439,11 +4416,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c118) { + if (s1.toLowerCase() === peg$c117) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4476,11 +4453,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c119) { + if (s1.toLowerCase() === peg$c118) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e124); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4508,16 +4485,16 @@ function peg$parse(input, options) { return s0; } - function peg$parsegroupViolationApprover() { + function peg$parsegroupApprover() { var s0, s1, s2, s3; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 24); - if (s1.toLowerCase() === peg$c120) { - peg$currPos += 24; + s1 = input.substr(peg$currPos, 14); + if (s1.toLowerCase() === peg$c119) { + peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4545,80 +4522,6 @@ function peg$parse(input, options) { return s0; } - function peg$parsegroupApprovalCount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c121) { - peg$currPos += 20; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f107(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupApprovedTotal() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c122) { - peg$currPos += 20; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f108(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - function peg$parseoperator() { var s0, s1; @@ -4629,81 +4532,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f109(); + s1 = peg$f107(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c123) { - s1 = peg$c123; + if (input.substr(peg$currPos, 2) === peg$c120) { + s1 = peg$c120; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f110(); + s1 = peg$f108(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c124) { - s1 = peg$c124; + if (input.substr(peg$currPos, 2) === peg$c121) { + s1 = peg$c121; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f111(); + s1 = peg$f109(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c125; + s1 = peg$c122; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f112(); + s1 = peg$f110(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c126) { - s1 = peg$c126; + if (input.substr(peg$currPos, 2) === peg$c123) { + s1 = peg$c123; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f113(); + s1 = peg$f111(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c127; + s1 = peg$c124; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f114(); + s1 = peg$f112(); } s0 = s1; } @@ -4714,7 +4617,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } return s0; @@ -4727,7 +4630,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f115(s1); + s1 = peg$f113(s1); } s0 = s1; @@ -4739,11 +4642,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c128; + s1 = peg$c125; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s1 !== peg$FAILED) { s2 = input.charAt(peg$currPos); @@ -4751,11 +4654,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f116(s2); + s0 = peg$f114(s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4781,7 +4684,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } } if (s2 !== peg$FAILED) { @@ -4794,7 +4697,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } } } @@ -4803,13 +4706,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f117(s1); + s1 = peg$f115(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } return s0; @@ -4821,7 +4724,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f118(); + s1 = peg$f116(); s0 = s1; return s0; @@ -4837,7 +4740,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4846,12 +4749,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } return s0; } @@ -4861,7 +4764,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f119(); + s1 = peg$f117(); if (s1) { s1 = undefined; } else { @@ -4898,7 +4801,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4907,7 +4810,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } } s2 = input.charAt(peg$currPos); @@ -4915,7 +4818,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4926,7 +4829,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } } while (s4 !== peg$FAILED) { @@ -4938,7 +4841,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } } } @@ -4947,7 +4850,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4956,7 +4859,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4965,11 +4868,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } } peg$savedPos = s0; - s0 = peg$f120(s1, s3, s5); + s0 = peg$f118(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4981,7 +4884,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } return s0; @@ -4998,7 +4901,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5007,7 +4910,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } } s2 = input.charAt(peg$currPos); @@ -5015,7 +4918,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s2 !== peg$FAILED) { s3 = []; @@ -5026,7 +4929,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -5042,15 +4945,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c129; + s6 = peg$c126; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f121(s1); + s4 = peg$f119(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5073,15 +4976,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c130; + s6 = peg$c127; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f120(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5104,15 +5007,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c131; + s6 = peg$c128; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f123(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5134,7 +5037,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -5150,15 +5053,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c129; + s6 = peg$c126; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f121(s1); + s4 = peg$f119(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5181,15 +5084,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c130; + s6 = peg$c127; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f120(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5212,15 +5115,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c131; + s6 = peg$c128; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f123(s1); + s4 = peg$f121(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5237,7 +5140,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f124(s1, s3, s4); + s0 = peg$f122(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -5249,7 +5152,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } return s0; @@ -5264,7 +5167,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -5302,7 +5205,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5311,7 +5214,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } } s2 = []; @@ -5320,7 +5223,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -5329,7 +5232,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } } s3 = []; @@ -5338,7 +5241,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -5347,7 +5250,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } } s4 = peg$parseoperator(); @@ -5366,7 +5269,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e151); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5375,7 +5278,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e151); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } } s2 = peg$currPos; @@ -5422,7 +5325,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e152); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } } } @@ -5438,7 +5341,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e153); } + if (peg$silentFails === 0) { peg$fail(peg$e150); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -5475,7 +5378,7 @@ function peg$parse(input, options) { week: "groupweek", year: "groupyear", quarter: "groupquarter", - "violation-approver": "groupExpenses", + approver: "groupExpenses", }; const GROUP_BY_DEFAULT_SORT_ORDER = { @@ -5490,7 +5393,7 @@ function peg$parse(input, options) { week: "desc", year: "desc", quarter: "desc", - "violation-approver": "desc", + approver: "desc", }; const TIME_BASED_GROUP_BY = new Set(["day", "week", "month", "year", "quarter"]); diff --git a/src/libs/SearchParser/searchParser.peggy b/src/libs/SearchParser/searchParser.peggy index 0b6318140f0a..6fddf0e3702b 100644 --- a/src/libs/SearchParser/searchParser.peggy +++ b/src/libs/SearchParser/searchParser.peggy @@ -40,7 +40,7 @@ week: "groupweek", year: "groupyear", quarter: "groupquarter", - "violation-approver": "groupExpenses", + approver: "groupExpenses", }; const GROUP_BY_DEFAULT_SORT_ORDER = { @@ -55,7 +55,7 @@ week: "desc", year: "desc", quarter: "desc", - "violation-approver": "desc", + approver: "desc", }; const TIME_BASED_GROUP_BY = new Set(["day", "week", "month", "year", "quarter"]); @@ -300,7 +300,7 @@ key "key" / submitterUserID / submitterPayrollID / orderDealNumbers - / violationApprover + / approver / assignee / createdBy / reimbursable diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 84228f198067..d469b7de148d 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -13,6 +13,7 @@ import type { ReportActionListItemType, SearchListItem, TaskListItemType, + TransactionApproverGroupListItemType, TransactionCardGroupListItemType, TransactionCategoryGroupListItemType, TransactionDayGroupListItemType, @@ -24,7 +25,6 @@ import type { TransactionQuarterGroupListItemType, TransactionReportGroupListItemType, TransactionTagGroupListItemType, - TransactionViolationApproverGroupListItemType, TransactionWeekGroupListItemType, TransactionWithdrawalIDGroupListItemType, TransactionYearGroupListItemType, @@ -279,7 +279,7 @@ type TransactionMonthGroupSorting = ColumnSortMapping; type TransactionYearGroupSorting = ColumnSortMapping; type TransactionQuarterGroupSorting = ColumnSortMapping; -type TransactionViolationApproverGroupSorting = ColumnSortMapping; +type TransactionApproverGroupSorting = ColumnSortMapping; type GetReportSectionsParams = { data: OnyxTypes.SearchResults['data']; @@ -449,11 +449,9 @@ const transactionQuarterGroupColumnNamesToSortingProperty: TransactionQuarterGro ...transactionGroupBaseSortingProperties, }; -const transactionViolationApproverGroupColumnNamesToSortingProperty: TransactionViolationApproverGroupSorting = { +const transactionApproverGroupColumnNamesToSortingProperty: TransactionApproverGroupSorting = { [CONST.SEARCH.TABLE_COLUMNS.AVATAR]: null, - [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER]: 'formattedViolationApprover' as const, - [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT]: 'approvalCount' as const, - [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL]: 'total' as const, + [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER]: 'formattedApprover' as const, ...transactionGroupBaseSortingProperties, }; @@ -967,8 +965,8 @@ function isTransactionQuarterGroupListItemType(item: ListItem): item is Transact return isTransactionGroupListItemType(item) && 'groupedBy' in item && item.groupedBy === CONST.SEARCH.GROUP_BY.QUARTER; } -function isTransactionViolationApproverGroupListItemType(item: ListItem): item is TransactionViolationApproverGroupListItemType { - return isTransactionGroupListItemType(item) && 'groupedBy' in item && item.groupedBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER; +function isTransactionApproverGroupListItemType(item: ListItem): item is TransactionApproverGroupListItemType { + return isTransactionGroupListItemType(item) && 'groupedBy' in item && item.groupedBy === CONST.SEARCH.GROUP_BY.APPROVER; } /** @@ -3030,6 +3028,12 @@ function getSelectedGroupFilterEntry(groupBy: string, groupData: unknown): {key: switch (groupBy) { case CONST.SEARCH.GROUP_BY.FROM: return {key: CONST.SEARCH.SYNTAX_FILTER_KEYS.FROM, value: (groupData as SearchMemberGroup).accountID}; + case CONST.SEARCH.GROUP_BY.APPROVER: { + if (!groupData || typeof groupData !== 'object' || !('accountID' in groupData) || typeof groupData.accountID !== 'number') { + return undefined; + } + return {key: CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER, value: groupData.accountID}; + } case CONST.SEARCH.GROUP_BY.CARD: return {key: CONST.SEARCH.SYNTAX_FILTER_KEYS.CARD_ID, value: (groupData as SearchCardGroup).cardID}; case CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID: @@ -3174,9 +3178,9 @@ function getActiveGroupSearchHashes(data: OnyxTypes.SearchResults['data'] | unde } break; } - case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: { - if ('approvalCount' in group && typeof group.accountID === 'number') { - transactionsQueryJSON = buildViolationApproverGroupQuery(queryJSON, group.accountID); + case CONST.SEARCH.GROUP_BY.APPROVER: { + if ('accountID' in group && typeof group.accountID === 'number') { + transactionsQueryJSON = buildApproverGroupQuery(queryJSON, group.accountID); } break; } @@ -3216,8 +3220,8 @@ function buildDateRangeGroupQuery(queryJSON: SearchQueryJSON, dateRange: {start: return {transactionsQueryJSON, start, end}; } -function buildViolationApproverGroupQuery(queryJSON: SearchQueryJSON, accountID: number): SearchQueryJSON | undefined { - return buildSpecificGroupQuery(queryJSON, CONST.SEARCH.SYNTAX_FILTER_KEYS.VIOLATION_APPROVER, accountID); +function buildApproverGroupQuery(queryJSON: SearchQueryJSON, accountID: number): SearchQueryJSON | undefined { + return buildSpecificGroupQuery(queryJSON, CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER, accountID); } /** @@ -3729,43 +3733,43 @@ function getQuarterSections( } /** - * Organizes data into List Sections grouped by violation approver for display. + * Organizes data into List Sections grouped by approver for display. * * Do not use directly, use only via `getSections()` facade. */ -function getViolationApproverSections( +function getApproverSections( data: OnyxTypes.SearchResults['data'], queryJSON: SearchQueryJSON | undefined, formatPhoneNumber: LocaleContextProps['formatPhoneNumber'], translate: LocalizedTranslate, onyxPersonalDetailsList?: OnyxTypes.PersonalDetailsList, -): [TransactionViolationApproverGroupListItemType[], number, boolean] { - const violationApproverSections: Record = {}; +): [TransactionApproverGroupListItemType[], number, boolean] { + const approverSections: Record = {}; for (const key in data) { if (isGroupEntry(key)) { - const violationApproverGroup = data[key]; - if (!('accountID' in violationApproverGroup) || !violationApproverGroup.accountID || !('approvalCount' in violationApproverGroup)) { + const approverGroup = data[key]; + if (!('accountID' in approverGroup) || !approverGroup.accountID) { continue; } - const personalDetails = data.personalDetailsList?.[violationApproverGroup.accountID] ?? onyxPersonalDetailsList?.[violationApproverGroup.accountID] ?? emptyPersonalDetails; - const transactionsQueryJSON = queryJSON ? buildViolationApproverGroupQuery(queryJSON, violationApproverGroup.accountID) : undefined; + const personalDetails = data.personalDetailsList?.[approverGroup.accountID] ?? onyxPersonalDetailsList?.[approverGroup.accountID] ?? emptyPersonalDetails; + const transactionsQueryJSON = queryJSON ? buildApproverGroupQuery(queryJSON, approverGroup.accountID) : undefined; - violationApproverSections[key] = { - groupedBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, + approverSections[key] = { + groupedBy: CONST.SEARCH.GROUP_BY.APPROVER, transactions: [], transactionsQueryJSON, ...personalDetails, - ...violationApproverGroup, - formattedViolationApprover: temporaryGetDisplayNameOrDefault({passedPersonalDetails: personalDetails, translate, formatPhoneNumber}), + ...approverGroup, + formattedApprover: temporaryGetDisplayNameOrDefault({passedPersonalDetails: personalDetails, translate, formatPhoneNumber}), keyForList: key, }; } } - const violationApproverSectionsValues = Object.values(violationApproverSections); - return [violationApproverSectionsValues, violationApproverSectionsValues.length, hasDeletedTransactionInData(data)]; + const approverSectionsValues = Object.values(approverSections); + return [approverSectionsValues, approverSectionsValues.length, hasDeletedTransactionInData(data)]; } /** @@ -3853,8 +3857,8 @@ function getSections({ return getYearSections(data, queryJSON); case CONST.SEARCH.GROUP_BY.QUARTER: return getQuarterSections(data, queryJSON, dateFnsLocale); - case CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER: - return getViolationApproverSections(data, queryJSON, formatPhoneNumber, translate, onyxPersonalDetailsList); + case CONST.SEARCH.GROUP_BY.APPROVER: + return getApproverSections(data, queryJSON, formatPhoneNumber, translate, onyxPersonalDetailsList); } } @@ -3913,9 +3917,8 @@ const groupBySortFunction: Record = { [CONST.SEARCH.GROUP_BY.WEEK]: createGroupSortFunction(transactionWeekGroupColumnNamesToSortingProperty, (a, b, lc) => lc(a.week, b.week)), [CONST.SEARCH.GROUP_BY.YEAR]: createGroupSortFunction(transactionYearGroupColumnNamesToSortingProperty, (a, b) => a.year - b.year), [CONST.SEARCH.GROUP_BY.QUARTER]: createGroupSortFunction(transactionQuarterGroupColumnNamesToSortingProperty, (a, b) => a.sortKey - b.sortKey), - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: createGroupSortFunction( - transactionViolationApproverGroupColumnNamesToSortingProperty, - (a, b, lc) => lc(a.formattedViolationApprover ?? '', b.formattedViolationApprover ?? ''), + [CONST.SEARCH.GROUP_BY.APPROVER]: createGroupSortFunction(transactionApproverGroupColumnNamesToSortingProperty, (a, b, lc) => + lc(a.formattedApprover ?? '', b.formattedApprover ?? ''), ), }; @@ -3931,7 +3934,7 @@ const groupByRequiredColumns: Partial>((value) => ({text: translate(`search.filters.sortOrder.${value}`), value})); } -function getGroupBySections(translate: LocalizedTranslate, queryJSON?: SearchQueryJSON): GroupBySection[] { +function getGroupBySections(translate: LocalizedTranslate): GroupBySection[] { const getOption = (groupBy: SearchGroupBy): SingleSelectItem => ({ text: translate(`search.filters.groupBy.${groupBy}`), value: groupBy, }); - const {value: hasValues, isNegated} = getFilterFromQuery(queryJSON, CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS); - const shouldIncludeViolationApprover = !isNegated && !!hasValues?.includes(CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION); const sections: Array> = [ { - options: [getOption(CONST.SEARCH.GROUP_BY.FROM), getOption(CONST.SEARCH.GROUP_BY.CARD)], + options: [getOption(CONST.SEARCH.GROUP_BY.FROM), getOption(CONST.SEARCH.GROUP_BY.CARD), getOption(CONST.SEARCH.GROUP_BY.APPROVER)], }, { options: [getOption(CONST.SEARCH.GROUP_BY.CATEGORY), getOption(CONST.SEARCH.GROUP_BY.MERCHANT), getOption(CONST.SEARCH.GROUP_BY.TAG)], @@ -5438,12 +5435,6 @@ function getGroupBySections(translate: LocalizedTranslate, queryJSON?: SearchQue }, ]; - if (shouldIncludeViolationApprover) { - sections.push({ - options: [getOption(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER)], - }); - } - return sections.map((section, sectionIndex) => ({ ...section, sectionIndex, @@ -6610,7 +6601,7 @@ function getColumnsToShow({ [CONST.SEARCH.GROUP_BY.WEEK]: CONST.SEARCH.GROUP_CUSTOM_COLUMNS.WEEK, [CONST.SEARCH.GROUP_BY.YEAR]: CONST.SEARCH.GROUP_CUSTOM_COLUMNS.YEAR, [CONST.SEARCH.GROUP_BY.QUARTER]: CONST.SEARCH.GROUP_CUSTOM_COLUMNS.QUARTER, - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: CONST.SEARCH.GROUP_CUSTOM_COLUMNS.VIOLATION_APPROVER, + [CONST.SEARCH.GROUP_BY.APPROVER]: CONST.SEARCH.GROUP_CUSTOM_COLUMNS.APPROVER, }[groupBy]; const defaultCustomColumns = { @@ -6625,7 +6616,7 @@ function getColumnsToShow({ [CONST.SEARCH.GROUP_BY.WEEK]: CONST.SEARCH.GROUP_DEFAULT_COLUMNS.WEEK, [CONST.SEARCH.GROUP_BY.YEAR]: CONST.SEARCH.GROUP_DEFAULT_COLUMNS.YEAR, [CONST.SEARCH.GROUP_BY.QUARTER]: CONST.SEARCH.GROUP_DEFAULT_COLUMNS.QUARTER, - [CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER]: CONST.SEARCH.GROUP_DEFAULT_COLUMNS.VIOLATION_APPROVER, + [CONST.SEARCH.GROUP_BY.APPROVER]: CONST.SEARCH.GROUP_DEFAULT_COLUMNS.APPROVER, }[groupBy]; const filteredVisibleColumns = customColumns ? visibleColumns.filter((column) => Object.values(customColumns).includes(column as ValueOf)) : []; @@ -7415,7 +7406,7 @@ function isTransactionMatchWithGroupItem(transaction: OnyxTypes.Transaction, gro const transactionQuarter = Math.floor((transactionMonth - 1) / 3) + 1; return transactionYear === quarterGroup.year && transactionQuarter === quarterGroup.quarter; } - if (groupBy === CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER) { + if (groupBy === CONST.SEARCH.GROUP_BY.APPROVER) { return !!transaction.transactionID; } return false; @@ -7443,7 +7434,7 @@ export { isTransactionWeekGroupListItemType, isTransactionYearGroupListItemType, isTransactionQuarterGroupListItemType, - isTransactionViolationApproverGroupListItemType, + isTransactionApproverGroupListItemType, isGroupedItemArray, isGroupEntry, isReportEntry, diff --git a/src/styles/utils/index.ts b/src/styles/utils/index.ts index 844c254ec5ea..d55df68e28d1 100644 --- a/src/styles/utils/index.ts +++ b/src/styles/utils/index.ts @@ -2089,7 +2089,6 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({ break; case CONST.SEARCH.TABLE_COLUMNS.EXPENSES: case CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES: - case CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT: columnWidth = {...getWidthStyle(variables.w130)}; break; case CONST.SEARCH.TABLE_COLUMNS.GROUP_AMOUNT_DEBITED: @@ -2104,7 +2103,6 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({ case CONST.SEARCH.TABLE_COLUMNS.ORIGINAL_AMOUNT: case CONST.SEARCH.TABLE_COLUMNS.TOTAL_AMOUNT: case CONST.SEARCH.TABLE_COLUMNS.GROUP_TOTAL: - case CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL: case CONST.SEARCH.TABLE_COLUMNS.TOTAL_PER_ATTENDEE: case CONST.SEARCH.TABLE_COLUMNS.TOTAL: columnWidth = { @@ -2154,7 +2152,7 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({ case CONST.SEARCH.TABLE_COLUMNS.GROUP_WITHDRAWAL_ID: case CONST.SEARCH.TABLE_COLUMNS.GROUP_CARD: case CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM: - case CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER: + case CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER: case CONST.SEARCH.TABLE_COLUMNS.FEED: case CONST.SEARCH.TABLE_COLUMNS.BANK_ACCOUNT: case CONST.SEARCH.TABLE_COLUMNS.WITHDRAWAL_ID: diff --git a/src/types/onyx/SearchResults.ts b/src/types/onyx/SearchResults.ts index 81e370d0360c..6a7e11326566 100644 --- a/src/types/onyx/SearchResults.ts +++ b/src/types/onyx/SearchResults.ts @@ -279,13 +279,10 @@ type SearchQuarterGroup = SearchGroupBase & { quarter: number; }; -/** Model of violation-approver grouped search result */ -type SearchViolationApproverGroup = SearchGroupBase & { - /** Account ID of the approver who approved the violation */ +/** Model of approver grouped search result */ +type SearchApproverGroup = SearchGroupBase & { + /** Account ID of the approver */ accountID: number; - - /** How many expenses this approver approved */ - approvalCount: number; }; /** SearchResultDataType */ @@ -310,7 +307,7 @@ type SearchResultDataType = PrefixedRecord; /** Model of search results */ @@ -346,5 +343,5 @@ export type { SearchWeekGroup, SearchYearGroup, SearchQuarterGroup, - SearchViolationApproverGroup, + SearchApproverGroup, }; diff --git a/tests/unit/Search/ColumnAvailabilityTest.ts b/tests/unit/Search/ColumnAvailabilityTest.ts index a283ab9c77cf..1694b60b6e58 100644 --- a/tests/unit/Search/ColumnAvailabilityTest.ts +++ b/tests/unit/Search/ColumnAvailabilityTest.ts @@ -60,9 +60,7 @@ describe('Column availability single source of truth', () => { TABLE_COLUMNS.GROUP_WITHDRAWAL_STATUS, TABLE_COLUMNS.GROUP_AMOUNT_DEBITED, TABLE_COLUMNS.GROUP_AMOUNT_REIMBURSED, - TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, - TABLE_COLUMNS.GROUP_APPROVAL_COUNT, - TABLE_COLUMNS.GROUP_APPROVED_TOTAL, + TABLE_COLUMNS.GROUP_APPROVER, ]); test('every TABLE_COLUMNS value is classified in COLUMN_AVAILABILITY or owned by another surface', () => { diff --git a/tests/unit/Search/SearchQueryUtilsTest.ts b/tests/unit/Search/SearchQueryUtilsTest.ts index 05d17a5ddb6c..056aed6ba25b 100644 --- a/tests/unit/Search/SearchQueryUtilsTest.ts +++ b/tests/unit/Search/SearchQueryUtilsTest.ts @@ -3331,26 +3331,26 @@ describe('SearchQueryUtils', () => { expect(queryJSON?.sortOrder).toBe(CONST.SEARCH.SORT_ORDER.DESC); }); - test('switching to violation-approver from the Display menu derives sort-by:group-expenses and sort-order:desc', () => { + test('switching to approver from the Display menu derives sort-by:group-expenses and sort-order:desc', () => { // Given a category grouping whose sort is the category default - // When the Display menu switches group by to violation approver + // When the Display menu switches group by to approver const result = buildFilterQueryWithSortDefaults( - {type: 'expense', groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, view: CONST.SEARCH.VIEW.TABLE}, + {type: 'expense', groupBy: CONST.SEARCH.GROUP_BY.APPROVER, view: CONST.SEARCH.VIEW.TABLE}, {view: CONST.SEARCH.VIEW.TABLE, groupBy: CONST.SEARCH.GROUP_BY.CATEGORY}, {sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_CATEGORY, sortOrder: CONST.SEARCH.SORT_ORDER.ASC}, ); const queryJSON = buildSearchQueryJSON(result ?? ''); - // Then the parser re-derives the violation-approver defaults from GROUP_BY_DEFAULT_SORT and GROUP_BY_DEFAULT_SORT_ORDER + // Then the parser re-derives the approver defaults from GROUP_BY_DEFAULT_SORT and GROUP_BY_DEFAULT_SORT_ORDER expect(queryJSON?.sortBy).toBe(CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES); expect(queryJSON?.sortOrder).toBe(CONST.SEARCH.SORT_ORDER.DESC); }); }); - describe('group-by:violation-approver parser round trip', () => { - test('round-trips group-by:violation-approver and a customized group column list', () => { - // Given a query that groups by violation approver and customizes the new group columns - const query = `type:expense group-by:${CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER} columns:group-violation-approver,group-approval-count,group-approved-total`; + describe('group-by:approver parser round trip', () => { + test('round-trips group-by:approver and a customized group column list', () => { + // Given a query that groups by approver and customizes the group columns + const query = `type:expense group-by:${CONST.SEARCH.GROUP_BY.APPROVER} columns:group-approver,group-expenses,group-total`; // When it is parsed and then rebuilt into a query string and parsed again const parsed = buildSearchQueryJSON(query); @@ -3358,12 +3358,8 @@ describe('SearchQueryUtils', () => { const roundTripped = buildSearchQueryJSON(rebuilt); // Then the group by and customized columns survive the round trip - expect(roundTripped?.groupBy).toBe(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER); - expect(roundTripped?.columns).toEqual([ - CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, - CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, - CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL, - ]); + expect(roundTripped?.groupBy).toBe(CONST.SEARCH.GROUP_BY.APPROVER); + expect(roundTripped?.columns).toEqual([CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER, CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES, CONST.SEARCH.TABLE_COLUMNS.GROUP_TOTAL]); }); }); diff --git a/tests/unit/Search/SearchUIUtilsTest.ts b/tests/unit/Search/SearchUIUtilsTest.ts index 15f0f5300014..838dc946eb6c 100644 --- a/tests/unit/Search/SearchUIUtilsTest.ts +++ b/tests/unit/Search/SearchUIUtilsTest.ts @@ -749,19 +749,18 @@ const searchResultsGroupByCategory: OnyxTypes.SearchResults = { }, }; -const violationApproverAccountID = 22982540; -const searchResultsGroupByViolationApprover: OnyxTypes.SearchResults = { +const groupedApproverAccountID = 22982540; +const searchResultsGroupByApprover: OnyxTypes.SearchResults = { data: { personalDetailsList: { - [violationApproverAccountID]: { - accountID: violationApproverAccountID, + [groupedApproverAccountID]: { + accountID: groupedApproverAccountID, displayName: 'Approver', login: 'approver@policy.com', }, }, - [`${CONST.SEARCH.GROUP_PREFIX}${violationApproverAccountID}` as const]: { - accountID: violationApproverAccountID, - approvalCount: 3, + [`${CONST.SEARCH.GROUP_PREFIX}${groupedApproverAccountID}` as const]: { + accountID: groupedApproverAccountID, count: 3, currency: 'USD', total: 150, @@ -3989,56 +3988,47 @@ describe('SearchUIUtils', () => { expect(categorySection.transactionsQueryJSON?.inputQuery).not.toContain('limit:'); }); - it('should build a violationApprover drill-down for a violation-approver group', () => { - // Given a violation-approver grouped query whose limit is meant to bound how many groups are shown - const parsedQuery = buildSearchQueryJSON(`type:expense has:approved-violation group-by:${CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER} limit:10`); + it('should build an approver drill-down for an approver group', () => { + // Given an approver-grouped query whose limit is meant to bound how many groups are shown + const parsedQuery = buildSearchQueryJSON(`type:expense group-by:${CONST.SEARCH.GROUP_BY.APPROVER} limit:10`); if (!parsedQuery) { - throw new Error('Failed to parse violation-approver grouped search query'); + throw new Error('Failed to parse approver grouped search query'); } expect(parsedQuery.limit).toBe(10); - // When the violation-approver sections are built + // When the approver sections are built const [sections] = getSectionsByType( SearchUIUtils.getSections({ dateFnsLocale: undefined, type: CONST.SEARCH.DATA_TYPES.EXPENSE, - data: searchResultsGroupByViolationApprover.data, + data: searchResultsGroupByApprover.data, currentAccountID: 2074551, currentUserEmail: '', translate: translateLocal, formatPhoneNumber, bankAccountList: {}, rules: undefined, - groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, + groupBy: CONST.SEARCH.GROUP_BY.APPROVER, conciergeReportID: undefined, convertToDisplayString, reportAttributesDerivedValue: {}, queryJSON: {...parsedQuery}, }), - SearchUIUtils.isTransactionViolationApproverGroupListItemType, + SearchUIUtils.isTransactionApproverGroupListItemType, ); - // Then the per-group query drops the grouping and limit, keeps has:approved-violation, - // and filters by the approver as a syntax filter - const violationApproverSection = sections.at(0); - if (!violationApproverSection) { - throw new Error('Expected a violation-approver group section'); + // Then the per-group query drops the grouping and limit, and filters by the approver as a syntax filter + const approverSection = sections.at(0); + if (!approverSection) { + throw new Error('Expected an approver group section'); } - expect(violationApproverSection.transactionsQueryJSON?.groupBy).toBeUndefined(); - expect(violationApproverSection.transactionsQueryJSON?.limit).toBeUndefined(); - expect(violationApproverSection.transactionsQueryJSON?.inputQuery).not.toContain('limit:'); - expect(violationApproverSection.transactionsQueryJSON?.filters).toEqual({ - operator: CONST.SEARCH.SYNTAX_OPERATORS.AND, - left: { - operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, - left: CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS, - right: CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION, - }, - right: { - operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, - left: CONST.SEARCH.SYNTAX_FILTER_KEYS.VIOLATION_APPROVER, - right: String(violationApproverAccountID), - }, + expect(approverSection.transactionsQueryJSON?.groupBy).toBeUndefined(); + expect(approverSection.transactionsQueryJSON?.limit).toBeUndefined(); + expect(approverSection.transactionsQueryJSON?.inputQuery).not.toContain('limit:'); + expect(approverSection.transactionsQueryJSON?.filters).toEqual({ + operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, + left: CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER, + right: String(groupedApproverAccountID), }); }); @@ -15412,37 +15402,20 @@ describe('hasFilterContentValuesChanged', () => { }); describe('getGroupBySections', () => { - function getGroupByValues(query: string) { - const queryJSON = buildSearchQueryJSON(query); - return SearchUIUtils.getGroupBySections(translateLocal, queryJSON) + function getGroupByValues() { + return SearchUIUtils.getGroupBySections(translateLocal) .flatMap((section) => section.options) .map((option) => option.value); } - it('offers violation approver only when the query carries a non-negated has:approved-violation', () => { - // Given a spend query that includes has:approved-violation - // When the Display menu builds its group-by sections - const options = getGroupByValues(`type:expense has:${CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION}`); - - // Then violation approver is offered because Auth accepts that grouping - expect(options).toContain(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER); - }); - - it('does not offer violation approver when the query has no approved-violation filter', () => { - // Given a spend query without has:approved-violation - // When the Display menu builds its group-by sections - const options = getGroupByValues('type:expense'); - - // Then violation approver is omitted so the UI cannot send a grouping Auth would reject - expect(options).not.toContain(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER); - }); - - it('does not offer violation approver when has:approved-violation is negated', () => { - // Given a spend query that excludes approved violations - // When the Display menu builds its group-by sections - const options = getGroupByValues(`type:expense -has:${CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION}`); + it('always offers approver grouping alongside from and card', () => { + // Given the Display menu group-by sections + // When they are built + const options = getGroupByValues(); - // Then violation approver is omitted because Auth only accepts the positive has filter - expect(options).not.toContain(CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER); + // Then approver is offered with the other person groupings, with no has-filter requirement + expect(options).toContain(CONST.SEARCH.GROUP_BY.FROM); + expect(options).toContain(CONST.SEARCH.GROUP_BY.CARD); + expect(options).toContain(CONST.SEARCH.GROUP_BY.APPROVER); }); }); diff --git a/tests/unit/SearchParserTest.ts b/tests/unit/SearchParserTest.ts index 10ae66b7ed61..84a3a5726d34 100644 --- a/tests/unit/SearchParserTest.ts +++ b/tests/unit/SearchParserTest.ts @@ -849,30 +849,30 @@ const tests = [ }, }, { - query: 'type:expense group-by:violation-approver', + query: 'type:expense group-by:approver', expected: { type: CONST.SEARCH.DATA_TYPES.EXPENSE, sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, view: 'table', - groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, + groupBy: CONST.SEARCH.GROUP_BY.APPROVER, filters: null, }, }, { - query: 'type:expense group-by:violation-approver columns:group-violation-approver,group-approval-count,group-approved-total', + query: 'type:expense group-by:approver columns:group-approver,group-expenses,group-total', expected: { type: CONST.SEARCH.DATA_TYPES.EXPENSE, sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, view: 'table', - groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, - columns: [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT, CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVED_TOTAL], + groupBy: CONST.SEARCH.GROUP_BY.APPROVER, + columns: [CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVER, CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES, CONST.SEARCH.TABLE_COLUMNS.GROUP_TOTAL], filters: null, }, }, { - query: 'type:expense has:approved-violation violation-approver:22982540', + query: 'type:expense has:approved-violation approver:22982540', expected: { type: CONST.SEARCH.DATA_TYPES.EXPENSE, sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, @@ -887,7 +887,7 @@ const tests = [ }, right: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, - left: CONST.SEARCH.SYNTAX_FILTER_KEYS.VIOLATION_APPROVER, + left: CONST.SEARCH.SYNTAX_FILTER_KEYS.APPROVER, right: '22982540', }, }, diff --git a/tests/unit/TransactionGroupListItemTest.tsx b/tests/unit/TransactionGroupListItemTest.tsx index f690abcbf5f5..dd7157dff5e6 100644 --- a/tests/unit/TransactionGroupListItemTest.tsx +++ b/tests/unit/TransactionGroupListItemTest.tsx @@ -61,7 +61,7 @@ jest.mock('@libs/SearchUIUtils', () => ({ getGroupTableScrollLayout: jest.fn(() => ({dataColumns: [], minTableWidth: 0, shouldScrollHorizontally: false})), getViolationsForTransaction: jest.fn(() => ''), isTransactionDayGroupListItemType: jest.fn((item: Record) => item.groupedBy === 'day'), - isTransactionViolationApproverGroupListItemType: jest.fn((item: Record) => item.groupedBy === 'violation-approver'), + isTransactionApproverGroupListItemType: jest.fn((item: Record) => item.groupedBy === 'approver'), })); jest.mock('@react-navigation/native', () => ({ diff --git a/tests/unit/hooks/useUpdateFilterQuery.test.ts b/tests/unit/hooks/useUpdateFilterQuery.test.ts index 7097bc202252..d4df7ec92cb0 100644 --- a/tests/unit/hooks/useUpdateFilterQuery.test.ts +++ b/tests/unit/hooks/useUpdateFilterQuery.test.ts @@ -101,26 +101,4 @@ describe('useUpdateFilterQuery', () => { expect(getSetParamsCall()).not.toHaveProperty('searchKey'); }); }); - - describe('getUpdatedFilterFormValues', () => { - it('clears groupBy and columns when approved-violation is removed from the has filter', () => { - // Given a query grouped by violation approver with a customized column list - const {result} = renderHook(() => useUpdateFilterQuery(queryJSON)); - - // When approved-violation is removed from the has filter - const updated = result.current.getUpdatedFilterFormValues( - { - type: CONST.SEARCH.DATA_TYPES.EXPENSE, - groupBy: CONST.SEARCH.GROUP_BY.VIOLATION_APPROVER, - has: [CONST.SEARCH.HAS_VALUES.APPROVED_VIOLATION], - columns: [CONST.SEARCH.TABLE_COLUMNS.GROUP_VIOLATION_APPROVER, CONST.SEARCH.TABLE_COLUMNS.GROUP_APPROVAL_COUNT], - }, - {has: []}, - ); - - // Then both the group by and the columns are cleared so Auth is not sent a grouping it would reject - expect(updated.groupBy).toBeUndefined(); - expect(updated.columns).toEqual([]); - }); - }); }); From 80da9de19389355a5c8e9fe7798f833e4d0cf252 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Fri, 16 Oct 2026 20:14:46 +0700 Subject: [PATCH 09/11] Revert unintended Mobile-Expensify submodule change --- Mobile-Expensify | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mobile-Expensify b/Mobile-Expensify index 903b4645c4e9..01c8999192c6 160000 --- a/Mobile-Expensify +++ b/Mobile-Expensify @@ -1 +1 @@ -Subproject commit 903b4645c4e95b2a637d496db39b940292b84804 +Subproject commit 01c8999192c60d2883b6a93e8c28d4b9ee9db7af From 0dcd22c8ec4cb39a06c07f79a8de2006588a20e3 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Wed, 21 Oct 2026 21:26:43 +0700 Subject: [PATCH 10/11] run parser --- src/libs/SearchParser/autocompleteParser.js | 988 +++++++++--------- src/libs/SearchParser/searchParser.js | 1010 ++++++++++--------- 2 files changed, 1045 insertions(+), 953 deletions(-) diff --git a/src/libs/SearchParser/autocompleteParser.js b/src/libs/SearchParser/autocompleteParser.js index a4c40c1129f2..d7628a2cae11 100644 --- a/src/libs/SearchParser/autocompleteParser.js +++ b/src/libs/SearchParser/autocompleteParser.js @@ -258,69 +258,71 @@ function peg$parse(input, options) { var peg$c72 = "submitter-payroll-id"; var peg$c73 = "orderdealnumbers"; var peg$c74 = "order-deal-numbers"; - var peg$c75 = "assignee"; - var peg$c76 = "createdby"; - var peg$c77 = "created-by"; - var peg$c78 = "action"; - var peg$c79 = "total"; - var peg$c80 = "has"; - var peg$c81 = "is"; - var peg$c82 = "purchaseamount"; - var peg$c83 = "purchase-amount"; - var peg$c84 = "purchasecurrency"; - var peg$c85 = "purchase-currency"; - var peg$c86 = "amountdebited"; - var peg$c87 = "amount-debited"; - var peg$c88 = "amountreimbursed"; - var peg$c89 = "amount-reimbursed"; - var peg$c90 = "columns"; - var peg$c91 = "view"; - var peg$c92 = "compare"; - var peg$c93 = "per-diem"; - var peg$c94 = "drafts"; - var peg$c95 = "draft"; - var peg$c96 = "tax"; - var peg$c97 = "policy-name"; - var peg$c98 = "long-report-id"; - var peg$c99 = "exported-to"; - var peg$c100 = "exportedto"; - var peg$c101 = "exchange-rate"; - var peg$c102 = "reimbursable-total"; - var peg$c103 = "non-reimbursable-total"; - var peg$c104 = "group-from"; - var peg$c105 = "group-expenses"; - var peg$c106 = "group-total"; - var peg$c107 = "group-card"; - var peg$c108 = "group-feed"; - var peg$c109 = "group-bank-account"; - var peg$c110 = "group-withdrawn"; - var peg$c111 = "group-withdrawal-id"; - var peg$c112 = "group-amount-debited"; - var peg$c113 = "group-amount-reimbursed"; - var peg$c114 = "group-category"; - var peg$c115 = "group-tag"; - var peg$c116 = "group-merchant"; - var peg$c117 = "group-day"; - var peg$c118 = "group-month"; - var peg$c119 = "group-week"; - var peg$c120 = "group-year"; - var peg$c121 = "group-quarter"; - var peg$c122 = "*:"; - var peg$c123 = "!="; - var peg$c124 = ">="; - var peg$c125 = ">"; - var peg$c126 = "<="; - var peg$c127 = "<"; - var peg$c128 = "\\"; - var peg$c129 = "\u201C"; - var peg$c130 = "\u201D"; - var peg$c131 = "\""; - var peg$c132 = "footercount"; - var peg$c133 = "footer-count"; - var peg$c134 = "footercurrency"; - var peg$c135 = "footer-currency"; - var peg$c136 = "footertotal"; - var peg$c137 = "footer-total"; + var peg$c75 = "approver"; + var peg$c76 = "assignee"; + var peg$c77 = "createdby"; + var peg$c78 = "created-by"; + var peg$c79 = "action"; + var peg$c80 = "total"; + var peg$c81 = "has"; + var peg$c82 = "is"; + var peg$c83 = "purchaseamount"; + var peg$c84 = "purchase-amount"; + var peg$c85 = "purchasecurrency"; + var peg$c86 = "purchase-currency"; + var peg$c87 = "amountdebited"; + var peg$c88 = "amount-debited"; + var peg$c89 = "amountreimbursed"; + var peg$c90 = "amount-reimbursed"; + var peg$c91 = "columns"; + var peg$c92 = "view"; + var peg$c93 = "compare"; + var peg$c94 = "per-diem"; + var peg$c95 = "drafts"; + var peg$c96 = "draft"; + var peg$c97 = "tax"; + var peg$c98 = "policy-name"; + var peg$c99 = "long-report-id"; + var peg$c100 = "exported-to"; + var peg$c101 = "exportedto"; + var peg$c102 = "exchange-rate"; + var peg$c103 = "reimbursable-total"; + var peg$c104 = "non-reimbursable-total"; + var peg$c105 = "group-from"; + var peg$c106 = "group-expenses"; + var peg$c107 = "group-total"; + var peg$c108 = "group-card"; + var peg$c109 = "group-feed"; + var peg$c110 = "group-bank-account"; + var peg$c111 = "group-withdrawn"; + var peg$c112 = "group-withdrawal-id"; + var peg$c113 = "group-amount-debited"; + var peg$c114 = "group-amount-reimbursed"; + var peg$c115 = "group-category"; + var peg$c116 = "group-tag"; + var peg$c117 = "group-merchant"; + var peg$c118 = "group-day"; + var peg$c119 = "group-month"; + var peg$c120 = "group-week"; + var peg$c121 = "group-year"; + var peg$c122 = "group-quarter"; + var peg$c123 = "group-approver"; + var peg$c124 = "*:"; + var peg$c125 = "!="; + var peg$c126 = ">="; + var peg$c127 = ">"; + var peg$c128 = "<="; + var peg$c129 = "<"; + var peg$c130 = "\\"; + var peg$c131 = "\u201C"; + var peg$c132 = "\u201D"; + var peg$c133 = "\""; + var peg$c134 = "footercount"; + var peg$c135 = "footer-count"; + var peg$c136 = "footercurrency"; + var peg$c137 = "footer-currency"; + var peg$c138 = "footertotal"; + var peg$c139 = "footer-total"; var peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; var peg$r1 = /^[:=]/; @@ -415,86 +417,88 @@ function peg$parse(input, options) { var peg$e75 = peg$literalExpectation("submitter-payroll-id", true); var peg$e76 = peg$literalExpectation("orderDealNumbers", true); var peg$e77 = peg$literalExpectation("order-deal-numbers", true); - var peg$e78 = peg$literalExpectation("assignee", true); - var peg$e79 = peg$literalExpectation("createdBy", true); - var peg$e80 = peg$literalExpectation("created-by", true); - var peg$e81 = peg$literalExpectation("action", true); - var peg$e82 = peg$literalExpectation("total", true); - var peg$e83 = peg$literalExpectation("has", true); - var peg$e84 = peg$literalExpectation("is", true); - var peg$e85 = peg$literalExpectation("purchaseAmount", true); - var peg$e86 = peg$literalExpectation("purchase-amount", true); - var peg$e87 = peg$literalExpectation("purchaseCurrency", true); - var peg$e88 = peg$literalExpectation("purchase-currency", true); - var peg$e89 = peg$literalExpectation("amountDebited", true); - var peg$e90 = peg$literalExpectation("amount-debited", true); - var peg$e91 = peg$literalExpectation("amountReimbursed", true); - var peg$e92 = peg$literalExpectation("amount-reimbursed", true); - var peg$e93 = peg$literalExpectation("columns", true); - var peg$e94 = peg$literalExpectation("view", true); - var peg$e95 = peg$literalExpectation("compare", true); - var peg$e96 = peg$literalExpectation("per-diem", true); - var peg$e97 = peg$literalExpectation("drafts", true); - var peg$e98 = peg$literalExpectation("draft", true); - var peg$e99 = peg$literalExpectation("tax", true); - var peg$e100 = peg$literalExpectation("policy-name", true); - var peg$e101 = peg$literalExpectation("long-report-id", true); - var peg$e102 = peg$literalExpectation("exported-to", true); - var peg$e103 = peg$classExpectation([":", "="], false, false); - var peg$e104 = peg$literalExpectation("exportedTo", true); - var peg$e105 = peg$literalExpectation("exchange-rate", true); - var peg$e106 = peg$literalExpectation("reimbursable-total", true); - var peg$e107 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e108 = peg$literalExpectation("group-from", true); - var peg$e109 = peg$literalExpectation("group-expenses", true); - var peg$e110 = peg$literalExpectation("group-total", true); - var peg$e111 = peg$literalExpectation("group-card", true); - var peg$e112 = peg$literalExpectation("group-feed", true); - var peg$e113 = peg$literalExpectation("group-bank-account", true); - var peg$e114 = peg$literalExpectation("group-withdrawn", true); - var peg$e115 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e116 = peg$literalExpectation("group-amount-debited", true); - var peg$e117 = peg$literalExpectation("group-amount-reimbursed", true); - var peg$e118 = peg$literalExpectation("group-category", true); - var peg$e119 = peg$literalExpectation("group-tag", true); - var peg$e120 = peg$literalExpectation("group-merchant", true); - var peg$e121 = peg$literalExpectation("group-day", true); - var peg$e122 = peg$literalExpectation("group-month", true); - var peg$e123 = peg$literalExpectation("group-week", true); - var peg$e124 = peg$literalExpectation("group-year", true); - var peg$e125 = peg$literalExpectation("group-quarter", true); - var peg$e126 = peg$otherExpectation("operator"); - var peg$e127 = peg$literalExpectation("*:", false); - var peg$e128 = peg$literalExpectation("!=", false); - var peg$e129 = peg$literalExpectation(">=", false); - var peg$e130 = peg$literalExpectation(">", false); - var peg$e131 = peg$literalExpectation("<=", false); - var peg$e132 = peg$literalExpectation("<", false); - var peg$e133 = peg$literalExpectation("\\", false); - var peg$e134 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); - var peg$e135 = peg$otherExpectation("word"); - var peg$e136 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e137 = peg$otherExpectation("whitespace"); - var peg$e138 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e139 = peg$otherExpectation("quote"); - var peg$e140 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e141 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e142 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e143 = peg$literalExpectation("\u201C", false); - var peg$e144 = peg$literalExpectation("\u201D", false); - var peg$e145 = peg$literalExpectation("\"", false); - var peg$e146 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e147 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e149 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e150 = peg$classExpectation([","], false, false); - var peg$e151 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); - var peg$e152 = peg$literalExpectation("footerCount", true); - var peg$e153 = peg$literalExpectation("footer-count", true); - var peg$e154 = peg$literalExpectation("footerCurrency", true); - var peg$e155 = peg$literalExpectation("footer-currency", true); - var peg$e156 = peg$literalExpectation("footerTotal", true); - var peg$e157 = peg$literalExpectation("footer-total", true); + var peg$e78 = peg$literalExpectation("approver", true); + var peg$e79 = peg$literalExpectation("assignee", true); + var peg$e80 = peg$literalExpectation("createdBy", true); + var peg$e81 = peg$literalExpectation("created-by", true); + var peg$e82 = peg$literalExpectation("action", true); + var peg$e83 = peg$literalExpectation("total", true); + var peg$e84 = peg$literalExpectation("has", true); + var peg$e85 = peg$literalExpectation("is", true); + var peg$e86 = peg$literalExpectation("purchaseAmount", true); + var peg$e87 = peg$literalExpectation("purchase-amount", true); + var peg$e88 = peg$literalExpectation("purchaseCurrency", true); + var peg$e89 = peg$literalExpectation("purchase-currency", true); + var peg$e90 = peg$literalExpectation("amountDebited", true); + var peg$e91 = peg$literalExpectation("amount-debited", true); + var peg$e92 = peg$literalExpectation("amountReimbursed", true); + var peg$e93 = peg$literalExpectation("amount-reimbursed", true); + var peg$e94 = peg$literalExpectation("columns", true); + var peg$e95 = peg$literalExpectation("view", true); + var peg$e96 = peg$literalExpectation("compare", true); + var peg$e97 = peg$literalExpectation("per-diem", true); + var peg$e98 = peg$literalExpectation("drafts", true); + var peg$e99 = peg$literalExpectation("draft", true); + var peg$e100 = peg$literalExpectation("tax", true); + var peg$e101 = peg$literalExpectation("policy-name", true); + var peg$e102 = peg$literalExpectation("long-report-id", true); + var peg$e103 = peg$literalExpectation("exported-to", true); + var peg$e104 = peg$classExpectation([":", "="], false, false); + var peg$e105 = peg$literalExpectation("exportedTo", true); + var peg$e106 = peg$literalExpectation("exchange-rate", true); + var peg$e107 = peg$literalExpectation("reimbursable-total", true); + var peg$e108 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e109 = peg$literalExpectation("group-from", true); + var peg$e110 = peg$literalExpectation("group-expenses", true); + var peg$e111 = peg$literalExpectation("group-total", true); + var peg$e112 = peg$literalExpectation("group-card", true); + var peg$e113 = peg$literalExpectation("group-feed", true); + var peg$e114 = peg$literalExpectation("group-bank-account", true); + var peg$e115 = peg$literalExpectation("group-withdrawn", true); + var peg$e116 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e117 = peg$literalExpectation("group-amount-debited", true); + var peg$e118 = peg$literalExpectation("group-amount-reimbursed", true); + var peg$e119 = peg$literalExpectation("group-category", true); + var peg$e120 = peg$literalExpectation("group-tag", true); + var peg$e121 = peg$literalExpectation("group-merchant", true); + var peg$e122 = peg$literalExpectation("group-day", true); + var peg$e123 = peg$literalExpectation("group-month", true); + var peg$e124 = peg$literalExpectation("group-week", true); + var peg$e125 = peg$literalExpectation("group-year", true); + var peg$e126 = peg$literalExpectation("group-quarter", true); + var peg$e127 = peg$literalExpectation("group-approver", true); + var peg$e128 = peg$otherExpectation("operator"); + var peg$e129 = peg$literalExpectation("*:", false); + var peg$e130 = peg$literalExpectation("!=", false); + var peg$e131 = peg$literalExpectation(">=", false); + var peg$e132 = peg$literalExpectation(">", false); + var peg$e133 = peg$literalExpectation("<=", false); + var peg$e134 = peg$literalExpectation("<", false); + var peg$e135 = peg$literalExpectation("\\", false); + var peg$e136 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); + var peg$e137 = peg$otherExpectation("word"); + var peg$e138 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e139 = peg$otherExpectation("whitespace"); + var peg$e140 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e141 = peg$otherExpectation("quote"); + var peg$e142 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e143 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e144 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e145 = peg$literalExpectation("\u201C", false); + var peg$e146 = peg$literalExpectation("\u201D", false); + var peg$e147 = peg$literalExpectation("\"", false); + var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e149 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e150 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e151 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e152 = peg$classExpectation([","], false, false); + var peg$e153 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e154 = peg$literalExpectation("footerCount", true); + var peg$e155 = peg$literalExpectation("footer-count", true); + var peg$e156 = peg$literalExpectation("footerCurrency", true); + var peg$e157 = peg$literalExpectation("footer-currency", true); + var peg$e158 = peg$literalExpectation("footerTotal", true); + var peg$e159 = peg$literalExpectation("footer-total", true); var peg$f0 = function(ranges) { return { autocomplete, ranges }; }; var peg$f1 = function(filters) { return filters.filter(Boolean).flat(); }; @@ -616,92 +620,94 @@ function peg$parse(input, options) { var peg$f56 = function() { return "submitterUserID"; }; var peg$f57 = function() { return "submitterPayrollID"; }; var peg$f58 = function() { return "orderDealNumbers"; }; - var peg$f59 = function() { return "assignee"; }; - var peg$f60 = function() { return "createdBy"; }; - var peg$f61 = function() { return "action"; }; - var peg$f62 = function() {return "total"; }; - var peg$f63 = function() {return "has"; }; - var peg$f64 = function() {return "is"; }; - var peg$f65 = function() {return "purchaseAmount"}; - var peg$f66 = function() {return "purchaseCurrency"}; - var peg$f67 = function() {return "amountDebited"}; - var peg$f68 = function() {return "amountReimbursed"}; - var peg$f69 = function() { + var peg$f59 = function() { return "approver"; }; + var peg$f60 = function() { return "assignee"; }; + var peg$f61 = function() { return "createdBy"; }; + var peg$f62 = function() { return "action"; }; + var peg$f63 = function() {return "total"; }; + var peg$f64 = function() {return "has"; }; + var peg$f65 = function() {return "is"; }; + var peg$f66 = function() {return "purchaseAmount"}; + var peg$f67 = function() {return "purchaseCurrency"}; + var peg$f68 = function() {return "amountDebited"}; + var peg$f69 = function() {return "amountReimbursed"}; + var peg$f70 = function() { isColumnsContext = true; return "columns"; }; - var peg$f70 = function() {return "view"}; - var peg$f71 = function() {return "compare"}; - var peg$f72 = function() { return isColumnsContext; }; - var peg$f73 = function() { return "perDiem"; }; - var peg$f74 = function() { return "drafts"; }; - var peg$f75 = function() { return "originalamount"; }; - var peg$f76 = function() { return "taxAmount"; }; - var peg$f77 = function() { return "taxrate"; }; - var peg$f78 = function() { return "policyname"; }; - var peg$f79 = function() { return "withdrawalID"; }; - var peg$f80 = function() { return "bankAccount"; }; - var peg$f81 = function() { return "reportID"; }; - var peg$f82 = function() { return "base62ReportID"; }; - var peg$f83 = function() { return "exportedto"; }; - var peg$f84 = function() { return "exportedTo"; }; + var peg$f71 = function() {return "view"}; + var peg$f72 = function() {return "compare"}; + var peg$f73 = function() { return isColumnsContext; }; + var peg$f74 = function() { return "perDiem"; }; + var peg$f75 = function() { return "drafts"; }; + var peg$f76 = function() { return "originalamount"; }; + var peg$f77 = function() { return "taxAmount"; }; + var peg$f78 = function() { return "taxrate"; }; + var peg$f79 = function() { return "policyname"; }; + var peg$f80 = function() { return "withdrawalID"; }; + var peg$f81 = function() { return "bankAccount"; }; + var peg$f82 = function() { return "reportID"; }; + var peg$f83 = function() { return "base62ReportID"; }; + var peg$f84 = function() { return "exportedto"; }; var peg$f85 = function() { return "exportedTo"; }; - var peg$f86 = function() { return "exchangeRate"; }; - var peg$f87 = function() { return "reimbursableTotal"; }; - var peg$f88 = function() { return "nonReimbursableTotal"; }; - var peg$f89 = function() { return "groupFrom"; }; - var peg$f90 = function() { return "groupExpenses"; }; - var peg$f91 = function() { return "groupTotal"; }; - var peg$f92 = function() { return "groupCard"; }; - var peg$f93 = function() { return "groupFeed"; }; - var peg$f94 = function() { return "groupBankAccount"; }; - var peg$f95 = function() { return "groupWithdrawn"; }; - var peg$f96 = function() { return "groupWithdrawalID"; }; - var peg$f97 = function() { return "groupAmountDebited"; }; - var peg$f98 = function() { return "groupAmountReimbursed"; }; - var peg$f99 = function() { return "amountDebited"; }; - var peg$f100 = function() { return "amountReimbursed"; }; - var peg$f101 = function() { return "groupCategory"; }; - var peg$f102 = function() { return "groupTag"; }; - var peg$f103 = function() { return "groupMerchant"; }; - var peg$f104 = function() { return "groupday"; }; - var peg$f105 = function() { return "groupmonth"; }; - var peg$f106 = function() { return "groupweek"; }; - var peg$f107 = function() { return "groupyear"; }; - var peg$f108 = function() { return "groupquarter"; }; - var peg$f109 = function() { return "contains"; }; - var peg$f110 = function() { return "eq"; }; - var peg$f111 = function() { return "neq"; }; - var peg$f112 = function() { return "gte"; }; - var peg$f113 = function() { return "gt"; }; - var peg$f114 = function() { return "lte"; }; - var peg$f115 = function() { return "lt"; }; - var peg$f116 = function(o) { + var peg$f86 = function() { return "exportedTo"; }; + var peg$f87 = function() { return "exchangeRate"; }; + var peg$f88 = function() { return "reimbursableTotal"; }; + var peg$f89 = function() { return "nonReimbursableTotal"; }; + var peg$f90 = function() { return "groupFrom"; }; + var peg$f91 = function() { return "groupExpenses"; }; + var peg$f92 = function() { return "groupTotal"; }; + var peg$f93 = function() { return "groupCard"; }; + var peg$f94 = function() { return "groupFeed"; }; + var peg$f95 = function() { return "groupBankAccount"; }; + var peg$f96 = function() { return "groupWithdrawn"; }; + var peg$f97 = function() { return "groupWithdrawalID"; }; + var peg$f98 = function() { return "groupAmountDebited"; }; + var peg$f99 = function() { return "groupAmountReimbursed"; }; + var peg$f100 = function() { return "amountDebited"; }; + var peg$f101 = function() { return "amountReimbursed"; }; + var peg$f102 = function() { return "groupCategory"; }; + var peg$f103 = function() { return "groupTag"; }; + var peg$f104 = function() { return "groupMerchant"; }; + var peg$f105 = function() { return "groupday"; }; + var peg$f106 = function() { return "groupmonth"; }; + var peg$f107 = function() { return "groupweek"; }; + var peg$f108 = function() { return "groupyear"; }; + var peg$f109 = function() { return "groupquarter"; }; + var peg$f110 = function() { return "groupApprover"; }; + var peg$f111 = function() { return "contains"; }; + var peg$f112 = function() { return "eq"; }; + var peg$f113 = function() { return "neq"; }; + var peg$f114 = function() { return "gte"; }; + var peg$f115 = function() { return "gt"; }; + var peg$f116 = function() { return "lte"; }; + var peg$f117 = function() { return "lt"; }; + var peg$f118 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq" || o === "contains"); } isColumnsContext = false; return o; }; - var peg$f117 = function(c) { return c; }; - var peg$f118 = function(chars) { return chars.join("").trim(); }; - var peg$f119 = function() { + var peg$f119 = function(c) { return c; }; + var peg$f120 = function(chars) { return chars.join("").trim(); }; + var peg$f121 = function() { isColumnsContext = false; return "and"; }; - var peg$f120 = function() { return expectingNestedQuote; }; - var peg$f121 = function(start, inner, end) { //handle no-breaking space + var peg$f122 = function() { return expectingNestedQuote; }; + var peg$f123 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f122 = function(start) {return "“"}; - var peg$f123 = function(start) {return "”"}; - var peg$f124 = function(start) {return "\""}; - var peg$f125 = function(start, inner, end) { + var peg$f124 = function(start) {return "“"}; + var peg$f125 = function(start) {return "”"}; + var peg$f126 = function(start) {return "\""}; + var peg$f127 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; - var peg$f126 = function() { return "footerCount"; }; - var peg$f127 = function() { return "footerCurrency"; }; - var peg$f128 = function() { return "footerTotal"; }; + var peg$f128 = function() { return "footerCount"; }; + var peg$f129 = function() { return "footerCurrency"; }; + var peg$f130 = function() { return "footerTotal"; }; var peg$currPos = options.peg$currPos | 0; var peg$savedPos = peg$currPos; var peg$posDetailsCache = [{ line: 1, column: 1 }]; @@ -1228,17 +1234,20 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = peg$parseorderDealNumbers(); if (s1 === peg$FAILED) { - s1 = peg$parsereportFieldDynamic(); + s1 = peg$parseapprover(); if (s1 === peg$FAILED) { - s1 = peg$parsecolumns(); + s1 = peg$parsereportFieldDynamic(); if (s1 === peg$FAILED) { - s1 = peg$parselimit(); + s1 = peg$parsecolumns(); if (s1 === peg$FAILED) { - s1 = peg$parsefooterCount(); + s1 = peg$parselimit(); if (s1 === peg$FAILED) { - s1 = peg$parsefooterCurrency(); + s1 = peg$parsefooterCount(); if (s1 === peg$FAILED) { - s1 = peg$parsefooterTotal(); + s1 = peg$parsefooterCurrency(); + if (s1 === peg$FAILED) { + s1 = peg$parsefooterTotal(); + } } } } @@ -2624,15 +2633,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c76) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f59(); + s1 = peg$f60(); } s0 = s1; @@ -2643,24 +2652,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c76) { + if (s0.toLowerCase() === peg$c77) { peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c78) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f60(); + s1 = peg$f61(); } s0 = s1; } @@ -2673,15 +2682,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c78) { + if (s1.toLowerCase() === peg$c79) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f61(); + s1 = peg$f62(); } s0 = s1; @@ -2693,15 +2702,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f62(); + s1 = peg$f63(); } s0 = s1; @@ -2713,15 +2722,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c80) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f63(); + s1 = peg$f64(); } s0 = s1; @@ -2733,15 +2742,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c82) { peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f64(); + s1 = peg$f65(); } s0 = s1; @@ -2752,24 +2761,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c82) { + if (s0.toLowerCase() === peg$c83) { peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f65(); + s1 = peg$f66(); } s0 = s1; } @@ -2781,24 +2790,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c84) { + if (s0.toLowerCase() === peg$c85) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f66(); + s1 = peg$f67(); } s0 = s1; } @@ -2810,24 +2819,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 13); - if (s0.toLowerCase() === peg$c86) { + if (s0.toLowerCase() === peg$c87) { peg$currPos += 13; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f67(); + s1 = peg$f68(); } s0 = s1; } @@ -2839,24 +2848,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c88) { + if (s0.toLowerCase() === peg$c89) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f68(); + s1 = peg$f69(); } s0 = s1; } @@ -2869,15 +2878,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c90) { + if (s1.toLowerCase() === peg$c91) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f69(); + s1 = peg$f70(); } s0 = s1; @@ -2889,15 +2898,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c91) { + if (s1.toLowerCase() === peg$c92) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f70(); + s1 = peg$f71(); } s0 = s1; @@ -2909,15 +2918,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c92) { + if (s1.toLowerCase() === peg$c93) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f71(); + s1 = peg$f72(); } s0 = s1; @@ -2929,7 +2938,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f72(); + s1 = peg$f73(); if (s1) { s1 = undefined; } else { @@ -3067,11 +3076,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c93) { + if (s1.toLowerCase() === peg$c94) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3086,7 +3095,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f73(); + s0 = peg$f74(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3104,19 +3113,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c94) { + if (s1.toLowerCase() === peg$c95) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } } if (s1 !== peg$FAILED) { @@ -3132,7 +3141,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f74(); + s0 = peg$f75(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3150,11 +3159,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3169,7 +3178,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f75(); + s0 = peg$f76(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3187,11 +3196,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c96) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3206,7 +3215,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f76(); + s0 = peg$f77(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3243,7 +3252,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f77(); + s0 = peg$f78(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3261,11 +3270,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c98) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3280,7 +3289,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f78(); + s0 = peg$f79(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3317,7 +3326,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f79(); + s0 = peg$f80(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3354,7 +3363,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f80(); + s0 = peg$f81(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3372,11 +3381,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c98) { + if (s1.toLowerCase() === peg$c99) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3391,7 +3400,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f81(); + s0 = peg$f82(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3428,7 +3437,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f82(); + s0 = peg$f83(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3446,11 +3455,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3465,7 +3474,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f83(); + s0 = peg$f84(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3490,7 +3499,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -3509,11 +3518,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c100) { + if (s1.toLowerCase() === peg$c101) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3528,7 +3537,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f84(); + s0 = peg$f85(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3540,11 +3549,11 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3559,7 +3568,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f85(); + s0 = peg$f86(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3578,11 +3587,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c101) { + if (s1.toLowerCase() === peg$c102) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3597,7 +3606,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f86(); + s0 = peg$f87(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3615,11 +3624,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c102) { + if (s1.toLowerCase() === peg$c103) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3634,7 +3643,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f87(); + s0 = peg$f88(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3652,11 +3661,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c103) { + if (s1.toLowerCase() === peg$c104) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3671,7 +3680,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f88(); + s0 = peg$f89(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3689,11 +3698,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c104) { + if (s1.toLowerCase() === peg$c105) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3708,7 +3717,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f89(); + s0 = peg$f90(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3726,11 +3735,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c105) { + if (s1.toLowerCase() === peg$c106) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3745,7 +3754,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f90(); + s0 = peg$f91(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3763,11 +3772,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c106) { + if (s1.toLowerCase() === peg$c107) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3782,7 +3791,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f91(); + s0 = peg$f92(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3800,11 +3809,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c107) { + if (s1.toLowerCase() === peg$c108) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3819,7 +3828,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f92(); + s0 = peg$f93(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3837,11 +3846,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c108) { + if (s1.toLowerCase() === peg$c109) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3856,7 +3865,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f93(); + s0 = peg$f94(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3874,11 +3883,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c109) { + if (s1.toLowerCase() === peg$c110) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3893,7 +3902,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f94(); + s0 = peg$f95(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3911,11 +3920,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c110) { + if (s1.toLowerCase() === peg$c111) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3930,7 +3939,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f95(); + s0 = peg$f96(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3948,11 +3957,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c111) { + if (s1.toLowerCase() === peg$c112) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3967,7 +3976,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f96(); + s0 = peg$f97(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3985,11 +3994,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c112) { + if (s1.toLowerCase() === peg$c113) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4004,7 +4013,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f97(); + s0 = peg$f98(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4022,11 +4031,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 23); - if (s1.toLowerCase() === peg$c113) { + if (s1.toLowerCase() === peg$c114) { peg$currPos += 23; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4041,7 +4050,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f98(); + s0 = peg$f99(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4059,11 +4068,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4078,7 +4087,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f99(); + s0 = peg$f100(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4096,11 +4105,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4115,7 +4124,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f100(); + s0 = peg$f101(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4133,11 +4142,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c114) { + if (s1.toLowerCase() === peg$c115) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4152,7 +4161,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f101(); + s0 = peg$f102(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4170,11 +4179,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c115) { + if (s1.toLowerCase() === peg$c116) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4189,7 +4198,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f102(); + s0 = peg$f103(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4207,11 +4216,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c116) { + if (s1.toLowerCase() === peg$c117) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4226,7 +4235,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f103(); + s0 = peg$f104(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4244,11 +4253,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c117) { + if (s1.toLowerCase() === peg$c118) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e122); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4263,7 +4272,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f104(); + s0 = peg$f105(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4281,11 +4290,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c118) { + if (s1.toLowerCase() === peg$c119) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4300,7 +4309,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f105(); + s0 = peg$f106(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4318,11 +4327,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c119) { + if (s1.toLowerCase() === peg$c120) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e124); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4337,7 +4346,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f106(); + s0 = peg$f107(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4355,11 +4364,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c120) { + if (s1.toLowerCase() === peg$c121) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4374,7 +4383,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f107(); + s0 = peg$f108(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4392,11 +4401,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c121) { + if (s1.toLowerCase() === peg$c122) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4411,7 +4420,44 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f108(); + s0 = peg$f109(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupApprover() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 14); + if (s1.toLowerCase() === peg$c123) { + peg$currPos += 14; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e127); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f110(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4429,16 +4475,16 @@ function peg$parse(input, options) { peg$silentFails++; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c122) { - s1 = peg$c122; + if (input.substr(peg$currPos, 2) === peg$c124) { + s1 = peg$c124; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e129); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f109(); + s1 = peg$f111(); } s0 = s1; if (s0 === peg$FAILED) { @@ -4448,81 +4494,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f110(); + s1 = peg$f112(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c123) { - s1 = peg$c123; + if (input.substr(peg$currPos, 2) === peg$c125) { + s1 = peg$c125; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f111(); + s1 = peg$f113(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c124) { - s1 = peg$c124; + if (input.substr(peg$currPos, 2) === peg$c126) { + s1 = peg$c126; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f112(); + s1 = peg$f114(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c125; + s1 = peg$c127; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f113(); + s1 = peg$f115(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c126) { - s1 = peg$c126; + if (input.substr(peg$currPos, 2) === peg$c128) { + s1 = peg$c128; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f114(); + s1 = peg$f116(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c127; + s1 = peg$c129; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f115(); + s1 = peg$f117(); } s0 = s1; } @@ -4534,7 +4580,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } return s0; @@ -4547,7 +4593,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f116(s1); + s1 = peg$f118(s1); } s0 = s1; @@ -4559,11 +4605,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c128; + s1 = peg$c130; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } if (s1 !== peg$FAILED) { s2 = input.charAt(peg$currPos); @@ -4571,11 +4617,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f117(s2); + s0 = peg$f119(s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4601,7 +4647,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } if (s2 !== peg$FAILED) { @@ -4614,7 +4660,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } } @@ -4623,13 +4669,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f118(s1); + s1 = peg$f120(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } return s0; @@ -4641,7 +4687,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f119(); + s1 = peg$f121(); s0 = s1; return s0; @@ -4657,7 +4703,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4666,12 +4712,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } return s0; } @@ -4681,7 +4727,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f120(); + s1 = peg$f122(); if (s1) { s1 = undefined; } else { @@ -4718,7 +4764,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4727,7 +4773,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } } s2 = input.charAt(peg$currPos); @@ -4735,7 +4781,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4746,7 +4792,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } } while (s4 !== peg$FAILED) { @@ -4758,7 +4804,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } } } @@ -4767,7 +4813,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4776,7 +4822,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4785,11 +4831,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } } peg$savedPos = s0; - s0 = peg$f121(s1, s3, s5); + s0 = peg$f123(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4801,7 +4847,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } return s0; @@ -4818,7 +4864,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4827,7 +4873,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } } s2 = input.charAt(peg$currPos); @@ -4835,7 +4881,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4846,7 +4892,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4862,15 +4908,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c129; + s6 = peg$c131; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f124(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4893,15 +4939,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c130; + s6 = peg$c132; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f123(s1); + s4 = peg$f125(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4924,15 +4970,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c131; + s6 = peg$c133; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f124(s1); + s4 = peg$f126(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4954,7 +5000,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4970,15 +5016,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c129; + s6 = peg$c131; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f122(s1); + s4 = peg$f124(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5001,15 +5047,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c130; + s6 = peg$c132; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f123(s1); + s4 = peg$f125(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5032,15 +5078,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c131; + s6 = peg$c133; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f124(s1); + s4 = peg$f126(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5057,7 +5103,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f125(s1, s3, s4); + s0 = peg$f127(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -5069,7 +5115,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } return s0; @@ -5084,7 +5130,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -5122,7 +5168,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5131,7 +5177,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } } s2 = []; @@ -5140,7 +5186,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -5149,7 +5195,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } } s3 = []; @@ -5158,7 +5204,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e150); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -5167,7 +5213,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e150); } } } s4 = peg$parseoperator(); @@ -5186,7 +5232,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e151); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5195,7 +5241,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e151); } } } s2 = peg$currPos; @@ -5242,7 +5288,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e152); } } } } @@ -5258,7 +5304,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e151); } + if (peg$silentFails === 0) { peg$fail(peg$e153); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -5287,24 +5333,24 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c132) { + if (s1.toLowerCase() === peg$c134) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e152); } + if (peg$silentFails === 0) { peg$fail(peg$e154); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c133) { + if (s1.toLowerCase() === peg$c135) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e153); } + if (peg$silentFails === 0) { peg$fail(peg$e155); } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f126(); + s1 = peg$f128(); } s0 = s1; @@ -5316,24 +5362,24 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c134) { + if (s1.toLowerCase() === peg$c136) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e154); } + if (peg$silentFails === 0) { peg$fail(peg$e156); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c135) { + if (s1.toLowerCase() === peg$c137) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e155); } + if (peg$silentFails === 0) { peg$fail(peg$e157); } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f127(); + s1 = peg$f129(); } s0 = s1; @@ -5345,24 +5391,24 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c136) { + if (s1.toLowerCase() === peg$c138) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e156); } + if (peg$silentFails === 0) { peg$fail(peg$e158); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c137) { + if (s1.toLowerCase() === peg$c139) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e157); } + if (peg$silentFails === 0) { peg$fail(peg$e159); } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f128(); + s1 = peg$f130(); } s0 = s1; diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index 6218e3e6ef09..57dab6a90d22 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -259,69 +259,71 @@ function peg$parse(input, options) { var peg$c72 = "submitter-payroll-id"; var peg$c73 = "orderdealnumbers"; var peg$c74 = "order-deal-numbers"; - var peg$c75 = "assignee"; - var peg$c76 = "createdby"; - var peg$c77 = "created-by"; - var peg$c78 = "action"; - var peg$c79 = "total"; - var peg$c80 = "has"; - var peg$c81 = "is"; - var peg$c82 = "purchaseamount"; - var peg$c83 = "purchase-amount"; - var peg$c84 = "purchasecurrency"; - var peg$c85 = "purchase-currency"; - var peg$c86 = "amountdebited"; - var peg$c87 = "amount-debited"; - var peg$c88 = "amountreimbursed"; - var peg$c89 = "amount-reimbursed"; - var peg$c90 = "columns"; - var peg$c91 = "view"; - var peg$c92 = "compare"; - var peg$c93 = "per-diem"; - var peg$c94 = "drafts"; - var peg$c95 = "draft"; - var peg$c96 = "tax"; - var peg$c97 = "policy-name"; - var peg$c98 = "long-report-id"; - var peg$c99 = "exported-to"; - var peg$c100 = "exportedto"; - var peg$c101 = "exchange-rate"; - var peg$c102 = "reimbursable-total"; - var peg$c103 = "non-reimbursable-total"; - var peg$c104 = "group-from"; - var peg$c105 = "group-expenses"; - var peg$c106 = "group-total"; - var peg$c107 = "group-card"; - var peg$c108 = "group-feed"; - var peg$c109 = "group-bank-account"; - var peg$c110 = "group-withdrawn"; - var peg$c111 = "group-withdrawal-id"; - var peg$c112 = "group-amount-debited"; - var peg$c113 = "group-amount-reimbursed"; - var peg$c114 = "group-category"; - var peg$c115 = "group-tag"; - var peg$c116 = "group-merchant"; - var peg$c117 = "group-day"; - var peg$c118 = "group-month"; - var peg$c119 = "group-week"; - var peg$c120 = "group-year"; - var peg$c121 = "group-quarter"; - var peg$c122 = "*:"; - var peg$c123 = "!="; - var peg$c124 = ">="; - var peg$c125 = ">"; - var peg$c126 = "<="; - var peg$c127 = "<"; - var peg$c128 = "\\"; - var peg$c129 = "\u201C"; - var peg$c130 = "\u201D"; - var peg$c131 = "\""; - var peg$c132 = "footercount"; - var peg$c133 = "footer-count"; - var peg$c134 = "footercurrency"; - var peg$c135 = "footer-currency"; - var peg$c136 = "footertotal"; - var peg$c137 = "footer-total"; + var peg$c75 = "approver"; + var peg$c76 = "assignee"; + var peg$c77 = "createdby"; + var peg$c78 = "created-by"; + var peg$c79 = "action"; + var peg$c80 = "total"; + var peg$c81 = "has"; + var peg$c82 = "is"; + var peg$c83 = "purchaseamount"; + var peg$c84 = "purchase-amount"; + var peg$c85 = "purchasecurrency"; + var peg$c86 = "purchase-currency"; + var peg$c87 = "amountdebited"; + var peg$c88 = "amount-debited"; + var peg$c89 = "amountreimbursed"; + var peg$c90 = "amount-reimbursed"; + var peg$c91 = "columns"; + var peg$c92 = "view"; + var peg$c93 = "compare"; + var peg$c94 = "per-diem"; + var peg$c95 = "drafts"; + var peg$c96 = "draft"; + var peg$c97 = "tax"; + var peg$c98 = "policy-name"; + var peg$c99 = "long-report-id"; + var peg$c100 = "exported-to"; + var peg$c101 = "exportedto"; + var peg$c102 = "exchange-rate"; + var peg$c103 = "reimbursable-total"; + var peg$c104 = "non-reimbursable-total"; + var peg$c105 = "group-from"; + var peg$c106 = "group-expenses"; + var peg$c107 = "group-total"; + var peg$c108 = "group-card"; + var peg$c109 = "group-feed"; + var peg$c110 = "group-bank-account"; + var peg$c111 = "group-withdrawn"; + var peg$c112 = "group-withdrawal-id"; + var peg$c113 = "group-amount-debited"; + var peg$c114 = "group-amount-reimbursed"; + var peg$c115 = "group-category"; + var peg$c116 = "group-tag"; + var peg$c117 = "group-merchant"; + var peg$c118 = "group-day"; + var peg$c119 = "group-month"; + var peg$c120 = "group-week"; + var peg$c121 = "group-year"; + var peg$c122 = "group-quarter"; + var peg$c123 = "group-approver"; + var peg$c124 = "*:"; + var peg$c125 = "!="; + var peg$c126 = ">="; + var peg$c127 = ">"; + var peg$c128 = "<="; + var peg$c129 = "<"; + var peg$c130 = "\\"; + var peg$c131 = "\u201C"; + var peg$c132 = "\u201D"; + var peg$c133 = "\""; + var peg$c134 = "footercount"; + var peg$c135 = "footer-count"; + var peg$c136 = "footercurrency"; + var peg$c137 = "footer-currency"; + var peg$c138 = "footertotal"; + var peg$c139 = "footer-total"; var peg$r0 = /^[^ \t\r\n\xA0]/; var peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; @@ -419,86 +421,88 @@ function peg$parse(input, options) { var peg$e77 = peg$literalExpectation("submitter-payroll-id", true); var peg$e78 = peg$literalExpectation("orderDealNumbers", true); var peg$e79 = peg$literalExpectation("order-deal-numbers", true); - var peg$e80 = peg$literalExpectation("assignee", true); - var peg$e81 = peg$literalExpectation("createdBy", true); - var peg$e82 = peg$literalExpectation("created-by", true); - var peg$e83 = peg$literalExpectation("action", true); - var peg$e84 = peg$literalExpectation("total", true); - var peg$e85 = peg$literalExpectation("has", true); - var peg$e86 = peg$literalExpectation("is", true); - var peg$e87 = peg$literalExpectation("purchaseAmount", true); - var peg$e88 = peg$literalExpectation("purchase-amount", true); - var peg$e89 = peg$literalExpectation("purchaseCurrency", true); - var peg$e90 = peg$literalExpectation("purchase-currency", true); - var peg$e91 = peg$literalExpectation("amountDebited", true); - var peg$e92 = peg$literalExpectation("amount-debited", true); - var peg$e93 = peg$literalExpectation("amountReimbursed", true); - var peg$e94 = peg$literalExpectation("amount-reimbursed", true); - var peg$e95 = peg$literalExpectation("columns", true); - var peg$e96 = peg$literalExpectation("view", true); - var peg$e97 = peg$literalExpectation("compare", true); - var peg$e98 = peg$literalExpectation("per-diem", true); - var peg$e99 = peg$literalExpectation("drafts", true); - var peg$e100 = peg$literalExpectation("draft", true); - var peg$e101 = peg$literalExpectation("tax", true); - var peg$e102 = peg$literalExpectation("policy-name", true); - var peg$e103 = peg$literalExpectation("long-report-id", true); - var peg$e104 = peg$literalExpectation("exported-to", true); - var peg$e105 = peg$classExpectation([":", "="], false, false); - var peg$e106 = peg$literalExpectation("exportedTo", true); - var peg$e107 = peg$literalExpectation("exchange-rate", true); - var peg$e108 = peg$literalExpectation("reimbursable-total", true); - var peg$e109 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e110 = peg$literalExpectation("group-from", true); - var peg$e111 = peg$literalExpectation("group-expenses", true); - var peg$e112 = peg$literalExpectation("group-total", true); - var peg$e113 = peg$literalExpectation("group-card", true); - var peg$e114 = peg$literalExpectation("group-feed", true); - var peg$e115 = peg$literalExpectation("group-bank-account", true); - var peg$e116 = peg$literalExpectation("group-withdrawn", true); - var peg$e117 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e118 = peg$literalExpectation("group-amount-debited", true); - var peg$e119 = peg$literalExpectation("group-amount-reimbursed", true); - var peg$e120 = peg$literalExpectation("group-category", true); - var peg$e121 = peg$literalExpectation("group-tag", true); - var peg$e122 = peg$literalExpectation("group-merchant", true); - var peg$e123 = peg$literalExpectation("group-day", true); - var peg$e124 = peg$literalExpectation("group-month", true); - var peg$e125 = peg$literalExpectation("group-week", true); - var peg$e126 = peg$literalExpectation("group-year", true); - var peg$e127 = peg$literalExpectation("group-quarter", true); - var peg$e128 = peg$otherExpectation("operator"); - var peg$e129 = peg$literalExpectation("*:", false); - var peg$e130 = peg$literalExpectation("!=", false); - var peg$e131 = peg$literalExpectation(">=", false); - var peg$e132 = peg$literalExpectation(">", false); - var peg$e133 = peg$literalExpectation("<=", false); - var peg$e134 = peg$literalExpectation("<", false); - var peg$e135 = peg$literalExpectation("\\", false); - var peg$e136 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); - var peg$e137 = peg$otherExpectation("word"); - var peg$e138 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e139 = peg$otherExpectation("whitespace"); - var peg$e140 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e141 = peg$otherExpectation("quote"); - var peg$e142 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e143 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e144 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e145 = peg$literalExpectation("\u201C", false); - var peg$e146 = peg$literalExpectation("\u201D", false); - var peg$e147 = peg$literalExpectation("\"", false); - var peg$e148 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e149 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e150 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e151 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e152 = peg$classExpectation([","], false, false); - var peg$e153 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); - var peg$e154 = peg$literalExpectation("footerCount", true); - var peg$e155 = peg$literalExpectation("footer-count", true); - var peg$e156 = peg$literalExpectation("footerCurrency", true); - var peg$e157 = peg$literalExpectation("footer-currency", true); - var peg$e158 = peg$literalExpectation("footerTotal", true); - var peg$e159 = peg$literalExpectation("footer-total", true); + var peg$e80 = peg$literalExpectation("approver", true); + var peg$e81 = peg$literalExpectation("assignee", true); + var peg$e82 = peg$literalExpectation("createdBy", true); + var peg$e83 = peg$literalExpectation("created-by", true); + var peg$e84 = peg$literalExpectation("action", true); + var peg$e85 = peg$literalExpectation("total", true); + var peg$e86 = peg$literalExpectation("has", true); + var peg$e87 = peg$literalExpectation("is", true); + var peg$e88 = peg$literalExpectation("purchaseAmount", true); + var peg$e89 = peg$literalExpectation("purchase-amount", true); + var peg$e90 = peg$literalExpectation("purchaseCurrency", true); + var peg$e91 = peg$literalExpectation("purchase-currency", true); + var peg$e92 = peg$literalExpectation("amountDebited", true); + var peg$e93 = peg$literalExpectation("amount-debited", true); + var peg$e94 = peg$literalExpectation("amountReimbursed", true); + var peg$e95 = peg$literalExpectation("amount-reimbursed", true); + var peg$e96 = peg$literalExpectation("columns", true); + var peg$e97 = peg$literalExpectation("view", true); + var peg$e98 = peg$literalExpectation("compare", true); + var peg$e99 = peg$literalExpectation("per-diem", true); + var peg$e100 = peg$literalExpectation("drafts", true); + var peg$e101 = peg$literalExpectation("draft", true); + var peg$e102 = peg$literalExpectation("tax", true); + var peg$e103 = peg$literalExpectation("policy-name", true); + var peg$e104 = peg$literalExpectation("long-report-id", true); + var peg$e105 = peg$literalExpectation("exported-to", true); + var peg$e106 = peg$classExpectation([":", "="], false, false); + var peg$e107 = peg$literalExpectation("exportedTo", true); + var peg$e108 = peg$literalExpectation("exchange-rate", true); + var peg$e109 = peg$literalExpectation("reimbursable-total", true); + var peg$e110 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e111 = peg$literalExpectation("group-from", true); + var peg$e112 = peg$literalExpectation("group-expenses", true); + var peg$e113 = peg$literalExpectation("group-total", true); + var peg$e114 = peg$literalExpectation("group-card", true); + var peg$e115 = peg$literalExpectation("group-feed", true); + var peg$e116 = peg$literalExpectation("group-bank-account", true); + var peg$e117 = peg$literalExpectation("group-withdrawn", true); + var peg$e118 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e119 = peg$literalExpectation("group-amount-debited", true); + var peg$e120 = peg$literalExpectation("group-amount-reimbursed", true); + var peg$e121 = peg$literalExpectation("group-category", true); + var peg$e122 = peg$literalExpectation("group-tag", true); + var peg$e123 = peg$literalExpectation("group-merchant", true); + var peg$e124 = peg$literalExpectation("group-day", true); + var peg$e125 = peg$literalExpectation("group-month", true); + var peg$e126 = peg$literalExpectation("group-week", true); + var peg$e127 = peg$literalExpectation("group-year", true); + var peg$e128 = peg$literalExpectation("group-quarter", true); + var peg$e129 = peg$literalExpectation("group-approver", true); + var peg$e130 = peg$otherExpectation("operator"); + var peg$e131 = peg$literalExpectation("*:", false); + var peg$e132 = peg$literalExpectation("!=", false); + var peg$e133 = peg$literalExpectation(">=", false); + var peg$e134 = peg$literalExpectation(">", false); + var peg$e135 = peg$literalExpectation("<=", false); + var peg$e136 = peg$literalExpectation("<", false); + var peg$e137 = peg$literalExpectation("\\", false); + var peg$e138 = peg$classExpectation([",", "\"", "\u201D", "\u201C", "\\"], false, false); + var peg$e139 = peg$otherExpectation("word"); + var peg$e140 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e141 = peg$otherExpectation("whitespace"); + var peg$e142 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e143 = peg$otherExpectation("quote"); + var peg$e144 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e145 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e146 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e147 = peg$literalExpectation("\u201C", false); + var peg$e148 = peg$literalExpectation("\u201D", false); + var peg$e149 = peg$literalExpectation("\"", false); + var peg$e150 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e151 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e152 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e153 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e154 = peg$classExpectation([","], false, false); + var peg$e155 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e156 = peg$literalExpectation("footerCount", true); + var peg$e157 = peg$literalExpectation("footer-count", true); + var peg$e158 = peg$literalExpectation("footerCurrency", true); + var peg$e159 = peg$literalExpectation("footer-currency", true); + var peg$e160 = peg$literalExpectation("footerTotal", true); + var peg$e161 = peg$literalExpectation("footer-total", true); var peg$f0 = function(filters) { return applyDefaults(filters); }; var peg$f1 = function(head, tail) { @@ -651,92 +655,94 @@ function peg$parse(input, options) { var peg$f57 = function() { return "submitterUserID"; }; var peg$f58 = function() { return "submitterPayrollID"; }; var peg$f59 = function() { return "orderDealNumbers"; }; - var peg$f60 = function() { return "assignee"; }; - var peg$f61 = function() { return "createdBy"; }; - var peg$f62 = function() { return "action"; }; - var peg$f63 = function() {return "total"; }; - var peg$f64 = function() {return "has"; }; - var peg$f65 = function() {return "is"; }; - var peg$f66 = function() {return "purchaseAmount"}; - var peg$f67 = function() {return "purchaseCurrency"}; - var peg$f68 = function() {return "amountDebited"}; - var peg$f69 = function() {return "amountReimbursed"}; - var peg$f70 = function() { + var peg$f60 = function() { return "approver"; }; + var peg$f61 = function() { return "assignee"; }; + var peg$f62 = function() { return "createdBy"; }; + var peg$f63 = function() { return "action"; }; + var peg$f64 = function() {return "total"; }; + var peg$f65 = function() {return "has"; }; + var peg$f66 = function() {return "is"; }; + var peg$f67 = function() {return "purchaseAmount"}; + var peg$f68 = function() {return "purchaseCurrency"}; + var peg$f69 = function() {return "amountDebited"}; + var peg$f70 = function() {return "amountReimbursed"}; + var peg$f71 = function() { isColumnsContext = true; return "columns"; }; - var peg$f71 = function() {return "view"}; - var peg$f72 = function() {return "compare"}; - var peg$f73 = function() { return isColumnsContext; }; - var peg$f74 = function() { return "perDiem"; }; - var peg$f75 = function() { return "drafts"; }; - var peg$f76 = function() { return "originalamount"; }; - var peg$f77 = function() { return "taxAmount"; }; - var peg$f78 = function() { return "taxrate"; }; - var peg$f79 = function() { return "policyname"; }; - var peg$f80 = function() { return "withdrawalID"; }; - var peg$f81 = function() { return "bankAccount"; }; - var peg$f82 = function() { return "reportID"; }; - var peg$f83 = function() { return "base62ReportID"; }; - var peg$f84 = function() { return "exportedto"; }; - var peg$f85 = function() { return "exportedTo"; }; + var peg$f72 = function() {return "view"}; + var peg$f73 = function() {return "compare"}; + var peg$f74 = function() { return isColumnsContext; }; + var peg$f75 = function() { return "perDiem"; }; + var peg$f76 = function() { return "drafts"; }; + var peg$f77 = function() { return "originalamount"; }; + var peg$f78 = function() { return "taxAmount"; }; + var peg$f79 = function() { return "taxrate"; }; + var peg$f80 = function() { return "policyname"; }; + var peg$f81 = function() { return "withdrawalID"; }; + var peg$f82 = function() { return "bankAccount"; }; + var peg$f83 = function() { return "reportID"; }; + var peg$f84 = function() { return "base62ReportID"; }; + var peg$f85 = function() { return "exportedto"; }; var peg$f86 = function() { return "exportedTo"; }; - var peg$f87 = function() { return "exchangeRate"; }; - var peg$f88 = function() { return "reimbursableTotal"; }; - var peg$f89 = function() { return "nonReimbursableTotal"; }; - var peg$f90 = function() { return "groupFrom"; }; - var peg$f91 = function() { return "groupExpenses"; }; - var peg$f92 = function() { return "groupTotal"; }; - var peg$f93 = function() { return "groupCard"; }; - var peg$f94 = function() { return "groupFeed"; }; - var peg$f95 = function() { return "groupBankAccount"; }; - var peg$f96 = function() { return "groupWithdrawn"; }; - var peg$f97 = function() { return "groupWithdrawalID"; }; - var peg$f98 = function() { return "groupAmountDebited"; }; - var peg$f99 = function() { return "groupAmountReimbursed"; }; - var peg$f100 = function() { return "amountDebited"; }; - var peg$f101 = function() { return "amountReimbursed"; }; - var peg$f102 = function() { return "groupCategory"; }; - var peg$f103 = function() { return "groupTag"; }; - var peg$f104 = function() { return "groupMerchant"; }; - var peg$f105 = function() { return "groupday"; }; - var peg$f106 = function() { return "groupmonth"; }; - var peg$f107 = function() { return "groupweek"; }; - var peg$f108 = function() { return "groupyear"; }; - var peg$f109 = function() { return "groupquarter"; }; - var peg$f110 = function() { return "contains"; }; - var peg$f111 = function() { return "eq"; }; - var peg$f112 = function() { return "neq"; }; - var peg$f113 = function() { return "gte"; }; - var peg$f114 = function() { return "gt"; }; - var peg$f115 = function() { return "lte"; }; - var peg$f116 = function() { return "lt"; }; - var peg$f117 = function(o) { + var peg$f87 = function() { return "exportedTo"; }; + var peg$f88 = function() { return "exchangeRate"; }; + var peg$f89 = function() { return "reimbursableTotal"; }; + var peg$f90 = function() { return "nonReimbursableTotal"; }; + var peg$f91 = function() { return "groupFrom"; }; + var peg$f92 = function() { return "groupExpenses"; }; + var peg$f93 = function() { return "groupTotal"; }; + var peg$f94 = function() { return "groupCard"; }; + var peg$f95 = function() { return "groupFeed"; }; + var peg$f96 = function() { return "groupBankAccount"; }; + var peg$f97 = function() { return "groupWithdrawn"; }; + var peg$f98 = function() { return "groupWithdrawalID"; }; + var peg$f99 = function() { return "groupAmountDebited"; }; + var peg$f100 = function() { return "groupAmountReimbursed"; }; + var peg$f101 = function() { return "amountDebited"; }; + var peg$f102 = function() { return "amountReimbursed"; }; + var peg$f103 = function() { return "groupCategory"; }; + var peg$f104 = function() { return "groupTag"; }; + var peg$f105 = function() { return "groupMerchant"; }; + var peg$f106 = function() { return "groupday"; }; + var peg$f107 = function() { return "groupmonth"; }; + var peg$f108 = function() { return "groupweek"; }; + var peg$f109 = function() { return "groupyear"; }; + var peg$f110 = function() { return "groupquarter"; }; + var peg$f111 = function() { return "groupApprover"; }; + var peg$f112 = function() { return "contains"; }; + var peg$f113 = function() { return "eq"; }; + var peg$f114 = function() { return "neq"; }; + var peg$f115 = function() { return "gte"; }; + var peg$f116 = function() { return "gt"; }; + var peg$f117 = function() { return "lte"; }; + var peg$f118 = function() { return "lt"; }; + var peg$f119 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq" || o === "contains"); } isColumnsContext = false; return o; }; - var peg$f118 = function(c) { return c; }; - var peg$f119 = function(chars) { return chars.join("").trim(); }; - var peg$f120 = function() { + var peg$f120 = function(c) { return c; }; + var peg$f121 = function(chars) { return chars.join("").trim(); }; + var peg$f122 = function() { isColumnsContext = false; return "and"; }; - var peg$f121 = function() { return expectingNestedQuote; }; - var peg$f122 = function(start, inner, end) { //handle no-breaking space + var peg$f123 = function() { return expectingNestedQuote; }; + var peg$f124 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f123 = function(start) {return "“"}; - var peg$f124 = function(start) {return "”"}; - var peg$f125 = function(start) {return "\""}; - var peg$f126 = function(start, inner, end) { + var peg$f125 = function(start) {return "“"}; + var peg$f126 = function(start) {return "”"}; + var peg$f127 = function(start) {return "\""}; + var peg$f128 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; - var peg$f127 = function() { return "footerCount"; }; - var peg$f128 = function() { return "footerCurrency"; }; - var peg$f129 = function() { return "footerTotal"; }; + var peg$f129 = function() { return "footerCount"; }; + var peg$f130 = function() { return "footerCurrency"; }; + var peg$f131 = function() { return "footerTotal"; }; var peg$currPos = options.peg$currPos | 0; var peg$savedPos = peg$currPos; var peg$posDetailsCache = [{ line: 1, column: 1 }]; @@ -1322,39 +1328,42 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = peg$parseorderDealNumbers(); if (s1 === peg$FAILED) { - s1 = peg$parseassignee(); + s1 = peg$parseapprover(); if (s1 === peg$FAILED) { - s1 = peg$parsecreatedBy(); + s1 = peg$parseassignee(); if (s1 === peg$FAILED) { - s1 = peg$parsereimbursable(); + s1 = peg$parsecreatedBy(); if (s1 === peg$FAILED) { - s1 = peg$parsebillable(); + s1 = peg$parsereimbursable(); if (s1 === peg$FAILED) { - s1 = peg$parsedeclined(); + s1 = peg$parsebillable(); if (s1 === peg$FAILED) { - s1 = peg$parseheld(); + s1 = peg$parsedeclined(); if (s1 === peg$FAILED) { - s1 = peg$parseaction(); + s1 = peg$parseheld(); if (s1 === peg$FAILED) { - s1 = peg$parsehas(); + s1 = peg$parseaction(); if (s1 === peg$FAILED) { - s1 = peg$parseis(); + s1 = peg$parsehas(); if (s1 === peg$FAILED) { - s1 = peg$parsepurchaseCurrency(); + s1 = peg$parseis(); if (s1 === peg$FAILED) { - s1 = peg$parsepurchaseAmount(); + s1 = peg$parsepurchaseCurrency(); if (s1 === peg$FAILED) { - s1 = peg$parsepolicyID(); + s1 = peg$parsepurchaseAmount(); if (s1 === peg$FAILED) { - s1 = peg$parsestatus(); + s1 = peg$parsepolicyID(); if (s1 === peg$FAILED) { - s1 = peg$parsefooterCount(); + s1 = peg$parsestatus(); if (s1 === peg$FAILED) { - s1 = peg$parsefooterCurrency(); + s1 = peg$parsefooterCount(); if (s1 === peg$FAILED) { - s1 = peg$parsefooterTotal(); + s1 = peg$parsefooterCurrency(); if (s1 === peg$FAILED) { - s1 = peg$parsereportFieldDynamic(); + s1 = peg$parsefooterTotal(); + if (s1 === peg$FAILED) { + s1 = peg$parsereportFieldDynamic(); + } } } } @@ -2828,15 +2837,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c76) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f60(); + s1 = peg$f61(); } s0 = s1; @@ -2847,24 +2856,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c76) { + if (s0.toLowerCase() === peg$c77) { peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c78) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f61(); + s1 = peg$f62(); } s0 = s1; } @@ -2877,15 +2886,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c78) { + if (s1.toLowerCase() === peg$c79) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f62(); + s1 = peg$f63(); } s0 = s1; @@ -2897,15 +2906,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f63(); + s1 = peg$f64(); } s0 = s1; @@ -2917,15 +2926,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c80) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f64(); + s1 = peg$f65(); } s0 = s1; @@ -2937,15 +2946,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c82) { peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f65(); + s1 = peg$f66(); } s0 = s1; @@ -2956,24 +2965,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c82) { + if (s0.toLowerCase() === peg$c83) { peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f66(); + s1 = peg$f67(); } s0 = s1; } @@ -2985,24 +2994,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c84) { + if (s0.toLowerCase() === peg$c85) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f67(); + s1 = peg$f68(); } s0 = s1; } @@ -3014,24 +3023,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 13); - if (s0.toLowerCase() === peg$c86) { + if (s0.toLowerCase() === peg$c87) { peg$currPos += 13; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f68(); + s1 = peg$f69(); } s0 = s1; } @@ -3043,24 +3052,24 @@ function peg$parse(input, options) { var s0, s1; s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c88) { + if (s0.toLowerCase() === peg$c89) { peg$currPos += 16; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f69(); + s1 = peg$f70(); } s0 = s1; } @@ -3073,15 +3082,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c90) { + if (s1.toLowerCase() === peg$c91) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f70(); + s1 = peg$f71(); } s0 = s1; @@ -3093,15 +3102,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c91) { + if (s1.toLowerCase() === peg$c92) { peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f71(); + s1 = peg$f72(); } s0 = s1; @@ -3113,15 +3122,15 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c92) { + if (s1.toLowerCase() === peg$c93) { peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f72(); + s1 = peg$f73(); } s0 = s1; @@ -3133,7 +3142,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f73(); + s1 = peg$f74(); if (s1) { s1 = undefined; } else { @@ -3271,11 +3280,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c93) { + if (s1.toLowerCase() === peg$c94) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3290,7 +3299,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f74(); + s0 = peg$f75(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3308,19 +3317,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c94) { + if (s1.toLowerCase() === peg$c95) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c95) { + if (s1.toLowerCase() === peg$c96) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } } if (s1 !== peg$FAILED) { @@ -3336,7 +3345,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f75(); + s0 = peg$f76(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3354,11 +3363,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3373,7 +3382,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f76(); + s0 = peg$f77(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3391,11 +3400,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c96) { + if (s1.toLowerCase() === peg$c97) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3410,7 +3419,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f77(); + s0 = peg$f78(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3447,7 +3456,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f78(); + s0 = peg$f79(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3465,11 +3474,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c97) { + if (s1.toLowerCase() === peg$c98) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3484,7 +3493,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f79(); + s0 = peg$f80(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3521,7 +3530,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f80(); + s0 = peg$f81(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3558,7 +3567,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f81(); + s0 = peg$f82(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3576,11 +3585,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c98) { + if (s1.toLowerCase() === peg$c99) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3595,7 +3604,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f82(); + s0 = peg$f83(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3632,7 +3641,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f83(); + s0 = peg$f84(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3650,11 +3659,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3669,7 +3678,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f84(); + s0 = peg$f85(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3694,7 +3703,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s2 !== peg$FAILED) { s1 = [s1, s2]; @@ -3713,11 +3722,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c100) { + if (s1.toLowerCase() === peg$c101) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3732,7 +3741,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f85(); + s0 = peg$f86(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3744,11 +3753,11 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c99) { + if (s1.toLowerCase() === peg$c100) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3763,7 +3772,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f86(); + s0 = peg$f87(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3782,11 +3791,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c101) { + if (s1.toLowerCase() === peg$c102) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3801,7 +3810,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f87(); + s0 = peg$f88(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3819,11 +3828,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c102) { + if (s1.toLowerCase() === peg$c103) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3838,7 +3847,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f88(); + s0 = peg$f89(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3856,11 +3865,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c103) { + if (s1.toLowerCase() === peg$c104) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3875,7 +3884,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f89(); + s0 = peg$f90(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3893,11 +3902,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c104) { + if (s1.toLowerCase() === peg$c105) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3912,7 +3921,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f90(); + s0 = peg$f91(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3930,11 +3939,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c105) { + if (s1.toLowerCase() === peg$c106) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3949,7 +3958,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f91(); + s0 = peg$f92(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3967,11 +3976,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c106) { + if (s1.toLowerCase() === peg$c107) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3986,7 +3995,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f92(); + s0 = peg$f93(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4004,11 +4013,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c107) { + if (s1.toLowerCase() === peg$c108) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4023,7 +4032,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f93(); + s0 = peg$f94(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4041,11 +4050,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c108) { + if (s1.toLowerCase() === peg$c109) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4060,7 +4069,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f94(); + s0 = peg$f95(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4078,11 +4087,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c109) { + if (s1.toLowerCase() === peg$c110) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4097,7 +4106,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f95(); + s0 = peg$f96(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4115,11 +4124,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c110) { + if (s1.toLowerCase() === peg$c111) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4134,7 +4143,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f96(); + s0 = peg$f97(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4152,11 +4161,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c111) { + if (s1.toLowerCase() === peg$c112) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4171,7 +4180,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f97(); + s0 = peg$f98(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4189,11 +4198,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 20); - if (s1.toLowerCase() === peg$c112) { + if (s1.toLowerCase() === peg$c113) { peg$currPos += 20; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4208,7 +4217,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f98(); + s0 = peg$f99(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4226,11 +4235,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 23); - if (s1.toLowerCase() === peg$c113) { + if (s1.toLowerCase() === peg$c114) { peg$currPos += 23; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4245,7 +4254,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f99(); + s0 = peg$f100(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4263,11 +4272,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c87) { + if (s1.toLowerCase() === peg$c88) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4282,7 +4291,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f100(); + s0 = peg$f101(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4300,11 +4309,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c89) { + if (s1.toLowerCase() === peg$c90) { peg$currPos += 17; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4319,7 +4328,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f101(); + s0 = peg$f102(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4337,11 +4346,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c114) { + if (s1.toLowerCase() === peg$c115) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4356,7 +4365,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f102(); + s0 = peg$f103(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4374,11 +4383,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c115) { + if (s1.toLowerCase() === peg$c116) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e122); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4393,7 +4402,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f103(); + s0 = peg$f104(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4411,11 +4420,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c116) { + if (s1.toLowerCase() === peg$c117) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4430,7 +4439,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f104(); + s0 = peg$f105(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4448,11 +4457,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c117) { + if (s1.toLowerCase() === peg$c118) { peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e123); } + if (peg$silentFails === 0) { peg$fail(peg$e124); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4467,7 +4476,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f105(); + s0 = peg$f106(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4485,11 +4494,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c118) { + if (s1.toLowerCase() === peg$c119) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e124); } + if (peg$silentFails === 0) { peg$fail(peg$e125); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4504,7 +4513,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f106(); + s0 = peg$f107(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4522,11 +4531,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c119) { + if (s1.toLowerCase() === peg$c120) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e125); } + if (peg$silentFails === 0) { peg$fail(peg$e126); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4541,7 +4550,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f107(); + s0 = peg$f108(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4559,11 +4568,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c120) { + if (s1.toLowerCase() === peg$c121) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e126); } + if (peg$silentFails === 0) { peg$fail(peg$e127); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4578,7 +4587,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f108(); + s0 = peg$f109(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4596,11 +4605,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c121) { + if (s1.toLowerCase() === peg$c122) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e127); } + if (peg$silentFails === 0) { peg$fail(peg$e128); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4615,7 +4624,44 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f109(); + s0 = peg$f110(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupApprover() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 14); + if (s1.toLowerCase() === peg$c123) { + peg$currPos += 14; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e129); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f111(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4633,16 +4679,16 @@ function peg$parse(input, options) { peg$silentFails++; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c122) { - s1 = peg$c122; + if (input.substr(peg$currPos, 2) === peg$c124) { + s1 = peg$c124; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e129); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f110(); + s1 = peg$f112(); } s0 = s1; if (s0 === peg$FAILED) { @@ -4652,81 +4698,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f111(); + s1 = peg$f113(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c123) { - s1 = peg$c123; + if (input.substr(peg$currPos, 2) === peg$c125) { + s1 = peg$c125; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f112(); + s1 = peg$f114(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c124) { - s1 = peg$c124; + if (input.substr(peg$currPos, 2) === peg$c126) { + s1 = peg$c126; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f113(); + s1 = peg$f115(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c125; + s1 = peg$c127; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f114(); + s1 = peg$f116(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c126) { - s1 = peg$c126; + if (input.substr(peg$currPos, 2) === peg$c128) { + s1 = peg$c128; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f115(); + s1 = peg$f117(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c127; + s1 = peg$c129; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f116(); + s1 = peg$f118(); } s0 = s1; } @@ -4738,7 +4784,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e128); } + if (peg$silentFails === 0) { peg$fail(peg$e130); } } return s0; @@ -4751,7 +4797,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f117(s1); + s1 = peg$f119(s1); } s0 = s1; @@ -4763,11 +4809,11 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c128; + s1 = peg$c130; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } if (s1 !== peg$FAILED) { s2 = input.charAt(peg$currPos); @@ -4775,11 +4821,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f118(s2); + s0 = peg$f120(s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4805,7 +4851,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } if (s2 !== peg$FAILED) { @@ -4818,7 +4864,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } } @@ -4827,13 +4873,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f119(s1); + s1 = peg$f121(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } return s0; @@ -4845,7 +4891,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f120(); + s1 = peg$f122(); s0 = s1; return s0; @@ -4861,7 +4907,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4870,12 +4916,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } return s0; } @@ -4885,7 +4931,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f121(); + s1 = peg$f123(); if (s1) { s1 = undefined; } else { @@ -4922,7 +4968,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4931,7 +4977,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } } s2 = input.charAt(peg$currPos); @@ -4939,7 +4985,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4950,7 +4996,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } } while (s4 !== peg$FAILED) { @@ -4962,7 +5008,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } } } @@ -4971,7 +5017,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4980,7 +5026,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4989,11 +5035,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } } peg$savedPos = s0; - s0 = peg$f122(s1, s3, s5); + s0 = peg$f124(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -5005,7 +5051,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } return s0; @@ -5022,7 +5068,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5031,7 +5077,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e144); } } } s2 = input.charAt(peg$currPos); @@ -5039,7 +5085,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s2 !== peg$FAILED) { s3 = []; @@ -5050,7 +5096,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -5066,15 +5112,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c129; + s6 = peg$c131; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f123(s1); + s4 = peg$f125(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5097,15 +5143,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c130; + s6 = peg$c132; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f124(s1); + s4 = peg$f126(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5128,15 +5174,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c131; + s6 = peg$c133; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f125(s1); + s4 = peg$f127(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5158,7 +5204,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e146); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -5174,15 +5220,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c129; + s6 = peg$c131; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e147); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f123(s1); + s4 = peg$f125(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5205,15 +5251,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c130; + s6 = peg$c132; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e148); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f124(s1); + s4 = peg$f126(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5236,15 +5282,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c131; + s6 = peg$c133; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e149); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f125(s1); + s4 = peg$f127(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -5261,7 +5307,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f126(s1, s3, s4); + s0 = peg$f128(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -5273,7 +5319,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } return s0; @@ -5288,7 +5334,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e145); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -5326,7 +5372,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e150); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5335,7 +5381,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e150); } } } s2 = []; @@ -5344,7 +5390,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e151); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -5353,7 +5399,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e151); } } } s3 = []; @@ -5362,7 +5408,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e152); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -5371,7 +5417,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e152); } } } s4 = peg$parseoperator(); @@ -5390,7 +5436,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e151); } + if (peg$silentFails === 0) { peg$fail(peg$e153); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -5399,7 +5445,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e151); } + if (peg$silentFails === 0) { peg$fail(peg$e153); } } } s2 = peg$currPos; @@ -5446,7 +5492,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e152); } + if (peg$silentFails === 0) { peg$fail(peg$e154); } } } } @@ -5462,7 +5508,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e153); } + if (peg$silentFails === 0) { peg$fail(peg$e155); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -5491,24 +5537,24 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c132) { + if (s1.toLowerCase() === peg$c134) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e154); } + if (peg$silentFails === 0) { peg$fail(peg$e156); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c133) { + if (s1.toLowerCase() === peg$c135) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e155); } + if (peg$silentFails === 0) { peg$fail(peg$e157); } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f127(); + s1 = peg$f129(); } s0 = s1; @@ -5520,24 +5566,24 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c134) { + if (s1.toLowerCase() === peg$c136) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e156); } + if (peg$silentFails === 0) { peg$fail(peg$e158); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c135) { + if (s1.toLowerCase() === peg$c137) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e157); } + if (peg$silentFails === 0) { peg$fail(peg$e159); } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f128(); + s1 = peg$f130(); } s0 = s1; @@ -5549,24 +5595,24 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c136) { + if (s1.toLowerCase() === peg$c138) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e158); } + if (peg$silentFails === 0) { peg$fail(peg$e160); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c137) { + if (s1.toLowerCase() === peg$c139) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e159); } + if (peg$silentFails === 0) { peg$fail(peg$e161); } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f129(); + s1 = peg$f131(); } s0 = s1; From 67841001492f87f6b8adfc5455abc78ae9ef2205 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Fri, 23 Oct 2026 23:07:52 +0700 Subject: [PATCH 11/11] revert unrelated language --- src/languages/el.ts | 2 +- src/languages/es.ts | 6 +++--- src/languages/fr.ts | 2 +- src/languages/ja.ts | 4 ++-- src/languages/nl.ts | 4 ++-- src/languages/pl.ts | 2 +- src/languages/pt-BR.ts | 6 +++--- src/languages/zh-hans.ts | 12 ++++++------ 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/languages/el.ts b/src/languages/el.ts index f0626e6ab8af..30934611aefc 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -10714,7 +10714,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.DAY]: 'Ημέρες', [CONST.SEARCH.GROUP_BY.MONTH]: 'Μήνες', [CONST.SEARCH.GROUP_BY.WEEK]: 'Εβδομάδες', - [CONST.SEARCH.GROUP_BY.YEAR]: 'Χρόνια', + [CONST.SEARCH.GROUP_BY.YEAR]: 'Έτη', [CONST.SEARCH.GROUP_BY.QUARTER]: 'Τρίμηνα', [CONST.SEARCH.GROUP_BY.APPROVER]: 'Εγκρίνοντες', }, diff --git a/src/languages/es.ts b/src/languages/es.ts index f3f04c1c1ed9..3c7aeb65e1e5 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -10284,9 +10284,9 @@ ${reportName}`, groupBy: { [CONST.SEARCH.GROUP_BY.FROM]: 'De', [CONST.SEARCH.GROUP_BY.CARD]: 'Tarjeta', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID de retirada', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID de retiro', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categoría', - [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comercio', + [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comerciante', [CONST.SEARCH.GROUP_BY.TAG]: 'Etiqueta', [CONST.SEARCH.GROUP_BY.DAY]: 'Día', [CONST.SEARCH.GROUP_BY.MONTH]: 'Mes', @@ -10330,7 +10330,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.CARD]: 'Tarjetas', [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exportaciones', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categorías', - [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comercios', + [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comerciantes', [CONST.SEARCH.GROUP_BY.TAG]: 'Etiquetas', [CONST.SEARCH.GROUP_BY.DAY]: 'Días', [CONST.SEARCH.GROUP_BY.MONTH]: 'Meses', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index f4283c2c5a27..308cd0792814 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -10523,7 +10523,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e chartTitles: { [CONST.SEARCH.GROUP_BY.FROM]: 'De', [CONST.SEARCH.GROUP_BY.CARD]: 'Cartes', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exportations', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exports', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Catégories', [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Commerçants', [CONST.SEARCH.GROUP_BY.TAG]: 'Tags', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 2c775a96a743..2891a4e09398 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -10242,7 +10242,7 @@ ${reportName}`, groupBy: { [CONST.SEARCH.GROUP_BY.FROM]: '差出人', [CONST.SEARCH.GROUP_BY.CARD]: 'カード', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '出金 ID', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '出金ID', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'カテゴリ', [CONST.SEARCH.GROUP_BY.MERCHANT]: '加盟店', [CONST.SEARCH.GROUP_BY.TAG]: 'タグ', @@ -10300,7 +10300,7 @@ ${reportName}`, [CONST.SEARCH.GROUP_BY.TAG]: 'タグ', [CONST.SEARCH.GROUP_BY.DAY]: '日数', [CONST.SEARCH.GROUP_BY.MONTH]: '月数', - [CONST.SEARCH.GROUP_BY.WEEK]: '週間', + [CONST.SEARCH.GROUP_BY.WEEK]: '週数', [CONST.SEARCH.GROUP_BY.YEAR]: '年数', [CONST.SEARCH.GROUP_BY.QUARTER]: '四半期', [CONST.SEARCH.GROUP_BY.APPROVER]: '承認者', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 6317ab381368..c960ab6906bf 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -10365,7 +10365,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, [CONST.SEARCH.GROUP_BY.CARD]: 'Kaart', [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Opname-ID', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categorie', - [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Winkelier', + [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Handelaar', [CONST.SEARCH.GROUP_BY.TAG]: 'Label', [CONST.SEARCH.GROUP_BY.DAY]: 'Dag', [CONST.SEARCH.GROUP_BY.MONTH]: 'Maand', @@ -10465,7 +10465,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, chartTitles: { [CONST.SEARCH.GROUP_BY.FROM]: 'Van', [CONST.SEARCH.GROUP_BY.CARD]: 'Kaarten', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exports', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exporten', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categorieën', [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Handelaars', [CONST.SEARCH.GROUP_BY.TAG]: 'Tags', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index b49cc8a31210..1f34fa6d6947 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -10385,7 +10385,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, groupBy: { [CONST.SEARCH.GROUP_BY.FROM]: 'Od', [CONST.SEARCH.GROUP_BY.CARD]: 'Karta', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID wypłaty', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Identyfikator wypłaty', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Kategoria', [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Sprzedawca', [CONST.SEARCH.GROUP_BY.TAG]: 'Tag', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 69a5f1c5bd59..eb33125ca91c 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -10355,10 +10355,10 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, groupBy: { [CONST.SEARCH.GROUP_BY.FROM]: 'De', [CONST.SEARCH.GROUP_BY.CARD]: 'Cartão', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID de saque', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID do saque', [CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categoria', - [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Comerciante', - [CONST.SEARCH.GROUP_BY.TAG]: 'Tag', + [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Estabelecimento', + [CONST.SEARCH.GROUP_BY.TAG]: 'Etiqueta', [CONST.SEARCH.GROUP_BY.DAY]: 'Dia', [CONST.SEARCH.GROUP_BY.MONTH]: 'Mês', [CONST.SEARCH.GROUP_BY.WEEK]: 'Semana', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index a11738fd5524..c05bbe512b68 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -9972,11 +9972,11 @@ ${reportName}`, [CONST.SEARCH.SORT_ORDER.DESC]: '降序', }, groupBy: { - [CONST.SEARCH.GROUP_BY.FROM]: '发件人', - [CONST.SEARCH.GROUP_BY.CARD]: '卡', - [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '提现 ID', + [CONST.SEARCH.GROUP_BY.FROM]: '来自', + [CONST.SEARCH.GROUP_BY.CARD]: '卡片', + [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '提现编号', [CONST.SEARCH.GROUP_BY.CATEGORY]: '类别', - [CONST.SEARCH.GROUP_BY.MERCHANT]: '商家', + [CONST.SEARCH.GROUP_BY.MERCHANT]: '商户', [CONST.SEARCH.GROUP_BY.TAG]: '标签', [CONST.SEARCH.GROUP_BY.DAY]: '天', [CONST.SEARCH.GROUP_BY.MONTH]: '月', @@ -10024,11 +10024,11 @@ ${reportName}`, has: '有', view: {label: '查看', table: '表格', bar: '栏', line: '折线', pie: '饼图'}, chartTitles: { - [CONST.SEARCH.GROUP_BY.FROM]: '发件人', + [CONST.SEARCH.GROUP_BY.FROM]: '来自', [CONST.SEARCH.GROUP_BY.CARD]: '卡片', [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '导出', [CONST.SEARCH.GROUP_BY.CATEGORY]: '类别', - [CONST.SEARCH.GROUP_BY.MERCHANT]: '商户', + [CONST.SEARCH.GROUP_BY.MERCHANT]: '商家', [CONST.SEARCH.GROUP_BY.TAG]: '标签', [CONST.SEARCH.GROUP_BY.DAY]: '天', [CONST.SEARCH.GROUP_BY.MONTH]: '月数',