Skip to content

Xeyos88/HyVueGantt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Hyper Vue Gantt

A powerful and flexible Gantt chart component for Vue 3 applications. This component is an evolution of the vue-ganttastic package, completely redesigned with TypeScript and enhanced features for modern web applications.

logo HyVueGantt

npm version License: MIT Vue 3 TypeScript

πŸ“š Documentation & Demo

πŸš€ Quick Start

Installation

# npm
npm install hy-vue-gantt

# yarn
yarn add hy-vue-gantt

# pnpm
pnpm add hy-vue-gantt

Setup

// main.ts
import { createApp } from "vue"
import App from "./App.vue"
import hyvuegantt from "hy-vue-gantt"

const app = createApp(App)
app.use(hyvuegantt)
app.mount("#app")

Basic Usage

<template>
  <g-gantt-chart
    :chart-start="chartStart"
    :chart-end="chartEnd"
    :precision="precision"
    :bar-start="barStart"
    :bar-end="barEnd"
    color-scheme="vue"
    grid
    commands
  >
    <g-gantt-row
      v-for="row in rows"
      :key="row.id"
      :label="row.label"
      :bars="row.bars"
    />
  </g-gantt-chart>
</template>

<script setup lang="ts">
import { ref } from "vue"
import type { ChartRow } from "hy-vue-gantt"

const chartStart = ref("2024-01-01")
const chartEnd = ref("2024-12-31")
const precision = ref("day")
const barStart = ref("start")
const barEnd = ref("end")

const rows = ref<ChartRow[]>([
  {
    id: 1,
    label: "Design Phase",
    bars: [
      {
        start: "2024-01-05",
        end: "2024-01-20",
        ganttBarConfig: {
          id: "1",
          label: "UI Design",
          style: { background: "#42b883" }
        }
      }
    ]
  }
])
</script>

✨ Key Features

🎯 Core Capabilities

  • πŸ“… Advanced Time Management: Multi-precision support (hours, days, weeks, months) with auto-scaling
  • πŸ”— Task Dependencies: Visual connections with multiple styles (straight, bezier, squared) and animations
  • πŸ“Š Progress Tracking: Interactive progress bars with drag-to-update functionality
  • πŸ—οΈ Hierarchical Structure: Nested groups with expand/collapse functionality
  • πŸ“± Touch & Mobile: Full touch support with responsive design

🎨 Rich Customization

  • 🎨 11 Built-in Themes: From professional to dark mode
  • πŸ“‹ Multi-Column Labels: Sortable columns with custom content
  • 🏷️ Milestone Support: Visual milestones with constraints and tooltips
  • 🎭 Custom Styling: Complete slot-based customization system
  • 🌍 Internationalization: Holiday highlighting and locale support

πŸ’Ύ Data Management

  • πŸ“€ Export Options: PDF, PNG, SVG, Excel with customizable settings
  • πŸ“₯ Import Support: CSV and Jira JSON formats
  • βͺ History Management: Built-in undo/redo functionality
  • πŸ”„ Real-time Updates: Live data synchronization

⌨️ User Experience

  • πŸ–±οΈ Drag & Drop: Intuitive bar and row manipulation
  • ⌨️ Keyboard Navigation: Full accessibility support
  • 🎯 Smart Interactions: Push-on-overlap and connection behaviors
  • πŸ” Zoom Controls: Dynamic scaling with precision adjustment

πŸ”§ Advanced Examples

Task Dependencies & Connections

const projectData = ref([
  {
    id: "design",
    label: "Design Phase",
    bars: [
      {
        start: "2024-01-01",
        end: "2024-01-15",
        ganttBarConfig: {
          id: "design-1",
          label: "UI Design",
          connections: [
            {
              targetId: "dev-1",
              type: "bezier",
              animated: true,
              relation: "FS", // Finish to Start
              label: "Prerequisite",
              color: "#42b883"
            }
          ]
        }
      }
    ]
  },
  {
    id: "development",
    label: "Development Phase",
    bars: [
      {
        start: "2024-01-16",
        end: "2024-02-15",
        ganttBarConfig: {
          id: "dev-1",
          label: "Frontend Development",
          progress: 75,
          progressResizable: true
        }
      }
    ]
  }
])

Milestones & Project Tracking

<template>
  <g-gantt-chart
    :milestones="milestones"
    :timeaxis-events="events"
    show-events-axis
  >
    <template #milestone="{ milestone }">
      <div class="custom-milestone">🎯 {{ milestone.name }}</div>
    </template>
  </g-gantt-chart>
</template>

<script setup lang="ts">
const milestones = ref([
  {
    id: "v1-release",
    date: "2024-03-15",
    name: "Version 1.0 Release",
    description: "Major product release",
    color: "#e74c3c"
  }
])

const events = ref([
  {
    id: "sprint-1",
    label: "Sprint Planning",
    startDate: "2024-01-01",
    endDate: "2024-01-03",
    backgroundColor: "#3498db"
  }
])
</script>

Multi-Column Layout & Sorting

<template>
  <g-gantt-chart
    label-column-title="Project Management"
    :multi-column-label="columns"
    sortable
    label-resizable
  >
    <template #label-column-priority="{ value, row }">
      <span :class="getPriorityClass(value)">
        {{ value }}
      </span>
    </template>
  </g-gantt-chart>
</template>

<script setup lang="ts">
const columns = ref([
  { field: "Label", sortable: true },
  { field: "StartDate", sortable: true },
  { field: "Duration", sortable: true },
  { field: "Progress", sortable: true },
  {
    field: "Priority",
    valueGetter: (row) => row.priority || "Normal",
    sortFn: (a, b) => prioritySort(a, b)
  }
])
</script>

Import/Export Integration

<template>
  <g-gantt-chart
    export-enabled
    :export-options="exportConfig"
    show-importer
    :importer-allowed-formats="['csv', 'jira']"
    @export-success="handleExportSuccess"
    @import-data="handleImportData"
  >
    <template #commands="{ export: triggerExport }">
      <button @click="triggerExport" class="export-btn">
        πŸ“Š Export Project
      </button>
    </template>
  </g-gantt-chart>
</template>

<script setup lang="ts">
const exportConfig = ref({
  format: "pdf",
  paperSize: "a4",
  orientation: "landscape",
  exportColumnLabel: true,
  scale: 1.5
})

const handleExportSuccess = (result) => {
  console.log("Export completed:", result.filename)
}

const handleImportData = (result) => {
  if (result.success) {
    // Update chart data with imported rows
    updateChartData(result.data.rows)
  }
}
</script>

🎨 Theming & Customization

Built-in Color Schemes

<template>
  <!-- Choose from 11 professional themes -->
  <g-gantt-chart color-scheme="vue" />
  <!-- Vue.js inspired -->
  <g-gantt-chart color-scheme="dark" />
  <!-- Dark mode -->
  <g-gantt-chart color-scheme="material-blue" />
  <!-- Material Design -->
</template>

Available themes: default, vue, dark, material-blue, creamy, crimson, flare, fuchsia, grove, sky, slumber

Custom Styling

const customTheme = {
  primary: "#1e40af",
  secondary: "#3b82f6",
  text: "#1f2937",
  background: "#ffffff",
  hoverHighlight: "rgba(59, 130, 246, 0.1)"
}

πŸ“± Mobile & Touch Support

HyVue Gantt provides comprehensive mobile support:

  • Touch Gestures: Drag, resize, and navigate with touch
  • Responsive Layout: Adapts to different screen sizes
  • Mobile Optimized: Touch-friendly controls and interactions
  • Gesture Recognition: Pinch-to-zoom, swipe navigation

πŸ”Œ Event System

<template>
  <g-gantt-chart
    @click-bar="onBarClick"
    @dragend-bar="onBarMoved"
    @progress-change="onProgressUpdate"
    @connection-complete="onConnectionCreated"
    @row-drop="onRowReordered"
    @sort="onDataSorted"
    @label-edit="onLabelEdited"
  />
</template>

<script setup lang="ts">
const onBarClick = ({ bar, datetime }) => {
  console.log(`Clicked ${bar.ganttBarConfig.label} at ${datetime}`)
}

const onBarMoved = ({ bar, movedBars }) => {
  // Handle bar position changes
  updateBackendData(bar)
}

const onProgressUpdate = ({ bar }) => {
  // Sync progress changes
  saveProgress(bar.ganttBarConfig.id, bar.ganttBarConfig.progress)
}
</script>

πŸ› οΈ TypeScript Support

Full TypeScript integration with comprehensive type definitions:

import type {
  GanttBarObject,
  ChartRow,
  ConnectionType,
  GanttMilestone,
  TimeaxisEvent,
  ExportOptions,
  ImportResult
} from "hy-vue-gantt"

// Extend base types for your specific needs
interface ProjectTask extends GanttBarObject {
  assignee: string
  priority: "low" | "medium" | "high"
  tags: string[]
}

interface ProjectRow extends ChartRow {
  department: string
  budget: number
  bars: ProjectTask[]
}

πŸš€ Performance Features

  • Virtual Scrolling: Handles large datasets efficiently
  • Smart Rendering: Only renders visible elements
  • Optimized Updates: Minimal re-renders with Vue 3 reactivity
  • Memory Management: Automatic cleanup and garbage collection
  • Lazy Loading: Progressive data loading for better performance

πŸ“‹ Browser Support

  • Chrome: 88+
  • Firefox: 85+
  • Safari: 14+
  • Edge: 88+
  • Mobile Browsers: Full support

πŸ”§ Development & Contributing

Setup Development Environment

# Clone repository
git clone https://github.com/Xeyos88/HyVueGantt.git
cd HyVueGantt

# Install dependencies
npm install

# Start development server
npm run dev

# Run tests
npm run test

# Build library
npm run build

Contributing Guidelines

We welcome contributions! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

See our Contributing Guide for detailed information.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Based on vue-ganttastic - Special thanks to the original authors
  • Inspired by modern project management tools
  • Built with love for the Vue.js community

β˜• Support the Project

If HyVue Gantt helps your project, consider supporting its development:

PayPal

πŸ“Έ Screenshots

Modern Interface

Modern Gantt Interface

Dark Theme

Dark Theme Gantt

Multi-Column Layout

Multi-Column Gantt

Connection Management

Gantt Connections


Sponsor this project

Contributors 4

  •  
  •  
  •  
  •  

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy