ECommerce | Cell 2 | Cell 4 | Search

The code represents an e-commerce Angular portal as a directed graph, including clusters for customers, purchases, and products, with various nodes and edges styling and invisible connections. The graph is configured to display the different stages of the purchase process, including billing information, confirmation, and progress tracking, within a "Purchase Funnel" subgraph.

Cell 3

%%
dot

digraph
apply
{
    label = 'Ecommerce Angular Portal'
    rankdir = LR;
    fontname = Helvetica
    node[fontname = Helvetica, width = 1.8, height = 0.8]
    edge[fontname = Helvetica, fontsize = 12, fontcolor = blue, labeldistance = 1.8]
    rank = same

    {
        ranksep = equally
        partner2[style = invis]
        shared2[style = invis]
        customer2[style = invis]
        partner2 -> shared2 -> customer2[style = 'invis']
    }


    subgraph
    cluster_customer
    {
        label = 'Customer'

        customerAnchor[style = invis]
        customer2 -> customerAnchor[style = 'invis'
        constraint = false
    ]

        subgraph
        cluster_purchase
        {
            label = 'Purchase'

            subgraph
            cluster_funnel
            {
                label = 'Purchase Funnel'

                billing[shape = box, label = 'Billing Information']
                confirm[shape = box, label = 'Confirmation']
                funnelFooter[shape = box, label = 'Footer']
                subtotal[shape = box, label = 'Subtotal']
                tracker[shape = box, label = 'Progress Tracker']

                {
                    rank = same
                    billing
                    confirm
                    funnelFooter
                }
            ->
                {
                    rank = same
                    subtotal
                    tracker
                }
                [style = invis]
            }

            productDescription[shape = box, label = 'Product Description']
            productSummary[shape = box, label = 'Product Summary']
            productTile[shape = box, label = 'Product Tile']
            productTiles[shape = box, label = 'Product Tiles']

            {
                rank = same
                productDescription
                productSummary
            }
        ->
            {
                rank = same
                productTile
                productTiles
            }
            [style = invis]
        }


        subgraph
        cluster_pages
        {
            label = 'Pages'

            contact[shape = box, label = 'Contact']
            demo[shape = box, label = 'Confirmation']
            home[shape = box, label = 'Home']
            trial[shape = box, label = 'Trial']

            {
                rank = same
                contact
                demo
            }
        ->
            {
                rank = same
                home
                trial
            }
            [style = invis]
        }

    }

    subgraph
    cluster_partner
    {
        label = 'Partner'

        customers[shape = box, label = 'Customers']
        subscriptions[shape = box, label = 'Subscriptions']
        invoices[shape = box, label = 'Invoices']
        billingOptions[shape = box, label = 'Billing']

        partnerAnchor[style = invis]
        partner2 -> partnerAnchor[style = 'invis'
        constraint = false
    ]

    }


    subgraph
    cluster_shared
    {
        label = 'Shared Components'

        sharedAnchor[style = invis]
        shared2 -> sharedAnchor[style = 'invis'
        constraint = false
    ]

        subgraph
        cluster_auth
        {
            label = 'Auth'

            forgot[shape = box, label = 'Forgot Password']
            login[shape = box, label = 'Login']
            logout[shape = box, label = 'Logout']
            register[shape = box, label = 'Register']
            reset[shape = box, label = 'Reset Password']

            {
                rank = same
                forgot
                login
                logout
            }
        ->
            {
                rank = same
                register
                reset
            }
            [style = invis]
        }

        subgraph
        cluster_layout
        {
            label = 'Layout'

            accountLinks[shape = box, label = 'Account Login']
            footer[shape = box, label = 'Footer']
            language[shape = box, label = 'Language Select']
            menu[shape = box, label = 'Main Menu']
            support[shape = box, label = 'Support Menu']
            toolbar[shape = box, label = 'Toolbar']

            {
                rank = same
                accountLinks
                footer
                language
            }
        ->
            {
                rank = same
                menu
                support
                toolbar
            }
            [style = invis]
        }


        subgraph
        cluster_subscription
        {
            label = 'Subscription'

            actTiles[shape = box, label = 'Tiles']
            actemarketing[shape = box, label = 'EMarketing']
            actpremium[shape = box, label = 'Act Premium']
            actpremiumcloud[shape = box, label = 'Act Premium Cloud']
            actpro[shape = box, label = 'Act Pro']
            handheld[shape = box, label = 'Handheld Contact']
            subscription[shape = box, label = 'Subscription']
            support[shape = box, label = 'Support']

            {
                rank = same
                actTiles
                actemarketing
                actpremium
                actpremiumcloud
            }
        ->
            {
                rank = same
                actpro
                handheld
                subscription
                support
            }
            [style = invis]
        }

    }

    partnerAnchor -> sharedAnchor -> customerAnchor[style = 'invis'
    minlen = 3
]
}

What the code could have been:

digraph EcommercePortal {
    # Node styles
    node[shape=box, style=filled, fontname=Helvetica, width=1.8, height=0.8]

    # Edge styles
    edge[fontname=Helvetica, fontsize=12, fontcolor=blue, labeldistance=1.8]

    # Node positions
    rankdir=LR

    # Node labels
    label="Ecommerce Angular Portal"
    fontname=Helvetica

    # Cluster definitions
    subgraph cluster_customer {
        label="Customer"
    }

    subgraph cluster_partner {
        label="Partner"
    }

    subgraph cluster_shared {
        label="Shared Components"
    }

    # Node definitions
    customer_anchor[label="", style=invis, width=0]
    shared_anchor[label="", style=invis, width=0]
    partner_anchor[label="", style=invis, width=0]

    customer[label="Customer"]
    partner[label="Partner"]
    shared[label="Shared Components"]

    product_tile[label="Product Tile", shape=box]
    product_tiles[label="Product Tiles", shape=box]
    product_description[label="Product Description", shape=box]
    product_summary[label="Product Summary", shape=box]
    billing[label="Billing Information", shape=box]
    confirm[label="Confirmation", shape=box]
    funnel_footer[label="Footer", shape=box]
    subtotal[label="Subtotal", shape=box]
    tracker[label="Progress Tracker", shape=box]

    # Subcluster definitions
    subgraph cluster_purchase {
        label="Purchase"
    }

    subgraph cluster_pages {
        label="Pages"
    }

    subgraph cluster_auth {
        label="Auth"
    }

    subgraph cluster_layout {
        label="Layout"
    }

    subgraph cluster_subscription {
        label="Subscription"
    }

    # Edge definitions
    partner -> shared -> customer[label=""]
    shared -> product_tile[label=""]
    shared -> product_tiles[label=""]

    customer -> billing[label=""]
    customer -> confirm[label=""]
    customer -> funnel_footer[label=""]
    customer -> subtotal[label=""]
    customer -> tracker[label=""]

    shared -> product_description[label=""]
    shared -> product_summary[label=""]

    product_tile -> product_tiles[label=""]
    product_description -> product_summary[label=""]

    customer -> product_tile[label=""]
    customer -> product_tiles[label=""]

    shared -> billing[label=""]
    shared -> confirm[label=""]

    # Subedge definitions
    subgraph cluster_purchase {
        billing -> confirm[label=""]
        confirm -> funnel_footer[label=""]
        funnel_footer -> subtotal[label=""]
        subtotal -> tracker[label=""]
    }

    subgraph cluster_pages {
        contact -> demo[label=""]
        demo -> home[label=""]
        home -> trial[label=""]
    }

    subgraph cluster_auth {
        forgot -> login[label=""]
        login -> logout[label=""]
        logout -> register[label=""]
        register -> reset[label=""]
    }

    subgraph cluster_layout {
        account_links -> footer[label=""]
        footer -> language[label=""]
        language -> menu[label=""]
        menu -> support[label=""]
        support -> toolbar[label=""]
    }

    subgraph cluster_subscription {
        act_tiles -> actemarketing[label=""]
        actemarketing -> actpremium[label=""]
        actpremium -> actpremiumcloud[label=""]
        actpremiumcloud -> actpro[label=""]
        actpro -> handheld[label=""]
        handheld -> subscription[label=""]
        subscription -> support[label=""]
    }

    # Invisible edges to connect clusters
    partner_anchor -> shared_anchor[label="", style=invis]
    shared_anchor -> customer_anchor[label="", style=invis]
}

Code Breakdown

This is a Graphviz DOT file that represents an e-commerce Angular portal as a directed graph.

Top-Level Elements

Node and Edge Styling

Invisible Edges and Nodes

Customer Cluster

Purchase Cluster

Purchase Funnel Subgraph

Product Cluster