Forum Discussion

fahadkhan's avatar
fahadkhan
Frequent Visitor
1 year ago
Solved

Matrix visual Hierarchy and conditional color based on overall color

Hi everyone,    I have a simple usecase for matrix visual i want to display.    I have a table with Project, Project group, Team lead, task and status color in one table.  so based on the heir...
  • vojtechsima's avatar
    1 year ago

    Hey fahadkhan 


    TEst this one, bit lengthy tho:

    coloring = 
    var currentProject = SELECTEDVALUE('Table'[Project])
    var currentStatus = SELECTEDVALUE('Table'[Task Status])
    var isTaskLevel = HASONEVALUE('Table'[Task])
    
    var delayedRedOnes = 
    COUNTX(
        VALUES('Table'[Project Group]),
        CALCULATE(
            COUNTX( 
                VALUES('Table'[Project]),
                CALCULATE(
                    COUNTROWS('Table'),
                    'Table'[Task Status] = "Delayed",
                    REMOVEFILTERS('Table'[Task])
                )
            ),
        REMOVEFILTERS('Table'[Project])
        )
    )
    var inProgressOnes = 
    COUNTX(
        VALUES('Table'[Project Group]),
        CALCULATE(
            COUNTX( 
                VALUES('Table'[Project]),
                CALCULATE(
                    COUNTROWS('Table'),
                    'Table'[Task Status] = "In Progress",
                    REMOVEFILTERS('Table'[Task])
                )
            ),
        REMOVEFILTERS('Table'[Project])
        )
    )
    var completeGreenOnes = 
    COUNTX(
        VALUES('Table'[Project Group]),
        CALCULATE(
            COUNTX( 
                VALUES('Table'[Project]),
                CALCULATE(
                    COUNTROWS('Table'),
                    'Table'[Task Status] = "Complete",
                    REMOVEFILTERS('Table'[Task])
                )
            ),
        REMOVEFILTERS('Table'[Project])
        )
    )
    var taskLevelCheck = 
    SWITCH(
        TRUE(),
        isTaskLevel && currentStatus = "Delayed", "red",
        isTaskLevel && currentStatus = "In Progress", "yellow",
        isTaskLevel && currentStatus = "Complete", "green"
    )
    
    var idk = SWITCH( TRUE(),
    completeGreenOnes > 0 && ISBLANK(delayedRedOnes) && ISBLANK(inProgressOnes), "green",
    delayedRedOnes > 0 ,"red",
    isTaskLevel, taskLevelCheck,
    "yellow"
    )
    
    return idk