Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
2b49025f
Commit
2b49025f
authored
Jun 04, 2024
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: update memo filters
parent
bddfe00b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
47 deletions
+18
-47
MemoFilter.tsx
web/src/components/MemoFilter.tsx
+1
-41
UserStatisticsView.tsx
web/src/components/UserStatisticsView.tsx
+17
-6
No files found.
web/src/components/MemoFilter.tsx
View file @
2b49025f
...
@@ -14,14 +14,7 @@ const MemoFilter = (props: Props) => {
...
@@ -14,14 +14,7 @@ const MemoFilter = (props: Props) => {
const
location
=
useLocation
();
const
location
=
useLocation
();
const
filterStore
=
useFilterStore
();
const
filterStore
=
useFilterStore
();
const
filter
=
filterStore
.
state
;
const
filter
=
filterStore
.
state
;
const
showFilter
=
Boolean
(
const
showFilter
=
Boolean
(
filter
.
tag
||
filter
.
text
||
filter
.
visibility
);
filter
.
tag
||
filter
.
text
||
filter
.
visibility
||
filter
.
memoPropertyFilter
?.
hasLink
||
filter
.
memoPropertyFilter
?.
hasTaskList
||
filter
.
memoPropertyFilter
?.
hasCode
,
);
useEffect
(()
=>
{
useEffect
(()
=>
{
filterStore
.
clearFilter
();
filterStore
.
clearFilter
();
...
@@ -75,39 +68,6 @@ const MemoFilter = (props: Props) => {
...
@@ -75,39 +68,6 @@ const MemoFilter = (props: Props) => {
<
Icon
.
X
className=
"w-4 h-auto ml-1 opacity-40"
/>
<
Icon
.
X
className=
"w-4 h-auto ml-1 opacity-40"
/>
</
div
>
</
div
>
)
}
)
}
{
filter
.
memoPropertyFilter
?.
hasLink
&&
(
<
div
className=
"max-w-xs flex flex-row justify-start items-center px-2 cursor-pointer dark:text-gray-400 bg-gray-200 dark:bg-zinc-800 rounded whitespace-nowrap truncate hover:line-through"
onClick=
{
()
=>
{
filterStore
.
setMemoPropertyFilter
({
hasLink
:
false
});
}
}
>
<
Icon
.
Link
className=
"w-4 h-auto mr-1 text-gray-500 dark:text-gray-400"
/>
Has Link
<
Icon
.
X
className=
"w-4 h-auto ml-1 opacity-40"
/>
</
div
>
)
}
{
filter
.
memoPropertyFilter
?.
hasTaskList
&&
(
<
div
className=
"max-w-xs flex flex-row justify-start items-center px-2 cursor-pointer dark:text-gray-400 bg-gray-200 dark:bg-zinc-800 rounded whitespace-nowrap truncate hover:line-through"
onClick=
{
()
=>
{
filterStore
.
setMemoPropertyFilter
({
hasTaskList
:
false
});
}
}
>
<
Icon
.
CheckCircle
className=
"w-4 h-auto mr-1 text-gray-500 dark:text-gray-400"
/>
Has Task
<
Icon
.
X
className=
"w-4 h-auto ml-1 opacity-40"
/>
</
div
>
)
}
{
filter
.
memoPropertyFilter
?.
hasCode
&&
(
<
div
className=
"max-w-xs flex flex-row justify-start items-center px-2 cursor-pointer dark:text-gray-400 bg-gray-200 dark:bg-zinc-800 rounded whitespace-nowrap truncate hover:line-through"
onClick=
{
()
=>
{
filterStore
.
setMemoPropertyFilter
({
hasCode
:
false
});
}
}
>
<
Icon
.
Code2
className=
"w-4 h-auto mr-1 text-gray-500 dark:text-gray-400"
/>
Has Code
<
Icon
.
X
className=
"w-4 h-auto ml-1 opacity-40"
/>
</
div
>
)
}
</
div
>
</
div
>
);
);
};
};
...
...
web/src/components/UserStatisticsView.tsx
View file @
2b49025f
import
{
Divider
,
Tooltip
}
from
"@mui/joy"
;
import
{
Divider
,
Tooltip
}
from
"@mui/joy"
;
import
clsx
from
"clsx"
;
import
{
useState
}
from
"react"
;
import
{
useState
}
from
"react"
;
import
toast
from
"react-hot-toast"
;
import
toast
from
"react-hot-toast"
;
import
{
memoServiceClient
}
from
"@/grpcweb"
;
import
{
memoServiceClient
}
from
"@/grpcweb"
;
...
@@ -29,6 +30,7 @@ const UserStatisticsView = (props: Props) => {
...
@@ -29,6 +30,7 @@ const UserStatisticsView = (props: Props) => {
const
[
memoStats
,
setMemoStats
]
=
useState
<
UserMemoStats
>
({
links
:
0
,
todos
:
0
,
code
:
0
});
const
[
memoStats
,
setMemoStats
]
=
useState
<
UserMemoStats
>
({
links
:
0
,
todos
:
0
,
code
:
0
});
const
days
=
Math
.
ceil
((
Date
.
now
()
-
user
.
createTime
!
.
getTime
())
/
86400000
);
const
days
=
Math
.
ceil
((
Date
.
now
()
-
user
.
createTime
!
.
getTime
())
/
86400000
);
const
memos
=
Object
.
values
(
memoStore
.
getState
().
memoMapByName
);
const
memos
=
Object
.
values
(
memoStore
.
getState
().
memoMapByName
);
const
filter
=
filterStore
.
state
;
useAsyncEffect
(
async
()
=>
{
useAsyncEffect
(
async
()
=>
{
setIsRequesting
(
true
);
setIsRequesting
(
true
);
...
@@ -91,8 +93,11 @@ const UserStatisticsView = (props: Props) => {
...
@@ -91,8 +93,11 @@ const UserStatisticsView = (props: Props) => {
<
Divider
className=
"!my-1 opacity-50"
/>
<
Divider
className=
"!my-1 opacity-50"
/>
<
div
className=
"w-full mt-1 flex flex-row justify-start items-center gap-x-2 gap-y-1 flex-wrap"
>
<
div
className=
"w-full mt-1 flex flex-row justify-start items-center gap-x-2 gap-y-1 flex-wrap"
>
<
div
<
div
className=
"w-auto border dark:border-zinc-800 pl-1 pr-1.5 rounded-md flex justify-between items-center cursor-pointer hover:opacity-80"
className=
{
clsx
(
onClick=
{
()
=>
filterStore
.
setMemoPropertyFilter
({
hasLink
:
true
})
}
"w-auto border dark:border-zinc-800 pl-1 pr-1.5 rounded-md flex justify-between items-center cursor-pointer hover:opacity-80"
,
filter
.
memoPropertyFilter
?.
hasLink
?
"bg-blue-50 dark:bg-blue-900 shadow"
:
""
,
)
}
onClick=
{
()
=>
filterStore
.
setMemoPropertyFilter
({
hasLink
:
!
filter
.
memoPropertyFilter
?.
hasLink
})
}
>
>
<
div
className=
"w-auto flex justify-start items-center mr-1"
>
<
div
className=
"w-auto flex justify-start items-center mr-1"
>
<
Icon
.
Link
className=
"w-4 h-auto mr-1"
/>
<
Icon
.
Link
className=
"w-4 h-auto mr-1"
/>
...
@@ -101,8 +106,11 @@ const UserStatisticsView = (props: Props) => {
...
@@ -101,8 +106,11 @@ const UserStatisticsView = (props: Props) => {
<
span
className=
"text-sm truncate"
>
{
memoStats
.
links
}
</
span
>
<
span
className=
"text-sm truncate"
>
{
memoStats
.
links
}
</
span
>
</
div
>
</
div
>
<
div
<
div
className=
"w-auto border dark:border-zinc-800 pl-1 pr-1.5 rounded-md flex justify-between items-center cursor-pointer hover:opacity-80"
className=
{
clsx
(
onClick=
{
()
=>
filterStore
.
setMemoPropertyFilter
({
hasTaskList
:
true
})
}
"w-auto border dark:border-zinc-800 pl-1 pr-1.5 rounded-md flex justify-between items-center cursor-pointer hover:opacity-80"
,
filter
.
memoPropertyFilter
?.
hasTaskList
?
"bg-blue-50 dark:bg-blue-900 shadow"
:
""
,
)
}
onClick=
{
()
=>
filterStore
.
setMemoPropertyFilter
({
hasTaskList
:
!
filter
.
memoPropertyFilter
?.
hasTaskList
})
}
>
>
<
div
className=
"w-auto flex justify-start items-center mr-1"
>
<
div
className=
"w-auto flex justify-start items-center mr-1"
>
<
Icon
.
CheckCircle
className=
"w-4 h-auto mr-1"
/>
<
Icon
.
CheckCircle
className=
"w-4 h-auto mr-1"
/>
...
@@ -111,8 +119,11 @@ const UserStatisticsView = (props: Props) => {
...
@@ -111,8 +119,11 @@ const UserStatisticsView = (props: Props) => {
<
span
className=
"text-sm truncate"
>
{
memoStats
.
todos
}
</
span
>
<
span
className=
"text-sm truncate"
>
{
memoStats
.
todos
}
</
span
>
</
div
>
</
div
>
<
div
<
div
className=
"w-auto border dark:border-zinc-800 pl-1 pr-1.5 rounded-md flex justify-between items-center cursor-pointer hover:opacity-80"
className=
{
clsx
(
onClick=
{
()
=>
filterStore
.
setMemoPropertyFilter
({
hasCode
:
true
})
}
"w-auto border dark:border-zinc-800 pl-1 pr-1.5 rounded-md flex justify-between items-center cursor-pointer hover:opacity-80"
,
filter
.
memoPropertyFilter
?.
hasCode
?
"bg-blue-50 dark:bg-blue-900 shadow"
:
""
,
)
}
onClick=
{
()
=>
filterStore
.
setMemoPropertyFilter
({
hasCode
:
!
filter
.
memoPropertyFilter
?.
hasCode
})
}
>
>
<
div
className=
"w-auto flex justify-start items-center mr-1"
>
<
div
className=
"w-auto flex justify-start items-center mr-1"
>
<
Icon
.
Code2
className=
"w-4 h-auto mr-1"
/>
<
Icon
.
Code2
className=
"w-4 h-auto mr-1"
/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment