Skip to content

Commit fe73657

Browse files
committed
added the ability to filter
1 parent 6671b79 commit fe73657

File tree

7 files changed

+55
-21
lines changed

7 files changed

+55
-21
lines changed

core/src/main/java/org/sterl/spring/persistent_tasks/shared/repository/TriggerDataRepository.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,19 @@ default Predicate buildSearch(
3939
final var value = StringHelper.applySearchWildCard(search.getSearch());
4040
Predicate pId;
4141
if (StringHelper.isSqlSearch(value)) {
42-
pId = ExpressionUtils.or(
42+
pId = ExpressionUtils.anyOf(
4343
qData.key.id.like(value),
44-
qData.correlationId.like(value));
44+
qData.correlationId.like(value),
45+
qData.tag.like(value)
46+
);
4547
} else {
46-
pId = ExpressionUtils.or(
48+
pId = ExpressionUtils.anyOf(
4749
qData.key.id.eq(value),
48-
qData.correlationId.eq(value));
50+
qData.correlationId.eq(value),
51+
qData.tag.eq(value)
52+
);
4953
}
50-
predicate.andAnyOf(pId);
54+
predicate.and(pId);
5155
}
5256

5357
predicate.and(QueryHelper.eqOrLike(qData.key.id, search.getKeyId()));

core/src/main/java/org/sterl/spring/persistent_tasks/trigger/event/TriggerLifeCycleEvent.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.io.Serializable;
44

5-
import org.springframework.lang.NonNull;
65
import org.springframework.lang.Nullable;
76
import org.sterl.spring.persistent_tasks.api.event.PersistentTasksEvent;
87
import org.sterl.spring.persistent_tasks.shared.model.HasTriggerData;
@@ -17,7 +16,6 @@ default TriggerData getData() {
1716
return data();
1817
}
1918
long id();
20-
@NonNull
2119
TriggerData data();
2220
@Nullable
2321
Serializable state();

example/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>org.springframework.boot</groupId>
88
<artifactId>spring-boot-starter-parent</artifactId>
9-
<version>3.3.8</version>
9+
<version>3.3.12</version>
1010
<relativePath /> <!-- lookup parent from repository -->
1111
</parent>
1212

ui/src/shared/view/labled-text.view.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
1-
import { Form } from "react-bootstrap";
21
import React, { ReactNode } from "react";
2+
import { Form } from "react-bootstrap";
33

44
interface Props {
55
label: string;
66
value?: string | number | ReactNode;
77
className?: string;
8+
onClick?: () => void;
89
}
9-
const LabeledText: React.FC<Props> = ({ label, value, className }) => {
10+
const LabeledText: React.FC<Props> = ({ label, value, className, onClick }) => {
1011
return (
1112
<Form.Group className={className}>
1213
<Form.Text muted role="label">
1314
{label}
1415
</Form.Text>
15-
<div>{value}</div>
16+
{onClick ? (
17+
<div>
18+
<a onClick={onClick} href="#">
19+
{value}
20+
</a>
21+
</div>
22+
) : (
23+
<div>{value}</div>
24+
)}
1625
</Form.Group>
1726
);
1827
};

ui/src/shared/view/trigger-list-item.view.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ interface TriggerProps {
2020
trigger: Trigger;
2121
afterTriggerChanged?: () => void;
2222
showReRunButton: boolean;
23+
onFieldClick: (key: string, value?: string) => void;
2324
}
2425

2526
const TriggerListItemView = ({
2627
trigger,
2728
afterTriggerChanged,
2829
showReRunButton,
30+
onFieldClick,
2931
}: TriggerProps) => {
3032
// className="d-flex justify-content-between align-items-center"
3133
const [url, setUrl] = useUrl();
@@ -112,6 +114,7 @@ const TriggerListItemView = ({
112114
key={trigger.id + "-TriggerDetailsView"}
113115
trigger={trigger}
114116
history={triggerHistory.data}
117+
onClick={onFieldClick}
115118
/>
116119
</Accordion.Body>
117120
</Accordion.Item>

ui/src/shared/view/trigger-search.view.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import TaskSelect from "@src/task/view/task-select.view";
99
import { useQuery } from "crossroad";
1010
import { Accordion, Col, Form, Row, Stack } from "react-bootstrap";
1111
import TriggerListItemView from "./trigger-list-item.view";
12+
import { useEffect, useState } from "react";
1213

1314
interface Props {
1415
url: string;
@@ -21,8 +22,13 @@ const TriggersSearchView = ({
2122
showReRunButton,
2223
}: Props) => {
2324
const [query, setQuery] = useQuery();
25+
const [search, setSearch] = useState(query.search || "");
2426
const triggers = useServerObject<PagedModel<Trigger>>(url);
2527

28+
useEffect(() => {
29+
setSearch(query.search || "");
30+
}, [query]);
31+
2632
const doReload = () => {
2733
return triggers.doGet(
2834
"?size=10&" + new URLSearchParams(query).toString()
@@ -44,16 +50,12 @@ const TriggersSearchView = ({
4450
<Row>
4551
<Col>
4652
<Form.Control
47-
defaultValue={query.id || ""}
53+
value={search}
54+
onChange={(e) => setSearch(e.target.value)}
4855
type="text"
4956
placeholder="ID search, '*' any string, '_' any character ..."
5057
onKeyUp={(e) =>
51-
e.key == "Enter"
52-
? doUpdateQuery({
53-
search: (e.target as HTMLInputElement)
54-
.value,
55-
})
56-
: null
58+
e.key == "Enter" ? doUpdateQuery({ search }) : null
5759
}
5860
/>
5961
</Col>
@@ -99,6 +101,7 @@ const TriggersSearchView = ({
99101
afterTriggerChanged={
100102
allowUpdateAnCancel ? doReload : undefined
101103
}
104+
onFieldClick={(k, v) => doUpdateQuery({ [k]: v })}
102105
/>
103106
))}
104107
</Accordion>

ui/src/shared/view/trigger.view.tsx

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,30 @@ import StackTraceView from "./stacktrace-view";
99
const TriggerView = ({
1010
trigger,
1111
history,
12+
onClick,
1213
}: {
1314
trigger: Trigger;
1415
history?: Trigger[];
16+
onClick: (key: string, value?: string) => void;
1517
}) => {
1618
return (
1719
<>
1820
<Row>
1921
<Col md="6" xl="4">
20-
<LabeledText label="Key Id" value={trigger.key.id} />
22+
<LabeledText
23+
label="Key Id"
24+
value={trigger.key.id}
25+
onClick={() => onClick("search", trigger.key.id)}
26+
/>
2127
</Col>
2228
<Col md="6" xl="4">
23-
<LabeledText label="Task" value={trigger.key.taskName} />
29+
<LabeledText
30+
label="Task"
31+
value={trigger.key.taskName}
32+
onClick={() =>
33+
onClick("taskName", trigger.key.taskName)
34+
}
35+
/>
2436
</Col>
2537
<Col md="6" xl="4">
2638
<LabeledText label="Priority" value={trigger.priority} />
@@ -31,10 +43,15 @@ const TriggerView = ({
3143
<LabeledText
3244
label="Correlation Id"
3345
value={trigger.correlationId}
46+
onClick={() => onClick("search", trigger.key.id)}
3447
/>
3548
</Col>
3649
<Col md="6" xl="4">
37-
<LabeledText label="Tag" value={trigger.tag} />
50+
<LabeledText
51+
label="Tag"
52+
value={trigger.tag}
53+
onClick={() => onClick("search", trigger.key.id)}
54+
/>
3855
</Col>
3956
<Col md="6" xl="4">
4057
<LabeledText

0 commit comments

Comments
 (0)