| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- // Other diagram types based on mermaid.js parsers
- package ast
- // ERDiagram represents an entity relationship diagram
- type ERDiagram struct {
- Entities []*EREntity `json:"entities"`
- Relations []*ERRelation `json:"relations"`
- Title *string `json:"title,omitempty"`
- Config map[string]any `json:"config,omitempty"`
- }
- type EREntity struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Attributes []*ERAttribute `json:"attributes"`
- CssClasses []string `json:"cssClasses,omitempty"`
- }
- type ERAttribute struct {
- Name string `json:"name"`
- Type string `json:"type"`
- Key *ERKeyType `json:"key,omitempty"`
- Comment *string `json:"comment,omitempty"`
- }
- type ERKeyType string
- const (
- ERKeyPrimary ERKeyType = "PK"
- ERKeyForeign ERKeyType = "FK"
- ERKeyUnique ERKeyType = "UK"
- )
- type ERRelation struct {
- From string `json:"from"`
- To string `json:"to"`
- Type ERRelationType `json:"type"`
- Label *string `json:"label,omitempty"`
- Cardinality *ERCardinality `json:"cardinality,omitempty"`
- }
- type ERRelationType string
- const (
- ERRelationOneToOne ERRelationType = "||--||"
- ERRelationOneToMany ERRelationType = "||--o{"
- ERRelationOneToManyAlt ERRelationType = "||--|{"
- ERRelationManyToOne ERRelationType = "}o--||"
- ERRelationManyToMany ERRelationType = "}o--o{"
- ERRelationManyToManyAlt ERRelationType = "}|..|{"
- ERRelationZeroToOne ERRelationType = "||--o|"
- ERRelationZeroToMany ERRelationType = "||--o{"
- )
- type ERCardinality struct {
- From string `json:"from"`
- To string `json:"to"`
- }
- // GanttDiagram represents a Gantt chart
- type GanttDiagram struct {
- Title *string `json:"title,omitempty"`
- DateFormat string `json:"dateFormat"`
- AxisFormat string `json:"axisFormat"`
- Sections []*GanttSection `json:"sections"`
- Tasks []*GanttTask `json:"tasks"`
- Config map[string]any `json:"config,omitempty"`
- }
- type GanttSection struct {
- Name string `json:"name"`
- Tasks []*GanttTask `json:"tasks"`
- }
- type GanttTask struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Status GanttStatus `json:"status"`
- Start *string `json:"start,omitempty"`
- End *string `json:"end,omitempty"`
- Duration *string `json:"duration,omitempty"`
- Dependencies []string `json:"dependencies,omitempty"`
- }
- type GanttStatus string
- const (
- GanttStatusActive GanttStatus = "active"
- GanttStatusDone GanttStatus = "done"
- GanttStatusCrit GanttStatus = "crit"
- )
- // PieChart represents a pie chart
- type PieChart struct {
- Title *string `json:"title,omitempty"`
- Data []*PieSlice `json:"data"`
- Config map[string]any `json:"config,omitempty"`
- }
- type PieSlice struct {
- Label string `json:"label"`
- Value float64 `json:"value"`
- }
- // TimelineDiagram represents a timeline diagram
- type TimelineDiagram struct {
- Title *string `json:"title,omitempty"`
- Sections []*TimelineSection `json:"sections"`
- Config map[string]any `json:"config,omitempty"`
- }
- type TimelineSection struct {
- Name string `json:"name"`
- Events []*TimelineEvent `json:"events"`
- }
- type TimelineEvent struct {
- Name string `json:"name"`
- Description *string `json:"description,omitempty"`
- Time *string `json:"time,omitempty"`
- }
- // UserJourneyDiagram represents a user journey diagram
- type UserJourneyDiagram struct {
- Title *string `json:"title,omitempty"`
- Sections []*UserJourneySection `json:"sections"`
- Config map[string]any `json:"config,omitempty"`
- }
- type UserJourneySection struct {
- Name string `json:"name"`
- Tasks []*UserJourneyTask `json:"tasks"`
- }
- type UserJourneyTask struct {
- Name string `json:"name"`
- Score *float64 `json:"score,omitempty"`
- People []string `json:"people,omitempty"`
- }
- // QuadrantChart represents a quadrant chart
- type QuadrantChart struct {
- Title *string `json:"title,omitempty"`
- XAxis *QuadrantAxis `json:"xAxis,omitempty"`
- YAxis *QuadrantAxis `json:"yAxis,omitempty"`
- Quadrants []*QuadrantData `json:"quadrants"`
- Points []*QuadrantPoint `json:"points"`
- Config map[string]any `json:"config,omitempty"`
- }
- type QuadrantAxis struct {
- Label string `json:"label"`
- Min float64 `json:"min"`
- Max float64 `json:"max"`
- }
- type QuadrantData struct {
- Name string `json:"name"`
- Description string `json:"description"`
- }
- type QuadrantPoint struct {
- Name string `json:"name"`
- X float64 `json:"x"`
- Y float64 `json:"y"`
- }
- // RequirementDiagram represents a requirement diagram
- type RequirementDiagram struct {
- Requirements []*Requirement `json:"requirements"`
- Elements []*RequirementElement `json:"elements"`
- Relations []*RequirementRelation `json:"relations"`
- Config map[string]any `json:"config,omitempty"`
- }
- type Requirement struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Type RequirementType `json:"type"`
- Text *string `json:"text,omitempty"`
- Risk *RequirementRisk `json:"risk,omitempty"`
- Verification *RequirementVerification `json:"verification,omitempty"`
- }
- type RequirementType string
- const (
- RequirementTypeRequirement RequirementType = "requirement"
- RequirementTypeFunctionalRequirement RequirementType = "functionalRequirement"
- RequirementTypeInterfaceRequirement RequirementType = "interfaceRequirement"
- RequirementTypePerformanceRequirement RequirementType = "performanceRequirement"
- RequirementTypePhysicalRequirement RequirementType = "physicalRequirement"
- RequirementTypeDesignConstraint RequirementType = "designConstraint"
- )
- type RequirementRisk string
- const (
- RequirementRiskLow RequirementRisk = "low"
- RequirementRiskMedium RequirementRisk = "medium"
- RequirementRiskHigh RequirementRisk = "high"
- )
- type RequirementVerification string
- const (
- RequirementVerificationAnalysis RequirementVerification = "analysis"
- RequirementVerificationInspection RequirementVerification = "inspection"
- RequirementVerificationTest RequirementVerification = "test"
- RequirementVerificationDemonstration RequirementVerification = "demonstration"
- )
- type RequirementElement struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Type string `json:"type"`
- DocRef *string `json:"docRef,omitempty"`
- }
- type RequirementRelation struct {
- From string `json:"from"`
- To string `json:"to"`
- Type RequirementRelationType `json:"type"`
- }
- type RequirementRelationType string
- const (
- RequirementRelationContains RequirementRelationType = "contains"
- RequirementRelationCopies RequirementRelationType = "copies"
- RequirementRelationDerives RequirementRelationType = "derives"
- RequirementRelationSatisfies RequirementRelationType = "satisfies"
- RequirementRelationVerifies RequirementRelationType = "verifies"
- RequirementRelationRefines RequirementRelationType = "refines"
- RequirementRelationTraces RequirementRelationType = "traces"
- )
- // Type methods for all diagram types
- func (e *ERDiagram) Type() DiagramType { return DiagramTypeERDiagram }
- func (e *ERDiagram) Validate() error { return nil }
- func (g *GanttDiagram) Type() DiagramType { return DiagramTypeGantt }
- func (g *GanttDiagram) Validate() error { return nil }
- func (p *PieChart) Type() DiagramType { return DiagramTypePie }
- func (p *PieChart) Validate() error { return nil }
- func (t *TimelineDiagram) Type() DiagramType { return DiagramTypeTimeline }
- func (t *TimelineDiagram) Validate() error { return nil }
- func (u *UserJourneyDiagram) Type() DiagramType { return DiagramTypeUserJourney }
- func (u *UserJourneyDiagram) Validate() error { return nil }
- func (q *QuadrantChart) Type() DiagramType { return DiagramTypeQuadrant }
- func (q *QuadrantChart) Validate() error { return nil }
- func (r *RequirementDiagram) Type() DiagramType { return DiagramTypeRequirement }
- func (r *RequirementDiagram) Validate() error { return nil }
- // Constructor functions
- func NewERDiagram() *ERDiagram {
- return &ERDiagram{
- Entities: make([]*EREntity, 0),
- Relations: make([]*ERRelation, 0),
- Config: make(map[string]any),
- }
- }
|