forked from github/plane
Merge pull request #1100 from makeplane/hot-fix
promote: hotfix to stage-release
This commit is contained in:
commit
15a846ce06
@ -1,4 +1,8 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html>
|
<html>
|
||||||
Your Export is ready
|
Hey there,<br/>
|
||||||
|
Your requested data export from Plane Analytics is now ready. The information has been compiled into a CSV format for your convenience.<br/>
|
||||||
|
Please find the attachment and download the CSV file. This file can easily be imported into any spreadsheet program for further analysis.<br/>
|
||||||
|
If you require any assistance or have any questions, please do not hesitate to contact us.<br/>
|
||||||
|
Thank you
|
||||||
</html>
|
</html>
|
||||||
|
@ -104,14 +104,6 @@ export const CompletedCycles: React.FC<CompletedCyclesListProps> = ({
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{cycleView === "gantt" && (
|
|
||||||
<EmptyState
|
|
||||||
type="cycle"
|
|
||||||
title="Create New Cycle"
|
|
||||||
description="Sprint more effectively with Cycles by confining your project to a fixed amount of time. Create new cycle now."
|
|
||||||
imgURL={emptyCycle}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<EmptyState
|
<EmptyState
|
||||||
|
@ -23,9 +23,9 @@ export const CyclesListGanttChartView: FC<Props> = ({ cycles }) => {
|
|||||||
|
|
||||||
// rendering issues on gantt card
|
// rendering issues on gantt card
|
||||||
const GanttBlockView = ({ data }: { data: ICycle }) => (
|
const GanttBlockView = ({ data }: { data: ICycle }) => (
|
||||||
<div className="relative flex w-full h-full overflow-hidden">
|
<div className="relative flex items-center w-full h-full overflow-hidden shadow-sm">
|
||||||
<div className="flex-shrink-0 w-[4px] h-auto" style={{ backgroundColor: "#858e96" }} />
|
<div className="flex-shrink-0 w-[4px] h-full" style={{ backgroundColor: "#858e96" }} />
|
||||||
<div className="inline-block text-brand-base text-sm whitespace-nowrap py-[4px] px-1.5">
|
<div className="w-full text-brand-base text-[15px] whitespace-nowrap py-[4px] px-2.5 overflow-hidden">
|
||||||
{data?.name}
|
{data?.name}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -89,9 +89,9 @@ export const CyclesView: React.FC<Props> = ({
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className={`grid h-7 w-7 place-items-center rounded p-1 outline-none duration-300 hover:bg-brand-surface-2 ${
|
className={`grid h-7 w-7 place-items-center rounded p-1 outline-none duration-300 hover:bg-brand-surface-2 ${
|
||||||
cyclesView === "grid" ? "bg-brand-surface-2" : ""
|
cyclesView === "board" ? "bg-brand-surface-2" : ""
|
||||||
}`}
|
}`}
|
||||||
onClick={() => setCyclesView("grid")}
|
onClick={() => setCyclesView("board")}
|
||||||
>
|
>
|
||||||
<Squares2X2Icon className="h-4 w-4 text-brand-secondary" />
|
<Squares2X2Icon className="h-4 w-4 text-brand-secondary" />
|
||||||
</button>
|
</button>
|
||||||
@ -100,7 +100,10 @@ export const CyclesView: React.FC<Props> = ({
|
|||||||
className={`grid h-7 w-7 place-items-center rounded outline-none duration-300 hover:bg-brand-surface-2 ${
|
className={`grid h-7 w-7 place-items-center rounded outline-none duration-300 hover:bg-brand-surface-2 ${
|
||||||
cyclesView === "gantt_chart" ? "bg-brand-surface-2" : ""
|
cyclesView === "gantt_chart" ? "bg-brand-surface-2" : ""
|
||||||
}`}
|
}`}
|
||||||
onClick={() => setCyclesView("gantt_chart")}
|
onClick={() => {
|
||||||
|
setCyclesView("gantt_chart");
|
||||||
|
setCycleTab("All");
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<span className="material-symbols-rounded text-brand-secondary text-[18px] rotate-90">
|
<span className="material-symbols-rounded text-brand-secondary text-[18px] rotate-90">
|
||||||
waterfall_chart
|
waterfall_chart
|
||||||
@ -111,6 +114,7 @@ export const CyclesView: React.FC<Props> = ({
|
|||||||
<Tab.Group
|
<Tab.Group
|
||||||
as={React.Fragment}
|
as={React.Fragment}
|
||||||
defaultIndex={currentTabValue(cycleTab)}
|
defaultIndex={currentTabValue(cycleTab)}
|
||||||
|
selectedIndex={currentTabValue(cycleTab)}
|
||||||
onChange={(i) => {
|
onChange={(i) => {
|
||||||
switch (i) {
|
switch (i) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -123,7 +127,6 @@ export const CyclesView: React.FC<Props> = ({
|
|||||||
return setCycleTab("Completed");
|
return setCycleTab("Completed");
|
||||||
case 4:
|
case 4:
|
||||||
return setCycleTab("Drafts");
|
return setCycleTab("Drafts");
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return setCycleTab("All");
|
return setCycleTab("All");
|
||||||
}
|
}
|
||||||
@ -132,7 +135,10 @@ export const CyclesView: React.FC<Props> = ({
|
|||||||
<div className="flex justify-between">
|
<div className="flex justify-between">
|
||||||
<Tab.List as="div" className="flex flex-wrap items-center justify-start gap-4 text-base">
|
<Tab.List as="div" className="flex flex-wrap items-center justify-start gap-4 text-base">
|
||||||
{["All", "Active", "Upcoming", "Completed", "Drafts"].map((tab, index) => {
|
{["All", "Active", "Upcoming", "Completed", "Drafts"].map((tab, index) => {
|
||||||
if (cyclesView === "gantt_chart" && (tab === "Active" || tab === "Drafts"))
|
if (
|
||||||
|
cyclesView === "gantt_chart" &&
|
||||||
|
(tab === "Active" || tab === "Drafts" || tab === "Completed")
|
||||||
|
)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -162,7 +168,7 @@ export const CyclesView: React.FC<Props> = ({
|
|||||||
type="current"
|
type="current"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{cyclesView === "grid" && (
|
{cyclesView === "board" && (
|
||||||
<AllCyclesBoard
|
<AllCyclesBoard
|
||||||
cycles={cyclesCompleteList}
|
cycles={cyclesCompleteList}
|
||||||
setCreateUpdateCycleModal={setCreateUpdateCycleModal}
|
setCreateUpdateCycleModal={setCreateUpdateCycleModal}
|
||||||
|
@ -32,12 +32,12 @@ export const CycleIssuesGanttChartView: FC<Props> = ({}) => {
|
|||||||
|
|
||||||
// rendering issues on gantt card
|
// rendering issues on gantt card
|
||||||
const GanttBlockView = ({ data }: any) => (
|
const GanttBlockView = ({ data }: any) => (
|
||||||
<div className="relative flex w-full h-full overflow-hidden">
|
<div className="relative flex items-center w-full h-full overflow-hidden shadow-sm">
|
||||||
<div
|
<div
|
||||||
className="flex-shrink-0 w-[4px] h-auto"
|
className="flex-shrink-0 w-[4px] h-full"
|
||||||
style={{ backgroundColor: data?.state_detail?.color || "#858e96" }}
|
style={{ backgroundColor: data?.state_detail?.color || "#858e96" }}
|
||||||
/>
|
/>
|
||||||
<div className="inline-block text-brand-base text-sm whitespace-nowrap py-[4px] px-1.5">
|
<div className="w-full text-brand-base text-[15px] whitespace-nowrap py-[4px] px-2.5 overflow-hidden">
|
||||||
{data?.name}
|
{data?.name}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -21,14 +21,14 @@ export const GanttChartBlocks: FC<{
|
|||||||
className="relative z-10 mt-[58px] h-full w-[4000px] divide-x divide-gray-300 overflow-hidden overflow-y-auto bg-[#999] bg-opacity-5"
|
className="relative z-10 mt-[58px] h-full w-[4000px] divide-x divide-gray-300 overflow-hidden overflow-y-auto bg-[#999] bg-opacity-5"
|
||||||
style={{ width: `${itemsContainerWidth}px` }}
|
style={{ width: `${itemsContainerWidth}px` }}
|
||||||
>
|
>
|
||||||
<div className="w-full divide-y divide-brand-base">
|
<div className="w-full">
|
||||||
{blocks &&
|
{blocks &&
|
||||||
blocks.length > 0 &&
|
blocks.length > 0 &&
|
||||||
blocks.map((block: any, _idx: number) => (
|
blocks.map((block: any, _idx: number) => (
|
||||||
<>
|
<>
|
||||||
{block.start_date && block.target_date && (
|
{block.start_date && block.target_date && (
|
||||||
<ChartDraggable
|
<ChartDraggable
|
||||||
className="relative flex h-[36.5px] items-center"
|
className="relative flex h-[40px] items-center"
|
||||||
key={`blocks-${_idx}`}
|
key={`blocks-${_idx}`}
|
||||||
block={block}
|
block={block}
|
||||||
handleBlock={handleChartBlockPosition}
|
handleBlock={handleChartBlockPosition}
|
||||||
@ -44,15 +44,13 @@ export const GanttChartBlocks: FC<{
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
className="rounded-sm shadow-sm bg-brand-base overflow-hidden relative flex items-center"
|
className="rounded-sm shadow-sm bg-brand-base overflow-hidden relative flex items-center h-[34px] border border-brand-base"
|
||||||
style={{
|
style={{
|
||||||
width: `${block?.position?.width}px`,
|
width: `${block?.position?.width}px`,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div className="w-full h-full relative overflow-hidden">
|
|
||||||
{blockRender({ ...block?.data })}
|
{blockRender({ ...block?.data })}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="flex-shrink-0 relative w-0 h-0 flex items-center invisible group-hover:visible whitespace-nowrap">
|
<div className="flex-shrink-0 relative w-0 h-0 flex items-center invisible group-hover:visible whitespace-nowrap">
|
||||||
<div className="absolute left-0 ml-[5px] mr-[5px] rounded-sm bg-brand-surface-1 px-2 py-0.5 text-xs font-medium">
|
<div className="absolute left-0 ml-[5px] mr-[5px] rounded-sm bg-brand-surface-1 px-2 py-0.5 text-xs font-medium">
|
||||||
@ -71,7 +69,7 @@ export const GanttChartBlocks: FC<{
|
|||||||
{blocks &&
|
{blocks &&
|
||||||
blocks.length > 0 &&
|
blocks.length > 0 &&
|
||||||
blocks.map((block: any, _idx: number) => (
|
blocks.map((block: any, _idx: number) => (
|
||||||
<div className="relative h-[36.5px] bg-brand-base" key={`sidebar-blocks-${_idx}`}>
|
<div className="relative h-[40px] bg-brand-base" key={`sidebar-blocks-${_idx}`}>
|
||||||
{sidebarBlockRender(block?.data)}
|
{sidebarBlockRender(block?.data)}
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
|
@ -214,7 +214,7 @@ export const ChartViewRoot: FC<ChartViewRootProps> = ({
|
|||||||
<div
|
<div
|
||||||
className={`${
|
className={`${
|
||||||
fullScreenMode ? `fixed top-0 bottom-0 left-0 right-0 z-[999999] bg-brand-base` : `relative`
|
fullScreenMode ? `fixed top-0 bottom-0 left-0 right-0 z-[999999] bg-brand-base` : `relative`
|
||||||
} flex h-full flex-col rounded-sm border border-brand-base select-none`}
|
} flex h-full flex-col rounded-sm border border-brand-base select-none bg-brand-base shadow`}
|
||||||
>
|
>
|
||||||
{/* chart title */}
|
{/* chart title */}
|
||||||
<div className="flex w-full flex-shrink-0 flex-wrap items-center gap-5 gap-y-3 whitespace-nowrap p-2 border-b border-brand-base">
|
<div className="flex w-full flex-shrink-0 flex-wrap items-center gap-5 gap-y-3 whitespace-nowrap p-2 border-b border-brand-base">
|
||||||
|
@ -184,7 +184,7 @@ export const getMonthChartItemPositionWidthInMonth = (chartData: ChartDataType,
|
|||||||
diffMonths -= startDate.getMonth();
|
diffMonths -= startDate.getMonth();
|
||||||
diffMonths += itemStartDate.getMonth();
|
diffMonths += itemStartDate.getMonth();
|
||||||
|
|
||||||
scrollPosition = scrollPosition + diffMonths - 1;
|
scrollPosition = scrollPosition + diffMonths;
|
||||||
// position code ends
|
// position code ends
|
||||||
|
|
||||||
// width code starts
|
// width code starts
|
||||||
|
@ -32,12 +32,12 @@ export const IssueGanttChartView: FC<Props> = ({}) => {
|
|||||||
|
|
||||||
// rendering issues on gantt card
|
// rendering issues on gantt card
|
||||||
const GanttBlockView = ({ data }: any) => (
|
const GanttBlockView = ({ data }: any) => (
|
||||||
<div className="relative flex w-full h-full overflow-hidden">
|
<div className="relative flex items-center w-full h-full overflow-hidden shadow-sm">
|
||||||
<div
|
<div
|
||||||
className="flex-shrink-0 w-[4px] h-auto"
|
className="flex-shrink-0 w-[4px] h-full"
|
||||||
style={{ backgroundColor: data?.state_detail?.color || "#858e96" }}
|
style={{ backgroundColor: data?.state_detail?.color || "#858e96" }}
|
||||||
/>
|
/>
|
||||||
<div className="inline-block text-brand-base text-sm whitespace-nowrap py-[4px] px-1.5">
|
<div className="w-full text-brand-base text-[15px] whitespace-nowrap py-[4px] px-2.5 overflow-hidden">
|
||||||
{data?.name}
|
{data?.name}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -156,6 +156,7 @@ export const CreateLabelModal: React.FC<Props> = ({ isOpen, projectId, handleClo
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</Popover>
|
</Popover>
|
||||||
|
<div className="flex w-full flex-col gap-0.5 justify-center">
|
||||||
<Input
|
<Input
|
||||||
type="text"
|
type="text"
|
||||||
id="name"
|
id="name"
|
||||||
@ -166,11 +167,12 @@ export const CreateLabelModal: React.FC<Props> = ({ isOpen, projectId, handleClo
|
|||||||
register={register}
|
register={register}
|
||||||
width="full"
|
width="full"
|
||||||
validations={{
|
validations={{
|
||||||
required: "Name is required",
|
required: "Label title is required",
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<div className="mt-5 flex justify-end gap-2">
|
<div className="mt-5 flex justify-end gap-2">
|
||||||
<SecondaryButton onClick={onClose}>Cancel</SecondaryButton>
|
<SecondaryButton onClick={onClose}>Cancel</SecondaryButton>
|
||||||
<PrimaryButton type="submit" loading={isSubmitting}>
|
<PrimaryButton type="submit" loading={isSubmitting}>
|
||||||
|
@ -32,12 +32,12 @@ export const ModuleIssuesGanttChartView: FC<Props> = ({}) => {
|
|||||||
|
|
||||||
// rendering issues on gantt card
|
// rendering issues on gantt card
|
||||||
const GanttBlockView = ({ data }: any) => (
|
const GanttBlockView = ({ data }: any) => (
|
||||||
<div className="relative flex w-full h-full overflow-hidden">
|
<div className="relative flex items-center w-full h-full overflow-hidden shadow-sm">
|
||||||
<div
|
<div
|
||||||
className="flex-shrink-0 w-[4px] h-auto"
|
className="flex-shrink-0 w-[4px] h-full"
|
||||||
style={{ backgroundColor: data?.state_detail?.color || "#858e96" }}
|
style={{ backgroundColor: data?.state_detail?.color || "#858e96" }}
|
||||||
/>
|
/>
|
||||||
<div className="inline-block text-brand-base text-sm whitespace-nowrap py-[4px] px-1.5">
|
<div className="w-full text-brand-base text-[15px] whitespace-nowrap py-[4px] px-2.5 overflow-hidden">
|
||||||
{data?.name}
|
{data?.name}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -27,12 +27,12 @@ export const ModulesListGanttChartView: FC<Props> = ({ modules }) => {
|
|||||||
|
|
||||||
// rendering issues on gantt card
|
// rendering issues on gantt card
|
||||||
const GanttBlockView = ({ data }: { data: IModule }) => (
|
const GanttBlockView = ({ data }: { data: IModule }) => (
|
||||||
<div className="relative flex w-full h-full overflow-hidden">
|
<div className="relative flex items-center w-full h-full overflow-hidden shadow-sm">
|
||||||
<div
|
<div
|
||||||
className="flex-shrink-0 w-[4px] h-auto"
|
className="flex-shrink-0 w-[4px] h-full"
|
||||||
style={{ backgroundColor: MODULE_STATUS.find((s) => s.value === data.status)?.color }}
|
style={{ backgroundColor: MODULE_STATUS.find((s) => s.value === data.status)?.color }}
|
||||||
/>
|
/>
|
||||||
<div className="inline-block text-brand-base text-sm whitespace-nowrap py-[4px] px-1.5">
|
<div className="w-full text-brand-base text-[15px] whitespace-nowrap py-[4px] px-2.5 overflow-hidden">
|
||||||
{data?.name}
|
{data?.name}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -32,12 +32,12 @@ export const ViewIssuesGanttChartView: FC<Props> = ({}) => {
|
|||||||
|
|
||||||
// rendering issues on gantt card
|
// rendering issues on gantt card
|
||||||
const GanttBlockView = ({ data }: any) => (
|
const GanttBlockView = ({ data }: any) => (
|
||||||
<div className="relative flex w-full h-full overflow-hidden">
|
<div className="relative flex items-center w-full h-full overflow-hidden shadow-sm">
|
||||||
<div
|
<div
|
||||||
className="flex-shrink-0 w-[4px] h-auto"
|
className="flex-shrink-0 w-[4px] h-full"
|
||||||
style={{ backgroundColor: data?.state_detail?.color || "#858e96" }}
|
style={{ backgroundColor: data?.state_detail?.color || "#858e96" }}
|
||||||
/>
|
/>
|
||||||
<div className="inline-block text-brand-base text-sm whitespace-nowrap py-[4px] px-1.5">
|
<div className="w-full text-brand-base text-[15px] whitespace-nowrap py-[4px] px-2.5 overflow-hidden">
|
||||||
{data?.name}
|
{data?.name}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user