Files
plane/web/ee/silo/ui/stepper.tsx
guru_sainath 1064e4fcdc Feat: Jira, Linear integration and GitHub importer (#1400)
* fix: silo service initial setup

* feat: moved controllers inside runner

* feat: created core definations for apps and context

* feat: added interfaces required for apps

* feat: moved shared definations

* feat: added logger as an injection for apps

* feat: changes to controllers

* feat: added vm based app execution inside manager

* feat: added dummy implementations for core constructs

* feat: moved controllers to routes

* feat: created worker moduler for processing message queue requests

* feat: added task manager defination

* feat: added context and manager separations

* feat: created defaults for the defination implementation

* feat: added async task management inside apps

* feat: removed unnecessary arguments in function calls

* feat: added context builder for app instances

* feat: added runtime type safety with zod

* feat: added packaged definition structure for silo apps

* feat: added package based configuration for engine and definitions

* feat: added custom eslint rule for throws decorator

* feat: added custom eslint rule for try catch

* feat: removed custom eslint config

* feat: added authentication controller inside engine

* feat: added auth in silo engine

* feat: migrated jira ui module to plane

* chore: removed jira app

* chore: moved engine components into src_engine directory

* feat: added base template inside new src directory

* feat: migrated worker interface with mq and redis store inside new src

* feat: created jira migrator and jira importer types

* chore: migrated worker's helper inside the base directory

* feat: added logic for booting up root worker

* feat: added jira and jira auth service inside jira app

* feat: added all transformers inside jira package

* feat: added authorization types for jira

* feat: added jira authentication oauth class

* feat: added jira transformer and pull mechanisms inside jira app

* feat: addded batching logic inside jira migrator

* feat: embedded silo sdk inside jira migrator

* feat: added plane migrator inside engine

* feat: added plane migrator for push inside migration controller

* feat: added controller methods for migration

* feat: added credentials and job routes in controller

* feat: added linear importer

* feat: added linear pull function as importer

* feat: added transformation for linear data

* feat: added pull mechanism for linear

* feat: attached linear data importer with migration controller

* fix: removed hardcoded jira from cycle and module migrator

* feat: fixed build errors

* chore: addeed example env

* feat: added authentication routes for jira

* feat: added linear route controller

* fix: restructuring

* fix: sdk configs setup

* fix: merge conflicts

* fix: sdk setup

* chore: added jira and linear importers and separate packages

* feat: moved transformation parts to linear package

* feat: decoupled jira logical parts with worker

* fix: linear silo app to use linear package

* fix: build errors and dependency resolution with packages in silo

* fix: module build errors in silo

* fix: linear authorization flow

* feat: added logic for segregated workers

* feat: attached task manager with the base starter

* feat: added migrations, query and schema into db directory

* feat: added linear importer and jira importer app structure

* feat: added silo core package

* chore: migrated worker and main engine controller inside apps

* fix: made linear integration working

* silo: added cors

* feat: added base64 state changes with jira

* chore: updated silo env

* fix: jira token cookie

* feat: added issue attachments in linear job

* feat: added credentials controller

* feat: added github package inside silo packages

* feat: added resource fetching in jira api service

* feat: added credentials locking

* feat: created resources endpoint for jira

* feat: added endpoints for getting jira data

* fix: credentials not working

* chore: exported jira types

* chore: added jira states

* fix: jira project pagination issue

* chore: initiated silo folder in web

* feat: added github routes and services in silo app

* fix: build updates

* fix: updated plane sdk and updated jira importer

* chore: updated the importer layout

* chore: removed as any from table component

* chore: integrated importer dashboard

* fix: tsup fixes

* fix: removed unnecessary files

* fix: removing tsup for building silo packages

* fix: build related issues

* fix: build issues

* fix: eslint fixes

* fix: silo build errors

* fix: silo app build errors types

* fix: reverting the cloud branch

* fix: updated package json in silo service

* fix: branch build cloud updated

* fix: build errors in apps while using sdk due to ts-alias paths

* fix: branch build cloud workflow fixes

* fix: docker compose setup updates

* fix: docker compose build fixes

* fix: docker build fixes envs updated in example file

* chore: updates folder structure and handled job services

* chore: resolved build errors in silo chore

* fix: docker compose cloud added

* fix: build process docker compose

* chore: updated jira workflow

* chore: handled the job start and jira dashboard

* chore: updated constants, file naming convention

* chore: resolved merge conflicts

* chore: integrated linear and updated jobs query

* feat: added hostname changes

* conflict: updated jira config and added issue transformation count in dashboard

* conflict: updated job

* chore: updated Jira status

* chore: updated Jira status

* fix: batch processing

* fix: batch key release

* chore: updated workflow for building images

* fix: detached silo build

* chore: updates linear and resolved build errors

* fix: batch key missing

* fix: linear workflow

* chore: updated linear queries

* fix: docker compose fixed for running silo services

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
2024-10-08 23:16:28 +05:30

106 lines
3.5 KiB
TypeScript

"use client";
import { Fragment } from "react";
import Image from "next/image";
import { Button } from "@plane/ui";
// helpers
import { cn } from "@/helpers/common.helper";
// silo types
import { TStepper, TStepperNavigation } from "@/plane-web/silo/types/ui";
export const Stepper = <T,>(props: TStepper<T>) => {
// props
const { logo, steps, currentStepIndex } = props;
// derived value
const currentStepDetails = steps[currentStepIndex];
return (
<div className="relative w-full h-full flex flex-col space-y-6 overflow-hidden">
<div className="space-y-6">
{/* stepper header */}
<div className="flex-shrink-0 relative flex items-center gap-6">
{logo && (
<div className="flex-shrink-0 w-12 h-12 bg-custom-background-90 relative flex justify-center items-center rounded overflow-hidden">
<Image src={logo} objectFit="contain" alt={`Importer Logo`} className="w-8 h-8" />
</div>
)}
<div className="w-full h-full relative overflow-hidden flex justify-between items-center">
{steps.map((step, index) => (
<Fragment key={index}>
{/* left bar */}
{step?.prevStep && (
<div
className={cn("h-[1.5px] w-full bg-custom-border-200 transition-all", {
"bg-custom-primary-100": index <= currentStepIndex,
})}
/>
)}
{/* content */}
<div
className={cn(
"flex-shrink-0 w-8 h-8 relative flex justify-center items-center border bg-custom-border-200 border-custom-border-200 text-custom-text-200 rounded-full transition-all",
{
"bg-custom-primary-100 border-custom-primary-100 text-white": index <= currentStepIndex,
}
)}
>
{step?.icon ? step?.icon() : index + 1}
</div>
{/* right bar */}
{step?.nextStep && index < steps.length - 1 && (
<div
className={cn("h-[1.5px] w-full bg-custom-border-200 transition-all", {
"bg-custom-primary-100": index < currentStepIndex,
})}
/>
)}
</Fragment>
))}
</div>
</div>
{/* title and description */}
<div className="flex-shrink-0 space-y-1">
<div className="text-xl font-bold">{currentStepDetails?.title}</div>
<div className="text-custom-text-200 text-sm">{currentStepDetails?.description}</div>
</div>
</div>
{/* component */}
{currentStepDetails?.component && <div className="h-full overflow-hidden">{currentStepDetails.component()}</div>}
</div>
);
};
export const StepperNavigation = <T,>(props: TStepperNavigation<T>) => {
const { currentStep, handleStep, children } = props;
return (
<div className="flex-shrink-0 relative flex items-center gap-2">
<Button
variant="neutral-primary"
size="sm"
onClick={() => handleStep("previous")}
disabled={currentStep?.prevStep === undefined}
>
Back
</Button>
{children ? (
children
) : (
<Button
variant="neutral-primary"
size="sm"
onClick={() => handleStep("next")}
disabled={currentStep?.nextStep === undefined}
>
Next
</Button>
)}
</div>
);
};