mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
Merge branch 'develop' of https://github.com/makeplane/plane into feat/csv_exporter
This commit is contained in:
commit
678e20074b
@ -68,7 +68,7 @@ def create_zip_file(files):
|
|||||||
def upload_to_s3(zip_file, workspace_id, token_id, slug):
|
def upload_to_s3(zip_file, workspace_id, token_id, slug):
|
||||||
s3 = boto3.client(
|
s3 = boto3.client(
|
||||||
"s3",
|
"s3",
|
||||||
region_name="ap-south-1",
|
region_name=settings.AWS_REGION,
|
||||||
aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
|
aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
|
||||||
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
|
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
|
||||||
config=Config(signature_version="s3v4"),
|
config=Config(signature_version="s3v4"),
|
||||||
|
@ -270,16 +270,18 @@ export const MyIssuesView: React.FC<Props> = ({
|
|||||||
? "You have not created any issue yet."
|
? "You have not created any issue yet."
|
||||||
: "You have not subscribed to any issue yet.",
|
: "You have not subscribed to any issue yet.",
|
||||||
description: "Keep track of your work in a single place.",
|
description: "Keep track of your work in a single place.",
|
||||||
primaryButton: {
|
primaryButton: filters.subscriber
|
||||||
icon: <PlusIcon className="h-4 w-4" />,
|
? undefined
|
||||||
text: "New Issue",
|
: {
|
||||||
onClick: () => {
|
icon: <PlusIcon className="h-4 w-4" />,
|
||||||
const e = new KeyboardEvent("keydown", {
|
text: "New Issue",
|
||||||
key: "c",
|
onClick: () => {
|
||||||
});
|
const e = new KeyboardEvent("keydown", {
|
||||||
document.dispatchEvent(e);
|
key: "c",
|
||||||
},
|
});
|
||||||
},
|
document.dispatchEvent(e);
|
||||||
|
},
|
||||||
|
},
|
||||||
}}
|
}}
|
||||||
handleOnDragEnd={handleOnDragEnd}
|
handleOnDragEnd={handleOnDragEnd}
|
||||||
handleIssueAction={handleIssueAction}
|
handleIssueAction={handleIssueAction}
|
||||||
|
@ -9,7 +9,6 @@ import { DragDropContext, Draggable, DropResult, Droppable } from "react-beautif
|
|||||||
import { Disclosure, Transition } from "@headlessui/react";
|
import { Disclosure, Transition } from "@headlessui/react";
|
||||||
// hooks
|
// hooks
|
||||||
import useToast from "hooks/use-toast";
|
import useToast from "hooks/use-toast";
|
||||||
import useTheme from "hooks/use-theme";
|
|
||||||
import useUserAuth from "hooks/use-user-auth";
|
import useUserAuth from "hooks/use-user-auth";
|
||||||
import useProjects from "hooks/use-projects";
|
import useProjects from "hooks/use-projects";
|
||||||
// components
|
// components
|
||||||
@ -42,18 +41,15 @@ export const ProjectSidebarList: FC = () => {
|
|||||||
const containerRef = useRef<HTMLDivElement | null>(null);
|
const containerRef = useRef<HTMLDivElement | null>(null);
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { workspaceSlug, projectId } = router.query;
|
const { workspaceSlug } = router.query;
|
||||||
|
|
||||||
const { user } = useUserAuth();
|
const { user } = useUserAuth();
|
||||||
|
|
||||||
const { collapsed: sidebarCollapse } = useTheme();
|
|
||||||
const { setToastAlert } = useToast();
|
const { setToastAlert } = useToast();
|
||||||
|
|
||||||
const { projects: allProjects } = useProjects();
|
const { projects: allProjects } = useProjects();
|
||||||
|
|
||||||
const joinedProjects = allProjects?.filter((p) => p.sort_order);
|
const joinedProjects = allProjects?.filter((p) => p.sort_order);
|
||||||
const favoriteProjects = allProjects?.filter((p) => p.is_favorite);
|
const favoriteProjects = allProjects?.filter((p) => p.is_favorite);
|
||||||
const otherProjects = allProjects?.filter((p) => p.sort_order === null);
|
|
||||||
|
|
||||||
const orderedJoinedProjects: IProject[] | undefined = joinedProjects
|
const orderedJoinedProjects: IProject[] | undefined = joinedProjects
|
||||||
? orderArrayBy(joinedProjects, "sort_order", "ascending")
|
? orderArrayBy(joinedProjects, "sort_order", "ascending")
|
||||||
@ -300,10 +296,10 @@ export const ProjectSidebarList: FC = () => {
|
|||||||
</Droppable>
|
</Droppable>
|
||||||
</DragDropContext>
|
</DragDropContext>
|
||||||
|
|
||||||
{allProjects && allProjects.length === 0 && (
|
{joinedProjects && joinedProjects.length === 0 && (
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="flex w-full items-center gap-2 px-3 py-2 text-sm text-custom-sidebar-text-200 mt-5"
|
className="flex w-full items-center gap-2 px-3 text-sm text-custom-sidebar-text-200"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
const e = new KeyboardEvent("keydown", {
|
const e = new KeyboardEvent("keydown", {
|
||||||
key: "p",
|
key: "p",
|
||||||
|
@ -26,7 +26,9 @@ const WorkspaceProjectPage = observer(() => {
|
|||||||
|
|
||||||
const { workspace_slug, project_slug } = routerParams as { workspace_slug: string; project_slug: string };
|
const { workspace_slug, project_slug } = routerParams as { workspace_slug: string; project_slug: string };
|
||||||
const board =
|
const board =
|
||||||
routerSearchparams && routerSearchparams.get("board") != null && (routerSearchparams.get("board") as TIssueBoardKeys | "");
|
routerSearchparams &&
|
||||||
|
routerSearchparams.get("board") != null &&
|
||||||
|
(routerSearchparams.get("board") as TIssueBoardKeys | "");
|
||||||
|
|
||||||
// updating default board view when we are in the issues page
|
// updating default board view when we are in the issues page
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const path = require('path')
|
const path = require("path");
|
||||||
|
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
reactStrictMode: false,
|
reactStrictMode: false,
|
||||||
@ -8,7 +8,7 @@ const nextConfig = {
|
|||||||
outputFileTracingRoot: path.join(__dirname, "../../"),
|
outputFileTracingRoot: path.join(__dirname, "../../"),
|
||||||
appDir: true,
|
appDir: true,
|
||||||
},
|
},
|
||||||
output: 'standalone'
|
output: "standalone",
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = nextConfig;
|
module.exports = nextConfig;
|
||||||
|
@ -3,14 +3,12 @@ import axios from "axios";
|
|||||||
// js cookie
|
// js cookie
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
|
|
||||||
const base_url: string | null = "http://localhost:8000";
|
|
||||||
|
|
||||||
abstract class APIService {
|
abstract class APIService {
|
||||||
protected baseURL: string;
|
protected baseURL: string;
|
||||||
protected headers: any = {};
|
protected headers: any = {};
|
||||||
|
|
||||||
constructor(baseURL: string) {
|
constructor(_baseURL: string) {
|
||||||
this.baseURL = base_url ? base_url : baseURL;
|
this.baseURL = _baseURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
setRefreshToken(token: string) {
|
setRefreshToken(token: string) {
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
// services
|
// services
|
||||||
import APIService from "services/api.service";
|
import APIService from "services/api.service";
|
||||||
|
|
||||||
const { NEXT_PUBLIC_API_BASE_URL } = process.env;
|
|
||||||
|
|
||||||
class IssueService extends APIService {
|
class IssueService extends APIService {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
|
super(process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
|
||||||
}
|
}
|
||||||
|
|
||||||
async getPublicIssues(workspace_slug: string, project_slug: string): Promise<any> {
|
async getPublicIssues(workspace_slug: string, project_slug: string): Promise<any> {
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
// services
|
// services
|
||||||
import APIService from "services/api.service";
|
import APIService from "services/api.service";
|
||||||
|
|
||||||
const { NEXT_PUBLIC_API_BASE_URL } = process.env;
|
|
||||||
|
|
||||||
class ProjectService extends APIService {
|
class ProjectService extends APIService {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
|
super(process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
|
||||||
}
|
}
|
||||||
|
|
||||||
async getProjectSettingsAsync(workspace_slug: string, project_slug: string): Promise<any> {
|
async getProjectSettingsAsync(workspace_slug: string, project_slug: string): Promise<any> {
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
// services
|
// services
|
||||||
import APIService from "services/api.service";
|
import APIService from "services/api.service";
|
||||||
|
|
||||||
const { NEXT_PUBLIC_API_BASE_URL } = process.env;
|
|
||||||
|
|
||||||
class UserService extends APIService {
|
class UserService extends APIService {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
|
super(process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
|
||||||
}
|
}
|
||||||
|
|
||||||
async currentUser(): Promise<any> {
|
async currentUser(): Promise<any> {
|
||||||
|
@ -64,7 +64,7 @@ services:
|
|||||||
container_name: planedeploy
|
container_name: planedeploy
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: ./apps/space/Dockerfile.space space
|
dockerfile: ./apps/space/Dockerfile.space
|
||||||
args:
|
args:
|
||||||
NEXT_PUBLIC_API_BASE_URL: http://localhost:8000
|
NEXT_PUBLIC_API_BASE_URL: http://localhost:8000
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -6558,13 +6558,20 @@ prosemirror-menu@^1.2.1:
|
|||||||
prosemirror-history "^1.0.0"
|
prosemirror-history "^1.0.0"
|
||||||
prosemirror-state "^1.0.0"
|
prosemirror-state "^1.0.0"
|
||||||
|
|
||||||
prosemirror-model@1.18.1, prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1, prosemirror-model@^1.19.0, prosemirror-model@^1.8.1:
|
prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1, prosemirror-model@^1.8.1:
|
||||||
version "1.18.1"
|
version "1.18.1"
|
||||||
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.18.1.tgz#1d5d6b6de7b983ee67a479dc607165fdef3935bd"
|
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.18.1.tgz#1d5d6b6de7b983ee67a479dc607165fdef3935bd"
|
||||||
integrity sha512-IxSVBKAEMjD7s3n8cgtwMlxAXZrC7Mlag7zYsAKDndAqnDScvSmp/UdnRTV/B33lTCVU3CCm7dyAn/rVVD0mcw==
|
integrity sha512-IxSVBKAEMjD7s3n8cgtwMlxAXZrC7Mlag7zYsAKDndAqnDScvSmp/UdnRTV/B33lTCVU3CCm7dyAn/rVVD0mcw==
|
||||||
dependencies:
|
dependencies:
|
||||||
orderedmap "^2.0.0"
|
orderedmap "^2.0.0"
|
||||||
|
|
||||||
|
prosemirror-model@^1.19.0:
|
||||||
|
version "1.19.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.19.3.tgz#f0d55285487fefd962d0ac695f716f4ec6705006"
|
||||||
|
integrity sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ==
|
||||||
|
dependencies:
|
||||||
|
orderedmap "^2.0.0"
|
||||||
|
|
||||||
prosemirror-schema-basic@^1.2.0:
|
prosemirror-schema-basic@^1.2.0:
|
||||||
version "1.2.2"
|
version "1.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz#6695f5175e4628aab179bf62e5568628b9cfe6c7"
|
resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz#6695f5175e4628aab179bf62e5568628b9cfe6c7"
|
||||||
|
Loading…
Reference in New Issue
Block a user