mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
fix profile issue filters and kanban
This commit is contained in:
parent
2bf7e63625
commit
edd1f6e423
@ -18,6 +18,7 @@ export const ProfileIssuesAppliedFiltersRoot: React.FC = observer(() => {
|
||||
const {
|
||||
workspace: { workspaceLabels },
|
||||
workspaceProfileIssuesFilter: { issueFilters, updateFilters },
|
||||
projectMember: { projectMembers },
|
||||
} = useMobxStore();
|
||||
|
||||
const userFilters = issueFilters?.filters;
|
||||
@ -64,7 +65,7 @@ export const ProfileIssuesAppliedFiltersRoot: React.FC = observer(() => {
|
||||
handleClearAllFilters={handleClearAllFilters}
|
||||
handleRemoveFilter={handleRemoveFilter}
|
||||
labels={workspaceLabels ?? []}
|
||||
members={[]}
|
||||
members={projectMembers?.map((m) => m.member)}
|
||||
states={[]}
|
||||
/>
|
||||
</div>
|
||||
|
@ -5,6 +5,7 @@ import { IIssueDisplayFilterOptions, IIssueDisplayProperties, IIssueFilterOption
|
||||
import { EFilterType } from "store/issues/types";
|
||||
import { handleIssueQueryParamsByLayout } from "helpers/issue.helper";
|
||||
import { IssueFilterBaseStore } from "../project-issues/base-issue-filter.store";
|
||||
import { isEmpty } from "lodash";
|
||||
|
||||
interface IProjectIssuesFiltersOptions {
|
||||
filters: IIssueFilterOptions;
|
||||
@ -121,12 +122,18 @@ export class GlobalIssuesFilterStore extends IssueFilterBaseStore implements IGl
|
||||
|
||||
let _projectIssueFilters = this.projectIssueFilters;
|
||||
if (!_projectIssueFilters) _projectIssueFilters = {};
|
||||
if (!_projectIssueFilters[workspaceSlug])
|
||||
_projectIssueFilters[workspaceSlug] = { filters: {}, displayFilters: {}, displayProperties: {} };
|
||||
_projectIssueFilters[workspaceSlug] = {
|
||||
..._projectIssueFilters[workspaceSlug],
|
||||
...issueFilters,
|
||||
};
|
||||
if (!_projectIssueFilters[workspaceSlug]) {
|
||||
_projectIssueFilters[workspaceSlug] = { displayProperties: {} } as IProjectIssuesDisplayOptions;
|
||||
}
|
||||
if (
|
||||
isEmpty(_projectIssueFilters[workspaceSlug].filters) ||
|
||||
isEmpty(_projectIssueFilters[workspaceSlug].displayFilters)
|
||||
) {
|
||||
_projectIssueFilters[workspaceSlug] = {
|
||||
..._projectIssueFilters[workspaceSlug],
|
||||
...issueFilters,
|
||||
};
|
||||
}
|
||||
|
||||
runInAction(() => {
|
||||
this.projectIssueFilters = _projectIssueFilters;
|
||||
@ -192,15 +199,15 @@ export class GlobalIssuesFilterStore extends IssueFilterBaseStore implements IGl
|
||||
fetchDisplayProperties = async (workspaceSlug: string) => {
|
||||
try {
|
||||
const displayProperties: IIssueDisplayProperties = {
|
||||
assignee: false,
|
||||
start_date: false,
|
||||
due_date: false,
|
||||
assignee: true,
|
||||
start_date: true,
|
||||
due_date: true,
|
||||
labels: false,
|
||||
key: false,
|
||||
priority: false,
|
||||
priority: true,
|
||||
state: false,
|
||||
sub_issue_count: false,
|
||||
link: false,
|
||||
sub_issue_count: true,
|
||||
link: true,
|
||||
attachment_count: false,
|
||||
estimate: false,
|
||||
created_on: false,
|
||||
@ -209,12 +216,15 @@ export class GlobalIssuesFilterStore extends IssueFilterBaseStore implements IGl
|
||||
|
||||
let _projectIssueFilters = { ...this.projectIssueFilters };
|
||||
if (!_projectIssueFilters) _projectIssueFilters = {};
|
||||
if (!_projectIssueFilters[workspaceSlug])
|
||||
_projectIssueFilters[workspaceSlug] = { filters: {}, displayFilters: {}, displayProperties: {} };
|
||||
_projectIssueFilters[workspaceSlug] = {
|
||||
..._projectIssueFilters[workspaceSlug],
|
||||
displayProperties: displayProperties,
|
||||
};
|
||||
if (!_projectIssueFilters[workspaceSlug]) {
|
||||
_projectIssueFilters[workspaceSlug] = { filters: {}, displayFilters: {} } as IProjectIssuesDisplayOptions;
|
||||
}
|
||||
if (isEmpty(_projectIssueFilters[workspaceSlug].displayProperties)) {
|
||||
_projectIssueFilters[workspaceSlug] = {
|
||||
..._projectIssueFilters[workspaceSlug],
|
||||
displayProperties: displayProperties,
|
||||
};
|
||||
}
|
||||
|
||||
runInAction(() => {
|
||||
this.projectIssueFilters = _projectIssueFilters;
|
||||
|
@ -5,6 +5,7 @@ import { IIssueDisplayFilterOptions, IIssueDisplayProperties, IIssueFilterOption
|
||||
import { EFilterType } from "store/issues/types";
|
||||
import { handleIssueQueryParamsByLayout } from "helpers/issue.helper";
|
||||
import { IssueFilterBaseStore } from "../project-issues/base-issue-filter.store";
|
||||
import { isEmpty } from "lodash";
|
||||
|
||||
interface IProjectIssuesFiltersOptions {
|
||||
filters: IIssueFilterOptions;
|
||||
@ -121,12 +122,18 @@ export class ProfileIssuesFilterStore extends IssueFilterBaseStore implements IP
|
||||
|
||||
let _projectIssueFilters = this.projectIssueFilters;
|
||||
if (!_projectIssueFilters) _projectIssueFilters = {};
|
||||
if (!_projectIssueFilters[workspaceSlug])
|
||||
_projectIssueFilters[workspaceSlug] = { filters: {}, displayFilters: {}, displayProperties: {} };
|
||||
_projectIssueFilters[workspaceSlug] = {
|
||||
..._projectIssueFilters[workspaceSlug],
|
||||
...issueFilters,
|
||||
};
|
||||
if (!_projectIssueFilters[workspaceSlug]) {
|
||||
_projectIssueFilters[workspaceSlug] = { displayProperties: {} } as IProjectIssuesDisplayOptions;
|
||||
}
|
||||
if (
|
||||
isEmpty(_projectIssueFilters[workspaceSlug].filters) ||
|
||||
isEmpty(_projectIssueFilters[workspaceSlug].displayFilters)
|
||||
) {
|
||||
_projectIssueFilters[workspaceSlug] = {
|
||||
..._projectIssueFilters[workspaceSlug],
|
||||
...issueFilters,
|
||||
};
|
||||
}
|
||||
|
||||
runInAction(() => {
|
||||
this.projectIssueFilters = _projectIssueFilters;
|
||||
@ -184,7 +191,6 @@ export class ProfileIssuesFilterStore extends IssueFilterBaseStore implements IP
|
||||
|
||||
return _filters;
|
||||
} catch (error) {
|
||||
this.fetchDisplayFilters(workspaceSlug);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
@ -192,15 +198,15 @@ export class ProfileIssuesFilterStore extends IssueFilterBaseStore implements IP
|
||||
fetchDisplayProperties = async (workspaceSlug: string) => {
|
||||
try {
|
||||
const displayProperties: IIssueDisplayProperties = {
|
||||
assignee: false,
|
||||
start_date: false,
|
||||
due_date: false,
|
||||
assignee: true,
|
||||
start_date: true,
|
||||
due_date: true,
|
||||
labels: false,
|
||||
key: false,
|
||||
priority: false,
|
||||
priority: true,
|
||||
state: false,
|
||||
sub_issue_count: false,
|
||||
link: false,
|
||||
sub_issue_count: true,
|
||||
link: true,
|
||||
attachment_count: false,
|
||||
estimate: false,
|
||||
created_on: false,
|
||||
@ -209,12 +215,15 @@ export class ProfileIssuesFilterStore extends IssueFilterBaseStore implements IP
|
||||
|
||||
let _projectIssueFilters = { ...this.projectIssueFilters };
|
||||
if (!_projectIssueFilters) _projectIssueFilters = {};
|
||||
if (!_projectIssueFilters[workspaceSlug])
|
||||
_projectIssueFilters[workspaceSlug] = { filters: {}, displayFilters: {}, displayProperties: {} };
|
||||
_projectIssueFilters[workspaceSlug] = {
|
||||
..._projectIssueFilters[workspaceSlug],
|
||||
displayProperties: displayProperties,
|
||||
};
|
||||
if (!_projectIssueFilters[workspaceSlug]) {
|
||||
_projectIssueFilters[workspaceSlug] = { filters: {}, displayFilters: {} } as IProjectIssuesDisplayOptions;
|
||||
}
|
||||
if (isEmpty(_projectIssueFilters[workspaceSlug].displayProperties)) {
|
||||
_projectIssueFilters[workspaceSlug] = {
|
||||
..._projectIssueFilters[workspaceSlug],
|
||||
displayProperties: displayProperties,
|
||||
};
|
||||
}
|
||||
|
||||
runInAction(() => {
|
||||
this.projectIssueFilters = _projectIssueFilters;
|
||||
@ -242,7 +251,6 @@ export class ProfileIssuesFilterStore extends IssueFilterBaseStore implements IP
|
||||
|
||||
return properties;
|
||||
} catch (error) {
|
||||
this.fetchDisplayProperties(workspaceSlug);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
@ -102,6 +102,7 @@ export class ProfileIssuesStore extends IssueBaseStore implements IProfileIssues
|
||||
const displayFilters = this.rootStore?.workspaceProfileIssuesFilter?.issueFilters?.displayFilters;
|
||||
if (!displayFilters) return undefined;
|
||||
|
||||
const subGroupBy = displayFilters?.sub_group_by;
|
||||
const groupBy = displayFilters?.group_by;
|
||||
const orderBy = displayFilters?.order_by;
|
||||
const layout = displayFilters?.layout;
|
||||
@ -113,6 +114,15 @@ export class ProfileIssuesStore extends IssueBaseStore implements IProfileIssues
|
||||
if (layout === "list" && orderBy) {
|
||||
if (groupBy) issues = this.groupedIssues(groupBy, orderBy, this.issues[currentUserId][this.currentUserIssueTab]);
|
||||
else issues = this.unGroupedIssues(orderBy, this.issues[currentUserId][this.currentUserIssueTab]);
|
||||
} else if (layout === "kanban" && groupBy && orderBy) {
|
||||
if (subGroupBy)
|
||||
issues = this.subGroupedIssues(
|
||||
subGroupBy,
|
||||
groupBy,
|
||||
orderBy,
|
||||
this.issues[currentUserId][this.currentUserIssueTab]
|
||||
);
|
||||
else issues = this.groupedIssues(groupBy, orderBy, this.issues[currentUserId][this.currentUserIssueTab]);
|
||||
}
|
||||
|
||||
return issues;
|
||||
|
Loading…
Reference in New Issue
Block a user