Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit 6bf186e

Browse files
committed
numbers condition and fix of inline additions
1 parent 94bfde6 commit 6bf186e

File tree

8 files changed

+44
-6
lines changed

8 files changed

+44
-6
lines changed

src/components/cellTypes/NumberCell.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ const NumberCell = (props: CellComponentProps) => {
112112
}}
113113
tabIndex={0}
114114
>
115-
{(numberCell !== undefined && numberCell.toString()) || ""}
115+
{isNaN(numberCell) ? "" : numberCell}
116116
</span>
117117
);
118118
};

src/lib/features/filters/components/OperatorSelectorComponent.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ function operatorFilterEntriesInFuctionOf(type: string) {
5656
switch (type) {
5757
case InputType.CALENDAR:
5858
case InputType.CALENDAR_TIME:
59+
case InputType.NUMBER:
5960
return rawOperators.filter(
6061
(op) =>
6162
![

src/lib/features/filters/domain/FilterActions.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { AtomicFilter, FilterGroup, FilterGroupCondition } from "cdm/SettingsModel";
2-
import { ConditionFiltersOptions, OperatorFilter } from "helpers/Constants";
2+
import { ConditionFiltersOptions, InputType, OperatorFilter } from "helpers/Constants";
33
import { ColumnFilterOption } from "../model/FiltersModel";
44

55
export enum ModifyFilterOptionsEnum {
@@ -71,6 +71,10 @@ const modifyRecursiveFilterGroups = (
7171
break;
7272
case ModifyFilterOptionsEnum.FIELD:
7373
(filterGroups[recursiveIndex[level]] as AtomicFilter).field = value;
74+
const potentialTypedField = possibleColumns.find(
75+
(column) => column.key === value
76+
);
77+
(filterGroups[recursiveIndex[level]] as AtomicFilter).type = potentialTypedField ? potentialTypedField.type : InputType.TEXT;
7478
break;
7579
case ModifyFilterOptionsEnum.VALUE:
7680
(filterGroups[recursiveIndex[level]] as AtomicFilter).value = value;

src/lib/features/filters/domain/ValidateFilter.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,40 @@ class ValidateFilter {
6969
if (OperatorFilter.IS_NOT_EMPTY[1] === operatorFilter) {
7070
return (literalToCheck !== null && literalToCheck !== undefined && literalToCheck !== '');
7171
}
72-
7372
switch (type) {
7473
case InputType.CALENDAR:
7574
case InputType.CALENDAR_TIME:
7675
return this.calendarAtomicFilter(literalToCheck, operatorFilter, value);
76+
case InputType.NUMBER:
77+
return this.numberAtomicFilter(literalToCheck, operatorFilter, value);
7778
default:
7879
return this.mdAtomicFilter(literalToCheck, operatorFilter, value);
7980
}
8081
}
82+
private numberAtomicFilter(literalToCheck: Literal, operator: string, value: string): boolean {
83+
const adaptedLiteral = ParseService.parseLiteral(literalToCheck, InputType.NUMBER, this.ddbbConfig) as number;
84+
const adaptedValue = ParseService.parseLiteral(value, InputType.NUMBER, this.ddbbConfig) as number;
85+
if (isNaN(adaptedLiteral) || isNaN(adaptedValue)) {
86+
return false;
87+
}
88+
switch (operator) {
89+
case OperatorFilter.EQUAL[1]:
90+
return adaptedLiteral === adaptedValue;
91+
case OperatorFilter.NOT_EQUAL[1]:
92+
return adaptedLiteral !== adaptedValue;
93+
case OperatorFilter.GREATER_THAN[1]:
94+
return adaptedValue > adaptedLiteral;
95+
case OperatorFilter.LESS_THAN[1]:
96+
return adaptedValue < adaptedLiteral;
97+
case OperatorFilter.GREATER_THAN_OR_EQUAL[1]:
98+
return adaptedValue >= adaptedLiteral;
99+
case OperatorFilter.LESS_THAN_OR_EQUAL[1]:
100+
return adaptedValue <= adaptedLiteral;
101+
default:
102+
LOGGER.error(`Operator ${operator} not supported for numberAtomicFilter`);
103+
return false;
104+
}
105+
}
81106

82107
private calendarAtomicFilter(literalToCheck: Literal, operator: string, value: string): boolean {
83108
if (!DateTime.isDateTime(literalToCheck)) {

src/patterns/builders/NoteContentActionBuilder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ export default class NoteContentActionBuilder {
111111
case INLINE_POSITION.LAST_FIELD:
112112
if (INLINE_REGEX.INLINE_LAST_FIELD.test(this.content)) {
113113
inlineAddRegex = INLINE_REGEX.INLINE_LAST_FIELD;
114-
regex_target = `$1$2$3$4$5$6$7$8$9$10$2$3$4\n${columnId}$6:: ${newValue}$9\n$12`;
114+
regex_target = `$1$2$3$4$5$6$7$8$9$10$2\n$3$4${columnId}$6:: ${newValue}$9\n$12`;
115115
break;
116116
}
117117
// Else, fall through to default

src/services/ParseService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Parse {
2222
public parseLiteral(literal: Literal, dataTypeDst: string, localSettings: LocalSettings, isInline = false, wrapQuotes = false): Literal {
2323
// Check empty or undefined literals
2424
if (!DataviewService.isTruthy(literal?.toString())) {
25-
return "";
25+
literal = "";
2626
}
2727
literal = this.parseDataArray(literal);
2828
const wrapped = DataviewService.wrapLiteral(literal);

src/services/parseServiceHelpers/ArrayParser.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@ import { satinizedColumnOption } from "helpers/FileManagement";
33
import { WrappedLiteral } from "obsidian-dataview";
44
import { DataviewService } from "services/DataviewService";
55

6-
class ArrayParser extends TypeParser<string[]> {
6+
class ArrayParser extends TypeParser<string[] | string> {
77
parse(wrapped: WrappedLiteral) {
8+
if (wrapped.value === "") {
9+
return wrapped.value;
10+
}
11+
812
if (wrapped.type !== 'array') {
913
return wrapped.value.toString().split(",").map(s => satinizedColumnOption(s.toString().trim()));
1014
}

src/stateManagement/columns/handlers/AlterOptionToColumnAction.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ export default class AlterOptionToColumnHandlerAction extends AbstractTableActio
1111
column: TableColumn,
1212
option: ColumnOption
1313
) => {
14+
if (option.value === "" || option.label === "") {
15+
// End the execution if the option is empty
16+
return;
17+
}
1418
if (OptionSource.FORMULA === column.config.option_source) {
1519
// End the execution if the option is from a formula
1620
return;

0 commit comments

Comments
 (0)